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;
Members
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 | None |
| D3D12_VIDEO_ENCODER_LEVELS_H264_1b | 11 | SPS.constraint_set3は 1 である必要があります |
| D3D12_VIDEO_ENCODER_LEVELS_H264_11 | 11 | None |
| D3D12_VIDEO_ENCODER_LEVELS_H264_12 | 12 | None |
| D3D12_VIDEO_ENCODER_LEVELS_H264_13 | 13 | None |
| D3D12_VIDEO_ENCODER_LEVELS_H264_2 | 20 | None |
| D3D12_VIDEO_ENCODER_LEVELS_H264_21 | 21 (二十一) | None |
| D3D12_VIDEO_ENCODER_LEVELS_H264_22 | 22 | None |
| D3D12_VIDEO_ENCODER_LEVELS_H264_3 | 30 | None |
| D3D12_VIDEO_ENCODER_LEVELS_H264_31 | 31 | None |
| D3D12_VIDEO_ENCODER_LEVELS_H264_32 | 32 | None |
| D3D12_VIDEO_ENCODER_LEVELS_H264_4 | 40 | None |
| D3D12_VIDEO_ENCODER_LEVELS_H264_41 | 41 | None |
| D3D12_VIDEO_ENCODER_LEVELS_H264_42 | 42 | None |
| D3D12_VIDEO_ENCODER_LEVELS_H264_5 | 50 | None |
| D3D12_VIDEO_ENCODER_LEVELS_H264_51 | 51 | None |
| D3D12_VIDEO_ENCODER_LEVELS_H264_52 | 52 | None |
| D3D12_VIDEO_ENCODER_LEVELS_H264_6 | 60 | None |
| D3D12_VIDEO_ENCODER_LEVELS_H264_61 | 61 | None |
| D3D12_VIDEO_ENCODER_LEVELS_H264_62 | 62 | None |
H264 シーケンス パラメーター セットの予期される値
| Syntax 要素 | 既定値が必要です | 注記 |
|---|---|---|
| profile_idc | H264_PROFILE_MAIN/H264_PROFILE_HIGH/H264_PROFILE_HIGH10の列挙値 | None |
| constraint_set0_flag | 0 | None |
| constraint_set1_flag | 0 | None |
| constraint_set2_flag | 0 | None |
| constraint_set3_flag | 0 | D3D12_VIDEO_ENCODER_LEVELS_H264_1bを使用する場合は 1 |
| constraint_set4_flag | 0 | None |
| constraint_set5_flag | 0 | None |
| reserved_zero_2bits | 0 | None |
| level_idc | H264 レベルについては、上記の表を参照してください | None |
| seq_parameter_set_id | ユーザー固有 | None |
| chroma_format_idc | 1 | P010 または NV12 YUV 4.2.0 形式でのみ使用する場合 |
| bit_depth_luma_minus8 | NV12 の場合は 0、P010 の場合は 2 | None |
| qpprime_y_zero_transform_bypass_flag | 0 | None |
| seq_scaling_matrix_present_flag | 0 | None |
| log2_max_frame_num_minus4 | D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_H264と同じ | None |
| 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と同じ | pic_order_cnt_type == 0 の場合のみ |
| max_num_ref_frames | エンコード セッションで使用される参照画像の最大数 | None |
| gaps_in_frame_num_value_allowed_flag | 0 | None |
| pic_width_in_mbs_minus1 | std::ceil(sequenceTargetResolution.Width / 16.0)) - 1; | None |
| pic_height_in_map_units_minus1 | std::ceil(sequenceTargetResolution.Height / 16.0)) - 1; | None |
| frame_mbs_only_flag | 0 | インターレースのサポートなし |
| direct_8x8_inference_flag | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_USE_ADAPTIVE_8x8_TRANSFORMに基づく | None |
| frame_cropping_flag | エンコード解像度に応じて 0 または 1 が 16 にアラインされるかどうか | None |
| 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 | None |
H264 Picture Parameter Set expected values
| Syntax 要素 | 既定値が必要です | 注記 |
|---|---|---|
| pic_parameter_set_id | ユーザー固有 | None |
| seq_parameter_set_id | ユーザー固有 | None |
| entropy_coding_mode_flag | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_ENABLE_CABAC_ENCODINGに基づく | None |
| pic_order_present_flag | 0 | pic_cnt_typeのサポートのみ = 0、2 |
| num_slice_groups_minus1 | 0 | None |
| num_ref_idx_l1_active_minus1 | std::max(static_cast<INT>(pictureControl.List0ReferenceFramesCount) - 1, 0) | None |
| num_ref_idx_l0_active_minus1 | std::max(static_cast<INT>(pictureControl.List1ReferenceFramesCount) - 1, 0) | None |
| weighted_pred_flag | 0 | None |
| weighted_bipred_idc | 0 | None |
| pic_init_qp_minus26 | 0 | None |
| pic_init_qs_minus26 | 0 | None |
| chroma_qp_index_offset | 0 | None |
| deblocking_filter_control_present_flag | 1 | None |
| constrained_intra_pred_flag | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_USE_CONSTRAINED_INTRAPREDICTIONに基づく | None |
| redundant_pic_cnt_present_flag | 0 | None |
| transform_8x8_mode_flag | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_USE_ADAPTIVE_8x8_TRANSFORMに基づく | 高プロファイルを使用している場合のみ |
| pic_scaling_matrix_present_flag | 0 | None |
| second_chroma_qp_index_offset | 0 | None |
Requirements
| Requirement | 価値 |
|---|---|
| サポートされる最小クライアント | Windows ビルド 22000 |
| サポートされている最小のサーバー | Windows ビルド 22000 |
| Header | d3d12video.h |