AC_PREREQ(2.52)
m4_define([PACAKGE_MAJOR], [1])
-m4_define([PACKAGE_MINOR], [0])
-m4_define([PACKAGE_MICRO], [0])
+m4_define([PACKAGE_MINOR], [1])
+m4_define([PACKAGE_MICRO], [2])
AC_INIT([libmm-camcorder], [PACKAGE_MAJOR.PACKAGE_MINOR.PACKAGE_MICRO])
AM_INIT_AUTOMAKE([-Wall -Werror foreign])
AC_SUBST(MM_COMMON_CFLAGS)
AC_SUBST(MM_COMMON_LIBS)
-AC_ARG_ENABLE(mm-resource-manager, AC_HELP_STRING([--enable-mm-resource-manager], [enable mm-resource-manager]),
-[
- case "${enableval}" in
- yes) MM_RESOURCE_MANAGER_SUPPORT=yes ;;
- no) MM_RESOURCE_MANAGER_SUPPORT=no ;;
- *) AC_MSG_ERROR(bad value ${enableval} for --enable-mm-resource-manager) ;;
- esac
-],[MM_RESOURCE_MANAGER_SUPPORT=no])
-if test "x$MM_RESOURCE_MANAGER_SUPPORT" = "xyes"; then
-PKG_CHECK_MODULES(MM_RESOURCE_MANAGER, mm-resource-manager)
-AC_SUBST(MM_RESOURCE_MANAGER_CFLAGS)
-AC_SUBST(MM_RESOURCE_MANAGER_LIBS)
-fi
-AM_CONDITIONAL([MM_RESOURCE_MANAGER_SUPPORT], [test "x$MM_RESOURCE_MANAGER_SUPPORT" = "xyes"])
-
PKG_CHECK_MODULES(EXIF, libexif)
AC_SUBST(EXIF_CFLAGS)
AC_SUBST(EXIF_LIBS)
AC_SUBST(TBM_CFLAGS)
AC_SUBST(TBM_LIBS)
+PKG_CHECK_MODULES(AUL, aul)
+AC_SUBST(AUL_CFLAGS)
+AC_SUBST(AUL_LIBS)
+
+PKG_CHECK_MODULES(RC, resource-center-api)
+AC_SUBST(RC_CFLAGS)
+AC_SUBST(RC_LIBS)
+
AC_ARG_ENABLE(rm, AC_HELP_STRING([--enable-rm], [enable rm]),
[
case "${enableval}" in
AC_SUBST(RM_CFLAGS)
AC_SUBST(RM_LIBS)
-PKG_CHECK_MODULES(AUL, aul)
-AC_SUBST(AUL_CFLAGS)
-AC_SUBST(AUL_LIBS)
-
PKG_CHECK_MODULES(RI, tv-resource-information)
AC_SUBST(RI_CFLAGS)
AC_SUBST(RI_LIBS)
+fi
-PKG_CHECK_MODULES(RC, resource-center-api)
-AC_SUBST(RC_CFLAGS)
-AC_SUBST(RC_LIBS)
+AM_CONDITIONAL([RM_SUPPORT], [test "x$RM_SUPPORT" = "xyes"])
+
+AC_ARG_ENABLE(rm-common, AC_HELP_STRING([--enable-rm-common], [enable rm common]),
+[
+ case "${enableval}" in
+ yes) RM_SUPPORT=yes ;;
+ no) RM_SUPPORT=no ;;
+ *) AC_MSG_ERROR(bad value ${enableval} for --enable-rm-common) ;;
+ esac
+],[RM_SUPPORT=no])
+if test "x$RM_SUPPORT" = "xyes"; then
+PKG_CHECK_MODULES(RM, resource-manager)
+AC_SUBST(RM_CFLAGS)
+AC_SUBST(RM_LIBS)
+
+PKG_CHECK_MODULES(RI, resource-information)
+AC_SUBST(RI_CFLAGS)
+AC_SUBST(RI_LIBS)
fi
AM_CONDITIONAL([RM_SUPPORT], [test "x$RM_SUPPORT" = "xyes"])
static gint __mmcamcorder_gst_handle_core_error(MMHandleType handle, int code, GstMessage *message);
static gint __mmcamcorder_gst_handle_resource_warning(MMHandleType handle, GstMessage *message , GError *error);
static gboolean __mmcamcorder_handle_gst_warning(MMHandleType handle, GstMessage *message, GError *error);
-#ifdef _MMCAMCORDER_MM_RM_SUPPORT
-static int __mmcamcorder_resource_release_cb(mm_resource_manager_h rm,
- mm_resource_manager_res_h res, void *user_data);
-#endif /* _MMCAMCORDER_MM_RM_SUPPORT */
/*=======================================================================================
| FUNCTION DEFINITIONS |
g_mutex_init(&(new_handle->mtsafe).astream_cb_lock);
g_mutex_init(&(new_handle->mtsafe).mstream_cb_lock);
g_mutex_init(&(new_handle->mtsafe).vedecision_cb_lock);
-#ifdef _MMCAMCORDER_MM_RM_SUPPORT
- g_mutex_init(&(new_handle->mtsafe).resource_lock);
-#endif /* _MMCAMCORDER_MM_RM_SUPPORT */
g_mutex_init(&new_handle->restart_preview_lock);
g_mutex_clear(&(hcamcorder->mtsafe).astream_cb_lock);
g_mutex_clear(&(hcamcorder->mtsafe).mstream_cb_lock);
g_mutex_clear(&(hcamcorder->mtsafe).vedecision_cb_lock);
-#ifdef _MMCAMCORDER_MM_RM_SUPPORT
- g_mutex_clear(&(hcamcorder->mtsafe).resource_lock);
-#endif /* _MMCAMCORDER_MM_RM_SUPPORT */
g_mutex_clear(&hcamcorder->snd_info.open_mutex);
g_cond_clear(&hcamcorder->snd_info.open_cond);
MMCAM_LOG_INFO("DPM camera changed cb id %d", hcamcorder->dpm_camera_cb_id);
}
-
-#ifdef _MMCAMCORDER_MM_RM_SUPPORT
- /* initialize resource manager */
- ret = mm_resource_manager_create(MM_RESOURCE_MANAGER_APP_CLASS_MEDIA,
- __mmcamcorder_resource_release_cb, hcamcorder,
- &hcamcorder->resource_manager);
- if (ret != MM_RESOURCE_MANAGER_ERROR_NONE) {
- MMCAM_LOG_ERROR("failed to initialize resource manager");
- ret = MM_ERROR_CAMCORDER_INTERNAL;
- goto _ERR_DEFAULT_VALUE_INIT;
- }
-#endif /* _MMCAMCORDER_MM_RM_SUPPORT */
} else {
ret = __mmcamcorder_init_configure_audio(hcamcorder);
if (ret != MM_ERROR_NONE)
return MM_ERROR_NONE;
_ERR_DEFAULT_VALUE_INIT:
-#ifdef _MMCAMCORDER_MM_RM_SUPPORT
- /* de-initialize resource manager */
- if (hcamcorder->resource_manager != NULL)
- mm_resource_manager_destroy(hcamcorder->resource_manager);
-#endif /* _MMCAMCORDER_MM_RM_SUPPORT */
/* release DPM related handle */
if (hcamcorder->dpm_handle) {
hcamcorder->sub_context = NULL;
}
-#ifdef _MMCAMCORDER_MM_RM_SUPPORT
- /* de-initialize resource manager */
- _MMCAMCORDER_LOCK_RESOURCE(hcamcorder);
-
- if (hcamcorder->resource_manager != NULL) {
- ret = mm_resource_manager_destroy(hcamcorder->resource_manager);
- if (ret != MM_RESOURCE_MANAGER_ERROR_NONE)
- MMCAM_LOG_ERROR("failed to de-initialize resource manager 0x%x", ret);
- }
-
- _MMCAMCORDER_UNLOCK_RESOURCE(hcamcorder);
-#endif /* _MMCAMCORDER_MM_RM_SUPPORT */
-
/* Remove messages which are not called yet */
_mmcamcorder_remove_message_all(handle);
MMCAM_LOG_WARNING("NULL dpm_handle");
}
-#ifdef _MMCAMCORDER_MM_RM_SUPPORT
- _MMCAMCORDER_LOCK_RESOURCE(hcamcorder);
- /* prepare resource manager for camera */
- if (hcamcorder->camera_resource == NULL) {
- ret = mm_resource_manager_mark_for_acquire(hcamcorder->resource_manager,
- MM_RESOURCE_MANAGER_RES_TYPE_CAMERA,
- 1,
- &hcamcorder->camera_resource);
- if (ret != MM_RESOURCE_MANAGER_ERROR_NONE) {
- MMCAM_LOG_ERROR("could not prepare for camera resource");
- ret = MM_ERROR_RESOURCE_INTERNAL;
- _MMCAMCORDER_UNLOCK_RESOURCE(hcamcorder);
- goto _ERR_CAMCORDER_CMD_PRECON_AFTER_LOCK;
- }
- } else {
- MMCAM_LOG_INFO("camera already acquired");
- }
-
- /* prepare resource manager for "video_overlay only if display surface is X" */
- if (display_surface_type == MM_DISPLAY_SURFACE_OVERLAY) {
- if (hcamcorder->video_overlay_resource == NULL) {
- ret = mm_resource_manager_mark_for_acquire(hcamcorder->resource_manager,
- MM_RESOURCE_MANAGER_RES_TYPE_VIDEO_OVERLAY,
- MM_RESOURCE_MANAGER_RES_VOLUME_FULL,
- &hcamcorder->video_overlay_resource);
- if (ret != MM_RESOURCE_MANAGER_ERROR_NONE) {
- MMCAM_LOG_ERROR("could not prepare for overlay resource");
- ret = MM_ERROR_RESOURCE_INTERNAL;
- _MMCAMCORDER_UNLOCK_RESOURCE(hcamcorder);
- goto _ERR_CAMCORDER_CMD_PRECON_AFTER_LOCK;
- }
- } else {
- MMCAM_LOG_INFO("overlay already acquired");
- }
- }
-
- /* acquire resources */
- ret = mm_resource_manager_commit(hcamcorder->resource_manager);
- if (ret != MM_RESOURCE_MANAGER_ERROR_NONE) {
- MMCAM_LOG_ERROR("could not acquire resources");
- ret = MM_ERROR_RESOURCE_INTERNAL;
- _MMCAMCORDER_UNLOCK_RESOURCE(hcamcorder);
- goto _ERR_CAMCORDER_CMD_PRECON_AFTER_LOCK;
- }
- _MMCAMCORDER_UNLOCK_RESOURCE(hcamcorder);
-#endif /* _MMCAMCORDER_MM_RM_SUPPORT */
-
#ifdef _MMCAMCORDER_RM_SUPPORT
ret = _mmcamcorder_rm_create(handle);
if (ret != MM_ERROR_NONE) {
return MM_ERROR_NONE;
_ERR_CAMCORDER_CMD:
-#ifdef _MMCAMCORDER_MM_RM_SUPPORT
- /* release hw resources */
- _MMCAMCORDER_LOCK_RESOURCE(hcamcorder);
- if (hcamcorder->type == MM_CAMCORDER_MODE_VIDEO_CAPTURE) {
- if (hcamcorder->camera_resource != NULL) {
- mm_resource_manager_mark_for_release(hcamcorder->resource_manager,
- hcamcorder->camera_resource);
- hcamcorder->camera_resource = NULL;
- }
- if (hcamcorder->video_overlay_resource != NULL) {
- mm_resource_manager_mark_for_release(hcamcorder->resource_manager,
- hcamcorder->video_overlay_resource);
- hcamcorder->video_overlay_resource = NULL;
- }
- mm_resource_manager_commit(hcamcorder->resource_manager);
- }
- _MMCAMCORDER_UNLOCK_RESOURCE(hcamcorder);
-#endif /* _MMCAMCORDER_MM_RM_SUPPORT */
+
#ifdef _MMCAMCORDER_RM_SUPPORT
_mmcamcorder_rm_deallocate(handle);
_mmcamcorder_rm_release(handle);
hcamcorder->sub_context = NULL;
}
-#ifdef _MMCAMCORDER_MM_RM_SUPPORT
- _MMCAMCORDER_LOCK_RESOURCE(hcamcorder);
- MMCAM_LOG_WARNING("lock resource - cb calling %d", hcamcorder->is_release_cb_calling);
-
- if (hcamcorder->type == MM_CAMCORDER_MODE_VIDEO_CAPTURE &&
- hcamcorder->state_change_by_system != _MMCAMCORDER_STATE_CHANGE_BY_RM &&
- hcamcorder->is_release_cb_calling == FALSE) {
-
- /* release resource */
- if (hcamcorder->camera_resource != NULL) {
- ret = mm_resource_manager_mark_for_release(hcamcorder->resource_manager,
- hcamcorder->camera_resource);
- if (ret != MM_RESOURCE_MANAGER_ERROR_NONE) {
- MMCAM_LOG_ERROR("could not mark camera resource for release");
- ret = MM_ERROR_CAMCORDER_INTERNAL;
- _MMCAMCORDER_UNLOCK_RESOURCE(hcamcorder);
- MMCAM_LOG_INFO("unlock resource");
- goto _ERR_CAMCORDER_CMD_PRECON_AFTER_LOCK;
- }
- }
-
- if (hcamcorder->video_overlay_resource != NULL) {
- ret = mm_resource_manager_mark_for_release(hcamcorder->resource_manager,
- hcamcorder->video_overlay_resource);
- if (ret != MM_RESOURCE_MANAGER_ERROR_NONE) {
- MMCAM_LOG_ERROR("could not mark overlay resource for release");
- ret = MM_ERROR_CAMCORDER_INTERNAL;
- _MMCAMCORDER_UNLOCK_RESOURCE(hcamcorder);
- MMCAM_LOG_INFO("unlock resource");
- goto _ERR_CAMCORDER_CMD_PRECON_AFTER_LOCK;
- }
- }
-
- ret = mm_resource_manager_commit(hcamcorder->resource_manager);
-
- if (ret != MM_RESOURCE_MANAGER_ERROR_NONE) {
- MMCAM_LOG_ERROR("failed to release resource, ret(0x%x)", ret);
- ret = MM_ERROR_CAMCORDER_INTERNAL;
-
- _MMCAMCORDER_UNLOCK_RESOURCE(hcamcorder);
- MMCAM_LOG_INFO("unlock resource");
-
- goto _ERR_CAMCORDER_CMD_PRECON_AFTER_LOCK;
- } else {
- if (hcamcorder->camera_resource != NULL)
- hcamcorder->camera_resource = NULL;
- if (hcamcorder->video_overlay_resource != NULL)
- hcamcorder->video_overlay_resource = NULL;
- }
- }
-
- _MMCAMCORDER_UNLOCK_RESOURCE(hcamcorder);
-
- MMCAM_LOG_WARNING("unlock resource");
-#endif /* _MMCAMCORDER_MM_RM_SUPPORT */
-
#ifdef _MMCAMCORDER_RM_SUPPORT
_mmcamcorder_rm_deallocate(handle);
#endif /* _MMCAMCORDER_RM_SUPPORT*/
}
-#ifdef _MMCAMCORDER_MM_RM_SUPPORT
-static int __mmcamcorder_resource_release_cb(mm_resource_manager_h rm,
- mm_resource_manager_res_h res, void *user_data)
-{
- mmf_camcorder_t *hcamcorder = (mmf_camcorder_t *) user_data;
-
- mmf_return_val_if_fail(hcamcorder, FALSE);
-
- MMCAM_LOG_WARNING("enter");
-
- _MMCAMCORDER_LOCK_RESOURCE(hcamcorder);
-
- /* set flag for resource release callback */
- hcamcorder->is_release_cb_calling = TRUE;
-
- _MMCAMCORDER_UNLOCK_RESOURCE(hcamcorder);
-
- _MMCAMCORDER_LOCK_INTERRUPT(hcamcorder);
-
- if (res == hcamcorder->video_encoder_resource) {
- /* Stop video recording */
- if (_mmcamcorder_commit((MMHandleType)hcamcorder) != MM_ERROR_NONE) {
- MMCAM_LOG_ERROR("commit failed, cancel it");
- _mmcamcorder_cancel((MMHandleType)hcamcorder);
- }
- } else {
- /* Stop camera */
- __mmcamcorder_force_stop(hcamcorder, _MMCAMCORDER_STATE_CHANGE_BY_RM);
- }
-
- _MMCAMCORDER_UNLOCK_INTERRUPT(hcamcorder);
-
- _MMCAMCORDER_LOCK_RESOURCE(hcamcorder);
-
- if (res == hcamcorder->camera_resource)
- hcamcorder->camera_resource = NULL;
- else if (res == hcamcorder->video_overlay_resource)
- hcamcorder->video_overlay_resource = NULL;
- else if (res == hcamcorder->video_encoder_resource)
- hcamcorder->video_encoder_resource = NULL;
-
- /* restore flag for resource release callback */
- hcamcorder->is_release_cb_calling = FALSE;
-
- _MMCAMCORDER_UNLOCK_RESOURCE(hcamcorder);
-
- MMCAM_LOG_WARNING("leave");
-
- return TRUE;
-}
-#endif /* _MMCAMCORDER_MM_RM_SUPPORT */
-
int _mmcamcorder_manage_external_storage_state(MMHandleType handle, int storage_state)
{
int ret = MM_ERROR_NONE;
GstPad *reqpad = NULL;
mmf_camcorder_t *hcamcorder = MMF_CAMCORDER(handle);
_MMCamcorderSubContext *sc = NULL;
-#ifdef _MMCAMCORDER_MM_RM_SUPPORT
- int ret = MM_ERROR_NONE;
-#endif /* _MMCAMCORDER_MM_RM_SUPPORT */
mmf_return_val_if_fail(hcamcorder, MM_ERROR_CAMCORDER_NOT_INITIALIZED);
_MMCAMCORDER_ENCODE_MAIN_PIPE, _MMCAMCORDER_ENCSINK_SINK); */
MMCAM_LOG_WARNING("Encoder pipeline removed");
-
-#ifdef _MMCAMCORDER_MM_RM_SUPPORT
- _MMCAMCORDER_LOCK_RESOURCE(hcamcorder);
-
- MMCAM_LOG_WARNING("lock resource - cb calling %d", hcamcorder->is_release_cb_calling);
-
- if (hcamcorder->is_release_cb_calling == FALSE) {
- /* release resource */
- ret = mm_resource_manager_mark_for_release(hcamcorder->resource_manager,
- hcamcorder->video_encoder_resource);
- if (ret == MM_RESOURCE_MANAGER_ERROR_NONE)
- hcamcorder->video_encoder_resource = NULL;
-
- MMCAM_LOG_WARNING("mark resource for release 0x%x", ret);
-
- ret = mm_resource_manager_commit(hcamcorder->resource_manager);
-
- MMCAM_LOG_WARNING("commit resource release 0x%x", ret);
- }
-
- _MMCAMCORDER_UNLOCK_RESOURCE(hcamcorder);
-
- MMCAM_LOG_WARNING("unlock resource");
-#endif /* _MMCAMCORDER_MM_RM_SUPPORT */
}
return MM_ERROR_NONE;
/* Recording */
MMCAM_LOG_INFO("Record Start - dual stream %d", info->support_dual_stream);
-#ifdef _MMCAMCORDER_MM_RM_SUPPORT
- _MMCAMCORDER_LOCK_RESOURCE(hcamcorder);
-
- /* prepare resource manager for H/W encoder */
- if (hcamcorder->video_encoder_resource == NULL) {
- ret = mm_resource_manager_mark_for_acquire(hcamcorder->resource_manager,
- MM_RESOURCE_MANAGER_RES_TYPE_VIDEO_ENCODER,
- MM_RESOURCE_MANAGER_RES_VOLUME_FULL,
- &hcamcorder->video_encoder_resource);
- if (ret != MM_RESOURCE_MANAGER_ERROR_NONE) {
- MMCAM_LOG_ERROR("could not prepare for encoder resource");
- ret = MM_ERROR_RESOURCE_INTERNAL;
- _MMCAMCORDER_UNLOCK_RESOURCE(hcamcorder);
- goto _ERR_CAMCORDER_VIDEO_COMMAND;
- }
- } else {
- MMCAM_LOG_INFO("encoder already acquired");
- }
-
- /* acquire resources */
- ret = mm_resource_manager_commit(hcamcorder->resource_manager);
- if (ret != MM_RESOURCE_MANAGER_ERROR_NONE) {
- MMCAM_LOG_ERROR("could not acquire resources");
- ret = MM_ERROR_RESOURCE_INTERNAL;
- _MMCAMCORDER_UNLOCK_RESOURCE(hcamcorder);
- goto _ERR_CAMCORDER_VIDEO_COMMAND;
- }
-
- _MMCAMCORDER_UNLOCK_RESOURCE(hcamcorder);
-#endif /* _MMCAMCORDER_MM_RM_SUPPORT */
-
/* init record_dual_stream */
info->record_dual_stream = FALSE;