Можно ли разделить поверхность DXVA?

Я использую видео декодер DXVA. Он работает нормально, но я хочу поделиться распакованными поверхностями с другим объектом устройства IDirect3D9.

Я прочитал этот документ и вызываю метод IDirectXVideoDecoderService::CreateSurface() для создания поверхностей, и я пытаюсь передать ненулевую HANDLE*, которая указывает на NULL в качестве последнего параметра для метода. Но метод завершается ошибкой с результатом 0x8876086c (D3DERR_INVALIDCALL). Я также попытался выделить массив HANDLE и установить для каждого элемента значение NULL, а затем передать этот массив в качестве параметра, но все еще получал ту же ошибку.

Есть ли способ обмена поверхностями DXVA между устройствами IDirect3D9?

1 ответ

Чтение документа:

API создания ресурсов включают в себя - CreateTexture, CreateVolumeTexture, CreateCubeTexture, CreateRenderTarget, CreateVertexBuffer, CreateIndexBuffer, CreateDepthStencilSurface, CreateOffscreenPlainSurface, CreateDepthStencilSurfaceEx, CreateOffscreenPlainSurfaceEx, и.

IDirectXVideoAccelerationService:: CreateSurface, по-видимому, не включен.

А также:

pSharedHandle [вход, выход]

Указатель на дескриптор, который используется для разделения поверхностей между устройствами Direct3D. Установите для этого параметра значение NULL.

Кажется, невозможно использовать его.

Другие вопросы по тегам