DXVA_BlendCombination 结构 (dxva.h)
DXVA_BlendCombination结构由主机解码器发送到加速器,以指定如何从源图片和包含 alpha 混合信息的图形图像中创建混合图片。
语法
typedef struct _DXVA_BlendCombination {
WORD wPictureSourceIndex;
WORD wBlendedDestinationIndex;
RECT PictureSourceRect16thPel;
RECT PictureDestinationRect;
RECT GraphicSourceRect;
RECT GraphicDestinationRect;
WORD wBlendDelay;
BYTE bBlendOn;
BYTE bWholePlaneAlpha;
DXVA_AYUVsample2 OutsideYUVcolor;
} DXVA_BlendCombination, *LPDXVA_BlendCombination;
成员
wPictureSourceIndex
指定未压缩的图面索引,该索引由之前调用 DdMoCompBeginFrame 中DD_BEGINMOCOMPFRAMEDATA的 lpInputData 成员指向的 DWORD 内容定义,该 DWORD 将与图形组合在一起。 当 DXVA_ConfigAlphaCombine 的 bConfigBlendType 成员为 1) 时,如果在 (使用后端硬件 alpha 混合,则 此值 0xFFFF。
wBlendedDestinationIndex
指定未压缩的图面索引,由要创建的合并图片的 ddMoCompBeginFrame 之前调用DD_BEGINMOCOMPFRAMEDATA的 lpInputData 成员指向的 DWORD 内容定义。 当 DXVA_ConfigAlphaCombine 的 bConfigBlendType 成员为 1) 时,如果在 (使用后端硬件 alpha 混合,则此值0xFFFF。
此值不能等于 wPictureSourceIndex ,除非正在使用后端硬件 alpha 混合。
PictureSourceRect16thPel
指定要与图形图像组合为 RECT 结构的源图片的区域。 尺寸以亮度分量样本值之间距离的十六分之一的单位指定。 (换句话说,RECT 结构中的成员是定点表示形式,在二进制点之前具有 28 位,在二进制点后具有 4 位。) 此第 16 个样本精度允许 PictureSourceRect16thPel 包含与 MPEG-2 视频中的 frame_centre_horizontal_offset 相同的精度,并 frame_centre_vertical_offset 平移扫描变量。
如果 DXVA_ConfigAlphaCombine 的 bConfigPictureResizing 成员为零, 则 PictureSourceRect16thPel 中的所有维度必须为 16 的整数倍数。
PictureDestinationRect
将目标图片的区域指定为 RECT 结构。 这将包含由 PictureSourceRect16thPel 为源图片定义的区域。
如果 DXVA_ConfigAlphaCombine 的 bConfigPictureResizing 成员为零,则 PictureDestinationRect 指定的区域的宽度和高度必须与 PictureSourceRect16thPel 指定的区域相同。 如果 PictureDestinationRect 的大小与 PictureSourceRect16thPel 不同,则未指定要应用的重新采样方法,但必须具有至少与双线性重采样等效的质量。
GraphicSourceRect
将源图形图像的区域指定为 RECT 结构。 此区域与 PictureSourceRect16thPel 指定的源图片部分相结合,以创建 alpha 混合图片。
GraphicDestinationRect
将目标图形图像的区域指定为 RECT 结构。
如果 DXVA_ConfigAlphaCombine 的 bConfigGraphicResizing 成员为零,则目标图片的宽度和高度必须与 GraphicSourceRect 指定的区域相同。 如果 GraphicDestinationRect 的大小与 GraphicSourceRect 不同,则不指定应用于图形图像的重新采样方法。 但是,使用的重新采样方法的质量应至少相当于表示混合信息的 AYUV 表面的双线性重采样。
wBlendDelay
指定混合组合生效前的延迟毫秒数。 例如,如果后端硬件混合正在使用 (,如果 DXVA_ConfigAlphaCombine 的 bConfigBlendType 成员为 1) ,则 wBlendDelay 包含混合组合生效前的延迟毫秒数。 如果使用前端混合,则此成员没有意义,必须为零。
bBlendOn
指定混合组合操作何时开始和停止。 如果使用后端硬件混合,则从混合组合操作中指定的时间开始应用混合, (bBlendOn 等于 1) ,直到新混合组合的执行时间 (bBlendOn 等于 1) ,或直到混合组合操作 (bBlendOn 等于 0) 禁用混合。 如果使用后端硬件混合并且 bBlendOn 为零,则 alpha 混合组合缓冲区中唯一有意义的其他值是 wBlendDelay。 如果使用前端混合,则此成员没有意义,必须为零 。
bWholePlaneAlpha
包含图形图像的 alpha 通道的不透明度乘数。 值零指示图形图像是透明的 (,因此图形内容不会影响生成的混合图片) 。 值 255 指示图形图像使用其完整的样本不透明度。 如果 bWholePlaneAlpha 不等于零,则指定的混合是将图形内容中每个位置的不透明度乘以 (bWholePlaneAlpha+1) /256。 对于 零值 bWholePlaneAlpha,要使用的混合是图形图像中指定的不透明度,无需更改。 如果 DXVA_ConfigAlphaCombine 的 bConfigWholePlaneAlpha 成员为零,则必须等于 255。
OutsideYUVcolor
指示 PictureDestinationRect 外部的区域是否使用常量颜色进行混合。 如果是,则此成员指定该颜色常量。 OutsideYUVcolor 成员定义为DXVA_AYUVsample2结构。 有关详细信息,请参阅备注部分。
注解
如果源和目标图片不采用 4:4:4 格式,则图形混合信息的每秒样本 (例如,第一个、第三个或第五个) 将应用于垂直或水平方向的子采样源色度信息,以生成混合结果。
以下部分显示了对 RECT 结构的 左侧、 右侧、 顶部和 底部 成员施加的限制。
PictureSourceRect16thPel 的 RECT 结构限制
以下限制适用于 PictureSourceRect16thPel 的 RECT 尺寸:- left 和 top 必须大于或等于零。
- right 和 bottom 必须分别大于或等于 left 和 top。
- 如果 right 等于 left 或 top 等于 bottom,则所有 RECT 成员都必须具有值 0,该值指示不使用源图片。 仅当 DXVA_ConfigAlphaCombine 的 bConfigOnlyUseDestRectArea 成员为零时,才允许这种情况。
- 右侧 和 底部 不得分别超过未压缩源图片图面分配的宽度和高度的 16 倍。
- left = 0
- top = 0
- right = 16 X horizontal_size
- bottom = 16 X vertical_size
PictureDestinationRect 的 RECT 结构限制
以下限制适用于 PictureDestinationRect 的 RECT 尺寸:- left 和 top 必须大于或等于零。
- right 和 bottom 必须分别大于或等于 left 和 top。
- 如果 right 等于 left 或 top 等于 bottom (仅当 DXVA_ConfigAlphaCombine 的 bConfigOnlyUseDestRectArea 成员为零) 时才允许,则所有 RECT 成员都必须具有值 0,并且 PictureSourceRect16thPel 还必须指定值为零的所有值。
- 如果 DXVA_ConfigAlphaCombine 的 bConfigBlendType 成员为零, 则右侧 和 底部 不得分别超过未压缩的目标图片图面的分配宽度和高度。
- 如果 DXVA_ConfigAlphaCombine 的 bConfigBlendType 成员为 1, 则右侧 和 底部 不能分别超过源图形图面的分配宽度和高度。
GraphicSourceRect 的 RECT 结构限制
如果 alpha 混合数据加载使用值为 2 的 DXVA_ConfigAlphaLoad 的 bConfigDataType 成员,则以下限制适用于 GraphicSourceRect 的 RECT 维度:- top 和 left 必须为零。
- right 必须等于结束 X 坐标减去上一个上一个 DVD SET_DAREA DCCMD 的起始 X 坐标,加上 1,才能根据不同的矩形解释进行调整,如以下说明在 GraphicDestinationRect 部分中的 RECT 结构限制部分中所述。
- bottom 必须等于结束 Y 坐标减去上一个上一个 DVD SET_DAREA DCCMD 的起始 Y 坐标,加上 1,以便根据不同的矩形解释进行调整。
- left 和 top 必须大于或等于零。
- right 和 bottom 必须分别大于或等于 left 和 top。
- 如果 right 等于 left 或 top 等于 bottom,则所有 RECT 成员都必须具有值 0,这表示不使用图形图片。
- 右侧 和 底部 不能分别超过图形源图像的分配宽度和高度。 当 DXVA_ConfigAlphaLoad 的 bConfigDataType 成员等于 2 时,分配的宽度和高度分别定义为 720 和 576 个样本。
GraphicDestinationRect 的 RECT 结构限制
以下限制适用于 GraphicDestinationRect 的 RECT 尺寸:- left 和 top 必须大于或等于零,除非此要求与需要将图形偏移 8 个样本相冲突。 在以下方案中就是这种情况:
- Alpha 混合数据加载使用值为 2 的 DXVA_ConfigAlphaCombine 的 bConfigDataType 成员和值为零的 DXVA_ConfigAlphaCombine 的 bConfigGraphicResizing 成员。
- 为 DVD 704 宽非平移扫描设置操作 (请参阅 DVD 704 宽非平移扫描示例) 。
- 操作设置为 DVD 352 宽 (请参阅 DVD 352 宽示例) 。
- right 和 bottom 必须分别大于或等于 left 和 top。 如果 right 等于 left 或 top 等于 bottom,则 RECT 结构的所有这些成员都必须具有值 0,并且 GraphicSourceRect 还必须指定其所有成员都具有值零。
- 如果 DXVA_ConfigAlphaCombine 的 bConfigBlendType 成员等于零,则右侧和底部不能分别超过未压缩的目标图片图面的分配宽度和高度。
- 如果 DXVA_ConfigAlphaCombine 的 bConfigBlendType 成员等于 1, 则右侧 和 底部 不能分别超过源图形图像的分配宽度和高度。
- top 必须等于上一个 DVD SET_DAREA DCCMD 的起始 Y 坐标。
- left 必须等于上一个 DVD SET_DAREA DCCMD 的起始 X 坐标或该值减去 8。 有关详细信息,请参阅 DVD 704 宽非平移扫描示例 和 DVD 352 宽示例。
- right 必须等于 left 的值,加上 End X 坐标减去上一个上一个 DVD SET_DAREA DCCMD 的起始 X 坐标,再加 1,以便根据以下说明中所述的不同矩形解释进行调整。
- bottom 必须等于 上一 个 DVD SET_DAREA DCCMD 的值加上结束 Y 坐标减去上一个 DVD SET_DAREA起始 Y 坐标的值,再加 1,才能根据以下说明中所述的不同矩形解释进行调整。
设置 OutsideYUVcolor 值
OutsideYUVcolor 结构的值如下所示:- 如果将 PictureDestinationRect 外部的区域生成为用于混合的常量颜色,则 OutsideYUVcolor.bSampleAlpha8 的值必须为 255。
- 如果以下两种情况之一适用, 则 OutsideYUVcolor.bSampleAlpha8 的值必须为零:
如果 DXVA_ConfigAlphaCombine 结构的 bConfigStayInPicDestRectArea 成员等于 1,则 OutsideYUVcolor.bSampleAlpha8 的值必须为零。
如果 OutsideYUVcolor.bSampleAlpha8 为零,则受混合影响的目标图面的唯一区域是 PictureDestinationRect 中的部分。
如果 OutsideYUVcolor.bSampleAlpha8 为 255,则通过混合图形与 OutsideYUVcolor 的非相成员中指定的颜色来生成位于 PictureDestinationRect 之外但位于 GraphicDestinationRect 内的目标图面的任何区域。 在这种情况下,位于 PictureDestinationRect 和 GraphicDestinationRect 之外的目标图面的整个分配区域设置为 在 OutsideYUVcolor 的非相成员中指定的颜色。 如果 DXVA_ConfigAlphaCombine 结构的 bConfigBlendType 成员为 1,则通过指定 bSampleAlpha8 = 255、bY_Value = 16 和 bCbValue = bCrValue = 128,将 OutsideYUVcolor 成员设置为指示与黑色混合。
当 DXVA_ConfigAlphaCombine 结构的 bConfigBlendType 成员为 1 (后端硬件混合) 时,混合操作可能与本参考中所述的操作稍有不同。 某些用于将视频图片从源图片映射到目标图片大小的调整参数可以以修改的方式应用,以将图形图像映射到相对于源图片的正确位置。 但是,混合结果将等效于此参考中的 alpha-blend 组合命令获取的混合结果。
要求
要求 | 值 |
---|---|
Header | dxva.h (包括 Dxva.h) |