structure DXVA_MBctrl_I_HostResidDiff_1 (dxva.h)
La structure DXVA_MBctrl_I_HostResidDiff_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 une intra-image.
Syntaxe
typedef struct _DXVA_MBctrl_I_HostResidDiff_1 {
WORD wMBaddress;
WORD wMBtype;
DWORD dwMB_SNL;
WORD wPatternCode;
WORD wPC_Overflow;
DWORD dwReservedBits2;
} DXVA_MBctrl_I_HostResidDiff_1;
Membres
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) Spécifie la sélection verticale des vecteurs de mouvement correspondants envoyés ultérieurement dans la commande de contrôle macroblock. Pour le mouvement basé sur le cadre avec une structure d’image de cadre (par exemple, pour H.261 et H.263), ces bits doivent tous être zéro. Les bits dans MvertFieldSel_0, MvertFieldSel_1, MvertFieldSel_2 et MvertFieldSel_3 correspondent aux bits motion_vertical_field_select[r][s] dans la section 6.3.17.2 de MPEG-2. |
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. HostResidDiff est toujours égal à 1 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 Doit être égal à zéro. |
7 et 6 |
MBscanMethod Ces bits n’ont aucune signification et doivent être définis sur zéro. |
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 à la variable 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
Spécifie le nombre de macroblocks ignorés à générer en suivant le macroblock actuel et indique l’emplacement des données de différence résiduelles pour les blocs du macroblock actuel. Ce membre contient deux variables : MBskipsFollowing dans les 8 bits les plus significatifs, et MBdataLocation dans les 24 bits les moins significatifs. MBskipsFollowing indique le nombre de macroblocks ignorés à générer en suivant le macroblock actuel. MBdataLocation est un index dans la mémoire tampon de données de bloc de différence résiduelle. Cet index indique l’emplacement des données de différence résiduelles pour les blocs du macroblock actuel, exprimée sous la forme d’un multiple de 32 bits.
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 cette structure.
Bit (11-i) de wPatternCode (où le bit zéro 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 de macro comme spécifié dans les chiffres MPEG-2 6-10, 6-11 et 6-12 (ordre de raster-scan pour Y, suivi de 4:2:0 blocs de Cb dans l’ordre de rasster-scan, 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 le bit (11i) sont trouvées dans la mémoire tampon de codage résiduelle dans le même ordre d’indexation (augmentant i). Pour les données MPEG-2 de 4:2:0, la valeur de wPatternCode correspond au passage de la valeur décodée du CBP (modèle de bloc codé) à gauche par six positions binaires (ces positions de bits inférieures utilisées pour les formats de couleur 4:2:2 et 4:4:4).
Si le bConfigSpatialResidInterleaved membre de la structure DXVA_ConfigPictureDecode est de 1, les différences résiduelles basées sur l’hôte sont envoyées dans une forme chroma-entrelacée correspondant à celle du format de pixel YUV en cours d’utilisation. Dans ce cas, chaque paire cb et spatialement correspondante cr de blocs est traitée comme une unité de structure de différence résiduelle unique. Cela ne modifie pas la valeur ou la signification de wPatternCode, mais cela implique que les deux membres de chaque paire de blocs de données Cb et Cr sont envoyés chaque fois que l’un de ces blocs de données a le bit défini dans wPatternCode. Si le bit de wPatternCode pour un bloc de données particulier est égal à zéro, les valeurs de données de différence résiduelle correspondantes doivent être envoyées comme zéro chaque fois que ce jumelage nécessite l’envoi d’un bloc de données de différence résiduelle pour un bloc avec un wPatternCode bit égal à zéro.
wPC_Overflow
Doit être égal à zéro.
dwReservedBits2
Bits réservés utilisés pour l’emballage et l’alignement. Doit être égal à zéro.
Remarques
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.
Exigences
Exigence | Valeur |
---|---|
d’en-tête | dxva.h (include Dxva.h) |