Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Представляет элементы управления уровня рисунка для связанной команды EncodeFrame для кодировки H.264.
Синтаксис
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;
Members
Flags
Побитовое сочетание ЗНАЧЕНИй из перечисления D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAGS , указывающее флаги конфигурации для закодированного кадра.
FrameType
Значение перечисления D3D12_VIDEO_ENCODER_FRAME_TYPE_H264 , указывающее тип рисунка. Убедитесь, что флаги, относящиеся к кодеку, поддерживают указанный тип. Этот выбор должен храниться в синхронизации с конфигурацией структуры GOP, заданной узлом. Обратите внимание, что GOP определен в порядке отображения, и этот выбор типа изображения должен соответствовать GOP, но в порядке кодирования.
pic_parameter_set_id
UINT, указывающий значение, используемое в заголовках среза текущего кадра для ссылки на PPS.
idr_pic_id
Если FrameTypeD3D12_VIDEO_ENCODER_FRAME_TYPE_H264_IDR_FRAME, UINT , указывающий идентификатор кадра IDR, который будет использоваться во всех заголовках среза, присутствующих в кадре.
PictureOrderCountNumber
UINT, указывающий текущий порядок отображения кадров.
FrameDecodingOrderNumber
UINT, указывающий порядок декодирования кадра с семантикой, как указано заголовком среза frame_num элемент синтаксиса, который увеличивается после каждого эталонного рисунка.
TemporalLayerIndex
UINT, указывающий номер слоя рисунка в темпоральной иерархии. Проверьте максимальное количество слоев в D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264.
List0ReferenceFramesCount
UINT, указывающий количество прошлых ссылок на кадр, которые будут использоваться для этого кадра. Это значение должно быть согласовано с тем, что было предоставлено в D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264.
pList0ReferenceFrames
Указатель на массив UINT , указывающий список прошлых ссылочных кадров, используемых для этого кадра. Каждое целочисленное значение в этих индексах массива в pReferenceFramesReconPictureDescriptors для ссылки на изображения, хранящиеся в DPB.
List1ReferenceFramesCount
UINT, указывающий количество будущих ссылок на кадр, которые будут использоваться для этого кадра. Это значение должно быть согласовано с тем, что было предоставлено в D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264.
pList1ReferenceFrames
Указатель на массив UINT , указывающий список будущих ссылочных кадров для этого кадра. Каждое целочисленное значение в этих индексах массива в pReferenceFramesReconPictureDescriptors для ссылки на изображения, хранящиеся в DPB.
ReferenceFramesReconPictureDescriptorsCount
UINT, указывающий количество записей в pReferenceFramesReconPictureDescriptors.
pReferenceFramesReconPictureDescriptors
Указатель на массив 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 .
adaptive_ref_pic_marking_mode_flag
UCHAR, определяющий семантический режим обработки ссылок фрейма.
| значение adaptive_ref_pic_marking_mode_flag | Указанный режим маркировки рисунков на эталонном рисунке |
|---|---|
| 0 | 1 |
| Режим маркировки с помощью скользящего окна: режим маркировки, предоставляющий механизм первого выхода для краткосрочных эталонных рисунков. | Режим маркировки адаптивных эталонных рисунков: режим маркировки эталонного рисунка, предоставляющий элементы синтаксиса, чтобы указать маркировку эталонных рисунков как "неиспользуемые для ссылки" и назначать долгосрочные индексы кадров. |
RefPicMarkingOperationsCommandsCount
UINT, указывающий количество операций маркировки ссылочных рисунков, связанных с текущим кадром. Требуется, чтобы для adaptive_ref_pic_marking_mode_flag задано значение 1.
pRefPicMarkingOperationsCommands
Указатель на массив D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_MARKING_OPERATION структур, представляющих список ссылочных рисунков маркировки операций, связанных с текущим кадром. Операции, описанные в этом списке, должны отражаться в дескрипторах DPB соответствующим образом во время сеанса кодирования.
List0RefPicModificationsCount
UINT, указывающий количество элементов в pList0RefPicModifications.
pList0RefPicModifications
Указатель на массив структур D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_LIST_MODIFICATION_OPERATION , представляющих список операций изменения списка ссылочных рисунков для списка pList0ReferenceFrames .
List1RefPicModificationsCount
UINT, указывающий количество элементов в pList1RefPicModifications.
pList1RefPicModifications
Указатель на массив D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_LIST_MODIFICATION_OPERATION структур, представляющих список операций изменения списка ссылочных рисунков для списка pList1ReferenceFrames .
QPMapValuesCount
UINT, указывающий количество элементов, присутствующих в pRateControlQPMap. Это должно соответствовать количеству блоков кода в кадре, округляя разрешение кадра до ближайших выровненных значений.
pRateControlQPMap
Указатель на массив Int8 , содержащий в порядке сканирования строк или столбцов, значения карты QP для каждого квадратного региона для этого кадра. Измерения карты QP можно вычислить с помощью текущего разрешения и D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS. QPMapRegionPixelsSize , передавая размеры квадратной области.
Замечания
Обратите внимание, что если текущий кадр помечается как эталонный рисунок, выходные данные должны содержать восстановленный рисунок вместе с бит-потоком для размещения его в будущих командах в восстановленном списке ссылок на рисунки. Обратите внимание, что некоторые типы кадров могут быть помечены как ссылки, перед установкой этих значений проверьте поддержку функций.
В следующих таблицах перечислены ожидаемые значения SPS и PPS для кодирования H264.
сопоставления Level_idc для H264
| Уровень D3D12 | Ожидаемые level_idc | Примечания. |
|---|---|---|
| D3D12_VIDEO_ENCODER_LEVELS_H264_1 | 10 | None |
| D3D12_VIDEO_ENCODER_LEVELS_H264_1b | 11 | SPS.constraint_set3 должно быть 1 |
| D3D12_VIDEO_ENCODER_LEVELS_H264_11 | 11 | None |
| D3D12_VIDEO_ENCODER_LEVELS_H264_12 | 12 | None |
| D3D12_VIDEO_ENCODER_LEVELS_H264_13 | 13 | None |
| D3D12_VIDEO_ENCODER_LEVELS_H264_2 | 20 | None |
| D3D12_VIDEO_ENCODER_LEVELS_H264_21 | двадцать один | None |
| D3D12_VIDEO_ENCODER_LEVELS_H264_22 | двадцать два | None |
| D3D12_VIDEO_ENCODER_LEVELS_H264_3 | 30 | None |
| D3D12_VIDEO_ENCODER_LEVELS_H264_31 | 31 | None |
| D3D12_VIDEO_ENCODER_LEVELS_H264_32 | 32 | None |
| D3D12_VIDEO_ENCODER_LEVELS_H264_4 | 40 | None |
| D3D12_VIDEO_ENCODER_LEVELS_H264_41 | 41 | None |
| D3D12_VIDEO_ENCODER_LEVELS_H264_42 | 42 | None |
| D3D12_VIDEO_ENCODER_LEVELS_H264_5 | 50 | None |
| D3D12_VIDEO_ENCODER_LEVELS_H264_51 | 51 | None |
| D3D12_VIDEO_ENCODER_LEVELS_H264_52 | 52 | None |
| D3D12_VIDEO_ENCODER_LEVELS_H264_6 | 60 | None |
| D3D12_VIDEO_ENCODER_LEVELS_H264_61 | 61 | None |
| D3D12_VIDEO_ENCODER_LEVELS_H264_62 | 62 | None |
Ожидаемые значения параметров последовательности H264
| Элемент Синтаксиса | Ожидаемое значение по умолчанию | Примечания. |
|---|---|---|
| profile_idc | Перечисление значения H264_PROFILE_MAIN/H264_PROFILE_HIGH/H264_PROFILE_HIGH10 | None |
| constraint_set0_flag | 0 | None |
| constraint_set1_flag | 0 | None |
| constraint_set2_flag | 0 | None |
| constraint_set3_flag | 0 | 1 при использовании D3D12_VIDEO_ENCODER_LEVELS_H264_1b |
| constraint_set4_flag | 0 | None |
| constraint_set5_flag | 0 | None |
| reserved_zero_2bits | 0 | None |
| level_idc | См. таблицу выше для уровней H264 | None |
| seq_parameter_set_id | Конкретный пользователь | None |
| chroma_format_idc | 1 | Для использования только с форматами P010 или NV12 YUV 4.2.0 |
| bit_depth_luma_minus8 | 0 для NV12, 2 для P010 | None |
| qpprime_y_zero_transform_bypass_flag | 0 | None |
| seq_scaling_matrix_present_flag | 0 | None |
| log2_max_frame_num_minus4 | То же, что и в D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_H264 | None |
| pic_order_cnt_type | То же, что и в D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_H264 | Только режимы 0 и 2, поддерживаемые в этом API |
| log2_max_pic_order_cnt_lsb_minus4 | То же, что и в D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_H264 | Только если pic_order_cnt_type == 0 |
| max_num_ref_frames | Максимальное количество ссылочных рисунков, используемых в сеансе кодирования | None |
| gaps_in_frame_num_value_allowed_flag | 0 | None |
| pic_width_in_mbs_minus1 | std::ceil(sequenceTargetResolution.Width / 16.0)) - 1; | None |
| pic_height_in_map_units_minus1 | std::ceil(sequenceTargetResolution.Height / 16.0)) - 1; | None |
| frame_mbs_only_flag | 0 | Нет поддержки переплета |
| direct_8x8_inference_flag | На основе D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_USE_ADAPTIVE_8x8_TRANSFORM | None |
| frame_cropping_flag | 0 или 1 в зависимости от разрешения кодирования с выравниванием 16 или нет | None |
| frame_cropping_rect_left_offset | 0 | Только если frame_cropping_flag = 1 |
| frame_cropping_rect_right_offset | ((pic_width_in_mbs_minus1+1) * 16 - sequenceTargetResolution.Width) / 2 | Только если frame_cropping_flag = 1 |
| frame_cropping_rect_top_offset | ((pic_height_in_map_units_minus1+1) * 16 - sequenceTargetResolution.Height) / 2 | Только если frame_cropping_flag = 1 |
| frame_cropping_rect_bottom_offset | 0 | Только если frame_cropping_flag = 1 |
| vui_paramenters_present_flag | 0 | None |
Ожидаемые значения параметра рисунка H264
| Элемент Синтаксиса | Ожидаемое значение по умолчанию | Примечания. |
|---|---|---|
| pic_parameter_set_id | Конкретный пользователь | None |
| seq_parameter_set_id | Конкретный пользователь | None |
| entropy_coding_mode_flag | На основе D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_ENABLE_CABAC_ENCODING | None |
| pic_order_present_flag | 0 | Поддержка только pic_cnt_type = 0, 2 |
| num_slice_groups_minus1 | 0 | None |
| num_ref_idx_l1_active_minus1 | std::max(static_cast<INT>(pictureControl.List0ReferenceFramesCount) — 1, 0) | None |
| num_ref_idx_l0_active_minus1 | std::max(static_cast<INT>(pictureControl.List1ReferenceFramesCount) — 1, 0) | None |
| weighted_pred_flag | 0 | None |
| weighted_bipred_idc | 0 | None |
| pic_init_qp_minus26 | 0 | None |
| pic_init_qs_minus26 | 0 | None |
| chroma_qp_index_offset | 0 | None |
| deblocking_filter_control_present_flag | 1 | None |
| constrained_intra_pred_flag | На основе D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_USE_CONSTRAINED_INTRAPREDICTION | None |
| redundant_pic_cnt_present_flag | 0 | None |
| transform_8x8_mode_flag | На основе D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_USE_ADAPTIVE_8x8_TRANSFORM | Только при использовании высоких профилей |
| pic_scaling_matrix_present_flag | 0 | None |
| second_chroma_qp_index_offset | 0 | None |
Требования
| Требование | Ценность |
|---|---|
| Минимальный поддерживаемый клиент | Windows Build 22000 |
| минимальный поддерживаемый сервер | Windows Build 22000 |
| Header | d3d12video.h |