структура 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) |