mm_camera_channel_t * mm_app_add_snapshot_channel(mm_camera_test_obj_t *test_obj) { mm_camera_channel_t *channel = NULL; mm_camera_stream_t *stream = NULL; channel = mm_app_add_channel(test_obj, MM_CHANNEL_TYPE_SNAPSHOT, NULL, NULL, NULL); if (NULL == channel) { LOGE(" add channel failed"); return NULL; } stream = mm_app_add_snapshot_stream(test_obj, channel, mm_app_snapshot_notify_cb, (void *)test_obj, 1, 1); if (NULL == stream) { LOGE(" add snapshot stream failed\n"); mm_app_del_channel(test_obj, channel); return NULL; } return channel; }
int mm_app_start_preview_zsl(mm_camera_test_obj_t *test_obj) { int32_t rc = MM_CAMERA_OK; mm_camera_channel_t *channel = NULL; mm_camera_stream_t *s_preview = NULL; mm_camera_stream_t *s_main = NULL; mm_camera_channel_attr_t attr; memset(&attr, 0, sizeof(mm_camera_channel_attr_t)); attr.notify_mode = MM_CAMERA_SUPER_BUF_NOTIFY_BURST; attr.look_back = 2; attr.post_frame_skip = 0; attr.water_mark = 2; attr.max_unmatched_frames = 3; channel = mm_app_add_channel(test_obj, MM_CHANNEL_TYPE_ZSL, &attr, mm_app_zsl_notify_cb, test_obj); if (NULL == channel) { CDBG_ERROR("%s: add channel failed", __func__); return -MM_CAMERA_E_GENERAL; } s_preview = mm_app_add_preview_stream(test_obj, channel, mm_app_preview_notify_cb, (void *)test_obj, PREVIEW_BUF_NUM); if (NULL == s_preview) { CDBG_ERROR("%s: add preview stream failed\n", __func__); mm_app_del_channel(test_obj, channel); return rc; } s_main = mm_app_add_snapshot_stream(test_obj, channel, NULL, NULL, PREVIEW_BUF_NUM, 0); if (NULL == s_main) { CDBG_ERROR("%s: add main snapshot stream failed\n", __func__); mm_app_del_stream(test_obj, channel, s_preview); mm_app_del_channel(test_obj, channel); return rc; } rc = mm_app_start_channel(test_obj, channel); if (MM_CAMERA_OK != rc) { CDBG_ERROR("%s:start zsl failed rc=%d\n", __func__, rc); mm_app_del_stream(test_obj, channel, s_preview); mm_app_del_stream(test_obj, channel, s_main); mm_app_del_channel(test_obj, channel); return rc; } return rc; }
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 mm_app_start_capture(mm_camera_test_obj_t *test_obj, uint8_t num_snapshots) { int32_t rc = MM_CAMERA_OK; mm_camera_channel_t *channel = NULL; mm_camera_stream_t *s_main = NULL; mm_camera_stream_t *s_metadata = NULL; mm_camera_channel_attr_t attr; memset(&attr, 0, sizeof(mm_camera_channel_attr_t)); attr.notify_mode = MM_CAMERA_SUPER_BUF_NOTIFY_CONTINUOUS; attr.max_unmatched_frames = 3; channel = mm_app_add_channel(test_obj, MM_CHANNEL_TYPE_CAPTURE, &attr, mm_app_snapshot_notify_cb, test_obj); if (NULL == channel) { CDBG_ERROR("%s: add channel failed", __func__); return -MM_CAMERA_E_GENERAL; } #if 0 // Removing metadata stream for snapshot in qcamera app. s_metadata = mm_app_add_metadata_stream(test_obj, channel, mm_app_snapshot_metadata_notify_cb, (void *)test_obj, CAPTURE_BUF_NUM); if (NULL == s_metadata) { CDBG_ERROR("%s: add metadata stream failed\n", __func__); mm_app_del_channel(test_obj, channel); return -MM_CAMERA_E_GENERAL; } #endif s_main = mm_app_add_snapshot_stream(test_obj, channel, NULL, NULL, CAPTURE_BUF_NUM, num_snapshots); if (NULL == s_main) { CDBG_ERROR("%s: add main snapshot stream failed\n", __func__); mm_app_del_channel(test_obj, channel); return rc; } rc = mm_app_start_channel(test_obj, channel); if (MM_CAMERA_OK != rc) { CDBG_ERROR("%s:start zsl failed rc=%d\n", __func__, rc); mm_app_del_stream(test_obj, channel, s_main); mm_app_del_stream(test_obj, channel, s_metadata); mm_app_del_channel(test_obj, channel); return rc; } return rc; }
int mm_app_start_capture(mm_camera_test_obj_t *test_obj, uint8_t num_snapshots) { int32_t rc = MM_CAMERA_OK; mm_camera_channel_t *channel = NULL; mm_camera_stream_t *s_main = NULL; mm_camera_stream_t *s_post = NULL; mm_camera_channel_attr_t attr; memset(&attr, 0, sizeof(mm_camera_channel_attr_t)); attr.notify_mode = MM_CAMERA_SUPER_BUF_NOTIFY_CONTINUOUS; attr.max_unmatched_frames = 3; channel = mm_app_add_channel(test_obj, MM_CHANNEL_TYPE_CAPTURE, &attr, mm_app_snapshot_notify_cb, test_obj); if (NULL == channel) { LOGE(" add channel failed"); return -MM_CAMERA_E_GENERAL; } s_main = mm_app_add_snapshot_stream(test_obj, channel, mm_app_snapshot_notify_cb, (void *)test_obj, CAPTURE_BUF_NUM, num_snapshots); if (NULL == s_main) { LOGE(" add main snapshot stream failed\n"); mm_app_del_channel(test_obj, channel); return rc; } s_post = mm_app_add_postview_stream(test_obj, channel, NULL, NULL, CAPTURE_BUF_NUM, num_snapshots); if (NULL == s_main) { LOGE(" add main postview stream failed\n"); mm_app_del_channel(test_obj, channel); return rc; } rc = mm_app_start_channel(test_obj, channel); if (MM_CAMERA_OK != rc) { LOGE("start zsl failed rc=%d\n", rc); mm_app_del_stream(test_obj, channel, s_main); mm_app_del_channel(test_obj, channel); return rc; } return rc; }
int mm_app_start_snapshot(int cam_id) { int rc = MM_CAMERA_OK; int stream[2]; int op_mode = 0; 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); 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__); } if (MM_CAMERA_OK != (rc = mm_app_config_snapshot_format(cam_id))) { CDBG_ERROR("%s : Config Snapshot stream err",__func__); } if (MM_CAMERA_OK != (rc = mm_app_streamon_snapshot(cam_id))) { CDBG_ERROR("%s : Stream on Snapshot stream err",__func__); } #if 0 /*start OMX Jpeg encoder*/ #ifndef DISABLE_JPEG_ENCODING my_cam_app.hal_lib.omxJpegOpen(); #endif #endif end: CDBG("%s: END, rc=%d\n", __func__, rc); return rc; }
int mm_app_start_preview_zsl(mm_camera_test_obj_t *test_obj) { int32_t rc = MM_CAMERA_OK; mm_camera_channel_t *channel = NULL; mm_camera_stream_t *s_preview = NULL; mm_camera_stream_t *s_metadata = NULL; mm_camera_stream_t *s_main = NULL; mm_camera_channel_attr_t attr; memset(&attr, 0, sizeof(mm_camera_channel_attr_t)); attr.notify_mode = MM_CAMERA_SUPER_BUF_NOTIFY_CONTINUOUS; attr.look_back = 2; attr.post_frame_skip = 0; attr.water_mark = 2; attr.max_unmatched_frames = 3; channel = mm_app_add_channel(test_obj, MM_CHANNEL_TYPE_ZSL, &attr, mm_app_zsl_notify_cb, test_obj); if (NULL == channel) { CDBG_ERROR("%s: add channel failed", __func__); return -MM_CAMERA_E_GENERAL; } s_preview = mm_app_add_preview_stream(test_obj, channel, mm_app_preview_notify_cb, (void *)test_obj, PREVIEW_BUF_NUM); if (NULL == s_preview) { CDBG_ERROR("%s: add preview stream failed\n", __func__); mm_app_del_channel(test_obj, channel); return rc; } s_metadata = mm_app_add_metadata_stream(test_obj, channel, mm_app_metadata_notify_cb, (void *)test_obj, PREVIEW_BUF_NUM); if (NULL == s_metadata) { CDBG_ERROR("%s: add metadata stream failed\n", __func__); mm_app_del_channel(test_obj, channel); return rc; } s_main = mm_app_add_snapshot_stream(test_obj, channel, NULL, NULL, PREVIEW_BUF_NUM, 0); if (NULL == s_main) { CDBG_ERROR("%s: add main snapshot stream failed\n", __func__); mm_app_del_stream(test_obj, channel, s_preview); mm_app_del_channel(test_obj, channel); return rc; } rc = mm_app_start_channel(test_obj, channel); if (MM_CAMERA_OK != rc) { CDBG_ERROR("%s:start zsl failed rc=%d\n", __func__, rc); mm_app_del_stream(test_obj, channel, s_preview); mm_app_del_stream(test_obj, channel, s_metadata); mm_app_del_stream(test_obj, channel, s_main); mm_app_del_channel(test_obj, channel); return rc; } if ( test_obj->enable_reproc ) { if ( NULL == mm_app_add_reprocess_channel(test_obj, s_main) ) { CDBG_ERROR("%s: Reprocess channel failed to initialize \n", __func__); mm_app_del_stream(test_obj, channel, s_preview); #ifdef USE_METADATA_STREAM mm_app_del_stream(test_obj, channel, s_metadata); #endif mm_app_del_stream(test_obj, channel, s_main); mm_app_del_channel(test_obj, channel); return rc; } rc = mm_app_start_reprocess(test_obj); if (MM_CAMERA_OK != rc) { CDBG_ERROR("%s: reprocess start failed rc=%d\n", __func__, rc); mm_app_del_stream(test_obj, channel, s_preview); #ifdef USE_METADATA_STREAM mm_app_del_stream(test_obj, channel, s_metadata); #endif mm_app_del_stream(test_obj, channel, s_main); mm_app_del_channel(test_obj, channel); return rc; } } return rc; }