Chromium Code Reviews| Index: media/blink/webmediaplayer_impl.cc |
| diff --git a/media/blink/webmediaplayer_impl.cc b/media/blink/webmediaplayer_impl.cc |
| index 2726552c4e18816ee0ea83d0fe5816fa9f60c524..0c15fe41e3a3ef94aad50ee6e308e9b4fb8d4f93 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" |
| @@ -86,9 +88,9 @@ namespace media { |
| class BufferedDataSourceHostImpl; |
| -#define STATIC_ASSERT_MATCHING_ENUM(name) \ |
| - static_assert(static_cast<int>(WebMediaPlayer::CORSMode ## name) == \ |
| - static_cast<int>(BufferedResourceLoader::k ## name), \ |
| +#define STATIC_ASSERT_MATCHING_ENUM(name) \ |
| + static_assert(static_cast<int>(WebMediaPlayer::CORSMode##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, |
| + linked_ptr<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,22 @@ 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)) { |
|
liberato (no reviews please)
2015/11/05 19:03:18
&& |resource_multibuffer_| (maybe instead)
hubbe
2015/11/13 22:56:52
Not sure which is better here...
I see your point,
|
| + // 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())); |