From: Eunhae Choi Date: Mon, 28 Aug 2017 07:53:12 +0000 (+0900) Subject: add functions to control the display of 360 X-Git-Tag: submit/tizen/20170906.061717^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=3dfa9834dbe7618d6e3c20ae593ba94fa24e713c;p=platform%2Fcore%2Fmultimedia%2Fmmsvc-player.git add functions to control the display of 360 Change-Id: I0bee32a2f0e222d54f4aa3cf7eaedf24a99da16a --- diff --git a/legacy/include/legacy_player.h b/legacy/include/legacy_player.h index 00cbf67..91e0a01 100644 --- a/legacy/include/legacy_player.h +++ b/legacy/include/legacy_player.h @@ -2223,6 +2223,16 @@ int legacy_player_is_audio_only(player_h player, bool *paudio_only); int legacy_player_set_streaming_buffering_time(player_h player, int buffer_ms, int rebuffer_ms); int legacy_player_get_streaming_buffering_time(player_h player, int *buffer_ms, int *rebuffer_ms); +/* 360 video display */ +int legacy_player_360_set_enable(player_h player, bool enable); +int legacy_player_360_is_enabled(player_h player, bool *enabled); +int legacy_player_360_set_direction_of_view(player_h player, float yaw, float pitch); +int legacy_player_360_get_direction_of_view(player_h player, float *yaw, float *pitch); +int legacy_player_360_set_zoom(player_h player, float level); +int legacy_player_360_get_zoom(player_h player, float *level); +int legacy_player_360_set_field_of_view(player_h player, int horizontal_degrees, int vertical_degrees); +int legacy_player_360_get_field_of_view(player_h player, int *horizontal_degrees, int *vertical_degrees); + /** * @} */ diff --git a/legacy/src/legacy_player.c b/legacy/src/legacy_player.c index a9c54ba..fd9565a 100644 --- a/legacy/src/legacy_player.c +++ b/legacy/src/legacy_player.c @@ -3309,3 +3309,153 @@ int legacy_player_get_streaming_buffering_time(player_h player, int *buffer_ms, return PLAYER_ERROR_NONE; } } + +int legacy_player_360_set_enable(player_h player, bool enable) +{ + PLAYER_INSTANCE_CHECK(player); + player_s *handle = (player_s *)player; + + if (!__player_state_validate(handle, PLAYER_STATE_IDLE)) { + LOGE("PLAYER_ERROR_INVALID_STATE (0x%08x) : current state - %d", PLAYER_ERROR_INVALID_STATE, handle->state); + return PLAYER_ERROR_INVALID_STATE; + } + + int ret = mm_player_360_set_enable(handle->mm_handle, enable); + if (ret != MM_ERROR_NONE) + return __player_convert_error_code(ret, (char *)__FUNCTION__); + else + return PLAYER_ERROR_NONE; +} + +int legacy_player_360_is_enabled(player_h player, bool *enabled) +{ + PLAYER_INSTANCE_CHECK(player); + player_s *handle = (player_s *)player; + + if (!__player_state_validate(handle, PLAYER_STATE_IDLE)) { + LOGE("PLAYER_ERROR_INVALID_STATE (0x%08x) : current state - %d", PLAYER_ERROR_INVALID_STATE, handle->state); + return PLAYER_ERROR_INVALID_STATE; + } + + int ret = mm_player_360_is_enabled(handle->mm_handle, enabled); + if (ret != MM_ERROR_NONE) { + return __player_convert_error_code(ret, (char *)__FUNCTION__); + } else { + return PLAYER_ERROR_NONE; + } +} + +int legacy_player_360_set_direction_of_view(player_h player, float yaw, float pitch) +{ + PLAYER_INSTANCE_CHECK(player); + player_s *handle = (player_s *)player; + int ret = MM_ERROR_NONE; + + if (!__player_state_validate(handle, PLAYER_STATE_READY)) { + LOGE("PLAYER_ERROR_INVALID_STATE (0x%08x) : current state - %d", PLAYER_ERROR_INVALID_STATE, handle->state); + return PLAYER_ERROR_INVALID_STATE; + } + + ret = mm_player_360_set_direction_of_view(handle->mm_handle, yaw, pitch); + if (ret != MM_ERROR_NONE) + return __player_convert_error_code(ret, (char *)__FUNCTION__); + else + return PLAYER_ERROR_NONE; +} + +int legacy_player_360_get_direction_of_view(player_h player, float *yaw, float *pitch) +{ + PLAYER_INSTANCE_CHECK(player); + PLAYER_NULL_ARG_CHECK(yaw); + PLAYER_NULL_ARG_CHECK(pitch); + + player_s *handle = (player_s *)player; + int ret = MM_ERROR_NONE; + + if (!__player_state_validate(handle, PLAYER_STATE_IDLE)) { + LOGE("PLAYER_ERROR_INVALID_STATE (0x%08x) : current state - %d", PLAYER_ERROR_INVALID_STATE, handle->state); + return PLAYER_ERROR_INVALID_STATE; + } + + ret = mm_player_360_get_direction_of_view(handle->mm_handle, yaw, pitch); + if (ret != MM_ERROR_NONE) { + return __player_convert_error_code(ret, (char *)__FUNCTION__); + } else { + return PLAYER_ERROR_NONE; + } +} + +int legacy_player_360_set_zoom(player_h player, float level) +{ + PLAYER_INSTANCE_CHECK(player); + player_s *handle = (player_s *)player; + + if (!__player_state_validate(handle, PLAYER_STATE_PAUSED)) { + LOGE("PLAYER_ERROR_INVALID_STATE (0x%08x) : current state - %d", PLAYER_ERROR_INVALID_STATE, handle->state); + return PLAYER_ERROR_INVALID_STATE; + } + + int ret = mm_player_360_set_zoom(handle->mm_handle, level); + if (ret != MM_ERROR_NONE) + return __player_convert_error_code(ret, (char *)__FUNCTION__); + else + return PLAYER_ERROR_NONE; +} + +int legacy_player_360_get_zoom(player_h player, float *level) +{ + PLAYER_INSTANCE_CHECK(player); + player_s *handle = (player_s *)player; + + if (!__player_state_validate(handle, PLAYER_STATE_PAUSED)) { + LOGE("PLAYER_ERROR_INVALID_STATE (0x%08x) : current state - %d", PLAYER_ERROR_INVALID_STATE, handle->state); + return PLAYER_ERROR_INVALID_STATE; + } + + int ret = mm_player_360_get_zoom(handle->mm_handle, level); + if (ret != MM_ERROR_NONE) { + return __player_convert_error_code(ret, (char *)__FUNCTION__); + } else { + return PLAYER_ERROR_NONE; + } +} + +int legacy_player_360_set_field_of_view(player_h player, int horizontal_degrees, int vertical_degrees) +{ + PLAYER_INSTANCE_CHECK(player); + player_s *handle = (player_s *)player; + int ret = MM_ERROR_NONE; + + if (!__player_state_validate(handle, PLAYER_STATE_IDLE)) { + LOGE("PLAYER_ERROR_INVALID_STATE (0x%08x) : current state - %d", PLAYER_ERROR_INVALID_STATE, handle->state); + return PLAYER_ERROR_INVALID_STATE; + } + + ret = mm_player_360_set_field_of_view(handle->mm_handle, horizontal_degrees, vertical_degrees); + if (ret != MM_ERROR_NONE) + return __player_convert_error_code(ret, (char *)__FUNCTION__); + else + return PLAYER_ERROR_NONE; +} + +int legacy_player_360_get_field_of_view(player_h player, int *horizontal_degrees, int *vertical_degrees) +{ + PLAYER_INSTANCE_CHECK(player); + PLAYER_NULL_ARG_CHECK(horizontal_degrees); + PLAYER_NULL_ARG_CHECK(vertical_degrees); + + player_s *handle = (player_s *)player; + int ret = MM_ERROR_NONE; + + if (!__player_state_validate(handle, PLAYER_STATE_IDLE)) { + LOGE("PLAYER_ERROR_INVALID_STATE (0x%08x) : current state - %d", PLAYER_ERROR_INVALID_STATE, handle->state); + return PLAYER_ERROR_INVALID_STATE; + } + + ret = mm_player_360_get_field_of_view(handle->mm_handle, horizontal_degrees, vertical_degrees); + if (ret != MM_ERROR_NONE) { + return __player_convert_error_code(ret, (char *)__FUNCTION__); + } else { + return PLAYER_ERROR_NONE; + } +} diff --git a/muse/api.list b/muse/api.list index 8f28df1..8185913 100644 --- a/muse/api.list +++ b/muse/api.list @@ -84,4 +84,12 @@ get_max_adaptive_variant_limit set_audio_only is_audio_only set_streaming_buffering_time -get_streaming_buffering_time \ No newline at end of file +get_streaming_buffering_time +360_set_enable +360_is_enabled +360_set_direction_of_view +360_get_direction_of_view +360_set_zoom +360_get_zoom +360_set_field_of_view +360_get_field_of_view \ No newline at end of file diff --git a/muse/src/muse_player.c b/muse/src/muse_player.c index 0ee0ee0..72cf986 100644 --- a/muse/src/muse_player.c +++ b/muse/src/muse_player.c @@ -2910,7 +2910,6 @@ int player_disp_set_streaming_buffering_time(muse_module_h module) ret = legacy_player_set_streaming_buffering_time(muse_player->player_handle, buffer_ms, rebuffer_ms); player_msg_return(api, ret, module); - return ret; } @@ -2931,3 +2930,134 @@ int player_disp_get_streaming_buffering_time(muse_module_h module) return ret; } + +int player_disp_360_set_enable(muse_module_h module) +{ + int ret = PLAYER_ERROR_NONE; + muse_player_api_e api = MUSE_PLAYER_API_360_SET_ENABLE; + muse_player_handle_s *muse_player = NULL; + int val = 0; + + muse_player = (muse_player_handle_s *)muse_server_ipc_get_handle(module); + player_msg_get(val, muse_server_module_get_msg(module)); + + ret = legacy_player_360_set_enable(muse_player->player_handle, (bool)val); + + player_msg_return(api, ret, module); + return ret; +} + +int player_disp_360_is_enabled(muse_module_h module) +{ + int ret = PLAYER_ERROR_NONE; + muse_player_api_e api = MUSE_PLAYER_API_360_IS_ENABLED; + muse_player_handle_s *muse_player = NULL; + bool val; + + muse_player = (muse_player_handle_s *)muse_server_ipc_get_handle(module); + + ret = legacy_player_360_is_enabled(muse_player->player_handle, &val); + + player_msg_return1(api, ret, module, INT, val); + return ret; +} + +int player_disp_360_set_direction_of_view(muse_module_h module) +{ + int ret = PLAYER_ERROR_NONE; + muse_player_api_e api = MUSE_PLAYER_API_360_SET_DIRECTION_OF_VIEW; + muse_player_handle_s *muse_player = NULL; + double yaw, pitch; + bool ret_val = TRUE; + + player_msg_get2(muse_server_module_get_msg(module), yaw, DOUBLE, pitch, DOUBLE, ret_val); + if (ret_val) { + muse_player = (muse_player_handle_s *)muse_server_ipc_get_handle(module); + ret = legacy_player_360_set_direction_of_view(muse_player->player_handle, (float)yaw, (float)pitch); + } else { + ret = PLAYER_ERROR_INVALID_OPERATION; + } + player_msg_return(api, ret, module); + return ret; +} + +int player_disp_360_get_direction_of_view(muse_module_h module) +{ + int ret = PLAYER_ERROR_NONE; + muse_player_api_e api = MUSE_PLAYER_API_360_GET_DIRECTION_OF_VIEW; + muse_player_handle_s *muse_player = NULL; + float yaw_val, pitch_val; + + muse_player = (muse_player_handle_s *)muse_server_ipc_get_handle(module); + + ret = legacy_player_get_volume(muse_player->player_handle, &yaw_val, &pitch_val); + + player_msg_return2(api, ret, module, DOUBLE, yaw_val, DOUBLE, pitch_val); + return ret; +} + +int player_disp_360_set_zoom(muse_module_h module) +{ + int ret = PLAYER_ERROR_NONE; + muse_player_api_e api = MUSE_PLAYER_API_360_SET_ZOOM; + muse_player_handle_s *muse_player = NULL; + double level = 0; + + muse_player = (muse_player_handle_s *)muse_server_ipc_get_handle(module); + player_msg_get(level, muse_server_module_get_msg(module)); + + ret = legacy_player_360_set_zoom(muse_player->player_handle, (float)level); + + player_msg_return(api, ret, module); + return ret; +} + +int player_disp_360_get_zoom(muse_module_h module) +{ + int ret = PLAYER_ERROR_NONE; + muse_player_api_e api = MUSE_PLAYER_API_360_GET_ZOOM; + muse_player_handle_s *muse_player = NULL; + float zoom; + + muse_player = (muse_player_handle_s *)muse_server_ipc_get_handle(module); + + ret = legacy_player_360_get_zoom(muse_player->player_handle, &zoom); + + player_msg_return1(api, ret, module, DOUBLE, zoom); + return ret; +} + +int player_disp_360_set_field_of_view(muse_module_h module) +{ + int ret = PLAYER_ERROR_NONE; + muse_player_api_e api = MUSE_PLAYER_API_360_SET_FIELD_OF_VIEW; + muse_player_handle_s *muse_player = NULL; + int horizontal_degrees = 0, vertical_degrees = 0; + bool ret_val = TRUE; + + player_msg_get2(muse_server_module_get_msg(module), horizontal_degrees, INT, vertical_degrees, INT, ret_val); + if (ret_val) { + muse_player = (muse_player_handle_s *)muse_server_ipc_get_handle(module); + ret = legacy_player_360_set_field_of_view(muse_player->player_handle, horizontal_degrees, vertical_degrees); + } else { + ret = PLAYER_ERROR_INVALID_OPERATION; + } + player_msg_return(api, ret, module); + + return ret; +} + +int player_disp_360_get_field_of_view(muse_module_h module) +{ + int ret = PLAYER_ERROR_NONE; + muse_player_api_e api = MUSE_PLAYER_API_360_GET_FIELD_OF_VIEW; + muse_player_handle_s *muse_player = NULL; + int h_val = -1, v_val = -1; + + muse_player = (muse_player_handle_s *)muse_server_ipc_get_handle(module); + + ret = legacy_player_360_get_field_of_view(muse_player->player_handle, &h_val, &v_val); + + player_msg_return2(api, ret, module, DOUBLE, h_val, DOUBLE, v_val); + return ret; +}