int startPreview(int cam_id)
{
    int rc = MM_CAMERA_OK;

    mm_camera_app_obj_t *pme = mm_app_get_cam_obj(cam_id);

    CDBG("%s: Start Preview",__func__);

    if (pme->cam_mode == ZSL_MODE || pme->cam_mode == RECORDER_MODE) {
        switch (pme->cam_state) {
        case CAMERA_STATE_RECORD:
            if (MM_CAMERA_OK != mm_app_stop_video(cam_id)) {
                CDBG_ERROR("%s:Cannot stop video err=%d\n", __func__, rc);
                return -1;
            }
        case CAMERA_STATE_PREVIEW:
            if (MM_CAMERA_OK != mm_app_open_camera(cam_id)) {
                CDBG_ERROR("%s: Cannot switch to camera mode=%d\n", __func__);
                return -1;
            }
            break;
        case CAMERA_STATE_SNAPSHOT:
        default:
            break;
        }
    } else if (pme->cam_mode == CAMERA_MODE && pme->cam_state == CAMERA_STATE_OPEN) {

        if (MM_CAMERA_OK != (rc = mm_app_start_preview(cam_id))) {
            CDBG_ERROR("%s:preview streaming on err=%d\n", __func__, rc);
            return -1;
        }
    }
    CDBG("%s: END, rc=%d\n", __func__, rc);
    return rc;
}
int mm_app_take_raw(int cam_id)
{
    int rc = 0;

    mm_camera_app_obj_t *pme = mm_app_get_cam_obj(cam_id);

    CDBG("%s:BEGIN, cam_id=%d\n",__func__,cam_id);

    if (pme->cam_mode == RECORDER_MODE) {
        switch (pme->cam_state) {
        case CAMERA_STATE_RECORD:
            if (MM_CAMERA_OK != mm_app_stop_video(cam_id)) {
                CDBG_ERROR("%s:Cannot stop video err=%d\n", __func__, rc);
                return -1;
            }
        case CAMERA_STATE_PREVIEW:
            if (MM_CAMERA_OK != mm_app_open_camera(cam_id)) {
                CDBG_ERROR("%s: Cannot switch to camera mode=%d\n", __func__,rc);
                return -1;
            }
            break;
        case CAMERA_STATE_SNAPSHOT:
        default:
            CDBG("%s: Cannot normal pciture in record mode\n", __func__);
            break;
        }
    } else if (pme->cam_mode == ZSL_MODE) {
        switch (pme->cam_state) {
        case CAMERA_STATE_PREVIEW:
            mm_app_open_camera(cam_id);
            break;

        case CAMERA_STATE_SNAPSHOT:
        case CAMERA_STATE_RECORD:
        default:
            CDBG("%s: Cannot normal pciture in record mode\n", __func__);
            break;
        }
    }

    CDBG("%s : Takepicture RAW: mode = %d state = %d, rc = %d",__func__,pme->cam_mode,pme->cam_state,rc);
    if (pme->cam_mode == CAMERA_MODE && pme->cam_state == CAMERA_STATE_PREVIEW) {
        mm_app_take_picture_raw(cam_id);
    }
    return rc;
}