Поделиться через


структура D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC (d3d12video.h)

Представляет элементы управления на уровне рисунка для связанной команды кодировщика Кодирование кадра для кодирования HEVC.

Синтаксис

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, указывающее флаги конфигурации для закодированного кадра.

FrameType

Значение перечисления D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC, указывающее тип рисунка. Убедитесь, что флаги, относящиеся к кодеку, поддерживают указанный тип. Этот выбор должен храниться в синхронизации с конфигурацией структуры GOP, заданной узлом. Обратите внимание, что GOP определен в порядке отображения, и этот выбор типа изображения должен соответствовать GOP, но в порядке кодирования.

slice_pic_parameter_set_id

UINT указание значения, используемого в заголовках среза текущего кадра для ссылки на PPS.

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

UINT указание количества записей в pReferenceFramesReconPictureDescriptors.

pReferenceFramesReconPictureDescriptors

Указатель на массив UINT UINT, описывающий текущее состояние буфера DPB, сохраненного в D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC. Ссылочные кадры. pList0ReferenceFrames и pList1ReferenceFrames перечисляет сопоставления индексов из прошлых и будущих ссылок в этот массив дескрипторов.

Этот массив дескрипторов, в свою очередь, сопоставляет эталонный рисунок этого кадра с индексом ресурсов в восстановленном массиве рисунков D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC. Ссылочные кадры. Кроме того, для каждого эталонного рисунка он указывает кодирование и номер заказа на отображение, а также указывает, является ли он долгосрочной ссылкой.

Размер этого массива всегда соответствует D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC. ReferenceFrames.NumTextures для связанной команды EncodeFrame.

List0RefPicModificationsCount

UINT, указывающий количество элементов в pList0RefPicModifications.

pList0RefPicModifications

Указатель на массив UINT , содержащий команды изменения для списка L0.

List1RefPicModificationsCount

UINT указание количества элементов в pList1RefPicModifications.

pList1RefPicModifications

Указатель на массив UINT, содержащий команды изменения для списка L1.

QPMapValuesCount

UINT указание количества элементов, присутствующих в pRateControlQPMap. Это должно соответствовать количеству блоков кода в кадре, округляя разрешение кадра до ближайших выровненных значений.

pRateControlQPMap

Указатель на массив Int8, содержащий значения карты QP в каждом квадратном регионе для этого кадра. Измерения карты QP можно вычислить с помощью текущего разрешения и D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS. QPMapRegionPixelsSize передачи размеров квадратной области.

Замечания

В следующих таблицах перечислены ожидаемые значения VPS, SPS и PPS для кодирования HEVC.

сопоставления Level_idc для HEVC

Уровень 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 20 Соответствует 3 * суффикс уровня перечисления 2 цифры (40)
D3D12_VIDEO_ENCODER_LEVELS_HEVC_41 23 Соответствует 3 * суффикс уровня перечисления 2 цифры (41)
D3D12_VIDEO_ENCODER_LEVELS_HEVC_5 50 Соответствует 3 * суффикс уровня перечисления 2 цифры (50)
D3D12_VIDEO_ENCODER_LEVELS_HEVC_51 53 Соответствует 3 * суффикс уровня перечисления 2 цифры (51)
D3D12_VIDEO_ENCODER_LEVELS_HEVC_52 56 Соответствует 3 * суффикс уровня перечисления 2 цифры (52)
D3D12_VIDEO_ENCODER_LEVELS_HEVC_6 80 Соответствует 3 * суффикс уровня перечисления 2 цифры (60)
D3D12_VIDEO_ENCODER_LEVELS_HEVC_61 83 Соответствует 3 * суффикс уровня перечисления 2 цифры (61)
D3D12_VIDEO_ENCODER_LEVELS_HEVC_62 86 Соответствует 3 * суффикс уровня перечисления 2 цифры (62)

Ожидаемые значения набора параметров видео HEVC

Элемент Синтаксиса Ожидаемое значение по умолчанию Примечания
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 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/предыдущие эталонные кадры/ + 1 /дополнительный текущий макет кадра/) - 1/*минус1 для заголовка/; Никакой
vps_max_num_reorder_pics[0] Значение 0, если кадры B отсутствуют. 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

Элемент Синтаксиса Ожидаемое значение по умолчанию Примечания
sps_video_parameter_set_id Конкретный пользователь Никакой
sps_max_sub_layers_minus1 То же, что и в связанных виртуальных машинах Никакой
sps_temporal_id_nesting_flag То же, что и в связанных виртуальных машинах Никакой
general_profile_space 0 Никакой
general_tier_flag 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 4.2.0 для NV12 и P010
pic_width_in_luma_samples std::ceil(sequenceTargetResolution.Width /BlockPixelsSize)) *BlockPixelsSize Используйте текущее разрешение кадров для D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS. BlockPixelsSize
pic_height_in_luma_samples std::ceil(sequenceTargetResolution.Height /BlockPixelsSize)) *BlockPixelsSize Используйте текущее разрешение кадров для D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS. BlockPixelsSize
conformance_window_flag Значение 0, если разрешение выровнено по протоколуBlockPixelsSize, 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 0 для NV12, 2 для P010 Никакой
bit_depth_luma_minus8 0 для NV12, 2 для P010 Никакой
log2_max_pic_order_cnt_lsb_minus4 На основе D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_HEVC Никакой
sps_sub_layer_ordering_info_present_flag То же, что и в связанных виртуальных машинах Никакой
sps_max_dec_pic_buffering_minus1 То же, что и в связанных виртуальных машинах Никакой
sps_max_num_reorder_pics То же, что и в связанных виртуальных машинах Никакой
sps_max_latency_increase_plus1 То же, что и в связанных виртуальных машинах Никакой
log2_min_luma_coding_block_size_minus3 std::log2(minCuSize) - 3) Например, MinCUSize=8 для D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE_8x8
log2_diff_max_min_luma_coding_block_size std::log2(maxCuSize) — std::log2(minCuSize)) Например, MaxCUSize=16 для D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE_16x16
log2_min_transform_block_size_minus2 std::log2(minTuSize) - 2) Например, MinTuSize=4 для D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE_4x4
log2_diff_max_min_transform_block_size std::log2(maxTuSize) — std::log2(minTuSize)) Например, MaxTuSize=16 для 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

Элемент Синтаксиса Ожидаемое значение по умолчанию Примечания
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 Build 22000
минимальный поддерживаемый сервер Windows Build 22000
заголовка d3d12video.h