是否可以共享 DXVA 表面?
Posted
技术标签:
【中文标题】是否可以共享 DXVA 表面?【英文标题】:Is it possible to share a DXVA surface? 【发布时间】:2014-06-24 01:52:58 【问题描述】:我正在使用 DXVA 视频解码器。它工作正常,但我想与另一个 IDirect3D9 设备对象共享解压缩的表面。
我阅读了this 文档,我正在调用 IDirectXVideoDecoderService::CreateSurface() 方法来创建表面,并且我尝试传递一个非 NULL HANDLE* 指向NULL 作为该方法的最后一个参数。但该方法失败,结果为 0x8876086c (D3DERR_INVALIDCALL)。我还尝试分配一个 HANDLE 数组并将每个元素设置为 NULL,然后将该数组作为参数传递,但仍然得到相同的错误。
有没有办法在 IDirect3D9 设备之间共享 DXVA 表面?
【问题讨论】:
"...传递一个指向 NULL 的非 NULL HANDLE..."* - 你能显示这段代码吗?当我读到它时,我不清楚你到底在传递什么。 【参考方案1】:阅读文档:
资源创建 API 包括 - CreateTexture、CreateVolumeTexture、CreateCubeTexture、CreateRenderTarget、CreateVertexBuffer、CreateIndexBuffer、CreateDepthStencilSurface、CreateOffscreenPlainSurface、CreateDepthStencilSurfaceEx、CreateOffscreenPlainSurfaceEx 和 CreateRenderTargetEx。
IDirectXVideoAccelerationService::CreateSurface 似乎不包括在内。
还有:
pSharedHandle [输入,输出]
指向句柄的指针,该句柄用于在 Direct3D 设备之间共享表面。将此参数设置为NULL。
好像不能用。
【讨论】:
以上是关于是否可以共享 DXVA 表面?的主要内容,如果未能解决你的问题,请参考以下文章