Bagikan melalui


struktur D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC (d3d12video.h)

Mewakili elemen kontrol tingkat gambar untuk perintah EncodeFrame terkait untuk pengodean HEVC.

Sintaks

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;

Anggota

Flags

Kombinasi nilai OR bit dari enumerasi D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS menentukan bendera konfigurasi untuk bingkai yang dikodekan.

FrameType

Nilai dari enumerasi D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC yang menentukan jenis gambar. Pastikan bahwa bendera khusus codec mendukung jenis yang ditentukan. Pilihan ini harus tetap sinkron dengan konfigurasi struktur GOP yang ditetapkan oleh host. Perhatikan bahwa GOP didefinisikan dalam urutan tampilan dan pilihan jenis pic ini harus mengikuti GOP, tetapi dalam urutan pengodean.

slice_pic_parameter_set_id

UINT yang menentukan nilai yang akan digunakan di header ilis bingkai saat ini untuk mereferensikan PPS.

PictureOrderCountNumber

UINT yang menentukan urutan tampilan bingkai saat ini.

TemporalLayerIndex

UINT yang menentukan nomor lapisan gambar dalam hierarki temporal. Periksa jumlah maksimum lapisan dalam D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC.

List0ReferenceFramesCount

UINT yang menentukan jumlah referensi bingkai sebelumnya yang akan digunakan untuk bingkai ini. Nilai ini harus koheren dengan apa yang diekspos dalam D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC.

pList0ReferenceFrames

Penunjuk ke array UINT yang menentukan daftar bingkai referensi bingkai sebelumnya yang akan digunakan untuk bingkai ini. Setiap nilai bilangan bulat dalam indeks array ini menjadi pReferenceFramesReconPictureDescriptors untuk mereferensikan gambar yang disimpan di DPB.

List1ReferenceFramesCount

UINT yang menentukan jumlah referensi bingkai di masa mendatang yang akan digunakan untuk bingkai ini. Nilai ini harus koheren dengan apa yang diekspos dalam D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC.

pList1ReferenceFrames

Penunjuk ke array UINT yang menentukan daftar bingkai referensi bingkai di masa mendatang yang akan digunakan untuk bingkai ini. Setiap nilai bilangan bulat dalam indeks array ini menjadi pReferenceFramesReconPictureDescriptors untuk mereferensikan gambar yang disimpan di DPB.

ReferenceFramesReconPictureDescriptorsCount

UINT yang menentukan jumlah entri dalam pReferenceFramesReconPictureDescriptors.

pReferenceFramesReconPictureDescriptors

Penunjuk ke array UINT yang menjelaskan status buffer DPB saat ini yang disimpan di D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC. ReferenceFrame. pList0ReferenceFrames dan pList1ReferenceFrames mencantumkan peta indeks dari referensi masa lalu/masa depan ke dalam array deskriptor ini.

Array deskriptor ini, pada gilirannya, memetakan gambar referensi untuk bingkai ini ke dalam indeks sumber daya dalam array gambar yang direkonstruksi D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC. ReferenceFrame. Selain itu, untuk setiap gambar referensi, ini menunjukkan enkode dan menampilkan nomor pesanan dan apakah itu referensi jangka panjang.

Ukuran array ini selalu cocok dengan D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC. ReferenceFrames.NumTextures untuk perintah EncodeFrame terkait.

List0RefPicModificationsCount

UINT yang menentukan jumlah item di pList0RefPicModifications.

pList0RefPicModifications

Penunjuk ke array UINT yang berisi perintah modifikasi untuk daftar L0.

List1RefPicModificationsCount

UINT yang menentukan jumlah item dalam pList1RefPicModifications.

pList1RefPicModifications

Penunjuk ke array UINT yang berisi perintah modifikasi untuk daftar L1.

QPMapValuesCount

UINT yang menentukan jumlah elemen yang ada di pRateControlQPMap. Ini harus cocok dengan jumlah blok pengkodean dalam bingkai, membulatkan resolusi bingkai ke nilai yang paling selaras.

pRateControlQPMap

Penunjuk ke array Int8 yang berisi, dalam urutan pemindaian baris/kolom, nilai peta QP yang akan digunakan pada setiap wilayah kuadrat untuk bingkai ini. Dimensi peta QP dapat dihitung menggunakan resolusi saat ini dan D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS. QPMapRegionPixelsSize menyampaikan ukuran wilayah kuadrat.

Keterangan

Tabel berikut mencantumkan Nilai VPS, SPS, dan PPS yang diharapkan untuk pengodean HEVC.

pemetaan Level_idc untuk HEVC

Tingkat D3D12 general_level_idc yang diharapkan Catatan
D3D12_VIDEO_ENCODER_LEVELS_HEVC_1 30 Sesuai dengan akhiran 3 * tingkat enum 2 digit (10)
D3D12_VIDEO_ENCODER_LEVELS_HEVC_2 60 Sesuai dengan akhiran 3 * tingkat enum 2 digit (20)
D3D12_VIDEO_ENCODER_LEVELS_HEVC_21 63 Sesuai dengan akhiran 3 * tingkat enum 2 digit (21)
D3D12_VIDEO_ENCODER_LEVELS_HEVC_3 90 Sesuai dengan akhiran 3 * tingkat enum 2 digit (30)
D3D12_VIDEO_ENCODER_LEVELS_HEVC_31 93 Sesuai dengan akhiran 3 * tingkat enum 2 digit (31)
D3D12_VIDEO_ENCODER_LEVELS_HEVC_4 1 20 Sesuai dengan akhiran 3 * tingkat enum 2 digit (40)
D3D12_VIDEO_ENCODER_LEVELS_HEVC_41 1 23 Sesuai dengan akhiran 3 * tingkat enum 2 digit (41)
D3D12_VIDEO_ENCODER_LEVELS_HEVC_5 1 50 Sesuai dengan akhiran 3 * tingkat enum 2 digit (50)
D3D12_VIDEO_ENCODER_LEVELS_HEVC_51 1 53 Sesuai dengan akhiran 3 * tingkat enum 2 digit (51)
D3D12_VIDEO_ENCODER_LEVELS_HEVC_52 1 56 Sesuai dengan akhiran 3 * tingkat enum 2 digit (52)
D3D12_VIDEO_ENCODER_LEVELS_HEVC_6 1 80 Sesuai dengan akhiran 3 * tingkat enum 2 digit (60)
D3D12_VIDEO_ENCODER_LEVELS_HEVC_61 1 83 Sesuai dengan akhiran 3 * tingkat enum 2 digit (61)
D3D12_VIDEO_ENCODER_LEVELS_HEVC_62 1 86 Sesuai dengan akhiran 3 * tingkat enum 2 digit (62)

Parameter Video HEVC Mengatur nilai yang diharapkan

Elemen Sintaks Nilai default yang diharapkan Catatan
vps_video_parameter_set_id Spesifik pengguna Tidak ada
vps_base_layer_internal_flag 0 Tidak ada
vps_base_layer_available_flag 0 Tidak ada
vps_max_layers_minus1 0 Tidak ada
vps_max_sub_layers_minus1 0 Tidak ada
vps_temporal_id_nesting_flag 1 Tidak ada
vps_reserved_ffff_16bits 0xFFFF Tidak ada
general_profile_space 0 Tidak ada
general_tier_flag 1 untuk Tingkat tinggi, 0 untuk tingkat Utama Tidak ada
general_profile_idc nilai enum D3D12_VIDEO_ENCODER_PROFILE_HEVC + 1 Tidak ada
general_profile_compatibility_flag[general_profile_space] 1 Tidak ada
general_progressive_source_flag 1 Tidak ada
general_interlaced_source_flag 0 Tidak ada
general_non_packed_constraint_flag 1 Tidak ada
general_frame_only_constraint_flag 1 Tidak ada
general_reserved_zero_44bits 44 bit nol Tidak ada
general_level_idc Silakan lihat tabel di atas Tidak ada
vps_sub_layer_ordering_info_present_flag 0 Tidak ada
vps_max_dec_pic_buffering_minus1[0] (MaxReferenceFramesInDPB/frame referensi sebelumnya/ + 1 /additional current frame recon pic/) - 1/*minus1 untuk header/; Tidak ada
vps_max_num_reorder_pics[0] 0 jika tidak ada bingkai B. vps_max_dec_pic_buffering_minus1 sebaliknya. Tidak ada
vps_max_latency_increase_plus1[0] 1 Tidak ada
vps_max_layer_id 0 Tidak ada
vps_num_layer_sets_minus1 0 Tidak ada
vps_timing_info_present_flag 0 Tidak ada
vps_extension_flag 0 Tidak ada

Parameter Urutan HEVC Mengatur nilai yang diharapkan

Elemen Sintaks Nilai default yang diharapkan Catatan
sps_video_parameter_set_id Spesifik pengguna Tidak ada
sps_max_sub_layers_minus1 Sama seperti di VPS terkait Tidak ada
sps_temporal_id_nesting_flag Sama seperti di VPS terkait Tidak ada
general_profile_space 0 Tidak ada
general_tier_flag 1 untuk Tingkat tinggi, 0 untuk tingkat Utama Tidak ada
general_profile_idc nilai enum D3D12_VIDEO_ENCODER_PROFILE_HEVC + 1 Tidak ada
general_profile_compatibility_flag[general_profile_space] 1 Tidak ada
general_progressive_source_flag 1 Tidak ada
general_interlaced_source_flag 0 Tidak ada
general_non_packed_constraint_flag 1 Tidak ada
general_frame_only_constraint_flag 1 Tidak ada
general_reserved_zero_44bits 44 bit nol Tidak ada
general_level_idc Silakan lihat tabel di atas Tidak ada
chroma_format_idc 1 4.2.0 untuk NV12 dan P010
pic_width_in_luma_samples std::ceil(sequenceTargetResolution.Width / SubregionBlockPixelsSize)) * SubregionBlockPixelsSize Gunakan resolusi bingkai saat ini untuk D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS. SubregionBlockPixelsSize
pic_height_in_luma_samples std::ceil(sequenceTargetResolution.Height / SubregionBlockPixelsSize)) * SubregionBlockPixelsSize Gunakan resolusi bingkai saat ini untuk D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS. SubregionBlockPixelsSize
conformance_window_flag 0 jika resolusi diselaraskan dengan SubregionBlockPixelsSize, 1 jika tidak Tidak ada
conf_win_left_offset 0 Hanya jika conformance_windows_flag = 1
conf_win_right_offset (sps.pic_width_in_luma_samples - encodeResolution.Width) >> 1 Hanya jika conformance_windows_flag = 1
conf_win_top_offset 0 Hanya jika conformance_windows_flag = 1
conf_win_bottom_offset (sps.pic_height_in_luma_samples - encodeResolution.Height) >> 1 Hanya jika conformance_windows_flag = 1
bit_depth_luma_minus8 0 untuk NV12, 2 untuk P010 Tidak ada
bit_depth_luma_minus8 0 untuk NV12, 2 untuk P010 Tidak ada
log2_max_pic_order_cnt_lsb_minus4 Berdasarkan D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_HEVC Tidak ada
sps_sub_layer_ordering_info_present_flag Sama seperti di VPS terkait Tidak ada
sps_max_dec_pic_buffering_minus1 Sama seperti di VPS terkait Tidak ada
sps_max_num_reorder_pics Sama seperti di VPS terkait Tidak ada
sps_max_latency_increase_plus1 Sama seperti di VPS terkait Tidak ada
log2_min_luma_coding_block_size_minus3 std::log2(minCuSize) - 3) Misalnya MinCUSize=8 untuk D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE_8x8
log2_diff_max_min_luma_coding_block_size std::log2(maxCuSize) - std::log2(minCuSize)) Misalnya MaxCUSize=16 untuk D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE_16x16
log2_min_transform_block_size_minus2 std::log2(minTuSize) - 2) Misalnya MinTuSize=4 untuk D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE_4x4
log2_diff_max_min_transform_block_size std::log2(maxTuSize) - std::log2(minTuSize)) Misalnya MaxTuSize=16 untuk D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE_16x16
max_transform_hierarchy_depth_inter Berdasarkan D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC Tidak ada
max_transform_hierarchy_depth_inter Berdasarkan D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC Tidak ada
scaling_list_enabled_flag 0 Tidak ada
amp_enabled_flag Berdasarkan D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_USE_ASYMETRIC_MOTION_PARTITION Tidak ada
sample_adaptive_offset_enabled_flag Berdasarkan D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_ENABLE_SAO_FILTER Tidak ada
pcm_enabled_flag 0 Tidak ada
num_short_term_ref_pic_sets 0 Tidak ada
long_term_ref_pics_present_flag Berdasarkan D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_ENABLE_LONG_TERM_REFERENCES Tidak ada
num_long_term_ref_pics_sps 0 Tidak ada
sps_temporal_mvp_enabled_flag 0 Tidak ada
strong_intra_smoothing_enabled_flag 0 Tidak ada
vui_parameters_present_flag 0 Tidak ada
sps_extension_flag 0 Tidak ada

Parameter Gambar HEVC Mengatur nilai yang diharapkan

Elemen Sintaks Nilai default yang diharapkan Catatan
pps_pic_parameter_set_id Spesifik pengguna Tidak ada
pps_seq_parameter_set_id Spesifik pengguna Tidak ada
dependent_slice_segments_enabled_flag 0 Tidak ada
output_flag_present_flag 0 Tidak ada
num_extra_slice_header_bits 0 Tidak ada
sign_data_hiding_enabled_flag 0 Tidak ada
cabac_init_present_flag 1 Tidak ada
num_ref_idx_lx_default_active_minus1[0] std::max(static_cast<INT>(pictureControl.List0ReferenceFramesCount) - 1, 0)) Tidak ada
num_ref_idx_lx_default_active_minus1[1] std::max(static_cast<INT>(pictureControl.List1ReferenceFramesCount) - 1, 0)) Tidak ada
init_qp_minus26 0 Tidak ada
constrained_intra_pred_flag Berdasarkan D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_USE_CONSTRAINED_INTRAPREDICTION Tidak ada
transform_skip_enabled_flag Berdasarkan D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_ENABLE_TRANSFORM_SKIPPING Tidak ada
cu_qp_delta_enabled_flag 1 Tidak ada
diff_cu_qp_delta_depth 0 Tidak ada
pps_cb_qp_offset 0 Tidak ada
pps_cr_qp_offset 0 Tidak ada
pps_slice_chroma_qp_offsets_present_flag 1 Tidak ada
weighted_pred_flag 0 Tidak ada dukungan untuk prediksi tertimbang dalam API
weighted_bipred_flag 0 Tidak ada dukungan untuk prediksi tertimbang dalam API
transquant_bypass_enabled_flag 0 Tidak ada
tiles_enabled_flag 0 Tidak ada
entropy_coding_sync_enabled_flag 0 Tidak ada
pps_loop_filter_across_slices_enabled_flag Berdasarkan D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_DISABLE_LOOP_FILTER_ACROSS_SLICES Tidak ada
deblocking_filter_control_present_flag 1 Tidak ada
deblocking_filter_override_enabled_flag 0 Tidak ada
pps_deblocking_filter_disabled_flag 0 Tidak ada
pps_beta_offset_div2 0 Tidak ada
pps_tc_offset_div2 0 Tidak ada
pps_scaling_list_data_present_flag 0 Tidak ada
lists_modification_present_flag 1 jika mengirim D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC mencantumkan modifikasi. Jika tidak, tetapkan sebagai 0. Tidak ada
log2_parallel_merge_level_minus2 0 Tidak ada
slice_segment_header_extension_present_flag 0 Tidak ada
pps_extension_flag 0 Tidak ada

Persyaratan

   
Klien minimum yang didukung Windows Build 22000
Server minimum yang didukung Windows Build 22000
Header d3d12video.h