| 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()));
|
|
|