共用方式為


D3D12DDI_VIDEO_ENCODER_SEQUENCE_CONTROL_DESC_0082_0結構 (d3d12umddi.h)

D3D12DDI_VIDEO_ENCODER_SEQUENCE_CONTROL_DESC_0082_0 結構包含視訊編碼作業輸入的時序層級參數。

語法

typedef struct D3D12DDI_VIDEO_ENCODER_SEQUENCE_CONTROL_DESC_0082_0 {
  D3D12DDI_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAGS_0082_0                 Flags;
  D3D12DDI_VIDEO_ENCODER_INTRA_REFRESH_0080                            IntraRefreshConfig;
  D3D12DDI_VIDEO_ENCODER_RATE_CONTROL_0080_2                           RateControl;
  D3D12DDI_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC_0080                  PictureTargetResolution;
  D3D12DDI_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_0080              SelectedLayoutMode;
  D3D12DDI_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_0080_2 FrameSubregionsLayoutData;
  D3D12DDI_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_0082_0                 CodecGopSequence;
} D3D12DDI_VIDEO_ENCODER_SEQUENCE_CONTROL_DESC_0082_0;

成員

Flags

D3D12DDI_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAGS_0082_0 值,指出目前編碼框架作業的序列控件描述元旗標。

IntraRefreshConfig

D3D12DDI_VIDEO_ENCODER_INTRA_REFRESH_0080 結構,指定觸發內部重新整理會話時應該使用之內部重新整理模式的參數。 如需使用內部更新的詳細資訊,請參閱。

RateControl

指定速率控制組態的 D3D12DDI_VIDEO_ENCODER_RATE_CONTROL_0080_2 結構。

檢查 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_0083_0_RATE_CONTROL_RECONFIGURATION_AVAILABLE 旗標,以判斷是否支援動態重新設定速率控制:

  • 如果支援,修改 RateControl 會導致速率控制演算法重新啟動,而新的組態會從執行相關聯的 EncodeFrame 命令開始。
  • 如果不支援,RateControl 應該在編碼會話的開頭設定,而且不會在會話期間變更。

PictureTargetResolution

D3D12DDI_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC_0080 結構,描述編碼此畫面時要使用的解析度。 目標解析度必須根據建立此作業之相關聯 編碼器堆積時所指定的解析度清單來設定

檢查 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_0083_0_RESOLUTION_RECONFIGURATION_AVAILABLE 旗標,以判斷是否支援動態重新設定解析:

  • 如果支援,PictureTargetResolution 表示要用於相關聯 EncodeFrame 命令的解析度。 在某些編解碼器中,編碼會話中間的解析度變更可能需要重設 GOP,並可能強制使用下列條件來重設:DW/Key 畫面格要求,也會重設已譯碼的圖片緩衝區 (DPB) 緩衝區和畫面管理演算法。
  • 如果不支援,PictureTargetResolution 表示整個編碼會話的目標解析度,而且在會話期間不得變更。

SelectedLayoutMode

D3D12DDI_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_0080 值,指出正在使用哪個版面配置模式,因此,FrameSubregionsLayoutData中使用的等位成員。

檢查 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_0083_0_SUBREGION_LAYOUT_RECONFIGURATION_AVAILABLE 旗標,以判斷是否支援子區域動態重新設定:

  • 如果支援,SelectedLayoutMode 會指出用於相關聯 EncodeFrame 命令的分區分割模式。
  • 如果不支援,*SelectedLayoutMode 表示完整編碼會話的目標子區域模式,而且在編碼會話期間不得變更。

FrameSubregionsLayoutData

D3D12DDI_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_0080_2 結構,其中包含圖片子系配置選擇性編解碼器特定數據。 如果 SelectedLayoutMode 表示沒有子區域,則此成員必須是 NULL。

CodecGopSequence

D3D12DDI_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_0082_0 結構,指定視訊序列中使用的目前 GOP,依顯示順序。 呼叫 EncodeFrame 必須遵循這個 GOP,但在 B-Frames 重新排序之後的順序。

檢查 D3D12_VIDEO_ENCODER_SUPPORT_FLAG__0083_0_SEQUENCE_GOP_RECONFIGURATION_AVAILABLE 旗標,以判斷是否支援 GOP 動態重新設定:

  • 如果支援,CodecGopSequence 表示從相關 EncodeFrame 命令開始使用的新 GOP 子系模式。
  • 如果不支援,CodecGopSequence 表示完整編碼會話的目標 GOP 模式(顯示順序),而且在編碼會話期間不得變更。

言論

如需一般資訊,請參閱 D3D12 視訊編碼

使用內部重新整理

使用雙向參考框架 (B Frames) 與內部重新整理互斥。 呼叫端應該檢查 CodecGopSequence結構是否不包含 B 框架,如果內部重新整理模式為作用中。 使用 D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE_NONE以外的內部重新整理模式查詢 D3D12DDICAPS_VIDEO_ENCODER_SUPPORT_DATA 時,CodecGopSequence 集不得包含 B 框架,否則查詢將不會傳回任何支援。

每次重新整理完成之後,定期要求新的重新整理浪潮,就可以使用無限次內部重新整理。

啟動持續時間 N 畫面格內部重新整理時,主機會執行下列動作:

  • 設定對應的圖片控件旗標以開始重新整理;
  • 控制圖片控件結構中 [0..N] 之間的畫面索引,以提示驅動程式有關重新整理會話內進度的資訊。

當明確要求具有持續時間 N 畫面格的重新整理期間內波時,預期的行為如下:

  • 如果 GOP 開始時發生內部重新整理的要求,N 個畫面就會進行內部重新整理,然後以 I 框架啟動新的 GOP。

  • 如果內部重新整理的要求發生在 GOP 中間,則會結束圖片群組,直到最後提交 EncodeFrame 命令,並在重新整理期間之後重新啟動,且從 I 框架開始的新 GOP 開始。 例如,當 GOP 是 IPPPP...IPPPP...,如果在 GOP 的 「IPP」 部分提交要求內部重新整理開始,則會忽略該 GOP 的最後兩個 P 畫面格,將會針對 N 下一個畫面格發出內部重新整理會話,然後重新啟動 GOP 結構的新主要畫面格。

針對以資料列為基礎的內部重新整理:

  • 設定的 GOP 結構必須重新設定為 Infinite IPPP...P...GOP (GOPLength = 0u 和 PPicturePeriod = 1u) 在重新整理會話期間。 然後,在重新整理階段完成之後,就可以重新設定它。

  • 設定的子分割模式將會重新設定,以對應每個畫面的 N 個統一配量分割,以在 N EncodeFrame 命令期間。 當分區數據分割設定為與內部重新整理需求的不相容模式時,這特別重要,例如,當配量中自動程式碼單位的數據列會中斷每個配量設定為位元組的限制。 數據列內部重新整理的預期是,產生的框架包含 N 個配量、所有 P 配量,但目前內部重新整理數據列配量除外,這必須是 I 配量。

要求

要求 價值
最低支援的用戶端 Windows 11 (WDDM 3.0)
標頭 d3d12umddi.h

另請參閱

D3D12DDI_VIDEO_ENCODER_ENCODEFRAME_INPUT_STREAM_ARGUMENTS_0082_0

D3D12DDI_VIDEO_ENCODER_SUPPORT_FLAGS_0083_0

PFND3D12DDI_VIDEO_ENCODE_FRAME_0082_0

PFND3D12DDI_CREATEVIDEOENCODERHEAP_0080_2