Add SDES, APP, IJ, SLI and PLI packet types to RTCP packet class.

BUG=2450
R=mflodman@webrtc.org, stefan@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/19559004

git-svn-id: http://webrtc.googlecode.com/svn/trunk@6449 4adac7df-926f-26a2-2b94-8c16560cd09d
This commit is contained in:
asapersson@webrtc.org
2014-06-16 14:09:28 +00:00
parent 27626a6256
commit 4b12d40008
5 changed files with 1046 additions and 207 deletions

View File

@ -13,6 +13,7 @@
#define WEBRTC_TEST_RTCP_PACKET_PARSER_H_
#include <map>
#include <string>
#include <vector>
#include "webrtc/modules/rtp_rtcp/source/rtcp_utility.h"
@ -100,6 +101,65 @@ class ReportBlock : public PacketType {
RTCPUtility::RTCPPacketReportBlockItem rb_;
};
class Ij : public PacketType {
public:
Ij() {}
virtual ~Ij() {}
private:
friend class RtcpPacketParser;
void Set() { ++num_packets_; }
};
class IjItem : public PacketType {
public:
IjItem() {}
virtual ~IjItem() {}
uint32_t Jitter() const { return ij_item_.Jitter; }
private:
friend class RtcpPacketParser;
void Set(const RTCPUtility::RTCPPacketExtendedJitterReportItem& ij_item) {
ij_item_ = ij_item;
++num_packets_;
}
RTCPUtility::RTCPPacketExtendedJitterReportItem ij_item_;
};
class Sdes : public PacketType {
public:
Sdes() {}
virtual ~Sdes() {}
private:
friend class RtcpPacketParser;
void Set() { ++num_packets_; }
};
class SdesChunk : public PacketType {
public:
SdesChunk() {}
virtual ~SdesChunk() {}
uint32_t Ssrc() const { return cname_.SenderSSRC; }
std::string Cname() const { return cname_.CName; }
private:
friend class RtcpPacketParser;
void Set(const RTCPUtility::RTCPPacketSDESCName& cname) {
cname_ = cname;
++num_packets_;
}
RTCPUtility::RTCPPacketSDESCName cname_;
};
class Bye : public PacketType {
public:
Bye() {}
@ -140,6 +200,102 @@ class Rpsi : public PacketType {
RTCPUtility::RTCPPacketPSFBRPSI rpsi_;
};
class App : public PacketType {
public:
App() {}
virtual ~App() {}
uint8_t SubType() const { return app_.SubType; }
uint32_t Name() const { return app_.Name; }
private:
friend class RtcpPacketParser;
void Set(const RTCPUtility::RTCPPacketAPP& app) {
app_ = app;
++num_packets_;
}
RTCPUtility::RTCPPacketAPP app_;
};
class AppItem : public PacketType {
public:
AppItem() {}
virtual ~AppItem() {}
uint8_t* Data() { return app_item_.Data; }
uint16_t DataLength() const { return app_item_.Size; }
private:
friend class RtcpPacketParser;
void Set(const RTCPUtility::RTCPPacketAPP& app) {
app_item_ = app;
++num_packets_;
}
RTCPUtility::RTCPPacketAPP app_item_;
};
class Pli : public PacketType {
public:
Pli() {}
virtual ~Pli() {}
uint32_t Ssrc() const { return pli_.SenderSSRC; }
uint32_t MediaSsrc() const { return pli_.MediaSSRC; }
private:
friend class RtcpPacketParser;
void Set(const RTCPUtility::RTCPPacketPSFBPLI& pli) {
pli_ = pli;
++num_packets_;
}
RTCPUtility::RTCPPacketPSFBPLI pli_;
};
class Sli : public PacketType {
public:
Sli() {}
virtual ~Sli() {}
uint32_t Ssrc() const { return sli_.SenderSSRC; }
uint32_t MediaSsrc() const { return sli_.MediaSSRC; }
private:
friend class RtcpPacketParser;
void Set(const RTCPUtility::RTCPPacketPSFBSLI& sli) {
sli_ = sli;
++num_packets_;
}
RTCPUtility::RTCPPacketPSFBSLI sli_;
};
class SliItem : public PacketType {
public:
SliItem() {}
virtual ~SliItem() {}
uint16_t FirstMb() const { return sli_item_.FirstMB; }
uint16_t NumberOfMb() const { return sli_item_.NumberOfMB; }
uint8_t PictureId() const { return sli_item_.PictureId; }
private:
friend class RtcpPacketParser;
void Set(const RTCPUtility::RTCPPacketPSFBSLIItem& sli_item) {
sli_item_ = sli_item;
++num_packets_;
}
RTCPUtility::RTCPPacketPSFBSLIItem sli_item_;
};
class Fir : public PacketType {
public:
Fir() {}
@ -232,7 +388,16 @@ class RtcpPacketParser {
SenderReport* sender_report() { return &sender_report_; }
ReceiverReport* receiver_report() { return &receiver_report_; }
ReportBlock* report_block() { return &report_block_; }
Sdes* sdes() { return &sdes_; }
SdesChunk* sdes_chunk() { return &sdes_chunk_; }
Bye* bye() { return &bye_; }
App* app() { return &app_; }
AppItem* app_item() { return &app_item_; }
Ij* ij() { return &ij_; }
IjItem* ij_item() { return &ij_item_; }
Pli* pli() { return &pli_; }
Sli* sli() { return &sli_; }
SliItem* sli_item() { return &sli_item_; }
Rpsi* rpsi() { return &rpsi_; }
Fir* fir() { return &fir_; }
FirItem* fir_item() { return &fir_item_; }
@ -247,7 +412,16 @@ class RtcpPacketParser {
SenderReport sender_report_;
ReceiverReport receiver_report_;
ReportBlock report_block_;
Sdes sdes_;
SdesChunk sdes_chunk_;
Bye bye_;
App app_;
AppItem app_item_;
Ij ij_;
IjItem ij_item_;
Pli pli_;
Sli sli_;
SliItem sli_item_;
Rpsi rpsi_;
Fir fir_;
FirItem fir_item_;