Поделиться через


Метод IDirect3DDeviceManager9::GetVideoService (dxva2api.h)

Возвращает интерфейс службы DirectX Video Acceleration (DXVA).

Синтаксис

HRESULT GetVideoService(
  [in]  HANDLE hDevice,
  [in]  REFIID riid,
  [out] void   **ppService
);

Параметры

[in] hDevice

Дескриптор для устройства Direct3D. Чтобы получить дескриптор устройства, вызовите IDirect3DeviceManager9::OpenDeviceHandle.

[in] riid

Идентификатор IID запрошенного интерфейса. Устройство Direct3D может поддерживать следующие интерфейсы службы DXVA:

[out] ppService

Получает указатель на запрошенный интерфейс. Вызывающий объект должен освободить интерфейс .

Возвращаемое значение

Метод возвращает HRESULT. Допустимые значения включают, но не ограничиваются, значения, приведенные в следующей таблице.

Код возврата Описание
S_OK
Метод выполнен успешно.
DXVA2_E_NEW_VIDEO_DEVICE
Недопустимый дескриптор устройства.
DXVA2_E_NOT_AVAILABLE
Устройство Direct3D не поддерживает ускорение видео.
DXVA2_E_NOT_INITIALIZED
Диспетчер устройств Direct3D не инициализирован. Владелец устройства должен вызвать IDirect3DDeviceManager9::ResetDevice.
E_HANDLE
Указанный дескриптор не является дескриптором устройства Direct3D.

Комментарии

Если метод возвращает DXVA2_E_NEW_VIDEO_DEVICE, вызовите IDirect3DeviceManager9::CloseDeviceHandle , чтобы закрыть дескриптор, а затем снова вызовите OpenDeviceHandle , чтобы получить новый дескриптор. Метод IDirect3DDeviceManager9::ResetDevice делает недействительными все открытые дескрипторы устройств.

Примеры

HRESULT GetVideoProcessorService(
    IDirect3DDeviceManager9 *pDeviceManager,
    IDirectXVideoProcessorService **ppVPService
    )
{
    *ppVPService = NULL;

    HANDLE hDevice;

    HRESULT hr = pDeviceManager->OpenDeviceHandle(&hDevice);
    if (SUCCEEDED(hr))
    {
        // Get the video processor service 
        HRESULT hr2 = pDeviceManager->GetVideoService(
            hDevice, 
            IID_PPV_ARGS(ppVPService)
            );

        // Close the device handle.
        hr = pDeviceManager->CloseDeviceHandle(hDevice);

        if (FAILED(hr2))
        {
            hr = hr2;
        }
    }

    if (FAILED(hr))
    {
        SafeRelease(ppVPService);
    }

    return hr;
}

Требования

   
Минимальная версия клиента Windows Vista [только классические приложения]
Минимальная версия сервера Windows Server 2008 [только классические приложения]
Целевая платформа Windows
Header dxva2api.h

См. также раздел

Обработка видео DXVA

Диспетчер устройств Direct3D

DirectX Video Acceleration 2.0

IDirect3DDeviceManager9