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 #include "base/synchronization/waitable_event.h" | 5 #include "base/synchronization/waitable_event.h" |
6 #include "base/test/test_timeouts.h" | 6 #include "base/test/test_timeouts.h" |
7 #include "content/renderer/media/media_stream_audio_source.h" | 7 #include "content/renderer/media/media_stream_audio_source.h" |
8 #include "content/renderer/media/mock_media_constraint_factory.h" | 8 #include "content/renderer/media/mock_media_constraint_factory.h" |
9 #include "content/renderer/media/webrtc/webrtc_local_audio_track_adapter.h" | 9 #include "content/renderer/media/webrtc/webrtc_local_audio_track_adapter.h" |
10 #include "content/renderer/media/webrtc_audio_capturer.h" | 10 #include "content/renderer/media/webrtc_audio_capturer.h" |
(...skipping 30 matching lines...) Expand all Loading... |
41 : capturer_(capturer), | 41 : capturer_(capturer), |
42 thread_(), | 42 thread_(), |
43 closure_(false, false) { | 43 closure_(false, false) { |
44 DCHECK(capturer); | 44 DCHECK(capturer); |
45 audio_bus_ = media::AudioBus::Create(params); | 45 audio_bus_ = media::AudioBus::Create(params); |
46 } | 46 } |
47 | 47 |
48 virtual ~FakeAudioThread() { DCHECK(thread_.is_null()); } | 48 virtual ~FakeAudioThread() { DCHECK(thread_.is_null()); } |
49 | 49 |
50 // base::PlatformThread::Delegate: | 50 // base::PlatformThread::Delegate: |
51 virtual void ThreadMain() OVERRIDE { | 51 virtual void ThreadMain() override { |
52 while (true) { | 52 while (true) { |
53 if (closure_.IsSignaled()) | 53 if (closure_.IsSignaled()) |
54 return; | 54 return; |
55 | 55 |
56 media::AudioCapturerSource::CaptureCallback* callback = | 56 media::AudioCapturerSource::CaptureCallback* callback = |
57 static_cast<media::AudioCapturerSource::CaptureCallback*>( | 57 static_cast<media::AudioCapturerSource::CaptureCallback*>( |
58 capturer_); | 58 capturer_); |
59 audio_bus_->Zero(); | 59 audio_bus_->Zero(); |
60 callback->Capture(audio_bus_.get(), 0, 0, false); | 60 callback->Capture(audio_bus_.get(), 0, 0, false); |
61 | 61 |
(...skipping 29 matching lines...) Expand all Loading... |
91 MOCK_METHOD3(OnInitialize, void(const media::AudioParameters& params, | 91 MOCK_METHOD3(OnInitialize, void(const media::AudioParameters& params, |
92 CaptureCallback* callback, | 92 CaptureCallback* callback, |
93 int session_id)); | 93 int session_id)); |
94 MOCK_METHOD0(OnStart, void()); | 94 MOCK_METHOD0(OnStart, void()); |
95 MOCK_METHOD0(OnStop, void()); | 95 MOCK_METHOD0(OnStop, void()); |
96 MOCK_METHOD1(SetVolume, void(double volume)); | 96 MOCK_METHOD1(SetVolume, void(double volume)); |
97 MOCK_METHOD1(SetAutomaticGainControl, void(bool enable)); | 97 MOCK_METHOD1(SetAutomaticGainControl, void(bool enable)); |
98 | 98 |
99 virtual void Initialize(const media::AudioParameters& params, | 99 virtual void Initialize(const media::AudioParameters& params, |
100 CaptureCallback* callback, | 100 CaptureCallback* callback, |
101 int session_id) OVERRIDE { | 101 int session_id) override { |
102 DCHECK(params.IsValid()); | 102 DCHECK(params.IsValid()); |
103 params_ = params; | 103 params_ = params; |
104 OnInitialize(params, callback, session_id); | 104 OnInitialize(params, callback, session_id); |
105 } | 105 } |
106 virtual void Start() OVERRIDE { | 106 virtual void Start() override { |
107 audio_thread_.reset(new FakeAudioThread(capturer_, params_)); | 107 audio_thread_.reset(new FakeAudioThread(capturer_, params_)); |
108 audio_thread_->Start(); | 108 audio_thread_->Start(); |
109 OnStart(); | 109 OnStart(); |
110 } | 110 } |
111 virtual void Stop() OVERRIDE { | 111 virtual void Stop() override { |
112 audio_thread_->Stop(); | 112 audio_thread_->Stop(); |
113 audio_thread_.reset(); | 113 audio_thread_.reset(); |
114 OnStop(); | 114 OnStop(); |
115 } | 115 } |
116 protected: | 116 protected: |
117 virtual ~MockCapturerSource() {} | 117 virtual ~MockCapturerSource() {} |
118 | 118 |
119 private: | 119 private: |
120 scoped_ptr<FakeAudioThread> audio_thread_; | 120 scoped_ptr<FakeAudioThread> audio_thread_; |
121 WebRtcAudioCapturer* capturer_; | 121 WebRtcAudioCapturer* capturer_; |
122 media::AudioParameters params_; | 122 media::AudioParameters params_; |
123 }; | 123 }; |
124 | 124 |
125 // TODO(xians): Use MediaStreamAudioSink. | 125 // TODO(xians): Use MediaStreamAudioSink. |
126 class MockMediaStreamAudioSink : public PeerConnectionAudioSink { | 126 class MockMediaStreamAudioSink : public PeerConnectionAudioSink { |
127 public: | 127 public: |
128 MockMediaStreamAudioSink() {} | 128 MockMediaStreamAudioSink() {} |
129 ~MockMediaStreamAudioSink() {} | 129 ~MockMediaStreamAudioSink() {} |
130 int OnData(const int16* audio_data, | 130 int OnData(const int16* audio_data, |
131 int sample_rate, | 131 int sample_rate, |
132 int number_of_channels, | 132 int number_of_channels, |
133 int number_of_frames, | 133 int number_of_frames, |
134 const std::vector<int>& channels, | 134 const std::vector<int>& channels, |
135 int audio_delay_milliseconds, | 135 int audio_delay_milliseconds, |
136 int current_volume, | 136 int current_volume, |
137 bool need_audio_processing, | 137 bool need_audio_processing, |
138 bool key_pressed) OVERRIDE { | 138 bool key_pressed) override { |
139 EXPECT_EQ(params_.sample_rate(), sample_rate); | 139 EXPECT_EQ(params_.sample_rate(), sample_rate); |
140 EXPECT_EQ(params_.channels(), number_of_channels); | 140 EXPECT_EQ(params_.channels(), number_of_channels); |
141 EXPECT_EQ(params_.frames_per_buffer(), number_of_frames); | 141 EXPECT_EQ(params_.frames_per_buffer(), number_of_frames); |
142 CaptureData(channels.size(), | 142 CaptureData(channels.size(), |
143 audio_delay_milliseconds, | 143 audio_delay_milliseconds, |
144 current_volume, | 144 current_volume, |
145 need_audio_processing, | 145 need_audio_processing, |
146 key_pressed); | 146 key_pressed); |
147 return 0; | 147 return 0; |
148 } | 148 } |
(...skipping 12 matching lines...) Expand all Loading... |
161 const media::AudioParameters& audio_params() const { return params_; } | 161 const media::AudioParameters& audio_params() const { return params_; } |
162 | 162 |
163 private: | 163 private: |
164 media::AudioParameters params_; | 164 media::AudioParameters params_; |
165 }; | 165 }; |
166 | 166 |
167 } // namespace | 167 } // namespace |
168 | 168 |
169 class WebRtcLocalAudioTrackTest : public ::testing::Test { | 169 class WebRtcLocalAudioTrackTest : public ::testing::Test { |
170 protected: | 170 protected: |
171 virtual void SetUp() OVERRIDE { | 171 virtual void SetUp() override { |
172 params_.Reset(media::AudioParameters::AUDIO_PCM_LOW_LATENCY, | 172 params_.Reset(media::AudioParameters::AUDIO_PCM_LOW_LATENCY, |
173 media::CHANNEL_LAYOUT_STEREO, 2, 48000, 16, 480); | 173 media::CHANNEL_LAYOUT_STEREO, 2, 48000, 16, 480); |
174 MockMediaConstraintFactory constraint_factory; | 174 MockMediaConstraintFactory constraint_factory; |
175 blink_source_.initialize("dummy", blink::WebMediaStreamSource::TypeAudio, | 175 blink_source_.initialize("dummy", blink::WebMediaStreamSource::TypeAudio, |
176 "dummy"); | 176 "dummy"); |
177 MediaStreamAudioSource* audio_source = new MediaStreamAudioSource(); | 177 MediaStreamAudioSource* audio_source = new MediaStreamAudioSource(); |
178 blink_source_.setExtraData(audio_source); | 178 blink_source_.setExtraData(audio_source); |
179 | 179 |
180 StreamDeviceInfo device(MEDIA_DEVICE_AUDIO_CAPTURE, | 180 StreamDeviceInfo device(MEDIA_DEVICE_AUDIO_CAPTURE, |
181 std::string(), std::string()); | 181 std::string(), std::string()); |
182 capturer_ = WebRtcAudioCapturer::CreateCapturer( | 182 capturer_ = WebRtcAudioCapturer::CreateCapturer( |
183 -1, device, constraint_factory.CreateWebMediaConstraints(), NULL, | 183 -1, device, constraint_factory.CreateWebMediaConstraints(), NULL, |
184 audio_source); | 184 audio_source); |
185 audio_source->SetAudioCapturer(capturer_.get()); | 185 audio_source->SetAudioCapturer(capturer_.get()); |
186 capturer_source_ = new MockCapturerSource(capturer_.get()); | 186 capturer_source_ = new MockCapturerSource(capturer_.get()); |
187 EXPECT_CALL(*capturer_source_.get(), OnInitialize(_, capturer_.get(), -1)) | 187 EXPECT_CALL(*capturer_source_.get(), OnInitialize(_, capturer_.get(), -1)) |
188 .WillOnce(Return()); | 188 .WillOnce(Return()); |
189 EXPECT_CALL(*capturer_source_.get(), SetAutomaticGainControl(true)); | 189 EXPECT_CALL(*capturer_source_.get(), SetAutomaticGainControl(true)); |
190 EXPECT_CALL(*capturer_source_.get(), OnStart()); | 190 EXPECT_CALL(*capturer_source_.get(), OnStart()); |
191 capturer_->SetCapturerSourceForTesting(capturer_source_, params_); | 191 capturer_->SetCapturerSourceForTesting(capturer_source_, params_); |
192 } | 192 } |
193 | 193 |
194 virtual void TearDown() OVERRIDE { | 194 virtual void TearDown() override { |
195 blink_source_.reset(); | 195 blink_source_.reset(); |
196 blink::WebHeap::collectAllGarbageForTesting(); | 196 blink::WebHeap::collectAllGarbageForTesting(); |
197 } | 197 } |
198 | 198 |
199 media::AudioParameters params_; | 199 media::AudioParameters params_; |
200 blink::WebMediaStreamSource blink_source_; | 200 blink::WebMediaStreamSource blink_source_; |
201 scoped_refptr<MockCapturerSource> capturer_source_; | 201 scoped_refptr<MockCapturerSource> capturer_source_; |
202 scoped_refptr<WebRtcAudioCapturer> capturer_; | 202 scoped_refptr<WebRtcAudioCapturer> capturer_; |
203 }; | 203 }; |
204 | 204 |
(...skipping 329 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
534 // Stopping the new source will stop the second track. | 534 // Stopping the new source will stop the second track. |
535 EXPECT_CALL(*source.get(), OnStop()).Times(1); | 535 EXPECT_CALL(*source.get(), OnStop()).Times(1); |
536 capturer->Stop(); | 536 capturer->Stop(); |
537 | 537 |
538 // Even though this test don't use |capturer_source_| it will be stopped | 538 // Even though this test don't use |capturer_source_| it will be stopped |
539 // during teardown of the test harness. | 539 // during teardown of the test harness. |
540 EXPECT_CALL(*capturer_source_.get(), OnStop()); | 540 EXPECT_CALL(*capturer_source_.get(), OnStop()); |
541 } | 541 } |
542 | 542 |
543 } // namespace content | 543 } // namespace content |
OLD | NEW |