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

Unified Diff: webkit/glue/webmediaplayer_impl.cc

Issue 7493030: Split WebMediaPlayerImpl::Proxy into its own class. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src
Patch Set: fixes Created 9 years, 4 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/glue/webmediaplayer_impl.h ('k') | webkit/glue/webmediaplayer_proxy.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webkit/glue/webmediaplayer_impl.cc
diff --git a/webkit/glue/webmediaplayer_impl.cc b/webkit/glue/webmediaplayer_impl.cc
index 30af6d66abd306a12c7f529665af0dd7ea616de3..5d307f9ea59da7c29718030a45555a222f97f348 100644
--- a/webkit/glue/webmediaplayer_impl.cc
+++ b/webkit/glue/webmediaplayer_impl.cc
@@ -31,6 +31,7 @@
#include "webkit/glue/media/media_stream_client.h"
#include "webkit/glue/media/video_renderer_impl.h"
#include "webkit/glue/media/web_video_renderer.h"
+#include "webkit/glue/webmediaplayer_proxy.h"
#include "webkit/glue/webvideoframe_impl.h"
using WebKit::WebCanvas;
@@ -40,11 +41,6 @@ using media::PipelineStatus;
namespace {
-// Limits the maximum outstanding repaints posted on render thread.
-// This number of 50 is a guess, it does not take too much memory on the task
-// queue but gives up a pretty good latency on repaint.
-const int kMaxOutstandingRepaints = 50;
-
// Limits the range of playback rate.
//
// TODO(kylep): Revisit these.
@@ -87,235 +83,6 @@ base::TimeDelta ConvertSecondsToTimestamp(float seconds) {
namespace webkit_glue {
-/////////////////////////////////////////////////////////////////////////////
-// WebMediaPlayerImpl::Proxy implementation
-
-WebMediaPlayerImpl::Proxy::Proxy(MessageLoop* render_loop,
- WebMediaPlayerImpl* webmediaplayer)
- : render_loop_(render_loop),
- webmediaplayer_(webmediaplayer),
- outstanding_repaints_(0) {
- DCHECK(render_loop_);
- DCHECK(webmediaplayer_);
-}
-
-WebMediaPlayerImpl::Proxy::~Proxy() {
- Detach();
-}
-
-void WebMediaPlayerImpl::Proxy::Repaint() {
- base::AutoLock auto_lock(lock_);
- if (outstanding_repaints_ < kMaxOutstandingRepaints) {
- ++outstanding_repaints_;
-
- render_loop_->PostTask(FROM_HERE,
- NewRunnableMethod(this, &WebMediaPlayerImpl::Proxy::RepaintTask));
- }
-}
-
-void WebMediaPlayerImpl::Proxy::SetVideoRenderer(
- scoped_refptr<WebVideoRenderer> video_renderer) {
- video_renderer_ = video_renderer;
-}
-
-WebDataSourceBuildObserverHack* WebMediaPlayerImpl::Proxy::GetBuildObserver() {
- if (!build_observer_.get())
- build_observer_.reset(NewCallback(this, &Proxy::AddDataSource));
- return build_observer_.get();
-}
-
-void WebMediaPlayerImpl::Proxy::Paint(SkCanvas* canvas,
- const gfx::Rect& dest_rect) {
- DCHECK(MessageLoop::current() == render_loop_);
- if (video_renderer_) {
- video_renderer_->Paint(canvas, dest_rect);
- }
-}
-
-void WebMediaPlayerImpl::Proxy::SetSize(const gfx::Rect& rect) {
- DCHECK(MessageLoop::current() == render_loop_);
- if (video_renderer_) {
- video_renderer_->SetRect(rect);
- }
-}
-
-bool WebMediaPlayerImpl::Proxy::HasSingleOrigin() {
- DCHECK(MessageLoop::current() == render_loop_);
-
- base::AutoLock auto_lock(data_sources_lock_);
-
- for (DataSourceList::iterator itr = data_sources_.begin();
- itr != data_sources_.end();
- itr++) {
- if (!(*itr)->HasSingleOrigin())
- return false;
- }
- return true;
-}
-
-void WebMediaPlayerImpl::Proxy::AbortDataSources() {
- DCHECK(MessageLoop::current() == render_loop_);
- base::AutoLock auto_lock(data_sources_lock_);
-
- for (DataSourceList::iterator itr = data_sources_.begin();
- itr != data_sources_.end();
- itr++) {
- (*itr)->Abort();
- }
-}
-
-void WebMediaPlayerImpl::Proxy::Detach() {
- DCHECK(MessageLoop::current() == render_loop_);
- webmediaplayer_ = NULL;
- video_renderer_ = NULL;
-
- {
- base::AutoLock auto_lock(data_sources_lock_);
- data_sources_.clear();
- }
-}
-
-void WebMediaPlayerImpl::Proxy::PipelineInitializationCallback(
- PipelineStatus status) {
- render_loop_->PostTask(FROM_HERE, NewRunnableMethod(
- this, &WebMediaPlayerImpl::Proxy::PipelineInitializationTask, status));
-}
-
-void WebMediaPlayerImpl::Proxy::PipelineSeekCallback(PipelineStatus status) {
- render_loop_->PostTask(FROM_HERE, NewRunnableMethod(
- this, &WebMediaPlayerImpl::Proxy::PipelineSeekTask, status));
-}
-
-void WebMediaPlayerImpl::Proxy::PipelineEndedCallback(PipelineStatus status) {
- render_loop_->PostTask(FROM_HERE, NewRunnableMethod(
- this, &WebMediaPlayerImpl::Proxy::PipelineEndedTask, status));
-}
-
-void WebMediaPlayerImpl::Proxy::PipelineErrorCallback(PipelineStatus error) {
- DCHECK_NE(error, media::PIPELINE_OK);
- render_loop_->PostTask(FROM_HERE, NewRunnableMethod(
- this, &WebMediaPlayerImpl::Proxy::PipelineErrorTask, error));
-}
-
-void WebMediaPlayerImpl::Proxy::NetworkEventCallback(PipelineStatus status) {
- render_loop_->PostTask(FROM_HERE, NewRunnableMethod(
- this, &WebMediaPlayerImpl::Proxy::NetworkEventTask, status));
-}
-
-void WebMediaPlayerImpl::Proxy::AddDataSource(WebDataSource* data_source) {
- base::AutoLock auto_lock(data_sources_lock_);
- data_sources_.push_back(make_scoped_refptr(data_source));
-}
-
-void WebMediaPlayerImpl::Proxy::RepaintTask() {
- DCHECK(MessageLoop::current() == render_loop_);
- {
- base::AutoLock auto_lock(lock_);
- --outstanding_repaints_;
- DCHECK_GE(outstanding_repaints_, 0);
- }
- if (webmediaplayer_) {
- webmediaplayer_->Repaint();
- }
-}
-
-void WebMediaPlayerImpl::Proxy::PipelineInitializationTask(
- PipelineStatus status) {
- DCHECK(MessageLoop::current() == render_loop_);
- if (webmediaplayer_) {
- webmediaplayer_->OnPipelineInitialize(status);
- }
-}
-
-void WebMediaPlayerImpl::Proxy::PipelineSeekTask(PipelineStatus status) {
- DCHECK(MessageLoop::current() == render_loop_);
- if (webmediaplayer_) {
- webmediaplayer_->OnPipelineSeek(status);
- }
-}
-
-void WebMediaPlayerImpl::Proxy::PipelineEndedTask(PipelineStatus status) {
- DCHECK(MessageLoop::current() == render_loop_);
- if (webmediaplayer_) {
- webmediaplayer_->OnPipelineEnded(status);
- }
-}
-
-void WebMediaPlayerImpl::Proxy::PipelineErrorTask(PipelineStatus error) {
- DCHECK(MessageLoop::current() == render_loop_);
- if (webmediaplayer_) {
- webmediaplayer_->OnPipelineError(error);
- }
-}
-
-void WebMediaPlayerImpl::Proxy::NetworkEventTask(PipelineStatus status) {
- DCHECK(MessageLoop::current() == render_loop_);
- if (webmediaplayer_) {
- webmediaplayer_->OnNetworkEvent(status);
- }
-}
-
-void WebMediaPlayerImpl::Proxy::GetCurrentFrame(
- scoped_refptr<media::VideoFrame>* frame_out) {
- if (video_renderer_)
- video_renderer_->GetCurrentFrame(frame_out);
-}
-
-void WebMediaPlayerImpl::Proxy::PutCurrentFrame(
- scoped_refptr<media::VideoFrame> frame) {
- if (video_renderer_)
- video_renderer_->PutCurrentFrame(frame);
-}
-
-void WebMediaPlayerImpl::Proxy::DemuxerOpened(media::ChunkDemuxer* demuxer) {
- render_loop_->PostTask(FROM_HERE, NewRunnableMethod(
- this, &WebMediaPlayerImpl::Proxy::DemuxerOpenedTask,
- scoped_refptr<media::ChunkDemuxer>(demuxer)));
-}
-
-void WebMediaPlayerImpl::Proxy::DemuxerClosed() {
- render_loop_->PostTask(FROM_HERE, NewRunnableMethod(
- this, &WebMediaPlayerImpl::Proxy::DemuxerClosedTask));
-}
-
-void WebMediaPlayerImpl::Proxy::DemuxerFlush() {
- if (chunk_demuxer_.get())
- chunk_demuxer_->FlushData();
-}
-
-bool WebMediaPlayerImpl::Proxy::DemuxerAppend(const uint8* data,
- size_t length) {
- if (chunk_demuxer_.get())
- return chunk_demuxer_->AppendData(data, length);
- return false;
-}
-
-void WebMediaPlayerImpl::Proxy::DemuxerEndOfStream(
- media::PipelineStatus status) {
- if (chunk_demuxer_.get())
- chunk_demuxer_->EndOfStream(status);
-}
-
-void WebMediaPlayerImpl::Proxy::DemuxerShutdown() {
- if (chunk_demuxer_.get())
- chunk_demuxer_->Shutdown();
-}
-
-void WebMediaPlayerImpl::Proxy::DemuxerOpenedTask(
- const scoped_refptr<media::ChunkDemuxer>& demuxer) {
- DCHECK(MessageLoop::current() == render_loop_);
- chunk_demuxer_ = demuxer;
- if (webmediaplayer_)
- webmediaplayer_->OnDemuxerOpened();
-}
-
-void WebMediaPlayerImpl::Proxy::DemuxerClosedTask() {
- chunk_demuxer_ = NULL;
-}
-
-/////////////////////////////////////////////////////////////////////////////
-// WebMediaPlayerImpl implementation
-
WebMediaPlayerImpl::WebMediaPlayerImpl(
WebKit::WebMediaPlayerClient* client,
media::FilterCollection* collection,
@@ -358,18 +125,18 @@ bool WebMediaPlayerImpl::Initialize(
main_loop_->AddDestructionObserver(this);
// Creates the proxy.
- proxy_ = new Proxy(main_loop_, this);
- web_video_renderer->SetWebMediaPlayerImplProxy(proxy_);
+ proxy_ = new WebMediaPlayerProxy(main_loop_, this);
+ web_video_renderer->SetWebMediaPlayerProxy(proxy_);
proxy_->SetVideoRenderer(web_video_renderer);
// Set our pipeline callbacks.
pipeline_->Init(
NewCallback(proxy_.get(),
- &WebMediaPlayerImpl::Proxy::PipelineEndedCallback),
+ &WebMediaPlayerProxy::PipelineEndedCallback),
NewCallback(proxy_.get(),
- &WebMediaPlayerImpl::Proxy::PipelineErrorCallback),
+ &WebMediaPlayerProxy::PipelineErrorCallback),
NewCallback(proxy_.get(),
- &WebMediaPlayerImpl::Proxy::NetworkEventCallback));
+ &WebMediaPlayerProxy::NetworkEventCallback));
// A simple data source that keeps all data in memory.
scoped_ptr<media::DataSourceFactory> simple_data_source_factory(
@@ -462,8 +229,7 @@ void WebMediaPlayerImpl::load(const WebKit::WebURL& url) {
filter_collection_.release(),
url.spec(),
NewCallback(proxy_.get(),
- &WebMediaPlayerImpl::Proxy::PipelineInitializationCallback));
-
+ &WebMediaPlayerProxy::PipelineInitializationCallback));
media_log_->Load(url.spec());
}
@@ -530,7 +296,7 @@ void WebMediaPlayerImpl::seek(float seconds) {
pipeline_->Seek(
seek_time,
NewCallback(proxy_.get(),
- &WebMediaPlayerImpl::Proxy::PipelineSeekCallback));
+ &WebMediaPlayerProxy::PipelineSeekCallback));
}
void WebMediaPlayerImpl::setEndTime(float seconds) {
« no previous file with comments | « webkit/glue/webmediaplayer_impl.h ('k') | webkit/glue/webmediaplayer_proxy.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698