структура D3D11_1DDI_VIDEO_DECODER_CONFIG (d3d10umddi.h)

Описывает конфигурацию декодера Microsoft Direct3D 11 для Microsoft DirectX Video Acceleration (DXVA).

Синтаксис

typedef struct D3D11_1DDI_VIDEO_DECODER_CONFIG {
  GUID   guidConfigBitstreamEncryption;
  GUID   guidConfigMBcontrolEncryption;
  GUID   guidConfigResidDiffEncryption;
  UINT   ConfigBitstreamRaw;
  UINT   ConfigMBcontrolRasterOrder;
  UINT   ConfigResidDiffHost;
  UINT   ConfigSpatialResid8;
  UINT   ConfigResid8Subtraction;
  UINT   ConfigSpatialHost8or9Clipping;
  UINT   ConfigSpatialResidInterleaved;
  UINT   ConfigIntraResidUnsigned;
  UINT   ConfigResidDiffAccelerator;
  UINT   ConfigHostInverseScan;
  UINT   ConfigSpecificIDCT;
  UINT   Config4GroupedCoefs;
  USHORT ConfigMinRenderTargetBuffCount;
  USHORT ConfigDecoderSpecific;
} D3D11_1DDI_VIDEO_DECODER_CONFIG;

Члены

guidConfigBitstreamEncryption

Определяет тип протокола шифрования для буферов данных битового потока. Если шифрование не применяется, значение будет DXVA_NoEncrypt (имя GUID, определенное в Dxva.h). Если значение ConfigBitstreamRaw равно 0, значение должно быть DXVA_NoEncrypt.

Если задано значение D3DWDDM2_0DDI_DECODER_ENCRYPTION_HW_CENC, это означает, что в вызов VideoDecoderBeginFrame будут переданы следующие параметры:

Значение Значение
pContentKey Указатель на структуру D3DWDDM2_0DDI_VIDEO_DECODER_BEGIN_FRAME_CRYPTO_SESSION , указывающую, какой параметр CryptoSession и какие ключевые сведения используются для расшифровки кадра.
ContentKeySize Задайте размер структуры D3DWDDM2_0DDI_VIDEO_DECODER_BEGIN_FRAME_CRYPTO_SESSION .

guidConfigMBcontrolEncryption

Определяет тип протокола шифрования для буферов данных управления блоками макросов. Если шифрование не применяется, значение будет DXVA_NoEncrypt (имя GUID, определенное в Dxva.h). Если значение ConfigBitstreamRaw равно 1, значение должно быть DXVA_NoEncrypt.

guidConfigResidDiffEncryption

Определяет тип протокола шифрования для буферов данных декодирования остаточных различий (буферы, содержащие данные пространственного домена, или наборы коэффициентов домена преобразования для обратного дискретного преобразования косинуса на основе ускорителя [IDCT]). Если шифрование не применяется, значение будет DXVA_NoEncrypt (имя GUID, определенное в Dxva.h). Если значение ConfigBitstreamRaw равно 1, значение должно быть DXVA_NoEncrypt.

ConfigBitstreamRaw

Указывает, отправляет ли декодер узла необработанные данные битового потока. Если значение равно 1, данные для рисунков будут отправляться в буферы битового потока в виде необработанного содержимого битового потока. Если значение равно 0, данные рисунка будут отправляться с помощью буферов команд управления макроблоком. Если значение ConfigResidDiffHost или ConfigResidDiffAccelerator равно 1, значение должно быть равно 0.

ConfigMBcontrolRasterOrder

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

ConfigResidDiffHost

Содержит конфигурацию разницы остатков узла. Если значение равно 1, некоторые данные декодирования остаточных различий могут быть отправлены в виде блоков в пространственном домене от узла. Если значение равно 0, данные пространственной области отправляться не будут.

ConfigSpatialResid8

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

Если значение ConfigResidDiffHost равно 1, а ConfigSpatialResid8 равно 1, узел будет отправлять блоки пространственного домена остаточной разницы для макроблоков, не входящих в макроблоки, с помощью 8-разрядных подписанных примеров и для внутренних макроблоков в прогнозируемых (не внутри) изображениях в формате, зависящем от значения ConfigIntraResidUnsigned:

  • Если значение ConfigIntraResidUnsigned равно 0, блоки пространственного домена для макроблоков отправляются в виде 8-разрядных целочисленных значений со знаком относительно постоянного значения ссылки 2^(BPP–1).
  • Если значение ConfigIntraResidUnsigned равно 1, блоки пространственного домена для макроблоков отправляются в виде 8-разрядных целочисленных значений без знака относительно постоянного значения ссылки 0.

Если значение ConfigResidDiffHost равно 1, а ConfigSpatialResid8 равно 0, узел будет отправлять остаточные разностные пространственные блоки данных для макроблоков, не являющихся внутренними, с помощью 16-разрядных примеров со знаком и для внутренних макроблоков в прогнозируемых (не внутри) изображениях в формате, зависящем от значения ConfigIntraResidUnsigned:

  • Если значение ConfigIntraResidUnsigned равно 0, блоки пространственного домена для макроблоков отправляются в виде 16-разрядных целочисленных значений со знаком относительно постоянного значения ссылки 2^(BPP–1).
  • Если значение ConfigIntraResidUnsigned равно 1, блоки пространственного домена для макроблоков отправляются в виде 16-разрядных целочисленных значений без знака относительно постоянного значения ссылки 0.
  • Если ConfigResidDiffHost имеет значение 0, значение ConfigSpatialResid8 должно иметь значение 0.

Для внутренних изображений блоки пространственной области должны отправляться с использованием 8-разрядных выборок, если битов на пиксель (BPP) равно 8, и с использованием 16-разрядных выборок, если BPP > 8. Если значение ConfigIntraResidUnsigned равно 0, эти примеры отправляются как целочисленные значения со знаком относительно постоянного ссылочного значения 2^(BPP–1), а если значение ConfigIntraResidUnsigned равно 1, эти примеры отправляются как целочисленные значения без знака относительно постоянного ссылочного значения 0.

ConfigResid8Subtraction

Если значение равно 1, 8-разрядные блоки переполнения разности вычитаются, а не добавляются. Значение должно быть равно 0, если только ConfigSpatialResid8 не равно 1.

Возможность вычитать различия, а не добавлять их, позволяет полностью соответствовать полному диапазону значений ±255, необходимым в спецификациях декодера видео. поскольку значение +255 не может быть представлено как сложение двух 8-разрядных чисел со знаком, но любое число в диапазоне ±255 может быть представлено как разница между двумя 8-разрядными числами со знаком (+255 = +127 минус –128).

ConfigSpatialHost8or9Clipping

Если значение равно 1, блоки пространственного домена для внутренних макроблоков должны быть обрезан до 8-разрядного диапазона на узле, а блоки пространственного домена для макроблоков, не являющихся внутренними, должны быть обрезаются до 9-разрядного диапазона на узле. Если значение равно 0, узел не требует такой обрезки.

Значение должно быть равно 0, если только ConfigSpatialResid8 не равно 0, а ConfigResidDiffHost не равно 1.

ConfigSpatialResidInterleaved

Если значение равно 1, все данные остаточной разницы пространственного домена должны отправляться в форме чередование хромов, соответствующей шаблону чередование хрома в формате YUV. Значение должно быть равно 0, если только ConfigResidDiffHost не равно 1, а формат YUV не равен NV12 или NV21.

ConfigIntraResidUnsigned

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

Если значение ConfigResidDiffHost равно 1, а ConfigIntraResidUnsigned равно 0, блоки данных остаточной разницы пространственных доменов для внутренних макроблоков должны отправляться следующим образом:

  • Если значение ConfigSpatialResid8 равно 0, блоки данных остаточной разницы пространственного домена для внутренних макроблоков отправляются в виде 16-разрядных целочисленных значений со знаком относительно постоянного ссылочного значения 2^(BPP–1).
  • Если значение ConfigSpatialResid8 равно 1, блоки данных остаточной разницы пространственного домена для внутренних макроблоков отправляются в виде 8-разрядных целочисленных значений со знаком относительно постоянного ссылочного значения 2^(BPP–1).
  • На рисунке внутри, если значение BPP равно 8, блоки данных остаточной разницы пространственного домена для внутренних макроблоков отправляются в виде 8-разрядных целочисленных значений со знаком относительно постоянного ссылочного значения 2^(BPP–1), независимо от значения ConfigSpatialResid8.

Если значение ConfigResidDiffHost равно 1, а ConfigIntraResidUnsigned равно 1, блоки данных остаточной разницы пространственного домена для внутренних макроблоков должны отправляться следующим образом:

  • Если значение ConfigSpatialResid8 равно 0, то блоки данных остаточной разницы пространственного домена для внутренних макроблоков должны отправляться в виде 16-разрядных целочисленных значений без знака относительно постоянного значения ссылки 0.
  • Если значение ConfigSpatialResid8 равно 1, на рисунке, отличном от внутри, блоки данных остаточной разницы пространственного домена для внутренних макроблоков отправляются в виде 8-разрядных целочисленных значений без знака относительно постоянного ссылочного значения 0.
  • На рисунке внутри, если значение BPP равно 8, блоки данных остаточной разницы пространственного домена для внутренних макроблоков отправляются в виде 8-разрядных целочисленных значений без знака относительно постоянного ссылочного значения 0, независимо от значения ConfigSpatialResid8.

Значение элемента должно быть равно 0, если только ConfigResidDiffHost не равно 1.

ConfigResidDiffAccelerator

Если значение равно 1, блоки коэффициентов домена преобразования могут отправляться с узла для IDCT на основе ускорителя. Если значение равно 0, idCT на основе ускорителя использовать не будет. Если ConfigResidDiffHost и ConfigResidDiffAccelerator имеют значение 1, это означает, что декодирование некоторых остаточных различий будет выполняться на узле, а некоторые — в ускорителе, как указано в командах управления на уровне макроблока.

Значение должно быть равно 0, если значение ConfigBitstreamRaw равно 1.

ConfigHostInverseScan

Если значение равно 1, обратный просмотр для обработки блоков домена преобразования будет выполняться на узле, а вместо этого будут отправляться абсолютные индексы для любых коэффициентов преобразования. Если значение равно 0, в ускорителе будет выполнена обратная проверка.

Значение должно быть равно 0, если ConfigResidDiffAccelerator равно 0 или если Config4GroupedCoefs равно 1.

ConfigSpecificIDCT

Если значение равно 1, используется IDCT, указанный в приложении W к Рекомендации ITU-T H.263. Если значение равно 0, для IDCT вне узла можно использовать любой совместимый IDCT.

Приложение H.263 не соответствует требованиям IDCT в исправлении MPEG-2 2, поэтому значение не должно быть 1 для использования с видео MPEG-2.

Значение должно быть равным 0, если ConfigResidDiffAccelerator равно 0, что указывает на декодирование остаточных различий на основе узла.

Config4GroupedCoefs

Если значение равно 1, коэффициенты преобразования для IDCT вне узла будут отправляться с использованием структуры DXVA_TCoef4Group . Если значение равно 0, используется структура DXVA_TCoefSingle . Значение должно быть равно 0, если ConfigResidDiffAccelerator равно 0 или если ConfigHostInverseScan равно 1.

ConfigMinRenderTargetBuffCount

Указывает, сколько кадров одновременно обрабатывает устройство декодера.

ConfigDecoderSpecific

Содержит сведения о конфигурации для декодера.

Требования

Требование Значение
Минимальная версия клиента Windows 8
Минимальная версия сервера Windows Server 2012
Верхняя часть d3d10umddi.h (включая D3d10umddi.h)

См. также раздел

D3DWDDM2_0DDI_VIDEO_DECODER_BEGIN_FRAME_CRYPTO_SESSION

DXVA_TCoef4Group

DXVA_TCoefSingle