summaryrefslogtreecommitdiff
path: root/camera/QCamera/stack/mm-camera-test/src/mm_qcamera_snapshot.c
diff options
context:
space:
mode:
Diffstat (limited to 'camera/QCamera/stack/mm-camera-test/src/mm_qcamera_snapshot.c')
-rwxr-xr-xcamera/QCamera/stack/mm-camera-test/src/mm_qcamera_snapshot.c1220
1 files changed, 0 insertions, 1220 deletions
diff --git a/camera/QCamera/stack/mm-camera-test/src/mm_qcamera_snapshot.c b/camera/QCamera/stack/mm-camera-test/src/mm_qcamera_snapshot.c
deleted file mode 100755
index 5d27305..0000000
--- a/camera/QCamera/stack/mm-camera-test/src/mm_qcamera_snapshot.c
+++ /dev/null
@@ -1,1220 +0,0 @@
-/*
-Copyright (c) 2011-2012, The Linux Foundation. All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above
- copyright notice, this list of conditions and the following
- disclaimer in the documentation and/or other materials provided
- with the distribution.
- * Neither the name of The Linux Foundation nor the names of its
- contributors may be used to endorse or promote products derived
- from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
-WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
-BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
-BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
-OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
-IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#include <pthread.h>
-#include <errno.h>
-#include <sys/ioctl.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <poll.h>
-#include "mm_camera_dbg.h"
-#include "mm_qcamera_app.h"
-
-#define BUFF_SIZE_128 128
-
-#ifdef TEST_ABORT_JPEG_ENCODE
-static uint8_t aborted_flag = 1;
-#endif
-
-//static mm_camera_ch_data_buf_t *mCurrentFrameEncoded;
-static int JpegOffset = 0;
-static int raw_snapshot_cnt = 0;
-static int snapshot_cnt = 0;
-static pthread_mutex_t g_s_mutex;
-static int g_status = 0;
-static pthread_cond_t g_s_cond_v;
-
-extern void dumpFrameToFile(mm_camera_buf_def_t* newFrame, int w, int h, char* name, int main_422,char *ext);
-extern int mm_app_open_zsl(int cam_id);
-extern int mm_app_open_camera(int cam_id);
-extern int mm_app_start_preview(int cam_id);
-extern int mm_stream_alloc_bufs(mm_camera_app_obj_t *pme,
- mm_camear_app_buf_t* app_bufs,
- mm_camera_frame_len_offset *frame_offset_info,
- uint8_t num_bufs);
-extern int mm_stream_release_bufs(mm_camera_app_obj_t *pme,
- mm_camear_app_buf_t* app_bufs);
-extern int mm_stream_invalid_cache(mm_camera_app_obj_t *pme,
- mm_camera_buf_def_t *frame);
-
-static void mm_app_snapshot_done()
-{
- pthread_mutex_lock(&g_s_mutex);
- g_status = TRUE;
- pthread_cond_signal(&g_s_cond_v);
- pthread_mutex_unlock(&g_s_mutex);
-}
-
-static int mm_app_dump_snapshot_frame(struct msm_frame *frame,
- uint32_t len, int is_main, int is_raw)
-{
- char bufp[BUFF_SIZE_128];
- int file_fdp;
- int rc = 0;
-
- if (is_raw) {
- snprintf(bufp, BUFF_SIZE_128, "/data/main_raw_%d.yuv", raw_snapshot_cnt);
- } else {
- if (is_main) {
- snprintf(bufp, BUFF_SIZE_128, "/data/main_%d.yuv", snapshot_cnt);
- } else {
- snprintf(bufp, BUFF_SIZE_128, "/data/thumb_%d.yuv", snapshot_cnt);
- }
- }
-
- file_fdp = open(bufp, O_RDWR | O_CREAT, 0777);
-
- if (file_fdp < 0) {
- CDBG("cannot open file %s\n", bufp);
- rc = -1;
- goto end;
- }
- CDBG("%s:dump snapshot frame to '%s'\n", __func__, bufp);
- write(file_fdp,
- (const void *)frame->buffer, len);
- close(file_fdp);
- end:
- return rc;
-}
-
-
-static void mm_app_dump_jpeg_frame(const void * data, uint32_t size, char* name, char* ext, int index)
-{
- char buf[32];
- int file_fd;
- if ( data != NULL) {
- char * str;
- snprintf(buf, sizeof(buf), "/data/%s_%d.%s", name, index, ext);
- CDBG("%s: %s size =%d, jobId=%d", __func__, buf, size, index);
- file_fd = open(buf, O_RDWR | O_CREAT, 0777);
- write(file_fd, data, size);
- close(file_fd);
- }
-}
-
-static int mm_app_set_thumbnail_fmt(int cam_id, mm_camera_image_fmt_t *fmt)
-{
- int rc = MM_CAMERA_OK;
- mm_camera_app_obj_t *pme = mm_app_get_cam_obj(cam_id);
-
- fmt->meta_header = MM_CAMEAR_META_DATA_TYPE_DEF;
- fmt->fmt = pme->dim.thumb_format;
- fmt->width = pme->dim.thumbnail_width;
- fmt->height = pme->dim.thumbnail_height;
- if (cam_id == 0) {
- /* back camera, rotate 90 */
- fmt->rotation = 90;
- }
- CDBG("Thumbnail Dimension = %dX%d",fmt->width,fmt->height);
- return rc;
-}
-
-int mm_app_set_snapshot_fmt(int cam_id, mm_camera_image_fmt_t *fmt)
-{
-
- int rc = MM_CAMERA_OK;
- mm_camera_app_obj_t *pme = mm_app_get_cam_obj(cam_id);
- fmt->meta_header = MM_CAMEAR_META_DATA_TYPE_DEF;
- fmt->fmt = pme->dim.main_img_format;
- fmt->width = pme->dim.picture_width;
- fmt->height = pme->dim.picture_height;
- if (cam_id == 0) {
- /* back camera, rotate 90 */
- fmt->rotation = 90;
- }
- CDBG("Snapshot Dimension = %dX%d",fmt->width,fmt->height);
- return rc;
-}
-
-int mm_app_set_live_snapshot_fmt(int cam_id, mm_camera_image_fmt_t *fmt)
-{
- int rc = MM_CAMERA_OK;
- mm_camera_app_obj_t *pme = mm_app_get_cam_obj(cam_id);
- fmt->meta_header = MM_CAMEAR_META_DATA_TYPE_DEF;
- fmt->fmt = pme->dim.enc_format;
- fmt->width = pme->dim.video_width;
- fmt->height = pme->dim.video_height;
- CDBG("Livesnapshot Dimension = %dX%d",fmt->width,fmt->height);
- return rc;
-}
-
-int mm_app_set_raw_snapshot_fmt(int cam_id,mm_camera_image_fmt_t *fmt)
-{
- int rc = MM_CAMERA_OK;
- mm_camera_app_obj_t *pme = mm_app_get_cam_obj(cam_id);
-
- fmt->meta_header = MM_CAMEAR_META_DATA_TYPE_DEF;
- fmt->fmt = pme->dim.raw_img_format;
- fmt->width = pme->dim.raw_picture_width;
- fmt->height = pme->dim.raw_picture_height;
- if (cam_id == 0) {
- /* back camera, rotate 90 */
- fmt->rotation = 90;
- }
- CDBG("%s: Raw Snapshot Dimension = %d X %d",__func__,pme->dim.raw_picture_width,pme->dim.raw_picture_height);
- return rc;
-}
-
-/* This callback is received once the complete JPEG encoding is done */
-static void jpeg_encode_cb(jpeg_job_status_t status,
- uint8_t thumbnailDroppedFlag,
- uint32_t client_hdl,
- uint32_t jobId,
- uint8_t* out_data,
- uint32_t data_size,
- void *userData)
-{
- int rc;
- int i = 0;
- mm_camera_buf_def_t *main_frame = NULL;
- mm_camera_buf_def_t *thumb_frame = NULL;
- mm_camera_app_obj_t *pme = NULL;
- CDBG("%s: BEGIN\n", __func__);
-
- pme = (mm_camera_app_obj_t *)userData;
- if (jobId != pme->current_job_id || !pme->current_job_frames) {
- CDBG_ERROR("%s: NULL current job frames or not matching job ID (%d, %d)",
- __func__, jobId, pme->current_job_id);
- return;
- }
-
- /* dump jpeg img */
- CDBG_ERROR("%s: job %d, status=%d, thumbnail_dropped=%d",
- __func__, jobId, status, thumbnailDroppedFlag);
- if (status == JPEG_JOB_STATUS_DONE) {
- mm_app_dump_jpeg_frame(out_data, data_size, "jpeg_dump", "jpg", pme->my_id);
- }
-
- /* buf done current encoding frames */
- pme->current_job_id = 0;
- for (i=0; i<pme->current_job_frames->num_bufs; i++) {
- if (MM_CAMERA_OK != pme->cam->ops->qbuf(pme->current_job_frames->camera_handle,
- pme->current_job_frames->ch_id,
- pme->current_job_frames->bufs[i])) {
- CDBG_ERROR("%s: Failed in Qbuf\n", __func__);
- }
- }
- free(pme->current_job_frames);
- pme->current_job_frames = NULL;
-
- /* signal snapshot is done */
- mm_app_snapshot_done();
-}
-
-static int encodeData(mm_camera_app_obj_t *pme,
- mm_camera_super_buf_t* recvd_frame)
-{
- int rc = -1;
- int i,index = -1;
- mm_jpeg_job job;
- mm_camera_buf_def_t *main_frame = NULL;
- mm_camera_buf_def_t *thumb_frame = NULL;
- src_image_buffer_info* main_buf_info = NULL;
- src_image_buffer_info* thumb_buf_info = NULL;
- mm_camera_frame_len_offset main_offset;
- mm_camera_frame_len_offset thumb_offset;
-
- /* dump raw img for debug purpose */
- CDBG("%s : total streams = %d",__func__,recvd_frame->num_bufs);
- for (i=0; i<recvd_frame->num_bufs; i++) {
- if (pme->stream[MM_CAMERA_SNAPSHOT_MAIN].id == recvd_frame->bufs[i]->stream_id) {
- main_frame = recvd_frame->bufs[i];
- CDBG("mainframe frame_idx = %d fd = %d frame length = %d",main_frame->frame_idx,main_frame->fd,main_frame->frame_len);
- dumpFrameToFile(main_frame,pme->dim.picture_width,pme->dim.picture_height,"main", 1,"yuv");
- } else if (pme->stream[MM_CAMERA_SNAPSHOT_THUMBNAIL].id == recvd_frame->bufs[i]->stream_id){
- thumb_frame = recvd_frame->bufs[1];
- CDBG("thumnail frame_idx = %d fd = %d frame length = %d",thumb_frame->frame_idx,thumb_frame->fd,thumb_frame->frame_len);
- dumpFrameToFile(thumb_frame,pme->dim.thumbnail_width,pme->dim.thumbnail_height,"thumb", 1,"yuv");
- }
- }
-
- if (main_frame == NULL) {
- CDBG_ERROR("%s: Main frame is NULL", __func__);
- return rc;
- }
-
- /* remember current frames being encoded */
- pme->current_job_frames =
- (mm_camera_super_buf_t *)malloc(sizeof(mm_camera_super_buf_t));
- if (!pme->current_job_frames) {
- CDBG_ERROR("%s: No memory for current_job_frames", __func__);
- return rc;
- }
- memcpy(pme->current_job_frames, recvd_frame, sizeof(mm_camera_super_buf_t));
-
- memset(&job, 0, sizeof(job));
- job.job_type = JPEG_JOB_TYPE_ENCODE;
- job.encode_job.jpeg_cb = jpeg_encode_cb;
- job.encode_job.userdata = (void*)pme;
- job.encode_job.encode_parm.exif_data = NULL;
- job.encode_job.encode_parm.exif_numEntries = 0;
- job.encode_job.encode_parm.rotation = 0;
- job.encode_job.encode_parm.buf_info.src_imgs.src_img_num = recvd_frame->num_bufs;
- job.encode_job.encode_parm.rotation = 0;
- if (pme->my_id == 0) {
- /* back camera, rotate 90 */
- job.encode_job.encode_parm.rotation = 90;
- }
-
- /* fill in main src img encode param */
- main_buf_info = &job.encode_job.encode_parm.buf_info.src_imgs.src_img[JPEG_SRC_IMAGE_TYPE_MAIN];
- main_buf_info->type = JPEG_SRC_IMAGE_TYPE_MAIN;
- main_buf_info->color_format = MM_JPEG_COLOR_FORMAT_YCRCBLP_H2V2; //TODO
- main_buf_info->quality = 85;
- main_buf_info->src_dim.width = pme->dim.picture_width;
- main_buf_info->src_dim.height = pme->dim.picture_height;
- main_buf_info->out_dim.width = pme->dim.picture_width;
- main_buf_info->out_dim.height = pme->dim.picture_height;
- main_buf_info->crop.width = pme->dim.picture_width;
- main_buf_info->crop.height = pme->dim.picture_height;
- main_buf_info->crop.offset_x = 0;
- main_buf_info->crop.offset_y = 0;
- main_buf_info->img_fmt = JPEG_SRC_IMAGE_FMT_YUV;
- main_buf_info->num_bufs = 1;
- main_buf_info->src_image[0].fd = main_frame->fd;
- main_buf_info->src_image[0].buf_vaddr = main_frame->buffer;
- pme->cam->ops->get_stream_parm(pme->cam->camera_handle,
- pme->ch_id,
- pme->stream[MM_CAMERA_SNAPSHOT_MAIN].id,
- MM_CAMERA_STREAM_OFFSET,
- &main_buf_info->src_image[0].offset);
- CDBG("%s: main offset: num_planes=%d, frame length=%d, y_offset=%d, cbcr_offset=%d",
- __func__, main_buf_info->src_image[0].offset.num_planes,
- main_buf_info->src_image[0].offset.frame_len,
- main_buf_info->src_image[0].offset.mp[0].offset,
- main_buf_info->src_image[0].offset.mp[1].offset);
-
- mm_stream_clear_invalid_cache(pme,main_frame);
-
- if (thumb_frame) {
- /* fill in thumbnail src img encode param */
- thumb_buf_info = &job.encode_job.encode_parm.buf_info.src_imgs.src_img[JPEG_SRC_IMAGE_TYPE_THUMB];
- thumb_buf_info->type = JPEG_SRC_IMAGE_TYPE_THUMB;
- thumb_buf_info->color_format = MM_JPEG_COLOR_FORMAT_YCRCBLP_H2V2; //TODO
- thumb_buf_info->quality = 85;
- thumb_buf_info->src_dim.width = pme->dim.thumbnail_width;
- thumb_buf_info->src_dim.height = pme->dim.thumbnail_height;
- thumb_buf_info->out_dim.width = pme->dim.thumbnail_width;
- thumb_buf_info->out_dim.height = pme->dim.thumbnail_height;
- thumb_buf_info->crop.width = pme->dim.thumbnail_width;
- thumb_buf_info->crop.height = pme->dim.thumbnail_height;
- thumb_buf_info->crop.offset_x = 0;
- thumb_buf_info->crop.offset_y = 0;
- thumb_buf_info->img_fmt = JPEG_SRC_IMAGE_FMT_YUV;
- thumb_buf_info->num_bufs = 1;
- thumb_buf_info->src_image[0].fd = thumb_frame->fd;
- thumb_buf_info->src_image[0].buf_vaddr = thumb_frame->buffer;
- pme->cam->ops->get_stream_parm(pme->cam->camera_handle,
- pme->ch_id,
- pme->stream[MM_CAMERA_SNAPSHOT_THUMBNAIL].id,
- MM_CAMERA_STREAM_OFFSET,
- &thumb_buf_info->src_image[0].offset);
- }
-
- /* fill in sink img param */
- job.encode_job.encode_parm.buf_info.sink_img.buf_len = pme->jpeg_buf.bufs[0].frame_len;
- job.encode_job.encode_parm.buf_info.sink_img.buf_vaddr = pme->jpeg_buf.bufs[0].buffer;
- job.encode_job.encode_parm.buf_info.sink_img.fd = pme->jpeg_buf.bufs[0].fd;
-
- mm_stream_clear_invalid_cache(pme,thumb_frame);
-
- rc = pme->jpeg_ops.start_job(pme->jpeg_hdl, &job, &pme->current_job_id);
- if ( 0 != rc ) {
- free(pme->current_job_frames);
- pme->current_job_frames = NULL;
- }
-
- return rc;
-}
-
-static void snapshot_yuv_cb(mm_camera_super_buf_t *bufs,
- void *user_data)
-{
-
- int rc;
- int i = 0;
- mm_camera_buf_def_t *main_frame = NULL;
- mm_camera_buf_def_t *thumb_frame = NULL;
- mm_camera_app_obj_t *pme = NULL;
- char* cmd = "This is a private cmd from test app";
-
- CDBG("%s: BEGIN\n", __func__);
-
- pme = (mm_camera_app_obj_t *)user_data;
-
- CDBG("%s: send private ioctl here", __func__);
- pme->cam->ops->send_command(bufs->camera_handle,
- MM_CAMERA_CMD_TYPE_PRIVATE,
- 0,
- strlen(cmd) + 1,
- (void *)cmd);
-
- /* start jpeg encoding job */
- rc = encodeData(pme, bufs);
-
- /* buf done rcvd frames in error case */
- if ( 0 != rc ) {
- for (i=0; i<bufs->num_bufs; i++) {
- if (MM_CAMERA_OK != pme->cam->ops->qbuf(bufs->camera_handle,
- bufs->ch_id,
- bufs->bufs[i])) {
- CDBG_ERROR("%s: Failed in Qbuf\n", __func__);
- }
- mm_stream_invalid_cache(pme,bufs->bufs[i]);
- }
- }
-#ifdef TEST_ABORT_JPEG_ENCODE
- else {
- if (aborted_flag) {
- aborted_flag = 0;
- /* abort the job */
- CDBG("%s: abort jpeg encode job here", __func__);
- rc = pme->jpeg_ops.abort_job(pme->jpeg_hdl, pme->current_job_id);
- if (NULL != pme->current_job_frames) {
- free(pme->current_job_frames);
- pme->current_job_frames = NULL;
- }
- CDBG("%s: abort jpeg encode job returns %d", __func__, rc);
- for (i=0; i<bufs->num_bufs; i++) {
- if (MM_CAMERA_OK != pme->cam->ops->qbuf(bufs->camera_handle,
- bufs->ch_id,
- bufs->bufs[i])) {
- CDBG_ERROR("%s: Failed in Qbuf\n", __func__);
- }
- mm_stream_invalid_cache(pme,bufs->bufs[i]);
- }
-
- /* signal snapshot is done */
- mm_app_snapshot_done();
- }
- }
-#endif
-
- CDBG("%s: END\n", __func__);
-}
-
-static void snapshot_raw_cb(mm_camera_super_buf_t *recvd_frame,
- void *user_data)
-{
- int rc;
- int i = 0;
- mm_camera_buf_def_t *main_frame = NULL;
- mm_camera_app_obj_t *pme = NULL;
-
- CDBG("%s: BEGIN\n", __func__);
-
- pme = (mm_camera_app_obj_t *)user_data;
-
- if (pme->stream[MM_CAMERA_SNAPSHOT_MAIN].id == recvd_frame->bufs[i]->stream_id) {
- main_frame = recvd_frame->bufs[i];
- CDBG("mainframe frame_idx = %d fd = %d frame length = %d",main_frame->frame_idx,main_frame->fd,main_frame->frame_len);
- dumpFrameToFile(main_frame,pme->dim.raw_picture_width,pme->dim.raw_picture_height,"raw_main", 1,"raw");
- }
- if (MM_CAMERA_OK != pme->cam->ops->qbuf(pme->cam->camera_handle,pme->ch_id,
- main_frame)) {
- CDBG_ERROR("%s: Failed in Qbuf\n", __func__);
- }
-
- mm_app_snapshot_done();
-}
-
-static int encodeDisplayAndSave(mm_camera_super_buf_t* recvd_frame,
- int enqueued, mm_camera_app_obj_t *pme)
-{
- int ret = -1;
-#if 0
-
-
- CDBG("%s: Send frame for encoding", __func__);
- ret = encodeData(recvd_frame, pme->snapshot_buf.frame_len,
- enqueued, pme);
- if (!ret) {
- CDBG_ERROR("%s: Failure configuring JPEG encoder", __func__);
- }
-
- LOGD("%s: X", __func__);
-#endif
- return ret;
-}
-
-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;
-}
-
-void mm_app_set_snapshot_mode(int cam_id,int op_mode)
-{
- denoise_param_t wnr;
- mm_camera_app_obj_t *pme = mm_app_get_cam_obj(cam_id);
- pme->cam->ops->set_parm(pme->cam->camera_handle,MM_CAMERA_PARM_OP_MODE, &op_mode);
-
- /* set wnr enabled */
- memset(&wnr, 0, sizeof(denoise_param_t));
- wnr.denoise_enable = 0;
- wnr.process_plates = 0;
- // pme->cam->ops->set_parm(pme->cam->camera_handle, MM_CAMERA_PARM_WAVELET_DENOISE, &wnr);
-}
-
-int mm_app_config_raw_format(int cam_id)
-{
- int rc = MM_CAMERA_OK;
- mm_camera_app_obj_t *pme = mm_app_get_cam_obj(cam_id);
- mm_camera_image_fmt_t *m_fmt = NULL;
- mm_camera_image_fmt_t *t_fmt = NULL;
-
- mm_app_set_raw_snapshot_fmt(cam_id,&pme->stream[MM_CAMERA_SNAPSHOT_MAIN].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;
- }
-
-end:
- CDBG("%s: END, rc=%d\n", __func__, rc);
- 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_streamon_snapshot(int cam_id)
-{
- int rc = MM_CAMERA_OK;
- uint32_t stream[2];
- 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_SNAPSHOT_MAIN].id;
- stream[1] = pme->stream[MM_CAMERA_SNAPSHOT_THUMBNAIL].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,snapshot_yuv_cb,pme,&attr,2,stream))) {
- CDBG_ERROR("%s:init_stream_bundle err=%d\n", __func__, rc);
- 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);
- goto end;
- }
-
- if (MM_CAMERA_OK != (rc =pme->cam->ops->request_super_buf(pme->cam->camera_handle,pme->ch_id, attr.burst_num))) {
- CDBG_ERROR("%s:request_super_buf err=%d\n", __func__, rc);
- goto end;
- }
- pme->cam_state = CAMERA_STATE_SNAPSHOT;
- end:
- CDBG("%s: END, rc=%d\n", __func__, rc);
- return rc;
-}
-
-int mm_app_streamon_raw(int cam_id)
-{
- int rc = MM_CAMERA_OK;
- uint32_t stream[2];
- 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_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,snapshot_raw_cb,pme,&attr,1,stream))) {
- CDBG_ERROR("%s:init_stream_bundle err=%d\n", __func__, rc);
- goto end;
- }
-
- if (MM_CAMERA_OK != (rc = pme->cam->ops->start_streams(pme->cam->camera_handle,pme->ch_id,
- 1, stream))) {
- CDBG_ERROR("%s:start_streams err=%d\n", __func__, rc);
- goto end;
- }
-
- if (MM_CAMERA_OK != (rc =pme->cam->ops->request_super_buf(pme->cam->camera_handle,pme->ch_id, attr.burst_num))) {
- CDBG_ERROR("%s:request_super_buf err=%d\n", __func__, rc);
- goto end;
- }
- pme->cam_state = CAMERA_STATE_SNAPSHOT;
-end:
- CDBG("%s: END, rc=%d\n", __func__, rc);
- return rc;
-}
-
-int mm_app_streamoff_snapshot(int cam_id)
-{
- int rc = MM_CAMERA_OK;
- uint32_t stream[2];
-
- mm_camera_app_obj_t *pme = mm_app_get_cam_obj(cam_id);
-
- stream[0] = pme->stream[MM_CAMERA_SNAPSHOT_MAIN].id;
- stream[1] = pme->stream[MM_CAMERA_SNAPSHOT_THUMBNAIL].id;
-
- if (MM_CAMERA_OK != (rc = pme->cam->ops->stop_streams(pme->cam->camera_handle,pme->ch_id,2,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");
-
- if (MM_CAMERA_OK != (rc = pme->cam->ops->del_stream(pme->cam->camera_handle,pme->ch_id,pme->stream[MM_CAMERA_SNAPSHOT_THUMBNAIL].id))) {
- CDBG_ERROR("%s : Snapshot thumnail image del_stream Error",__func__);
- goto end;
- }
- CDBG("del_stream successfull");
-
- end:
- 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_raw(int cam_id)
-{
- int rc = MM_CAMERA_OK;
- int op_mode = 0;
-
- 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_RAW;
- pme->cam->ops->set_parm(pme->cam->camera_handle,MM_CAMERA_PARM_OP_MODE, &op_mode);
- usleep(20*1000);
-
- 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 RAW main is successfull stream ID = %d",pme->stream[MM_CAMERA_SNAPSHOT_MAIN].id);
- if (!pme->stream[MM_CAMERA_SNAPSHOT_MAIN].id) {
- CDBG_ERROR("%s:Raw main streaming err=%d\n", __func__, rc);
- rc = -1;
- return rc;
- }
-
- if (MM_CAMERA_OK != (rc = mm_app_config_raw_format(cam_id))) {
- CDBG_ERROR("%s : Config Raw Snapshot stream err",__func__);
- return rc;
- }
-
- if (MM_CAMERA_OK != (rc = mm_app_streamon_raw(cam_id))) {
- CDBG_ERROR("%s : Stream on Raw Snapshot stream err",__func__);
- return rc;
- }
-
- CDBG("%s: END, rc=%d\n", __func__, rc);
- return rc;
-}
-
-int mm_app_stop_snapshot(int cam_id)
-{
- int rc = MM_CAMERA_OK;
- int i;
-
- mm_camera_app_obj_t *pme = mm_app_get_cam_obj(cam_id);
-
- if (pme->current_job_id) {
- /* have current jpeg encoding running, abort the job */
- if (pme->jpeg_ops.abort_job) {
- pme->jpeg_ops.abort_job(pme->jpeg_hdl, pme->current_job_id);
- pme->current_job_id = 0;
- }
-
- if (pme->current_job_frames) {
- for (i=0; i<pme->current_job_frames->num_bufs; i++) {
- if (MM_CAMERA_OK != pme->cam->ops->qbuf(pme->current_job_frames->camera_handle,
- pme->current_job_frames->ch_id,
- pme->current_job_frames->bufs[i])) {
- CDBG_ERROR("%s: Failed in Qbuf\n", __func__);
- }
- mm_stream_invalid_cache(pme,pme->current_job_frames->bufs[i]);
- }
- free(pme->current_job_frames);
- pme->current_job_frames = NULL;
- }
- }
-
- if (MM_CAMERA_OK != (rc = mm_app_streamoff_snapshot(cam_id))) {
- CDBG_ERROR("%s : Stream off Snapshot stream err",__func__);
- }
- pme->cam_state = CAMERA_STATE_OPEN;
-
- /* deinit jpeg buf */
- rc = mm_stream_release_bufs(pme,
- &pme->jpeg_buf);
-end:
- CDBG("%s: END, rc=%d\n", __func__, rc);
-
- 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;
-}
-
-static void mm_app_snapshot_wait(int cam_id)
-{
- pthread_mutex_lock(&g_s_mutex);
- if (FALSE == g_status) {
- pthread_cond_wait(&g_s_cond_v, &g_s_mutex);
- g_status = FALSE;
- }
- pthread_mutex_unlock(&g_s_mutex);
-}
-
-static void mm_app_live_notify_cb(mm_camera_super_buf_t *bufs,
- void *user_data)
-{
-
- int rc;
- int i = 0;
- mm_camera_buf_def_t *main_frame = NULL;
- mm_camera_app_obj_t *pme = NULL;
- CDBG("%s: BEGIN\n", __func__);
-
- pme = (mm_camera_app_obj_t *)user_data;
-
- CDBG("%s : total streams = %d",__func__,bufs->num_bufs);
- main_frame = bufs->bufs[0];
- //thumb_frame = bufs->bufs[1];
-
- CDBG("mainframe frame_idx = %d fd = %d frame length = %d",main_frame->frame_idx,main_frame->fd,main_frame->frame_len);
- //CDBG("thumnail frame_idx = %d fd = %d frame length = %d",thumb_frame->frame_idx,thumb_frame->fd,thumb_frame->frame_len);
-
- //dumpFrameToFile(main_frame->frame,pme->dim.picture_width,pme->dim.picture_height,"main", 1);
-
- dumpFrameToFile(main_frame,pme->dim.picture_width,pme->dim.picture_height,"liveshot_main", 1,"yuv");
-
- if (MM_CAMERA_OK != pme->cam->ops->qbuf(pme->cam->camera_handle,pme->ch_id,main_frame)) {
- CDBG_ERROR("%s: Failed in thumbnail Qbuf\n", __func__);
- }
- mm_stream_invalid_cache(pme,main_frame);
- /*if(MM_CAMERA_OK != pme->cam->ops->qbuf(pme->cam->camera_handle,pme->ch_id,thumb_frame))
- {
- CDBG_ERROR("%s: Failed in thumbnail Qbuf\n", __func__);
- }*/
-
- mm_app_snapshot_done();
- CDBG("%s: END\n", __func__);
-
-
-}
-
-int mm_app_prepare_live_snapshot(int cam_id)
-{
- int rc = 0;
- uint32_t stream[1];
- mm_camera_bundle_attr_t attr;
- int value = 0;
-
- mm_camera_app_obj_t *pme = mm_app_get_cam_obj(cam_id);
- CDBG("%s:BEGIN, cam_id=%d\n",__func__,cam_id);
-
- stream[0] = pme->stream[MM_CAMERA_SNAPSHOT_MAIN].id;
- //stream[1] = pme->stream[MM_CAMERA_PREVIEW].id; //Need to clarify
-
- 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->set_parm(
- pme->cam->camera_handle,MM_CAMERA_PARM_FULL_LIVESHOT, (void *)&value))) {
- CDBG_ERROR("%s: set dimension err=%d\n", __func__, rc);
- }
-
- if (MM_CAMERA_OK != (rc = pme->cam->ops->init_stream_bundle(
- pme->cam->camera_handle,pme->ch_id,mm_app_live_notify_cb,pme,&attr,1,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,
- 1, stream))) {
- CDBG_ERROR("%s:start_streams err=%d\n", __func__, rc);
- rc = -1;
- goto end;
- }
-
-
- end:
- CDBG("%s:END, cam_id=%d\n",__func__,cam_id);
- return rc;
-}
-
-int mm_app_unprepare_live_snapshot(int cam_id)
-{
- int rc = 0;
- uint32_t stream[2];
-
- mm_camera_app_obj_t *pme = mm_app_get_cam_obj(cam_id);
- CDBG("%s:BEGIN, cam_id=%d\n",__func__,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__);
- return -1;
- }
-
- 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__);
- return -1;
- }
- 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_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_picture_zsl(int cam_id)
-{
- int rc = MM_CAMERA_OK;
- int value = 1;
- int op_mode;
-
- mm_camera_app_obj_t *pme = mm_app_get_cam_obj(cam_id);
-
- CDBG("%s: Take picture ZSL",__func__);
-
- 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);
- goto end;
- }
-
- CDBG("%s: Start ZSL Preview",__func__);
-
- end:
- CDBG("%s: END, rc=%d\n", __func__, rc);
- return rc;
-}
-
-int mm_app_take_picture_yuv(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_snapshot(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_snapshot(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_zsl(int cam_id)
-{
- int rc = MM_CAMERA_OK;
-
- 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_zsl(cam_id)) {
- CDBG_ERROR("%s: Cannot switch to camera mode\n", __func__);
- return -1;
- }
- break;
- case CAMERA_STATE_SNAPSHOT:
- default:
- CDBG("%s: Cannot normal pciture in record mode\n", __func__);
- break;
- }
- } else if (pme->cam_mode == CAMERA_MODE) {
- switch (pme->cam_state) {
- case CAMERA_STATE_PREVIEW:
- mm_app_open_zsl(cam_id);
- break;
-
- case CAMERA_STATE_SNAPSHOT:
- case CAMERA_STATE_RECORD:
- default:
- CDBG("%s: Cannot normal pciture in record mode\n", __func__);
- break;
- }
- }
-
- if (pme->cam_mode == ZSL_MODE && pme->cam_state == CAMERA_STATE_PREVIEW) {
- mm_app_take_picture_zsl(cam_id);
- }
- return rc;
-}
-
-int mm_app_take_picture(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 : 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_yuv(cam_id);
- }
- 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;
-}
-