共用方式為


D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_DESC 結構 (d3d12video.h)

表示序列層級之視訊編碼作業輸入的參數。

語法

typedef struct D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_DESC {
  D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAGS                 Flags;
  D3D12_VIDEO_ENCODER_INTRA_REFRESH                          IntraRefreshConfig;
  D3D12_VIDEO_ENCODER_RATE_CONTROL                           RateControl;
  D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC                PictureTargetResolution;
  D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE            SelectedLayoutMode;
  D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA FrameSubregionsLayoutData;
  D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE                 CodecGopSequence;
} D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_DESC;

成員

Flags

來自 D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAGS 列舉值的位元組 OR 組合,指定目前作業的序列控件描述項旗標。

IntraRefreshConfig

D3D12_VIDEO_ENCODER_INTRA_REFRESH 結構,指定觸發內部重新整理會話時應該使用之內部重新整理模式的參數。

(B 框架) 使用雙向參考框架,與重新整理期間互斥。 如果內部重新整理模式為使用中,呼叫端應該確認 GOP 結構不包含 B 框架。 使用D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE_NONE以外的內部重新整理模式查詢D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT時,指定的D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE集不得包含 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) 期間內重新整理會話。 然後在 IR 波段完成後再次重新設定。

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

RateControl

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

檢查 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_RECONFIGURATION_AVAILABLE中速率控制動態重新設定的支援。 如果允許速率控制動態重新設定,藉由修改 RateControl,速率控制演算法會從相關聯的 EncodeFrame 執行開始,以新的組態重新啟動。 否則,這應該設定在編碼會話的開頭,而不是在 之後變更。

PictureTargetResolution

D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC結構,描述編碼此畫面時所要使用的解析度。

檢查 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RESOLUTION_RECONFIGURATION_AVAILABLE中解析動態重新設定的支援。 如果未提供此支援, PictureTargetResolution 會指出完整編碼會話的目標解析度,而且在編碼會話期間不得變更。 否則,這表示用於相關聯 EncodeFrame 命令的解析度。

您必須根據為此作業建立相關聯編碼器堆積時所指定的解析度清單來設定目標。

對於某些編解碼器,編碼會話中間的解析變更可能需要重設 GOP,並可能強制使用「SSH/主要畫面格要求」,而且可能也需要重設 DPB 緩衝區/畫面格管理演算法。

SelectedLayoutMode

來自 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE 列舉的值,指定要使用哪個版面配置模式,因此要用於 pFrameSubregionsLayoutData 的等位成員。

檢查 [D3D12_VIDEO_ENCODER_SUPPORT_FLAG_SUBREGION_LAYOUT_RECONFIGURATION_AVAILABLE] ( (ne-d3d12video-d3d12_video_encoder_support_flags.md) 中的支持動態重新設定。 如果未提供此支援,這表示完整編碼會話的目標子模式,而且在編碼會話期間不得變更。 否則,這表示用於相關聯 EncodeFrame 命令的子分割模式。

FrameSubregionsLayoutData

指定圖片配置選擇性編解碼器特定數據的 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA 結構。 如果指定的 SelectedLayoutMode 值指出沒有子系,則預期為 null。

CodecGopSequence

D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE 結構,以顯示順序指定影片序列中使用的目前 GOP。 對 EncodeFrame 的呼叫必須遵循此 GOP,但在 B-Frames 重新排序之後的編碼順序。

檢查 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_SEQUENCE_GOP_RECONFIGURATION_AVAILABLE 中 GOP 動態重新設定的支援。 如果未提供此支援, CodecGopSequence 會指出目標 GOP 模式 (顯示順序) 完整編碼會話,而且在編碼會話期間不得變更。 否則,這表示從相關聯的 EncodeFrame 命令開始使用的新 GOP 子模式。

規格需求

需求
最低支援的用戶端 Windows 組建 22000
最低支援的伺服器 Windows 組建 22000
標頭 d3d12video.h