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/webrtc@6449 4adac7df-926f-26a2-2b94-8c16560cd09d
diff --git a/test/rtcp_packet_parser.h b/test/rtcp_packet_parser.h
index 4db58c3..a09674f 100644
--- a/test/rtcp_packet_parser.h
+++ b/test/rtcp_packet_parser.h
@@ -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 @@
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 @@
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 @@
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 @@
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_;