diff options
-rwxr-xr-x | .gitignore | 26 | ||||
-rwxr-xr-x | CMakeLists.txt | 7 | ||||
-rwxr-xr-x | capi-media-recorder.pc.in | 2 | ||||
-rwxr-xr-x | debian/changelog | 24 | ||||
-rwxr-xr-x | debian/control | 6 | ||||
-rwxr-xr-x | include/recorder.h | 37 | ||||
-rwxr-xr-x | include/recorder_private.h | 1 | ||||
-rwxr-xr-x | packaging/capi-media-recorder.spec | 10 | ||||
-rwxr-xr-x | src/recorder.c | 66 |
9 files changed, 125 insertions, 54 deletions
diff --git a/.gitignore b/.gitignore deleted file mode 100755 index f884ceb..0000000 --- a/.gitignore +++ /dev/null @@ -1,26 +0,0 @@ -CMakeCache.txt -*/CMakeFiles/* -*.cmake -CMakeFiles* -*.a -*.so -Testing -cmake.depends -cmake.check_depends -cmake.check_cache -core -core.* -gmon.out -install_manifest.txt -*~ -.kdev_include_paths -src.kdev4 -.cproject -.project -tet_captured -tet_lock -*.pc -*-test -*-test_* -*tester.c -TC/config diff --git a/CMakeLists.txt b/CMakeLists.txt index 19f4344..11ae346 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -24,9 +24,7 @@ SET(submodule "recorder") # for package file SET(dependents "dlog mm-camcorder capi-media-camera") - -# for deb -SET(deb_dependents "libdlog-0 libmm-camcorder capi-media-camera") +SET(pc_dependents "capi-base-common capi-media-camera") SET(fw_name "${project_prefix}-${service}-${submodule}") @@ -78,9 +76,8 @@ INSTALL( ) SET(PC_NAME ${fw_name}) -SET(PC_REQUIRED ${dependents}) +SET(PC_REQUIRED ${pc_dependents}) SET(PC_LDFLAGS -l${fw_name}) -SET(PC_CFLAGS -I\${includedir}/${service}) CONFIGURE_FILE( ${fw_name}.pc.in diff --git a/capi-media-recorder.pc.in b/capi-media-recorder.pc.in index 773d667..5d02f8d 100755 --- a/capi-media-recorder.pc.in +++ b/capi-media-recorder.pc.in @@ -11,5 +11,5 @@ Description: @PACKAGE_DESCRIPTION@ Version: @VERSION@ Requires: @PC_REQUIRED@ Libs: -L${libdir} @PC_LDFLAGS@ -Cflags: -I${includedir} @PC_CFLAGS@ +Cflags: -I${includedir} diff --git a/debian/changelog b/debian/changelog index 2c8d9ed..9c2af03 100755 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,27 @@ +capi-media-recorder (0.1.0-8) unstable; urgency=low + + * update dependency + * Git: slp-source.sec.samsung.net:slp/api/recorder + * Tag: capi-media-recorder_0.1.0-8 + + -- Seungkeun Lee <sngn.lee@samsung.com> Wed, 14 Mar 2012 12:06:14 +0900 + +capi-media-recorder (0.1.0-7) unstable; urgency=low + + * new API added : mute , audio_level + * Git: slp-source.sec.samsung.net:slp/api/recorder + * Tag: capi-media-recorder_0.1.0-7 + + -- Seungkeun Lee <sngn.lee@samsung.com> Thu, 08 Mar 2012 17:43:04 +0900 + +capi-media-recorder (0.1.0-6) unstable; urgency=low + + * add static , change internal function name + * Git: slp-source.sec.samsung.net:slp/api/recorder + * Tag: capi-media-recorder_0.1.0-6 + + -- Seungkeun Lee <sngn.lee@samsung.com> Mon, 20 Feb 2012 15:52:26 +0900 + capi-media-recorder (0.1.0-5) unstable; urgency=low * add so version diff --git a/debian/control b/debian/control index 2cb8739..7e8b397 100755 --- a/debian/control +++ b/debian/control @@ -3,16 +3,16 @@ Source: capi-media-recorder 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 diff --git a/include/recorder.h b/include/recorder.h index fbb02dc..ddfc345 100755 --- a/include/recorder.h +++ b/include/recorder.h @@ -407,6 +407,18 @@ int recorder_cancel(recorder_h recorder); */ 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 @@ -869,6 +881,31 @@ int recorder_attr_get_audio_encoder_bitrate(recorder_h recorder, int *bitrate); */ 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); + + + /** * @} */ diff --git a/include/recorder_private.h b/include/recorder_private.h index d66cce8..1f349b2 100755 --- a/include/recorder_private.h +++ b/include/recorder_private.h @@ -46,6 +46,7 @@ typedef struct _recorder_s{ int state; _recorder_type_e type; int origin_preview_format; + double last_max_input_level; } recorder_s; diff --git a/packaging/capi-media-recorder.spec b/packaging/capi-media-recorder.spec index e51c401..34cd470 100755 --- a/packaging/capi-media-recorder.spec +++ b/packaging/capi-media-recorder.spec @@ -1,7 +1,7 @@ Name: capi-media-recorder Summary: A Camera library in Tizen Native API Version: 0.1.0 -Release: 1 +Release: 8 Group: TO_BE/FILLED_IN License: Apache-2.0 Source0: %{name}-%{version}.tar.gz @@ -27,9 +27,8 @@ Requires: %{name} = %{version}-%{release} %build -FULLVER=%{version} -MAJORVER=`echo ${FULLVER} | cut -d '.' -f 1` -cmake . -DCMAKE_INSTALL_PREFIX=/usr -DFULLVER=${FULLVER} -DMAJORVER=${MAJORVER} +MAJORVER=`echo %{version} | awk 'BEGIN {FS="."}{print $1}'` +cmake . -DCMAKE_INSTALL_PREFIX=/usr -DFULLVER=%{version} -DMAJORVER=${MAJORVER} make %{?jobs:-j%jobs} @@ -44,10 +43,11 @@ rm -rf %{buildroot} %files -%{_libdir}/libcapi-media-recorder.so* +%{_libdir}/libcapi-media-recorder.so.* %files devel %{_includedir}/media/recorder.h %{_libdir}/pkgconfig/*.pc +%{_libdir}/libcapi-media-recorder.so diff --git a/src/recorder.c b/src/recorder.c index f79e502..f315072 100755 --- a/src/recorder.c +++ b/src/recorder.c @@ -11,7 +11,7 @@ * 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. */ @@ -33,6 +33,8 @@ #endif #define LOG_TAG "TIZEN_N_RECORDER" +#define LOWSET_DECIBEL -300.0 + /* * camera_private @@ -194,7 +196,7 @@ static int __mm_recorder_msg_cb(int message, void *param, void *user_data){ 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: @@ -253,9 +255,10 @@ static int __mm_recorder_msg_cb(int message, void *param, void *user_data){ } 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; @@ -284,7 +287,8 @@ int recorder_create_videorecorder( camera_h camera, recorder_h* recorder){ } 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; @@ -302,8 +306,8 @@ int recorder_create_videorecorder( camera_h camera, recorder_h* recorder){ 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); @@ -326,6 +330,7 @@ int recorder_create_audiorecorder( recorder_h* recorder){ } 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){ @@ -333,8 +338,8 @@ int recorder_create_audiorecorder( recorder_h* recorder){ 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){ @@ -383,12 +388,12 @@ int recorder_destroy( recorder_h recorder){ 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); @@ -490,6 +495,18 @@ int recorder_cancel( recorder_h recorder){ 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); @@ -969,3 +986,24 @@ int recorder_foreach_supported_video_encoder(recorder_h recorder, recorder_suppo } + +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; +} |