Здравствуйте, Nesta, Вы писали:
N>Добрый день, я работаю с Lossless JPEG изображениями.
N>Для кодирования и декодирования использую библиотеку Intel ipp53. При работе с обычными JPEG не возникает никаких проблем. Все пишется и считывается правильно. А вот когда работаю с Lossless JPEG вылазит следующая проблема:
N>Не могу прочитать цветовую схему (RGB, YСBСR и т.д.) из Lossless JPEG-файла. Самое интересное, что этот файл я пишу при помощи ipp53 и передаю этой библиотеке цветовую схему. А потом не могу получить цветовую схему из этого файла. Причем я опять-таки читаю его при помощи ipp53.
N>По этому поводу удалось накопать следующее. Некоторые библиотеки для работы с JPEG в заголовок Lossles JPEG файла вставляют строку "Adobe" (для обычных JPEG файлов в заголовок вставляется "JFIF"). ipp53 работает след. образом: если "Adobe" найдена, то включается дополнительная логика, которая позволяет определить цветовую схему. Если эта строка не найдена — то цветовая схема не определяется.
N>Вот что здесь интересно. Получается, что ipp53 может корректно прочитать цветовую схему из Lossless JPEG файла, созданного другими библиотеками (потому что они пишут строку "Adobe" в заголовок), но не может эту цветовую схему достать из файла, который сама же и записала (ipp53 не пишет строку "Adobe" в заголовок).
N>Для разрешения данной проблемы мне нужна спецификация для Lossless JPEG файлов. В спецификации я хочу посмотреть как нужно правильно кодировать цветовую схему для Lossless JPEG файлов.
N>Кто-нибудь знает где можно скачать подобный док?
N>Спасибо за помощь
5116.DCT_Filter.pdf — там написано про маркер Adobe
Вообще то тут все просто — вот он
/* AbodeMarker == APP14; Adobe TN 5116
*/
struct AdobeMarker {
char sign[5]; // "Adobe"
uint16 version; // 0x64/0x65
uint16 flags0; // 0x8000 bit: Encoder used Blend=1 downsampling
uint16 flags1; // currently 0
uint8 colorTransform; // 1-YCbCr/2-YCCK/0-otherwise
};
вставляешь его в APP14 и все....
ЗЫ
я бы читал LJPEG своим кодом, итз перфекционизма

А ipp53 поддерживает bits per sample > 8 ?