int mm_app_open(uint8_t cam_id)
{
    int rc = MM_CAMERA_OK;
    mm_camera_app_obj_t *pme = NULL;
    int i;
    mm_camera_event_type_t evt;

    pme = mm_app_get_cam_obj(cam_id);

    CDBG("%s:BEGIN\n", __func__);
    if(pme != NULL) {
        CDBG("%s:cam already open.nop\n",__func__);
        goto end;
    }
    my_cam_app.cam_open = cam_id;
    my_cam_app.obj[cam_id] = (mm_camera_app_obj_t *)malloc(sizeof(mm_camera_app_obj_t));
    pme = my_cam_app.obj[cam_id];

    pme->mem_cam = (mm_camear_mem_vtbl_t *)malloc(sizeof(mm_camear_mem_vtbl_t));
    memset(pme->mem_cam,0,sizeof(mm_camear_mem_vtbl_t));
    pme->mem_cam->user_data = pme;

    pme->cam = my_cam_app.hal_lib.mm_camera_open(cam_id,pme->mem_cam);
    if(pme->cam == NULL) {
        CDBG("%s:dev open error=%d\n", __func__, rc);
        memset(pme,0, sizeof(pme));
        return -1;
    }
    CDBG("Open Camera id = %d handle = %d",cam_id,pme->cam->camera_handle);

    pme->ch_id = cam_id;
    pme->open_flag = true;
    mm_app_set_dim_def(&pme->dim);

    for (i = 0; i < MM_CAMERA_EVT_TYPE_MAX; i++) {
        evt = (mm_camera_event_type_t) i;
        pme->cam->ops->register_event_notify(pme->cam->camera_handle,notify_evt_cb,pme,evt);
    }
    pme->cam_state = CAMERA_STATE_OPEN;
    pme->cam_mode = CAMERA_MODE;
    pme->fullSizeSnapshot = 0;

    pme->ch_id = pme->cam->ops->ch_acquire(pme->cam->camera_handle);
    CDBG("Channel Acquired Successfully %d",pme->ch_id);
end:
    CDBG("%s:END, rc=%d\n", __func__, rc); 
    return rc;
}
Example #2
0
int mm_app_open(int8_t cam_id, mm_camera_op_mode_type_t op_mode)
{
	int rc = MM_CAMERA_OK;
	mm_camera_app_obj_t *pme = mm_app_get_cam_obj(cam_id);

	CDBG("%s:BEGIN\n", __func__);
	if(pme->cam) {
		CDBG("%s:cam already open.nop\n",__func__);
		goto end;
	}
	pme->cam = &my_cam_app.cam[cam_id];
	pme->my_id = cam_id;
	pme->op_mode = op_mode;
	if(MM_CAMERA_OK != (rc = pme->cam->ops->open(pme->cam, op_mode))) {
		CDBG("%s:dev open error=%d\n", __func__, rc);
		memset(pme,0, sizeof(*pme));
		return -1;
	}
	pme->open_flag = TRUE;
	mm_app_set_dim_def(&pme->dim);
end:
	CDBG("%s:END, rc=%d\n", __func__, rc);
	return rc;
}