jrtplib重要类的含义

来源:互联网 发布:胡鞍钢拍马屁知乎 编辑:程序博客网 时间:2024/05/22 12:21

重要类的含义:

class RTPSession

该类属于RTP使用的高级层。客户最终通过该类或派生类使用RTP。该类完全把RTCP的实现细节封装内部,并提供读取和发送数据的接口,使用者只需关心实际数据的收发。

 

class RTPSessionParams是对其参数控制类。

 

class RTPPollThread

RTP线程类。

线程功能:接收 RTP和RTCP数据包,然后自动发送RTCP包。

 

class RTPUDPv4Transmitter

UDP OVER IPV4的传输模块。 此类继承了RTPTransmitter 类,并实现了在UDP over IPv4 上的 RTP和RTCP数据的收发。该模块的参数由RTPUDPv4TransmissionParams 类设置。该模块用RTPRawPacket 类来存储到达的RTCP和RTP数据。收到的数据包都放到rawpacketlist对列中。

 

class RTPSources

该类维护一个哈希散列表,列表里包含参加者的源信息。该类提供函数 用来轮询处理每个参与者的RTCP和RTCP 数据包。每次收到包 都会根据该包的SSRC 把该包塞入到哈希表中,而进一步的数据处理则交给更下层的RTPInternalSourceData类。该类的设计是为了更好的管理来自不同SSRC的数据。

 

class RTPSessionSources : public RTPSources

该类继承了RTPSources,重载了RTPSources中的一些纯虚函数。为RTPSession会话类提供数据服务。即类RTPSession通过 类RTPSessionSources 操作内部数据。

 

RTPInternalSourceData  RTPSourceData   RTPSourceStats

这些类管理 数据包的存储以及 参数信息:包括RTP数据包和包的参数、RTCP 的发送者报告信息、接收者报告信息、源描述符信息,数据源发送的地址,时间等。

RTPSourceStats管理接收到包的状态参数。对它的操作被封装在RTPSourceData的接口函数中。

 RTPSourceData是管理接收到的源数据包的具体实现类。

 

RTPInternalSourceData 继承了RTPSourceData,上层是他通过它来配置参数的以及读取数据的。

 

class RTPRawPacket

传输模块此类用来存储管理到达的RTP和RTCP数据。其实只是存储了指向实际数据的在指针,因此数据实体还是在传输模块里面。该类在传输模块中用std::list<RTPRawPacket*> rawpacketlist 容器队列的方式使用。

 

class RTPPacket

该类是RTP包的完整描述类,该类完全对应RFC3550协议里的RTP包格式。RTP包的生成有两种方式:

1 从原始的RTPRawPacket实例中粘贴。

int ParseRawPacket(RTPRawPacket &rawpack);

2根据RTP格式所需的所有参数生成。

int BuildPacket(所有参数)

 

class RTCPCompoundPacket(复合包)

 一个实例代表一个RTCP复合包。

 

class    RTCPCompoundPacketBuilder(创建RTCP复合包)

此类用于构建RTCP复合包,从基类RTCPCompoundPacket继承。该类维维系了RTCP复合包所需的全部信息,如各种包信息队列:报告包(发送、接收)、源描述包、离开包、应用包。等需要创建的时候组合成完整的RTCPCompoundPacket。

 

class RTCPPacketBuilder

该类是RTCPCompoundPacketBuilder的更高层封装。该类根据RTPPacketBuilder实例 和RTPSources实例 来自动生成下一个要发送的复合包;另外,也提供函数 决定什么时候该发送 SDES选项 ,而不是 规范名。