From 062fc73ff4ba8978c0a4d01418ea460d46900464 Mon Sep 17 00:00:00 2001 From: JunsuChoi Date: Fri, 18 Sep 2026 17:04:43 +0900 Subject: [PATCH] refactor(video_player): use native API wrapper --- .../tizen/inc/ftpw_video_player.h | 28 ++++++++ .../tizen/lib/aarch64/libftpw_video_player.so | Bin 0 -> 10416 bytes .../tizen/lib/armel/libftpw_video_player.so | Bin 0 -> 9660 bytes .../tizen/lib/i586/libftpw_video_player.so | Bin 0 -> 9680 bytes .../tizen/lib/x86_64/libftpw_video_player.so | Bin 0 -> 14608 bytes packages/video_player/tizen/project_def.prop | 4 ++ .../tizen/src/media_player_proxy.cc | 45 ------------- .../tizen/src/media_player_proxy.h | 60 ----------------- .../video_player/tizen/src/video_player.cc | 62 ++++-------------- .../video_player/tizen/src/video_player.h | 10 --- 10 files changed, 43 insertions(+), 166 deletions(-) create mode 100644 packages/video_player/tizen/inc/ftpw_video_player.h create mode 100755 packages/video_player/tizen/lib/aarch64/libftpw_video_player.so create mode 100755 packages/video_player/tizen/lib/armel/libftpw_video_player.so create mode 100755 packages/video_player/tizen/lib/i586/libftpw_video_player.so create mode 100755 packages/video_player/tizen/lib/x86_64/libftpw_video_player.so delete mode 100644 packages/video_player/tizen/src/media_player_proxy.cc delete mode 100644 packages/video_player/tizen/src/media_player_proxy.h diff --git a/packages/video_player/tizen/inc/ftpw_video_player.h b/packages/video_player/tizen/inc/ftpw_video_player.h new file mode 100644 index 000000000..06c33ae44 --- /dev/null +++ b/packages/video_player/tizen/inc/ftpw_video_player.h @@ -0,0 +1,28 @@ +// Copyright 2026 Samsung Electronics Co., Ltd. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +#ifndef FLUTTER_TIZEN_PLUGINS_WRAPPER_VIDEO_PLAYER_H_ +#define FLUTTER_TIZEN_PLUGINS_WRAPPER_VIDEO_PLAYER_H_ + +#include + +typedef enum { + PLAYER_ADAPTIVE_INFO_LIVE_DURATION = 3, + PLAYER_ADAPTIVE_INFO_IS_LIVE = 19, +} player_adaptive_Info_e; + +#ifdef __cplusplus +extern "C" { +#endif + +int ftpw_video_player_player_get_adaptive_streaming_info(void *player, + void *adaptive_info, + int adaptive_type); +int ftpw_video_player_screensaver_reset_timeout(void); +int ftpw_video_player_screensaver_override_reset(bool onoff); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/packages/video_player/tizen/lib/aarch64/libftpw_video_player.so b/packages/video_player/tizen/lib/aarch64/libftpw_video_player.so new file mode 100755 index 0000000000000000000000000000000000000000..f52f649aa7a5c2311cc8d550b4c943db419a4dcc GIT binary patch literal 10416 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 literal 0 HcmV?d00001 diff --git a/packages/video_player/tizen/project_def.prop b/packages/video_player/tizen/project_def.prop index e4b3eb48b..fb232a89d 100644 --- a/packages/video_player/tizen/project_def.prop +++ b/packages/video_player/tizen/project_def.prop @@ -18,3 +18,7 @@ USER_CPP_UNDEFS = USER_INC_DIRS = inc src USER_INC_FILES = USER_CPP_INC_FILES = + +# User libraries +USER_LIB_DIRS += lib/${BUILD_ARCH} +USER_LIBS += ftpw_video_player diff --git a/packages/video_player/tizen/src/media_player_proxy.cc b/packages/video_player/tizen/src/media_player_proxy.cc deleted file mode 100644 index 08128faa8..000000000 --- a/packages/video_player/tizen/src/media_player_proxy.cc +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright 2024 Samsung Electronics Co., Ltd. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "media_player_proxy.h" - -#include - -#include "log.h" - -typedef int (*FuncPlayerGetAdaptiveStreamingInfo)(player_h player, - void* adaptive_info, - int adaptive_type); - -MediaPlayerProxy::MediaPlayerProxy() { - media_player_handle_ = dlopen("libcapi-media-player.so.0", RTLD_LAZY); - if (media_player_handle_ == nullptr) { - LOG_ERROR("Failed to open media player."); - } -} - -MediaPlayerProxy::~MediaPlayerProxy() { - if (media_player_handle_) { - dlclose(media_player_handle_); - media_player_handle_ = nullptr; - } -} - -int MediaPlayerProxy::player_get_adaptive_streaming_info(player_h player, - void* adaptive_info, - int adaptive_type) { - if (!media_player_handle_) { - LOG_ERROR("media_player_handle_ not valid"); - return PLAYER_ERROR_NOT_AVAILABLE; - } - FuncPlayerGetAdaptiveStreamingInfo player_get_adaptive_streaming_info = - reinterpret_cast( - dlsym(media_player_handle_, "player_get_adaptive_streaming_info")); - if (!player_get_adaptive_streaming_info) { - LOG_ERROR("Fail to find player_get_adaptive_streaming_info."); - return PLAYER_ERROR_NOT_AVAILABLE; - } - return player_get_adaptive_streaming_info(player, adaptive_info, - adaptive_type); -} diff --git a/packages/video_player/tizen/src/media_player_proxy.h b/packages/video_player/tizen/src/media_player_proxy.h deleted file mode 100644 index d50b48181..000000000 --- a/packages/video_player/tizen/src/media_player_proxy.h +++ /dev/null @@ -1,60 +0,0 @@ -// Copyright 2024 Samsung Electronics Co., Ltd. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef FLUTTER_PLUGIN_MEDIA_PLAYER_PROXY_H_ -#define FLUTTER_PLUGIN_MEDIA_PLAYER_PROXY_H_ - -#include - -typedef enum { - PLAYER_ADAPTIVE_INFO_BITRATE_INIT, - PLAYER_ADAPTIVE_INFO_BITRATE_INIT_NUM, - PLAYER_ADAPTIVE_INFO_DURATION, - PLAYER_ADAPTIVE_INFO_LIVE_DURATION, - PLAYER_ADAPTIVE_INFO_AVAILABLE_BITRATES, - PLAYER_ADAPTIVE_INFO_RATE_RETURNED, - PLAYER_ADAPTIVE_INFO_CURRENT_BITRATE, - PLAYER_ADAPTIVE_INFO_GET_BUFFER_SIZE, - PLAYER_ADAPTIVE_INFO_FIXED_BITRATE, - PLAYER_ADAPTIVE_INFO_ADAPTIVE_BITRATE, - PLAYER_ADAPTIVE_INFO_MAX_BYTES, - PLAYER_ADAPTIVE_INFO_DRM_TYPE, - PLAYER_ADAPTIVE_INFO_RATE_REQUESTED, - PLAYER_ADAPTIVE_INFO_AUDIO_TRACK_REQUESTED, - PLAYER_ADAPTIVE_INFO_FORMAT, - PLAYER_ADAPTIVE_INFO_BLOCK, - PLAYER_ADAPTIVE_INFO_MIN_PERCENT, - PLAYER_ADAPTIVE_INFO_MIN_LATENCY, - PLAYER_ADAPTIVE_INFO_MAX_LATENCY, - PLAYER_ADAPTIVE_INFO_IS_LIVE, - PLAYER_ADAPTIVE_INFO_EMIT_SIGNAL, - PLAYER_ADAPTIVE_INFO_LOG_LEVEL, - PLAYER_ADAPTIVE_INFO_CURRENT_BANDWIDTH, - PLAYER_ADAPTIVE_INFO_URL_CUSTOM, - PLAYER_ADAPTIVE_INFO_GET_AUDIO_INFO, - PLAYER_ADAPTIVE_INFO_GET_VIDEO_INFO, - PLAYER_ADAPTIVE_INFO_GET_TEXT_INFO, - PLAYER_ADAPTIVE_INFO_RESUME_TIME, - PLAYER_ADAPTIVE_INFO_AUDIO_INDEX, - PLAYER_ADAPTIVE_INFO_PROXY_SETTING, - PLAYER_ADAPTIVE_INFO_ATSC3_L1_SERVER_TIME, - PLAYER_ADAPTIVE_INFO_VIDEO_FRAMES_DROPPED, - PLAYER_ADAPTIVE_INFO_STREAMING_IS_BUFFERING, - PLAYER_ADAPTIVE_INFO_PRESELECTION_ID, - PLAYER_ADAPTIVE_INFO_URI_TYPE -} player_adaptive_Info_e; - -class MediaPlayerProxy { - public: - MediaPlayerProxy(); - ~MediaPlayerProxy(); - - int player_get_adaptive_streaming_info(player_h player, void* adaptive_info, - int adaptive_type); - - private: - void* media_player_handle_ = nullptr; -}; - -#endif // FLUTTER_PLUGIN_MEDIA_PLAYER_PROXY_H_ diff --git a/packages/video_player/tizen/src/video_player.cc b/packages/video_player/tizen/src/video_player.cc index e1e1ee355..d07c03ad0 100644 --- a/packages/video_player/tizen/src/video_player.cc +++ b/packages/video_player/tizen/src/video_player.cc @@ -4,13 +4,13 @@ #include "video_player.h" -#include #include #include #include #include +#include "ftpw_video_player.h" #include "log.h" #include "video_player_error.h" @@ -82,38 +82,6 @@ FlutterDesktopGpuSurfaceDescriptor *VideoPlayer::ObtainGpuSurface( return gpu_surface_.get(); } -#ifdef TV_PROFILE -void VideoPlayer::InitScreenSaverApi() { - LOG_INFO("[VideoPlayer] InitScreenSaverApi()"); - screensaver_handle_ = dlopen("libcapi-screensaver.so", RTLD_LAZY); - if (!screensaver_handle_) { - LOG_ERROR("[VideoPlayer] dlopen failed: %s", dlerror()); - return; - } - - screensaver_reset_timeout_ = reinterpret_cast( - dlsym(screensaver_handle_, "screensaver_reset_timeout")); - if (!screensaver_reset_timeout_) { - LOG_ERROR("[VideoPlayer] Symbol not found: %s", dlerror()); - return; - } - - ScreensaverOverrideReset screensaver_override_reset = - reinterpret_cast( - dlsym(screensaver_handle_, "screensaver_override_reset")); - if (!screensaver_override_reset) { - LOG_ERROR("[VideoPlayer] Symbol not found: %s", dlerror()); - return; - } - - int ret = screensaver_override_reset(false); - if (ret != 0) { - LOG_ERROR("screensaver_override_reset failed: %s", get_error_message(ret)); - return; - } -} -#endif - VideoPlayer::VideoPlayer(flutter::PluginRegistrar *plugin_registrar, flutter::TextureRegistrar *texture_registrar, const std::string &uri, VideoPlayerOptions &options, @@ -137,8 +105,6 @@ VideoPlayer::VideoPlayer(flutter::PluginRegistrar *plugin_registrar, gpu_surface_ = std::make_unique(); texture_id_ = texture_registrar->RegisterTexture(texture_variant_.get()); - media_player_proxy_ = std::make_unique(); - int ret = player_create(&player_); if (ret != PLAYER_ERROR_NONE) { throw VideoPlayerError("player_create failed", get_error_message(ret)); @@ -231,7 +197,10 @@ VideoPlayer::VideoPlayer(flutter::PluginRegistrar *plugin_registrar, } #ifdef TV_PROFILE - InitScreenSaverApi(); + ret = ftpw_video_player_screensaver_override_reset(false); + if (ret != 0) { + LOG_ERROR("screensaver_override_reset failed: %s", get_error_message(ret)); + } #endif SetUpEventChannel(plugin_registrar->messenger()); } @@ -485,11 +454,6 @@ void VideoPlayer::Dispose() { } #ifdef TV_PROFILE - if (screensaver_handle_) { - dlclose(screensaver_handle_); - screensaver_handle_ = nullptr; - } - if (timer_id_ != 0) { g_source_remove(timer_id_); } @@ -562,8 +526,8 @@ void VideoPlayer::SendInitialized() { } } - // TODO(jsuya): Since media_player_proxy is not supported in Tizen - // profile(common), we cannot know whether the content is live or not. When + // TODO(jsuya): The adaptive streaming API is unavailable on the common + // profile, so we cannot know whether the content is live or not. When // the content is live, duration is always returned as 0, so we check if // duration is 1(Because of we set it to 1 to prevent video_player from // crashing when duration is returned as 0). @@ -597,14 +561,10 @@ void VideoPlayer::SendIsPlayingStateUpdate(bool is_playing) { } #ifdef TV_PROFILE -gboolean VideoPlayer::ResetScreensaverTimeout(gpointer data) { +gboolean VideoPlayer::ResetScreensaverTimeout(gpointer) { LOG_DEBUG("[VideoPlayer] Reset screen saver timeout."); - auto *player = static_cast(data); - if (!player->screensaver_reset_timeout_) { - return G_SOURCE_REMOVE; - } - int ret = player->screensaver_reset_timeout_(); + int ret = ftpw_video_player_screensaver_reset_timeout(); if (ret != 0) { LOG_ERROR("screensaver_reset_timeout failed: %s", get_error_message(ret)); return G_SOURCE_REMOVE; @@ -745,7 +705,7 @@ int64_t VideoPlayer::GetLiveDuration() { std::string live_duration_str = ""; char *live_duration_buff = static_cast(malloc(sizeof(char) * 64)); memset(live_duration_buff, 0, sizeof(char) * 64); - int ret = media_player_proxy_->player_get_adaptive_streaming_info( + int ret = ftpw_video_player_player_get_adaptive_streaming_info( player_, (void *)&live_duration_buff, PLAYER_ADAPTIVE_INFO_LIVE_DURATION); if (ret != PLAYER_ERROR_NONE) { LOG_ERROR("[MediaPlayer] player_get_adaptive_streaming_info failed: %s", @@ -766,7 +726,7 @@ int64_t VideoPlayer::GetLiveDuration() { bool VideoPlayer::IsLive() { int is_live = 0; - int ret = media_player_proxy_->player_get_adaptive_streaming_info( + int ret = ftpw_video_player_player_get_adaptive_streaming_info( player_, &is_live, PLAYER_ADAPTIVE_INFO_IS_LIVE); if (ret != PLAYER_ERROR_NONE) { LOG_ERROR("[MediaPlayer] player_get_adaptive_streaming_info failed: %s", diff --git a/packages/video_player/tizen/src/video_player.h b/packages/video_player/tizen/src/video_player.h index fd7b3097a..af2456e2b 100644 --- a/packages/video_player/tizen/src/video_player.h +++ b/packages/video_player/tizen/src/video_player.h @@ -18,14 +18,10 @@ #include #include -#include "media_player_proxy.h" #include "video_player_options.h" namespace video_player_tizen { -typedef int (*ScreensaverResetTimeout)(void); -typedef int (*ScreensaverOverrideReset)(bool onoff); - class VideoPlayer { public: using SeekCompletedCallback = std::function; @@ -60,9 +56,6 @@ class VideoPlayer { void Initialize(); void SendInitialized(); void SendIsPlayingStateUpdate(bool is_playing); -#ifdef TV_PROFILE - void InitScreenSaverApi(); -#endif static void OnPrepared(void *data); static void OnBuffering(int percent, void *data); @@ -94,7 +87,6 @@ class VideoPlayer { std::unique_ptr> event_sink_; player_h player_ = nullptr; - std::unique_ptr media_player_proxy_ = nullptr; int64_t texture_id_ = -1; std::string uri_; @@ -107,8 +99,6 @@ class VideoPlayer { SeekCompletedCallback on_seek_completed_; #ifdef TV_PROFILE - void *screensaver_handle_ = nullptr; - ScreensaverResetTimeout screensaver_reset_timeout_; guint timer_id_ = 0; #endif