структура 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 Буферы данных блока разности остаточных данных. Дополнительные сведения см. в разделе Декодирования рисунков, ориентированных на макроблоки .
4 Разблокировка буферов команд управления фильтром (с ограничением или без ограничений на влияние фильтра).
5 Матричные буферы обратного квантования (используются только при обработке VLD вне узла).
6 Буферы управления срезами (тесно связанные с и имеющие соответствие 1:1 с буферами данных битового потока).
7 Буферы данных битового потока.
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 должен иметь то же значение, что и для соответствующего буфера команд управления макроблоком. Дополнительные сведения см. в разделе Декодирования рисунков, ориентированных на макроблоки .

dwNumMBsInBuffer

Указывает количество макроблоков данных в буфере. Это число включает пропущенные макроблоки. Значение должно быть равно нулю, если буфер данных относится к следующим типам: параметры декодирования рисунков, матрица обратного квантования, AYUV, IA44/AI44, DPXD, Highlight или DCCMD.

Значение dwNumMBsInBuffer зависит от типа используемого буфера данных, как показано в следующей таблице.

Тип буфера Значение dwNumMBsInBuffer
Команда элемента управления Macroblock Должен быть равен сумме всех значений для MBskipsFollowing, добавленных к количеству команд управления макроблоком в буфере команд элемента управления макроблоком.
Блок остаточной разницы Должно иметь то же значение, что и для соответствующего буфера команд элемента управления макроблоком.
Команда "Управление срезом" Значение должно быть равно значению члена wNumberMBsInSlice структуры DXVA_SliceInfo в буфере управления срезом.
Битовый поток Должно иметь то же значение, что и для соответствующего буфера команд управления срезом.

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 (включая Dxva.h)

См. также раздел

DXVA_PictureParameters

DXVA_SliceInfo