3

我正在使用 DXVA 视频解码器。它工作正常,但我想与另一个 IDirect3D9 设备对象共享解压缩的表面。

我阅读了这个文档,我正在调用IDirectXVideoDecoderService::CreateSurface()方法来创建表面,并且我尝试传递一个指向 NULL 的非 NULL HANDLE*作为该方法的最后一个参数。但是该方法失败,结果为 0x8876086c ( D3DERR_INVALIDCALL )。我还尝试分配一个 HANDLE 数组并将每个元素设置为 NULL,然后将该数组作为参数传递,但仍然得到相同的错误。

有没有办法在 IDirect3D9 设备之间共享 DXVA 表面?

4

1 回答 1

1

阅读文档:

资源创建 API 包括 - CreateTexture、CreateVolumeTexture、CreateCubeTexture、CreateRenderTarget、CreateVertexBuffer、CreateIndexBuffer、CreateDepthStencilSurface、CreateOffscreenPlainSurface、CreateDepthStencilSurfaceEx、CreateOffscreenPlainSurfaceEx 和 CreateRenderTargetEx。

IDirectXVideoAccelerationService::CreateSurface 似乎不包括在内。

和 :

pSharedHandle [输入,输出]

指向用于在 Direct3D 设备之间共享表面的句柄的指针。将此参数设置为 NULL。

似乎无法使用它。

于 2015-11-28T12:10:49.990 回答