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
テンポラル階層の画像レイヤー番号を指定する UINT 。 D3D12_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 配列へのポインター 。ReferenceFrames。 pList0ReferenceFrames と pList1ReferenceFrames には、過去/将来の参照からこの記述子配列へのマップインデックスが一覧表示されます。
この記述子の配列は、次に、このフレームの参照画像を再構築されたピクチャ配列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
現在のフレームに関連付けられている参照図マーキング操作の数を指定する UINT 。 adaptive_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 |