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/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 Loading... |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |