Upstream version 11.40.277.0
[platform/framework/web/crosswalk.git] / src / third_party / webrtc / voice_engine / voe_rtp_rtcp_impl.h
1 /*
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
14 #include "webrtc/voice_engine/include/voe_rtp_rtcp.h"
15
16 #include "webrtc/voice_engine/shared_data.h"
17
18 namespace webrtc {
19
20 class VoERTP_RTCPImpl : public VoERTP_RTCP
21 {
22 public:
23     // 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
30     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
40     // 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
48     virtual int SetSendAudioLevelIndicationStatus(int channel,
49                                                   bool enable,
50                                                   unsigned char id);
51     virtual int SetReceiveAudioLevelIndicationStatus(int channel,
52                                                      bool enable,
53                                                      unsigned char id);
54
55     // 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);
62
63     // 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
71     virtual int GetRemoteRTCPReportBlocks(
72         int channel, std::vector<ReportBlock>* report_blocks);
73
74     // RED
75     virtual int SetREDStatus(int channel,
76                              bool enable,
77                              int redPayloadtype = -1);
78
79     virtual int GetREDStatus(int channel, bool& enabled, int& redPayloadtype);
80
81     //NACK
82     virtual int SetNACKStatus(int channel,
83                               bool enable,
84                               int maxNoPackets);
85
86     // 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
97     virtual int SetVideoEngineBWETarget(int channel, ViENetwork* vie_network,
98                                         int video_channel);
99 protected:
100     VoERTP_RTCPImpl(voe::SharedData* shared);
101     virtual ~VoERTP_RTCPImpl();
102
103 private:
104     voe::SharedData* _shared;
105 };
106
107 }  // namespace webrtc
108
109 #endif    // WEBRTC_VOICE_ENGINE_VOE_RTP_RTCP_IMPL_H