注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Mihooke's blog

IT之恋

 
 
 

日志

 
 

Jrtplib源码分析(7)---源码文件功能(下)(二)  

2014-11-27 10:42:46|  分类: jrtplib |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

rtpsession.h,它是高一级的用于RTP,大多数RTP应用都会用到这个RTPSession类,也由完全它内部操控RTCP部分,所以用户可以集中发送和接收数据。RTPSession类不意味着线程是安全的用户应当用锁机制来阻止同一个实例用不同的线程。RTPSession类继承于RTPMemoryObject类,首先便是创建一个RTP sessionRTP会话),将使用一个传送回应原型,指定的参数也可以传送,如果是指定参数的话,NewUserDefinedTransmitter函数必须执行。一旦发生会话,所做的动作时很多的,这都在成员函数中指定了,比如:添加(删除清除)源AddDestination、加入(离开)多播组JoinMulticastGroup、发送包SendPacket、发送扩展包SendPacketEx、设置有效载荷类型SetDefaultPayloadType...获取RTCP延迟GetRTCPDelay、获取当前源的信息GetCurrentInfo...太多了,Oh  My God,看使用RTPSession类的文件,代码看晕掉了!

紧接着rtpsession文件下面,有个rtpsessionparams源码文件和rtpsessionsources源码文件。简单说下这两个文件的功能,第一个是描述被RTPSession实例用到的变量,但是要注意的是时间戳一定要设为一个可用的数字,否则session会话不能被创建;还记得我们上面分析过的rtpsource.h文件么?没错,RTPSessionSources就是继承于它的,功能在会话上面稍微有点不一样,会话源主要是实现监测冲突并清除冲突标识,其私有成员也包括了RTCP的几个组成类型的使用,当然,别忘了,也是使用RTPSession类中的方法实现的。

 

rtptimeutilities.h,顾名思义,是关于时间的一个小工具,没错,它是对NTP(我们上面提到过的网络时间协议)的最高有效字和最低有效字的一个简单封装(其实是在类RTPNTPTime中实现的)。还有一个指定wallclock time(现实时间)和delay intervals(延迟间隔)等的类RTPTime,它还存储了众多的秒数和毫秒数。除此之外,还有time初始化类RTPTimeInitializer,其中为了兼容性,又分了UNIX styleWIN32 style

还记得先前我们分析的调度包rtcpscheduler.h源码么?这个文件只是对NTP时间的一个调度,而rtptimeutilities.h是对NTP的一个描述。

 

rtptransmitter.h,这是关于实际传输组件的实现。RTPMemoryObject类派生了抽象类RTPTansmitter类,用于实现实际传输组件,它还指定了传输组件的接口,至此,两个实现(基于IPv4UDP和基于IPv6UDP)就存在了。这个类很有意思,首先在公有方法里枚举了传输协议的类型(包括IPv4IPv6,用户自定义)和信息接收的方式(接收全部,接收部分,忽略部分)。类RTPTransmissionParams是传送参数的,是对指定传输组件实施的抽象类,所有实施都继承于可用参数的用来标识组件类型的GetTansmissionProtocol函数。成员函数功能都很简单,看看就行。

OK,这个头文件马上就要用到了,在rtpudpv4transmitter.hrtpudpv6transmitter中,分别是基于IPv4UDP和基于IPv6UDP的使用,相应的传输参数的封装类都继承于RTPTansmissionParams类,在传输过程中的一些操作都被封装成了函数,比如:GetPortBase获取端口、SetRTPSendBuffer设置RTP发送缓存、GetBindIP获取绑定IP...。另外,作者还补充了一下额外的关于基于IPv4UDP信息,包括socket信息。类RTPUDPv4Trans_GetHashIndex_IPv4Dest则是根据IPv4的地址类型获取hash索引值:

public:

static int GetIndex(const RTPIPv4Destination &d) {

 return d.GetIP()%RTPUDPV4TRANS_HASHSIZE; 

}

还有rtpipv4address.hrtpipv4destination.h分别对IPv4地址和目的的描述。

Rtpudpv4transmitter与此雷同。

 

至此,Jrtplib的源码大概功能已解析得差不多了,详细信息还需要自己去看源码。

  评论这张
 
阅读(407)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017