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 alpha 混合示例缓冲区。
9 IA44/AI44 alpha 混合表面缓冲区。
10 DPXD alpha 混合表面缓冲区。
11 突出显示数据缓冲区。
12 DCCMD 数据缓冲区。
13 Alpha 混合组合缓冲区。
14 图片重新采样控件缓冲区。
15 读回命令缓冲区,其中包含用于将生成的图片的宏块读回主机的命令块。

dwBufferIndex

指定在同一缓冲区 说明列表中传递的相同类型的缓冲区中的缓冲区的序列号。

dwDataOffset

指定相关数据从缓冲区开头的偏移量(以字节为单位)。 此成员的用法当前限制为值零。

dwDataSize

指定缓冲区中相关数据量(以字节为单位)。 缓冲区中最后一个字节的内容位置为 dwDataOffset,加上 dwDataSize 减 1。

dwFirstMBaddress

指定传递到加速器的缓冲区中第一个宏块的宏块地址。 宏块地址按光栅扫描顺序提供。 地址由 DXVA_PictureParameters 的成员确定。 宏块地址的示例如下所示。

宏块 Address
top-left
右上角 wPicWidthInMBminus1
lower-left wPicHeightInMBminus1 x (wPicWidthInMBminus1+1)
lower-right (wPicHeightInMBminus1+1) x (wPicWidthInMBminus1+1) -1

如果数据缓冲区属于以下类型,则此成员必须为零:图片解码参数、反量化矩阵、切片控制、位流数据、AYUV、IA44/AI44、DPXD、突出显示和 DCCMD。

如果数据缓冲区是残差块数据缓冲区, 则 dwFirstMBaddress 的值必须与相应的宏块控制命令缓冲区的值相同。 有关详细信息,请参阅 面向宏块的图片解码

dwNumMBsInBuffer

指定缓冲区中数据的宏块数。 此计数包括跳过的宏块。 如果数据缓冲区属于以下类型,则必须为零:图片解码参数、反量化矩阵、AYUV、IA44/AI44、DPXD、Highlight 或 DCCMD。

dwNumMBsInBuffer 的值取决于使用的数据缓冲区的类型,如下表所示。

缓冲区类型 dwNumMBsInBuffer 的值
宏块控制命令 必须等于 MBskipsFollowing 的所有值的总和,添加到宏块控制命令缓冲区中的宏块控件命令数。
残差块 必须具有与对应的宏块控制命令缓冲区相同的值。
Slice-control 命令 必须等于切片控制缓冲区中 DXVA_SliceInfo 结构的 wNumberMBsInSlice 成员的值。
Bitstream 必须具有与对应切片控制命令缓冲区相同的值。

dwWidth

将缓冲区中的数据宽度指定为以下数据类型的位数:AYUV (数据以 32 位单位) 指定,IA44/AI44 (数据以 8 位单位) 指定,或者以 2 位单位) 指定 DPXD (数据。 如果数据缓冲区不在上述类型中,则此成员必须为零。

dwHeight

将缓冲区中数据的高度指定为以下数据类型的位单位数:AYUV (数据以 32 位单位) 指定,IA44/AI44 (数据以 8 位单位) 指定,或者以 2 位单位) 指定 DPXD (数据。如果数据缓冲区不在上述类型中,则此成员必须为零。

dwStride

将缓冲区中的数据步幅指定为以下数据类型的位数:AYUV (数据以 32 位单位) 指定,IA44/AI44 (数据以 8 位单位) 指定,或者以 2 位单位) 指定 DPXD (数据。 适用缓冲区类型的步长取决于加速器执行的缓冲区分配设置。 如果数据缓冲区不在上述类型中,则此成员必须为零。

dwReservedBits

用于打包和对齐的保留位。 必须为零。

注解

DXVA_BufferDescription结构的数组称为缓冲区说明列表。 当一组缓冲区从主机解码器发送到硬件加速器时,将发送缓冲区说明列表来描述缓冲区。 缓冲区说明列表包含此集中每个缓冲区的一个DXVA_BufferDescription结构。 缓冲区说明列表从第一种类型的第一个缓冲区的DXVA_BufferDescription结构开始,然后是同一类型的下一个缓冲区的DXVA_BufferDescription结构,依此类而来。 然后,缓冲区说明列表会继续下一种类型的第一个缓冲区的DXVA_BufferDescription结构,依此类说。

要求

要求
Header dxva.h (包括 Dxva.h)

另请参阅

DXVA_PictureParameters

DXVA_SliceInfo