Index: media/blink/webmediaplayer_impl.cc |
diff --git a/media/blink/webmediaplayer_impl.cc b/media/blink/webmediaplayer_impl.cc |
index 2726552c4e18816ee0ea83d0fe5816fa9f60c524..5f6494ddf5a337c7f4a432d3114ac73208b47903 100644 |
--- a/media/blink/webmediaplayer_impl.cc |
+++ b/media/blink/webmediaplayer_impl.cc |
@@ -11,6 +11,7 @@ |
#include "base/bind.h" |
#include "base/callback.h" |
#include "base/callback_helpers.h" |
+#include "base/command_line.h" |
#include "base/debug/alias.h" |
#include "base/debug/crash_logging.h" |
#include "base/metrics/histogram.h" |
@@ -26,6 +27,7 @@ |
#include "media/base/cdm_context.h" |
#include "media/base/limits.h" |
#include "media/base/media_log.h" |
+#include "media/base/media_switches.h" |
#include "media/base/text_renderer.h" |
#include "media/base/timestamp_constants.h" |
#include "media/base/video_frame.h" |
@@ -88,7 +90,7 @@ class BufferedDataSourceHostImpl; |
#define STATIC_ASSERT_MATCHING_ENUM(name) \ |
static_assert(static_cast<int>(WebMediaPlayer::CORSMode ## name) == \ |
- static_cast<int>(BufferedResourceLoader::k ## name), \ |
+ static_cast<int>(UrlData::k ## name), \ |
"mismatching enum values: " #name) |
STATIC_ASSERT_MATCHING_ENUM(Unspecified); |
STATIC_ASSERT_MATCHING_ENUM(Anonymous); |
@@ -110,6 +112,7 @@ WebMediaPlayerImpl::WebMediaPlayerImpl( |
base::WeakPtr<WebMediaPlayerDelegate> delegate, |
scoped_ptr<RendererFactory> renderer_factory, |
CdmFactory* cdm_factory, |
+ ResourceMultiBuffer* resource_multibuffer, |
const WebMediaPlayerParams& params) |
: frame_(frame), |
network_state_(WebMediaPlayer::NetworkStateEmpty), |
@@ -135,6 +138,7 @@ WebMediaPlayerImpl::WebMediaPlayerImpl( |
context_3d_cb_(params.context_3d_cb()), |
supports_save_(true), |
chunk_demuxer_(NULL), |
+ resource_multibuffer_(resource_multibuffer), |
// Threaded compositing isn't enabled universally yet. |
compositor_task_runner_( |
params.compositor_task_runner() |
@@ -239,14 +243,29 @@ void WebMediaPlayerImpl::DoLoad(LoadType load_type, |
} |
// Otherwise it's a regular request which requires resolving the URL first. |
- data_source_.reset(new BufferedDataSource( |
- url, |
- static_cast<BufferedResourceLoader::CORSMode>(cors_mode), |
- main_task_runner_, |
- frame_, |
- media_log_.get(), |
- &buffered_data_source_host_, |
- base::Bind(&WebMediaPlayerImpl::NotifyDownloading, AsWeakPtr()))); |
+ if (base::CommandLine::ForCurrentProcess()->HasSwitch( |
+ switches::kMediaUseMultibuffer)) { |
+ // Remove this when MultiBufferDataSource becomes default. |
+ LOG(WARNING) << "Using MultibufferDataSource"; |
+ data_source_.reset(new MultibufferDataSource( |
+ url, |
+ static_cast<UrlData::CORSMode>(cors_mode), |
+ main_task_runner_, |
+ resource_multibuffer_, |
+ frame_, |
+ media_log_.get(), |
+ &buffered_data_source_host_, |
+ base::Bind(&WebMediaPlayerImpl::NotifyDownloading, AsWeakPtr()))); |
+ } else { |
+ data_source_.reset(new BufferedDataSource( |
+ url, |
+ static_cast<BufferedResourceLoader::CORSMode>(cors_mode), |
+ main_task_runner_, |
+ frame_, |
+ media_log_.get(), |
+ &buffered_data_source_host_, |
+ base::Bind(&WebMediaPlayerImpl::NotifyDownloading, AsWeakPtr()))); |
+ } |
data_source_->SetPreload(preload_); |
data_source_->Initialize( |
base::Bind(&WebMediaPlayerImpl::DataSourceInitialized, AsWeakPtr())); |