我正在与 Media Foundation 合作开发媒体播放器。我正在尝试使用 DXVA-HD 进行后期处理。但是,当我尝试使用 HD 设备执行 VideoProcessBltHD 时,它会因 E_INVALIDARGS 而失败。我怀疑它不能以某种方式与我作为输入提供的 ID39Surface 正常工作。我从“IMFMediaBuffer”(我从 SourceReader 读取样本中获得)获取输入表面。
我按如下方式提取表面: CHECK_HR (hr = MFGetService( video_buffer, MR_BUFFER_SERVICE, __uuidof(IDirect3DSurface9), (void**)&pSurface) );
但是,在MSDN 上的 DXVA-HD 示例中,VideoProcessBltHD 工作正常。
而示例代码中的 IDirect3DSurface9 表面是屏幕外平面表面。如何将“我的表面”(具有视频数据)作为屏幕外平面表面传递给视频处理器并获得“blt 操作”成功?
任何帮助,将不胜感激。
谢谢莫茨