Chromium Code Reviews| Index: content/renderer/render_view_impl.cc |
| diff --git a/content/renderer/render_view_impl.cc b/content/renderer/render_view_impl.cc |
| index de604b1ed103c79b921a8d9be6106a154c4bd72f..651fe666f84ba9f037516627ab5bb04554a81e1f 100644 |
| --- a/content/renderer/render_view_impl.cc |
| +++ b/content/renderer/render_view_impl.cc |
| @@ -76,6 +76,7 @@ |
| #include "content/renderer/media/render_audiosourceprovider.h" |
| #include "content/renderer/media/render_media_log.h" |
| #include "content/renderer/media/renderer_gpu_video_decoder_factories.h" |
| +#include "content/renderer/media/renderer_webaudiodevice_impl.h" |
| #include "content/renderer/mhtml_generator.h" |
| #include "content/renderer/notification_provider.h" |
| #include "content/renderer/p2p/socket_dispatcher.h" |
| @@ -2366,7 +2367,7 @@ WebMediaPlayer* RenderViewImpl::createMediaPlayer( |
| if (!cmd_line->HasSwitch(switches::kDisableAudio)) { |
| // audio_source_provider is a "provider" to WebKit, and a sink |
| // from the perspective of the audio renderer. |
| - audio_source_provider = new RenderAudioSourceProvider(); |
| + audio_source_provider = new RenderAudioSourceProvider(routing_id_); |
| // Add the chrome specific audio renderer, using audio_source_provider |
| // as the sink. |
| @@ -2426,6 +2427,57 @@ WebApplicationCacheHost* RenderViewImpl::createApplicationCacheHost( |
| RenderThreadImpl::current()->appcache_dispatcher()->backend_proxy()); |
| } |
| + |
| +WebKit::WebAudioDevice* |
| +RenderViewImpl::createAudioDevice( |
| + size_t bufferSize, |
| + unsigned numberOfChannels, |
| + double sampleRate, |
| + WebKit::WebAudioDevice::RenderCallback* callback) { |
| + ChannelLayout layout = CHANNEL_LAYOUT_UNSUPPORTED; |
| + |
| + // The |numberOfChannels| does not exactly identify the channel layout of the |
| + // device. The switch statement below assigns a best guess to the channel |
| + // layout based on number of channels. |
| + // TODO(crogers): WebKit should give the channel layout instead of the hard |
| + // channel count. |
|
tommi (sloooow) - chröme
2012/07/31 10:52:41
file a bug?
sail
2012/07/31 22:02:08
Done.
Filed bug 139882
|
| + switch (numberOfChannels) { |
| + case 1: |
| + layout = CHANNEL_LAYOUT_MONO; |
| + break; |
| + case 2: |
| + layout = CHANNEL_LAYOUT_STEREO; |
| + break; |
| + case 3: |
| + layout = CHANNEL_LAYOUT_2_1; |
| + break; |
| + case 4: |
| + layout = CHANNEL_LAYOUT_4_0; |
| + break; |
| + case 5: |
| + layout = CHANNEL_LAYOUT_5_0; |
| + break; |
| + case 6: |
| + layout = CHANNEL_LAYOUT_5_1; |
| + break; |
| + case 7: |
| + layout = CHANNEL_LAYOUT_7_0; |
| + break; |
| + case 8: |
| + layout = CHANNEL_LAYOUT_7_1; |
| + break; |
| + default: |
| + layout = CHANNEL_LAYOUT_STEREO; |
|
tommi (sloooow) - chröme
2012/07/31 10:52:41
add break;
sail
2012/07/31 22:02:08
Done.
|
| + } |
| + |
| + media::AudioParameters params( |
| + media::AudioParameters::AUDIO_PCM_LOW_LATENCY, layout, |
| + static_cast<int>(sampleRate), 16, bufferSize); |
| + |
| + return new RendererWebAudioDeviceImpl( |
| + routing_id_, params, callback); |
| +} |
| + |
| WebCookieJar* RenderViewImpl::cookieJar(WebFrame* frame) { |
| return &cookie_jar_; |
| } |