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


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

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

Синтаксис

typedef struct D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_DESC {
  D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAGS                 Flags;
  D3D12_VIDEO_ENCODER_INTRA_REFRESH                          IntraRefreshConfig;
  D3D12_VIDEO_ENCODER_RATE_CONTROL                           RateControl;
  D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC                PictureTargetResolution;
  D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE            SelectedLayoutMode;
  D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA FrameSubregionsLayoutData;
  D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE                 CodecGopSequence;
} D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_DESC;

Члены

Flags

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

IntraRefreshConfig

Структура D3D12_VIDEO_ENCODER_INTRA_REFRESH , указывающая параметры режима внутри обновления, которые следует использовать при запуске сеансов внутри обновления.

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

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

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

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

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

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

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

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

RateControl

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

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

PictureTargetResolution

Структура D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC , описывающая разрешение, используемое при кодировании этого кадра.

Проверьте поддержку динамической перенастройки разрешения в D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RESOLUTION_RECONFIGURATION_AVAILABLE. Если это не поддерживается, PictureTargetResolution указывает целевое разрешение полного сеанса кодирования и не должно изменяться во время сеанса кодирования. В противном случае это указывает разрешение, используемое для связанной команды EncodeFrame .

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

Для некоторых кодеков изменение разрешения в середине сеанса кодирования может потребовать сброса GOP с возможным принудительным запросом кадра IDR/Key, а также может потребовать сброса алгоритмов управления буфером и кадром DPB.

SelectedLayoutMode

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

Проверьте поддержку динамической перенастройки в подразделе [D3D12_VIDEO_ENCODER_SUPPORT_FLAG_SUBREGION_LAYOUT_RECONFIGURATION_AVAILABLE]((ne-d3d12video-d3d12_video_encoder_support_flags.md). Если для этого не предоставляется поддержка, это указывает на целевой режим подобласти полного сеанса кодирования и не должен изменяться во время сеанса кодирования. В противном случае это указывает режим секционирования подобласти, используемый для связанной команды EncodeFrame .

FrameSubregionsLayoutData

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

CodecGopSequence

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

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

Требования

Требование Значение
Минимальная версия клиента Сборка Windows 22000
Минимальная версия сервера Сборка Windows 22000
Верхняя часть d3d12video.h