共用方式為


DXVAHDDDI_STREAM_DATA結構 (d3dumddi.h)

DXVAHDDDI_STREAM_DATA 結構描述已處理的輸入數據流。

語法

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;

成員

[in] Enable

布爾值,指定是否啟用輸入數據流。 運行時間啟用的輸入數據流數目不能超過驅動程式在 MaxStreamStates 中設定的數位,DXVAHDDDI_VPDEVCAPS 結構的成員

[in] OutputIndex

組成之輸出畫面的以零起始的迴圈框架索引編號。

[in] InputFrameOrField

已處理之輸入畫面格或字段的以零起始的框架編號。

[in] PastFrames

過去的參考框架數目。 這個數位不能超過驅動程式在 PastFrames 中設定的數位,DXVAHDDDI_VPCAPS 結構的成員

[in] FutureFrames

未來的參考框架數目。 此數位不能超過驅動程式在 FutureFrames 中設定的數位,DXVAHDDDI_VPCAPS 結構的成員。

[in] pPastSurfaces

描述過去參考介面之 DXVAHDDDI_SURFACE 結構的陣列。

[in] InputSurface

描述輸入介面的 DXVAHDDDI_SURFACE 結構。

[in] pFutureSurfaces

描述未來參考介面之 DXVAHDDDI_SURFACE 結構的陣列。

言論

驅動程式必須配置 pPastSurfacesInputSurface,以及 pFutureSurfaces 成員在集區類型中指定的介面,驅動程式會在 InputPool 中設定DXVAHDDDI_VPDEVCAPS 結構的成員,以及下列其中一個介面類型:否則,驅動程式的 VideoProcessBltHD 函式會傳回錯誤。

  • 使用 DXVAHD_SURFACE_TYPE_VIDEO_INPUT 或 DXVAHD_SURFACE_TYPE_VIDEO_INPUT_PRIVATE 類型建立的視訊介面。
  • 以DXVA2_VideoDecodeRenderTarget類型建立的譯碼轉譯目標介面。
  • 螢幕外一般表面。
OutputIndex 成員是以零起始的循環數,表示輸出的框架索引編號。 驅動程式會使用此輸出索引資訊在特定模式或週期中執行視訊處理,特別是當驅動程式執行反交錯、幀速率轉換和反向電視播放時。 例如,使用下列輸出索引模式,驅動程式會執行指示的視訊處理:
  • 一般和半速率的漸進式格式:

    OutputIndex = 0, 0,...

  • 2/1 自定義速率的漸進式格式(雙幀速率轉換,OutputFrames=2):

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

  • 以正常速率交錯格式:

    OutputIndex = 0、1、0、1,...(0:第一欄位,1:第二欄位)

  • 以半速率交錯格式:

    OutputIndex = 0, 0,...(例如,第一個和第二個字段會混合到一個框架)

  • 交錯的自定義速率為 4/5 (3:2 反向電視,OutputFrames=4):

    OutputIndex = 0, 1, 2, 3, 0, 1, 2, 3,...(0:A、1:B、2:C、3:D 電影框架)

InputFrameOrField 成員是以零起始的數位,表示輸入介面的框架或字段編號。 例如,使用下列輸入畫面或字段號碼,驅動程式可以執行指示的視訊處理:
  • 漸進式格式和交錯格式的正常速率:

    InputFrameOrField = 0, 1, 2,...

  • 漸進式格式和交錯格式的速率為半:

    InputFrameOrField = 0, 2, 4,...

  • 以 4/5 自定義速率交錯格式 (3:2 反向電視、OutputFrames=4 和 InputFrameOrField=10):

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

  • 以 4/15 自定義速率交錯格式 (8:7 反向電視、OutputFrames=2 和 InputFrameOrField=15):

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

應用程式應該會在 OutputIndexInputFrameOrField 成員在畫面格式或輸出速率變更時重設,讓驅動程式可以重設其內部處理狀態。 如需變更畫面格式或輸出速率的詳細資訊,請參閱 DXVAHDDDI_STREAM_STATE_FRAME_FORMAT_DATADXVAHDDDI_STREAM_STATE_OUTPUT_RATE_DATA

不過,如果驅動程式在一般和半速率之間切換(來自 DXVAHDDDI_OUTPUT_RATE 列舉的值),則驅動程式不應該要求重設。

如果 OutputIndexInputFrameOrField 成員在下一個處理時間維持不變,驅動程式會判斷串流處理中的框架未變更(例如暫停)。 因此,驅動程式可以使用快取的數據來優化框架。

驅動程式應該會回復到較不密集的視訊處理方法,因為提供的參考畫面較少。 未提供參考範例時,驅動程式應該會回復至 Bob 取消交錯。

應用程式可以提供的過去和未來的參考框架,比驅動程式要求的參考框架還少。 例如,應用程式可以在下列情況下提供較少的參考框架:

  • 在框架序列的開頭或結尾。
  • 漸進式和交錯式之間的轉換。
  • 一般或半速率漸進數據流。
  • 不需要高品質反交錯的子視訊串流。
  • 同時節流參考畫面,以從畫面卸除復原,並維持幀速率。
  • 從輸入卸除框架(例如,譯碼器中的框架置放)。
pPastSurfacespFutureSurfaces 陣列成員,以時態順序從較舊到較新的畫面格,提供過去和未來的參考框架。 例如,陣列中的元素順序如下列範例所示:

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

InputSurface = T

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

當 input 和 referenceFrameOrField 成員遞增時,輸入和參考畫面格會透過目前位置,將位置從未來位置變更為過去位置,OutputIndex InputFrameOrField。 例如,當驅動程式執行下列視訊處理時,輸入介面會隨著 OutputIndex 而變更,InputFrameOrField 遞增:

  • 一般速率的漸進式格式:

    OutputIndex = 0, 0, 0,...

    InputFrameOrField = 0, 1, 2,...

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

  • 以正常速率交錯格式:

    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,...

  • 以半速率交錯格式:

    OutputIndex = 0, 0, 0,...

    InputFrameOrField = 0, 2, 4,...

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

  • 以 4/5 自定義速率交錯格式 (3:2 反向電視、OutputFrames=4 和 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,...

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

  • 以 4/15 自定義速率交錯格式 (8:7 反向電視、OutputFrames=2 和 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,...(請注意,T+7 框架包含第 15 個字段)

下列虛擬程式代碼範例示範在每秒 3:2 下拉、每秒 30 個畫面(60 個字段)上執行反向 Telecine (IVTC) 時,應用程式 (APP) 與驅動程式 (DRV) 之間的互動:
-[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
    :

要求

要求 價值
最低支援的用戶端 從 Windows 7作系統開始,支援DXVAHDDDI_STREAM_DATA。
標頭 d3dumddi.h (包括 D3dumddi.h)

另請參閱

DXVAHDDDI_OUTPUT_RATE

DXVAHDDDI_STREAM_STATE_FRAME_FORMAT_DATA

DXVAHDDDI_STREAM_STATE_OUTPUT_RATE_DATA

DXVAHDDDI_SURFACE

DXVAHDDDI_VPCAPS

DXVAHDDDI_VPDEVCAPS

VideoProcessBltHD