[M120 Migration][hbbtv] Audio tracks count notification
[platform/framework/web/chromium-efl.git] / media / filters / demuxer_manager.cc
index 72f21ce..c167fb6 100644 (file)
@@ -169,6 +169,19 @@ void DemuxerManager::OnPipelineError(PipelineStatus error) {
     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;
@@ -392,7 +405,7 @@ PipelineStatus DemuxerManager::CreateDemuxer(
   }
 #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()) {
@@ -571,9 +584,27 @@ std::unique_ptr<Demuxer> DemuxerManager::CreateChunkDemuxer() {
       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_);
@@ -602,15 +633,21 @@ std::unique_ptr<Demuxer> DemuxerManager::CreateHlsDemuxer() {
 }
 #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_);