diff options
author | scherkus@chromium.org <scherkus@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-01-13 03:49:25 +0000 |
---|---|---|
committer | scherkus@chromium.org <scherkus@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-01-13 03:49:25 +0000 |
commit | da952fdc5f0de04fba3add0bd90a9c7ca7c02afb (patch) | |
tree | c0eb59700cc8f45633ca971c824177ea17f5e466 /webkit/media | |
parent | 9a142c10e11ffcb972b3ec969c8d2b95939cfb02 (diff) | |
download | chromium_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.cc | 47 | ||||
-rw-r--r-- | webkit/media/webmediaplayer_impl.h | 10 |
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(); |