summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeongmo Yang <jm80.yang@samsung.com>2016-02-25 12:38:48 +0900
committerJeongmo Yang <jm80.yang@samsung.com>2016-03-10 16:04:18 +0900
commit9511338744009bcb1be18c6193fe334890be945e (patch)
tree8334e578f86c704e6d914b4d7c2a967cb441e209
parent05422c4b6748b07fed40b52a8e31ee6c9e98460e (diff)
downloadmmsvc-recorder-9511338744009bcb1be18c6193fe334890be945e.tar.gz
mmsvc-recorder-9511338744009bcb1be18c6193fe334890be945e.tar.bz2
mmsvc-recorder-9511338744009bcb1be18c6193fe334890be945e.zip
Change-Id: Icc6f2fcf01ce82d296cea4c47c3a98fc284b4030 Signed-off-by: Jeongmo Yang <jm80.yang@samsung.com>
-rw-r--r--legacy/include/legacy_recorder.h20
-rw-r--r--legacy/src/legacy_recorder.c32
-rw-r--r--muse/include/muse_recorder.h3
-rw-r--r--muse/include/muse_recorder_msg.h8
-rw-r--r--muse/src/muse_recorder_dispatcher.c146
-rw-r--r--packaging/mmsvc-recorder.spec4
6 files changed, 148 insertions, 65 deletions
diff --git a/legacy/include/legacy_recorder.h b/legacy/include/legacy_recorder.h
index f0c5ac1..382ce0f 100644
--- a/legacy/include/legacy_recorder.h
+++ b/legacy/include/legacy_recorder.h
@@ -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);
+
+
/**
* @}
*/
diff --git a/legacy/src/legacy_recorder.c b/legacy/src/legacy_recorder.c
index 8e36a5c..2d194bf 100644
--- a/legacy/src/legacy_recorder.c
+++ b/legacy/src/legacy_recorder.c
@@ -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);
+}
+
diff --git a/muse/include/muse_recorder.h b/muse/include/muse_recorder.h
index bcad360..2c0f3bf 100644
--- a/muse/include/muse_recorder.h
+++ b/muse/include/muse_recorder.h
@@ -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
diff --git a/muse/include/muse_recorder_msg.h b/muse/include/muse_recorder_msg.h
index 953a021..35f1bdd 100644
--- a/muse/include/muse_recorder_msg.h
+++ b/muse/include/muse_recorder_msg.h
@@ -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)
diff --git a/muse/src/muse_recorder_dispatcher.c b/muse/src/muse_recorder_dispatcher.c
index 426a03a..8707d7f 100644
--- a/muse/src/muse_recorder_dispatcher.c
+++ b/muse/src/muse_recorder_dispatcher.c
@@ -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 */
};
diff --git a/packaging/mmsvc-recorder.spec b/packaging/mmsvc-recorder.spec
index f0a4f39..143ff0b 100644
--- a/packaging/mmsvc-recorder.spec
+++ b/packaging/mmsvc-recorder.spec
@@ -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