From: Jeongmo Yang Date: Mon, 1 Feb 2016 09:33:06 +0000 (+0900) Subject: [Release version 0.10.35] Remove client related code X-Git-Tag: accepted/tizen/ivi/20160218.024021^0 X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fmultimedia%2Flibmm-camcorder.git;a=commitdiff_plain;h=a4ede73f7d91a55c808df6b0f8dbb06b5c2af8d9 [Release version 0.10.35] Remove client related code Change-Id: Id3eb554ccc3595812c5031ecf2b6854b8dc73400 Signed-off-by: Jeongmo Yang --- diff --git a/packaging/libmm-camcorder.spec b/packaging/libmm-camcorder.spec index 86dbe7e..61f6c44 100644 --- a/packaging/libmm-camcorder.spec +++ b/packaging/libmm-camcorder.spec @@ -2,7 +2,7 @@ Name: libmm-camcorder Summary: Camera and recorder library -Version: 0.10.34 +Version: 0.10.35 Release: 0 Group: Multimedia/Libraries License: Apache-2.0 @@ -84,6 +84,5 @@ cp LICENSE.APLv2 %{buildroot}/usr/share/license/%{name} %files devel %defattr(-,root,root,-) %{_includedir}/mmf/mm_camcorder.h -%{_includedir}/mmf/mm_camcorder_client.h %{_libdir}/pkgconfig/mm-camcorder.pc %{_libdir}/*.so diff --git a/src/Makefile.am b/src/Makefile.am index 8caaa64..28d4002 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -4,8 +4,7 @@ lib_LTLIBRARIES = libmmfcamcorder.la includelibmmfcamcorderdir = $(includedir)/mmf -includelibmmfcamcorder_HEADERS = include/mm_camcorder.h \ - include/mm_camcorder_client.h +includelibmmfcamcorder_HEADERS = include/mm_camcorder.h noinst_HEADERS = include/mm_camcorder_audiorec.h \ include/mm_camcorder_attribute.h \ @@ -33,7 +32,6 @@ libmmfcamcorder_la_SOURCES = mm_camcorder.c \ mm_camcorder_util.c \ mm_camcorder_exifinfo.c \ mm_camcorder_sound.c \ - mm_camcorder_client.c \ mm_camcorder_resource.c libmmfcamcorder_la_CFLAGS = -I$(srcdir)/include \ diff --git a/src/include/mm_camcorder_client.h b/src/include/mm_camcorder_client.h deleted file mode 100644 index bbf808d..0000000 --- a/src/include/mm_camcorder_client.h +++ /dev/null @@ -1,162 +0,0 @@ -/* - * libmm-camcorder - * - * Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved. - * - * Contact: Sejong Park - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -#ifndef __MM_CAMCORDER_MUSED_H__ -#define __MM_CAMCORDER_MUSED_H__ - -#include "mm_types.h" - -#ifdef __cplusplus - extern "C" { -#endif - -/** - * Camcorder Client's attribute enumeration. - */ -typedef enum -{ - MM_CAM_CLIENT_DISPLAY_SOCKET_PATH, - MM_CAM_CLIENT_DISPLAY_HANDLE, - MM_CAM_CLIENT_DISPLAY_DEVICE, - MM_CAM_CLIENT_DISPLAY_SURFACE, - MM_CAM_CLIENT_DISPLAY_RECT_X, - MM_CAM_CLIENT_DISPLAY_RECT_Y, - MM_CAM_CLIENT_DISPLAY_RECT_WIDTH, - MM_CAM_CLIENT_DISPLAY_RECT_HEIGHT, - MM_CAM_CLIENT_DISPLAY_SOURCE_X, - MM_CAM_CLIENT_DISPLAY_SOURCE_Y, - MM_CAM_CLIENT_DISPLAY_SOURCE_WIDTH, - MM_CAM_CLIENT_DISPLAY_SOURCE_HEIGHT, - MM_CAM_CLIENT_DISPLAY_ROTATION, - MM_CAM_CLIENT_DISPLAY_VISIBLE, - MM_CAM_CLIENT_DISPLAY_SCALE, - MM_CAM_CLIENT_DISPLAY_GEOMETRY_METHOD, - MM_CAM_CLIENT_DISPLAY_MODE, - MM_CAM_CLIENT_DISPLAY_EVAS_SURFACE_SINK, - MM_CAM_CLIENT_DISPLAY_EVAS_DO_SCALING, - MM_CAM_CLIENT_DISPLAY_FLIP, - MM_CAM_CLIENT_ATTRIBUTE_NUM -}MMCamcorderClientAttrsID; - -/** - * Camcorder Client Pipeline's Element name. - * @note index of element. - */ -typedef enum { - _MMCAMCORDER_CLIENT_NONE = (-1), - - /* Main Pipeline Element */ - _MMCAMCORDER_CLIENT_MAIN_PIPE = 0x00, - - /* Pipeline element of Video input */ - _MMCAMCORDER_CLIENT_VIDEOSRC_SRC, - - /* Pipeline elements of Video Capsfilter */ - _MMCAMCORDER_CLIENT_VIDEOSRC_FILT, - - /* Pipeline element of Video Sink Queue */ - _MMCAMCORDER_CLIENT_VIDEOSINK_QUE, - - /* Pipeline element of Video Sink CLS */ - _MMCAMCORDER_CLIENT_VIDEOSINK_CLS, - - /* Pipeline element of Video output */ - _MMCAMCORDER_CLIENT_VIDEOSINK_SINK, - - /* Client pipeline Max number */ - _MMCAMCORDER_CLIENT_PIPELINE_ELEMENT_NUM -} _MMCAMCORDER_PREVIEW_CLIENT_PIPELINE_ELELMENT; - -/** - * This function creates resources at the client process. - * - * @param[in] handle Handle of camcorder context. - * @return This function returns MM_ERROR_NONE on success, or the other values on error. - */ -int mm_camcorder_client_create(MMHandleType *handle); - -/** - * This function destroys resources from the client process. - * - * @param[in] handle Handle of camcorder context. - * @return void - */ -void mm_camcorder_client_destroy(MMHandleType handle); - -/** - * This function prepares for the state running. - * - * @param[in] handle Handle of camcorder context. - * @return This function returns MM_ERROR_NONE on success, or the other values on error. - * @see _mmcamcorder_client_realize function. - */ -int mm_camcorder_client_realize(MMHandleType handle, char *caps); - -/** - * This function unprepare for the state null. - * - * @param[in] handle Handle of camcorder context. - * @return This function returns MM_ERROR_NONE on success, or the other values on error. - * @see _mmcamcorder_client_unrealize function. - */ -int mm_camcorder_client_unrealize(MMHandleType handle); - -/** - * This function get string of raw video caps. - * To be used by server. - * - * @param handle [in] Handle of camera. - * @param caps [out] String of caps. Should be freed after used. - * - * @return This function returns zero on success, or negative value with error - * code. - * @see - * @since - */ -int mm_camcorder_client_get_video_caps(MMHandleType handle, char **caps); - -/** - * This function set "socket-path" element property of ipc sink/src. - * To be used by both server and client. - * - * @param handle [in] Handle of camera. - * @param path [in] Local file path. - * - * @return This function returns zero on success, or negative value with error - * code. - * @see - * @since - */ -int mm_camcorder_client_set_socket_path(MMHandleType handle, const char *path); - -/** - * This function get root directory of current process. - * - * @param root_directory [out] Root directory. - * @return This function returns zero on success, or negative value with error code. - */ -int mm_camcorder_client_get_root_directory(char **root_directory); - -#ifdef __cplusplus - } -#endif - -#endif /* __MM_CAMCORDER_MUSED_H__ */ diff --git a/src/include/mm_camcorder_internal.h b/src/include/mm_camcorder_internal.h index 96ef090..6966d1b 100644 --- a/src/include/mm_camcorder_internal.h +++ b/src/include/mm_camcorder_internal.h @@ -1179,7 +1179,7 @@ void _mmcamcorder_sound_focus_cb(int id, mm_sound_focus_type_e focus_type, void _mmcamcorder_sound_focus_watch_cb(mm_sound_focus_type_e focus_type, mm_sound_focus_state_e focus_state, const char *reason_for_change, const char *additional_info, void *user_data); -/* For hand over the server's caps informations to client */ +/* For hand over the server's caps information to client */ int _mmcamcorder_get_video_caps(MMHandleType handle, char **caps); #ifdef __cplusplus diff --git a/src/mm_camcorder_client.c b/src/mm_camcorder_client.c deleted file mode 100644 index ab0cada..0000000 --- a/src/mm_camcorder_client.c +++ /dev/null @@ -1,1676 +0,0 @@ -/* - * libmm-camcorder - * - * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved. - * - * Contact: Jeongmo Yang - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -/*=========================================================================================== -| | -| INCLUDE FILES | -| | -========================================================================================== */ -#include -#include -#include -#ifdef HAVE_WAYLAND -#include -#endif -#include -#include -#include -#include -#include - -#include -#include - -#include "mm_camcorder_client.h" -#include "mm_camcorder_internal.h" -#include - -#include - - -static _MMCamcorderInfoConverting g_client_display_info[] = { - { - CONFIGURE_TYPE_MAIN, - CONFIGURE_CATEGORY_MAIN_VIDEO_OUTPUT, - MM_CAM_CLIENT_DISPLAY_DEVICE, - MM_CAMCORDER_ATTR_NONE, - "DisplayDevice", - MM_CAMCONVERT_TYPE_INT_ARRAY, - NULL, - }, - { - CONFIGURE_TYPE_MAIN, - CONFIGURE_CATEGORY_MAIN_VIDEO_OUTPUT, - MM_CAM_CLIENT_DISPLAY_MODE, - MM_CAMCORDER_ATTR_NONE, - "DisplayMode", - MM_CAMCONVERT_TYPE_INT_ARRAY, - NULL, - }, - { - CONFIGURE_TYPE_MAIN, - CONFIGURE_CATEGORY_MAIN_VIDEO_OUTPUT, - MM_CAM_CLIENT_DISPLAY_SURFACE, - MM_CAMCORDER_ATTR_NONE, - "Videosink", - MM_CAMCONVERT_TYPE_INT_ARRAY, - NULL, - }, -}; - - -static int _storage_device_supported_cb(int storage_id, storage_type_e type, storage_state_e state, const char *path, void *user_data) -{ - char **root_directory = (char **)user_data; - - if (root_directory == NULL) { - _mmcam_dbg_warn("user data is NULL"); - return FALSE; - } - - _mmcam_dbg_log("storage id %d, type %d, state %d, path %s", - storage_id, type, state, path ? path : "NULL"); - - if (type == STORAGE_TYPE_INTERNAL && path) { - if (*root_directory) { - free(*root_directory); - *root_directory = NULL; - } - - *root_directory = strdup(path); - if (*root_directory) { - _mmcam_dbg_log("get root directory %s", *root_directory); - return FALSE; - } else { - _mmcam_dbg_warn("strdup %s failed"); - } - } - - return TRUE; -} - -bool _mmcamcorder_client_commit_display_handle(MMHandleType handle, int attr_idx, const mmf_value_t *value) -{ - int current_state = MM_CAMCORDER_STATE_NONE; - const char *videosink_name = NULL; - void *p_handle = NULL; - - mmf_camcorder_t *hcamcorder = MMF_CAMCORDER(handle); - _MMCamcorderSubContext *sc = NULL; - - mmf_return_val_if_fail(handle, FALSE); - - /* check type */ - if (hcamcorder->type == MM_CAMCORDER_MODE_AUDIO) { - _mmcam_dbg_err("invalid mode %d", hcamcorder->type); - return FALSE; - } - - /* check current state */ - current_state = _mmcamcorder_get_state(handle); - if (current_state < MM_CAMCORDER_STATE_READY) { - _mmcam_dbg_log("NOT initialized. this will be applied later"); - return TRUE; - } - - sc = MMF_CAMCORDER_SUBCONTEXT(handle); - - p_handle = value->value.p_val; - if (p_handle) { - /* get videosink name */ - _mmcamcorder_conf_get_value_element_name(sc->VideosinkElement, &videosink_name); - if (videosink_name == NULL) { - _mmcam_dbg_err("Please check videosink element in configuration file"); - return FALSE; - } - - _mmcam_dbg_log("Commit : videosinkname[%s]", videosink_name); - - if (!strcmp(videosink_name, "xvimagesink") || - !strcmp(videosink_name, "ximagesink")) { - _mmcam_dbg_log("Commit : Set XID[%x]", *(int*)(p_handle)); - gst_video_overlay_set_window_handle(GST_VIDEO_OVERLAY(sc->element[_MMCAMCORDER_CLIENT_VIDEOSINK_SINK].gst), *(int*)(p_handle)); - } else if (!strcmp(videosink_name, "evasimagesink") || - !strcmp(videosink_name, "evaspixmapsink")) { - _mmcam_dbg_log("Commit : Set evas object [%p]", p_handle); - MMCAMCORDER_G_OBJECT_SET_POINTER(sc->element[_MMCAMCORDER_CLIENT_VIDEOSINK_SINK].gst, "evas-object", p_handle); -#ifdef HAVE_WAYLAND - } else if (!strcmp(videosink_name, "waylandsink")) { - MMCamWaylandInfo *wl_info = (MMCamWaylandInfo *)p_handle; - - _mmcam_dbg_log("parent id : %d", wl_info->parent_id); - - gst_video_overlay_set_window_handle(GST_VIDEO_OVERLAY(sc->element[_MMCAMCORDER_CLIENT_VIDEOSINK_SINK].gst), (guintptr)wl_info->parent_id); - gst_video_overlay_set_render_rectangle(GST_VIDEO_OVERLAY(sc->element[_MMCAMCORDER_CLIENT_VIDEOSINK_SINK].gst), - wl_info->window_x, wl_info->window_y, wl_info->window_width, wl_info->window_height); -#endif /* HAVE_WAYLAND */ - } else { - _mmcam_dbg_warn("Commit : Nothing to commit with this element[%s]", videosink_name); - return FALSE; - } - } else { - _mmcam_dbg_warn("Display handle is NULL"); - return FALSE; - } - - return TRUE; -} - -bool _mmcamcorder_client_commit_display_rect(MMHandleType handle, int attr_idx, const mmf_value_t *value) -{ - int current_state = MM_CAMCORDER_STATE_NONE; - int method = 0; - const char *videosink_name = NULL; - - mmf_camcorder_t *hcamcorder = MMF_CAMCORDER(handle); - _MMCamcorderSubContext *sc = NULL; - - mmf_return_val_if_fail(handle, FALSE); - - /* check type */ - if (hcamcorder->type == MM_CAMCORDER_MODE_AUDIO) { - _mmcam_dbg_err("invalid mode %d", hcamcorder->type); - return FALSE; - } - - /* check current state */ - current_state = _mmcamcorder_get_state(handle); - if (current_state < MM_CAMCORDER_STATE_READY) { - _mmcam_dbg_log("NOT initialized. this will be applied later"); - return TRUE; - } - - sc = MMF_CAMCORDER_SUBCONTEXT(handle); - - /* check current method */ - mm_camcorder_get_attributes(handle, NULL, - MMCAM_DISPLAY_GEOMETRY_METHOD, &method, - NULL); - if (method != MM_DISPLAY_METHOD_CUSTOM_ROI) { - _mmcam_dbg_log("current method[%d] is not supported rect", method); - return FALSE; - } - - /* Get videosink name */ - _mmcamcorder_conf_get_value_element_name(sc->VideosinkElement, &videosink_name); - if (videosink_name == NULL) { - _mmcam_dbg_err("Please check videosink element in configuration file"); - return FALSE; - } - - if (!strcmp(videosink_name, "xvimagesink") || - !strcmp(videosink_name, "evaspixmapsink")) { - int rect_x = 0; - int rect_y = 0; - int rect_width = 0; - int rect_height = 0; - int flags = MM_ATTRS_FLAG_NONE; - MMCamAttrsInfo info; - - mm_camcorder_get_attributes(handle, NULL, - MMCAM_DISPLAY_RECT_X, &rect_x, - MMCAM_DISPLAY_RECT_Y, &rect_y, - MMCAM_DISPLAY_RECT_WIDTH, &rect_width, - MMCAM_DISPLAY_RECT_HEIGHT, &rect_height, - NULL); - switch (attr_idx) { - case MM_CAM_CLIENT_DISPLAY_RECT_X: - mm_camcorder_get_attribute_info(handle, MMCAM_DISPLAY_RECT_Y, &info); - flags |= info.flag; - memset(&info, 0x00, sizeof(info)); - mm_camcorder_get_attribute_info(handle, MMCAM_DISPLAY_RECT_WIDTH, &info); - flags |= info.flag; - memset(&info, 0x00, sizeof(info)); - mm_camcorder_get_attribute_info(handle, MMCAM_DISPLAY_RECT_HEIGHT, &info); - flags |= info.flag; - rect_x = value->value.i_val; - break; - case MM_CAM_CLIENT_DISPLAY_RECT_Y: - mm_camcorder_get_attribute_info(handle, MMCAM_DISPLAY_RECT_WIDTH, &info); - flags |= info.flag; - memset(&info, 0x00, sizeof(info)); - mm_camcorder_get_attribute_info(handle, MMCAM_DISPLAY_RECT_HEIGHT, &info); - flags |= info.flag; - rect_y = value->value.i_val; - break; - case MM_CAM_CLIENT_DISPLAY_RECT_WIDTH: - mm_camcorder_get_attribute_info(handle, MMCAM_DISPLAY_RECT_HEIGHT, &info); - flags |= info.flag; - rect_width = value->value.i_val; - break; - case MM_CAM_CLIENT_DISPLAY_RECT_HEIGHT: - rect_height = value->value.i_val; - break; - default: - _mmcam_dbg_err("Wrong attr_idx!"); - return FALSE; - } - - if (!(flags & MM_ATTRS_FLAG_MODIFIED)) { - _mmcam_dbg_log("RECT(x,y,w,h) = (%d,%d,%d,%d)", - rect_x, rect_y, rect_width, rect_height); - g_object_set(sc->element[_MMCAMCORDER_CLIENT_VIDEOSINK_SINK].gst, - "dst-roi-x", rect_x, - "dst-roi-y", rect_y, - "dst-roi-w", rect_width, - "dst-roi-h", rect_height, - NULL); - } - - return TRUE; - } else { - _mmcam_dbg_warn("videosink[%s] does not support display rect.", videosink_name); - return FALSE; - } -} - -bool _mmcamcorder_client_commit_display_rotation(MMHandleType handle, int attr_idx, const mmf_value_t *value) -{ - int current_state = MM_CAMCORDER_STATE_NONE; - - mmf_camcorder_t *hcamcorder = MMF_CAMCORDER(handle); - - mmf_return_val_if_fail(handle, FALSE); - - /* check type */ - if (hcamcorder->type == MM_CAMCORDER_MODE_AUDIO) { - _mmcam_dbg_err("invalid mode %d", hcamcorder->type); - return FALSE; - } - - /* check current state */ - current_state = _mmcamcorder_get_state(handle); - if (current_state < MM_CAMCORDER_STATE_READY) { - _mmcam_dbg_log("NOT initialized. this will be applied later [rotate:%d]", value->value.i_val); - return TRUE; - } - - return _mmcamcorder_set_display_rotation(handle, value->value.i_val, _MMCAMCORDER_CLIENT_VIDEOSINK_SINK); -} - -bool _mmcamcorder_client_commit_display_visible(MMHandleType handle, int attr_idx, const mmf_value_t *value) -{ - int current_state = MM_CAMCORDER_STATE_NONE; - const char *videosink_name = NULL; - - mmf_camcorder_t *hcamcorder = MMF_CAMCORDER(handle); - _MMCamcorderSubContext *sc = NULL; - - mmf_return_val_if_fail(handle, FALSE); - - /* check type */ - if (hcamcorder->type == MM_CAMCORDER_MODE_AUDIO) { - _mmcam_dbg_err("invalid mode %d", hcamcorder->type); - return FALSE; - } - - /* check current state */ - current_state = _mmcamcorder_get_state(handle); - if (current_state < MM_CAMCORDER_STATE_READY) { - _mmcam_dbg_log("NOT initialized. this will be applied later"); - return TRUE; - } - - sc = MMF_CAMCORDER_SUBCONTEXT(handle); - - /* Get videosink name */ - _mmcamcorder_conf_get_value_element_name(sc->VideosinkElement, &videosink_name); - if (videosink_name == NULL) { - _mmcam_dbg_err("Please check videosink element in configuration file"); - return FALSE; - } - - if (!strcmp(videosink_name, "waylandsink") || !strcmp(videosink_name, "xvimagesink") || - !strcmp(videosink_name, "evasimagesink") || !strcmp(videosink_name, "evaspixmapsink")) { - MMCAMCORDER_G_OBJECT_SET(sc->element[_MMCAMCORDER_CLIENT_VIDEOSINK_SINK].gst, "visible", value->value.i_val); - _mmcam_dbg_log("Set visible [%d] done.", value->value.i_val); - return TRUE; - } else { - _mmcam_dbg_warn("videosink[%s] does not support VISIBLE.", videosink_name); - return FALSE; - } -} - -bool _mmcamcorder_client_commit_display_geometry_method (MMHandleType handle, int attr_idx, const mmf_value_t *value) -{ - int method = 0; - int current_state = MM_CAMCORDER_STATE_NONE; - const char *videosink_name = NULL; - - mmf_camcorder_t *hcamcorder = MMF_CAMCORDER(handle); - _MMCamcorderSubContext *sc = NULL; - - mmf_return_val_if_fail(handle, FALSE); - - /* check type */ - if (hcamcorder->type == MM_CAMCORDER_MODE_AUDIO) { - _mmcam_dbg_err("invalid mode %d", hcamcorder->type); - return FALSE; - } - - /* check current state */ - current_state = _mmcamcorder_get_state(handle); - if (current_state < MM_CAMCORDER_STATE_READY) { - _mmcam_dbg_log("NOT initialized. this will be applied later"); - return TRUE; - } - - sc = MMF_CAMCORDER_SUBCONTEXT(handle); - - /* Get videosink name */ - _mmcamcorder_conf_get_value_element_name(sc->VideosinkElement, &videosink_name); - if (videosink_name == NULL) { - _mmcam_dbg_err("Please check videosink element in configuration file"); - return FALSE; - } - - if (!strcmp(videosink_name, "waylandsink") || !strcmp(videosink_name, "xvimagesink") || - !strcmp(videosink_name, "evasimagesink") || !strcmp(videosink_name, "evaspixmapsink")) { - method = value->value.i_val; - MMCAMCORDER_G_OBJECT_SET( sc->element[_MMCAMCORDER_CLIENT_VIDEOSINK_SINK].gst, "display-geometry-method", method); - return TRUE; - } else { - _mmcam_dbg_warn("videosink[%s] does not support geometry method.", videosink_name); - return FALSE; - } -} - -bool _mmcamcorder_client_commit_display_scale(MMHandleType handle, int attr_idx, const mmf_value_t *value) -{ - int zoom = 0; - int current_state = MM_CAMCORDER_STATE_NONE; - const char *videosink_name = NULL; - GstElement *vs_element = NULL; - - mmf_camcorder_t *hcamcorder = MMF_CAMCORDER(handle); - _MMCamcorderSubContext *sc = NULL; - - mmf_return_val_if_fail(handle, FALSE); - - /* check type */ - if (hcamcorder->type == MM_CAMCORDER_MODE_AUDIO) { - _mmcam_dbg_err("invalid mode %d", hcamcorder->type); - return FALSE; - } - - /* check current state */ - current_state = _mmcamcorder_get_state(handle); - if (current_state < MM_CAMCORDER_STATE_READY) { - _mmcam_dbg_log("NOT initialized. this will be applied later"); - return TRUE; - } - - sc = MMF_CAMCORDER_SUBCONTEXT(handle); - - /* Get videosink name */ - _mmcamcorder_conf_get_value_element_name(sc->VideosinkElement, &videosink_name); - if (videosink_name == NULL) { - _mmcam_dbg_err("Please check videosink element in configuration file"); - return FALSE; - } - - zoom = value->value.i_val; - if (!strcmp(videosink_name, "waylandsink") || !strcmp(videosink_name, "xvimagesink")) { - vs_element = sc->element[_MMCAMCORDER_CLIENT_VIDEOSINK_SINK].gst; - - MMCAMCORDER_G_OBJECT_SET(vs_element, "zoom", (float)(zoom + 1)); - _mmcam_dbg_log("Set display zoom to %d", zoom + 1); - - return TRUE; - } else { - _mmcam_dbg_warn("videosink[%s] does not support scale", videosink_name); - return FALSE; - } -} - -bool _mmcamcorder_client_commit_display_mode(MMHandleType handle, int attr_idx, const mmf_value_t *value) -{ - int current_state = MM_CAMCORDER_STATE_NONE; - const char *videosink_name = NULL; - - mmf_camcorder_t *hcamcorder = MMF_CAMCORDER(handle); - _MMCamcorderSubContext *sc = NULL; - - mmf_return_val_if_fail(handle, FALSE); - - /* check type */ - if (hcamcorder->type == MM_CAMCORDER_MODE_AUDIO) { - _mmcam_dbg_err("invalid mode %d", hcamcorder->type); - return FALSE; - } - - /* check current state */ - current_state = _mmcamcorder_get_state(handle); - if (current_state < MM_CAMCORDER_STATE_READY) { - _mmcam_dbg_log("NOT initialized. this will be applied later"); - return TRUE; - } - - sc = MMF_CAMCORDER_SUBCONTEXT(handle); - - _mmcamcorder_conf_get_value_element_name(sc->VideosinkElement, &videosink_name); - if (videosink_name == NULL) { - _mmcam_dbg_err("Please check videosink element in configuration file"); - return FALSE; - } - - _mmcam_dbg_log("Commit : videosinkname[%s]", videosink_name); - - if (!strcmp(videosink_name, "waylandsink") || !strcmp(videosink_name, "xvimagesink")) { - _mmcam_dbg_log("Commit : display mode [%d]", value->value.i_val); - MMCAMCORDER_G_OBJECT_SET(sc->element[_MMCAMCORDER_CLIENT_VIDEOSINK_SINK].gst, "display-mode", value->value.i_val); - return TRUE; - } else { - _mmcam_dbg_warn("Commit : This element [%s] does not support display mode", videosink_name); - return FALSE; - } -} - -bool _mmcamcorder_client_commit_display_evas_do_scaling(MMHandleType handle, int attr_idx, const mmf_value_t *value) -{ - int current_state = MM_CAMCORDER_STATE_NONE; - int do_scaling = 0; - const char *videosink_name = NULL; - - mmf_camcorder_t *hcamcorder= MMF_CAMCORDER( handle); - _MMCamcorderSubContext *sc = NULL; - - mmf_return_val_if_fail(handle, FALSE); - - /* check type */ - if (hcamcorder->type == MM_CAMCORDER_MODE_AUDIO) { - _mmcam_dbg_err("invalid mode %d", hcamcorder->type); - return FALSE; - } - - /* check current state */ - current_state = _mmcamcorder_get_state(handle); - if (current_state < MM_CAMCORDER_STATE_READY) { - _mmcam_dbg_log("NOT initialized. this will be applied later"); - return TRUE; - } - - sc = MMF_CAMCORDER_SUBCONTEXT(handle); - - do_scaling = value->value.i_val; - - /* Get videosink name */ - _mmcamcorder_conf_get_value_element_name(sc->VideosinkElement, &videosink_name); - if (videosink_name == NULL) { - _mmcam_dbg_err("Please check videosink element in configuration file"); - return FALSE; - } - - if (!strcmp(videosink_name, "evaspixmapsink")) { - MMCAMCORDER_G_OBJECT_SET(sc->element[_MMCAMCORDER_CLIENT_VIDEOSINK_SINK].gst, "origin-size", !do_scaling); - _mmcam_dbg_log("Set origin-size to %d", !(value->value.i_val)); - return TRUE; - } else { - _mmcam_dbg_warn("videosink[%s] does not support scale", videosink_name); - return FALSE; - } -} - -bool _mmcamcorder_client_commit_display_flip(MMHandleType handle, int attr_idx, const mmf_value_t *value) -{ - int current_state = MM_CAMCORDER_STATE_NONE; - - mmf_camcorder_t *hcamcorder = MMF_CAMCORDER(handle); - - mmf_return_val_if_fail(handle, FALSE); - - /* check type */ - if (hcamcorder->type == MM_CAMCORDER_MODE_AUDIO) { - _mmcam_dbg_err("invalid mode %d", hcamcorder->type); - return FALSE; - } - - /* check current state */ - current_state = _mmcamcorder_get_state(handle); - if (current_state < MM_CAMCORDER_STATE_READY) { - _mmcam_dbg_log("NOT initialized. this will be applied later [flip:%d]", value->value.i_val); - return TRUE; - } - - return _mmcamcorder_set_display_flip(handle, value->value.i_val, _MMCAMCORDER_CLIENT_VIDEOSINK_SINK); -} - -int _mmcamcorder_client_videosink_window_set(MMHandleType handle, type_element* VideosinkElement) -{ - int err = MM_ERROR_NONE; - int size = 0; - int retx = 0; - int rety = 0; - int retwidth = 0; - int retheight = 0; - int visible = 0; - int rotation = MM_DISPLAY_ROTATION_NONE; - int flip = MM_FLIP_NONE; - int display_mode = MM_DISPLAY_MODE_DEFAULT; - int display_geometry_method = MM_DISPLAY_METHOD_LETTER_BOX; - int origin_size = 0; - int zoom_attr = 0; - int zoom_level = 0; - int do_scaling = FALSE; - int *overlay = NULL; - gulong xid; - char *err_name = NULL; - const char *videosink_name = NULL; - - GstElement *vsink = NULL; - - mmf_camcorder_t *hcamcorder = MMF_CAMCORDER(handle); - _MMCamcorderSubContext *sc = NULL; - - mmf_return_val_if_fail(hcamcorder, MM_ERROR_CAMCORDER_NOT_INITIALIZED); - mmf_return_val_if_fail(VideosinkElement, MM_ERROR_CAMCORDER_INVALID_ARGUMENT); - - _mmcam_dbg_log(""); - - sc = MMF_CAMCORDER_SUBCONTEXT(handle); - mmf_return_val_if_fail(sc, MM_ERROR_CAMCORDER_NOT_INITIALIZED); - mmf_return_val_if_fail(sc->element, MM_ERROR_CAMCORDER_NOT_INITIALIZED); - mmf_return_val_if_fail(sc->element[_MMCAMCORDER_CLIENT_VIDEOSINK_SINK].gst, MM_ERROR_CAMCORDER_NOT_INITIALIZED); - - vsink = sc->element[_MMCAMCORDER_CLIENT_VIDEOSINK_SINK].gst; - - /* Get video display information */ - err = mm_camcorder_get_attributes(handle, &err_name, - MMCAM_DISPLAY_RECT_X, &retx, - MMCAM_DISPLAY_RECT_Y, &rety, - MMCAM_DISPLAY_RECT_WIDTH, &retwidth, - MMCAM_DISPLAY_RECT_HEIGHT, &retheight, - MMCAM_DISPLAY_ROTATION, &rotation, - MMCAM_DISPLAY_FLIP, &flip, - MMCAM_DISPLAY_VISIBLE, &visible, - MMCAM_DISPLAY_HANDLE, (void**)&overlay, &size, - MMCAM_DISPLAY_MODE, &display_mode, - MMCAM_DISPLAY_GEOMETRY_METHOD, &display_geometry_method, - MMCAM_DISPLAY_SCALE, &zoom_attr, - MMCAM_DISPLAY_EVAS_DO_SCALING, &do_scaling, - NULL); - if (err != MM_ERROR_NONE) { - if (err_name) { - _mmcam_dbg_err("failed to get attributes [%s][0x%x]", err_name, err); - SAFE_FREE(err_name); - } else { - _mmcam_dbg_err("failed to get attributes [0x%x]", err); - } - - return err; - } - - _mmcam_dbg_log("(overlay=%p, size=%d)", overlay, size); - - _mmcamcorder_conf_get_value_element_name(sc->VideosinkElement, &videosink_name); - - if (videosink_name == NULL) { - _mmcam_dbg_err("videosink_name is empty"); - return MM_ERROR_CAMCORDER_INVALID_CONDITION; - } - - - /* Set display handle */ - if (!strcmp(videosink_name, "xvimagesink") || - !strcmp(videosink_name, "ximagesink")) { - if (overlay) { - xid = *overlay; - _mmcam_dbg_log("xid = %lu )", xid); - gst_video_overlay_set_window_handle(GST_VIDEO_OVERLAY(vsink), xid); - } else { - _mmcam_dbg_warn("Handle is NULL. Set xid as 0.. but, it's not recommended."); - gst_video_overlay_set_window_handle(GST_VIDEO_OVERLAY(vsink), 0); - } - } else if (!strcmp(videosink_name, "evasimagesink") || - !strcmp(videosink_name, "evaspixmapsink")) { - _mmcam_dbg_log("videosink : %s, handle : %p", videosink_name, overlay); - if (overlay) { - MMCAMCORDER_G_OBJECT_SET_POINTER(vsink, "evas-object", overlay); - MMCAMCORDER_G_OBJECT_SET(vsink, "origin-size", !do_scaling); - } else { - _mmcam_dbg_err("display handle(eavs object) is NULL"); - return MM_ERROR_CAMCORDER_INVALID_ARGUMENT; - } -#ifdef HAVE_WAYLAND - } else if (!strcmp(videosink_name, "waylandsink")) { - MMCamWaylandInfo *wl_info = (MMCamWaylandInfo *)overlay; - if (wl_info) { - _mmcam_dbg_log("parent id : %d", wl_info->parent_id); - gst_video_overlay_set_window_handle(GST_VIDEO_OVERLAY(vsink), (guintptr)wl_info->parent_id); - gst_video_overlay_set_render_rectangle(GST_VIDEO_OVERLAY(vsink), - wl_info->window_x, wl_info->window_y, wl_info->window_width, wl_info->window_height); - } else { - _mmcam_dbg_warn("Handle is NULL. skip setting."); - } -#endif /* HAVE_WAYLAND */ - } else { - _mmcam_dbg_warn("Who are you?? (Videosink: %s)", videosink_name); - } - - _mmcam_dbg_log("%s set: display_geometry_method[%d],origin-size[%d],visible[%d],rotate[%d],flip[%d]", - videosink_name, display_geometry_method, origin_size, visible, rotation, flip); - - /* Set attribute */ - if (!strcmp(videosink_name, "waylandsink") || !strcmp(videosink_name, "xvimagesink") || - !strcmp(videosink_name, "evaspixmapsink")) { - /* set rotation */ - MMCAMCORDER_G_OBJECT_SET(vsink, "rotate", rotation); - - /* set flip */ - MMCAMCORDER_G_OBJECT_SET(vsink, "flip", flip); - - switch (zoom_attr) { - case MM_DISPLAY_SCALE_DEFAULT: - zoom_level = 1; - break; - case MM_DISPLAY_SCALE_DOUBLE_LENGTH: - zoom_level = 2; - break; - case MM_DISPLAY_SCALE_TRIPLE_LENGTH: - zoom_level = 3; - break; - default: - _mmcam_dbg_warn("Unsupported zoom value. set as default."); - zoom_level = 1; - break; - } - - MMCAMCORDER_G_OBJECT_SET(vsink, "display-geometry-method", display_geometry_method); - MMCAMCORDER_G_OBJECT_SET(vsink, "display-mode", display_mode); - MMCAMCORDER_G_OBJECT_SET(vsink, "visible", visible); - MMCAMCORDER_G_OBJECT_SET(vsink, "zoom", zoom_level); - - if (display_geometry_method == MM_DISPLAY_METHOD_CUSTOM_ROI) { - g_object_set(vsink, - "dst-roi-x", retx, - "dst-roi-y", rety, - "dst-roi-w", retwidth, - "dst-roi-h", retheight, - NULL); - } - } else { - _mmcam_dbg_warn("unsupported videosink [%s]", videosink_name); - } - - return MM_ERROR_NONE; -} - -int _mmcamcorder_client_init_attr_from_configure(MMHandleType handle) -{ - mmf_camcorder_t *hcamcorder = MMF_CAMCORDER(handle); - _MMCamcorderInfoConverting *info = NULL; - - int table_size = 0; - int ret = MM_ERROR_NONE; - - mmf_return_val_if_fail(hcamcorder, MM_ERROR_CAMCORDER_NOT_INITIALIZED); - - /* Initialize attribute related to display */ - info = g_client_display_info; - table_size = sizeof(g_client_display_info) / sizeof(_MMCamcorderInfoConverting); - ret = __mmcamcorder_set_info_to_attr(handle, info, table_size); - if (ret != MM_ERROR_NONE) { - _mmcam_dbg_err("display info set error : 0x%x", ret); - return ret; - } - - _mmcam_dbg_log("done"); - - return ret; -} - -MMHandleType _mmcamcorder_client_alloc_attribute(MMHandleType handle) -{ - _mmcam_dbg_log( "" ); - - mmf_camcorder_t *hcamcorder = MMF_CAMCORDER(handle); - MMHandleType attrs = 0; - mmf_attrs_construct_info_t *attrs_const_info = NULL; - unsigned int attr_count = 0; - unsigned int idx; - static int visible_values[] = { 0, 1 }; /*0: off, 1:on*/ - - mmf_return_val_if_fail(hcamcorder, NULL); - - /* Create attribute constructor */ - _mmcam_dbg_log("start"); - - /* alloc 'mmf_attrs_construct_info_t' */ - attr_count = MM_CAM_CLIENT_ATTRIBUTE_NUM; - attrs_const_info = malloc(attr_count * sizeof(mmf_attrs_construct_info_t)); - if (!attrs_const_info) { - _mmcam_dbg_err("Fail to alloc constructor."); - return 0; - } - - /* alloc default attribute info */ - hcamcorder->cam_attrs_const_info = (mm_cam_attr_construct_info *)malloc(sizeof(mm_cam_attr_construct_info) * attr_count); - if (hcamcorder->cam_attrs_const_info == NULL) { - _mmcam_dbg_err("failed to alloc default attribute info"); - free(attrs_const_info); - attrs_const_info = NULL; - return 0; - } - - /* basic attributes' info */ - mm_cam_attr_construct_info temp_info[] = { - { - MM_CAM_CLIENT_DISPLAY_SOCKET_PATH, - MMCAM_DISPLAY_SOCKET_PATH, - MMF_VALUE_TYPE_STRING, - MM_ATTRS_FLAG_RW, - {(void*)NULL}, - MM_ATTRS_VALID_TYPE_NONE, - {0}, - {0}, - NULL, - }, - { - MM_CAM_CLIENT_DISPLAY_HANDLE, - "display-handle", - MMF_VALUE_TYPE_DATA, - MM_ATTRS_FLAG_RW, - {(void*)NULL}, - MM_ATTRS_VALID_TYPE_NONE, - {0}, - {0}, - _mmcamcorder_client_commit_display_handle, - }, - { - MM_CAM_CLIENT_DISPLAY_DEVICE, - "display-device", - MMF_VALUE_TYPE_INT, - MM_ATTRS_FLAG_RW, - {(void*)MM_DISPLAY_DEVICE_MAINLCD}, - MM_ATTRS_VALID_TYPE_INT_ARRAY, - {0}, - {0}, - NULL, - }, - // 50 - { - MM_CAM_CLIENT_DISPLAY_SURFACE, - "display-surface", - MMF_VALUE_TYPE_INT, - MM_ATTRS_FLAG_RW, - {(void*)MM_DISPLAY_SURFACE_OVERLAY}, - MM_ATTRS_VALID_TYPE_INT_ARRAY, - {0}, - {0}, - NULL, - }, - { - MM_CAM_CLIENT_DISPLAY_RECT_X, - "display-rect-x", - MMF_VALUE_TYPE_INT, - MM_ATTRS_FLAG_RW, - {(void*)0}, - MM_ATTRS_VALID_TYPE_INT_RANGE, - {.int_min = 0}, - {.int_max = _MMCAMCORDER_MAX_INT}, - _mmcamcorder_client_commit_display_rect, - }, - { - MM_CAM_CLIENT_DISPLAY_RECT_Y, - "display-rect-y", - MMF_VALUE_TYPE_INT, - MM_ATTRS_FLAG_RW, - {(void*)0}, - MM_ATTRS_VALID_TYPE_INT_RANGE, - {.int_min = 0}, - {.int_max = _MMCAMCORDER_MAX_INT}, - _mmcamcorder_client_commit_display_rect, - }, - { - MM_CAM_CLIENT_DISPLAY_RECT_WIDTH, - "display-rect-width", - MMF_VALUE_TYPE_INT, - MM_ATTRS_FLAG_RW, - {(void*)0}, - MM_ATTRS_VALID_TYPE_INT_RANGE, - {.int_min = 0}, - {.int_max = _MMCAMCORDER_MAX_INT}, - _mmcamcorder_client_commit_display_rect, - }, - { - MM_CAM_CLIENT_DISPLAY_RECT_HEIGHT, - "display-rect-height", - MMF_VALUE_TYPE_INT, - MM_ATTRS_FLAG_RW, - {(void*)0}, - MM_ATTRS_VALID_TYPE_INT_RANGE, - {.int_min = 0}, - {.int_max = _MMCAMCORDER_MAX_INT}, - _mmcamcorder_client_commit_display_rect, - }, - { - MM_CAM_CLIENT_DISPLAY_SOURCE_X, - "display-src-x", - MMF_VALUE_TYPE_INT, - MM_ATTRS_FLAG_RW, - {(void*)0}, - MM_ATTRS_VALID_TYPE_INT_RANGE, - {.int_min = 0}, - {.int_max = _MMCAMCORDER_MAX_INT}, - NULL, - }, - { - MM_CAM_CLIENT_DISPLAY_SOURCE_Y, - "display-src-y", - MMF_VALUE_TYPE_INT, - MM_ATTRS_FLAG_RW, - {(void*)0}, - MM_ATTRS_VALID_TYPE_INT_RANGE, - {.int_min = 0}, - {.int_max = _MMCAMCORDER_MAX_INT}, - NULL, - }, - { - MM_CAM_CLIENT_DISPLAY_SOURCE_WIDTH, - "display-src-width", - MMF_VALUE_TYPE_INT, - MM_ATTRS_FLAG_RW, - {(void*)0}, - MM_ATTRS_VALID_TYPE_INT_RANGE, - {.int_min = 0}, - {.int_max = _MMCAMCORDER_MAX_INT}, - NULL, - }, - { - MM_CAM_CLIENT_DISPLAY_SOURCE_HEIGHT, - "display-src-height", - MMF_VALUE_TYPE_INT, - MM_ATTRS_FLAG_RW, - {(void*)0}, - MM_ATTRS_VALID_TYPE_INT_RANGE, - {.int_min = 0}, - {.int_max = _MMCAMCORDER_MAX_INT}, - NULL, - }, - { - MM_CAM_CLIENT_DISPLAY_ROTATION, - "display-rotation", - MMF_VALUE_TYPE_INT, - MM_ATTRS_FLAG_RW, - {(void*)MM_DISPLAY_ROTATION_NONE}, - MM_ATTRS_VALID_TYPE_INT_RANGE, - {.int_min = MM_DISPLAY_ROTATION_NONE}, - {.int_max = MM_DISPLAY_ROTATION_270}, - _mmcamcorder_client_commit_display_rotation, - }, - { // 60 - MM_CAM_CLIENT_DISPLAY_VISIBLE, - "display-visible", - MMF_VALUE_TYPE_INT, - MM_ATTRS_FLAG_RW, - {(void*)1}, - MM_ATTRS_VALID_TYPE_INT_ARRAY, - {visible_values}, - {ARRAY_SIZE(visible_values)}, - _mmcamcorder_client_commit_display_visible, - }, - { - MM_CAM_CLIENT_DISPLAY_SCALE, - "display-scale", - MMF_VALUE_TYPE_INT, - MM_ATTRS_FLAG_RW, - {(void*)0}, - MM_ATTRS_VALID_TYPE_INT_RANGE, - {.int_min = MM_DISPLAY_SCALE_DEFAULT}, - {.int_max = MM_DISPLAY_SCALE_TRIPLE_LENGTH}, - _mmcamcorder_client_commit_display_scale, - }, - { - MM_CAM_CLIENT_DISPLAY_GEOMETRY_METHOD, - "display-geometry-method", - MMF_VALUE_TYPE_INT, - MM_ATTRS_FLAG_RW, - {(void*)0}, - MM_ATTRS_VALID_TYPE_INT_RANGE, - {.int_min = MM_DISPLAY_METHOD_LETTER_BOX}, - {.int_max = MM_DISPLAY_METHOD_CUSTOM_ROI}, - _mmcamcorder_client_commit_display_geometry_method, - }, - { - MM_CAM_CLIENT_DISPLAY_MODE, - "display-mode", - MMF_VALUE_TYPE_INT, - MM_ATTRS_FLAG_RW, - {(void*)MM_DISPLAY_MODE_DEFAULT}, - MM_ATTRS_VALID_TYPE_INT_ARRAY, - {0}, - {0}, - _mmcamcorder_client_commit_display_mode, - }, - { - MM_CAM_CLIENT_DISPLAY_EVAS_SURFACE_SINK, - "display-evas-surface-sink", - MMF_VALUE_TYPE_STRING, - MM_ATTRS_FLAG_READABLE, - {(void*)NULL}, - MM_ATTRS_VALID_TYPE_NONE, - {0}, - {0}, - NULL, - }, - { - MM_CAM_CLIENT_DISPLAY_EVAS_DO_SCALING, - "display-evas-do-scaling", - MMF_VALUE_TYPE_INT, - MM_ATTRS_FLAG_RW, - {(void*)TRUE}, - MM_ATTRS_VALID_TYPE_INT_RANGE, - {.int_min = FALSE}, - {.int_max = TRUE}, - _mmcamcorder_client_commit_display_evas_do_scaling, - }, - { - MM_CAM_CLIENT_DISPLAY_FLIP, - "display-flip", - MMF_VALUE_TYPE_INT, - MM_ATTRS_FLAG_RW, - {(void*)MM_FLIP_NONE}, - MM_ATTRS_VALID_TYPE_INT_RANGE, - {.int_min = MM_FLIP_NONE}, - {.int_max = MM_FLIP_BOTH}, - _mmcamcorder_client_commit_display_flip, - }, - }; - - memcpy(hcamcorder->cam_attrs_const_info, temp_info, sizeof(mm_cam_attr_construct_info) * attr_count); - - for (idx = 0 ; idx < attr_count ; idx++) { - /* attribute order check. This should be same. */ - if (idx != hcamcorder->cam_attrs_const_info[idx].attrid) { - _mmcam_dbg_err("Please check attributes order. Is the idx same with enum val?"); - free(attrs_const_info); - attrs_const_info = NULL; - free(hcamcorder->cam_attrs_const_info); - hcamcorder->cam_attrs_const_info = NULL; - return 0; - } - - attrs_const_info[idx].name = hcamcorder->cam_attrs_const_info[idx].name; - attrs_const_info[idx].value_type = hcamcorder->cam_attrs_const_info[idx].value_type; - attrs_const_info[idx].flags = hcamcorder->cam_attrs_const_info[idx].flags; - attrs_const_info[idx].default_value = hcamcorder->cam_attrs_const_info[idx].default_value.value_void; - } - - /* Camcorder Attributes */ - _mmcam_dbg_log("Create Camcorder Attributes[%p, %d]", attrs_const_info, attr_count); - - attrs = mmf_attrs_new_from_data("Camcorder_Mused_Attributes", - attrs_const_info, - attr_count, - _mmcamcorder_commit_camcorder_attrs, - (void *)handle); - - free(attrs_const_info); - attrs_const_info = NULL; - - if (attrs == 0) { - _mmcam_dbg_err("Fail to alloc attribute handle"); - free(hcamcorder->cam_attrs_const_info); - hcamcorder->cam_attrs_const_info = NULL; - return 0; - } - - for (idx = 0; idx < attr_count; idx++) - { - /*_mmcam_dbg_log("Valid type [%s]", hcamcorder->cam_attrs_const_info[idx].name);*/ - - mmf_attrs_set_valid_type (attrs, idx, hcamcorder->cam_attrs_const_info[idx].validity_type); - - switch (hcamcorder->cam_attrs_const_info[idx].validity_type) - { - case MM_ATTRS_VALID_TYPE_INT_ARRAY: - if (hcamcorder->cam_attrs_const_info[idx].validity_value_1.int_array && - hcamcorder->cam_attrs_const_info[idx].validity_value_2.count > 0) { - mmf_attrs_set_valid_array(attrs, idx, - (const int *)(hcamcorder->cam_attrs_const_info[idx].validity_value_1.int_array), - hcamcorder->cam_attrs_const_info[idx].validity_value_2.count, - hcamcorder->cam_attrs_const_info[idx].default_value.value_int); - } - break; - case MM_ATTRS_VALID_TYPE_INT_RANGE: - mmf_attrs_set_valid_range(attrs, idx, - hcamcorder->cam_attrs_const_info[idx].validity_value_1.int_min, - hcamcorder->cam_attrs_const_info[idx].validity_value_2.int_max, - hcamcorder->cam_attrs_const_info[idx].default_value.value_int); - break; - case MM_ATTRS_VALID_TYPE_DOUBLE_ARRAY: - if (hcamcorder->cam_attrs_const_info[idx].validity_value_1.double_array && - hcamcorder->cam_attrs_const_info[idx].validity_value_2.count > 0) { - mmf_attrs_set_valid_double_array(attrs, idx, - (const double *)(hcamcorder->cam_attrs_const_info[idx].validity_value_1.double_array), - hcamcorder->cam_attrs_const_info[idx].validity_value_2.count, - hcamcorder->cam_attrs_const_info[idx].default_value.value_double); - } - break; - case MM_ATTRS_VALID_TYPE_DOUBLE_RANGE: - mmf_attrs_set_valid_double_range(attrs, idx, - hcamcorder->cam_attrs_const_info[idx].validity_value_1.double_min, - hcamcorder->cam_attrs_const_info[idx].validity_value_2.double_max, - hcamcorder->cam_attrs_const_info[idx].default_value.value_double); - break; - case MM_ATTRS_VALID_TYPE_NONE: - break; - case MM_ATTRS_VALID_TYPE_INVALID: - default: - _mmcam_dbg_err("Valid type error."); - break; - } - } - - return attrs; -} - -static gboolean -__mmcamcorder_client_gstreamer_init(camera_conf * conf) -{ - static const int max_argc = 10; - int i = 0; - int cnt_str = 0; - gint *argc = NULL; - gchar **argv = NULL; - GError *err = NULL; - gboolean ret = FALSE; - type_string_array *GSTInitOption = NULL; - - mmf_return_val_if_fail(conf, FALSE); - - _mmcam_dbg_log(""); - - /* alloc */ - argc = malloc(sizeof(int)); - argv = malloc(sizeof(gchar *) * max_argc); - - if (!argc || !argv) { - goto ERROR; - } - - memset(argv, 0, sizeof(gchar *) * max_argc); - - /* add initial */ - *argc = 1; - argv[0] = g_strdup("mmcamcorder"); - - /* add gst_param */ - _mmcamcorder_conf_get_value_string_array(conf, - CONFIGURE_CATEGORY_MAIN_GENERAL, - "GSTInitOption", - &GSTInitOption); - if (GSTInitOption != NULL && GSTInitOption->value) { - cnt_str = GSTInitOption->count; - for( ; *argc < max_argc && *argc <= cnt_str ; (*argc)++ ) - { - argv[*argc] = g_strdup(GSTInitOption->value[(*argc)-1]); - } - } - - _mmcam_dbg_log("initializing gstreamer with following parameter[argc:%d]", *argc); - - for (i = 0; i < *argc; i++) { - _mmcam_dbg_log("argv[%d] : %s", i, argv[i]); - } - - /* initializing gstreamer */ - ret = gst_init_check (argc, &argv, &err); - if (!ret) { - _mmcam_dbg_err("Could not initialize GStreamer: %s ", - err ? err->message : "unknown error occurred"); - if (err) { - g_error_free (err); - } - } - - /* release */ - for (i = 0; i < *argc; i++) { - if (argv[i]) { - g_free(argv[i]); - argv[i] = NULL; - } - } - - free(argv); - argv = NULL; - - free(argc); - argc = NULL; - - return ret; - -ERROR: - _mmcam_dbg_err("failed to initialize gstreamer"); - - if (argv) { - free(argv); - argv = NULL; - } - - if (argc) { - free(argc); - argc = NULL; - } - - return FALSE; -} - -int _mmcamcorder_client_create_preview_elements(MMHandleType handle, const char *videosink_name, char *string_caps) -{ - int ret = MM_ERROR_NONE; - GList *element_list = NULL; - GstElement *pipeline = NULL; - char *socket_path = NULL; - int socket_path_length; - GstCaps *caps; - - mmf_camcorder_t *hcamcorder = MMF_CAMCORDER(handle); - mmf_return_val_if_fail(hcamcorder, MM_ERROR_CAMCORDER_NOT_INITIALIZED); - mmf_return_val_if_fail(hcamcorder->sub_context, MM_ERROR_CAMCORDER_NOT_INITIALIZED); - - _MMCamcorderSubContext *sc = MMF_CAMCORDER_SUBCONTEXT(handle); - - /* create pipeline */ - _MMCAMCORDER_PIPELINE_MAKE(sc, sc->element, _MMCAMCORDER_CLIENT_MAIN_PIPE, "camera_client", ret); - - /* create source */ - if (hcamcorder->use_zero_copy_format) { - _MMCAMCORDER_ELEMENT_MAKE(sc, sc->element, _MMCAMCORDER_CLIENT_VIDEOSRC_SRC, "tizenipcsrc", "client_videosrc_src", element_list, ret); - } else { - _MMCAMCORDER_ELEMENT_MAKE(sc, sc->element, _MMCAMCORDER_CLIENT_VIDEOSRC_SRC, "shmsrc", "client_videosrc_src", element_list, ret); - } - - mm_camcorder_get_attributes(handle, NULL, - MMCAM_DISPLAY_SOCKET_PATH, &socket_path, &socket_path_length, - NULL); - - if (socket_path == NULL ) { - _mmcam_dbg_err("socket path is not set"); - goto set_videosrc_error; - } - - _mmcam_dbg_err("ipc src socket path : %s", socket_path); - - g_object_set(sc->element[_MMCAMCORDER_CLIENT_VIDEOSRC_SRC].gst, - "socket-path", socket_path, - "is-live", TRUE, - NULL); - - /* create capsfilter */ - _MMCAMCORDER_ELEMENT_MAKE(sc, sc->element, _MMCAMCORDER_CLIENT_VIDEOSRC_FILT, "capsfilter", "client_vidoesrc_filt", element_list, ret); - - caps = gst_caps_from_string(string_caps); - MMCAMCORDER_G_OBJECT_SET_POINTER(sc->element[_MMCAMCORDER_CLIENT_VIDEOSRC_FILT].gst, "caps", caps); - - gst_caps_unref(caps); - - caps = NULL; - - /* Making Video sink from here */ - _MMCAMCORDER_ELEMENT_MAKE(sc, sc->element, _MMCAMCORDER_CLIENT_VIDEOSINK_QUE, "queue", "client_videosink_queue", element_list, ret); - - /* Add color converting element */ - if (!strcmp(videosink_name, "evasimagesink") || !strcmp(videosink_name, "ximagesink")) { - _MMCAMCORDER_ELEMENT_MAKE(sc, sc->element, _MMCAMCORDER_CLIENT_VIDEOSINK_CLS, "videoconvert", "client_videosrc_convert", element_list, ret); - } - - /* create sink */ - _MMCAMCORDER_ELEMENT_MAKE(sc, sc->element, _MMCAMCORDER_CLIENT_VIDEOSINK_SINK, videosink_name, "client_videosink_sink", element_list, ret); - - if (strcmp(videosink_name, "fakesink") && strcmp(videosink_name, "tizenipcsink") && - strcmp(videosink_name, "shmsink")) { - if (_mmcamcorder_client_videosink_window_set(handle, sc->VideosinkElement) != MM_ERROR_NONE) { - _mmcam_dbg_err("_mmcamcorder_client_videosink_window_set error"); - ret = MM_ERROR_CAMCORDER_INVALID_ARGUMENT; - goto pipeline_creation_error; - } - } - - _mmcamcorder_conf_set_value_element_property(sc->element[_MMCAMCORDER_CLIENT_VIDEOSINK_SINK].gst, sc->VideosinkElement); - - /* add elements to main pipeline */ - if (!_mmcamcorder_add_elements_to_bin(GST_BIN(sc->element[_MMCAMCORDER_CLIENT_MAIN_PIPE].gst), element_list)) { - _mmcam_dbg_err("element_list add error."); - ret = MM_ERROR_CAMCORDER_RESOURCE_CREATION; - goto pipeline_creation_error; - } - - /* link elements */ - if (!_mmcamcorder_link_elements(element_list)) { - _mmcam_dbg_err( "element link error." ); - ret = MM_ERROR_CAMCORDER_GST_LINK; - goto pipeline_creation_error; - } - - pipeline = sc->element[_MMCAMCORDER_CLIENT_MAIN_PIPE].gst; - - ret = _mmcamcorder_gst_set_state(handle, pipeline, GST_STATE_PLAYING); - if (ret != MM_ERROR_NONE) { - _mmcam_dbg_err("error : destroy pipeline"); - goto pipeline_creation_error; - } - - if (element_list) { - g_list_free(element_list); - element_list = NULL; - } - - return MM_ERROR_NONE; - -pipeline_creation_error: - _MMCAMCORDER_ELEMENT_REMOVE(sc->element, _MMCAMCORDER_CLIENT_VIDEOSINK_SINK); - if (!strcmp(videosink_name, "evasimagesink") || !strcmp(videosink_name, "ximagesink")) { - _MMCAMCORDER_ELEMENT_REMOVE(sc->element, _MMCAMCORDER_CLIENT_VIDEOSINK_CLS); - } - _MMCAMCORDER_ELEMENT_REMOVE(sc->element, _MMCAMCORDER_CLIENT_VIDEOSINK_QUE); -set_videosrc_error: - _MMCAMCORDER_ELEMENT_REMOVE(sc->element, _MMCAMCORDER_CLIENT_VIDEOSRC_SRC); - _MMCAMCORDER_ELEMENT_REMOVE(sc->element, _MMCAMCORDER_CLIENT_MAIN_PIPE); - - if (element_list) { - g_list_free(element_list); - element_list = NULL; - } - - return ret; -} - -void __mmcamcorder_client_gst_destroy_pipeline(MMHandleType handle) -{ - _MMCamcorderSubContext *sc; - sc = MMF_CAMCORDER_SUBCONTEXT(handle); - - if (sc->element[_MMCAMCORDER_CLIENT_MAIN_PIPE].gst) { - MMCAMCORDER_G_OBJECT_SET(sc->element[_MMCAMCORDER_CLIENT_VIDEOSINK_QUE].gst, "empty-buffers", TRUE); - - _mmcamcorder_gst_set_state(handle, sc->element[_MMCAMCORDER_CLIENT_MAIN_PIPE].gst, GST_STATE_NULL); - _mmcamcorder_remove_all_handlers(handle, _MMCAMCORDER_HANDLER_CATEGORY_ALL); - - gst_object_unref(sc->element[_MMCAMCORDER_CLIENT_MAIN_PIPE].gst); - } - - return; -} - -int _mmcamcorder_client_realize(MMHandleType handle, char *string_caps) -{ - int ret = MM_ERROR_NONE; - mmf_camcorder_t *hcamcorder = MMF_CAMCORDER(handle); - - _MMCamcorderSubContext *sc; - int display_surface_type = MM_DISPLAY_SURFACE_OVERLAY; - char *videosink_element_type = NULL; - const char *videosink_name = NULL; - char *err_name = NULL; - - mmf_return_val_if_fail(hcamcorder, MM_ERROR_CAMCORDER_NOT_INITIALIZED); - _mmcam_dbg_log("Enter"); - - if (!_MMCAMCORDER_TRYLOCK_CMD(hcamcorder)) { - _mmcam_dbg_err("Another command is running."); - ret = MM_ERROR_CAMCORDER_CMD_IS_RUNNING; - goto _ERR_CAMCORDER_CMD_PRECON; - } - - /* alloc sub context */ - hcamcorder->sub_context = _mmcamcorder_alloc_subcontext(hcamcorder->type); - if(!hcamcorder->sub_context) { - ret = MM_ERROR_CAMCORDER_RESOURCE_CREATION; - goto _ERR_CAMCORDER_CMD; - } - - sc = MMF_CAMCORDER_SUBCONTEXT(handle); - - ret = mm_camcorder_get_attributes(handle, &err_name, - MMCAM_DISPLAY_SURFACE, &display_surface_type, - NULL); - - if (ret != MM_ERROR_NONE) { - _mmcam_dbg_warn("Get attrs fail. (%s:%x)", err_name, ret); - SAFE_FREE(err_name); - goto _ERR_CAMCORDER_SET_DISPLAY; - } - - _mmcam_dbg_warn("display_surface_type : %d", display_surface_type); - - switch (display_surface_type) { - case MM_DISPLAY_SURFACE_OVERLAY: - videosink_element_type = strdup("VideosinkElementOverlay"); - break; - case MM_DISPLAY_SURFACE_EVAS: - videosink_element_type = strdup("VideosinkElementEvas"); - break; - case MM_DISPLAY_SURFACE_GL: - videosink_element_type = strdup("VideosinkElementGL"); - break; - case MM_DISPLAY_SURFACE_NULL: - videosink_element_type = strdup("VideosinkElementNull"); - break; - default: - videosink_element_type = strdup("VideosinkElementOverlay"); - break; - } - - /* check string of videosink element */ - if (videosink_element_type) { - _mmcamcorder_conf_get_element(handle, hcamcorder->conf_main, - CONFIGURE_CATEGORY_MAIN_VIDEO_OUTPUT, - videosink_element_type, - &sc->VideosinkElement); - free(videosink_element_type); - videosink_element_type = NULL; - } else { - _mmcam_dbg_warn("strdup failed(display_surface_type %d). Use default X type", - display_surface_type); - - _mmcamcorder_conf_get_element(handle, hcamcorder->conf_main, - CONFIGURE_CATEGORY_MAIN_VIDEO_OUTPUT, - _MMCAMCORDER_DEFAULT_VIDEOSINK_TYPE, - &sc->VideosinkElement); - } - - _mmcamcorder_conf_get_value_element_name(sc->VideosinkElement, &videosink_name); - - if(videosink_name != NULL) { - _mmcam_dbg_log("Videosink name : %s", videosink_name); - ret = _mmcamcorder_client_create_preview_elements(handle, videosink_name, string_caps); - if (ret != MM_ERROR_NONE) { - _mmcam_dbg_err("create client's preview elements Failed."); - goto _ERR_CAMCORDER_SET_DISPLAY; - } - } else { - _mmcam_dbg_err("Get Videosink name error"); - goto _ERR_CAMCORDER_SET_DISPLAY; - } - - /* set command function */ - _mmcamcorder_set_state(handle, MM_CAMCORDER_STATE_READY); - - _MMCAMCORDER_UNLOCK_CMD(hcamcorder); - return ret; - -_ERR_CAMCORDER_SET_DISPLAY: - if (hcamcorder->sub_context) { - _mmcamcorder_dealloc_subcontext(hcamcorder->sub_context); - hcamcorder->sub_context = NULL; - } -_ERR_CAMCORDER_CMD: - _MMCAMCORDER_UNLOCK_CMD(hcamcorder); -_ERR_CAMCORDER_CMD_PRECON: - return ret; -} - -int _mmcamcorder_client_unrealize(MMHandleType handle) -{ - int ret = MM_ERROR_NONE; - int state = MM_CAMCORDER_STATE_NONE; - int state_FROM = MM_CAMCORDER_STATE_READY; - int state_TO = MM_CAMCORDER_STATE_NULL; - - mmf_camcorder_t *hcamcorder = MMF_CAMCORDER(handle); - mmf_return_val_if_fail(hcamcorder, MM_ERROR_CAMCORDER_NOT_INITIALIZED); - _mmcam_dbg_log("Enter"); - - if (!hcamcorder) { - _mmcam_dbg_err("Not initialized"); - ret = MM_ERROR_CAMCORDER_NOT_INITIALIZED; - return ret; - } - - _mmcam_dbg_log("try lock"); - if (!_MMCAMCORDER_TRYLOCK_CMD(hcamcorder)) { - _mmcam_dbg_err("Another command is running."); - ret = MM_ERROR_CAMCORDER_CMD_IS_RUNNING; - goto _ERR_CAMCORDER_CMD_PRECON; - } - - state = _mmcamcorder_get_state(handle); - if (state != state_FROM) { - _mmcam_dbg_err("Wrong state(%d)", state); - ret = MM_ERROR_CAMCORDER_INVALID_STATE; - goto _ERR_CAMCORDER_CMD_PRECON_AFTER_LOCK; - } - - /* Release SubContext */ - if (hcamcorder->sub_context) { - /* destroy pipeline */ - _mmcam_dbg_warn("destroy pipeline"); - __mmcamcorder_client_gst_destroy_pipeline(handle); - /* Deallocate SubContext */ - _mmcamcorder_dealloc_subcontext(hcamcorder->sub_context); - hcamcorder->sub_context = NULL; - } - - /* Deinitialize main context member */ - hcamcorder->command = NULL; - - _mmcam_dbg_log("un lock"); - _MMCAMCORDER_UNLOCK_CMD(hcamcorder); - - _mmcamcorder_set_state(handle, state_TO); - - return MM_ERROR_NONE; - -_ERR_CAMCORDER_CMD_PRECON_AFTER_LOCK: - _mmcam_dbg_log("un lock"); - _MMCAMCORDER_UNLOCK_CMD(hcamcorder); - -_ERR_CAMCORDER_CMD_PRECON: - /* send message */ - _mmcam_dbg_err("Unrealize fail (type %d, ret %x)", - hcamcorder->type, ret); - - return ret; -} - -static int _mm_camcorder_client_set_socket_path(MMHandleType handle, const char *path) -{ - int ret = MM_ERROR_NONE; - - _mmcam_dbg_log("handle : 0x%x, path:%s", handle, path); - - mm_camcorder_set_attributes(handle, NULL, - MMCAM_DISPLAY_SOCKET_PATH, path, strlen(path), - NULL); - - return ret; -} - -int mm_camcorder_client_create(MMHandleType *handle) -{ - int ret = MM_ERROR_NONE; - mmf_camcorder_t *hcamcorder = NULL; - - _mmcam_dbg_log("Enter"); - mmf_return_val_if_fail(handle, MM_ERROR_CAMCORDER_INVALID_ARGUMENT); - - /* Create mmf_camcorder_t handle and initialize every variable */ - hcamcorder = (mmf_camcorder_t *)malloc(sizeof(mmf_camcorder_t)); - mmf_return_val_if_fail(hcamcorder, MM_ERROR_CAMCORDER_LOW_MEMORY); - memset(hcamcorder, 0x00, sizeof(mmf_camcorder_t)); - - /* init values */ - hcamcorder->type = 0; - hcamcorder->state = MM_CAMCORDER_STATE_NONE; - hcamcorder->sub_context = NULL; - hcamcorder->target_state = MM_CAMCORDER_STATE_NULL; - hcamcorder->capture_in_recording = FALSE; - - g_mutex_init(&(hcamcorder->mtsafe).lock); - g_cond_init(&(hcamcorder->mtsafe).cond); - g_mutex_init(&(hcamcorder->mtsafe).cmd_lock); - g_mutex_init(&(hcamcorder->mtsafe).state_lock); - g_mutex_init(&(hcamcorder->mtsafe).gst_state_lock); - g_mutex_init(&(hcamcorder->mtsafe).message_cb_lock); - g_mutex_init(&hcamcorder->restart_preview_lock); - - /* Get Camera Configure information from Camcorder INI file */ - _mmcamcorder_conf_get_info((MMHandleType)hcamcorder, CONFIGURE_TYPE_MAIN, CONFIGURE_MAIN_FILE, &hcamcorder->conf_main); - - if (!(hcamcorder->conf_main)) { - _mmcam_dbg_err( "Failed to get configure(main) info." ); - - ret = MM_ERROR_CAMCORDER_CREATE_CONFIGURE; - goto _ERR_CAMCORDER_CREATE_CONFIGURE; - } - _mmcam_dbg_log("aloc attribute handle : 0x%x", (MMHandleType)hcamcorder); - hcamcorder->attributes = _mmcamcorder_client_alloc_attribute((MMHandleType)hcamcorder); - if (!(hcamcorder->attributes)) { - _mmcam_dbg_err("_mmcamcorder_create::alloc attribute error."); - - ret = MM_ERROR_CAMCORDER_RESOURCE_CREATION; - goto _ERR_CAMCORDER_RESOURCE_CREATION; - } - - ret = __mmcamcorder_client_gstreamer_init(hcamcorder->conf_main); - if (!ret) { - _mmcam_dbg_err( "Failed to initialize gstreamer!!" ); - ret = MM_ERROR_CAMCORDER_NOT_INITIALIZED; - goto _ERR_DEFAULT_VALUE_INIT; - } - - ret = _mmcamcorder_client_init_attr_from_configure((MMHandleType)hcamcorder); - if (ret != MM_ERROR_NONE) { - _mmcam_dbg_warn("client_init_attr_from_configure error!!"); - ret = MM_ERROR_CAMCORDER_INTERNAL; - goto _ERR_DEFAULT_VALUE_INIT; - } - - /* Get UseZeroCopyFormat value from INI */ - _mmcamcorder_conf_get_value_int((MMHandleType)hcamcorder, hcamcorder->conf_main, - CONFIGURE_CATEGORY_MAIN_VIDEO_INPUT, - "UseZeroCopyFormat", - &(hcamcorder->use_zero_copy_format)); - - /* Set initial state */ - _mmcamcorder_set_state((MMHandleType)hcamcorder, MM_CAMCORDER_STATE_NULL); - - _mmcam_dbg_log("created handle %p - UseZeroCopyFormat %d", - hcamcorder, hcamcorder->use_zero_copy_format); - - *handle = (MMHandleType)hcamcorder; - _mmcam_dbg_log("created client handle : 0x%x", *handle); - - return MM_ERROR_NONE; - -_ERR_CAMCORDER_CREATE_CONFIGURE: -_ERR_CAMCORDER_RESOURCE_CREATION: -_ERR_DEFAULT_VALUE_INIT: - /* Release lock, cond */ - g_mutex_clear(&(hcamcorder->mtsafe).lock); - g_cond_clear(&(hcamcorder->mtsafe).cond); - g_mutex_clear(&(hcamcorder->mtsafe).cmd_lock); - g_mutex_clear(&(hcamcorder->mtsafe).state_lock); - g_mutex_clear(&(hcamcorder->mtsafe).gst_state_lock); - g_mutex_clear(&(hcamcorder->mtsafe).gst_encode_state_lock); - g_mutex_clear(&(hcamcorder->mtsafe).message_cb_lock); - - g_mutex_clear(&(hcamcorder->restart_preview_lock)); - - if (hcamcorder->conf_ctrl) { - _mmcamcorder_conf_release_info(handle, &hcamcorder->conf_ctrl); - } - - if (hcamcorder->conf_main) { - _mmcamcorder_conf_release_info(handle, &hcamcorder->conf_main); - } - - /* Release handle */ - memset(hcamcorder, 0x00, sizeof(mmf_camcorder_t)); - free(hcamcorder); - - return ret; -} - -void mm_camcorder_client_destroy(MMHandleType handle) -{ - mmf_camcorder_t *hcamcorder = MMF_CAMCORDER(handle); - - _mmcam_dbg_log("try lock"); - - if (!_MMCAMCORDER_TRYLOCK_CMD(hcamcorder)) { - _mmcam_dbg_err("Another command is running."); - goto _ERR_CAMCORDER_CMD_PRECON; - } - - if (hcamcorder->attributes) { - _mmcamcorder_dealloc_attribute(handle, hcamcorder->attributes); - } - - _mmcam_dbg_log("unlock"); - _MMCAMCORDER_UNLOCK_CMD(hcamcorder); - - g_mutex_clear(&((hcamcorder->mtsafe).lock)); - g_cond_clear(&((hcamcorder->mtsafe).cond)); - g_mutex_clear(&((hcamcorder->mtsafe).cmd_lock)); - g_mutex_clear(&((hcamcorder->mtsafe).state_lock)); - g_mutex_clear(&((hcamcorder->mtsafe).gst_state_lock)); - g_mutex_clear(&((hcamcorder->mtsafe).message_cb_lock)); - g_mutex_clear(&(hcamcorder->restart_preview_lock)); - _mmcamcorder_set_state((MMHandleType)hcamcorder, MM_CAMCORDER_STATE_NONE); - /* Release handle */ - memset(hcamcorder, 0x00, sizeof(mmf_camcorder_t)); - free(hcamcorder); - -_ERR_CAMCORDER_CMD_PRECON: - return; -} - -int mm_camcorder_client_realize(MMHandleType handle, char *caps) -{ - int ret = MM_ERROR_NONE; - ret = _mmcamcorder_client_realize(handle, caps); - return ret; -} - -int mm_camcorder_client_unrealize(MMHandleType handle) -{ - int ret = MM_ERROR_NONE; - ret = _mmcamcorder_client_unrealize(handle); - return ret; -} - -int mm_camcorder_client_set_socket_path(MMHandleType handle, const char *path) -{ - int ret = MM_ERROR_NONE; - _mmcam_dbg_log("Entered "); - ret = _mm_camcorder_client_set_socket_path(handle, path); - return ret; -} - -int mm_camcorder_client_get_root_directory(char **root_directory) -{ - int ret = STORAGE_ERROR_NONE; - - if (root_directory == NULL) { - _mmcam_dbg_warn("user data is NULL"); - return MM_ERROR_CAMCORDER_INVALID_ARGUMENT; - } - - ret = storage_foreach_device_supported((storage_device_supported_cb)_storage_device_supported_cb, root_directory); - if (ret != STORAGE_ERROR_NONE) { - _mmcam_dbg_err("storage_foreach_device_supported failed 0x%x", ret); - return MM_ERROR_CAMCORDER_INTERNAL; - } - - return MM_ERROR_NONE; -} diff --git a/src/mm_camcorder_gstcommon.c b/src/mm_camcorder_gstcommon.c index bf205a3..8f0da1d 100644 --- a/src/mm_camcorder_gstcommon.c +++ b/src/mm_camcorder_gstcommon.c @@ -35,7 +35,6 @@ #include "mm_camcorder_internal.h" #include "mm_camcorder_gstcommon.h" -#include "mm_camcorder_client.h" /*----------------------------------------------------------------------- | GLOBAL VARIABLE DEFINITIONS for internal |