DXVAHDDDI_STREAM_DATA-Struktur (d3dumddi.h)
Die DXVAHDDDI_STREAM_DATA-Struktur beschreibt einen Eingabedatenstrom, der verarbeitet wird.
Syntax
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;
Member
[in] Enable
Ein boolescher Wert, der angibt, ob der Eingabestream aktiviert ist. Die Anzahl der Von der Runtime aktivierten Eingabedatenströme darf nicht mehr als die Zahl sein, die der Treiber im MaxStreamStates-Member der DXVAHDDDI_VPDEVCAPS-Struktur festlegt.
[in] OutputIndex
Eine nullbasierte zyklische Frameindexnummer der zusammengestellten Ausgabeframes.
[in] InputFrameOrField
Eine nullbasierte Framenummer der verarbeiteten Eingabeframes oder Felder.
[in] PastFrames
Die Anzahl der bisherigen Referenzframes. Diese Zahl darf nicht mehr als die Zahl sein, die der Treiber im PastFrames-Member der DXVAHDDDI_VPCAPS-Struktur festlegt.
[in] FutureFrames
Die Anzahl der zukünftigen Referenzframes. Diese Zahl darf nicht mehr als die Zahl sein, die der Treiber im FutureFrames-Member der DXVAHDDDI_VPCAPS-Struktur festlegt.
[in] pPastSurfaces
Ein Array von DXVAHDDDI_SURFACE Strukturen, die die vergangenen Referenzoberflächen beschreiben.
[in] InputSurface
Eine DXVAHDDDI_SURFACE-Struktur , die die Eingabeoberfläche beschreibt.
[in] pFutureSurfaces
Ein Array von DXVAHDDDI_SURFACE Strukturen, die die zukünftigen Referenzoberflächen beschreiben.
Hinweise
Der Treiber muss die Oberflächen zuordnen, die die Mitglieder pPastSurfaces, InputSurfaces und pFutureSurfaces im Pooltyp angeben, den der Treiber im InputPool-Member der DXVAHDDDI_VPDEVCAPS-Struktur festlegt, und mit einem der folgenden Oberflächentypen; Andernfalls gibt die VideoProcessBltHD-Funktion des Treibers einen Fehler zurück.
- Eine Videooberfläche, die mit dem DXVAHD_SURFACE_TYPE_VIDEO_INPUT- oder DXVAHD_SURFACE_TYPE_VIDEO_INPUT_PRIVATE-Typ erstellt wird.
- Eine decodierte Renderzieloberfläche, die mit dem DXVA2_VideoDecodeRenderTarget Typ erstellt wird.
- Eine einfache Oberfläche außerhalb des Bildschirms.
-
Progressives Format mit normaler und halber Rate:
OutputIndex = 0, 0,...
-
Progressives Format mit benutzerdefinierter 2/1-Rate (doppelte Framerate-Konvertierung, OutputFrames=2):
OutputIndex = 0, 1, 0, 1,...
-
Interlaced-Format mit normaler Rate:
OutputIndex = 0, 1, 0, 1,... (0: erstes Feld, 1: zweites Feld)
-
Interlaced-Format mit halber Rate:
OutputIndex = 0, 0,... (z. B. werden erste und zweite Felder mit einem Frame gemischt)
-
Interlaced at 4/5 custom rate (3:2 inverse telecine, OutputFrames=4):
OutputIndex = 0, 1, 2, 3, 0, 1, 2, 3,... (0:A, 1:B, 2:C, 3:D Filmrahmen)
-
Progressives Format und Interlaced-Format mit normaler Rate:
InputFrameOrField = 0, 1, 2,...
-
Progressives Format und Interlaced-Format mit halber Rate:
InputFrameOrField = 0, 2, 4,...
-
Interlaced-Format mit benutzerdefinierter 4/5-Rate (3:2 inverse Telecine, OutputFrames=4 und InputFrameOrField=10):
InputFrameOrField = 0, 0, 0, 0, 10, 10, 10, 10, 20, 20, 20, 20,...
-
Interlaced-Format mit benutzerdefinierter 4/15-Rate (8:7 inverse Telecine, OutputFrames=2 und InputFrameOrField=15):
InputFrameOrField = 0, 0, 15, 15, 30, 30,...
Wenn der Treiber jedoch zwischen normaler und halber Rate wechselt (Werte aus der DXVAHDDDI_OUTPUT_RATE-Enumeration ), sollte der Treiber die Zurücksetzung nicht erfordern.
Wenn sowohl die Member OutputIndex als auch InputFrameOrField zum nächsten Prozesszeitpunkt unverändert bleiben, bestimmt der Treiber, dass der Frame in der Streamverarbeitung unverändert ist (z. B. angehalten). Daher kann der Treiber den Frame mithilfe zwischengespeicherter Daten optimieren.
Der Treiber sollte auf eine weniger intensive Videoverarbeitungsmethode zurückgreifen, da weniger Referenzframes bereitgestellt werden. Der Treiber sollte auf Bob-De-Interlacing zurückgreifen, wenn keine Referenzbeispiele bereitgestellt werden.
Eine Anwendung kann weniger frühere und zukünftige Referenzframes als die vom Treiber angeforderten Referenzframes bereitstellen. Beispielsweise kann eine Anwendung unter den folgenden Bedingungen weniger Referenzframes bereitstellen:
- Am Anfang oder am Ende der Framesequenz.
- Übergang zwischen progressiv und interlaced.
- Progressiver Stream mit normaler oder halber Rate.
- Untervideostreams, die keine hochwertige De-Interlacing-Qualität erfordern.
- Beim Drosseln der Referenzframes, um die Frameverluste wiederherzustellen und die Bildfrequenz zu halten.
- Frame drop from the input (z. B. Frame drops in the decoder).
pPastSurfaces [] = {..., T-3, T-2, T-1}
InputSurface = T
pFutureSurfaces [] = {T+1, T+2, T+3,...}
Die Eingabe- und Verweisrahmen ändern die Position von der zukünftigen Position an den vergangenen Speicherort über den aktuellen Speicherort als OutputIndex - und InputFrameOrField-Member inkrement. Beispielsweise ändert sich die Eingabeoberfläche als OutputIndex- und InputFrameOrField-Inkrement, wenn der Treiber die folgende Videoverarbeitung ausführt:
-
Progressives Format mit normaler Rate:
OutputIndex = 0, 0, 0,...
InputFrameOrField = 0, 1, 2,...
InputSurface = T, T+1, T+2,...
-
Interlaced-Format mit normaler Rate:
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,...
-
Interlaced-Format mit halber Rate:
OutputIndex = 0, 0, 0,...
InputFrameOrField = 0, 2, 4,...
InputSurface = T, T+1, T+2,...
-
Interlaced-Format mit benutzerdefinierter 4/5-Rate (3:2 inverse Telecine, OutputFrames=4 und 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,...
-
Interlaced-Format mit benutzerdefinierter 4/15-Rate (8:7 inverse Telecine, OutputFrames=2 und 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,... (Beachten Sie, dass T+7-Frame das 15. Feld enthält)
-[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
:
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | DXVAHDDDI_STREAM_DATA wird ab dem Windows 7-Betriebssystem unterstützt. |
Kopfzeile | d3dumddi.h (include D3dumddi.h) |
Weitere Informationen
DXVAHDDDI_STREAM_STATE_FRAME_FORMAT_DATA