return client_->OnError(std::move(error));
}
+#if defined(TIZEN_MULTIMEDIA)
+ if (error == DEMUXER_ERROR_DETECTED_HLS) {
+ hls_fallback_ = HlsFallbackImplementation::kMediaPlayer;
+
+ client_->StopForDemuxerReset();
+ data_source_->Stop();
+ FreeResourcesAfterMediaThreadWait(base::BindOnce(
+ &DemuxerManager::RestartClientForHLS, weak_factory_.GetWeakPtr()));
+
+ return;
+ }
+#endif
+
#if BUILDFLAG(ENABLE_HLS_DEMUXER) || BUILDFLAG(IS_ANDROID)
bool can_play_hls =
SelectHlsFallbackImplementation() != HlsFallbackImplementation::kNone;
}
#endif // BUILDFLAG(ENABLE_HLS_DEMUXER)
-#if BUILDFLAG(IS_ANDROID)
+#if BUILDFLAG(IS_ANDROID) || defined(TIZEN_MULTIMEDIA)
const bool media_player_hls =
hls_fallback_ == HlsFallbackImplementation::kMediaPlayer;
if (media_player_hls || client_->IsMediaPlayerRendererClient()) {
base::BindPostTaskToCurrentDefault(
base::BindRepeating(&DemuxerManager::OnEncryptedMediaInitData,
weak_factory_.GetWeakPtr())),
+#if BUILDFLAG(IS_TIZEN_TV)
+ base::BindPostTaskToCurrentDefault(
+ base::BindRepeating(&DemuxerManager::OnAudioTracksCountChanged,
+ weak_factory_.GetWeakPtr())),
+#else
+ base::DoNothing(),
+#endif
media_log_.get());
}
+#if BUILDFLAG(IS_TIZEN_TV)
+void DemuxerManager::OnAudioTracksCountChanged(unsigned count) {
+ if (client_) {
+ client_->OnAudioTracksCountChanged(count);
+ } else {
+ LOG(ERROR) << __func__
+ << "Audio track count changed, but no client, count: " << count;
+ }
+}
+#endif
+
#if BUILDFLAG(ENABLE_FFMPEG)
std::unique_ptr<Demuxer> DemuxerManager::CreateFFmpegDemuxer() {
DCHECK(data_source_);
}
#endif
-#if BUILDFLAG(IS_ANDROID)
+#if BUILDFLAG(IS_ANDROID) || defined(TIZEN_MULTIMEDIA)
std::unique_ptr<Demuxer> DemuxerManager::CreateMediaUrlDemuxer(
bool expect_hls_content) {
return std::make_unique<MediaUrlDemuxer>(
media_task_runner_, loaded_url_, site_for_cookies_, top_frame_origin_,
+#if BUILDFLAG(IS_ANDROID)
has_storage_access_, allow_media_player_renderer_credentials_,
+#else
+ // The platform media player in Tizen OS doesn't require these params
+ // except for the url, so they are not used for tizen multimedia.
+ true, true,
+#endif
expect_hls_content);
}
-#endif // BUILDFLAG(IS_ANDROID)
+#endif // BUILDFLAG(IS_ANDROID) || defined(TIZEN_MULTIMEDIA)
void DemuxerManager::SetDemuxer(std::unique_ptr<Demuxer> demuxer) {
DCHECK(!demuxer_);