




已阅读5页,还剩52页未读, 继续免费阅读
(通信与信息系统专业论文)基于千兆以太网的立体视频实时传输系统设计与实现.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要 随着计算机网络和视频压缩技术的迅速发展,视频点播、远程教学、视频会 议等流媒体技术得到了越来越广泛的应用。然而,当前大部分的视频传输系统都 是基于平面视频内容,这已经无法满足人们对于立体视频的观看需求。立体视频 与平面视频相比,增加了景物的深度信息,能给观看者带来更真实的立体感。因 此立体视频是下一代多媒体技术的必然趋势,基于立体视频的传输系统有着重要 的研究价值。 本文以d i r e c t s h o w 为开发平台,结合流媒体技术设计了一个基于以太网的 立体视频实时传输系统。在前端采集部分,通过8 个摄像头对同一场景进行实时 采集,然后利用网卡将这些原始视频发送到接收端;接收端对收到的视 频先进行到r g b 的色彩空间转换,然后合成为单路立体视频,并在3 d 显示器上播放出来。由于传输的是多路未经压缩的原始视频,所以数据率极大, 这就要求传输速度足够的高,才能保证视频的流畅播放。 提出并实现了一种适用于未压缩视频流的抗丢包方案,该方案通过在发送端 对视频数据进行简单的像素交织,以及接收端的插值处理,达到了在5 传输丢 包率的情况下,视频质量无明显的下降。提出并实现了一种低开销的多视点视频 流同步方案,当某个视点发生多帧丢失时能较好的恢复丢失的视频帧,实现多路 之间的帧同步。传统的千兆以太网传输的业务数据速率很低,一般只能达到 3 0 0 m b p 孽q o o m b p s 左右,本文通过采用多线程、多套接字以及优化网络参数等 技术实现了最高9 0 0 m b p s 的数据传输速率,完全能满足8 视点视频流实时传输 的需要。 本文利用多线程技术对8 路视频进行并行传输,并对数据包编号,便于在接 收端进行包失序重排,并利用自定义的中值滤波算法对丢失的数据包进行恢复。 通过实验证明,本算法不仅极大的减小了丢包所产生的错误,而且速度快、消耗 c p u 资源少,达到了预期的要求。 关键词:立体视频实时传输d i r e c t s h o w 以太网 a b s t r a c t w i t i lt l l e r a p i dd e v e l o p m e n to fc o m p u t c rn e t w o r k s 锄dv i d e oc o m p r e s s i o n t e c h n o i o g y ; v i d e oo nd e m a n d ,d i s t a n c e l e a m i n g , v i d e o c o n f e r e n c i n g a n do t t i e r s t 陀锄i n gm e d i at e c h n o l o g yi si 1 1 c r c 弱i r i g l yw i d e l yu s e d h o w e v e r m o s to fm e c u m m tv i d e 0t r 狮s m i s s i o ns y s t e m sa r cb a s e d0 np i 锄ev i d e o ,w h i c hh a v eb e 朗u n a b l e t 0s a t i s 母t h ed e m 锄d 向rv i e w i n gs t c r e o s c o p i cv i d e o c o m p a r e dt 0p i 锄ev i d e o , s t e r c o s c o p i cv i d e oi n c 他硒eo ft h ed e p t hi n f o m a t i o no fl 锄d s c a p e ,w h i c hb r i n gm o 他 s t e r e o s c o p i ci i n p 陀s s i 伽t 0v i e w e r t h u ss t e 佗o s c o p i cv i d e oi si n e v i t a b l et 佗n do ft h e n e 斌g c n e 随t i o no fm u l t i m e d i at c c h n o l o g y ;v i d e ot 眦l 锄i s s i o ns y s t c mb 勰c d0 n s t e 陀0 s c o p i cv i d e oh 嬲i m p c 峨锄t 他a 佗hv a l u e i nt h i sp a p e r ,w ed e s i g n c dae t h e m e t - b a ds t c r e o s c o p i cv i d t r 蚰s m i s s i o n s y s t e m ,u s i n gd i r e c t s h o wd e v e i o p m e n tp l 锄f o 册c o m b i n c dw i t hs t r e 锄i n gm c d i a t e c t l i l o l o 缈c 印t u 他di nt l l e 舶n tp a nt t l r o u g l le i g h tc 姗e 娜i n 他a 1 t i m e ,t h e e i 曲t o r i g i n a iy l v i d e oa 佗t l l e n n tt 0t h er e c e i v 盯b yn l c ;a r e r 陀c e i v i n gt h e9 i g h t p a t h v i d e 0 ,c e i v 盯f i r s tp e 廊mc o l o r - s p e c 彻v e 商伽舫m t 0r g b ,锄dt h 曲 s y n t h e s i 髓t h e mt 0s i n g l es t e r e o s c o p i cv i d ,b e f o 豫p l a y i n go u ti nt h e3 dd i s p l a y s c r e e n s i n c et l l ev i d e ow e 舰n s m i t t e di so r i g i n a lm u l t i p l ev i d e ow i t l l o u tc o m p r e s s i o n , t h ed a t ar a t ei s s i g n i f i c 锄t l yh i g h ,w h i c h l l sf o rah i g h 蛐o u g hs p e e dt 0c n 鲫r e 锄0 0 t hv i d e 0p l a y p f d p o s c d 舳di m p l e m e n t e das u i t a b l e h e m ef o ru n c o m p r e s dv i d e 0s 臼广c 锄 p a c k e tl o s s ,、h i c hb yas i m p i ep i ) 【e l i n t e r i 铭v i n gi nt l i et r 柚s m i n e r 舳di n t e 巾o l a t i o n i nn i e i v e r t h i s h e m ec 锄a c h i e v en os i g i l i f i c 锄td e c l i n ei nv i d c 0 q u a l 妙u n d e r a5 仃宣n s m i s s i o nl o s sr a t e p r o p o d 锄di m p l e m e n t e dai o wc o s tm u l t i v i e wv i d e o s 仃e 锄ss y n c h r o n i z a t i o nm e t h o d w 1 1 e nc n t i 陀f h m el o s so c c u r r e d ,t h i sm e t h o d a s s u 陀db e n e r 眦o v c 秽粕d h i e v c d 觑啪es y n c h r o n i z a t i o nb e 眦e nm u l t i p l ev i e w p o i n t t 脚i t i o n a ld a t a仡t e g i g a b i t e t h e m e ti s v e 叮 l o w o n l yh i e v e a p p r o x i m a t e i y3 0 0 m b p s 一4 0 0 m b p s w eu k i n d so ft c c h n o l o g i e ss u c h嬲 m u l t i - t h r e a d i n g ,m u l t i s o c k e t 锄do p t i m 娩a t i o no fn e t w o r kp a r a m e t e r s ,t oa c h i e v et h e h i g h e s td a t an a n s 诧r 髓t eo f9 0 0 m b p s ,w h i c hm e e t 他a 1 t i m e 仃a n s m j s s i o nn e e d so ft h e 8 - v i e wp o i n tv i d e os t r e 锄i n g m u l t i - t h r e a d i n gt e c h n o l o g yi se m p l o y e dt 0d op a 豫l l e lt r 蚰s m i s s i o n ,a n da l lt h e p a c k c t si sn u m b e r c dc o n c u t i v e i yi no r d e rt 0r e a r m n g et h eo u to fo r d e rp a c k e t s ,锄d u s i n gac u s t o mi n t e r p o l a t i o na l g o r i t h mt 0 他c o v e rl o s tp k e t s e x p e r i m e n t a i 坞s u l t s s h o wt h a tt h ea l g o r i t h mn o to n l yg r e a t l yr e d u c e st h ep a c k e tl o s s 他s u l t i n gf 而me r r o r s , 锄di sv e 巧f a s t ,c o n s u m e sl e s sc p u 代s o u r c e s ,w h i c h h i e v e dt h ed e s i dr e s u l t s k e y w o r d s :s t e 他o s c o p i cv i d e o ,r e a l - t i m et r 柚s m i s s i o n ,d i r c c t s h o w e 胁e m e t 第一章绪论 1 1 课题的研究背景和意义 第一章绪论 随着通信技术和计算机网络技术的迅速发展,各种媒体的应用需求也急速增 长,为多媒体技术的发展提供了坚实的市场基础和推动作用。以往在i n t e m e t 上 传输视频受到诸多方面的限制,如网络带宽低、传输延时高、处理速度慢等。随 着网络硬件设备的迅速发展,以及各种高效视频编码技术的不断推出,这些瓶颈 和缺陷已经被基本消除,基于i p 网络的流媒体应用已经从实验室走向了商业化的 市场运作【1 】【2 1 ,视频聊天、视频会议、远程教育【3 】已经得到了越来越广泛的应用。 在普通平面视频的观看需求得到满足后,人们越来越希望能够在线观看立体视 频。基于立体视频的在线点播系统成为了现在的研究热点,也是下一代互联网的 发展方向【4 1 。 同时,为了随时随地能方便的享受到流媒体丰富的各种业务,无线通信与多 媒体通信正逐步走向融合。由于移动设备携带方便、普及率高,基于无线网络的 流媒体技术,例如手机电视【5 l 【6 l 、移动多媒体广播电视【7 l 等有着广泛的发展前景 和重要的研究价值。在6 1 5 g h z 的频段中,目前还有相当大一部分可用于移动通 信的频段未被开发。近年来的研究表明,采用先进的分布式天线技术,可以解决 此频段上无线通信覆盖与组网问题。高频段无线通信系统的研究开发可为大容 量、低速移动环境的无线通信提供一个可行的技术途径,可以缓解目前6 g h z 以 下频段拥挤的问题,成为拓展未来移动通信的重要发展方向【引。而且高频段的数 据承载率高,更容易满足多媒体业务对带宽的苛刻要求。 本课题来源于国家8 6 3 重点项目一“高频段无线通信基础技术研究开发与示 范系统 子课题“高频段通信示范数据业务平台 。该项目的任务是开发高频段 频谱资源,通过对组网方式、调制技术、天线技术等理论的研究,实现千兆( g b p s ) 大容量、低速( 5 l ( m p h ) 及静止环境下的无线移动通信应用示范系统。数据业务平 台的任务是搭建一个多视点立体视频远程演示系统,主要包括多路视频的实时采 集、发送、接收、合成与显示几大模块。该系统将提供最高l g b p s 的业务速率, 以用于高频段无线通信系统的宽带数据业务能力的示范验证。子课题实现完成演 示系统后,与传输示范系统通过千兆交换机端口连接。本课题的研究目标是在 p c 机上实现与千兆交换机的接口以及系统要求的其它特定功能。 第一章绪论 1 2 研究现状 早期的流媒体系统常用在互联网上传输一些低质量的多媒体信息,但是随着 网络技术的发展和用户要求的不断提高,一些高质量的流媒体应用已经开始出 现,如i p t v 可以向用户传输标清甚至高清的电视节目【9 】【1 0 】。早在2 0 0 5 年,国内 的清华大学就和韩国k a i s t 大学联合开展了基于i p v 6 网络的皿v ( h i g h d e f i n i t i o nd i g i t a lv i d e o ,高清晰数字视频) 传输实验【1 1 】,该实验基于 w i n d o w s 平台,采用跨越中韩两国的i p v 6 网络,带宽为1 5 5 m b p s ,中途经过多个 支持i p v 6 协议的路由器。该项目支持单播和组播,并且是开源的。 另外,基于i p 网络的立体视频传输也是目前的研究热点。而且伴随着网络带 宽的不断增长,非压缩高清视频的传输也吸引了越来越多研究机构的兴趣。美国 南加州大学信息科技研究所( i n f o m a t i o ns c i 朗c e s i n s t i t u t e0 fu n i v 盯s 埘o f s 0 u t h e mc a l i f o m i a ) 开发了一个基于i p 网络的高速视频传输系统【1 2 】,其目的是开 发一个基于下一代网络的超高质量的视频会议工具,并能提供一个研究平台,用 于开发高性能实时传输协议、多媒体应用中的拥塞控制算法和音视频编解码。这 个被称作u i t 删g r i d 的开发平台目前被广泛应用于非压缩视频传输领域的研究。 虽然非压缩高清视频占用的带宽很大,但是相信随着网络资源的不断丰富, 带宽将不会成为瓶颈。而且相比压缩视频,它有着如下几项优势【1 3 】: ( 1 ) 非压缩视频能带来更好的视觉效果。当前绝大部分的压缩算法都是为了 追求压缩率而采用有损压缩,所以解码恢复之后的视频比压缩之前的效果要差一 些。如果压缩倍数比较大,人眼将能感受到压缩带来的失真。而采用非压缩视频 就没有这个问题,这也是非压缩视频最大的优点。 ( 2 ) 非压缩视频具有统一的格式,可以被任何视频设备传输和接收。当前市 场上有成千上万的设备可以产生、处理并接收非压缩串行数字视频( s d l :s e r i a l d i g i t a li m e m c e ,串行数字接口,符合s m p t e2 5 9 m ,2 9 2 m 和或i t u r b t - 6 0 1 4 5 6 协议) 。用户也希望从一个厂商设备的s d i 输出可以直接连接到另外 一个厂商设备的s d i 输入接口上。如果采用压缩,那么采用特定的压缩算法的 视频将只能被支持相应的解压缩算法的设备接收,这样降低了不同厂商开发的设 备之间的互通性。 ( 3 ) 非压缩视频传输的端到端延迟比较低。对于当前比较流行的压缩标准而 言( 例如m p e g 、h 2 “) ,编码和解码操作要花费大量时间,从而导致比较大的 延迟,而在某些情况下,低延迟是必须要保证的,例如涉及到和用户交互时。而 且从操作的角度来看,低延迟意味着错误检测也会更加及时,从而可以被很快的 处理或恢复。 2 第一章绪论 ( 4 ) 非压缩视频减少了压缩和解压缩设备所花费的成本。在一些对压缩效率 和压缩质量有着严格要求的场合,一般采用硬件设备来实现压缩和解压缩,这些 设备一般比较昂贵。即便是采用软件来实现,在开发过程中涉及到的时间和人力 成本花费也是不小的。 1 3 课题可行性分析 本课题所在的项目组较早的开始了立体视频相关领域的研究工作,已经完成 了多个基于三维立体视频的项目与课题,包括立体图像合成算法、立体视频采集 与同步技术的研究。项目组在立体图像及视频领域的研发实力和技术积累较为雄 厚,为课题研究的开展奠定了坚实的理论基础。 d i r e c t s h o w 应用编程接口是微软推出的基于w i n d o w s 平台的流媒体架构,它 能够方便的实现音视频采集和多媒体文件的回放,为各种多媒体应用提供了一套 完整的解决方案,是开发视频程序的首选工具【1 4 】。通过使用d i r e c t s h o w ,可以将 课题的研究重点放在立体视频各个模块内部的功能实现上,而将数据异步传输、 硬件差异、音视频同步、各模块之间的交互等复杂繁琐的工作交由d i r c c t s h o w 来 完成,从而使得开发工作变得简洁高效、模块清晰。 由于早期进行过相关的研究工作,实验室拥有齐全的设备,如立体显示器、 视频采集卡、千兆以太网交换机、高性能计算机等。这些硬件条件为课题的成功 开展奠定了坚实的基础。 由于8 路原始视频流的数据率极大,如何提高传输速率是本系统成功与否的 关键。同时需要在接收端对传输过程中产生的差错进行恢复,以便于后端的合成 与显示,这些处理都必须在实时的条件下完成,如何实现高效的差错控制算法也 是本课题的一个难点。 1 4 主要工作和论文结构 本文的主要工作如下: 1 研究实时视频传输相关理论与技术,提出合理的总体框架; 2 研究网络参数对视频传输的影响: 3 实现8 路视频并行传输,峰值速率达到8 0 0 m b p s ; 4 传输过程中的抗丢包方案; 5 多视点同步与帧同步; 6 在发送端实现编号与交织,在接收端实现包排序与插值恢复; 7 完成单路p i n 的网络发送f i l t e r 与多个p i n 的网络接收f i l t e r 。 第一章绪论 论文结构如下: 第一章:绪论。介绍课题的研究背景和意义,国内外发展现状,课题的可行 性分析,以及本文的主要工作和全文内容安排。 第二章:w i n d o w s 网络编程与d i r e c t s h o w 系统概述。简要介绍了w i n d o w s 平台下基于s o c k e t 的网络编程方法,阻塞与非阻塞的概念,d i r e c t s h o w 系统架 构及相关使用方法。 第三章:实时传输关键技术研究。首先通过比较各种网络协议的特点,选择 了适合本课题的传输协议;然后通过实验分析了s o c k c t 参数对网络性能的影响; 并探讨了满足q o s 的各种有效手段,包括排序、流量控制等。最后对本文采用 的以太网传输方案进行总体设计说明。 第四章:网络发送端设计与实现。首先实现了网络发送f i l t e r ,在其中完成 了交织、包编号等功能;并提出了q o s 反馈机制的实现。最后对发送f i l t e r 进行 初步验证。 第五章:网络接收端设计与实现。实现包重排序、中值滤波恢复,并在此基 础上实现了多输出p i n 的网络接收源f i i t c r ,并对其加以验证。 第六章:总结与展望。对全文所作的工作进行了总结,并对系统的进一步改 进提出了几点建议。 4 第二章w i i l d o w s 网络编程与d c t s h o w 系统概述 第二章w i n d o w s 网络编程与d i r e c t s h o w 系统概述 2 1w i n d o w ss o c k e t 网络编程技术 2 1 1 套接宇( s o c k e t ) 的概念 套接字是从英文单词s o c k e t 翻译而来,它是网络通信的基本操作单元,是 应用层到传输层的接口,可以将套接字看做不同主机间的进程进行双向通信的端 点。w i n d o w ss o c k e t ( 简称w i n s o c k ) 是在w i n 3 2 平台上访问底层网络协议的接 口,通过使用w i n s 0 c k ,程序员可以方便的编写各种网络应用程序,包括一些高 级应用如组播、q o s ,而不用关心底层网络协议是如何实现的。 套接字可以根据通信性质分类,这种性质对于用户是可见的。应用程序一般 仅在同一类的套接字间进行通信。根据使用的通信协议的不同,套接字可以分为 流套接字、数据报套接字、原始套接字等。 流式套接字提供面向连接、可靠的数据传输服务,数据无差错、无重复的发 送,而且按照发送顺序接收。流式套接字实际上是基于t c p 协议实现的。 数据报套接字提供无连接服务。数据包以独立包的形式发送,不提供无差错 保证,根据网络情况,数据可能丢失或者重复,并有可能接收顺序混乱。数据报 套接字实际上就基于l ) p 协议实现的。 原始套接字是基于l p 层协议的套接字,提供了对传输层的下一层即网络层的 直接访剐1 5 】。使用原始套接字接收到的数据是整个i p 数据包,原始套接字可以访 问i c m p 和i g m p 等协议包,可以读写内核不处理的i p 数据包,还可以创建自定义 的i p 数据包首部。原始套接字常用于开发新的网络协议或者网络嗅探器。 在t c m p 网络应用中,通信的两个进程间相互作用的主要模式是客户机 服务器模式( c i i e n 以e n ,e r ) ,即客户向服务器提出请求,服务器接收到请求后, 提供相应的服务。客户机服务器模式的建立基于以下两点:首先,建立网络的 起因是网络中软硬件资源、运算能力和信息不均等,需要共享,从而造就拥有众 多资源的主机提供服务,资源较少的客户请求服务这一非对等作用。其次,网间 进程通信完全是异步的,相互通信的进程间建立联系,为二者的数据交换提供同 步,这就是基于客户机服务器模式的t c p i p 。 第二章 w i r i d o w s 网络编程与d i r e c t s h o w 系统概述 2 1 2w i n d o w ss o c k e t 的基本函数 在实际动手编写w i n d o w s 网络应用程序之前,有必要介绍一下常用的一些 s o c k e t 函利1 6 】f l7 】。 1 w i n s o c k 的启动与终止:w s a 咖p ( ) 与w s a c l e 锄u p ( ) 在利用套接字编程时,第一步就是加载套接字库。这个函数有两个功能:一 是加载套接字库,二是选择套接字库的版本。对于每一个w s a s t a 咖p 函数的成 功调用,在最后都必须对应一个w s a c l e 柚u p 调用,以释放为该应用程序分配的 套接字资源,终止对s o c k e t 动态链接库的使用。 2 创建套接字:c k e t o 为了进行网络通信,程序必须创建一个套接字,可以使用以下函数: s o c k e ts o c k e t ( i n ta i n t 够p e ,i n tp r o t o c 0 1 ) ; 参数a f 指明协议簇,包括网际协议、i p x s p x 协议、n e t b i o s 协议、a t m 等等;参数t y p e 指定套接字的类型,如流式套接字、数据报套接字或原始套接 字;参数p r o t o c o l 指定套接字使用的协议,一般指定为0 即可。 协议簇与不同的套接字类型组合,用于不同的通信协议,如下所示: _ a fn 屺t 与s o c ks t r e a m 结合:用于t c p 协议。 _ a fm t 与s o c kd g r a m 结合:用于u d p 协议。 _afi n e t 与s o c kr a m 结合:用于i c m p 、i g m p 等协议。 3 指定本地地址:b i n d o 在服务器端,当为某种特定协议创建了套接字时,就必须将其绑定到一个已 知地址,在这个地址上进行随后的监听或数据收发操作。对于网际协议,这个地 址就是3 2 位的i p 地址加上1 6 位的端口号。 4 监听连接:l i s t c n o 该函数仅被t c p 服务器调用,用于将一个已绑定但尚未连接的套接字设置 为监听模式,通过此函数还可以设定内核为此套接字排队的最大连接数目,用于 对该c k e t 可同时处理的连接数进行限制。当有多于该数目的连接请求到来时, 前面的几个请求将被放入等待队列中,等待应用程序处理,而多出的连接将被丢 弃。底层协议本身对这个最大连接数有限制,如果此函数提交的值大于限制,那 么它会被最接近的合法数值替代。 5 建立套接字连接:c o 肿e c t o t c p 客户端用此函数来建立一个与t c p 服务器的连接。需要在此函数的参 数中指定服务器端的地址( 包括i p 地址和端口号) 。 6 接受连接请求:a c c e p t o 6 第二章w i n d o w s 网络编程与d h c t s h o w 系统概述 此函数由t c p 服务器调用,用于接受t c p 客户端发送过来的连接请求。如 果成功完成,这两个函数将返回由内核生成的一个全新套接字,代表与客户机的 连接,而原来的套接字不变,它将继续处于监听状态,等待客户端的连接请求。 7 数据发送:n d ( ) 和s e n d t 0 ( ) 通过介绍前面的函数,无论是服务器还是客户端,都已经可以正确地建立连 接了,在建立成功的连接之后,就是网络通信的主要工作数据传输了。不论 是客户端还是服务器端,都用n d ( ) 函数来向t c p 连接的另一端发送数据。 n d t o ( ) 和n d ( ) 很相似,只是多了两个参数。s e n d t 0 0 一般用于数据报,在i p 协 议簇中即是u d p 协议,由于u d p 协议是非连接的,所以每次收发数据时都必须 目的地址,它多出来的两个参数即用于此目的。如果成功调用,这两个函数返回 发送出去的字节数。 8 数据接收:c v o 和佗l c v f i r o m o 这两个函数用于从网络上接收数据。其中他c v ( ) 通常用于流套接字,如t c p 协议:而r e c v 舶m o 函数通常用于数据报,如l 刀) p 协议。同理,由于u d p 是面 向非连接的,他c v 舶m ( ) 比陀c v o 多两个参数,用于保存发送方的的地址信息。 9 字节顺序转换:h t l o :h t o n s o 、n t o h l o 、n t o h s o 字节顺序是指多于一个字节类型的数据在内存中的存放顺序,字节顺序有两 种:小字节序( l m ee n d i 锄) ,即将低位字节存储在低地址;大字节序( b i ge n d i 粕) , 即将高位字节存储在低地址。不同的处理器和操作系统有不同的字节序类型。例 如,基于i n t e lx 8 6 架构的计算机全部采用小字节序,而肿架构的u n i x 操作系 统采用大字节序,n t 系统采用小字节序。 网络字节顺序是t c m p 中规定好的一种数据表示格式,它与具体的c p u 类 型、操作系统等无关,从而可以保证数据在不同主机之间传输时能够被正确解释。 网络字节顺序采用大字节序。 在不同的系统平台下进行网络传输的时候,字节转换就显得很有必要了。函 数h t o n l ( ) 和h t o n s ( ) 将主机字节序转换为网络字节序,n t o h l o 、n t o h s o 则是将网络 字节序转换为主机字节序。 2 1 3 阻塞、非阻塞与异步处理 w i n d o w s 套接字在两种模式下执行i o 操作:阻塞模式和非阻塞模式【1 8 】。在 阻塞模式下,在i o 操作完成之前,执行操作的w i n s o c k 函数会一直等待下去,不 会立即返回( 即不会将c p u 控制权交还给程序) 。例如,程序中调用了托c v 舶m 函数后,如果此时此刻网卡上没有数据发送过来,那么这个函数会一直停住,从 而导致线程的暂停运行,当网卡上收到了数据后此函数才返回。在非阻塞模式下, 7 第二章w i i l d o w s 网络编程与d h c t s h o w 系统概述 w i n s o c k 函数在调用之后会立即返回,不管操作是否成功完成。应用程序通过检 查函数的返回值确定函数是否被成功执行。 在有些情况下,我们不希望套接字处于阻塞模式,也就是说我们不希望对套 接字的调用使进程进入睡眠状态,相反,我们希望在此时能够进行其他的一些操 作,然后在套接字调用可以继续进行或完成时再进行相应处理,我们可以通过将 c k e t 设置为非阻塞来实现。 异步处理是指当某个套接字描述符上发生了某个事件时,由内核通知进程。 在进行异步方式的套接字调用时,调用函数将立即返回,当操作完成或出现错误 时,系统以某种方式通知进程。虽然异步调用与非阻塞调用很类似,但是它们是 不同的。在启动非阻塞调用后并不像异步调用那样立即返回,而是只在操作不能 立即完成而进程必须睡眠时才返回。 2 2d i r e c t s h o w 概述 2 2 1d i r e c t s h o w 系统组成 处理多媒体数据面临着很多复杂的问题,主要体现在以下几个方面【1 9 】: 1 多媒体流包含的数据量十分庞大,而这些数据需要被迅速的处理; 2 音频和视频必须时刻保持同步,并以相同速率播放; 3 数据流可能来自于很多地方,如本地磁盘文件、视频采集设备或网卡等; 4 多媒体数据流的格式多种多样,如a 、m p e g 、a s f 等等。 5 不同的终端设备上安装有不同的硬件设备,这点对于编程人员是不可知的。 d i 陀c t s h o w 就是为了帮助开发人员解决上面的那些问题而推出的,它的目的 是简化在w i n d o w s 平台上开发多媒体应用程序,让编程开发人员从数据流传输、 硬件差异、同步等复杂繁琐的底层问题中解放出来。 d i 佗c t s h o w 基于c o m 架构( c o m p 伽e n tob ! j e c tm o d e l ,组件对象模型) ,将 每一个模块的功能细分成许多个c o m 组件来实现,这种模块化的架构结构清晰, 易于维护,很利于多人共同开发一个多媒体应用程序。下图显示了应用程序、 d i r e c t s h o w 、相关的硬件和软件设备之间的关系。 如图2 1 所示,虚线以下是r i n g0 权限的硬件设备,包括网卡、声卡、磁盘、 视频捕捉卡等;虚线以上是r i n g3 权限的应用程序层,而d i r c c t s h o w 则是硬件 设备与上层应用程序之间的桥梁。由于操作系统的屏蔽,应用程序不能直接访问 r i n g0 权限的硬件设备,不过通过调用d i 陀c t s h o w 的f i l t e r ,应用程序可以很方 便的操作它们,从而实现种类丰富的多媒体应用,例如文件回放、视频采集、网 8 第二章 w i i i d o w s 网络编程与d h c t s h o w 系统概述 络聊天等。 k e r n e i s t r e a m i n 口 a r c h 他e c t u r e 盈墨【墨 w d m c 6 d t u r e d e v j c e s南,南l 蓦蓦 图2 1d h c t s h o w 系统结构框图 图中箭头所指的方向代表媒体数据流动的方向,可以看到,数据从文件系统、 网络、或音视频捕捉设备出来后,由源过滤器( s o u r c ef i l t e 璐) 送给变换过滤器 ( t r 锄s f o 肌f i l t e 体) 处理,最后传给提交过滤器( r e n d e r i n gf i l t e 倦) ,由它将多 媒体流通过显卡声卡播放出来或者存储到磁盘中,这样就实现了一个完整的多媒 体应用。 2 2 2 过滤器 d i r e c t s h o w 使用一种模块化的架构,每一步处理都由一个被称作“过滤器” ( f i l t e r ) 的c o m 组件来完成。d i 他c t s h o w 提供了很多现成的过滤器供应用程序 使用,开发者也可以自行开发实现特定功能的过滤器,来拓展d i 他c t s h o w 的功 能。 过滤器可以分为如下几个大类: ( 1 ) 源过滤器( s 0 u r c ef i i t e r ) :将数据引入过滤器图表,数据可能来自于文 件、网络、摄像头或其它任何地方。 ( 2 ) 变换过滤器( t r a n s f o mf i l t e r ) :接收一个数据流,对其进行相应的处理, 然后创建一个输出流将其输出。编码、解码f i l t e r 就是典型的变换过滤器。 ( 3 ) 提交过滤器( r e n d e r e rf i l t e r ) :位于整个f i i t e r 链路的最末端,通常用于 将数据流提交给使用者。例如,将数据通过显卡显示出来,发送到网卡,或者存 9 第二章 w i i l d o w s 网络编程与d h c t s h o w 系统概述 储到磁盘文件上。 ( 4 ) 分割过滤器( s p l i t t e rf i l t e r ) :将一个输入数据流分成多路输出流,典型 的如a v l 分割过滤器,它将a v i 媒体流分成视频流和音频流。 ( 5 ) 合并过滤器( m u xf i l t e r ) :与分割过滤器刚好相反,它将多路输出流合 并成一路输出流。 过滤器的这几种分类并没有明确的界限,例如,a s fr e a d e r 既是一个源过 滤器又是一个分割过滤器。 2 2 3 媒体类型 不同的f i l t e r 之间可以相互连接进行数据交换,因为它们都遵循c o m 组件 规范。既然涉及到数据流的交互,就必须有一个统一的媒体格式说明来对数据率 进行说明。每个f i l t e r 都支持一定格式的媒体类型,两个f i i t e r 连接之前需要进 行媒体类型检查,以确定它们是否都能支持同一种类型,如果支持才能进行数据 传递。 d i 佗c t s h o w 使用媒体类型( m e d i at y p e ) 来描述各个f i l t 盯处理的数据流格 式。媒体类型实际上是在d i 恻s h o w 中定义的一个数据结构a mm e d 认t y p e , 它主要由三部分组成:m 面o n y p e ( 主类型) 、s u b t ) ,p e ( 辅助说明类型) 和f o m 嘶p e ( 细节说明类型) 。这三部分各自使用一个唯一的全局标识符( g u l d ) 来标识。 m 旬o r t y p e 定性的描述媒体类型,如指定这是一个音频流、视频流还是字节流: s u b t y p e 则是进一步说明主类型的格式,例如,如果主类型说明这是一个音频流, 用s u b t y p e 进一步说明音频是p c m 、a c 3 或者m p e g l 音频,如果是视频流,则 说明是还是r g b 等;f o m a 位y p e 指定了一个数据结构来进一步描述一些格 式细节信息,例如视频图像的大小、帧率,或音频的采样频率、量化精度等。 此外,为了方便开发者使用媒体类型,d i 陀c t s h o w 提供了一个c + + 类 c m e d i a t y p c 来对媒体类型进行操作,它实际上是从a mm e d i at y p e 派 生过来的,并增加了一些成员函数,增强了使用的方便性。 2 2 4 过滤器图表管理器 多个过滤器连接到一起就构成了一个过滤器图表( f i l t e rg r a p h ) ,可以实现 特定的功能。过滤器图表管理器( f i i t e rg m p hm a n a g e r ) 也是一个c o m 组件, 负责管理过滤器图表里面的各个f i i t e r ,其主要功能包括: ( 1 ) 协调各个f i i t e r 之间的状态转换 每个f i l t e r 都有一定的状态,以表征其是否正在执行相关任务,例如运行、 l o 第二章w i i l d o w s 网络编程与d h c t s h o w 系统概述 停止、暂停。f i l t e r 之间的状态转换需要按照特定的规则进行。所以,应用程序 不直接控制f i l t e r 的状态转换,而是发送命令给过滤器图表管理器,由过滤器图 表管理器按照特定的准则,将命令分发给各个f i l t e r 。这样简化了开发者的负担。 ( 2 ) 建立一个参考时钟 在同一个过滤器图表里面的f i l t e r 使用同一个时钟,这个时钟被称作“参考 时钟”。参考时钟保证了各个媒体数据流之间的同步。视频帧和音频数据必须被 播放的时刻被称作“显示时间 ,显示时间是根据参考时钟得到的。一般选择声 卡的时间或者系统时钟作为参考时钟。 ( 3 ) 通过事件与应用程序交互 过滤器图表管理器通过事件队列与应用程序进行交互,例如媒体数据流的暂 停、播放等等事件。类似于w i n d o w s 的消息循环。 ( 4 ) 向应用程序提供相关的函数来控制过滤器图表 过滤器图表管理器提供了很多函数,用于对过滤器图表进行相关的操作,例 如添加过滤器、连接两个过滤器、运行过滤器图表等等。 需要注意的是,过滤器图表管理器不提供数据流从一个f i l t 盯到另一个f i l t e r 的流动,这个工作是由f 订t c r 自己实现的,通过它们的p i n 之间的连接。 2 2 5 过滤器中的数据流动 每个f i l t e r 都有自己的输入p i n 和( 或) 输出p i n ,数据就是通过上一级f i l t 盱 的输出p i n 流到与其相连接的下一级f i l t e r 的输入p i n 。当两个f i l t e r 连接时,它 们必须遵循相同的传输协议,即每一对输入输出p i n 上必须实现约定好的、相匹 配接口,否则无法进行数据交换。 大多数的d i r e c t s h o wf i l t e r 都是将数据放在内存中进行处理和交换,这种传 输方式被称作“本地内存传输 。除此之外,还有一种传输方式是基于硬件通道 来实现的,p i n 之间只传输一些控制信息,数据由底层的硬件设备进行交换。 d i r c c t s h o w 定义了两种方式进行本地内存传输:推模式和拉模式。在推模式 下,源过滤器产生数据并将其推送给下一级过滤器,下一级过滤器被动的接收数 据,处理完之后再推送给更下一级的过滤器:在拉模式下,源过滤器拥有数据, 但是它不主动推送出去,而是等着下一级过滤器来“拉”数据,即请求数据,源 过滤器响应这个请求,从而把数据送出去。实时源,如音视频采集一般采用推模 式,而文件源一般采用拉模式。 在推模式下,需要源过滤器的输出p i n 上实现推数据的线程,而与它相连接 的下一级f i l t e r 的输入p i n 上必须实现l m e m i n p u t p i n 接口,以供源过滤器的数据 线程调用;在拉模式下,源过滤器的输出p i n 上必须实现i a s y n c r e a d e r 接口,供 第二章w i r i d o w s 网络编程与d h c t s h o w 系统概述 下一级f i l t e r 的输入p i n 调用。 2 3 多线程编程 2 3 1 线程与进程 以前古老的d o s 操作系统都是单任务的,还没有线程的概念,系统在一个 时刻只能做一件事情。比如在复制文件的时候不能执行打印任务。为了提高系统 的利用效率,当时是采用批处理来批量执行任务。 现在的操作系统都是多任务操作系统,每个运行的任务就是操作系统所做的 一件事情,比如在听歌的同时还可以下载资源。听歌和下载就是两个任务,这个 两个任务是“同时”进行的。一个任务一般对应一个进程,也可能包含好几个进 程。 进程和线程都是操作系统的概念。进程是指装入内存中正在执行的应用程 序,包括虚拟地址空间、代码、数据、动态分配的内存、文件句柄等操作系统资 源。进程就是应用程序的一个正在运行的实例,例如一个正在运行的播放器就是 一个进程;而线程是操作系统分配c p u 资源的最基本单元,线程包含于进程之 内,进程是线程的执行环境,或者说是线程的“容器”。 同一个进程内的多个线程共享该进程的资源和操作系统分配给那个进程的 内存空间。具体来讲包括该进程的静态和动态变量、可执行的代码段等,而每个 线程也有自己独立的资源,包括堆栈、在堆栈中定义的一些变量等。每个进程都 至少拥有一个主线程,并可能包含若干个子线程,子线程都是直接或者间接的由 主线程创建的。此外,在子线程内部也可以创建线程。我们把包含多于一个线程 的进程就是多线程程序。 调度程序进行线程切换所花费的时间 图2 2 多线程时间分配示意图 1 2 第二章w i i l d o w s 网络编程与d 的c t s h o w 系统概述 多线程时间分配过程如图2 2 所示。当操作系统执行开始进程时,主线程被 最先执行。在创建了子线程之后,c p u 便按照自己的调度准则,将时间片依次分 给各个线程,让它们轮流使用c p u 资源,这个过程由操作系
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025至2030年中国机电绝缘牛皮纸数据监测研究报告
- 2025至2030年中国无盲区低偏差云母水位计数据监测研究报告
- 2025至2030年中国干雾杀虫剂数据监测研究报告
- 2025至2030年中国宽角度心型头戴式话筒数据监测研究报告
- 加油站消防知识培训课件
- (完整版)电场与电势答案
- 2025年中国隔水培养箱市场调查研究报告
- 外聘村委合同范本
- 二零二五年度房屋抵押贷款保证合同
- 二零二五年度车辆未过户期间的车辆事故免责服务合同
- 2024年甘肃天水麦积山石窟艺术研究所招聘工作人员考试真题
- 2025年山东省荣成市属事业单位招聘岗位及历年高频重点模拟试卷提升(共500题附带答案详解)
- 火星表面材料分析-深度研究
- 《职业技能等级评价规范编制指南编制说明》
- 《教育强国建设规划纲要(2024-2035年)》解读讲座
- 畜禽养殖场恶臭污染物排放及其处理技术研究进展
- 超声内镜引导下穿刺活检术的配合及护理
- 新生儿常见的产伤及护理
- 代写回忆录合同
- 2024年10月自考00149国际贸易理论与实务试题及答案
- 2024年下半年教师资格考试《中学教育知识与能力》真题及答案解析
评论
0/150
提交评论