DXVAHDDDI_STREAM_DATA Struktur (d3dumddi.h)
Die DXVAHDDDI_STREAM_DATA-Struktur beschreibt einen verarbeiteten Eingabedatenstrom.
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;
Angehörige
[in] Enable
Ein boolescher Wert, der angibt, ob der Eingabedatenstrom aktiviert ist. Die Anzahl der Eingabedatenströme, die die Laufzeit ermöglicht, 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 Ausgabeframes, die zusammengesetzt sind.
[in] InputFrameOrField
Eine nullbasierte Framenummer der Eingabeframes oder Felder, die verarbeitet werden.
[in] PastFrames
Die Anzahl der vergangenen Referenzframes. Diese Zahl darf nicht mehr sein als die Zahl, die der Treiber im PastFrames Element der DXVAHDDDI_VPCAPS-Struktur festlegt.
[in] FutureFrames
Die Anzahl der zukünftigen Referenzframes. Diese Zahl darf nicht mehr sein als die Zahl, 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.
Bemerkungen
Der Treiber muss die Oberflächen zuordnen, die die pPastSurfaces, InputSurface-und pFutureSurfaces-Member im Pooltyp angeben, den der Treiber im InputPool Member der DXVAHDDDI_VPDEVCAPS Struktur und mit einem der folgenden Oberflächentypen festlegt; andernfalls gibt die VideoProcessBltHD--Funktion des Treibers einen Fehler zurück.
- Eine Videooberfläche, die mit dem typ "DXVAHD_SURFACE_TYPE_VIDEO_INPUT" oder "DXVAHD_SURFACE_TYPE_VIDEO_INPUT_PRIVATE" erstellt wird.
- Eine Decodierung der Renderzieloberfläche, die mit dem DXVA2_VideoDecodeRenderTarget Typ erstellt wird.
- Eine unformatierte Oberfläche auf dem Off-Screen.
-
Progressives Format mit normaler und halber Rate:
OutputIndex = 0, 0,...
-
Progressives Format mit 2/1 benutzerdefinierter Rate (Doppelte Framerate-Konvertierung, OutputFrames=2):
OutputIndex = 0, 1, 0, 1,...
-
Interlaced format at normal rate:
OutputIndex = 0, 1, 0, 1,... (0: erstes Feld, 1: zweites Feld)
-
Interlaced-Format mit halber Rate:
OutputIndex = 0, 0,... (z. B. werden die ersten und zweiten Felder mit einem Frame kombiniert)
-
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 at normal rate:
InputFrameOrField = 0, 1, 2,...
-
Progressives Format und Interlaced-Format mit halber Rate:
InputFrameOrField = 0, 2, 4,...
-
Interlaced format at 4/5 custom rate (3:2 inverse telecine, OutputFrames=4 and InputFrameOrField=10):
InputFrameOrField = 0, 0, 0, 0, 10, 10, 10, 10, 20, 20, 20, 20,...
-
Interlaced format at 4/15 custom rate (8:7 inverse telecine, OutputFrames=2 and 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 das Zurücksetzen nicht erfordern.
Wenn sowohl die OutputIndex- als auch InputFrameOrField Elemente beim nächsten Prozess unverändert bleiben, bestimmt der Treiber, dass der Frame in der Datenstromverarbeitung 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 vergangene und zukünftige Referenzframes bereitstellen als die Referenzframes, die der Treiber anfordert. Beispielsweise kann eine Anwendung in den folgenden Bedingungen weniger Referenzframes bereitstellen:
- Am Anfang oder am Ende der Framesequenz.
- Übergang zwischen progressivem und interlaced.
- Progressiver Datenstrom mit normaler oder halber Rate.
- Subvideostreams, die keine hohe Qualität der Interlacing erfordern.
- Beim Drosseln der Referenzframes zum Wiederherstellen von Frame-Tropfen und zum Beibehalten der Framerate.
- Frame drop from the input (for example, frame drop in the decoder).
pPastSurfaces [] = {..., T-3, T-2, T-1}
InputSurface- = T
pFutureSurfaces [] = {T+1, T+2, T+3,...}
Die Eingabe- und Referenzframes ändern die Position von der zukünftigen Position bis zur letzten Position durch die aktuelle Position als OutputIndex- und InputFrameOrField Member inkrementieren. Die Eingabeoberfläche ändert sich z. B. als OutputIndex- und InputFrameOrField inkrementieren, wenn der Treiber die folgende Videoverarbeitung durchführt:
-
Progressives Format mit normaler Rate:
OutputIndex = 0, 0, 0,...
InputFrameOrField = 0, 1, 2,...
InputSurface = T, T+1, T+2,...
-
Interlaced format at normal 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 at 4/5 custom rate (3:2 inverse telecine, OutputFrames=4 and 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 at 4/15 custom rate (8:7 inverse telecine, OutputFrames=2 and 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 |
---|---|
mindestens unterstützte Client- | DXVAHDDDI_STREAM_DATA wird ab dem Windows 7-Betriebssystem unterstützt. |
Header- | d3dumddi.h (include D3dumddi.h) |
Siehe auch
DXVAHDDDI_STREAM_STATE_FRAME_FORMAT_DATA