由上图可以看出CDC类具有四种DC的子类,下表说明各个不同DC子类所代表的意义。
表2.2 DC子类功能
类 功能说明
CClientDC 代表操作窗口的DC
CMetaFileDC 响应MetaFile的DC,MetaFile是一些GDI的消息
CPaintDC 响应WM_PAINT消息的DC
CWindowDC 代表整个屏幕的DC
2.2 VFW 软件开发包
在VFW(Video For Windows)出现之前,捕获和处理数字视频是一项复杂的工作。Microsoft推出的数字视频处理软件开发包VFW 给视频处理带来了极大便利,它能把模拟视频转换为数字信号并进行播放。VFW的特点是播放时不需要专用硬件。为解决数字视频数据量大的问题,需要对数据进行压缩,引进了AVI(Audio Video Interleave)文件标准,规定了视频和音频如何进行存储。VFW 还给程序员提供了VBX 控件和AVICap 窗口类的高级编程工具,使程序员能通过发送消息给它们或通过它们设置属性来捕获、播放和编辑视频。Windows 操作系统本身包括了Video For Windows 1.1,当用户在安装Windows 时,安装程序会自动地安装配置视频所需的视频组件,如设备驱动程序、视频压缩程序等。下面对VFW 的几个重要模块进行重点介绍和分析:
(1) AVICAP.DLL:包含了执行视频捕获的函数,它为AVI 文件输入输出和视频、音频设备驱动程序提供一个高级接口。
(2)MSVIDEO.DLL:用一套特殊的DrawDib 函数来处理屏幕上的视频操作。
(3)MCIAVI.DRV:此驱动程序包括对VFW 的MCI 命令的解释器。
(4)AVIFILE.DLL:支持由标准多媒体I/O(mmio)函数提供的更高的命令来访问AVI 文件。
(5)压缩管理器(ICM):管理用于视频压缩%解压的编解码器(CODEC)。
(6)音频压缩管理器(ACM):提供与ICM 相似的服务,不同之处是它适用于波形音频。
在实际的编程工具中,Visual C++在支持VFW 方面提供有:vfww32.lib,msacm32.lib,winmm.lib等类似的库。特别是它还提供了功能强大、简单易行、类似于MCIWnd 的窗口类AVICap。AVICap 为应用程序提供了一个简单的、基于消息的接口,使之能访问视频和波形音频硬件,并能控制把视频流捕获到硬盘上的过程。
2.3 AVICap窗口类
AVICap 窗口类能使用户方便地在自己编制的应用程序中内置视频捕获功能。它提供一个简便的、基于消息的接口,程序通过它可以控制声卡和视频采集卡,并能控制视频流存储到硬盘的过程。它支持4种类型的视频捕获:视频流捕获、用MCI 控制的视频流捕获、用MCI控制的视频分步捕获和单帧捕获。
AVICap 支持实时的视频流捕获和视频单帧捕获。使用AVICap 窗口类可创建具有一些基本功能的窗口,例如视频图像的预览、设置捕获参数的对话框、音频、视频捕捉的独立控制等。AVICap中的回调函数可使应用程序向用户提供有关捕获的状态,包括进行的过程指示,以及任何可能产生的错误。开发人员可以设置一个标志用来指示在什么时候采集到音频,什么时候采集到视频。这样,应用程序可以直接使用数据而无需写入AVI 文件中。AVICap 窗口类提供了以下功能: VC++基于USB摄像头的图像捕获及信号处理设计与实现(5):http://www.751com.cn/tongxin/lunwen_7110.html