структура 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-разрядных целочисленных значений без знака относительно постоянного ссылочного значения, равного нулю.
- Если значение bConfigIntraResidUnsigned равно нулю, блоки пространственных доменов для макроблоков отправляются в виде 16-разрядных целочисленных значений со знаком относительно постоянного ссылочного значения 2 (BPP-1), где BPP — количество битов на выборку несжатого видео (обычно это значение 8).
- Если значение bConfigIntraResidUnsigned равно 1, блоки пространственных доменов для макроблоков отправляются в виде 16-разрядных целочисленных значений без знака относительно постоянного ссылочного значения, равного нулю.
Если значение 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.
- На неинтранном рисунке, если значение bConfigSpatialResid8 равно нулю, блоки данных остаточной разницы пространственного домена для внутри макроблоков отправляются в виде 16-разрядных целочисленных значений без знака относительно постоянного ссылочного значения, равного нулю.
- На неинтранном рисунке, если значение bConfigSpatialResid8 равно 1, и на внутреннем рисунке, если BPP равно 8 (независимо от значения bConfigSpatialResid8), блоки данных остаточной разницы пространственного домена для внутри макроблоков отправляются в виде 8-разрядных целочисленных значений без знака относительно постоянного значения ссылки, равного нулю.
Предпочтительное значение для поддерживаемого ускорителя равно нулю для 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 равен нулю (просто указывает на декодирование остатков на основе узла).
bConfig4GroupedCoefs
Значение 1 указывает, что коэффициенты преобразования для IDCT вне узла будут отправляться с использованием структуры DXVA_TCoef4Group , а не DXVA_TCoefSingle структуры. Значение равно нулю, если bConfigResidDiffAccelerator равно нулю или если bConfigHostInverseScan имеет значение 1.
Предпочтительное значение для поддержки ускорителя равно нулю, если параметр bConfigResidDiffAccelerator равен 1.
Комментарии
Для некоторых типов битовых потоков принудительное размещение команд управления макроблоком в каждом буфере команд управления макроблоком в растровом порядке либо значительно увеличивает количество необходимых буферов, которые необходимо обработать, либо требует изменения порядка сведений об элементе управления. Таким образом, поддержка произвольного порядка может быть полезной для процесса декодирования. Например, декодирование CIF-разрешения H.261 может потребовать 36 буферов управления макроблоком для каждого рисунка, если в каждом буфере необходим порядок сканирования растров (произвольный порядок среза в приложении H.263 K и режимы прямоугольного среза имеют более серьезные последствия, возможно, требуют очень большого количества буферов).)
Требования
Требование | Значение |
---|---|
Заголовок | dxva.h (включая Dxva.h) |