| OLD | NEW |
| 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 548 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 559 test_receiver_audio_callback_->AddExpectedResult( | 559 test_receiver_audio_callback_->AddExpectedResult( |
| 560 *audio_bus, | 560 *audio_bus, |
| 561 capture_time + delay + | 561 capture_time + delay + |
| 562 base::TimeDelta::FromMilliseconds(kTargetPlayoutDelayMs)); | 562 base::TimeDelta::FromMilliseconds(kTargetPlayoutDelayMs)); |
| 563 audio_frame_input_->InsertAudio(audio_bus.Pass(), capture_time); | 563 audio_frame_input_->InsertAudio(audio_bus.Pass(), capture_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 frame_receiver_->GetRawAudioFrame( | 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 Create() { | 576 void Create() { |
| 577 cast_receiver_ = CastReceiver::Create(cast_environment_receiver_, | 577 cast_receiver_ = CastReceiver::Create(cast_environment_receiver_, |
| 578 audio_receiver_config_, | 578 audio_receiver_config_, |
| 579 video_receiver_config_, | 579 video_receiver_config_, |
| (...skipping 24 matching lines...) Expand all Loading... |
| 604 receiver_to_sender_.SetPacketReceiver(cast_sender_->packet_receiver(), | 604 receiver_to_sender_.SetPacketReceiver(cast_sender_->packet_receiver(), |
| 605 task_runner_, | 605 task_runner_, |
| 606 &testing_clock_); | 606 &testing_clock_); |
| 607 sender_to_receiver_.SetPacketReceiver(cast_receiver_->packet_receiver(), | 607 sender_to_receiver_.SetPacketReceiver(cast_receiver_->packet_receiver(), |
| 608 task_runner_, | 608 task_runner_, |
| 609 &testing_clock_); | 609 &testing_clock_); |
| 610 | 610 |
| 611 audio_frame_input_ = cast_sender_->audio_frame_input(); | 611 audio_frame_input_ = cast_sender_->audio_frame_input(); |
| 612 video_frame_input_ = cast_sender_->video_frame_input(); | 612 video_frame_input_ = cast_sender_->video_frame_input(); |
| 613 | 613 |
| 614 frame_receiver_ = cast_receiver_->frame_receiver(); | |
| 615 | |
| 616 audio_bus_factory_.reset( | 614 audio_bus_factory_.reset( |
| 617 new TestAudioBusFactory(audio_sender_config_.channels, | 615 new TestAudioBusFactory(audio_sender_config_.channels, |
| 618 audio_sender_config_.frequency, | 616 audio_sender_config_.frequency, |
| 619 kSoundFrequency, | 617 kSoundFrequency, |
| 620 kSoundVolume)); | 618 kSoundVolume)); |
| 621 } | 619 } |
| 622 | 620 |
| 623 virtual ~End2EndTest() { | 621 virtual ~End2EndTest() { |
| 624 cast_environment_sender_->Logging()->RemoveRawEventSubscriber( | 622 cast_environment_sender_->Logging()->RemoveRawEventSubscriber( |
| 625 &event_subscriber_sender_); | 623 &event_subscriber_sender_); |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 677 EXPECT_GE(max_video_playout_curvature_.InMicroseconds(), | 675 EXPECT_GE(max_video_playout_curvature_.InMicroseconds(), |
| 678 abs_curvature.InMicroseconds()); | 676 abs_curvature.InMicroseconds()); |
| 679 } | 677 } |
| 680 last_video_playout_delta_ = delta; | 678 last_video_playout_delta_ = delta; |
| 681 } | 679 } |
| 682 last_video_playout_time_ = playout_time; | 680 last_video_playout_time_ = playout_time; |
| 683 | 681 |
| 684 video_ticks_.push_back(std::make_pair( | 682 video_ticks_.push_back(std::make_pair( |
| 685 testing_clock_receiver_->NowTicks(), | 683 testing_clock_receiver_->NowTicks(), |
| 686 playout_time)); | 684 playout_time)); |
| 687 frame_receiver_->GetRawVideoFrame( | 685 cast_receiver_->RequestDecodedVideoFrame( |
| 688 base::Bind(&End2EndTest::BasicPlayerGotVideoFrame, | 686 base::Bind(&End2EndTest::BasicPlayerGotVideoFrame, |
| 689 base::Unretained(this))); | 687 base::Unretained(this))); |
| 690 } | 688 } |
| 691 | 689 |
| 692 void BasicPlayerGotAudioFrame(scoped_ptr<AudioBus> audio_bus, | 690 void BasicPlayerGotAudioFrame(scoped_ptr<AudioBus> audio_bus, |
| 693 const base::TimeTicks& playout_time, | 691 const base::TimeTicks& playout_time, |
| 694 bool is_continuous) { | 692 bool is_continuous) { |
| 695 VLOG_IF(1, !last_audio_playout_time_.is_null()) | 693 VLOG_IF(1, !last_audio_playout_time_.is_null()) |
| 696 << "Audio frame playout time delta (compared to last frame) is " | 694 << "Audio frame playout time delta (compared to last frame) is " |
| 697 << (playout_time - last_audio_playout_time_).InMicroseconds() | 695 << (playout_time - last_audio_playout_time_).InMicroseconds() |
| 698 << " usec."; | 696 << " usec."; |
| 699 last_audio_playout_time_ = playout_time; | 697 last_audio_playout_time_ = playout_time; |
| 700 | 698 |
| 701 audio_ticks_.push_back(std::make_pair( | 699 audio_ticks_.push_back(std::make_pair( |
| 702 testing_clock_receiver_->NowTicks(), | 700 testing_clock_receiver_->NowTicks(), |
| 703 playout_time)); | 701 playout_time)); |
| 704 frame_receiver_->GetRawAudioFrame( | 702 cast_receiver_->RequestDecodedAudioFrame( |
| 705 base::Bind(&End2EndTest::BasicPlayerGotAudioFrame, | 703 base::Bind(&End2EndTest::BasicPlayerGotAudioFrame, |
| 706 base::Unretained(this))); | 704 base::Unretained(this))); |
| 707 } | 705 } |
| 708 | 706 |
| 709 void StartBasicPlayer() { | 707 void StartBasicPlayer() { |
| 710 frame_receiver_->GetRawVideoFrame( | 708 cast_receiver_->RequestDecodedVideoFrame( |
| 711 base::Bind(&End2EndTest::BasicPlayerGotVideoFrame, | 709 base::Bind(&End2EndTest::BasicPlayerGotVideoFrame, |
| 712 base::Unretained(this))); | 710 base::Unretained(this))); |
| 713 frame_receiver_->GetRawAudioFrame( | 711 cast_receiver_->RequestDecodedAudioFrame( |
| 714 base::Bind(&End2EndTest::BasicPlayerGotAudioFrame, | 712 base::Bind(&End2EndTest::BasicPlayerGotAudioFrame, |
| 715 base::Unretained(this))); | 713 base::Unretained(this))); |
| 716 } | 714 } |
| 717 | 715 |
| 718 void LogRawEvents(const std::vector<PacketEvent>& packet_events) { | 716 void LogRawEvents(const std::vector<PacketEvent>& packet_events) { |
| 719 EXPECT_FALSE(packet_events.empty()); | 717 EXPECT_FALSE(packet_events.empty()); |
| 720 for (std::vector<media::cast::PacketEvent>::const_iterator it = | 718 for (std::vector<media::cast::PacketEvent>::const_iterator it = |
| 721 packet_events.begin(); | 719 packet_events.begin(); |
| 722 it != packet_events.end(); | 720 it != packet_events.end(); |
| 723 ++it) { | 721 ++it) { |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 761 scoped_refptr<CastEnvironment> cast_environment_receiver_; | 759 scoped_refptr<CastEnvironment> cast_environment_receiver_; |
| 762 | 760 |
| 763 LoopBackTransport receiver_to_sender_; | 761 LoopBackTransport receiver_to_sender_; |
| 764 LoopBackTransport sender_to_receiver_; | 762 LoopBackTransport sender_to_receiver_; |
| 765 scoped_ptr<transport::CastTransportSenderImpl> transport_sender_; | 763 scoped_ptr<transport::CastTransportSenderImpl> transport_sender_; |
| 766 | 764 |
| 767 scoped_ptr<CastReceiver> cast_receiver_; | 765 scoped_ptr<CastReceiver> cast_receiver_; |
| 768 scoped_ptr<CastSender> cast_sender_; | 766 scoped_ptr<CastSender> cast_sender_; |
| 769 scoped_refptr<AudioFrameInput> audio_frame_input_; | 767 scoped_refptr<AudioFrameInput> audio_frame_input_; |
| 770 scoped_refptr<VideoFrameInput> video_frame_input_; | 768 scoped_refptr<VideoFrameInput> video_frame_input_; |
| 771 scoped_refptr<FrameReceiver> frame_receiver_; | |
| 772 | 769 |
| 773 scoped_refptr<TestReceiverAudioCallback> test_receiver_audio_callback_; | 770 scoped_refptr<TestReceiverAudioCallback> test_receiver_audio_callback_; |
| 774 scoped_refptr<TestReceiverVideoCallback> test_receiver_video_callback_; | 771 scoped_refptr<TestReceiverVideoCallback> test_receiver_video_callback_; |
| 775 | 772 |
| 776 scoped_ptr<TestAudioBusFactory> audio_bus_factory_; | 773 scoped_ptr<TestAudioBusFactory> audio_bus_factory_; |
| 777 | 774 |
| 778 SimpleEventSubscriber event_subscriber_sender_; | 775 SimpleEventSubscriber event_subscriber_sender_; |
| 779 std::vector<FrameEvent> frame_events_; | 776 std::vector<FrameEvent> frame_events_; |
| 780 std::vector<PacketEvent> packet_events_; | 777 std::vector<PacketEvent> packet_events_; |
| 781 std::vector<std::pair<base::TimeTicks, base::TimeTicks> > audio_ticks_; | 778 std::vector<std::pair<base::TimeTicks, base::TimeTicks> > audio_ticks_; |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 813 SendVideoFrame(video_start, testing_clock_sender_->NowTicks()); | 810 SendVideoFrame(video_start, testing_clock_sender_->NowTicks()); |
| 814 | 811 |
| 815 if (num_audio_frames > 0) | 812 if (num_audio_frames > 0) |
| 816 RunTasks(kAudioFrameDurationMs); // Advance clock forward. | 813 RunTasks(kAudioFrameDurationMs); // Advance clock forward. |
| 817 if (num_audio_frames > 1) | 814 if (num_audio_frames > 1) |
| 818 FeedAudioFrames(num_audio_frames - 1, true); | 815 FeedAudioFrames(num_audio_frames - 1, true); |
| 819 | 816 |
| 820 RequestAudioFrames(num_audio_frames, true); | 817 RequestAudioFrames(num_audio_frames, true); |
| 821 num_audio_frames_requested += num_audio_frames; | 818 num_audio_frames_requested += num_audio_frames; |
| 822 | 819 |
| 823 frame_receiver_->GetRawVideoFrame( | 820 cast_receiver_->RequestDecodedVideoFrame( |
| 824 base::Bind(&TestReceiverVideoCallback::CheckVideoFrame, | 821 base::Bind(&TestReceiverVideoCallback::CheckVideoFrame, |
| 825 test_receiver_video_callback_)); | 822 test_receiver_video_callback_)); |
| 826 | 823 |
| 827 RunTasks(kFrameTimerMs - kAudioFrameDurationMs); | 824 RunTasks(kFrameTimerMs - kAudioFrameDurationMs); |
| 828 audio_diff += kFrameTimerMs; | 825 audio_diff += kFrameTimerMs; |
| 829 video_start++; | 826 video_start++; |
| 830 } | 827 } |
| 831 | 828 |
| 832 RunTasks(2 * kFrameTimerMs + 1); // Empty the receiver pipeline. | 829 RunTasks(2 * kFrameTimerMs + 1); // Empty the receiver pipeline. |
| 833 EXPECT_EQ(num_audio_frames_requested, | 830 EXPECT_EQ(num_audio_frames_requested, |
| 834 test_receiver_audio_callback_->number_times_called()); | 831 test_receiver_audio_callback_->number_times_called()); |
| 835 EXPECT_EQ(kNumIterations, | 832 EXPECT_EQ(kNumIterations, |
| 836 test_receiver_video_callback_->number_times_called()); | 833 test_receiver_video_callback_->number_times_called()); |
| 837 } | 834 } |
| 838 | 835 |
| 839 // This tests our external decoder interface for Audio. | 836 // This tests our external decoder interface for Audio. |
| 840 // Audio test without packet loss using raw PCM 16 audio "codec"; | 837 // Audio test without packet loss using raw PCM 16 audio "codec"; |
| 841 TEST_F(End2EndTest, LoopNoLossPcm16ExternalDecoder) { | 838 TEST_F(End2EndTest, LoopNoLossPcm16ExternalDecoder) { |
| 842 Configure(transport::kVp8, transport::kPcm16, 32000, 1); | 839 Configure(transport::kVp8, transport::kPcm16, 32000, 1); |
| 843 Create(); | 840 Create(); |
| 844 | 841 |
| 845 const int kNumIterations = 10; | 842 const int kNumIterations = 10; |
| 846 for (int i = 0; i < kNumIterations; ++i) { | 843 for (int i = 0; i < kNumIterations; ++i) { |
| 847 FeedAudioFrames(1, true); | 844 FeedAudioFrames(1, true); |
| 848 RunTasks(kAudioFrameDurationMs); | 845 RunTasks(kAudioFrameDurationMs); |
| 849 frame_receiver_->GetCodedAudioFrame( | 846 cast_receiver_->RequestEncodedAudioFrame( |
| 850 base::Bind(&TestReceiverAudioCallback::CheckCodedAudioFrame, | 847 base::Bind(&TestReceiverAudioCallback::CheckCodedAudioFrame, |
| 851 test_receiver_audio_callback_)); | 848 test_receiver_audio_callback_)); |
| 852 } | 849 } |
| 853 RunTasks(2 * kFrameTimerMs + 1); // Empty the receiver pipeline. | 850 RunTasks(2 * kFrameTimerMs + 1); // Empty the receiver pipeline. |
| 854 EXPECT_EQ(kNumIterations, | 851 EXPECT_EQ(kNumIterations, |
| 855 test_receiver_audio_callback_->number_times_called()); | 852 test_receiver_audio_callback_->number_times_called()); |
| 856 } | 853 } |
| 857 | 854 |
| 858 // This tests our Opus audio codec without video. | 855 // This tests our Opus audio codec without video. |
| 859 TEST_F(End2EndTest, LoopNoLossOpus) { | 856 TEST_F(End2EndTest, LoopNoLossOpus) { |
| (...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 947 SendVideoFrame(video_start, testing_clock_sender_->NowTicks()); | 944 SendVideoFrame(video_start, testing_clock_sender_->NowTicks()); |
| 948 | 945 |
| 949 if (num_audio_frames > 0) | 946 if (num_audio_frames > 0) |
| 950 RunTasks(kAudioFrameDurationMs); // Advance clock forward. | 947 RunTasks(kAudioFrameDurationMs); // Advance clock forward. |
| 951 if (num_audio_frames > 1) | 948 if (num_audio_frames > 1) |
| 952 FeedAudioFrames(num_audio_frames - 1, true); | 949 FeedAudioFrames(num_audio_frames - 1, true); |
| 953 | 950 |
| 954 RequestAudioFrames(num_audio_frames, true); | 951 RequestAudioFrames(num_audio_frames, true); |
| 955 num_audio_frames_requested += num_audio_frames; | 952 num_audio_frames_requested += num_audio_frames; |
| 956 | 953 |
| 957 frame_receiver_->GetRawVideoFrame( | 954 cast_receiver_->RequestDecodedVideoFrame( |
| 958 base::Bind(&TestReceiverVideoCallback::CheckVideoFrame, | 955 base::Bind(&TestReceiverVideoCallback::CheckVideoFrame, |
| 959 test_receiver_video_callback_)); | 956 test_receiver_video_callback_)); |
| 960 | 957 |
| 961 RunTasks(kFrameTimerMs - kAudioFrameDurationMs); | 958 RunTasks(kFrameTimerMs - kAudioFrameDurationMs); |
| 962 audio_diff += kFrameTimerMs; | 959 audio_diff += kFrameTimerMs; |
| 963 video_start++; | 960 video_start++; |
| 964 } | 961 } |
| 965 RunTasks(2 * kFrameTimerMs + 1); // Empty the receiver pipeline. | 962 RunTasks(2 * kFrameTimerMs + 1); // Empty the receiver pipeline. |
| 966 EXPECT_EQ(num_audio_frames_requested, | 963 EXPECT_EQ(num_audio_frames_requested, |
| 967 test_receiver_audio_callback_->number_times_called()); | 964 test_receiver_audio_callback_->number_times_called()); |
| (...skipping 15 matching lines...) Expand all Loading... |
| 983 const int frames_before_glitch = 20; | 980 const int frames_before_glitch = 20; |
| 984 for (int i = 0; i < frames_before_glitch; ++i) { | 981 for (int i = 0; i < frames_before_glitch; ++i) { |
| 985 capture_time = testing_clock_sender_->NowTicks(); | 982 capture_time = testing_clock_sender_->NowTicks(); |
| 986 SendVideoFrame(video_start, capture_time); | 983 SendVideoFrame(video_start, capture_time); |
| 987 test_receiver_video_callback_->AddExpectedResult( | 984 test_receiver_video_callback_->AddExpectedResult( |
| 988 video_start, | 985 video_start, |
| 989 video_sender_config_.width, | 986 video_sender_config_.width, |
| 990 video_sender_config_.height, | 987 video_sender_config_.height, |
| 991 capture_time + base::TimeDelta::FromMilliseconds(kTargetPlayoutDelayMs), | 988 capture_time + base::TimeDelta::FromMilliseconds(kTargetPlayoutDelayMs), |
| 992 true); | 989 true); |
| 993 frame_receiver_->GetRawVideoFrame( | 990 cast_receiver_->RequestDecodedVideoFrame( |
| 994 base::Bind(&TestReceiverVideoCallback::CheckVideoFrame, | 991 base::Bind(&TestReceiverVideoCallback::CheckVideoFrame, |
| 995 test_receiver_video_callback_)); | 992 test_receiver_video_callback_)); |
| 996 RunTasks(kFrameTimerMs); | 993 RunTasks(kFrameTimerMs); |
| 997 video_start++; | 994 video_start++; |
| 998 } | 995 } |
| 999 | 996 |
| 1000 // Introduce a glitch lasting for 10 frames. | 997 // Introduce a glitch lasting for 10 frames. |
| 1001 sender_to_receiver_.SetSendPackets(false); | 998 sender_to_receiver_.SetSendPackets(false); |
| 1002 for (int i = 0; i < 10; ++i) { | 999 for (int i = 0; i < 10; ++i) { |
| 1003 capture_time = testing_clock_sender_->NowTicks(); | 1000 capture_time = testing_clock_sender_->NowTicks(); |
| (...skipping 12 matching lines...) Expand all Loading... |
| 1016 | 1013 |
| 1017 // Frames 1-3 are old frames by now, and therefore should be decoded, but | 1014 // Frames 1-3 are old frames by now, and therefore should be decoded, but |
| 1018 // not rendered. The next frame we expect to render is frame #4. | 1015 // not rendered. The next frame we expect to render is frame #4. |
| 1019 test_receiver_video_callback_->AddExpectedResult( | 1016 test_receiver_video_callback_->AddExpectedResult( |
| 1020 video_start, | 1017 video_start, |
| 1021 video_sender_config_.width, | 1018 video_sender_config_.width, |
| 1022 video_sender_config_.height, | 1019 video_sender_config_.height, |
| 1023 capture_time + base::TimeDelta::FromMilliseconds(kTargetPlayoutDelayMs), | 1020 capture_time + base::TimeDelta::FromMilliseconds(kTargetPlayoutDelayMs), |
| 1024 true); | 1021 true); |
| 1025 | 1022 |
| 1026 frame_receiver_->GetRawVideoFrame( | 1023 cast_receiver_->RequestDecodedVideoFrame( |
| 1027 base::Bind(&TestReceiverVideoCallback::CheckVideoFrame, | 1024 base::Bind(&TestReceiverVideoCallback::CheckVideoFrame, |
| 1028 test_receiver_video_callback_)); | 1025 test_receiver_video_callback_)); |
| 1029 | 1026 |
| 1030 RunTasks(2 * kFrameTimerMs + 1); // Empty the receiver pipeline. | 1027 RunTasks(2 * kFrameTimerMs + 1); // Empty the receiver pipeline. |
| 1031 EXPECT_EQ(frames_before_glitch + 1, | 1028 EXPECT_EQ(frames_before_glitch + 1, |
| 1032 test_receiver_video_callback_->number_times_called()); | 1029 test_receiver_video_callback_->number_times_called()); |
| 1033 } | 1030 } |
| 1034 | 1031 |
| 1035 // Disabled due to flakiness and crashiness. http://crbug.com/360951 | 1032 // Disabled due to flakiness and crashiness. http://crbug.com/360951 |
| 1036 TEST_F(End2EndTest, DISABLED_DropEveryOtherFrame3Buffers) { | 1033 TEST_F(End2EndTest, DISABLED_DropEveryOtherFrame3Buffers) { |
| (...skipping 15 matching lines...) Expand all Loading... |
| 1052 test_receiver_video_callback_->AddExpectedResult( | 1049 test_receiver_video_callback_->AddExpectedResult( |
| 1053 video_start, | 1050 video_start, |
| 1054 video_sender_config_.width, | 1051 video_sender_config_.width, |
| 1055 video_sender_config_.height, | 1052 video_sender_config_.height, |
| 1056 capture_time + | 1053 capture_time + |
| 1057 base::TimeDelta::FromMilliseconds(kTargetPlayoutDelayMs), | 1054 base::TimeDelta::FromMilliseconds(kTargetPlayoutDelayMs), |
| 1058 i == 0); | 1055 i == 0); |
| 1059 | 1056 |
| 1060 // GetRawVideoFrame will not return the frame until we are close in | 1057 // GetRawVideoFrame will not return the frame until we are close in |
| 1061 // time before we should render the frame. | 1058 // time before we should render the frame. |
| 1062 frame_receiver_->GetRawVideoFrame( | 1059 cast_receiver_->RequestDecodedVideoFrame( |
| 1063 base::Bind(&TestReceiverVideoCallback::CheckVideoFrame, | 1060 base::Bind(&TestReceiverVideoCallback::CheckVideoFrame, |
| 1064 test_receiver_video_callback_)); | 1061 test_receiver_video_callback_)); |
| 1065 } | 1062 } |
| 1066 RunTasks(kFrameTimerMs); | 1063 RunTasks(kFrameTimerMs); |
| 1067 video_start++; | 1064 video_start++; |
| 1068 } | 1065 } |
| 1069 | 1066 |
| 1070 RunTasks(2 * kFrameTimerMs + 1); // Empty the pipeline. | 1067 RunTasks(2 * kFrameTimerMs + 1); // Empty the pipeline. |
| 1071 EXPECT_EQ(i / 2, test_receiver_video_callback_->number_times_called()); | 1068 EXPECT_EQ(i / 2, test_receiver_video_callback_->number_times_called()); |
| 1072 } | 1069 } |
| (...skipping 20 matching lines...) Expand all Loading... |
| 1093 | 1090 |
| 1094 test_receiver_video_callback_->AddExpectedResult( | 1091 test_receiver_video_callback_->AddExpectedResult( |
| 1095 frames_counter, | 1092 frames_counter, |
| 1096 video_sender_config_.width, | 1093 video_sender_config_.width, |
| 1097 video_sender_config_.height, | 1094 video_sender_config_.height, |
| 1098 capture_time + base::TimeDelta::FromMilliseconds(kTargetPlayoutDelayMs), | 1095 capture_time + base::TimeDelta::FromMilliseconds(kTargetPlayoutDelayMs), |
| 1099 true); | 1096 true); |
| 1100 | 1097 |
| 1101 RunTasks(kFrameTimerMs); | 1098 RunTasks(kFrameTimerMs); |
| 1102 | 1099 |
| 1103 frame_receiver_->GetRawVideoFrame( | 1100 cast_receiver_->RequestDecodedVideoFrame( |
| 1104 base::Bind(&TestReceiverVideoCallback::CheckVideoFrame, | 1101 base::Bind(&TestReceiverVideoCallback::CheckVideoFrame, |
| 1105 test_receiver_video_callback_)); | 1102 test_receiver_video_callback_)); |
| 1106 } | 1103 } |
| 1107 RunTasks(2 * kFrameTimerMs + 1); // Empty the pipeline. | 1104 RunTasks(2 * kFrameTimerMs + 1); // Empty the pipeline. |
| 1108 EXPECT_EQ(frames_counter, | 1105 EXPECT_EQ(frames_counter, |
| 1109 test_receiver_video_callback_->number_times_called()); | 1106 test_receiver_video_callback_->number_times_called()); |
| 1110 } | 1107 } |
| 1111 | 1108 |
| 1112 TEST_F(End2EndTest, CryptoAudio) { | 1109 TEST_F(End2EndTest, CryptoAudio) { |
| 1113 Configure(transport::kVp8, transport::kPcm16, 32000, 1); | 1110 Configure(transport::kVp8, transport::kPcm16, 32000, 1); |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1149 test_receiver_video_callback_->AddExpectedResult( | 1146 test_receiver_video_callback_->AddExpectedResult( |
| 1150 video_start, | 1147 video_start, |
| 1151 video_sender_config_.width, | 1148 video_sender_config_.width, |
| 1152 video_sender_config_.height, | 1149 video_sender_config_.height, |
| 1153 capture_time + base::TimeDelta::FromMilliseconds(kTargetPlayoutDelayMs), | 1150 capture_time + base::TimeDelta::FromMilliseconds(kTargetPlayoutDelayMs), |
| 1154 true); | 1151 true); |
| 1155 | 1152 |
| 1156 SendVideoFrame(video_start, capture_time); | 1153 SendVideoFrame(video_start, capture_time); |
| 1157 RunTasks(kFrameTimerMs); | 1154 RunTasks(kFrameTimerMs); |
| 1158 | 1155 |
| 1159 frame_receiver_->GetRawVideoFrame( | 1156 cast_receiver_->RequestDecodedVideoFrame( |
| 1160 base::Bind(&TestReceiverVideoCallback::CheckVideoFrame, | 1157 base::Bind(&TestReceiverVideoCallback::CheckVideoFrame, |
| 1161 test_receiver_video_callback_)); | 1158 test_receiver_video_callback_)); |
| 1162 | 1159 |
| 1163 video_start++; | 1160 video_start++; |
| 1164 } | 1161 } |
| 1165 | 1162 |
| 1166 // Basic tests. | 1163 // Basic tests. |
| 1167 RunTasks(2 * kFrameTimerMs + 1); // Empty the receiver pipeline. | 1164 RunTasks(2 * kFrameTimerMs + 1); // Empty the receiver pipeline. |
| 1168 int num_callbacks_called = | 1165 int num_callbacks_called = |
| 1169 test_receiver_video_callback_->number_times_called(); | 1166 test_receiver_video_callback_->number_times_called(); |
| (...skipping 260 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1430 EXPECT_LT((video_ticks_.back().second - test_end).InMilliseconds(), 1000); | 1427 EXPECT_LT((video_ticks_.back().second - test_end).InMilliseconds(), 1000); |
| 1431 } | 1428 } |
| 1432 | 1429 |
| 1433 // TODO(pwestin): Add repeatable packet loss test. | 1430 // TODO(pwestin): Add repeatable packet loss test. |
| 1434 // TODO(pwestin): Add test for misaligned send get calls. | 1431 // TODO(pwestin): Add test for misaligned send get calls. |
| 1435 // TODO(pwestin): Add more tests that does not resample. | 1432 // TODO(pwestin): Add more tests that does not resample. |
| 1436 // TODO(pwestin): Add test when we have starvation for our RunTask. | 1433 // TODO(pwestin): Add test when we have starvation for our RunTask. |
| 1437 | 1434 |
| 1438 } // namespace cast | 1435 } // namespace cast |
| 1439 } // namespace media | 1436 } // namespace media |
| OLD | NEW |