structure DXVA_TCoefSingle (dxva.h)
La structure DXVA_TCoefSingle est envoyée par le décodeur hôte à l’accélérateur pour spécifier les valeurs de coefficient IDCT .
Syntaxe
typedef struct _DXVA_TCoefSingle {
WORD wIndexWithEOB;
SHORT TCoefValue;
} DXVA_TCoefSingle, *LPDXVA_TCoefSingle;
Membres
wIndexWithEOB
Ce membre contient deux champs : TCoefIDX et TCoefEOB.
TCoefIDX
Spécifie l’index d’analyse du coefficient dans le bloc, comme déterminé à partir du membre bConfigHostInverseScan de la structure DXVA_ConfigPictureDecode . Ce champ se trouve dans les 15 bits les plus significatifs du membre wIndexWithEOB .
Il existe deux façons d’utiliser TCoefIDX :
- Classement de la longueur de l’exécution : lorsque bConfigHostInverseScan est égal à zéro, l’élément MBscanMethod de la commande de contrôle macroblock indique une analyse inverse zigzag, alter-verticale ou alternative-horizontale. Ces commandes de contrôle macroblock sont définies dans les structures suivantes : DXVA_MBctrl_I_OffHostIDCT_1 ou DXVA_MBctrl_P_OffHostIDCT_1. Dans ce cas, TCoefIDX contient le nombre de coefficients à valeur nulle qui précèdent le coefficient actuel dans l’ordre d’analyse spécifié, après le dernier coefficient transmis pour le bloc (ou par rapport au début du bloc si aucun ne le précède). Tous les coefficients restants après le dernier coefficient envoyé dans l’ordre d’analyse inverse sont implicites pour avoir la valeur zéro.
- Classement arbitraire : lorsque bConfigHostInverseScan a la valeur 1, l’élément MBscanMethod de la commande de contrôle macroblock indique un classement arbitraire. Ces commandes de contrôle macroblock sont définies dans les structures suivantes : DXVA_MBctrl_I_OffHostIDCT_1 et DXVA_MBctrl_P_OffHostIDCT_1. Dans ce cas, TCoefIDX contient simplement l’index raster du coefficient dans le bloc (TCoefIDX = u + 8 * v, où vous et v sont les coordonnées de fréquence horizontale et verticale du domaine de transformation), et tous les coefficients qui ne sont pas envoyés ont la valeur 0.
TCoefEOB
Indique si le coefficient actuel est le dernier associé au bloc actuel de coefficients de transformation. La valeur 1 indique que le coefficient actuel est le dernier pour le bloc et qu’une valeur de zéro indique qu’il ne l’est pas. Ce champ se trouve dans le bit le moins significatif du membre wIndexWithEOB .
TCoefValue
Indique la valeur du coefficient dans le bloc. TCoefValue doit être coupé à la plage appropriée, comme spécifié dans Éléments de traitement IDCT de bas niveau par l’hôte avant de passer la valeur de coefficient à l’accélérateur pour l’opération IDCT . Le contrôle d’incompatibilité MPEG-2, si nécessaire, est également de la responsabilité de l’hôte, et non de l’accélérateur. (Cela peut nécessiter la création de coefficients « fantômes » supplémentaires non nuls.)
Remarques
La structure DXVA_TCoefSingle est utilisée chaque fois que l’indicateur HostResidDiff (bit 10 dans le membre wMBtype de la structure DXVA_MBctrl_P_OffHostIDCT_1 ou DXVA_MBctrl_I_OffHostIDCT_1 ) est égal à 1 et que le membre bConfig4GroupedCoefs de la structure DXVA_ConfigPictureDecode est égal à zéro.
Configuration requise
Condition requise | Valeur |
---|---|
En-tête | dxva.h (inclure Dxva.h) |