1 /*
2  *  Copyright (c) 2015 The WebRTC project authors. All Rights Reserved.
3  *
4  *  Use of this source code is governed by a BSD-style license
5  *  that can be found in the LICENSE file in the root of the source
6  *  tree. An additional intellectual property rights grant can be found
7  *  in the file PATENTS.  All contributing project authors may
8  *  be found in the AUTHORS file in the root of the source tree.
9  *
10  */
11 
12 #ifndef WEBRTC_MODULES_RTP_RTCP_SOURCE_RTCP_PACKET_VOIP_METRIC_H_
13 #define WEBRTC_MODULES_RTP_RTCP_SOURCE_RTCP_PACKET_VOIP_METRIC_H_
14 
15 #include "webrtc/base/basictypes.h"
16 #include "webrtc/modules/include/module_common_types.h"
17 
18 namespace webrtc {
19 namespace rtcp {
20 
21 class VoipMetric {
22  public:
23   static const uint8_t kBlockType = 7;
24   static const uint16_t kBlockLength = 8;
25   static const size_t kLength = 4 * (kBlockLength + 1);  // 36
26   VoipMetric();
27   VoipMetric(const VoipMetric&) = default;
~VoipMetric()28   ~VoipMetric() {}
29 
30   VoipMetric& operator=(const VoipMetric&) = default;
31 
32   void Parse(const uint8_t* buffer);
33 
34   // Fills buffer with the VoipMetric.
35   // Consumes VoipMetric::kLength bytes.
36   void Create(uint8_t* buffer) const;
37 
To(uint32_t ssrc)38   void To(uint32_t ssrc) { ssrc_ = ssrc; }
WithVoipMetric(const RTCPVoIPMetric & voip_metric)39   void WithVoipMetric(const RTCPVoIPMetric& voip_metric) {
40     voip_metric_ = voip_metric;
41   }
42 
ssrc()43   uint32_t ssrc() const { return ssrc_; }
voip_metric()44   const RTCPVoIPMetric& voip_metric() const { return voip_metric_; }
45 
46  private:
47   uint32_t ssrc_;
48   RTCPVoIPMetric voip_metric_;
49 };
50 
51 }  // namespace rtcp
52 }  // namespace webrtc
53 #endif  // WEBRTC_MODULES_RTP_RTCP_SOURCE_RTCP_PACKET_VOIP_METRIC_H_
54