(计算机软件与理论专业论文)基于h264的视频实时传输系统的研究与实现.pdf_第1页
(计算机软件与理论专业论文)基于h264的视频实时传输系统的研究与实现.pdf_第2页
(计算机软件与理论专业论文)基于h264的视频实时传输系统的研究与实现.pdf_第3页
(计算机软件与理论专业论文)基于h264的视频实时传输系统的研究与实现.pdf_第4页
(计算机软件与理论专业论文)基于h264的视频实时传输系统的研究与实现.pdf_第5页
已阅读5页,还剩53页未读 继续免费阅读

(计算机软件与理论专业论文)基于h264的视频实时传输系统的研究与实现.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

硕士论文 基于1 - i 2 6 4 的视频实时传输系统的研究与实现 摘要 近年来随着多媒体技术、计算机技术和网络技术的不断发展,使视频的实时传输 得到了广泛的应用。视频实时传输中庞大的数据量、对实时性的高要求和目前的网络 带宽不足之间的矛盾是视频实时传输中关键问题所在,如何解决这一问题成为目前广 泛研究的课题。针对视频实时传输的这些特性,本文研究和实现了一个基于h 2 6 4 的 在i n t e m e t 上进行视频实时传输的系统。 h 2 6 4 是新一代视频压缩编码标准,在保证更高的编码效率的同时提供了很好的 质量保证,是当前最高效的视频压缩算法。本文在采用h 2 6 4 编码的基础上,选择了 适合流媒体传输的r t p r t c p 协议以及d i r e c t s h o w 开发平台来构建整个系统。重点 阐述了根据r t p r t c p 反馈信息来进行源端的速率自适应调节,使其能在不同的网络 状况下较好地实现视频的实时传输,并对系统设计实现中的关键问题给出了详细的解 决方案。 最后在v c 下对软件系统进行了具体的开发实现,相关实验证明了系统的有效, 并对论文进行了总结,对未来的研究和进一步开发工作进行了展望。 关键词:流媒体,h 2 6 4 ,r t p ,传输控制,d i r e c t s h o w 硕士论文 基于h 2 6 4 的视频实时传输系统的研究与实现 a b s t r a c t 1 1 1r e c e n ty e a r s ,丽mt h ed e v e l o p m e n to fm u l t i - m e d i at e c h n o l o g y , c o m p u t e rs c i e n c e a n dn e t w o r kt e c h n o l o g y , v i d e or e a l - t i m et r a n s m i s s i o nw a sa p p l i e dw i d e l y b u tt h eh u g e m u l t i m e d i ad a t as t r e a m , t h eh i g h l yr e q u e s tf o rr e a l - t i m ea n dt h es m a l lb a n d w i d t hi sab i g p r o b l e mt o t h ev i d e or e a l - t i m et r a n s m i s s i o n a c c o r d i n gt ot h ec h a r a c t e r i s t i co fv i d e o r e a l t i m et r a n s m i s s i o n , t h i sd o c u m e n td e s i g na n dr e a l i z ear e a l t i m em u l t i m e d i a t r a n s m i s s i o ns y s t e mo v e rt h ei n t e m e t h 2 6 4i st h en e wv i d e oc o d i n gs t a n d a r d i tp r o v i d e sf a i r l yg o o dv i d e oq u a l i t yw h i l e a c h i e v i n gb e t t e rc o d i n g ,a n d i ti st h em o s te f f i c i e n tv i d e oc o m p r e s s i o ns t a n d a r da tp r e s e n t b a s e do nt h eh 2 6 4c o d em e t h o d ,w ec h o o s et h er t p r t c pa n dd i r e c t s h o wd e v e l o p i n g p l a t f o r mw h i c hs u i t s t h et r a n s m i s s i o no fr e a l - t i m em e d i a i np a r t i c u l a r , t h i sp a p e r e l a b o r a t e dt h ea u t o - a d a p t e dt r a n s m i s s i o ns p e e do ft h es o u r c ea c c o r d i n gt ot h er t p r t c p f e e d b a c ki n f o r m a t i o n , e n a b l e si tt or e a l i z et h ev i d e or e a l t i m et r a n s m i s s i o ni nt h ed i f f e r e n t n e t w o r kc o n d i t i o n t h e n ,p r o d u c e dt h ed e t a i ls o l u t i o nt ot h ek e yq u e s t i o na p p e a r a n c e d d u r i n gt h es y s t e md e s i g n i tp u tf o r w a r dad e s i g np l a no ft h i ss y s t e ma n dc o m p l e t e di to nv c ,a n dt h e e x p e r i m e n t sp r o v et h a tt h es c h e m e sa r ee f f e c t i v e f i n a l l y , a l lo ft h ew o r ki nt h i st h e s i si s s u m m e du p t h ef u t u r er e s e a r c ho ft h i ss y s t e mi sp r o s p e c t e d k e y w o r d s :s t r e a mm e d i a , h 2 6 4 ,r t p ,t r a n s m i s s i o nc o n t r o l ,d i r e c t s h o w 声明尸明 本学位论文是我在导师的指导下取得的研究成果,尽我所知,在 本学位论文中,除了加以标注和致谢的部分外,不包含其他人已经发 表或公布过的研究成果,也不包含我为获得任何教育机构的学位或学 历而使用过的材料。与我一同工作的同事对本学位论文做出的贡献均 已在论文中作了明确的说明。 研究生签名:旌! 矗危害 2 0 0 6 年9 4e l 学位论文使用授权声明 南京理工大学有权保存本学位论文的电子和纸质文档,可以借阅 或上网公布本学位论文的部分或全部内容,可以向有关部门或机构送 交并授权其保存、借阅或上网公布本学位论文的部分或全部内容。对 于保密论文,按保密的有关规定和程序处理。 研究生签名:2 0 0 7 年9 月4 日 硕士论文基于h 2 6 4 的视频实时传输系统的研究与实现 第一章绪论 1 1 研究背景 i n t e m e t 在过去短短的十几年时间里经历了飞跃的发展,无论是在学习、工作还 是生活中我们越来越多的利用互联网获取和传输信息。互联网在最初兴起时,由于条 件和技术的限制,只是处理一些简单的文本数据,现在随着网络技术和多媒体技术的 不断发展以及网络技术和多媒体技术结合应用的不断深入,在互联网上传播图形、图 像、音频、视频已经越来越广泛了【1 1 。 可是,以音频和视频为主的多媒体应用,数据量都比较庞大,这就需要较大的传 输带宽。同时多媒体的应用还具有连续性、实时性等特点,普遍对端到端的延迟和延 迟变化比较敏感,但容许一定程度数据丢失。流媒体技术就是为适应这种多媒体在网 络中的应用和发展而产生的,所谓流媒体就是在网络上流式传输的多媒体。它的基础 研究、国际标准和应用系统成为目前广泛关注的热点。 流媒体包括采集、编码、传输、存储、解压等多项技术,使音频、视频等媒体在 网络上实时传输和播放。又可分为顺序流和实时流式传输,顺序流是指利用f t p 、 h 1 呼等协议把网络上的视频边下载边观看( 需要相应的按顺序下载方式的支持) ,利 用内存等来实现缓存机制,一般对质量要求比较高,可以接受一定时间的延时。实时 流是指那些如视频监控、远程医疗和视频会议等等会话式的应用。相对而言,更重要 的是它的实时性,质量方面是其次的。 流媒体目前应用十分广泛,如视频会议系统、远程监控系统、v o d ( v i d e oo n d e m a n d ) 系统、远程教育系统等。p c 通用的流媒体系统有m i c r o s o f tm e d i ap l a y e r 、 r e a l p l a y e r 等,专业的应用系统有c i s e oi p l v 系统( v o d ) 、m i c r o s o f t n e t m e e t i n g 、o r a c l e o v s ( v o d ) 等。现在国内的p p l i v e ,p p s t r e a m 等也是这种流媒体的代表产品。 目前对于流媒体的研究主要是从两个方面来考虑的,一是研究如何把编解码技术 应用到流媒体技术中以及研究新的适合网络传输的编解码算法;另一个方面就是建立 新的带有服务质量的网络体系结构。 1 2 目前的研究现状 1 2 1 视频编解码技术的研究 视频编码的一个主要目的是保证一定重构质量的前提下,以尽量可能低的码率 ( 或存储容量) 来表示尽可能好的图像质量。第一代视频压缩编码的理论基础是香农的 信息论,它以经典集合论为基础,基于某种统计概率模型来描述信源。主要编码方法 有预测编码、变换编码和统计编码,也称为三大经典编码方法【1 1 。 硕士论文 基于h 2 6 4 的视频实时传输系统的研究与实现 三大经典编码方法以信息论和数字信号处理技术为理论基础,构成了目前最为通 用的编码标准的基础。 最近十几年来图像编码技术得到了迅速发展和广泛应用,目前国际上视频编码标 准主要有两大系列,i t u ( 最初是c c i t t ,国际电报电话咨询委员会) 针对低码率视频 通信制定的h 2 6 x 系列视频编码标准和i s o i e cj t c l 针对多媒体数据存储制定的 m p e g 系列标准。下表1 2 1 1 列出了各视频编码标准的目标码率、主要技术和应用 领域。 表1 2 1 1 视频编码发展历程 组织名视频编颁发码率范围主要压缩技术主要应用 称码标准时间 i t u th 2 6 11 9 9 2 p 牛6 4 k b p s d c t 、自适应量化、 i s d n ( 综合业务 t p = l , 2 ,3 0熵编码、z i g - z a g数字网) 视频会 扫描、运动预测补议 偿、整像素运动估 计、差错控制编码 i s 0 m p e g l 1 9 9 2 1 5 m b p s d c t 、主观量化、v c d 光盘存 自适应量化、熵编储、消费视频、 码、z i g z a g 扫描、 视频记录、家用 运动预测补偿、双视频等 向运动补偿、半像 素运动估计 i s o ,i t m p e 9 2 1 9 9 4 4 1 0 0 m b p s e g 一1 所有技数字电视、 u th 2 6 2 术、基于帧场运动 h d t v 、d v d 、 补偿、空间、时间、高质量视频传 质量可分级码流、播存储、卫星 容错编码t v 等 i t u th 2 6 3 1 9 9 6 6 4 k b p s , 0 ,0 龟1 ,可以保证公平性,一般a p p s i d r 片 i 片( 包括s i 片) p 片( 包括s p 片) b 片。 这种片层单位跟帧还是有明显的对应关系的,对片的选择发送不会引起帧的不完 整性。也就是说不会引起某一帧图像的某些片发送了,而某些片没有发送这种情况。 事实上可以通过查询片头中的f r a m en u n l 结合s l i c e 确定其所属图像是否一致。type 定义发送设置函数:s e n d s l i c e ( t y p e ,c o u n t , i n d e x ) 其中第一个参数为片类型;第二个参数为发送次数;第三个参数为某序列中的发 送截至序号,此为针对p 片所设,默认为0 。 于是可得选择性丢帧算法为: i f 严重拥塞 s e n d s l i c e “s p s ,2 ) ,( p p s ,2 ) ,( i d r , 1 ) ) ;此时对s p s 和p p s 加以保护 e l s ei f 一般拥塞 s e n d s l i c e ( ( s p s ,1 ) ,( p p s ,1 ) ,( i d r , 1 ) ,( i ,1 ) ,( p ,1 ,p i ) ) ; e l s e i f 不拥塞 s e n d s l i c e ( ( s p s1 ) ,( p p s ,1 ) ,( i d r , 1 ) ,( i ,1 ) ,( p ,1 ) ,( b ,1 ) ) ; 其中p i 为一般拥塞时p 帧的丢弃系数。其值越大则表明发送的p 帧越多。特别 说明,此处讨论不包括扩展档次,对于扩展档次的数据分割片可优先选择丢弃d p b 或d p c 片。具体的选择丢帧的环节位于发送过滤器的i n p u t p i n 的r e c e i v e 函数中。 3 6 视频流内同步问题 媒体同步包括媒体内同步和媒体间同步。媒体内同步是维持一个媒体内部各个媒 3 9 硕士论文 基于h 2 6 4 的视频实时传输系统的研究与实现 体单元的时间关系,媒体间同步是维持多个相关媒体中媒体单元间的时间关系。媒体 内同步是媒体间同步的基础。 本系统主要解决的是视频流内同步的问题,关键是控制播放时延和偏移,使其保 持在可接受的范围。 在发送端采用的自适应传输能在一定程度上解决了流内同步,但在网络传输中受 到的影响是多方面的,视频流内同步问题主要还是靠在接收端解决。 基于r t p r t c p 协议的视频流传输在r t p 包中添加了序列号,在同一视频流内 可根据该序列号进行流内的同步,消除由于网络传输过程所带来的抖动,提高媒体播 放效果。具体是通过在接收端开辟缓冲区,在接收端的地方根据r t p 包的头部序列 号重新排序,这样到达解码器的媒体流的数据就会恢复成编码器出来时的媒体流。 r t p 的序列号保证了视频数据的顺序到达,在系统中,视频流是按f i l t e r 中的 m e d i as a m p l e 为单位来处理的,s a m p l e 有时会很大,需要分成多个r t p 包来传输, 所以又涉及到s a m p l e 的分片和重组问题。对于同一个s a m p l e 的不同分片,它们的序 列号是递增1 的,在接收端可以顺利重组,只是每个s a m p l e 的最后一个片的头部要 打上m a r k 标记,对缓冲区详细情况在系统实现里有详细的说明。 硕士论文基于h 2 6 4 的视频实时传输系统的研究与实现 第四章视频实时传输系统的实现 4 1 视频的采集 视频的采集是视频传输中的一个重要环节,获得好的视频图像是保证压缩和传送 质量的基础。 目前在w i n d o w s 平台上支持视频采集的主要有2 种技术:一是微软早期推出的 v f w ( v i d e of o rw i n d o w s ) 技术,另一个是微软的w d m ( w i n d o w sd r i v e rm o d e l ) 技术。 d i r e c t s h o w 技术对于多媒体的开发具有很完善的解决方式,是目前广泛采用的多媒体 开发工具,目前市场上的采集设备基本上都支持w d m ,也渐渐取代了早期的v f w 技术。但d i r e c t s h o w 提供的是一个向下兼容的的接口,它也能支持v f w 的采集。 在d i r e c t s h o w 下,参与工作的基本单位是f i l t e r 。d i r e c t s h o w 采用f i l t e r 对采集 设备进行了包装,w d m 驱动模型采集设备使用w d mv i d e oc a p t u r ef i l t e r ( 实现文件 为k s w d m c a p a x ) 。成功安装到系统中的采集设备,d i r e c t s h o w 都会把它包装成一个 f i l t e r 。 ( 1 ) 创建g r a p hf i l t e r d i r e c t s h o w 提供了一个c a p t u r eg r a p hb u i l d e rc o m 组件使得f i l t e rg r a p h 的生成 更加简单。c a p t u r eg r a p hb u i l d e r 提供了一个i c a p t u r e g r a p h b u i l d e r 2 接口,这个接口 提供了一些方法用来构建和控制f i l t e rg r a p h 。 i g r a p h b u i l d e r 幸p g r a p h = n u l l ; i c a p t u r e g r a p h b u i l d e r 2 p b u i l d = n u l l ; 创建t h ec a p t u r eg r a p hb u i l d e r h r e s u l th r = c o c r e a t e l n s t a n c e ( c l s i d _ c a p t u r e g r a p h b u i l d e r 2 , n u l l , c l s c t xi n p r o c _ s e r v e r , i i d _ i c a p t u r e g r a p h b u i l d e r 2 ,( v o i d ) & p g r a p h ) ; i f ( s u c c e e d e d ( m ) ) 创建t h ef i l t e rg r a p hm a n a g e r h r = c o c r e a t e l n s t a n c e ( c l s i d _ f i l t e r g r a p h ,n u l l ,c l s c t x _ i n p r o c _ s e r v e r , i i d _ _ i g r a p h b u i l d e r , ( v o i d 幸+ ) & p g r a p h ) ; i f ( s u c c e e d e d ( h r ) ) 初始化t h ec a p t u r eg r a p hb u i l d e r p b u i l d - s e t f i l t e r g r a p h ( p q a p h ) ; ) 4 1 硕士论文 基于h 2 6 4 的视频实时传输系统的研究与实现 ( 2 ) 选择视频采集设备 系统安装的视频采集设备都注册在c l s i d _ v i d e o l n p u t d e v i c e c a t e g o r y 目录下,要 选择一个视频采集设备,可通过系统设备枚举来实现。 下面这两个类是相关的: c l s i da u d i o l n p u t d e v i c e c a t e g o r y 音频设备 c l s i d _ v i d e o l n p u t d e v i c e c a t e g o r y 视频设备 i c r e a t e d e v e n u m p d e v e n u m = n u l l ; i e n u m m o n i k e r 幸p e n t t m = n u l l ; c r e a t et h es y s t e md e v i c ee n u m e r a t o r h r e s u l th r = c o c r e a t e l n s t a n c e ( c l s l d _ s y s t e m d e v i e e e n u m ,n u l l , c l s c l xi n p r o cs e r v e r , i i di c r e a t e d e v e n u m , r e i n t e r p r e t _ c a s t ( & p d e v e n u m ) ) ; i f ( s u c c e e d e d ( m ) ) 创建一个枚举器,枚举视频设备 h r = p d e v e n u m 一 c r e a t e c l a s s e n u m e r a t o r ( c l s i d _ v i d e o l n p u t d e v i c e c a t e g o r y , & p e n u m ,0 ) ; ) 下图4 1 1 使用了d i r e c t s h o w 中g r a p h e d i t 工具来演示采集f i l t e r 的处理流程,便 于演示,采集后的数据经编解码后就直接在本地播放了,对于音频的处理在后面会有 说明。 硕士论文 基于h 2 6 4 的视频实时传输系统的研究与实现 4 2 发送端设计 图4 2 1 发送端结构流程图 这里主要设计的一个r t pv i d e os e n df i l t e r ,接收上游压缩好的视频流,检查数 据类型,对视频流打包形成r t p 包然后通过网络传送,如图4 2 1 。 r t pv i d e os e n df i l t e r 是属于一个r e n d e rf i l t e r ,它没用o u t p u tp i n ,只有一个i n p u t p i n 。r t pv i d e os e n df i l t e r 用于发送视频流,过滤器的i n p u tp i n 接收经编码压缩处理 后的m e d i as a m p l e ,然后进行媒体类型检查,根据不同的媒体类型确定r t p 数据报 的负载类型以及r t p 时间戳增量。封装好础限数据分组后将数据发出。 实现r t pv i d e os e n df i l t e r 的功能除了r t p s e n d f i l t e r 和r t p s e n d l n p u t p i n 。外还 需要一个类负责对m e d i as a m p l e 的r t p 打包和u d p 发送,把它定义成r t p s e n d e r 类。 ( 1 ) r t p s e n d l n p u t p i n r t p s e n d l n p u t p i n 有两个主要功能,媒体类型的协商和m e d i as a m p l e 的接收, r t p s e n d l n p u t p i n 继承于c b a s e i n p u t p i n ,需要重载三个函数来完成这两个功能。其中 c h e c k m e d i a t y p e ( ) 和g e t m e d i a t y p e ( ) 用于媒体类型的协商,r e c e i v e ( ) 用于接收 m e d i a s a m p l e 。 媒体检查函数c h e c k m e d i a t y p e ( ) ,定义为h r e s u l tc h e c k m e d i a t y p e ( c o n s t c m e d i a t y p e + p i n t ) ,它的参数是一个媒体类型对象的指针,函数将这个指针指向的媒 体类型依次和i n p u t p i n 支持的媒体类型比较,有符合的返回成功,如果没有一个匹配 的,则返回错误。 媒体获取函数g e t m e d i a t y p e ( ) ,用于获得该p i n 所支持的媒体类型。有两个参 数,一个是血型的变量,用于指定获取某个序号的媒体类型;另个是媒体类型对 象的指针,用于返回所支持的媒体类型。 4 3 硕士论文基于h 2 6 4 的视频实时传输系统的研究与实现 接收m e d i as a m p l e 的函数r e c e i v e ( ) ,定义为s t d m e t h o d m 伊 r e c e i v e ( i m e d i a s a m p l e * p m e d i a s a m p l e ) ;它的参数是一个m e d i as a m p l e 的指针。在处 理完一个m e d i as a m p l e 之前,需要先挂起其他的m e d i as a m p l e 接收,首先锁住 f i l t e r 的m e d i as a m p l e 接收;然后,调用c b a s e i n p u t p i n 基类的方法r e c e i v e ( ) , 获取一个m e d i as a m p l e ,保存到参数m e d i as a m p l e 指针指向的缓冲;之后,调用 v i d e os e n df i l t e r 的方法r t p s e n d e r ( ) ,将该m e d i as a m p l e 包含的媒体数据发送到 网络上;最后,对f i l t e r 的m e d i as a m p l e 接收进行解锁。 ( 2 ) i 汀p s e n d e r r t p s e n d e r 类的主要功能是对接收到的m e d i as a m p l e 进行r t p 的打包和发送。 r t p s e n d e r 类的主要函数为: 函数c r e a t e ( ) :主要作用是建立r t ps e s s i o n ,它有两个参数。前一个参数指定了 传输的一系列参数,主要有r t c p 包的发送频率,r t p 包的缺省标记等。第二个参数 指定了传输的协议,类中会根据它创建u d p s o c k e t 。 函数s e n d p a c k e t ( ) :发送数据。具体的发送动作调用的是r t p s e s s i o n 的s e n d p a c k e t 函数。 ( 3 ) r t p s e n d f i l t e r r t p s e n d f i l t e r 类是这个f i l t e r 的主类,它的主要作用实际上是上述两类的组合包 括接收上游的m e d i as a m p l e ,并将其打包发送。除此之外还包括对整个过程的总体控 制。r t p s e n d f i l t e r 类的继承自c b a s e f i l t e r 类,所以还包括p a u s e 和s t o p 两个函数, 由于g r a p h 和f i l t e r 开始运行时,在进入r u n 前必须经历p a u s e 状态,所以在p a u s e 中来创建一个r t p 的s e s s i o n ,从而启动相应的接收r t c p 的r r 包的线程。它的函 数主要有以下几个: 函数g e t p i n ( ) :获得f i l t e r 指定的p i n 并返回,这里只有一个i n p u tp i n 。 函数p a u s e ( ) :用于在f i l t e r 从停止转到暂停状态时创建一个用于网络发送数据的 r t p 的s e s s i o n 同时指定其目标的p 地址和端口号,并启动接收r t c p 的线程p o l l 。 在r t p s e n d e r 的s e t d e s t i n a t i o n 函数中具体实现。 函数s t o p ( ) :f i l t e r 转入停止状态时,通过c n e t s e n d e r :d e s t o r y 来结束r t p 的会 话。 函数s e t p i n k i n d ( ) :设置该f i l t e r 的类型。具体实现要调用i n p u t p i n 中的 s e t m e d i a k i n d 函数。 函数s e t l o c a l p o r t ( ) :设置该f i l t e r 发送s a m p l e 时的所用的本地监听端口号。 函数s e t d e s t i n a t i o n ( ) :其作用是设置远程地址及端口号。 硕士论文 基于h 2 6 4 的视频实时传输系统的研究与实现 4 3 接收端设计 r t p v i d e or e c e i v ef i l t e r 在接收到r t p 包后分析r t p 包头,判断其版本、长 度和负载类型等信息的有效性,然后按照r t p 时间戳和包序列号等进行同步,整理 r t p 包顺序,重构视频帧。也就是说,它需要动态地一边从网络接收数据,一边将 得到的r t p 包进行重组,重组好的m e d i as a m p l e 是交给下游的d e c o d e rf i l t e r 去解压 的,故采用“推”模式。由于要对同一个m e d i as a m p l e 不同包重组,所以还要设立一个 缓存区来存放这些包,如图4 3 1 。 i u pv i d e or e c e i v ef i l t e r b u f f e rp o o l s a m p l ep o o l i 呈! 竺! 卜、 叫i a m l p 乎l e _叫o u t p u t p i n 卜 d e c o d e rf i l t e r r t p 包 一一 l b u f f e rr 图4 3 1r t pv i d e or e c e i v ef i l t e r 示意图 r t pv i d e or e c e i v ef i l t e r 采用了2 个缓冲区:b u f f e rp o o l 和s a m p l ep o o l 。b u f f e r p o o l 用作网络数据接收的缓冲池,由于接收到的数据报可能是经过分片的,因此必须 将它重新组合成未分片前的状态,才可以恢复一个可以回放的m e d i as a m p l e 。r t p v i d e or e c e i v ef i l t e r 通过分析每个数据报的r t p 头来进行重组。在一定的时间内如 果重组完成,则将重组后的数据传递给s a m p l ep o o l ,并把s a m p l ep o o l 中对应的缓 冲清空;如果超时,则丢弃这些数据报。当发现没有可用的m e d i as a m p l e 时,也将 挂起处理,直到有别的线程释放m e d i as a m p l e 为止。 接收端r t pv i d e or e c e i v ef i l t e r 类似于发送端r t pv i d e os e n df i l t e r 的设计。不 过它属于s o u r c ef i l t e r ,只有一个o u t p u tp i n 。这个f i l t e r 跟接收端有三个功能相似的 类,包括r t p r e c e i v e f i l t e r 类,r t p r e c e i v e o u t p u t p i n 类和r t p r e c e i v e r 类。其中 r t p r e c e i v e f i h e r 是主类,它负责整个流程的控制,它的父类是c b a s e f i l t e r 。 r t p r e c e i v e r 类对应与发送端的r t p s e n d e r ,它的主要功能是实现网络数据的接收, r t p r e c e i v e o u t p u t p i n 类的主要作用是和下级的f i l t e r 进行媒体类型的协商,它的父类 是c b a s e o u t p u t p i n 。此外,还需要2 个处理缓冲区的类b u f f e r p o o l 和s a m p l e p o o l ,分 别用来管理接收到的网络数据和m e d i as a m p l e 。 ( 1 ) r t p r e c e i v e o u t p u t p i n 4 5 硕士论文基于h 2 6 4 的视频实时传输系统的研究与实现 与发送端的r t p s e n d i n p u t p i n 类相似,它继承了c b a s e o u t p u t p i n 基类,主要的功 能是与下方的f i l t e r 进行媒体类型的协商和向下方传递m e d i as a m p l e 。它主要实现的 函数也是两个:g e t m e d i a t y p e ( ) 和c h e c k m e d i a t y p e ( ) 。这两个函数的作用和发送端 c n e t s e n d l n p u t p i n 的两个函数的功能是一样的,实现也基本类似。 ( 2 ) r t p r e c e i v c f i l t e r 类 r t p r e c e i v e f i l t e r 与r t p s e n d f i l t e r 类似,它继承c b a s e f i l t e r 基类、 i s p e c i f y p r o p e r t y p a g e s 接口、i m u l t i c a s t c o n f i g 接口和c p e r s i s t s t r e a m 类。它的几个 重要函数与r t p s e n d f i l t e r 类似,这里不列出了。 r t p r e e e i v e f i l t e r 有个成员函数p r o c e s s b u f f e r ( ) 。该函数把从p a c k e tb u f f e r 传递 过来的数据块封装进一个m e d i as a m p l e ,然后传递给下方的f i l t e r 。p r o c e s s b u f f e r ( ) 函数有三个参数:第一个是指向传入的数据块的b y t e 型指针:第二个是数据块长度; 第三个是指向媒体数据的属性结构体的指针,属性结构体的成员主要有时间戳和标志 位等。 ( 3 ) r t p r e c e i v e r 类 r t p r e c e i v e r 的作用和r t p s e n d e r 正好相反,它负责网络数据的接收,并将数据 封装成m e d i as a m p l e ,发到下一级的f i l t e r 中。主要有以下几个函数: a c

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论