Section: libs
Priority: extra
Maintainer: Seungkeun Lee <sngn.lee@samsung.com>, Kangho Hur<kagho.hur@samsung.com>
-Build-Depends: debhelper (>= 5), libmm-camcorder-dev, libmm-common-dev, capi-media-camera-dev
+Build-Depends: debhelper (>= 5), libmm-camcorder-dev, libmm-common-dev, capi-media-camera-dev, dlog-dev
Package: capi-media-recorder
Architecture: any
-Depends: ${shilbs:Depends}, ${misc:Depends}
+Depends: ${shlibs:Depends}, ${misc:Depends}
Description: A Camera library in Tizen Native API
Package: capi-media-recorder-dev
Architecture: any
-Depends: ${shlibs:Depends}, ${misc:Depends}, capi-media-recorder (= ${Source-Version}), dlog-dev, capi-base-common-dev, capi-media-camera-dev, libmm-camcorder-dev
+Depends: ${shlibs:Depends}, ${misc:Depends}, capi-media-recorder (= ${Source-Version}), capi-base-common-dev, capi-media-camera-dev
Description: A Camera library in Tizen Native API (DEV)
Package: capi-media-recorder-dbg
*/
int recorder_get_state(recorder_h recorder, recorder_state_e *state);
+/**
+ * @brief Gets the peak audio input level that was sampled since the last call to this function.
+ * @remarks 0 dB indicates maximum input level, -300dB indicates minimum input level
+ * @param[in] recorder The handle to the recorder.
+ * @param[out] level The audio input level in dB
+ * @return 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_RECORDING or #RECORDER_STATE_PAUSED
+ */
+int recorder_get_audio_level(recorder_h recorder, double *dB);
/**
* @brief Sets the file path to record
*/
int recorder_attr_get_video_encoder_bitrate(recorder_h recorder, int *bitrate);
+
+
+/**
+ * @brief Sets the mute state of recorder
+ * @param[in] recorder The handle to media recorder
+ * @param[in] enable The mute state
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #RECORDER_ERROR_NONE Successful
+ * @retval #RECORDER_ERROR_INVALID_PARAMETER Invalid parameter
+ * @see recorder_attr_is_muted()
+ */
+int recorder_attr_set_mute(recorder_h recorder, bool enable);
+
+/**
+ * @brief Gets the mute state of recorder
+ * @param[in] recorder The handle to media recorder
+ * @return true if the recorder is not recording any sound,\nelse false
+ * @retval #RECORDER_ERROR_NONE Successful
+ * @retval #RECORDER_ERROR_INVALID_PARAMETER Invalid parameter
+ * @see recorder_attr_set_mute()
+ */
+bool recorder_attr_is_muted(recorder_h recorder);
+
+
+
/**
* @}
*/
* 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.
+* limitations under the License.
*/
#endif
#define LOG_TAG "TIZEN_N_RECORDER"
+#define LOWSET_DECIBEL -300.0
+
/*
* camera_private
recorder_s * handle = (recorder_s*)user_data;
MMMessageParamType *m = (MMMessageParamType*)param;
- recorder_state_e previous_state;
+ recorder_state_e previous_state;
switch(message){
case MM_MESSAGE_CAMCORDER_STATE_CHANGED:
}
break;
}
-
-
-
+ case MM_MESSAGE_CAMCORDER_CURRENT_VOLUME:
+ if( handle->last_max_input_level < m->rec_volume_dB )
+ handle->last_max_input_level = m->rec_volume_dB;
+ break;
}
return 1;
}
memset(handle, 0 , sizeof(recorder_s));
-
+ handle->last_max_input_level = LOWSET_DECIBEL;
+
handle->mm_handle = ((camera_s*)camera)->mm_handle;
handle->camera = camera;
handle->state = RECORDER_STATE_CREATED;
preview_format = MM_PIXEL_FORMAT_NV12;
ret = mm_camcorder_get_attributes(handle->mm_handle, NULL, MMCAM_RECOMMEND_PREVIEW_FORMAT_FOR_RECORDING, &preview_format, NULL);
- ret = mm_camcorder_set_attributes(handle->mm_handle, NULL,
- MMCAM_MODE , MM_CAMCORDER_MODE_VIDEO,
+ ret = mm_camcorder_set_attributes(handle->mm_handle, NULL,
+ MMCAM_MODE , MM_CAMCORDER_MODE_VIDEO,
MMCAM_CAMERA_FORMAT, preview_format,
(void*)NULL);
return __convert_recorder_error_code(__func__, ret);
}
memset(handle, 0 , sizeof(recorder_s));
+ handle->last_max_input_level = LOWSET_DECIBEL;
ret = mm_camcorder_create(&handle->mm_handle, &info);
if( ret != MM_ERROR_NONE){
LOGE("[%s] mm_camcorder_create fail", __func__);
return __convert_recorder_error_code(__func__, ret);
}
- ret = mm_camcorder_set_attributes(handle->mm_handle, NULL,
- MMCAM_MODE , MM_CAMCORDER_MODE_AUDIO,
+ ret = mm_camcorder_set_attributes(handle->mm_handle, NULL,
+ MMCAM_MODE , MM_CAMCORDER_MODE_AUDIO,
(void*)NULL);
if( ret != MM_ERROR_NONE){
handle = (recorder_s *) recorder;
if( handle->type == _RECORDER_TYPE_VIDEO ){
//camera object mode change
- ret = mm_camcorder_set_attributes(handle->mm_handle, NULL,
- MMCAM_MODE , MM_CAMCORDER_MODE_IMAGE,
+ ret = mm_camcorder_set_attributes(handle->mm_handle, NULL,
+ MMCAM_MODE , MM_CAMCORDER_MODE_IMAGE,
MMCAM_CAMERA_FORMAT, handle->origin_preview_format,
- MMCAM_IMAGE_ENCODER , MM_IMAGE_CODEC_JPEG,
+ MMCAM_IMAGE_ENCODER , MM_IMAGE_CODEC_JPEG,
MMCAM_CAPTURE_FORMAT, MM_PIXEL_FORMAT_ENCODED,
- MMCAM_CAPTURE_COUNT, 1,
+ MMCAM_CAPTURE_COUNT, 1,
(void*)NULL);
mm_camcorder_set_message_callback(handle->mm_handle, __mm_camera_message_callback, (void*)handle->camera);
return __convert_recorder_error_code(__func__, ret);
}
+int recorder_get_audio_level(recorder_h recorder, double *level){
+ if( recorder == NULL || level == NULL ) return __convert_recorder_error_code(__func__, RECORDER_ERROR_INVALID_PARAMETER);
+ recorder_s *handle = (recorder_s*)recorder;
+
+ if( handle->state < RECORDER_STATE_RECORDING )
+ return RECORDER_ERROR_INVALID_STATE;
+
+ *level = handle->last_max_input_level ;
+ handle->last_max_input_level = LOWSET_DECIBEL;
+ return RECORDER_ERROR_NONE;
+}
+
int recorder_set_filename(recorder_h recorder, const char *filename){
if( recorder == NULL) return __convert_recorder_error_code(__func__, RECORDER_ERROR_INVALID_PARAMETER);
}
+
+int recorder_attr_set_mute(recorder_h recorder, bool enable){
+ if( recorder == NULL) return __convert_recorder_error_code(__func__, RECORDER_ERROR_INVALID_PARAMETER);
+ recorder_s * handle = (recorder_s*)recorder;
+ int ret = mm_camcorder_set_attributes(handle->mm_handle ,NULL, MMCAM_AUDIO_VOLUME , enable ? 0.0 : 1.0 , NULL);
+ return __convert_recorder_error_code(__func__, ret);;
+}
+
+bool recorder_attr_is_muted(recorder_h recorder){
+ if( recorder == NULL){
+ __convert_recorder_error_code(__func__, RECORDER_ERROR_INVALID_PARAMETER);
+ return false;
+ }
+ recorder_s * handle = (recorder_s*)recorder;
+ double volume = 1.0;
+ mm_camcorder_get_attributes(handle->mm_handle ,NULL, MMCAM_AUDIO_VOLUME , &volume , NULL);
+ if( volume == 0.0 )
+ return true;
+ else
+ return false;
+}