#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"
return true;
}
if (!player_prepared_) {
+ DelayPlayExecution();
if (!PlayerPrePlay()) {
LOG_ID(ERROR, GetPlayerId()) << "HBBTV prePlay fail.";
return false;
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();
return true;
}
+
void MediaPlayerBridgeCapiTV::Pause(bool is_media_related_action) {
if (!player_prepared_) {
LOG_ID(INFO, GetPlayerId())
// 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_)
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;
}
}
#endif // TIZEN_VERSION_AT_LEAST(6, 0, 0)
}
-#endif
+#endif // defined(TIZEN_VIDEO_HOLE)
bool MediaPlayerBridgeCapiTV::HBBTVResourceAcquired() {
bool media_resource_acquired = false;