次の方法で共有


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...,GOP の "IPP" 部分送信で更新開始が要求された場合、その GOP の最後の 2 つの 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