Partager via


structure DXVA_MBctrl_I_HostResidDiff_1 (dxva.h)

La structure DXVA_MBctrl_I_HostResidDiff_1 est envoyée une fois par macroblock par le décodeur hôte à l’accélérateur pour spécifier les commandes de contrôle macroblock pour une image intra.

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 macrobloc, consultez Adresses macrobloc.

wMBtype

Spécifie le type de macroblock en cours de traitement. Les bits suivants définissent le traitement macroblock.

Bits Description
15 à 12 MvertFieldSel_3 (bit 15, le bit le plus significatif) à MvertFieldSel_0 (bit 12)
Spécifie la sélection de champs verticaux pour les vecteurs de mouvement correspondants envoyés ultérieurement dans la commande de contrôle macroblock. Pour le mouvement basé sur un 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 en MvertFieldSel_0, MvertFieldSel_1, MvertFieldSel_2 et MvertFieldSel_3 correspondent aux bits motion_vertical_field_select[r][s] de la section 6.3.17.2 de MPEG-2.
11 Bit réservé
Doit être 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 l’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 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 égal à 1 si le membre bPicStructure de DXVA_PictureParameters est 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 zéro.
3 Motion4MV
Doit être zéro.
2 MotionBackward
Doit être zéro.
1 MotionForward
Doit être zéro.
0 IntraMacroblock
Doit être égal à 1.

dwMB_SNL

Spécifie le nombre de macroblocks ignorés à générer après le macroblock actuel et indique l’emplacement des données de différence résiduelle 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 après 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ésiduelle pour les blocs du macroblock actuel, exprimé sous la forme d’un multiple de 32 bits.

wPatternCode

Indique si les données de différence résiduelle sont envoyées pour chaque bloc du macroblock. Dans une image intra, les données de différence résiduelle sont envoyées pour chaque bloc du macroblock. Les bits dans wPatternCode qui font référence à tous les blocs du macroblock actuel doivent être 1 dans cette structure.

Le 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 macroblock comme spécifié dans les figures MPEG-2 6-10, 6-11 et 6-12 (ordre raster-scan pour Y, suivi des blocs 4 :2 :0 de Cb dans l’ordre raster-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 dont le bit (11i) est égal à 1) se trouvent dans la mémoire tampon de codage résiduelle dans le même ordre d’indexation ( i croissant). Pour les données MPEG-2 4 :2 :0, la valeur de wPatternCode correspond au déplacement de la valeur décodée du CBP (modèle de bloc codé) vers la gauche par six positions de bits (ces positions de bits inférieures utilisées pour les formats chroma 4 :2 :2 et 4 :4 :4).

Si le membre bConfigSpatialResidInterleaved de la structure DXVA_ConfigPictureDecode est 1, les différences résiduelles basées sur l’hôte sont envoyées sous une forme chroma-entrelacée correspondant à celle du format de pixel YUV utilisé. Dans ce cas, chaque paire de blocs Cb et Cr spatialement correspondante est traitée comme une seule unité de structure de différence résiduelle. 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 correspondant dans wPatternCode. Si le bit dans 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 à zéro chaque fois que cette association nécessite l’envoi d’un bloc de données de différence résiduelle pour un bloc avec un bit wPatternCode égal à zéro.

wPC_Overflow

Doit être zéro.

dwReservedBits2

Bits réservés utilisés pour l’empaquetage et l’alignement. Doit être zéro.

Remarques

Les macroblocks ignorés ne étant pas utilisés par les images intra, la variable MBskipsFollowing doit être zéro. La variable MBdataLocation doit être égale à zéro pour le premier macroblock de la mémoire tampon de la commande macroblock. Pour plus d’informations sur la façon dont les macroblocks ignorés sont générés, consultez Génération de macroblocks ignorés.

Configuration requise

Condition requise Valeur
En-tête dxva.h (inclure Dxva.h)

Voir aussi

DXVA_ConfigPictureDecode

DXVA_MBctrl_I_OffHostIDCT_1

DXVA_PictureParameters

DXVA_TCoefSingle