D3D11_1DDI_VIDEO_DECODER_CONFIG structure (d3d10umddi.h)
Décrit la configuration d’un appareil décodeur Microsoft Direct3D 11 pour Microsoft DirectX Video Acceleration (DXVA).
Syntaxe
typedef struct D3D11_1DDI_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_1DDI_VIDEO_DECODER_CONFIG;
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 (un nom GUID défini dans Dxva.h). Si ConfigBitstreamRaw a la valeur 0, la valeur doit être DXVA_NoEncrypt.
Si la valeur est D3DWDDM2_0DDI_DECODER_ENCRYPTION_HW_CENC, cela indique que les paramètres suivants seront passés à l’appel VideoDecoderBeginFrame :
Valeur | Signification |
---|---|
pContentKey | Pointeur vers la structure D3DWDDM2_0DDI_VIDEO_DECODER_BEGIN_FRAME_CRYPTO_SESSION , indiquant la CryptoSession et les informations clés utilisées pour déchiffrer le frame. |
ContentKeySize | Défini sur la taille de la structure D3DWDDM2_0DDI_VIDEO_DECODER_BEGIN_FRAME_CRYPTO_SESSION . |
guidConfigMBcontrolEncryption
Définit le type de protocole de chiffrement pour les mémoires tampons de données de contrôle de bloc de macro. Si aucun chiffrement n’est appliqué, la valeur est DXVA_NoEncrypt (un nom GUID défini dans Dxva.h). 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 (tampons contenant des données de domaine spatial ou des jeux de coefficients de domaine de transformation pour la transformation de cosinus discret inverse basée sur accélérateur [IDCT]). Si aucun chiffrement n’est appliqué, la valeur est DXVA_NoEncrypt (un nom GUID défini dans Dxva.h). 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 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 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 8 |
Serveur minimal pris en charge | Windows Server 2012 |
En-tête | d3d10umddi.h (incluez D3d10umddi.h) |