Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(204)

Unified Diff: content/renderer/media/webrtc_audio_device_impl.cc

Issue 133903004: Cleaned up the WebRtcAudioCapturer a bit. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: addressed the comments Created 6 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/renderer/media/webrtc_audio_device_impl.cc
diff --git a/content/renderer/media/webrtc_audio_device_impl.cc b/content/renderer/media/webrtc_audio_device_impl.cc
index 7519de90a85bac94b98d79171c201c7bdbaea235..78ccdc688dc7fd7762f0fdc23c8bc0fcb18a0be0 100644
--- a/content/renderer/media/webrtc_audio_device_impl.cc
+++ b/content/renderer/media/webrtc_audio_device_impl.cc
@@ -436,24 +436,47 @@ void WebRtcAudioDeviceImpl::AddAudioCapturer(
DVLOG(1) << "WebRtcAudioDeviceImpl::AddAudioCapturer()";
DCHECK(thread_checker_.CalledOnValidThread());
DCHECK(capturer.get());
-
- // We only support one microphone today, which means the list can contain
- // only one capturer with a valid device id.
- DCHECK(capturer->device_id().empty() || !GetDefaultCapturer());
+ DCHECK(!capturer->device_id().empty());
base::AutoLock auto_lock(lock_);
+ DCHECK(std::find(capturers_.begin(), capturers_.end(), capturer) ==
+ capturers_.end());
capturers_.push_back(capturer);
}
+void WebRtcAudioDeviceImpl::RemoveAudioCapturer(
+ const scoped_refptr<WebRtcAudioCapturer>& capturer) {
+ DVLOG(1) << "WebRtcAudioDeviceImpl::AddAudioCapturer()";
+ DCHECK(thread_checker_.CalledOnValidThread());
+ DCHECK(capturer.get());
+ base::AutoLock auto_lock(lock_);
+ capturers_.remove(capturer);
+}
+
scoped_refptr<WebRtcAudioCapturer>
WebRtcAudioDeviceImpl::GetDefaultCapturer() const {
base::AutoLock auto_lock(lock_);
- for (CapturerList::const_iterator iter = capturers_.begin();
- iter != capturers_.end(); ++iter) {
- if (!(*iter)->device_id().empty())
- return *iter;
+ // Use the last |capturer| which is from the latest getUserMedia call as
+ // the default capture device.
+ for (CapturerList::const_reverse_iterator iter = capturers_.rbegin();
perkj_chrome 2014/01/14 12:53:55 return capturers_.empty() ? NULL : capturers_[capt
no longer working on chromium 2014/01/14 14:10:56 Done.
no longer working on chromium 2014/01/14 14:10:56 capturers_ is a list whose element can't be access
perkj_chrome 2014/01/14 20:27:32 sure. You can also use *(capturers_.end()--) inste
no longer working on chromium 2014/01/15 18:31:03 I would like to use the existing approach since it
+ iter != capturers_.rend(); ++iter) {
+ return *iter;
}
return NULL;
}
+bool WebRtcAudioDeviceImpl::GetAuthorizedDeviceInfoForAudioRenderer(
+ int* session_id,
+ int* output_sample_rate,
+ int* output_frames_per_buffer) {
+ DCHECK(thread_checker_.CalledOnValidThread());
+ // If there is no capturer or there are more than one open capture devices,
+ // return false.
+ if (capturers_.empty() || capturers_.size() > 1)
+ return false;
+
+ return GetDefaultCapturer()->GetPairedOutputParameters(
+ session_id, output_sample_rate, output_frames_per_buffer);
+}
+
} // namespace content

Powered by Google App Engine
This is Rietveld 408576698