Предоставление возможностей для декодирования видео
Запрос возможностей декодирования видео
Чтобы запросить возможности декодирования видео драйвера отображения пользовательского режима (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.