JRTPLIB 3.5.2手冊中文版—part7

來源:互聯網
上載者:User

 

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!】

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.