【发布时间】:2021-06-14 15:28:26
【问题描述】:
我正在编写一个使用 H.264 编码器 MFT 进行视频编码的程序。
我用来选择/创建编码器的方式是这样的:
MFT_REGISTER_TYPE_INFO encoderInfo;
encoderInfo.guidMajorType = MFMediaType_Video;
encoderInfo.guidSubtype = MFVideoFormat_H264;
// H.264 Encoder class id is not exposed, so we have to enumerate
HRESULT hr = MFTEnum(MFT_CATEGORY_VIDEO_ENCODER, 0, NULL, &encoderInfo, NULL, &pCLSIDs, &nCount);
if (nCount == 0) {
break;
}
//Create H.264 Encoder MFT instance
ciEncoder.CreateObject(pCLSIDs[0], IID_IMFTransform);
现在在我的机器上,在调用 MFTEnum 后 nCount 将设置为 1。我只是想知道,如果我的机器上有经过认证的硬件编码器,nCount 是否会设置为 2?然后我就可以选择我想要的了?
另一个问题是,我正在使用同步处理模式来编码帧,如
中所述https://msdn.microsoft.com/en-us/library/windows/desktop/aa965264(v=vs.85).aspx#create_mft
如果我可以枚举并选择硬件编码器 MFT,我可以使用相同的代码逻辑进行编码吗?
非常感谢
【问题讨论】: