структура D3D12DDI_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_0082_0 (d3d12umddi.h)

Структура D3D12DDI_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_0082_0 описывает элементы управления на уровне рисунка для связанной команды EncodeFrame для кодирования H.264.

Синтаксис

typedef struct D3D12DDI_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_0082_0 {
  D3D12DDI_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAGS_0080                                           Flags;
  D3D12DDI_VIDEO_ENCODER_FRAME_TYPE_H264_0080                                                                 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;
  D3D12DDI_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_H264_0080                                               *pReferenceFramesReconPictureDescriptors;
  UCHAR                                                                                                       adaptive_ref_pic_marking_mode_flag;
  UINT                                                                                                        RefPicMarkingOperationsCommandsCount;
  D3D12DDI_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_MARKING_OPERATION_0082_0           *pRefPicMarkingOperationsCommands;
  UINT                                                                                                        List0RefPicModificationsCount;
  D3D12DDI_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_LIST_MODIFICATION_OPERATION_0082_0 *pList0RefPicModifications;
  UINT                                                                                                        List1RefPicModificationsCount;
  D3D12DDI_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_LIST_MODIFICATION_OPERATION_0082_0 *pList1RefPicModifications;
  UINT                                                                                                        QPMapValuesCount;
  INT8                                                                                                        *pRateControlQPMap;
} D3D12DDI_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_0082_0;

Члены

Flags

Значение D3D12DDI_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAGS_0080 , указывающее флаги конфигурации для закодированного кадра. Флаги можно объединять.

FrameType

Значение D3D12DDI_VIDEO_ENCODER_FRAME_TYPE_H264_0080 , которое задает тип рисунка. Прежде чем выбирать значение, убедитесь, что флаги кодека поддерживают тип.

Примечание

FrameType должен быть синхронизирован с конфигурацией структуры группы изображений (GOP), заданной узлом. GOP определяется в порядке отображения. Выбор типа рисунка должен соответствовать GOP, но в порядке кодирования.

pic_parameter_set_id

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

idr_pic_id

Если кадр имеет тип D3D12DDI_VIDEO_ENCODER_FRAME_TYPE_H264_0080_IDR_FRAME, idr_pic_id определяет кадр мгновенного обновления декодера (IDR), который будет использоваться во всех заголовках срезов, присутствующих в кадре.

PictureOrderCountNumber

Порядок отображения текущего кадра.

FrameDecodingOrderNumber

Порядок декодирования кадра с семантикой, обозначенной заголовком среза frame_num элементом, который увеличивается после каждого эталонного рисунка.

TemporalLayerIndex

Номер слоя рисунка в темпоральной иерархии. Проверьте D3D12DDI_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_0082_0 максимальное количество слоев.

List0ReferenceFramesCount

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

pList0ReferenceFrames

Указатель на список прошлых опорных кадров, используемых для этого кадра. Каждое целочисленное значение в этом массиве индексируется в pReferenceFramesReconPictureDescriptors для ссылки на изображения, хранящиеся в декодированном буфере рисунков (DPB).

List1ReferenceFramesCount

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

pList1ReferenceFrames

Указатель на список будущих опорных кадров фрейма, которые будут использоваться для этого кадра. Каждое целочисленное значение в этом массиве индексирует в pReferenceFramesReconPictureDescriptors для ссылки на изображения, хранящиеся в DPB.

ReferenceFramesReconPictureDescriptorsCount

Количество записей в pReferenceFramesReconPictureDescriptors.

pReferenceFramesReconPictureDescriptors

Указатель на структуру D3D12DDI_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_H264_0080 , которая описывает текущее состояние буфера DPB, хранящееся в D3D12DDI_VIDEO_ENCODER_PICTURE_CONTROL_DESC_0082_0.ReferenceFrames. Индексы списков L0/L1 сопоставляют с прошлыми и будущими ссылками в массив дескрипторов.

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

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

adaptive_ref_pic_marking_mode_flag

Определяет семантический режим для обработки ссылок на кадры. Этот флаг может быть одним из следующих значений.

Значение Режим маркировки эталонного рисунка
0 Режим маркировки эталонных рисунков в скользящем окне. Режим маркировки, предоставляющий механизм первого выхода для краткосрочных эталонных рисунков.
1 Режим маркировки адаптивных эталонных рисунков. Режим маркировки эталонного рисунка, предоставляющий элементы синтаксиса для указания маркировки эталонных рисунков как "неиспользуемых для ссылок" и назначения долгосрочных индексов кадров.

RefPicMarkingOperationsCommandsCount

Количество ссылочных рисунков, связанных с текущим кадром. Для этого элемента требуется, чтобы adaptive_ref_pic_marking_mode_flag иметь значение 1.

pRefPicMarkingOperationsCommands

Указатель на D3D12DDI_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_MARKING_OPERATION_0082_0 структуру, содержащую список ссылочных рисунков RefPicMarkingOperationsCommandsCount , связанных с текущим кадром. Для этого элемента требуется, чтобы adaptive_ref_pic_marking_mode_flag иметь значение 1.

Операции, описанные в этом списке, должны соответствующим образом отражаться в дескрипторах DPB во время сеанса кодирования.

List0RefPicModificationsCount

Количество изменений списка для списка L0.

pList0RefPicModifications

Указатель на структуру D3D12DDI_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_LIST_MODIFICATION_OPERATION_0082_0 , содержащую команды list0RefPicModificationsCount для списка L0.

List1RefPicModificationsCount

Количество изменений списка для списка L1.

pList1RefPicModifications

Указатель на структуру D3D12DDI_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_LIST_MODIFICATION_OPERATION_0082_0 , содержащую команды list1RefPicModificationsCount для списка L1.

QPMapValuesCount

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

pRateControlQPMap

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

Комментарии

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

Общие сведения см. в разделе Кодировка видео D3D12 .

Требования

Требование Значение
Минимальная версия клиента Windows 11 (WDDM 3.0)
Верхняя часть d3d12umddi.h

См. также раздел

D3D12DDI_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_0082_0