ksmedia.h) (KS_FRAME_INFO 结构

KS_FRAME_INFO结构扩展了视频流的KSSTREAM_HEADER结构。

语法

typedef struct tagKS_FRAME_INFO {
  ULONG    ExtendedHeaderSize;
  DWORD    dwFrameFlags;
  LONGLONG PictureNumber;
  LONGLONG DropCount;
  HANDLE   hDirectDraw;
  HANDLE   hSurfaceHandle;
  RECT     DirectDrawRect;
  union {
    LONG  lSurfacePitch;
    DWORD Reserved1;
  };
  DWORD    Reserved2;
  union {
    struct {
      DWORD Reserved3;
      DWORD Reserved4;
    };
    ULONGLONG FrameCompletionNumber;
  };
} KS_FRAME_INFO, *PKS_FRAME_INFO;

成员

ExtendedHeaderSize

指定此结构的大小(以字节为单位)。

dwFrameFlags

指定指示有关捕获的帧的其他信息的标志。 在捕获期间,微型驱动程序将此成员设置为 ksmedia.h 中定义的以下值之一:

标志 含义
KS_VIDEO_FLAG_FRAME 指示完整的帧。
KS_VIDEO_FLAG_FIELD1 指示双字段序列的字段 1。
KS_VIDEO_FLAG_FIELD2 指示双字段序列的字段 2。
KS_VIDEO_FLAG_I_FRAME 指示可以在不引用任何其他帧的情况下完全解码此帧。
KS_VIDEO_FLAG_P_FRAME 指示这是预测的帧。
KS_VIDEO_FLAG_B_FRAME 指示这是一个双向帧。

PictureNumber

指定表示当前图片编号的计数。 在转换为 KSSTATE_ACQUIRE 时初始化或更新此值。

DropCount

指定未捕获的图片数。 在捕获期间,微型驱动程序设置此成员。 每当应捕获帧但未捕获帧时,应递增此计数器;当捕获期间没有可用的缓冲区时,通常会出现这种情况。 在转换为 KSSTATE_ACQUIRE 时初始化或更新此值。

hDirectDraw

指定 DirectDraw 的用户模式句柄。 此句柄仅在捕获到 DirectDraw 图面以进行预览或覆盖时提供给微型驱动程序。

hSurfaceHandle

指定 DirectDraw 图面的用户模式句柄。 此句柄仅在捕获到 DirectDraw 图面以进行预览或覆盖时提供给微型驱动程序。

DirectDrawRect

指定已锁定的 DirectDraw 图面部分。 这通常是整个图面。

lSurfacePitch

包含图面间距 (也称为步幅) 。

Reserved1

保留,不应由微型驱动程序使用。

Reserved2

保留,不应由微型驱动程序使用。

Reserved3

保留,不应由微型驱动程序使用。

Reserved4

保留,不应由微型驱动程序使用。

FrameCompletionNumber

已完成队列中帧的标识序列号。 此数字用于验证帧顺序是否正确。 如果此值为 0,则表示取消帧。

此成员从 Windows 8.1 开始可用。

注解

KS_FRAME_INFO 结构提供了一种返回有关捕获的帧的信息的方法,以及一种将捕获到 DirectDraw 图面时使用的 Microsoft DirectDraw 句柄传递的方法。

PictureNumber 成员计数表示当前图片的计数,根据设备,按以下两种方式之一计算:

  • 测量流启动后的时间,并除以帧持续时间。 此方法适用于不提供自己的时钟的设备。 例如:

    PictureNumber = ElapsedTime / FrameDuration;
    
  • 将捕获的帧计数和丢弃的帧计数相加。 此方法适用于提供其自己的时钟的设备。 例如:

    PictureNumber = FramesCaptured + FramesDropped;
    

计算 PictureNumberDropCount 时,请务必使用打开流时指定的帧持续时间,这可能不一定与设备实际生成图像的速率相匹配。 例如,USB 相机只能以 7.5 fps 的速度生成图像,但客户端可以以 8 fps 的速度打开流。 在这种情况下,所有计算都应使用 8 fps 数字。

有关更新 PictureNumberDropCount 的详细信息,请参阅 捕获视频

要求

要求
Header ksmedia.h (包括 Ksmedia.h)

另请参阅

KSSTREAM_HEADER