From 4a71467154cbd49979cf57459ee0244762dc316c Mon Sep 17 00:00:00 2001 From: Eunhae Choi Date: Wed, 2 Aug 2017 17:47:33 +0900 Subject: [PATCH] [0.3.65] check video supportable at create not to change the pre condition of some display API's. some API can be called before setting display. Change-Id: I629ec6fb17d67a4a1ce981bd583e74b5d6150098 --- include/player_private.h | 6 +++++ packaging/capi-media-player.spec | 2 +- src/player.c | 47 +++++++++++++++++++++++++--------------- 3 files changed, 36 insertions(+), 19 deletions(-) diff --git a/include/player_private.h b/include/player_private.h index 971b337..e724d38 100644 --- a/include/player_private.h +++ b/include/player_private.h @@ -47,6 +47,12 @@ do { \ #define PLAYER_NULL_ARG_CHECK(arg) \ PLAYER_CHECK_CONDITION((arg), PLAYER_ERROR_INVALID_PARAMETER, "PLAYER_ERROR_INVALID_PARAMETER") +#define PLAYER_VIDEO_SUPPORTABLE_CHECK(p) \ +do { \ + if (p && !p->support_video) \ + return PLAYER_ERROR_INVALID_OPERATION; \ +} while(0) + #define CONNECTION_RETRY 51 #define CONNECTION_TIME_OUT 50 /* ms */ #define CREATE_CB_TIME_OUT 400 /* ms */ diff --git a/packaging/capi-media-player.spec b/packaging/capi-media-player.spec index 001b17a..34132a2 100644 --- a/packaging/capi-media-player.spec +++ b/packaging/capi-media-player.spec @@ -1,6 +1,6 @@ Name: capi-media-player Summary: A Media Player API -Version: 0.3.64 +Version: 0.3.65 Release: 0 Group: Multimedia/API License: Apache-2.0 diff --git a/src/player.c b/src/player.c index 19c16d6..7a4bd36 100644 --- a/src/player.c +++ b/src/player.c @@ -50,14 +50,17 @@ #define INVALID_DEFAULT_VALUE -1 #define MAX_S_PATH_LEN 32 -#define PLAYER_VIDEO_SUPPORT_CHECK() \ +#define PLAYER_VIDEO_SUPPORT_CHECK(h) \ do { \ - void *handle; \ - handle = dlopen("libmmfevasrenderer.so.0", RTLD_LAZY); \ - if (!handle) \ - return PLAYER_ERROR_INVALID_OPERATION; \ - else \ - dlclose(handle); \ + void *_handle; \ + _handle = dlopen("libmmfevasrenderer.so.0", RTLD_LAZY); \ + if (_handle) { \ + h->support_video = TRUE; \ + EVAS_INFO(h)->support_video = TRUE; \ + dlclose(_handle); \ + } else { \ + LOGW("not support video rendering"); \ + } \ } while (0) typedef enum { @@ -1797,6 +1800,8 @@ int player_create(player_h * player) pc->support_video = FALSE; EVAS_INFO(pc)->support_video = FALSE; + PLAYER_VIDEO_SUPPORT_CHECK(pc); /* update supported_video */ + g_free(ret_buf); return ret; @@ -2567,11 +2572,13 @@ int _player_convert_display_type(player_display_type_e type, player_private_disp int player_set_display(player_h player, player_display_type_e type, player_display_h display) { PLAYER_INSTANCE_CHECK(player); - PLAYER_VIDEO_SUPPORT_CHECK(); int ret = PLAYER_ERROR_NONE; muse_player_api_e api = MUSE_PLAYER_API_SET_DISPLAY; player_cli_s *pc = (player_cli_s *) player; char *ret_buf = NULL; + + PLAYER_VIDEO_SUPPORTABLE_CHECK(pc); + Evas_Object *obj = NULL; const char *object_type = NULL; wl_win_msg_type wl_win; @@ -2583,7 +2590,6 @@ int player_set_display(player_h player, player_display_type_e type, player_displ Evas *e; player_private_display_type_e conv_type; player_state_e state = PLAYER_STATE_NONE; - pc->support_video = TRUE; /* init */ wl_win.wl_window_x = 0; @@ -2725,8 +2731,6 @@ int player_set_display(player_h player, player_display_type_e type, player_displ LOGW("fail to set decoded callback"); if (__player_set_retrieve_buffer_cb(player, __retrieve_buffer_cb, pc)) LOGW("fail to set __retrieve_buffer_cb"); - - EVAS_INFO(pc)->support_video = TRUE; } #endif else @@ -2753,7 +2757,8 @@ int player_set_display_mode(player_h player, player_display_mode_e mode) char *ret_buf = NULL; LOGD("ENTER"); - if (!pc->support_video) return PLAYER_ERROR_INVALID_OPERATION; + PLAYER_VIDEO_SUPPORTABLE_CHECK(pc); + #ifdef TIZEN_FEATURE_EVAS_RENDERER if (EVAS_HANDLE(pc)) { ret = mm_evas_renderer_set_geometry(EVAS_HANDLE(pc), mode); @@ -2782,7 +2787,8 @@ int player_get_display_mode(player_h player, player_display_mode_e * pmode) int mode = -1; LOGD("ENTER"); - if (!pc->support_video) return PLAYER_ERROR_INVALID_OPERATION; + PLAYER_VIDEO_SUPPORTABLE_CHECK(pc); + #ifdef TIZEN_FEATURE_EVAS_RENDERER if (EVAS_HANDLE(pc)) { ret = mm_evas_renderer_get_geometry(EVAS_HANDLE(pc), &mode); @@ -2817,7 +2823,8 @@ int player_set_display_roi_area(player_h player, int x, int y, int width, int he char *wl_win_msg = (char *)&wl_win; LOGD("ENTER"); - if (!pc->support_video) return PLAYER_ERROR_INVALID_OPERATION; + PLAYER_VIDEO_SUPPORTABLE_CHECK(pc); + #ifdef TIZEN_FEATURE_EVAS_RENDERER if (EVAS_HANDLE(pc)) { ret = mm_evas_renderer_set_roi_area(EVAS_HANDLE(pc), x, y, width, height); @@ -2870,7 +2877,8 @@ int player_set_display_rotation(player_h player, player_display_rotation_e rotat char *ret_buf = NULL; LOGD("ENTER"); - if (!pc->support_video) return PLAYER_ERROR_INVALID_OPERATION; + PLAYER_VIDEO_SUPPORTABLE_CHECK(pc); + #ifdef TIZEN_FEATURE_EVAS_RENDERER if (EVAS_HANDLE(pc)) { ret = mm_evas_renderer_set_rotation(EVAS_HANDLE(pc), rotation); @@ -2899,7 +2907,8 @@ int player_get_display_rotation(player_h player, player_display_rotation_e * pro int rotation = -1; LOGD("ENTER"); - if (!pc->support_video) return PLAYER_ERROR_INVALID_OPERATION; + PLAYER_VIDEO_SUPPORTABLE_CHECK(pc); + #ifdef TIZEN_FEATURE_EVAS_RENDERER if (EVAS_HANDLE(pc)) { ret = mm_evas_renderer_get_rotation(EVAS_HANDLE(pc), &rotation); @@ -2929,7 +2938,8 @@ int player_set_display_visible(player_h player, bool visible) char *ret_buf = NULL; LOGD("ENTER"); - if (!pc->support_video) return PLAYER_ERROR_INVALID_OPERATION; + PLAYER_VIDEO_SUPPORTABLE_CHECK(pc); + #ifdef TIZEN_FEATURE_EVAS_RENDERER if (EVAS_HANDLE(pc)) { ret = mm_evas_renderer_set_visible(EVAS_HANDLE(pc), visible); @@ -2962,7 +2972,8 @@ int player_is_display_visible(player_h player, bool * pvisible) bool visible = 0; #endif LOGD("ENTER"); - if (!pc->support_video) return PLAYER_ERROR_INVALID_OPERATION; + PLAYER_VIDEO_SUPPORTABLE_CHECK(pc); + #ifdef TIZEN_FEATURE_EVAS_RENDERER if (EVAS_HANDLE(pc)) { ret = mm_evas_renderer_get_visible(EVAS_HANDLE(pc), &visible); -- 2.7.4