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

Unified Diff: content/renderer/media/audio_renderer_impl.cc

Issue 7157001: Implements AudioMessageFilter as member in RenderThread (Closed) Base URL: http://src.chromium.org/svn/trunk/src/
Patch Set: '' Created 9 years, 6 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
Index: content/renderer/media/audio_renderer_impl.cc
===================================================================
--- content/renderer/media/audio_renderer_impl.cc (revision 89645)
+++ content/renderer/media/audio_renderer_impl.cc (working copy)
@@ -24,18 +24,25 @@
} // namespace
-AudioRendererImpl::AudioRendererImpl(AudioMessageFilter* filter)
+AudioRendererImpl::AudioRendererImpl(int routing_id)
: AudioRendererBase(),
bytes_per_second_(0),
- filter_(filter),
stream_id_(0),
shared_memory_(NULL),
shared_memory_size_(0),
- io_loop_(filter->message_loop()),
stopped_(false),
pending_request_(false),
prerolling_(false),
preroll_bytes_(0) {
+ AudioMessageFilter* audio_message_filter = AudioMessageFilter::GetInstance();
+ DCHECK(audio_message_filter);
+ if (!audio_message_filter->RoutingIDHasBeenSet()) {
+ // Ensure that first user sets a valid routing ID.
+ // This routing ID will remain during the lifetime of the audio message
+ // filter (which is a singleton).
+ audio_message_filter->SetRoutingID(routing_id);
+ }
+ io_loop_ = audio_message_filter->message_loop();
DCHECK(io_loop_);
}
@@ -240,35 +247,34 @@
// Make sure we don't call create more than once.
DCHECK_EQ(0, stream_id_);
- stream_id_ = filter_->AddDelegate(this);
+ stream_id_ = AudioMessageFilter::GetInstance()->AddDelegate(this);
io_loop_->AddDestructionObserver(this);
AudioParameters params_to_send(audio_params);
// Let the browser choose packet size.
params_to_send.samples_per_packet = 0;
- filter_->Send(new AudioHostMsg_CreateStream(
- 0, stream_id_, params_to_send, false));
+ Send(new AudioHostMsg_CreateStream(0, stream_id_, params_to_send, false));
}
void AudioRendererImpl::PlayTask() {
DCHECK(MessageLoop::current() == io_loop_);
- filter_->Send(new AudioHostMsg_PlayStream(0, stream_id_));
+ Send(new AudioHostMsg_PlayStream(0, stream_id_));
}
void AudioRendererImpl::PauseTask() {
DCHECK(MessageLoop::current() == io_loop_);
- filter_->Send(new AudioHostMsg_PauseStream(0, stream_id_));
+ Send(new AudioHostMsg_PauseStream(0, stream_id_));
}
void AudioRendererImpl::SeekTask() {
DCHECK(MessageLoop::current() == io_loop_);
// We have to pause the audio stream before we can flush.
- filter_->Send(new AudioHostMsg_PauseStream(0, stream_id_));
- filter_->Send(new AudioHostMsg_FlushStream(0, stream_id_));
+ Send(new AudioHostMsg_PauseStream(0, stream_id_));
+ Send(new AudioHostMsg_FlushStream(0, stream_id_));
}
void AudioRendererImpl::DestroyTask() {
@@ -276,8 +282,8 @@
// Make sure we don't call destroy more than once.
DCHECK_NE(0, stream_id_);
- filter_->RemoveDelegate(stream_id_);
- filter_->Send(new AudioHostMsg_CloseStream(0, stream_id_));
+ AudioMessageFilter::GetInstance()->RemoveDelegate(stream_id_);
+ Send(new AudioHostMsg_CloseStream(0, stream_id_));
io_loop_->RemoveDestructionObserver(this);
stream_id_ = 0;
}
@@ -288,7 +294,7 @@
base::AutoLock auto_lock(lock_);
if (stopped_)
return;
- filter_->Send(new AudioHostMsg_SetVolume(0, stream_id_, volume));
+ Send(new AudioHostMsg_SetVolume(0, stream_id_, volume));
}
void AudioRendererImpl::NotifyPacketReadyTask() {
@@ -331,7 +337,7 @@
request_buffers_state_.pending_bytes == 0);
pending_request_ = false;
// Then tell browser process we are done filling into the buffer.
- filter_->Send(new AudioHostMsg_NotifyPacketReady(0, stream_id_, filled));
+ Send(new AudioHostMsg_NotifyPacketReady(0, stream_id_, filled));
}
}
@@ -346,3 +352,8 @@
stopped_ = true;
DestroyTask();
}
+
+void AudioRendererImpl::Send(IPC::Message* message) {
+ DCHECK(MessageLoop::current() == io_loop_);
+ AudioMessageFilter::GetInstance()->Send(message);
+}

Powered by Google App Engine
This is Rietveld 408576698