struktur D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264 (d3d12video.h)
Mewakili elemen kontrol tingkat gambar untuk perintah EncodeFrame terkait untuk pengodean H.264.
Sintaks
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;
Anggota
Flags
Kombinasi nilai OR bit dari enumerasi D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAGS menentukan bendera konfigurasi untuk bingkai yang dikodekan.
FrameType
Nilai dari enumerasi D3D12_VIDEO_ENCODER_FRAME_TYPE_H264 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.
pic_parameter_set_id
UINT yang menentukan nilai yang akan digunakan di header ilis bingkai saat ini untuk mereferensikan PPS.
idr_pic_id
Ketika FrameType** D3D12_VIDEO_ENCODER_FRAME_TYPE_H264_IDR_FRAME, UINT yang menunjukkan pengidentifikasi bingkai IDR yang akan digunakan di semua header irisan yang ada dalam bingkai.
PictureOrderCountNumber
UINT yang menentukan urutan tampilan bingkai saat ini.
FrameDecodingOrderNumber
UINT yang menentukan urutan dekode bingkai dengan semantik seperti yang ditunjukkan oleh header ipotong frame_num elemen sintaks yang bertambah setelah setiap gambar referensi.
TemporalLayerIndex
UINT yang menentukan nomor lapisan gambar dalam hierarki temporal. Periksa jumlah maksimum lapisan dalam D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264.
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_H264.
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_H264.
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.
adaptive_ref_pic_marking_mode_flag
UCHAR yang mendefinisikan mode semantik untuk penanganan referensi bingkai.
nilai adaptive_ref_pic_marking_mode_flag | Mode penandaan gambar referensi ditentukan |
---|---|
0 | 1 |
Mode penandaan gambar referensi jendela geser: Mode penandaan yang menyediakan mekanisme first-in first-out untuk gambar referensi jangka pendek. | Mode penandaan gambar referensi adaptif: Mode penandaan gambar referensi yang menyediakan elemen sintaks untuk menentukan penandaan gambar referensi sebagai "tidak digunakan untuk referensi" dan untuk menetapkan indeks bingkai jangka panjang. |
RefPicMarkingOperationsCommandsCount
UINT yang menentukan jumlah operasi penandaan gambar referensi yang terkait dengan bingkai saat ini. Mengharuskan adaptive_ref_pic_marking_mode_flag diatur ke 1.
pRefPicMarkingOperationsCommands
Penunjuk ke array struktur D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_MARKING_OPERATION yang mewakili daftar gambar referensi yang menandai operasi yang terkait dengan bingkai saat ini. Operasi yang dijelaskan oleh daftar ini perlu tercermin dalam deskriptor DPB yang sesuai selama sesi pengodean.
List0RefPicModificationsCount
UINT yang menentukan jumlah item di pList0RefPicModifications.
pList0RefPicModifications
Penunjuk ke array struktur D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_LIST_MODIFICATION_OPERATION yang mewakili daftar operasi modifikasi daftar gambar referensi untuk daftar pList0ReferenceFrames .
List1RefPicModificationsCount
UINT yang menentukan jumlah item dalam pList1RefPicModifications.
pList1RefPicModifications
Penunjuk ke array struktur D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_LIST_MODIFICATION_OPERATION yang mewakili daftar operasi modifikasi daftar gambar referensi untuk daftar pList1ReferenceFrames .
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
Perhatikan bahwa jika bingkai saat ini ditandai sebagai gambar referensi, output harus berisi gambar yang direkonstruksi bersama dengan bitstream bagi host untuk menempatkannya di perintah mendatang dalam daftar referensi gambar yang direkonstruksi. Perhatikan bahwa mungkin ada batasan untuk beberapa jenis bingkai yang akan ditandai sebagai referensi, periksa dukungan fitur sebelum mengatur nilai tersebut.
Tabel berikut mencantumkan Nilai SPS dan PPS yang diharapkan untuk pengodean H264.
pemetaan Level_idc untuk H264
Tingkat D3D12 | level_idc yang diharapkan | Catatan |
---|---|---|
D3D12_VIDEO_ENCODER_LEVELS_H264_1 | 10 | Tidak ada |
D3D12_VIDEO_ENCODER_LEVELS_H264_1b | 11 | SPS.constraint_set3 harus 1 |
D3D12_VIDEO_ENCODER_LEVELS_H264_11 | 11 | Tidak ada |
D3D12_VIDEO_ENCODER_LEVELS_H264_12 | 12 | Tidak ada |
D3D12_VIDEO_ENCODER_LEVELS_H264_13 | 13 | Tidak ada |
D3D12_VIDEO_ENCODER_LEVELS_H264_2 | 20 | Tidak ada |
D3D12_VIDEO_ENCODER_LEVELS_H264_21 | 21 | Tidak ada |
D3D12_VIDEO_ENCODER_LEVELS_H264_22 | 22 | Tidak ada |
D3D12_VIDEO_ENCODER_LEVELS_H264_3 | 30 | Tidak ada |
D3D12_VIDEO_ENCODER_LEVELS_H264_31 | 31 | Tidak ada |
D3D12_VIDEO_ENCODER_LEVELS_H264_32 | 32 | Tidak ada |
D3D12_VIDEO_ENCODER_LEVELS_H264_4 | 40 | Tidak ada |
D3D12_VIDEO_ENCODER_LEVELS_H264_41 | 41 | Tidak ada |
D3D12_VIDEO_ENCODER_LEVELS_H264_42 | 42 | Tidak ada |
D3D12_VIDEO_ENCODER_LEVELS_H264_5 | 50 | Tidak ada |
D3D12_VIDEO_ENCODER_LEVELS_H264_51 | 51 | Tidak ada |
D3D12_VIDEO_ENCODER_LEVELS_H264_52 | 52 | Tidak ada |
D3D12_VIDEO_ENCODER_LEVELS_H264_6 | 60 | Tidak ada |
D3D12_VIDEO_ENCODER_LEVELS_H264_61 | 61 | Tidak ada |
D3D12_VIDEO_ENCODER_LEVELS_H264_62 | 62 | Tidak ada |
Parameter Urutan H264 Mengatur nilai yang diharapkan
Elemen Sintaks | Nilai default yang diharapkan | Catatan |
---|---|---|
profile_idc | Nilai enum H264_PROFILE_MAIN/H264_PROFILE_HIGH/H264_PROFILE_HIGH10 | Tidak ada |
constraint_set0_flag | 0 | Tidak ada |
constraint_set1_flag | 0 | Tidak ada |
constraint_set2_flag | 0 | Tidak ada |
constraint_set3_flag | 0 | 1 jika menggunakan D3D12_VIDEO_ENCODER_LEVELS_H264_1b |
constraint_set4_flag | 0 | Tidak ada |
constraint_set5_flag | 0 | Tidak ada |
reserved_zero_2bits | 0 | Tidak ada |
level_idc | Silakan lihat tabel di atas untuk tingkat H264 | Tidak ada |
seq_parameter_set_id | Spesifik pengguna | Tidak ada |
chroma_format_idc | 1 | Untuk penggunaan dengan format P010 atau NV12 YUV 4.2.0 saja |
bit_depth_luma_minus8 | 0 untuk NV12, 2 untuk P010 | Tidak ada |
qpprime_y_zero_transform_bypass_flag | 0 | Tidak ada |
seq_scaling_matrix_present_flag | 0 | Tidak ada |
log2_max_frame_num_minus4 | Sama seperti di D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_H264 | Tidak ada |
pic_order_cnt_type | Sama seperti di D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_H264 | Hanya mode 0 dan 2 yang didukung di API ini |
log2_max_pic_order_cnt_lsb_minus4 | Sama seperti di D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_H264 | Hanya jika pic_order_cnt_type == 0 |
max_num_ref_frames | Jumlah maksimum gambar referensi yang digunakan dalam sesi enkode | Tidak ada |
gaps_in_frame_num_value_allowed_flag | 0 | Tidak ada |
pic_width_in_mbs_minus1 | std::ceil(sequenceTargetResolution.Width / 16.0)) - 1; | Tidak ada |
pic_height_in_map_units_minus1 | std::ceil(sequenceTargetResolution.Height / 16.0)) - 1; | Tidak ada |
frame_mbs_only_flag | 0 | Tidak ada dukungan interlace |
direct_8x8_inference_flag | Berdasarkan D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_USE_ADAPTIVE_8x8_TRANSFORM | Tidak ada |
frame_cropping_flag | 0 atau 1 tergantung pada resolusi enkode yang diratakan 16 atau tidak | Tidak ada |
frame_cropping_rect_left_offset | 0 | Hanya jika frame_cropping_flag = 1 |
frame_cropping_rect_right_offset | ((pic_width_in_mbs_minus1+1) * 16 - sequenceTargetResolution.Width) / 2 | Hanya jika frame_cropping_flag = 1 |
frame_cropping_rect_top_offset | ((pic_height_in_map_units_minus1+1) * 16 - sequenceTargetResolution.Height) / 2 | Hanya jika frame_cropping_flag = 1 |
frame_cropping_rect_bottom_offset | 0 | Hanya jika frame_cropping_flag = 1 |
vui_paramenters_present_flag | 0 | Tidak ada |
Parameter Gambar H264 Mengatur nilai yang diharapkan
Elemen sintaks | Nilai default yang diharapkan | Catatan |
---|---|---|
pic_parameter_set_id | Spesifik pengguna | Tidak ada |
seq_parameter_set_id | Spesifik pengguna | Tidak ada |
entropy_coding_mode_flag | Berdasarkan D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_ENABLE_CABAC_ENCODING | Tidak ada |
pic_order_present_flag | 0 | Hanya dukungan untuk pic_cnt_type = 0, 2 |
num_slice_groups_minus1 | 0 | Tidak ada |
num_ref_idx_l1_active_minus1 | std::max(static_cast<INT>(pictureControl.List0ReferenceFramesCount) - 1, 0) | Tidak ada |
num_ref_idx_l0_active_minus1 | std::max(static_cast<INT>(pictureControl.List1ReferenceFramesCount) - 1, 0) | Tidak ada |
weighted_pred_flag | 0 | Tidak ada |
weighted_bipred_idc | 0 | Tidak ada |
pic_init_qp_minus26 | 0 | Tidak ada |
pic_init_qs_minus26 | 0 | Tidak ada |
chroma_qp_index_offset | 0 | Tidak ada |
deblocking_filter_control_present_flag | 1 | Tidak ada |
constrained_intra_pred_flag | Berdasarkan D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_USE_CONSTRAINED_INTRAPREDICTION | Tidak ada |
redundant_pic_cnt_present_flag | 0 | Tidak ada |
transform_8x8_mode_flag | Berdasarkan D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_USE_ADAPTIVE_8x8_TRANSFORM | Hanya jika menggunakan profil Tinggi |
pic_scaling_matrix_present_flag | 0 | Tidak ada |
second_chroma_qp_index_offset | 0 | Tidak ada |
Persyaratan
Klien minimum yang didukung | Windows Build 22000 |
Server minimum yang didukung | Windows Build 22000 |
Header | d3d12video.h |