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 |