| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 #include <string> | 5 #include <string> |
| 6 | 6 |
| 7 #include "base/synchronization/waitable_event.h" | 7 #include "base/synchronization/waitable_event.h" |
| 8 #include "base/test/test_timeouts.h" | 8 #include "base/test/test_timeouts.h" |
| 9 #include "base/time/time.h" | 9 #include "base/time/time.h" |
| 10 #include "media/audio/cras/audio_manager_cras.h" | 10 #include "media/audio/cras/audio_manager_cras.h" |
| (...skipping 10 matching lines...) Expand all Loading... |
| 21 using testing::_; | 21 using testing::_; |
| 22 using testing::AtLeast; | 22 using testing::AtLeast; |
| 23 using testing::Ge; | 23 using testing::Ge; |
| 24 using testing::InvokeWithoutArgs; | 24 using testing::InvokeWithoutArgs; |
| 25 using testing::StrictMock; | 25 using testing::StrictMock; |
| 26 | 26 |
| 27 namespace media { | 27 namespace media { |
| 28 | 28 |
| 29 class MockAudioInputCallback : public AudioInputStream::AudioInputCallback { | 29 class MockAudioInputCallback : public AudioInputStream::AudioInputCallback { |
| 30 public: | 30 public: |
| 31 MOCK_METHOD4(OnData, void( | 31 MOCK_METHOD5(OnData, void( |
| 32 AudioInputStream*, const AudioBus*, uint32, double)); | 32 AudioInputStream*, const uint8*, uint32, uint32, double)); |
| 33 MOCK_METHOD1(OnError, void(AudioInputStream*)); | 33 MOCK_METHOD1(OnError, void(AudioInputStream*)); |
| 34 }; | 34 }; |
| 35 | 35 |
| 36 class MockAudioManagerCrasInput : public AudioManagerCras { | 36 class MockAudioManagerCrasInput : public AudioManagerCras { |
| 37 public: | 37 public: |
| 38 MockAudioManagerCrasInput() : AudioManagerCras(&fake_audio_log_factory_) {} | 38 MockAudioManagerCrasInput() : AudioManagerCras(&fake_audio_log_factory_) {} |
| 39 | 39 |
| 40 // We need to override this function in order to skip checking the number | 40 // We need to override this function in order to skip checking the number |
| 41 // of active output streams. It is because the number of active streams | 41 // of active output streams. It is because the number of active streams |
| 42 // is managed inside MakeAudioInputStream, and we don't use | 42 // is managed inside MakeAudioInputStream, and we don't use |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 78 unsigned int duration_ms) { | 78 unsigned int duration_ms) { |
| 79 CrasInputStream* test_stream = new CrasInputStream( | 79 CrasInputStream* test_stream = new CrasInputStream( |
| 80 params, mock_manager_.get(), AudioManagerBase::kDefaultDeviceId); | 80 params, mock_manager_.get(), AudioManagerBase::kDefaultDeviceId); |
| 81 | 81 |
| 82 ASSERT_TRUE(test_stream->Open()); | 82 ASSERT_TRUE(test_stream->Open()); |
| 83 | 83 |
| 84 // Allow 8 frames variance for SRC in the callback. Different numbers of | 84 // Allow 8 frames variance for SRC in the callback. Different numbers of |
| 85 // samples can be provided when doing non-integer SRC. For example | 85 // samples can be provided when doing non-integer SRC. For example |
| 86 // converting from 192k to 44.1k is a ratio of 4.35 to 1. | 86 // converting from 192k to 44.1k is a ratio of 4.35 to 1. |
| 87 MockAudioInputCallback mock_callback; | 87 MockAudioInputCallback mock_callback; |
| 88 unsigned int expected_size = (kTestFramesPerPacket - 8) * |
| 89 params.channels() * |
| 90 params.bits_per_sample() / 8; |
| 91 |
| 88 base::WaitableEvent event(false, false); | 92 base::WaitableEvent event(false, false); |
| 89 | 93 |
| 90 EXPECT_CALL(mock_callback, | 94 EXPECT_CALL(mock_callback, |
| 91 OnData(test_stream, _, _, _)) | 95 OnData(test_stream, _, Ge(expected_size), _, _)) |
| 92 .WillOnce(InvokeWithoutArgs(&event, &base::WaitableEvent::Signal)); | 96 .WillOnce(InvokeWithoutArgs(&event, &base::WaitableEvent::Signal)); |
| 93 | 97 |
| 94 test_stream->Start(&mock_callback); | 98 test_stream->Start(&mock_callback); |
| 95 | 99 |
| 96 // Wait for samples to be captured. | 100 // Wait for samples to be captured. |
| 97 EXPECT_TRUE(event.TimedWait(TestTimeouts::action_timeout())); | 101 EXPECT_TRUE(event.TimedWait(TestTimeouts::action_timeout())); |
| 98 | 102 |
| 99 test_stream->Stop(); | 103 test_stream->Stop(); |
| 100 test_stream->Close(); | 104 test_stream->Close(); |
| 101 } | 105 } |
| (...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 207 AudioParameters params_stereo(kTestFormat, | 211 AudioParameters params_stereo(kTestFormat, |
| 208 CHANNEL_LAYOUT_STEREO, | 212 CHANNEL_LAYOUT_STEREO, |
| 209 rates[i], | 213 rates[i], |
| 210 kTestBitsPerSample, | 214 kTestBitsPerSample, |
| 211 kTestFramesPerPacket); | 215 kTestFramesPerPacket); |
| 212 CaptureSomeFrames(params_stereo, kTestCaptureDurationMs); | 216 CaptureSomeFrames(params_stereo, kTestCaptureDurationMs); |
| 213 } | 217 } |
| 214 } | 218 } |
| 215 | 219 |
| 216 } // namespace media | 220 } // namespace media |
| OLD | NEW |