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 "content/renderer/media/webrtc_audio_capturer.h" | 5 #include "content/renderer/media/webrtc_audio_capturer.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/logging.h" | 8 #include "base/logging.h" |
9 #include "base/metrics/histogram.h" | 9 #include "base/metrics/histogram.h" |
10 #include "base/string_util.h" | 10 #include "base/string_util.h" |
(...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
194 WebRtcAudioCapturer::~WebRtcAudioCapturer() { | 194 WebRtcAudioCapturer::~WebRtcAudioCapturer() { |
195 DCHECK(thread_checker_.CalledOnValidThread()); | 195 DCHECK(thread_checker_.CalledOnValidThread()); |
196 DCHECK(tracks_.empty()); | 196 DCHECK(tracks_.empty()); |
197 DCHECK(!running_); | 197 DCHECK(!running_); |
198 DVLOG(1) << "WebRtcAudioCapturer::~WebRtcAudioCapturer()"; | 198 DVLOG(1) << "WebRtcAudioCapturer::~WebRtcAudioCapturer()"; |
199 } | 199 } |
200 | 200 |
201 void WebRtcAudioCapturer::AddSink( | 201 void WebRtcAudioCapturer::AddSink( |
202 WebRtcAudioCapturerSink* track) { | 202 WebRtcAudioCapturerSink* track) { |
203 DCHECK(thread_checker_.CalledOnValidThread()); | 203 DCHECK(thread_checker_.CalledOnValidThread()); |
| 204 DCHECK(track); |
204 DVLOG(1) << "WebRtcAudioCapturer::AddSink()"; | 205 DVLOG(1) << "WebRtcAudioCapturer::AddSink()"; |
205 base::AutoLock auto_lock(lock_); | 206 base::AutoLock auto_lock(lock_); |
206 // Verify that |track| is not already added to the list. | 207 // Verify that |track| is not already added to the list. |
207 DCHECK(std::find_if( | 208 DCHECK(std::find_if( |
208 tracks_.begin(), tracks_.end(), | 209 tracks_.begin(), tracks_.end(), |
209 WebRtcAudioCapturerSinkOwner::WrapsSink(track)) == tracks_.end()); | 210 WebRtcAudioCapturerSinkOwner::WrapsSink(track)) == tracks_.end()); |
| 211 |
| 212 if (buffer_.get()) { |
| 213 track->SetCaptureFormat(buffer_->params()); |
| 214 } else { |
| 215 DLOG(WARNING) << "The format of the capturer has not been correctly " |
| 216 << "initialized"; |
| 217 } |
| 218 |
210 // Create (and add to the list) a new WebRtcAudioCapturerSinkOwner which owns | 219 // Create (and add to the list) a new WebRtcAudioCapturerSinkOwner which owns |
211 // the |track| and delagates all calls to the WebRtcAudioCapturerSink | 220 // the |track| and delagates all calls to the WebRtcAudioCapturerSink |
212 // interface. | 221 // interface. |
213 tracks_.push_back(new WebRtcAudioCapturerSinkOwner(track)); | 222 tracks_.push_back(new WebRtcAudioCapturerSinkOwner(track)); |
214 // TODO(xians): should we call SetCapturerFormat() to each track? | 223 // TODO(xians): should we call SetCapturerFormat() to each track? |
215 } | 224 } |
216 | 225 |
217 void WebRtcAudioCapturer::RemoveSink( | 226 void WebRtcAudioCapturer::RemoveSink( |
218 WebRtcAudioCapturerSink* track) { | 227 WebRtcAudioCapturerSink* track) { |
219 DCHECK(thread_checker_.CalledOnValidThread()); | 228 DCHECK(thread_checker_.CalledOnValidThread()); |
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
372 audio_delay_milliseconds, volume); | 381 audio_delay_milliseconds, volume); |
373 } | 382 } |
374 } | 383 } |
375 | 384 |
376 void WebRtcAudioCapturer::OnCaptureError() { | 385 void WebRtcAudioCapturer::OnCaptureError() { |
377 NOTIMPLEMENTED(); | 386 NOTIMPLEMENTED(); |
378 } | 387 } |
379 | 388 |
380 media::AudioParameters WebRtcAudioCapturer::audio_parameters() const { | 389 media::AudioParameters WebRtcAudioCapturer::audio_parameters() const { |
381 base::AutoLock auto_lock(lock_); | 390 base::AutoLock auto_lock(lock_); |
382 return buffer_->params(); | 391 // |buffer_| can be NULL when SetCapturerSource() or Initialize() has not |
| 392 // been called. |
| 393 return buffer_.get() ? buffer_->params() : media::AudioParameters(); |
383 } | 394 } |
384 | 395 |
385 } // namespace content | 396 } // namespace content |
OLD | NEW |