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>
#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>
#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
#include <player.h>
+#include "base/time/time.h"
#include "media/base/media_export.h"
#include "url/gurl.h"
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_
}
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());
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() {