[M120 Migration][MM] use 64bit api to get/set current time 07/308607/2
authorwuxiaoliang <xliang.wu@samsung.com>
Thu, 28 Mar 2024 06:19:18 +0000 (14:19 +0800)
committerBot Blink <blinkbot@samsung.com>
Thu, 11 Apr 2024 04:46:14 +0000 (04:46 +0000)
If live video is very long, 32bit is not enough, use 64bit instead.

Migrated from:
https://review.tizen.org/gerrit/#/c/platform/framework/web/chromium-efl/+/303638

Change-Id: I16bfbf50b443f63c103769890c925292ec758e3f
Signed-off-by: wuxiaoliang <xliang.wu@samsung.com>
tizen_src/chromium_impl/media/base/efl/media_player_util_efl.cc
tizen_src/chromium_impl/media/base/efl/media_player_util_efl.h
tizen_src/chromium_impl/media/filters/media_player_bridge_capi.cc

index 9724b9d..e40caae 100644 (file)
@@ -5,10 +5,13 @@
 #include "media/base/efl/media_player_util_efl.h"
 
 #include "base/logging.h"
-#include "base/time/time.h"
 
 #include "tizen/system_info.h"
 
+#if BUILDFLAG(IS_TIZEN_TV)
+#include <player_product.h>
+#endif
+
 #include <device/power.h>
 #include <player.h>
 #include <map>
@@ -364,4 +367,30 @@ void ReleaseDisplayLock() {
 #endif
 }
 
+int PlayerGetPlayPosition(player_h player, base::TimeDelta& position) {
+#if BUILDFLAG(IS_TIZEN_TV)
+  int64_t player_position = 0;
+  const int ret_val = player_get_play_position_ex(player, &player_position);
+#else
+  int player_position = 0;
+  const int ret_val = player_get_play_position(player, &player_position);
+#endif
+  position = base::Milliseconds(player_position);
+  return ret_val;
+}
+
+int PlayerSetPlayPosition(player_h player,
+                          base::TimeDelta position,
+                          bool accurate,
+                          player_seek_completed_cb callback,
+                          void* user_data) {
+#if BUILDFLAG(IS_TIZEN_TV)
+  return player_set_play_position_ex(player, position.InMilliseconds(),
+                                     accurate, callback, user_data);
+#else
+  return player_set_play_position(player, position.InMilliseconds(), accurate,
+                                  callback, user_data);
+#endif
+}
+
 }  // namespace media
index 50da37f..e978649 100644 (file)
@@ -7,6 +7,7 @@
 
 #include <player.h>
 
+#include "base/time/time.h"
 #include "media/base/media_export.h"
 #include "url/gurl.h"
 
@@ -59,6 +60,13 @@ MEDIA_EXPORT GURL GetCleanURL(std::string url);
 void WakeUpDisplayAndAcquireDisplayLock();
 void ReleaseDisplayLock();
 
+int PlayerGetPlayPosition(player_h player, base::TimeDelta& position);
+int PlayerSetPlayPosition(player_h player,
+                          base::TimeDelta position,
+                          bool accurate,
+                          player_seek_completed_cb callback,
+                          void* user_data);
+
 }  // namespace media
 
 #endif  // MEDIA_BASE_EFL_MEDIA_PLAYER_UTIL_EFL_H_
index fe43bc2..ca26ce4 100644 (file)
@@ -487,9 +487,7 @@ void MediaPlayerBridgeCapi::Seek(base::TimeDelta time,
 }
 
 void MediaPlayerBridgeCapi::SeekInternal(base::TimeDelta time) {
-  int err = player_set_play_position(
-      player_, ConvertSecondsToMilliSeconds(time.InSecondsF()), true,
-      SeekCompletedCb, this);
+  int err = PlayerSetPlayPosition(player_, time, true, SeekCompletedCb, this);
   if (err != PLAYER_ERROR_NONE) {
     LOG(ERROR) << "|player_set_play_position| failed";
     OnTimeUpdate(player_id_, GetCurrentTime());
@@ -630,9 +628,12 @@ base::TimeDelta MediaPlayerBridgeCapi::GetCurrentTime() {
       return duration_;
   }
 
-  int postion = 0;
-  player_get_play_position(player_, &postion);
-  return base::Milliseconds(postion);
+  base::TimeDelta position;
+  // This api is sync api, need called after prepared.
+  // Otherwise will block browser process.
+  if (player_prepared_)
+    PlayerGetPlayPosition(player_, position);
+  return position;
 }
 
 void MediaPlayerBridgeCapi::OnCurrentTimeUpdateTimerFired() {