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) |