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

Unified Diff: webkit/media/webmediaplayer_impl.cc

Issue 11468033: Vanquish the remnants of media::MessageLoopFactory. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: constref Created 8 years 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: webkit/media/webmediaplayer_impl.cc
diff --git a/webkit/media/webmediaplayer_impl.cc b/webkit/media/webmediaplayer_impl.cc
index 0bc5aa497f5afcbec0611921c94bfbf1a51ca68a..fdadcebedef8ef660313e230b3c5eb4ace98189e 100644
--- a/webkit/media/webmediaplayer_impl.cc
+++ b/webkit/media/webmediaplayer_impl.cc
@@ -35,6 +35,7 @@
#include "webkit/media/buffered_data_source.h"
#include "webkit/media/filter_helpers.h"
#include "webkit/media/webmediaplayer_delegate.h"
+#include "webkit/media/webmediaplayer_params.h"
#include "webkit/media/webmediaplayer_proxy.h"
#include "webkit/media/webmediaplayer_util.h"
#include "webkit/media/webvideoframe_impl.h"
@@ -127,18 +128,13 @@ WebMediaPlayerImpl::WebMediaPlayerImpl(
WebKit::WebFrame* frame,
WebKit::WebMediaPlayerClient* client,
base::WeakPtr<WebMediaPlayerDelegate> delegate,
- media::FilterCollection* collection,
- WebKit::WebAudioSourceProvider* audio_source_provider,
- media::AudioRendererSink* audio_renderer_sink,
- media::MessageLoopFactory* message_loop_factory,
- MediaStreamClient* media_stream_client,
- media::MediaLog* media_log)
+ const WebMediaPlayerParams& params)
: frame_(frame),
network_state_(WebMediaPlayer::NetworkStateEmpty),
ready_state_(WebMediaPlayer::ReadyStateHaveNothing),
main_loop_(MessageLoop::current()),
- filter_collection_(collection),
- message_loop_factory_(message_loop_factory),
+ filter_collection_(new media::FilterCollection()),
+ media_thread_("MediaPipeline"),
paused_(true),
seeking_(false),
playback_rate_(0.0f),
@@ -147,22 +143,20 @@ WebMediaPlayerImpl::WebMediaPlayerImpl(
client_(client),
proxy_(new WebMediaPlayerProxy(main_loop_->message_loop_proxy(), this)),
delegate_(delegate),
- media_stream_client_(media_stream_client),
- media_log_(media_log),
+ media_stream_client_(params.media_stream_client()),
+ media_log_(params.media_log()),
accelerated_compositing_reported_(false),
incremented_externally_allocated_memory_(false),
- audio_source_provider_(audio_source_provider),
- audio_renderer_sink_(audio_renderer_sink),
+ audio_source_provider_(params.audio_source_provider()),
is_local_source_(false),
supports_save_(true),
starting_(false) {
media_log_->AddEvent(
media_log_->CreateEvent(media::MediaLogEvent::WEBMEDIAPLAYER_CREATED));
- scoped_refptr<base::MessageLoopProxy> pipeline_message_loop =
- message_loop_factory_->GetMessageLoop(
- media::MessageLoopFactory::kPipeline);
- pipeline_ = new media::Pipeline(pipeline_message_loop, media_log_);
+ CHECK(media_thread_.Start());
+ pipeline_ = new media::Pipeline(
+ media_thread_.message_loop_proxy(), media_log_);
// Let V8 know we started new thread if we did not did it yet.
acolwell GONE FROM CHROMIUM 2012/12/26 17:47:51 nit: s/did not did/did not do
scherkus (not reviewing) 2013/01/02 17:01:48 Done.
// Made separate task to avoid deletion of player currently being created.
@@ -185,10 +179,18 @@ WebMediaPlayerImpl::WebMediaPlayerImpl(
base::Unretained(decryptor_.get()));
}
+ // Create the GPU video decoder if factories were provided.
+ if (params.gpu_factories()) {
+ filter_collection_->GetVideoDecoders()->push_back(
+ new media::GpuVideoDecoder(
+ media_thread_.message_loop_proxy(),
+ params.gpu_factories()));
+ }
+
// Create default video renderer.
scoped_refptr<media::VideoRendererBase> video_renderer =
new media::VideoRendererBase(
- pipeline_message_loop,
+ media_thread_.message_loop_proxy(),
set_decryptor_ready_cb,
base::Bind(&WebMediaPlayerProxy::Repaint, proxy_),
BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::SetOpaque),
@@ -197,6 +199,8 @@ WebMediaPlayerImpl::WebMediaPlayerImpl(
proxy_->set_frame_provider(video_renderer);
// Create default audio renderer using the null sink if no sink was provided.
+ scoped_refptr<media::AudioRendererSink> audio_renderer_sink =
+ params.audio_renderer_sink();
if (!audio_renderer_sink)
audio_renderer_sink = new media::NullAudioSink();
@@ -268,13 +272,9 @@ void WebMediaPlayerImpl::load(const WebKit::WebURL& url, CORSMode cors_mode) {
SetReadyState(WebMediaPlayer::ReadyStateHaveNothing);
media_log_->AddEvent(media_log_->CreateLoadEvent(url.spec()));
- scoped_refptr<base::MessageLoopProxy> message_loop =
- message_loop_factory_->GetMessageLoop(
- media::MessageLoopFactory::kPipeline);
-
// Media streams pipelines can start immediately.
if (BuildMediaStreamCollection(url, media_stream_client_,
- message_loop,
+ media_thread_.message_loop_proxy(),
filter_collection_.get())) {
supports_save_ = false;
StartPipeline();
@@ -289,7 +289,7 @@ void WebMediaPlayerImpl::load(const WebKit::WebURL& url, CORSMode cors_mode) {
base::Bind(&LogMediaSourceError, media_log_));
BuildMediaSourceCollection(chunk_demuxer_,
- message_loop,
+ media_thread_.message_loop_proxy(),
filter_collection_.get());
supports_save_ = false;
StartPipeline();
@@ -310,7 +310,7 @@ void WebMediaPlayerImpl::load(const WebKit::WebURL& url, CORSMode cors_mode) {
is_local_source_ = !gurl.SchemeIs("http") && !gurl.SchemeIs("https");
BuildDefaultCollection(proxy_->data_source(),
- message_loop,
+ media_thread_.message_loop_proxy(),
filter_collection_.get());
}
@@ -1191,7 +1191,7 @@ void WebMediaPlayerImpl::Destroy() {
incremented_externally_allocated_memory_ = false;
}
- message_loop_factory_.reset();
+ media_thread_.Stop();
// And then detach the proxy, it may live on the render thread for a little
// longer until all the tasks are finished.

Powered by Google App Engine
This is Rietveld 408576698