Fix issue of tct-video-html5-tests case video_000 90/318990/3
authorzhishun.zhou <zhishun.zhou@samsung.com>
Fri, 11 Oct 2024 12:45:34 +0000 (20:45 +0800)
committerBot Blink <blinkbot@samsung.com>
Sat, 12 Oct 2024 08:13:50 +0000 (08:13 +0000)
Case video_000 expect when a video is loaded but is not playing,
the first video frame should be rendered on screen.

To support render video frame in paused state, CAPI interface
player_display_video_at_paused_state need set to true;
and a correct geometry need set to MMPLAYER. while Now the
geometry can not be set before state PLAYING.

And the pending geometry already be implemented in
VideoPlaneController::SetDeferredVideoRect; let remove the
redundant logic in MediaPlayerBridgeCapi [delayed_rect_ and
delayed_viewport_rect_].

Change-Id: I0263b9c00df92b9aba26bc15fc3e16f1c146ed35
Signed-off-by: zhishun.zhou <zhishun.zhou@samsung.com>
tizen_src/chromium_impl/media/filters/media_player_bridge_capi.cc
tizen_src/chromium_impl/media/filters/media_player_bridge_capi.h
tizen_src/chromium_impl/media/filters/media_player_bridge_capi_tv.cc

index a849562a965c8db6fe6318c56eeaa4d3694834ea..35bb95ef3979c5b5131aaa3b1259cd95e4ebc310 100644 (file)
@@ -445,15 +445,6 @@ bool MediaPlayerBridgeCapi::Play() {
     return false;
   }
 
-#if defined(TIZEN_VIDEO_HOLE)
-  if (!delayed_rect_.IsEmpty() && !delayed_viewport_rect_.IsEmpty()) {
-    SetMediaGeometry(delayed_viewport_rect_, delayed_rect_,
-                     media::VIDEO_ROTATION_0);
-    delayed_viewport_rect_ = gfx::Rect();
-    delayed_rect_ = gfx::RectF();
-  }
-#endif
-
   WakeUpDisplayAndAcquireDisplayLock();
 
   StartCurrentTimeUpdateTimer();
@@ -613,12 +604,6 @@ void MediaPlayerBridgeCapi::SetMediaGeometry(const gfx::Rect& viewport_rect,
   if (!is_video_hole_)
     return;
 
-  if (GetPlayerState() < PLAYER_STATE_PLAYING) {
-    delayed_viewport_rect_ = viewport_rect;
-    delayed_rect_ = rect;
-    return;
-  }
-
   LOG_ID(INFO, player_id_) << "(" << static_cast<void*>(this) << ") "
                            << __func__
                            << " viewport_rect: " << viewport_rect.ToString()
index 83aa3931e991e3d81760715f1f8ecfdf56339dde..9ec71f525f4d489a767aebbcaab20e722cb0b20f 100644 (file)
@@ -211,8 +211,6 @@ class MEDIA_EXPORT MediaPlayerBridgeCapi : public MediaPlayerTizen {
   double volume_{0.0};
 #if defined(TIZEN_VIDEO_HOLE)
   bool is_video_hole_{false};
-  gfx::Rect delayed_viewport_rect_;
-  gfx::RectF delayed_rect_;
   std::unique_ptr<VideoPlaneController> video_plane_controller_;
 #endif
 
@@ -225,6 +223,8 @@ class MEDIA_EXPORT MediaPlayerBridgeCapi : public MediaPlayerTizen {
   bool suspended_{false};
   bool waiting_for_drm_init_complete_ = false;
 
+  bool display_video_at_paused_state_{false};
+
  private:
   // |duration_update_timer_| related
   void StartCurrentTimeUpdateTimer();
index 3458211f8e9915c19b2c9c1db93dbae80a0cd47e..d2ab37671ec224781e2045ad9fed283fdc02d1d4 100644 (file)
@@ -1264,12 +1264,24 @@ bool MediaPlayerBridgeCapiTV::PreloadIfNeeded(int& ret) {
 }
 
 void MediaPlayerBridgeCapiTV::SetDisplayAtPausedState() {
-  int ret = PLAYER_ERROR_NONE;
-  if (IsMultiVideo())
-    ret = player_display_video_at_paused_state(player_, true);
-  else
-    ret = player_display_video_at_paused_state(player_, false);
+  if (IsMultiVideo()) {
+    display_video_at_paused_state_ = true;
+  } else {
+    if (!pending_seek_duration_.is_zero())
+      display_video_at_paused_state_ = false;
+    else
+      display_video_at_paused_state_ = true;
+  }
 
+  LOG_ID(INFO, player_id_) << "(" << static_cast<void*>(this) << ") "
+                           << __func__ << ", IsMultiVideo: " << IsMultiVideo()
+                           << ", pending_seek_duration is zero: "
+                           << pending_seek_duration_.is_zero()
+                           << ", display_video_at_paused_state_ "
+                           << display_video_at_paused_state_;
+  int ret = PLAYER_ERROR_NONE;
+  ret = player_display_video_at_paused_state(player_,
+                                             display_video_at_paused_state_);
   if (ret != PLAYER_ERROR_NONE)
     LOG(ERROR) << "player_display_video_at_paused_state() failed";
 }