191941ae493cb37a4e1250c7d3aad1c7394b5850edanilchap/* 291941ae493cb37a4e1250c7d3aad1c7394b5850edanilchap * Copyright (c) 2015 The WebRTC project authors. All Rights Reserved. 391941ae493cb37a4e1250c7d3aad1c7394b5850edanilchap * 491941ae493cb37a4e1250c7d3aad1c7394b5850edanilchap * Use of this source code is governed by a BSD-style license 591941ae493cb37a4e1250c7d3aad1c7394b5850edanilchap * that can be found in the LICENSE file in the root of the source 691941ae493cb37a4e1250c7d3aad1c7394b5850edanilchap * tree. An additional intellectual property rights grant can be found 791941ae493cb37a4e1250c7d3aad1c7394b5850edanilchap * in the file PATENTS. All contributing project authors may 891941ae493cb37a4e1250c7d3aad1c7394b5850edanilchap * be found in the AUTHORS file in the root of the source tree. 991941ae493cb37a4e1250c7d3aad1c7394b5850edanilchap * 1091941ae493cb37a4e1250c7d3aad1c7394b5850edanilchap */ 1191941ae493cb37a4e1250c7d3aad1c7394b5850edanilchap 1291941ae493cb37a4e1250c7d3aad1c7394b5850edanilchap#ifndef WEBRTC_MODULES_RTP_RTCP_SOURCE_RTCP_PACKET_VOIP_METRIC_H_ 1391941ae493cb37a4e1250c7d3aad1c7394b5850edanilchap#define WEBRTC_MODULES_RTP_RTCP_SOURCE_RTCP_PACKET_VOIP_METRIC_H_ 1491941ae493cb37a4e1250c7d3aad1c7394b5850edanilchap 1591941ae493cb37a4e1250c7d3aad1c7394b5850edanilchap#include "webrtc/base/basictypes.h" 1691941ae493cb37a4e1250c7d3aad1c7394b5850edanilchap#include "webrtc/modules/include/module_common_types.h" 1791941ae493cb37a4e1250c7d3aad1c7394b5850edanilchap 1891941ae493cb37a4e1250c7d3aad1c7394b5850edanilchapnamespace webrtc { 1991941ae493cb37a4e1250c7d3aad1c7394b5850edanilchapnamespace rtcp { 2091941ae493cb37a4e1250c7d3aad1c7394b5850edanilchap 2191941ae493cb37a4e1250c7d3aad1c7394b5850edanilchapclass VoipMetric { 2291941ae493cb37a4e1250c7d3aad1c7394b5850edanilchap public: 2391941ae493cb37a4e1250c7d3aad1c7394b5850edanilchap static const uint8_t kBlockType = 7; 2491941ae493cb37a4e1250c7d3aad1c7394b5850edanilchap static const uint16_t kBlockLength = 8; 2591941ae493cb37a4e1250c7d3aad1c7394b5850edanilchap static const size_t kLength = 4 * (kBlockLength + 1); // 36 2691941ae493cb37a4e1250c7d3aad1c7394b5850edanilchap VoipMetric(); 2791941ae493cb37a4e1250c7d3aad1c7394b5850edanilchap VoipMetric(const VoipMetric&) = default; 2891941ae493cb37a4e1250c7d3aad1c7394b5850edanilchap ~VoipMetric() {} 2991941ae493cb37a4e1250c7d3aad1c7394b5850edanilchap 3091941ae493cb37a4e1250c7d3aad1c7394b5850edanilchap VoipMetric& operator=(const VoipMetric&) = default; 3191941ae493cb37a4e1250c7d3aad1c7394b5850edanilchap 3291941ae493cb37a4e1250c7d3aad1c7394b5850edanilchap void Parse(const uint8_t* buffer); 3391941ae493cb37a4e1250c7d3aad1c7394b5850edanilchap 3491941ae493cb37a4e1250c7d3aad1c7394b5850edanilchap // Fills buffer with the VoipMetric. 3591941ae493cb37a4e1250c7d3aad1c7394b5850edanilchap // Consumes VoipMetric::kLength bytes. 3691941ae493cb37a4e1250c7d3aad1c7394b5850edanilchap void Create(uint8_t* buffer) const; 3791941ae493cb37a4e1250c7d3aad1c7394b5850edanilchap 3891941ae493cb37a4e1250c7d3aad1c7394b5850edanilchap void To(uint32_t ssrc) { ssrc_ = ssrc; } 3991941ae493cb37a4e1250c7d3aad1c7394b5850edanilchap void WithVoipMetric(const RTCPVoIPMetric& voip_metric) { 4091941ae493cb37a4e1250c7d3aad1c7394b5850edanilchap voip_metric_ = voip_metric; 4191941ae493cb37a4e1250c7d3aad1c7394b5850edanilchap } 4291941ae493cb37a4e1250c7d3aad1c7394b5850edanilchap 4391941ae493cb37a4e1250c7d3aad1c7394b5850edanilchap uint32_t ssrc() const { return ssrc_; } 4491941ae493cb37a4e1250c7d3aad1c7394b5850edanilchap const RTCPVoIPMetric& voip_metric() const { return voip_metric_; } 4591941ae493cb37a4e1250c7d3aad1c7394b5850edanilchap 4691941ae493cb37a4e1250c7d3aad1c7394b5850edanilchap private: 4791941ae493cb37a4e1250c7d3aad1c7394b5850edanilchap uint32_t ssrc_; 4891941ae493cb37a4e1250c7d3aad1c7394b5850edanilchap RTCPVoIPMetric voip_metric_; 4991941ae493cb37a4e1250c7d3aad1c7394b5850edanilchap}; 5091941ae493cb37a4e1250c7d3aad1c7394b5850edanilchap 5191941ae493cb37a4e1250c7d3aad1c7394b5850edanilchap} // namespace rtcp 5291941ae493cb37a4e1250c7d3aad1c7394b5850edanilchap} // namespace webrtc 5391941ae493cb37a4e1250c7d3aad1c7394b5850edanilchap#endif // WEBRTC_MODULES_RTP_RTCP_SOURCE_RTCP_PACKET_VOIP_METRIC_H_ 54