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


Метод IDirectXVideoAccelerationService::CreateSurface (dxva2api.h)

Создает видеопроцессор DirectX Video Acceleration (DXVA) или целевой объект отрисовки декодера DXVA.

Синтаксис

HRESULT CreateSurface(
  [in]      UINT              Width,
  [in]      UINT              Height,
  [in]      UINT              BackBuffers,
  [in]      D3DFORMAT         Format,
  [in]      D3DPOOL           Pool,
  [in]      DWORD             Usage,
  [in]      DWORD             DxvaType,
  [out]     IDirect3DSurface9 **ppSurface,
  [in, out] HANDLE            *pSharedHandle
);

Параметры

[in] Width

Ширина поверхности в пикселях.

[in] Height

Высота поверхности в пикселях.

[in] BackBuffers

Количество задних буферов. Метод создает BackBuffers + 1 поверхности.

[in] Format

Формат пикселей, указанный в виде значения D3DFORMAT или кода FOURCC. Дополнительные сведения см. в документации по Direct3D.

[in] Pool

Пул памяти, в котором создается поверхность, указанная в качестве значения D3DPOOL . Дополнительные сведения см. в документации по Direct3D. Декодеры обычно должны использовать значение D3DPOOL_DEFAULT.

[in] Usage

Зарезервировано. Присвойте этому значению нулевое значение.

[in] DxvaType

Тип создаваемой поверхности. Используйте одно из следующих значений.

Значение Значение
DXVA2_VideoDecoderRenderTarget
Целевой объект отрисовки декодера видео.
DXVA2_VideoProcessorRenderTarget
Целевой объект отрисовки видеопроцессоров. Используется для операций IDirectXVideoProcessor::VideoProcessBlt .
DXVA2_VideoSoftwareRenderTarget
Целевой объект отрисовки программного обеспечения. Этот тип поверхности предназначен для использования с программными устройствами DXVA.

[out] ppSurface

Адрес массива указателей IDirect3DSurface9 , выделенных вызывающим объектом. Размер массива должен быть 1 + BackBuffers (достаточно для задних буферов плюс один передний буфер). Метод заполняет массив указателями IDirect3DSurface9 . Вызывающий объект должен освободить все указатели интерфейса. Кроме того, передний буфер содержит счетчик ссылок на каждый из задних буферов. Таким образом, задние буферы никогда не удаляются, пока не будет удален передний буфер.

[in, out] pSharedHandle

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

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

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

Код возврата Описание
S_OK
Метод выполнен успешно.
D3DERR_INVALIDCALL
недопустимый параметр.
E_FAIL
Диспетчер ускорения видео DirectX не инициализирован.
E_POINTER
Аргумент указателя NULL.

Комментарии

Если метод возвращает E_FAIL, попробуйте вызвать IDirect3DeviceManager9::ResetDevice , чтобы сбросить диспетчер ускорения видео DirectX.

Требования

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

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

DirectX Video Acceleration 2.0

IDirectXVideoAccelerationService