[Release version 0.2.27] Add New APIs for encoded preview and get flash state 78/56278/11
authorHaesu Gwon <haesu.gwon@samsung.com>
Wed, 6 Jan 2016 03:16:00 +0000 (12:16 +0900)
committerhaesu.gwon <haesu.gwon@samsung.com>
Fri, 29 Jan 2016 04:57:56 +0000 (13:57 +0900)
Change-Id: I2f2df3fd986f859f8973984b3b0e3e8b3345eb7d
Signed-off-by: Haesu Gwon <haesu.gwon@samsung.com>
legacy/include/legacy_camera.h [changed mode: 0755->0644]
legacy/include/legacy_camera_internal.h [changed mode: 0755->0644]
legacy/include/legacy_camera_private.h [changed mode: 0755->0644]
legacy/src/legacy_camera.c
muse/include/muse_camera.h
muse/src/muse_camera_dispatcher.c [changed mode: 0755->0644]
packaging/mmsvc-camera.spec

old mode 100755 (executable)
new mode 100644 (file)
index 3775f6a..7a59e89
@@ -180,6 +180,14 @@ typedef enum {
        CAMERA_FACING_DIRECTION_FRONT,    /**< Front */
 } camera_facing_direction_e;
 
+/**
+ * @brief Enumeration for the current flash state.
+ * @since_tizen 3.0
+ */
+typedef enum {
+       CAMERA_FLASH_STATE_NOT_USED = 0,  /**< Flash is not used now through camera API */
+       CAMERA_FLASH_STATE_USED,          /**< Flash is used now through camera API */
+} camera_flash_state_e;
 
 /**
  * @brief The structure type of the image data.
@@ -453,6 +461,7 @@ typedef enum
     CAMERA_ATTR_FLASH_MODE_PERMANENT,        /**< Keep turned on until turning off */
 } camera_attr_flash_mode_e;
 
+
 /**
  * @brief Enumeration to preview FPS.
  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
@@ -915,6 +924,20 @@ int legacy_camera_stop_continuous_capture(camera_h camera);
 int legacy_camera_get_state(camera_h camera, camera_state_e *state);
 
 /**
+ * @brief Gets the device type of the camera.
+ *
+ * @since_tizen 3.0
+ * @param[in] camera The handle to the camera
+ * @param[out] device_type The current device type of the camera
+ * @return @c 0 on success, otherwise a negative error value
+ * @retval #CAMERA_ERROR_NONE Successful
+ * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
+ * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
+ */
+int legacy_camera_get_device_type(camera_h camera, camera_device_e *device_type);
+
+/**
  * @brief Starts camera auto-focusing, asynchronously.
  *
  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
@@ -3455,6 +3478,59 @@ bool legacy_camera_attr_is_supported_auto_contrast(camera_h camera);
 int legacy_camera_attr_disable_shutter_sound(camera_h camera, bool disable);
 
 /**
+ * @brief Gets the bit rate of encoded preview.
+ * @since_tizen 3.0
+ * @param[in] camera The handle to the camera
+ * @param[out] bitrate The bit rate of encoded preview
+ * @return @c 0 on success, otherwise a negative error value
+ * @retval #CAMERA_ERROR_NONE Successful
+ * @retval #CAMERA_ERROR_INVALID_OPERATION Internal error
+ * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
+ */
+int legacy_camera_attr_get_encoded_preview_bitrate(camera_h camera, int *bitrate);
+
+/**
+ * @brief Sets the bit rate of encoded preview.
+ * @since_tizen 3.0
+ * @param[in] camera The handle to the camera
+ * @param[in] bitrate The bit rate of encoded preview
+ * @return @c 0 on success, otherwise a negative error value
+ * @retval #CAMERA_ERROR_NONE Successful
+ * @retval #CAMERA_ERROR_INVALID_OPERATION Internal error
+ * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
+ */
+int legacy_camera_attr_set_encoded_preview_bitrate(camera_h camera, int bitrate);
+
+/**
+ * @brief Gets the GOP(Group Of Pictures) interval of encoded preview.
+ * @since_tizen 3.0
+ * @param[in] camera The handle to the camera
+ * @param[out] interval the GOP interval of encoded preview (mili second)
+ * @return @c 0 on success, otherwise a negative error value
+ * @retval #CAMERA_ERROR_NONE Successful
+ * @retval #CAMERA_ERROR_INVALID_OPERATION Internal error
+ * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
+ */
+int legacy_camera_attr_get_encoded_preview_gop_interval(camera_h camera, int *interval);
+
+/**
+ * @brief Sets the GOP(Group Of Pictures) interval of encoded preview.
+ * @since_tizen 3.0
+ * @param[in] camera The handle to the camera
+ * @param[in] interval the GOP interval of encoded preview (mili second)
+ * @return @c 0 on success, otherwise a negative error value
+ * @retval #CAMERA_ERROR_NONE Successful
+ * @retval #CAMERA_ERROR_INVALID_OPERATION Internal error
+ * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
+ */
+int legacy_camera_attr_set_encoded_preview_gop_interval(camera_h camera, int interval);
+
+
+/**
  * @}
  */
 #ifdef __cplusplus
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
index 5f7596d..31deb73
@@ -79,6 +79,7 @@ typedef struct _camera_s{
        bool on_continuous_focusing;
        int cached_focus_mode;
        media_format_h pkt_fmt;
+       camera_device_e device_type;
 
        GList *cb_data_list;
        GMutex idle_cb_lock;
index 00b0baf..a2b2506 100755 (executable)
@@ -645,6 +645,7 @@ int legacy_camera_create(camera_device_e device, camera_h* camera)
        handle->is_used_in_recorder = false;
        handle->on_continuous_focusing = false;
        handle->cached_focus_mode = -1;
+       handle->device_type = device;
 
        g_mutex_init(&handle->idle_cb_lock);
 
@@ -1086,7 +1087,6 @@ int legacy_camera_get_device_count(camera_h camera, int *device_count)
        return __convert_camera_error_code(__func__, ret);
 }
 
-
 int legacy_camera_start_face_detection(camera_h camera, camera_face_detected_cb callback, void *user_data)
 {
        if (camera == NULL) {
@@ -1175,6 +1175,20 @@ int legacy_camera_get_state(camera_h camera, camera_state_e *state)
        return CAMERA_ERROR_NONE;
 }
 
+int legacy_camera_get_device_type(camera_h camera, camera_device_e *device_type)
+{
+       int ret = MM_ERROR_NONE;
+       camera_s *handle = (camera_s *)camera;
+
+       if (camera == NULL || device_type == NULL) {
+               LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
+               return CAMERA_ERROR_INVALID_PARAMETER;
+       }
+
+       *device_type = handle->device_type;
+
+       return ret;
+}
 
 int legacy_camera_start_focusing(camera_h camera, bool continuous)
 {
@@ -4088,3 +4102,75 @@ int legacy_camera_attr_disable_shutter_sound(camera_h camera, bool disable)
 
        return CAMERA_ERROR_NONE;
 }
+
+
+int legacy_camera_attr_get_encoded_preview_bitrate(camera_h camera, int *bitrate)
+{
+       if (camera == NULL || bitrate == NULL) {
+               LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
+               return CAMERA_ERROR_INVALID_PARAMETER;
+       }
+
+       int ret = MM_ERROR_NONE;
+       camera_s *handle = (camera_s *)camera;
+
+       ret = mm_camcorder_get_attributes(handle->mm_handle, NULL,
+                                         MMCAM_ENCODED_PREVIEW_BITRATE, bitrate,
+                                         NULL);
+
+       return __convert_camera_error_code(__func__, ret);
+}
+
+
+int legacy_camera_attr_set_encoded_preview_bitrate(camera_h camera, int bitrate)
+{
+       if (camera == NULL) {
+               LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
+               return CAMERA_ERROR_INVALID_PARAMETER;
+       }
+
+       int ret = MM_ERROR_NONE;
+       camera_s *handle = (camera_s *)camera;
+
+       ret = mm_camcorder_set_attributes(handle->mm_handle, NULL,
+                                         MMCAM_ENCODED_PREVIEW_BITRATE, bitrate,
+                                         NULL);
+
+       return __convert_camera_error_code(__func__, ret);
+}
+
+
+int legacy_camera_attr_get_encoded_preview_gop_interval(camera_h camera, int *interval)
+{
+       if (camera == NULL || interval == NULL) {
+               LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
+               return CAMERA_ERROR_INVALID_PARAMETER;
+       }
+
+       int ret = MM_ERROR_NONE;
+       camera_s *handle = (camera_s *)camera;
+
+       ret = mm_camcorder_get_attributes(handle->mm_handle, NULL,
+                                         MMCAM_ENCODED_PREVIEW_GOP_INTERVAL, interval,
+                                         NULL);
+
+       return __convert_camera_error_code(__func__, ret);
+}
+
+
+int legacy_camera_attr_set_encoded_preview_gop_interval(camera_h camera, int interval)
+{
+       if (camera == NULL) {
+               LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
+               return CAMERA_ERROR_INVALID_PARAMETER;
+       }
+
+       int ret = MM_ERROR_NONE;
+       camera_s *handle = (camera_s *)camera;
+
+       ret = mm_camcorder_set_attributes(handle->mm_handle, NULL,
+                                         MMCAM_ENCODED_PREVIEW_GOP_INTERVAL, interval,
+                                         NULL);
+
+       return __convert_camera_error_code(__func__, ret);
+}
index f00b499..95a1d0e 100755 (executable)
@@ -71,102 +71,107 @@ typedef enum {
        MUSE_CAMERA_API_GET_CAPTURE_FORMAT,
        MUSE_CAMERA_API_GET_PREVIEW_FORMAT,
        MUSE_CAMERA_API_GET_FACING_DIRECTION,
-       MUSE_CAMERA_API_SET_PREVIEW_CB, //35
+       MUSE_CAMERA_API_GET_FLASH_STATE, //35
+       MUSE_CAMERA_API_SET_PREVIEW_CB,
        MUSE_CAMERA_API_UNSET_PREVIEW_CB,
        MUSE_CAMERA_API_SET_MEDIA_PACKET_PREVIEW_CB,
        MUSE_CAMERA_API_UNSET_MEDIA_PACKET_PREVIEW_CB,
-       MUSE_CAMERA_API_SET_STATE_CHANGED_CB,
-       MUSE_CAMERA_API_UNSET_STATE_CHANGED_CB, //40
+       MUSE_CAMERA_API_SET_STATE_CHANGED_CB, //40
+       MUSE_CAMERA_API_UNSET_STATE_CHANGED_CB,
        MUSE_CAMERA_API_SET_INTERRUPTED_CB,
        MUSE_CAMERA_API_UNSET_INTERRUPTED_CB,
        MUSE_CAMERA_API_SET_FOCUS_CHANGED_CB,
-       MUSE_CAMERA_API_UNSET_FOCUS_CHANGED_CB,
-       MUSE_CAMERA_API_SET_ERROR_CB, //45
+       MUSE_CAMERA_API_UNSET_FOCUS_CHANGED_CB, //45
+       MUSE_CAMERA_API_SET_ERROR_CB,
        MUSE_CAMERA_API_UNSET_ERROR_CB,
        MUSE_CAMERA_API_SET_FOREACH_SUPPORTED_PREVIEW_RESOLUTION,
        MUSE_CAMERA_API_SET_FOREACH_SUPPORTED_CAPTURE_RESOLUTION,
-       MUSE_CAMERA_API_SET_FOREACH_SUPPORTED_CAPTURE_FORMAT,
-       MUSE_CAMERA_API_SET_FOREACH_SUPPORTED_PREVIEW_FORMAT, //50
+       MUSE_CAMERA_API_SET_FOREACH_SUPPORTED_CAPTURE_FORMAT, //50
+       MUSE_CAMERA_API_SET_FOREACH_SUPPORTED_PREVIEW_FORMAT,
        MUSE_CAMERA_API_GET_RECOMMENDED_PREVIEW_RESOLUTION,
        MUSE_CAMERA_API_ATTR_GET_LENS_ORIENTATION,
        MUSE_CAMERA_API_ATTR_SET_THEATER_MODE,
-       MUSE_CAMERA_API_ATTR_GET_THEATER_MODE,
-       MUSE_CAMERA_API_ATTR_FOREACH_SUPPORTED_THEATER_MODE, //55
+       MUSE_CAMERA_API_ATTR_GET_THEATER_MODE, //55
+       MUSE_CAMERA_API_ATTR_FOREACH_SUPPORTED_THEATER_MODE,
        MUSE_CAMERA_API_ATTR_SET_PREVIEW_FPS,
        MUSE_CAMERA_API_ATTR_SET_IMAGE_QUALITY,
        MUSE_CAMERA_API_ATTR_GET_PREVIEW_FPS,
-       MUSE_CAMERA_API_ATTR_GET_IMAGE_QUALITY,
-       MUSE_CAMERA_API_ATTR_SET_ZOOM, //60
+       MUSE_CAMERA_API_ATTR_GET_IMAGE_QUALITY, //60
+       MUSE_CAMERA_API_ATTR_SET_ZOOM,
        MUSE_CAMERA_API_ATTR_SET_AF_MODE,
        MUSE_CAMERA_API_ATTR_SET_AF_AREA,
        MUSE_CAMERA_API_ATTR_CLEAR_AF_AREA,
-       MUSE_CAMERA_API_ATTR_SET_EXPOSURE_MODE,
-       MUSE_CAMERA_API_ATTR_SET_EXPOSURE, //65
+       MUSE_CAMERA_API_ATTR_SET_EXPOSURE_MODE, //65
+       MUSE_CAMERA_API_ATTR_SET_EXPOSURE,
        MUSE_CAMERA_API_ATTR_SET_ISO,
        MUSE_CAMERA_API_ATTR_SET_BRIGHTNESS,
        MUSE_CAMERA_API_ATTR_SET_CONTRAST,
-       MUSE_CAMERA_API_ATTR_SET_WHITEBALANCE,
-       MUSE_CAMERA_API_ATTR_SET_EFFECT, //70
+       MUSE_CAMERA_API_ATTR_SET_WHITEBALANCE, //70
+       MUSE_CAMERA_API_ATTR_SET_EFFECT,
        MUSE_CAMERA_API_ATTR_SET_SCENE_MODE,
        MUSE_CAMERA_API_ATTR_ENABLE_TAG,
        MUSE_CAMERA_API_ATTR_SET_TAG_IMAGE_DESCRIPTION,
-       MUSE_CAMERA_API_ATTR_SET_TAG_ORIENTATION,
-       MUSE_CAMERA_API_ATTR_SET_TAG_SOFTWARE, //75
+       MUSE_CAMERA_API_ATTR_SET_TAG_ORIENTATION, //75
+       MUSE_CAMERA_API_ATTR_SET_TAG_SOFTWARE,
        MUSE_CAMERA_API_ATTR_SET_GEOTAG,
        MUSE_CAMERA_API_ATTR_REMOVE_GEOTAG,
        MUSE_CAMERA_API_ATTR_SET_FLASH_MODE,
-       MUSE_CAMERA_API_ATTR_GET_ZOOM,
-       MUSE_CAMERA_API_ATTR_GET_ZOOM_RANGE, //80
+       MUSE_CAMERA_API_ATTR_GET_ZOOM, //80
+       MUSE_CAMERA_API_ATTR_GET_ZOOM_RANGE,
        MUSE_CAMERA_API_ATTR_GET_AF_MODE,
        MUSE_CAMERA_API_ATTR_GET_EXPOSURE_MODE,
        MUSE_CAMERA_API_ATTR_GET_EXPOSURE,
-       MUSE_CAMERA_API_ATTR_GET_EXPOSURE_RANGE,
-       MUSE_CAMERA_API_ATTR_GET_ISO, //85
+       MUSE_CAMERA_API_ATTR_GET_EXPOSURE_RANGE, //85
+       MUSE_CAMERA_API_ATTR_GET_ISO,
        MUSE_CAMERA_API_ATTR_GET_BRIGHTNESS,
        MUSE_CAMERA_API_ATTR_GET_BRIGHTNESS_RANGE,
        MUSE_CAMERA_API_ATTR_GET_CONTRAST,
-       MUSE_CAMERA_API_ATTR_GET_CONTRAST_RANGE,
-       MUSE_CAMERA_API_ATTR_GET_WHITEBALANCE, //90
+       MUSE_CAMERA_API_ATTR_GET_CONTRAST_RANGE, //90
+       MUSE_CAMERA_API_ATTR_GET_WHITEBALANCE,
        MUSE_CAMERA_API_ATTR_GET_EFFECT,
        MUSE_CAMERA_API_ATTR_GET_SCENE_MODE,
        MUSE_CAMERA_API_ATTR_IS_ENABLED_TAG,
-       MUSE_CAMERA_API_ATTR_GET_TAG_IMAGE_DESCRIPTION,
-       MUSE_CAMERA_API_ATTR_GET_TAG_ORIENTATION, //95
+       MUSE_CAMERA_API_ATTR_GET_TAG_IMAGE_DESCRIPTION, //95
+       MUSE_CAMERA_API_ATTR_GET_TAG_ORIENTATION,
        MUSE_CAMERA_API_ATTR_GET_TAG_SOFTWARE,
        MUSE_CAMERA_API_ATTR_GET_GEOTAG,
        MUSE_CAMERA_API_ATTR_GET_FLASH_MODE,
-       MUSE_CAMERA_API_ATTR_FOREACH_SUPPORTED_AF_MODE,
-       MUSE_CAMERA_API_ATTR_FOREACH_SUPPORTED_EXPOSURE_MODE, //100
+       MUSE_CAMERA_API_ATTR_FOREACH_SUPPORTED_AF_MODE, //100
+       MUSE_CAMERA_API_ATTR_FOREACH_SUPPORTED_EXPOSURE_MODE,
        MUSE_CAMERA_API_ATTR_FOREACH_SUPPORTED_ISO,
        MUSE_CAMERA_API_ATTR_FOREACH_SUPPORTED_WHITEBALANCE,
        MUSE_CAMERA_API_ATTR_FOREACH_SUPPORTED_EFFECT,
-       MUSE_CAMERA_API_ATTR_FOREACH_SUPPORTED_SCENE_MODE,
-       MUSE_CAMERA_API_ATTR_FOREACH_SUPPORTED_FLASH_MODE, //105
+       MUSE_CAMERA_API_ATTR_FOREACH_SUPPORTED_SCENE_MODE, //105
+       MUSE_CAMERA_API_ATTR_FOREACH_SUPPORTED_FLASH_MODE,
        MUSE_CAMERA_API_ATTR_FOREACH_SUPPORTED_FPS,
        MUSE_CAMERA_API_ATTR_FOREACH_SUPPORTED_FPS_BY_RESOLUTION,
        MUSE_CAMERA_API_ATTR_FOREACH_SUPPORTED_STREAM_FLIP,
-       MUSE_CAMERA_API_ATTR_FOREACH_SUPPORTED_STREAM_ROTATION,
-       MUSE_CAMERA_API_ATTR_SET_STREAM_ROTATION, //110
+       MUSE_CAMERA_API_ATTR_FOREACH_SUPPORTED_STREAM_ROTATION, //110
+       MUSE_CAMERA_API_ATTR_SET_STREAM_ROTATION,
        MUSE_CAMERA_API_ATTR_GET_STREAM_ROTATION,
        MUSE_CAMERA_API_ATTR_SET_STREAM_FLIP,
        MUSE_CAMERA_API_ATTR_GET_STREAM_FLIP,
-       MUSE_CAMERA_API_ATTR_SET_HDR_MODE,
-       MUSE_CAMERA_API_ATTR_GET_HDR_MODE, //115
+       MUSE_CAMERA_API_ATTR_SET_HDR_MODE, //115
+       MUSE_CAMERA_API_ATTR_GET_HDR_MODE,
        MUSE_CAMERA_API_ATTR_IS_SUPPORTED_HDR_CAPTURE,
        MUSE_CAMERA_API_ATTR_SET_HDR_CAPTURE_PROGRESS_CB,
        MUSE_CAMERA_API_ATTR_UNSET_HDR_CAPTURE_PROGRESS_CB,
-       MUSE_CAMERA_API_ATTR_ENABLE_ANTI_SHAKE,
-       MUSE_CAMERA_API_ATTR_IS_ENABLED_ANTI_SHAKE, //120
+       MUSE_CAMERA_API_ATTR_ENABLE_ANTI_SHAKE, //120
+       MUSE_CAMERA_API_ATTR_IS_ENABLED_ANTI_SHAKE,
        MUSE_CAMERA_API_ATTR_IS_SUPPORTED_ANTI_SHAKE,
        MUSE_CAMERA_API_ATTR_ENABLE_VIDEO_STABILIZATION,
        MUSE_CAMERA_API_ATTR_IS_ENABLED_VIDEO_STABILIZATION,
-       MUSE_CAMERA_API_ATTR_IS_SUPPORTED_VIDEO_STABILIZATION,
-       MUSE_CAMERA_API_ATTR_ENABLE_AUTO_CONTRAST, //125
+       MUSE_CAMERA_API_ATTR_IS_SUPPORTED_VIDEO_STABILIZATION, //125
+       MUSE_CAMERA_API_ATTR_ENABLE_AUTO_CONTRAST,
        MUSE_CAMERA_API_ATTR_IS_ENABLED_AUTO_CONTRAST,
        MUSE_CAMERA_API_ATTR_IS_SUPPORTED_AUTO_CONTRAST,
        MUSE_CAMERA_API_ATTR_DISABLE_SHUTTER_SOUND,
+       MUSE_CAMERA_API_ATTR_GET_ENCODED_PREVIEW_BITRATE, //130
+       MUSE_CAMERA_API_ATTR_SET_ENCODED_PREVIEW_BITRATE,
+       MUSE_CAMERA_API_ATTR_GET_ENCODED_PREVIEW_GOP_INTERVAL,
+       MUSE_CAMERA_API_ATTR_SET_ENCODED_PREVIEW_GOP_INTERVAL,
        MUSE_CAMERA_API_RETURN_BUFFER,
-       MUSE_CAMERA_API_PREVIEW_CB_RETURN, //130
+       MUSE_CAMERA_API_PREVIEW_CB_RETURN, // 135
        MUSE_CAMERA_API_MAX
 } muse_camera_api_e;
 
old mode 100755 (executable)
new mode 100644 (file)
index e86d9b5..460209c
@@ -1695,6 +1695,29 @@ int camera_dispatcher_get_facing_direction(muse_module_h module)
        return MUSE_CAMERA_ERROR_NONE;
 }
 
+int camera_dispatcher_get_flash_state(muse_module_h module)
+{
+       int ret = CAMERA_ERROR_NONE;
+       camera_device_e device_type = CAMERA_DEVICE_CAMERA0;
+       muse_camera_handle_s *muse_camera = NULL;
+       camera_flash_state_e get_flash_state = CAMERA_FLASH_STATE_NOT_USED;
+       muse_camera_api_e api = MUSE_CAMERA_API_GET_FLASH_STATE;
+       muse_camera_api_class_e class = MUSE_CAMERA_API_CLASS_IMMEDIATE;
+
+       muse_camera_msg_get(device_type, muse_core_client_get_msg(module));
+
+       if (device_type == CAMERA_DEVICE_CAMERA0)
+               muse_core_client_get_value(module, "flash_state_camera0", &get_flash_state);
+       else
+               muse_core_client_get_value(module, "flash_state_camera1", &get_flash_state);
+
+       LOGD("fash state : %d", get_flash_state);
+
+       muse_camera_msg_return1(api, class, ret, module, INT, get_flash_state);
+
+       return MUSE_CAMERA_ERROR_NONE;
+}
+
 int camera_dispatcher_set_preview_cb(muse_module_h module)
 {
        int ret = CAMERA_ERROR_NONE;
@@ -2645,7 +2668,8 @@ int camera_dispatcher_attr_set_flash_mode(muse_module_h module)
 {
        int ret = CAMERA_ERROR_NONE;
        muse_camera_handle_s *muse_camera = NULL;
-       int set_mode;
+       int set_mode = 0;;
+       camera_device_e device_type = CAMERA_DEVICE_CAMERA0;
        muse_camera_api_e api = MUSE_CAMERA_API_ATTR_SET_FLASH_MODE;
        muse_camera_api_class_e class = MUSE_CAMERA_API_CLASS_IMMEDIATE;
 
@@ -2656,6 +2680,15 @@ int camera_dispatcher_attr_set_flash_mode(muse_module_h module)
        LOGD("handle : 0x%x, set_mode : %d", muse_camera, set_mode);
 
        ret = legacy_camera_attr_set_flash_mode(muse_camera->camera_handle, (camera_attr_flash_mode_e)set_mode);
+       if (ret == CAMERA_ERROR_NONE) {
+               ret = legacy_camera_get_device_type(muse_camera->camera_handle, &device_type);
+               if (ret == CAMERA_ERROR_NONE) {
+                       if (device_type == CAMERA_DEVICE_CAMERA0)
+                               muse_core_client_set_value(module, "flash_state_camera0", set_mode>0?1:0);
+                       else
+                               muse_core_client_set_value(module, "flash_state_camera1", set_mode>0?1:0);
+               }
+       }
 
        LOGD("ret : 0x%x", ret);
 
@@ -3779,6 +3812,96 @@ int camera_dispatcher_attr_disable_shutter_sound(muse_module_h module)
        return MUSE_CAMERA_ERROR_NONE;
 }
 
+int camera_dispatcher_attr_get_encoded_preview_bitrate(muse_module_h module)
+{
+       int ret = CAMERA_ERROR_NONE;
+       muse_camera_handle_s *muse_camera = NULL;
+       int get_bitrate;
+       muse_camera_api_e api = MUSE_CAMERA_API_ATTR_GET_ENCODED_PREVIEW_BITRATE;
+       muse_camera_api_class_e class = MUSE_CAMERA_API_CLASS_IMMEDIATE;
+
+       muse_camera = (muse_camera_handle_s *)muse_core_ipc_get_handle(module);
+
+       LOGD("handle : %p", muse_camera);
+
+       ret = legacy_camera_attr_get_encoded_preview_bitrate(muse_camera->camera_handle, &get_bitrate);
+       if (ret == CAMERA_ERROR_NONE) {
+               muse_camera_msg_return1(api, class, ret, module, INT, get_bitrate);
+       } else {
+               muse_camera_msg_return(api, class, ret, module);
+       }
+
+       return MUSE_CAMERA_ERROR_NONE;
+}
+
+int camera_dispatcher_attr_set_encoded_preview_bitrate(muse_module_h module)
+{
+       int ret = CAMERA_ERROR_NONE;
+       muse_camera_handle_s *muse_camera = NULL;
+       int set_bitrate;
+       muse_camera_api_e api = MUSE_CAMERA_API_ATTR_SET_ENCODED_PREVIEW_BITRATE;
+       muse_camera_api_class_e class = MUSE_CAMERA_API_CLASS_IMMEDIATE;
+
+       muse_camera = (muse_camera_handle_s *)muse_core_ipc_get_handle(module);
+
+       muse_camera_msg_get(set_bitrate, muse_core_client_get_msg(module));
+
+       LOGD("handle : 0x%x, set_encoded_preview_bitrate : %d", muse_camera, set_bitrate);
+
+       ret = legacy_camera_attr_set_encoded_preview_bitrate(muse_camera->camera_handle, set_bitrate);
+
+       LOGD("ret : 0x%x", ret);
+
+       muse_camera_msg_return(api, class, ret, module);
+
+       return MUSE_CAMERA_ERROR_NONE;
+}
+
+int camera_dispatcher_attr_get_encoded_preview_gop_interval(muse_module_h module)
+{
+       int ret = CAMERA_ERROR_NONE;
+       muse_camera_handle_s *muse_camera = NULL;
+       int get_gop_interval;
+       muse_camera_api_e api = MUSE_CAMERA_API_ATTR_GET_ENCODED_PREVIEW_GOP_INTERVAL;
+       muse_camera_api_class_e class = MUSE_CAMERA_API_CLASS_IMMEDIATE;
+
+       muse_camera = (muse_camera_handle_s *)muse_core_ipc_get_handle(module);
+
+       LOGD("handle : %p", muse_camera);
+
+       ret = legacy_camera_attr_get_encoded_preview_gop_interval(muse_camera->camera_handle, &get_gop_interval);
+       if (ret == CAMERA_ERROR_NONE) {
+               muse_camera_msg_return1(api, class, ret, module, INT, get_gop_interval);
+       } else {
+               muse_camera_msg_return(api, class, ret, module);
+       }
+
+       return MUSE_CAMERA_ERROR_NONE;
+}
+
+int camera_dispatcher_attr_set_encoded_preview_gop_interval(muse_module_h module)
+{
+       int ret = CAMERA_ERROR_NONE;
+       muse_camera_handle_s *muse_camera = NULL;
+       int set_gop_interval;
+       muse_camera_api_e api = MUSE_CAMERA_API_ATTR_SET_ENCODED_PREVIEW_GOP_INTERVAL;
+       muse_camera_api_class_e class = MUSE_CAMERA_API_CLASS_IMMEDIATE;
+
+       muse_camera = (muse_camera_handle_s *)muse_core_ipc_get_handle(module);
+
+       muse_camera_msg_get(set_gop_interval, muse_core_client_get_msg(module));
+
+       LOGD("handle : 0x%x, set_encoded_preview_gop_interval : %d", muse_camera, set_gop_interval);
+
+       ret = legacy_camera_attr_set_encoded_preview_gop_interval(muse_camera->camera_handle, set_gop_interval);
+
+       LOGD("ret : 0x%x", ret);
+
+       muse_camera_msg_return(api, class, ret, module);
+
+       return MUSE_CAMERA_ERROR_NONE;
+}
+
 int camera_dispatcher_return_buffer(muse_module_h module)
 {
        int tbm_key = 0;
@@ -3857,6 +3980,7 @@ int (*dispatcher[MUSE_CAMERA_API_MAX]) (muse_module_h module) = {
        camera_dispatcher_get_capture_format, /* MUSE_CAMERA_API_GET_CAPTURE_FORMAT, */
        camera_dispatcher_get_preview_format, /* MUSE_CAMERA_API_GET_PREVIEW_FORMAT, */
        camera_dispatcher_get_facing_direction, /* MUSE_CAMERA_API_GET_FACING_DIRECTION, */
+       camera_dispatcher_get_flash_state, /* MUSE_CAMERA_API_GET_FLASH_STATE, */
        camera_dispatcher_set_preview_cb, /* MUSE_CAMERA_API_SET_PREVIEW_CB, */
        camera_dispatcher_unset_preview_cb, /* MUSE_CAMERA_API_UNSET_PREVIEW_CB, */
        camera_dispatcher_set_media_packet_preview_cb, /* MUSE_CAMERA_API_SET_MEDIA_PACKET_PREVIEW_CB, */
@@ -3951,6 +4075,10 @@ int (*dispatcher[MUSE_CAMERA_API_MAX]) (muse_module_h module) = {
        camera_dispatcher_attr_is_enabled_auto_contrast, /* MUSE_CAMERA_API_ATTR_IS_ENABLED_AUTO_CONTRAST, */
        camera_dispatcher_attr_is_supported_auto_contrast, /* MUSE_CAMERA_API_ATTR_IS_SUPPORTED_AUTO_CONTRAST, */
        camera_dispatcher_attr_disable_shutter_sound, /* MUSE_CAMERA_API_ATTR_DISABLE_SHUTTER_SOUND, */
+       camera_dispatcher_attr_get_encoded_preview_bitrate, /* MUSE_CAMERA_API_ATTR_GET_ENCODED_PREVIEW_BITRATE, */
+       camera_dispatcher_attr_set_encoded_preview_bitrate, /* MUSE_CAMERA_API_ATTR_SET_ENCODED_PREVIEW_BITRATE, */
+       camera_dispatcher_attr_get_encoded_preview_gop_interval, /* MUSE_CAMERA_API_ATTR_GET_ENCODED_PREVIEW_GOP_INTERVAL, */
+       camera_dispatcher_attr_set_encoded_preview_gop_interval, /* MUSE_CAMERA_API_ATTR_SET_ENCODED_PREVIEW_GOP_INTERVAL, */
        camera_dispatcher_return_buffer, /* MUSE_CAMERA_API_RETURN_BUFFER, */
        camera_dispatcher_preview_cb_return, /* MUSE_CAMERA_API_PREVIEW_CB_RETURN, */
 };
index 69c0802..3b679d4 100755 (executable)
@@ -3,7 +3,7 @@
 
 Name:       mmsvc-camera
 Summary:    A Camera module for muse server
-Version:    0.2.26
+Version:    0.2.27
 Release:    0
 Group:      Multimedia/Libraries
 License:    Apache-2.0