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


Предоставление возможностей для декодирования видео

Запрос возможностей декодирования видео

Чтобы запросить возможности декодирования видео драйвера отображения пользовательского режима (UMD), среда выполнения D3D вызывает функцию GetCaps UMD с одним из следующих типов запросов , указанных в элементе Typeструктуры D3DDDIARG_GETCAPS , переданной в GetCaps:

  • D3DDDICAPS_GETDECODEGUIDCOUNT
  • D3DDDICAPS_GETDECODEGUIDS
  • D3DDDICAPS_GETDECODERTFORMATCOUNT
  • D3DDDICAPS_GETDECODERTFORMATS
  • D3DDDICAPS_GETDECODECOMPRESSEDBUFFERINFOCOUNT
  • D3DDDICAPS_GETDECODECOMPRESSEDBUFFERINFO
  • D3DDDICAPS_GETDECODECONFIGURATIONCOUNT
  • D3DDDICAPS_GETDECODECONFIGURATIONS

GetCaps возвращает следующее:

  • Возможности UMD для типа запроса в буфере, на который указывает элемент pDataD3DDDIARG_GETCAPS . UMD должен выделить буфер, достаточно большой для хранения возможностей.
  • Размер (в байтах) буфера, содержащего возможности, в DataSize.

В следующих подразделах перечислены возможные типы запросов и связанные с ними возможности декодирования видео.

Типы запросов D3DDDICAPS_GETDECODEGUIDCOUNT и D3DDDICAPS_GETDECODEGUIDS

Среда выполнения Direct3D вызывает GetCaps , чтобы запросить количество идентификаторов GUID, а затем снова вызывает GetCaps с запросом списка поддерживаемых идентификаторов GUID. UMD возвращает число, а затем список идентификаторов GUID из следующего списка, которые поддерживаются для декодирования ускорения видео (VA). D3DDDIARG_GETCAPS. Элемент pInfo имеет значение NULL для обоих типов запросов.

DEFINE_GUID(DXVADDI_ModeMPEG2_MoComp, 0xe6a9f44b, 0x61b0, 0x4563,0x9e,0xa4,0x63,0xd2,0xa3,0xc6,0xfe,0x66);
DEFINE_GUID(DXVADDI_ModeMPEG2_IDCT,   0xbf22ad00, 0x03ea, 0x4690,0x80,0x77,0x47,0x33,0x46,0x20,0x9b,0x7e);
DEFINE_GUID(DXVADDI_ModeMPEG2_VLD,    0xee27417f, 0x5e28, 0x4e65,0xbe,0xea,0x1d,0x26,0xb5,0x08,0xad,0xc9);

DEFINE_GUID(DXVADDI_ModeH264_A,  0x1b81be64, 0xa0c7, 0x11d3,0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);
DEFINE_GUID(DXVADDI_ModeH264_B,  0x1b81be65, 0xa0c7, 0x11d3,0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);
DEFINE_GUID(DXVADDI_ModeH264_C,  0x1b81be66, 0xa0c7, 0x11d3,0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);
DEFINE_GUID(DXVADDI_ModeH264_D,  0x1b81be67, 0xa0c7, 0x11d3,0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);
DEFINE_GUID(DXVADDI_ModeH264_E,  0x1b81be68, 0xa0c7, 0x11d3,0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);
DEFINE_GUID(DXVADDI_ModeH264_F,  0x1b81be69, 0xa0c7, 0x11d3,0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);

DEFINE_GUID(DXVADDI_ModeWMV8_A,  0x1b81be80, 0xa0c7, 0x11d3,0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);
DEFINE_GUID(DXVADDI_ModeWMV8_B,  0x1b81be81, 0xa0c7, 0x11d3,0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);

DEFINE_GUID(DXVADDI_ModeWMV9_A,  0x1b81be90, 0xa0c7, 0x11d3,0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);
DEFINE_GUID(DXVADDI_ModeWMV9_B,  0x1b81be91, 0xa0c7, 0x11d3,0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);
DEFINE_GUID(DXVADDI_ModeWMV9_C,  0x1b81be94, 0xa0c7, 0x11d3,0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);

DEFINE_GUID(DXVADDI_ModeVC1_A,   0x1b81beA0, 0xa0c7, 0x11d3,0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);
DEFINE_GUID(DXVADDI_ModeVC1_B,   0x1b81beA1, 0xa0c7, 0x11d3,0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);
DEFINE_GUID(DXVADDI_ModeVC1_C,   0x1b81beA2, 0xa0c7, 0x11d3,0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);
DEFINE_GUID(DXVADDI_ModeVC1_D,   0x1b81beA3, 0xa0c7, 0x11d3,0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);

#define DXVADDI_ModeMPEG2_MOCOMP  DXVADDI_ModeMPEG2_MoComp

#define DXVADDI_ModeWMV8_PostProc  DXVADDI_ModeWMV8_A
#define DXVADDI_ModeWMV8_MoComp  DXVADDI_ModeWMV8_B

#define DXVADDI_ModeWMV9_PostProc  DXVADDI_ModeWMV9_A
#define DXVADDI_ModeWMV9_MoComp  DXVADDI_ModeWMV9_B
#define DXVADDI_ModeWMV9_IDCT  DXVADDI_ModeWMV9_C

#define DXVADDI_ModeVC1_PostProc  DXVADDI_ModeVC1_A
#define DXVADDI_ModeVC1_MoComp  DXVADDI_ModeVC1_B
#define DXVADDI_ModeVC1_IDCT  DXVADDI_ModeVC1_C
#define DXVADDI_ModeVC1_VLD  DXVADDI_ModeVC1_D

#define DXVADDI_ModeH264_MoComp_NoFGT  DXVADDI_ModeH264_A
#define DXVADDI_ModeH264_MoComp_FGT  DXVADDI_ModeH264_B
#define DXVADDI_ModeH264_IDCT_NoFGT  DXVADDI_ModeH264_C
#define DXVADDI_ModeH264_IDCT_FGT  DXVADDI_ModeH264_D
#define DXVADDI_ModeH264_VLD_NoFGT  DXVADDI_ModeH264_E
#define DXVADDI_ModeH264_VLD_FGT  DXVADDI_ModeH264_F

Типы запросов D3DDDICAPS_GETDECODERTFORMATCOUNT и D3DDDICAPS_GETDECODERTFORMATS

Среда выполнения Direct3D задает GUID для определенного типа декодирования DirectX VA в переменной, на которую указывает элемент pInfo D3DDDIARG_GETCAPS. UMD возвращает число, а затем список целевых форматов отрисовки, поддерживаемых для определенного типа декодирования DirectX VA.

Типы запросов D3DDDICAPS_GETDECODECOMPRESSEDBUFFERINFOCOUNT и D3DDDICAPS_GETDECODECOMPRESSEDBUFFERINFO

Среда выполнения Direct3D задает структуру DXVADDI_DECODEINPUT для определенного типа декодирования DirectX VA в переменной, на которую указывает элемент pInfoD3DDDIARG_GETCAPS . UMD возвращает количество и сведения о типах сжатых буферов, необходимых для ускорения декодирования видео. UMD возвращает сведения о типах сжатых буферов в массиве DXVADDI_DECODEBUFFERINFO структур, которые указывает член pData D3DDDIARG_GETCAPS.

Типы запросов D3DDDICAPS_GETDECODECONFIGURATIONCOUNT и D3DDDICAPS_GETDECODECONFIGURATIONS

Среда выполнения Direct3D задает структуру DXVADDI_DECODEINPUT для определенного типа декодирования DirectX VA в переменной, на которую указывает элемент pInfo D3DDDIARG_GETCAPS. UMD возвращает число и список конфигураций ускоренного декодирования, поддерживаемых для определенного типа декодирования DirectX VA. UMD возвращает конфигурации ускоренного декодирования в массиве DXVADDI_CONFIGPICTUREDECODE структур, которые указывает член pData D3DDDIARG_GETCAPS.