WDM 视频捕获介绍
视频捕获硬件

来源Windows8论坛:
视频捕获硬件
释义:视频捕获硬件可以定义为-把模拟的视频信号进行采样量化最后形成计算机系统能识别和处理的数字信号的设备,包括自身对于计算机系统的接口。
详解:按采集方式的不同可以分为:视频采集卡和数字相机。
视频采集卡
视频采集卡按照视频信号源,可以分为数字采集卡(使用数字接口)和模拟采集卡。
视频采集卡按照安装链接方式,可以分为外置采集卡(盒)和内置式板卡。
视频采集卡按照视频压缩方式,可以分为软压卡(消耗CPU资源)和硬压卡。
视频采集卡按照视频信号输入输出接口,可以分为1394采集卡、USB采集卡、HDMI采集卡、VGA采集卡、PCI视频卡。
视频采集卡按照其性能作用,可以分为电视卡、图像采集卡、DV采集卡、电脑视频卡、监控采集卡、多屏卡、流媒体采集卡[1]、分量采集卡、高清采集卡、笔记本采集卡、DVR卡、VCD卡、非线性编辑卡(简称非编卡)。
视频采集卡按照其用途可分为广播级视频采集卡,专业级视频采集卡,民用级视频采集卡,它们档次的高低主要是采集图像的质量不同。
他们的区别主要是采集的图像指标不同。
数字相机分为:CMOS工业数字相机,CCD数字相机,千兆网工业相机,智能相机。
[教学]玩转显卡的视频输入输出功能之四——实战显卡的视频采集功能
![[教学]玩转显卡的视频输入输出功能之四——实战显卡的视频采集功能](https://img.taocdn.com/s3/m/6ed66f5cce84b9d528ea81c758f5f61fb73628b7.png)
玩转显卡的视频输入输出功能之四——实战显卡的视频采集功能现在,也有很多新型显卡声称支持视频采集功能,到底这是不是真的呢?经过笔者奋夜试验,答案是肯定的。
但前提条件是显卡必须支持此功能。
小提示:如何得知自己的显卡是否支持视频采集功能首先,要查看显卡上是否有S端子(V ideo In)或VIVO端子其次还要看显卡上的视频编码芯片的型号是否为Philips SAA7108E/SAA7114H。
如果这两个条件均具备的话,那么恭喜你。
你就可以不必通过电视采集卡,就可以实现采集电视节目也不必通过1394采集卡,就可以实现采集数码相机、数码摄像机或者摄像头的音视频文件。
下面以微星G4MX440-VTD8X显卡(采用VIVO端子)和长虹G2536电视机(仅提供复合端子)为例,向大家介绍显卡是如何采集电视节目。
前期必须准备一个VIVO端子转两个S端子(V ideo Out和Video In)和两个复合视频端子(Video Out和V ideo In)的转接头、一条两端均为阳头复合接口的数据线、一条3.5mm音频接口转双阳头复合接口的数据线(如图1所示)(可到电子商店花几元钱买一根即可)。
(图1)第一步:将转接头的VIVO端子与显卡的VIVO端子相连接(如图2所示)。
(图2)第二步:将两端均为阳头复合接口的数据线的一端连接到转接头上标示有向内箭头(表示视频输入)的复合视频端子(如图3所示)。
(图3)第三步:将两端均为阳头复合接口的数据线的另一端连接到电视机上标示有“视频输出”的复合视频端子当中将3.5mm音频接口转双阳头复合接口的数据线的双阳头复合接口分别连接到电视机上标示有“音频输出”的两个复合音频端子当中(如图4所示)。
(图4)第四步:将3.5mm音频接口转双阳头复合接口的数据线的3.5mm音频接口连接到板载声卡的淡蓝色“Line In”接口(如图5所示)。
(图5)第五步:然后打开电视机,按下电视机或遥控器上的“TV/A V”按键,将视频信号切换到想采集的电视频道。
用DirectShow实现视频捕捉

3 视频捕捉的整体框架与思路
2、Capture Filter有两个pin,分别是Capture和Preview。从图3 可以看出,它们和其他的Filter连接在一起,分成两路。 Capture->AVI Mux->File Writer这条分支是用来存储多媒体 文件;Preview->Video Renderer这条分之是用来视频显示。 建立了Capture Filter以后,还得建立AVI Mux Filter、File Writer、Video Renderer这些Filter。使用 ICaptureGraphBuilder接口依次连接到Filter Graph中,最终形 成一个完整的Filter Graph Manager。要实现视频捕捉到文件, 可用ICaptureGraphBuilder::RenderStream方法,指定相应的 输出文件路径等参数即可。要实现视频捕捉,也可以用 ICaptureGraphBuilder::RenderStream方法,通过设置 RenderStream不同的参数实现它不一样的功能。
Filter
hr = pBuilder->RenderStream(&PIN_CATEGORY_CAPTURE,
1 DirectShow的介绍
在DirectShow系统之上,我们看到的,即是我们的应用程序 (Application)。应用程序要按照一定的意图建立起相应的Filter Graph,然后通过Filter Graph Manager来控制整个的数据处理过程。 DirectShow能在Filter Graph运行的时候接收到各种事件,并通过消息 的方式发送到我们的应用程序。这样,就实现了应用程序DirectShow
WS_CLIPCHILDREN); //设定窗口大小 CRect rectClient; GetClientRect(hWnd,rectClient); m_pVW->SetWindowPosition(0, 0, 320, 240); //设定可视 hr=m_pVW->put_Visible(OATRUE);
光波分复用(WDM)技术

光波分复用(WDM)技术一、波分复用技术的概念ﻫ波分复用(WDM)是将两种或多种不同波长的光载波信号(携带各种信息)在发送端经复用器(亦称合波器,Multiplexer)汇合在一起,并耦合到光线路的同一根光纤中进行传输的技术;在接收端,经解复用器(亦称分波器或称去复用器,Demultiplexer)将各种波长的光载波分离,然后由光接收机作进一步处理以恢复原信号。
这种在同一根光纤中同时传输两个或众多不同波长光信号的技术,称为波分复用。
ﻫ通信系统的设计不同,每个波长之间的间隔宽度也有不同。
按照通道间隔的不同,WDM可以细分为CWDM(稀疏波分复用)和DWDM(密集波分复用)。
CWDM的信道间隔为20nm,而DWD M的信道间隔从0.2nm 到1.2nm,所以相对于DWDM,CWDM称为稀疏波分复用技术。
ﻫ CWDM和DWDM的区别主要有二点:一是CWDM载波通道间距较宽,因此,同一根光纤上只能复用5到6个左右波长的光波,“稀疏”与“密集”称谓的差别就由此而来;二是CWDM调制激光采用非冷却激光,而DWDM采用的是冷却激光。
冷却激光采用温度调谐,非冷却激光采用电子调谐。
由于在一个很宽的波长区段内温度分布很不均匀,因此温度调谐实现起来难度很大,成本也很高。
CWDM避开了这一难点,因而大幅降低了成本,整个CWDM系统成本只有DW DM的30%。
CWDM是通过利用光复用器将在不同光纤中传输的波长结合到一根光纤中传输来实现。
在链路的接收端,利用解复用器将分解后的波长分别送到不同的光纤,接到不同的接收机。
二、波分复用技术的优点ﻫWDM技术之所以在近几年得到迅猛发展是因为它具有下述优点:ﻫ (1) 传输容量大,可节约宝贵的光纤资源。
对单波长光纤系统而言,收发一个信号需要使用一对光纤,而对于WDM系统,不管有多少个信号,整个复用系统只需要一对光纤。
例如对于16个2.5Gb/s系统来说,单波长光纤系统需要32根光纤,而WDM系统仅需要2根光纤。
光波分复用(WDM)技术

光波分复用(WDM)技术第一章:了解光波分复用(WDM)把不同波长的光信号复用到一根光纤中进行传送(每个波长承载一个TDM 电信号)的方式统称为波分复用。
波分复用是一种光纤传输技术,这种技术在一根光纤上使用不同的波长传输多种光信号。
现在,在为远程通信设计的高端WDM系统中,每种光信号(通常是指一个信道或一种波长)最多可以达到2.5Gps或10Gbps的传输速率。
当前的系统能够支持32到64个信道,厂商承诺将在不久的将来提供支持96信道或128信道的系统。
这将使得一根光纤就能够传送几百Gps的信息。
密集波分复用(DWDM)一词经常被用来描述支持巨大数量信道的系统,在这里,“密集”没有明确的定义。
相反,在一根光纤上使用两个或者四个信道有时也被称为WDM。
<WDM光传输技术简介>波分复用(WDM)是光纤通信中的一种传输技术,它利用了一根光纤可以同时传输多个不同波长的光载波的特点,把光纤可能应用的波长范围划分成若干个波段,每个波段用作一个独立的通道传输一种预定波长的光信号。
通信系统的设计不同,每个波长之间的间隔宽度也有差别,按照通道间隔差异,WDM可以细分为W-WDM、M-WDM、D-WDM。
我们可以将一根光纤看作是一个多车道的公用道路,传统的TDM 系统只不过利用了这条道路上的一条车道,而使用D-WDM技术,类似于利用公用道路上尚未使用的车道,以获取光纤中未开发的巨大传输能力。
<波分复用技术的发展>波分复用技术在光纤通信出现伊始就出现了。
从1995年开始,WDM发展进入了快车道,Lucent率先推出了8*2.5G波分复用系统,Ciena推出了16*2.5G系统。
我国已完成了4*2.5G的现场实验,8*2.5G实验系统已通过签定。
WDM发展迅速的主要原因在于:(1)光电器件的迅速发展。
(2)TDM 10Gb/s面临着电子元器件响应时间的挑战。
(3)光纤色散和偏振模色散限制了10Gb/s的传输。
90年代初,EDFA(掺铒光纤放大器)的迅速商用化解决了WDM 复用器带来的插入损耗问题。
DirectShow编程捕捉WDM与VFW

DirectShow编程捕捉WDM与VFW说起视频捕捉问题,我们先要来看一下视频捕捉卡。
根据使用的驱动程序的不同来分类,目前市场上大致有两种捕捉卡:VFW (Video for Windows)卡和WDM (Windows Driver Model)卡。
前者是一种趋于废弃的驱动模型,而后者是前者的替代模型;WDM还支持更多新的特性,比如直接支持电视接收、视频会议、1394接口的设备、桌面摄像机、多条视频流(Line-21或Closed-Caption等)同时输出等等。
采用VFW的一般都是些以前生产的卡;市面上新出现的,一般都是采用了WDM驱动程序。
另外,视频捕捉卡的接口,可以是以PCI或AGP的方式插入PC机箱,也可以直接以USB接口的方式外挂;还有就是通过1394接口与PC机相连的数码摄像机等等。
使用DirectShow来处理一般的视频捕捉问题,是相对比较简单的。
这当然得益于DirectShow这一整套先进的应用架构。
捕捉卡通常也是以一个(Capture) Filter的形式出现的。
处理视频捕捉,我们同样是使用Filter Graph,同样是操作Filter;控制起来,就似于操作媒体文件的播放。
当然,这主要是从应用程序控制层面上来说的;视频捕捉的应用场合比较多,视频捕捉本身的一些处理还是有它的特殊性的,而且牵涉面比较广。
本文侧重于阐述一个建立视频捕捉程序的一般过程,以及WDM与VFW的兼容性问题。
当视频捕捉卡正确安装到系统中后,使用GraphEdit插入Filter,我们可以在“Video Capture Sources”目录下看到代表捕捉卡的那个Filter。
一般一个Capture Filter至少有一个Capture Output Pin;典型的情况下,还有一个Preview Pin或者Video Port Pin(一般Preview Pin和VP Pin不会共存)。
有些视频捕捉卡,能够同时捕捉Video和Audio,那么它的Filter自然还应该有Audio部分的输出Pin。
wdm
DWDM能够在同一根光纤中,把不同的波长同时进行组合和传输。为了保证有效,一根光纤转换为多个虚拟光 纤。所以,如果你打算复用8个光纤载波(OC),即一根光纤中传输8路信号,这样传输容量就将从2.5 Gb/s提高 到20 Gb/s。由于采用了DWDM技术,单根光纤可以传输的数据流量最大达到40Gb/s。随着厂商在每根光纤中加入 更多信道,每秒兆兆位的传输速度指日可待。
WDM服务使实现一个用于Windows NT和Windows 95快速反应的模型成为可能。WDM提供了多个执行优先级包 括核心态和非核心态线程、IRQ级别、和被延缓的程序调用(DPC)。所有的WDM类和微型驱动程序都作为核心态 (第0层)的特权级线程(不会被CPU调度程序中断)执行。32个IRQ级可以被用于区分硬件中断服务的优先级。 对于每个中断,DPC被排入队列等到被启用中断的IRQ服务例程完成后再执行。DPCs通过有效的减少中断被禁止的 时间,使系统对中断的响应获得了很大的提高。对于使用多处理器的基于x86的PC系统,在Windows NT下对中断 的支持是以Intel的多处理器规范1.4版本为基础的。
WDM的关键目标是通过提供一种灵活的方式来简驱动程序的开发,使在实现对新硬件支持的基础上减少并 降低所必须开发的驱动程序的数量和复杂性。WDM还必须为即插即用和设备的电源管理提供一个通用的框架结构。 WDM是实现对新型设备的简便支持和方便使用的关键组件。
为了实现这些目标,WDM只能以Windows NT I/O子系统提供的一组通用服务为基础。WDM改进了由一组核心 扩展构成的功能实现对即插即用、设备电源管理、和快速反应I/O流的支持。除了通用的平台服务和扩展外,WDM 还实现了一个模块化的、分层次类型的微型驱动程序结构。类型驱动程序实现了支持通用总线、协议、或设备类 所需的功能性接口。类驱动程序的一般特性是为逻辑设备的命令设置、协议、和代码重用所需的总线接口实现标 准化提供必要的条件。WDM对标准类接口的支持减少了Windows 95和Windows NT所需的设备驱动程序的数量和复 杂性。
WDM(WavelengthDivisionMultiplexing波分复用)介绍 (1)
WDM(Wavelength Division Multiplexing,波分复用)是利用多个激光器在单条光纤上同时发送多束不同波长激光的技术。
每个信号经过数据(文本、语音、视频等)调制后都在它独有的色带内传输。
WDM能使电话公司和其他运营商的现有光纤基础设施容量大增。
制造商已推出了WDM系统,也叫DWDM(密集波分复用)系统。
DWDM可以支持150多束不同波长的光波同时传输,每束光波最高达到10Gb/s 的数据传输率。
这种系统能在一条比头发丝还细的光缆上提供超过1Tb/s的数据传输率密集波分复用器(DWDM)是密集波分复用(DWDM)系统中一种重要的无源光纤器件。
由密集波分复用器构成的合波和分波部分是系统的基本组成之一,它直接决定了系统的容量、复用波长稳定性、插入损耗大小等性能参数的好坏。
密集波分复用器还可以衍生为其它多种适用于DWDM的重要功能器件,如波长路由器——用于宽带服务和波长选址的点对点服务的全光通讯网络;上路/下路器——用于指定波长的上/下路;梳状滤波器——用于多波长光源的产生和光谱的测量;波长选择性开关——不同波长信号的路由等,因此对于密集波分复用器的研究和制作具有重要的理论意义和良好的市场前景。
密集波分复用器的核心是窄带光滤波技术。
目前常见的光通信用滤波器主要有以下几种:介质膜滤光片、光纤光栅、阵列波导光栅、M-Z干涉仪和F-P标准具等。
DWDM(密集波分复用)无疑是当今光纤应用领域的首选技术,但其昂贵的价格令不少手头不够宽裕的运营商颇为踌躇。
有没有或能以较低的成本享用波分复用技术呢?面对这一需求,CWDM(稀疏波分复用)应运而生。
CWDM(稀疏波分复用)稀疏波分复用,顾名思义,是密集波分复用的近亲,它们的区别主要有二点:一、CWDM 载波通道间距较宽,因此,同一根光纤上只能复用5到6个左右波长的光波,“稀疏”与“密集”称谓的差别就由此而来;二、CWDM调制激光采用非冷却激光,而DWDM采用的是冷却激光。
视频 采集 原理
视频采集原理
视频采集是指通过摄像设备将现实中的影像内容转换为数字信号,并记录在存储介质中。
其原理主要涉及到摄像头、图像传感器、模数转换器等关键部件。
首先,我们需要使用摄像头捕捉现实中的影像内容。
摄像头是一种光电传感器,它能够将光信号转换为电信号。
摄像头通常由一个透镜系统和一个图像传感器组成。
透镜系统负责将光线聚焦到图像传感器上,而图像传感器则负责将光信号转换为电信号。
透镜系统通常由多个透镜组成,以提供不同的焦距和视场。
图像传感器是视频采集的核心部件。
它主要由光敏元件和电荷耦合器件(CCD)或者互补金属氧化物半导体(CMOS)组成。
当光线进入图像传感器时,光敏元件会将光信号转换为电荷,并将电荷存储在不同的电容中。
然后,CCD或CMOS负责将
电荷转换为电信号。
CCD通过将电荷逐个传递到输出端进行
转换,而CMOS则通过开关控制来实现电荷转换。
最后,模数转换器(ADC)将模拟信号转换为数字信号。
模
拟信号是连续变化的电压信号,而数字信号是离散的电压值。
模数转换器将模拟信号转换为数字信号的过程主要涉及到采样和量化。
采样是指按照一定的时间间隔对模拟信号进行采集,而量化则是将采样信号映射到一系列离散的电压值上。
模数转换器将采样和量化后的信号转换为数字信号,并将其记录在存储介质中。
总的来说,视频采集是通过摄像头将现实中的影像内容转换为数字信号的过程。
摄像头捕捉影像内容后,图像传感器将光信号转换为电信号,再经过模数转换器转换为数字信号,并最终被记录在存储介质中。
浅究实时音视频数据采集和传输技术
浅究实时音视频数据采集和传输技术目前,实时音视频的数据采集和传输技术应用十分广泛,例如公司里常用的视频会议、学校中常见的远程教育、超市里的视频监控、大家常用的视频通话等。
因为在不同的场合对于实时音视频数据采集和传输技术的要求也有所不同,所以根据实际问题选择合适的技术设计是非常重要的。
人们之前使用的采集设备虽然使用方便,但是由于硬件的相关性强,使用起来会发生运用不灵活的现象,在一些比较复杂的场合就不太适合应用。
现下使用率最高的就是Windows Media、VFW和Direct Show三种技术软件,下面本文就针对这三种技术进行简单的介绍,希望可以为人们更好地使用提供方法。
1 使用VFW进行音视频数据采集VFW是在1992年由微软公司推出的一项新的音视频方面的技术手段,主要是为了解决当时存在的数学音视频中遇到的问题。
VFW的使用极大地方便了音视频的数据采集,不仅可以对数据进行实时采集、编辑和播放的功能,还能开发其他复杂的应用。
VFW的不同模块具有不同的功能,其中最常用的就是VFW中的AVICAP模块,它可以用来实现视频捕捉的功能。
首先,我们要在应用程序中创建一个AVICAP的窗口;其次,可以通过向这个窗口发送消息来实现对窗口的控制。
AVICAP的优点是可以对数据实现全面的捕捉,并将捕捉到的数据写入磁盘中,可以给用户提供预览的功能;缺点是不擅长使用非文件型的视频、软件等,在程序的运行过程中,不能通过改编程序对这些视频、软件的格式及属性进行更改,而只能像平常一样,在对话框里设置这些格式和属性。
在把音视频的数据转化为文件的时候,VFW最擅长的就是对AVI文件的转换。
VFW进行音视频捕捉的过程可以简单地概括成:创建需要进行捕捉的窗口、对需要回调的函数进行注册处理、获得需要捕捉的窗口的设置功能、设置参数等,将这些工作处理完毕后,就要断开主机与捕获设备的连接,以防数据的丢失。
VFW还具有对音视频数据的压缩和解压、对文件信息的更改、控制图像显示等主要功能。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
WDM 视频捕获介绍-孙涛-摘要:该文主要提供一些在Win98,win2K及以上操作系统中,进行Windows Driver Model(WDM)视频捕获的相关知识介绍。
如果你对WDM视频捕获感兴趣,可以来看看这些东西。
欢迎到我的博客/suntaoznz看其他文章!目录Windos下视频捕获简史 (1)WDM和视频捕获 (1)VfWWDM Mapper (2)WDM 视频捕获结构 (2)DirectShow应用程序 (3)DirectShow Filter Graph (3)WDM数据流 (4)视频捕获Minidrivers (4)Pins, Streams, Formats (4)视频流命名约定 (5)DirectShow 视频捕获的接口和属性 (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 和render。
(注:有些资料将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 {ULONG FormatSize;ULONG Flags;ULONG SampleSize;ULONG Reserved;GUID MajorFormat;GUID SubFormat;GUID Specifier;};ULONGLONG Alignment;} KSDATAFORMAT, *PKSDATAFORMAT, KSDATARANGE, *PKSDATARANGE;DirectShow 视频捕获的接口和属性DirectShow 提供了与许多视频相关的接口,它们中的一些还有附带相关的属性。
下面列出的这些接口是实际应用较多,并不带相关属性的:∙IAMAudioInputMixer∙IAMDroppedFrames∙IAMStreamConfig∙IAMVfwCaptureDialogs∙IAMVfwCompressDialogs∙IcaptureGraphBuilder∙ICreateDevEnum捕获数据流类型视频流大致由时间标记,数字视频,和其他相关信息(比如VBI,时间编码)组成,流可以被暂停,开始和停止。
流一般是100ns一次进行数据采样,大多数情况下,每个数据帧存放在每个ImediaSample缓存区中。
流输出数据格式流的数据类型由KSDATARANGE 数据结构的StreamDescriptionFlags 字段来标识,它们定义如下:KS_VIDEOSTREAM_CAPTURE主要的视频流格式,用于视频会议和把数据写入磁盘。
KS_VIDEOSTREAM_PREVIEW用于显示视频,它使用的是没有压缩的数据格式,所以不需要进行特别的解压操作。