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


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

См. также

DXVA_PictureParameters

DXVA_SliceInfo