structure DXVAHDDDI_STREAM_DATA (d3dumddi.h)

La structure DXVAHDDDI_STREAM_DATA décrit un flux d’entrée qui est traité.

Syntaxe

typedef struct _DXVAHDDDI_STREAM_DATA {
  [in] BOOL              Enable;
  [in] UINT              OutputIndex;
  [in] UINT              InputFrameOrField;
  [in] UINT              PastFrames;
  [in] UINT              FutureFrames;
  [in] DXVAHDDDI_SURFACE *pPastSurfaces;
  [in] DXVAHDDDI_SURFACE InputSurface;
  [in] DXVAHDDDI_SURFACE *pFutureSurfaces;
} DXVAHDDDI_STREAM_DATA;

Membres

[in] Enable

Valeur booléenne qui spécifie si le flux d’entrée est activé. Le nombre de flux d’entrée activés par le runtime ne doit pas être supérieur au nombre que le pilote définit dans le membre MaxStreamStates de la structure DXVAHDDDI_VPDEVCAPS .

[in] OutputIndex

Numéro d’index de trame cyclique de base zéro des images de sortie qui sont composées.

[in] InputFrameOrField

Numéro d’image de base zéro des images d’entrée ou des champs qui sont traités.

[in] PastFrames

Nombre de cadres de référence précédents. Ce nombre ne doit pas être supérieur au nombre que le pilote définit dans le membre PastFrames de la structure DXVAHDDDI_VPCAPS .

[in] FutureFrames

Nombre de cadres de référence futurs. Ce nombre ne doit pas être supérieur au nombre que le pilote définit dans le membre FutureFrames de la structure DXVAHDDDI_VPCAPS .

[in] pPastSurfaces

Tableau de structures DXVAHDDDI_SURFACE qui décrivent les surfaces de référence passées.

[in] InputSurface

Structure DXVAHDDDI_SURFACE qui décrit la surface d’entrée.

[in] pFutureSurfaces

Tableau de structures DXVAHDDDI_SURFACE qui décrivent les surfaces de référence futures.

Remarques

Le pilote doit allouer les surfaces que les membres pPastSurfaces, InputSurfaces et pFutureSurfaces spécifient dans le type de pool, que le pilote définit dans le membre InputPool de la structure DXVAHDDDI_VPDEVCAPS , et avec l’un des types de surface suivants : sinon, la fonction VideoProcessBltHD du pilote retourne une erreur.

  • Surface vidéo créée avec le type DXVAHD_SURFACE_TYPE_VIDEO_INPUT ou DXVAHD_SURFACE_TYPE_VIDEO_INPUT_PRIVATE.
  • Une surface cible de rendu de décodage créée avec le type DXVA2_VideoDecodeRenderTarget.
  • Surface simple hors écran.
Le membre OutputIndex est un nombre cyclique de base zéro qui indique le numéro d’index de trame de la sortie. Le pilote utilise ces informations d’index de sortie pour effectuer le traitement vidéo dans un certain modèle ou cycle, en particulier lorsque le pilote effectue le désentlacement, la conversion de fréquence d’images et la télécine inverse. Par exemple, avec le modèle d’index de sortie suivant, le pilote effectue le traitement vidéo indiqué :
  • Format progressif à taux normal et de moitié :

    OutputIndex = 0, 0,...

  • Format progressif à un taux personnalisé de 2/1 (conversion double de fréquence d’images, OutputFrames=2) :

    OutputIndex = 0, 1, 0, 1,...

  • Format entrelacé à vitesse normale :

    OutputIndex = 0, 1, 0, 1,... (0 : premier champ, 1 : deuxième champ)

  • Format entrelacé à moitié vitesse :

    OutputIndex = 0, 0,... (par exemple, le premier et le deuxième champs sont fusionnés en une seule image)

  • Entrelacé à une vitesse personnalisée de 4/5 (télécine inverse 3 :2, OutputFrames=4) :

    OutputIndex = 0, 1, 2, 3, 0, 1, 2, 3,... (0 :A, 1 :B, 2 :C, 3 :D image)

Le membre InputFrameOrField est un nombre de base zéro qui indique l’image ou le numéro de champ de la surface d’entrée. Par exemple, avec le numéro d’entrée-frame-ou-champ suivant, le pilote peut effectuer le traitement vidéo indiqué :
  • Format progressif et entrelacé à vitesse normale :

    InputFrameOrField = 0, 1, 2,...

  • Format progressif et entrelacé à moitié vitesse :

    InputFrameOrField = 0, 2, 4,...

  • Format entrelacé à une vitesse personnalisée de 4/5 (télécine inverse 3 :2, OutputFrames=4 et InputFrameOrField=10) :

    InputFrameOrField = 0, 0, 0, 0, 10, 10, 10, 10, 20, 20, 20, 20,...

  • Format entrelacé à une vitesse personnalisée de 4/15 (télécine inverse 8 :7, OutputFrames=2 et InputFrameOrField=15) :

    InputFrameOrField = 0, 0, 15, 15, 30, 30,...

L’application doit entraîner la réinitialisation des membres OutputIndex et InputFrameOrField lorsque le format d’image ou la vitesse de sortie est modifié afin que le pilote puisse réinitialiser son état de traitement interne. Pour plus d’informations sur le changement de format d’image ou de débit de sortie, consultez DXVAHDDDI_STREAM_STATE_FRAME_FORMAT_DATA et DXVAHDDDI_STREAM_STATE_OUTPUT_RATE_DATA.

Toutefois, si le pilote bascule entre le taux normal et le taux de moitié (valeurs de l’énumération DXVAHDDDI_OUTPUT_RATE ), le pilote ne doit pas exiger la réinitialisation.

Si les membres OutputIndex et InputFrameOrField restent tous deux inchangés au moment du processus suivant, le pilote détermine que l’image est inchangée (par exemple, en pause) dans le traitement du flux. Par conséquent, le pilote peut optimiser le cadre à l’aide de données mises en cache.

Le pilote doit revenir à une méthode de traitement vidéo moins intensive, car moins d’images de référence sont fournies. Le conducteur doit revenir au désentlacement Bob lorsqu’aucun échantillon de référence n’est fourni.

Une application peut fournir moins d’images de référence passées et futures que les trames de référence que le pilote demande. Par exemple, une application peut fournir moins de cadres de référence dans les conditions suivantes :

  • Au début ou à la fin de la séquence d’images.
  • Transition entre progressive et entrelacée.
  • Flux progressif normal ou à moitié taux.
  • Flux de sous-vidéo qui ne nécessitent pas de délacement de haute qualité.
  • Tout en limitant les images de référence pour récupérer à partir d’images baisse et pour maintenir la fréquence d’images.
  • Suppression de l’image à partir de l’entrée (par exemple, des chutes d’images dans le décodeur).
Les trames de référence passées et futures sont fournies dans les membres du tableau pPastSurfaces et pFutureSurfaces dans l’ordre temporel des trames plus anciennes aux plus récentes en continu. Par exemple, l’ordre des éléments dans les tableaux est le suivant :

pPastSurfaces [] = {..., T-3, T-2, T-1}

InputSurface = T

pFutureSurfaces [] = {T+1, T+2, T+3,...}

Les trames d’entrée et de référence changent l’emplacement du futur à l’emplacement passé par l’emplacement actuel à mesure que les membres OutputIndex et InputFrameOrField s’incrémentent . Par exemple, l’aire d’entrée change en tant qu’incréments OutputIndex et InputFrameOrField lorsque le pilote effectue le traitement vidéo suivant :

  • Format progressif à vitesse normale :

    OutputIndex = 0, 0, 0,...

    InputFrameOrField = 0, 1, 2,...

    InputSurface = T, T+1, T+2,...

  • Format entrelacé à vitesse normale :

    OutputIndex = 0, 1, 0, 1, 0, 1,...

    InputFrameOrField = 0, 1, 2, 3, 4, 5,...

    InputSurface = T, T, T+1, T+1, T+2, T+2,...

  • Format entrelacé à moitié vitesse :

    OutputIndex = 0, 0, 0,...

    InputFrameOrField = 0, 2, 4,...

    InputSurface = T, T+1, T+2,...

  • Format entrelacé à une vitesse personnalisée de 4/5 (télécine inverse 3 :2, OutputFrames=4 et InputFrameOrField=10) :

    OutputIndex = 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3,...

    InputFrameOrField = 0, 0, 0, 0, 10, 10, 10, 10, 20, 20, 20, 20,...

    InputSurface = T, T, T, T, T+5, T+5, T+5, T+5, T+10, T+10, T+10, T+10,...

  • Format entrelacé à une vitesse personnalisée de 4/15 (télécine inverse 8 :7, OutputFrames=2 et InputFrameOrField=15) :

    OutputIndex = 0, 1, 0, 1, 0, 1,...

    InputFrameOrField = 0, 0, 15, 15, 30, 30,...

    InputSurface = T, T, T+7, T+7, T+15, T+15,... (notez que l’image T+7 contient le 15e champ)

L’exemple de pseudo-code suivant montre l’interaction entre l’application (APP) et le pilote (DRV) lors de l’exécution de la télécine inverse (IVTC) sur un pull-down 3 :2, 30 images (60 champs) par seconde entrelacés :
-[60i -> 60p]
DRV: VPGuid[0] requests 1 past and 2 future reference frames.
APP: Creates VPGuid[0] video processor and set output rate to normal.
APP: Decodes frame 0(A0:A1), 1(A0:B1), 2(B0:C1), 3(C0:C1), 4(D0:D1), ...
    :
-APP: VPBltHD(frame x, 0, 1, 2), InputFrameOrField=0, OutputIndex=0
DRV: Bob [0(A0)+0(A1)] = A'
-APP: VPBltHD(frame x, 0, 1, 2), InputFrameOrField=1, OutputIndex=1
DRV: Weave [0(A1)+1(A0)] = A
-APP: VPBltHD(frame 0, 1, 2, 3), InputFrameOrField=2, OutputIndex=0
DRV: Weave [1(A0)+0(A1)] = A
-APP: VPBltHD(frame 0, 1, 2, 3), InputFrameOrField=3, OutputIndex=1
DRV: Weave [1(B1)+2(B0)] = B
-APP: VPBltHD(frame 1, 2, 3, 4), InputFrameOrField=4, OutputIndex=0
DRV: Weave [2(B0)+1(B1)] = B
-APP: VPBltHD(frame 1, 2, 3, 4), InputFrameOrField=5, OutputIndex=1
DRV: Weave [2(C1)+3(C0)] = C
-APP: VPBltHD(frame 2, 3, 4, 5), InputFrameOrField=6, OutputIndex=0
DRV: Weave [3(C0)+3(C1)] = C
-APP: VPBltHD(frame 2, 3, 4, 5), InputFrameOrField=7, OutputIndex=1
DRV: Weave [3(C1)+3(C0)] = C
-APP: VPBltHD(frame 3, 4, 5, 6), InputFrameOrField=8, OutputIndex=0
DRV: Weave [4(D0)+4(D1)] = D
-APP: VPBltHD(frame 3, 4, 5, 6), InputFrameOrField=9, OutputIndex=1
DRV: Weave [4(D1)+4(D0)] = D
    :
-[60i -> 24p]
DRV: VPGuid[1] requests 4 future reference frames.
DRV: Exports CustomRate=4/5, OutputFrames=4, InputInterlaced=TRUE, InputFramesOrFields=10.
APP: Creates VPGuid[1] video processor and set output rate to 4/5 custom rate.
-APP: VPBltHD(frame 0, 1, 2, 3, 4), InputFrameOrField=0, OutputIndex=0
DRV: Bob [0(A0)+0(A1)] = A' (playback or speed mode) or Weave [0(A0)+0(A1)] = A (quality mode)
-APP: VPBltHD(frame 0, 1, 2, 3, 4), InputFrameOrField=0, OutputIndex=1
DRV: Weave [1(B1)+2(B0)] = B
-APP: VPBltHD(frame 0, 1, 2, 3, 4), InputFrameOrField=0, OutputIndex=2
DRV: Weave [3(C0)+3(C1)] = C
-APP: VPBltHD(frame 0, 1, 2, 3, 4), InputFrameOrField=0, OutputIndex=3
DRV: Weave [4(D0)+4(D1)] = D
-APP: VPBltHD(frame 5, 6, 7, 8, 9), InputFrameOrField=10, OutputIndex=0
DRV: Weave [0(A0)+0(A1)] = A
    :

Configuration requise

Condition requise Valeur
Client minimal pris en charge DXVAHDDDI_STREAM_DATA est pris en charge à partir du système d’exploitation Windows 7.
En-tête d3dumddi.h (inclure D3dumddi.h)

Voir aussi

DXVAHDDDI_OUTPUT_RATE

DXVAHDDDI_STREAM_STATE_FRAME_FORMAT_DATA

DXVAHDDDI_STREAM_STATE_OUTPUT_RATE_DATA

DXVAHDDDI_SURFACE

DXVAHDDDI_VPCAPS

DXVAHDDDI_VPDEVCAPS

VideoProcessBltHD