[Release version 0.2.15] Add new API to support sound stream information set 13/60313/2 accepted/tizen/common/20160322.145931 accepted/tizen/ivi/20160322.084357 accepted/tizen/mobile/20160322.084302 accepted/tizen/tv/20160322.084318 accepted/tizen/wearable/20160322.084337 submit/tizen/20160322.011425
authorJeongmo Yang <jm80.yang@samsung.com>
Thu, 25 Feb 2016 03:38:48 +0000 (12:38 +0900)
committerJeongmo Yang <jm80.yang@samsung.com>
Thu, 10 Mar 2016 07:04:18 +0000 (16:04 +0900)
Change-Id: Icc6f2fcf01ce82d296cea4c47c3a98fc284b4030
Signed-off-by: Jeongmo Yang <jm80.yang@samsung.com>
legacy/include/legacy_recorder.h
legacy/src/legacy_recorder.c
muse/include/muse_recorder.h
muse/include/muse_recorder_msg.h
muse/src/muse_recorder_dispatcher.c
packaging/mmsvc-recorder.spec

index f0c5ac1..382ce0f 100644 (file)
@@ -656,6 +656,26 @@ int legacy_recorder_set_file_format(recorder_h recorder, recorder_file_format_e
 int legacy_recorder_get_file_format(recorder_h recorder, recorder_file_format_e *format);
 
 
+/**
+ * @brief Sets the recorder's sound manager stream information.
+ * @since_tizen 3.0
+ * @remarks You can set sound stream information including audio routing.
+ *          For more details, please refer to @ref CAPI_MEDIA_SOUND_MANAGER_MODULE
+ * @param[in]  recorder                The handle to the media recorder
+ * @param[in]  stream_type             The type of sound manager info
+ * @param[in]  stream_index    The index of sound manager info
+ * @return @c 0 on success, otherwise a negative error value
+ * @retval #RECORDER_ERROR_NONE Successful
+ * @retval #RECORDER_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #RECORDER_ERROR_INVALID_STATE Invalid state
+ * @pre The recorder state must be #RECORDER_STATE_CREATED or #RECORDER_STATE_READY
+ * @see #sound_stream_info_h
+ * @see sound_manager_create_stream_information()
+ * @see sound_manager_destroy_stream_information()
+ */
+int legacy_recorder_set_sound_stream_info(recorder_h recorder, char *stream_type, int stream_index);
+
+
  /**
  * @}
 */
index 8e36a5c..2d194bf 100644 (file)
@@ -2023,3 +2023,35 @@ int legacy_recorder_attr_set_root_directory(recorder_h recorder,  const char *ro
 
        return __convert_recorder_error_code(__func__, ret);
 }
+
+
+int legacy_recorder_set_sound_stream_info(recorder_h recorder, char *stream_type, int stream_index)
+{
+       int ret = MM_ERROR_NONE;
+       recorder_s *handle = (recorder_s *)recorder;
+       MMCamcorderStateType mmstate = MM_CAMCORDER_STATE_NONE;
+
+       if (recorder == NULL) {
+               LOGE("handle is NULL");
+               return RECORDER_ERROR_INVALID_PARAMETER;
+       }
+
+       if (stream_type == NULL || stream_index < 0) {
+               LOGE("invalid parameter %p %d", stream_type, stream_index);
+               return RECORDER_ERROR_INVALID_PARAMETER;
+       }
+
+       mm_camcorder_get_state(handle->mm_handle, &mmstate);
+       if (mmstate >= MM_CAMCORDER_STATE_RECORDING) {
+               LOGE("invalid state %d", mmstate);
+               return RECORDER_ERROR_INVALID_STATE;
+       }
+
+       ret = mm_camcorder_set_attributes(handle->mm_handle, NULL,
+               MMCAM_SOUND_STREAM_TYPE, stream_type, strlen(stream_type),
+               MMCAM_SOUND_STREAM_INDEX, stream_index,
+               NULL);
+
+       return __convert_recorder_error_code(__func__, ret);
+}
+
index bcad360..2c0f3bf 100644 (file)
@@ -92,6 +92,7 @@ typedef enum {
        MUSE_RECORDER_API_ATTR_GET_ORIENTATION_TAG, //55
        MUSE_RECORDER_API_ATTR_SET_ROOT_DIRECTORY,
        MUSE_RECORDER_API_RETURN_BUFFER,
+       MUSE_RECORDER_API_SET_SOUND_STREAM_INFO,
        MUSE_RECORDER_API_MAX
 } muse_recorder_api_e;
 
@@ -168,7 +169,7 @@ typedef enum {
 /**
  * @brief Definition for the wait time of the ipc callback.
  */
-#define CALLBACK_TIME_OUT 3
+#define RECORDER_CALLBACK_TIME_OUT 3
 
 
 #ifdef __cplusplus
index 953a021..35f1bdd 100644 (file)
@@ -175,7 +175,7 @@ typedef const char* STRING;
                        LOGE("sending message failed"); \
                        ret = RECORDER_ERROR_INVALID_OPERATION; \
                } else \
-                       ret = client_wait_for_cb_return(api, cb_info, CALLBACK_TIME_OUT); \
+                       ret = client_wait_for_cb_return(api, cb_info, RECORDER_CALLBACK_TIME_OUT); \
                muse_core_msg_json_factory_free(__sndMsg__); \
        }while(0)
 
@@ -202,7 +202,7 @@ typedef const char* STRING;
                        LOGE("sending message failed"); \
                        ret = RECORDER_ERROR_INVALID_OPERATION; \
                } else \
-                       ret = client_wait_for_cb_return(api, cb_info, CALLBACK_TIME_OUT); \
+                       ret = client_wait_for_cb_return(api, cb_info, RECORDER_CALLBACK_TIME_OUT); \
                muse_core_msg_json_factory_free(__sndMsg__); \
        }while(0)
 
@@ -255,7 +255,7 @@ typedef const char* STRING;
                        LOGE("sending message failed"); \
                        ret = RECORDER_ERROR_INVALID_OPERATION; \
                } else \
-                       ret = client_wait_for_cb_return(api, cb_info, CALLBACK_TIME_OUT); \
+                       ret = client_wait_for_cb_return(api, cb_info, RECORDER_CALLBACK_TIME_OUT); \
                muse_core_msg_json_factory_free(__sndMsg__); \
        }while(0)
 
@@ -287,7 +287,7 @@ typedef const char* STRING;
                        LOGE("sending message failed"); \
                        ret = RECORDER_ERROR_INVALID_OPERATION; \
                } else \
-                       ret = client_wait_for_cb_return(api, cb_info, CALLBACK_TIME_OUT); \
+                       ret = client_wait_for_cb_return(api, cb_info, RECORDER_CALLBACK_TIME_OUT); \
                muse_core_msg_json_factory_free(__sndMsg__); \
        }while(0)
 
index 426a03a..8707d7f 100644 (file)
@@ -1846,65 +1846,95 @@ int recorder_dispatcher_return_buffer(muse_module_h module)
        return MUSE_RECORDER_ERROR_NONE;
 }
 
+
+int recorder_dispatcher_set_sound_stream_info(muse_module_h module)
+{
+       int ret = RECORDER_ERROR_NONE;
+       char stream_type[MUSE_RECORDER_MSG_MAX_LENGTH] = {0,};
+       int stream_index = 0;
+       muse_recorder_api_e api = MUSE_RECORDER_API_SET_SOUND_STREAM_INFO;
+       muse_recorder_api_class_e class = MUSE_RECORDER_API_CLASS_IMMEDIATE;
+       muse_recorder_handle_s *muse_recorder = NULL;
+
+       muse_recorder = (muse_recorder_handle_s *)muse_core_ipc_get_handle(module);
+       if (muse_recorder == NULL) {
+               LOGE("NULL handle");
+               ret = RECORDER_ERROR_INVALID_OPERATION;
+               muse_recorder_msg_return(api, class, ret, module);
+               return MUSE_RECORDER_ERROR_NONE;
+       }
+
+       muse_recorder_msg_get_string(stream_type, muse_core_client_get_msg(module));
+       muse_recorder_msg_get(stream_index, muse_core_client_get_msg(module));
+
+       ret = legacy_recorder_set_sound_stream_info(muse_recorder->recorder_handle, stream_type, stream_index);
+
+       muse_recorder_msg_return(api, class, ret, module);
+
+       return MUSE_RECORDER_ERROR_NONE;
+}
+
+
 int (*dispatcher[MUSE_RECORDER_API_MAX]) (muse_module_h module) = {
-       recorder_dispatcher_create, /* MUSE_RECORDER_API_CREATE, */
-       recorder_dispatcher_destroy, /* MUSE_RECORDER_API_DESTROY, */
-       recorder_dispatcher_get_state, /* MUSE_RECORDER_API_GET_STATE, */
-       recorder_dispatcher_prepare, /* MUSE_RECORDER_API_PREPARE, */
-       recorder_dispatcher_unprepare, /* MUSE_RECORDER_API_UNPREPARE, */
-       recorder_dispatcher_start, /* MUSE_RECORDER_API_START, */
-       recorder_dispatcher_pause, /* MUSE_RECORDER_API_PAUSE, */
-       recorder_dispatcher_commit, /* MUSE_RECORDER_API_COMMIT, */
-       recorder_dispatcher_cancel, /* MUSE_RECORDER_API_CANCEL, */
-       recorder_dispatcher_set_video_resolution, /* MUSE_RECORDER_API_SET_VIDEO_RESOLUTION, */
-       recorder_dispatcher_get_video_resolution, /* MUSE_RECORDER_API_GET_VIDEO_RESOLUTION, */
-       recorder_dispatcher_foreach_supported_video_resolution, /* MUSE_RECORDER_API_FOREACH_SUPPORTED_VIDEO_RESOLUTION, */
-       recorder_dispatcher_get_audio_level, /* MUSE_RECORDER_API_GET_AUDIO_LEVEL, */
-       recorder_dispatcher_set_filename, /* MUSE_RECORDER_API_SET_FILENAME, */
-       recorder_dispatcher_get_filename, /* MUSE_RECORDER_API_GET_FILENAME, */
-       recorder_dispatcher_set_file_format, /* MUSE_RECORDER_API_SET_FILE_FORMAT, */
-       recorder_dispatcher_get_file_format, /* MUSE_RECORDER_API_GET_FILE_FORMAT, */
-       recorder_dispatcher_set_state_changed_cb, /* MUSE_RECORDER_API_SET_STATE_CHANGED_CB, */
-       recorder_dispatcher_unset_state_changed_cb, /* MUSE_RECORDER_API_UNSET_STATE_CHANGED_CB, */
-       recorder_dispatcher_set_interrupted_cb, /* MUSE_RECORDER_API_SET_INTERRUPTED_CB, */
-       recorder_dispatcher_unset_interrupted_cb, /* MUSE_RECORDER_API_UNSET_INTERRUPTED_CB, */
-       recorder_dispatcher_set_audio_stream_cb, /* MUSE_RECORDER_API_SET_AUDIO_STREAM_CB, */
-       recorder_dispatcher_unset_audio_stream_cb, /* MUSE_RECORDER_API_UNSET_AUDIO_STREAM_CB, */
-       recorder_dispatcher_set_error_cb, /* MUSE_RECORDER_API_SET_ERROR_CB, */
-       recorder_dispatcher_unset_error_cb, /* MUSE_RECORDER_API_UNSET_ERROR_CB, */
-       recorder_dispatcher_set_recording_status_cb, /* MUSE_RECORDER_API_SET_RECORDING_STATUS_CB, */
-       recorder_dispatcher_unset_recording_status_cb, /* MUSE_RECORDER_API_UNSET_RECORDING_STATUS_CB, */
-       recorder_dispatcher_set_recording_limit_reached_cb, /* MUSE_RECORDER_API_SET_RECORDING_LIMIT_RECHEAD_CB, */
-       recorder_dispatcher_unset_recording_limit_reached_cb, /* MUSE_RECORDER_API_UNSET_RECORDING_LIMIT_RECHEAD_CB, */
-       recorder_dispatcher_foreach_supported_file_format, /* MUSE_RECORDER_API_FOREACH_SUPPORTED_FILE_FORMAT, */
-       recorder_dispatcher_attr_set_size_limit, /* MUSE_RECORDER_API_ATTR_SET_SIZE_LIMIT, */
-       recorder_dispatcher_attr_set_time_limit, /* MUSE_RECORDER_API_ATTR_SET_TIME_LIMIT, */
-       recorder_dispatcher_attr_set_audio_device, /* MUSE_RECORDER_API_ATTR_SET_AUDIO_DEVICE, */
-       recorder_dispatcher_set_audio_encoder, /* MUSE_RECORDER_API_SET_AUDIO_ENCODER, */
-       recorder_dispatcher_get_audio_encoder, /* MUSE_RECORDER_API_GET_AUDIO_ENCODER, */
-       recorder_dispatcher_set_video_encoder, /* MUSE_RECORDER_API_SET_VIDEO_ENCODER, */
-       recorder_dispatcher_get_video_encoder, /* MUSE_RECORDER_API_GET_VIDEO_ENCODER, */
-       recorder_dispatcher_attr_set_audio_samplerate, /* MUSE_RECORDER_API_ATTR_SET_AUDIO_SAMPLERATE, */
-       recorder_dispatcher_attr_set_audio_encoder_bitrate, /* MUSE_RECORDER_API_ATTR_SET_AUDIO_ENCODER_BITRATE, */
-       recorder_dispatcher_attr_set_video_encoder_bitrate, /* MUSE_RECORDER_API_ATTR_SET_VIDEO_ENCODER_BITRATE, */
-       recorder_dispatcher_attr_get_size_limit, /* MUSE_RECORDER_API_ATTR_GET_SIZE_LIMIT, */
-       recorder_dispatcher_attr_get_time_limit, /* MUSE_RECORDER_API_ATTR_GET_TIME_LIMIT, */
-       recorder_dispatcher_attr_get_audio_device, /* MUSE_RECORDER_API_ATTR_GET_AUDIO_DEVICE, */
-       recorder_dispatcher_attr_get_audio_samplerate, /* MUSE_RECORDER_API_ATTR_GET_AUDIO_SAMPLERATE, */
-       recorder_dispatcher_attr_get_audio_encoder_bitrate, /* MUSE_RECORDER_API_ATTR_GET_AUDIO_ENCODER_BITRATE, */
-       recorder_dispatcher_attr_get_video_encoder_bitrate, /* MUSE_RECORDER_API_ATTR_GET_VIDEO_ENCODER_BITRATE, */
-       recorder_dispatcher_foreach_supported_audio_encoder, /* MUSE_RECORDER_API_FOREACH_SUPPORTED_AUDIO_ENCODER, */
-       recorder_dispatcher_foreach_supported_video_encoder, /* MUSE_RECORDER_API_FOREACH_SUPPORTED_VIDEO_ENCODER, */
-       recorder_dispatcher_attr_set_mute, /* MUSE_RECORDER_API_ATTR_SET_MUTE, */
-       recorder_dispatcher_attr_is_muted, /* MUSE_RECORDER_API_ATTR_IS_MUTED, */
-       recorder_dispatcher_attr_set_recording_motion_rate, /* MUSE_RECORDER_API_ATTR_SET_RECORDING_MOTION_RATE, */
-       recorder_dispatcher_attr_get_recording_motion_rate, /* MUSE_RECORDER_API_ATTR_GET_RECORDING_MOTION_RATE, */
-       recorder_dispatcher_attr_set_audio_channel, /* MUSE_RECORDER_API_ATTR_SET_AUDIO_CHANNEL, */
-       recorder_dispatcher_attr_get_audio_channel, /* MUSE_RECORDER_API_ATTR_GET_AUDIO_CHANNEL, */
-       recorder_dispatcher_attr_set_orientation_tag, /* MUSE_RECORDER_API_ATTR_SET_ORIENTATION_TAG, */
-       recorder_dispatcher_attr_get_orientation_tag, /* MUSE_RECORDER_API_ATTR_GET_ORIENTATION_TAG, */
-       recorder_dispatcher_attr_set_root_directory, /* MUSE_RECORDER_API_ATTR_SET_ROOT_DIRECTORY, */
-       recorder_dispatcher_return_buffer, /* MUSE_RECORDER_API_RETURN_BUFFER, */
+       recorder_dispatcher_create, /* MUSE_RECORDER_API_CREATE */
+       recorder_dispatcher_destroy, /* MUSE_RECORDER_API_DESTROY */
+       recorder_dispatcher_get_state, /* MUSE_RECORDER_API_GET_STATE */
+       recorder_dispatcher_prepare, /* MUSE_RECORDER_API_PREPARE */
+       recorder_dispatcher_unprepare, /* MUSE_RECORDER_API_UNPREPARE */
+       recorder_dispatcher_start, /* MUSE_RECORDER_API_START */
+       recorder_dispatcher_pause, /* MUSE_RECORDER_API_PAUSE */
+       recorder_dispatcher_commit, /* MUSE_RECORDER_API_COMMIT */
+       recorder_dispatcher_cancel, /* MUSE_RECORDER_API_CANCEL */
+       recorder_dispatcher_set_video_resolution, /* MUSE_RECORDER_API_SET_VIDEO_RESOLUTION */
+       recorder_dispatcher_get_video_resolution, /* MUSE_RECORDER_API_GET_VIDEO_RESOLUTION */
+       recorder_dispatcher_foreach_supported_video_resolution, /* MUSE_RECORDER_API_FOREACH_SUPPORTED_VIDEO_RESOLUTION */
+       recorder_dispatcher_get_audio_level, /* MUSE_RECORDER_API_GET_AUDIO_LEVEL */
+       recorder_dispatcher_set_filename, /* MUSE_RECORDER_API_SET_FILENAME */
+       recorder_dispatcher_get_filename, /* MUSE_RECORDER_API_GET_FILENAME */
+       recorder_dispatcher_set_file_format, /* MUSE_RECORDER_API_SET_FILE_FORMAT */
+       recorder_dispatcher_get_file_format, /* MUSE_RECORDER_API_GET_FILE_FORMAT */
+       recorder_dispatcher_set_state_changed_cb, /* MUSE_RECORDER_API_SET_STATE_CHANGED_CB */
+       recorder_dispatcher_unset_state_changed_cb, /* MUSE_RECORDER_API_UNSET_STATE_CHANGED_CB */
+       recorder_dispatcher_set_interrupted_cb, /* MUSE_RECORDER_API_SET_INTERRUPTED_CB */
+       recorder_dispatcher_unset_interrupted_cb, /* MUSE_RECORDER_API_UNSET_INTERRUPTED_CB */
+       recorder_dispatcher_set_audio_stream_cb, /* MUSE_RECORDER_API_SET_AUDIO_STREAM_CB */
+       recorder_dispatcher_unset_audio_stream_cb, /* MUSE_RECORDER_API_UNSET_AUDIO_STREAM_CB */
+       recorder_dispatcher_set_error_cb, /* MUSE_RECORDER_API_SET_ERROR_CB */
+       recorder_dispatcher_unset_error_cb, /* MUSE_RECORDER_API_UNSET_ERROR_CB */
+       recorder_dispatcher_set_recording_status_cb, /* MUSE_RECORDER_API_SET_RECORDING_STATUS_CB */
+       recorder_dispatcher_unset_recording_status_cb, /* MUSE_RECORDER_API_UNSET_RECORDING_STATUS_CB */
+       recorder_dispatcher_set_recording_limit_reached_cb, /* MUSE_RECORDER_API_SET_RECORDING_LIMIT_RECHEAD_CB */
+       recorder_dispatcher_unset_recording_limit_reached_cb, /* MUSE_RECORDER_API_UNSET_RECORDING_LIMIT_RECHEAD_CB */
+       recorder_dispatcher_foreach_supported_file_format, /* MUSE_RECORDER_API_FOREACH_SUPPORTED_FILE_FORMAT */
+       recorder_dispatcher_attr_set_size_limit, /* MUSE_RECORDER_API_ATTR_SET_SIZE_LIMIT */
+       recorder_dispatcher_attr_set_time_limit, /* MUSE_RECORDER_API_ATTR_SET_TIME_LIMIT */
+       recorder_dispatcher_attr_set_audio_device, /* MUSE_RECORDER_API_ATTR_SET_AUDIO_DEVICE */
+       recorder_dispatcher_set_audio_encoder, /* MUSE_RECORDER_API_SET_AUDIO_ENCODER */
+       recorder_dispatcher_get_audio_encoder, /* MUSE_RECORDER_API_GET_AUDIO_ENCODER */
+       recorder_dispatcher_set_video_encoder, /* MUSE_RECORDER_API_SET_VIDEO_ENCODER */
+       recorder_dispatcher_get_video_encoder, /* MUSE_RECORDER_API_GET_VIDEO_ENCODER */
+       recorder_dispatcher_attr_set_audio_samplerate, /* MUSE_RECORDER_API_ATTR_SET_AUDIO_SAMPLERATE */
+       recorder_dispatcher_attr_set_audio_encoder_bitrate, /* MUSE_RECORDER_API_ATTR_SET_AUDIO_ENCODER_BITRATE */
+       recorder_dispatcher_attr_set_video_encoder_bitrate, /* MUSE_RECORDER_API_ATTR_SET_VIDEO_ENCODER_BITRATE */
+       recorder_dispatcher_attr_get_size_limit, /* MUSE_RECORDER_API_ATTR_GET_SIZE_LIMIT */
+       recorder_dispatcher_attr_get_time_limit, /* MUSE_RECORDER_API_ATTR_GET_TIME_LIMIT */
+       recorder_dispatcher_attr_get_audio_device, /* MUSE_RECORDER_API_ATTR_GET_AUDIO_DEVICE */
+       recorder_dispatcher_attr_get_audio_samplerate, /* MUSE_RECORDER_API_ATTR_GET_AUDIO_SAMPLERATE */
+       recorder_dispatcher_attr_get_audio_encoder_bitrate, /* MUSE_RECORDER_API_ATTR_GET_AUDIO_ENCODER_BITRATE */
+       recorder_dispatcher_attr_get_video_encoder_bitrate, /* MUSE_RECORDER_API_ATTR_GET_VIDEO_ENCODER_BITRATE */
+       recorder_dispatcher_foreach_supported_audio_encoder, /* MUSE_RECORDER_API_FOREACH_SUPPORTED_AUDIO_ENCODER */
+       recorder_dispatcher_foreach_supported_video_encoder, /* MUSE_RECORDER_API_FOREACH_SUPPORTED_VIDEO_ENCODER */
+       recorder_dispatcher_attr_set_mute, /* MUSE_RECORDER_API_ATTR_SET_MUTE */
+       recorder_dispatcher_attr_is_muted, /* MUSE_RECORDER_API_ATTR_IS_MUTED */
+       recorder_dispatcher_attr_set_recording_motion_rate, /* MUSE_RECORDER_API_ATTR_SET_RECORDING_MOTION_RATE */
+       recorder_dispatcher_attr_get_recording_motion_rate, /* MUSE_RECORDER_API_ATTR_GET_RECORDING_MOTION_RATE */
+       recorder_dispatcher_attr_set_audio_channel, /* MUSE_RECORDER_API_ATTR_SET_AUDIO_CHANNEL */
+       recorder_dispatcher_attr_get_audio_channel, /* MUSE_RECORDER_API_ATTR_GET_AUDIO_CHANNEL */
+       recorder_dispatcher_attr_set_orientation_tag, /* MUSE_RECORDER_API_ATTR_SET_ORIENTATION_TAG */
+       recorder_dispatcher_attr_get_orientation_tag, /* MUSE_RECORDER_API_ATTR_GET_ORIENTATION_TAG */
+       recorder_dispatcher_attr_set_root_directory, /* MUSE_RECORDER_API_ATTR_SET_ROOT_DIRECTORY */
+       recorder_dispatcher_return_buffer, /* MUSE_RECORDER_API_RETURN_BUFFER */
+       recorder_dispatcher_set_sound_stream_info /* MUSE_RECORDER_API_SET_SOUND_STREAM_INFO */
 };
 
 
index f0a4f39..143ff0b 100644 (file)
@@ -1,7 +1,7 @@
 Name:       mmsvc-recorder
 Summary:    A Recorder module for muse server
-Version:    0.2.14
-Release:    1
+Version:    0.2.15
+Release:    0
 Group:      Multimedia/Libraries
 License:    Apache-2.0
 Source0:    %{name}-%{version}.tar.gz