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

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

Issue 178073004: Cast: IPC from browser to renderer to send packet events from transport to cast library. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 9 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/rtcp/rtcp_unittest.cc ('k') | media/cast/test/sender.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
(...skipping 378 matching lines...) Expand 10 before | Expand all | Expand 10 after
389 }; 389 };
390 390
391 // The actual test class, generate synthetic data for both audio and video and 391 // The actual test class, generate synthetic data for both audio and video and
392 // send those through the sender and receiver and analyzes the result. 392 // send those through the sender and receiver and analyzes the result.
393 class End2EndTest : public ::testing::Test { 393 class End2EndTest : public ::testing::Test {
394 protected: 394 protected:
395 End2EndTest() 395 End2EndTest()
396 : start_time_(), 396 : start_time_(),
397 testing_clock_sender_(new base::SimpleTestTickClock()), 397 testing_clock_sender_(new base::SimpleTestTickClock()),
398 testing_clock_receiver_(new base::SimpleTestTickClock()), 398 testing_clock_receiver_(new base::SimpleTestTickClock()),
399 task_runner_(new test::FakeSingleThreadTaskRunner( 399 task_runner_(
400 testing_clock_sender_)), 400 new test::FakeSingleThreadTaskRunner(testing_clock_sender_)),
401 logging_config_(GetLoggingConfigWithRawEventsAndStatsEnabled()),
401 cast_environment_sender_(new CastEnvironment( 402 cast_environment_sender_(new CastEnvironment(
402 scoped_ptr<base::TickClock>(testing_clock_sender_).Pass(), 403 scoped_ptr<base::TickClock>(testing_clock_sender_).Pass(),
403 task_runner_, 404 task_runner_,
404 task_runner_, 405 task_runner_,
405 task_runner_, 406 task_runner_,
406 task_runner_, 407 task_runner_,
407 task_runner_, 408 task_runner_,
408 task_runner_, 409 task_runner_,
409 GetLoggingConfigWithRawEventsAndStatsEnabled())), 410 logging_config_)),
410 cast_environment_receiver_(new CastEnvironment( 411 cast_environment_receiver_(new CastEnvironment(
411 scoped_ptr<base::TickClock>(testing_clock_receiver_).Pass(), 412 scoped_ptr<base::TickClock>(testing_clock_receiver_).Pass(),
412 task_runner_, 413 task_runner_,
413 task_runner_, 414 task_runner_,
414 task_runner_, 415 task_runner_,
415 task_runner_, 416 task_runner_,
416 task_runner_, 417 task_runner_,
417 task_runner_, 418 task_runner_,
418 GetLoggingConfigWithRawEventsAndStatsEnabled())), 419 logging_config_)),
419 receiver_to_sender_(cast_environment_receiver_), 420 receiver_to_sender_(cast_environment_receiver_),
420 sender_to_receiver_(cast_environment_sender_), 421 sender_to_receiver_(cast_environment_sender_),
421 test_receiver_audio_callback_(new TestReceiverAudioCallback()), 422 test_receiver_audio_callback_(new TestReceiverAudioCallback()),
422 test_receiver_video_callback_(new TestReceiverVideoCallback()) { 423 test_receiver_video_callback_(new TestReceiverVideoCallback()) {
423 testing_clock_sender_->Advance( 424 testing_clock_sender_->Advance(
424 base::TimeDelta::FromMilliseconds(kStartMillisecond)); 425 base::TimeDelta::FromMilliseconds(kStartMillisecond));
425 testing_clock_receiver_->Advance( 426 testing_clock_receiver_->Advance(
426 base::TimeDelta::FromMilliseconds(kStartMillisecond)); 427 base::TimeDelta::FromMilliseconds(kStartMillisecond));
427 cast_environment_sender_->Logging()->AddRawEventSubscriber( 428 cast_environment_sender_->Logging()->AddRawEventSubscriber(
428 &event_subscriber_sender_); 429 &event_subscriber_sender_);
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
495 CastReceiver::CreateCastReceiver(cast_environment_receiver_, 496 CastReceiver::CreateCastReceiver(cast_environment_receiver_,
496 audio_receiver_config_, 497 audio_receiver_config_,
497 video_receiver_config_, 498 video_receiver_config_,
498 &receiver_to_sender_)); 499 &receiver_to_sender_));
499 net::IPEndPoint dummy_endpoint; 500 net::IPEndPoint dummy_endpoint;
500 transport_sender_.reset(new transport::CastTransportSenderImpl( 501 transport_sender_.reset(new transport::CastTransportSenderImpl(
501 NULL, 502 NULL,
502 testing_clock_sender_, 503 testing_clock_sender_,
503 dummy_endpoint, 504 dummy_endpoint,
504 dummy_endpoint, 505 dummy_endpoint,
506 logging_config_,
505 base::Bind(&UpdateCastTransportStatus), 507 base::Bind(&UpdateCastTransportStatus),
508 base::Bind(&End2EndTest::LogRawEvents, base::Unretained(this)),
509 base::TimeDelta::FromSeconds(1),
506 task_runner_, 510 task_runner_,
507 &sender_to_receiver_)); 511 &sender_to_receiver_));
508 transport_sender_->InitializeAudio(transport_audio_config_); 512 transport_sender_->InitializeAudio(transport_audio_config_);
509 transport_sender_->InitializeVideo(transport_video_config_); 513 transport_sender_->InitializeVideo(transport_video_config_);
510 514
511 cast_sender_.reset(CastSender::CreateCastSender( 515 cast_sender_.reset(CastSender::CreateCastSender(
512 cast_environment_sender_, 516 cast_environment_sender_,
513 &audio_sender_config_, 517 &audio_sender_config_,
514 &video_sender_config_, 518 &video_sender_config_,
515 NULL, 519 NULL,
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
560 testing_clock_sender_->Advance(base::TimeDelta::FromMilliseconds(1)); 564 testing_clock_sender_->Advance(base::TimeDelta::FromMilliseconds(1));
561 testing_clock_receiver_->Advance(base::TimeDelta::FromMilliseconds(1)); 565 testing_clock_receiver_->Advance(base::TimeDelta::FromMilliseconds(1));
562 task_runner_->RunTasks(); 566 task_runner_->RunTasks();
563 } 567 }
564 } 568 }
565 569
566 void InitializationResult(CastInitializationStatus result) { 570 void InitializationResult(CastInitializationStatus result) {
567 EXPECT_EQ(result, STATUS_INITIALIZED); 571 EXPECT_EQ(result, STATUS_INITIALIZED);
568 } 572 }
569 573
574 void LogRawEvents(const std::vector<PacketEvent>& packet_events) {
575 EXPECT_FALSE(packet_events.empty());
576 for (std::vector<media::cast::PacketEvent>::const_iterator it =
577 packet_events.begin();
578 it != packet_events.end();
579 ++it) {
580 cast_environment_sender_->Logging()->InsertPacketEvent(it->timestamp,
581 it->type,
582 it->rtp_timestamp,
583 it->frame_id,
584 it->packet_id,
585 it->max_packet_id,
586 it->size);
587 }
588 }
589
570 AudioReceiverConfig audio_receiver_config_; 590 AudioReceiverConfig audio_receiver_config_;
571 VideoReceiverConfig video_receiver_config_; 591 VideoReceiverConfig video_receiver_config_;
572 AudioSenderConfig audio_sender_config_; 592 AudioSenderConfig audio_sender_config_;
573 VideoSenderConfig video_sender_config_; 593 VideoSenderConfig video_sender_config_;
574 transport::CastTransportAudioConfig transport_audio_config_; 594 transport::CastTransportAudioConfig transport_audio_config_;
575 transport::CastTransportVideoConfig transport_video_config_; 595 transport::CastTransportVideoConfig transport_video_config_;
576 596
577 base::TimeTicks start_time_; 597 base::TimeTicks start_time_;
578 base::SimpleTestTickClock* testing_clock_sender_; 598 base::SimpleTestTickClock* testing_clock_sender_;
579 base::SimpleTestTickClock* testing_clock_receiver_; 599 base::SimpleTestTickClock* testing_clock_receiver_;
580 scoped_refptr<test::FakeSingleThreadTaskRunner> task_runner_; 600 scoped_refptr<test::FakeSingleThreadTaskRunner> task_runner_;
601 CastLoggingConfig logging_config_;
581 scoped_refptr<CastEnvironment> cast_environment_sender_; 602 scoped_refptr<CastEnvironment> cast_environment_sender_;
582 scoped_refptr<CastEnvironment> cast_environment_receiver_; 603 scoped_refptr<CastEnvironment> cast_environment_receiver_;
583 604
584 LoopBackTransport receiver_to_sender_; 605 LoopBackTransport receiver_to_sender_;
585 LoopBackTransport sender_to_receiver_; 606 LoopBackTransport sender_to_receiver_;
586 scoped_ptr<transport::CastTransportSenderImpl> transport_sender_; 607 scoped_ptr<transport::CastTransportSenderImpl> transport_sender_;
587 608
588 scoped_ptr<CastReceiver> cast_receiver_; 609 scoped_ptr<CastReceiver> cast_receiver_;
589 scoped_ptr<CastSender> cast_sender_; 610 scoped_ptr<CastSender> cast_sender_;
590 scoped_refptr<FrameInput> frame_input_; 611 scoped_refptr<FrameInput> frame_input_;
591 scoped_refptr<FrameReceiver> frame_receiver_; 612 scoped_refptr<FrameReceiver> frame_receiver_;
592 613
593 scoped_refptr<TestReceiverAudioCallback> test_receiver_audio_callback_; 614 scoped_refptr<TestReceiverAudioCallback> test_receiver_audio_callback_;
594 scoped_refptr<TestReceiverVideoCallback> test_receiver_video_callback_; 615 scoped_refptr<TestReceiverVideoCallback> test_receiver_video_callback_;
595 616
596 scoped_ptr<TestAudioBusFactory> audio_bus_factory_; 617 scoped_ptr<TestAudioBusFactory> audio_bus_factory_;
597 618
598 SimpleEventSubscriber event_subscriber_sender_; 619 SimpleEventSubscriber event_subscriber_sender_;
599 std::vector<FrameEvent> frame_events_; 620 std::vector<FrameEvent> frame_events_;
600 std::vector<PacketEvent> packet_events_; 621 std::vector<PacketEvent> packet_events_;
601 std::vector<GenericEvent> generic_events_; 622 std::vector<GenericEvent> generic_events_;
623
624 // |transport_sender_| has a RepeatingTimer which needs a MessageLoop.
625 base::MessageLoop message_loop_;
602 }; 626 };
603 627
604 TEST_F(End2EndTest, LoopNoLossPcm16) { 628 TEST_F(End2EndTest, LoopNoLossPcm16) {
605 SetupConfig(transport::kPcm16, 32000, false, 1); 629 SetupConfig(transport::kPcm16, 32000, false, 1);
606 // Reduce video resolution to allow processing multiple frames within a 630 // Reduce video resolution to allow processing multiple frames within a
607 // reasonable time frame. 631 // reasonable time frame.
608 video_sender_config_.width = kVideoQcifWidth; 632 video_sender_config_.width = kVideoQcifWidth;
609 video_sender_config_.height = kVideoQcifHeight; 633 video_sender_config_.height = kVideoQcifHeight;
610 Create(); 634 Create();
611 635
(...skipping 709 matching lines...) Expand 10 before | Expand all | Expand 10 after
1321 EXPECT_EQ(total_event_count_for_frame, expected_event_count_for_frame); 1345 EXPECT_EQ(total_event_count_for_frame, expected_event_count_for_frame);
1322 } 1346 }
1323 1347
1324 // TODO(pwestin): Add repeatable packet loss test. 1348 // TODO(pwestin): Add repeatable packet loss test.
1325 // TODO(pwestin): Add test for misaligned send get calls. 1349 // TODO(pwestin): Add test for misaligned send get calls.
1326 // TODO(pwestin): Add more tests that does not resample. 1350 // TODO(pwestin): Add more tests that does not resample.
1327 // TODO(pwestin): Add test when we have starvation for our RunTask. 1351 // TODO(pwestin): Add test when we have starvation for our RunTask.
1328 1352
1329 } // namespace cast 1353 } // namespace cast
1330 } // namespace media 1354 } // namespace media
OLDNEW
« no previous file with comments | « media/cast/rtcp/rtcp_unittest.cc ('k') | media/cast/test/sender.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698