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
18namespace webrtc {
19namespace rtcp {
20
21class 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;
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
38  void To(uint32_t ssrc) { ssrc_ = ssrc; }
39  void WithVoipMetric(const RTCPVoIPMetric& voip_metric) {
40    voip_metric_ = voip_metric;
41  }
42
43  uint32_t ssrc() const { return ssrc_; }
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