次の方法で共有


D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264構造体 (d3d12video.h)

H.264 エンコードに関連付けられた EncodeFrame コマンドの画像レベルコントロール要素を表します。

構文

typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264 {
  D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAGS                                         Flags;
  D3D12_VIDEO_ENCODER_FRAME_TYPE_H264                                                               FrameType;
  UINT                                                                                              pic_parameter_set_id;
  UINT                                                                                              idr_pic_id;
  UINT                                                                                              PictureOrderCountNumber;
  UINT                                                                                              FrameDecodingOrderNumber;
  UINT                                                                                              TemporalLayerIndex;
  UINT                                                                                              List0ReferenceFramesCount;
  UINT                                                                                              *pList0ReferenceFrames;
  UINT                                                                                              List1ReferenceFramesCount;
  UINT                                                                                              *pList1ReferenceFrames;
  UINT                                                                                              ReferenceFramesReconPictureDescriptorsCount;
  D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_H264                                             *pReferenceFramesReconPictureDescriptors;
  UCHAR                                                                                             adaptive_ref_pic_marking_mode_flag;
  UINT                                                                                              RefPicMarkingOperationsCommandsCount;
  D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_MARKING_OPERATION           *pRefPicMarkingOperationsCommands;
  UINT                                                                                              List0RefPicModificationsCount;
  D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_LIST_MODIFICATION_OPERATION *pList0RefPicModifications;
  UINT                                                                                              List1RefPicModificationsCount;
  D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_LIST_MODIFICATION_OPERATION *pList1RefPicModifications;
  UINT                                                                                              QPMapValuesCount;
  INT8                                                                                              *pRateControlQPMap;
} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264;

メンバー

Flags

エンコードされるフレームの構成フラグを指定する 、D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAGS 列挙からの値のビットごとの OR の組み合わせ。

FrameType

図の種類を指定 するD3D12_VIDEO_ENCODER_FRAME_TYPE_H264 列挙の値。 コーデック固有のフラグで指定した種類がサポートされていることを確認します。 この選択は、ホストによって設定された GOP 構造構成と同期されている必要があります。 GOP は表示順序で定義されており、この pic の種類の選択は GOP に従う必要がありますが、エンコード順序で行う必要があることに注意してください。

pic_parameter_set_id

PPS を参照するために現在のフレームのスライス ヘッダーで使用される値を指定する UINT

idr_pic_id

FrameType** をD3D12_VIDEO_ENCODER_FRAME_TYPE_H264_IDR_FRAMEすると、フレームに存在するすべてのスライス ヘッダーで使用される IDR フレームの識別子を示す UINT

PictureOrderCountNumber

現在のフレーム表示順序を指定する UINT

FrameDecodingOrderNumber

各参照図の後にインクリメントする構文要素frame_numスライス ヘッダーによって示されるセマンティックを持つフレーム デコード順序を指定する UINT

TemporalLayerIndex

テンポラル階層の画像レイヤー番号を指定する UINTD3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264内のレイヤーの最大数を確認します。

List0ReferenceFramesCount

このフレームに使用する過去のフレーム参照の数を指定する UINT 。 この値は、 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264で公開されたものと一貫性がある必要があります。

pList0ReferenceFrames

このフレームに使用する過去のフレーム参照フレームのリストを指定する UINT 配列へのポインター。 この配列内の各整数値は pReferenceFramesReconPictureDescriptors に変換され、DPB に保持されている図を参照します。

List1ReferenceFramesCount

このフレームに使用する将来のフレーム参照の数を指定する UINT 。 この値は、 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264で公開されたものと一貫性がある必要があります。

pList1ReferenceFrames

このフレームに使用する将来のフレーム参照フレームのリストを指定する UINT 配列へのポインター。 この配列内の各整数値は pReferenceFramesReconPictureDescriptors に変換され、DPB に保持されている図を参照します。

ReferenceFramesReconPictureDescriptorsCount

pReferenceFramesReconPictureDescriptors のエントリ数を指定する UINT

pReferenceFramesReconPictureDescriptors

D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESCに保持されている DPB バッファーの現在の状態を記述する UINT 配列へのポインター 。ReferenceFramespList0ReferenceFramespList1ReferenceFrames には、過去/将来の参照からこの記述子配列へのマップインデックスが一覧表示されます。

この記述子の配列は、次に、このフレームの参照画像を再構築されたピクチャ配列D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESCのリソース インデックスにマップします 。ReferenceFrames。 さらに、参照図ごとに、エンコードおよび表示順序番号と、それが長期参照であるかどうかを示します。

この配列のサイズは常にD3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESCと一致します。関連する EncodeFrame コマンドの ReferenceFrames.NumTextures

adaptive_ref_pic_marking_mode_flag

フレーム参照処理のセマンティック モードを定義する UCHAR

adaptive_ref_pic_marking_mode_flag値 参照画像マーキングモード指定
0 1
スライディング ウィンドウ参照画像マーキング モード: 短期参照画像の先入れ先出しメカニズムを提供するマーキング モード。 アダプティブ参照図マーキング モード: 参照図のマーキングを "参照用に使用しない" として指定し、長期的なフレーム インデックスを割り当てる構文要素を提供する参照画像マーキング モード。

RefPicMarkingOperationsCommandsCount

現在のフレームに関連付けられている参照図マーキング操作の数を指定する UINTadaptive_ref_pic_marking_mode_flagが 1 に設定されている必要があります。

pRefPicMarkingOperationsCommands

現在 のフレーム に関連付けられている参照図マーキング操作の一覧を表すD3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_MARKING_OPERATION構造体の配列へのポインター。 この一覧で説明する操作は、エンコード セッション中に DPB 記述子に適宜反映する必要があります。

List0RefPicModificationsCount

pList0RefPicModifications 内の項目数を指定する UINT

pList0RefPicModifications

pList0ReferenceFramesリストの参照図リスト変更操作のリストを表すD3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_LIST_MODIFICATION_OPERATION構造体の配列へのポインター。

List1RefPicModificationsCount

pList1RefPicModifications 内の項目数を指定する UINT

pList1RefPicModifications

pList1ReferenceFramesリストの参照図リスト変更操作のリストを表すD3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_LIST_MODIFICATION_OPERATION構造体の配列へのポインター。

QPMapValuesCount

pRateControlQPMap に存在する要素の数を指定する UINT。 これは、フレーム内のコーディング ブロックの数と一致し、フレーム解像度を最も近いアライン値に切り上げる必要があります。

pRateControlQPMap

行/列スキャン順序で、このフレームの各 2 乗領域で使用する QP マップ値を含む Int8 の配列へのポインター。 QP マップ ディメンションは、現在の解像度とD3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITSを使用して計算できます 。QPMapRegionPixelsSize は、2 乗領域のサイズを伝達します。

解説

現在のフレームが参照図としてマークされている場合、出力には再構築されたピクチャと、再構築されたピクチャ参照リスト内の将来のコマンドにホストが配置するためのビットストリームが含まれている必要があります。 一部のフレームの種類が参照としてマークされるには制限チェック場合があります。これらの値を設定する前に機能がサポートされます。

次の表に、H264 エンコードに必要な SPS 値と PPS 値を示します。

H264 のLevel_idc マッピング

D3D12 レベル 予想されるlevel_idc メモ
D3D12_VIDEO_ENCODER_LEVELS_H264_1 10 なし
D3D12_VIDEO_ENCODER_LEVELS_H264_1b 11 SPS.constraint_set3は 1 である必要があります
D3D12_VIDEO_ENCODER_LEVELS_H264_11 11 なし
D3D12_VIDEO_ENCODER_LEVELS_H264_12 12 なし
D3D12_VIDEO_ENCODER_LEVELS_H264_13 13 なし
D3D12_VIDEO_ENCODER_LEVELS_H264_2 20 なし
D3D12_VIDEO_ENCODER_LEVELS_H264_21 21 なし
D3D12_VIDEO_ENCODER_LEVELS_H264_22 22 なし
D3D12_VIDEO_ENCODER_LEVELS_H264_3 30 なし
D3D12_VIDEO_ENCODER_LEVELS_H264_31 31 なし
D3D12_VIDEO_ENCODER_LEVELS_H264_32 32 なし
D3D12_VIDEO_ENCODER_LEVELS_H264_4 40 なし
D3D12_VIDEO_ENCODER_LEVELS_H264_41 41 なし
D3D12_VIDEO_ENCODER_LEVELS_H264_42 42 なし
D3D12_VIDEO_ENCODER_LEVELS_H264_5 50 なし
D3D12_VIDEO_ENCODER_LEVELS_H264_51 51 なし
D3D12_VIDEO_ENCODER_LEVELS_H264_52 52 なし
D3D12_VIDEO_ENCODER_LEVELS_H264_6 60 None
D3D12_VIDEO_ENCODER_LEVELS_H264_61 61 なし
D3D12_VIDEO_ENCODER_LEVELS_H264_62 62 なし

H264 Sequence Parameter Set expected values (H264 シーケンス パラメーターセットの予期される値)

Syntax 要素 予期される既定値 メモ
profile_idc H264_PROFILE_MAIN/H264_PROFILE_HIGH/H264_PROFILE_HIGH10の列挙値 なし
constraint_set0_flag 0 なし
constraint_set1_flag 0 なし
constraint_set2_flag 0 なし
constraint_set3_flag 0 D3D12_VIDEO_ENCODER_LEVELS_H264_1bを使用する場合は 1
constraint_set4_flag 0 なし
constraint_set5_flag 0 なし
reserved_zero_2bits 0 なし
level_idc H264 レベルについては、上記の表を参照してください なし
seq_parameter_set_id ユーザー固有 なし
chroma_format_idc 1 P010 または NV12 YUV 4.2.0 形式でのみ使用する場合
bit_depth_luma_minus8 NV12 の場合は 0、P010 の場合は 2 なし
qpprime_y_zero_transform_bypass_flag 0 なし
seq_scaling_matrix_present_flag 0 なし
log2_max_frame_num_minus4 D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_H264と同じ なし
pic_order_cnt_type D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_H264と同じ この API でサポートされているモード 0 と 2 のみ
log2_max_pic_order_cnt_lsb_minus4 D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_H264と同じ == 0 pic_order_cnt_type場合のみ
max_num_ref_frames エンコード セッションで使用される参照画像の最大数 なし
gaps_in_frame_num_value_allowed_flag 0 なし
pic_width_in_mbs_minus1 std::ceil(sequenceTargetResolution.Width / 16.0)) - 1; なし
pic_height_in_map_units_minus1 std::ceil(sequenceTargetResolution.Height / 16.0)) - 1; なし
frame_mbs_only_flag 0 インターレースのサポートなし
direct_8x8_inference_flag D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_USE_ADAPTIVE_8x8_TRANSFORMに基づく なし
frame_cropping_flag エンコード解像度に応じて 0 または 1 が 16 揃えかどうか なし
frame_cropping_rect_left_offset 0 frame_cropping_flag = 1 の場合のみ
frame_cropping_rect_right_offset ((pic_width_in_mbs_minus1+1) * 16 - sequenceTargetResolution.Width) / 2 frame_cropping_flag = 1 の場合のみ
frame_cropping_rect_top_offset ((pic_height_in_map_units_minus1+1) * 16 - sequenceTargetResolution.Height) / 2 frame_cropping_flag = 1 の場合のみ
frame_cropping_rect_bottom_offset 0 frame_cropping_flag = 1 の場合のみ
vui_paramenters_present_flag 0 なし

H264 Picture Parameter Set expected values

Syntax 要素 予期される既定値 メモ
pic_parameter_set_id ユーザー固有 なし
seq_parameter_set_id ユーザー固有 なし
entropy_coding_mode_flag D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_ENABLE_CABAC_ENCODINGに基づく なし
pic_order_present_flag 0 pic_cnt_type のサポートのみ = 0、2
num_slice_groups_minus1 0 なし
num_ref_idx_l1_active_minus1 std::max(static_cast<INT>(pictureControl.List0ReferenceFramesCount) - 1, 0) なし
num_ref_idx_l0_active_minus1 std::max(static_cast<INT>(pictureControl.List1ReferenceFramesCount) - 1, 0) なし
weighted_pred_flag 0 なし
weighted_bipred_idc 0 なし
pic_init_qp_minus26 0 なし
pic_init_qs_minus26 0 なし
chroma_qp_index_offset 0 なし
deblocking_filter_control_present_flag 1 なし
constrained_intra_pred_flag D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_USE_CONSTRAINED_INTRAPREDICTIONに基づく なし
redundant_pic_cnt_present_flag 0 なし
transform_8x8_mode_flag D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_USE_ADAPTIVE_8x8_TRANSFORMに基づく 高プロファイルを使用している場合のみ
pic_scaling_matrix_present_flag 0 なし
second_chroma_qp_index_offset 0 なし

要件

   
サポートされている最小のクライアント Windows ビルド 22000
サポートされている最小のサーバー Windows ビルド 22000
Header d3d12video.h