次の方法で共有


PFND3D12DDI_VIDEO_ENCODE_RESOLVE_OUTPUT_METADATA_0082_0 コールバック関数 (d3d12umddi.h)

PFND3D12DDI_VIDEO_ENCODE_RESOLVE_OUTPUT_METADATA_0082_0 コールバック関数は、エンコード操作の出力メタデータを読み取り可能な形式に 解決するコマンドを記録します。

構文

PFND3D12DDI_VIDEO_ENCODE_RESOLVE_OUTPUT_METADATA_0082_0 Pfnd3d12ddiVideoEncodeResolveOutputMetadata00820;

void Pfnd3d12ddiVideoEncodeResolveOutputMetadata00820(
  [in]  D3D12DDI_HCOMMANDLIST hDrvCommandList,
  [in]  const D3D12DDI_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS_0080_2 *pInputArguments,
  [out] const D3D12DDI_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS_0082_0 *pOutputArguments
)
{...}

パラメーター

[in] hDrvCommandList

コマンド リストのドライバーのデータを処理します。 ドライバーは、このメモリ領域を使用して、コマンド リストに関連する内部データ構造を格納します。

[in] pInputArguments

このコールバックの入力引数を含む D3D12DDI_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS_0080_2 構造体へのポインター。

[out] pOutputArguments

このコールバックからの出力を格納する D3D12DDI_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS_0082_0 構造体へのポインター。

戻り値

何一つ

備考

すべてのエンコーダーの場合、ドライバーは、ResolvedLayoutEncoderMetadataDrvBuffer内のメモリ内のすべてのレイアウト情報を連続して配置する必要があります。 API クライアントは、エンコーダーの種類 (ドライバー レベルでD3D12DDI_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS_0080_2.EncoderCodec) に応じて、このメタデータを解析します。

H264/HEVC コーデック用 ResolvedLayoutEncoderMetadataDrvBuffer

H264 エンコーダーと HEVC エンコーダー (AV1 拡張機能が追加される前にサポートされる型) の場合、解決されたバッファー メモリ レイアウトは変更されません。

Av1 コーデック用 ResolvedLayoutEncoderMetadataDrvBuffer

Windows 11 バージョン 24H2 (WDDM 3.2) で追加された AV1 エンコード (pInputArguments->EncoderCodecD3D12DDI_VIDEO_ENCODER_CODEC_0095_AV1と等しい) の場合、ドライバーは追加された AV1 固有の解決済みバッファー レイアウトを使用する必要があります。

  • メモリ レイアウトは次のように定義されます。

    • D3D12DDI_VIDEO_ENCODER_OUTPUT_METADATA_0083_0 構造体

    • WrittenSubregionsCount 型の要素 D3D12DDI_VIDEO_ENCODER_FRAME_SUBREGION_METADATA_0083_0、圧縮された出力ビットストリームに書き込まれるのと同じ順序で各タイルを示します。

      • bSize = tile_size_minus_1 + 1 + bStartOffset
      • bStartOffset = このタイルに対してスキップするバイト数。実際のビットストリームコード化タイル サイズは tile_size_minus_1 = (bSize - bStartOffset - 1) です。
      • bHeaderSize = 0
      • i 番目のタイルは、オフセット = [sum j = (0, (i-1)){ tile[j].bSize }] + tile[i].bStartOffset を使用して、compressed_bitstream[offset] から読み取られます。
    • エンコードされたフレーム タイル グリッド構造を示す D3D12DDI_VIDEO_ENCODER_AV1_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_TILES_0095 構造

    • D3D12DDI_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_0095 GPU 上の EncodeFrame の実行後にのみ取得されるエンコード メタデータ値を示す構造体です。

  • 呼び出し元は、ResolveEncoderOutputMetadata の AV1 のレイアウトによって、解決されたメタデータ バッファーの最大サイズ推論できます。

    • MaxTiles = D3D12DDI_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS_0080_2.MaxSubregionsNumber;
    • MaxEncoderOutputMetadataResolvedBufferSize = sizeof(D3D12DDI_VIDEO_ENCODER_OUTPUT_METADATA_0083_0) + (MaxTiles * sizeof(D3D12DDI_VIDEO_ENCODER_FRAME_SUBREGION_METADATA_0083_0));+ sizeof(D3D12DDI_VIDEO_ENCODER_AV1_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_TILES_0095) + sizeof(D3D12DDI_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_0095)

一般的な情報については、D3D12 ビデオ エンコード を参照してください。

必要条件

要件 価値
サポートされる最小クライアント Windows 11 (WDDM 3.0)
ヘッダー d3d12umddi.h

関連項目

PFND3D12DDI_VIDEO_ENCODE_FRAME_0082_0