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

Unified Diff: webkit/glue/webmediaplayer_impl.cc

Issue 7203002: Adding ChunkDemuxer implementation. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Address CR comments Created 9 years, 6 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
« media/webm/webm_parser.cc ('K') | « webkit/glue/webmediaplayer_impl.h ('k') | no next file » | 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 a4c7f06daecbb6179bd2bc085105131844e993dc..611e3397961bfaadbef45f704ced3b8747b8caa3 100644
--- a/webkit/glue/webmediaplayer_impl.cc
+++ b/webkit/glue/webmediaplayer_impl.cc
@@ -340,6 +340,11 @@ bool WebMediaPlayerImpl::Initialize(
data_source_factory->AddFactory(simple_data_source_factory.release());
}
+ if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kEnableAdaptive)) {
+ chunk_demuxer_factory_.reset(new media::ChunkDemuxerFactory(
+ data_source_factory->Clone()));
+ }
+
scoped_ptr<media::DemuxerFactory> demuxer_factory(
new media::FFmpegDemuxerFactory(data_source_factory.release(),
pipeline_message_loop));
@@ -384,6 +389,12 @@ void WebMediaPlayerImpl::load(const WebKit::WebURL& url) {
filter_collection_->AddVideoDecoder(rtc_video_decoder);
}
+ if (chunk_demuxer_factory_.get() &&
+ chunk_demuxer_factory_->IsUrlSupported(url.spec())) {
+ media_data_sink_.reset(chunk_demuxer_factory_->CreateMediaDataSink());
+ filter_collection_->SetDemuxerFactory(chunk_demuxer_factory_.release());
+ }
+
// Handle any volume changes that occured before load().
setVolume(GetClient()->volume());
// Get the preload value.
@@ -418,6 +429,15 @@ void WebMediaPlayerImpl::pause() {
paused_time_ = pipeline_->GetCurrentTime();
}
+bool WebMediaPlayerImpl::addData(const unsigned char* data, unsigned length) {
scherkus (not reviewing) 2011/06/23 18:50:18 crazy naming nit we can decide on later: appendDat
acolwell GONE FROM CHROMIUM 2011/06/23 22:42:17 This will probably change to appendData() once I s
+ DCHECK(MessageLoop::current() == main_loop_);
+
+ if (!media_data_sink_.get())
+ return false;
+
+ return media_data_sink_->AddData(data, length);
+}
+
bool WebMediaPlayerImpl::supportsFullscreen() const {
DCHECK(MessageLoop::current() == main_loop_);
return true;
@@ -452,6 +472,9 @@ void WebMediaPlayerImpl::seek(float seconds) {
seeking_ = true;
+ if (media_data_sink_.get())
+ media_data_sink_->Flush();
+
// Kick off the asynchronous seek!
pipeline_->Seek(
seek_time,
@@ -567,7 +590,6 @@ float WebMediaPlayerImpl::duration() const {
float WebMediaPlayerImpl::currentTime() const {
DCHECK(MessageLoop::current() == main_loop_);
-
if (paused_) {
return static_cast<float>(paused_time_.InSecondsF());
}
@@ -908,6 +930,9 @@ void WebMediaPlayerImpl::Destroy() {
if (proxy_)
proxy_->AbortDataSources();
+ if (media_data_sink_.get())
+ media_data_sink_->Shutdown();
+
// Make sure to kill the pipeline so there's no more media threads running.
// Note: stopping the pipeline might block for a long time.
if (pipeline_) {
« media/webm/webm_parser.cc ('K') | « webkit/glue/webmediaplayer_impl.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698