Как получить внеэкранную плоскую поверхность из 'нормальной' IDirect3D9Surface - PullRequest
0 голосов
/ 13 декабря 2011

Я работаю над медиаплеером с 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

1 Ответ

1 голос
/ 16 декабря 2011

Я бы предложил установить полный DirectX SDK, переключить библиотеку времени выполнения в режим отладки в панели управления DirectX, включить полную проверку, устранить ошибку и запустить приложение в режиме отладки. Таким образом, вы получите описание ошибки, понятное человеку в DirectX.

...