/**
* @brief Retrieves all supported file formats by invoking a specific callback for each supported file format.
* @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
- * @param[in] recorder The handle to the media recorder
- * @param[in] callback The iteration callback
- * @param[in] user_data The user data to be passed to the callback function
+ * @param[in] recorder The handle to the media recorder
+ * @param[in] foreach_cb The iteration callback
+ * @param[in] codec_type The type of codec(Audio or Video)
+ * @param[in] codec The codec
+ * @param[in] user_data The user data to be passed to the callback function
* @return @c 0 on success, otherwise a negative error value
* @retval #RECORDER_ERROR_NONE Successful
* @retval #RECORDER_ERROR_INVALID_PARAMETER Invalid parameter
* @see legacy_recorder_set_file_format()
* @see legacy_recorder_supported_file_format_cb()
*/
-int legacy_recorder_foreach_supported_file_format(recorder_h recorder, recorder_supported_file_format_cb callback, void *user_data);
+int legacy_recorder_foreach_supported_file_format(recorder_h recorder,
+ recorder_supported_file_format_cb foreach_cb, const char* codec_type, int codec, void *user_data);
+
/**
* @}
/**
* @brief Retrieves all supported audio encoders by invoking a specific callback for each supported audio encoder.
* @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
- * @param[in] recorder The handle to the media recorder
- * @param[in] callback The iteration callback
- * @param[in] user_data The user data to be passed to the callback function
+ * @param[in] recorder The handle to the media recorder
+ * @param[in] foreach_cb The iteration callback
+ * @param[in] codec_type The type of codec(Audio or Video)
+ * @param[in] format The file format
+ * @param[in] user_data The user data to be passed to the callback function
* @return @c 0 on success, otherwise a negative error value
* @retval #RECORDER_ERROR_NONE Successful
* @retval #RECORDER_ERROR_INVALID_PARAMETER Invalid parameter
* @see recorder_get_audio_encoder()
* @see recorder_supported_audio_encoder_cb()
*/
-int legacy_recorder_foreach_supported_audio_encoder(recorder_h recorder, recorder_supported_audio_encoder_cb callback, void *user_data);
+int legacy_recorder_foreach_supported_audio_encoder(recorder_h recorder,
+ recorder_supported_audio_encoder_cb foreach_cb, const char* codec_type, int format, void *user_data);
/**
* @}
/**
* @brief Retrieves all supported video encoders by invoking a specific callback for each supported video encoder.
* @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
- * @param[in] recorder The handle to the media recorder
- * @param[in] callback The iteration callback
- * @param[in] user_data The user data to be passed to the callback function
+ * @param[in] recorder The handle to the media recorder
+ * @param[in] foreach_cb The iteration callback
+ * @param[in] codec_type The type of codec(Audio or Video)
+ * @param[in] format The file format
+ * @param[in] user_data The user data to be passed to the callback function
* @return @c 0 on success, otherwise a negative error value
* @retval #RECORDER_ERROR_NONE Successful
* @retval #RECORDER_ERROR_INVALID_PARAMETER Invalid parameter
* @see legacy_recorder_get_video_encoder()
* @see recorder_supported_video_encoder_cb()
*/
-int legacy_recorder_foreach_supported_video_encoder(recorder_h recorder, recorder_supported_video_encoder_cb callback, void *user_data);
+int legacy_recorder_foreach_supported_video_encoder(recorder_h recorder,
+ recorder_supported_video_encoder_cb foreach_cb, const char* codec_type, int format, void *user_data);
/**
* @}
}
-int legacy_recorder_foreach_supported_file_format(recorder_h recorder, recorder_supported_file_format_cb foreach_cb, void *user_data)
+int legacy_recorder_foreach_supported_file_format(recorder_h recorder,
+ recorder_supported_file_format_cb foreach_cb, const char* codec_type, int codec, void *user_data)
{
int i = 0;
int ret = MM_ERROR_NONE;
break;
}
- if (format != -1 && !foreach_cb(format, user_data))
+ if (codec_type != NULL && format != -1)
+ ret = mm_camcorder_check_codec_fileformat_compatibility((const char*)codec_type, codec, format);
+
+ if (ret == MM_ERROR_NONE && format != -1 && !foreach_cb(format, user_data))
break;
}
}
-int legacy_recorder_foreach_supported_audio_encoder(recorder_h recorder, recorder_supported_audio_encoder_cb foreach_cb, void *user_data)
+int legacy_recorder_foreach_supported_audio_encoder(recorder_h recorder,
+ recorder_supported_audio_encoder_cb foreach_cb, const char* codec_type, int format, void *user_data)
{
int i = 0;
int ret = MM_ERROR_NONE;
break;
}
- if (codec != -1 && !foreach_cb(codec, user_data))
+ if (codec_type != NULL && codec != -1)
+ ret = mm_camcorder_check_codec_fileformat_compatibility((const char*)codec_type, codec, format);
+
+ if (ret == MM_ERROR_NONE && codec != -1 && !foreach_cb(codec, user_data))
break;
}
}
-int legacy_recorder_foreach_supported_video_encoder(recorder_h recorder, recorder_supported_video_encoder_cb foreach_cb, void *user_data)
+int legacy_recorder_foreach_supported_video_encoder(recorder_h recorder,
+ recorder_supported_video_encoder_cb foreach_cb, const char* codec_type, int format, void *user_data)
{
int i = 0;
int ret = MM_ERROR_NONE;
break;
}
- if (codec != -1 && !foreach_cb(codec, user_data))
+ if (codec_type != NULL && codec != -1)
+ ret = mm_camcorder_check_codec_fileformat_compatibility((const char*)codec_type, codec, format);
+
+ if (ret == MM_ERROR_NONE && codec != -1 && !foreach_cb(codec, user_data))
break;
}
MUSE_RECORDER_API_SET_RECORDING_LIMIT_REACHED_CB,
MUSE_RECORDER_API_UNSET_RECORDING_LIMIT_REACHED_CB,
MUSE_RECORDER_API_FOREACH_SUPPORTED_FILE_FORMAT,
- MUSE_RECORDER_API_ATTR_SET_SIZE_LIMIT, /* 30 */
+ MUSE_RECORDER_API_FOREACH_SUPPORTED_FILE_FORMAT_BY_AUDIO_ENCORDER, /* 30 */
+ MUSE_RECORDER_API_FOREACH_SUPPORTED_FILE_FORMAT_BY_VIDEO_ENCORDER,
+ MUSE_RECORDER_API_ATTR_SET_SIZE_LIMIT,
MUSE_RECORDER_API_ATTR_SET_TIME_LIMIT,
MUSE_RECORDER_API_ATTR_SET_AUDIO_DEVICE,
- MUSE_RECORDER_API_SET_AUDIO_ENCODER,
+ MUSE_RECORDER_API_SET_AUDIO_ENCODER, /* 35 */
MUSE_RECORDER_API_GET_AUDIO_ENCODER,
- MUSE_RECORDER_API_SET_VIDEO_ENCODER, /* 35 */
+ MUSE_RECORDER_API_SET_VIDEO_ENCODER,
MUSE_RECORDER_API_GET_VIDEO_ENCODER,
MUSE_RECORDER_API_ATTR_SET_AUDIO_SAMPLERATE,
- MUSE_RECORDER_API_ATTR_SET_AUDIO_ENCODER_BITRATE,
+ MUSE_RECORDER_API_ATTR_SET_AUDIO_ENCODER_BITRATE, /* 40 */
MUSE_RECORDER_API_ATTR_SET_VIDEO_ENCODER_BITRATE,
- MUSE_RECORDER_API_ATTR_GET_SIZE_LIMIT, /* 40 */
+ MUSE_RECORDER_API_ATTR_GET_SIZE_LIMIT,
MUSE_RECORDER_API_ATTR_GET_TIME_LIMIT,
MUSE_RECORDER_API_ATTR_GET_AUDIO_DEVICE,
- MUSE_RECORDER_API_ATTR_GET_AUDIO_SAMPLERATE,
+ MUSE_RECORDER_API_ATTR_GET_AUDIO_SAMPLERATE, /* 45 */
MUSE_RECORDER_API_ATTR_GET_AUDIO_ENCODER_BITRATE,
- MUSE_RECORDER_API_ATTR_GET_VIDEO_ENCODER_BITRATE, /* 45 */
+ MUSE_RECORDER_API_ATTR_GET_VIDEO_ENCODER_BITRATE,
MUSE_RECORDER_API_FOREACH_SUPPORTED_AUDIO_ENCODER,
- MUSE_RECORDER_API_FOREACH_SUPPORTED_VIDEO_ENCODER,
+ MUSE_RECORDER_API_FOREACH_SUPPORTED_AUDIO_ENCODER_BY_FILE_FORMAT,
+ MUSE_RECORDER_API_FOREACH_SUPPORTED_VIDEO_ENCODER, /* 50 */
+ MUSE_RECORDER_API_FOREACH_SUPPORTED_VIDEO_ENCODER_BY_FILE_FORMAT,
MUSE_RECORDER_API_ATTR_SET_MUTE,
MUSE_RECORDER_API_ATTR_IS_MUTED,
- MUSE_RECORDER_API_ATTR_SET_RECORDING_MOTION_RATE, /* 50 */
- MUSE_RECORDER_API_ATTR_GET_RECORDING_MOTION_RATE,
+ MUSE_RECORDER_API_ATTR_SET_RECORDING_MOTION_RATE,
+ MUSE_RECORDER_API_ATTR_GET_RECORDING_MOTION_RATE, /* 55 */
MUSE_RECORDER_API_ATTR_SET_AUDIO_CHANNEL,
MUSE_RECORDER_API_ATTR_GET_AUDIO_CHANNEL,
MUSE_RECORDER_API_ATTR_SET_ORIENTATION_TAG,
- MUSE_RECORDER_API_ATTR_GET_ORIENTATION_TAG, /* 55 */
- MUSE_RECORDER_API_ATTR_SET_ROOT_DIRECTORY,
+ MUSE_RECORDER_API_ATTR_GET_ORIENTATION_TAG,
+ MUSE_RECORDER_API_ATTR_SET_ROOT_DIRECTORY, /* 60 */
MUSE_RECORDER_API_RETURN_BUFFER,
MUSE_RECORDER_API_SET_SOUND_STREAM_INFO,
MUSE_RECORDER_API_GET_DEVICE_STATE,
ret = legacy_recorder_foreach_supported_file_format(muse_recorder->recorder_handle,
(recorder_supported_file_format_cb)_recorder_disp_foreach_supported_file_format_cb,
+ NULL,
+ 0,
+ (void *)module);
+
+ muse_recorder_msg_return(api, class, ret, module);
+
+ return MUSE_RECORDER_ERROR_NONE;
+}
+
+int recorder_dispatcher_foreach_supported_file_format_by_audio_encoder(muse_module_h module)
+{
+ int ret = RECORDER_ERROR_NONE;
+ int audio_codec = RECORDER_AUDIO_CODEC_DISABLE;
+ muse_recorder_api_e api = MUSE_RECORDER_API_FOREACH_SUPPORTED_FILE_FORMAT_BY_AUDIO_ENCORDER;
+ muse_recorder_api_class_e class = MUSE_RECORDER_API_CLASS_THREAD_SUB;
+ 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(audio_codec, muse_core_client_get_msg(module));
+
+ ret = legacy_recorder_foreach_supported_file_format(muse_recorder->recorder_handle,
+ (recorder_supported_file_format_cb)_recorder_disp_foreach_supported_file_format_cb,
+ MMCAM_AUDIO_ENCODER,
+ audio_codec,
+ (void *)module);
+
+ muse_recorder_msg_return(api, class, ret, module);
+
+ return MUSE_RECORDER_ERROR_NONE;
+}
+
+int recorder_dispatcher_foreach_supported_file_format_by_video_encoder(muse_module_h module)
+{
+ int ret = RECORDER_ERROR_NONE;
+ int video_codec = -1;
+ muse_recorder_api_e api = MUSE_RECORDER_API_FOREACH_SUPPORTED_FILE_FORMAT_BY_VIDEO_ENCORDER;
+ muse_recorder_api_class_e class = MUSE_RECORDER_API_CLASS_THREAD_SUB;
+ 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(video_codec, muse_core_client_get_msg(module));
+
+ ret = legacy_recorder_foreach_supported_file_format(muse_recorder->recorder_handle,
+ (recorder_supported_file_format_cb)_recorder_disp_foreach_supported_file_format_cb,
+ MMCAM_VIDEO_ENCODER,
+ video_codec,
(void *)module);
muse_recorder_msg_return(api, class, ret, module);
ret = legacy_recorder_foreach_supported_audio_encoder(muse_recorder->recorder_handle,
(recorder_supported_audio_encoder_cb)_recorder_disp_foreach_supported_audio_encoder_cb,
+ NULL,
+ 0,
+ (void *)module);
+
+ muse_recorder_msg_return(api, class, ret, module);
+
+ return MUSE_RECORDER_ERROR_NONE;
+}
+
+int recorder_dispatcher_foreach_supported_audio_encoder_by_file_format(muse_module_h module)
+{
+ int ret = RECORDER_ERROR_NONE;
+ int file_format = -1;
+ muse_recorder_api_e api = MUSE_RECORDER_API_FOREACH_SUPPORTED_AUDIO_ENCODER_BY_FILE_FORMAT;
+ muse_recorder_api_class_e class = MUSE_RECORDER_API_CLASS_THREAD_SUB;
+ 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(file_format, muse_core_client_get_msg(module));
+
+ ret = legacy_recorder_foreach_supported_audio_encoder(muse_recorder->recorder_handle,
+ (recorder_supported_audio_encoder_cb)_recorder_disp_foreach_supported_audio_encoder_cb,
+ MMCAM_AUDIO_ENCODER,
+ file_format,
(void *)module);
muse_recorder_msg_return(api, class, ret, module);
{
int ret = RECORDER_ERROR_NONE;
muse_recorder_api_e api = MUSE_RECORDER_API_FOREACH_SUPPORTED_VIDEO_ENCODER;
- muse_recorder_api_class_e class = MUSE_RECORDER_API_CLASS_THREAD_SUB;
+ muse_recorder_api_class_e class = MUSE_RECORDER_API_CLASS_THREAD_SUB;
muse_recorder_handle_s *muse_recorder = NULL;
muse_recorder = (muse_recorder_handle_s *)muse_core_ipc_get_handle(module);
ret = legacy_recorder_foreach_supported_video_encoder(muse_recorder->recorder_handle,
(recorder_supported_video_encoder_cb)_recorder_disp_foreach_supported_video_encoder_cb,
+ NULL,
+ 0,
+ (void *)module);
+
+ muse_recorder_msg_return(api, class, ret, module);
+
+ return MUSE_RECORDER_ERROR_NONE;
+}
+
+int recorder_dispatcher_foreach_supported_video_encoder_by_file_format(muse_module_h module)
+{
+ int ret = RECORDER_ERROR_NONE;
+ int file_format = -1;
+ muse_recorder_api_e api = MUSE_RECORDER_API_FOREACH_SUPPORTED_VIDEO_ENCODER_BY_FILE_FORMAT;
+ muse_recorder_api_class_e class = MUSE_RECORDER_API_CLASS_THREAD_SUB;
+ 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(file_format, muse_core_client_get_msg(module));
+
+ ret = legacy_recorder_foreach_supported_video_encoder(muse_recorder->recorder_handle,
+ (recorder_supported_video_encoder_cb)_recorder_disp_foreach_supported_video_encoder_cb,
+ MMCAM_VIDEO_ENCODER,
+ file_format,
(void *)module);
muse_recorder_msg_return(api, class, ret, module);
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_foreach_supported_file_format_by_audio_encoder, /* MUSE_RECORDER_API_FOREACH_SUPPORTED_FILE_FORMAT_BY_AUDIO_ENCORDER */
+ recorder_dispatcher_foreach_supported_file_format_by_video_encoder, /* MUSE_RECORDER_API_FOREACH_SUPPORTED_FILE_FORMAT_BY_VIDEO_ENCORDER */
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_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_audio_encoder_by_file_format, /* MUSE_RECORDER_API_FOREACH_SUPPORTED_AUDIO_ENCODER_BY_FILE_FORMAT */
recorder_dispatcher_foreach_supported_video_encoder, /* MUSE_RECORDER_API_FOREACH_SUPPORTED_VIDEO_ENCODER */
+ recorder_dispatcher_foreach_supported_video_encoder_by_file_format, /* MUSE_RECORDER_API_FOREACH_SUPPORTED_VIDEO_ENCODER_BY_FILE_FORMAT */
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 */
Name: mmsvc-recorder
Summary: A Recorder module for muse server
-Version: 0.2.27
+Version: 0.2.28
Release: 0
Group: Multimedia/Libraries
License: Apache-2.0