【发布时间】:2012-10-07 07:34:45
【问题描述】:
我有一个使用 Windows Imaging Component API 的简单编码/解码应用程序。我遇到的问题是,当我使用 JPEGXR 或 BMP 格式时,一切正常。但是,当我使用 JPEG 编解码器时 - 编码器工作正常,我可以直观地验证生成的 JPEG 图像,但是当我尝试解码该流时,我得到一个 WINCODEC_ERR_BADHEADER (0x88982f61)
这是失败的那一行:
hr = m_pFactory->CreateDecoderFromStream(
pInputStream,
NULL,
WICDecodeMetadataCacheOnDemand,
&pDecoder);
这里的 pInputStream 是一个从字节数组创建的 IStream(编码器的输出 - 一个输出字节向量的黑盒)。
请帮忙!这让我发疯了!
【问题讨论】:
-
所以可能正如它所暗示的那样是坏流?
-
什么是“坏”流?当我将编码字节写入文件时,它呈现得非常好。而且我对 JPEGXR 和 BMP 使用完全相同的代码(仅更改了编码 GUID)
-
也许你正在传递
IStream,当前位置在流的末尾,或者在中间,而不是在JPEG文件的开头。 -
当我觉得自己很愚蠢......就是这样。我添加了一个 seek 语句,现在很好!奇怪的是它是如何通过其他编解码器的。谢谢!