DXVA_BufferDescription structure (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 qui est actuellement passée 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ée à 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 de paramètres de décodage d’image. |
2 | Mémoires tampons de commande de contrôle Macroblock (étroitement associées à et ayant une correspondance 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 différence résiduelle. Pour plus d’informations, consultez Décodage d’images orienté macrobloc . |
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 tranche (étroitement associées à et ayant une correspondance 1 :1 avec les mémoires tampons de données de flux de bits). |
7 | Mémoires tampons de données bitstream. |
8 | Exemples de mémoires tampons de fusion alpha AYUV. |
9 | Mémoires tampons de surface à mélange 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-mélange. |
14 | Image rééchantillonnant les mémoires tampons de contrôle. |
15 | Mémoires tampons de commande en lecture différée contenant des commandes permettant de lire à l’hôte les macroblocks de l’image résultante. |
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 la 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 macroblock du premier macroblock de 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 des exemples d’adresses macroblock.
Macrobloc | Adresse |
---|---|
en haut à gauche | zéro |
en haut à droite | wPicWidthInMBminus1 |
en bas à 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 quantification inverse, contrôle de tranche, 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 Décodage d’images orienté macrobloc .
dwNumMBsInBuffer
Spécifie le nombre de macroblocs de données dans la mémoire tampon. Ce nombre inclut les 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 quantification inverse, AYUV, IA44/AI44, DPXD, Highlight ou DCCMD.
La valeur de dwNumMBsInBuffer dépend du type de mémoire tampon de données utilisée, 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 pour 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 de contrôle de segment | Doit être égale à la valeur du membre wNumberMBsInSlice de la structure DXVA_SliceInfo dans la mémoire tampon de contrôle de tranche. |
Bitstream | Doit avoir la même valeur que pour la mémoire tampon de commande de contrôle de tranche correspondante. |
dwWidth
Spécifie la largeur des données dans la mémoire tampon en tant que 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 ne figure 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 ne figure pas parmi les types précédents.
dwStride
Spécifie la progression des données dans la mémoire tampon en tant que 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 de l’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 ne figure pas parmi les types précédents.
dwReservedBits
Bits réservés utilisés pour l’empaquetage et l’alignement. Doit être zéro.
Remarques
Un tableau de structures DXVA_BufferDescription est appelé liste de description de la 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.
Configuration requise
Condition requise | Valeur |
---|---|
En-tête | dxva.h (inclure Dxva.h) |