JRTPLIB 3.5.2手册中文版---part7

 

3.2.10 RTPRawPacket

-------------------------------------------------------------------------头文件:rtprawpacket.h

       类RTPRawPacket被传输组件用来保存收到的RTP和RTCP数据。接口如下:

RTPRawPacket(uint8_t *data, size_t datalen, RTPAddress *address, RTPTime &recvtime, bool rtp)

-----创建一个对象用来保存长度为datalen的data中的数据,注意:只保存指向数据的指针而不会复制数据!数据包的发送地址和收到的时间将分别保存到address和recvtime中。rtp标志用来区分收到的数据是RTP数据还是RTCP数据。

uint8_t *GetData()

-----返回指向数据包中数据的地址。

size_t GetDataLength() const

-----返回该对象所代表的数据包的长度。

RTPTime GetReceiveTime() const

-----返回收到数据包的时间。

const RTPAddress *GetSenderAddress() const

-----返回数据包中保存的(发送方)地址。

bool IsRTP() const

-----如果数据是RTP数据返回true,否则返回false代表是RTCP数据。

void ZeroData()

-----将指向数据包中保存的数据的指针设为0,这将阻止在调用类的析构函数时对实际数据进行的delete调用。该函数在类RTPPacket和RTCPCompoundPacket用来获取数据包数据而又不需要复制数据时使用,用来确保当RTPRawPacket的析构函数调用时不会删除数据。

 

3.2.11 RTPPacket

--------------------------------------------------------------------------头文件:rtppacket.h

       类RTPPacket用来在RTPRawPacket对象表示一个RTP数据时解析(数据包)。该类也可以用来根据用户指定的参数生成一个RTP数据包,接口如下:

RTPPacket(RTPRawPacket &rawpacket)

-----基于rawpacket中的数据生成一个RTPPacket对象。

RTPPacket(uint8_t payloadtype, const void *payloaddata, size_t payloadlen, uint16_t seqnr, uint32_t timestamp, uint32_t ssrc, bool gotmaker, uint8_t numcsrcs, const uint32_t *csrcs, bool gotextension, uint16_t extionid, uint16_t extensionlen_numwords, const void *extensiondata, size_t maxpacksizt=0)

-----为RTP数据包生成一个新的缓冲区,并根据给定的参数填充各个域。如果maxpacksize不等于0,则当总的数据包大小超过maxpacksize时将产生一个错误。该构造函数的参数都是自解释的,需要注意的是扩展头的大小由一个32位的字指定。

RTPPacket(uint8_t payloadtype, const void *payloaddata, size_t payloadlen, uint16_t seqnr, uint32_t timestamp, uint32_t ssrc, bool gotmaker, uint8_t numcsrcs, const uint32_t *csrcs, bool gotextension, uint16_t extionid, uint16_t extensionlen_numwords, const void *extensiondata, void *buffer, size_t buffersize)

-----与上一个函数基本一样的函数,不同点在于数据是存储在一个由buffer指定的大小为buffersize的缓冲区中。

int GetCreationError() const

-----如果构造函数发生错误,该函数返回错误码。

bool HasExtension() const

-----如果RTP数据包有扩展头则返回true,否则返回false。

bool HasMarker() const

-----如果marker标志位被置位,返回true,否则返回false。

int GetCSRCCount() const

-----返回数据包中的CSRC数。

uint32_t GetCSRC(int num) const

-----返回指定的CSRC标识符,参数num可以从0到GetCSRCCount()-1。

uint8_t GetPayloadType() const

-----返回数据包的负载类型。

uint32_t GetExtendedSequenceNumber() const

-----返回数据包的扩展序列号。当数据包刚刚收到时,只有底16位被设置,高16位随后填充。

uint16_t GetSequenceNumber() const

-----返回数据包的序列号。

void SetExtendedSequenceNumber(uint32_t seq)

-----将数据包的扩展序列号设置为seq。

void GetTimestamp() const

-----返回数据包的时间戳。

uint32_t GetSSRC() const

-----返回数据包中的SSRC标识符。

uint8_t *GetPacketData() const

-----返回指向整个数据包的指针。

uint8_t *GetPayloadData() const

-----返回指向实际负载数据的指针。

size_t GetPacketLength() const

-----返回整个数据包的大小。

size_t GetPayloadLength() const

-----返回整个负载数据的大小。

uint16_t GetExtensionID() const

-----如果有扩展头,则该函数将返回扩展标识符。

uint8_t *GetExtensionData() const

-----返回指向扩展头数据的指针。

size_t GetExtensionLength() const

-----返回扩展头数据的大小。

RTPTime GetReceiveTime() const

-----当一个RTPPacket对象从RTPRawPacket对象中创建时,原始数据的接收时间将保存到RTPPacket对象中,该函数用来获取这个时间。

 

3.2.12 RTPCompoundPacket

-------------------------------------------------------------------------头文件:rtpcompoundpacket.h

       该类描述RTCP复合数据包,接口如下:

RTCPCompoundPacket(RTPRawPacket &rawpack)

-----根据rawpack的数据生成一个RTCPCompoundPacket对象。

int GetCreationError()

-----如果在构造函数中的原始数据包无法解析,则该函数将返回出错原因的错误码。如果包的格式不合法则将返回ERR_RTP_RCTPCOMPOUND_INVALIDPACKET。

uint8_t *GetCompoundPacketData()

-----返回指向整个RTCP复合数据包数据的指针。

size_t GetCompoundPacketLength()

-----返回整个RTCP复合数据包的长度。

void GotoFirstPacket()

-----开始遍历整个RTCP复合数据包中的单个RTCP数据包。

RTCPPacket *GetNextPacket()

-----返回指向下一个独立RTCP数据包的指针。注意:返回的RTCPPacket对象可能不调用delete。RTCPPacket类的介绍如下:

RTCPPacket

-----------------------------------------------------------------------------头文件:rtppacket.h

       类RTCPPacket是具体类型的RTCP数据包的基类。在类中定义的下面的类型指出了不同的具体数据包类型:

enum PacketType{ SR, RR, SDES, BYE, APP, Unknown };

类定义的成员函数有:

bool IsKnownFormat() const

-----如果子类可以解析数据则返回true,否则返回false。

PacketType GetPacketType() const

-----返回子类实现的具体的包类型:

       --RTCPPacket::SR:表明是一个RTCPSRPacket对象。

       --RTCPPacket::RR:表明是一个RTCPRRPacket对象。

       --RTCPPacket::SDES:表明是一个RTCPSDESPacket对象。

       --RTCPPacket::BYE:表明是一个RTCPBYEPacket对象。

       --RTCPPacket::APP:表明是一个RTCPAPPPacket对象。

       --RTCPPacket::Unkown:表明是一个RTCPUnknownPacket对象。

uint8_t *GetPacketData()

-----返回指向RTCP数据包中的数据的指针。

size_t GetPacketLength() const

-----返回RTCP数据包的长度。

RTCPSRPacket

-----------------------------------------------------------------------头文件:rtcpsrpacket.h

----------------------------------------------------------------------继承自:RTCPPacket

       类描述了一个RTCP发送方报告数据包,接口如下:

RTCPSRPacket(uint8_t *data, size_t datalen)

-----基于长度为datalen的数据data创建一个RTCPSRPacket数据包对象。因为data指向的数据在类内部被引用(即不复制数据),所以必须确保在该对象存在期间data指针指向的内存是有效合法的。

uint32_t GetSenderSSRC() const

-----返回发送该数据包的(会话)参与者的SSRC。

RTPNTPTime GetNTPTimestamp() const

-----返回发送发报告中的NTP时间戳。

uint32_t GetRTPTimestamp() const

-----返回发送方报告中的RTP时间戳。

uint32_t GetSenderPacketCount() const

-----返回在发送方报告中的发送方数据包计数。

uint32_t GetSenderOctetCount() const

-----返回在发送方报告中的发送方字节计数。

int GetReceptionReportCount() const

-----返回数据包中的接收报告块的个数。(译注:not sure。原文:Return the number of report blocks present in this packet.)

uint32_t GetSSRC(int index) const

-----返回由index指定的接收报告块的SSRC,index的取值范围从0到GetReceptionReportCount()-1。注意:(函数)并不检查index范围的合法性。

uint8_t GetFractionLost(int index) const

-----返回index指定的接收报告中的丢包率属性(or字段?)。index的取值范围与上面一样,同样不检查index的范围的合法性。

int32_t GetLostPacketCount(int index) const

-----返回由index指出的接受报告中的丢失的数据包的个数。关于index的描述与上面相同。

uint32_t GetExtendedHighestSequenceNumber(int index) const

-----返回由index指出的接收报告中的扩展的最高序列号(??),index同上。

uint32_t GetJitter(int index) const

-----返回index指出的接收报告中的抖动属性,index同上。

uint32_t GetLSR(int index) const

-----返回index指出的接受报告中的LSR属性,index同上。

uint32_t GetDLSR(int index) const

-----返回index指出的接受报告中的DLSR属性,index同上。

【to be continued!】

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值