1470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com/* 20975d2158c0479fd0546b4411b33ca709c1b683eleozwang@webrtc.org * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. 3470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * 4470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * Use of this source code is governed by a BSD-style license 5470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * that can be found in the LICENSE file in the root of the source 6470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * tree. An additional intellectual property rights grant can be found 7470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * in the file PATENTS. All contributing project authors may 8470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * be found in the AUTHORS file in the root of the source tree. 9470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com */ 10470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 11470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com#ifndef WEBRTC_VOICE_ENGINE_VOE_RTP_RTCP_IMPL_H 12470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com#define WEBRTC_VOICE_ENGINE_VOE_RTP_RTCP_IMPL_H 13470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 14956aa7e0874f2e08c335a82a2c32f400fac8b031pbos@webrtc.org#include "webrtc/voice_engine/include/voe_rtp_rtcp.h" 15470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 16956aa7e0874f2e08c335a82a2c32f400fac8b031pbos@webrtc.org#include "webrtc/voice_engine/shared_data.h" 17470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 18470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.comnamespace webrtc { 19470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 200d266054acece70259fc1e85026194154f41e5a0Jelena Marusicclass VoERTP_RTCPImpl : public VoERTP_RTCP { 210d266054acece70259fc1e85026194154f41e5a0Jelena Marusic public: 220d266054acece70259fc1e85026194154f41e5a0Jelena Marusic // RTCP 230d266054acece70259fc1e85026194154f41e5a0Jelena Marusic int SetRTCPStatus(int channel, bool enable) override; 240d266054acece70259fc1e85026194154f41e5a0Jelena Marusic 250d266054acece70259fc1e85026194154f41e5a0Jelena Marusic int GetRTCPStatus(int channel, bool& enabled) override; 260d266054acece70259fc1e85026194154f41e5a0Jelena Marusic 270d266054acece70259fc1e85026194154f41e5a0Jelena Marusic int SetRTCP_CNAME(int channel, const char cName[256]) override; 280d266054acece70259fc1e85026194154f41e5a0Jelena Marusic 290d266054acece70259fc1e85026194154f41e5a0Jelena Marusic int GetRemoteRTCP_CNAME(int channel, char cName[256]) override; 300d266054acece70259fc1e85026194154f41e5a0Jelena Marusic 310d266054acece70259fc1e85026194154f41e5a0Jelena Marusic int GetRemoteRTCPData(int channel, 320d266054acece70259fc1e85026194154f41e5a0Jelena Marusic unsigned int& NTPHigh, 330d266054acece70259fc1e85026194154f41e5a0Jelena Marusic unsigned int& NTPLow, 340d266054acece70259fc1e85026194154f41e5a0Jelena Marusic unsigned int& timestamp, 350d266054acece70259fc1e85026194154f41e5a0Jelena Marusic unsigned int& playoutTimestamp, 360d266054acece70259fc1e85026194154f41e5a0Jelena Marusic unsigned int* jitter = NULL, 370d266054acece70259fc1e85026194154f41e5a0Jelena Marusic unsigned short* fractionLost = NULL) override; 380d266054acece70259fc1e85026194154f41e5a0Jelena Marusic 390d266054acece70259fc1e85026194154f41e5a0Jelena Marusic // SSRC 400d266054acece70259fc1e85026194154f41e5a0Jelena Marusic int SetLocalSSRC(int channel, unsigned int ssrc) override; 410d266054acece70259fc1e85026194154f41e5a0Jelena Marusic 420d266054acece70259fc1e85026194154f41e5a0Jelena Marusic int GetLocalSSRC(int channel, unsigned int& ssrc) override; 430d266054acece70259fc1e85026194154f41e5a0Jelena Marusic 440d266054acece70259fc1e85026194154f41e5a0Jelena Marusic int GetRemoteSSRC(int channel, unsigned int& ssrc) override; 450d266054acece70259fc1e85026194154f41e5a0Jelena Marusic 460d266054acece70259fc1e85026194154f41e5a0Jelena Marusic // RTP Header Extension for Client-to-Mixer Audio Level Indication 470d266054acece70259fc1e85026194154f41e5a0Jelena Marusic int SetSendAudioLevelIndicationStatus(int channel, 480d266054acece70259fc1e85026194154f41e5a0Jelena Marusic bool enable, 490d266054acece70259fc1e85026194154f41e5a0Jelena Marusic unsigned char id) override; 500d266054acece70259fc1e85026194154f41e5a0Jelena Marusic int SetReceiveAudioLevelIndicationStatus(int channel, 510d266054acece70259fc1e85026194154f41e5a0Jelena Marusic bool enable, 520d266054acece70259fc1e85026194154f41e5a0Jelena Marusic unsigned char id) override; 530d266054acece70259fc1e85026194154f41e5a0Jelena Marusic 540d266054acece70259fc1e85026194154f41e5a0Jelena Marusic // RTP Header Extension for Absolute Sender Time 550d266054acece70259fc1e85026194154f41e5a0Jelena Marusic int SetSendAbsoluteSenderTimeStatus(int channel, 560d266054acece70259fc1e85026194154f41e5a0Jelena Marusic bool enable, 570d266054acece70259fc1e85026194154f41e5a0Jelena Marusic unsigned char id) override; 580d266054acece70259fc1e85026194154f41e5a0Jelena Marusic int SetReceiveAbsoluteSenderTimeStatus(int channel, 590d266054acece70259fc1e85026194154f41e5a0Jelena Marusic bool enable, 600d266054acece70259fc1e85026194154f41e5a0Jelena Marusic unsigned char id) override; 610d266054acece70259fc1e85026194154f41e5a0Jelena Marusic 620d266054acece70259fc1e85026194154f41e5a0Jelena Marusic // Statistics 630d266054acece70259fc1e85026194154f41e5a0Jelena Marusic int GetRTPStatistics(int channel, 640d266054acece70259fc1e85026194154f41e5a0Jelena Marusic unsigned int& averageJitterMs, 650d266054acece70259fc1e85026194154f41e5a0Jelena Marusic unsigned int& maxJitterMs, 660d266054acece70259fc1e85026194154f41e5a0Jelena Marusic unsigned int& discardedPackets) override; 670d266054acece70259fc1e85026194154f41e5a0Jelena Marusic 680d266054acece70259fc1e85026194154f41e5a0Jelena Marusic int GetRTCPStatistics(int channel, CallStatistics& stats) override; 690d266054acece70259fc1e85026194154f41e5a0Jelena Marusic 700d266054acece70259fc1e85026194154f41e5a0Jelena Marusic int GetRemoteRTCPReportBlocks( 710d266054acece70259fc1e85026194154f41e5a0Jelena Marusic int channel, 720d266054acece70259fc1e85026194154f41e5a0Jelena Marusic std::vector<ReportBlock>* report_blocks) override; 730d266054acece70259fc1e85026194154f41e5a0Jelena Marusic 740d266054acece70259fc1e85026194154f41e5a0Jelena Marusic // RED 750d266054acece70259fc1e85026194154f41e5a0Jelena Marusic int SetREDStatus(int channel, bool enable, int redPayloadtype = -1) override; 760d266054acece70259fc1e85026194154f41e5a0Jelena Marusic 770d266054acece70259fc1e85026194154f41e5a0Jelena Marusic int GetREDStatus(int channel, bool& enabled, int& redPayloadtype) override; 780d266054acece70259fc1e85026194154f41e5a0Jelena Marusic 790d266054acece70259fc1e85026194154f41e5a0Jelena Marusic // NACK 800d266054acece70259fc1e85026194154f41e5a0Jelena Marusic int SetNACKStatus(int channel, bool enable, int maxNoPackets) override; 810d266054acece70259fc1e85026194154f41e5a0Jelena Marusic 820d266054acece70259fc1e85026194154f41e5a0Jelena Marusic protected: 830d266054acece70259fc1e85026194154f41e5a0Jelena Marusic VoERTP_RTCPImpl(voe::SharedData* shared); 840d266054acece70259fc1e85026194154f41e5a0Jelena Marusic ~VoERTP_RTCPImpl() override; 850d266054acece70259fc1e85026194154f41e5a0Jelena Marusic 860d266054acece70259fc1e85026194154f41e5a0Jelena Marusic private: 870d266054acece70259fc1e85026194154f41e5a0Jelena Marusic voe::SharedData* _shared; 88470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com}; 89470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 90470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com} // namespace webrtc 91470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 920d266054acece70259fc1e85026194154f41e5a0Jelena Marusic#endif // WEBRTC_VOICE_ENGINE_VOE_RTP_RTCP_IMPL_H 93