| Index: media/blink/webmediaplayer_impl.cc
|
| diff --git a/media/blink/webmediaplayer_impl.cc b/media/blink/webmediaplayer_impl.cc
|
| index 3ff4667ec3b5cb3c2382ea9415ceca44fa7b47a0..2a772680df9fc1c0c005d5154ae4dbe6160915ed 100644
|
| --- a/media/blink/webmediaplayer_impl.cc
|
| +++ b/media/blink/webmediaplayer_impl.cc
|
| @@ -35,6 +35,7 @@
|
| #include "media/base/media_keys.h"
|
| #include "media/base/media_log.h"
|
| #include "media/base/media_switches.h"
|
| +#include "media/base/media_url_demuxer.h"
|
| #include "media/base/text_renderer.h"
|
| #include "media/base/timestamp_constants.h"
|
| #include "media/base/video_frame.h"
|
| @@ -226,6 +227,7 @@ WebMediaPlayerImpl::WebMediaPlayerImpl(
|
| overlay_surface_id_(SurfaceManager::kNoSurfaceID),
|
| suppress_destruction_errors_(false),
|
| can_suspend_state_(CanSuspendState::UNKNOWN),
|
| + use_fallback_path_(false),
|
| is_encrypted_(false),
|
| underflow_count_(0),
|
| observer_(params.media_observer()) {
|
| @@ -358,6 +360,9 @@ void WebMediaPlayerImpl::DoLoad(LoadType load_type,
|
| // Set subresource URL for crash reporting.
|
| base::debug::SetCrashKeyValue("subresource_url", gurl.spec());
|
|
|
| + if (use_fallback_path_)
|
| + fallback_url_ = gurl;
|
| +
|
| load_type_ = load_type;
|
|
|
| SetNetworkState(WebMediaPlayer::NetworkStateLoading);
|
| @@ -1393,6 +1398,10 @@ void WebMediaPlayerImpl::SetDeviceScaleFactor(float scale_factor) {
|
| void WebMediaPlayerImpl::setPoster(const blink::WebURL& poster) {
|
| cast_impl_.setPoster(poster);
|
| }
|
| +
|
| +void WebMediaPlayerImpl::SetUseFallbackPath(bool use_fallback_path) {
|
| + use_fallback_path_ = use_fallback_path;
|
| +}
|
| #endif // defined(OS_ANDROID) // WMPI_CAST
|
|
|
| void WebMediaPlayerImpl::DataSourceInitialized(bool success) {
|
| @@ -1406,7 +1415,7 @@ void WebMediaPlayerImpl::DataSourceInitialized(bool success) {
|
| //
|
| // TODO(tguilbert): Remove this code path once we have the ability to host a
|
| // MediaPlayer within a Mojo media renderer. http://crbug.com/580626
|
| - if (data_source_) {
|
| + if (data_source_ && !use_fallback_path_) {
|
| const GURL url_after_redirects = data_source_->GetUrlAfterRedirects();
|
| if (MediaCodecUtil::IsHLSURL(url_after_redirects)) {
|
| client_->requestReload(url_after_redirects);
|
| @@ -1455,6 +1464,7 @@ void WebMediaPlayerImpl::OnSurfaceRequested(
|
| const SurfaceCreatedCB& surface_created_cb) {
|
| DCHECK(main_task_runner_->BelongsToCurrentThread());
|
| DCHECK(surface_manager_);
|
| + DCHECK(!use_fallback_path_);
|
|
|
| // A null callback indicates that the decoder is going away.
|
| if (surface_created_cb.is_null()) {
|
| @@ -1502,6 +1512,12 @@ void WebMediaPlayerImpl::StartPipeline() {
|
| Demuxer::EncryptedMediaInitDataCB encrypted_media_init_data_cb =
|
| BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnEncryptedMediaInitData);
|
|
|
| + if (use_fallback_path_) {
|
| + demuxer_.reset(new MediaUrlDemuxer(media_task_runner_, fallback_url_));
|
| + pipeline_controller_.Start(demuxer_.get(), this, false, false);
|
| + return;
|
| + }
|
| +
|
| // Figure out which demuxer to use.
|
| if (load_type_ != LoadTypeMediaSource) {
|
| DCHECK(!chunk_demuxer_);
|
|
|