Можно ли разделить поверхность 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.
Кажется, невозможно использовать его.