Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(172)

Side by Side Diff: media/cast/test/end2end_unittest.cc

Issue 1544313002: Convert Pass()→std::move() in //media (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 12 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « media/cast/test/cast_benchmarks.cc ('k') | media/cast/test/fake_media_source.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 // 4 //
5 // This test generate synthetic data. For audio it's a sinusoid waveform with 5 // This test generate synthetic data. For audio it's a sinusoid waveform with
6 // frequency kSoundFrequency and different amplitudes. For video it's a pattern 6 // frequency kSoundFrequency and different amplitudes. For video it's a pattern
7 // that is shifting by one pixel per frame, each pixels neighbors right and down 7 // that is shifting by one pixel per frame, each pixels neighbors right and down
8 // is this pixels value +1, since the pixel value is 8 bit it will wrap 8 // is this pixels value +1, since the pixel value is 8 bit it will wrap
9 // frequently within the image. Visually this will create diagonally color bands 9 // frequently within the image. Visually this will create diagonally color bands
10 // that moves across the screen 10 // that moves across the screen
11 11
12 #include <math.h> 12 #include <math.h>
13 #include <stddef.h> 13 #include <stddef.h>
14 #include <stdint.h> 14 #include <stdint.h>
15
16 #include <functional> 15 #include <functional>
17 #include <list> 16 #include <list>
18 #include <map> 17 #include <map>
18 #include <utility>
19 19
20 #include "base/bind.h" 20 #include "base/bind.h"
21 #include "base/bind_helpers.h" 21 #include "base/bind_helpers.h"
22 #include "base/strings/string_number_conversions.h" 22 #include "base/strings/string_number_conversions.h"
23 #include "base/sys_byteorder.h" 23 #include "base/sys_byteorder.h"
24 #include "base/test/simple_test_tick_clock.h" 24 #include "base/test/simple_test_tick_clock.h"
25 #include "base/time/tick_clock.h" 25 #include "base/time/tick_clock.h"
26 #include "media/base/audio_bus.h" 26 #include "media/base/audio_bus.h"
27 #include "media/base/video_frame.h" 27 #include "media/base/video_frame.h"
28 #include "media/cast/cast_config.h" 28 #include "media/cast/cast_config.h"
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after
161 // PacketReceiverCallback. 161 // PacketReceiverCallback.
162 class LoopBackPacketPipe : public test::PacketPipe { 162 class LoopBackPacketPipe : public test::PacketPipe {
163 public: 163 public:
164 explicit LoopBackPacketPipe(const PacketReceiverCallback& packet_receiver) 164 explicit LoopBackPacketPipe(const PacketReceiverCallback& packet_receiver)
165 : packet_receiver_(packet_receiver) {} 165 : packet_receiver_(packet_receiver) {}
166 166
167 ~LoopBackPacketPipe() final {} 167 ~LoopBackPacketPipe() final {}
168 168
169 // PacketPipe implementations. 169 // PacketPipe implementations.
170 void Send(scoped_ptr<Packet> packet) final { 170 void Send(scoped_ptr<Packet> packet) final {
171 packet_receiver_.Run(packet.Pass()); 171 packet_receiver_.Run(std::move(packet));
172 } 172 }
173 173
174 private: 174 private:
175 PacketReceiverCallback packet_receiver_; 175 PacketReceiverCallback packet_receiver_;
176 }; 176 };
177 177
178 // Class that sends the packet direct from sender into the receiver with the 178 // Class that sends the packet direct from sender into the receiver with the
179 // ability to drop packets between the two. 179 // ability to drop packets between the two.
180 // 180 //
181 // TODO(miu): This should be reconciled/merged into 181 // TODO(miu): This should be reconciled/merged into
182 // media/cast/test/loopback_transport.*. It's roughly the same class and has 182 // media/cast/test/loopback_transport.*. It's roughly the same class and has
183 // exactly the same name (and when it was outside of the anonymous namespace bad 183 // exactly the same name (and when it was outside of the anonymous namespace bad
184 // things happened when linking on Android!). 184 // things happened when linking on Android!).
185 class LoopBackTransport : public PacketSender { 185 class LoopBackTransport : public PacketSender {
186 public: 186 public:
187 explicit LoopBackTransport(scoped_refptr<CastEnvironment> cast_environment) 187 explicit LoopBackTransport(scoped_refptr<CastEnvironment> cast_environment)
188 : send_packets_(true), 188 : send_packets_(true),
189 drop_packets_belonging_to_odd_frames_(false), 189 drop_packets_belonging_to_odd_frames_(false),
190 cast_environment_(cast_environment), 190 cast_environment_(cast_environment),
191 bytes_sent_(0) {} 191 bytes_sent_(0) {}
192 192
193 void SetPacketReceiver( 193 void SetPacketReceiver(
194 const PacketReceiverCallback& packet_receiver, 194 const PacketReceiverCallback& packet_receiver,
195 const scoped_refptr<base::SingleThreadTaskRunner>& task_runner, 195 const scoped_refptr<base::SingleThreadTaskRunner>& task_runner,
196 base::TickClock* clock) { 196 base::TickClock* clock) {
197 scoped_ptr<test::PacketPipe> loopback_pipe( 197 scoped_ptr<test::PacketPipe> loopback_pipe(
198 new LoopBackPacketPipe(packet_receiver)); 198 new LoopBackPacketPipe(packet_receiver));
199 if (packet_pipe_) { 199 if (packet_pipe_) {
200 packet_pipe_->AppendToPipe(loopback_pipe.Pass()); 200 packet_pipe_->AppendToPipe(std::move(loopback_pipe));
201 } else { 201 } else {
202 packet_pipe_ = loopback_pipe.Pass(); 202 packet_pipe_ = std::move(loopback_pipe);
203 } 203 }
204 packet_pipe_->InitOnIOThread(task_runner, clock); 204 packet_pipe_->InitOnIOThread(task_runner, clock);
205 } 205 }
206 206
207 bool SendPacket(PacketRef packet, const base::Closure& cb) final { 207 bool SendPacket(PacketRef packet, const base::Closure& cb) final {
208 DCHECK(cast_environment_->CurrentlyOn(CastEnvironment::MAIN)); 208 DCHECK(cast_environment_->CurrentlyOn(CastEnvironment::MAIN));
209 if (!send_packets_) 209 if (!send_packets_)
210 return true; 210 return true;
211 211
212 bytes_sent_ += packet->data.size(); 212 bytes_sent_ += packet->data.size();
213 if (drop_packets_belonging_to_odd_frames_) { 213 if (drop_packets_belonging_to_odd_frames_) {
214 uint32_t frame_id = packet->data[13]; 214 uint32_t frame_id = packet->data[13];
215 if (frame_id % 2 == 1) 215 if (frame_id % 2 == 1)
216 return true; 216 return true;
217 } 217 }
218 218
219 scoped_ptr<Packet> packet_copy(new Packet(packet->data)); 219 scoped_ptr<Packet> packet_copy(new Packet(packet->data));
220 packet_pipe_->Send(packet_copy.Pass()); 220 packet_pipe_->Send(std::move(packet_copy));
221 return true; 221 return true;
222 } 222 }
223 223
224 int64_t GetBytesSent() final { return bytes_sent_; } 224 int64_t GetBytesSent() final { return bytes_sent_; }
225 225
226 void SetSendPackets(bool send_packets) { send_packets_ = send_packets; } 226 void SetSendPackets(bool send_packets) { send_packets_ = send_packets; }
227 227
228 void DropAllPacketsBelongingToOddFrames() { 228 void DropAllPacketsBelongingToOddFrames() {
229 drop_packets_belonging_to_odd_frames_ = true; 229 drop_packets_belonging_to_odd_frames_ = true;
230 } 230 }
231 231
232 void SetPacketPipe(scoped_ptr<test::PacketPipe> pipe) { 232 void SetPacketPipe(scoped_ptr<test::PacketPipe> pipe) {
233 // Append the loopback pipe to the end. 233 // Append the loopback pipe to the end.
234 pipe->AppendToPipe(packet_pipe_.Pass()); 234 pipe->AppendToPipe(std::move(packet_pipe_));
235 packet_pipe_ = pipe.Pass(); 235 packet_pipe_ = std::move(pipe);
236 } 236 }
237 237
238 private: 238 private:
239 bool send_packets_; 239 bool send_packets_;
240 bool drop_packets_belonging_to_odd_frames_; 240 bool drop_packets_belonging_to_odd_frames_;
241 scoped_refptr<CastEnvironment> cast_environment_; 241 scoped_refptr<CastEnvironment> cast_environment_;
242 scoped_ptr<test::PacketPipe> packet_pipe_; 242 scoped_ptr<test::PacketPipe> packet_pipe_;
243 int64_t bytes_sent_; 243 int64_t bytes_sent_;
244 }; 244 };
245 245
(...skipping 10 matching lines...) Expand all
256 256
257 void SetExpectedSamplingFrequency(int expected_sampling_frequency) { 257 void SetExpectedSamplingFrequency(int expected_sampling_frequency) {
258 expected_sampling_frequency_ = expected_sampling_frequency; 258 expected_sampling_frequency_ = expected_sampling_frequency;
259 } 259 }
260 260
261 void AddExpectedResult(const AudioBus& audio_bus, 261 void AddExpectedResult(const AudioBus& audio_bus,
262 const base::TimeTicks& playout_time) { 262 const base::TimeTicks& playout_time) {
263 scoped_ptr<ExpectedAudioFrame> expected_audio_frame( 263 scoped_ptr<ExpectedAudioFrame> expected_audio_frame(
264 new ExpectedAudioFrame()); 264 new ExpectedAudioFrame());
265 expected_audio_frame->audio_bus = 265 expected_audio_frame->audio_bus =
266 AudioBus::Create(audio_bus.channels(), audio_bus.frames()).Pass(); 266 AudioBus::Create(audio_bus.channels(), audio_bus.frames());
267 audio_bus.CopyTo(expected_audio_frame->audio_bus.get()); 267 audio_bus.CopyTo(expected_audio_frame->audio_bus.get());
268 expected_audio_frame->playout_time = playout_time; 268 expected_audio_frame->playout_time = playout_time;
269 expected_frames_.push_back(expected_audio_frame.release()); 269 expected_frames_.push_back(expected_audio_frame.release());
270 } 270 }
271 271
272 void IgnoreAudioFrame(scoped_ptr<AudioBus> audio_bus, 272 void IgnoreAudioFrame(scoped_ptr<AudioBus> audio_bus,
273 const base::TimeTicks& playout_time, 273 const base::TimeTicks& playout_time,
274 bool is_continuous) { 274 bool is_continuous) {
275 ++num_called_; 275 ++num_called_;
276 } 276 }
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
326 int16_t* const pcm_data = 326 int16_t* const pcm_data =
327 reinterpret_cast<int16_t*>(audio_frame->mutable_bytes()); 327 reinterpret_cast<int16_t*>(audio_frame->mutable_bytes());
328 for (int i = 0; i < num_elements; ++i) 328 for (int i = 0; i < num_elements; ++i)
329 pcm_data[i] = static_cast<int16_t>(base::NetToHost16(pcm_data[i])); 329 pcm_data[i] = static_cast<int16_t>(base::NetToHost16(pcm_data[i]));
330 scoped_ptr<AudioBus> audio_bus( 330 scoped_ptr<AudioBus> audio_bus(
331 AudioBus::Create(expected_audio_frame.audio_bus->channels(), 331 AudioBus::Create(expected_audio_frame.audio_bus->channels(),
332 expected_audio_frame.audio_bus->frames())); 332 expected_audio_frame.audio_bus->frames()));
333 audio_bus->FromInterleaved(pcm_data, audio_bus->frames(), sizeof(int16_t)); 333 audio_bus->FromInterleaved(pcm_data, audio_bus->frames(), sizeof(int16_t));
334 334
335 // Delegate the checking from here... 335 // Delegate the checking from here...
336 CheckAudioFrame(audio_bus.Pass(), audio_frame->reference_time, true); 336 CheckAudioFrame(std::move(audio_bus), audio_frame->reference_time, true);
337 } 337 }
338 338
339 int number_times_called() const { return num_called_; } 339 int number_times_called() const { return num_called_; }
340 340
341 protected: 341 protected:
342 virtual ~TestReceiverAudioCallback() { 342 virtual ~TestReceiverAudioCallback() {
343 STLDeleteElements(&expected_frames_); 343 STLDeleteElements(&expected_frames_);
344 } 344 }
345 345
346 private: 346 private:
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
432 End2EndTest() 432 End2EndTest()
433 : start_time_(), 433 : start_time_(),
434 task_runner_(new test::FakeSingleThreadTaskRunner(&testing_clock_)), 434 task_runner_(new test::FakeSingleThreadTaskRunner(&testing_clock_)),
435 testing_clock_sender_(new test::SkewedTickClock(&testing_clock_)), 435 testing_clock_sender_(new test::SkewedTickClock(&testing_clock_)),
436 task_runner_sender_( 436 task_runner_sender_(
437 new test::SkewedSingleThreadTaskRunner(task_runner_)), 437 new test::SkewedSingleThreadTaskRunner(task_runner_)),
438 testing_clock_receiver_(new test::SkewedTickClock(&testing_clock_)), 438 testing_clock_receiver_(new test::SkewedTickClock(&testing_clock_)),
439 task_runner_receiver_( 439 task_runner_receiver_(
440 new test::SkewedSingleThreadTaskRunner(task_runner_)), 440 new test::SkewedSingleThreadTaskRunner(task_runner_)),
441 cast_environment_sender_(new CastEnvironment( 441 cast_environment_sender_(new CastEnvironment(
442 scoped_ptr<base::TickClock>(testing_clock_sender_).Pass(), 442 scoped_ptr<base::TickClock>(testing_clock_sender_),
443 task_runner_sender_, 443 task_runner_sender_,
444 task_runner_sender_, 444 task_runner_sender_,
445 task_runner_sender_)), 445 task_runner_sender_)),
446 cast_environment_receiver_(new CastEnvironment( 446 cast_environment_receiver_(new CastEnvironment(
447 scoped_ptr<base::TickClock>(testing_clock_receiver_).Pass(), 447 scoped_ptr<base::TickClock>(testing_clock_receiver_),
448 task_runner_receiver_, 448 task_runner_receiver_,
449 task_runner_receiver_, 449 task_runner_receiver_,
450 task_runner_receiver_)), 450 task_runner_receiver_)),
451 receiver_to_sender_(cast_environment_receiver_), 451 receiver_to_sender_(cast_environment_receiver_),
452 sender_to_receiver_(cast_environment_sender_), 452 sender_to_receiver_(cast_environment_sender_),
453 test_receiver_audio_callback_(new TestReceiverAudioCallback()), 453 test_receiver_audio_callback_(new TestReceiverAudioCallback()),
454 test_receiver_video_callback_(new TestReceiverVideoCallback()) { 454 test_receiver_video_callback_(new TestReceiverVideoCallback()) {
455 testing_clock_.Advance( 455 testing_clock_.Advance(
456 base::TimeDelta::FromMilliseconds(kStartMillisecond)); 456 base::TimeDelta::FromMilliseconds(kStartMillisecond));
457 cast_environment_sender_->logger()->Subscribe(&event_subscriber_sender_); 457 cast_environment_sender_->logger()->Subscribe(&event_subscriber_sender_);
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
537 base::TimeDelta::FromMilliseconds(kAudioFrameDurationMs))); 537 base::TimeDelta::FromMilliseconds(kAudioFrameDurationMs)));
538 const base::TimeTicks reference_time = 538 const base::TimeTicks reference_time =
539 testing_clock_sender_->NowTicks() + 539 testing_clock_sender_->NowTicks() +
540 i * base::TimeDelta::FromMilliseconds(kAudioFrameDurationMs); 540 i * base::TimeDelta::FromMilliseconds(kAudioFrameDurationMs);
541 if (will_be_checked) { 541 if (will_be_checked) {
542 test_receiver_audio_callback_->AddExpectedResult( 542 test_receiver_audio_callback_->AddExpectedResult(
543 *audio_bus, 543 *audio_bus,
544 reference_time + 544 reference_time +
545 base::TimeDelta::FromMilliseconds(kTargetPlayoutDelayMs)); 545 base::TimeDelta::FromMilliseconds(kTargetPlayoutDelayMs));
546 } 546 }
547 audio_frame_input_->InsertAudio(audio_bus.Pass(), reference_time); 547 audio_frame_input_->InsertAudio(std::move(audio_bus), reference_time);
548 } 548 }
549 } 549 }
550 550
551 void FeedAudioFramesWithExpectedDelay(int count, 551 void FeedAudioFramesWithExpectedDelay(int count,
552 const base::TimeDelta& delay) { 552 const base::TimeDelta& delay) {
553 for (int i = 0; i < count; ++i) { 553 for (int i = 0; i < count; ++i) {
554 scoped_ptr<AudioBus> audio_bus(audio_bus_factory_->NextAudioBus( 554 scoped_ptr<AudioBus> audio_bus(audio_bus_factory_->NextAudioBus(
555 base::TimeDelta::FromMilliseconds(kAudioFrameDurationMs))); 555 base::TimeDelta::FromMilliseconds(kAudioFrameDurationMs)));
556 const base::TimeTicks reference_time = 556 const base::TimeTicks reference_time =
557 testing_clock_sender_->NowTicks() + 557 testing_clock_sender_->NowTicks() +
558 i * base::TimeDelta::FromMilliseconds(kAudioFrameDurationMs); 558 i * base::TimeDelta::FromMilliseconds(kAudioFrameDurationMs);
559 test_receiver_audio_callback_->AddExpectedResult( 559 test_receiver_audio_callback_->AddExpectedResult(
560 *audio_bus, 560 *audio_bus,
561 reference_time + delay + 561 reference_time + delay +
562 base::TimeDelta::FromMilliseconds(kTargetPlayoutDelayMs)); 562 base::TimeDelta::FromMilliseconds(kTargetPlayoutDelayMs));
563 audio_frame_input_->InsertAudio(audio_bus.Pass(), reference_time); 563 audio_frame_input_->InsertAudio(std::move(audio_bus), reference_time);
564 } 564 }
565 } 565 }
566 566
567 void RequestAudioFrames(int count, bool with_check) { 567 void RequestAudioFrames(int count, bool with_check) {
568 for (int i = 0; i < count; ++i) { 568 for (int i = 0; i < count; ++i) {
569 cast_receiver_->RequestDecodedAudioFrame( 569 cast_receiver_->RequestDecodedAudioFrame(
570 base::Bind(with_check ? &TestReceiverAudioCallback::CheckAudioFrame : 570 base::Bind(with_check ? &TestReceiverAudioCallback::CheckAudioFrame :
571 &TestReceiverAudioCallback::IgnoreAudioFrame, 571 &TestReceiverAudioCallback::IgnoreAudioFrame,
572 test_receiver_audio_callback_)); 572 test_receiver_audio_callback_));
573 } 573 }
574 } 574 }
575 575
576 void ReceivePacket(scoped_ptr<Packet> packet) { 576 void ReceivePacket(scoped_ptr<Packet> packet) {
577 cast_receiver_->ReceivePacket(packet.Pass()); 577 cast_receiver_->ReceivePacket(std::move(packet));
578 } 578 }
579 579
580 void Create() { 580 void Create() {
581 net::IPEndPoint dummy_endpoint; 581 net::IPEndPoint dummy_endpoint;
582 transport_sender_.reset(new CastTransportSenderImpl( 582 transport_sender_.reset(new CastTransportSenderImpl(
583 nullptr, testing_clock_sender_, dummy_endpoint, dummy_endpoint, 583 nullptr, testing_clock_sender_, dummy_endpoint, dummy_endpoint,
584 make_scoped_ptr(new base::DictionaryValue), 584 make_scoped_ptr(new base::DictionaryValue),
585 base::Bind(&UpdateCastTransportStatus), 585 base::Bind(&UpdateCastTransportStatus),
586 base::Bind(&LogEventDispatcher::DispatchBatchOfEvents, 586 base::Bind(&LogEventDispatcher::DispatchBatchOfEvents,
587 base::Unretained(cast_environment_sender_->logger())), 587 base::Unretained(cast_environment_sender_->logger())),
(...skipping 735 matching lines...) Expand 10 before | Expand all | Expand 10 after
1323 SendFakeVideoFrame(testing_clock_sender_->NowTicks()); 1323 SendFakeVideoFrame(testing_clock_sender_->NowTicks());
1324 RunTasks(kFrameTimerMs); 1324 RunTasks(kFrameTimerMs);
1325 } 1325 }
1326 RunTasks(2 * kFrameTimerMs + 1); // Empty the pipeline. 1326 RunTasks(2 * kFrameTimerMs + 1); // Empty the pipeline.
1327 EXPECT_EQ(kLongTestIterations, video_ticks_.size()); 1327 EXPECT_EQ(kLongTestIterations, video_ticks_.size());
1328 } 1328 }
1329 1329
1330 TEST_F(End2EndTest, EvilNetwork) { 1330 TEST_F(End2EndTest, EvilNetwork) {
1331 Configure(CODEC_VIDEO_FAKE, CODEC_AUDIO_PCM16, 32000, 1331 Configure(CODEC_VIDEO_FAKE, CODEC_AUDIO_PCM16, 32000,
1332 1); 1332 1);
1333 receiver_to_sender_.SetPacketPipe(test::EvilNetwork().Pass()); 1333 receiver_to_sender_.SetPacketPipe(test::EvilNetwork());
1334 sender_to_receiver_.SetPacketPipe(test::EvilNetwork().Pass()); 1334 sender_to_receiver_.SetPacketPipe(test::EvilNetwork());
1335 Create(); 1335 Create();
1336 StartBasicPlayer(); 1336 StartBasicPlayer();
1337 1337
1338 for (size_t frames_counter = 0; 1338 for (size_t frames_counter = 0;
1339 frames_counter < kLongTestIterations; 1339 frames_counter < kLongTestIterations;
1340 ++frames_counter) { 1340 ++frames_counter) {
1341 SendFakeVideoFrame(testing_clock_sender_->NowTicks()); 1341 SendFakeVideoFrame(testing_clock_sender_->NowTicks());
1342 RunTasks(kFrameTimerMs); 1342 RunTasks(kFrameTimerMs);
1343 } 1343 }
1344 base::TimeTicks test_end = testing_clock_receiver_->NowTicks(); 1344 base::TimeTicks test_end = testing_clock_receiver_->NowTicks();
1345 RunTasks(100 * kFrameTimerMs + 1); // Empty the pipeline. 1345 RunTasks(100 * kFrameTimerMs + 1); // Empty the pipeline.
1346 EXPECT_GT(video_ticks_.size(), kLongTestIterations / 100); 1346 EXPECT_GT(video_ticks_.size(), kLongTestIterations / 100);
1347 VLOG(1) << "Fully transmitted " << video_ticks_.size() << " frames."; 1347 VLOG(1) << "Fully transmitted " << video_ticks_.size() << " frames.";
1348 EXPECT_LT((video_ticks_.back().second - test_end).InMilliseconds(), 1000); 1348 EXPECT_LT((video_ticks_.back().second - test_end).InMilliseconds(), 1000);
1349 } 1349 }
1350 1350
1351 // Tests that a system configured for 30 FPS drops frames when input is provided 1351 // Tests that a system configured for 30 FPS drops frames when input is provided
1352 // at a much higher frame rate. 1352 // at a much higher frame rate.
1353 TEST_F(End2EndTest, ShoveHighFrameRateDownYerThroat) { 1353 TEST_F(End2EndTest, ShoveHighFrameRateDownYerThroat) {
1354 Configure(CODEC_VIDEO_FAKE, CODEC_AUDIO_PCM16, 32000, 1354 Configure(CODEC_VIDEO_FAKE, CODEC_AUDIO_PCM16, 32000,
1355 1); 1355 1);
1356 receiver_to_sender_.SetPacketPipe(test::EvilNetwork().Pass()); 1356 receiver_to_sender_.SetPacketPipe(test::EvilNetwork());
1357 sender_to_receiver_.SetPacketPipe(test::EvilNetwork().Pass()); 1357 sender_to_receiver_.SetPacketPipe(test::EvilNetwork());
1358 Create(); 1358 Create();
1359 StartBasicPlayer(); 1359 StartBasicPlayer();
1360 1360
1361 for (size_t frames_counter = 0; 1361 for (size_t frames_counter = 0;
1362 frames_counter < kLongTestIterations; 1362 frames_counter < kLongTestIterations;
1363 ++frames_counter) { 1363 ++frames_counter) {
1364 SendFakeVideoFrame(testing_clock_sender_->NowTicks()); 1364 SendFakeVideoFrame(testing_clock_sender_->NowTicks());
1365 RunTasks(10 /* 10 ms, but 33.3 expected by system */); 1365 RunTasks(10 /* 10 ms, but 33.3 expected by system */);
1366 } 1366 }
1367 base::TimeTicks test_end = testing_clock_receiver_->NowTicks(); 1367 base::TimeTicks test_end = testing_clock_receiver_->NowTicks();
(...skipping 11 matching lines...) Expand all
1379 test::NewDuplicateAndDelay(1, 10 * kFrameTimerMs)); 1379 test::NewDuplicateAndDelay(1, 10 * kFrameTimerMs));
1380 echo_chamber->AppendToPipe( 1380 echo_chamber->AppendToPipe(
1381 test::NewDuplicateAndDelay(1, 20 * kFrameTimerMs)); 1381 test::NewDuplicateAndDelay(1, 20 * kFrameTimerMs));
1382 echo_chamber->AppendToPipe( 1382 echo_chamber->AppendToPipe(
1383 test::NewDuplicateAndDelay(1, 40 * kFrameTimerMs)); 1383 test::NewDuplicateAndDelay(1, 40 * kFrameTimerMs));
1384 echo_chamber->AppendToPipe( 1384 echo_chamber->AppendToPipe(
1385 test::NewDuplicateAndDelay(1, 80 * kFrameTimerMs)); 1385 test::NewDuplicateAndDelay(1, 80 * kFrameTimerMs));
1386 echo_chamber->AppendToPipe( 1386 echo_chamber->AppendToPipe(
1387 test::NewDuplicateAndDelay(1, 160 * kFrameTimerMs)); 1387 test::NewDuplicateAndDelay(1, 160 * kFrameTimerMs));
1388 1388
1389 receiver_to_sender_.SetPacketPipe(echo_chamber.Pass()); 1389 receiver_to_sender_.SetPacketPipe(std::move(echo_chamber));
1390 Create(); 1390 Create();
1391 StartBasicPlayer(); 1391 StartBasicPlayer();
1392 1392
1393 SetExpectedVideoPlayoutSmoothness( 1393 SetExpectedVideoPlayoutSmoothness(
1394 base::TimeDelta::FromMilliseconds(kFrameTimerMs) * 90 / 100, 1394 base::TimeDelta::FromMilliseconds(kFrameTimerMs) * 90 / 100,
1395 base::TimeDelta::FromMilliseconds(kFrameTimerMs) * 110 / 100, 1395 base::TimeDelta::FromMilliseconds(kFrameTimerMs) * 110 / 100,
1396 base::TimeDelta::FromMilliseconds(kFrameTimerMs) / 10); 1396 base::TimeDelta::FromMilliseconds(kFrameTimerMs) / 10);
1397 1397
1398 for (size_t frames_counter = 0; 1398 for (size_t frames_counter = 0;
1399 frames_counter < kLongTestIterations; 1399 frames_counter < kLongTestIterations;
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
1444 EXPECT_LT(jump, 220u); 1444 EXPECT_LT(jump, 220u);
1445 } 1445 }
1446 1446
1447 // TODO(pwestin): Add repeatable packet loss test. 1447 // TODO(pwestin): Add repeatable packet loss test.
1448 // TODO(pwestin): Add test for misaligned send get calls. 1448 // TODO(pwestin): Add test for misaligned send get calls.
1449 // TODO(pwestin): Add more tests that does not resample. 1449 // TODO(pwestin): Add more tests that does not resample.
1450 // TODO(pwestin): Add test when we have starvation for our RunTask. 1450 // TODO(pwestin): Add test when we have starvation for our RunTask.
1451 1451
1452 } // namespace cast 1452 } // namespace cast
1453 } // namespace media 1453 } // namespace media
OLDNEW
« no previous file with comments | « media/cast/test/cast_benchmarks.cc ('k') | media/cast/test/fake_media_source.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698