Я работаю над медиаплеером с Media Foundation. Я пытаюсь использовать постобработку с DXVA-HD. Однако, когда я пытаюсь сделать VideoProcessBltHD, используя устройство HD, он завершается неудачно с E_INVALIDARGS. Что я сомневаюсь, так это то, что он неправильно работает с ID39Surface, который я предоставляю в качестве входных данных. Я получаю входную поверхность из IMFMediaBuffer (которую я получаю, читая образец из SourceReader).
Я извлекаю поверхность следующим образом:
CHECK_HR (hr = MFGetService (video_buffer, MR_BUFFER_SERVICE, __uuidof (IDirect3DSurface9), (void **) & pSurface));
Однако в примере DXVA-HD на MSDN VideoProcessBltHD работает нормально.
Принимая во внимание, что поверхность IDirect3DSurface9 в примере кода является неэкранной плоской поверхностью.
Как передать «мою поверхность» (которая содержит видеоданные) в виде неэкранной плоской поверхности в видеопроцессор, и операция get «blt-operation» выполнена успешно?
Любая помощь будет оценена.
Спасибо
Mots