发布于 2020-10-12 18:11:44
由于HEIF解码器仍然在Windows上被识别,无法对它们进行解码,这是最好的攻击,海事组织:
为了解码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);发布于 2020-10-10 15:28:31
如果您计划使用WIC解码器,您应该使用WIC API来检查可用性,而不是Media Foundation API,即使这两个解码器目前都被打包在一起并属于同一个Windows Store应用程序(扩展)。
您应该能够使用IWICImagingFactory::CreateComponentEnumerator来枚举解码器,并确定HEIF是否在可用的解码器中。
微软HEIF解码器
您可能更喜欢将IWICImagingFactory::CreateDecoder与GUID_ContainerFormatHeif结合使用,因为您应该对解码能力更感兴趣,而不是在特定的解码器实现中。
使用注册表查询或直接CoCreateInstance调用来检查特定的CLSID非常简单,但对于指定的任务却没有多大意义。
https://stackoverflow.com/questions/64294983
复制相似问题