现在的位置: 首页 > 综合 > 正文

JRTPLIB 3.5.2手册中文版—part4

2013年06月27日 ⁄ 综合 ⁄ 共 2892字 ⁄ 字号 评论关闭

 

3.2.6 RTPTransmitter

----------------------------------------------------------------------头文件:rtptransmitter.h

       抽象类RTPTransmitter指出了实际用于传输的组件的接口。当前实现了三种,分别是:基于IPv4的UDP发送器;基于IPv6的UDP发送器【译注:另一种??】。TransmissionProtocol类型用于指出是哪种发送器:

enum TransmissionProtocol{IPv4UDPProto, IPv6UDPProto, UserDefinedProto };

       当使用RTPSession类时,使用UserDefinedProto可用来选择你自己的传输组件,这是你需要自己实现NewUserDefinedTransmitter()函数,这个函数应该返回一个你自己的RTPTransmitter的继承类的指针。

       可以使用ReceiveMode类型来指定3种接收模式:

Enum ReceiveMode{ AcceptAll, AcceptSome, IgnoreSome};

根据模式的设置,到达的数据将会进行不同的处理:

AcceptAll

-----不论从哪里发送的,所有数据都将接收。

AcceptSome

-----只有指定源发送的数据才会被接收。

IgnoreSome

-----除了指定源的不接收,其他的全部接收。

       由RTPTransmission类定义的接口如下:

int Init(bool threadsafe)

-----必须在使用transmission组件之调用该函数,组件是否是线程安全的将由参数threadsafe指定。

int Create(size_t maxpacketsize, const RTPTransmissionParams *transparams)

-----为组件的使用做准备,参数maxpacketsize指出了一个包的最大值,如果包大小大于该值,则将不会发送。参数transparams是一个指向RTPTranmissionParams对象的指针。RTPTranmissionParams也是个抽象类,实际使用时根据不同组件,通过继承RTPTranmissionParams类来定义自身的参数。如果参数为null,那么将使用该组件传输参数的默认值。

int Destroy()

-----调用该函数之后,将清理存储区,并且该组件也不能再使用。只有当重新调用Create函数之后该组件才可以继续使用。

RTPTransmissionInfo *GetTransmissonInfo()

-----函数将返回一个指向RTPTransmissionInfo对象的指针,从该对象中可以获得关于传输器的更多信息(例如:本地IP地址的列表)。当前(版本中)根据使用的传输器的种类既可以返回RTPUDPv4TransmissionInfo也可以返回RTPUDPv6TransmissionInfo。当对象不再使用时,使用者需要(手动)删除该对象。

int GetLocalHostName(uint8_t *buffer, size_t *bufferlength)

-----基于本地主机地址的内部信息查询主机名,该函数可能会花费比较长的时间用于DNS查询。bufferlength应该被初始化为buffer中可能会存储的字节个数,如果函数函数成功,则bufferlength中就是buffer中存储的字节数。需要注意的是在buffer中存储的并非是以NULL结尾的数据。如果分配的存储空间不够的话,函数将失败并且返回ERR_RTP_TRANS_BUFFERLENGTHTOOSMALL,并将需要的字节数存入bufferlength中。

bool ComesFromThisTransmitter(const RTPAddress *addr)

-----如果由addr指出的地址是传输器的一个地址则返回true。

size_t GetHeaderOverhead()

-----返回将要由网络的底层(不包括链路层)加入到RTP包中的字节数。I

int Poll()

-----检查到达的数据并保存。

bool NewDataAvailable()

-----当可以使用函数GetNextPacket获取数据包时返回true。

RTPRawPacket *GetNextPacket()

-----(在Poll函数中)返回在RTPRawPacket对象中收到的RTP数据包的原始数据。

int WaitForIncomingData(const RTPTime &dalay, bool *dataavailable =0)

-----等待最多由delay指出的时间直到接收到数据。如果dataavailable不是NULL,那么如要要读取数据的话应该设为true,否则设为false(译注:不确定,原文:If dataavailable is not NULL, it should be set true if data was actually read and to false otherwise)。

int AbortWait()

-----如果上一个函数被调用了,本函数将中止等待。

int SendRTPData(const void *data, size_t len)

-----向所有当前目的地址列表中的RTP地址发送长度为len的data数据。

int SendRTCPData(const void *data, size_t len)

-----向所有当前目的地址列表中的RTCP地址发送长度为len的data数据。

void ResetPacketCount()

-----传输器会跟踪所有发送的RTP和RTCP数据包的个数,该函数复位这些计数。

uint32_t GetNumRTPPacketsSent()

-----返回已发送的RTP包的个数。

uint32_t GetNumRTCPPacketsSent()

-----返回已发送的RTCP包的个数。

int AddDestination(const RTPAddress &addr)

-----将参数addr指定的地址加入到目的地址列表中。

int DeleteDestination(const RTPAddress &addr)

-----将参数addr指定的地址从目的地址列表中删除。

void ClearDestination()

-----清空目的地址列表。

bool SupportMulticasting()

-----如果传输组件支持组播则返回true。

int JoinMulticastGroup(const RTPAddress &addr)

-----加入由参数addr指定的组播组。

int LeaveMulticastGroup(const RTPAddress &addr)

-----退出由参数addr指定的组播组。

void LeaveAllMulticastGroups()

-----退出所有的加入的组播组

抱歉!评论已关闭.