int mm_app_streamon_rdi(int cam_id) { int rc = MM_CAMERA_OK; int stream[2]; mm_camera_app_obj_t *pme = mm_app_get_cam_obj(cam_id); int num_of_streams; /*if(rdi_mode == STREAM_IMAGE_AND_RAW){ num_of_streams = 2; stream[0] = pme->stream[MM_CAMERA_RDI].id; stream[1] = pme->stream[MM_CAMERA_PREVIEW].id; }else */{ num_of_streams = 1; stream[0] = pme->stream[MM_CAMERA_RDI].id; } if (MM_CAMERA_OK != (rc = pme->cam->ops->start_streams(pme->cam->camera_handle,pme->ch_id,num_of_streams,&stream))) { CDBG_ERROR("%s : Start RDI Stream preview Error",__func__); goto end; } pme->cam_state = CAMERA_STATE_RDI; end: CDBG("%s: X rc = %d",__func__,rc); return rc; }
int mm_app_start_rdi(int cam_id) { int rc = MM_CAMERA_OK; mm_camera_app_obj_t *pme = mm_app_get_cam_obj(cam_id); int op_mode = 0; CDBG("pme = %p, pme->cam =%p, pme->cam->camera_handle = %d", pme,pme->cam,pme->cam->camera_handle); if (pme->cam_state == CAMERA_STATE_RDI) { return rc; } if (MM_CAMERA_OK != (rc = mm_app_prepare_rdi(cam_id))) { CDBG_ERROR("%s:Prepare RDI failed rc=%d\n", __func__, rc); goto end; } if (MM_CAMERA_OK != (rc = mm_app_streamon_rdi(cam_id))) { CDBG_ERROR("%s:Stream On RDI failed rc=%d\n", __func__, rc); goto end; } end: CDBG("%s: END, rc=%d\n", __func__, rc); return rc; }
static int mm_app_streamdel_rdi(int cam_id) { int rc = MM_CAMERA_OK; int stream[2]; int num_of_streams; mm_camera_app_obj_t *pme = mm_app_get_cam_obj(cam_id); /*if(rdi_mode == STREAM_IMAGE_AND_RAW){ num_of_streams = 2; stream[0] = pme->stream[MM_CAMERA_RDI].id; stream[1] = pme->stream[MM_CAMERA_PREVIEW].id; }else*/{ num_of_streams = 1; stream[0] = pme->stream[MM_CAMERA_RDI].id; } if (MM_CAMERA_OK != (rc = pme->cam->ops->del_stream(pme->cam->camera_handle,pme->ch_id,pme->stream[MM_CAMERA_RDI].id))) { CDBG_ERROR("%s : Delete Stream RDI error",__func__); goto end; } CDBG("del_stream successfull"); pme->cam_state = CAMERA_STATE_OPEN; end: CDBG("%s: END, rc=%d\n", __func__, rc); return rc; }
static int mm_app_streamoff_preview(int cam_id) { int rc = MM_CAMERA_OK; int stream[2]; mm_camera_app_obj_t *pme = mm_app_get_cam_obj(cam_id); stream[0] = pme->stream[MM_CAMERA_PREVIEW].id; stream[1] = 0; if (MM_CAMERA_OK != (rc = pme->cam->ops->stop_streams(pme->cam->camera_handle,pme->ch_id,1,&stream))) { CDBG_ERROR("%s : Preview Stream off Error",__func__); goto end; } if (MM_CAMERA_OK != (rc = pme->cam->ops->del_stream(pme->cam->camera_handle,pme->ch_id,pme->stream[MM_CAMERA_PREVIEW].id))) { CDBG_ERROR("%s : Delete Stream Preview error",__func__); goto end; } CDBG("del_stream successfull"); pme->cam_state = CAMERA_STATE_OPEN; end: CDBG("%s: END, rc=%d\n", __func__, rc); return rc; }
int mm_app_start_preview(int cam_id) { int rc = MM_CAMERA_OK; mm_camera_app_obj_t *pme = mm_app_get_cam_obj(cam_id); int op_mode = 0; CDBG("pme = %p, pme->cam =%p, pme->cam->camera_handle = %d", pme,pme->cam,pme->cam->camera_handle); if (pme->cam_state == CAMERA_STATE_PREVIEW) { return rc; } if (!my_cam_app.run_sanity) { if (MM_CAMERA_OK != initDisplay()) { CDBG_ERROR("%s : Could not initalize display",__func__); goto end; } } if (MM_CAMERA_OK != (rc = mm_app_prepare_preview(cam_id))) { CDBG_ERROR("%s:Stream On Preview failed rc=%d\n", __func__, rc); goto end; } if (MM_CAMERA_OK != (rc = mm_app_streamon_preview(cam_id))) { CDBG_ERROR("%s:Stream On Preview failed rc=%d\n", __func__, rc); goto end; } end: CDBG("%s: END, rc=%d\n", __func__, rc); return rc; }
int startRdi(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 || pme->cam_mode == CAMERA_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_rdi(cam_id)) { CDBG_ERROR("%s: Cannot switch to camera mode=%d\n", __func__); return -1; } case CAMERA_STATE_SNAPSHOT: default: break; } } mm_app_start_rdi(cam_id); return rc; }
int mm_app_stop_raw(int cam_id) { int rc = MM_CAMERA_OK; int i; uint32_t stream[1]; mm_camera_app_obj_t *pme = mm_app_get_cam_obj(cam_id); stream[0] = pme->stream[MM_CAMERA_SNAPSHOT_MAIN].id; if (MM_CAMERA_OK != (rc = pme->cam->ops->stop_streams(pme->cam->camera_handle,pme->ch_id,1,stream))) { CDBG_ERROR("%s : Snapshot Stream off Error",__func__); goto end; } CDBG("Stop snapshot main successfull"); if (MM_CAMERA_OK != (rc = pme->cam->ops->destroy_stream_bundle(pme->cam->camera_handle,pme->ch_id))) { CDBG_ERROR("%s : Snapshot destroy_stream_bundle Error",__func__); goto end; } if (MM_CAMERA_OK != (rc = pme->cam->ops->del_stream(pme->cam->camera_handle,pme->ch_id,pme->stream[MM_CAMERA_SNAPSHOT_MAIN].id))) { CDBG_ERROR("%s : Snapshot main image del_stream Error",__func__); goto end; } CDBG("del_stream successfull"); pme->cam_state = CAMERA_STATE_OPEN; end: return rc; }
int mm_app_open_ch(int cam_id, mm_camera_channel_type_t ch_type) { mm_camera_app_obj_t *pme = mm_app_get_cam_obj(cam_id); mm_camera_channel_type_t i; int rc = MM_CAMERA_OK; CDBG("%s:BEGIN\n", __func__); if(ch_type < MM_CAMERA_CH_MAX) { rc = pme->cam->ops->ch_acquire(pme->cam, ch_type); CDBG("%s:cam ch_open rc=%d\n",__func__, rc); goto end; } else { /* here we open all available channels */ for(i = 0; i < MM_CAMERA_CH_MAX; i++) { if( MM_CAMERA_OK != (rc = pme->cam->ops->ch_acquire(pme->cam, i))) { CDBG("%s:cam ch_open err=%d\n",__func__, rc); goto end; } } } end: CDBG("%s:END, rc=%d\n", __func__, rc); return rc; }
int mm_app_add_snapshot_stream(int cam_id) { int rc = MM_CAMERA_OK; mm_camera_app_obj_t *pme = mm_app_get_cam_obj(cam_id); pme->stream[MM_CAMERA_SNAPSHOT_MAIN].id = pme->cam->ops->add_stream(pme->cam->camera_handle,pme->ch_id, NULL,pme, MM_CAMERA_SNAPSHOT_MAIN, 0); CDBG("Add Snapshot main is successfull stream ID = %d",pme->stream[MM_CAMERA_SNAPSHOT_MAIN].id); if (!pme->stream[MM_CAMERA_SNAPSHOT_MAIN].id) { CDBG_ERROR("%s:snapshot main streaming err=%d\n", __func__, rc); rc = -1; goto end; } pme->stream[MM_CAMERA_SNAPSHOT_THUMBNAIL].id = pme->cam->ops->add_stream(pme->cam->camera_handle,pme->ch_id, NULL,pme, MM_CAMERA_SNAPSHOT_THUMBNAIL, 0); if (!pme->stream[MM_CAMERA_SNAPSHOT_THUMBNAIL].id) { CDBG_ERROR("%s:snapshot thumbnail streaming err=%d\n", __func__, rc); rc = -1; goto end; } end: CDBG("%s: END, rc=%d\n", __func__, rc); return rc; }
int mm_app_stop_raw_snapshot(int cam_id) { int rc = MM_CAMERA_OK; #if 0 mm_camera_app_obj_t *pme = mm_app_get_cam_obj(cam_id); CDBG("%s: BEGIN\n", __func__); if (MM_CAMERA_OK != (rc = pme->cam->ops->action(pme->cam, FALSE, MM_CAMERA_OPS_RAW, 0))) { CDBG("%s:stop raw snapshot streaming err=%d\n", __func__, rc); goto end; } if (MM_CAMERA_OK != (rc = mm_app_unprepare_raw_snapshot_buf(cam_id))) { CDBG("%s:mm_app_unprepare_raw_snapshot_buf err=%d\n", __func__, rc); return rc; } if (MM_CAMERA_OK != (rc = mm_app_reg_raw_snapshot_data_cb(cam_id, FALSE))) { CDBG("%s:mm_app_reg_raw_snapshot_data_cb err=%d\n", __func__, rc); return rc; } mm_app_close_ch(cam_id, MM_CAMERA_CH_RAW); end: CDBG("%s: END, rc=%d\n", __func__, rc); #endif return rc; }
int mm_app_config_snapshot_format(int cam_id) { int rc = MM_CAMERA_OK; mm_camera_app_obj_t *pme = mm_app_get_cam_obj(cam_id); mm_app_set_snapshot_fmt(cam_id,&pme->stream[MM_CAMERA_SNAPSHOT_MAIN].str_config.fmt); mm_app_set_thumbnail_fmt(cam_id,&pme->stream[MM_CAMERA_SNAPSHOT_THUMBNAIL].str_config.fmt); pme->stream[MM_CAMERA_SNAPSHOT_MAIN].str_config.need_stream_on = 1; pme->stream[MM_CAMERA_SNAPSHOT_MAIN].str_config.num_of_bufs = 1; if (MM_CAMERA_OK != (rc = pme->cam->ops->config_stream(pme->cam->camera_handle,pme->ch_id,pme->stream[MM_CAMERA_SNAPSHOT_MAIN].id, &pme->stream[MM_CAMERA_SNAPSHOT_MAIN].str_config))) { CDBG_ERROR("%s:preview streaming err=%d\n", __func__, rc); goto end; } pme->stream[MM_CAMERA_SNAPSHOT_THUMBNAIL].str_config.need_stream_on = 1; pme->stream[MM_CAMERA_SNAPSHOT_THUMBNAIL].str_config.num_of_bufs = 1; if (MM_CAMERA_OK != (rc = pme->cam->ops->config_stream(pme->cam->camera_handle,pme->ch_id,pme->stream[MM_CAMERA_SNAPSHOT_THUMBNAIL].id, &pme->stream[MM_CAMERA_SNAPSHOT_THUMBNAIL].str_config))) { CDBG_ERROR("%s:preview streaming err=%d\n", __func__, rc); goto end; } end: CDBG("%s: END, rc=%d\n", __func__, rc); return rc; }
int mm_app_take_raw_picture(int cam_id) { int rc; #if 0 mm_camera_app_obj_t *pme = mm_app_get_cam_obj(cam_id); CDBG("%s:BEGIN, cam_id=%d\n",__func__,cam_id); g_status = FALSE; if (MM_CAMERA_OK != (rc = pme->cam->ops->action(pme->cam, TRUE, MM_CAMERA_OPS_PREPARE_SNAPSHOT, 0))) { CDBG("%s:prepare snapshot err=%d\n", __func__, rc); goto end; } if (MM_CAMERA_OK != (rc = mm_app_stop_preview(cam_id))) { CDBG("%s:mm_app_stop_preview err=%d\n", __func__, rc); goto end; } if (MM_CAMERA_OK != mm_app_start_raw_snapshot(cam_id)) goto preview; CDBG("%s:waiting images\n",__func__); mm_app_snapshot_wait(cam_id); CDBG("%s:calling mm_app_stop_snapshot() \n",__func__); mm_app_stop_raw_snapshot(cam_id); preview: mm_app_start_preview(cam_id); end: CDBG("%s:END, cam_id=%d\n",__func__,cam_id); #endif return rc; }
void switchCamera(int cam_id) { int rc = MM_CAMERA_OK; mm_camera_app_obj_t *pme = mm_app_get_cam_obj(cam_id); if(my_cam_app.cam_open == cam_id){ return; } switch(pme->cam_state) { case CAMERA_STATE_RECORD: if(MM_CAMERA_OK != stopRecording(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_stop_preview(cam_id)){ CDBG_ERROR("%s: Cannot switch to camera mode=%d\n", __func__); return -1; } break; case CAMERA_STATE_SNAPSHOT: default: break; } mm_app_close(my_cam_app.cam_open); mm_app_open(cam_id); }
int stopPreview(int cam_id) { int rc = MM_CAMERA_OK; mm_camera_app_obj_t *pme = mm_app_get_cam_obj(cam_id); CDBG("%s : pme->cam_mode = %d, pme->cam_state = %d",__func__,pme->cam_mode,pme->cam_state); if (pme->cam_mode == CAMERA_MODE && pme->cam_state == CAMERA_STATE_PREVIEW) { if (MM_CAMERA_OK != (rc = mm_app_stop_preview(cam_id))) { CDBG("%s:streamoff preview err=%d\n", __func__, rc); goto end; } } else if (pme->cam_mode == ZSL_MODE && pme->cam_state == CAMERA_STATE_PREVIEW) { if (MM_CAMERA_OK != (rc = mm_app_stop_preview_zsl(cam_id))) { CDBG("%s:streamoff preview err=%d\n", __func__, rc); goto end; } } else if (pme->cam_mode == RECORDER_MODE && pme->cam_state == CAMERA_STATE_PREVIEW) { if (MM_CAMERA_OK != (rc = mm_app_stop_preview(cam_id))) { CDBG("%s:streamoff preview err=%d\n", __func__, rc); goto end; } mm_app_unprepare_video(cam_id); } end: return rc; }
int mm_app_close(int8_t cam_id) { int rc = MM_CAMERA_OK; mm_camera_app_obj_t *pme = mm_app_get_cam_obj(cam_id); mm_camera_channel_type_t ch; CDBG("%s:BEGIN\n", __func__); if(!pme->cam) { CDBG("%s:cam already closed. nop\n",__func__); goto end; } pme->cam = &my_cam_app.cam[cam_id]; pme->my_id = cam_id; pme->op_mode = 0; for(ch = 0; ch < MM_CAMERA_CH_MAX; ch++) { mm_app_close_ch(cam_id, ch); CDBG("%s:cam_id = %d, channel %d relaesed\n",__func__,cam_id, ch); } pme->cam->ops->close(pme->cam); pme->open_flag = FALSE; pme->cam = NULL; pme->my_id = 0; pme->op_mode = 0; memset(&pme->dim, 0, sizeof(pme->dim)); end: CDBG("%s:END, rc=%d\n", __func__, rc); return rc; }
int mm_app_get_dim(int8_t cam_id, cam_ctrl_dimension_t *dim) { mm_camera_app_obj_t *pme = mm_app_get_cam_obj(cam_id); int rc = MM_CAMERA_OK; CDBG("%s:BEGIN\n", __func__); if(pme->open_flag != TRUE) { CDBG("%s: dev not open yet\n", __func__); rc = -MM_CAMERA_E_INVALID_OPERATION; goto end; } /* now we only use the upper portion. TBD: needs to be fixed later */ //memcpy(&pme->dim, dim, sizeof(cam_ctrl_dimension_t)); if(MM_CAMERA_OK != (rc = pme->cam->cfg->get_parm(pme->cam, MM_CAMERA_PARM_DIMENSION, &pme->dim))) { CDBG("%s: set dimension err=%d\n", __func__, rc); } CDBG("%s: raw_w=%d,raw_h=%d\n", __func__, pme->dim.orig_picture_width, pme->dim.orig_picture_height); if(dim) memcpy(dim, &pme->dim, sizeof(cam_ctrl_dimension_t)); end: CDBG("%s:END, rc=%d\n", __func__, rc); return rc; }
int mm_app_config_video(int cam_id) { int rc = MM_CAMERA_OK; mm_camera_app_obj_t *pme = mm_app_get_cam_obj(cam_id); mm_app_set_video_fmt(cam_id,&pme->stream[MM_CAMERA_VIDEO].str_config.fmt); pme->stream[MM_CAMERA_VIDEO].str_config.need_stream_on = 1; pme->stream[MM_CAMERA_VIDEO].str_config.num_of_bufs = VIDEO_BUF_NUM; if(MM_CAMERA_OK != (rc = pme->cam->ops->config_stream(pme->cam->camera_handle,pme->ch_id,pme->stream[MM_CAMERA_VIDEO].id, &pme->stream[MM_CAMERA_VIDEO].str_config))) { CDBG_ERROR("%s:MM_CAMERA_VIDEO config streaming err=%d\n", __func__, rc); goto end; } CDBG("config_stream stream is successfull"); pme->stream[MM_CAMERA_SNAPSHOT_MAIN].str_config.need_stream_on = pme->fullSizeSnapshot; pme->stream[MM_CAMERA_SNAPSHOT_MAIN].str_config.num_of_bufs = 1; mm_app_set_live_snapshot_fmt(cam_id,&pme->stream[MM_CAMERA_SNAPSHOT_MAIN].str_config.fmt); if(MM_CAMERA_OK != (rc = pme->cam->ops->config_stream(pme->cam->camera_handle,pme->ch_id,pme->stream[MM_CAMERA_SNAPSHOT_MAIN].id, &pme->stream[MM_CAMERA_SNAPSHOT_MAIN].str_config))) { CDBG_ERROR("%s:preview streaming err=%d\n", __func__, rc); goto end; } end: return rc; }
int startRecording(int cam_id) { int rc = MM_CAMERA_OK; mm_camera_app_obj_t *pme = mm_app_get_cam_obj(cam_id); CDBG("%s: Start Recording mode = %d state = %d",__func__,pme->cam_mode,pme->cam_state); if(pme->cam_mode == CAMERA_MODE || pme->cam_mode == ZSL_MODE) { switch(pme->cam_state) { case CAMERA_STATE_PREVIEW: if(MM_CAMERA_OK != mm_app_open_recorder(cam_id)){ CDBG_ERROR("%s: Open Record Failed \n", __func__); return -1; } break; case CAMERA_STATE_RECORD: case CAMERA_STATE_SNAPSHOT: default: break; } }/*else{ mm_app_prepare_video(cam_id); }*/ CDBG("%s : startRecording : mode = %d state = %d",__func__,pme->cam_mode,pme->cam_state); if(pme->cam_mode == RECORDER_MODE && pme->cam_state == CAMERA_STATE_PREVIEW){ if(MM_CAMERA_OK != mm_app_streamon_video(cam_id)){ CDBG_ERROR("%s:start video err=%d\n", __func__, rc); return -1; } } CDBG("%s: END, rc=%d\n", __func__, rc); return rc; }
int mm_app_start_video(int cam_id) { mm_camera_app_obj_t *pme = mm_app_get_cam_obj(cam_id); int rc = MM_CAMERA_OK; CDBG("%s: BEGIN\n", __func__); if(MM_CAMERA_OK != (rc = mm_app_open_video(cam_id))) { CDBG("%s:mm_app_open_preview err=%d\n", __func__, rc); goto end; } if(MM_CAMERA_OK != (rc = mm_app_set_video_fmt(cam_id))) { CDBG("%s:set preview format err=%d\n", __func__, rc); goto end; } if(MM_CAMERA_OK != (rc = mm_app_prepare_video_buf(cam_id, VIDEO_FRAMES_NUM))) { CDBG("%s:reg preview buf err=%d\n", __func__, rc); goto end; } if(MM_CAMERA_OK != (rc = mm_app_reg_video_data_cb(cam_id, TRUE))) { CDBG("%s:reg preview data cb err=%d\n", __func__, rc); } if(MM_CAMERA_OK != (rc = mm_app_streamon_video(cam_id))) { CDBG("%s:preview streaming on err=%d\n", __func__, rc); } end: CDBG("%s: END, rc=%d\n", __func__, rc); return rc; }
int mm_app_stop_video(int cam_id) { mm_camera_app_obj_t *pme = mm_app_get_cam_obj(cam_id); int rc = MM_CAMERA_OK; CDBG("%s: BEGIN\n", __func__); if(MM_CAMERA_OK != (rc = mm_app_streamoff_video(cam_id))) { CDBG("%s:streamoff video err=%d\n", __func__, rc); return rc; } if(MM_CAMERA_OK != (rc = mm_app_reg_video_data_cb(cam_id, FALSE))) { CDBG("%s:reg video data cb err=%d\n", __func__, rc); return rc; } if(MM_CAMERA_OK != (rc = mm_app_unprepare_video_buf(cam_id))) { CDBG("%s:treg video buf err=%d\n", __func__, rc); return rc; } if(MM_CAMERA_OK != (rc = mm_app_close_video(cam_id))) { CDBG("%s:mm_app_close_video err=%d\n", __func__, rc); goto end; } end: CDBG("%s: END, rc=%d\n", __func__, rc); return rc; }
static int mm_app_unprepare_video_buf(int cam_id) { /* now we hard code format */ mm_camera_app_obj_t *pme = mm_app_get_cam_obj(cam_id); int i, rc = MM_CAMERA_OK; CDBG("%s: BEGIN\n", __func__); /* this is unreg case */ rc = pme->cam->cfg->unprepare_buf(pme->cam, MM_CAMERA_CH_VIDEO); if(rc) { CDBG("%s:unreg video buf err=%d\n", __func__, rc); goto end; } for(i = 0; i < pme->video_buf.num; i++) { rc = my_cam_app.hal_lib.mm_camera_do_munmap(pme->video_buf.frame[i].fd, (void *)pme->video_buf.frame[i].buffer, pme->video_buf.frame_len); if(rc != MM_CAMERA_OK) { CDBG("%s: mm_camera_do_munmap err, pmem_fd = %d, rc = %d", __func__, pme->video_buf.frame[i].fd, rc); goto end; } } memset(&pme->video_buf, 0, sizeof(pme->video_buf)); end: CDBG("%s: END, rc=%d\n", __func__, rc); return rc; }
static int mm_app_reg_video_data_cb(int cam_id, int is_reg) { mm_camera_app_obj_t *pme = mm_app_get_cam_obj(cam_id); int rc = MM_CAMERA_OK; CDBG("%s: BEGIN\n", __func__); if(is_reg) { rc = pme->cam->evt->register_buf_notify(pme->cam, MM_CAMERA_CH_VIDEO, mm_app_video_notify_cb, MM_CAMERA_REG_BUF_CB_INFINITE, 0, pme); if(rc != MM_CAMERA_OK) { CDBG("%s:register video data notify cb err=%d\n", __func__, rc); goto end; } } else { rc = pme->cam->evt->register_buf_notify(pme->cam, MM_CAMERA_CH_VIDEO, NULL, (mm_camera_register_buf_cb_type_t)NULL, 0, pme); if(rc != MM_CAMERA_OK) { CDBG("%s:unregister video data notify cb err=%d\n", __func__, rc); goto end; } } end: CDBG("%s: END, rc=%d\n", __func__, rc); return rc; }
int mm_app_bundle_zsl_stream(int cam_id) { int rc = MM_CAMERA_OK; int stream[3]; mm_camera_bundle_attr_t attr; mm_camera_app_obj_t *pme = mm_app_get_cam_obj(cam_id); stream[0] = pme->stream[MM_CAMERA_PREVIEW].id; stream[1] = pme->stream[MM_CAMERA_SNAPSHOT_MAIN].id; attr.notify_mode = MM_CAMERA_SUPER_BUF_NOTIFY_BURST; attr.burst_num = 1; attr.look_back = 2; attr.post_frame_skip = 0; attr.water_mark = 2; if (MM_CAMERA_OK != (rc = pme->cam->ops->init_stream_bundle( pme->cam->camera_handle,pme->ch_id,mm_app_zsl_notify_cb,pme,&attr,2,stream))) { CDBG_ERROR("%s:init_stream_bundle err=%d\n", __func__, rc); rc = -1; goto end; } if (MM_CAMERA_OK != (rc = pme->cam->ops->start_streams(pme->cam->camera_handle,pme->ch_id, 2, stream))) { CDBG_ERROR("%s:start_streams err=%d\n", __func__, rc); rc = -1; goto end; } end: return rc; }
int mm_app_close(int8_t cam_id) { 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 closed. nop\n",__func__); goto end; } pme->cam->ops->ch_release(pme->cam->camera_handle,pme->ch_id); pme->cam->ops->camera_close(pme->cam->camera_handle); pme->open_flag = false; pme->cam = NULL; pme->my_id = 0; free(pme->mem_cam); pme->mem_cam = NULL; memset(&pme->dim, 0, sizeof(pme->dim)); memset(&pme->dim, 0, sizeof(pme->dim)); free(pme); pme = NULL; my_cam_app.obj[cam_id] = NULL; end: CDBG("%s:END, rc=%d\n", __func__, rc); return rc; }
int mm_app_take_picture_raw(int cam_id) { int rc; mm_camera_app_obj_t *pme = mm_app_get_cam_obj(cam_id); CDBG("%s:BEGIN, cam_id=%d\n",__func__,cam_id); if (MM_CAMERA_OK != mm_app_start_raw(cam_id)) { CDBG_ERROR("%s: cam_id=%d\n",__func__,cam_id); rc = -1; goto end; } CDBG("%s:waiting images\n",__func__); mm_app_snapshot_wait(cam_id); if (MM_CAMERA_OK !=mm_app_stop_raw(cam_id)) { CDBG_ERROR("%s: Snapshot Stop error",__func__); } preview: if (MM_CAMERA_OK != (rc = mm_app_start_preview(cam_id))) { CDBG("%s:preview start stream err=%d\n", __func__, rc); } end: CDBG("%s:END, cam_id=%d\n",__func__,cam_id); return rc; }
int mm_app_take_live_snapshot(int cam_id) { int rc = 0; int stream[3]; mm_camera_bundle_attr_t attr; 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 && pme->cam_state == CAMERA_STATE_RECORD) { //Code to get live shot if (mm_app_prepare_live_snapshot(cam_id) != MM_CAMERA_OK) { CDBG_ERROR("%s: Failed prepare liveshot",__func__); return -1; } if (MM_CAMERA_OK != (rc =pme->cam->ops->request_super_buf(pme->cam->camera_handle,pme->ch_id, 1))) { CDBG_ERROR("%s:request_super_buf err=%d\n", __func__, rc); return -1; } CDBG("%s:waiting images\n",__func__); mm_app_snapshot_wait(cam_id); if (MM_CAMERA_OK !=mm_app_unprepare_live_snapshot(cam_id)) { CDBG_ERROR("%s: Snapshot Stop error",__func__); } } else { CDBG_ERROR("%s: Should not come here for liveshot",__func__); } return rc; }
int mm_app_open_zsl(int cam_id) { int rc = MM_CAMERA_OK; int value = 0; mm_camera_app_obj_t *pme = mm_app_get_cam_obj(cam_id); if (pme->cam_mode == ZSL_MODE) { return rc; } if (MM_CAMERA_OK != (rc = mm_app_stop_preview(cam_id))) { CDBG_ERROR("%s:Stop preview err=%d\n", __func__, rc); goto end; } pme->cam->ops->set_parm(pme->cam->camera_handle,MM_CAMERA_PARM_RECORDING_HINT, &value); if (MM_CAMERA_OK != (rc = mm_app_start_preview_zsl(cam_id))) { CDBG_ERROR("%s:stream on preview err=%d\n", __func__, rc); goto end; } pme->cam_mode = ZSL_MODE; end: CDBG("%s: END, rc=%d\n", __func__, rc); return rc; }
void mm_app_close_ch(int cam_id, int ch_type) { mm_camera_app_obj_t *pme = mm_app_get_cam_obj(cam_id); pme->cam->ops->ch_release(pme->cam->camera_handle,pme->ch_id); CDBG("%s:END,cam_id = %d, ch = %d\n", __func__, cam_id, ch_type); }
int mm_app_start_snapshot(int cam_id) { int rc = MM_CAMERA_OK; int stream[2]; int op_mode = 0; uint8_t initial_reg_flag; mm_camera_frame_len_offset frame_offset_info; mm_camera_bundle_attr_t attr; mm_camera_app_obj_t *pme = mm_app_get_cam_obj(cam_id); if (MM_CAMERA_OK != mm_app_stop_preview(cam_id)) { CDBG_ERROR("%s: Stop preview Failed cam_id=%d\n",__func__,cam_id); return -1; } op_mode = MM_CAMERA_OP_MODE_CAPTURE; mm_app_set_snapshot_mode(cam_id,op_mode); usleep(20*1000); // pme->cam->ops->prepare_snapshot(pme->cam->camera_handle,pme->ch_id,0); if (MM_CAMERA_OK != (rc = mm_app_add_snapshot_stream(cam_id))) { CDBG_ERROR("%s : Add Snapshot stream err",__func__); return rc; } if (MM_CAMERA_OK != (rc = mm_app_config_snapshot_format(cam_id))) { CDBG_ERROR("%s : Config Snapshot stream err",__func__); return rc; } if (MM_CAMERA_OK != (rc = mm_app_streamon_snapshot(cam_id))) { CDBG_ERROR("%s : Stream on Snapshot stream err",__func__); return rc; } /* init jpeg buf */ pme->cam->ops->get_stream_parm(pme->cam->camera_handle, pme->ch_id, pme->stream[MM_CAMERA_SNAPSHOT_MAIN].id, MM_CAMERA_STREAM_OFFSET, &frame_offset_info); CDBG_ERROR("%s : alloc jpeg buf (len=%d)",__func__, frame_offset_info.frame_len); rc = mm_stream_alloc_bufs(pme, &pme->jpeg_buf, &frame_offset_info, 1); if (0 != rc) { CDBG_ERROR("%s : mm_stream_alloc_bufs err",__func__); return rc; } CDBG("%s: END, rc=%d\n", __func__, rc); return rc; }
int stopRdi(int cam_id) { int rc = MM_CAMERA_OK; mm_camera_app_obj_t *pme = mm_app_get_cam_obj(cam_id); mm_app_streamoff_rdi(cam_id); end: return rc; }