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_MODULES_RTP_RTCP_MOCKS_MOCK_RTP_RTCP_H_
12#define WEBRTC_MODULES_RTP_RTCP_MOCKS_MOCK_RTP_RTCP_H_
13
14#include "testing/gmock/include/gmock/gmock.h"
15
16#include "webrtc/modules/interface/module.h"
17#include "webrtc/modules/rtp_rtcp/interface/rtp_rtcp.h"
18#include "webrtc/modules/rtp_rtcp/interface/rtp_rtcp_defines.h"
19
20namespace webrtc {
21
22class MockRtpData : public RtpData {
23 public:
24  MOCK_METHOD3(OnReceivedPayloadData,
25               int32_t(const uint8_t* payloadData,
26                       const uint16_t payloadSize,
27                       const WebRtcRTPHeader* rtpHeader));
28
29  MOCK_METHOD2(OnRecoveredPacket,
30               bool(const uint8_t* packet, int packet_length));
31};
32
33class MockRtpRtcp : public RtpRtcp {
34 public:
35  MOCK_METHOD1(ChangeUniqueId,
36      int32_t(const int32_t id));
37  MOCK_METHOD1(RegisterDefaultModule,
38      int32_t(RtpRtcp* module));
39  MOCK_METHOD0(DeRegisterDefaultModule,
40      int32_t());
41  MOCK_METHOD0(DefaultModuleRegistered,
42      bool());
43  MOCK_METHOD0(NumberChildModules,
44      uint32_t());
45  MOCK_METHOD1(RegisterSyncModule,
46      int32_t(RtpRtcp* module));
47  MOCK_METHOD0(DeRegisterSyncModule,
48      int32_t());
49  MOCK_METHOD2(IncomingRtcpPacket,
50      int32_t(const uint8_t* incomingPacket, uint16_t packetLength));
51  MOCK_METHOD1(SetRemoteSSRC, void(const uint32_t ssrc));
52  MOCK_METHOD4(IncomingAudioNTP,
53      int32_t(const uint32_t audioReceivedNTPsecs,
54              const uint32_t audioReceivedNTPfrac,
55              const uint32_t audioRTCPArrivalTimeSecs,
56              const uint32_t audioRTCPArrivalTimeFrac));
57  MOCK_METHOD0(InitSender,
58      int32_t());
59  MOCK_METHOD1(RegisterSendTransport,
60      int32_t(Transport* outgoingTransport));
61  MOCK_METHOD1(SetMaxTransferUnit,
62      int32_t(const uint16_t size));
63  MOCK_METHOD3(SetTransportOverhead,
64      int32_t(const bool TCP, const bool IPV6,
65              const uint8_t authenticationOverhead));
66  MOCK_CONST_METHOD0(MaxPayloadLength,
67      uint16_t());
68  MOCK_CONST_METHOD0(MaxDataPayloadLength,
69      uint16_t());
70  MOCK_METHOD1(RegisterSendPayload,
71      int32_t(const CodecInst& voiceCodec));
72  MOCK_METHOD1(RegisterSendPayload,
73      int32_t(const VideoCodec& videoCodec));
74  MOCK_METHOD1(DeRegisterSendPayload,
75      int32_t(const int8_t payloadType));
76  MOCK_METHOD2(RegisterSendRtpHeaderExtension,
77      int32_t(const RTPExtensionType type, const uint8_t id));
78  MOCK_METHOD1(DeregisterSendRtpHeaderExtension,
79      int32_t(const RTPExtensionType type));
80  MOCK_CONST_METHOD0(StartTimestamp,
81      uint32_t());
82  MOCK_METHOD1(SetStartTimestamp,
83      int32_t(const uint32_t timestamp));
84  MOCK_CONST_METHOD0(SequenceNumber,
85      uint16_t());
86  MOCK_METHOD1(SetSequenceNumber,
87      int32_t(const uint16_t seq));
88  MOCK_METHOD2(SetRtpStateForSsrc,
89               void(uint32_t ssrc, const RtpState& rtp_state));
90  MOCK_METHOD2(GetRtpStateForSsrc, bool(uint32_t ssrc, RtpState* rtp_state));
91  MOCK_CONST_METHOD0(SSRC,
92      uint32_t());
93  MOCK_METHOD1(SetSSRC,
94      void(const uint32_t ssrc));
95  MOCK_CONST_METHOD1(CSRCs,
96      int32_t(uint32_t arrOfCSRC[kRtpCsrcSize]));
97  MOCK_METHOD2(SetCSRCs,
98      int32_t(const uint32_t arrOfCSRC[kRtpCsrcSize], const uint8_t arrLength));
99  MOCK_METHOD1(SetCSRCStatus,
100      int32_t(const bool include));
101  MOCK_METHOD1(SetRTXSendStatus,
102      void(int modes));
103  MOCK_CONST_METHOD3(RTXSendStatus,
104      void(int* modes, uint32_t* ssrc, int* payload_type));
105  MOCK_METHOD1(SetRtxSsrc,
106      void(uint32_t));
107  MOCK_METHOD1(SetRtxSendPayloadType,
108      void(int));
109  MOCK_METHOD1(SetSendingStatus,
110      int32_t(const bool sending));
111  MOCK_CONST_METHOD0(Sending,
112      bool());
113  MOCK_METHOD1(SetSendingMediaStatus,
114      int32_t(const bool sending));
115  MOCK_CONST_METHOD0(SendingMedia,
116      bool());
117  MOCK_CONST_METHOD4(BitrateSent,
118      void(uint32_t* totalRate, uint32_t* videoRate, uint32_t* fecRate, uint32_t* nackRate));
119  MOCK_METHOD1(RegisterVideoBitrateObserver, void(BitrateStatisticsObserver*));
120  MOCK_CONST_METHOD0(GetVideoBitrateObserver, BitrateStatisticsObserver*(void));
121  MOCK_CONST_METHOD1(EstimatedReceiveBandwidth,
122      int(uint32_t* available_bandwidth));
123  MOCK_METHOD8(SendOutgoingData,
124      int32_t(const FrameType frameType,
125              const int8_t payloadType,
126              const uint32_t timeStamp,
127              int64_t capture_time_ms,
128              const uint8_t* payloadData,
129              const uint32_t payloadSize,
130              const RTPFragmentationHeader* fragmentation,
131              const RTPVideoHeader* rtpVideoHdr));
132  MOCK_METHOD4(TimeToSendPacket,
133      bool(uint32_t ssrc, uint16_t sequence_number, int64_t capture_time_ms,
134           bool retransmission));
135  MOCK_METHOD1(TimeToSendPadding,
136      int(int bytes));
137  MOCK_CONST_METHOD2(GetSendSideDelay,
138      bool(int* avg_send_delay_ms, int* max_send_delay_ms));
139  MOCK_METHOD3(RegisterRtcpObservers,
140      void(RtcpIntraFrameObserver* intraFrameCallback,
141           RtcpBandwidthObserver* bandwidthCallback,
142           RtcpFeedback* callback));
143  MOCK_CONST_METHOD0(RTCP,
144      RTCPMethod());
145  MOCK_METHOD1(SetRTCPStatus,
146      int32_t(const RTCPMethod method));
147  MOCK_METHOD1(SetCNAME,
148      int32_t(const char cName[RTCP_CNAME_SIZE]));
149  MOCK_CONST_METHOD2(RemoteCNAME,
150      int32_t(const uint32_t remoteSSRC,
151              char cName[RTCP_CNAME_SIZE]));
152  MOCK_CONST_METHOD5(RemoteNTP,
153      int32_t(uint32_t *ReceivedNTPsecs,
154              uint32_t *ReceivedNTPfrac,
155              uint32_t *RTCPArrivalTimeSecs,
156              uint32_t *RTCPArrivalTimeFrac,
157              uint32_t *rtcp_timestamp));
158  MOCK_METHOD2(AddMixedCNAME,
159      int32_t(const uint32_t SSRC,
160              const char cName[RTCP_CNAME_SIZE]));
161  MOCK_METHOD1(RemoveMixedCNAME,
162      int32_t(const uint32_t SSRC));
163  MOCK_CONST_METHOD5(RTT,
164      int32_t(const uint32_t remoteSSRC, uint16_t* RTT, uint16_t* avgRTT, uint16_t* minRTT, uint16_t* maxRTT));
165  MOCK_METHOD1(ResetRTT,
166      int32_t(const uint32_t remoteSSRC));
167  MOCK_METHOD1(SendRTCP,
168      int32_t(uint32_t rtcpPacketType));
169  MOCK_METHOD1(SendRTCPReferencePictureSelection,
170      int32_t(const uint64_t pictureID));
171  MOCK_METHOD1(SendRTCPSliceLossIndication,
172      int32_t(const uint8_t pictureID));
173  MOCK_METHOD0(ResetSendDataCountersRTP,
174      int32_t());
175  MOCK_CONST_METHOD2(DataCountersRTP,
176      int32_t(uint32_t *bytesSent, uint32_t *packetsSent));
177  MOCK_METHOD1(RemoteRTCPStat,
178      int32_t(RTCPSenderInfo* senderInfo));
179  MOCK_CONST_METHOD1(RemoteRTCPStat,
180      int32_t(std::vector<RTCPReportBlock>* receiveBlocks));
181  MOCK_METHOD2(AddRTCPReportBlock,
182      int32_t(const uint32_t SSRC, const RTCPReportBlock* receiveBlock));
183  MOCK_METHOD1(RemoveRTCPReportBlock,
184      int32_t(const uint32_t SSRC));
185  MOCK_CONST_METHOD2(GetRtcpPacketTypeCounters,
186      void(RtcpPacketTypeCounter*, RtcpPacketTypeCounter*));
187  MOCK_METHOD4(SetRTCPApplicationSpecificData,
188      int32_t(const uint8_t subType, const uint32_t name, const uint8_t* data, const uint16_t length));
189  MOCK_METHOD1(SetRTCPVoIPMetrics,
190      int32_t(const RTCPVoIPMetric* VoIPMetric));
191  MOCK_METHOD1(SetRtcpXrRrtrStatus,
192      void(bool enable));
193  MOCK_CONST_METHOD0(RtcpXrRrtrStatus,
194      bool());
195  MOCK_CONST_METHOD0(REMB,
196      bool());
197  MOCK_METHOD1(SetREMBStatus,
198      int32_t(const bool enable));
199  MOCK_METHOD3(SetREMBData,
200      int32_t(const uint32_t bitrate, const uint8_t numberOfSSRC, const uint32_t* SSRC));
201  MOCK_CONST_METHOD0(IJ,
202      bool());
203  MOCK_METHOD1(SetIJStatus,
204      int32_t(const bool));
205  MOCK_CONST_METHOD0(TMMBR,
206      bool());
207  MOCK_METHOD1(SetTMMBRStatus,
208      int32_t(const bool enable));
209  MOCK_METHOD1(OnBandwidthEstimateUpdate,
210      void(uint16_t bandWidthKbit));
211  MOCK_CONST_METHOD0(NACK,
212      NACKMethod());
213  MOCK_METHOD2(SetNACKStatus,
214      int32_t(const NACKMethod method, int oldestSequenceNumberToNack));
215  MOCK_CONST_METHOD0(SelectiveRetransmissions,
216      int());
217  MOCK_METHOD1(SetSelectiveRetransmissions,
218      int(uint8_t settings));
219  MOCK_METHOD2(SendNACK,
220      int32_t(const uint16_t* nackList, const uint16_t size));
221  MOCK_METHOD2(SetStorePacketsStatus,
222      int32_t(const bool enable, const uint16_t numberToStore));
223  MOCK_CONST_METHOD0(StorePackets, bool());
224  MOCK_METHOD1(RegisterSendChannelRtcpStatisticsCallback,
225               void(RtcpStatisticsCallback*));
226  MOCK_METHOD0(GetSendChannelRtcpStatisticsCallback,
227               RtcpStatisticsCallback*());
228  MOCK_METHOD1(RegisterAudioCallback,
229      int32_t(RtpAudioFeedback* messagesCallback));
230  MOCK_METHOD1(SetAudioPacketSize,
231      int32_t(const uint16_t packetSizeSamples));
232  MOCK_CONST_METHOD1(SendTelephoneEventActive,
233      bool(int8_t& telephoneEvent));
234  MOCK_METHOD3(SendTelephoneEventOutband,
235      int32_t(const uint8_t key, const uint16_t time_ms, const uint8_t level));
236  MOCK_METHOD1(SetSendREDPayloadType,
237      int32_t(const int8_t payloadType));
238  MOCK_CONST_METHOD1(SendREDPayloadType,
239      int32_t(int8_t& payloadType));
240  MOCK_METHOD2(SetRTPAudioLevelIndicationStatus,
241      int32_t(const bool enable, const uint8_t ID));
242  MOCK_CONST_METHOD2(GetRTPAudioLevelIndicationStatus,
243      int32_t(bool& enable, uint8_t& ID));
244  MOCK_METHOD1(SetAudioLevel,
245      int32_t(const uint8_t level_dBov));
246  MOCK_METHOD1(SetCameraDelay,
247      int32_t(const int32_t delayMS));
248  MOCK_METHOD1(SetTargetSendBitrate,
249      void(const std::vector<uint32_t>& stream_bitrates));
250  MOCK_METHOD3(SetGenericFECStatus,
251      int32_t(const bool enable, const uint8_t payloadTypeRED, const uint8_t payloadTypeFEC));
252  MOCK_METHOD3(GenericFECStatus,
253      int32_t(bool& enable, uint8_t& payloadTypeRED, uint8_t& payloadTypeFEC));
254  MOCK_METHOD2(SetFecParameters,
255      int32_t(const FecProtectionParams* delta_params,
256              const FecProtectionParams* key_params));
257  MOCK_METHOD1(SetKeyFrameRequestMethod,
258      int32_t(const KeyFrameRequestMethod method));
259  MOCK_METHOD0(RequestKeyFrame,
260      int32_t());
261  MOCK_CONST_METHOD3(Version,
262      int32_t(char* version, uint32_t& remaining_buffer_in_bytes, uint32_t& position));
263  MOCK_METHOD0(TimeUntilNextProcess,
264        int32_t());
265  MOCK_METHOD0(Process,
266        int32_t());
267  MOCK_METHOD1(RegisterSendFrameCountObserver,
268      void(FrameCountObserver*));
269  MOCK_CONST_METHOD0(GetSendFrameCountObserver,
270      FrameCountObserver*(void));
271  MOCK_METHOD1(RegisterSendChannelRtpStatisticsCallback,
272      void(StreamDataCountersCallback*));
273  MOCK_CONST_METHOD0(GetSendChannelRtpStatisticsCallback,
274      StreamDataCountersCallback*(void));
275  // Members.
276  unsigned int remote_ssrc_;
277};
278
279}  // namespace webrtc
280
281#endif  // WEBRTC_MODULES_RTP_RTCP_MOCKS_MOCK_RTP_RTCP_H_
282