структура 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, а также сброса буфера декодированного буфера изображений (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, группа изображений будет завершена до последней отправленной команды EncodeFrame и перезапущена после сеанса внутриобновления с новой GOP, начинающейся с I-кадра. Например, если GOP имеет значение IPPPP... 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
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по