次の方法で共有


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

テンポラル階層の画像レイヤー番号を指定する UINTD3D12_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 配列へのポインター 。ReferenceFramespList0ReferenceFramespList1ReferenceFrames には、過去/将来の参照からこの記述子配列へのマップインデックスが一覧表示されます。

この記述子の配列は、次に、このフレームの参照画像を再構築されたピクチャ配列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