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之前调用中由 lpInputDataDD_BEGINMOCOMPFRAMEDATA 成员指向的 DWORD 的内容定义。 如果后端硬件 alpha 混合正在使用(bConfigBlendTypeDXVA_ConfigAlphaCombine 成员为 1),则此值0xFFFF。

wBlendedDestinationIndex

指定要创建的组合图片之前调用 DdMoCompBeginFrame之前调用 lpInputData DD_BEGINMOCOMPFRAMEDATA成员所指的 DWORD 所定义的未压缩表面索引。 如果后端硬件 alpha 混合正在使用(bConfigBlendType DXVA_ConfigAlphaCombine成员为 1),则此值0xFFFF。

此值不能等于 wPictureSourceIndex,除非正在使用后端硬件 alpha 混合。

PictureSourceRect16thPel

指定要与图形图像合并为 RECT 结构的源图片区域。 维度以亮度分量样本值之间的距离的 16 分之一单位指定。 (换句话说,RECT 结构中的成员是二进制点之前的 28 位的固定点表示形式,在二进制点之后有 4 位。此第 16 个样本准确性允许 PictureSourceRect16thPel 包含与 MPEG-2 视频中的 frame_centre_horizontal_offsetframe_centre_vertical_offset 泛扫描变量相同的准确度。

如果 DXVA_ConfigAlphaCombine 的 bConfigPictureResizing 成员为零,则 PictureSourceRect16thPel 中的所有维度必须是 16 的整数倍数。

PictureDestinationRect

将目标图片的区域指定为 RECT 结构。 这将包含由 PictureSourceRect16thPel为源图片定义的区域。

如果 DXVA_ConfigAlphaCombinebConfigPictureResizing 成员为零,则由 pictureDestinationRect 指定的区域必须具有与 PictureSourceRect16thPel指定的区域相同的宽度和高度。 如果 PictureDestinationRect 的大小不同于 PictureSourceRect16thPel,则未指定要应用的重新采样方法,但必须具有至少与双线性重新采样相同的质量。

GraphicSourceRect

将源图形图像的区域指定为 RECT 结构。 此区域与由 PictureSourceRect16thPel 指定的源图片部分组合在一起,以创建 alpha 混合图片。

GraphicDestinationRect

将目标图形图像的区域指定为 RECT 结构。

如果 DXVA_ConfigAlphaCombine 的 bConfigGraphicResizing 成员为零,则目标图片的宽度和高度必须与 GraphicSourceRect指定的区域相同。 如果 GraphicDestinationRect 的大小不同于 GraphicSourceRect,则未指定要应用于图形图像的重新采样方法。 但是,使用的重新采样方法应具有至少相当于表示混合信息的 AYUV 表面的双线性重新采样的质量。

wBlendDelay

指定混合组合生效前延迟的毫秒数。 如果后端硬件混合正在使用(例如,如果 bConfigBlendTypeDXVA_ConfigAlphaCombine 成员为 1),wBlendDelay 包含混合组合生效之前的延迟毫秒数。 如果前端混合正在使用中,则此成员没有意义且必须为零。

bBlendOn

指定混合组合作何时启动和停止。 如果使用后端硬件混合,则从混合组合作中指定的时间(bBlendOn 等于 1)应用到新的混合组合的执行时间(bBlendOn 等于 1),或者直到混合组合作(bBlendOn 等于零)禁用混合)。 如果后端硬件混合正在使用,并且 bBlendOn 为零,则 alpha 混合组合缓冲区中唯一有意义的值是 wBlendDelay。 如果前端混合正在使用中,则此成员没有意义且必须为零。

bWholePlaneAlpha

包含图形图像的 alpha 通道的不透明度乘数。 值零表示图形图像是透明的(以便图形内容对生成的混合图片没有影响)。 值 255 表示图形图像使用其完整样本不透明度。 如果 bWholePlaneAlpha 不等于零,则指定的混合将图形内容中每个位置的不透明度乘以 (bWholePlaneAlpha+1)/256。 对于 bWholePlaneAlpha的零值,要使用的混合是图形图像中指定的不透明度,无需更改。 如果 bConfigWholePlaneAlphaDXVA_ConfigAlphaCombine 成员为零,则此值必须等于 255。

OutsideYUVcolor

指示 PictureDestinationRect 之外的区域是否 使用常量颜色进行混合。 如果是,则此成员指定该颜色常量。 OutsideYUVcolor 成员定义为 DXVA_AYUVsample2 结构。 有关详细信息,请参阅 备注 部分。

言论

如果源和目标图片的格式不是 4:4:4,则图形混合信息的每秒样本(例如,第一个、第三个或第五个)会根据需要应用于垂直或水平方向的子采样源色度信息,以生成混合结果。

以下各节显示了 、右 顶部的限制,以及 RECT 结构的底部 成员

pictureSourceRect16thPel 的 RECT 结构限制

以下限制适用于 PictureSourceRect16thPelRECT 维度:
  • 左侧顶部 必须大于或等于零。
  • 底部 必须分别大于或等于 顶部
  • 如果 等于 顶部 等于 底部,则所有 RECT 成员都必须具有指示未使用源图片的值零。 仅当 bConfigOnlyUsePicDestRectAreaDXVA_ConfigAlphaCombine 成员为零时,才允许这种情况。
  • 底部 不得超过未压缩源图片图面的分配宽度和高度的 16 倍。
例如,如果使用 PictureSourceRect16thPel 来选择整个 MPEG-2 解码的图片,则可以计算 PictureSourceRect16thPel 值, 如下所示:
  • 左侧 = 0
  • 顶部 = 0
  • = 16 X horizontal_size
  • 底部 = 16 X vertical_size

PictureDestinationRect 的 RECT 结构限制

以下限制适用于 PictureDestinationRectRECT 维度:
  • 左侧顶部 必须大于或等于零。
  • 底部 必须分别大于或等于 顶部
  • 如果右 等于 顶部 等于 底部(仅当 bConfigOnlyUsePicDestRectAre 时才允许) DXVA_ConfigAlphaCombine 成员为零),所有 RECT 成员都必须具有值零,并且 PictureSourceRect16thPel 还必须指定值为零的所有值。
  • 如果 DXVA_ConfigAlphaCombine 的 bConfigBlendType 成员为零,则 底部 不能分别超过未压缩的目标图片图面的分配宽度和高度。
  • 如果DXVA_ConfigAlphaCombine的 bConfigBlendType 成员为 1,则 底部 不能分别超过源图形图面的分配宽度和高度。

GraphicSourceRect 的 RECT 结构限制

如果 alpha 混合数据加载使用值为 2 的 DXVA_ConfigAlphaLoadbConfigDataType 成员,则以下限制适用于 GraphicSourceRectRECT 维度:
  • 顶部 必须为零。
  • 必须等于最后一个 DVD SET_DAREA DCCMD 的起始 X 坐标减去上一个 DVD SET_DAREA DCCMD 的起始 X 坐标,加上 1,以便根据以下注释调整不同的矩形解释,如 reCT Structure Restrictions for GraphicDestinationRect 节中所述。
  • 底部 必须等于结束 Y 坐标减去上一个 DVD SET_DAREA DCCMD 的 Start Y 坐标,加上 1,才能调整不同的矩形解释。
如果 alpha 混合数据加载不使用值为 2 的 DXVA_ConfigAlphaLoad bConfigDataType 成员,则以下限制适用于 GraphicSourceRect的 RECT 维度:
  • 左侧顶部 必须大于或等于零。
  • 底部 必须分别大于或等于 顶部
  • 如果右 等于左 顶部 等于 底部,则所有 RECT 成员都必须具有值零,表示不使用图形图片。
  • 底部 不能分别超过图形源图像的分配宽度和高度。 当 bConfigDataType DXVA_ConfigAlphaLoad成员等于 2 时,分配的宽度和高度分别定义为 720 和 576 个样本。

GraphicDestinationRect 的 RECT 结构限制

以下限制适用于 GraphicDestinationRectRECT 维度:
  • 顶部 必须大于或等于零,除非此要求与需要将图形偏移八个样本相冲突。 在以下情况下,这种情况如下:
  • 底部 必须分别大于或等于 顶部。 如果右 等于 顶部 等于 底部,则 RECT 结构的所有成员都必须具有值零,并且 GraphicSourceRect 还必须指定其所有成员的值为零。
  • 如果 DXVA_ConfigAlphaCombinebConfigBlendType 成员等于零,则 底部 不能分别超过未压缩的目标图片图面的分配宽度和高度。
  • 如果DXVA_ConfigAlphaCombine的 bConfigBlendType 成员等于 1,则 底部 不能分别超过源图形图像的分配宽度和高度。
如果 alpha 混合数据加载使用值为 2 的 DXVA_ConfigAlphaCombine bConfigDataType 成员,并且 bConfigGraphicResizing DXVA_ConfigAlphaCombine 成员的值为零,则以下对 GraphicDestinationRect 维度的限制适用:
  • 顶部 必须等于上一个 DVD SET_DAREA DCCMD 的 Start Y 坐标。
  • 必须等于上一个 DVD SET_DAREA DCCMD 的 Start X 坐标或该值减去 8。 有关详细信息,请参阅 DVD 704 宽非Pan-Scan 示例DVD 352 宽示例
  • 必须与左 的值相等,加上最后一个 DVD SET_DAREA DCCMD 的开始 X 坐标减去结束 X 坐标,加上 1,以便根据以下注释中所述的不同矩形解释进行调整。
  • 底部 必须与顶部 的值相等,加上最后一个 DVD SET_DAREA DCCMD 的开始 Y 坐标减去前一个 DVD SET_DAREA DCCMD 的开始 Y 坐标,加上 1,以便调整以下注释中所述的不同矩形解释。
注意 DVD 视频规范定义子图片矩形区域的方式和Microsoft使用的约定之间存在差异。 此参考遵循Microsoft约定,因此图片左上角的宽度为 10 和高度 10 的矩形由 顶部 = 0 定义, = 0, = 10,底部 = 10 定义。 DVD 视频规范使用等效 = 9,底部 = 9。
 

设置 OutsideYUVcolor 值

OutsideYUVcolor 结构的值如下所示:
  • OutsideYUVcolor.bSampleAlpha8 的值必须为 255,如果 PictureDestinationRect 之外的区域生成为常量颜色,用于混合。
  • 如果适用以下两种情况之一,则 OutsideYUVcolor.bSampleAlpha8 的值必须为零:
    • PictureDestinationRect 之外的区域不受混合影响。
    • 不能使用 PictureDestinationRect 之外的区域(如 bConfigStayInPicDestRectArea 值为 1 的 DXVA_ConfigAlphaCombine 成员所示)。
OutsideYUVcolor.bSampleAlpha8 的所有其他值将保留以供将来使用。

如果 DXVA_ConfigAlphaCombine 结构的 bConfigStayInPicDestRectArea 成员等于 1,则 OutsideYUVcolor.bSampleAlpha8 的值必须为零。

如果 OutsideYUVcolor.bSampleAlpha8 为零,则受混合影响的目标图面的唯一区域是 PictureDestinationRect中的部分。

如果 OutsideYUVcolor.bSampleAlpha8 为 255,则 PictureDestinationRect 外部但 GraphicDestinationRect中的任何目标图面区域都是通过将图形与 OutsideYUVcolor的非序成员中指定的颜色混合生成的。 在这种情况下,位于 PictureDestinationRectGraphicDestinationRect 之外的目标图面的整个分配区域设置为 OutsideYUVcolor的非阶段成员中指定的颜色。 如果 DXVA_ConfigAlphaCombine 结构的 bConfigBlendType 成员为 1,则 通过指定 bSampleAlpha8 = 255,bY_Value = 16,bCbValue = bCrValue = 128 来指示与黑色混合。

当 DXVA_ConfigAlphaCombine 结构的 bConfigBlendType 成员为 1(后端硬件混合)时,混合作可能与本参考中所述的作略有不同。 一些用于将视频图片从源图片映射到目标图片大小的调整参数可以采用修改的方式应用,以便将图形图像映射到相对于源图片的正确位置。 但是,混合结果将等效于本参考中 alpha-blend 组合命令获得的混合结果。

要求

要求 价值
标头 dxva.h (包括 Dxva.h)

另请参阅

DD_BEGINMOCOMPFRAMEDATA

DXVA_AYUVsample2

DXVA_ConfigAlphaCombine

DdMoCompBeginFrame

RECT