Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 28 additions & 0 deletions packages/video_player/tizen/inc/ftpw_video_player.h
Original file line number Diff line number Diff line change
@@ -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 <stdbool.h>

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
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
4 changes: 4 additions & 0 deletions packages/video_player/tizen/project_def.prop
Original file line number Diff line number Diff line change
Expand Up @@ -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
45 changes: 0 additions & 45 deletions packages/video_player/tizen/src/media_player_proxy.cc

This file was deleted.

60 changes: 0 additions & 60 deletions packages/video_player/tizen/src/media_player_proxy.h

This file was deleted.

62 changes: 11 additions & 51 deletions packages/video_player/tizen/src/video_player.cc
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,13 @@

#include "video_player.h"

#include <dlfcn.h>
#include <flutter/event_stream_handler_functions.h>
#include <flutter/standard_method_codec.h>

#include <algorithm>
#include <sstream>

#include "ftpw_video_player.h"
#include "log.h"
#include "video_player_error.h"

Expand Down Expand Up @@ -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<ScreensaverResetTimeout>(
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<ScreensaverOverrideReset>(
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,
Expand All @@ -137,8 +105,6 @@ VideoPlayer::VideoPlayer(flutter::PluginRegistrar *plugin_registrar,
gpu_surface_ = std::make_unique<FlutterDesktopGpuSurfaceDescriptor>();
texture_id_ = texture_registrar->RegisterTexture(texture_variant_.get());

media_player_proxy_ = std::make_unique<MediaPlayerProxy>();

int ret = player_create(&player_);
if (ret != PLAYER_ERROR_NONE) {
throw VideoPlayerError("player_create failed", get_error_message(ret));
Expand Down Expand Up @@ -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());
}
Expand Down Expand Up @@ -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_);
}
Expand Down Expand Up @@ -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).
Expand Down Expand Up @@ -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<VideoPlayer *>(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;
Expand Down Expand Up @@ -745,7 +705,7 @@ int64_t VideoPlayer::GetLiveDuration() {
std::string live_duration_str = "";
char *live_duration_buff = static_cast<char *>(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",
Expand All @@ -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",
Expand Down
10 changes: 0 additions & 10 deletions packages/video_player/tizen/src/video_player.h
Original file line number Diff line number Diff line change
Expand Up @@ -18,14 +18,10 @@
#include <queue>
#include <string>

#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<void()>;
Expand Down Expand Up @@ -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);
Expand Down Expand Up @@ -94,7 +87,6 @@ class VideoPlayer {
std::unique_ptr<flutter::EventSink<flutter::EncodableValue>> event_sink_;

player_h player_ = nullptr;
std::unique_ptr<MediaPlayerProxy> media_player_proxy_ = nullptr;
int64_t texture_id_ = -1;
std::string uri_;

Expand All @@ -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

Expand Down
Loading