Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4090)

Unified Diff: chrome/renderer/render_view.cc

Issue 20410: Audio related IPC messages and handlers from browser to renderer (Closed)
Patch Set: cleanup Created 11 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/renderer/render_view.h ('k') | media/audio/audio_output.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/renderer/render_view.cc
diff --git a/chrome/renderer/render_view.cc b/chrome/renderer/render_view.cc
index 4fa5bdf89fd85de3e59e3e3fdfe29fc12b325ca6..4c38d920d0be4d0e8484e039f5693bdfc4d9bbf8 100644
--- a/chrome/renderer/render_view.cc
+++ b/chrome/renderer/render_view.cc
@@ -26,6 +26,7 @@
#include "chrome/renderer/about_handler.h"
#include "chrome/renderer/debug_message_handler.h"
#include "chrome/renderer/localized_error.h"
+#include "chrome/renderer/media/audio_renderer_impl.h"
#include "chrome/renderer/render_process.h"
#include "chrome/renderer/user_script_slave.h"
#include "chrome/renderer/visitedlink_slave.h"
@@ -408,6 +409,11 @@ void RenderView::OnMessageReceived(const IPC::Message& message) {
OnReceivedAutofillSuggestions)
IPC_MESSAGE_HANDLER(ViewMsg_PopupNotificationVisiblityChanged,
OnPopupNotificationVisiblityChanged)
+ IPC_MESSAGE_HANDLER(ViewMsg_RequestAudioPacket, OnRequestAudioPacket)
+ IPC_MESSAGE_HANDLER(ViewMsg_NotifyAudioStreamCreated, OnAudioStreamCreated)
+ IPC_MESSAGE_HANDLER(ViewMsg_NotifyAudioStreamStateChanged,
+ OnAudioStreamStateChanged)
+ IPC_MESSAGE_HANDLER(ViewMsg_NotifyAudioStreamVolume, OnAudioStreamVolume)
// Have the super handle all other messages.
IPC_MESSAGE_UNHANDLED(RenderWidget::OnMessageReceived(message))
@@ -2863,3 +2869,94 @@ MessageLoop* RenderView::GetMessageLoopForIO() {
return g_render_thread->owner_loop();
return NULL;
}
+
+void RenderView::OnRequestAudioPacket(int stream_id) {
+ AudioRendererImpl* audio_renderer = audio_renderers_.Lookup(stream_id);
+ if (!audio_renderer){
+ NOTREACHED();
+ return;
+ }
+ audio_renderer->OnRequestPacket();
+}
+
+void RenderView::OnAudioStreamCreated(
+ int stream_id, base::SharedMemoryHandle handle, int length) {
+ AudioRendererImpl* audio_renderer = audio_renderers_.Lookup(stream_id);
+ if (!audio_renderer){
+ NOTREACHED();
+ return;
+ }
+ audio_renderer->OnCreated(handle, length);
+}
+
+void RenderView::OnAudioStreamStateChanged(
+ int stream_id, AudioOutputStream::State state, int info) {
+ AudioRendererImpl* audio_renderer = audio_renderers_.Lookup(stream_id);
+ if (!audio_renderer){
+ NOTREACHED();
+ return;
+ }
+ audio_renderer->OnStateChanged(state, info);
+}
+
+void RenderView::OnAudioStreamVolume(int stream_id, double left, double right) {
+ AudioRendererImpl* audio_renderer = audio_renderers_.Lookup(stream_id);
+ if (!audio_renderer){
+ NOTREACHED();
+ return;
+ }
+ audio_renderer->OnVolume(left, right);
+}
+
+int32 RenderView::CreateAudioStream(AudioRendererImpl* audio_renderer,
+ AudioManager::Format format, int channels,
+ int sample_rate, int bits_per_sample,
+ size_t packet_size) {
+ // TODO(hclam): make sure this method is called on render thread.
+ // Loop through the map and make sure there's no renderer already in the map.
+ for (IDMap<AudioRendererImpl>::const_iterator iter = audio_renderers_.begin();
+ iter != audio_renderers_.end(); ++iter) {
+ DCHECK(iter->second != audio_renderer);
+ }
+
+ // Add to map and send the IPC to browser process.
+ int32 stream_id = audio_renderers_.Add(audio_renderer);
+ ViewHostMsg_Audio_CreateStream params;
+ params.format = format;
+ params.channels = channels;
+ params.sample_rate = sample_rate;
+ params.bits_per_sample = bits_per_sample;
+ params.packet_size = packet_size;
+ Send(new ViewHostMsg_CreateAudioStream(routing_id_, stream_id, params));
+ return stream_id;
+}
+
+void RenderView::StartAudioStream(int stream_id) {
+ // TODO(hclam): make sure this method is called on render thread.
+ DCHECK(audio_renderers_.Lookup(stream_id) != NULL);
+ Send(new ViewHostMsg_StartAudioStream(routing_id_, stream_id));
+}
+
+void RenderView::CloseAudioStream(int stream_id) {
+ // TODO(hclam): make sure this method is called on render thread.
+ DCHECK(audio_renderers_.Lookup(stream_id) != NULL);
+ Send(new ViewHostMsg_CloseAudioStream(routing_id_, stream_id));
+}
+
+void RenderView::NotifyAudioPacketReady(int stream_id) {
+ // TODO(hclam): make sure this method is called on render thread.
+ DCHECK(audio_renderers_.Lookup(stream_id) != NULL);
+ Send(new ViewHostMsg_NotifyAudioPacketReady(routing_id_, stream_id));
+}
+
+void RenderView::GetAudioVolume(int stream_id) {
+ // TODO(hclam): make sure this method is called on render thread.
+ DCHECK(audio_renderers_.Lookup(stream_id) != NULL);
+ Send(new ViewHostMsg_GetAudioVolume(routing_id_, stream_id));
+}
+
+void RenderView::SetAudioVolume(int stream_id, double left, double right) {
+ // TODO(hclam): make sure this method is called on render thread.
+ DCHECK(audio_renderers_.Lookup(stream_id) != NULL);
+ Send(new ViewHostMsg_SetAudioVolume(routing_id_, stream_id, left, right));
+}
« no previous file with comments | « chrome/renderer/render_view.h ('k') | media/audio/audio_output.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698