структура 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-разрядных целочисленных значений без знака относительно постоянного ссылочного значения нуля.
- Если 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-разрядного диапазона на узле и что блоки пространственного домена для макроблоков 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.
- На рисунке nonintra, если 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 буферов управления макроблоком на изображение, если порядок сканирования растра необходим в каждом буфере (произвольное упорядочение и прямоугольный срез приложения K приложения K имеют более серьезные последствия, возможно, требуется чрезвычайно большое количество буферов.)
Требования
Требование | Ценность |
---|---|
заголовка | dxva.h (include Dxva.h) |