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