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

Side by Side Diff: content/browser/renderer_host/media/audio_input_renderer_host.cc

Issue 8491044: Link things together and enable the device selection for linux and mac. (Closed) Base URL: http://src.chromium.org/svn/trunk/src/
Patch Set: fixing unittests Created 9 years, 1 month 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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/browser/renderer_host/media/audio_input_renderer_host.h" 5 #include "content/browser/renderer_host/media/audio_input_renderer_host.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/metrics/histogram.h" 8 #include "base/metrics/histogram.h"
9 #include "base/process.h" 9 #include "base/process.h"
10 #include "base/shared_memory.h" 10 #include "base/shared_memory.h"
(...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after
195 195
196 // Add the session entry to the map. 196 // Add the session entry to the map.
197 session_entries_[session_id] = stream_id; 197 session_entries_[session_id] = stream_id;
198 198
199 // Start the device with the session_id. If the device is started 199 // Start the device with the session_id. If the device is started
200 // successfully, OnDeviceStarted() callback will be triggered. 200 // successfully, OnDeviceStarted() callback will be triggered.
201 audio_input_man->Start(session_id, this); 201 audio_input_man->Start(session_id, this);
202 } 202 }
203 203
204 void AudioInputRendererHost::OnCreateStream( 204 void AudioInputRendererHost::OnCreateStream(
205 int stream_id, const AudioParameters& params, bool low_latency) { 205 int stream_id, const AudioParameters& params, bool low_latency,
206 const std::string& device_uid) {
206 VLOG(1) << "AudioInputRendererHost::OnCreateStream(stream_id=" 207 VLOG(1) << "AudioInputRendererHost::OnCreateStream(stream_id="
207 << stream_id << ")"; 208 << stream_id << ")";
208 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 209 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
209 DCHECK(LookupById(stream_id) == NULL); 210 DCHECK(LookupById(stream_id) == NULL);
210 211
211 // Prevent the renderer process from asking for a normal-latency 212 // Prevent the renderer process from asking for a normal-latency
212 // input stream. 213 // input stream.
213 if (!low_latency) { 214 if (!low_latency) {
214 NOTREACHED() << "Current implementation only supports low-latency mode."; 215 NOTREACHED() << "Current implementation only supports low-latency mode.";
215 return; 216 return;
(...skipping 21 matching lines...) Expand all
237 238
238 // Then try to initialize the sync writer. 239 // Then try to initialize the sync writer.
239 if (!writer->Init()) { 240 if (!writer->Init()) {
240 SendErrorMessage(stream_id); 241 SendErrorMessage(stream_id);
241 return; 242 return;
242 } 243 }
243 244
244 // If we have successfully created the SyncWriter then assign it to the 245 // If we have successfully created the SyncWriter then assign it to the
245 // entry and construct an AudioInputController. 246 // entry and construct an AudioInputController.
246 entry->writer.reset(writer.release()); 247 entry->writer.reset(writer.release());
247 entry->controller = 248 entry->controller = media::AudioInputController::CreateLowLatency(
248 media::AudioInputController::CreateLowLatency(this, 249 this,
249 audio_params, 250 audio_params,
250 entry->writer.get()); 251 device_uid,
252 entry->writer.get());
251 253
252 if (!entry->controller) { 254 if (!entry->controller) {
253 SendErrorMessage(stream_id); 255 SendErrorMessage(stream_id);
254 return; 256 return;
255 } 257 }
256 258
257 // If we have created the controller successfully create a entry and add it 259 // If we have created the controller successfully create a entry and add it
258 // to the map. 260 // to the map.
259 entry->stream_id = stream_id; 261 entry->stream_id = stream_id;
260 262
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
321 323
322 void AudioInputRendererHost::DeleteEntries() { 324 void AudioInputRendererHost::DeleteEntries() {
323 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 325 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
324 326
325 for (AudioEntryMap::iterator i = audio_entries_.begin(); 327 for (AudioEntryMap::iterator i = audio_entries_.begin();
326 i != audio_entries_.end(); ++i) { 328 i != audio_entries_.end(); ++i) {
327 CloseAndDeleteStream(i->second); 329 CloseAndDeleteStream(i->second);
328 } 330 }
329 } 331 }
330 332
331 void AudioInputRendererHost::OnDeviceStarted(int session_id, int index) { 333 void AudioInputRendererHost::OnDeviceStarted(
334 int session_id, const std::string& device_uid) {
332 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 335 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
333 SessionEntryMap::iterator it = session_entries_.find(session_id); 336 SessionEntryMap::iterator it = session_entries_.find(session_id);
334 if (it == session_entries_.end()) { 337 if (it == session_entries_.end()) {
335 DLOG(WARNING) << "AudioInputRendererHost::OnDeviceStarted()" 338 DLOG(WARNING) << "AudioInputRendererHost::OnDeviceStarted()"
336 " session does not exist."; 339 " session does not exist.";
337 return; 340 return;
338 } 341 }
339 342
340 // Notify the renderer that the device has been started. 343 // Notify the renderer that the device has been started.
henrika (OOO until Aug 14) 2011/11/16 13:24:02 Perhaps make the comment more clear since the devi
no longer working on chromium 2011/11/16 17:45:48 Done.
341 Send(new AudioInputMsg_NotifyDeviceStarted(it->second, index)); 344 Send(new AudioInputMsg_NotifyDeviceStarted(it->second, device_uid));
342 } 345 }
343 346
344 void AudioInputRendererHost::OnDeviceStopped(int session_id) { 347 void AudioInputRendererHost::OnDeviceStopped(int session_id) {
345 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 348 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
346 349
347 SessionEntryMap::iterator it = session_entries_.find(session_id); 350 SessionEntryMap::iterator it = session_entries_.find(session_id);
348 // Return if the stream has been closed. 351 // Return if the stream has been closed.
349 if (it == session_entries_.end()) 352 if (it == session_entries_.end())
350 return; 353 return;
351 354
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
440 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 443 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
441 444
442 for (SessionEntryMap::iterator it = session_entries_.begin(); 445 for (SessionEntryMap::iterator it = session_entries_.begin();
443 it != session_entries_.end(); ++it) { 446 it != session_entries_.end(); ++it) {
444 if (stream_id == it->second) { 447 if (stream_id == it->second) {
445 return it->first; 448 return it->first;
446 } 449 }
447 } 450 }
448 return 0; 451 return 0;
449 } 452 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698