blob: 3d0825d237360771f5883cd7cace8bc1a70cc7f2 [file] [log] [blame]
pbos@webrtc.org86f613d2014-06-10 08:53:05 +00001/*
kjellander1afca732016-02-07 20:46:45 -08002 * Copyright (c) 2015 The WebRTC project authors. All Rights Reserved.
pbos@webrtc.org86f613d2014-06-10 08:53:05 +00003 *
kjellander1afca732016-02-07 20:46:45 -08004 * 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.
pbos@webrtc.org86f613d2014-06-10 08:53:05 +00009 */
10
solenbergc96df772015-10-21 13:01:53 -070011// This file contains fake implementations, for use in unit tests, of the
12// following classes:
13//
14// webrtc::Call
15// webrtc::AudioSendStream
16// webrtc::AudioReceiveStream
17// webrtc::VideoSendStream
18// webrtc::VideoReceiveStream
19
Mirko Bonadei92ea95e2017-09-15 06:47:31 +020020#ifndef MEDIA_ENGINE_FAKEWEBRTCCALL_H_
21#define MEDIA_ENGINE_FAKEWEBRTCCALL_H_
pbos@webrtc.org86f613d2014-06-10 08:53:05 +000022
kwibergfffa42b2016-02-23 10:46:32 -080023#include <memory>
palmkviste75f2042016-09-28 06:19:48 -070024#include <string>
pbos@webrtc.org86f613d2014-06-10 08:53:05 +000025#include <vector>
26
Mirko Bonadei92ea95e2017-09-15 06:47:31 +020027#include "api/video/video_frame.h"
28#include "call/audio_receive_stream.h"
29#include "call/audio_send_stream.h"
30#include "call/call.h"
31#include "call/flexfec_receive_stream.h"
32#include "modules/rtp_rtcp/source/rtp_packet_received.h"
33#include "rtc_base/buffer.h"
34#include "call/video_receive_stream.h"
35#include "call/video_send_stream.h"
pbos@webrtc.org86f613d2014-06-10 08:53:05 +000036
37namespace cricket {
solenberg566ef242015-11-06 15:34:49 -080038class FakeAudioSendStream final : public webrtc::AudioSendStream {
solenbergc96df772015-10-21 13:01:53 -070039 public:
Fredrik Solenbergb5727682015-12-04 15:22:19 +010040 struct TelephoneEvent {
41 int payload_type = -1;
solenbergffbbcac2016-11-17 05:25:37 -080042 int payload_frequency = -1;
solenberg8842c3e2016-03-11 03:06:41 -080043 int event_code = 0;
44 int duration_ms = 0;
Fredrik Solenbergb5727682015-12-04 15:22:19 +010045 };
46
solenberg4904fb62017-02-17 12:01:14 -080047 explicit FakeAudioSendStream(
48 int id, const webrtc::AudioSendStream::Config& config);
solenbergc96df772015-10-21 13:01:53 -070049
solenberg4904fb62017-02-17 12:01:14 -080050 int id() const { return id_; }
eladalonabbc4302017-07-26 02:09:44 -070051 const webrtc::AudioSendStream::Config& GetConfig() const override;
solenberg85a04962015-10-27 03:35:21 -070052 void SetStats(const webrtc::AudioSendStream::Stats& stats);
Fredrik Solenbergb5727682015-12-04 15:22:19 +010053 TelephoneEvent GetLatestTelephoneEvent() const;
Taylor Brandstetter1a018dc2016-03-08 12:37:39 -080054 bool IsSending() const { return sending_; }
solenberg94218532016-06-16 10:53:22 -070055 bool muted() const { return muted_; }
solenbergc96df772015-10-21 13:01:53 -070056
57 private:
pbos1ba8d392016-05-01 20:18:34 -070058 // webrtc::AudioSendStream implementation.
ossu20a4b3f2017-04-27 02:08:52 -070059 void Reconfigure(const webrtc::AudioSendStream::Config& config) override;
60
Taylor Brandstetter1a018dc2016-03-08 12:37:39 -080061 void Start() override { sending_ = true; }
62 void Stop() override { sending_ = false; }
solenbergc96df772015-10-21 13:01:53 -070063
solenbergffbbcac2016-11-17 05:25:37 -080064 bool SendTelephoneEvent(int payload_type, int payload_frequency, int event,
solenberg8842c3e2016-03-11 03:06:41 -080065 int duration_ms) override;
solenberg94218532016-06-16 10:53:22 -070066 void SetMuted(bool muted) override;
solenberg85a04962015-10-27 03:35:21 -070067 webrtc::AudioSendStream::Stats GetStats() const override;
68
solenberg4904fb62017-02-17 12:01:14 -080069 int id_ = -1;
Fredrik Solenbergb5727682015-12-04 15:22:19 +010070 TelephoneEvent latest_telephone_event_;
solenbergc96df772015-10-21 13:01:53 -070071 webrtc::AudioSendStream::Config config_;
solenberg85a04962015-10-27 03:35:21 -070072 webrtc::AudioSendStream::Stats stats_;
Taylor Brandstetter1a018dc2016-03-08 12:37:39 -080073 bool sending_ = false;
solenberg94218532016-06-16 10:53:22 -070074 bool muted_ = false;
solenbergc96df772015-10-21 13:01:53 -070075};
76
solenberg566ef242015-11-06 15:34:49 -080077class FakeAudioReceiveStream final : public webrtc::AudioReceiveStream {
Fredrik Solenberg4b60c732015-05-07 14:07:48 +020078 public:
79 explicit FakeAudioReceiveStream(
solenberg4904fb62017-02-17 12:01:14 -080080 int id, const webrtc::AudioReceiveStream::Config& config);
Fredrik Solenberg4b60c732015-05-07 14:07:48 +020081
solenberg4904fb62017-02-17 12:01:14 -080082 int id() const { return id_; }
Fredrik Solenberg4b60c732015-05-07 14:07:48 +020083 const webrtc::AudioReceiveStream::Config& GetConfig() const;
Fredrik Solenberg4f4ec0a2015-10-22 10:49:27 +020084 void SetStats(const webrtc::AudioReceiveStream::Stats& stats);
Fredrik Solenberg4b60c732015-05-07 14:07:48 +020085 int received_packets() const { return received_packets_; }
mflodman3d7db262016-04-29 00:57:13 -070086 bool VerifyLastPacket(const uint8_t* data, size_t length) const;
deadbeef884f5852016-01-15 09:20:04 -080087 const webrtc::AudioSinkInterface* sink() const { return sink_.get(); }
solenberg217fb662016-06-17 08:30:54 -070088 float gain() const { return gain_; }
mflodman3d7db262016-04-29 00:57:13 -070089 bool DeliverRtp(const uint8_t* packet,
90 size_t length,
pbos1ba8d392016-05-01 20:18:34 -070091 const webrtc::PacketTime& packet_time);
aleloi84ef6152016-08-04 05:28:21 -070092 bool started() const { return started_; }
pbos1ba8d392016-05-01 20:18:34 -070093
Fredrik Solenberg4b60c732015-05-07 14:07:48 +020094 private:
pbos1ba8d392016-05-01 20:18:34 -070095 // webrtc::AudioReceiveStream implementation.
aleloi84ef6152016-08-04 05:28:21 -070096 void Start() override { started_ = true; }
97 void Stop() override { started_ = false; }
Jelena Marusiccd670222015-07-16 09:30:09 +020098
solenberg85a04962015-10-27 03:35:21 -070099 webrtc::AudioReceiveStream::Stats GetStats() const override;
solenberg796b8f92017-03-01 17:02:23 -0800100 int GetOutputLevel() const override { return 0; }
kwibergfffa42b2016-02-23 10:46:32 -0800101 void SetSink(std::unique_ptr<webrtc::AudioSinkInterface> sink) override;
solenberg217fb662016-06-17 08:30:54 -0700102 void SetGain(float gain) override;
hbos8d609f62017-04-10 07:39:05 -0700103 std::vector<webrtc::RtpSource> GetSources() const override {
104 return std::vector<webrtc::RtpSource>();
105 }
Fredrik Solenberg4f4ec0a2015-10-22 10:49:27 +0200106
solenberg4904fb62017-02-17 12:01:14 -0800107 int id_ = -1;
Fredrik Solenberg4b60c732015-05-07 14:07:48 +0200108 webrtc::AudioReceiveStream::Config config_;
Fredrik Solenberg4f4ec0a2015-10-22 10:49:27 +0200109 webrtc::AudioReceiveStream::Stats stats_;
solenberg217fb662016-06-17 08:30:54 -0700110 int received_packets_ = 0;
kwiberg686a8ef2016-02-26 03:00:35 -0800111 std::unique_ptr<webrtc::AudioSinkInterface> sink_;
solenberg217fb662016-06-17 08:30:54 -0700112 float gain_ = 1.0f;
mflodman3d7db262016-04-29 00:57:13 -0700113 rtc::Buffer last_packet_;
aleloi84ef6152016-08-04 05:28:21 -0700114 bool started_ = false;
Fredrik Solenberg4b60c732015-05-07 14:07:48 +0200115};
116
perkja49cbd32016-09-16 07:53:41 -0700117class FakeVideoSendStream final
118 : public webrtc::VideoSendStream,
119 public rtc::VideoSinkInterface<webrtc::VideoFrame> {
pbos@webrtc.org86f613d2014-06-10 08:53:05 +0000120 public:
perkj26091b12016-09-01 01:17:40 -0700121 FakeVideoSendStream(webrtc::VideoSendStream::Config config,
122 webrtc::VideoEncoderConfig encoder_config);
perkja49cbd32016-09-16 07:53:41 -0700123 ~FakeVideoSendStream() override;
perkj26091b12016-09-01 01:17:40 -0700124 const webrtc::VideoSendStream::Config& GetConfig() const;
125 const webrtc::VideoEncoderConfig& GetEncoderConfig() const;
perkjfa10b552016-10-02 23:45:26 -0700126 const std::vector<webrtc::VideoStream>& GetVideoStreams() const;
pbos@webrtc.org86f613d2014-06-10 08:53:05 +0000127
pbos@webrtc.org85f42942014-07-22 09:14:58 +0000128 bool IsSending() const;
pbos@webrtc.org6f48f1b2014-07-22 16:29:54 +0000129 bool GetVp8Settings(webrtc::VideoCodecVP8* settings) const;
Erik Språng143cec12015-04-28 10:01:41 +0200130 bool GetVp9Settings(webrtc::VideoCodecVP9* settings) const;
pbos@webrtc.org86f613d2014-06-10 08:53:05 +0000131
pbos@webrtc.org42684be2014-10-03 11:25:45 +0000132 int GetNumberOfSwappedFrames() const;
133 int GetLastWidth() const;
134 int GetLastHeight() const;
qiangchenc27d89f2015-07-16 10:27:16 -0700135 int64_t GetLastTimestamp() const;
pbos@webrtc.org273a4142014-12-01 15:23:21 +0000136 void SetStats(const webrtc::VideoSendStream::Stats& stats);
deadbeef119760a2016-04-04 11:43:27 -0700137 int num_encoder_reconfigurations() const {
138 return num_encoder_reconfigurations_;
139 }
pbos@webrtc.org42684be2014-10-03 11:25:45 +0000140
palmkviste75f2042016-09-28 06:19:48 -0700141 void EnableEncodedFrameRecording(const std::vector<rtc::PlatformFile>& files,
142 size_t byte_limit) override;
143
perkj803d97f2016-11-01 11:45:46 -0700144 bool resolution_scaling_enabled() const {
145 return resolution_scaling_enabled_;
146 }
sprangc5d62e22017-04-02 23:53:04 -0700147 bool framerate_scaling_enabled() const { return framerate_scaling_enabled_; }
perkj803d97f2016-11-01 11:45:46 -0700148 void InjectVideoSinkWants(const rtc::VideoSinkWants& wants);
149
150 rtc::VideoSourceInterface<webrtc::VideoFrame>* source() const {
151 return source_;
152 }
153
pbos@webrtc.org86f613d2014-06-10 08:53:05 +0000154 private:
perkja49cbd32016-09-16 07:53:41 -0700155 // rtc::VideoSinkInterface<VideoFrame> implementation.
156 void OnFrame(const webrtc::VideoFrame& frame) override;
pbos@webrtc.org86f613d2014-06-10 08:53:05 +0000157
pbos1ba8d392016-05-01 20:18:34 -0700158 // webrtc::VideoSendStream implementation.
kjellander@webrtc.org14665ff2015-03-04 12:58:35 +0000159 void Start() override;
160 void Stop() override;
perkj803d97f2016-11-01 11:45:46 -0700161 void SetSource(rtc::VideoSourceInterface<webrtc::VideoFrame>* source,
162 const webrtc::VideoSendStream::DegradationPreference&
163 degradation_preference) override;
Jelena Marusiccd670222015-07-16 09:30:09 +0200164 webrtc::VideoSendStream::Stats GetStats() override;
perkj26091b12016-09-01 01:17:40 -0700165 void ReconfigureVideoEncoder(webrtc::VideoEncoderConfig config) override;
pbos@webrtc.org86f613d2014-06-10 08:53:05 +0000166
167 bool sending_;
168 webrtc::VideoSendStream::Config config_;
pbos@webrtc.orgbbe0a852014-09-19 12:30:25 +0000169 webrtc::VideoEncoderConfig encoder_config_;
perkjfa10b552016-10-02 23:45:26 -0700170 std::vector<webrtc::VideoStream> video_streams_;
perkj803d97f2016-11-01 11:45:46 -0700171 rtc::VideoSinkWants sink_wants_;
172
pbos@webrtc.org6f48f1b2014-07-22 16:29:54 +0000173 bool codec_settings_set_;
Erik Språng143cec12015-04-28 10:01:41 +0200174 union VpxSettings {
175 webrtc::VideoCodecVP8 vp8;
176 webrtc::VideoCodecVP9 vp9;
177 } vpx_settings_;
perkj803d97f2016-11-01 11:45:46 -0700178 bool resolution_scaling_enabled_;
sprangc5d62e22017-04-02 23:53:04 -0700179 bool framerate_scaling_enabled_;
perkja49cbd32016-09-16 07:53:41 -0700180 rtc::VideoSourceInterface<webrtc::VideoFrame>* source_;
pbos@webrtc.org42684be2014-10-03 11:25:45 +0000181 int num_swapped_frames_;
nissedf2ceb82016-12-15 06:29:53 -0800182 rtc::Optional<webrtc::VideoFrame> last_frame_;
pbos@webrtc.org273a4142014-12-01 15:23:21 +0000183 webrtc::VideoSendStream::Stats stats_;
deadbeef119760a2016-04-04 11:43:27 -0700184 int num_encoder_reconfigurations_ = 0;
pbos@webrtc.org86f613d2014-06-10 08:53:05 +0000185};
186
solenberg566ef242015-11-06 15:34:49 -0800187class FakeVideoReceiveStream final : public webrtc::VideoReceiveStream {
pbos@webrtc.org86f613d2014-06-10 08:53:05 +0000188 public:
Tommi733b5472016-06-10 17:58:01 +0200189 explicit FakeVideoReceiveStream(webrtc::VideoReceiveStream::Config config);
pbos@webrtc.org86f613d2014-06-10 08:53:05 +0000190
brandtr9d58d942017-02-03 04:43:41 -0800191 const webrtc::VideoReceiveStream::Config& GetConfig() const;
pbos@webrtc.org86f613d2014-06-10 08:53:05 +0000192
pbos@webrtc.org85f42942014-07-22 09:14:58 +0000193 bool IsReceiving() const;
194
nisseeb83a1a2016-03-21 01:27:56 -0700195 void InjectFrame(const webrtc::VideoFrame& frame);
magjed@webrtc.orgfc5ad952015-01-27 09:57:01 +0000196
pbos@webrtc.org1d0fa5d2015-02-19 12:47:00 +0000197 void SetStats(const webrtc::VideoReceiveStream::Stats& stats);
198
palmkviste75f2042016-09-28 06:19:48 -0700199 void EnableEncodedFrameRecording(rtc::PlatformFile file,
200 size_t byte_limit) override;
201
eladalonc0d481a2017-08-02 07:39:07 -0700202 void AddSecondarySink(webrtc::RtpPacketSinkInterface* sink) override;
203 void RemoveSecondarySink(const webrtc::RtpPacketSinkInterface* sink) override;
204
pbos@webrtc.org86f613d2014-06-10 08:53:05 +0000205 private:
pbos1ba8d392016-05-01 20:18:34 -0700206 // webrtc::VideoReceiveStream implementation.
kjellander@webrtc.org14665ff2015-03-04 12:58:35 +0000207 void Start() override;
208 void Stop() override;
Jelena Marusiccd670222015-07-16 09:30:09 +0200209
Jelena Marusiccd670222015-07-16 09:30:09 +0200210 webrtc::VideoReceiveStream::Stats GetStats() const override;
pbos@webrtc.org86f613d2014-06-10 08:53:05 +0000211
212 webrtc::VideoReceiveStream::Config config_;
213 bool receiving_;
pbos@webrtc.org1d0fa5d2015-02-19 12:47:00 +0000214 webrtc::VideoReceiveStream::Stats stats_;
pbos@webrtc.org86f613d2014-06-10 08:53:05 +0000215};
216
brandtr468da7c2016-11-22 02:16:47 -0800217class FakeFlexfecReceiveStream final : public webrtc::FlexfecReceiveStream {
218 public:
219 explicit FakeFlexfecReceiveStream(
220 const webrtc::FlexfecReceiveStream::Config& config);
221
eladalon42f44f92017-07-25 06:40:06 -0700222 const webrtc::FlexfecReceiveStream::Config& GetConfig() const override;
brandtr468da7c2016-11-22 02:16:47 -0800223
224 private:
brandtr468da7c2016-11-22 02:16:47 -0800225 webrtc::FlexfecReceiveStream::Stats GetStats() const override;
226
eladalonc0d481a2017-08-02 07:39:07 -0700227 void OnRtpPacket(const webrtc::RtpPacketReceived& packet) override;
228
brandtr468da7c2016-11-22 02:16:47 -0800229 webrtc::FlexfecReceiveStream::Config config_;
brandtr468da7c2016-11-22 02:16:47 -0800230};
231
solenberg566ef242015-11-06 15:34:49 -0800232class FakeCall final : public webrtc::Call, public webrtc::PacketReceiver {
pbos@webrtc.org86f613d2014-06-10 08:53:05 +0000233 public:
Fredrik Solenbergb6728822015-04-22 15:35:17 +0200234 explicit FakeCall(const webrtc::Call::Config& config);
Jelena Marusiccd670222015-07-16 09:30:09 +0200235 ~FakeCall() override;
pbos@webrtc.org86f613d2014-06-10 08:53:05 +0000236
pbos@webrtc.org42684be2014-10-03 11:25:45 +0000237 webrtc::Call::Config GetConfig() const;
Fredrik Solenberg4b60c732015-05-07 14:07:48 +0200238 const std::vector<FakeVideoSendStream*>& GetVideoSendStreams();
239 const std::vector<FakeVideoReceiveStream*>& GetVideoReceiveStreams();
240
solenbergc96df772015-10-21 13:01:53 -0700241 const std::vector<FakeAudioSendStream*>& GetAudioSendStreams();
242 const FakeAudioSendStream* GetAudioSendStream(uint32_t ssrc);
Fredrik Solenberg4b60c732015-05-07 14:07:48 +0200243 const std::vector<FakeAudioReceiveStream*>& GetAudioReceiveStreams();
244 const FakeAudioReceiveStream* GetAudioReceiveStream(uint32_t ssrc);
pbos@webrtc.org86f613d2014-06-10 08:53:05 +0000245
brandtr9c3d4c42017-01-23 06:59:13 -0800246 const std::vector<FakeFlexfecReceiveStream*>& GetFlexfecReceiveStreams();
brandtr468da7c2016-11-22 02:16:47 -0800247
stefanc1aeaf02015-10-15 07:26:07 -0700248 rtc::SentPacket last_sent_packet() const { return last_sent_packet_; }
deadbeef14461d42016-06-15 11:06:57 -0700249
250 // This is useful if we care about the last media packet (with id populated)
251 // but not the last ICE packet (with -1 ID).
252 int last_sent_nonnegative_packet_id() const {
253 return last_sent_nonnegative_packet_id_;
254 }
255
skvlad7a43d252016-03-22 15:32:27 -0700256 webrtc::NetworkState GetNetworkState(webrtc::MediaType media) const;
pbos@webrtc.orgc37e72e2015-01-05 18:51:13 +0000257 int GetNumCreatedSendStreams() const;
258 int GetNumCreatedReceiveStreams() const;
pbos@webrtc.org2b19f062014-12-11 13:26:09 +0000259 void SetStats(const webrtc::Call::Stats& stats);
pbos@webrtc.org26c0c412014-09-03 16:17:12 +0000260
pbos@webrtc.org86f613d2014-06-10 08:53:05 +0000261 private:
Fredrik Solenberg04f49312015-06-08 13:04:56 +0200262 webrtc::AudioSendStream* CreateAudioSendStream(
263 const webrtc::AudioSendStream::Config& config) override;
264 void DestroyAudioSendStream(webrtc::AudioSendStream* send_stream) override;
265
Fredrik Solenberg23fba1f2015-04-29 15:24:01 +0200266 webrtc::AudioReceiveStream* CreateAudioReceiveStream(
267 const webrtc::AudioReceiveStream::Config& config) override;
268 void DestroyAudioReceiveStream(
269 webrtc::AudioReceiveStream* receive_stream) override;
270
kjellander@webrtc.org14665ff2015-03-04 12:58:35 +0000271 webrtc::VideoSendStream* CreateVideoSendStream(
perkj26091b12016-09-01 01:17:40 -0700272 webrtc::VideoSendStream::Config config,
273 webrtc::VideoEncoderConfig encoder_config) override;
kjellander@webrtc.org14665ff2015-03-04 12:58:35 +0000274 void DestroyVideoSendStream(webrtc::VideoSendStream* send_stream) override;
pbos@webrtc.org86f613d2014-06-10 08:53:05 +0000275
kjellander@webrtc.org14665ff2015-03-04 12:58:35 +0000276 webrtc::VideoReceiveStream* CreateVideoReceiveStream(
Tommi733b5472016-06-10 17:58:01 +0200277 webrtc::VideoReceiveStream::Config config) override;
kjellander@webrtc.org14665ff2015-03-04 12:58:35 +0000278 void DestroyVideoReceiveStream(
279 webrtc::VideoReceiveStream* receive_stream) override;
brandtr25445d32016-10-23 23:37:14 -0700280
281 webrtc::FlexfecReceiveStream* CreateFlexfecReceiveStream(
brandtr446fcb62016-12-08 04:14:24 -0800282 const webrtc::FlexfecReceiveStream::Config& config) override;
brandtr25445d32016-10-23 23:37:14 -0700283 void DestroyFlexfecReceiveStream(
284 webrtc::FlexfecReceiveStream* receive_stream) override;
285
kjellander@webrtc.org14665ff2015-03-04 12:58:35 +0000286 webrtc::PacketReceiver* Receiver() override;
Fredrik Solenbergb6728822015-04-22 15:35:17 +0200287
Fredrik Solenberg23fba1f2015-04-29 15:24:01 +0200288 DeliveryStatus DeliverPacket(webrtc::MediaType media_type,
stefan68786d22015-09-08 05:36:15 -0700289 const uint8_t* packet,
290 size_t length,
291 const webrtc::PacketTime& packet_time) override;
pbos@webrtc.org86f613d2014-06-10 08:53:05 +0000292
kjellander@webrtc.org14665ff2015-03-04 12:58:35 +0000293 webrtc::Call::Stats GetStats() const override;
pbos@webrtc.org86f613d2014-06-10 08:53:05 +0000294
kjellander@webrtc.org14665ff2015-03-04 12:58:35 +0000295 void SetBitrateConfig(
296 const webrtc::Call::Config::BitrateConfig& bitrate_config) override;
zstein4b979802017-06-02 14:37:37 -0700297 void SetBitrateConfigMask(
298 const webrtc::Call::Config::BitrateConfigMask& mask) override;
Alex Narest54d1da12017-10-17 19:49:15 +0200299 void SetBitrateAllocationStrategy(
300 std::unique_ptr<rtc::BitrateAllocationStrategy>
301 bitrate_allocation_strategy) override;
Honghai Zhang0e533ef2016-04-19 15:41:36 -0700302 void OnNetworkRouteChanged(const std::string& transport_name,
303 const rtc::NetworkRoute& network_route) override {}
skvlad7a43d252016-03-22 15:32:27 -0700304 void SignalChannelNetworkState(webrtc::MediaType media,
305 webrtc::NetworkState state) override;
michaelt79e05882016-11-08 02:50:09 -0800306 void OnTransportOverheadChanged(webrtc::MediaType media,
307 int transport_overhead_per_packet) override;
stefanc1aeaf02015-10-15 07:26:07 -0700308 void OnSentPacket(const rtc::SentPacket& sent_packet) override;
pbos@webrtc.org26c0c412014-09-03 16:17:12 +0000309
pbos@webrtc.org00873182014-11-25 14:03:34 +0000310 webrtc::Call::Config config_;
skvlad7a43d252016-03-22 15:32:27 -0700311 webrtc::NetworkState audio_network_state_;
312 webrtc::NetworkState video_network_state_;
stefanc1aeaf02015-10-15 07:26:07 -0700313 rtc::SentPacket last_sent_packet_;
deadbeef14461d42016-06-15 11:06:57 -0700314 int last_sent_nonnegative_packet_id_ = -1;
solenberg4904fb62017-02-17 12:01:14 -0800315 int next_stream_id_ = 665;
pbos@webrtc.org2b19f062014-12-11 13:26:09 +0000316 webrtc::Call::Stats stats_;
pbos@webrtc.org86f613d2014-06-10 08:53:05 +0000317 std::vector<FakeVideoSendStream*> video_send_streams_;
solenbergc96df772015-10-21 13:01:53 -0700318 std::vector<FakeAudioSendStream*> audio_send_streams_;
pbos@webrtc.org86f613d2014-06-10 08:53:05 +0000319 std::vector<FakeVideoReceiveStream*> video_receive_streams_;
Fredrik Solenberg4b60c732015-05-07 14:07:48 +0200320 std::vector<FakeAudioReceiveStream*> audio_receive_streams_;
brandtr9c3d4c42017-01-23 06:59:13 -0800321 std::vector<FakeFlexfecReceiveStream*> flexfec_receive_streams_;
pbos@webrtc.orgc37e72e2015-01-05 18:51:13 +0000322
323 int num_created_send_streams_;
324 int num_created_receive_streams_;
michaelt79e05882016-11-08 02:50:09 -0800325
326 int audio_transport_overhead_;
327 int video_transport_overhead_;
pbos@webrtc.org86f613d2014-06-10 08:53:05 +0000328};
329
pbos@webrtc.org86f613d2014-06-10 08:53:05 +0000330} // namespace cricket
Mirko Bonadei92ea95e2017-09-15 06:47:31 +0200331#endif // MEDIA_ENGINE_FAKEWEBRTCCALL_H_