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.
-
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)
-
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,...
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).
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)
-[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_STREAM_STATE_FRAME_FORMAT_DATA