summaryrefslogtreecommitdiffstats
path: root/webkit/media
diff options
context:
space:
mode:
authorscherkus@chromium.org <scherkus@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-01-13 03:49:25 +0000
committerscherkus@chromium.org <scherkus@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-01-13 03:49:25 +0000
commitda952fdc5f0de04fba3add0bd90a9c7ca7c02afb (patch)
treec0eb59700cc8f45633ca971c824177ea17f5e466 /webkit/media
parent9a142c10e11ffcb972b3ec969c8d2b95939cfb02 (diff)
downloadchromium_src-da952fdc5f0de04fba3add0bd90a9c7ca7c02afb.zip
chromium_src-da952fdc5f0de04fba3add0bd90a9c7ca7c02afb.tar.gz
chromium_src-da952fdc5f0de04fba3add0bd90a9c7ca7c02afb.tar.bz2
Fold WebMediaPlayerImpl::Initialize() into the constructor.
OverrideCreateWebMediaPlayer() was simplified to return a pointer instead of relying on a bool+out-param since unlike OverrideCreatePlugin() we don't require blocking creation of media players. BUG=109958 Review URL: http://codereview.chromium.org/9187045 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@117607 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit/media')
-rw-r--r--webkit/media/webmediaplayer_impl.cc47
-rw-r--r--webkit/media/webmediaplayer_impl.h10
2 files changed, 19 insertions, 38 deletions
diff --git a/webkit/media/webmediaplayer_impl.cc b/webkit/media/webmediaplayer_impl.cc
index 4a24a61..d441e61 100644
--- a/webkit/media/webmediaplayer_impl.cc
+++ b/webkit/media/webmediaplayer_impl.cc
@@ -99,6 +99,7 @@ base::TimeDelta ConvertSecondsToTimestamp(float seconds) {
namespace webkit_media {
WebMediaPlayerImpl::WebMediaPlayerImpl(
+ WebKit::WebFrame* frame,
WebKit::WebMediaPlayerClient* client,
base::WeakPtr<WebMediaPlayerDelegate> delegate,
media::FilterCollection* collection,
@@ -108,9 +109,8 @@ WebMediaPlayerImpl::WebMediaPlayerImpl(
media::MediaLog* media_log)
: network_state_(WebKit::WebMediaPlayer::Empty),
ready_state_(WebKit::WebMediaPlayer::HaveNothing),
- main_loop_(NULL),
+ main_loop_(MessageLoop::current()),
filter_collection_(collection),
- pipeline_(NULL),
message_loop_factory_(message_loop_factory),
paused_(true),
seeking_(false),
@@ -118,48 +118,46 @@ WebMediaPlayerImpl::WebMediaPlayerImpl(
pending_seek_(false),
pending_seek_seconds_(0.0f),
client_(client),
- proxy_(NULL),
+ proxy_(new WebMediaPlayerProxy(main_loop_, this)),
delegate_(delegate),
media_stream_client_(media_stream_client),
media_log_(media_log),
is_accelerated_compositing_active_(false),
incremented_externally_allocated_memory_(false),
audio_source_provider_(audio_source_provider) {
- // Saves the current message loop.
- DCHECK(!main_loop_);
- main_loop_ = MessageLoop::current();
media_log_->AddEvent(
media_log_->CreateEvent(media::MediaLogEvent::WEBMEDIAPLAYER_CREATED));
-}
-void WebMediaPlayerImpl::Initialize(WebKit::WebFrame* frame) {
- DCHECK_EQ(main_loop_, MessageLoop::current());
MessageLoop* pipeline_message_loop =
message_loop_factory_->GetMessageLoop("PipelineThread");
CHECK(pipeline_message_loop) << "Failed to create a new thread";
+ pipeline_ = new media::PipelineImpl(pipeline_message_loop, media_log_);
+ pipeline_->Init(
+ base::Bind(&WebMediaPlayerProxy::PipelineEndedCallback,
+ proxy_.get()),
+ base::Bind(&WebMediaPlayerProxy::PipelineErrorCallback,
+ proxy_.get()),
+ base::Bind(&WebMediaPlayerProxy::NetworkEventCallback,
+ proxy_.get()));
// Let V8 know we started new thread if we did not did 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.
+ //
// TODO(enal): remove when we get rid of per-audio-stream thread.
- if (!incremented_externally_allocated_memory_) {
- MessageLoop::current()->PostTask(
- FROM_HERE,
- base::Bind(&WebMediaPlayerImpl::IncrementExternallyAllocatedMemory,
- AsWeakPtr()));
- }
+ MessageLoop::current()->PostTask(
+ FROM_HERE,
+ base::Bind(&WebMediaPlayerImpl::IncrementExternallyAllocatedMemory,
+ AsWeakPtr()));
is_accelerated_compositing_active_ =
frame->view()->isAcceleratedCompositingActive();
- pipeline_ = new media::PipelineImpl(pipeline_message_loop, media_log_);
-
// Also we want to be notified of |main_loop_| destruction.
main_loop_->AddDestructionObserver(this);
- // Create proxy and default video renderer.
- proxy_ = new WebMediaPlayerProxy(main_loop_, this);
+ // Create default video renderer.
scoped_refptr<VideoRendererImpl> video_renderer =
new VideoRendererImpl(
base::Bind(&WebMediaPlayerProxy::Repaint, proxy_.get()),
@@ -167,15 +165,6 @@ void WebMediaPlayerImpl::Initialize(WebKit::WebFrame* frame) {
filter_collection_->AddVideoRenderer(video_renderer);
proxy_->SetVideoRenderer(video_renderer);
- // Set our pipeline callbacks.
- pipeline_->Init(
- base::Bind(&WebMediaPlayerProxy::PipelineEndedCallback,
- proxy_.get()),
- base::Bind(&WebMediaPlayerProxy::PipelineErrorCallback,
- proxy_.get()),
- base::Bind(&WebMediaPlayerProxy::NetworkEventCallback,
- proxy_.get()));
-
// A simple data source that keeps all data in memory.
scoped_ptr<media::DataSourceFactory> simple_data_source_factory(
SimpleDataSource::CreateFactory(MessageLoop::current(), frame,
@@ -198,7 +187,6 @@ void WebMediaPlayerImpl::Initialize(WebKit::WebFrame* frame) {
data_source_factory.release()), pipeline_message_loop));
std::string source_url = GetClient()->sourceURL().spec();
-
if (!source_url.empty()) {
demuxer_factory.reset(
new media::ChunkDemuxerFactory(source_url,
@@ -265,7 +253,6 @@ URLSchemeForHistogram URLScheme(const GURL& url) {
void WebMediaPlayerImpl::load(const WebKit::WebURL& url) {
DCHECK_EQ(main_loop_, MessageLoop::current());
- DCHECK(proxy_);
UMA_HISTOGRAM_ENUMERATION("Media.URLScheme", URLScheme(url), kMaxURLScheme);
diff --git a/webkit/media/webmediaplayer_impl.h b/webkit/media/webmediaplayer_impl.h
index 1e14a5c..661d7d5 100644
--- a/webkit/media/webmediaplayer_impl.h
+++ b/webkit/media/webmediaplayer_impl.h
@@ -99,9 +99,8 @@ class WebMediaPlayerImpl
// audio data is discarded and media plays back based on wall clock time.
//
// This object takes ownership of the |audio_source_provider|.
- //
- // Callers must call |Initialize()| before they can use the object.
- WebMediaPlayerImpl(WebKit::WebMediaPlayerClient* client,
+ WebMediaPlayerImpl(WebKit::WebFrame* frame,
+ WebKit::WebMediaPlayerClient* client,
base::WeakPtr<WebMediaPlayerDelegate> delegate,
media::FilterCollection* collection,
WebKit::WebAudioSourceProvider* audio_source_provider,
@@ -110,11 +109,6 @@ class WebMediaPlayerImpl
media::MediaLog* media_log);
virtual ~WebMediaPlayerImpl();
- // Finalizes initialization of the object using the given WebFrame.
- //
- // TODO(scherkus): fold this into the constructor http://crbug.com/109958
- void Initialize(WebKit::WebFrame* frame);
-
virtual void load(const WebKit::WebURL& url);
virtual void cancelLoad();