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


структура 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, связанный с типом протокола шифрования для буферов данных битового потока. Значение 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. Нулевое значение считается базовым уровнем поддержки. Предпочтителен дополнительный уровень поддержки одного уровня.

bConfigMBcontrolRasterOrder

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

bConfigResidDiffHost

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

bConfigSpatialResid8

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

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

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

bConfigSpatialResidInterleaved

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

bConfigIntraResidUnsigned

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

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

  • На рисунке nonintra, если bConfigSpatialResid8 равно нулю, Блоки данных остаточного значения пространственного домена для внутри макроблоков отправляются в виде 16-разрядных целочисленных значений со знаком относительно константного ссылочного значения 2(BPP-1), где BPP число битов на выборку для несжатого видео (обычно значение 8).
  • На рисунке, отличном от bConfigSpatialResid8 1 и внутри рисунка, если BPP равно 8 (независимо от значения bConfigSpatialResid8), блоки данных остаточного значения пространственного домена для внутри макроблоков отправляются как 8-разрядные целочисленные значения относительно постоянного ссылочного значения 128.
Если bConfigIntraResidUnsigned равно 1, а bConfigResidDiffHost равно 1, блоки данных остаточного различия пространственного домена для внутри макроблоков отправляются следующим образом:
  • На рисунке nonintra, если 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 для MPEG-2 corrigendum 2 и таким образом bConfigSpecificIDCT не должно быть одним для использования с MPEG-2 видео.
 

bConfig4GroupedCoefs

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

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

Замечания

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

Требования

Требование Ценность
заголовка dxva.h (include 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