структура D3D12DDI_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_MARKING_OPERATION_0082_0 (d3d12umddi.h)
Структура D3D12DDI_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_MARKING_OPERATION_0082_0 описывает изменения в эталонных рисунках как операции с памятью в виде кортежа идентификатора операции и связанных параметров, необходимых для операции.
Синтаксис
typedef struct D3D12DDI_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_MARKING_OPERATION_0082_0 {
UCHAR memory_management_control_operation;
UINT difference_of_pic_nums_minus1;
UINT long_term_pic_num;
UINT long_term_frame_idx;
UINT max_long_term_frame_idx_plus1;
} D3D12DDI_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_MARKING_OPERATION_0082_0;
Члены
memory_management_control_operation
Операция управления, применяемая для влияния на состояние маркировки эталонного рисунка. Ниже приведены допустимые значения операций.
Значение | Описание |
---|---|
0 | Завершение цикла элементов memory_management_control_operation синтаксиса. |
1 | Пометьте краткосрочную эталонную картинку как "неиспользуемую для справки". |
2 | Пометьте долгосрочное эталонное изображение как "неиспользуемое для справки". |
3 | Пометьте краткосрочную эталонную картинку как "используемую для долгосрочной ссылки" и назначьте ему долгосрочный индекс кадров. |
4 | Укажите максимальный индекс долгосрочных кадров и пометьте все долгосрочные эталонные изображения с индексами долгосрочных кадров, превышающими максимальное значение, как "неиспользуемые для справки". |
5 | Пометьте все эталонные рисунки как "неиспользуемые для справки" и задайте для переменной MaxLongTermFrameIdx значение "no long-term frame индексов". |
6 | Пометьте текущий рисунок как "используемый для долгосрочной ссылки" и назначьте ему индекс долгосрочного кадра. |
difference_of_pic_nums_minus1
Этот элемент используется с memory_management_control_operation , равным 3 или 1, чтобы назначить индекс долгосрочного кадра краткосрочному эталону или пометить краткосрочную эталонную картинку как "неиспользуемую для справки". При обработке связанного memory_management_control_operation процессом декодирования результирующий номер рисунка, производный от difference_of_pic_nums_minus1 , должен быть номером рисунка, присвоенным одному из эталонных рисунков, помеченным как "использованные для справки", и не назначенным ранее долгосрочному индексу кадров.
long_term_pic_num
Этот элемент используется с memory_management_control_operation , равным 2, чтобы пометить долгосрочное эталонное изображение как "неиспользуемое для справки". При обработке связанного memory_management_control_operation процессом декодирования long_term_pic_num должен быть равен долгосрочному номеру рисунка, присвоенного одному из эталонных рисунков, который в настоящее время помечен как "используемый для долгосрочной ссылки".
long_term_frame_idx
Этот элемент используется с memory_management_control_operation равным 3 или 6 для назначения долгосрочного индекса кадра рисунку. При обработке связанного memory_management_control_operation процессом декодирования значение long_term_frame_idx должно находиться в диапазоне от 0 до MaxLongTermFrameIdx включительно.
max_long_term_frame_idx_plus1
Значение минус 1 указывает максимальное значение индекса долгосрочного кадра, допустимое для долгосрочных ссылочных изображений (до получения другого значения max_long_term_frame_idx_plus1). Значение max_long_term_frame_idx_plus1 должно находиться в диапазоне от 0 до max_num_ref_frames включительно.
Комментарии
Переменная MaxLongTermFrameIdx является следующей:
- Если max_long_term_frame_idx_plus1 равно 0, параметр MaxLongTermFrameIdx имеет значение "no long-term frame индексов".
- Если max_long_term_frame_idx_plus1 больше 0, maxLongTermFrameIdx имеет значение max_long_term_frame_idx_plus1 − 1.
Операция пометки текущего кадра как кратковременной ссылки задается флагом, присутствующим в структуре D3D12DDI_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAGS_0080 , с соответствующими значениями PictureOrderCountNumber и FrameDecodingOrderNumber , указанными в связанной структуре управления рисунком.
Переменная max_num_ref_frames обозначается максимальной емкостью буфера декодированных изображений (DPB).
Обратите внимание, что для маркировки кадра мгновенного обновления декодера (IDR) как долгосрочной ссылки предлагаемый явный механизм заключается в том, чтобы сначала пометить его как краткосрочную ссылку, задав D3D12DDI_VIDEO_ENCODER_PICTURE_CONTROL_FLAG_0080_USED_AS_REFERENCE_PICTURE при вызове EncodeFrame для кадра IDR, а затем преобразуя его в долгосрочный опорный кадр с помощью операции управления памятью "3", чтобы пометить краткосрочное эталонное изображение как "используемое для долгосрочной ссылки" и назначить долгосрочный индекс кадров к нему.
Кроме того, при кодировании кадра IDR и установке adaptive_ref_pic_marking_mode_flag = 1 драйвер предполагает, что клиент пытается задать заголовок среза H264 long_term_reference_flag и сделает это в выходном битовом потоке для вызова EncodeFrame .
Дополнительные сведения о процессе маркировки рисунков см. в спецификации H.264, раздел 8.2.5.4 "Процесс маркировки эталонного рисунка с декодированием адаптивного элемента управления памятью".
Общие сведения см. в разделе Кодировка видео D3D12 .
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 11 (WDDM 3.0) |
Верхняя часть | d3d12umddi.h |
См. также раздел
D3D12DDI_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_0082_0
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по