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