KS_VIDEOINFOHEADER2结构 (ksmedia.h)

KS_VIDEOINFOHEADER2结构描述了视频流的详细信息,包括 bob 或 weave 设置、复制保护和像素纵横比。

语法

typedef struct tagKS_VIDEOINFOHEADER2 {
  RECT                rcSource;
  RECT                rcTarget;
  DWORD               dwBitRate;
  DWORD               dwBitErrorRate;
  REFERENCE_TIME      AvgTimePerFrame;
  DWORD               dwInterlaceFlags;
  DWORD               dwCopyProtectFlags;
  DWORD               dwPictAspectRatioX;
  DWORD               dwPictAspectRatioY;
  union {
    DWORD dwControlFlags;
    DWORD dwReserved1;
  };
  DWORD               dwReserved2;
  KS_BITMAPINFOHEADER bmiHeader;
} KS_VIDEOINFOHEADER2, *PKS_VIDEOINFOHEADER2;

成员

rcSource

指定一个剪辑矩形,该矩形选择要使用的活动视频信号部分。

rcTarget

指定一个矩形,指示要使用的目标缓冲区的哪个部分。

dwBitRate

指定一个值,该值指示视频流的相应数据速率(以位/秒为单位)。

dwBitErrorRate

指定一个值,该值指示视频流的数据错误率(以每秒位错误为单位)。

AvgTimePerFrame

以 100 纳秒为单位指定每个帧的平均时间。

dwInterlaceFlags

指定交错信息。 未定义的标志必须设置为零,否则可能会拒绝连接。 此成员可以设置为在 ksmedia.h中定义的一个或多个(逻辑 OR)值:

描述
KS_INTERLACE_IsInterlaced 指示交错流。 如果为 0,则其他KS_INTERLACE_Xxx位无关紧要。
KS_INTERLACE_1FieldPerSample 指示每个媒体示例的一个字段。 如果为零,则指示每个媒体示例的两个字段。
KS_INTERLACE_Field1First 指示第一个字段 1。 如果为零,则表示第一个字段 2。 PAL 中的顶部字段为字段 1,NTSC 中的顶部字段为字段 2。
KS_INTERLACE_UNUSED 闲置
KS_INTERLACE_FieldPatternMask 指示用于指定字段模式的位。
KS_INTERLACE_FieldPatField1Only 指示流永远不会包含字段 2。
KS_INTERLACE_FieldPatField2Only 指示流永远不会包含字段 1。
KS_INTERLACE_FieldPatBothRegular 指示每个字段 1 都有一个字段 2。
KS_INTERLACE_FieldPatBothIrregular 指示字段 1 和字段 2 的随机模式。
KS_INTERLACE_DisplayModeMask 视频捕获无效。
KS_INTERLACE_DisplayModeBobOnly 视频捕获无效。
KS_INTERLACE_DisplayModeWeaveOnly 视频捕获无效。
KS_INTERLACE_DisplayModeBobOrWeave 视频捕获无效。

dwCopyProtectFlags

指定 KSCOPYPROTECTRestrictDuplication 值 (0x00000001), 以指示是否应限制流重复。 如果未定义,则指定零或将拒绝连接。

dwPictAspectRatioX

指定图片纵横比的 x 维度(例如,16 × 9 显示器的 16 个)。 该值以英寸/英寸表示,而不是以像素为单位。

dwPictAspectRatioY

指定图片纵横比的 y 维度(例如,9 表示 16 × 9 显示)。 该值以英寸/英寸表示,而不是以像素为单位。

dwControlFlags

在 Windows Vista 之前的作系统中,此成员 dwReserved1 命名,需要为零。 在 Windows Vista 中,dwReserved1 与名为 dwControlFlags的新成员合并在一起。 如果使用,dwControlFlags 包含下表中的标志按位 OR。

价值 描述
AMCONTROL_USED 指示使用了 dwControlFlags 标志。
AMCONTROL_PAD_TO_4x3 图像应填充并显示在 4 x 3 区域中。
AMCONTROL_PAD_TO_16x9 图像应填充并显示在 16 x 9 区域中。
AMCONTROL_COLORINFO_PRESENT 其他颜色信息包含在 dwControlFlags 字段中的 24 位中。

AMCONTROL_USED标志提供与旧筛选器的向后兼容性。 如果未设置AMCONTROL_USED标志,则应忽略此字段中的剩余位。 如果筛选器使用任何其他标志,则应设置AMCONTROL_USED标志。

解码器使用两个AMCONTROL_PAD_xxx标志来确定输出矩形的纵横比。

如果设置了AMCONTROL_COLORINFO_PRESENT标志,则表示 dwControlFlags 字段的上 24 位被视为 DXVA_ExtendedFormat 结构。

有关 dwControlFlags 的详细信息,请参阅本主题后面的“备注”部分。

dwReserved1

此成员用于向后兼容性。 有关详细信息,请参阅 dwControlFlags

dwReserved2

保留供系统使用。 必须设置为零,否则将拒绝连接。

bmiHeader

指示一个 KS_BITMAPINFOHEADER 结构,该结构包含视频图像位图的颜色和尺寸信息。

言论

若要描述没有 bob 或编织设置的视频流,请使用 KS_VIDEOINFOHEADER

KS_VIDEOINFOHEADER2结构与 DirectShow VIDEOINFOHEADER2 结构相同。

捕获生成视频字段(而不是帧)的微型驱动程序必须使用包含KS_VIDEOINFOHEADER2结构的 KS_DATARANGE_VIDEO2 结构。

源筛选器可以通过提供有效定义 rcSource 成员中的剪裁矩形的值来请求接收器筛选器仅获取视频的一部分。 但是,如果接收器筛选器没有检查连接上的剪辑矩形,接收器筛选器只会呈现所有视频,有效地忽略从源筛选器传递到接收器筛选器的任何剪辑信息。

理想情况下,接收器筛选器会检查 rcSource,如果接收器筛选器不支持图像提取,并且矩形 为空,则拒绝连接。 筛选器应使用 Win32 函数 SetRectEmpty 将所有矩形重置为所有零(并将 IsRectEmpty 设置为以后检查矩形)。

rcTarget 成员指定视频的目标矩形。 大多数源筛选器将此成员设置为所有零。 下游筛选器可以请求将视频放置在它提供的缓冲区的特定区域中。 在本例中,它会使用无空目标调用 Win32 函数 QueryAccept

如果在 dwControlFlags 成员中设置了AMCONTROL_COLORINFO_PRESENT标志,则可以将 dwControlFlags 值强制转换为 DXVA_ExtendedFormat 结构以访问扩展的颜色信息。 有关详细信息,请参阅 VIDEOINFOHEADER2

要求

要求 价值
标头 ksmedia.h (包括 Ksmedia.h)

另请参阅

KS_BITMAPINFOHEADER

KS_DATARANGE_VIDEO2

KS_VIDEOINFOHEADER