X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Fmm_camcorder_platform.c;h=5817538f94d16592cbdaa3319487d064d18f75b7;hb=afd2a25711f505dd1e8c9271f0172a0db560989a;hp=705f615a5cbb7184bbfcea5f449714e5f4f93cd2;hpb=c8f57d6b6b2d7fc65adeedb5acd6eae45d28537f;p=platform%2Fcore%2Fmultimedia%2Flibmm-camcorder.git diff --git a/src/mm_camcorder_platform.c b/src/mm_camcorder_platform.c index 705f615..5817538 100644 --- a/src/mm_camcorder_platform.c +++ b/src/mm_camcorder_platform.c @@ -35,7 +35,6 @@ /*--------------------------------------------------------------------------- | LOCAL VARIABLE DEFINITIONS for internal | ---------------------------------------------------------------------------*/ -#define MM_CAMCORDER_ATTR_NONE -1 // Rule 1. 1:1 match except NONE. @@ -221,6 +220,18 @@ _MMCamcorderEnumConvert _mmcamcorder_enum_conv_detect_mode = * 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, @@ -290,6 +301,51 @@ static _MMCamcorderInfoConverting g_caminfo_convert[CAMINFO_CONVERT_NUM] = { }, { CONFIGURE_TYPE_CTRL, + CONFIGURE_CATEGORY_CTRL_CAMERA, + MM_CAM_CAMERA_PAN_MECHA, + MM_CAMCORDER_ATTR_NONE, + "PanMecha", + MM_CAMCONVERT_TYPE_INT_RANGE, + NULL, + }, + { + CONFIGURE_TYPE_CTRL, + CONFIGURE_CATEGORY_CTRL_CAMERA, + MM_CAM_CAMERA_PAN_ELEC, + MM_CAMCORDER_ATTR_NONE, + "PanElec", + MM_CAMCONVERT_TYPE_INT_RANGE, + NULL, + }, + { + CONFIGURE_TYPE_CTRL, + CONFIGURE_CATEGORY_CTRL_CAMERA, + MM_CAM_CAMERA_TILT_MECHA, + MM_CAMCORDER_ATTR_NONE, + "TiltMecha", + MM_CAMCONVERT_TYPE_INT_RANGE, + NULL, + }, + { + CONFIGURE_TYPE_CTRL, + CONFIGURE_CATEGORY_CTRL_CAMERA, + MM_CAM_CAMERA_TILT_ELEC, + MM_CAMCORDER_ATTR_NONE, + "TiltElec", + MM_CAMCONVERT_TYPE_INT_RANGE, + NULL, + }, + { + CONFIGURE_TYPE_CTRL, + CONFIGURE_CATEGORY_CTRL_CAMERA, + MM_CAM_CAMERA_PTZ_TYPE, + MM_CAMCORDER_ATTR_NONE, + "PtzType", + MM_CAMCONVERT_TYPE_INT_ARRAY, + NULL, + }, + {/* 10 */ + CONFIGURE_TYPE_CTRL, CONFIGURE_CATEGORY_CTRL_STROBE, MM_CAM_STROBE_CONTROL, MM_CAMCORDER_ATTR_NONE, @@ -333,7 +389,7 @@ static _MMCamcorderInfoConverting g_caminfo_convert[CAMINFO_CONVERT_NUM] = { MM_CAMCONVERT_TYPE_INT_RANGE, NULL, }, - {/* 10 */ + { CONFIGURE_TYPE_CTRL, CONFIGURE_CATEGORY_CTRL_EFFECT, MM_CAM_FILTER_SATURATION, @@ -378,7 +434,7 @@ static _MMCamcorderInfoConverting g_caminfo_convert[CAMINFO_CONVERT_NUM] = { MM_CAMCONVERT_TYPE_INT_ARRAY, &_mmcamcorder_enum_conv_colortone, }, - { + {/* 20 */ CONFIGURE_TYPE_CTRL, CONFIGURE_CATEGORY_CTRL_EFFECT, MM_CAM_CAMERA_WDR, @@ -423,7 +479,7 @@ static _MMCamcorderInfoConverting g_caminfo_convert[CAMINFO_CONVERT_NUM] = { MM_CAMCONVERT_TYPE_INT_RANGE, NULL, }, - {/* 20 */ + { CONFIGURE_TYPE_CTRL, CONFIGURE_CATEGORY_CTRL_PHOTOGRAPH, MM_CAM_CAMERA_FOCUS_MODE, @@ -468,7 +524,7 @@ static _MMCamcorderInfoConverting g_caminfo_convert[CAMINFO_CONVERT_NUM] = { MM_CAMCONVERT_TYPE_INT_ARRAY, NULL, }, - { + {/* 30 */ CONFIGURE_TYPE_CTRL, CONFIGURE_CATEGORY_CTRL_PHOTOGRAPH, MM_CAM_CAMERA_SHUTTER_SPEED, @@ -513,7 +569,7 @@ static _MMCamcorderInfoConverting g_caminfo_convert[CAMINFO_CONVERT_NUM] = { MM_CAMCONVERT_TYPE_INT_ARRAY, NULL, }, - {/* 30 */ + { CONFIGURE_TYPE_CTRL, CONFIGURE_CATEGORY_CTRL_CAPTURE, MM_CAM_IMAGE_ENCODER_QUALITY, @@ -558,7 +614,7 @@ static _MMCamcorderInfoConverting g_caminfo_convert[CAMINFO_CONVERT_NUM] = { MM_CAMCONVERT_TYPE_INT_RANGE, NULL, }, - { + {/* 40 */ CONFIGURE_TYPE_CTRL, CONFIGURE_CATEGORY_CTRL_DETECT, MM_CAM_DETECT_FOCUS_SELECT, @@ -603,7 +659,7 @@ static _MMCamcorderInfoConverting g_caminfo_convert[CAMINFO_CONVERT_NUM] = { MM_CAMCONVERT_TYPE_INT_ARRAY, &_mmcamcorder_enum_conv_video_stabilization, }, - {/* 40 */ + { CONFIGURE_TYPE_CTRL, CONFIGURE_CATEGORY_CTRL_CAMERA, MM_CAM_VIDEO_WIDTH, @@ -618,7 +674,6 @@ static _MMCamcorderInfoConverting g_caminfo_convert[CAMINFO_CONVERT_NUM] = { | LOCAL FUNCTION PROTOTYPES: | ---------------------------------------------------------------------------*/ /* STATIC INTERNAL FUNCTION */ -static int __mmcamcorder_set_info_to_attr( MMHandleType handle, _MMCamcorderInfoConverting *info, int table_size ); static int __mmcamcorder_get_valid_array(int * original_array, int original_count, int ** valid_array, int * valid_default ); /*=========================================================================================== @@ -685,7 +740,7 @@ int _mmcamcorder_get_fps_array_by_resolution(MMHandleType handle, int width, int MMCamAttrsInfo *infoW = NULL; MMCamAttrsInfo *infoH = NULL; int i = 0; - char nameFps[5] = {0,}; + char nameFps[10] = {0,}; bool valid_check = false; type_int_array *fps_array; @@ -695,7 +750,20 @@ int _mmcamcorder_get_fps_array_by_resolution(MMHandleType handle, int width, int //_mmcam_dbg_log("prev resolution w:%d, h:%d", width, height); infoW = (MMCamAttrsInfo*)calloc(1, sizeof(MMCamAttrsInfo)); + if (infoW == NULL) { + _mmcam_dbg_err("failed to alloc infoW"); + return MM_ERROR_CAMCORDER_LOW_MEMORY; + } + infoH = (MMCamAttrsInfo*)calloc(1, sizeof(MMCamAttrsInfo)); + if (infoH == NULL) { + _mmcam_dbg_err("failed to alloc infoH"); + + free(infoW); + infoW = NULL; + + return MM_ERROR_CAMCORDER_LOW_MEMORY; + } mm_camcorder_get_attribute_info(handle, MMCAM_CAMERA_WIDTH, infoW); mm_camcorder_get_attribute_info(handle, MMCAM_CAMERA_HEIGHT, infoH); @@ -704,20 +772,20 @@ int _mmcamcorder_get_fps_array_by_resolution(MMHandleType handle, int width, int //_mmcam_dbg_log("width :%d, height : %d\n", infoW->int_array.array[i], infoH->int_array.array[i]); if(infoW->int_array.array[i] == width && infoH->int_array.array[i] == height) { valid_check = true; - sprintf(nameFps, "FPS%d", i); + snprintf(nameFps, 10, "FPS%d", i); _mmcam_dbg_log("nameFps : %s!!!", nameFps); break; } } - if(infoW) - free(infoW); - if(infoH) - free(infoH); + free(infoW); + infoW = NULL; + free(infoH); + infoH = NULL; if(!valid_check) { _mmcam_dbg_err("FAILED : Can't find the valid resolution from attribute."); - return MM_ERROR_CAMCORDER_INVALID_ARGUMENT; + return MM_ERROR_CAMCORDER_NOT_SUPPORTED; } if (!_mmcamcorder_conf_get_value_int_array(hcamcorder->conf_ctrl, CONFIGURE_CATEGORY_CTRL_CAMERA, nameFps, &fps_array)) { @@ -826,7 +894,7 @@ __mmcamcorder_get_valid_array(int * original_array, int original_count, int ** v } -int _mmcamcorder_init_attr_from_configure(MMHandleType handle) +int _mmcamcorder_init_attr_from_configure(MMHandleType handle, MMCamConvertingCategory category) { mmf_camcorder_t *hcamcorder = MMF_CAMCORDER(handle); _MMCamcorderInfoConverting *info = NULL; @@ -836,30 +904,48 @@ int _mmcamcorder_init_attr_from_configure(MMHandleType handle) mmf_return_val_if_fail(hcamcorder, MM_ERROR_CAMCORDER_NOT_INITIALIZED); - _mmcam_dbg_log(""); + _mmcam_dbg_log("category : %d", category); - /* 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 (category & MM_CAMCONVERT_CATEGORY_CAMERA) { + /* 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 (category & MM_CAMCONVERT_CATEGORY_DISPLAY) { + /* 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; + } + } - _mmcam_dbg_log( "result: %x", ret ); + if (category & MM_CAMCONVERT_CATEGORY_AUDIO) { + /* 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("done"); return ret; } -static int -__mmcamcorder_set_info_to_attr( MMHandleType handle, _MMCamcorderInfoConverting *info, int table_size ) + +int __mmcamcorder_set_info_to_attr(MMHandleType handle, _MMCamcorderInfoConverting *info, int table_size) { mmf_camcorder_t *hcamcorder = MMF_CAMCORDER(handle); MMHandleType attrs = 0; @@ -881,7 +967,7 @@ __mmcamcorder_set_info_to_attr( MMHandleType handle, _MMCamcorderInfoConverting info[i].type, info[i].category, info[i].attr_idx, - info[i].attr_idx_sub, + info[i].attr_idx_pair, info[i].keyword, info[i].conv_type ); */