Fourniture de fonctionnalités pour le décodage vidéo
Comment interroger les fonctionnalités de décodage vidéo
Pour interroger les fonctionnalités de décodage vidéo d’un pilote d’affichage en mode utilisateur (UMD), le runtime D3D appelle la fonction GetCaps de l’UMD avec l’un des types de requête suivants spécifiés dans le membre Type de la structure D3DDDIARG_GETCAPS passée à GetCaps :
- D3DDDICAPS_GETDECODEGUIDCOUNT
- D3DDDICAPS_GETDECODEGUIDS
- D3DDDICAPS_GETDECODERTFORMATCOUNT
- D3DDDICAPS_GETDECODERTFORMATS
- D3DDDICAPS_GETDECODECOMPRESSEDBUFFERINFOCOUNT
- D3DDDICAPS_GETDECODECOMPRESSEDBUFFERINFO
- D3DDDICAPS_GETDECODECONFIGURATIONCOUNT
- D3DDDICAPS_GETDECODECONFIGURATIONS
GetCaps retourne ce qui suit :
- Fonctionnalités de l’UMD pour le type de requête, dans la mémoire tampon vers laquelle pointe le membre pData de D3DDDIARG_GETCAPS . L’UMD doit allouer une mémoire tampon suffisamment grande pour contenir les fonctionnalités.
- Taille (en octets) de la mémoire tampon contenant les fonctionnalités, dans DataSize.
Les sous-rubriques suivantes répertorient les types de requêtes possibles et les fonctionnalités de décodage vidéo associées.
types de requêtes D3DDDICAPS_GETDECODEGUIDCOUNT et D3DDDICAPS_GETDECODEGUIDS
Le runtime Direct3D appelle GetCaps pour demander le nombre de GUID, puis appelle à nouveau GetCaps avec une requête pour obtenir la liste des GUID pris en charge. L’UMD retourne le nombre, puis la liste des GUID de la liste suivante qu’il prend en charge pour le décodage d’accélération vidéo (VA). D3DDDIARG_GETCAPS. Le membre pInfo a la valeur NULL pour ces deux types de requête.
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
types de requêtes D3DDDICAPS_GETDECODERTFORMATCOUNT et D3DDDICAPS_GETDECODERTFORMATS
Le runtime Direct3D spécifie le GUID d’un type de décodage Va DirectX particulier dans une variable vers laquelle pointe le membre pInfo de D3DDDIARG_GETCAPS . L’UMD retourne le nombre, puis la liste des formats cibles de rendu qu’il prend en charge pour un type de décodage Va DirectX particulier.
types de requêtes D3DDDICAPS_GETDECODECOMPRESSEDBUFFERINFOCOUNT et D3DDDICAPS_GETDECODECOMPRESSEDBUFFERINFO
Le runtime Direct3D spécifie une structure DXVADDI_DECODEINPUT pour un type de décodage Va DirectX particulier dans une variable vers laquelle pointe le membre pInfo de D3DDDIARG_GETCAPS . L’UMD retourne le nombre et les informations sur les types de mémoire tampon compressés nécessaires pour accélérer le décodage vidéo. L’UMD retourne des informations sur les types de mémoire tampon compressée dans un tableau de structures DXVADDI_DECODEBUFFERINFO que le membre pData de D3DDDIARG_GETCAPS spécifie.
types de requêtes D3DDDICAPS_GETDECODECONFIGURATIONCOUNT et D3DDDICAPS_GETDECODECONFIGURATIONS
Le runtime Direct3D spécifie une structure DXVADDI_DECODEINPUT pour un type de décodage Va DirectX particulier dans une variable vers laquelle pointe le membre pInfo de D3DDDIARG_GETCAPS. L’UMD retourne le nombre et la liste des configurations de décodage accélérées qu’il prend en charge pour un type de décodage DirectX VA particulier. L’UMD retourne des configurations de décodage accélérées dans un tableau de structures DXVADDI_CONFIGPICTUREDECODE que le membre pData de D3DDDIARG_GETCAPS spécifie.