D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC構造体 (d3d12video.h)
HEVC エンコードに関連付けられた EncodeFrame コマンドの画像レベル制御要素を表します。
構文
typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC {
D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS Flags;
D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC FrameType;
UINT slice_pic_parameter_set_id;
UINT PictureOrderCountNumber;
UINT TemporalLayerIndex;
UINT List0ReferenceFramesCount;
UINT *pList0ReferenceFrames;
UINT List1ReferenceFramesCount;
UINT *pList1ReferenceFrames;
UINT ReferenceFramesReconPictureDescriptorsCount;
D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_HEVC *pReferenceFramesReconPictureDescriptors;
UINT List0RefPicModificationsCount;
UINT *pList0RefPicModifications;
UINT List1RefPicModificationsCount;
UINT *pList1RefPicModifications;
UINT QPMapValuesCount;
INT8 *pRateControlQPMap;
} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC;
メンバー
Flags
エンコードされるフレームの構成フラグを指定する 、D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS 列挙からの値のビットごとの OR の組み合わせ。
FrameType
図の種類を指定する D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC 列挙の値。 コーデック固有のフラグで指定した種類がサポートされていることを確認します。 この選択は、ホストによって設定された GOP 構造構成と同期されている必要があります。 GOP は表示順序で定義されており、この pic の種類の選択は GOP に従う必要がありますが、エンコード順序で行う必要があることに注意してください。
slice_pic_parameter_set_id
PPS を参照するために現在のフレームのスライス ヘッダーで使用される値を指定する UINT 。
PictureOrderCountNumber
現在のフレーム表示順序を指定する UINT 。
TemporalLayerIndex
テンポラル階層の画像レイヤー番号を指定する UINT 。 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC内のレイヤーの最大数を確認します。
List0ReferenceFramesCount
このフレームに使用する過去のフレーム参照の数を指定する UINT 。 この値は、 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVCで公開されたものと一貫性がある必要があります。
pList0ReferenceFrames
このフレームに使用する過去のフレーム参照フレームのリストを指定する UINT 配列へのポインター。 この配列内の各整数値は pReferenceFramesReconPictureDescriptors に変換され、DPB に保持されている図を参照します。
List1ReferenceFramesCount
このフレームに使用する将来のフレーム参照の数を指定する UINT 。 この値は、 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVCで公開されたものと一貫性がある必要があります。
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。
List0RefPicModificationsCount
pList0RefPicModifications 内の項目数を指定する UINT。
pList0RefPicModifications
L0 リストの変更コマンドを含む UINT 配列へのポインター。
List1RefPicModificationsCount
pList1RefPicModifications 内の項目数を指定する UINT。
pList1RefPicModifications
L1 リストの変更コマンドを含む UINT 配列へのポインター。
QPMapValuesCount
pRateControlQPMap に存在する要素の数を指定する UINT。 これは、フレーム内のコーディング ブロックの数と一致し、フレーム解像度を最も近いアライン値に切り上げる必要があります。
pRateControlQPMap
行/列スキャン順序で、このフレームの各 2 乗領域で使用する QP マップ値を含む Int8 の配列へのポインター。 QP マップ ディメンションは、現在の解像度とD3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITSを使用して計算できます 。QPMapRegionPixelsSize は、2 乗領域のサイズを伝達します。
解説
次の表に、HEVC エンコードに必要な VPS、SPS、PPS 値を示します。
HEVC のLevel_idcマッピング
D3D12 レベル | 予期されるgeneral_level_idc | メモ |
---|---|---|
D3D12_VIDEO_ENCODER_LEVELS_HEVC_1 | 30 | 3 * 列挙型レベル 2 桁のサフィックス (10) に対応します |
D3D12_VIDEO_ENCODER_LEVELS_HEVC_2 | 60 | 3 * 列挙型レベル 2 桁のサフィックス (20) に対応します |
D3D12_VIDEO_ENCODER_LEVELS_HEVC_21 | 63 | 3 * 列挙型レベル 2 桁のサフィックス (21) に対応します |
D3D12_VIDEO_ENCODER_LEVELS_HEVC_3 | 90 | 3 * 列挙型レベル 2 桁のサフィックス (30) に対応します |
D3D12_VIDEO_ENCODER_LEVELS_HEVC_31 | 93 | 3 * 列挙型レベル 2 桁のサフィックス (31) に対応します |
D3D12_VIDEO_ENCODER_LEVELS_HEVC_4 1 | 20 | 3 * 列挙型レベル 2 桁のサフィックス (40) に対応します |
D3D12_VIDEO_ENCODER_LEVELS_HEVC_41 1 | 23 | 3 * 列挙型レベル 2 桁のサフィックス (41) に対応します |
D3D12_VIDEO_ENCODER_LEVELS_HEVC_5 1 | 50 | 3 * 列挙型レベル 2 桁のサフィックス (50) に対応します |
D3D12_VIDEO_ENCODER_LEVELS_HEVC_51 1 | 53 | 3 * 列挙型レベル 2 桁のサフィックス (51) に対応します |
D3D12_VIDEO_ENCODER_LEVELS_HEVC_52 1 | 56 | 3 * 列挙型レベル 2 桁のサフィックス (52) に対応します |
D3D12_VIDEO_ENCODER_LEVELS_HEVC_6 1 | 80 | 3 * 列挙型レベル 2 桁のサフィックス (60) に対応します |
D3D12_VIDEO_ENCODER_LEVELS_HEVC_61 1 | 83 | 3 * 列挙型レベル 2 桁のサフィックス (61) に対応します |
D3D12_VIDEO_ENCODER_LEVELS_HEVC_62 1 | 86 | 3 * 列挙型レベル 2 桁のサフィックス (62) に対応します |
HEVC Video Parameter Set expected values
Syntax 要素 | 予期される既定値 | メモ |
---|---|---|
vps_video_parameter_set_id | ユーザー固有 | なし |
vps_base_layer_internal_flag | 0 | なし |
vps_base_layer_available_flag | 0 | なし |
vps_max_layers_minus1 | 0 | なし |
vps_max_sub_layers_minus1 | 0 | なし |
vps_temporal_id_nesting_flag | 1 | なし |
vps_reserved_ffff_16bits | 0xFFFF | なし |
general_profile_space | 0 | なし |
general_tier_flag | High レベルの場合は 1、メインレベルの場合は 0 | なし |
general_profile_idc | D3D12_VIDEO_ENCODER_PROFILE_HEVC列挙値 + 1 | なし |
general_profile_compatibility_flag[general_profile_space] | 1 | なし |
general_progressive_source_flag | 1 | なし |
general_interlaced_source_flag | 0 | なし |
general_non_packed_constraint_flag | 1 | なし |
general_frame_only_constraint_flag | 1 | なし |
general_reserved_zero_44bits | 44 ビットゼロ | なし |
general_level_idc | 上の表を参照してください | なし |
vps_sub_layer_ordering_info_present_flag | 0 | なし |
vps_max_dec_pic_buffering_minus1[0] | (MaxReferenceFramesInDPB/previous reference frames/ + 1 /additional current frame recon pic/) - ヘッダー/; | なし |
vps_max_num_reorder_pics[0] | B フレームがない場合は 0。 それ以外の場合vps_max_dec_pic_buffering_minus1。 | なし |
vps_max_latency_increase_plus1[0] | 1 | なし |
vps_max_layer_id | 0 | なし |
vps_num_layer_sets_minus1 | 0 | なし |
vps_timing_info_present_flag | 0 | なし |
vps_extension_flag | 0 | なし |
HEVC シーケンス パラメーター 予期される値を設定する
Syntax 要素 | 予期される既定値 | メモ | |
---|---|---|---|
sps_video_parameter_set_id | ユーザー固有 | なし | |
sps_max_sub_layers_minus1 | 関連する VPS と同じ | なし | |
sps_temporal_id_nesting_flag | 関連する VPS と同じ | なし | |
general_profile_space | 0 | なし | |
general_tier_flag | High レベルの場合は 1、メインレベルの場合は 0 | なし | |
general_profile_idc | D3D12_VIDEO_ENCODER_PROFILE_HEVC列挙値 + 1 | なし | |
general_profile_compatibility_flag[general_profile_space] | 1 | なし | |
general_progressive_source_flag | 1 | なし | |
general_interlaced_source_flag | 0 | なし | |
general_non_packed_constraint_flag | 1 | なし | |
general_frame_only_constraint_flag | 1 | なし | |
general_reserved_zero_44bits | 44 ビットゼロ | なし | |
general_level_idc | 上記の表を参照してください | なし | |
chroma_format_idc | 1 | NV12 および P010 の場合は 4.2.0 | |
pic_width_in_luma_samples | std::ceil(sequenceTargetResolution.Width / SubregionBlockPixelsSize)) * SubregionBlockPixelsSize | D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITSに現在のフレーム解像度を使用します。SubregionBlockPixelsSize | |
pic_height_in_luma_samples | std::ceil(sequenceTargetResolution.Height / SubregionBlockPixelsSize)) * SubregionBlockPixelsSize | D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITSに現在のフレーム解像度を使用します。SubregionBlockPixelsSize | |
conformance_window_flag | 解像度が SubregionBlockPixelsSize に揃えられる場合は 0、それ以外の場合は 1 | なし | |
conf_win_left_offset | 0 | conformance_windows_flag = 1 の場合のみ | |
conf_win_right_offset | (sps.pic_width_in_luma_samples - encodeResolution.Width) >> 1 | conformance_windows_flag = 1 の場合のみ | |
conf_win_top_offset | 0 | conformance_windows_flag = 1 の場合のみ | |
conf_win_bottom_offset | (sps.pic_height_in_luma_samples - encodeResolution.Height) >> 1 | conformance_windows_flag = 1 の場合のみ | |
bit_depth_luma_minus8 | NV12 の場合は 0、P010 の場合は 2 | なし | |
bit_depth_luma_minus8 | NV12 の場合は 0、P010 の場合は 2 | なし | |
log2_max_pic_order_cnt_lsb_minus4 | D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_HEVCに基づく | なし | |
sps_sub_layer_ordering_info_present_flag | 関連する VPS と同じ | なし | |
sps_max_dec_pic_buffering_minus1 | 関連する VPS と同じ | なし | |
sps_max_num_reorder_pics | 関連する VPS と同じ | なし | |
sps_max_latency_increase_plus1 | 関連する VPS と同じ | なし | |
log2_min_luma_coding_block_size_minus3 | std::log2(minCuSize) - 3) | たとえば、minCUSize=8 for D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE_8x8 | |
log2_diff_max_min_luma_coding_block_size | std::log2(maxCuSize) - std::log2(minCuSize)) | たとえば、maxCUSize=16 for D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE_16x16 | |
log2_min_transform_block_size_minus2 | std::log2(minTuSize) - 2) | たとえば、minTuSize=4 for D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE_4x4 | |
log2_diff_max_min_transform_block_size | std::log2(maxTuSize) - std::log2(minTuSize)) | たとえば、maxTuSize=16 for D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE_16x16 | |
max_transform_hierarchy_depth_inter | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVCに基づく | なし | |
max_transform_hierarchy_depth_inter | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVCに基づく | なし | |
scaling_list_enabled_flag | 0 | なし | |
amp_enabled_flag | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_USE_ASYMETRIC_MOTION_PARTITIONに基づく | なし | |
sample_adaptive_offset_enabled_flag | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_ENABLE_SAO_FILTERに基づく | なし | |
pcm_enabled_flag | 0 | なし | |
num_short_term_ref_pic_sets | 0 | なし | |
long_term_ref_pics_present_flag | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_ENABLE_LONG_TERM_REFERENCESに基づく | なし | |
num_long_term_ref_pics_sps | 0 | なし | |
sps_temporal_mvp_enabled_flag | 0 | なし | |
strong_intra_smoothing_enabled_flag | 0 | なし | |
vui_parameters_present_flag | 0 | なし | |
sps_extension_flag | 0 | なし |
HEVC Picture Parameter Set expected values
Syntax 要素 | 予期される既定値 | メモ |
---|---|---|
pps_pic_parameter_set_id | ユーザー固有 | なし |
pps_seq_parameter_set_id | ユーザー固有 | なし |
dependent_slice_segments_enabled_flag | 0 | なし |
output_flag_present_flag | 0 | なし |
num_extra_slice_header_bits | 0 | なし |
sign_data_hiding_enabled_flag | 0 | なし |
cabac_init_present_flag | 1 | なし |
num_ref_idx_lx_default_active_minus1[0] | std::max(static_cast<INT>(pictureControl.List0ReferenceFramesCount) - 1, 0)) | なし |
num_ref_idx_lx_default_active_minus1[1] | std::max(static_cast<INT>(pictureControl.List1ReferenceFramesCount) - 1, 0)) | なし |
init_qp_minus26 | 0 | なし |
constrained_intra_pred_flag | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_USE_CONSTRAINED_INTRAPREDICTIONに基づく | なし |
transform_skip_enabled_flag | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_ENABLE_TRANSFORM_SKIPPINGに基づく | なし |
cu_qp_delta_enabled_flag | 1 | なし |
diff_cu_qp_delta_depth | 0 | なし |
pps_cb_qp_offset | 0 | なし |
pps_cr_qp_offset | 0 | なし |
pps_slice_chroma_qp_offsets_present_flag | 1 | なし |
weighted_pred_flag | 0 | API での重み付け予測のサポートなし |
weighted_bipred_flag | 0 | API での重み付け予測のサポートなし |
transquant_bypass_enabled_flag | 0 | なし |
tiles_enabled_flag | 0 | なし |
entropy_coding_sync_enabled_flag | 0 | なし |
pps_loop_filter_across_slices_enabled_flag | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_DISABLE_LOOP_FILTER_ACROSS_SLICESに基づく | なし |
deblocking_filter_control_present_flag | 1 | なし |
deblocking_filter_override_enabled_flag | 0 | なし |
pps_deblocking_filter_disabled_flag | 0 | なし |
pps_beta_offset_div2 | 0 | なし |
pps_tc_offset_div2 | 0 | なし |
pps_scaling_list_data_present_flag | 0 | なし |
lists_modification_present_flag | 1 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC送信すると、変更が一覧表示されます。 それ以外の場合は 0 に設定します。 | なし |
log2_parallel_merge_level_minus2 | 0 | なし |
slice_segment_header_extension_present_flag | 0 | なし |
pps_extension_flag | 0 | なし |
要件
サポートされている最小のクライアント | Windows ビルド 22000 |
サポートされている最小のサーバー | Windows ビルド 22000 |
Header | d3d12video.h |