3.2 全部的API描述
本部分将解释库的所有API,将采用从下到上的方式。
3.2.1 库版本
------------------------------------------------------------头文件:rtplibraryversion.h
RTPLibraryVersion类有一个静态成员创建了该类的一个对象。
static RTPLibraryVersion GetVersion()
使用者可以通过下面的函数获取版本信息。
int GetMajorNumber() const
-----返回主版本号。
int GetMinorNumber() const
-----返回副版本号。
int GetDebugNumber() const
-----返回调试版本号。
std::string GetVersionString() const
-----返回版本描述字符串。
3.2.2 错误码
--------------------------------------------------------------------头文件:rtperrors.h
除非特别指出,否则返回int的函数如果返回值为负则表明出现了一个错误,为0或者正则标志成功。一个关于错误码的描述可以通过使用下面的函数获取:
std::string RTPGetErrorString(int errcode)
3.2.3 实用时间工具
--------------------------------------------------------------------头文件:rtptimeutilities.h
RTPNTPTime
这是NTP时间戳的MSW(最高有效字)和LSW(最低有效字)的一个简单的包装,该类有下列成员。
RTPNTPTime(uint32_t m, uint32_t l);
-----该构造函数创建一个MSW为m,LSW为l的类对象。
uint32_t GetMSW() const
-----返回最高有效字。
uint32_t GetLSW() const
-----返回最低有效字。
RTPTime
该类用于描述时钟时间,延迟间隔等。其中保存一个以秒s数据和一个毫秒ms数据,接口如下:
RTPTime(uint32_t seconds, uint32_t microseconds)
-----创建一个对应s和ms分别为seconds和microseconds的对象。
RTPTime(double t)
-----创建一个代表以秒为单位的时间t的RTPTime实例。
RTPTime(RTPNTPTime ntptime)
-----创建一个对应时间为ntptime的对象,如果无法完成转换那么,对象的秒和毫秒都将设为0。
uint32_t GetSeconds() const
-----返回对象中保存的秒数值。
uint32_t GetMicroSeconds() const
----返回对象中保存的毫秒数值。
Double GetDouble() const
-----返回对象中存储的以秒为单位的时间。
RTPNTPTime GetNTPTime() const
-----返回对象中保存时间的对应NTP时间。
Static RTPTime CurrentTime()
-----返回代表当前时钟时间的RTPTime对象,该值是自从1970年1月1日00:00:00 UTC 以来的秒数。
Static void Wait(const RTPTime &delay)
-----该函数等待一段由delay指定的时间。
RTPTime类还定义了以下操作符:
operator-=
operator+=
operator<
operator>
operator<=
operator>=
3.2.4 RTPRandom
--------------------------------------------------------------------------头文件:rtprandom.h
RTPRandom类可用来产生随机数,成员函数如下:
uint8_t GetRandom8()
-----返回随机8比特值。
uint16_t GetRandom16()
-----返回随机16比特值。
uint32_t GetRandom32()
-----返回随机32比特值。
double GetRandomDouble()
-----返回0.0到1.0之间的随机数。
3.2.5 RTPSDESInfo
-------------------------------------------------------------------------头文件:rtcpsdesinfo.h
类RTPSDESInfo是RTCP中SDES信息的一个容器,接口如下:
void Clear()
-----清除所有的SDES信息。
int SetCNAME(const uint8_t *s, size_t l)
-----设置SDES的CNAME项为指向s的长度为l一块内存的值。
int SetName(const uint8_t *s, size_t l)
-----设置SDES的name项为指向s的长度为l一块内存的值。
int SetEMail(const uint8_t *s, size_t l)
-----设置SDES的e-mail项为指向s的长度为l一块内存的值。
int SetPhone(const uint8_t *s, size_t l)
-----设置SDES的phone项为指向s的长度为l一块内存的值。
int SetLocation(const uint8_t *s, size_t l)
-----设置SDES的location项为指向s的长度为l一块内存的值。
int SetTool(const uint8_t *s, size_t l)
-----设置SDES的tool项为指向s的长度为l一块内存的值。
int SetNote(const uint8_t *s, size_t l)
-----设置SDES的note项为指向s的长度为l一块内存的值。
uint8_t *GetCNAME(size_t *len) const
-----返回SDES的CNAME项的,并把长度存放到len中。
uint8_t *GetName(size_t *len) const
-----返回SDES的name项的,并把长度存放到len中。
uint8_t *GetEMail(size_t *len) const
-----返回SDES的e-mail项的,并把长度存放到len中。
uint8_t *GetPhone(size_t *len) const
-----返回SDES的phone项的,并把长度存放到len中。
uint8_t *GetLocation(size_t *len) const
-----返回SDES的location项的,并把长度存放到len中。
uint8_t *GetTool(size_t *len) const
-----返回SDES的tool项的,并把长度存放到len中。
uint8_t *GetNote(size_t *len) const
-----返回SDES的Note项的,并把长度存放到len中。
如果编译库的时候使能了SDES的私有项支持,那么下面的函数也可以使用。
int SetPrivateValue(const uint8_t *prefix, size_t prefixlen, const uint8_t *value, size_t valuelen)
-----设置前缀串的输入为长度为prefixlen的prefix指向的内容,用于包含长度为valuelen的由value指向的值串,如果达到了前缀串的最大允许长度,则将返回错误码ERR_RTP_SDES_MAXPRIVITEMS。
int DeletePrivatePrefix(const uint8_t *s, size_t len)
-----删除由s指向的长度为len的前缀串的输入。
void GotoFirstPrivateValue()
-----开始遍历SDES中存储的前缀条目和它们相关联的数据。
bool GetNextPrivateValue(uint8_t **prefix, size_t *prefixlen, uint8_t **value, size_t *valuelen)
-----如果可用将返回true,并且将下一个SDES私有前缀条目存入prefix,将长度存入prefixlen,将相关数据和长度存入value和valuelen。若不可用则返回false。
bool GetPrivateValue(const uint8_t *prefix, size_t prefixlen, uint8_t **value, size_t *valuelen) const
-----查找SDES中私有条目为prefix长度为prefixlen的输入,如果找到返回true,并且将相关联的值和长度分别存入value和valuelen中。
【to be continued!】