From e6d133ead4c24a33aaecfb8e12e7bba3597de5f4 Mon Sep 17 00:00:00 2001 From: Sun-woo Nam Date: Tue, 14 Feb 2023 21:24:55 -0800 Subject: [PATCH] [M108 Migration][MM][HBBTV] Check HLS to enable url demuxer. FFmpeg demuxer is not available for Http Live Streaming contents. Therefore, I modified to use url demuxer for HLS by referring to the existing android code. Reference: https://review.tizen.org/gerrit/#/c/288322/ Change-Id: I6827d16c8f298748743779ac4cb78957cb46ffdb Signed-off-by: Sun-woo Nam --- media/filters/ffmpeg_demuxer.cc | 2 +- .../platform/media/web_media_player_impl.cc | 22 ++++++++++++++++++---- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/media/filters/ffmpeg_demuxer.cc b/media/filters/ffmpeg_demuxer.cc index 76661fc..f2c89c2 100644 --- a/media/filters/ffmpeg_demuxer.cc +++ b/media/filters/ffmpeg_demuxer.cc @@ -1237,7 +1237,7 @@ void FFmpegDemuxer::OnOpenContextDone(bool result) { return; } -#if BUILDFLAG(IS_ANDROID) +#if BUILDFLAG(IS_ANDROID) || defined(TIZEN_MULTIMEDIA) if (glue_->detected_hls()) { MEDIA_LOG(INFO, media_log_) << GetDisplayName() << ": detected HLS manifest"; diff --git a/third_party/blink/renderer/platform/media/web_media_player_impl.cc b/third_party/blink/renderer/platform/media/web_media_player_impl.cc index 8808a01..a61dad6 100644 --- a/third_party/blink/renderer/platform/media/web_media_player_impl.cc +++ b/third_party/blink/renderer/platform/media/web_media_player_impl.cc @@ -1938,14 +1938,18 @@ void WebMediaPlayerImpl::OnError(media::PipelineStatus status) { if (suppress_destruction_errors_) return; -#if BUILDFLAG(IS_ANDROID) +#if BUILDFLAG(IS_ANDROID) || defined(TIZEN_MULTIMEDIA) // `mb_data_source_` may be nullptr if someone passes in a m3u8 as a data:// // URL, since MediaPlayer doesn't support data:// URLs, fail playback now. - const bool found_hls = base::FeatureList::IsEnabled(media::kHlsPlayer) && - status == media::DEMUXER_ERROR_DETECTED_HLS; + const bool found_hls = +#if BUILDFLAG(IS_ANDROID) + base::FeatureList::IsEnabled(media::kHlsPlayer) && +#endif + status == media::DEMUXER_ERROR_DETECTED_HLS; if (found_hls && mb_data_source_) { demuxer_found_hls_ = true; +#if BUILDFLAG(IS_ANDROID) if (observer_) observer_->OnHlsManifestDetected(); @@ -1979,6 +1983,7 @@ void WebMediaPlayerImpl::OnError(media::PipelineStatus status) { renderer_factory_selector_->SetBaseRendererType( media::RendererType::kMediaPlayer); +#endif loaded_url_ = mb_data_source_->GetUrlAfterRedirects(); DCHECK(data_source_); @@ -2021,7 +2026,7 @@ void WebMediaPlayerImpl::OnError(media::PipelineStatus status) { ScheduleRestart(); return; } -#endif // BUILDFLAG(IS_ANDROID) +#endif // BUILDFLAG(IS_ANDROID) || defined(TIZEN_MULTIMEDIA) MaybeSetContainerNameForMetrics(); simple_watch_timer_.Stop(); @@ -3004,6 +3009,15 @@ void WebMediaPlayerImpl::StartPipeline() { demuxer_.get(), this, false, false); return; } +#elif defined(TIZEN_MULTIMEDIA) + if (demuxer_found_hls_) { + SetDemuxer(std::make_unique( + media_task_runner_, loaded_url_, frame_->GetDocument().SiteForCookies(), + frame_->GetDocument().TopFrameOrigin(), true, demuxer_found_hls_)); + pipeline_controller_->Start(media::Pipeline::StartType::kNormal, + demuxer_.get(), this, false, false); + return; + } #endif // BUILDFLAG(IS_ANDROID) // Figure out which demuxer to use. -- 2.7.4