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


Перечисление D3D12_VIDEO_DECODE_TIER (d3d12video.h)

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

Синтаксис

typedef enum D3D12_VIDEO_DECODE_TIER {
  D3D12_VIDEO_DECODE_TIER_NOT_SUPPORTED,
  D3D12_VIDEO_DECODE_TIER_1,
  D3D12_VIDEO_DECODE_TIER_2,
  D3D12_VIDEO_DECODE_TIER_3
} ;

Константы

 
D3D12_VIDEO_DECODE_TIER_NOT_SUPPORTED
Декодирование видео не поддерживается.
D3D12_VIDEO_DECODE_TIER_1
На уровне 1 аппаратный декодер требует, чтобы приложение выделило ссылочные текстуры в виде массива текстур. Это необходимо для удовлетворения требований к оборудованию, чтобы текстуры были "закрыты" в адресном пространстве, так как оборудование не поддерживает полноразмерный указатель для каждого отдельного буфера рисунков. Вместо этого он имеет один указатель и более ограниченное битовое смещение. Дополнительные сведения о массивах текстур см. в статье Введение в текстуры в Direct3D 11.

Если для оборудования декодера требуется уникальный макет памяти, который не поддерживается для операций с другими подсистемами или других операций с видео, декодер может задать флаг конфигурации D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_REFERENCE_ONLY_ALLOCATIONS_REQUIRED в структуре D3D12_FEATURE_DATA_VIDEO_DECODE_SUPPORT при запросе поддержки профиля. Этот флаг указывает, что приложение должно выделять ссылки с флагом D3D12_RESOURCE_FLAG_VIDEO_DECODE_REFERENCE_ONLY . Приложение должно использовать структуру D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS для задания выходных данных только для ссылок, если выходные данные необходимы в качестве будущей опорной рамки. Выходной кадр, передаваемый в ID3D12VideoCommandList::D ecodeFrame , является ресурсом D3D12, который может использоваться другими частями конвейера и не должен иметь флаг D3D12_RESOURCE_FLAG_VIDEO_DECODE_REFERENCE_ONLY.

#### Требования уровня 1 для сжатых входных буферов
- Все срезы для заданного кадра должны быть расположены по порядку и должны быть смежными, т. е. между срезами не должно быть пробелов. Буферы элементов управления срезом должны указывать параметры смещения и размера, соответствующие этому требованию.
— Первый срез должен начинаться с границы в 128 байтов. Смещение, заданное в структуре D3D12_VIDEO_DECODE_COMPRESSED_BITSTREAM , должно быть кратно 128 байтам.
— Декодирование поддерживается из буферов, выделенных с помощью D3D12_MEMORY_POOL_L0. Это всегда системная память, но буфер D3D12.
— Декодирование поддерживается из буферов, выделенных с помощью D3D12_MEMORY_POOL_L1, пула по умолчанию, включая буферы, выделенные D3D12_CPU_PAGE_PROPERTY_NOT_AVAILABLE.
D3D12_VIDEO_DECODE_TIER_2
На уровне декодирования 2 на текстуры можно ссылаться как на массив текстур или как на массив отдельных двухd-ресурсов текстуры (каждый ресурс с размером массива 1). Это более гибкое решение для вызывающего объекта и важно в сценариях, где разрешение часто меняется, например при потоковой передаче видео, так как массив текстур можно выделить и освободить только как единое целое, но отдельные двухмерные ресурсы текстуры можно выделить и освободить по отдельности.

Если для декодирования оборудования требуется уникальный формат облицовки, который не поддерживается для операций с другими модулями или других операций с видео, декодер может задать флаг конфигурации D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_REFERENCE_ONLY_ALLOCATIONS_REQUIRED в структуре D3D12_FEATURE_DATA_VIDEO_DECODE_SUPPORT при запросе поддержки профиля. Этот флаг указывает, что приложение должно выделять ссылки с флагом D3D12_RESOURCE_FLAG_VIDEO_DECODE_REFERENCE_ONLY . Приложение должно использовать структуру D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS для задания выходных данных только в том случае, если выходные данные требуются в качестве будущей опорной рамки. Выходной кадр, передаваемый в ID3D12VideoCommandList::D ecodeFrame , является ресурсом D3D12, который может использоваться другими частями конвейера и не должен иметь флаг D3D12_RESOURCE_FLAG_VIDEO_DECODE_REFERENCE_ONLY.

#### Требования уровня 2 для сжатых входных буферов

Эти требования идентичны требованиям уровня 1.

- Все срезы для заданного кадра должны быть расположены по порядку и должны быть смежными, т. е. между срезами не должно быть пробелов. Буферы элементов управления срезом должны указывать параметры смещения и размера, соответствующие этому требованию.
— Первый срез должен начинаться с границы в 128 байтов. Смещение, заданное в структуре D3D12_VIDEO_DECODE_COMPRESSED_BITSTREAM , должно быть кратно 128 байтам.
— Декодирование поддерживается из буферов, выделенных с помощью D3D12_MEMORY_POOL_L0. Это всегда системная память, но буфер D3D12.
— Декодирование поддерживается из буферов, выделенных с помощью D3D12_MEMORY_POOL_L1, пула по умолчанию, включая буферы, выделенные D3D12_CPU_PAGE_PROPERTY_NOT_AVAILABLE.
-
D3D12_VIDEO_DECODE_TIER_3
Данное поле зарезервировано.

Требования

Требование Значение
Заголовок d3d12video.h