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_;