由于 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);