Partager via


structure DXVA_BlendCombination (dxva.h)

La structure DXVA_BlendCombination est envoyée par le décodeur hôte à l’accélérateur pour spécifier la façon dont une image fusionnée est créée à partir d’une image source et d’une image graphique avec les informations de fusion alpha associées.

Syntaxe

typedef struct _DXVA_BlendCombination {
  WORD             wPictureSourceIndex;
  WORD             wBlendedDestinationIndex;
  RECT             PictureSourceRect16thPel;
  RECT             PictureDestinationRect;
  RECT             GraphicSourceRect;
  RECT             GraphicDestinationRect;
  WORD             wBlendDelay;
  BYTE             bBlendOn;
  BYTE             bWholePlaneAlpha;
  DXVA_AYUVsample2 OutsideYUVcolor;
} DXVA_BlendCombination, *LPDXVA_BlendCombination;

Membres

wPictureSourceIndex

Spécifie l’index de surface non compressé, tel que défini par le contenu du DWORD pointé par le membre lpInputData de DD_BEGINMOCOMPFRAMEDATA dans un appel antérieur à DdMoCompBeginFrame, de l’image à combiner avec le graphique. Cette valeur est 0xFFFF si la fusion alpha du matériel back-end est en cours d’utilisation (lorsque le membre bConfigBlendType de DXVA_ConfigAlphaCombine est 1).

wBlendedDestinationIndex

Spécifie l’index de surface non compressé, tel que défini par le contenu du DWORD pointé vers le membre lpInputData de DD_BEGINMOCOMPFRAMEDATA dans un appel antérieur à DdMoCompBeginFrame, de l’image combinée à créer. Cette valeur est 0xFFFF si la fusion alpha du matériel back-end est en cours d’utilisation (lorsque le membre bConfigBlendType de DXVA_ConfigAlphaCombine est 1).

Cette valeur ne peut pas être égale à wPictureSourceIndex , sauf si le mélange alpha matériel back-end est en cours d’utilisation.

PictureSourceRect16thPel

Spécifie la zone de l’image source à combiner avec l’image graphique en tant que structure RECT . Les dimensions sont spécifiées en unités d’un seizième de la distance entre les valeurs d’échantillon du composant luminance. (En d’autres termes, les membres de la structure RECT sont des représentations à point fixe qui ont 28 bits avant le point binaire et 4 bits après le point binaire.) Cette précision d’un seizième exemple permet à PictureSourceRect16thPel de contenir la même précision que les variables d’analyse panoramique frame_centre_horizontal_offset et frame_centre_vertical_offset dans la vidéo MPEG-2.

Si le membre bConfigPictureResizing de DXVA_ConfigAlphaCombine est égal à zéro, toutes les dimensions de PictureSourceRect16thPel doivent être des multiples entiers de 16.

PictureDestinationRect

Spécifie la zone de l’image de destination en tant que structure RECT. Il contient la zone définie pour l’image source par PictureSourceRect16thPel.

Si le membre bConfigPictureResizing de DXVA_ConfigAlphaCombine est égal à zéro, la zone spécifiée par PictureDestinationRect doit avoir la même largeur et la même hauteur que la zone spécifiée par PictureSourceRect16thPel. Si La taille de PictureDestinationRect diffère de celle de PictureSourceRect16thPel, la méthode de rééchantillonnement à appliquer n’est pas spécifiée, mais doit avoir une qualité au moins équivalente à celle du rééchantillonnage bilinéaire.

GraphicSourceRect

Spécifie la zone de l’image graphique source en tant que structure RECT . Cette zone est combinée avec la partie de l’image source spécifiée par PictureSourceRect16thPel pour créer l’image mélangée alpha.

GraphicDestinationRect

Spécifie la zone de l’image graphique de destination en tant que structure RECT .

Si le membre bConfigGraphicResizing de DXVA_ConfigAlphaCombine est égal à zéro, l’image de destination doit avoir la même largeur et la même hauteur que la zone spécifiée par GraphicSourceRect. Si La taille de GraphicDestinationRect diffère de celle de GraphicSourceRect, la méthode de rééchantillonnement à appliquer à l’image graphique n’est pas spécifiée. Toutefois, la méthode de rééchantillonnage utilisée doit avoir une qualité au moins équivalente à un rééchantillonnage biligne d’une surface AYUV qui représente les informations de fusion.

wBlendDelay

Spécifie le nombre de millisecondes de délai avant l’entrée en vigueur de la combinaison de fusion. Si le mélange de matériel back-end est en cours d’utilisation (par exemple, si le membre bConfigBlendType de DXVA_ConfigAlphaCombine est 1), wBlendDelay contient le nombre de millisecondes de délai avant que la combinaison de fusion ne soit appliquée. Si la fusion frontale est en cours d’utilisation, ce membre n’a aucune signification et doit être égal à zéro.

bBlendOn

Spécifie quand une opération de combinaison de fusion démarre et s’arrête. Si le mélange de matériel back-end est en cours d’utilisation, le mélange est appliqué à partir du temps spécifié dans une opération de combinaison de fusion (avec bBlendOn égal à 1) jusqu’à l’heure d’exécution d’une nouvelle combinaison de fusion (avec bBlendOn égal à 1), ou jusqu’à ce que la fusion soit désactivée par une opération de combinaison de fusion (avec bBlendOn égal à zéro). Si le mélange de matériel back-end est en cours d’utilisation et que bBlendOn est égal à zéro, la seule autre valeur de la mémoire tampon de combinaison alpha-mélange qui a une signification est wBlendDelay. Si la fusion frontale est en cours d’utilisation, ce membre n’a aucune signification et doit être égal à zéro.

bWholePlaneAlpha

Contient un multiplicateur d’opacité pour le canal alpha de l’image graphique. La valeur zéro indique que l’image graphique est transparente (de sorte que le contenu du graphique n’a aucun effet sur l’image fusionnée résultante). La valeur 255 indique que l’image graphique utilise son opacité d’exemple complète. Si bWholePlaneAlpha n’est pas égal à zéro, le mélange spécifié consiste à multiplier l’opacité de chaque emplacement dans le contenu du graphique par (bWholePlaneAlpha+1)/256. Pour une valeur zéro de bWholePlaneAlpha, le mélange à utiliser est l’opacité spécifiée dans l’image graphique sans modification. Cela doit être égal à 255 si le membre bConfigWholePlaneAlpha de DXVA_ConfigAlphaCombine est égal à zéro.

OutsideYUVcolor

Indique si les zones situées en dehors de PictureDestinationRect utilisent une couleur constante pour le mélange. Si c’est le cas, ce membre spécifie cette constante de couleur. Le membre OutsideYUVcolor est défini comme une structure DXVA_AYUVsample2 . Pour plus d’informations, consultez la section Remarques.

Remarques

Dans le cas où les images source et de destination ne sont pas au format 4 :4 :4, chaque deuxième échantillon des informations de fusion graphique (par exemple, le premier, le troisième ou le cinquième) est appliqué aux informations de chrominance source sous-échantillonnées dans le sens vertical ou horizontal selon les besoins pour produire le résultat fusionné.

Les sections suivantes montrent les restrictions placées sur les membres de gauche, de droite, de haut et de bas de la structure RECT.

Restrictions de structure RECT pour PictureSourceRect16thPel

Les restrictions suivantes s’appliquent aux dimensions RECT de PictureSourceRect16thPel :
  • gauche et supérieur doivent être supérieurs ou égaux à zéro.
  • la droite et la partie inférieure doivent être supérieures ou égales respectivement à gauche et supérieure.
  • Si la droite est égale à gauche ou si le haut est égal à la partie inférieure, tous les membres RECT doivent avoir la valeur zéro indiquant que l’image source n’est pas utilisée. Ce cas n’est autorisé que si le membre bConfigOnlyUsePicDestRectArea de DXVA_ConfigAlphaCombine est égal à zéro.
  • droite et inférieure ne doivent pas dépasser 16 fois la largeur et la hauteur allouées, respectivement, de la surface d’image source non compressée.
Par exemple, si PictureSourceRect16thPel est utilisé pour sélectionner une image décodée MPEG-2 entière, les valeurs PictureSourceRect16thPel peuvent être calculées comme suit :
  • left = 0
  • top = 0
  • right = 16 X horizontal_size
  • bottom = 16 X vertical_size

Restrictions de structure RECT pour PictureDestinationRect

Les restrictions suivantes s’appliquent aux dimensions RECT pour PictureDestinationRect :
  • gauche et supérieur doivent être supérieurs ou égaux à zéro.
  • la droite et la partie inférieure doivent être supérieures ou égales respectivement à gauche et supérieure.
  • Si droite est égal à gauche ou en haut est égal à la valeur inférieure (autorisé uniquement si le membre bConfigOnlyUsePicDestRectRectArea de DXVA_ConfigAlphaCombine est égal à zéro), tous les membres RECT doivent avoir la valeur zéro et PictureSourceRect16thPel doivent également spécifier toutes les valeurs ayant la valeur zéro.
  • Si le membre bConfigBlendType de DXVA_ConfigAlphaCombine est égal à zéro, la droite et la partie inférieure ne doivent pas dépasser respectivement la largeur et la hauteur allouées de la surface d’image de destination non compressée.
  • Si le membre bConfigBlendType de DXVA_ConfigAlphaCombine est 1, à droite et en bas ne doivent pas dépasser la largeur et la hauteur allouées, respectivement, de l’aire graphique source.

Restrictions de structure RECT pour GraphicSourceRect

Si le chargement de données alpha-blend utilise le membre bConfigDataType de DXVA_ConfigAlphaLoad avec la valeur 2, les restrictions suivantes s’appliquent aux dimensions RECT de GraphicSourceRect :
  • en haut et à gauche doivent être zéro.
  • right doit être égal à la coordonnée X de fin moins la coordonnée X de début du dernier DVD précédent SET_DAREA DCCMD, plus 1, pour ajuster les différentes interprétations de rectangle, comme décrit dans la note suivante dans la section Restrictions de structure RECT pour GraphicDestinationRect .
  • le bas doit être égal à la coordonnée Y de fin moins la coordonnée Y de début du dernier DVD précédent SET_DAREA DCCMD, plus 1, pour ajuster les différentes interprétations de rectangle.
Si le chargement de données alpha-blend n’utilise pas le membre bConfigDataType de DXVA_ConfigAlphaLoad avec la valeur 2, les restrictions suivantes s’appliquent aux dimensions RECT de GraphicSourceRect :
  • gauche et supérieur doivent être supérieurs ou égaux à zéro.
  • la droite et la partie inférieure doivent être supérieures ou égales respectivement à gauche et supérieure.
  • Si la droite est égale à gauche ou si le haut est égal à la partie inférieure, tous les membres RECT doivent avoir la valeur zéro, ce qui indique que l’image graphique n’est pas utilisée.
  • à droite et en bas ne doivent pas dépasser la largeur et la hauteur allouées, respectivement, de l’image source graphique. La largeur et la hauteur allouées sont définies comme 720 et 576 exemples, respectivement, lorsque le membre bConfigDataType de DXVA_ConfigAlphaLoad est égal à 2.

Restrictions de structure RECT pour GraphicDestinationRect

Les restrictions suivantes s’appliquent aux dimensions RECT de GraphicDestinationRect :
  • la gauche et la partie supérieure doivent être supérieures ou égales à zéro, sauf si cette exigence entre en conflit avec la nécessité de décaler le graphique par huit exemples. C’est le cas dans les scénarios suivants :
  • la droite et la partie inférieure doivent être supérieures ou égales respectivement à gauche et supérieure. Si la valeur de droite est égale à gauche ou si le haut est égal au bas, tous ces membres de la structure RECT doivent avoir la valeur zéro et GraphicSourceRect doit également spécifier que tous ses membres ont la valeur zéro.
  • Si le membre bConfigBlendType de DXVA_ConfigAlphaCombine est égal à zéro, la droite et la partie inférieure ne doivent pas dépasser respectivement la largeur et la hauteur allouées de la surface d’image de destination non compressée.
  • Si le membre bConfigBlendType de DXVA_ConfigAlphaCombine est égal à 1, la droite et la partie inférieure ne doivent pas dépasser respectivement la largeur et la hauteur allouées de l’image graphique source.
Si le chargement de données alpha-blend utilise le membre bConfigDataType de DXVA_ConfigAlphaCombine avec la valeur 2 et le membre bConfigGraphicResizing de DXVA_ConfigAlphaCombine avec la valeur zéro, les restrictions supplémentaires suivantes sur les dimensions GraphicDestinationRect s’appliquent :
  • top doit être égal à la coordonnée Y de démarrage du dernier DVD précédent SET_DAREA DCCMD.
  • la gauche doit être égale à la coordonnée X de démarrage du dernier DVD précédent SET_DAREA DCCMD ou à cette valeur moins 8. Pour plus d’informations, consultez Dvd 704-Wide Non-Pan-Scan Example et DVD 352-Wide Example.
  • la droite doit être égale à la valeur de gauche, plus la coordonnée X de fin moins la coordonnée X de début du dernier DVD précédent SET_DAREA DCCMD, plus 1, pour ajuster les différentes interprétations de rectangle décrites dans la note suivante.
  • le bas doit être égal à la valeur supérieure plus la coordonnée Y de fin moins la coordonnée Y de début du dernier DVD précédent SET_DAREA DCCMD, plus 1, pour ajuster les différentes interprétations de rectangle décrites dans la note suivante.
Note Il existe une différence entre la façon dont la spécification vidéo DVD définit une zone rectangulaire de sous-image et la convention utilisée par Microsoft. Cette référence suit la convention De sorte qu’un rectangle de largeur 10 et de hauteur 10 dans le coin supérieur gauche de l’image est défini par haut = 0, gauche = 0, droite = 10 et bas = 10. La spécification vidéo DVD utilise l’équivalent droit = 9 et inférieur = 9.
 

Définition des valeurs OutsideYUVcolor

Les valeurs de la structure OutsideYUVcolor sont les suivantes :
  • La valeur de OutsideYUVcolor.bSampleAlpha8 doit être 255 si les zones en dehors de PictureDestinationRect sont générées en tant que couleur constante à utiliser pour le mélange.
  • La valeur de OutsideYUVcolor.bSampleAlpha8 doit être égale à zéro si l’un des deux cas suivants s’applique :
    • Les zones en dehors de PictureDestinationRect ne sont pas affectées par le mélange.
    • Les zones en dehors de PictureDestinationRect ne peuvent pas être utilisées (comme indiqué par le membre bConfigStayInPicDestRectArea de DXVA_ConfigAlphaCombine ayant la valeur 1).
Toutes les autres valeurs de OutsideYUVcolor.bSampleAlpha8 sont réservées pour une utilisation ultérieure.

La valeur de OutsideYUVcolor.bSampleAlpha8 doit être égale à zéro si le membre bConfigStayInPicDestRectArea de la structure DXVA_ConfigAlphaCombine est égal à 1.

Si OutsideYUVcolor.bSampleAlpha8 est égal à zéro, la seule zone de la surface de destination affectée par le mélange est la partie de l’objet PictureDestinationRect.

Si OutsideYUVcolor.bSampleAlpha8 a la valeur 255, toute zone de la surface de destination qui se trouve en dehors de PictureDestinationRect mais dans GraphicDestinationRect, est générée en fusionnant le graphique avec la couleur spécifiée dans les membres nonalpha de OutsideYUVcolor. Dans ce cas, la totalité de la zone allouée de la surface de destination qui se trouve en dehors de PictureDestinationRect et GraphicDestinationRect est définie sur la couleur spécifiée dans les membres nonalpha de OutsideYUVcolor. Si le membre bConfigBlendType de la structure DXVA_ConfigAlphaCombine est 1, les membres OutsideYUVcolor sont définis pour indiquer la fusion avec le noir en spécifiant bSampleAlpha8 = 255, bY_Value = 16 et bCbValue = bCrValue = 128.

Lorsque le membre bConfigBlendType de la structure DXVA_ConfigAlphaCombine est 1 (mélange de matériel principal), les opérations de fusion peuvent différer quelque peu de celles décrites dans cette référence. Certains paramètres de redimensionnement utilisés pour mapper une image vidéo d’une image source à une taille d’image de destination peuvent être appliqués de manière modifiée pour mapper l’image graphique à son emplacement approprié par rapport à l’image source. Toutefois, le résultat fusionné équivaut au résultat fusionné obtenu par les commandes de combinaison alpha-mélange dans cette référence.

Configuration requise

Condition requise Valeur
En-tête dxva.h (inclure Dxva.h)

Voir aussi

DD_BEGINMOCOMPFRAMEDATA

DXVA_AYUVsample2

DXVA_ConfigAlphaCombine

DdMoCompBeginFrame

RECT