Partager via


structure DXVA_BufferDescription (dxva.h)

La structure DXVA_BufferDescription est envoyée par le décodeur hôte à l’accélérateur pour fournir des informations à l’accélérateur sur la mémoire tampon en cours de passage de l’hôte à l’accélérateur.

Syntaxe

typedef struct _DXVA_BufferDescription {
  DWORD dwTypeIndex;
  DWORD dwBufferIndex;
  DWORD dwDataOffset;
  DWORD dwDataSize;
  DWORD dwFirstMBaddress;
  DWORD dwNumMBsInBuffer;
  DWORD dwWidth;
  DWORD dwHeight;
  DWORD dwStride;
  DWORD dwReservedBits;
} DXVA_BufferDescription, *LPDXVA_BufferDescription;

Membres

dwTypeIndex

Identifie le type de mémoire tampon passé à l’accélérateur. Le tableau suivant répertorie les identificateurs numériques et le type de mémoire tampon associé.

valeur type de mémoire tampon
1 Mémoires tampons des paramètres de décodage d’image.
2 mémoires tampons de commande de contrôle Macroblock (étroitement associées à une correspondance de 1:1 avec des mémoires tampons de données de blocs de différence résiduelles).
3 Mémoires tampons de données de bloc de différence résiduelle. Pour plus d’informations, consultez Macroblock-Oriented décodage d’images.
4 Déblocage des mémoires tampons de commande de contrôle de filtre (avec ou sans restriction sur l’effet du filtre).
5 Mémoires tampons de matrice de quantisation inverse (utilisées uniquement avec le traitement VLD hors hôte).
6 Mémoires tampons de contrôle de segment (étroitement associées à une correspondance 1:1 avec des mémoires tampons de données de flux de bits).
7 Mémoires tampons de données de flux de bits.
8 Exemples de mémoires tampons de fusion alpha AYUV.
9 Mémoires tampons de surface de fusion alpha IA44/AI44.
10 Mémoires tampons de surface de fusion alpha DPXD.
11 Mettez en surbrillance les mémoires tampons de données.
12 Mémoires tampons de données DCCMD.
13 Mémoires tampons de combinaison alpha-blend.
14 Image rééchantillonner les mémoires tampons de contrôle.
15 Mémoires tampons de commande en lecture différée contenant des commandes pour lire les macroblocks de l’image résultante sur l’hôte.

dwBufferIndex

Spécifie le numéro de séquence de la mémoire tampon dans les mémoires tampons du même type qui ont été passées dans la même liste de description de mémoire tampon .

dwDataOffset

Spécifie le décalage des données pertinentes à partir du début de la mémoire tampon en octets. L’utilisation de ce membre est actuellement limitée à la valeur zéro.

dwDataSize

Spécifie la quantité de données pertinentes dans la mémoire tampon en octets. L’emplacement du dernier octet du contenu dans la mémoire tampon est dwDataOffset, plus dwDataSize moins 1.

dwFirstMBaddress

Spécifie l’adresse de macroblock du premier macroblock dans la mémoire tampon passée à l’accélérateur. L’adresse macroblock est donnée dans l’ordre d’analyse raster. L’adresse est déterminée par les membres de DXVA_PictureParameters. Voici quelques exemples d’adresses macroblock.

macroblock d’adresse
en haut à gauche zéro
en haut à droite wPicWidthInMBminus1
inférieur gauche wPicHeightInMBminus1 x (wPicWidthInMBminus1+1)
en bas à droite (wPicHeightInMBminus1+1) x (wPicWidthInMBminus1+1)-1

Ce membre doit être égal à zéro si la mémoire tampon de données fait partie des types suivants : paramètres de décodage d’image, matrice de quantisation inverse, contrôle de segment, données de flux de bits, AYUV, IA44/AI44, DPXD, Highlight et DCCMD.

Si la mémoire tampon de données est une mémoire tampon de données de bloc de différence résiduelle, dwFirstMBaddress doit avoir la même valeur que pour la mémoire tampon de commande de contrôle macroblock correspondante. Pour plus d’informations, consultez Macroblock-Oriented décodage d’images.

dwNumMBsInBuffer

Spécifie le nombre de macroblocks de données dans la mémoire tampon. Ce nombre inclut des macroblocks ignorés. Doit être égal à zéro si la mémoire tampon de données fait partie des types suivants : paramètres de décodage d’image, matrice de quantisation inverse, AYUV, IA44/AI44, DPXD, Mise en surbrillance ou DCCMD.

La valeur de dwNumMBsInBuffer dépend du type de mémoire tampon de données utilisé comme indiqué dans le tableau suivant.

type de mémoire tampon valeur de dwNumMBsInBuffer
Commande de contrôle Macroblock Doit être égal à la somme de toutes les valeurs de MBskipsFollowing, ajoutée au nombre de commandes de contrôle macroblock dans la mémoire tampon de commande de contrôle macroblock.
Bloc de différence résiduelle Doit avoir la même valeur que pour la mémoire tampon de commande de contrôle macroblock correspondante.
Commande slice-control Doit être égal à la valeur du membre wNumberMBsInSlice de la structure DXVA_SliceInfo dans la mémoire tampon de contrôle de segment.
Flux de bits Doit avoir la même valeur que pour la mémoire tampon de commande de contrôle de segment correspondante.

dwWidth

Spécifie la largeur des données dans la mémoire tampon comme nombre d’unités de bits pour les types de données suivants : AYUV (les données sont spécifiées en unités 32 bits), IA44/AI44 (les données sont spécifiées en unités 8 bits) ou DPXD (les données sont spécifiées en unités 2 bits). Ce membre doit être égal à zéro si la mémoire tampon de données n’est pas parmi les types précédents.

dwHeight

Spécifie la hauteur des données dans la mémoire tampon comme nombre d’unités de bits pour les types de données suivants : AYUV (les données sont spécifiées en unités 32 bits), IA44/AI44 (les données sont spécifiées en unités 8 bits) ou DPXD (les données sont spécifiées en unités 2 bits). Ce membre doit être égal à zéro si la mémoire tampon de données n’est pas parmi les types précédents.

dwStride

Spécifie la progression des données dans la mémoire tampon comme nombre d’unités de bits pour les types de données suivants : AYUV (les données sont spécifiées en unités 32 bits), IA44/AI44 (les données sont spécifiées en unités 8 bits) ou DPXD (les données sont spécifiées en unités 2 bits). La progression des types de mémoires tampons applicables est déterminée à partir de la configuration d’allocation de mémoire tampon effectuée par l’accélérateur. Ce membre doit être égal à zéro si la mémoire tampon de données n’est pas parmi les types précédents.

dwReservedBits

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

Remarques

Un tableau de structures DXVA_BufferDescription est appelé liste de description de mémoire tampon. Lorsqu’un ensemble de mémoires tampons est envoyé du décodeur hôte à l’accélérateur matériel, une liste de description de la mémoire tampon est envoyée pour décrire les mémoires tampons. La liste de description de la mémoire tampon contient une structure DXVA_BufferDescription pour chaque mémoire tampon de cet ensemble. La liste de description de la mémoire tampon commence par une structure DXVA_BufferDescription pour la première mémoire tampon du premier type, suivie d’une structure DXVA_BufferDescription pour la mémoire tampon suivante du même type, et ainsi de suite. La liste de description de la mémoire tampon continue ensuite avec une structure DXVA_BufferDescription pour la première mémoire tampon du type suivant, et ainsi de suite.

Exigences

Exigence Valeur
d’en-tête dxva.h (include Dxva.h)

Voir aussi

DXVA_PictureParameters

DXVA_SliceInfo