次の方法で共有


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 構造体。 fresh 内の使用の詳細については、「備考」を参照してください。

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 コマンドに使用する解像度を示します。 一部のコーデックでは、エンコード セッションの途中で解像度が変更されると、潜在的な強制 IDR/キー フレーム要求で GOP をリセットし、デコードされたピクチャ バッファー (DPB) バッファーとフレーム管理アルゴリズムもリセットする必要があります。
  • サポートされていない場合、 PictureTargetResolution はエンコード セッション全体のターゲット解決を示し、セッション中に変更することはできません。

SelectedLayoutMode

使用されているレイアウト モード、および FrameSubregionsLayoutData で使用する共用体メンバーを示すD3D12DDI_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_0080値。

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

ビデオ シーケンスで使用されている現在の GOP を表示順に指定するD3D12DDI_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_0082_0構造体。 EncodeFrame の呼び出しは、この GOP に従う必要がありますが、B フレームの並べ替え後に順番に行う必要があります。

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..., in-refresh start is requested at the "IPP" partial submission of the GOP, the last two P frames of the GOP will ignored, the intra-refresh session will be issued for the N next frames, then a new key-frame that restarts the GOP structure is expected.

行ベースの更新内の場合:

  • 構成された GOP 構造体は、Infinite IPPP... に再構成する必要があります。P。。。更新セッションの期間中の GOP (GOPLength = 0u および PPicturePeriod = 1u)。 その後、更新中のウェーブが終了した後に、もう一度再構成できます。

  • 構成されたサブリージョンパーティションモードは、N EncodeFrame コマンドの間、フレームごとの N つの均一スライスパーティション分割に対応するように再構成されます。 これは、サブリージョンのパーティション分割が更新内要件と互換性のないモードに設定されている場合に特に重要です。たとえば、スライス内のコード内ユニットの行によって、スライスあたりのバイト数に設定された制限が中断される場合などです。 行ベースの更新では、結果のフレームに N 個のスライス (現在の更新行内スライスを除くすべての P スライス) が含まれていることが期待されます。これは I スライスである必要があります。

要件

要件
サポートされている最小のクライアント Windows 11 (WDDM 3.0)
Header 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