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 中定义的一个或多个 (逻辑或) 值:
标志 | 描述 |
---|---|
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
指定 KSCOPYPROTECTRestrictDlication 值 (0x00000001) ,以指示是否应限制流的重复。 如果未定义,请指定零,否则将拒绝连接。
dwPictAspectRatioX
指定图片纵横比的 x 尺寸 (例如,16 表示 16 × 9 显示) 。 该值以英寸为单位表示,而不是以像素为单位表示。
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 或 weave 设置的视频流,请使用 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。
要求
要求 | 值 |
---|---|
Header | ksmedia.h (包括 Ksmedia.h) |