From 1ffa1ca0af1958ab6aa9b07aeaca5677cde3eb30 Mon Sep 17 00:00:00 2001 From: Venugopal S M Date: Mon, 18 Jul 2022 18:10:35 -0700 Subject: [PATCH] [M108 Migration][MM] Handle PlaybackRate. - Enable call to setPlaybackRate - Delay setting playback rate if player is not prepared(HBBTV) Reference: https://review.tizen.org/gerrit/278307 https://review.tizen.org/gerrit/278434 https://review.tizen.org/gerrit/281298 https://review.tizen.org/gerrit/288027 Change-Id: Ib82d363fb0c5f8e585a10967a3d913cd2eb181d3 Signed-off-by: Venugopal S M --- .../content/browser/media/tizen_renderer_impl.cc | 9 ++++----- .../media/base/tizen/media_player_bridge_capi.cc | 17 +++++++++++++++++ .../media/base/tizen/media_player_bridge_capi.h | 1 + .../media/filters/media_player_esplusplayer.cc | 2 +- .../media/filters/media_player_esplusplayer.h | 2 +- 5 files changed, 24 insertions(+), 7 deletions(-) diff --git a/tizen_src/chromium_impl/content/browser/media/tizen_renderer_impl.cc b/tizen_src/chromium_impl/content/browser/media/tizen_renderer_impl.cc index 19667a5..f45686c 100644 --- a/tizen_src/chromium_impl/content/browser/media/tizen_renderer_impl.cc +++ b/tizen_src/chromium_impl/content/browser/media/tizen_renderer_impl.cc @@ -432,13 +432,12 @@ void TizenRendererImpl::SetPlaybackRate(double playback_rate) { playback_rate_ = playback_rate; - // TODO: Random error is observed on TM1. - // EsppPlayer::GetEsppPlayer()->SetRate(playback_rate_); - - if (playback_rate > 0) + if (playback_rate > 0) { + GetPlayer()->SetRate(playback_rate_); GetPlayer()->Play(); - else + } else { GetPlayer()->Pause(); + } } void TizenRendererImpl::SetVolume(float volume) { diff --git a/tizen_src/chromium_impl/media/base/tizen/media_player_bridge_capi.cc b/tizen_src/chromium_impl/media/base/tizen/media_player_bridge_capi.cc index 6da6d56..9eefb6aa 100644 --- a/tizen_src/chromium_impl/media/base/tizen/media_player_bridge_capi.cc +++ b/tizen_src/chromium_impl/media/base/tizen/media_player_bridge_capi.cc @@ -128,6 +128,7 @@ MediaPlayerBridgeCapi::MediaPlayerBridgeCapi(int player_id, is_seeking_(false), is_play_pending_(false), is_initialized_(false), + is_set_playback_rate_delayed_(false), duration_(0), playback_time_(0), seek_duration_(0), @@ -302,11 +303,21 @@ void MediaPlayerBridgeCapi::Play() { return; } + if (GetPlayerState() < PLAYER_STATE_READY) { + delayed_player_state_ = PLAYER_STATE_DELAYED_PLAY; + return; + } + if (playback_rate_ == 0.0) { is_paused_ = false; return; } + if (is_set_playback_rate_delayed_) { + is_set_playback_rate_delayed_ = false; + SetRate(playback_rate_); + } + if (player_start(player_) != PLAYER_ERROR_NONE) { LOG(ERROR) << "|player_start| failed"; return; @@ -358,6 +369,12 @@ void MediaPlayerBridgeCapi::SetRate(double rate) { return; } + if (GetPlayerState() < PLAYER_STATE_READY) { + playback_rate_ = rate; + is_set_playback_rate_delayed_ = true; + return; + } + if (!is_file_url_ && player_set_streaming_playback_rate(player_, static_cast(rate)) != PLAYER_ERROR_NONE) { diff --git a/tizen_src/chromium_impl/media/base/tizen/media_player_bridge_capi.h b/tizen_src/chromium_impl/media/base/tizen/media_player_bridge_capi.h index 396abe9..59d4133 100644 --- a/tizen_src/chromium_impl/media/base/tizen/media_player_bridge_capi.h +++ b/tizen_src/chromium_impl/media/base/tizen/media_player_bridge_capi.h @@ -105,6 +105,7 @@ class MEDIA_EXPORT MediaPlayerBridgeCapi : public MediaPlayerEfl { bool is_play_pending_; bool is_player_released_; bool is_initialized_; + bool is_set_playback_rate_delayed_; double duration_; double playback_time_; diff --git a/tizen_src/chromium_impl/media/filters/media_player_esplusplayer.cc b/tizen_src/chromium_impl/media/filters/media_player_esplusplayer.cc index 30c306c..a1b03fd 100644 --- a/tizen_src/chromium_impl/media/filters/media_player_esplusplayer.cc +++ b/tizen_src/chromium_impl/media/filters/media_player_esplusplayer.cc @@ -459,7 +459,7 @@ void MediaPlayerESPlusPlayer::SetRate(double rate) { int error = esplusplayer_set_playback_rate(esplayer_, playback_rate_, should_mute); if (error != ESPLUSPLAYER_ERROR_TYPE_NONE) { - LOG(ERROR) << "player pause failed! error #" + LOG(ERROR) << "player set playback rate failed! error #" << esplusplayer_get_error_string( static_cast(error)); return; diff --git a/tizen_src/chromium_impl/media/filters/media_player_esplusplayer.h b/tizen_src/chromium_impl/media/filters/media_player_esplusplayer.h index 72e0f6d..1f80bd7 100644 --- a/tizen_src/chromium_impl/media/filters/media_player_esplusplayer.h +++ b/tizen_src/chromium_impl/media/filters/media_player_esplusplayer.h @@ -161,7 +161,7 @@ class MEDIA_EXPORT MediaPlayerESPlusPlayer : public MediaPlayerTizen { last_frames_; double volume_ = 1.0; - bool playback_rate_ = 0.0; + double playback_rate_ = 0.0; bool is_prepared_ = false; bool is_preparing_ = false; bool is_paused_ = true; -- 2.7.4