资源预览内容
第1页 / 共6页
第2页 / 共6页
第3页 / 共6页
第4页 / 共6页
第5页 / 共6页
第6页 / 共6页
亲,该文档总共6页全部预览完了,如果喜欢就下载吧!
资源描述
WDM 视频捕获介绍孙 涛摘要:该文主要提供一些在Win98,win2K及以上操作系统中,进行Windows Driver Model(WDM)视频捕获的相关知识介绍。如果你对WDM视频捕获感兴 趣,可以来看看这些东西。欢迎到我的博客blog.csdn.net/suntaoznz看其他文章!目录Windos 下视频捕获简史 1WDM 和视频捕获 1VfWWDM Mapper2WDM 视频捕获结构 2DirectShow 应用程序 3DirectShow Filter Graph3WDM 数据流 4视频捕获 Minidrivers4Pins, Streams, Formats4视频流命名约定5DirectShow 视频捕获的接口和属性 5捕获数据流类型6流输出数据格式6结束语Windos下视频捕获简史VFW(Video For Windows) 1.0版本在1992年11月发布,它是为在 Windows3.1 下将电影最优化地捕获到磁盘上而发布的。从那以后,视频捕获技 术就越来越受到关注了。VFW技术同样受到了很多批评,它捕获的数据保存到磁盘上会占用大量磁盘 空间,每秒数据量超过20M,同时需要大量的客户端支撑软件,VFW体系架构 上的不足在视频会议应用上和PC/TV应用上被暴露无遗,这样就要求一种新的 视频捕获技术来弥补这些不足。VFW的体系结构缺乏为视频会议,电视浏览,视频区域捕获和VBI (Vertical Blanking Interval)数据流提供强而有效的支持。一些视频卡等设备开发商在设计 自己的产品时,针对这些缺陷,对VFW进行了功能扩展。由于没有统一的标准, 我们的应用程序在使用这些扩充的功能时,就必须要写一些基于特定硬件的代 码。这就意味着当要改变捕获驱动程序时,就必须要对显卡的驱动程序进行修改。WDM和视频捕获WDM视频捕获设计就是为了来解决VFW体系结构中存在的这些问题。 WDM 视频捕获主要的好处体现在: 可以为设备(如基于USB, IEEE 1394通讯方式的摄像头)提供32位的 驱动程序。 允许 DirectShow 和 WDM 流协同工作。 可以在视频捕获设备和DVD/MPEG设备间,为硬件(如video ports和 chip sets)共享一个分类的驱动程序结构(Stream.sys)。 支持多个数据流。 允许电视信号调频和输入选择。 支持视频区域捕获,区域显示和 VBI。 允许使用 DirectDraw VPE (Video Port Extensions)管理视频输入。在一个单独设备上可能会有多个组件共存的情况,这些组件包括DVD解码 器, MPEG 解码器,视频解码器,调谐器,音频解码器。 WDM 数据流就是用于 解决这种情况而创建的。它是个统一的驱动模型,可以支持所有的这些设备和去 处理它们的资源分配。WDM数据流为标准数据类型和用户自定义数据类型提供了统一的数据模 型,同样,它定义了大部分的标准设备的属性,并且根据需要可以很容易地实现 扩充。因为按WDM数据流的协议,它支持在设备内核间进行数据传输,而不需 要在用户模式下进行数据转换。这样可以获得较高的效率,减少不必要的工作。操作系统仍然支持VfW驱动程序,但是依赖于VFW的开发将逐渐减少, 这是因为下面三个原因: WDM 数据流为基于电视浏览和视频会议的捕获设备提供了优化支持。 DirectShow 提供了更强的功能。 Microsoft将不会对VFW进行持续开发。VfWWDM MapperVfWWDM mapper 是 Windows 98 和 Windows 2000 操作系统的一部分。它 提供了 WDM驱动程序到基于VfW程序的向后兼容。对于Windows 98,有一个 驱动程序文件和一个动态链接库 Vfwwdm.drv 和 Vfwwdm32.dll。 Windows 2000 只要求一个DLL文件。典型的mapper应用于显示视频捕获设备对话框、视频 源选择对话框、摄像头控制面板和视频格式设置。VfWWDM mapper不是全面兼容并且不支持旧VFW的所有功能。例如不支 持视频覆盖,也不支持视频端口 implementations 。WDM 视频捕获结构WDM 视频捕获结构图如下:DirectShow 应用程序DirectShow 用于控制多媒体数据流;它可以在运行时允许用户播放数字电 影和对不同格式的声音进行解码,包括 MPEG-1。这种播放性能可以让音视频卡支持Microsoft DirectX的API, DirectShow 同样可以播放AVI电影文件和Apple QuickTime (.mov)格式文件。DirectShow 被广泛地应用于 Windows 95, Windows 98, 和 Windows 2000 应 用程序。 DirectShow 直接和驱动程序通讯, DirectShow 不使用 AVICap, 因为 AVICap 分配了数据缓冲区,如果一个 DirectShow 层没有放在 AVICap 顶层, 那么缓存区数据必须要通过转化去指向它,这样会造成效率地下。DirectShow Filter GraphDirectShow结构定义了标准的组件去控制处理带时间标记(time-stamped)的 多媒体数据流,这些组件被称为过滤器(Filter)。把这些Filter放在一个容器中, 这个容器就是Filter Graph。可能有三种类型的Filter: Source , transform和 rendero (注:有些资料将Filter翻译为过滤器,FilterGraph翻译为过滤器图表, 这里我都用原单词)应用程序可以通过 Filter Graph 管理器来进行数据访问。 Filter Graph 管理器 会对Filter Graph配置进行管理,同时还会通过Filter Graph控制数据的转移。Filter Graph管理器提供了一套COM接口,去允许应用程序与Filter Graph实现通讯。应用程序可以直接调用Filter Graph管理器接口去控制媒体流或者去获得 Filter 事件。还可以使用 DirectShow ActiveX 的 OCX 控件进行程序设计。,还有 一套MCI子集命令可以用来向后兼容Microsoft VFW 1.x版本和遵循OM-1 MPEG MCI 规范。WDM数据流WDM数据流主要应用包括视频捕获,电视浏览,VBI数据编码支持和DVD 电影播放。DirectShow可以非常容易地使用这些数据。视频捕获 Minidrivers视频卡由一些组件构成,比如电视信号调谐器,AM/FM调谐器,视频解码 器,音频解码器等,它们都由WDM Minidriver控制。使用Minidrivers,就可以 允许硬件开发商为不同的卡开发器驱动程序,他们只需要把Minidriver写到他们 的卡上,当硬件设计修改后,不需要对修改驱动做更多的修改。在 Windows 98 和 Windows 2000 下,视频设备使用 WDM 的 Minidriver 去 控制视频数据流,视频捕获 Minidrivers 相当与一个客户端,它会去控制处理硬 件设备的图像数据和其他相关数据。 Minidrivers 提供了如下的功能:捕获压缩和非压缩的视频数据流,VBI数据,时间编码和其他辅助数据流。控制视频流相关设备,比如电视信号调谐器,视频路由设备,电视音频控 制器和视频压缩编码器。 在流内核中完成处理工作,减少操作过程提高效率。Pins, Streams, Formats数据流视频捕获驱动程序可以同时支持多个压缩数据,非压缩数据,时间编 码,VBI解码数据以及自定义数据。为了保证每种数据同步匹配,捕获驱动程 序为这些数据创建了一个新的数据流。每个流都会用一个WDM流针脚(Pin)来传 递,通过针脚,单个数据流就可以把它的数据连接到不同的流Filter中去,还可 以通过DirectShow用户Filter的输出针脚,把数据转换输出给用户。(前面我 们提到Filter的3种类型:Source , transform和render。Source只有输出针脚,而 transform 有输入、输出 2 个针脚, render 只有输入针脚) 每个针脚都可以支持多种不同的数据格式。比如,一个针脚它可以提供RGB16, RGB24, YVU9, 和 JPEG 数字视频。针脚可以连接到一个共享的系统内 存的数据缓存区,它还可以直接连接到硬件设备。视频流命名约定通常, DirectShow 和 WDM 流会共享媒体的格式定义和流命名约定。但是 基于内核模式(Kernel-mode)和用户模式(User-mode)下的命名约定有一些小的 命名差异。比如,内核模式下的很多格式定义和GUID定义会在名称前加个” KS” 前缀, BITMAPINFOHEADER 就是用户模式下的定义,而 KS_BITMAPINFOHEADER就是内核模式下的相同结构的定义。在内核模式下,流格式使用KSDATAFORMAT数据结构。这个结构可以被 扩展去包含其它特别的数据格式信息。typedef union struct ULONGFormatSize;ULONGFlags;ULONGSampleSize;ULONGReserved;GUIDMajorFormat;GUIDSubFormat;GUIDSpecifier;ULONGLONG Alignment; KSDATAFORMAT, *PKSDATAFORMAT, KSDATARANGE, *PKSDATARANGE;DirectShow 视频捕获的接口和属性DirectShow 提供了与许多视频相关的接口,它们中的一些还有附带相关的属性。下面列出的这些接口是实际应用较多,并不带相关属性的: IAMAudioInputMixer IAMDroppedFrames IAMStreamConfig IAMVfwCaptureDialogs IAMVfwCompressDialogs IcaptureGraphBuilder ICreateDevEnum表列出了 DirectShow 接口与捕获驱动程序通讯的相关属性。 .DirectShow 接口相关属性IAMTunerPROPSETID VIDCAP TUNERIAMTVAudioPROPSETID VIDCAP TVAUDIOIAMCrossbarPROPSETID VIDCAP CROSSBARIAMVideoProcAmpPROPSETID VIDCAP VIDEOPROCAMPIAMAnalogVideoDecoderPROPSETID VIDCAP VIDEODECODERIAMAnalogVideoEncoderPROPSETID VIDCAP VIDEOENCODERIAMCameraControlPROPSETID VIDCAP CAMERACONTROL捕获数据流类型视频流大致由时间标记,数字视频,和其他相关信息(比如VBI,时间编码) 组成,流可以被暂停,开始和停止。流一般是100ns 次进行数据采样,大多数 情况下,每个数据帧存放在每个 ImediaSample 缓存区中。流输出数据格式流的数据类型由 KSDATARANGE 数据结构的 Stre
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号