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 414 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
425 receiver_to_sender_(new LoopBackTransport(cast_environment_receiver_)), | 425 receiver_to_sender_(new LoopBackTransport(cast_environment_receiver_)), |
426 sender_to_receiver_(new LoopBackTransport(cast_environment_sender_)), | 426 sender_to_receiver_(new LoopBackTransport(cast_environment_sender_)), |
427 test_receiver_audio_callback_(new TestReceiverAudioCallback()), | 427 test_receiver_audio_callback_(new TestReceiverAudioCallback()), |
428 test_receiver_video_callback_(new TestReceiverVideoCallback()) { | 428 test_receiver_video_callback_(new TestReceiverVideoCallback()) { |
429 testing_clock_.Advance( | 429 testing_clock_.Advance( |
430 base::TimeDelta::FromMilliseconds(kStartMillisecond)); | 430 base::TimeDelta::FromMilliseconds(kStartMillisecond)); |
431 cast_environment_sender_->logger()->Subscribe(&event_subscriber_sender_); | 431 cast_environment_sender_->logger()->Subscribe(&event_subscriber_sender_); |
432 } | 432 } |
433 | 433 |
434 void Configure(Codec video_codec, Codec audio_codec) { | 434 void Configure(Codec video_codec, Codec audio_codec) { |
435 audio_sender_config_.ssrc = 1; | 435 audio_sender_config_.sender_ssrc = 1; |
436 audio_sender_config_.receiver_ssrc = 2; | 436 audio_sender_config_.receiver_ssrc = 2; |
437 audio_sender_config_.max_playout_delay = | 437 audio_sender_config_.max_playout_delay = |
438 base::TimeDelta::FromMilliseconds(kTargetPlayoutDelayMs); | 438 base::TimeDelta::FromMilliseconds(kTargetPlayoutDelayMs); |
439 audio_sender_config_.rtp_payload_type = RtpPayloadType::AUDIO_OPUS; | 439 audio_sender_config_.rtp_payload_type = RtpPayloadType::AUDIO_OPUS; |
440 audio_sender_config_.use_external_encoder = false; | 440 audio_sender_config_.use_external_encoder = false; |
441 audio_sender_config_.frequency = kDefaultAudioSamplingRate; | 441 audio_sender_config_.rtp_timebase = kDefaultAudioSamplingRate; |
442 audio_sender_config_.channels = kAudioChannels; | 442 audio_sender_config_.channels = kAudioChannels; |
443 audio_sender_config_.bitrate = kDefaultAudioEncoderBitrate; | 443 audio_sender_config_.max_bitrate = kDefaultAudioEncoderBitrate; |
444 audio_sender_config_.codec = audio_codec; | 444 audio_sender_config_.codec = audio_codec; |
445 audio_sender_config_.aes_iv_mask = | 445 audio_sender_config_.aes_iv_mask = |
446 ConvertFromBase16String("abcdeffedcba12345678900987654321"); | 446 ConvertFromBase16String("abcdeffedcba12345678900987654321"); |
447 audio_sender_config_.aes_key = | 447 audio_sender_config_.aes_key = |
448 ConvertFromBase16String("deadbeefcafecafedeadbeefb0b0b0b0"); | 448 ConvertFromBase16String("deadbeefcafecafedeadbeefb0b0b0b0"); |
449 | 449 |
450 audio_receiver_config_.receiver_ssrc = | 450 audio_receiver_config_.receiver_ssrc = |
451 audio_sender_config_.receiver_ssrc; | 451 audio_sender_config_.receiver_ssrc; |
452 audio_receiver_config_.sender_ssrc = audio_sender_config_.ssrc; | 452 audio_receiver_config_.sender_ssrc = audio_sender_config_.sender_ssrc; |
453 audio_receiver_config_.rtp_max_delay_ms = kTargetPlayoutDelayMs; | 453 audio_receiver_config_.rtp_max_delay_ms = kTargetPlayoutDelayMs; |
454 audio_receiver_config_.rtp_payload_type = | 454 audio_receiver_config_.rtp_payload_type = |
455 audio_sender_config_.rtp_payload_type; | 455 audio_sender_config_.rtp_payload_type; |
456 audio_receiver_config_.rtp_timebase = audio_sender_config_.frequency; | 456 audio_receiver_config_.rtp_timebase = audio_sender_config_.rtp_timebase; |
457 audio_receiver_config_.channels = kAudioChannels; | 457 audio_receiver_config_.channels = kAudioChannels; |
458 audio_receiver_config_.target_frame_rate = 100; | 458 audio_receiver_config_.target_frame_rate = 100; |
459 audio_receiver_config_.codec = audio_sender_config_.codec; | 459 audio_receiver_config_.codec = audio_sender_config_.codec; |
460 audio_receiver_config_.aes_iv_mask = audio_sender_config_.aes_iv_mask; | 460 audio_receiver_config_.aes_iv_mask = audio_sender_config_.aes_iv_mask; |
461 audio_receiver_config_.aes_key = audio_sender_config_.aes_key; | 461 audio_receiver_config_.aes_key = audio_sender_config_.aes_key; |
462 | 462 |
463 test_receiver_audio_callback_->SetExpectedSamplingFrequency( | 463 test_receiver_audio_callback_->SetExpectedSamplingFrequency( |
464 audio_receiver_config_.rtp_timebase); | 464 audio_receiver_config_.rtp_timebase); |
465 | 465 |
466 video_sender_config_.ssrc = 3; | 466 video_sender_config_.sender_ssrc = 3; |
467 video_sender_config_.receiver_ssrc = 4; | 467 video_sender_config_.receiver_ssrc = 4; |
468 video_sender_config_.max_playout_delay = | 468 video_sender_config_.max_playout_delay = |
469 base::TimeDelta::FromMilliseconds(kTargetPlayoutDelayMs); | 469 base::TimeDelta::FromMilliseconds(kTargetPlayoutDelayMs); |
470 video_sender_config_.rtp_payload_type = RtpPayloadType::VIDEO_VP8; | 470 video_sender_config_.rtp_payload_type = RtpPayloadType::VIDEO_VP8; |
471 video_sender_config_.use_external_encoder = false; | 471 video_sender_config_.use_external_encoder = false; |
472 video_sender_config_.max_bitrate = 50000; | 472 video_sender_config_.max_bitrate = 50000; |
473 video_sender_config_.min_bitrate = 10000; | 473 video_sender_config_.min_bitrate = 10000; |
474 video_sender_config_.start_bitrate = 10000; | 474 video_sender_config_.start_bitrate = 10000; |
475 video_sender_config_.max_qp = 30; | 475 video_sender_config_.video_codec_params.max_qp = 30; |
476 video_sender_config_.min_qp = 4; | 476 video_sender_config_.video_codec_params.min_qp = 4; |
477 video_sender_config_.max_frame_rate = 30; | 477 video_sender_config_.max_frame_rate = 30; |
478 video_sender_config_.codec = video_codec; | 478 video_sender_config_.codec = video_codec; |
479 video_sender_config_.aes_iv_mask = | 479 video_sender_config_.aes_iv_mask = |
480 ConvertFromBase16String("1234567890abcdeffedcba0987654321"); | 480 ConvertFromBase16String("1234567890abcdeffedcba0987654321"); |
481 video_sender_config_.aes_key = | 481 video_sender_config_.aes_key = |
482 ConvertFromBase16String("deadbeefcafeb0b0b0b0cafedeadbeef"); | 482 ConvertFromBase16String("deadbeefcafeb0b0b0b0cafedeadbeef"); |
483 | 483 |
484 video_receiver_config_.receiver_ssrc = | 484 video_receiver_config_.receiver_ssrc = |
485 video_sender_config_.receiver_ssrc; | 485 video_sender_config_.receiver_ssrc; |
486 video_receiver_config_.sender_ssrc = video_sender_config_.ssrc; | 486 video_receiver_config_.sender_ssrc = video_sender_config_.sender_ssrc; |
487 video_receiver_config_.rtp_max_delay_ms = kTargetPlayoutDelayMs; | 487 video_receiver_config_.rtp_max_delay_ms = kTargetPlayoutDelayMs; |
488 video_receiver_config_.rtp_payload_type = | 488 video_receiver_config_.rtp_payload_type = |
489 video_sender_config_.rtp_payload_type; | 489 video_sender_config_.rtp_payload_type; |
490 video_receiver_config_.rtp_timebase = kVideoFrequency; | 490 video_receiver_config_.rtp_timebase = kVideoFrequency; |
491 video_receiver_config_.channels = 1; | 491 video_receiver_config_.channels = 1; |
492 video_receiver_config_.target_frame_rate = | 492 video_receiver_config_.target_frame_rate = |
493 video_sender_config_.max_frame_rate; | 493 video_sender_config_.max_frame_rate; |
494 video_receiver_config_.codec = video_sender_config_.codec; | 494 video_receiver_config_.codec = video_sender_config_.codec; |
495 video_receiver_config_.aes_iv_mask = video_sender_config_.aes_iv_mask; | 495 video_receiver_config_.aes_iv_mask = video_sender_config_.aes_iv_mask; |
496 video_receiver_config_.aes_key = video_sender_config_.aes_key; | 496 video_receiver_config_.aes_key = video_sender_config_.aes_key; |
(...skipping 330 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
827 cast_receiver_->RequestDecodedVideoFrame( | 827 cast_receiver_->RequestDecodedVideoFrame( |
828 base::Bind(&End2EndTest::BasicPlayerGotVideoFrame, | 828 base::Bind(&End2EndTest::BasicPlayerGotVideoFrame, |
829 base::Unretained(this))); | 829 base::Unretained(this))); |
830 cast_receiver_->RequestDecodedAudioFrame( | 830 cast_receiver_->RequestDecodedAudioFrame( |
831 base::Bind(&End2EndTest::BasicPlayerGotAudioFrame, | 831 base::Bind(&End2EndTest::BasicPlayerGotAudioFrame, |
832 base::Unretained(this))); | 832 base::Unretained(this))); |
833 } | 833 } |
834 | 834 |
835 FrameReceiverConfig audio_receiver_config_; | 835 FrameReceiverConfig audio_receiver_config_; |
836 FrameReceiverConfig video_receiver_config_; | 836 FrameReceiverConfig video_receiver_config_; |
837 AudioSenderConfig audio_sender_config_; | 837 FrameSenderConfig audio_sender_config_; |
838 VideoSenderConfig video_sender_config_; | 838 FrameSenderConfig video_sender_config_; |
839 | 839 |
840 base::TimeTicks start_time_; | 840 base::TimeTicks start_time_; |
841 | 841 |
842 // These run in "test time" | 842 // These run in "test time" |
843 base::SimpleTestTickClock testing_clock_; | 843 base::SimpleTestTickClock testing_clock_; |
844 scoped_refptr<FakeSingleThreadTaskRunner> task_runner_; | 844 scoped_refptr<FakeSingleThreadTaskRunner> task_runner_; |
845 | 845 |
846 // These run on the sender timeline. | 846 // These run on the sender timeline. |
847 test::SkewedTickClock* testing_clock_sender_; | 847 test::SkewedTickClock* testing_clock_sender_; |
848 scoped_refptr<test::SkewedSingleThreadTaskRunner> task_runner_sender_; | 848 scoped_refptr<test::SkewedSingleThreadTaskRunner> task_runner_sender_; |
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
951 transport_sender_->PacketReceiverForTesting(), task_runner_, | 951 transport_sender_->PacketReceiverForTesting(), task_runner_, |
952 &testing_clock_); | 952 &testing_clock_); |
953 sender_to_receiver_->SetPacketReceiver( | 953 sender_to_receiver_->SetPacketReceiver( |
954 transport_receiver_->PacketReceiverForTesting(), task_runner_, | 954 transport_receiver_->PacketReceiverForTesting(), task_runner_, |
955 &testing_clock_); | 955 &testing_clock_); |
956 | 956 |
957 audio_frame_input_ = cast_sender_->audio_frame_input(); | 957 audio_frame_input_ = cast_sender_->audio_frame_input(); |
958 video_frame_input_ = cast_sender_->video_frame_input(); | 958 video_frame_input_ = cast_sender_->video_frame_input(); |
959 | 959 |
960 audio_bus_factory_.reset(new TestAudioBusFactory( | 960 audio_bus_factory_.reset(new TestAudioBusFactory( |
961 audio_sender_config_.channels, audio_sender_config_.frequency, | 961 audio_sender_config_.channels, audio_sender_config_.rtp_timebase, |
962 kSoundFrequency, kSoundVolume)); | 962 kSoundFrequency, kSoundVolume)); |
963 } | 963 } |
964 | 964 |
965 TEST_F(End2EndTest, LoopWithLosslessEncoding) { | 965 TEST_F(End2EndTest, LoopWithLosslessEncoding) { |
966 Configure(CODEC_VIDEO_FAKE, CODEC_AUDIO_PCM16); | 966 Configure(CODEC_VIDEO_FAKE, CODEC_AUDIO_PCM16); |
967 Create(); | 967 Create(); |
968 | 968 |
969 const auto frames_sent = RunAudioVideoLoop(base::TimeDelta::FromSeconds(3)); | 969 const auto frames_sent = RunAudioVideoLoop(base::TimeDelta::FromSeconds(3)); |
970 | 970 |
971 // Make sure that we send a RTCP message containing receiver log data, then | 971 // Make sure that we send a RTCP message containing receiver log data, then |
(...skipping 299 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1271 EXPECT_EQ(0u, jump); | 1271 EXPECT_EQ(0u, jump); |
1272 jump = i; | 1272 jump = i; |
1273 } | 1273 } |
1274 } | 1274 } |
1275 EXPECT_GT(jump, 49u); | 1275 EXPECT_GT(jump, 49u); |
1276 EXPECT_LT(jump, 120u); | 1276 EXPECT_LT(jump, 120u); |
1277 } | 1277 } |
1278 | 1278 |
1279 } // namespace cast | 1279 } // namespace cast |
1280 } // namespace media | 1280 } // namespace media |
OLD | NEW |