Partager via


DXVA_MBctrl_P_HostResidDiff_1 structure (dxva.h)

La structure DXVA_MBctrl_P_HostResidDiff_1 est envoyée une fois par macroblock par le décodeur hôte à l’accélérateur pour spécifier des commandes de contrôle macroblock pour la plupart des cas d’image non intra lors de l’utilisation d’IDCT basé sur l’hôte.

Syntaxe

typedef struct _DXVA_MBctrl_P_HostResidDiff_1 {
  WORD         wMBaddress;
  WORD         wMBtype;
  DWORD        dwMB_SNL;
  WORD         wPatternCode;
  WORD         wPC_Overflow;
  DWORD        dwReservedBits2;
  DXVA_MVvalue MVector[DXVA_NumMV_OBMC_off_BinPBwith4MV_off];
} DXVA_MBctrl_P_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 macroblock.

wMBtype

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

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. L’utilisation de ces bits est la même que celle spécifiée pour les bits correspondants dans 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 des coefficients de transformation sont envoyés pour idct hors hôte pour le macroblock actuel.
L’indicateur HostResidDif 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.
9 et 8 MotionType
Spécifie le type de mouvement dans l’image. Par exemple, pour un mouvement basé sur un cadre avec une structure d’image de cadre (comme dans H.261), le bit 9 doit être 1 et le bit 8 doit être égal à zéro.
L’utilisation de ces bits correspond directement à l’utilisation de frame_motion_type ou field_motion_type bits dans la section 6.3.17.1 et les tableaux 6-17 et 6-18 de la vidéo MPEG-2 lorsque ces bits sont présents dans MPEG-2. L’utilisation de ces bits est expliquée plus en détail dans la section Notes suivante.
7 et 6 MBscanMethod
Cette variable n’a aucune signification et ces bits doivent être définis sur zéro dans cette structure.
5 FieldResidual
Indique si les blocs de différence résiduelle utilisent une structure IDCT de champ spécifiée dans MPEG-2.
Doit être égal à 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 la variable frame_pred_frame_DCT dans la syntaxe MPEG-2 est 1 et doit être égale à la variable dct_type dans la syntaxe MPEG-2 si dct_type est présent pour le macroblock.
4 H261LoopFilter
Spécifie si le filtre de boucle H.261 (section 3.2.3 de H.261) est actif pour la prédiction macroblock actuelle. Le filtre de boucle H.261 est un filtre séparable 1/4, 1/2, 1/4 appliqué horizontalement et verticalement aux six blocs d’un macroblock H.261, sauf sur les bords de bloc où l’un des appuis serait en dehors du bloc. Dans ce cas, le filtre est modifié pour avoir des coefficients 0, 1, 0. La précision arithmétique complète est conservée avec l’arrondi à des entiers 8 bits à la sortie du processus de filtrage 2D (les valeurs de moitié ou supérieures sont arrondies vers le haut).
3 Motion4MV
Variable indiquant que le mouvement vers l’avant utilise un vecteur de mouvement distinct pour chacun des quatre blocs de luminance dans le macroblock, tel qu’il est utilisé dans les annexes H.263 F et J. Motion4MV doit être égal à zéro si MotionForward est égal à zéro ou si le membre bPic4MVallowed de DXVA_PictureParameters est égal à zéro.
2 MotionBackward
Utilisé de la manière spécifiée pour la variable macroblock_motion_backward correspondante dans MPEG-2. Si le membre bPicBackwardPrediction de DXVA_PictureParameters est égal à zéro, MotionBackward doit être égal à zéro. L’utilisation de ce bit est expliquée plus en détail dans la section Remarques suivante.
1 MotionForward
Utilisé pour la variable macroblock_motion_forward correspondante dans MPEG-2. L’utilisation de ce bit est expliquée plus en détail dans la section Remarques suivante.
0 IntraMacroblock
Indique que le macroblock est codé comme intra et qu’aucun vecteur de mouvement n’est utilisé pour le macroblock actuel. Correspond à macroblock_intrain MPEG-2. L’utilisation de ce bit est expliquée plus en détail dans la section Remarques suivante.

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ées 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 dans le macroblock actuel.

Le bit (11-i) de wPatternCode (où le bit zéro est les bits les moins significatifs) 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 mpeg-2 figures 6-10, 6-11 et 6-12 (ordre de balayage raster pour Y, suivi de blocs Cb 4 :2 :0 dans l’ordre de balayage raster, suivi de blocs 4 :2 :0 de Cr, suivi de 4 :2 :2 blocs de Cb, suivi par 4 :2 :2 blocs de Cr, suivi par 4 :4 :4 blocs de Cb, suivi de blocs 4 :4 :4 :4 de Cr). Les données des blocs codés (ces blocs dont le bit (11-i) est égal à 1) se trouvent dans la mémoire tampon de codage résiduelle dans le même ordre d’indexation (augmentation de i). 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 de six positions de bits (ces positions de bits inférieures étant utilisées pour les formats chroma 4 :2 :2 et 4 :4 :4).

Si le membre bConfigSpatialResidInterleaved de DXVA_ConfigPictureDecode est 1, les différences résiduelles basées sur l’hôte sont envoyées dans une forme entrelacée chromatique correspondant à celle du format de pixel YUV utilisé. Dans ce cas, chaque paire de blocs Cb et Cr correspondant spatialement 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 correspondant défini 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 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 bit wPatternCode égal à zéro.

wPC_Overflow

Spécifie les blocs du macroblock qui utilisent des données de différence résiduelle de dépassement de capacité.

Lors de l’utilisation du décodage de différence résiduelle basé sur l’hôte avec le membre bPicOverflowBlocks de DXVA_PictureParameters égal à 1 et IntraMacroblock égal à zéro (méthode de dépassement de capacité 8-8), wPC_Overflow contient le code de modèle des blocs de dépassement de capacité. (Le code de modèle est spécifié de la même manière que pour wPatternCode.) Les données des blocs de dépassement de capacité codés (ces blocs dont le bit (11-i) est égal à 1) se trouvent dans la mémoire tampon de codage résiduelle dans le même ordre d’indexation (augmentation de i).

dwReservedBits2

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

MVector[DXVA_NumMV_OBMC_off_BinPBwith4MV_off]

Tableau contenant la valeur du ou des vecteurs de mouvement pour le macroblock, chaque vecteur de mouvement est représenté par une structure DXVA_MVvalue .

Remarques

Chaque macroblock ignoré spécifié par MBskipsFollowing doit être généré d’une manière mathématiquement équivalente à l’incrémentation de la valeur de wMBaddress , puis à la répétition de la même commande de contrôle macroblock.

Le contenu d’une commande de contrôle macroblock avec une valeur différente de zéro pour MBskipsFollowing est équivalent (à l’exception de la valeur de MBskipsFollowing) au contenu du premier de la série de macroblocks ignorés. Par conséquent, chaque fois que MBskipsFollowing n’est pas égal à zéro, les membres de structure et les variables suivants doivent tous être égaux à zéro : Motion4MV, IntraMacroblock, wPatternCodeet wPC_Overflow. Chaque macroblock ignoré suivant est ensuite généré de la même façon que le premier, à l’exception de l’incrémentation de la valeur de wMBaddress.

MBdataLocation doit être égal à zéro pour le premier macroblock dans la mémoire tampon de commande de contrôle macroblock. Pour les macroblocks autres que le premier macroblock dans la mémoire tampon de commande de contrôle macroblock, MBdataLocation peut contenir n’importe quelle valeur si wPatternCode est égal à zéro. Lorsque wPatternCode est égal à zéro, les décodeurs sont recommandés, mais pas obligatoires pour définir cette valeur sur zéro ou sur la même valeur que dans la commande de contrôle macroblock suivante.

Pour plus d’informations sur la façon dont les macroblocks ignorés sont générés, consultez Génération de macros ignorées.

Les combinaisons valides d’IntraMacroblock, MotionForward, MotionBackward, MotionType, MvertFieldSel et MVector sont présentées dans les tables de la première partie de la structure de commande de contrôle Macroblock.

Configuration requise

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

Voir aussi

DXVA_ConfigPictureDecode

DXVA_MBctrl_P_OffHostIDCT_1

DXVA_MVvalue

DXVA_PictureParameters