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/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" |
11 #include "content/browser/renderer_host/media/audio_input_device_manager.h" | 11 #include "content/browser/renderer_host/media/audio_input_device_manager.h" |
12 #include "content/browser/renderer_host/media/audio_input_sync_writer.h" | 12 #include "content/browser/renderer_host/media/audio_input_sync_writer.h" |
13 #include "content/browser/renderer_host/media/media_stream_manager.h" | 13 #include "content/browser/renderer_host/media/media_stream_manager.h" |
| 14 #include "content/browser/renderer_host/media/web_contents_capture_util.h" |
14 #include "content/common/media/audio_messages.h" | 15 #include "content/common/media/audio_messages.h" |
15 | 16 |
16 namespace content { | 17 namespace content { |
17 | 18 |
18 struct AudioInputRendererHost::AudioEntry { | 19 struct AudioInputRendererHost::AudioEntry { |
19 AudioEntry(); | 20 AudioEntry(); |
20 ~AudioEntry(); | 21 ~AudioEntry(); |
21 | 22 |
22 // The AudioInputController that manages the audio input stream. | 23 // The AudioInputController that manages the audio input stream. |
23 scoped_refptr<media::AudioInputController> controller; | 24 scoped_refptr<media::AudioInputController> controller; |
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
211 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); | 212 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
212 DCHECK(LookupById(stream_id) == NULL); | 213 DCHECK(LookupById(stream_id) == NULL); |
213 | 214 |
214 media::AudioParameters audio_params(params); | 215 media::AudioParameters audio_params(params); |
215 | 216 |
216 if (media_stream_manager_->audio_input_device_manager()-> | 217 if (media_stream_manager_->audio_input_device_manager()-> |
217 ShouldUseFakeDevice()) { | 218 ShouldUseFakeDevice()) { |
218 audio_params.Reset(media::AudioParameters::AUDIO_FAKE, | 219 audio_params.Reset(media::AudioParameters::AUDIO_FAKE, |
219 params.channel_layout(), params.sample_rate(), | 220 params.channel_layout(), params.sample_rate(), |
220 params.bits_per_sample(), params.frames_per_buffer()); | 221 params.bits_per_sample(), params.frames_per_buffer()); |
| 222 } else if (WebContentsCaptureUtil::IsWebContentsDeviceId(device_id)) { |
| 223 audio_params.Reset(media::AudioParameters::AUDIO_MIRROR_BROWSER, |
| 224 params.channel_layout(), params.sample_rate(), |
| 225 params.bits_per_sample(), params.frames_per_buffer()); |
221 } | 226 } |
222 | 227 |
223 DCHECK_GT(audio_params.frames_per_buffer(), 0); | 228 DCHECK_GT(audio_params.frames_per_buffer(), 0); |
224 uint32 buffer_size = audio_params.GetBytesPerBuffer(); | 229 uint32 buffer_size = audio_params.GetBytesPerBuffer(); |
225 | 230 |
226 // Create a new AudioEntry structure. | 231 // Create a new AudioEntry structure. |
227 scoped_ptr<AudioEntry> entry(new AudioEntry()); | 232 scoped_ptr<AudioEntry> entry(new AudioEntry()); |
228 | 233 |
229 uint32 mem_size = sizeof(media::AudioInputBufferParameters) + buffer_size; | 234 uint32 mem_size = sizeof(media::AudioInputBufferParameters) + buffer_size; |
230 | 235 |
(...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
431 for (SessionEntryMap::iterator it = session_entries_.begin(); | 436 for (SessionEntryMap::iterator it = session_entries_.begin(); |
432 it != session_entries_.end(); ++it) { | 437 it != session_entries_.end(); ++it) { |
433 if (stream_id == it->second) { | 438 if (stream_id == it->second) { |
434 return it->first; | 439 return it->first; |
435 } | 440 } |
436 } | 441 } |
437 return 0; | 442 return 0; |
438 } | 443 } |
439 | 444 |
440 } // namespace content | 445 } // namespace content |
OLD | NEW |