[M130 migration][HBBTV]Single Decoder 76/325076/2
authorKajetan Brzuszczak <k.brzuszczak@partner.samsung.com>
Sat, 14 Dec 2024 18:20:19 +0000 (19:20 +0100)
committerBot Blink <blinkbot@samsung.com>
Mon, 2 Jun 2025 14:46:19 +0000 (14:46 +0000)
- RoseSF - skip Prepare for single decoding.
- Handle setting video visibility for SingleDecoder

Signed-off-by: Kajetan Brzuszczak <k.brzuszczak@partner.samsung.com>
Change-Id: I2882c2d42da10f5250fa0fdc8b7c9ae3585315b4

tizen_src/chromium_impl/media/filters/media_player_bridge_capi_tv.cc

index 8d186bd0865272b627dd328deac4965343ad7e2d..630530cfefe67174adbdd870a675491d64f97f92 100644 (file)
@@ -4,11 +4,14 @@
 
 #include "media/filters/media_player_bridge_capi_tv.h"
 
+#include "absl/types/optional.h"
 #include "base/command_line.h"
 #include "base/strings/string_split.h"
 #include "ewk/efl_integration/common/content_switches_efl.h"
 #include "media/base/efl/media_player_util_efl.h"
+#include "media/filters/hardware_resource_types.h"
 #include "third_party/blink/public/common/web_preferences/web_preferences.h"
+#include "third_party/blink/public/platform/web_application_type.h"
 #include "third_party/blink/public/platform/web_media_player.h"
 #include "tizen_src/chromium_impl/media/filters/media_player_tizen_client.h"
 #include "tizen_src/chromium_impl/tizen/tizen_tv_platform.h"
@@ -643,6 +646,7 @@ bool MediaPlayerBridgeCapiTV::Play() {
       return true;
     }
     if (!player_prepared_) {
+      DelayPlayExecution();
       if (!PlayerPrePlay()) {
         LOG_ID(ERROR, GetPlayerId()) << "HBBTV prePlay fail.";
         return false;
@@ -711,8 +715,16 @@ bool MediaPlayerBridgeCapiTV::Play() {
     pending_active_video_track_id_ = -1;
   }
 
-  if (!MediaPlayerBridgeCapi::Play())
+  if (delayed_player_state_ != PLAYER_STATE_DELAYED_NULL) {
+    LOG_ID(INFO, GetPlayerId()) << "Pending playing state="
+      << delayed_player_state_;
+    ExecuteDelayedPlayerState();
+    return true;
+  }
+
+  if (!MediaPlayerBridgeCapi::Play()) {
     return false;
+  }
 
   if (blink::IsHbbTV()) {
     UpdatePreferAudio();
@@ -739,6 +751,7 @@ bool MediaPlayerBridgeCapiTV::Play() {
   return true;
 }
 
+
 void MediaPlayerBridgeCapiTV::Pause(bool is_media_related_action) {
   if (!player_prepared_) {
     LOG_ID(INFO, GetPlayerId())
@@ -835,9 +848,10 @@ void MediaPlayerBridgeCapiTV::Seek(base::TimeDelta time,
 
   // in the case when the player is currently unable to seek, stash the seek
   // it will be executed in |MediaPlayerBridgeCapi::ExecuteDelayedPlayerState|
+  const bool is_prepared = IsPrepared();
   const bool should_stash_seek =
       is_seeking_ || is_suspend_seek || waiting_for_drm_init_complete_ ||
-      is_preparing_ || is_preloading_ || is_initializing;
+      is_preparing_ || is_preloading_ || is_initializing || !is_prepared;
 
   if (should_stash_seek) {
     LOG_ID(INFO, player_id_)
@@ -852,9 +866,19 @@ void MediaPlayerBridgeCapiTV::Seek(base::TimeDelta time,
       delayed_player_state_ = PLAYER_STATE_DELAYED_SEEK;
     }
     pending_seek_duration_ = playback_time_;
-    OnTimeUpdate(player_id_, playback_time_);
-    OnTimeChanged(player_id_);
-    Resume();
+
+    if (!is_start_playing_from_zero) {
+      OnTimeUpdate(player_id_, playback_time_);
+      OnTimeChanged(player_id_);
+    }
+
+    if (is_suspend_seek) {
+      Resume();
+    }
+
+    if (!is_prepared && seek_cb_) {
+      std::move(seek_cb_).Run();
+    }
     return;
   }
 
@@ -1977,7 +2001,7 @@ void MediaPlayerBridgeCapiTV::SetVideoVisibilityPrivate(bool visible) {
   }
 #endif // TIZEN_VERSION_AT_LEAST(6, 0, 0)
 }
-#endif
+#endif // defined(TIZEN_VIDEO_HOLE)
 
 bool MediaPlayerBridgeCapiTV::HBBTVResourceAcquired() {
   bool media_resource_acquired = false;