structure D3D11_VIDEO_DECODER_CONFIG (d3d11.h)

Décrit la configuration d’un décodeur Microsoft Direct3D 11 pour l’accélération vidéo DirectX (DXVA).

Syntaxe

typedef struct D3D11_VIDEO_DECODER_CONFIG {
  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;
} D3D11_VIDEO_DECODER_CONFIG;

Membres

guidConfigBitstreamEncryption

Si les mémoires tampons de données de flux de bits sont chiffrées à l’aide du mécanisme D3D11CryptoSession, ce GUID doit être défini sur zéro. Si aucun chiffrement n’est appliqué, la valeur est DXVA_NoEncrypt. Si ConfigBitstreamRaw est 0, la valeur doit être DXVA_NoEncrypt.

guidConfigMBcontrolEncryption

Si les mémoires tampons de données de contrôle macroblock sont chiffrées à l’aide du mécanisme D3D11CryptoSession, ce GUID doit être défini sur zéro. Si aucun chiffrement n’est appliqué, la valeur est DXVA_NoEncrypt. Si ConfigBitstreamRaw a la valeur 1, la valeur doit être DXVA_NoEncrypt.

guidConfigResidDiffEncryption

Si la différence résiduelle de décodage des mémoires tampons de données est chiffrée à l’aide du mécanisme D3D11CryptoSession, ce GUID doit être défini sur zéro. 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 de 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 l’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 macrobloc 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 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 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é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 macroblocks intra 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 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).
  • Si ConfigIntraResidUnsigned a la valeur 1, les blocs de domaine spatial pour les macroblocks 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.
Si ConfigResidDiffHost a la valeur 1 et ConfigSpatialResid8 est 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 macroblocks intra 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 de macro 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 spatial 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 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 bits par pixel (BPP) est de 8 et d’exemples 16 bits si BPP > 8. Si ConfigIntraResidUnsigned a la valeur 0, ces exemples sont envoyés sous forme de valeurs entières signées par rapport à une valeur de référence constante de 2^(BPP-1), et si ConfigIntraResidUnsigned est 1, ces exemples sont envoyés sous forme de 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 plutôt qu’ajoutés. La valeur doit être 0, sauf si ConfigSpatialResid8 est 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, parce que +255 ne peut pas être représenté comme l’ajout de deux nombres 8 bits signés, mais tout 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 coupés sur une plage de 8 bits sur l’hôte et les blocs de domaine spatial pour les macroblocks non intra doivent être coupés sur une plage de 9 bits sur l’hôte. Si la valeur est 0, aucun découpage de ce type n’est nécessaire par 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 sous 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 des 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 est 0, 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 macroblocks intra 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 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), quelle que soit la valeur de ConfigSpatialResid8.
Si ConfigResidDiffHost a la valeur 1 et ConfigIntraResidUnsigned a la valeur 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 macroblocks intra doivent être envoyés sous forme de 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 macroblocks 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 macroblocks 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, 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 à coefficient de domaine de transformation peuvent être envoyés à partir de l’hôte pour IDCT basé sur un 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 qu’une différence résiduelle de décodage sera effectuée sur l’hôte et d’autres sur l’accélérateur, comme indiqué par les commandes de contrôle au niveau macroblock.

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 est 0 ou si Config4GroupedCoefs est 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 un IDCT hors hôte.

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

La valeur doit être 0 si ConfigResidDiffAccelerator est 0, ce qui indique le 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 est 1.

ConfigMinRenderTargetBuffCount

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

ConfigDecoderSpecific

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

Configuration requise

   
Client minimal pris en charge Windows 8 [applications de bureau | Applications UWP]
Serveur minimal pris en charge Windows Server 2012 [applications de bureau | Applications UWP]
En-tête d3d11.h

Voir aussi

Structures vidéo Direct3D 11