structure DXVA_MBctrl_I_OffHostIDCT_1 (dxva.h)
La structure DXVA_MBctrl_I_OffHostIDCT_1 est envoyée une fois par macroblock par décodeur hôte à l’accélérateur pour spécifier les commandes de contrôle macroblock pour les images intra 4:2:0 lors de l’utilisation d’IDCT hors hôte.
typedef struct _DXVA_MBctrl_I_OffHostIDCT_1 {
WORD wMBaddress;
WORD wMBtype;
DWORD dwMB_SNL;
WORD wPatternCode;
BYTE bNumCoef[DXVA_NumBlocksPerMB_420];
} DXVA_MBctrl_I_OffHostIDCT_1;
wMBaddress
Spécifie l’adresse macroblock du macroblock actuel dans l’ordre d’analyse raster. Pour obtenir des exemples d’adresses macroblock, consultez adresses macroblock.
wMBtype
Spécifie le type de macroblock en cours de traitement. Les bits suivants définissent le traitement de macroblock.
bits | Description |
---|---|
15 à 12 | MvertFieldSel_3 (bit 15, bit le plus significatif) à MvertFieldSel_0 (bit 12) Doit être égal à zéro. |
11 |
bit réservé Doit être égal à zéro. |
10 |
HostResidDiff Spécifie si les blocs décodés de différence résiduelle de domaine spatial sont envoyés ou si les coefficients de transformation sont envoyés pour IDCT hors hôte pour le macroblock actuel. L’indicateur HostResidDiff est toujours égal à zéro dans cette structure. Cet indicateur doit être égal à zéro si bConfigResidDiffHost est égal à zéro. Cet indicateur doit être égal à 1 si bConfigResidDiffAccelerator est égal à zéro. Les membres bConfigResidDiffHost et bConfigResidDiffAccelerator sont contenus dans la structure DXVA_ConfigPictureDecode. |
9 et 8 |
MotionType Cela ne s’applique pas aux images intra. Les deux bits doivent être zéro. |
7 et 6 |
MBscanMethod Spécifie la méthode d’analyse de la commande de contrôle macroblock. Cela doit être égal à bPicScanMethod si bPicScanFixed a la valeur 1. Si bConfigHostInverseScan est égal à zéro, MBscanMethod est l’une des valeurs suivantes :
|
5 |
FieldResidual Indique si les blocs de différence résiduelle utilisent une structure IDCT de champ comme spécifié dans MPEG-2. Doit être 1 si le membre bPicStructure de DXVA_PictureParameters a la valeur 1 ou 2. Lorsqu’il est utilisé pour MPEG-2, FieldResidual doit être égal à zéro si l’indicateur frame_pred_frame_DCT dans la syntaxe MPEG-2 est 1 et doit être égal à l’élément dct_type de la syntaxe MPEG-2 si dct_type est présent pour le macroblock. |
4 |
H261LoopFilter Doit être égal à zéro. |
3 |
Motion4MV Doit être égal à zéro. |
2 |
MotionBackward Doit être égal à zéro. |
1 |
MotionForward Doit être égal à zéro. |
0 |
IntraMacroblock Doit être 1. |
dwMB_SNL
wPatternCode
Indique si les données de différence résiduelles sont envoyées pour chaque bloc dans le macroblock. Dans une image intra, les données de différence résiduelle sont envoyées pour chaque bloc dans le macroblock. Les bits de wPatternCode qui font référence à tous les blocs du macroblock actuel doivent être 1 dans DXVA_MBctrl_I_OffHostIDCT_1.
Bit (11-i) de wPatternCode (où le bit 0 est le bit le moins significatif) indique si les données de différence résiduelle sont envoyées pour le bloc i, où i est l’index du bloc dans le bloc comme spécifié dans les chiffres MPEG-2 6-10, 6-11 et 6-12 (ordre de balayage raster pour Y, suivi de 4:2:0 blocs de Cb dans l’ordre de balayage raster, suivi de 4:2:0 blocs de Cr, suivi de 4:2:2 blocs de Cb, suivi de 4:2:2 blocs de Cr, suivi de 4:4:4 blocs de Cb, suivi de 4:4:4 blocs de Cr). Les données des blocs codés (ces blocs ayant un bit (11-i) égales à 1) se trouvent dans la mémoire tampon de codage résiduelle dans le même ordre d’indexation (augmentant i). Pour les données MPEG-2:0 4:0, la valeur de wPatternCode correspond au passage de la valeur décodée de CBP (modèle de bloc codé) à gauche par six positions binaires (ces positions inférieures étant utilisées pour les formats de chroma 4:2:2 et 4:4:4).
bNumCoef[DXVA_NumBlocksPerMB_420]
Chaque valeur du tableau bNumCoef indique le nombre de coefficients dans la mémoire tampon de données de différence résiduelle pour chaque bloc i du macroblock.
L’indice de tableau i est l’index du bloc dans le bloc de macro, tel que spécifié dans les figures vidéo MPEG-2 6-10, 6-11 et 6-12 (ordre de raster-scan pour Y, suivi de Cb, suivi de Cr).
Ce membre n’est utilisé que lorsque l’indicateur hostResidDiff (bit 10 dans wMBtype) est égal à zéro, et bChromaFormat est 1 (4:2:0). Si elle est utilisée dans les formats 4:2:2 ou 4:4:4, elle augmente la taille des commandes de contrôle macroblock classiques au-delà d’une limite d’alignement de mémoire critique. Par conséquent, la TCoefEOB bit dans la structure DXVA_TCoefSingle est utilisée pour déterminer le nombre de coefficients dans chaque bloc dans les cas non 4:2:0.
L’objectif de bNumCoef est d’indiquer la quantité de données présentes pour chaque bloc dans la mémoire tampon de données de différence résiduelle, exprimée en tant que nombre de coefficients présents. Lorsque le bConfig4GroupedCoefs membre de la structure DXVA_ConfigPictureDecode est 1, bNumCoef peut contenir le nombre réel de coefficients envoyés pour le bloc ou cette valeur arrondie à un multiple de quatre. Les données de ces coefficients sont trouvées dans la mémoire tampon de différence résiduelle dans le même ordre.
Les macroblocks ignorés ne sont pas utilisés par les images intra. Par conséquent, la variable MBskipsFollowing doit être égale à zéro. La variable MBdataLocation doit être égale à zéro pour le premier macroblock dans la mémoire tampon de commande de contrôle macroblock. Pour plus d’informations sur la façon dont les macroblocks ignorés sont générées, consultez Génération de macros ignorées.
Exigence | Valeur |
---|---|
d’en-tête | dxva.h (include Dxva.h) |