Я пишу программу с использованием H.264-кодировщика MFT для кодирования видео.Как использовать аппаратное кодирование H.264 в Windows Media Foundation
Путь я использую, чтобы выбрать/создать кодировщик, как:
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);
Теперь на моей машине nCount будет установлен в 1 после MFTEnum называется. Я просто хочу знать, если на моем компьютере имеется сертифицированный аппаратный кодер, будет ли nCount установлено на 2? и тогда я смогу выбрать тот, который мне нужен?
Другой вопрос, я использую режим синхронной обработки для кодирования кадров, как описан в
https://msdn.microsoft.com/en-us/library/windows/desktop/aa965264(v=vs.85).aspx#create_mft
Если бы я мог ENUM и выбрать аппаратный кодер MFT, могу ли я использовать один и тот же код логик сделать кодировку?
Большое спасибо