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

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

Issue 109413004: Cast:Adding cast_transport_config and cleaning up (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Updating chrome/renderer Created 6 years, 11 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 | Annotate | Revision Log
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 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
66 class LoopBackTransport : public PacketSender { 66 class LoopBackTransport : public PacketSender {
67 public: 67 public:
68 explicit LoopBackTransport(scoped_refptr<CastEnvironment> cast_environment) 68 explicit LoopBackTransport(scoped_refptr<CastEnvironment> cast_environment)
69 : packet_receiver_(NULL), 69 : packet_receiver_(NULL),
70 send_packets_(true), 70 send_packets_(true),
71 drop_packets_belonging_to_odd_frames_(false), 71 drop_packets_belonging_to_odd_frames_(false),
72 reset_reference_frame_id_(false), 72 reset_reference_frame_id_(false),
73 cast_environment_(cast_environment) { 73 cast_environment_(cast_environment) {
74 } 74 }
75 75
76 void RegisterPacketReceiver(PacketReceiver* packet_receiver) { 76 void RegisterPacketReceiver(transport::PacketReceiver* packet_receiver) {
77 DCHECK(packet_receiver); 77 DCHECK(packet_receiver);
78 packet_receiver_ = packet_receiver; 78 packet_receiver_ = packet_receiver;
79 } 79 }
80 80
81 virtual bool SendPacket(const Packet& packet) OVERRIDE { 81 virtual bool SendPacket(const Packet& packet) OVERRIDE {
82 DCHECK(packet_receiver_); 82 DCHECK(packet_receiver_);
83 DCHECK(cast_environment_->CurrentlyOn(CastEnvironment::MAIN)); 83 DCHECK(cast_environment_->CurrentlyOn(CastEnvironment::MAIN));
84 if (!send_packets_) return false; 84 if (!send_packets_) return false;
85 85
86 uint8* packet_copy = new uint8[packet.size()]; 86 uint8* packet_copy = new uint8[packet.size()];
87 memcpy(packet_copy, packet.data(), packet.size()); 87 memcpy(packet_copy, packet.data(), packet.size());
88 packet_receiver_->ReceivedPacket(packet_copy, packet.size(), 88 packet_receiver_->ReceivedPacket(packet_copy, packet.size(),
89 base::Bind(PacketReceiver::DeletePacket, packet_copy)); 89 base::Bind(transport::PacketReceiver::DeletePacket, packet_copy));
90 return true; 90 return true;
91 } 91 }
92 92
93 virtual bool SendPackets(const PacketList& packets) OVERRIDE { 93 virtual bool SendPackets(const PacketList& packets) OVERRIDE {
94 DCHECK(packet_receiver_); 94 DCHECK(packet_receiver_);
95 DCHECK(cast_environment_->CurrentlyOn(CastEnvironment::MAIN)); 95 DCHECK(cast_environment_->CurrentlyOn(CastEnvironment::MAIN));
96 if (!send_packets_) return false; 96 if (!send_packets_) return false;
97 97
98 for (size_t i = 0; i < packets.size(); ++i) { 98 for (size_t i = 0; i < packets.size(); ++i) {
99 const Packet& packet = packets[i]; 99 const Packet& packet = packets[i];
100 if (drop_packets_belonging_to_odd_frames_) { 100 if (drop_packets_belonging_to_odd_frames_) {
101 uint32 frame_id = packet[13]; 101 uint32 frame_id = packet[13];
102 if (frame_id % 2 == 1) continue; 102 if (frame_id % 2 == 1) continue;
103 } 103 }
104 uint8* packet_copy = new uint8[packet.size()]; 104 uint8* packet_copy = new uint8[packet.size()];
105 memcpy(packet_copy, packet.data(), packet.size()); 105 memcpy(packet_copy, packet.data(), packet.size());
106 if (reset_reference_frame_id_) { 106 if (reset_reference_frame_id_) {
107 // Reset the is_reference bit in the cast header. 107 // Reset the is_reference bit in the cast header.
108 packet_copy[kCommonRtpHeaderLength] &= kCastReferenceFrameIdBitReset; 108 packet_copy[kCommonRtpHeaderLength] &= kCastReferenceFrameIdBitReset;
109 } 109 }
110 packet_receiver_->ReceivedPacket(packet_copy, packet.size(), 110 packet_receiver_->ReceivedPacket(packet_copy, packet.size(),
111 base::Bind(PacketReceiver::DeletePacket, packet_copy)); 111 base::Bind(transport::PacketReceiver::DeletePacket, packet_copy));
112 } 112 }
113 return true; 113 return true;
114 } 114 }
115 115
116 void SetSendPackets(bool send_packets) { 116 void SetSendPackets(bool send_packets) {
117 send_packets_ = send_packets; 117 send_packets_ = send_packets;
118 } 118 }
119 119
120 void DropAllPacketsBelongingToOddFrames() { 120 void DropAllPacketsBelongingToOddFrames() {
121 drop_packets_belonging_to_odd_frames_ = true; 121 drop_packets_belonging_to_odd_frames_ = true;
122 } 122 }
123 123
124 void AlwaysResetReferenceFrameId() { 124 void AlwaysResetReferenceFrameId() {
125 reset_reference_frame_id_ = true; 125 reset_reference_frame_id_ = true;
126 } 126 }
127 127
128 private: 128 private:
129 PacketReceiver* packet_receiver_; 129 transport::PacketReceiver* packet_receiver_;
130 bool send_packets_; 130 bool send_packets_;
131 bool drop_packets_belonging_to_odd_frames_; 131 bool drop_packets_belonging_to_odd_frames_;
132 bool reset_reference_frame_id_; 132 bool reset_reference_frame_id_;
133 scoped_refptr<CastEnvironment> cast_environment_; 133 scoped_refptr<CastEnvironment> cast_environment_;
134 }; 134 };
135 135
136 // Class that verifies the audio frames coming out of the receiver. 136 // Class that verifies the audio frames coming out of the receiver.
137 class TestReceiverAudioCallback : 137 class TestReceiverAudioCallback :
138 public base::RefCountedThreadSafe<TestReceiverAudioCallback> { 138 public base::RefCountedThreadSafe<TestReceiverAudioCallback> {
139 public: 139 public:
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
196 CheckBasicAudioFrame(audio_frame, playout_time); 196 CheckBasicAudioFrame(audio_frame, playout_time);
197 ExpectedAudioFrame expected_audio_frame = expected_frame_.front(); 197 ExpectedAudioFrame expected_audio_frame = expected_frame_.front();
198 expected_frame_.pop_front(); 198 expected_frame_.pop_front();
199 if (audio_frame->samples.size() == 0) return; // No more checks needed. 199 if (audio_frame->samples.size() == 0) return; // No more checks needed.
200 200
201 EXPECT_NEAR(CountZeroCrossings(expected_audio_frame.audio_frame.samples), 201 EXPECT_NEAR(CountZeroCrossings(expected_audio_frame.audio_frame.samples),
202 CountZeroCrossings(audio_frame->samples), 202 CountZeroCrossings(audio_frame->samples),
203 1); 203 1);
204 } 204 }
205 205
206 void CheckCodedPcmAudioFrame(scoped_ptr<EncodedAudioFrame> audio_frame, 206 void CheckCodedPcmAudioFrame(
207 const base::TimeTicks& playout_time) { 207 scoped_ptr<transport::EncodedAudioFrame> audio_frame,
208 const base::TimeTicks& playout_time) {
208 ++num_called_; 209 ++num_called_;
209 210
210 EXPECT_FALSE(expected_frame_.empty()); // Test for bug in test code. 211 EXPECT_FALSE(expected_frame_.empty()); // Test for bug in test code.
211 ExpectedAudioFrame expected_audio_frame = expected_frame_.front(); 212 ExpectedAudioFrame expected_audio_frame = expected_frame_.front();
212 expected_frame_.pop_front(); 213 expected_frame_.pop_front();
213 214
214 EXPECT_EQ(static_cast<int>(audio_frame->data.size()), 215 EXPECT_EQ(static_cast<int>(audio_frame->data.size()),
215 2 * kAudioChannels * expected_sampling_frequency_ / 100); 216 2 * kAudioChannels * expected_sampling_frequency_ / 100);
216 217
217 base::TimeDelta time_since_recording = 218 base::TimeDelta time_since_recording =
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
327 return config; 328 return config;
328 } 329 }
329 // The actual test class, generate synthetic data for both audio and video and 330 // The actual test class, generate synthetic data for both audio and video and
330 // send those through the sender and receiver and analyzes the result. 331 // send those through the sender and receiver and analyzes the result.
331 class End2EndTest : public ::testing::Test { 332 class End2EndTest : public ::testing::Test {
332 protected: 333 protected:
333 End2EndTest() 334 End2EndTest()
334 : task_runner_(new test::FakeTaskRunner(&testing_clock_)), 335 : task_runner_(new test::FakeTaskRunner(&testing_clock_)),
335 cast_environment_(new CastEnvironment(&testing_clock_, task_runner_, 336 cast_environment_(new CastEnvironment(&testing_clock_, task_runner_,
336 task_runner_, task_runner_, task_runner_, task_runner_, 337 task_runner_, task_runner_, task_runner_, task_runner_,
337 EnableCastLoggingConfig())), 338 task_runner_, EnableCastLoggingConfig())),
338 start_time_(), 339 start_time_(),
339 sender_to_receiver_(cast_environment_), 340 sender_to_receiver_(cast_environment_),
340 receiver_to_sender_(cast_environment_), 341 receiver_to_sender_(cast_environment_),
341 test_receiver_audio_callback_(new TestReceiverAudioCallback()), 342 test_receiver_audio_callback_(new TestReceiverAudioCallback()),
342 test_receiver_video_callback_(new TestReceiverVideoCallback()) { 343 test_receiver_video_callback_(new TestReceiverVideoCallback()) {
343 testing_clock_.Advance( 344 testing_clock_.Advance(
344 base::TimeDelta::FromMilliseconds(kStartMillisecond)); 345 base::TimeDelta::FromMilliseconds(kStartMillisecond));
345 } 346 }
346 347
347 void SetupConfig(AudioCodec audio_codec, 348 void SetupConfig(transport::AudioCodec audio_codec,
348 int audio_sampling_frequency, 349 int audio_sampling_frequency,
349 // TODO(miu): 3rd arg is meaningless?!? 350 // TODO(miu): 3rd arg is meaningless?!?
350 bool external_audio_decoder, 351 bool external_audio_decoder,
351 int max_number_of_video_buffers_used) { 352 int max_number_of_video_buffers_used) {
352 audio_sender_config_.sender_ssrc = 1; 353 audio_sender_config_.sender_ssrc = 1;
353 audio_sender_config_.incoming_feedback_ssrc = 2; 354 audio_sender_config_.incoming_feedback_ssrc = 2;
354 audio_sender_config_.rtp_payload_type = 96; 355 audio_sender_config_.rtp_payload_type = 96;
355 audio_sender_config_.use_external_encoder = false; 356 audio_sender_config_.use_external_encoder = false;
356 audio_sender_config_.frequency = audio_sampling_frequency; 357 audio_sender_config_.frequency = audio_sampling_frequency;
357 audio_sender_config_.channels = kAudioChannels; 358 audio_sender_config_.channels = kAudioChannels;
(...skipping 21 matching lines...) Expand all
379 video_sender_config_.width = kVideoWidth; 380 video_sender_config_.width = kVideoWidth;
380 video_sender_config_.height = kVideoHeight; 381 video_sender_config_.height = kVideoHeight;
381 video_sender_config_.max_bitrate = 5000000; 382 video_sender_config_.max_bitrate = 5000000;
382 video_sender_config_.min_bitrate = 1000000; 383 video_sender_config_.min_bitrate = 1000000;
383 video_sender_config_.start_bitrate = 5000000; 384 video_sender_config_.start_bitrate = 5000000;
384 video_sender_config_.max_qp = 30; 385 video_sender_config_.max_qp = 30;
385 video_sender_config_.min_qp = 4; 386 video_sender_config_.min_qp = 4;
386 video_sender_config_.max_frame_rate = 30; 387 video_sender_config_.max_frame_rate = 30;
387 video_sender_config_.max_number_of_video_buffers_used = 388 video_sender_config_.max_number_of_video_buffers_used =
388 max_number_of_video_buffers_used; 389 max_number_of_video_buffers_used;
389 video_sender_config_.codec = kVp8; 390 video_sender_config_.codec = transport::kVp8;
390 video_sender_config_.number_of_cores = 1; 391 video_sender_config_.number_of_cores = 1;
391 392
392 video_receiver_config_.feedback_ssrc = 393 video_receiver_config_.feedback_ssrc =
393 video_sender_config_.incoming_feedback_ssrc; 394 video_sender_config_.incoming_feedback_ssrc;
394 video_receiver_config_.incoming_ssrc = 395 video_receiver_config_.incoming_ssrc =
395 video_sender_config_.sender_ssrc; 396 video_sender_config_.sender_ssrc;
396 video_receiver_config_.rtp_payload_type = 397 video_receiver_config_.rtp_payload_type =
397 video_sender_config_.rtp_payload_type; 398 video_sender_config_.rtp_payload_type;
398 video_receiver_config_.use_external_decoder = false; 399 video_receiver_config_.use_external_decoder = false;
399 video_receiver_config_.codec = video_sender_config_.codec; 400 video_receiver_config_.codec = video_sender_config_.codec;
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
466 467
467 scoped_refptr<TestReceiverAudioCallback> test_receiver_audio_callback_; 468 scoped_refptr<TestReceiverAudioCallback> test_receiver_audio_callback_;
468 scoped_refptr<TestReceiverVideoCallback> test_receiver_video_callback_; 469 scoped_refptr<TestReceiverVideoCallback> test_receiver_video_callback_;
469 470
470 scoped_ptr<TestAudioBusFactory> audio_bus_factory_; 471 scoped_ptr<TestAudioBusFactory> audio_bus_factory_;
471 }; 472 };
472 473
473 // Audio and video test without packet loss using raw PCM 16 audio "codec"; 474 // Audio and video test without packet loss using raw PCM 16 audio "codec";
474 // This test is too slow. Disabled for now: crbug.com/329333. 475 // This test is too slow. Disabled for now: crbug.com/329333.
475 TEST_F(End2EndTest, DISABLED_LoopNoLossPcm16) { 476 TEST_F(End2EndTest, DISABLED_LoopNoLossPcm16) {
476 SetupConfig(kPcm16, 32000, false, 1); 477 SetupConfig(transport::kPcm16, 32000, false, 1);
477 Create(); 478 Create();
478 479
479 int video_start = 1; 480 int video_start = 1;
480 int audio_diff = kFrameTimerMs; 481 int audio_diff = kFrameTimerMs;
481 int i = 0; 482 int i = 0;
482 483
483 std::cout << "Progress "; 484 std::cout << "Progress ";
484 for (; i < 10; ++i) { 485 for (; i < 10; ++i) {
485 int num_10ms_blocks = audio_diff / 10; 486 int num_10ms_blocks = audio_diff / 10;
486 audio_diff -= num_10ms_blocks * 10; 487 audio_diff -= num_10ms_blocks * 10;
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
539 // TODO(mikhal): Crashes on the Win7 x64 bots. Re-enable. 540 // TODO(mikhal): Crashes on the Win7 x64 bots. Re-enable.
540 // http://crbug.com/329563 541 // http://crbug.com/329563
541 #if defined(OS_WIN) 542 #if defined(OS_WIN)
542 #define MAYBE_LoopNoLossPcm16ExternalDecoder DISABLED_LoopNoLossPcm16ExternalDec oder 543 #define MAYBE_LoopNoLossPcm16ExternalDecoder DISABLED_LoopNoLossPcm16ExternalDec oder
543 #else 544 #else
544 #define MAYBE_LoopNoLossPcm16ExternalDecoder LoopNoLossPcm16ExternalDecoder 545 #define MAYBE_LoopNoLossPcm16ExternalDecoder LoopNoLossPcm16ExternalDecoder
545 #endif 546 #endif
546 // This tests our external decoder interface for Audio. 547 // This tests our external decoder interface for Audio.
547 // Audio test without packet loss using raw PCM 16 audio "codec"; 548 // Audio test without packet loss using raw PCM 16 audio "codec";
548 TEST_F(End2EndTest, MAYBE_LoopNoLossPcm16ExternalDecoder) { 549 TEST_F(End2EndTest, MAYBE_LoopNoLossPcm16ExternalDecoder) {
549 SetupConfig(kPcm16, 32000, true, 1); 550 SetupConfig(transport::kPcm16, 32000, true, 1);
550 Create(); 551 Create();
551 552
552 int i = 0; 553 int i = 0;
553 for (; i < 10; ++i) { 554 for (; i < 10; ++i) {
554 base::TimeTicks send_time = testing_clock_.NowTicks(); 555 base::TimeTicks send_time = testing_clock_.NowTicks();
555 scoped_ptr<AudioBus> audio_bus(audio_bus_factory_->NextAudioBus( 556 scoped_ptr<AudioBus> audio_bus(audio_bus_factory_->NextAudioBus(
556 base::TimeDelta::FromMilliseconds(10))); 557 base::TimeDelta::FromMilliseconds(10)));
557 test_receiver_audio_callback_->AddExpectedResult( 558 test_receiver_audio_callback_->AddExpectedResult(
558 ToPcmAudioFrame(*audio_bus, audio_sender_config_.frequency), 559 ToPcmAudioFrame(*audio_bus, audio_sender_config_.frequency),
559 1, send_time); 560 1, send_time);
(...skipping 12 matching lines...) Expand all
572 } 573 }
573 574
574 // TODO(mikhal): Crashes on the bots. Re-enable. http://crbug.com/329563 575 // TODO(mikhal): Crashes on the bots. Re-enable. http://crbug.com/329563
575 #if defined(OS_WIN) 576 #if defined(OS_WIN)
576 #define MAYBE_LoopNoLossOpus DISABLED_LoopNoLossOpus 577 #define MAYBE_LoopNoLossOpus DISABLED_LoopNoLossOpus
577 #else 578 #else
578 #define MAYBE_LoopNoLossOpus LoopNoLossOpus 579 #define MAYBE_LoopNoLossOpus LoopNoLossOpus
579 #endif 580 #endif
580 // This tests our Opus audio codec without video. 581 // This tests our Opus audio codec without video.
581 TEST_F(End2EndTest, MAYBE_LoopNoLossOpus) { 582 TEST_F(End2EndTest, MAYBE_LoopNoLossOpus) {
582 SetupConfig(kOpus, kDefaultAudioSamplingRate, false, 1); 583 SetupConfig(transport::kOpus, kDefaultAudioSamplingRate, false, 1);
583 Create(); 584 Create();
584 585
585 int i = 0; 586 int i = 0;
586 for (; i < 10; ++i) { 587 for (; i < 10; ++i) {
587 int num_10ms_blocks = 3; 588 int num_10ms_blocks = 3;
588 base::TimeTicks send_time = testing_clock_.NowTicks(); 589 base::TimeTicks send_time = testing_clock_.NowTicks();
589 590
590 scoped_ptr<AudioBus> audio_bus(audio_bus_factory_->NextAudioBus( 591 scoped_ptr<AudioBus> audio_bus(audio_bus_factory_->NextAudioBus(
591 base::TimeDelta::FromMilliseconds(10) * num_10ms_blocks)); 592 base::TimeDelta::FromMilliseconds(10) * num_10ms_blocks));
592 593
(...skipping 23 matching lines...) Expand all
616 } 617 }
617 RunTasks(2 * kFrameTimerMs + 1); // Empty the receiver pipeline. 618 RunTasks(2 * kFrameTimerMs + 1); // Empty the receiver pipeline.
618 EXPECT_EQ(i - 1, test_receiver_audio_callback_->number_times_called()); 619 EXPECT_EQ(i - 1, test_receiver_audio_callback_->number_times_called());
619 } 620 }
620 621
621 // This tests start sending audio and video before the receiver is ready. 622 // This tests start sending audio and video before the receiver is ready.
622 // 623 //
623 // TODO(miu): Test disabled because of non-determinism. 624 // TODO(miu): Test disabled because of non-determinism.
624 // http://crbug.com/314233 625 // http://crbug.com/314233
625 TEST_F(End2EndTest, DISABLED_StartSenderBeforeReceiver) { 626 TEST_F(End2EndTest, DISABLED_StartSenderBeforeReceiver) {
626 SetupConfig(kOpus, kDefaultAudioSamplingRate, false, 1); 627 SetupConfig(transport::kOpus, kDefaultAudioSamplingRate, false, 1);
627 Create(); 628 Create();
628 629
629 int video_start = 1; 630 int video_start = 1;
630 int audio_diff = kFrameTimerMs; 631 int audio_diff = kFrameTimerMs;
631 632
632 sender_to_receiver_.SetSendPackets(false); 633 sender_to_receiver_.SetSendPackets(false);
633 634
634 for (int i = 0; i < 3; ++i) { 635 for (int i = 0; i < 3; ++i) {
635 int num_10ms_blocks = audio_diff / 10; 636 int num_10ms_blocks = audio_diff / 10;
636 audio_diff -= num_10ms_blocks * 10; 637 audio_diff -= num_10ms_blocks * 10;
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
695 video_start++; 696 video_start++;
696 } 697 }
697 RunTasks(2 * kFrameTimerMs + 1); // Empty the receiver pipeline. 698 RunTasks(2 * kFrameTimerMs + 1); // Empty the receiver pipeline.
698 EXPECT_EQ(j - number_of_audio_frames_to_ignore, 699 EXPECT_EQ(j - number_of_audio_frames_to_ignore,
699 test_receiver_audio_callback_->number_times_called()); 700 test_receiver_audio_callback_->number_times_called());
700 EXPECT_EQ(j, test_receiver_video_callback_->number_times_called()); 701 EXPECT_EQ(j, test_receiver_video_callback_->number_times_called());
701 } 702 }
702 703
703 // This tests a network glitch lasting for 10 video frames. 704 // This tests a network glitch lasting for 10 video frames.
704 TEST_F(End2EndTest, GlitchWith3Buffers) { 705 TEST_F(End2EndTest, GlitchWith3Buffers) {
705 SetupConfig(kOpus, kDefaultAudioSamplingRate, false, 3); 706 SetupConfig(transport::kOpus, kDefaultAudioSamplingRate, false, 3);
706 video_sender_config_.rtp_max_delay_ms = 67; 707 video_sender_config_.rtp_max_delay_ms = 67;
707 video_receiver_config_.rtp_max_delay_ms = 67; 708 video_receiver_config_.rtp_max_delay_ms = 67;
708 Create(); 709 Create();
709 710
710 int video_start = 50; 711 int video_start = 50;
711 base::TimeTicks send_time = testing_clock_.NowTicks(); 712 base::TimeTicks send_time = testing_clock_.NowTicks();
712 SendVideoFrame(video_start, send_time); 713 SendVideoFrame(video_start, send_time);
713 RunTasks(kFrameTimerMs); 714 RunTasks(kFrameTimerMs);
714 715
715 test_receiver_video_callback_->AddExpectedResult(video_start, 716 test_receiver_video_callback_->AddExpectedResult(video_start,
(...skipping 28 matching lines...) Expand all
744 745
745 frame_receiver_->GetRawVideoFrame( 746 frame_receiver_->GetRawVideoFrame(
746 base::Bind(&TestReceiverVideoCallback::CheckVideoFrame, 747 base::Bind(&TestReceiverVideoCallback::CheckVideoFrame,
747 test_receiver_video_callback_)); 748 test_receiver_video_callback_));
748 749
749 RunTasks(2 * kFrameTimerMs + 1); // Empty the receiver pipeline. 750 RunTasks(2 * kFrameTimerMs + 1); // Empty the receiver pipeline.
750 EXPECT_EQ(2, test_receiver_video_callback_->number_times_called()); 751 EXPECT_EQ(2, test_receiver_video_callback_->number_times_called());
751 } 752 }
752 753
753 TEST_F(End2EndTest, DropEveryOtherFrame3Buffers) { 754 TEST_F(End2EndTest, DropEveryOtherFrame3Buffers) {
754 SetupConfig(kOpus, kDefaultAudioSamplingRate, false, 3); 755 SetupConfig(transport::kOpus, kDefaultAudioSamplingRate, false, 3);
755 video_sender_config_.rtp_max_delay_ms = 67; 756 video_sender_config_.rtp_max_delay_ms = 67;
756 video_receiver_config_.rtp_max_delay_ms = 67; 757 video_receiver_config_.rtp_max_delay_ms = 67;
757 Create(); 758 Create();
758 sender_to_receiver_.DropAllPacketsBelongingToOddFrames(); 759 sender_to_receiver_.DropAllPacketsBelongingToOddFrames();
759 760
760 int video_start = 50; 761 int video_start = 50;
761 base::TimeTicks send_time; 762 base::TimeTicks send_time;
762 763
763 std::cout << "Progress "; 764 std::cout << "Progress ";
764 int i = 0; 765 int i = 0;
(...skipping 14 matching lines...) Expand all
779 RunTasks(kFrameTimerMs); 780 RunTasks(kFrameTimerMs);
780 std::cout << " " << i << std::flush; 781 std::cout << " " << i << std::flush;
781 video_start++; 782 video_start++;
782 } 783 }
783 std::cout << std::endl; 784 std::cout << std::endl;
784 RunTasks(2 * kFrameTimerMs + 1); // Empty the pipeline. 785 RunTasks(2 * kFrameTimerMs + 1); // Empty the pipeline.
785 EXPECT_EQ(i / 2, test_receiver_video_callback_->number_times_called()); 786 EXPECT_EQ(i / 2, test_receiver_video_callback_->number_times_called());
786 } 787 }
787 788
788 TEST_F(End2EndTest, ResetReferenceFrameId) { 789 TEST_F(End2EndTest, ResetReferenceFrameId) {
789 SetupConfig(kOpus, kDefaultAudioSamplingRate, false, 3); 790 SetupConfig(transport::kOpus, kDefaultAudioSamplingRate, false, 3);
790 video_sender_config_.rtp_max_delay_ms = 67; 791 video_sender_config_.rtp_max_delay_ms = 67;
791 video_receiver_config_.rtp_max_delay_ms = 67; 792 video_receiver_config_.rtp_max_delay_ms = 67;
792 Create(); 793 Create();
793 sender_to_receiver_.AlwaysResetReferenceFrameId(); 794 sender_to_receiver_.AlwaysResetReferenceFrameId();
794 795
795 int frames_counter = 0; 796 int frames_counter = 0;
796 for (; frames_counter < 20; ++frames_counter) { 797 for (; frames_counter < 20; ++frames_counter) {
797 const base::TimeTicks send_time = testing_clock_.NowTicks(); 798 const base::TimeTicks send_time = testing_clock_.NowTicks();
798 SendVideoFrame(frames_counter, send_time); 799 SendVideoFrame(frames_counter, send_time);
799 800
800 test_receiver_video_callback_->AddExpectedResult(frames_counter, 801 test_receiver_video_callback_->AddExpectedResult(frames_counter,
801 video_sender_config_.width, video_sender_config_.height, send_time); 802 video_sender_config_.width, video_sender_config_.height, send_time);
802 803
803 // GetRawVideoFrame will not return the frame until we are close to the 804 // GetRawVideoFrame will not return the frame until we are close to the
804 // time in which we should render the frame. 805 // time in which we should render the frame.
805 frame_receiver_->GetRawVideoFrame( 806 frame_receiver_->GetRawVideoFrame(
806 base::Bind(&TestReceiverVideoCallback::CheckVideoFrame, 807 base::Bind(&TestReceiverVideoCallback::CheckVideoFrame,
807 test_receiver_video_callback_)); 808 test_receiver_video_callback_));
808 RunTasks(kFrameTimerMs); 809 RunTasks(kFrameTimerMs);
809 } 810 }
810 RunTasks(2 * kFrameTimerMs + 1); // Empty the pipeline. 811 RunTasks(2 * kFrameTimerMs + 1); // Empty the pipeline.
811 EXPECT_EQ(frames_counter, 812 EXPECT_EQ(frames_counter,
812 test_receiver_video_callback_->number_times_called()); 813 test_receiver_video_callback_->number_times_called());
813 } 814 }
814 815
815 TEST_F(End2EndTest, CryptoVideo) { 816 TEST_F(End2EndTest, CryptoVideo) {
816 SetupConfig(kPcm16, 32000, false, 1); 817 SetupConfig(transport::kPcm16, 32000, false, 1);
817 818
818 video_sender_config_.aes_iv_mask = 819 video_sender_config_.aes_iv_mask =
819 ConvertFromBase16String("1234567890abcdeffedcba0987654321"); 820 ConvertFromBase16String("1234567890abcdeffedcba0987654321");
820 video_sender_config_.aes_key = 821 video_sender_config_.aes_key =
821 ConvertFromBase16String("deadbeefcafeb0b0b0b0cafedeadbeef"); 822 ConvertFromBase16String("deadbeefcafeb0b0b0b0cafedeadbeef");
822 823
823 video_receiver_config_.aes_iv_mask = video_sender_config_.aes_iv_mask; 824 video_receiver_config_.aes_iv_mask = video_sender_config_.aes_iv_mask;
824 video_receiver_config_.aes_key = video_sender_config_.aes_key; 825 video_receiver_config_.aes_key = video_sender_config_.aes_key;
825 826
826 Create(); 827 Create();
(...skipping 19 matching lines...) Expand all
846 test_receiver_video_callback_->number_times_called()); 847 test_receiver_video_callback_->number_times_called());
847 } 848 }
848 849
849 // TODO(mikhal): Crashes on the bots. Re-enable. http://crbug.com/329563 850 // TODO(mikhal): Crashes on the bots. Re-enable. http://crbug.com/329563
850 #if defined(OS_WIN) 851 #if defined(OS_WIN)
851 #define MAYBE_CryptoAudio DISABLED_CryptoAudio 852 #define MAYBE_CryptoAudio DISABLED_CryptoAudio
852 #else 853 #else
853 #define MAYBE_CryptoAudio CryptoAudio 854 #define MAYBE_CryptoAudio CryptoAudio
854 #endif 855 #endif
855 TEST_F(End2EndTest, MAYBE_CryptoAudio) { 856 TEST_F(End2EndTest, MAYBE_CryptoAudio) {
856 SetupConfig(kPcm16, 32000, false, 1); 857 SetupConfig(transport::kPcm16, 32000, false, 1);
857 858
858 audio_sender_config_.aes_iv_mask = 859 audio_sender_config_.aes_iv_mask =
859 ConvertFromBase16String("abcdeffedcba12345678900987654321"); 860 ConvertFromBase16String("abcdeffedcba12345678900987654321");
860 audio_sender_config_.aes_key = 861 audio_sender_config_.aes_key =
861 ConvertFromBase16String("deadbeefcafecafedeadbeefb0b0b0b0"); 862 ConvertFromBase16String("deadbeefcafecafedeadbeefb0b0b0b0");
862 863
863 audio_receiver_config_.aes_iv_mask = audio_sender_config_.aes_iv_mask; 864 audio_receiver_config_.aes_iv_mask = audio_sender_config_.aes_iv_mask;
864 audio_receiver_config_.aes_key = audio_sender_config_.aes_key; 865 audio_receiver_config_.aes_key = audio_sender_config_.aes_key;
865 866
866 Create(); 867 Create();
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
901 } 902 }
902 } 903 }
903 RunTasks(2 * kFrameTimerMs + 1); // Empty the pipeline. 904 RunTasks(2 * kFrameTimerMs + 1); // Empty the pipeline.
904 EXPECT_EQ(frames_counter - 1, 905 EXPECT_EQ(frames_counter - 1,
905 test_receiver_audio_callback_->number_times_called()); 906 test_receiver_audio_callback_->number_times_called());
906 } 907 }
907 908
908 // Video test without packet loss; This test is targeted at testing the logging 909 // Video test without packet loss; This test is targeted at testing the logging
909 // aspects of the end2end, but is basically equivalent to LoopNoLossPcm16. 910 // aspects of the end2end, but is basically equivalent to LoopNoLossPcm16.
910 TEST_F(End2EndTest, VideoLogging) { 911 TEST_F(End2EndTest, VideoLogging) {
911 SetupConfig(kPcm16, 32000, false, 1); 912 SetupConfig(transport::kPcm16, 32000, false, 1);
912 Create(); 913 Create();
913 914
914 int video_start = 1; 915 int video_start = 1;
915 int i = 0; 916 int i = 0;
916 for (; i < 1; ++i) { 917 for (; i < 1; ++i) {
917 base::TimeTicks send_time = testing_clock_.NowTicks(); 918 base::TimeTicks send_time = testing_clock_.NowTicks();
918 test_receiver_video_callback_->AddExpectedResult(video_start, 919 test_receiver_video_callback_->AddExpectedResult(video_start,
919 video_sender_config_.width, video_sender_config_.height, send_time); 920 video_sender_config_.width, video_sender_config_.height, send_time);
920 921
921 SendVideoFrame(video_start, send_time); 922 SendVideoFrame(video_start, send_time);
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
959 960
960 // Packet logging. 961 // Packet logging.
961 // Verify that all packet related events were logged. 962 // Verify that all packet related events were logged.
962 PacketRawMap packet_raw_log = logging->GetPacketRawData(); 963 PacketRawMap packet_raw_log = logging->GetPacketRawData();
963 // Every rtp_timestamp should have only one entry. 964 // Every rtp_timestamp should have only one entry.
964 EXPECT_EQ(static_cast<unsigned int>(i), packet_raw_log.size()); 965 EXPECT_EQ(static_cast<unsigned int>(i), packet_raw_log.size());
965 PacketRawMap::const_iterator packet_it = packet_raw_log.begin(); 966 PacketRawMap::const_iterator packet_it = packet_raw_log.begin();
966 // Choose a packet, and verify that all events were logged. 967 // Choose a packet, and verify that all events were logged.
967 event_log = (++(packet_it->second.packet_map.begin()))->second.type; 968 event_log = (++(packet_it->second.packet_map.begin()))->second.type;
968 EXPECT_TRUE((std::find(event_log.begin(), event_log.end(), 969 EXPECT_TRUE((std::find(event_log.begin(), event_log.end(),
969 kPacketSentToPacer)) != event_log.end());
970 EXPECT_TRUE((std::find(event_log.begin(), event_log.end(),
971 kPacketSentToNetwork)) != event_log.end());
972 EXPECT_TRUE((std::find(event_log.begin(), event_log.end(),
973 kPacketReceived)) != event_log.end()); 970 kPacketReceived)) != event_log.end());
974 // Verify that there were no other events logged with respect to this frame. 971 // Verify that there were no other events logged with respect to this frame.
975 EXPECT_EQ(3u, event_log.size()); 972 EXPECT_EQ(1u, event_log.size());
976 } 973 }
977 974
978 // TODO(mikhal): Crashes on the bots. Re-enable. http://crbug.com/329563 975 // TODO(mikhal): Crashes on the bots. Re-enable. http://crbug.com/329563
979 #if defined(OS_WIN) 976 #if defined(OS_WIN)
980 #define MAYBE_AudioLogging DISABLED_AudioLogging 977 #define MAYBE_AudioLogging DISABLED_AudioLogging
981 #else 978 #else
982 #define MAYBE_AudioLogging AudioLogging 979 #define MAYBE_AudioLogging AudioLogging
983 #endif 980 #endif
984 // Audio test without packet loss; This test is targeted at testing the logging 981 // Audio test without packet loss; This test is targeted at testing the logging
985 // aspects of the end2end, but is basically equivalent to LoopNoLossPcm16. 982 // aspects of the end2end, but is basically equivalent to LoopNoLossPcm16.
986 TEST_F(End2EndTest, MAYBE_AudioLogging) { 983 TEST_F(End2EndTest, MAYBE_AudioLogging) {
987 SetupConfig(kPcm16, 32000, false, 1); 984 SetupConfig(transport::kPcm16, 32000, false, 1);
988 Create(); 985 Create();
989 986
990 int audio_diff = kFrameTimerMs; 987 int audio_diff = kFrameTimerMs;
991 int i = 0; 988 int i = 0;
992 989
993 for (; i < 10; ++i) { 990 for (; i < 10; ++i) {
994 int num_10ms_blocks = audio_diff / 10; 991 int num_10ms_blocks = audio_diff / 10;
995 audio_diff -= num_10ms_blocks * 10; 992 audio_diff -= num_10ms_blocks * 10;
996 base::TimeTicks send_time = testing_clock_.NowTicks(); 993 base::TimeTicks send_time = testing_clock_.NowTicks();
997 994
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
1057 } 1054 }
1058 1055
1059 1056
1060 // TODO(pwestin): Add repeatable packet loss test. 1057 // TODO(pwestin): Add repeatable packet loss test.
1061 // TODO(pwestin): Add test for misaligned send get calls. 1058 // TODO(pwestin): Add test for misaligned send get calls.
1062 // TODO(pwestin): Add more tests that does not resample. 1059 // TODO(pwestin): Add more tests that does not resample.
1063 // TODO(pwestin): Add test when we have starvation for our RunTask. 1060 // TODO(pwestin): Add test when we have starvation for our RunTask.
1064 1061
1065 } // namespace cast 1062 } // namespace cast
1066 } // namespace media 1063 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698