У меня есть простое приложение кодирования / декодирования, использующее Windows Imaging Component API. У меня проблема в том, что когда я использую форматы JPEGXR или BMP, все работает нормально. Однако, когда я использую кодек JPEG — кодировщик работает нормально, и я могу визуально проверить сгенерированное изображение JPEG, но когда я пытаюсь декодировать этот поток, я получаю WINCODEC_ERR_BADHEADER (0x88982f61)
Вот строка, которая терпит неудачу:
hr = m_pFactory->CreateDecoderFromStream(
pInputStream,
NULL,
WICDecodeMetadataCacheOnDemand,
&pDecoder);
Здесь pInputStream — это IStream, созданный из байтового массива (вывод кодера — черный ящик, который выводит байтовый вектор).
Пожалуйста помоги! Это сводит меня с ума!
При передаче потока в качестве аргумента, убедитесь, что предварительно ищите его в правильной начальной позиции (особенно ищите его в начале, если вы только что записали в него данные и ожидаете дальнейшего извлечения). API-интерфейсы обычно не ищут, потому что таким образом они позволяют вам предоставлять данные в середине большего потока.
Других решений пока нет …