Index: content/browser/renderer_host/render_message_filter.cc |
diff --git a/content/browser/renderer_host/render_message_filter.cc b/content/browser/renderer_host/render_message_filter.cc |
index 8e2f45aeddadd5c47fff03b228bc4324e7729ad2..6d7323f404187921aafe091fcbcd63f63972a679 100644 |
--- a/content/browser/renderer_host/render_message_filter.cc |
+++ b/content/browser/renderer_host/render_message_filter.cc |
@@ -83,6 +83,9 @@ |
#include "content/browser/renderer_host/backing_store_win.h" |
#include "content/common/font_cache_dispatcher_win.h" |
#endif |
+#if defined(OS_ANDROID) |
+#include "media/base/android/webaudio_media_codec_bridge.h" |
+#endif |
using net::CookieStore; |
@@ -414,6 +417,9 @@ bool RenderMessageFilter::OnMessageReceived(const IPC::Message& message, |
IPC_MESSAGE_HANDLER(ViewHostMsg_MediaLogEvent, OnMediaLogEvent) |
IPC_MESSAGE_HANDLER(ViewHostMsg_Are3DAPIsBlocked, OnAre3DAPIsBlocked) |
IPC_MESSAGE_HANDLER(ViewHostMsg_DidLose3DContext, OnDidLose3DContext) |
+#if defined(OS_ANDROID) |
+ IPC_MESSAGE_HANDLER(ViewHostMsg_WebAudioMediaCodec, OnWebAudioMediaCodec) |
+#endif |
IPC_MESSAGE_UNHANDLED(handled = false) |
IPC_END_MESSAGE_MAP_EX() |
@@ -1144,4 +1150,18 @@ void RenderMessageFilter::OnPreCacheFontCharacters(const LOGFONT& font, |
} |
#endif |
+#if defined(OS_ANDROID) |
+void RenderMessageFilter::OnWebAudioMediaCodec( |
+ base::SharedMemoryHandle input_fd, |
+ base::FileDescriptor handle) { |
+ // Let a WorkerPool handle this request since the WebAudio |
+ // MediaCodec bridge is slow and can block while sending the data to |
+ // the renderer. |
+ base::WorkerPool::PostTask( |
+ FROM_HERE, |
+ base::Bind(&media::WebAudioMediaCodecBridge::RunWebAudioMediaCodec, |
+ input_fd, handle), |
+ true); |
+} |
+#endif |
} // namespace content |