Upstream version 5.34.104.0
[platform/framework/web/crosswalk.git] / src / third_party / webrtc / video_engine / vie_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_VIDEO_ENGINE_VIE_RTP_RTCP_IMPL_H_
12 #define WEBRTC_VIDEO_ENGINE_VIE_RTP_RTCP_IMPL_H_
13
14 #include "webrtc/modules/rtp_rtcp/interface/rtp_rtcp_defines.h"
15 #include "webrtc/typedefs.h"
16 #include "webrtc/video_engine/include/vie_rtp_rtcp.h"
17 #include "webrtc/video_engine/vie_ref_count.h"
18
19 namespace webrtc {
20
21 class ViESharedData;
22
23 class ViERTP_RTCPImpl
24     : public ViERTP_RTCP,
25       public ViERefCount {
26  public:
27   // Implements ViERTP_RTCP.
28   virtual int Release();
29   virtual int SetLocalSSRC(const int video_channel,
30                            const unsigned int SSRC,
31                            const StreamType usage,
32                            const unsigned char simulcast_idx);
33   virtual int GetLocalSSRC(const int video_channel,
34                            unsigned int& SSRC) const;  // NOLINT
35   virtual int SetRemoteSSRCType(const int video_channel,
36                                 const StreamType usage,
37                                 const unsigned int SSRC) const;
38   virtual int GetRemoteSSRC(const int video_channel,
39                             unsigned int& SSRC) const;  // NOLINT
40   virtual int GetRemoteCSRCs(const int video_channel,
41                              unsigned int CSRCs[kRtpCsrcSize]) const;
42   virtual int SetRtxSendPayloadType(const int video_channel,
43                                     const uint8_t payload_type);
44   virtual int SetRtxReceivePayloadType(const int video_channel,
45                                        const uint8_t payload_type);
46   virtual int SetStartSequenceNumber(const int video_channel,
47                                      uint16_t sequence_number);
48   virtual int SetRTCPStatus(const int video_channel,
49                             const ViERTCPMode rtcp_mode);
50   virtual int GetRTCPStatus(const int video_channel,
51                             ViERTCPMode& rtcp_mode) const;
52   virtual int SetRTCPCName(const int video_channel,
53                            const char rtcp_cname[KMaxRTCPCNameLength]);
54   virtual int GetRTCPCName(const int video_channel,
55                            char rtcp_cname[KMaxRTCPCNameLength]) const;
56   virtual int GetRemoteRTCPCName(const int video_channel,
57                                  char rtcp_cname[KMaxRTCPCNameLength]) const;
58   virtual int SendApplicationDefinedRTCPPacket(
59       const int video_channel,
60       const unsigned char sub_type,
61       unsigned int name,
62       const char* data,
63       uint16_t data_length_in_bytes);
64   virtual int SetNACKStatus(const int video_channel, const bool enable);
65   virtual int SetFECStatus(const int video_channel, const bool enable,
66                            const unsigned char payload_typeRED,
67                            const unsigned char payload_typeFEC);
68   virtual int SetHybridNACKFECStatus(const int video_channel, const bool enable,
69                                      const unsigned char payload_typeRED,
70                                      const unsigned char payload_typeFEC);
71   virtual int SetSenderBufferingMode(int video_channel,
72                                      int target_delay_ms);
73   virtual int SetReceiverBufferingMode(int video_channel,
74                                        int target_delay_ms);
75   virtual int SetKeyFrameRequestMethod(const int video_channel,
76                                        const ViEKeyFrameRequestMethod method);
77   virtual int SetTMMBRStatus(const int video_channel, const bool enable);
78   virtual int SetRembStatus(int video_channel, bool sender, bool receiver);
79   virtual int SetSendTimestampOffsetStatus(int video_channel,
80                                            bool enable,
81                                            int id);
82   virtual int SetReceiveTimestampOffsetStatus(int video_channel,
83                                               bool enable,
84                                               int id);
85   virtual int SetSendAbsoluteSendTimeStatus(int video_channel,
86                                             bool enable,
87                                             int id);
88   virtual int SetReceiveAbsoluteSendTimeStatus(int video_channel,
89                                                bool enable,
90                                                int id);
91   virtual int SetRtcpXrRrtrStatus(int video_channel, bool enable);
92   virtual int SetTransmissionSmoothingStatus(int video_channel, bool enable);
93   virtual int GetReceiveChannelRtcpStatistics(const int video_channel,
94                                               RtcpStatistics& basic_stats,
95                                               int& rtt_ms) const;
96   virtual int GetSendChannelRtcpStatistics(const int video_channel,
97                                            RtcpStatistics& basic_stats,
98                                            int& rtt_ms) const;
99   virtual int GetRtpStatistics(const int video_channel,
100                                StreamDataCounters& sent,
101                                StreamDataCounters& received) const;
102   virtual int GetBandwidthUsage(const int video_channel,
103                                 unsigned int& total_bitrate_sent,
104                                 unsigned int& video_bitrate_sent,
105                                 unsigned int& fec_bitrate_sent,
106                                 unsigned int& nackBitrateSent) const;
107   virtual int GetEstimatedSendBandwidth(
108       const int video_channel,
109       unsigned int* estimated_bandwidth) const;
110   virtual int GetEstimatedReceiveBandwidth(
111       const int video_channel,
112       unsigned int* estimated_bandwidth) const;
113   virtual int GetReceiveBandwidthEstimatorStats(
114       const int video_channel, ReceiveBandwidthEstimatorStats* output) const;
115   virtual int StartRTPDump(const int video_channel,
116                            const char file_nameUTF8[1024],
117                            RTPDirections direction);
118   virtual int StopRTPDump(const int video_channel, RTPDirections direction);
119   virtual int RegisterRTPObserver(const int video_channel,
120                                   ViERTPObserver& observer);
121   virtual int DeregisterRTPObserver(const int video_channel);
122   virtual int RegisterRTCPObserver(const int video_channel,
123                                    ViERTCPObserver& observer);
124   virtual int DeregisterRTCPObserver(const int video_channel);
125
126   virtual int RegisterSendChannelRtcpStatisticsCallback(
127       int channel, RtcpStatisticsCallback* callback);
128   virtual int DeregisterSendChannelRtcpStatisticsCallback(
129       int channel, RtcpStatisticsCallback* callback);
130   virtual int RegisterReceiveChannelRtcpStatisticsCallback(
131         int channel, RtcpStatisticsCallback* callback);
132     virtual int DeregisterReceiveChannelRtcpStatisticsCallback(
133         int channel, RtcpStatisticsCallback* callback);
134   virtual int RegisterSendChannelRtpStatisticsCallback(
135       int channel, StreamDataCountersCallback* callback);
136   virtual int DeregisterSendChannelRtpStatisticsCallback(
137       int channel, StreamDataCountersCallback* callback);
138   virtual int RegisterReceiveChannelRtpStatisticsCallback(
139       int channel, StreamDataCountersCallback* callback);
140   virtual int DeregisterReceiveChannelRtpStatisticsCallback(
141       int channel, StreamDataCountersCallback* callback);
142   virtual int RegisterSendBitrateObserver(
143       int channel, BitrateStatisticsObserver* callback);
144   virtual int DeregisterSendBitrateObserver(
145       int channel, BitrateStatisticsObserver* callback);
146   virtual int RegisterSendFrameCountObserver(
147       int channel, FrameCountObserver* callback);
148   virtual int DeregisterSendFrameCountObserver(
149       int channel, FrameCountObserver* callback);
150
151  protected:
152   explicit ViERTP_RTCPImpl(ViESharedData* shared_data);
153   virtual ~ViERTP_RTCPImpl();
154
155  private:
156   ViESharedData* shared_data_;
157 };
158
159 }  // namespace webrtc
160
161 #endif  // WEBRTC_VIDEO_ENGINE_VIE_RTP_RTCP_IMPL_H_