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

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

Issue 287873004: Adds volume level measurements to the AudioInputController for low-latency clients (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: improved thread handling Created 6 years, 7 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
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/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/memory/shared_memory.h" 8 #include "base/memory/shared_memory.h"
9 #include "base/metrics/histogram.h" 9 #include "base/metrics/histogram.h"
10 #include "base/numerics/safe_math.h" 10 #include "base/numerics/safe_math.h"
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
111 make_scoped_refptr(controller), 111 make_scoped_refptr(controller),
112 error_code)); 112 error_code));
113 } 113 }
114 114
115 void AudioInputRendererHost::OnData(media::AudioInputController* controller, 115 void AudioInputRendererHost::OnData(media::AudioInputController* controller,
116 const uint8* data, 116 const uint8* data,
117 uint32 size) { 117 uint32 size) {
118 NOTREACHED() << "Only low-latency mode is supported."; 118 NOTREACHED() << "Only low-latency mode is supported.";
119 } 119 }
120 120
121 void AudioInputRendererHost::OnLog(media::AudioInputController* controller,
122 const std::string& message) {
123 BrowserThread::PostTask(BrowserThread::IO,
124 FROM_HERE,
125 base::Bind(&AudioInputRendererHost::DoLog,
126 this,
127 make_scoped_refptr(controller),
128 message));
129 }
130
121 void AudioInputRendererHost::DoCompleteCreation( 131 void AudioInputRendererHost::DoCompleteCreation(
122 media::AudioInputController* controller) { 132 media::AudioInputController* controller) {
123 DCHECK_CURRENTLY_ON(BrowserThread::IO); 133 DCHECK_CURRENTLY_ON(BrowserThread::IO);
124 134
125 AudioEntry* entry = LookupByController(controller); 135 AudioEntry* entry = LookupByController(controller);
126 if (!entry) 136 if (!entry)
127 return; 137 return;
128 138
129 if (!PeerHandle()) { 139 if (!PeerHandle()) {
130 NOTREACHED() << "Renderer process handle is invalid."; 140 NOTREACHED() << "Renderer process handle is invalid.";
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
198 } 208 }
199 209
200 AudioEntry* entry = LookupByController(controller); 210 AudioEntry* entry = LookupByController(controller);
201 if (!entry) 211 if (!entry)
202 return; 212 return;
203 213
204 audio_log_->OnError(entry->stream_id); 214 audio_log_->OnError(entry->stream_id);
205 DeleteEntryOnError(entry, AUDIO_INPUT_CONTROLLER_ERROR); 215 DeleteEntryOnError(entry, AUDIO_INPUT_CONTROLLER_ERROR);
206 } 216 }
207 217
218 void AudioInputRendererHost::DoLog(media::AudioInputController* controller,
219 const std::string& message) {
220 DCHECK_CURRENTLY_ON(BrowserThread::IO);
221 AudioEntry* entry = LookupByController(controller);
222 if (!entry)
223 return;
224
225 // Add stream ID and current audio level reported by AIC to native log.
226 std::string log_string =
227 base::StringPrintf("[stream_id=%d] ", entry->stream_id);
228 log_string += message;
229 MediaStreamManager::SendMessageToNativeLog(log_string);
230 DVLOG(1) << log_string;
231 }
232
208 bool AudioInputRendererHost::OnMessageReceived(const IPC::Message& message) { 233 bool AudioInputRendererHost::OnMessageReceived(const IPC::Message& message) {
209 bool handled = true; 234 bool handled = true;
210 IPC_BEGIN_MESSAGE_MAP(AudioInputRendererHost, message) 235 IPC_BEGIN_MESSAGE_MAP(AudioInputRendererHost, message)
211 IPC_MESSAGE_HANDLER(AudioInputHostMsg_CreateStream, OnCreateStream) 236 IPC_MESSAGE_HANDLER(AudioInputHostMsg_CreateStream, OnCreateStream)
212 IPC_MESSAGE_HANDLER(AudioInputHostMsg_RecordStream, OnRecordStream) 237 IPC_MESSAGE_HANDLER(AudioInputHostMsg_RecordStream, OnRecordStream)
213 IPC_MESSAGE_HANDLER(AudioInputHostMsg_CloseStream, OnCloseStream) 238 IPC_MESSAGE_HANDLER(AudioInputHostMsg_CloseStream, OnCloseStream)
214 IPC_MESSAGE_HANDLER(AudioInputHostMsg_SetVolume, OnSetVolume) 239 IPC_MESSAGE_HANDLER(AudioInputHostMsg_SetVolume, OnSetVolume)
215 IPC_MESSAGE_UNHANDLED(handled = false) 240 IPC_MESSAGE_UNHANDLED(handled = false)
216 IPC_END_MESSAGE_MAP() 241 IPC_END_MESSAGE_MAP()
217 242
(...skipping 221 matching lines...) Expand 10 before | Expand all | Expand 10 after
439 // TODO(hclam): Implement a faster look up method. 464 // TODO(hclam): Implement a faster look up method.
440 for (AudioEntryMap::iterator i = audio_entries_.begin(); 465 for (AudioEntryMap::iterator i = audio_entries_.begin();
441 i != audio_entries_.end(); ++i) { 466 i != audio_entries_.end(); ++i) {
442 if (controller == i->second->controller.get()) 467 if (controller == i->second->controller.get())
443 return i->second; 468 return i->second;
444 } 469 }
445 return NULL; 470 return NULL;
446 } 471 }
447 472
448 } // namespace content 473 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/renderer_host/media/audio_input_renderer_host.h ('k') | content/browser/speech/speech_recognizer_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698