структура DXVA_BufferDescription (dxva.h)
Структура DXVA_BufferDescription отправляется декодером узла в акселератор, чтобы предоставить сведения акселератору о буфере, который в настоящее время передается из узла в акселератор.
Синтаксис
typedef struct _DXVA_BufferDescription {
DWORD dwTypeIndex;
DWORD dwBufferIndex;
DWORD dwDataOffset;
DWORD dwDataSize;
DWORD dwFirstMBaddress;
DWORD dwNumMBsInBuffer;
DWORD dwWidth;
DWORD dwHeight;
DWORD dwStride;
DWORD dwReservedBits;
} DXVA_BufferDescription, *LPDXVA_BufferDescription;
Члены
dwTypeIndex
Определяет тип буфера, переданного акселератору. В следующей таблице перечислены числовые идентификаторы и связанный тип буфера.
значение | типа буфера |
---|---|
1 | Буферы параметров декодирования рисунков. |
2 | буферы команд управления Макроблоком (тесно связаны и имеют соответствие 1:1 с буферами данных остаточного разности). |
3 | Буферы данных остаточной разницы. Дополнительные сведения см. в Macroblock-Oriented декодирования рисунков. |
4 | Разблокировка буферов команд управления фильтрами (с ограничением эффекта фильтра или без нее). |
5 | Буферы матрицы инверсной квантизации (используются только с обработкой VLD вне узла). |
6 | Буферы управления срезами (тесно связанные с и имеющие соответствие 1:1 с буферами данных битов). |
7 | Буферы данных Bitstream. |
8 | Примеры буферов AYUV альфа-смешивания. |
9 | Буферы поверхности IA44/AI44. |
10 | Буферы поверхности с альфа-смешивания DPXD. |
11 | Выделение буферов данных. |
12 | Буферы данных DCCMD. |
13 | Буферы сочетаний альфа-смешивания. |
14 | Буферы элементов управления изменения рисунка. |
15 | Буферы команд обратно с чтением, содержащие команды для чтения макроблоков результирующего рисунка обратно на узел. |
dwBufferIndex
Указывает порядковый номер буфера в буферах того же типа, который был передан в том же списке описания буфера .
dwDataOffset
Указывает смещение соответствующих данных с начала буфера в байтах. Использование этого элемента в настоящее время ограничено нулевым значением.
dwDataSize
Указывает объем соответствующих данных в буфере в байтах. Расположение последнего байта содержимого в буфере — dwDataOffset, а также dwDataSize минус 1.
dwFirstMBaddress
Задает адрес макроблока первого макроблока в буфере, переданный акселератору. Адрес макроблока указан в порядке сканирования растрового текста. Адрес определяется членами DXVA_PictureParameters. Ниже приведены примеры адресов макроблока.
Макроблок | адрес |
---|---|
в левом верхнем углу | нуль |
в правом верхнем углу | wPicWidthInMBminus1 |
нижний левый | wPicHeightInMBminus1 x (wPicWidthInMBminus1+1) |
в правом нижнем углу | (wPicHeightInMBminus1+1) x (wPicWidthInMBminus1+1)-1 |
Этот элемент должен быть равен нулю, если буфер данных является одним из следующих типов: параметры декодирования рисунков, матрица обратной квантизации, элемент управления срезом, данные битов, AYUV, IA44/AI44, DPXD, Highlight и DCCMD.
Если буфер данных является буфером данных остаточной разницы, dwFirstMBadress должны иметь то же значение, что и для соответствующего буфера команд управления макроблоком. Дополнительные сведения см. в Macroblock-Oriented декодирования рисунков.
dwNumMBsInBuffer
Указывает количество макроблоков данных в буфере. Это число включает пропущенные макроблоки. Если буфер данных является одним из следующих типов: параметры декодирования рисунков, матрица обратной квантизации, AYUV, IA44/AI44, DPXD, Highlight или DCCMD.
Значение для dwNumMBsInBuffer зависит от типа буфера данных, используемого в следующей таблице.
типа буфера | значение dwNumMBsInBuffer |
---|---|
Команда управления Макроблоком | Должно быть равно сумме всех значений для MBskipsFollowing, добавленных к числу команд управления макроблока в буфере команд управления макроблока. |
Блок разницы остатков | Должно иметь то же значение, что и для соответствующего буфера команд управления макроблоком. |
Команда "Срез-элемент управления" | Должно быть равно значению элемента wNumberMBsInSlice структуры DXVA_SliceInfo в буфере управления срезом. |
Bitstream | Должно иметь то же значение, что и для соответствующего буфера команд управления срезом. |
dwWidth
Задает ширину данных в буфере в виде количества единиц битов для следующих типов данных: AYUV (данные указаны в 32-разрядных единицах), IA44/AI44 (данные указаны в 8-разрядных единицах) или DPXD (данные указываются в 2-разрядных единицах). Этот элемент должен быть равен нулю, если буфер данных не входит в предыдущие типы.
dwHeight
Указывает высоту данных в буфере в виде количества единиц битов для следующих типов данных: AYUV (данные указаны в 32-разрядных единицах), IA44/AI44 (данные указаны в 8-разрядных единицах) или DPXD (данные указываются в 2-разрядных единицах). Этот элемент должен быть равен нулю, если буфер данных не входит в предыдущие типы.
dwStride
Указывает шаг данных в буфере в качестве количества единиц битов для следующих типов данных: AYUV (данные указаны в 32-разрядных единицах), IA44/AI44 (данные указаны в 8-разрядных единицах) или DPXD (данные указываются в 2-разрядных единицах). Шаг для применимых типов буферов определяется из настройки выделения буфера, выполняемой акселератором. Этот элемент должен быть равен нулю, если буфер данных не входит в предыдущие типы.
dwReservedBits
Зарезервированные биты, используемые для упаковки и выравнивания. Должно быть равно нулю.
Замечания
Массив структур DXVA_BufferDescription называется списком описания буфера. Когда набор буферов отправляется из декодера узла в аппаратный ускоритель, список описания буфера отправляется для описания буферов. Список описания буфера содержит одну DXVA_BufferDescription структуру для каждого буфера в этом наборе. Список описания буфера начинается со структуры DXVA_BufferDescription для первого буфера первого типа, а затем DXVA_BufferDescription структуры для следующего буфера того же типа и т. д. Затем список описаний буфера продолжается с DXVA_BufferDescription структурой для первого буфера следующего типа и т. д.
Требования
Требование | Ценность |
---|---|
заголовка | dxva.h (include Dxva.h) |