Share via


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,並可能強制使用 SSH/主要畫面格要求來重設已譯碼的圖片緩衝區, (DPB) 緩衝區和畫面管理演算法。
  • 如果不支援, PictureTargetResolution 表示整個編碼會話的目標解析度,而且在會話期間不得變更。

SelectedLayoutMode

D3D12DDI_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_0080值,指出正在使用哪一個版面配置模式,因此要用於 FrameSubregionsLayoutData 的聯集成員。

檢查 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_0083_0_SUBREGION_LAYOUT_RECONFIGURATION_AVAILABLE 旗標,以判斷是否支援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 框架) 使用雙向參考框架與內部重新整理互斥。 呼叫端應該檢查 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 結構必須重新設定為無限 IPPP...P。。。GOP (GOPLength = 0u 和 PPicturePeriod = 1u) ,在重新整理會話期間。 然後,在重新整理內波完成之後,就可以重新設定它。

  • 設定的子分割模式會重新設定為在 N EncodeFrame 命令持續時間內,對應每個畫面的 N 個統一配量分割。 當分割區設定為與重新整理內部需求不相容的模式時,這特別重要,例如,配量中自動程式代碼單位的數據列會中斷每個配量設定為位元組的限制。 數據列內部重新整理的預期是產生的框架包含 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