Name: libmm-camcorder
Summary: Camera and recorder library
-Version: 0.10.2
+Version: 0.10.3
Release: 0
Group: Multimedia/Libraries
License: Apache-2.0
int _mmcamcorder_set_converted_value(MMHandleType handle, _MMCamcorderEnumConvert *convert);
int _mmcamcorder_init_convert_table(MMHandleType handle);
-int _mmcamcorder_init_attr_from_configure(MMHandleType handle);
+int _mmcamcorder_init_attr_from_configure(MMHandleType handle, int type);
int _mmcamcorder_convert_brightness(int mslVal);
int _mmcamcorder_convert_whitebalance(int mslVal);
MMF_VALUE_TYPE_INT,
MM_ATTRS_FLAG_RW,
{(void*)MM_AUDIO_DEVICE_MIC},
- MM_ATTRS_VALID_TYPE_INT_RANGE,
- {.int_min = 0},
- {.int_max = (MM_AUDIO_DEVICE_NUM-1)},
+ MM_ATTRS_VALID_TYPE_INT_ARRAY,
+ {NULL},
+ {0},
NULL,
},
{
/* [AudioInput] matching table */
static conf_info_table conf_main_audio_input_table[] = {
+ { "AudioDevice", CONFIGURE_VALUE_INT_ARRAY, {NULL} },
{ "AudiosrcElement", CONFIGURE_VALUE_ELEMENT, {&_audiosrc_element_default} },
{ "AudiomodemsrcElement", CONFIGURE_VALUE_ELEMENT, {&_audiomodemsrc_element_default} },
};
ret = _mmcamcorder_init_convert_table((MMHandleType)hcamcorder);
if (ret != MM_ERROR_NONE) {
_mmcam_dbg_warn("converting table initialize error!!");
+ ret = MM_ERROR_CAMCORDER_INTERNAL;
+ goto _ERR_AFTER_ASM_REGISTER;
}
- ret = _mmcamcorder_init_attr_from_configure((MMHandleType)hcamcorder);
+ ret = _mmcamcorder_init_attr_from_configure((MMHandleType)hcamcorder, info->videodev_type);
if (ret != MM_ERROR_NONE) {
_mmcam_dbg_warn("converting table initialize error!!");
+ ret = MM_ERROR_CAMCORDER_INTERNAL;
+ goto _ERR_AFTER_ASM_REGISTER;
}
/* Get device info, recommend preview fmt and display rotation from INI */
_mmcam_dbg_err("Set %s FAILED.", err_attr_name);
free(err_attr_name);
err_attr_name = NULL;
+ ret = MM_ERROR_CAMCORDER_INTERNAL;
+ goto _ERR_AFTER_ASM_REGISTER;
}
/* Get default value of brightness */
_mmcam_dbg_err("Get brightness FAILED.");
free(err_attr_name);
err_attr_name = NULL;
+ ret = MM_ERROR_CAMCORDER_INTERNAL;
+ goto _ERR_AFTER_ASM_REGISTER;
}
_mmcam_dbg_log("Default brightness : %d", hcamcorder->brightness_default);
} else {
_mmcam_dbg_err("Set %s FAILED.", err_attr_name);
free(err_attr_name);
err_attr_name = NULL;
+ ret = MM_ERROR_CAMCORDER_INTERNAL;
+ goto _ERR_AFTER_ASM_REGISTER;
+ }
+
+ ret = _mmcamcorder_init_attr_from_configure((MMHandleType)hcamcorder, info->videodev_type);
+ if (ret != MM_ERROR_NONE) {
+ _mmcam_dbg_warn("init attribute from configure error : 0x%x", ret);
+ ret = MM_ERROR_CAMCORDER_INTERNAL;
+ goto _ERR_AFTER_ASM_REGISTER;
}
}
* For detail information, refer below documents.
*
*/
+static _MMCamcorderInfoConverting g_audio_info[] = {
+ {
+ CONFIGURE_TYPE_MAIN,
+ CONFIGURE_CATEGORY_MAIN_AUDIO_INPUT,
+ MM_CAM_AUDIO_DEVICE,
+ MM_CAMCORDER_ATTR_NONE,
+ "AudioDevice",
+ MM_CAMCONVERT_TYPE_INT_ARRAY,
+ NULL,
+ }
+};
+
static _MMCamcorderInfoConverting g_display_info[] = {
{
CONFIGURE_TYPE_MAIN,
}
-int _mmcamcorder_init_attr_from_configure(MMHandleType handle)
+int _mmcamcorder_init_attr_from_configure(MMHandleType handle, int type)
{
mmf_camcorder_t *hcamcorder = MMF_CAMCORDER(handle);
_MMCamcorderInfoConverting *info = NULL;
mmf_return_val_if_fail(hcamcorder, MM_ERROR_CAMCORDER_NOT_INITIALIZED);
- _mmcam_dbg_log("");
+ _mmcam_dbg_log("type : %d", type);
- /* Initialize attribute related to camera control */
- info = hcamcorder->caminfo_convert;
- table_size = sizeof(g_caminfo_convert) / sizeof(_MMCamcorderInfoConverting);
- ret = __mmcamcorder_set_info_to_attr( handle, info, table_size );
- if( ret != MM_ERROR_NONE )
- {
- _mmcam_dbg_err( "ret : %x", ret );
- return ret;
+ if (type != MM_VIDEO_DEVICE_NONE) {
+ /* Initialize attribute related to camera control */
+ info = hcamcorder->caminfo_convert;
+ table_size = sizeof(g_caminfo_convert) / sizeof(_MMCamcorderInfoConverting);
+ ret = __mmcamcorder_set_info_to_attr(handle, info, table_size);
+ if (ret != MM_ERROR_NONE) {
+ _mmcam_dbg_err("camera info set error : 0x%x", ret);
+ return ret;
+ }
+
+ /* Initialize attribute related to display */
+ info = g_display_info;
+ table_size = sizeof(g_display_info) / sizeof(_MMCamcorderInfoConverting);
+ ret = __mmcamcorder_set_info_to_attr(handle, info, table_size);
+ if (ret != MM_ERROR_NONE) {
+ _mmcam_dbg_err("display info set error : 0x%x", ret);
+ return ret;
+ }
}
- /* Initialize attribute related to display */
- info = g_display_info;
- table_size = sizeof(g_display_info) / sizeof(_MMCamcorderInfoConverting);
- ret = __mmcamcorder_set_info_to_attr( handle, info, table_size );
+ /* Initialize attribute related to audio */
+ info = g_audio_info;
+ table_size = sizeof(g_audio_info) / sizeof(_MMCamcorderInfoConverting);
+ ret = __mmcamcorder_set_info_to_attr(handle, info, table_size);
+ if (ret != MM_ERROR_NONE) {
+ _mmcam_dbg_err("audio info set error : 0x%x", ret);
+ return ret;
+ }
- _mmcam_dbg_log( "result: %x", ret );
+ _mmcam_dbg_log("done");
return ret;
}
+
static int
__mmcamcorder_set_info_to_attr( MMHandleType handle, _MMCamcorderInfoConverting *info, int table_size )
{
info->restart_preview = TRUE;
}
+ /* set recording hint */
+ MMCAMCORDER_G_OBJECT_SET(sc->element[_MMCAMCORDER_VIDEOSRC_SRC].gst, "recording-hint", TRUE);
+
if (info->restart_preview) {
/* stop preview and set new size */
_mmcam_dbg_log("restart preview");
CameraControl = GST_CAMERA_CONTROL(sc->element[_MMCAMCORDER_VIDEOSRC_SRC].gst);
if (CameraControl) {
MMCAMCORDER_G_OBJECT_SET(sc->element[_MMCAMCORDER_VIDEOSINK_SINK].gst, "stop-video", TRUE);
-#ifdef LATEST_CAMERA_CONTROL
+
_mmcam_dbg_log("GST_CAMERA_CONTROL_RECORD_COMMAND_START");
gst_camera_control_set_record_command(CameraControl, GST_CAMERA_CONTROL_RECORD_COMMAND_START);
-#endif /* LATEST_CAMERA_CONTROL */
+
MMCAMCORDER_G_OBJECT_SET(sc->element[_MMCAMCORDER_VIDEOSINK_SINK].gst, "stop-video", FALSE);
} else {
_mmcam_dbg_err("could not get camera control");
CameraControl = GST_CAMERA_CONTROL(sc->element[_MMCAMCORDER_VIDEOSRC_SRC].gst);
if (CameraControl) {
MMCAMCORDER_G_OBJECT_SET(sc->element[_MMCAMCORDER_VIDEOSINK_SINK].gst, "stop-video", TRUE);
-#ifdef LATEST_CAMERA_CONTROL
+
_mmcam_dbg_log("GST_CAMERA_CONTROL_RECORD_COMMAND_STOP");
gst_camera_control_set_record_command(CameraControl, GST_CAMERA_CONTROL_RECORD_COMMAND_STOP);
-#endif /* LATEST_CAMERA_CONTROL */
+
MMCAMCORDER_G_OBJECT_SET(sc->element[_MMCAMCORDER_VIDEOSINK_SINK].gst, "stop-video", FALSE);
} else {
_mmcam_dbg_err("failed to get camera control");
goto _ERR_CAMCORDER_VIDEO_COMMAND;
}
+ /* set recording hint */
+ MMCAMCORDER_G_OBJECT_SET(sc->element[_MMCAMCORDER_VIDEOSRC_SRC].gst, "recording-hint", FALSE);
+
/* stop video stream */
if (info->record_dual_stream) {
CameraControl = GST_CAMERA_CONTROL(sc->element[_MMCAMCORDER_VIDEOSRC_SRC].gst);
if (CameraControl) {
MMCAMCORDER_G_OBJECT_SET(sc->element[_MMCAMCORDER_VIDEOSINK_SINK].gst, "stop-video", TRUE);
-#ifdef LATEST_CAMERA_CONTROL
+
_mmcam_dbg_log("GST_CAMERA_CONTROL_RECORD_COMMAND_STOP");
gst_camera_control_set_record_command(CameraControl, GST_CAMERA_CONTROL_RECORD_COMMAND_STOP);
-#endif /* LATEST_CAMERA_CONTROL */
+
MMCAMCORDER_G_OBJECT_SET(sc->element[_MMCAMCORDER_VIDEOSINK_SINK].gst, "stop-video", FALSE);
} else {
_mmcam_dbg_err("failed to get camera control");
_mmcam_dbg_warn("_MMCamcorder_CMD_COMMIT:__mmcamcorder_remove_recorder_pipeline failed. error[%x]", ret);
}
+ /* set recording hint */
+ MMCAMCORDER_G_OBJECT_SET(sc->element[_MMCAMCORDER_VIDEOSRC_SRC].gst, "recording-hint", FALSE);
+
/* stop video stream */
if (info->record_dual_stream) {
GstCameraControl *control = GST_CAMERA_CONTROL(sc->element[_MMCAMCORDER_VIDEOSRC_SRC].gst);
if (control) {
MMCAMCORDER_G_OBJECT_SET(sc->element[_MMCAMCORDER_VIDEOSINK_SINK].gst, "stop-video", TRUE);
-#ifdef LATEST_CAMERA_CONTROL
+
_mmcam_dbg_log("GST_CAMERA_CONTROL_RECORD_COMMAND_STOP");
gst_camera_control_set_record_command(control, GST_CAMERA_CONTROL_RECORD_COMMAND_STOP);
-#endif /* LATEST_CAMERA_CONTROL */
+
MMCAMCORDER_G_OBJECT_SET(sc->element[_MMCAMCORDER_VIDEOSINK_SINK].gst, "stop-video", FALSE);
} else {
_mmcam_dbg_err("failed to get camera control");