blob: 9839b2d1f318f0fbb9d6cb07fbbae7efe25cf8ef [file] [log] [blame]
pbos@webrtc.org86f613d2014-06-10 08:53:051/*
kjellander1afca732016-02-08 04:46:452 * Copyright (c) 2015 The WebRTC project authors. All Rights Reserved.
pbos@webrtc.org86f613d2014-06-10 08:53:053 *
kjellander1afca732016-02-08 04:46:454 * 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:059 */
10
solenbergc96df772015-10-21 20:01:5311// 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
Steve Anton10542f22019-01-11 17:11:0020#ifndef MEDIA_ENGINE_FAKE_WEBRTC_CALL_H_
21#define MEDIA_ENGINE_FAKE_WEBRTC_CALL_H_
pbos@webrtc.org86f613d2014-06-10 08:53:0522
kwibergfffa42b2016-02-23 18:46:3223#include <memory>
palmkviste75f2042016-09-28 13:19:4824#include <string>
pbos@webrtc.org86f613d2014-06-10 08:53:0525#include <vector>
26
Mirko Bonadei92ea95e2017-09-15 04:47:3127#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"
Sebastian Jansson8f83b422018-02-21 12:07:1332#include "call/test/mock_rtp_transport_controller_send.h"
Mirko Bonadei92ea95e2017-09-15 04:47:3133#include "call/video_receive_stream.h"
34#include "call/video_send_stream.h"
Sebastian Jansson8f83b422018-02-21 12:07:1335#include "modules/rtp_rtcp/source/rtp_packet_received.h"
36#include "rtc_base/buffer.h"
pbos@webrtc.org86f613d2014-06-10 08:53:0537
38namespace cricket {
solenberg566ef242015-11-06 23:34:4939class FakeAudioSendStream final : public webrtc::AudioSendStream {
solenbergc96df772015-10-21 20:01:5340 public:
Fredrik Solenbergb5727682015-12-04 14:22:1941 struct TelephoneEvent {
42 int payload_type = -1;
solenbergffbbcac2016-11-17 13:25:3743 int payload_frequency = -1;
solenberg8842c3e2016-03-11 11:06:4144 int event_code = 0;
45 int duration_ms = 0;
Fredrik Solenbergb5727682015-12-04 14:22:1946 };
47
Yves Gerey665174f2018-06-19 13:03:0548 explicit FakeAudioSendStream(int id,
49 const webrtc::AudioSendStream::Config& config);
solenbergc96df772015-10-21 20:01:5350
solenberg4904fb62017-02-17 20:01:1451 int id() const { return id_; }
eladalonabbc4302017-07-26 09:09:4452 const webrtc::AudioSendStream::Config& GetConfig() const override;
solenberg85a04962015-10-27 10:35:2153 void SetStats(const webrtc::AudioSendStream::Stats& stats);
Fredrik Solenbergb5727682015-12-04 14:22:1954 TelephoneEvent GetLatestTelephoneEvent() const;
Taylor Brandstetter1a018dc2016-03-08 20:37:3955 bool IsSending() const { return sending_; }
solenberg94218532016-06-16 17:53:2256 bool muted() const { return muted_; }
solenbergc96df772015-10-21 20:01:5357
58 private:
pbos1ba8d392016-05-02 03:18:3459 // webrtc::AudioSendStream implementation.
ossu20a4b3f2017-04-27 09:08:5260 void Reconfigure(const webrtc::AudioSendStream::Config& config) override;
Taylor Brandstetter1a018dc2016-03-08 20:37:3961 void Start() override { sending_ = true; }
62 void Stop() override { sending_ = false; }
Fredrik Solenberg2a877972017-12-15 15:42:1563 void SendAudioData(std::unique_ptr<webrtc::AudioFrame> audio_frame) override {
64 }
Yves Gerey665174f2018-06-19 13:03:0565 bool SendTelephoneEvent(int payload_type,
66 int payload_frequency,
67 int event,
solenberg8842c3e2016-03-11 11:06:4168 int duration_ms) override;
solenberg94218532016-06-16 17:53:2269 void SetMuted(bool muted) override;
solenberg85a04962015-10-27 10:35:2170 webrtc::AudioSendStream::Stats GetStats() const override;
Ivo Creusen56d460902017-11-24 16:29:5971 webrtc::AudioSendStream::Stats GetStats(
72 bool has_remote_tracks) const override;
solenberg85a04962015-10-27 10:35:2173
solenberg4904fb62017-02-17 20:01:1474 int id_ = -1;
Fredrik Solenbergb5727682015-12-04 14:22:1975 TelephoneEvent latest_telephone_event_;
solenbergc96df772015-10-21 20:01:5376 webrtc::AudioSendStream::Config config_;
solenberg85a04962015-10-27 10:35:2177 webrtc::AudioSendStream::Stats stats_;
Taylor Brandstetter1a018dc2016-03-08 20:37:3978 bool sending_ = false;
solenberg94218532016-06-16 17:53:2279 bool muted_ = false;
solenbergc96df772015-10-21 20:01:5380};
81
solenberg566ef242015-11-06 23:34:4982class FakeAudioReceiveStream final : public webrtc::AudioReceiveStream {
Fredrik Solenberg4b60c732015-05-07 12:07:4883 public:
84 explicit FakeAudioReceiveStream(
Yves Gerey665174f2018-06-19 13:03:0585 int id,
86 const webrtc::AudioReceiveStream::Config& config);
Fredrik Solenberg4b60c732015-05-07 12:07:4887
solenberg4904fb62017-02-17 20:01:1488 int id() const { return id_; }
Fredrik Solenberg4b60c732015-05-07 12:07:4889 const webrtc::AudioReceiveStream::Config& GetConfig() const;
Fredrik Solenberg4f4ec0a2015-10-22 08:49:2790 void SetStats(const webrtc::AudioReceiveStream::Stats& stats);
Fredrik Solenberg4b60c732015-05-07 12:07:4891 int received_packets() const { return received_packets_; }
mflodman3d7db262016-04-29 07:57:1392 bool VerifyLastPacket(const uint8_t* data, size_t length) const;
Fredrik Solenberg8f5787a2018-01-11 12:52:3093 const webrtc::AudioSinkInterface* sink() const { return sink_; }
solenberg217fb662016-06-17 15:30:5494 float gain() const { return gain_; }
Niels Möller70082872018-08-07 09:03:1295 bool DeliverRtp(const uint8_t* packet, size_t length, int64_t packet_time_us);
aleloi84ef6152016-08-04 12:28:2196 bool started() const { return started_; }
Ruslan Burakov7ea46052019-02-16 01:07:0597 int base_mininum_playout_delay_ms() const {
98 return base_mininum_playout_delay_ms_;
99 }
pbos1ba8d392016-05-02 03:18:34100
Fredrik Solenberg4b60c732015-05-07 12:07:48101 private:
pbos1ba8d392016-05-02 03:18:34102 // webrtc::AudioReceiveStream implementation.
Fredrik Solenberg3b903d02018-01-10 14:17:10103 void Reconfigure(const webrtc::AudioReceiveStream::Config& config) override;
aleloi84ef6152016-08-04 12:28:21104 void Start() override { started_ = true; }
105 void Stop() override { started_ = false; }
Jelena Marusiccd670222015-07-16 07:30:09106
solenberg85a04962015-10-27 10:35:21107 webrtc::AudioReceiveStream::Stats GetStats() const override;
Fredrik Solenberg8f5787a2018-01-11 12:52:30108 void SetSink(webrtc::AudioSinkInterface* sink) override;
solenberg217fb662016-06-17 15:30:54109 void SetGain(float gain) override;
Ruslan Burakov3b50f9f2019-02-06 08:45:56110 bool SetBaseMinimumPlayoutDelayMs(int delay_ms) override {
Ruslan Burakov7ea46052019-02-16 01:07:05111 base_mininum_playout_delay_ms_ = delay_ms;
Ruslan Burakov3b50f9f2019-02-06 08:45:56112 return true;
113 }
114 int GetBaseMinimumPlayoutDelayMs() const override {
Ruslan Burakov7ea46052019-02-16 01:07:05115 return base_mininum_playout_delay_ms_;
Ruslan Burakov3b50f9f2019-02-06 08:45:56116 }
hbos8d609f62017-04-10 14:39:05117 std::vector<webrtc::RtpSource> GetSources() const override {
118 return std::vector<webrtc::RtpSource>();
119 }
Fredrik Solenberg4f4ec0a2015-10-22 08:49:27120
solenberg4904fb62017-02-17 20:01:14121 int id_ = -1;
Fredrik Solenberg4b60c732015-05-07 12:07:48122 webrtc::AudioReceiveStream::Config config_;
Fredrik Solenberg4f4ec0a2015-10-22 08:49:27123 webrtc::AudioReceiveStream::Stats stats_;
solenberg217fb662016-06-17 15:30:54124 int received_packets_ = 0;
Fredrik Solenberg8f5787a2018-01-11 12:52:30125 webrtc::AudioSinkInterface* sink_ = nullptr;
solenberg217fb662016-06-17 15:30:54126 float gain_ = 1.0f;
mflodman3d7db262016-04-29 07:57:13127 rtc::Buffer last_packet_;
aleloi84ef6152016-08-04 12:28:21128 bool started_ = false;
Ruslan Burakov7ea46052019-02-16 01:07:05129 int base_mininum_playout_delay_ms_ = 0;
Fredrik Solenberg4b60c732015-05-07 12:07:48130};
131
perkja49cbd32016-09-16 14:53:41132class FakeVideoSendStream final
133 : public webrtc::VideoSendStream,
134 public rtc::VideoSinkInterface<webrtc::VideoFrame> {
pbos@webrtc.org86f613d2014-06-10 08:53:05135 public:
perkj26091b12016-09-01 08:17:40136 FakeVideoSendStream(webrtc::VideoSendStream::Config config,
137 webrtc::VideoEncoderConfig encoder_config);
perkja49cbd32016-09-16 14:53:41138 ~FakeVideoSendStream() override;
perkj26091b12016-09-01 08:17:40139 const webrtc::VideoSendStream::Config& GetConfig() const;
140 const webrtc::VideoEncoderConfig& GetEncoderConfig() const;
perkjfa10b552016-10-03 06:45:26141 const std::vector<webrtc::VideoStream>& GetVideoStreams() const;
pbos@webrtc.org86f613d2014-06-10 08:53:05142
pbos@webrtc.org85f42942014-07-22 09:14:58143 bool IsSending() const;
pbos@webrtc.org6f48f1b2014-07-22 16:29:54144 bool GetVp8Settings(webrtc::VideoCodecVP8* settings) const;
Erik Språng143cec12015-04-28 08:01:41145 bool GetVp9Settings(webrtc::VideoCodecVP9* settings) const;
Sergio Garcia Murillo43800f92018-06-21 14:16:38146 bool GetH264Settings(webrtc::VideoCodecH264* settings) const;
pbos@webrtc.org86f613d2014-06-10 08:53:05147
pbos@webrtc.org42684be2014-10-03 11:25:45148 int GetNumberOfSwappedFrames() const;
149 int GetLastWidth() const;
150 int GetLastHeight() const;
qiangchenc27d89f2015-07-16 17:27:16151 int64_t GetLastTimestamp() const;
pbos@webrtc.org273a4142014-12-01 15:23:21152 void SetStats(const webrtc::VideoSendStream::Stats& stats);
deadbeef119760a2016-04-04 18:43:27153 int num_encoder_reconfigurations() const {
154 return num_encoder_reconfigurations_;
155 }
pbos@webrtc.org42684be2014-10-03 11:25:45156
perkj803d97f2016-11-01 18:45:46157 bool resolution_scaling_enabled() const {
158 return resolution_scaling_enabled_;
159 }
sprangc5d62e22017-04-03 06:53:04160 bool framerate_scaling_enabled() const { return framerate_scaling_enabled_; }
perkj803d97f2016-11-01 18:45:46161 void InjectVideoSinkWants(const rtc::VideoSinkWants& wants);
162
163 rtc::VideoSourceInterface<webrtc::VideoFrame>* source() const {
164 return source_;
165 }
166
pbos@webrtc.org86f613d2014-06-10 08:53:05167 private:
perkja49cbd32016-09-16 14:53:41168 // rtc::VideoSinkInterface<VideoFrame> implementation.
169 void OnFrame(const webrtc::VideoFrame& frame) override;
pbos@webrtc.org86f613d2014-06-10 08:53:05170
pbos1ba8d392016-05-02 03:18:34171 // webrtc::VideoSendStream implementation.
Seth Hampsoncc7125f2018-02-02 16:46:16172 void UpdateActiveSimulcastLayers(
173 const std::vector<bool> active_layers) override;
kjellander@webrtc.org14665ff2015-03-04 12:58:35174 void Start() override;
175 void Stop() override;
Taylor Brandstetter49fcc102018-05-16 21:20:41176 void SetSource(
177 rtc::VideoSourceInterface<webrtc::VideoFrame>* source,
178 const webrtc::DegradationPreference& degradation_preference) override;
Jelena Marusiccd670222015-07-16 07:30:09179 webrtc::VideoSendStream::Stats GetStats() override;
perkj26091b12016-09-01 08:17:40180 void ReconfigureVideoEncoder(webrtc::VideoEncoderConfig config) override;
pbos@webrtc.org86f613d2014-06-10 08:53:05181
182 bool sending_;
183 webrtc::VideoSendStream::Config config_;
pbos@webrtc.orgbbe0a852014-09-19 12:30:25184 webrtc::VideoEncoderConfig encoder_config_;
perkjfa10b552016-10-03 06:45:26185 std::vector<webrtc::VideoStream> video_streams_;
perkj803d97f2016-11-01 18:45:46186 rtc::VideoSinkWants sink_wants_;
187
pbos@webrtc.org6f48f1b2014-07-22 16:29:54188 bool codec_settings_set_;
Sergio Garcia Murillo43800f92018-06-21 14:16:38189 union CodecSpecificSettings {
Erik Språng143cec12015-04-28 08:01:41190 webrtc::VideoCodecVP8 vp8;
191 webrtc::VideoCodecVP9 vp9;
Sergio Garcia Murillo43800f92018-06-21 14:16:38192 webrtc::VideoCodecH264 h264;
193 } codec_specific_settings_;
perkj803d97f2016-11-01 18:45:46194 bool resolution_scaling_enabled_;
sprangc5d62e22017-04-03 06:53:04195 bool framerate_scaling_enabled_;
perkja49cbd32016-09-16 14:53:41196 rtc::VideoSourceInterface<webrtc::VideoFrame>* source_;
pbos@webrtc.org42684be2014-10-03 11:25:45197 int num_swapped_frames_;
Danil Chapovalov00c718362018-06-15 13:58:38198 absl::optional<webrtc::VideoFrame> last_frame_;
pbos@webrtc.org273a4142014-12-01 15:23:21199 webrtc::VideoSendStream::Stats stats_;
deadbeef119760a2016-04-04 18:43:27200 int num_encoder_reconfigurations_ = 0;
pbos@webrtc.org86f613d2014-06-10 08:53:05201};
202
solenberg566ef242015-11-06 23:34:49203class FakeVideoReceiveStream final : public webrtc::VideoReceiveStream {
pbos@webrtc.org86f613d2014-06-10 08:53:05204 public:
Tommi733b5472016-06-10 15:58:01205 explicit FakeVideoReceiveStream(webrtc::VideoReceiveStream::Config config);
pbos@webrtc.org86f613d2014-06-10 08:53:05206
brandtr9d58d942017-02-03 12:43:41207 const webrtc::VideoReceiveStream::Config& GetConfig() const;
pbos@webrtc.org86f613d2014-06-10 08:53:05208
pbos@webrtc.org85f42942014-07-22 09:14:58209 bool IsReceiving() const;
210
nisseeb83a1a2016-03-21 08:27:56211 void InjectFrame(const webrtc::VideoFrame& frame);
magjed@webrtc.orgfc5ad952015-01-27 09:57:01212
pbos@webrtc.org1d0fa5d2015-02-19 12:47:00213 void SetStats(const webrtc::VideoReceiveStream::Stats& stats);
214
eladalonc0d481a2017-08-02 14:39:07215 void AddSecondarySink(webrtc::RtpPacketSinkInterface* sink) override;
216 void RemoveSecondarySink(const webrtc::RtpPacketSinkInterface* sink) override;
217
Rasmus Brandt60bb6fe2018-02-05 08:51:47218 int GetNumAddedSecondarySinks() const;
219 int GetNumRemovedSecondarySinks() const;
220
Jonas Oreland49ac5952018-09-26 14:04:32221 std::vector<webrtc::RtpSource> GetSources() const override {
222 return std::vector<webrtc::RtpSource>();
223 }
224
Ruslan Burakov493a6502019-02-27 14:32:48225 int base_mininum_playout_delay_ms() const {
226 return base_mininum_playout_delay_ms_;
227 }
228
Benjamin Wrighta5564482019-04-03 17:44:18229 void SetFrameDecryptor(rtc::scoped_refptr<webrtc::FrameDecryptorInterface>
230 frame_decryptor) override {}
231
pbos@webrtc.org86f613d2014-06-10 08:53:05232 private:
pbos1ba8d392016-05-02 03:18:34233 // webrtc::VideoReceiveStream implementation.
kjellander@webrtc.org14665ff2015-03-04 12:58:35234 void Start() override;
235 void Stop() override;
Jelena Marusiccd670222015-07-16 07:30:09236
Jelena Marusiccd670222015-07-16 07:30:09237 webrtc::VideoReceiveStream::Stats GetStats() const override;
pbos@webrtc.org86f613d2014-06-10 08:53:05238
Ruslan Burakov493a6502019-02-27 14:32:48239 bool SetBaseMinimumPlayoutDelayMs(int delay_ms) override {
240 base_mininum_playout_delay_ms_ = delay_ms;
241 return true;
242 }
243
244 int GetBaseMinimumPlayoutDelayMs() const override {
245 return base_mininum_playout_delay_ms_;
246 }
247
pbos@webrtc.org86f613d2014-06-10 08:53:05248 webrtc::VideoReceiveStream::Config config_;
249 bool receiving_;
pbos@webrtc.org1d0fa5d2015-02-19 12:47:00250 webrtc::VideoReceiveStream::Stats stats_;
Rasmus Brandt60bb6fe2018-02-05 08:51:47251
Ruslan Burakov493a6502019-02-27 14:32:48252 int base_mininum_playout_delay_ms_ = 0;
253
Rasmus Brandt60bb6fe2018-02-05 08:51:47254 int num_added_secondary_sinks_;
255 int num_removed_secondary_sinks_;
pbos@webrtc.org86f613d2014-06-10 08:53:05256};
257
brandtr468da7c2016-11-22 10:16:47258class FakeFlexfecReceiveStream final : public webrtc::FlexfecReceiveStream {
259 public:
260 explicit FakeFlexfecReceiveStream(
261 const webrtc::FlexfecReceiveStream::Config& config);
262
eladalon42f44f92017-07-25 13:40:06263 const webrtc::FlexfecReceiveStream::Config& GetConfig() const override;
brandtr468da7c2016-11-22 10:16:47264
265 private:
brandtr468da7c2016-11-22 10:16:47266 webrtc::FlexfecReceiveStream::Stats GetStats() const override;
267
eladalonc0d481a2017-08-02 14:39:07268 void OnRtpPacket(const webrtc::RtpPacketReceived& packet) override;
269
brandtr468da7c2016-11-22 10:16:47270 webrtc::FlexfecReceiveStream::Config config_;
brandtr468da7c2016-11-22 10:16:47271};
272
solenberg566ef242015-11-06 23:34:49273class FakeCall final : public webrtc::Call, public webrtc::PacketReceiver {
pbos@webrtc.org86f613d2014-06-10 08:53:05274 public:
Sebastian Jansson8f83b422018-02-21 12:07:13275 FakeCall();
Jelena Marusiccd670222015-07-16 07:30:09276 ~FakeCall() override;
pbos@webrtc.org86f613d2014-06-10 08:53:05277
Sebastian Jansson8f83b422018-02-21 12:07:13278 webrtc::MockRtpTransportControllerSend* GetMockTransportControllerSend() {
279 return &transport_controller_send_;
280 }
281
Fredrik Solenberg4b60c732015-05-07 12:07:48282 const std::vector<FakeVideoSendStream*>& GetVideoSendStreams();
283 const std::vector<FakeVideoReceiveStream*>& GetVideoReceiveStreams();
284
solenbergc96df772015-10-21 20:01:53285 const std::vector<FakeAudioSendStream*>& GetAudioSendStreams();
286 const FakeAudioSendStream* GetAudioSendStream(uint32_t ssrc);
Fredrik Solenberg4b60c732015-05-07 12:07:48287 const std::vector<FakeAudioReceiveStream*>& GetAudioReceiveStreams();
288 const FakeAudioReceiveStream* GetAudioReceiveStream(uint32_t ssrc);
Ruslan Burakov493a6502019-02-27 14:32:48289 const FakeVideoReceiveStream* GetVideoReceiveStream(uint32_t ssrc);
pbos@webrtc.org86f613d2014-06-10 08:53:05290
brandtr9c3d4c42017-01-23 14:59:13291 const std::vector<FakeFlexfecReceiveStream*>& GetFlexfecReceiveStreams();
brandtr468da7c2016-11-22 10:16:47292
stefanc1aeaf02015-10-15 14:26:07293 rtc::SentPacket last_sent_packet() const { return last_sent_packet_; }
deadbeef14461d42016-06-15 18:06:57294
295 // This is useful if we care about the last media packet (with id populated)
296 // but not the last ICE packet (with -1 ID).
297 int last_sent_nonnegative_packet_id() const {
298 return last_sent_nonnegative_packet_id_;
299 }
300
skvlad7a43d252016-03-22 22:32:27301 webrtc::NetworkState GetNetworkState(webrtc::MediaType media) const;
pbos@webrtc.orgc37e72e2015-01-05 18:51:13302 int GetNumCreatedSendStreams() const;
303 int GetNumCreatedReceiveStreams() const;
pbos@webrtc.org2b19f062014-12-11 13:26:09304 void SetStats(const webrtc::Call::Stats& stats);
pbos@webrtc.org26c0c412014-09-03 16:17:12305
Piotr (Peter) Slatalacc8e8bb2018-11-15 16:26:19306 void MediaTransportChange(
307 webrtc::MediaTransportInterface* media_transport_interface) override;
308
Piotr (Peter) Slatala7fbfaa42019-03-18 17:31:54309 void SetClientBitratePreferences(
310 const webrtc::BitrateSettings& preferences) override {}
311
pbos@webrtc.org86f613d2014-06-10 08:53:05312 private:
Fredrik Solenberg04f49312015-06-08 11:04:56313 webrtc::AudioSendStream* CreateAudioSendStream(
314 const webrtc::AudioSendStream::Config& config) override;
315 void DestroyAudioSendStream(webrtc::AudioSendStream* send_stream) override;
316
Fredrik Solenberg23fba1f2015-04-29 13:24:01317 webrtc::AudioReceiveStream* CreateAudioReceiveStream(
318 const webrtc::AudioReceiveStream::Config& config) override;
319 void DestroyAudioReceiveStream(
320 webrtc::AudioReceiveStream* receive_stream) override;
321
kjellander@webrtc.org14665ff2015-03-04 12:58:35322 webrtc::VideoSendStream* CreateVideoSendStream(
perkj26091b12016-09-01 08:17:40323 webrtc::VideoSendStream::Config config,
324 webrtc::VideoEncoderConfig encoder_config) override;
kjellander@webrtc.org14665ff2015-03-04 12:58:35325 void DestroyVideoSendStream(webrtc::VideoSendStream* send_stream) override;
pbos@webrtc.org86f613d2014-06-10 08:53:05326
kjellander@webrtc.org14665ff2015-03-04 12:58:35327 webrtc::VideoReceiveStream* CreateVideoReceiveStream(
Tommi733b5472016-06-10 15:58:01328 webrtc::VideoReceiveStream::Config config) override;
kjellander@webrtc.org14665ff2015-03-04 12:58:35329 void DestroyVideoReceiveStream(
330 webrtc::VideoReceiveStream* receive_stream) override;
brandtr25445d32016-10-24 06:37:14331
332 webrtc::FlexfecReceiveStream* CreateFlexfecReceiveStream(
brandtr446fcb62016-12-08 12:14:24333 const webrtc::FlexfecReceiveStream::Config& config) override;
brandtr25445d32016-10-24 06:37:14334 void DestroyFlexfecReceiveStream(
335 webrtc::FlexfecReceiveStream* receive_stream) override;
336
kjellander@webrtc.org14665ff2015-03-04 12:58:35337 webrtc::PacketReceiver* Receiver() override;
Fredrik Solenbergb6728822015-04-22 13:35:17338
Fredrik Solenberg23fba1f2015-04-29 13:24:01339 DeliveryStatus DeliverPacket(webrtc::MediaType media_type,
Danil Chapovalov292a73e2017-12-07 16:00:40340 rtc::CopyOnWriteBuffer packet,
Niels Möller70082872018-08-07 09:03:12341 int64_t packet_time_us) override;
pbos@webrtc.org86f613d2014-06-10 08:53:05342
Sebastian Jansson8f83b422018-02-21 12:07:13343 webrtc::RtpTransportControllerSendInterface* GetTransportControllerSend()
344 override {
345 return &transport_controller_send_;
346 }
347
kjellander@webrtc.org14665ff2015-03-04 12:58:35348 webrtc::Call::Stats GetStats() const override;
pbos@webrtc.org86f613d2014-06-10 08:53:05349
Alex Narest78609d52017-10-20 08:37:47350 void SetBitrateAllocationStrategy(
351 std::unique_ptr<rtc::BitrateAllocationStrategy>
352 bitrate_allocation_strategy) override;
Sebastian Jansson8f83b422018-02-21 12:07:13353
skvlad7a43d252016-03-22 22:32:27354 void SignalChannelNetworkState(webrtc::MediaType media,
355 webrtc::NetworkState state) override;
Stefan Holmer64be7fa2018-10-04 13:21:55356 void OnAudioTransportOverheadChanged(
357 int transport_overhead_per_packet) override;
stefanc1aeaf02015-10-15 14:26:07358 void OnSentPacket(const rtc::SentPacket& sent_packet) override;
pbos@webrtc.org26c0c412014-09-03 16:17:12359
Sebastian Jansson8f83b422018-02-21 12:07:13360 testing::NiceMock<webrtc::MockRtpTransportControllerSend>
361 transport_controller_send_;
362
skvlad7a43d252016-03-22 22:32:27363 webrtc::NetworkState audio_network_state_;
364 webrtc::NetworkState video_network_state_;
stefanc1aeaf02015-10-15 14:26:07365 rtc::SentPacket last_sent_packet_;
deadbeef14461d42016-06-15 18:06:57366 int last_sent_nonnegative_packet_id_ = -1;
solenberg4904fb62017-02-17 20:01:14367 int next_stream_id_ = 665;
pbos@webrtc.org2b19f062014-12-11 13:26:09368 webrtc::Call::Stats stats_;
pbos@webrtc.org86f613d2014-06-10 08:53:05369 std::vector<FakeVideoSendStream*> video_send_streams_;
solenbergc96df772015-10-21 20:01:53370 std::vector<FakeAudioSendStream*> audio_send_streams_;
pbos@webrtc.org86f613d2014-06-10 08:53:05371 std::vector<FakeVideoReceiveStream*> video_receive_streams_;
Fredrik Solenberg4b60c732015-05-07 12:07:48372 std::vector<FakeAudioReceiveStream*> audio_receive_streams_;
brandtr9c3d4c42017-01-23 14:59:13373 std::vector<FakeFlexfecReceiveStream*> flexfec_receive_streams_;
pbos@webrtc.orgc37e72e2015-01-05 18:51:13374
375 int num_created_send_streams_;
376 int num_created_receive_streams_;
pbos@webrtc.org86f613d2014-06-10 08:53:05377};
378
pbos@webrtc.org86f613d2014-06-10 08:53:05379} // namespace cricket
Steve Anton10542f22019-01-11 17:11:00380#endif // MEDIA_ENGINE_FAKE_WEBRTC_CALL_H_