DXVA_ConfigPictureDecode structure (dxva.h)

La structure DXVA_ConfigPictureDecode est envoyée par le décodeur hôte à l’accélérateur pour définir la configuration du décodage d’images compressées.

Syntaxe

typedef struct _DXVA_ConfigPictureDecode {
  DXVA_ConfigQueryOrReplyFunc dwFunction;
  DWORD                       dwReservedBits[3];
  GUID                        guidConfigBitstreamEncryption;
  GUID                        guidConfigMBcontrolEncryption;
  GUID                        guidConfigResidDiffEncryption;
  BYTE                        bConfigBitstreamRaw;
  BYTE                        bConfigMBcontrolRasterOrder;
  BYTE                        bConfigResidDiffHost;
  BYTE                        bConfigSpatialResid8;
  BYTE                        bConfigResid8Subtraction;
  BYTE                        bConfigSpatialHost8or9Clipping;
  BYTE                        bConfigSpatialResidInterleaved;
  BYTE                        bConfigIntraResidUnsigned;
  BYTE                        bConfigResidDiffAccelerator;
  BYTE                        bConfigHostInverseScan;
  BYTE                        bConfigSpecificIDCT;
  BYTE                        bConfig4GroupedCoefs;
} DXVA_ConfigPictureDecode, *LPDXVA_ConfigPictureDecode;

Membres

dwFunction

Indique le type de requête ou de réponse lors de l’utilisation de commandes de sondage et de verrouillage. Les 24 bits les plus significatifs de dwFunction sont la variable DXVA_ConfigQueryOrReplyFlag .

Les 4 bits les moins significatifs de la variable DXVA_ConfigQueryOrReplyFlag contiennent status indicateurs pour la requête ou la réponse en cours d’exécution.

Les 8 bits les moins significatifs de dwFunction sont la variable bDXVA_Func qui, dans ce cas, est égale à 1.

dwReservedBits[3]

Bits réservés utilisés pour l’empaquetage et l’alignement. Ces bits sont zéro.

guidConfigBitstreamEncryption

Indique un GUID associé au type de protocole de chiffrement pour les mémoires tampons de données de flux de bits. La valeur DXVA_NoEncrypt (un nom GUID défini dans dxva.h) indique que le chiffrement n’est pas appliqué. Ceci est DXVA_NoEncrypt si bConfigBitstreamRaw est égal à zéro.

guidConfigMBcontrolEncryption

Indique un GUID associé au type de protocole de chiffrement pour les mémoires tampons de contrôle macroblock. La valeur DXVA_NoEncrypt (un nom GUID défini dans dxva.h) indique que le chiffrement n’est pas appliqué. Ceci est DXVA_NoEncrypt si bConfigBitstreamRaw a la valeur 1.

guidConfigResidDiffEncryption

Indique un GUID associé au type de protocole de chiffrement pour les mémoires tampons de données de décodage des différences résiduelles (mémoires tampons contenant des données de domaine spatial ou des ensembles de coefficients de domaine de transformation pour IDCT basé sur accélérateur). Ceci est DXVA_NoEncrypt si bConfigBitstreamRaw a la valeur 1. (DXVA_NoEncrypt est un GUID défini dans dxva.h qui indique que le chiffrement n’est pas appliqué.)

bConfigBitstreamRaw

Contient l’indicateur de traitement du flux de bits. La valeur 1 spécifie que les données d’image seront envoyées dans des mémoires tampons de flux de bits en tant que contenu de flux binaire brut. La valeur zéro spécifie que les données d’image seront envoyées à l’aide des mémoires tampons de commande de contrôle macroblock.

Cette valeur est égale à zéro si bConfigResidDiffHost a la valeur 1 ou si bConfigResidDiffAccelerator a la valeur 1. La valeur zéro est considérée comme le niveau de prise en charge de base. La prise en charge supplémentaire du niveau 1 est préférable.

bConfigMBcontrolRasterOrder

Spécifie si les commandes de contrôle macroblock sont dans l’ordre d’analyse raster ou dans un ordre arbitraire. La valeur 1 spécifie que les commandes de contrôle macroblock dans chaque mémoire tampon de commande de contrôle macroblock sont dans l’ordre d’analyse raster, et qu’une valeur de zéro indique un ordre arbitraire. Actuellement, un pilote est autorisé à restreindre la prise en charge de l’ordre d’analyse raster ; Toutefois, un pilote doit prendre en charge à la fois l’ordre d’analyse arbitraire et l’ordre d’analyse raster.

bConfigResidDiffHost

Contient la configuration de la différence résiduelle de l’hôte (pour plus d’informations, consultez Décodage d’image orienté macrobloc ). La valeur 1 spécifie que certaines données de décodage des différences résiduelles peuvent être envoyées en tant que blocs dans le domaine spatial à partir de l’hôte. La valeur zéro spécifie que les données de domaine spatial ne seront pas envoyées. Ce membre est égal à zéro si bConfigBitstreamRaw a la valeur 1. Il est préférable qu’un accélérateur prend en charge à la fois zéro et 1.

bConfigSpatialResid8

Indique la taille de mot utilisée pour représenter les blocs de domaine spatial de différence résiduelle pour les images prédites (non intra) lors de l’utilisation du décodage de différence résiduelle basé sur l’hôte (lorsque bConfigResidDiffHost est égal à 1).

Si bConfigSpatialResid8 a la valeur 1 et bConfigResidDiffHost a la valeur 1, l’hôte envoie des blocs de domaine spatial de différence résiduelle pour les macroblocks nonintra à l’aide d’exemples signés 8 bits, et pour les intra-macroblocks dans les images prédites (non-tras) dans un format dépendant de bConfigIntraResidUnsigned comme suit :

  • Si bConfigIntraResidUnsigned a la valeur zéro, les blocs de domaine spatial pour les blocs intra macrobloc sont envoyés sous forme de valeurs entières signées 8 bits par rapport à une valeur de référence constante de 128.
  • Si bConfigIntraResidUnsigned a la valeur 1, les blocs de domaine spatial pour les blocs intra macrobloc sont envoyés sous forme de valeurs entières non signées 8 bits par rapport à une valeur de référence constante de zéro.
Si bConfigSpatialResid8 a la valeur zéro et bConfigResidDiffHost a la valeur 1, l’hôte envoie des blocs de données de domaine spatial de différence résiduelle pour les macroblocks non-intra à l’aide d’exemples signés 16 bits, et pour les blocs intra macro dans les images prédites (non-intra) dans un format dépendant de bConfigIntraResidUnsigned comme suit :
  • Si bConfigIntraResidUnsigned est égal à zéro, les blocs de domaine spatiaux pour les blocs intra macroblocks sont envoyés sous forme de valeurs entières signées 16 bits par rapport à une valeur de référence constante de 2 (BPP-1),BPP est le nombre de bits par exemple pour la vidéo non compressée (généralement une valeur de 8).
  • Si bConfigIntraResidUnsigned a la valeur 1, les blocs de domaine spatiaux pour les blocs intra macro sont envoyés sous forme de valeurs entières non signées 16 bits par rapport à une valeur de référence constante de zéro.
Le membre bConfigSpatialResid8 doit être égal à zéro si bConfigResidDiffHost est égal à zéro. Il n’existe aucune préférence pour une valeur particulière de bConfigSpatialResid8 lorsque bConfigResidDiffHost a la valeur 1.
Note Pour les images intra dont le BPP est égal à 8, les blocs de domaine spatial doivent être envoyés à l’aide d’exemples 8 bits. Pour les images intra dont le BPP est supérieur à 8, les blocs de domaine spatial doivent être envoyés à l’aide d’exemples 16 bits. (La variable BPP est le nombre de bits par échantillon pour la vidéo non compressée, généralement une valeur de 8.)

Si bConfigIntraResidUnsigned est égal à zéro, ces exemples sont envoyés en tant que valeurs entières signées par rapport à une valeur de référence constante de 2(BPP-1). Si bConfigIntraResidUnsigned a la valeur 1, ces exemples sont envoyés en tant que valeurs entières non signées par rapport à une valeur de référence constante de zéro.

 

bConfigResid8Subtraction

Lorsqu’il est égal à 1, indique que les blocs de dépassement de capacité de différence de 8 bits sont soustraits au lieu d’être ajoutés. Doit être égal à zéro, sauf si bConfigSpatialResid8 a la valeur 1. La valeur préférée d’un accélérateur à prendre en charge est 1 si bConfigSpatialResid8 a la valeur 1. La possibilité de soustraire des différences plutôt que de les ajouter permet au décodage de différence 8 bits d’être entièrement conforme à la plage complète de valeurs +/-255 requise dans les spécifications du décodeur vidéo. En effet, +255 ne peut pas être représenté comme l’ajout de deux nombres 8 bits signés, mais n’importe quel nombre dans la plage +/-255 peut être représenté comme la différence entre deux nombres 8 bits signés (+255 est égal à +127 moins âˆ'128).

bConfigSpatialHost8or9Clipping

Si la valeur est égale à 1, indique que les blocs de domaine spatial pour les blocs intra macroblocks sont clippés à une plage de 8 bits sur l’hôte et que les blocs de domaine spatial pour les macroblocks non-intra sont clippés à une plage de 9 bits sur l’hôte. La valeur zéro indique qu’aucun découpage de ce type n’est effectué par l’hôte. Doit être égal à zéro, sauf si bConfigSpatialResid8 est égal à zéro et bConfigResidDiffHost est égal à 1. La valeur préférée d’un accélérateur à prendre en charge est zéro.

bConfigSpatialResidInterleaved

Si la valeur est égale à 1, indique que toutes les données de différence résiduelle de domaine spatial sont envoyées dans une forme entrelacée de chrominance correspondant au modèle d’entrelacement de chrominance au format YUV. Doit être égal à zéro, sauf si bConfigResidDiffHost a la valeur 1 et que le format YUV est NV12 ou NV21. La valeur préférée d’un accélérateur à prendre en charge est zéro.

bConfigIntraResidUnsigned

Indique la méthode de représentation des blocs de domaine spatial de données de différence résiduelle pour les blocs intra lors de l’utilisation du décodage de différence basé sur l’hôte (lorsque bConfigResidDiffHost est égal à 1).

Lorsque bConfigIntraResidUnsigned est égal à zéro et bConfigResidDiffHost est égal à 1, les blocs de données de différence résiduelle de domaine spatial pour les blocs intra macroblock sont envoyés comme suit :

  • Dans une image non intra, si bConfigSpatialResid8 est égal à zéro, les blocs de données de différence résiduelle de domaine spatial pour les blocs intra macrobloc sont envoyés sous forme de valeurs entières signées 16 bits par rapport à une valeur de référence constante de 2 (BPP-1),BPP est le nombre de bits par échantillon pour la vidéo non compressée (généralement une valeur de 8).
  • Dans une image non intra si bConfigSpatialResid8 a la valeur 1 et dans une image intra si BPP est égal à 8 (quelle que soit la valeur de bConfigSpatialResid8), les blocs de données de différence résiduelle de domaine spatial pour les blocs intra macroblocs sont envoyés en tant que valeurs entières signées 8 bits par rapport à une valeur de référence constante de 128.
Lorsque bConfigIntraResidUnsigned est égal à 1 et bConfigResidDiffHost est égal à 1, les blocs de données de différence résiduelle de domaine spatial pour les blocs intra macroblock sont envoyés comme suit :
  • Dans une image nonintra, si bConfigSpatialResid8 est égal à zéro, les blocs de données de différence résiduelle de domaine spatial pour les blocs intra macrobloc sont envoyés sous forme de valeurs entières non signées 16 bits par rapport à une valeur de référence constante égale à zéro.
  • Dans une image non intra si bConfigSpatialResid8 a la valeur 1 et dans une image intra si BPP est égal à 8 (quelle que soit la valeur de bConfigSpatialResid8), les blocs de données de différence résiduelle de domaine spatial pour les blocs intra macro sont envoyés en tant que valeurs entières non signées 8 bits par rapport à une valeur de référence constante de zéro.
Le membre bConfigIntraResidUnsigned doit être égal à zéro, sauf si bConfigResidDiffHost a la valeur 1.

La valeur préférée d’un accélérateur à prendre en charge est zéro pour bConfigIntraResidUnsigned.

bConfigResidDiffAccelerator

Contient la configuration de la différence résiduelle de l’accélérateur. La valeur 1 indique que des blocs de données de coefficient de domaine de transformation peuvent être envoyés à partir de l’hôte pour idct basé sur accélérateur. La valeur zéro spécifie que l’IDCT basé sur l’accélérateur ne sera pas utilisé. Si bConfigResidDiffHost et bConfigResidDiffAccelerator ont la valeur 1, le décodage d’une différence résiduelle est effectué sur l’hôte et d’autres sur l’accélérateur, comme indiqué par les commandes de contrôle au niveau de la macroblock. Ce membre doit être égal à zéro si bConfigBitstreamRaw a la valeur 1.

La valeur préférée d’un accélérateur à prendre en charge est 1 pour bConfigResidDiffAccelerator.

Lorsque bConfigResidDiffAccelerator et bConfigResidDiffHost sont 1, le décodage de la différence résiduelle peut être partagé entre l’hôte et l’accélérateur sur une base macroblock. Cela est considéré comme un niveau de capacité d’accélérateur encore plus élevé que lorsque bConfigResidDiffAccelerator est égal à 1 et bConfigResidDiffHost est égal à zéro.

bConfigHostInverseScan

Indique si l’analyse inverse du traitement de bloc de domaine de transformation est effectuée sur l’hôte ou sur l’accélérateur. La valeur 1 indique que l’analyse inverse du traitement de bloc de domaine de transformation sera effectuée sur l’hôte, et que les index absolus seront envoyés à la place pour les coefficients de transformation. La valeur zéro indique que l’analyse inverse sera effectuée sur l’accélérateur. Ce membre doit être égal à zéro si bConfigResidDiffAccelerator est égal à zéro ou si bConfig4GroupedCoefs a la valeur 1.

La valeur préférée d’un accélérateur à prendre en charge est 1 si bConfigResidDiffAccelerator a la valeur 1.

bConfigSpecificIDCT

Indique l’utilisation d’une méthode IDCT spécifique pour idct hors hôte. La valeur 1 indique l’utilisation de l’IDCT spécifiée à l’Annexe W de la Recommandation UIT-T H.263. La valeur zéro indique que n’importe quel IDCT conforme peut être utilisé pour l’IDCT hors hôte. (Les valeurs autres que zéro et 1 sont réservées pour une utilisation ultérieure.)

Ce membre doit être égal à zéro si bConfigResidDiffAccelerator est égal à zéro (indiquant simplement le décodage de différence résiduelle basé sur l’hôte).

Note L’Annexe W de la Recommandation UIT-T H.263 ne respecte pas les exigences IDCT du rectificatif 2 mpeg-2 et bConfigSpecificIDCT ne doit donc pas être utilisé avec la vidéo MPEG-2.
 

bConfig4GroupedCoefs

La valeur 1 indique que les coefficients de transformation pour IDCT hors hôte seront envoyés à l’aide de la structure DXVA_TCoef4Group plutôt que de la structure DXVA_TCoefSingle . Il s’agit de zéro si bConfigResidDiffAccelerator est égal à zéro ou si bConfigHostInverseScan a la valeur 1.

La valeur préférée d’un accélérateur à prendre en charge est zéro si bConfigResidDiffAccelerator a la valeur 1.

Remarques

Pour certains types de flux de bits, le fait de forcer les commandes de contrôle macroblock dans chaque mémoire tampon de commande de contrôle macroblock à être dans l’ordre raster augmente considérablement le nombre de mémoires tampons requises qui doivent être traitées ou nécessite la réorganisation des informations de contrôle par l’hôte. La prise en charge de l’ordre arbitraire peut donc être avantageuse pour le processus de décodage. Par exemple, le décodage de la résolution CIF H.261 peut nécessiter 36 mémoires tampons de contrôle macroblocs par image si l’ordre de balayage raster est nécessaire dans chaque mémoire tampon (l’ordre arbitraire des tranches de l’Annexe K de H.263 et les modes de tranche rectangulaire ont des répercussions plus graves, nécessitant éventuellement un nombre extrêmement élevé de mémoires tampons.)

Configuration requise

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

Voir aussi

DXVA_MBctrl_I_HostResidDiff_1

DXVA_MBctrl_I_OffHostIDCT_1

DXVA_MBctrl_P_HostResidDiff_1

DXVA_MBctrl_P_OffHostIDCT_1

DXVA_TCoef4Group

DXVA_TCoefSingle