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

指定未压缩的图面索引,该索引由之前调用 DdMoCompBeginFrameDD_BEGINMOCOMPFRAMEDATAlpInputData 成员指向的 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_ConfigAlphaCombinebConfigPictureResizing 成员为零,则 PictureDestinationRect 指定的区域的宽度和高度必须与 PictureSourceRect16thPel 指定的区域相同。 如果 PictureDestinationRect 的大小与 PictureSourceRect16thPel 不同,则未指定要应用的重新采样方法,但必须具有至少与双线性重采样等效的质量。

GraphicSourceRect

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

GraphicDestinationRect

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

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

wBlendDelay

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

bBlendOn

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

bWholePlaneAlpha

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

OutsideYUVcolor

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

注解

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

以下部分显示了对 RECT 结构的 左侧右侧顶部底部 成员施加的限制。

PictureSourceRect16thPel 的 RECT 结构限制

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

PictureDestinationRect 的 RECT 结构限制

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

GraphicSourceRect 的 RECT 结构限制

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

GraphicDestinationRect 的 RECT 结构限制

以下限制适用于 GraphicDestinationRectRECT 尺寸:
  • lefttop 必须大于或等于零,除非此要求与需要将图形偏移 8 个样本相冲突。 在以下方案中就是这种情况:
  • rightbottom 必须分别大于或等于 lefttop。 如果 right 等于 lefttop 等于 bottom,则 RECT 结构的所有这些成员都必须具有值 0,并且 GraphicSourceRect 还必须指定其所有成员都具有值零。
  • 如果 DXVA_ConfigAlphaCombinebConfigBlendType 成员等于零,则右侧底部不能分别超过未压缩的目标图片图面的分配宽度和高度。
  • 如果 DXVA_ConfigAlphaCombine 的 bConfigBlendType 成员等于 1, 则右侧底部 不能分别超过源图形图像的分配宽度和高度。
如果 alpha-blend 数据加载使用值为 2 的 DXVA_ConfigAlphaCombine 的 bConfigDataType 成员和值为 0 的 DXVA_ConfigAlphaCombine 的 bConfigGraphicResizing 成员,则以下对 GraphicDestinationRect 维度的其他限制适用:
  • 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,才能根据以下说明中所述的不同矩形解释进行调整。
注意 DVD 视频规范定义子图片矩形区域的方式与 Microsoft 使用的约定之间存在差异。 此参考遵循 Microsoft 约定,因此图片左上角的宽度为 10 且高度为 10 的矩形由 top = 0、 left = 0、 right = 10 和 bottom = 10 定义。 DVD 视频规范使用 = 9 和 底部 = 9 的等效项。
 

设置 OutsideYUVcolor 值

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

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

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

如果 OutsideYUVcolor.bSampleAlpha8 为 255,则通过混合图形与 OutsideYUVcolor 的非相成员中指定的颜色来生成位于 PictureDestinationRect 之外但位于 GraphicDestinationRect 内的目标图面的任何区域。 在这种情况下,位于 PictureDestinationRectGraphicDestinationRect 之外的目标图面的整个分配区域设置为 在 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)

另请参阅

DD_BEGINMOCOMPFRAMEDATA

DXVA_AYUVsample2

DXVA_ConfigAlphaCombine

DdMoCompBeginFrame

矩形