DXVA2_ConfigPictureDecode structure (dxva2api.h)

Décrit la configuration d’un appareil décodeur DXVA.

Syntaxe

typedef struct _DXVA2_ConfigPictureDecode {
  GUID   guidConfigBitstreamEncryption;
  GUID   guidConfigMBcontrolEncryption;
  GUID   guidConfigResidDiffEncryption;
  UINT   ConfigBitstreamRaw;
  UINT   ConfigMBcontrolRasterOrder;
  UINT   ConfigResidDiffHost;
  UINT   ConfigSpatialResid8;
  UINT   ConfigResid8Subtraction;
  UINT   ConfigSpatialHost8or9Clipping;
  UINT   ConfigSpatialResidInterleaved;
  UINT   ConfigIntraResidUnsigned;
  UINT   ConfigResidDiffAccelerator;
  UINT   ConfigHostInverseScan;
  UINT   ConfigSpecificIDCT;
  UINT   Config4GroupedCoefs;
  USHORT ConfigMinRenderTargetBuffCount;
  USHORT ConfigDecoderSpecific;
} DXVA2_ConfigPictureDecode;

Membres

guidConfigBitstreamEncryption

Définit le type de protocole de chiffrement pour les mémoires tampons de données de flux de bits. Si aucun chiffrement n’est appliqué, la valeur est DXVA_NoEncrypt. Si ConfigBitstreamRaw a la valeur 0, la valeur doit être DXVA_NoEncrypt.

guidConfigMBcontrolEncryption

Définit le type de protocole de chiffrement pour les mémoires tampons de données de contrôle macroblock. Si aucun chiffrement n’est appliqué, la valeur est DXVA_NoEncrypt. Si ConfigBitstreamRaw a la valeur 1, la valeur doit être DXVA_NoEncrypt.

guidConfigResidDiffEncryption

Définit le type de protocole de chiffrement pour les mémoires tampons de données de décodage de différences résiduelles (mémoires tampons contenant des données de domaine spatial ou des jeux de coefficients de domaine de transformation pour IDCT basé sur accélérateur). Si aucun chiffrement n’est appliqué, la valeur est DXVA_NoEncrypt. Si ConfigBitstreamRaw a la valeur 1, la valeur doit être DXVA_NoEncrypt.

ConfigBitstreamRaw

Indique si le décodeur hôte envoie des données brutes de flux de bits. Si la valeur est 1, les données des images sont envoyées dans des mémoires tampons de flux de bits en tant que contenu de flux de bits brut. Si la valeur est 0, les données d’image sont envoyées à l’aide des mémoires tampons de commande de contrôle macroblock. Si ConfigResidDiffHost ou ConfigResidDiffAccelerator est 1, la valeur doit être 0.

ConfigMBcontrolRasterOrder

Spécifie si les commandes de contrôle macroblock sont dans l’ordre d’analyse raster ou dans un ordre arbitraire. Si la valeur est 1, les commandes de contrôle macroblock dans chaque mémoire tampon de commande de contrôle macroblock sont dans l’ordre d’analyse raster. Si la valeur est 0, l’ordre est arbitraire. Pour certains types de flux de bits, le fait de forcer l’ordre raster augmente considérablement le nombre de mémoires tampons de contrôle macroblock requises qui doivent être traitées, ou nécessite une réorganisation des informations de contrôle par l’hôte. Par conséquent, la prise en charge de l’ordre arbitraire peut être plus efficace.

ConfigResidDiffHost

Contient la configuration de la différence résiduelle de l’hôte. Si la valeur est 1, certaines données de décodage de différence résiduelle peuvent être envoyées sous forme de blocs dans le domaine spatial à partir de l’hôte. Si la valeur est 0, les données de domaine spatial ne sont pas envoyées.

ConfigSpatialResid8

Indique la taille du mot utilisé 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 la différence résiduelle basée sur l’hôte.

Si ConfigResidDiffHost a la valeur 1 et ConfigSpatialResid8 est 1, l’hôte envoie des blocs de domaine spatial de différence résiduelle pour les macroblocks non intra à l’aide d’exemples signés 8 bits et pour les intra macroblocks dans les images prédites (non intra) dans un format qui dépend de la valeur de ConfigIntraResidUnsigned :

  • Si ConfigIntraResidUnsigned a la valeur 0, 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 2^(BPP–1).
  • Si ConfigIntraResidUnsigned 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 0.
Si ConfigResidDiffHost a la valeur 1 et ConfigSpatialResid8 la valeur 0, 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 intra macroblocks dans les images prédites (non intra) dans un format qui dépend de la valeur de ConfigIntraResidUnsigned :
  • Si ConfigIntraResidUnsigned a la valeur 0, les blocs de domaine spatiaux 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).
  • Si ConfigIntraResidUnsigned a la valeur 1, les blocs de domaine spatiaux pour les blocs de macro intra sont envoyés sous forme de valeurs entières non signées 16 bits par rapport à une valeur de référence constante de 0.
Si ConfigResidDiffHost a la valeur 0, ConfigSpatialResid8 doit être 0.

Pour les images intra, les blocs de domaine spatial doivent être envoyés à l’aide d’exemples 8 bits si les bits par pixel (BPP) sont 8, et à l’aide d’exemples 16 bits si BPP > 8. Si ConfigIntraResidUnsigned a la valeur 0, 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), et si ConfigIntraResidUnsigned 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 0.

ConfigResid8Subtraction

Si la valeur est 1, les blocs de dépassement de capacité de différence de 8 bits sont soustraits au lieu d’être ajoutés. La valeur doit être 0, sauf si ConfigSpatialResid8 a la valeur 1.

La possibilité de soustraire des différences plutôt que de les ajouter permet au décodage des différences 8 bits d’être entièrement conforme à la plage complète ±255 de valeurs requise dans les spécifications du décodeur vidéo, parce que +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 = +127 moins –128).

ConfigSpatialHost8or9Clipping

Si la valeur est 1, les blocs de domaine spatial pour les blocs intra macroblocks doivent être clippés à une plage de 8 bits sur l’hôte et les blocs de domaine spatial pour les macroblocks non intra-intra doivent être clippés à une plage de 9 bits sur l’hôte. Si la valeur est 0, aucun découpage de ce type n’est nécessaire pour l’hôte.

La valeur doit être 0, sauf si ConfigSpatialResid8 est 0 et ConfigResidDiffHost est 1.

ConfigSpatialResidInterleaved

Si la valeur est 1, toutes les données de différence résiduelle de domaine spatial doivent être envoyées dans une forme entrelacée de chrominance correspondant au modèle d’entrelacement de chrominance au format YUV. La valeur doit être 0, sauf si ConfigResidDiffHost est 1 et que le format YUV est NV12 ou NV21.

ConfigIntraResidUnsigned

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.

Si ConfigResidDiffHost a la valeur 1 et ConfigIntraResidUnsigned a la valeur 0, les blocs de données de différence résiduelle de domaine spatial pour les blocs intra macroblock doivent être envoyés comme suit :

  • Dans une image non intra, si ConfigSpatialResid8 a la valeur 0, 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).
  • Dans une image non intra, si ConfigSpatialResid8 a la valeur 1, les blocs de données de différence résiduelle de domaine spatial pour les macroblocks intra sont envoyés sous forme de valeurs entières signées 8 bits par rapport à une valeur de référence constante de 2^(BPP-1).
  • Dans une image intra, si BPP a la valeur 8, 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 8 bits par rapport à une valeur de référence constante de 2^(BPP–1), quelle que soit la valeur de ConfigSpatialResid8.
Si ConfigResidDiffHost a la valeur 1 et ConfigIntraResidUnsigned est 1, les blocs de données de différence résiduelle de domaine spatial pour les blocs intra macroblocks doivent être envoyés comme suit :
  • Dans une image non intra, si ConfigSpatialResid8 a la valeur 0, les blocs de données de différence résiduelle de domaine spatial pour les blocs intra macroblocks doivent être envoyés en tant que valeurs entières non signées 16 bits par rapport à une valeur de référence constante de 0.
  • Dans une image non intra, si ConfigSpatialResid8 a la valeur 1, les blocs de données de différence résiduelle de domaine spatial pour les blocs de macros intra sont envoyés sous forme de valeurs entières non signées 8 bits par rapport à une valeur de référence constante de 0.
  • Dans une image intra, si BPP a la valeur 8, 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 8 bits par rapport à une valeur de référence constante de 0, quelle que soit la valeur de ConfigSpatialResid8.
La valeur du membre doit être 0, sauf si ConfigResidDiffHost est 1.

ConfigResidDiffAccelerator

Si la valeur est 1, 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. Si la valeur est 0, IDCT basé sur un accélérateur ne sera pas utilisé. Si ConfigResidDiffHost et ConfigResidDiffAccelerator ont la valeur 1, cela indique que le décodage d’une différence résiduelle sera effectué sur l’hôte et d’autres sur l’accélérateur, comme indiqué par les commandes de contrôle au niveau macrobloc.

La valeur doit être 0 si ConfigBitstreamRaw est 1.

ConfigHostInverseScan

Si la valeur est 1, l’analyse inverse du traitement de bloc de domaine de transformation est effectuée sur l’hôte, et les index absolus sont envoyés à la place pour les coefficients de transformation. Si la valeur est 0, l’analyse inverse est effectuée sur l’accélérateur.

La valeur doit être 0 si ConfigResidDiffAccelerator a la valeur 0 ou si Config4GroupedCoefs a la valeur 1.

ConfigSpecificIDCT

Si la valeur est 1, l’IDCT spécifié à l’Annexe W de la Recommandation UIT-T H.263 est utilisé. Si la valeur est 0, n’importe quel IDCT conforme peut être utilisé pour l’IDCT hors hôte.

L’annexe H.263 n’étant pas conforme aux exigences IDCT de MPEG-2 rectificatif 2, la valeur ne doit pas être 1 pour une utilisation avec la vidéo MPEG-2.

La valeur doit être 0 si ConfigResidDiffAccelerator est 0, ce qui indique un décodage de différence résiduelle purement basé sur l’hôte.

Config4GroupedCoefs

Si la valeur est 1, les coefficients de transformation pour IDCT hors hôte sont envoyés à l’aide de la structure DXVA_TCoef4Group . Si la valeur est 0, la structure DXVA_TCoefSingle est utilisée. La valeur doit être 0 si ConfigResidDiffAccelerator est 0 ou si ConfigHostInverseScan a la valeur 1.

ConfigMinRenderTargetBuffCount

Spécifie le nombre d’images que l’appareil décodeur traite à la fois.

ConfigDecoderSpecific

Contient des informations de configuration spécifiques au décodeur.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows Vista [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2008 [applications de bureau uniquement]
En-tête dxva2api.h

Voir aussi

Accélération vidéo DirectX 2.0

Media Foundation Structures