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

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: fix comment Created 7 years, 12 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 | « webkit/media/webmediaplayer_impl.h ('k') | webkit/media/webmediaplayer_params.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webkit/media/webmediaplayer_impl.cc
diff --git a/webkit/media/webmediaplayer_impl.cc b/webkit/media/webmediaplayer_impl.cc
index 23b7f426b5f282dc9c05ea22f53f6f29452968f1..a17cd0f6201b2b30c1a6276036f245ae06269303 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"
@@ -120,18 +121,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),
@@ -140,24 +136,22 @@ 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.
+ // Let V8 know we started new thread if we did not do it yet.
// Made separate task to avoid deletion of player currently being created.
// Also, delaying GC until after player starts gets rid of starting lag --
// collection happens in parallel with playing.
@@ -184,10 +178,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),
@@ -196,6 +198,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();
@@ -267,13 +271,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();
@@ -288,7 +288,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();
@@ -309,7 +309,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());
}
@@ -1194,7 +1194,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.
« no previous file with comments | « webkit/media/webmediaplayer_impl.h ('k') | webkit/media/webmediaplayer_params.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698