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 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.
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.
- 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.
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 |