| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 #define _USE_MATH_DEFINES // For VC++ to get M_PI. This has to be first. | 5 #define _USE_MATH_DEFINES // For VC++ to get M_PI. This has to be first. |
| 6 | 6 |
| 7 #include <utility> | 7 #include <utility> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/macros.h" | 10 #include "base/macros.h" |
| (...skipping 216 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 227 int right = 0; | 227 int right = 0; |
| 228 for (int i = skipped_samples + 1; i < num_samples; ++i) { | 228 for (int i = skipped_samples + 1; i < num_samples; ++i) { |
| 229 if (data[(i - 1) * kAudioChannels] < 0 && data[i * kAudioChannels] >= 0) { | 229 if (data[(i - 1) * kAudioChannels] < 0 && data[i * kAudioChannels] >= 0) { |
| 230 ++left; | 230 ++left; |
| 231 } | 231 } |
| 232 if (data[(i - 1) * kAudioChannels + 1] < 0 && | 232 if (data[(i - 1) * kAudioChannels + 1] < 0 && |
| 233 data[i * kAudioChannels + 1] >= 0) { | 233 data[i * kAudioChannels + 1] >= 0) { |
| 234 ++right; | 234 ++right; |
| 235 } | 235 } |
| 236 } | 236 } |
| 237 |
| 238 const int kMaxErrorHz = 50; |
| 237 int left_hz = (left * kAudioSampleRate / (num_samples - skipped_samples)); | 239 int left_hz = (left * kAudioSampleRate / (num_samples - skipped_samples)); |
| 238 EXPECT_LE(kTestAudioSignalFrequencyLeftHz - 50, left_hz); | 240 EXPECT_LE(kTestAudioSignalFrequencyLeftHz - kMaxErrorHz, left_hz); |
| 239 EXPECT_GE(kTestAudioSignalFrequencyLeftHz + 50, left_hz); | 241 EXPECT_GE(kTestAudioSignalFrequencyLeftHz + kMaxErrorHz, left_hz); |
| 240 int right_hz = (right * kAudioSampleRate / (num_samples - skipped_samples)); | 242 int right_hz = (right * kAudioSampleRate / (num_samples - skipped_samples)); |
| 241 EXPECT_LE(kTestAudioSignalFrequencyRightHz - 50, right_hz); | 243 EXPECT_LE(kTestAudioSignalFrequencyRightHz - kMaxErrorHz, right_hz); |
| 242 EXPECT_GE(kTestAudioSignalFrequencyRightHz + 50, right_hz); | 244 EXPECT_GE(kTestAudioSignalFrequencyRightHz + kMaxErrorHz, right_hz); |
| 243 } | 245 } |
| 244 | 246 |
| 245 base::WeakPtr<AudioStub> GetWeakPtr() { return weak_factory_.GetWeakPtr(); } | 247 base::WeakPtr<AudioStub> GetWeakPtr() { return weak_factory_.GetWeakPtr(); } |
| 246 | 248 |
| 247 private: | 249 private: |
| 248 base::ThreadChecker thread_checker_; | 250 base::ThreadChecker thread_checker_; |
| 249 std::vector<char> data_; | 251 std::vector<char> data_; |
| 250 base::RunLoop* run_loop_ = nullptr; | 252 base::RunLoop* run_loop_ = nullptr; |
| 251 size_t samples_expected_ = 0; | 253 size_t samples_expected_ = 0; |
| 252 | 254 |
| (...skipping 362 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 615 stats.host_stats.capture_delay + | 617 stats.host_stats.capture_delay + |
| 616 stats.host_stats.capture_overhead_delay + | 618 stats.host_stats.capture_overhead_delay + |
| 617 stats.host_stats.encode_delay + | 619 stats.host_stats.encode_delay + |
| 618 stats.host_stats.send_pending_delay, | 620 stats.host_stats.send_pending_delay, |
| 619 stats.client_stats.time_received); | 621 stats.client_stats.time_received); |
| 620 EXPECT_LE(stats.client_stats.time_received, stats.client_stats.time_decoded); | 622 EXPECT_LE(stats.client_stats.time_received, stats.client_stats.time_decoded); |
| 621 EXPECT_LE(stats.client_stats.time_decoded, stats.client_stats.time_rendered); | 623 EXPECT_LE(stats.client_stats.time_decoded, stats.client_stats.time_rendered); |
| 622 EXPECT_LE(stats.client_stats.time_rendered, finish_time); | 624 EXPECT_LE(stats.client_stats.time_rendered, finish_time); |
| 623 } | 625 } |
| 624 | 626 |
| 625 // Flaky on Linux/ChromeOS, crbug.com/685910. | |
| 626 // Note: Apparently it's not possible to use the common MAYBE_ prefix with | |
| 627 // TEST_P, so ifdef it out completely. | |
| 628 #if !defined(OS_LINUX) && !defined(OS_CHROMEOS) | |
| 629 TEST_P(ConnectionTest, Audio) { | 627 TEST_P(ConnectionTest, Audio) { |
| 630 Connect(); | 628 Connect(); |
| 631 | 629 |
| 632 std::unique_ptr<AudioStream> audio_stream = | 630 std::unique_ptr<AudioStream> audio_stream = |
| 633 host_connection_->StartAudioStream(base::MakeUnique<TestAudioSource>()); | 631 host_connection_->StartAudioStream(base::MakeUnique<TestAudioSource>()); |
| 634 | 632 |
| 635 // Wait for 1 second worth of audio samples. | 633 // Wait for 1 second worth of audio samples. |
| 636 client_audio_player_.WaitForSamples(kAudioSampleRate * 2); | 634 client_audio_player_.WaitForSamples(kAudioSampleRate * 2); |
| 637 client_audio_player_.Verify(); | 635 client_audio_player_.Verify(); |
| 638 } | 636 } |
| 639 #endif | |
| 640 | 637 |
| 641 TEST_P(ConnectionTest, FirstCaptureFailed) { | 638 TEST_P(ConnectionTest, FirstCaptureFailed) { |
| 642 Connect(); | 639 Connect(); |
| 643 | 640 |
| 644 base::TimeTicks event_timestamp = base::TimeTicks::FromInternalValue(42); | 641 base::TimeTicks event_timestamp = base::TimeTicks::FromInternalValue(42); |
| 645 | 642 |
| 646 scoped_refptr<InputEventTimestampsSourceImpl> input_event_timestamps_source = | 643 scoped_refptr<InputEventTimestampsSourceImpl> input_event_timestamps_source = |
| 647 new InputEventTimestampsSourceImpl(); | 644 new InputEventTimestampsSourceImpl(); |
| 648 input_event_timestamps_source->OnEventReceived( | 645 input_event_timestamps_source->OnEventReceived( |
| 649 InputEventTimestamps{event_timestamp, base::TimeTicks::Now()}); | 646 InputEventTimestamps{event_timestamp, base::TimeTicks::Now()}); |
| (...skipping 27 matching lines...) Expand all Loading... |
| 677 auto capturer = base::MakeUnique<TestScreenCapturer>(); | 674 auto capturer = base::MakeUnique<TestScreenCapturer>(); |
| 678 capturer->FailNthFrame(1); | 675 capturer->FailNthFrame(1); |
| 679 auto video_stream = host_connection_->StartVideoStream(std::move(capturer)); | 676 auto video_stream = host_connection_->StartVideoStream(std::move(capturer)); |
| 680 | 677 |
| 681 WaitNextVideoFrame(); | 678 WaitNextVideoFrame(); |
| 682 WaitNextVideoFrame(); | 679 WaitNextVideoFrame(); |
| 683 } | 680 } |
| 684 | 681 |
| 685 } // namespace protocol | 682 } // namespace protocol |
| 686 } // namespace remoting | 683 } // namespace remoting |
| OLD | NEW |