blob: c2599a2636dda30f1069c85fed6d7536873603b0 [file] [log] [blame]
andrew@webrtc.orgb015cbe2012-10-22 18:19:23 +00001/*
2 * Copyright (c) 2012 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#ifndef WEBRTC_VOICE_ENGINE_VOE_RTP_RTCP_IMPL_H
12#define WEBRTC_VOICE_ENGINE_VOE_RTP_RTCP_IMPL_H
13
pbos@webrtc.org471ae722013-05-21 13:52:32 +000014#include "webrtc/voice_engine/include/voe_rtp_rtcp.h"
andrew@webrtc.orgb015cbe2012-10-22 18:19:23 +000015
pbos@webrtc.org471ae722013-05-21 13:52:32 +000016#include "webrtc/voice_engine/shared_data.h"
andrew@webrtc.orgb015cbe2012-10-22 18:19:23 +000017
18namespace webrtc {
19
20class VoERTP_RTCPImpl : public VoERTP_RTCP
21{
22public:
andrew@webrtc.orgb015cbe2012-10-22 18:19:23 +000023 // RTCP
24 virtual int SetRTCPStatus(int channel, bool enable);
25
26 virtual int GetRTCPStatus(int channel, bool& enabled);
27
28 virtual int SetRTCP_CNAME(int channel, const char cName[256]);
29
andrew@webrtc.orgb015cbe2012-10-22 18:19:23 +000030 virtual int GetRemoteRTCP_CNAME(int channel, char cName[256]);
31
32 virtual int GetRemoteRTCPData(int channel,
33 unsigned int& NTPHigh,
34 unsigned int& NTPLow,
35 unsigned int& timestamp,
36 unsigned int& playoutTimestamp,
37 unsigned int* jitter = NULL,
38 unsigned short* fractionLost = NULL);
39
andrew@webrtc.orgb015cbe2012-10-22 18:19:23 +000040 // SSRC
41 virtual int SetLocalSSRC(int channel, unsigned int ssrc);
42
43 virtual int GetLocalSSRC(int channel, unsigned int& ssrc);
44
45 virtual int GetRemoteSSRC(int channel, unsigned int& ssrc);
46
47 // RTP Header Extension for Client-to-Mixer Audio Level Indication
wu@webrtc.org9a823222014-03-06 23:49:08 +000048 virtual int SetSendAudioLevelIndicationStatus(int channel,
49 bool enable,
50 unsigned char id);
wu@webrtc.org47e54ba2014-04-24 20:33:08 +000051 virtual int SetReceiveAudioLevelIndicationStatus(int channel,
52 bool enable,
53 unsigned char id);
andrew@webrtc.orgb015cbe2012-10-22 18:19:23 +000054
wu@webrtc.org9a823222014-03-06 23:49:08 +000055 // RTP Header Extension for Absolute Sender Time
56 virtual int SetSendAbsoluteSenderTimeStatus(int channel,
57 bool enable,
58 unsigned char id);
59 virtual int SetReceiveAbsoluteSenderTimeStatus(int channel,
60 bool enable,
61 unsigned char id);
andrew@webrtc.orgb015cbe2012-10-22 18:19:23 +000062
andrew@webrtc.orgb015cbe2012-10-22 18:19:23 +000063 // Statistics
64 virtual int GetRTPStatistics(int channel,
65 unsigned int& averageJitterMs,
66 unsigned int& maxJitterMs,
67 unsigned int& discardedPackets);
68
69 virtual int GetRTCPStatistics(int channel, CallStatistics& stats);
70
andrew@webrtc.orgb015cbe2012-10-22 18:19:23 +000071 virtual int GetRemoteRTCPReportBlocks(
72 int channel, std::vector<ReportBlock>* report_blocks);
73
minyue@webrtc.orgdd671de2014-05-28 09:52:06 +000074 // RED
75 virtual int SetREDStatus(int channel,
andrew@webrtc.orgb015cbe2012-10-22 18:19:23 +000076 bool enable,
77 int redPayloadtype = -1);
78
minyue@webrtc.orgdd671de2014-05-28 09:52:06 +000079 virtual int GetREDStatus(int channel, bool& enabled, int& redPayloadtype);
andrew@webrtc.orgb015cbe2012-10-22 18:19:23 +000080
niklas.enbom@webrtc.org2753b762013-05-31 21:13:52 +000081 //NACK
82 virtual int SetNACKStatus(int channel,
83 bool enable,
84 int maxNoPackets);
85
andrew@webrtc.orgb015cbe2012-10-22 18:19:23 +000086 // Store RTP and RTCP packets and dump to file (compatible with rtpplay)
87 virtual int StartRTPDump(int channel,
88 const char fileNameUTF8[1024],
89 RTPDirections direction = kRtpIncoming);
90
91 virtual int StopRTPDump(int channel,
92 RTPDirections direction = kRtpIncoming);
93
94 virtual int RTPDumpIsActive(int channel,
95 RTPDirections direction = kRtpIncoming);
96
solenberg@webrtc.orgfec6b6e2014-03-24 10:38:25 +000097 virtual int SetVideoEngineBWETarget(int channel, ViENetwork* vie_network,
98 int video_channel);
andrew@webrtc.orgb015cbe2012-10-22 18:19:23 +000099protected:
100 VoERTP_RTCPImpl(voe::SharedData* shared);
101 virtual ~VoERTP_RTCPImpl();
102
103private:
104 voe::SharedData* _shared;
105};
106
107} // namespace webrtc
108
109#endif // WEBRTC_VOICE_ENGINE_VOE_RTP_RTCP_IMPL_H