structure DXVA_ConfigPictureDecode (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’image compressée.
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 détection 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 des indicateurs d’état pour la requête ou la réponse en cours d’exécution.
Les 8 bits les moins significatifs de dwFunction est la variable bDXVA_Func qui, dans ce cas, est égale à 1.
dwReservedBits[3]
Bits réservés utilisés pour l’emballage 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 (nom GUID défini dans dxva.h) indique que le chiffrement n’est pas appliqué. Il s’agit DXVA_NoEncrypt si bConfigBitstreamRaw est égal à zéro.
guidConfigMBcontrolEncryption
Indique un GUID associé au type de protocole de chiffrement pour mémoires tampons de contrôle macroblock. La valeur DXVA_NoEncrypt (nom GUID défini dans dxva.h) indique que le chiffrement n’est pas appliqué. Il s’agit DXVA_NoEncrypt si bConfigBitstreamRaw est 1.
guidConfigResidDiffEncryption
Indique un GUID associé au 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 les IDCT). Il s’agit DXVA_NoEncrypt si bConfigBitstreamRaw est 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 binaire 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 de mémoires tampons de commande de contrôle macroblock.
Il s’agit de zéro si bConfigResidDiffHost est 1 ou si bConfigResidDiffAccelerator est 1. La valeur zéro est considérée comme le niveau de base de la prise en charge. La prise en charge supplémentaire du niveau 1 est préférée.
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 au sein de 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 l’ordre d’analyse arbitraire et raster.
bConfigResidDiffHost
Contient la configuration des différences résiduelles de l’hôte (voir Macroblock-Oriented Décodage d’image pour plus d’informations). La valeur 1 spécifie que certaines données de décodage de différence résiduelle peuvent être envoyées en tant que blocs dans le domaine spatial 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 est 1. Il est préférable qu’un accélérateur prend en charge zéro et 1.
bConfigSpatialResid8
Indique la taille du mot utilisée pour représenter les blocs de domaine spatial de différence résiduelle pour les images prédites (nonintra) lors de l’utilisation du décodage de différence résiduelle basée sur l’hôte (lorsque bConfigResidDiffHost est égal à 1).
Si bConfigSpatialResid8 est 1 et bConfigResidDiffHost 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 images intra macroblocks dans un format prédit (nonintra) selon bConfigIntraResidUnsigned comme suit :
- Si bConfigIntraResidUnsigned est égal à zéro, les blocs de domaine spatial pour les blocs intra macroblocks 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 est 1, les blocs de domaine spatial pour les blocs intra macroblocks 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 bConfigIntraResidUnsigned est égal à zéro, les blocs de domaine spatial 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), où BPP est le nombre de bits par exemple pour la vidéo non compressée (généralement une valeur de 8).
- Si bConfigIntraResidUnsigned est 1, les blocs de domaine spatial pour les blocs intra macroblocks 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.
Si bConfigIntraResidUnsigned est égal à zéro, 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). Si bConfigIntraResidUnsigned est 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 différence de 8 bits sont soustractés plutôt que ajoutés. Doit être égal à zéro, sauf si bConfigSpatialResid8 est 1. La valeur par défaut d’un accélérateur à prendre en charge est 1 si bConfigSpatialResid8 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 +/-255 de valeurs requises dans les spécifications du décodeur vidéo. Cela est dû au fait que +255 ne peut pas être représenté comme l’ajout de deux nombres 8 bits signés, mais que n’importe quel nombre de 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
Lorsqu’ils sont égaux à 1, indique que les blocs de domaine spatial pour les macroblocages intra-macroblocks sont clippés vers une plage de 8 bits sur l’hôte et que les blocs de domaine spatial pour les macros nonintra sont clippés vers une plage de 9 bits sur l’hôte. La valeur zéro indique qu’aucune capture de ce type n’est effectuée par l’hôte. Doit être 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 égale à zéro.
bConfigSpatialResidInterleaved
Lorsqu’elles sont égales à 1, indique que toutes les données de différence résiduelles de domaine spatial sont envoyées dans un formulaire chrominance-entrelacé correspondant au modèle d’interlacement du format YUV. Doit être égal à zéro, sauf si bConfigResidDiffHost est 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 égale à zéro.
bConfigIntraResidUnsigned
Indique la méthode de représentation des blocs de domaine spatial des données de différence résiduelles pour les blocs intra lors de l’utilisation du décodage de différence basée sur l’hôte (lorsque bConfigResidDiffHost est égal à 1).
Lorsque bConfigIntraResidUnsigned est égal à zéro et bConfigResidDiffHost est égal à 1 blocs de données de différence résiduelle de domaine spatial pour les blocs de données intra macroblocks sont envoyés comme suit :
- Dans une image nonintra si bConfigSpatialResid8 est égal à zéro, les blocs de données de différence de domaine spatial pour les blocs de données 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), où BPP est le nombre de bits par exemple pour la vidéo non compressée (généralement une valeur de 8).
- Dans une image nonintra si bConfigSpatialResid8 est 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 de macroblocks intra-bits sont envoyés sous forme de valeurs entières signées 8 bits par rapport à une valeur de référence constante de 128.
- Dans une image nonintra si bConfigSpatialResid8 est zéro, les blocs de données de différence résiduelle de domaine spatial pour les blocs de macroblocks 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.
- Dans une image nonintra si bConfigSpatialResid8 est 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 de macroblock intra-bits 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.
La valeur préférée d’un accélérateur à prendre en charge est égale à 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 domaine de transformation de données de coefficient peuvent être envoyés à partir de l’hôte pour IDCT basé sur l’accélérateur. La valeur zéro spécifie que l’IDCT basé sur l’accélérateur ne sera pas utilisé. Si les deux bConfigResidDiffHost et bConfigResidDiffAccelerator sont 1, un décodage de différence résiduelle est effectué sur l’hôte et certains sur l’accélérateur, comme indiqué par les commandes de contrôle au niveau macroblock. Ce membre doit être égal à zéro si bConfigBitstreamRaw est 1.
La valeur par défaut d’un accélérateur à prendre en charge est 1 pour bConfigResidDiffAccelerator.
Lorsque bConfigResidDiffAccelerator et bConfigResidDiffHost sont égales à 1, le décodage des différences résiduelles peut être partagé entre l’hôte et l’accélérateur sur une base macroblock. Cela est considéré comme un niveau 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 les index absolus seront envoyés à la place pour tous 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 est 1.
La valeur par défaut d’un accélérateur à prendre en charge est 1 si bConfigResidDiffAccelerator est 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 dans l’annexe W de ITU-T recommandation H.263. La valeur zéro indique que n’importe quel IDCT conforme peut être utilisé pour IDCT hors hôte. (Les valeurs autres que zéro et 1 sont réservées à une utilisation ultérieure.)
Ce membre doit être égal à zéro si bConfigResidDiffAccelerator est égal à zéro (ce qui indique simplement le décodage des différences résiduelles basée sur l’hôte).
bConfig4GroupedCoefs
La valeur 1 indique que les coefficients de transformation pour IDCT hors hôte sont 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 est 1.
La valeur par défaut d’un accélérateur à prendre en charge est égale à zéro si bConfigResidDiffAccelerator est 1.
Remarques
Pour certains types de flux binaires, forcer les commandes de contrôle macroblock au sein de chaque mémoire tampon de commande de contrôle macroblock à être dans un ordre raster augmente considérablement le nombre de mémoires tampons requises qui doivent être traitées ou nécessitent la réorganisation de l’hôte des informations de contrôle. La prise en charge de l’ordre arbitraire peut donc être avantageuse pour le processus de décodage. Par exemple, le décodage de résolution CIF H.261 peut nécessiter 36 mémoires tampons de contrôle de macrobloc par image si l’ordre d’analyse du rastériseur est nécessaire dans chaque mémoire tampon (le classement arbitraire de tranches de H.263 Annexe K et les modes de tranche rectangulaires ont des répercussions plus graves, ce qui peut nécessiter un très grand nombre de mémoires tampons.)
Exigences
Exigence | Valeur |
---|---|
d’en-tête | dxva.h (include Dxva.h) |