0

我正在与 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 操作”成功?

任何帮助,将不胜感激。

谢谢莫茨

4

1 回答 1

1

我建议安装完整的 DirectX SDK,在 DirectX 控制面板中将运行时库切换到调试模式,开启完整验证,错误中断并在调试模式下运行您的应用程序。这样,您将获得 DirectX 人类可读的错误描述。

于 2011-12-16T08:58:35.477 回答