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


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

Структура D3D12DDI_VIDEO_ENCODER_SEQUENCE_CONTROL_DESC_0082_0 содержит параметры уровня последовательности для ввода операции кодирования видео.

Синтаксис

typedef struct D3D12DDI_VIDEO_ENCODER_SEQUENCE_CONTROL_DESC_0082_0 {
  D3D12DDI_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAGS_0082_0                 Flags;
  D3D12DDI_VIDEO_ENCODER_INTRA_REFRESH_0080                            IntraRefreshConfig;
  D3D12DDI_VIDEO_ENCODER_RATE_CONTROL_0080_2                           RateControl;
  D3D12DDI_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC_0080                  PictureTargetResolution;
  D3D12DDI_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_0080              SelectedLayoutMode;
  D3D12DDI_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_0080_2 FrameSubregionsLayoutData;
  D3D12DDI_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_0082_0                 CodecGopSequence;
} D3D12DDI_VIDEO_ENCODER_SEQUENCE_CONTROL_DESC_0082_0;

Члены

Flags

Значение D3D12DDI_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAGS_0082_0, указывающее флаги дескриптора элемента управления последовательности для текущей операции кодирования кадра.

IntraRefreshConfig

Структура D3D12DDI_VIDEO_ENCODER_INTRA_REFRESH_0080, указывающая параметры для режима внутри обновления, который следует использовать при активации сеансов внутри обновления. Дополнительные сведения об использовании внутри свежих см. в примечаниях.

RateControl

Структура D3D12DDI_VIDEO_ENCODER_RATE_CONTROL_0080_2, указывающая конфигурацию управления скоростью.

Проверьте флаг D3D12_VIDEO_ENCODER_SUPPORT_FLAG_0083_0_RATE_CONTROL_RECONFIGURATION_AVAILABLE, чтобы определить, поддерживается ли динамическая перенастройка элемента управления скоростью:

  • В случае поддержки измененная RateControl приводит к перезапуску алгоритма управления скоростью с новой конфигурацией, начиная с выполнения связанной команды EncodeFrame.
  • Если это не поддерживается, RateControl следует задать в начале сеанса кодирования и не измениться во время сеанса.

PictureTargetResolution

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

Проверьте флаг D3D12_VIDEO_ENCODER_SUPPORT_FLAG_0083_0_RESOLUTION_RECONFIGURATION_AVAILABLE, чтобы определить, поддерживается ли динамическое перенастройка для разрешения:

  • При поддержке PictureTargetResolution указывает разрешение, используемое для связанной команды EncodeFrame. В некоторых кодеках изменение разрешения в середине сеанса кодирования может потребовать сброса GOP с помощью потенциального запроса IDR/Key frame, а также сброса декодированного буфера рисунка (DPB) буфера и алгоритмов управления кадрами.
  • Если это не поддерживается, PictureTargetResolution указывает целевое разрешение для всего сеанса кодирования и не должно быть изменено во время сеанса.

SelectedLayoutMode

Значение D3D12DDI_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_0080, указывающее, какой режим макета используется, и поэтому члены объединения, используемые в FrameSubregionsLayoutData.

Проверьте флаг D3D12_VIDEO_ENCODER_SUPPORT_FLAG_0083_0_SUBREGION_LAYOUT_RECONFIGURATION_AVAILABLE, чтобы определить, поддерживается ли динамическое перенастройка в следующих регионах:

  • Если поддерживается, SelectedLayoutMode указывает режим секционирования, используемый для связанной команды EncodeFrame.
  • Если не поддерживается, *SelectedLayoutMode указывает целевой режим сеанса кодирования и не должен быть изменен во время сеанса кодирования.

FrameSubregionsLayoutData

Структура D3D12DDI_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_0080_2, содержащая необязательные данные макета макета, относящиеся к кодеку. Если SelectedLayoutMode указывает, что не существует никаких ограничений, этот член должен иметь значение NULL.

CodecGopSequence

Структура D3D12DDI_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_0082_0, указывающая текущий GOP, используемый в последовательности видео, в порядке отображения. Вызовы EncodeFrame должны следовать этому GOP, но в порядке последовательности после переупорядочения B-Кадров.

Проверьте флаг D3D12_VIDEO_ENCODER_SUPPORT_FLAG__0083_0_SEQUENCE_GOP_RECONFIGURATION_AVAILABLE, чтобы определить, поддерживается ли динамическое перенастройка GOP:

  • Если поддерживается, CodecGopSequence указывает новый режим goP, используемый начиная с связанной команды EncodeFrame.
  • Если это не поддерживается, CodecGopSequence указывает целевой шаблон GOP (в порядке отображения) полного сеанса кодирования и не должен быть изменен во время сеанса кодирования.

Замечания

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

Использование внутри обновления

Использование двунаправленных ссылочных кадров (B Кадров) является взаимоисключающим с внутриобновлением. Вызывающий объект должен проверить, что структура CodecGopSequence не содержит кадры B, если режимы внутриобновления активны. При запросе D3D12DDICAPS_VIDEO_ENCODER_SUPPORT_DATA с режимом внутриобновления, отличном от D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE_NONE, набор CodecGopSequence не должен содержать кадры B, или запрос не будет возвращать поддержку.

Использование бесконечного внутриобновления возможно, периодически запрашивая новую волну внутриобновления после завершения каждого внутриобновления.

При запуске внутриобновления N кадров длительности узел выполняет следующее:

  • Задает соответствующий флаг элемента управления рисунком для запуска внутри обновления;
  • Управляет индексом кадра между [0.N) в структуре элемента управления рисунком, чтобы указать драйверу о ходе сеанса внутри обновления.

Ожидаемое поведение при явном запросе внутриобновляющей волны с длительностью N кадров следует:

  • Если запрос на внутриобновление происходит в начале GOP, внутриобновление выполняется для N кадров, а затем новый GOP запускается с кадром I.

  • Если запрос на внутриобновление происходит в середине GOP, группа рисунков будет завершена до тех пор, пока последняя отправленная Кодировщик кадра и перезапущена после сеанса внутриобновления с новым GOP начиная с кадра I. Например, если GOP является IPPPP... Если запуск внутри обновления запрашивается при частичной отправке GOP iPP, последние два кадра P этого GOP будут игнорироваться, сеанс внутри обновления будет выдан для следующих кадров N, а затем ожидается новый ключевой кадр, который перезапускает структуру GOP.

Для внутриизбойного обновления на основе строк:

  • Настроенная структура GOP должна быть перенастроена на Infinite IPPP... P... GOP (GOPLength = 0u и PPicturePeriod = 1u) в течение сеанса внутри обновления. Затем его можно перенастроить снова после завершения внутриобновленной волны.

  • Настроенный режим секционирования секционирования будет перенастройлен в соответствии с секционированием срезов N для каждого кадра в течение N команд EncodeFrame. Это особенно важно, если секционирование секционирования задается в несовместимом режиме с требованиями внутри обновления, например если строка внутри закодированных единиц в срезе приведет к нарушению ограничения, заданного для байтов на срез. Ожидание внутри обновления строк заключается в том, что результирующий кадр содержит N-срезы, все Срезы P, кроме текущего среза внутри обновления строки, который должен быть срезом I.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows 11 (WDDM 3.0)
заголовка d3d12umddi.h

См. также

D3D12DDI_VIDEO_ENCODER_ENCODEFRAME_INPUT_STREAM_ARGUMENTS_0082_0

D3D12DDI_VIDEO_ENCODER_SUPPORT_FLAGS_0083_0

PFND3D12DDI_VIDEO_ENCODE_FRAME_0082_0

PFND3D12DDI_CREATEVIDEOENCODERHEAP_0080_2