微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

WIC HEIF HEIC图像解码C ++ Microsoft HEIF解码器

如何解决WIC HEIF HEIC图像解码C ++ Microsoft HEIF解码器

Windows Imaging Component用于解码heif图像。但是,要成功解码图像,需要使用Microsoft商店中的其他应用程序(heif图像扩展名,hevc视频扩展名)。

没有它们, WIC API将返回空白图像。现在,我希望能够以编程方式确定heif文件是否可以正确解码。

我尝试使用DXVA Checker定位为所需的解码器类型,该类型应该为 WIC_HEIF_Decoder 。但是我找不到它在任何地方注册

enter image description here

一个GUID密钥,但是 CLSID_WICHeifDecoder 记录在here中,我认为即使缺少解码器,它也可以在系统中注册

有人知道怎么做吗?

解决方法

如果计划使用WIC解码器,则应该使用WIC API而不是Media Foundation API来检查可用性,即使目前已知两个解码器都将打包在一起并属于同一Windows Store应用程序(扩展名)。

您应该能够使用IWICImagingFactory::CreateComponentEnumerator来枚举解码器并确定HEIF是否在可用的解码器中。

Microsoft HEIF解码器

  • 类标识符:CLSID_WICHeifDecoder
  • 签名状态:WICComponentSigned
  • 作者:Microsoft
  • 供应商标识符:{F0E749CA-EDEF-4589-A73A-EE0E626A2A2B}
  • 版本:1.0.0.0
  • 规范版本:1.0.0.0
  • 友好名称:Microsoft HEIF解码器
  • IWICBitmapCodecInfo:
    • 容器格式:GUID_ContainerFormatHeif
    • 像素格式:GUID_WICPixelFormat32bppBGR
    • 颜色管理版本:1.0.0.0
    • MIME类型:image / heic,image / heif,image / avci,image / heic序列,image / heif序列,image / avcs,image / avif,image / avif序列
    • 文件扩展名:.heic,.heif,.avci,.heics,.heifs,.avcs,.avif,.avifs
    • 模式:576

您可能更喜欢将IWICImagingFactory::CreateDecoderGUID_ContainerFormatHeif一起使用,因为您应该对解码能力而不是特定的解码器实现更感兴趣。

使用注册表查询或直接CoCreateInstance调用来检查特定的CLSID都很简单,但这对指定的任务没有太大意义。

,

由于HEIF解码器仍在Windows上无法识别,因此这是最好的hack imo:

为了解码HEIF图像,应在机器上安装HEVC视频扩展名。 因此正确的检查是查看是否有与HEVC输入匹配的解码类型

MFStartup(MF_VERSION);
IMFActivate** activate {};
unsigned int count {};
// Set the HEVC GUID
MFT_REGISTER_TYPE_INFO input;
input.guidMajorType = MFMediaType_Video;
input.guidSubtype = MFVideoFormat_HEVC;
// Get all available output types for HEVC input
MFTEnumEx(MFT_CATEGORY_VIDEO_DECODER,MFT_ENUM_FLAG_SORTANDFILTER | MFT_ENUM_FLAG_SYNCMFT,&input,nullptr,&activate,&count);
// Release interface pointers
for (size_t i = 0; i < count; i++) {
    activate[i]->Release();
}
CoTaskMemFree(activate);
MFShutdown();
return (count > 0);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。