структура 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 |