структура DXVA_ConfigPictureDecode (dxva.h)

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

Синтаксис

typedef struct _DXVA_ConfigPictureDecode {
  DXVA_ConfigQueryOrReplyFunc dwFunction;
  DWORD                       dwReservedBits[3];
  GUID                        guidConfigBitstreamEncryption;
  GUID                        guidConfigMBcontrolEncryption;
  GUID                        guidConfigResidDiffEncryption;
  BYTE                        bConfigBitstreamRaw;
  BYTE                        bConfigMBcontrolRasterOrder;
  BYTE                        bConfigResidDiffHost;
  BYTE                        bConfigSpatialResid8;
  BYTE                        bConfigResid8Subtraction;
  BYTE                        bConfigSpatialHost8or9Clipping;
  BYTE                        bConfigSpatialResidInterleaved;
  BYTE                        bConfigIntraResidUnsigned;
  BYTE                        bConfigResidDiffAccelerator;
  BYTE                        bConfigHostInverseScan;
  BYTE                        bConfigSpecificIDCT;
  BYTE                        bConfig4GroupedCoefs;
} DXVA_ConfigPictureDecode, *LPDXVA_ConfigPictureDecode;

Члены

dwFunction

Указывает тип запроса или ответа при использовании команд проверки и блокировки. Наиболее значимыми 24 битами dwFunction является переменная DXVA_ConfigQueryOrReplyFlag .

Наименее значимые 4 бита переменной DXVA_ConfigQueryOrReplyFlag содержат индикаторы состояния для выполняемого запроса или ответа.

Наименее значимые 8 битов dwFunction — это bDXVA_Func переменная , которая в данном случае равна 1.

dwReservedBits[3]

Зарезервированные биты, используемые для упаковки и выравнивания. Эти биты равны нулю.

guidConfigBitstreamEncryption

Указывает GUID, связанный с типом протокола шифрования для буферов данных bitstream. Значение DXVA_NoEncrypt (имя GUID, определенное в dxva.h), указывает, что шифрование не применяется. Это DXVA_NoEncrypt, если параметр bConfigBitstreamRaw равен нулю.

guidConfigMBcontrolEncryption

Указывает GUID, связанный с типом протокола шифрования для буферов управления макроблоком. Значение DXVA_NoEncrypt (имя GUID, определенное в dxva.h), указывает, что шифрование не применяется. Это DXVA_NoEncrypt, если параметр bConfigBitstreamRaw имеет значение 1.

guidConfigResidDiffEncryption

Указывает GUID, связанный с типом протокола шифрования для буферов данных остаточного разности (буферы, содержащие данные пространственного домена или наборы коэффициентов домена преобразования для идентификатора IDCT на основе ускорителя). Это DXVA_NoEncrypt, если параметр bConfigBitstreamRaw имеет значение 1. (DXVA_NoEncrypt — это GUID, определенный в dxva.h , который указывает на то, что шифрование не применяется.)

bConfigBitstreamRaw

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

Значение равно нулю, если значение bConfigResidDiffHost равно 1 или если bConfigResidDiffAccelerator равно 1. Нулевое значение считается базовым уровнем поддержки. Рекомендуется дополнительная поддержка уровня 1.

bConfigMBcontrolRasterOrder

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

bConfigResidDiffHost

Содержит конфигурацию разности остатков узла (дополнительные сведения см. в разделе Макроблок-ориентированное декодирование рисунков ). Значение 1 указывает, что некоторые данные декодирования остаточных различий могут отправляться в виде блоков в пространственном домене от узла. Значение , равное нулю, указывает, что пространственные данные домена не будут отправляться. Этот элемент равен нулю, если параметр bConfigBitstreamRaw равен 1. Желательно, чтобы ускоритель поддерживал как ноль, так и 1.

bConfigSpatialResid8

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

Если значение bConfigSpatialResid8 равно 1, а значение bConfigResidDiffHost равно 1, узел будет отправлять остаточные блоки пространственного домена для макроблоков, не использующих 8-разрядные подписанные примеры, и для внутренних макроблоков в прогнозируемых (nonintra) изображениях в формате в зависимости от bConfigIntraResidUnsigned следующим образом:

  • Если значение bConfigIntraResidUnsigned равно нулю, блоки пространственного домена для макроблоков отправляются в виде 8-разрядных целочисленных значений со знаком относительно постоянного ссылочного значения 128.
  • Если значение bConfigIntraResidUnsigned равно 1, блоки пространственного домена для макроблоков отправляются в виде 8-разрядных целочисленных значений без знака относительно постоянного ссылочного значения, равного нулю.
Если значение bConfigSpatialResid8 равно нулю, а bConfigResidDiffHost равно 1, узел будет отправлять остаточные блоки пространственных доменов для макроблоков nonintra с использованием 16-разрядных примеров со знаком, а для внутри макроблоков в прогнозируемых (неintra) изображениях в формате в зависимости от bConfigIntraResidUnsigned следующим образом:
  • Если значение bConfigIntraResidUnsigned равно нулю, блоки пространственных доменов для макроблоков отправляются в виде 16-разрядных целочисленных значений со знаком относительно постоянного ссылочного значения 2 (BPP-1), где BPP — количество битов на выборку несжатого видео (обычно это значение 8).
  • Если значение bConfigIntraResidUnsigned равно 1, блоки пространственных доменов для макроблоков отправляются в виде 16-разрядных целочисленных значений без знака относительно постоянного ссылочного значения, равного нулю.
Элемент bConfigSpatialResid8 должен быть равен нулю, если bConfigResidDiffHost равен нулю. Одно конкретное значение bConfigSpatialResid8 не рекомендуется, если bConfigResidDiffHost равно 1.
Примечание Для внутренних изображений с BPP , равным 8, блоки пространственного домена должны отправляться с помощью 8-разрядных выборок. Для внутренних изображений с BPP больше 8 блоков пространственной области необходимо отправлять с помощью 16-разрядных примеров. (Переменная BPP — это количество битов на выборку для несжатого видео, обычно это значение 8.)

Если значение bConfigIntraResidUnsigned равно нулю, эти примеры отправляются в виде целочисленных значений со знаком относительно постоянного ссылочного значения 2(BPP-1). Если значение bConfigIntraResidUnsigned равно 1, эти примеры отправляются в виде целочисленных значений без знака относительно постоянного ссылочного значения, равного нулю.

 

bConfigResid8Subtraction

Если значение равно 1, указывает, что 8-разрядные блоки переполнения разности вычитаются, а не добавляются. Значение должно быть равно нулю, если значение bConfigSpatialResid8 не равно 1. Предпочтительное значение для поддержки ускорителя равно 1, если bConfigSpatialResid8 равно 1. Возможность вычитания различий, а не их сложения, позволяет декодировать 8-разрядные разности в полном соответствии с полным диапазоном значений +/-255, необходимым в спецификациях декодера видео. Это связано с тем, что значение +255 не может быть представлено как сложение двух 8-разрядных чисел со знаком, но любое число в диапазоне +/-255 может быть представлено как разница между двумя 8-разрядными числами со знаком (+255 равно +127 минус âˆ'128).

bConfigSpatialHost8or9Clipping

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

bConfigSpatialResidInterleaved

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

bConfigIntraResidUnsigned

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

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

  • На неинтранном рисунке, если значение bConfigSpatialResid8 равно нулю, блоки данных остаточной разницы пространственного домена для внутри макроблоков отправляются в виде 16-разрядных целочисленных значений со знаком относительно постоянного ссылочного значения 2(BPP-1), где BPP — количество битов на выборку для несжатого видео (обычно это значение 8).
  • На неинтранном рисунке, если значение bConfigSpatialResid8 равно 1, и в рисунке внутри, если BPP равно 8 (независимо от значения bConfigSpatialResid8), блоки данных остаточной разницы пространственного домена для внутренних макроблоков отправляются в виде 8-разрядных целочисленных значений со знаком относительно постоянного ссылочного значения 128.
Если значение bConfigIntraResidUnsigned равно 1, а bConfigResidDiffHost равно 1, то блоки данных остаточной разницы пространственного домена для внутренних макроблоков отправляются следующим образом:
  • На неинтранном рисунке, если значение bConfigSpatialResid8 равно нулю, блоки данных остаточной разницы пространственного домена для внутри макроблоков отправляются в виде 16-разрядных целочисленных значений без знака относительно постоянного ссылочного значения, равного нулю.
  • На неинтранном рисунке, если значение bConfigSpatialResid8 равно 1, и на внутреннем рисунке, если BPP равно 8 (независимо от значения bConfigSpatialResid8), блоки данных остаточной разницы пространственного домена для внутри макроблоков отправляются в виде 8-разрядных целочисленных значений без знака относительно постоянного значения ссылки, равного нулю.
Элемент bConfigIntraResidUnsigned должен быть равен нулю, если только bConfigResidDiffHost не равен 1.

Предпочтительное значение для поддерживаемого ускорителя равно нулю для bConfigIntraResidUnsigned.

bConfigResidDiffAccelerator

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

Предпочтительное значение для ускорителя для поддержки — 1 для bConfigResidDiffAccelerator.

Если bConfigResidDiffAccelerator и bConfigResidDiffHost равны 1, декодирование остаточных различий можно совместно использовать между узлом и ускорителем на основе макроблока. Это считается еще более высоким уровнем возможностей ускорителя, чем если bConfigResidDiffAccelerator равно 1, а bConfigResidDiffHost равно нулю.

bConfigHostInverseScan

Указывает, выполняется ли обратная проверка для обработки блоков домена преобразования на узле или в ускорителе. Значение 1 указывает, что на узле будет выполнена обратная проверка для обработки блоков домена преобразования, а вместо этого будут отправляться абсолютные индексы для любых коэффициентов преобразования. Нулевое значение указывает, что на ускорителе будет выполнена обратная проверка. Этот элемент должен быть равен нулю, если параметр bConfigResidDiffAccelerator равен нулю или если bConfig4GroupedCoefs имеет значение 1.

Предпочтительное значение для поддержки ускорителя равно 1, если параметр bConfigResidDiffAccelerator равен 1.

bConfigSpecificIDCT

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

Этот элемент должен иметь нулевое значение, если параметр bConfigResidDiffAccelerator равен нулю (просто указывает на декодирование остатков на основе узла).

Примечание Приложение W к Рекомендации ITU-T H.263 не соответствует требованиям IDCT в исправлении 2 MPEG-2, поэтому bConfigSpecificIDCT не должно использоваться с видео MPEG-2.
 

bConfig4GroupedCoefs

Значение 1 указывает, что коэффициенты преобразования для IDCT вне узла будут отправляться с использованием структуры DXVA_TCoef4Group , а не DXVA_TCoefSingle структуры. Значение равно нулю, если bConfigResidDiffAccelerator равно нулю или если bConfigHostInverseScan имеет значение 1.

Предпочтительное значение для поддержки ускорителя равно нулю, если параметр bConfigResidDiffAccelerator равен 1.

Комментарии

Для некоторых типов битовых потоков принудительное размещение команд управления макроблоком в каждом буфере команд управления макроблоком в растровом порядке либо значительно увеличивает количество необходимых буферов, которые необходимо обработать, либо требует изменения порядка сведений об элементе управления. Таким образом, поддержка произвольного порядка может быть полезной для процесса декодирования. Например, декодирование CIF-разрешения H.261 может потребовать 36 буферов управления макроблоком для каждого рисунка, если в каждом буфере необходим порядок сканирования растров (произвольный порядок среза в приложении H.263 K и режимы прямоугольного среза имеют более серьезные последствия, возможно, требуют очень большого количества буферов).)

Требования

Требование Значение
Заголовок dxva.h (включая Dxva.h)

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

DXVA_MBctrl_I_HostResidDiff_1

DXVA_MBctrl_I_OffHostIDCT_1

DXVA_MBctrl_P_HostResidDiff_1

DXVA_MBctrl_P_OffHostIDCT_1

DXVA_TCoef4Group

DXVA_TCoefSingle