[M130 Migration][HbbTV] Fixes for suspend / resume 97/325197/6
authorThomas Daniel <t.daniel@samsung.com>
Thu, 27 Jun 2024 09:07:54 +0000 (10:07 +0100)
committerBot Blink <blinkbot@samsung.com>
Wed, 4 Jun 2025 09:51:09 +0000 (09:51 +0000)
https://archive.tizen.org/gerrit/c/platform/framework/web/chromium-efl/+/313550

Signed-off-by: Thomas Daniel <t.daniel@samsung.com>
Signed-off-by: Maciej Pietka <m.pietka@samsung.com>
Change-Id: I10c2986ce7c14076dd79a9b7446f7306099e9a55

media/base/pipeline_impl.cc
tizen_src/chromium_impl/content/browser/media/tizen_renderer_impl.cc
tizen_src/chromium_impl/media/filters/media_player_bridge_capi.h
tizen_src/chromium_impl/media/filters/media_player_bridge_capi_tv.cc
tizen_src/chromium_impl/media/filters/media_player_bridge_capi_tv.h

index 476ebc9803cf1e6f1959caa9955829f92a076798..3a706538c20dcbfa484e6cf199cab5dbe74b0300 100644 (file)
@@ -661,6 +661,16 @@ void PipelineImpl::RendererWrapper::Resume(
   }
   DCHECK(!pending_callbacks_.get());
 
+#if defined(TIZEN_MULTIMEDIA)
+  // Do not need default renderer if suspended in tizen.
+  if (!IsRendererSuspended() || IsUpstreamArchitectureEnabled())
+#endif
+    if (!default_renderer) {
+      OnPipelineError({PIPELINE_ERROR_INITIALIZATION_FAILED,
+                       "Media Renderer creation failed during resume!"});
+      return;
+    }
+
   SetState(State::kResuming);
 
   {
index 6c16bb371da2e487151072265540174b1b247504..279ffb3c7c705f63e4395211becaa63359fae75a 100644 (file)
@@ -628,6 +628,20 @@ void TizenRendererImpl::StartPlayingFrom(base::TimeDelta time) {
     return;
   }
 #endif
+  if (is_suspended_by_upper_ || is_suspended_by_resource_conflicted_ ||
+      is_suspended_by_internal_) {
+    LOG_ID(INFO, player_id_) << "resume from player suspend";
+    if (!media::MediaPlayerRegistry::GetInstance()->ActivateMediaPlayer(
+            player_id_, !is_suspended_by_resource_conflicted_)) {
+      LOG_ID(INFO, player_id_)
+          << "(" << static_cast<void*>(this) << ") " << __func__
+          << " Can not initialize the player id: " << player_id_;
+      return;
+    }
+    is_suspended_by_upper_ = false;
+    is_suspended_by_internal_ = false;
+    is_suspended_by_resource_conflicted_ = false;
+  }
 
   SetPlayerInitialize();
   SetPlayerPrepare();
index 8a97d606c5ca2ce5a665ecd96534a544ab29546d..d99f54f71e72b745705cf94024dc88bb9900f4ac 100644 (file)
@@ -70,7 +70,7 @@ class MEDIA_EXPORT MediaPlayerBridgeCapi : public MediaPlayerTizen {
   void Flush(base::OnceClosure flush_cb) override;
   void Release() override;
   void Prepare() override;
-  void Resume();
+  virtual void Resume();
   void Suspend();
   bool Play() override;
   void Pause(bool is_media_related_action) override;
index befdf908565d4c523c493c9ec6bd1872910864f7..effa293d1b22479b7b761991c9bf107a9f32f7e2 100644 (file)
@@ -513,6 +513,11 @@ void MediaPlayerBridgeCapiTV::Prepare() {
   }
 }
 
+void MediaPlayerBridgeCapiTV::Resume() {
+  is_resuming_ = true;
+  MediaPlayerBridgeCapi::Resume();
+}
+
 void MediaPlayerBridgeCapiTV::Release() {
   is_preloaded_ = false;
   player_prepared_ = false;
index e4eb2f929fbb90d6aaaafb3ab9e88b5cb595a095..5c05a0203f83830d65a4c8e0b403814d9f6a2d8f 100644 (file)
@@ -110,6 +110,7 @@ class MEDIA_EXPORT MediaPlayerBridgeCapiTV : public MediaPlayerBridgeCapi {
   void Pause(bool is_media_related_action) override;
   void RequestSuspend(bool resource_conflicted) override;
   void RequestReleaseAudio() override;
+  void Resume() override;
   void SetContentMimeType(const std::string& mime_type) override;
   void PlaybackCompleteUpdate() override;
   bool PreloadIfNeeded(int& ret) override;