| 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..a144ebca390b906132d03edfe900f212f98c80e6 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,58 @@ 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. See http://crbug.com/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;
|
| + break;
|
| + }
|
| +
|
| + 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_;
|
| }
|
|
|