summaryrefslogtreecommitdiffstats
path: root/libcamera/SecCamera.cpp
diff options
context:
space:
mode:
authorJeong-Seok Yang <jseok.yang@samsung.com>2010-09-19 21:17:26 -0700
committerSimon Wilson <simonwilson@google.com>2010-09-21 16:11:49 -0700
commit26932dec9142f3e1ac3a3648f68aee34c492756f (patch)
tree2c9624be27932d9d234a23d2022d2622664736df /libcamera/SecCamera.cpp
parent16c0970274f534702931eadb0e5de9768b19482a (diff)
downloaddevice_samsung_crespo-26932dec9142f3e1ac3a3648f68aee34c492756f.zip
device_samsung_crespo-26932dec9142f3e1ac3a3648f68aee34c492756f.tar.gz
device_samsung_crespo-26932dec9142f3e1ac3a3648f68aee34c492756f.tar.bz2
libcamera: Clean up code
Removed inconsistent coding style. Aligned better. Change-Id: Ib6fa351cc39ede6881ed4937594689246b87bca8 Signed-off-by: Jeong-Seok Yang <jseok.yang@samsung.com>
Diffstat (limited to 'libcamera/SecCamera.cpp')
-rw-r--r--[-rwxr-xr-x]libcamera/SecCamera.cpp5060
1 files changed, 2432 insertions, 2628 deletions
diff --git a/libcamera/SecCamera.cpp b/libcamera/SecCamera.cpp
index 27f7aee..ad9c1c2 100755..100644
--- a/libcamera/SecCamera.cpp
+++ b/libcamera/SecCamera.cpp
@@ -16,12 +16,12 @@
/*
************************************
-* Filename: SecCamera.cpp
+* Filename: SecCamera.cpp
* Author: Sachin P. Kamat
* Purpose: This file interacts with the Camera and JPEG drivers.
*************************************
*/
-
+
//#define LOG_NDEBUG 0
#define LOG_TAG "SecCamera"
#define ADD_THUMB_IMG 1
@@ -43,27 +43,25 @@ using namespace android;
#ifdef BOARD_USES_SDTV
#include "utils/Timers.h"
//#define MEASURE_DURATION_TVOUT
-sp<TvOut> mtvoutcamera;
-static bool suspendTvInit = false ;
+sp<TvOut> mtvoutcamera;
+static bool suspendTvInit = false;
#define TVOUT_RESUME_TIME 4
#endif
//#define PERFORMANCE //Uncomment to measure performance
//#define DUMP_YUV //Uncomment to take a dump of YUV frame during capture
-#define CHECK(return_value) \
- if(return_value < 0) \
- { \
- LOGE("%s::%d fail. errno: %s\n", __func__,__LINE__, strerror(errno)); \
- return -1; \
- } \
+#define CHECK(return_value) \
+ if (return_value < 0) { \
+ LOGE("%s::%d fail. errno: %s\n", __func__,__LINE__, strerror(errno)); \
+ return -1; \
+ }
-#define CHECK_PTR(return_value) \
- if(return_value < 0) \
- { \
- LOGE("%s::%d fail\n", __func__,__LINE__); \
- return NULL; \
- } \
+#define CHECK_PTR(return_value) \
+ if (return_value < 0) { \
+ LOGE("%s::%d fail\n", __func__,__LINE__); \
+ return NULL; \
+ }
#define ALIGN_TO_32B(x) ((((x) + (1 << 5) - 1) >> 5) << 5)
#define ALIGN_TO_128B(x) ((((x) + (1 << 7) - 1) >> 7) << 7)
@@ -79,590 +77,573 @@ static struct timeval time_stop;
unsigned long measure_time(struct timeval *start, struct timeval *stop)
{
+ unsigned long sec, usec, time;
- unsigned long sec, usec, time;
-
- sec = stop->tv_sec - start->tv_sec;
+ sec = stop->tv_sec - start->tv_sec;
- if (stop->tv_usec >= start->tv_usec) {
- usec = stop->tv_usec - start->tv_usec;
- } else {
- usec = stop->tv_usec + 1000000 - start->tv_usec;
- sec--;
- }
+ if (stop->tv_usec >= start->tv_usec) {
+ usec = stop->tv_usec - start->tv_usec;
+ } else {
+ usec = stop->tv_usec + 1000000 - start->tv_usec;
+ sec--;
+ }
- time = (sec * 1000000) + usec;
+ time = (sec * 1000000) + usec;
- return time;
+ return time;
}
static inline unsigned long check_performance()
{
- unsigned long time = 0;
- static unsigned long max=0, min=0xffffffff;
+ unsigned long time = 0;
+ static unsigned long max = 0;
+ static unsigned long min = 0xffffffff;
- if(time_start.tv_sec == 0 && time_start.tv_usec == 0) {
- gettimeofday(&time_start, NULL);
- } else {
- gettimeofday(&time_stop, NULL);
- time = measure_time(&time_start, &time_stop);
- if(max < time) max = time;
- if(min > time) min = time;
- LOGV("Interval: %lu us (%2.2lf fps), min:%2.2lf fps, max:%2.2lf fps\n", time, 1000000.0/time, 1000000.0/max, 1000000.0/min);
- gettimeofday(&time_start, NULL);
- }
+ if (time_start.tv_sec == 0 && time_start.tv_usec == 0) {
+ gettimeofday(&time_start, NULL);
+ } else {
+ gettimeofday(&time_stop, NULL);
+ time = measure_time(&time_start, &time_stop);
+ if (max < time) max = time;
+ if (min > time) min = time;
+ LOGV("Interval: %lu us (%2.2lf fps), min:%2.2lf fps, max:%2.2lf fps\n",
+ time, 1000000.0 / time, 1000000.0 / max, 1000000.0 / min);
+ gettimeofday(&time_start, NULL);
+ }
- return time;
+ return time;
}
static int close_buffers(struct fimc_buffer *buffers)
{
- int i;
+ int i;
- for (i = 0; i < MAX_BUFFERS; i++) {
- if (buffers[i].start)
- {
- munmap(buffers[i].start, buffers[i].length);
- //LOGV("munmap():virt. addr[%d]: 0x%x size = %d\n", i, (unsigned int) buffers[i].start, buffers[i].length);
- buffers[i].start = NULL;
- }
- }
+ for (i = 0; i < MAX_BUFFERS; i++) {
+ if (buffers[i].start) {
+ munmap(buffers[i].start, buffers[i].length);
+ //LOGV("munmap():virt. addr[%d]: 0x%x size = %d\n", i, (unsigned int) buffers[i].start, buffers[i].length);
+ buffers[i].start = NULL;
+ }
+ }
- return 0;
+ return 0;
}
static int get_pixel_depth(unsigned int fmt)
{
- int depth = 0;
-
- switch (fmt) {
- case V4L2_PIX_FMT_NV12:
- depth = 12;
- break;
- case V4L2_PIX_FMT_NV12T:
- depth = 12;
- break;
- case V4L2_PIX_FMT_NV21:
- depth = 12;
- break;
- case V4L2_PIX_FMT_YUV420:
- depth = 12;
- break;
-
- case V4L2_PIX_FMT_RGB565:
- case V4L2_PIX_FMT_YUYV:
- case V4L2_PIX_FMT_YVYU:
- case V4L2_PIX_FMT_UYVY:
- case V4L2_PIX_FMT_VYUY:
- case V4L2_PIX_FMT_NV16:
- case V4L2_PIX_FMT_NV61:
- case V4L2_PIX_FMT_YUV422P:
- depth = 16;
- break;
-
- case V4L2_PIX_FMT_RGB32:
- depth = 32;
- break;
- }
-
- return depth;
-}
-
-#define ALIGN_W(x) ((x+0x7F)&(~0x7F)) // Set as multiple of 128
-#define ALIGN_H(x) ((x+0x1F)&(~0x1F)) // Set as multiple of 32
-#define ALIGN_BUF(x) ((x+0x1FFF)&(~0x1FFF)) // Set as multiple of 8K
+ int depth = 0;
+
+ switch (fmt) {
+ case V4L2_PIX_FMT_NV12:
+ depth = 12;
+ break;
+ case V4L2_PIX_FMT_NV12T:
+ depth = 12;
+ break;
+ case V4L2_PIX_FMT_NV21:
+ depth = 12;
+ break;
+ case V4L2_PIX_FMT_YUV420:
+ depth = 12;
+ break;
+
+ case V4L2_PIX_FMT_RGB565:
+ case V4L2_PIX_FMT_YUYV:
+ case V4L2_PIX_FMT_YVYU:
+ case V4L2_PIX_FMT_UYVY:
+ case V4L2_PIX_FMT_VYUY:
+ case V4L2_PIX_FMT_NV16:
+ case V4L2_PIX_FMT_NV61:
+ case V4L2_PIX_FMT_YUV422P:
+ depth = 16;
+ break;
+
+ case V4L2_PIX_FMT_RGB32:
+ depth = 32;
+ break;
+ }
+
+ return depth;
+}
+
+#define ALIGN_W(x) (((x) + 0x7F) & (~0x7F)) // Set as multiple of 128
+#define ALIGN_H(x) (((x) + 0x1F) & (~0x1F)) // Set as multiple of 32
+#define ALIGN_BUF(x) (((x) + 0x1FFF)& (~0x1FFF)) // Set as multiple of 8K
static int init_yuv_buffers(struct fimc_buffer *buffers, int width, int height, unsigned int fmt)
{
- int i, len;
-
- len = (width * height * get_pixel_depth(fmt)) / 8;
-
-
- for (i = 0; i < MAX_BUFFERS; i++)
- {
- if(fmt==V4L2_PIX_FMT_NV12T)
- {
- buffers[i].start = NULL;
- buffers[i].length = ALIGN_BUF(ALIGN_W(width) * ALIGN_H(height))+ ALIGN_BUF(ALIGN_W(width) * ALIGN_H(height/2));
- }
- else
- {
- buffers[i].start = NULL;
- buffers[i].length = len;
- }
- }
+ int i, len;
+
+ len = (width * height * get_pixel_depth(fmt)) / 8;
+
+ for (i = 0; i < MAX_BUFFERS; i++) {
+ if (fmt==V4L2_PIX_FMT_NV12T) {
+ buffers[i].start = NULL;
+ buffers[i].length = ALIGN_BUF(ALIGN_W(width) * ALIGN_H(height)) +
+ ALIGN_BUF(ALIGN_W(width) * ALIGN_H(height / 2));
+ } else {
+ buffers[i].start = NULL;
+ buffers[i].length = len;
+ }
+ }
- return 0;
+ return 0;
}
static int fimc_poll(struct pollfd *events)
{
- int ret;
+ int ret;
- ret = poll(events, 1, 5000);
- if (ret < 0) {
- LOGE("ERR(%s):poll error\n", __FUNCTION__);
- return ret;
- }
+ ret = poll(events, 1, 5000);
+ if (ret < 0) {
+ LOGE("ERR(%s):poll error\n", __func__);
+ return ret;
+ }
- if (ret == 0) {
- LOGE("ERR(%s):No data in 5 secs..\n", __FUNCTION__);
- return ret;
- }
+ if (ret == 0) {
+ LOGE("ERR(%s):No data in 5 secs..\n", __func__);
+ return ret;
+ }
- return ret;
+ return ret;
}
#ifdef SWP1_CAMERA_ADD_ADVANCED_FUNCTION
static int fimc_esd_poll(struct pollfd *events)
{
- int ret;
+ int ret;
- ret = poll(events, 1, 1000);
+ ret = poll(events, 1, 1000);
- if (ret < 0) {
- LOGE("ERR(%s):poll error\n", __FUNCTION__);
- return ret;
- }
+ if (ret < 0) {
+ LOGE("ERR(%s):poll error\n", __func__);
+ return ret;
+ }
- if (ret == 0) {
- LOGE("ERR(%s):No data in 1 secs.. Camera Device Reset \n", __FUNCTION__);
- return ret;
- }
+ if (ret == 0) {
+ LOGE("ERR(%s):No data in 1 secs.. Camera Device Reset \n", __func__);
+ return ret;
+ }
- return ret;
+ return ret;
}
-#endif /* SWP1_CAMERA_ADD_ADVANCED_FUNCTION */
+#endif /* SWP1_CAMERA_ADD_ADVANCED_FUNCTION */
#ifdef DUMP_YUV
static int save_yuv(struct fimc_buffer *m_buffers_c, int width, int height, int depth, int index, int frame_count)
{
- FILE *yuv_fp = NULL;
- char filename[100], *buffer = NULL;
+ FILE *yuv_fp = NULL;
+ char filename[100], *buffer = NULL;
- /* file create/open, note to "wb" */
- yuv_fp = fopen("/data/main.yuv", "wb");
- if (yuv_fp==NULL)
- {
- LOGE("Save YUV] file open error");
- return -1;
- }
+ /* file create/open, note to "wb" */
+ yuv_fp = fopen("/data/main.yuv", "wb");
+ if (yuv_fp == NULL) {
+ LOGE("Save YUV] file open error");
+ return -1;
+ }
- buffer = (char *) malloc(m_buffers_c[index].length);
- if(buffer == NULL)
- {
- LOGE("Save YUV] buffer alloc failed");
- if(yuv_fp) fclose(yuv_fp);
- return -1;
- }
+ buffer = (char *) malloc(m_buffers_c[index].length);
+ if (buffer == NULL) {
+ LOGE("Save YUV] buffer alloc failed");
+ if (yuv_fp) fclose(yuv_fp);
+ return -1;
+ }
- memcpy(buffer, m_buffers_c[index].start, m_buffers_c[index].length);
+ memcpy(buffer, m_buffers_c[index].start, m_buffers_c[index].length);
- fflush(stdout);
+ fflush(stdout);
- fwrite(buffer, 1, m_buffers_c[index].length, yuv_fp);
+ fwrite(buffer, 1, m_buffers_c[index].length, yuv_fp);
- fflush(yuv_fp);
+ fflush(yuv_fp);
- if(yuv_fp)
- fclose(yuv_fp);
- if(buffer)
- free(buffer);
+ if (yuv_fp)
+ fclose(yuv_fp);
+ if (buffer)
+ free(buffer);
- return 0;
+ return 0;
}
#endif //DUMP_YUV
static int fimc_v4l2_querycap(int fp)
{
- struct v4l2_capability cap;
- int ret = 0;
+ struct v4l2_capability cap;
+ int ret = 0;
- ret = ioctl(fp, VIDIOC_QUERYCAP, &cap);
+ ret = ioctl(fp, VIDIOC_QUERYCAP, &cap);
- if (ret < 0) {
- LOGE("ERR(%s):VIDIOC_QUERYCAP failed\n", __FUNCTION__);
- return -1;
- }
+ if (ret < 0) {
+ LOGE("ERR(%s):VIDIOC_QUERYCAP failed\n", __func__);
+ return -1;
+ }
- if (!(cap.capabilities & V4L2_CAP_VIDEO_CAPTURE)) {
- LOGE("ERR(%s):no capture devices\n", __FUNCTION__);
- return -1;
- }
+ if (!(cap.capabilities & V4L2_CAP_VIDEO_CAPTURE)) {
+ LOGE("ERR(%s):no capture devices\n", __func__);
+ return -1;
+ }
- return ret;
+ return ret;
}
static int fimc_v4l2_enuminput(int fp, int index)
{
- struct v4l2_input input;
+ struct v4l2_input input;
- input.index = index;
- if(ioctl(fp, VIDIOC_ENUMINPUT, &input) != 0)
- {
- LOGE("ERR(%s):No matching index found\n", __FUNCTION__);
- return -1;
- }
- LOGI("Name of input channel[%d] is %s\n", input.index, input.name);
+ input.index = index;
+ if (ioctl(fp, VIDIOC_ENUMINPUT, &input) != 0) {
+ LOGE("ERR(%s):No matching index found\n", __func__);
+ return -1;
+ }
+ LOGI("Name of input channel[%d] is %s\n", input.index, input.name);
- return 0;
+ return 0;
}
static int fimc_v4l2_s_input(int fp, int index)
{
- struct v4l2_input input;
- int ret;
+ struct v4l2_input input;
+ int ret;
- input.index = index;
+ input.index = index;
- ret = ioctl(fp, VIDIOC_S_INPUT, &input);
- if (ret < 0) {
- LOGE("ERR(%s):VIDIOC_S_INPUT failed\n", __FUNCTION__);
- return ret;
- }
+ ret = ioctl(fp, VIDIOC_S_INPUT, &input);
+ if (ret < 0) {
+ LOGE("ERR(%s):VIDIOC_S_INPUT failed\n", __func__);
+ return ret;
+ }
- return ret;
+ return ret;
}
static int fimc_v4l2_s_fmt(int fp, int width, int height, unsigned int fmt, int flag_capture)
{
- struct v4l2_format v4l2_fmt;
- struct v4l2_pix_format pixfmt;
- int ret;
+ struct v4l2_format v4l2_fmt;
+ struct v4l2_pix_format pixfmt;
+ int ret;
- v4l2_fmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
+ v4l2_fmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
- memset(&pixfmt, 0, sizeof(pixfmt));
+ memset(&pixfmt, 0, sizeof(pixfmt));
- pixfmt.width = width;
- pixfmt.height = height;
- pixfmt.pixelformat = fmt;
-
- pixfmt.sizeimage = (width * height * get_pixel_depth(fmt)) / 8;
+ pixfmt.width = width;
+ pixfmt.height = height;
+ pixfmt.pixelformat = fmt;
- pixfmt.field = V4L2_FIELD_NONE;
+ pixfmt.sizeimage = (width * height * get_pixel_depth(fmt)) / 8;
- v4l2_fmt.fmt.pix = pixfmt;
+ pixfmt.field = V4L2_FIELD_NONE;
- /* Set up for capture */
- ret = ioctl(fp, VIDIOC_S_FMT, &v4l2_fmt);
- if (ret < 0) {
- LOGE("ERR(%s):VIDIOC_S_FMT failed\n", __FUNCTION__);
- return -1;
- }
+ v4l2_fmt.fmt.pix = pixfmt;
- return 0;
+ /* Set up for capture */
+ ret = ioctl(fp, VIDIOC_S_FMT, &v4l2_fmt);
+ if (ret < 0) {
+ LOGE("ERR(%s):VIDIOC_S_FMT failed\n", __func__);
+ return -1;
+ }
+
+ return 0;
}
static int fimc_v4l2_s_fmt_cap(int fp, int width, int height, unsigned int fmt)
{
- struct v4l2_format v4l2_fmt;
- struct v4l2_pix_format pixfmt;
- int ret;
-
- memset(&pixfmt, 0, sizeof(pixfmt));
+ struct v4l2_format v4l2_fmt;
+ struct v4l2_pix_format pixfmt;
+ int ret;
- v4l2_fmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
+ memset(&pixfmt, 0, sizeof(pixfmt));
- pixfmt.width = width;
- pixfmt.height = height;
- pixfmt.pixelformat = fmt;
- if (fmt == V4L2_PIX_FMT_JPEG){
- pixfmt.colorspace = V4L2_COLORSPACE_JPEG;
- }
+ v4l2_fmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
- pixfmt.sizeimage = (width * height * get_pixel_depth(fmt)) / 8;
+ pixfmt.width = width;
+ pixfmt.height = height;
+ pixfmt.pixelformat = fmt;
+ if (fmt == V4L2_PIX_FMT_JPEG) {
+ pixfmt.colorspace = V4L2_COLORSPACE_JPEG;
+ }
- v4l2_fmt.fmt.pix = pixfmt;
+ pixfmt.sizeimage = (width * height * get_pixel_depth(fmt)) / 8;
- //LOGE("ori_w %d, ori_h %d, w %d, h %d\n", width, height, v4l2_fmt.fmt.pix.width, v4l2_fmt.fmt.pix.height);
+ v4l2_fmt.fmt.pix = pixfmt;
- /* Set up for capture */
- ret = ioctl(fp, VIDIOC_S_FMT, &v4l2_fmt);
- if (ret < 0) {
- LOGE("ERR(%s):VIDIOC_S_FMT failed\n", __FUNCTION__);
- return ret;
- }
+ //LOGE("ori_w %d, ori_h %d, w %d, h %d\n", width, height, v4l2_fmt.fmt.pix.width, v4l2_fmt.fmt.pix.height);
+ /* Set up for capture */
+ ret = ioctl(fp, VIDIOC_S_FMT, &v4l2_fmt);
+ if (ret < 0) {
+ LOGE("ERR(%s):VIDIOC_S_FMT failed\n", __func__);
return ret;
+ }
+
+ return ret;
}
static int fimc_v4l2_enum_fmt(int fp, unsigned int fmt)
{
- struct v4l2_fmtdesc fmtdesc;
- int found = 0;
+ struct v4l2_fmtdesc fmtdesc;
+ int found = 0;
- fmtdesc.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
- fmtdesc.index = 0;
+ fmtdesc.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
+ fmtdesc.index = 0;
- while (ioctl(fp, VIDIOC_ENUM_FMT, &fmtdesc) == 0) {
- if (fmtdesc.pixelformat == fmt) {
- LOGD("passed fmt = %d found pixel format[%d]: %s\n", fmt, fmtdesc.index, fmtdesc.description);
- found = 1;
- break;
- }
-
- fmtdesc.index++;
+ while (ioctl(fp, VIDIOC_ENUM_FMT, &fmtdesc) == 0) {
+ if (fmtdesc.pixelformat == fmt) {
+ LOGD("passed fmt = %d found pixel format[%d]: %s\n", fmt, fmtdesc.index, fmtdesc.description);
+ found = 1;
+ break;
}
- if (!found) {
- LOGE("unsupported pixel format\n");
- return -1;
- }
+ fmtdesc.index++;
+ }
- return 0;
+ if (!found) {
+ LOGE("unsupported pixel format\n");
+ return -1;
+ }
+
+ return 0;
}
static int fimc_v4l2_reqbufs(int fp, enum v4l2_buf_type type, int nr_bufs)
{
- struct v4l2_requestbuffers req;
- int ret;
+ struct v4l2_requestbuffers req;
+ int ret;
- req.count = nr_bufs;
- req.type = type;
- req.memory = V4L2_MEMORY_MMAP;
+ req.count = nr_bufs;
+ req.type = type;
+ req.memory = V4L2_MEMORY_MMAP;
- ret = ioctl(fp, VIDIOC_REQBUFS, &req);
- if(ret < 0) {
- LOGE("ERR(%s):VIDIOC_REQBUFS failed\n", __FUNCTION__);
- return -1;
- }
+ ret = ioctl(fp, VIDIOC_REQBUFS, &req);
+ if (ret < 0) {
+ LOGE("ERR(%s):VIDIOC_REQBUFS failed\n", __func__);
+ return -1;
+ }
- return req.count;
+ return req.count;
}
static int fimc_v4l2_querybuf(int fp, struct fimc_buffer *buffers, enum v4l2_buf_type type, int nr_frames)
{
- struct v4l2_buffer v4l2_buf;
- int i, ret;
-
- for(i = 0; i < nr_frames; i++)
- {
- v4l2_buf.type = type;
- v4l2_buf.memory = V4L2_MEMORY_MMAP;
- v4l2_buf.index = i;
-
- ret = ioctl(fp , VIDIOC_QUERYBUF, &v4l2_buf);
- if(ret < 0)
- {
- LOGE("ERR(%s):VIDIOC_QUERYBUF failed\n", __FUNCTION__);
- return -1;
- }
-
- if(nr_frames == 1)
- {
- buffers[i].length = v4l2_buf.length;
- if ((buffers[i].start = (char *) mmap(0, v4l2_buf.length, \
- PROT_READ | PROT_WRITE, MAP_SHARED, \
- fp, v4l2_buf.m.offset)) < 0)
- {
- LOGE("%s %d] mmap() failed\n",__FUNCTION__, __LINE__);
- return -1;
- }
-
- //LOGV("buffers[%d].start = %p v4l2_buf.length = %d", i, buffers[i].start, v4l2_buf.length);
- }
- else
- {
-
-#if defined DUMP_YUV || defined (SEND_YUV_RECORD_DATA)
- buffers[i].length = v4l2_buf.length;
- if ((buffers[i].start = (char *) mmap(0, v4l2_buf.length, \
- PROT_READ | PROT_WRITE, MAP_SHARED, \
- fp, v4l2_buf.m.offset)) < 0)
- {
- LOGE("%s %d] mmap() failed\n",__FUNCTION__, __LINE__);
- return -1;
- }
-
- //LOGV("buffers[%d].start = %p v4l2_buf.length = %d", i, buffers[i].start, v4l2_buf.length);
-#endif
- }
+ struct v4l2_buffer v4l2_buf;
+ int i, ret;
+
+ for (i = 0; i < nr_frames; i++) {
+ v4l2_buf.type = type;
+ v4l2_buf.memory = V4L2_MEMORY_MMAP;
+ v4l2_buf.index = i;
+
+ ret = ioctl(fp , VIDIOC_QUERYBUF, &v4l2_buf);
+ if (ret < 0) {
+ LOGE("ERR(%s):VIDIOC_QUERYBUF failed\n", __func__);
+ return -1;
+ }
+
+ if (nr_frames == 1) {
+ buffers[i].length = v4l2_buf.length;
+ if ((buffers[i].start = (char *)mmap(0, v4l2_buf.length, PROT_READ | PROT_WRITE, MAP_SHARED,
+ fp, v4l2_buf.m.offset)) < 0) {
+ LOGE("%s %d] mmap() failed\n",__func__, __LINE__);
+ return -1;
+ }
- }
+ //LOGV("buffers[%d].start = %p v4l2_buf.length = %d", i, buffers[i].start, v4l2_buf.length);
+ } else {
- return 0;
+#if defined DUMP_YUV || defined (SEND_YUV_RECORD_DATA)
+ buffers[i].length = v4l2_buf.length;
+ if ((buffers[i].start = (char *)mmap(0, v4l2_buf.length, PROT_READ | PROT_WRITE, MAP_SHARED,
+ fp, v4l2_buf.m.offset)) < 0) {
+ LOGE("%s %d] mmap() failed\n",__func__, __LINE__);
+ return -1;
+ }
+
+ //LOGV("buffers[%d].start = %p v4l2_buf.length = %d", i, buffers[i].start, v4l2_buf.length);
+#endif
+ }
+ }
+
+ return 0;
}
static int fimc_v4l2_streamon(int fp)
{
- enum v4l2_buf_type type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
- int ret;
+ enum v4l2_buf_type type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
+ int ret;
- ret = ioctl(fp, VIDIOC_STREAMON, &type);
- if (ret < 0) {
- LOGE("ERR(%s):VIDIOC_STREAMON failed\n", __FUNCTION__);
- return ret;
- }
+ ret = ioctl(fp, VIDIOC_STREAMON, &type);
+ if (ret < 0) {
+ LOGE("ERR(%s):VIDIOC_STREAMON failed\n", __func__);
+ return ret;
+ }
- return ret;
+ return ret;
}
static int fimc_v4l2_streamoff(int fp)
{
- enum v4l2_buf_type type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
- int ret;
+ enum v4l2_buf_type type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
+ int ret;
#ifdef SWP1_CAMERA_ADD_ADVANCED_FUNCTION
- LOGE("%s()", __FUNCTION__);
+ LOGE("%s()", __func__);
#endif
- ret = ioctl(fp, VIDIOC_STREAMOFF, &type);
- if (ret < 0) {
- LOGE("ERR(%s):VIDIOC_STREAMOFF failed\n", __FUNCTION__);
- return ret;
- }
+ ret = ioctl(fp, VIDIOC_STREAMOFF, &type);
+ if (ret < 0) {
+ LOGE("ERR(%s):VIDIOC_STREAMOFF failed\n", __func__);
+ return ret;
+ }
- return ret;
+ return ret;
}
static int fimc_v4l2_qbuf(int fp, int index)
{
- struct v4l2_buffer v4l2_buf;
- int ret;
+ struct v4l2_buffer v4l2_buf;
+ int ret;
- v4l2_buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
- v4l2_buf.memory = V4L2_MEMORY_MMAP;
- v4l2_buf.index = index;
+ v4l2_buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
+ v4l2_buf.memory = V4L2_MEMORY_MMAP;
+ v4l2_buf.index = index;
- ret = ioctl(fp, VIDIOC_QBUF, &v4l2_buf);
- if (ret < 0) {
- LOGE("ERR(%s):VIDIOC_QBUF failed\n", __FUNCTION__);
- return ret;
- }
+ ret = ioctl(fp, VIDIOC_QBUF, &v4l2_buf);
+ if (ret < 0) {
+ LOGE("ERR(%s):VIDIOC_QBUF failed\n", __func__);
+ return ret;
+ }
- return 0;
+ return 0;
}
static int fimc_v4l2_dqbuf(int fp)
{
- struct v4l2_buffer v4l2_buf;
- int ret;
+ struct v4l2_buffer v4l2_buf;
+ int ret;
- v4l2_buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
- v4l2_buf.memory = V4L2_MEMORY_MMAP;
+ v4l2_buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
+ v4l2_buf.memory = V4L2_MEMORY_MMAP;
- ret = ioctl(fp, VIDIOC_DQBUF, &v4l2_buf);
- if (ret < 0) {
- LOGE("ERR(%s):VIDIOC_DQBUF failed\n", __FUNCTION__);
- return ret;
- }
+ ret = ioctl(fp, VIDIOC_DQBUF, &v4l2_buf);
+ if (ret < 0) {
+ LOGE("ERR(%s):VIDIOC_DQBUF failed\n", __func__);
+ return ret;
+ }
- return v4l2_buf.index;
+ return v4l2_buf.index;
}
static int fimc_v4l2_g_ctrl(int fp, unsigned int id)
{
- struct v4l2_control ctrl;
- int ret;
+ struct v4l2_control ctrl;
+ int ret;
- ctrl.id = id;
+ ctrl.id = id;
- ret = ioctl(fp, VIDIOC_G_CTRL, &ctrl);
- if (ret < 0) {
- LOGE("ERR(%s):VIDIOC_G_CTRL failed\n", __FUNCTION__);
- return ret;
- }
+ ret = ioctl(fp, VIDIOC_G_CTRL, &ctrl);
+ if (ret < 0) {
+ LOGE("ERR(%s):VIDIOC_G_CTRL failed\n", __func__);
+ return ret;
+ }
- return ctrl.value;
+ return ctrl.value;
}
static int fimc_v4l2_s_ctrl(int fp, unsigned int id, unsigned int value)
{
- struct v4l2_control ctrl;
- int ret;
+ struct v4l2_control ctrl;
+ int ret;
- ctrl.id = id;
- ctrl.value = value;
+ ctrl.id = id;
+ ctrl.value = value;
- ret = ioctl(fp, VIDIOC_S_CTRL, &ctrl);
- if (ret < 0) {
- LOGE("ERR(%s):VIDIOC_S_CTRL failed, ret: %d\n", __FUNCTION__, ret);
- return ret;
- }
+ ret = ioctl(fp, VIDIOC_S_CTRL, &ctrl);
+ if (ret < 0) {
+ LOGE("ERR(%s):VIDIOC_S_CTRL failed, ret: %d\n", __func__, ret);
+ return ret;
+ }
- return ctrl.value;
+ return ctrl.value;
}
#ifdef SWP1_CAMERA_ADD_ADVANCED_FUNCTION
-static int fimc_v4l2_s_ext_ctrl(int fp, unsigned int id, void * value)
+static int fimc_v4l2_s_ext_ctrl(int fp, unsigned int id, void *value)
{
- struct v4l2_ext_controls ctrls;
- struct v4l2_ext_control ctrl;
- int ret;
+ struct v4l2_ext_controls ctrls;
+ struct v4l2_ext_control ctrl;
+ int ret;
- ctrl.id = id;
- ctrl.reserved = value;
+ ctrl.id = id;
+ ctrl.reserved = value;
- ctrls.ctrl_class = V4L2_CTRL_CLASS_CAMERA;
- ctrls.count = 1;
- ctrls.controls = &ctrl;
+ ctrls.ctrl_class = V4L2_CTRL_CLASS_CAMERA;
+ ctrls.count = 1;
+ ctrls.controls = &ctrl;
- ret = ioctl(fp, VIDIOC_S_EXT_CTRLS, &ctrls);
- if (ret < 0)
- LOGE("ERR(%s):VIDIOC_S_EXT_CTRLS failed\n", __FUNCTION__);
-
- return ret;
+ ret = ioctl(fp, VIDIOC_S_EXT_CTRLS, &ctrls);
+ if (ret < 0)
+ LOGE("ERR(%s):VIDIOC_S_EXT_CTRLS failed\n", __func__);
+
+ return ret;
}
#endif
static int fimc_v4l2_g_parm(int fp)
{
- struct v4l2_streamparm stream;
- int ret;
-
- stream.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
+ struct v4l2_streamparm stream;
+ int ret;
- ret = ioctl(fp, VIDIOC_G_PARM, &stream);
- if (ret < 0) {
- LOGE("ERR(%s):VIDIOC_G_PARM failed\n", __FUNCTION__);
- return -1;
- }
+ stream.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
-// LOGV("timeperframe: numerator %d, denominator %d\n", \
- stream.parm.capture.timeperframe.numerator, \
- stream.parm.capture.timeperframe.denominator);
-
- return 0;
+ ret = ioctl(fp, VIDIOC_G_PARM, &stream);
+ if (ret < 0) {
+ LOGE("ERR(%s):VIDIOC_G_PARM failed\n", __func__);
+ return -1;
+ }
+/*
+ LOGV("timeperframe: numerator %d, denominator %d\n",
+ stream.parm.capture.timeperframe.numerator,
+ stream.parm.capture.timeperframe.denominator);
+*/
+ return 0;
}
static int fimc_v4l2_s_parm(int fp, int fps_numerator, int fps_denominator)
{
- struct v4l2_streamparm stream;
- int ret;
+ struct v4l2_streamparm stream;
+ int ret;
- stream.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
- stream.parm.capture.capturemode = 0;
- stream.parm.capture.timeperframe.numerator = fps_numerator;
- stream.parm.capture.timeperframe.denominator = fps_denominator;
+ stream.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
+ stream.parm.capture.capturemode = 0;
+ stream.parm.capture.timeperframe.numerator = fps_numerator;
+ stream.parm.capture.timeperframe.denominator = fps_denominator;
- ret = ioctl(fp, VIDIOC_S_PARM, &stream);
- if (ret < 0) {
- LOGE("ERR(%s):VIDIOC_S_PARM failed\n", __FUNCTION__);
- return ret;
- }
+ ret = ioctl(fp, VIDIOC_S_PARM, &stream);
+ if (ret < 0) {
+ LOGE("ERR(%s):VIDIOC_S_PARM failed\n", __func__);
+ return ret;
+ }
- return 0;
+ return 0;
}
#if 0
static int fimc_v4l2_s_parm_ex(int fp, int mode, int no_dma_op) //Kamat: not present in new code
{
- struct v4l2_streamparm stream;
- int ret;
+ struct v4l2_streamparm stream;
+ int ret;
- stream.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
- stream.parm.capture.capturemode = mode;
- if(no_dma_op)
- stream.parm.capture.reserved[0] = 100;
-
- ret = ioctl(fp, VIDIOC_S_PARM, &stream);
- if (ret < 0) {
- LOGE("ERR(%s):VIDIOC_S_PARM_EX failed\n", __FUNCTION__);
- return ret;
- }
+ stream.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
+ stream.parm.capture.capturemode = mode;
+ if (no_dma_op)
+ stream.parm.capture.reserved[0] = 100;
- return 0;
+ ret = ioctl(fp, VIDIOC_S_PARM, &stream);
+ if (ret < 0) {
+ LOGE("ERR(%s):VIDIOC_S_PARM_EX failed\n", __func__);
+ return ret;
+ }
+
+ return 0;
}
#endif
@@ -670,411 +651,389 @@ static int fimc_v4l2_s_parm_ex(int fp, int mode, int no_dma_op) //Kamat: not pre
// Constructor & Destructor
SecCamera::SecCamera() :
- m_focus_mode(1),
- m_iso(0),
- m_camera_id(CAMERA_ID_BACK),
- m_preview_v4lformat(-1),
- m_preview_width (0),
- m_preview_height (0),
- m_preview_max_width (MAX_BACK_CAMERA_PREVIEW_WIDTH),
- m_preview_max_height (MAX_BACK_CAMERA_PREVIEW_HEIGHT),
- m_snapshot_v4lformat(-1),
- m_snapshot_width (0),
- m_snapshot_height (0),
- m_snapshot_max_width (MAX_BACK_CAMERA_SNAPSHOT_WIDTH),
- m_snapshot_max_height (MAX_BACK_CAMERA_SNAPSHOT_HEIGHT),
- m_angle(0),
- m_fps(30),
- m_autofocus(AUTO_FOCUS_ON),
- m_white_balance(WHITE_BALANCE_AUTO),
- m_brightness(BRIGHTNESS_NORMAL),
- m_image_effect(IMAGE_EFFECT_NONE),
- #ifdef SWP1_CAMERA_ADD_ADVANCED_FUNCTION
- m_anti_banding(0),
- m_flash_mode(1),
- m_metering(2),
- m_contrast(2),
- m_saturation(2),
- m_sharpness(2),
- m_wdr(0),
- m_anti_shake(0),
- m_zoom_level(0),
- m_object_tracking(0),
- m_smart_auto(0),
- m_beauty_shot(0),
- m_vintage_mode(1),
- m_face_detect(0),
- m_gps_latitude(0),
- m_gps_longitude(0),
- m_gps_altitude(0),
- m_gps_timestamp(0),
- m_vtmode(0),
- m_sensor_mode(0),
- m_exif_orientation(1),
- m_blur_level(0),
- m_chk_dataline(0),
- m_video_gamma(0),
- m_slow_ae(0),
- #else
- m_image_effect(IMAGE_EFFECT_ORIGINAL),
- #endif
- m_flag_camera_start(0),
- m_jpeg_thumbnail_width (0),
- m_jpeg_thumbnail_height(0),
- m_jpeg_quality(100),
- m_camera_af_flag(-1),
- m_shot_mode(0),
- m_flag_init(0)
-{
- LOGV("%s()", __FUNCTION__);
+ m_focus_mode(1),
+ m_iso(0),
+ m_camera_id(CAMERA_ID_BACK),
+ m_preview_v4lformat(-1),
+ m_preview_width (0),
+ m_preview_height (0),
+ m_preview_max_width (MAX_BACK_CAMERA_PREVIEW_WIDTH),
+ m_preview_max_height (MAX_BACK_CAMERA_PREVIEW_HEIGHT),
+ m_snapshot_v4lformat(-1),
+ m_snapshot_width (0),
+ m_snapshot_height (0),
+ m_snapshot_max_width (MAX_BACK_CAMERA_SNAPSHOT_WIDTH),
+ m_snapshot_max_height (MAX_BACK_CAMERA_SNAPSHOT_HEIGHT),
+ m_angle(0),
+ m_fps(30),
+ m_autofocus(AUTO_FOCUS_ON),
+ m_white_balance(WHITE_BALANCE_AUTO),
+ m_brightness(BRIGHTNESS_NORMAL),
+ m_image_effect(IMAGE_EFFECT_NONE),
+ #ifdef SWP1_CAMERA_ADD_ADVANCED_FUNCTION
+ m_anti_banding(0),
+ m_flash_mode(1),
+ m_metering(2),
+ m_contrast(2),
+ m_saturation(2),
+ m_sharpness(2),
+ m_wdr(0),
+ m_anti_shake(0),
+ m_zoom_level(0),
+ m_object_tracking(0),
+ m_smart_auto(0),
+ m_beauty_shot(0),
+ m_vintage_mode(1),
+ m_face_detect(0),
+ m_gps_latitude(0),
+ m_gps_longitude(0),
+ m_gps_altitude(0),
+ m_gps_timestamp(0),
+ m_vtmode(0),
+ m_sensor_mode(0),
+ m_exif_orientation(1),
+ m_blur_level(0),
+ m_chk_dataline(0),
+ m_video_gamma(0),
+ m_slow_ae(0),
+ #else
+ m_image_effect(IMAGE_EFFECT_ORIGINAL),
+ #endif
+ m_flag_camera_start(0),
+ m_jpeg_thumbnail_width (0),
+ m_jpeg_thumbnail_height(0),
+ m_jpeg_quality(100),
+ m_camera_af_flag(-1),
+ m_shot_mode(0),
+ m_flag_init(0)
+{
+ LOGV("%s()", __func__);
#ifdef BOARD_USES_SDTV
- nsecs_t before1, after1;
+ nsecs_t before1, after1;
-#ifdef MEASURE_DURATION_TVOUT
- before1 = systemTime(SYSTEM_TIME_MONOTONIC);
+#ifdef MEASURE_DURATION_TVOUT
+ before1 = systemTime(SYSTEM_TIME_MONOTONIC);
#endif
- //suspend
- if(mtvoutcamera == 0) {
- mtvoutcamera = TvOut::connect();
- }
- if(mtvoutcamera != 0 )
- {
- if (mtvoutcamera->isEnabled() )
- {
- mtvoutcamera->DisableTvOut() ; // //TvOutSuspend("Tvout is not available! so what can i do, close camera or any other app which uses fimc");
- suspendTvInit = true;
- }
- }
-
-#ifdef MEASURE_DURATION_TVOUT
- after1 = systemTime(SYSTEM_TIME_MONOTONIC);
- LOGD("%s: MEASURE_DURATION_TVOUT duration=%lld", __func__, ns2us(after1-before1));
+ //suspend
+ if (mtvoutcamera == 0) {
+ mtvoutcamera = TvOut::connect();
+ }
+
+ if (mtvoutcamera != 0) {
+ if (mtvoutcamera->isEnabled()) {
+ mtvoutcamera->DisableTvOut();
+ //TvOutSuspend("Tvout is not available! so what can i do, close camera or any other app which uses fimc");
+ suspendTvInit = true;
+ }
+ }
+
+#ifdef MEASURE_DURATION_TVOUT
+ after1 = systemTime(SYSTEM_TIME_MONOTONIC);
+ LOGD("%s: MEASURE_DURATION_TVOUT duration=%lld", __func__, ns2us(after1-before1));
#endif
-#endif
+#endif
}
int SecCamera::flagCreate(void) const
{
- LOGV("%s() : %d", __FUNCTION__, m_flag_init);
- return m_flag_init;
+ LOGV("%s() : %d", __func__, m_flag_init);
+ return m_flag_init;
}
SecCamera::~SecCamera()
{
- LOGV("%s()", __FUNCTION__);
+ LOGV("%s()", __func__);
#ifdef BOARD_USES_SDTV
- nsecs_t before1, after1;
+ nsecs_t before1, after1;
-#ifdef MEASURE_DURATION_TVOUT
- before1 = systemTime(SYSTEM_TIME_MONOTONIC);
+#ifdef MEASURE_DURATION_TVOUT
+ before1 = systemTime(SYSTEM_TIME_MONOTONIC);
#endif
- //resume
- if(mtvoutcamera != 0 )
- {
- if (!mtvoutcamera->isEnabled() && (mtvoutcamera->isSuspended() ))
- {
- mtvoutcamera->TvOutResume(TVOUT_RESUME_TIME);
- }
- }
- suspendTvInit = false;
-#ifdef MEASURE_DURATION_TVOUT
- after1 = systemTime(SYSTEM_TIME_MONOTONIC);
- LOGD("%s: MEASURE_DURATION_TVOUT duration=%lld", __func__, ns2us(after1-before1));
+ //resume
+ if (mtvoutcamera != 0) {
+ if (!mtvoutcamera->isEnabled() && mtvoutcamera->isSuspended()) {
+ mtvoutcamera->TvOutResume(TVOUT_RESUME_TIME);
+ }
+ }
+ suspendTvInit = false;
+#ifdef MEASURE_DURATION_TVOUT
+ after1 = systemTime(SYSTEM_TIME_MONOTONIC);
+ LOGD("%s: MEASURE_DURATION_TVOUT duration=%lld", __func__, ns2us(after1-before1));
+#endif
#endif
-#endif
}
int SecCamera::initCamera(int index)
{
- LOGV("%s()", __FUNCTION__);
- int ret = 0;
+ LOGV("%s()", __func__);
+ int ret = 0;
- if(!m_flag_init)
- {
- /* Arun C
- * Reset the lense position only during camera starts; don't do
- * reset between shot to shot
- */
- m_camera_af_flag = -1;
+ if (!m_flag_init) {
+ /* Arun C
+ * Reset the lense position only during camera starts; don't do
+ * reset between shot to shot
+ */
+ m_camera_af_flag = -1;
#ifdef BOARD_USES_SDTV
- nsecs_t before1, after1;
+ nsecs_t before1, after1;
-#ifdef MEASURE_DURATION_TVOUT
- before1 = systemTime(SYSTEM_TIME_MONOTONIC);
+#ifdef MEASURE_DURATION_TVOUT
+ before1 = systemTime(SYSTEM_TIME_MONOTONIC);
#endif
-
- //suspend
- if(mtvoutcamera == 0) {
- mtvoutcamera = TvOut::connect();
- }
-
-
-
- if(mtvoutcamera != 0 )
- {
-
- if ( mtvoutcamera->isEnabled() )
- {
-
- mtvoutcamera->DisableTvOut() ;
- suspendTvInit = true;
- }
- }
-
-#ifdef MEASURE_DURATION_TVOUT
- after1 = systemTime(SYSTEM_TIME_MONOTONIC);
- LOGD("%s: MEASURE_DURATION_TVOUT duration=%lld", __func__, ns2us(after1-before1));
+
+ //suspend
+ if (mtvoutcamera == 0) {
+ mtvoutcamera = TvOut::connect();
+ }
+
+ if (mtvoutcamera != 0) {
+ if (mtvoutcamera->isEnabled()) {
+
+ mtvoutcamera->DisableTvOut();
+ suspendTvInit = true;
+ }
+ }
+
+#ifdef MEASURE_DURATION_TVOUT
+ after1 = systemTime(SYSTEM_TIME_MONOTONIC);
+ LOGD("%s: MEASURE_DURATION_TVOUT duration=%lld", __func__, ns2us(after1-before1));
#endif
#endif
#ifndef JPEG_FROM_SENSOR
- m_jpeg_fd = SsbSipJPEGEncodeInit();
- LOGD("(%s):JPEG device open ID = %d\n", __FUNCTION__,m_jpeg_fd);
- if(m_jpeg_fd < 0)
- {
- m_jpeg_fd = 0;
- LOGE("ERR(%s):Cannot open a jpeg device file\n", __FUNCTION__);
- return -1;
- }
+ m_jpeg_fd = SsbSipJPEGEncodeInit();
+ LOGD("(%s):JPEG device open ID = %d\n", __func__, m_jpeg_fd);
+ if (m_jpeg_fd < 0) {
+ m_jpeg_fd = 0;
+ LOGE("ERR(%s):Cannot open a jpeg device file\n", __func__);
+ return -1;
+ }
#endif
- m_cam_fd_temp = -1;
- m_cam_fd2_temp = -1;
+ m_cam_fd_temp = -1;
+ m_cam_fd2_temp = -1;
- m_cam_fd = open(CAMERA_DEV_NAME, O_RDWR);
- if (m_cam_fd < 0)
- {
- LOGE("ERR(%s):Cannot open %s (error : %s)\n", __FUNCTION__, CAMERA_DEV_NAME, strerror(errno));
+ m_cam_fd = open(CAMERA_DEV_NAME, O_RDWR);
+ if (m_cam_fd < 0) {
+ LOGE("ERR(%s):Cannot open %s (error : %s)\n", __func__, CAMERA_DEV_NAME, strerror(errno));
#ifndef JPEG_FROM_SENSOR
- SsbSipJPEGEncodeDeInit(m_jpeg_fd);
+ SsbSipJPEGEncodeDeInit(m_jpeg_fd);
#endif
- return -1;
- }
-
- if(m_cam_fd < 3) { // for 0, 1, 2
- LOGE("ERR(%s):m_cam_fd is %d\n", __FUNCTION__, m_cam_fd);
-
- close(m_cam_fd);
-
- m_cam_fd_temp = open(CAMERA_DEV_NAME_TEMP, O_CREAT);
-
- LOGE("ERR(%s):m_cam_fd_temp is %d\n", __FUNCTION__, m_cam_fd_temp);
-
- m_cam_fd = open(CAMERA_DEV_NAME, O_RDWR);
-
- if(m_cam_fd < 3) { // for 0, 1, 2
- LOGE("ERR(%s):retring to open %s is failed, %d\n", __FUNCTION__, CAMERA_DEV_NAME, m_cam_fd);
-
- if (m_cam_fd < 0){
- return -1;
- }
- else{
- close(m_cam_fd);
- m_cam_fd = -1;
- }
-
- if(m_cam_fd_temp != -1){
- close(m_cam_fd_temp);
- m_cam_fd_temp = -1;
- }
- return -1;
- }
- }
-
- LOGE("initCamera: m_cam_fd(%d), m_jpeg_fd(%d)", m_cam_fd, m_jpeg_fd);
-
- ret = fimc_v4l2_querycap(m_cam_fd);
- CHECK(ret);
- ret = fimc_v4l2_enuminput(m_cam_fd, index);
- CHECK(ret);
- ret = fimc_v4l2_s_input(m_cam_fd, index);
- CHECK(ret);
+ return -1;
+ }
+
+ if (m_cam_fd < 3) { // for 0, 1, 2
+ LOGE("ERR(%s):m_cam_fd is %d\n", __func__, m_cam_fd);
+
+ close(m_cam_fd);
+
+ m_cam_fd_temp = open(CAMERA_DEV_NAME_TEMP, O_CREAT);
+
+ LOGE("ERR(%s):m_cam_fd_temp is %d\n", __func__, m_cam_fd_temp);
+
+ m_cam_fd = open(CAMERA_DEV_NAME, O_RDWR);
+
+ if (m_cam_fd < 3) { // for 0, 1, 2
+ LOGE("ERR(%s):retring to open %s is failed, %d\n", __func__, CAMERA_DEV_NAME, m_cam_fd);
+
+ if (m_cam_fd < 0) {
+ return -1;
+ } else {
+ close(m_cam_fd);
+ m_cam_fd = -1;
+ }
+
+ if (m_cam_fd_temp != -1){
+ close(m_cam_fd_temp);
+ m_cam_fd_temp = -1;
+ }
+ return -1;
+ }
+ }
+
+ LOGE("initCamera: m_cam_fd(%d), m_jpeg_fd(%d)", m_cam_fd, m_jpeg_fd);
+
+ ret = fimc_v4l2_querycap(m_cam_fd);
+ CHECK(ret);
+ ret = fimc_v4l2_enuminput(m_cam_fd, index);
+ CHECK(ret);
+ ret = fimc_v4l2_s_input(m_cam_fd, index);
+ CHECK(ret);
#ifdef DUAL_PORT_RECORDING
- m_cam_fd2 = open(CAMERA_DEV_NAME2, O_RDWR);
- if (m_cam_fd2 < 0)
- {
- LOGE("ERR(%s):Cannot open %s (error : %s)\n", __FUNCTION__, CAMERA_DEV_NAME2, strerror(errno));
- return -1;
- }
- if(m_cam_fd2 < 3) { // for 0, 1, 2
- LOGE("ERR(%s):m_cam_fd2 is %d\n", __FUNCTION__, m_cam_fd2);
-
- close(m_cam_fd2);
-
- m_cam_fd2_temp = open(CAMERA_DEV_NAME2_TEMP, O_CREAT);
-
- LOGE("ERR(%s):m_cam_fd2_temp is %d\n", __FUNCTION__, m_cam_fd2_temp);
-
- m_cam_fd2 = open(CAMERA_DEV_NAME2, O_RDWR);
-
- if(m_cam_fd2 < 3) { // for 0, 1, 2
- LOGE("ERR(%s):retring to open %s is failed, %d\n", __FUNCTION__, CAMERA_DEV_NAME2, m_cam_fd2);
-
- if (m_cam_fd2 < 0){
- return -1;
- }
- else{
- close(m_cam_fd2);
- m_cam_fd2 = -1;
- }
-
- if(m_cam_fd2_temp != -1){
- close(m_cam_fd2_temp);
- m_cam_fd2_temp = -1;
- }
-
- return -1;
- }
- }
-
- if(m_cam_fd_temp != -1){
- close(m_cam_fd_temp);
- m_cam_fd_temp = -1;
- }
-
- if(m_cam_fd2_temp != -1){
- close(m_cam_fd2_temp);
- m_cam_fd2_temp = -1;
- }
-
- LOGE("initCamera: m_cam_fd2(%d)", m_cam_fd2);
-
- ret = fimc_v4l2_querycap(m_cam_fd2);
- CHECK(ret);
- ret = fimc_v4l2_enuminput(m_cam_fd2, index);
- CHECK(ret);
- ret = fimc_v4l2_s_input(m_cam_fd2, index);
- CHECK(ret);
+ m_cam_fd2 = open(CAMERA_DEV_NAME2, O_RDWR);
+ if (m_cam_fd2 < 0) {
+ LOGE("ERR(%s):Cannot open %s (error : %s)\n", __func__, CAMERA_DEV_NAME2, strerror(errno));
+ return -1;
+ }
+ if (m_cam_fd2 < 3) { // for 0, 1, 2
+ LOGE("ERR(%s):m_cam_fd2 is %d\n", __func__, m_cam_fd2);
+
+ close(m_cam_fd2);
+
+ m_cam_fd2_temp = open(CAMERA_DEV_NAME2_TEMP, O_CREAT);
+
+ LOGE("ERR(%s):m_cam_fd2_temp is %d\n", __func__, m_cam_fd2_temp);
+
+ m_cam_fd2 = open(CAMERA_DEV_NAME2, O_RDWR);
+
+ if (m_cam_fd2 < 3) { // for 0, 1, 2
+ LOGE("ERR(%s):retring to open %s is failed, %d\n", __func__, CAMERA_DEV_NAME2, m_cam_fd2);
+
+ if (m_cam_fd2 < 0) {
+ return -1;
+ }
+ else{
+ close(m_cam_fd2);
+ m_cam_fd2 = -1;
+ }
+
+ if (m_cam_fd2_temp != -1) {
+ close(m_cam_fd2_temp);
+ m_cam_fd2_temp = -1;
+ }
+
+ return -1;
+ }
+ }
+
+ if (m_cam_fd_temp != -1) {
+ close(m_cam_fd_temp);
+ m_cam_fd_temp = -1;
+ }
+
+ if (m_cam_fd2_temp != -1) {
+ close(m_cam_fd2_temp);
+ m_cam_fd2_temp = -1;
+ }
+
+ LOGE("initCamera: m_cam_fd2(%d)", m_cam_fd2);
+
+ ret = fimc_v4l2_querycap(m_cam_fd2);
+ CHECK(ret);
+ ret = fimc_v4l2_enuminput(m_cam_fd2, index);
+ CHECK(ret);
+ ret = fimc_v4l2_s_input(m_cam_fd2, index);
+ CHECK(ret);
#endif
setExifFixedAttribute();
- m_camera_id = index;
- m_flag_init = 1;
- }
- return 0;
+ m_camera_id = index;
+ m_flag_init = 1;
+ }
+ return 0;
}
void SecCamera::resetCamera()
{
- LOGV("%s()", __FUNCTION__);
- DeinitCamera();
- initCamera(m_camera_id);
+ LOGV("%s()", __func__);
+ DeinitCamera();
+ initCamera(m_camera_id);
}
void SecCamera::DeinitCamera()
{
- LOGV("%s()", __FUNCTION__);
+ LOGV("%s()", __func__);
- if(m_flag_init)
- {
+ if (m_flag_init) {
#ifndef JPEG_FROM_SENSOR
- if(m_jpeg_fd > 0)
- {
- if(SsbSipJPEGEncodeDeInit(m_jpeg_fd) != JPEG_OK)
- {
- LOGE("ERR(%s):Fail on SsbSipJPEGEncodeDeInit\n", __FUNCTION__);
- }
- m_jpeg_fd = 0;
- }
+ if (m_jpeg_fd > 0) {
+ if (SsbSipJPEGEncodeDeInit(m_jpeg_fd) != JPEG_OK) {
+ LOGE("ERR(%s):Fail on SsbSipJPEGEncodeDeInit\n", __func__);
+ }
+ m_jpeg_fd = 0;
+ }
#endif
- LOGE("DeinitCamera: m_cam_fd(%d)", m_cam_fd);
- if(m_cam_fd > -1)
- {
- close(m_cam_fd);
- m_cam_fd = -1;
- }
+ LOGE("DeinitCamera: m_cam_fd(%d)", m_cam_fd);
+ if (m_cam_fd > -1) {
+ close(m_cam_fd);
+ m_cam_fd = -1;
+ }
#ifdef DUAL_PORT_RECORDING
- LOGE("DeinitCamera: m_cam_fd2(%d)", m_cam_fd2);
- if(m_cam_fd2 > -1)
- {
- close(m_cam_fd2);
- m_cam_fd2 = -1;
- }
+ LOGE("DeinitCamera: m_cam_fd2(%d)", m_cam_fd2);
+ if (m_cam_fd2 > -1) {
+ close(m_cam_fd2);
+ m_cam_fd2 = -1;
+ }
#endif
- if(m_cam_fd_temp != -1){
- close(m_cam_fd_temp);
- m_cam_fd_temp = -1;
- }
+ if (m_cam_fd_temp != -1) {
+ close(m_cam_fd_temp);
+ m_cam_fd_temp = -1;
+ }
- if(m_cam_fd2_temp != -1){
- close(m_cam_fd2_temp);
- m_cam_fd2_temp = -1;
- }
+ if (m_cam_fd2_temp != -1) {
+ close(m_cam_fd2_temp);
+ m_cam_fd2_temp = -1;
+ }
#ifdef BOARD_USES_SDTV
- nsecs_t before1, after1;
+ nsecs_t before1, after1;
-#ifdef MEASURE_DURATION_TVOUT
- before1 = systemTime(SYSTEM_TIME_MONOTONIC);
+#ifdef MEASURE_DURATION_TVOUT
+ before1 = systemTime(SYSTEM_TIME_MONOTONIC);
#endif
- if(mtvoutcamera == 0) {
- mtvoutcamera = TvOut::connect();
-
- }
-
- //resume
- if(mtvoutcamera != 0 )
- {
-
- if(mtvoutcamera->isSuspended())
- {
- mtvoutcamera->TvOutResume(TVOUT_RESUME_TIME);
- }
- }
-#ifdef MEASURE_DURATION_TVOUT
- after1 = systemTime(SYSTEM_TIME_MONOTONIC);
- LOGD("%s: MEASURE_DURATION_TVOUT duration=%lld", __func__, ns2us(after1-before1));
+ if (mtvoutcamera == 0) {
+ mtvoutcamera = TvOut::connect();
+ }
+
+ //resume
+ if (mtvoutcamera != 0 ) {
+ if (mtvoutcamera->isSuspended()) {
+ mtvoutcamera->TvOutResume(TVOUT_RESUME_TIME);
+ }
+ }
+#ifdef MEASURE_DURATION_TVOUT
+ after1 = systemTime(SYSTEM_TIME_MONOTONIC);
+ LOGD("%s: MEASURE_DURATION_TVOUT duration=%lld", __func__, ns2us(after1-before1));
#endif
#endif
- m_flag_init = 0;
- usleep(100000); //100 ms delay to allow proper closure of fimc device.
- }
+ m_flag_init = 0;
+ usleep(100000); //100 ms delay to allow proper closure of fimc device.
+ }
}
int SecCamera::getCameraFd(void)
{
- return m_cam_fd;
+ return m_cam_fd;
}
#ifdef SWP1_CAMERA_ADD_ADVANCED_FUNCTION
int SecCamera::setCameraSensorReset(void)
{
- int ret = 0;
-
- LOGV("%s", __FUNCTION__);
+ int ret = 0;
- ret = fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_RESET, 0);
- CHECK(ret);
-
- return ret;
+ LOGV("%s", __func__);
+
+ ret = fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_RESET, 0);
+ CHECK(ret);
+
+ return ret;
}
-int SecCamera::setDefultIMEI(int imei)
+int SecCamera::setDefultIMEI(int imei)
{
- LOGV("%s(m_default_imei (%d))", __FUNCTION__, imei);
-
- if(m_default_imei != imei)
- {
- m_default_imei = imei;
- }
- return 0;
+ LOGV("%s(m_default_imei (%d))", __func__, imei);
+
+ if (m_default_imei != imei) {
+ m_default_imei = imei;
+ }
+ return 0;
}
-int SecCamera::getDefultIMEI(void)
+int SecCamera::getDefultIMEI(void)
{
- return m_default_imei;
+ return m_default_imei;
}
-#endif /* SWP1_CAMERA_ADD_ADVANCED_FUNCTION */
+#endif /* SWP1_CAMERA_ADD_ADVANCED_FUNCTION */
// ======================================================================
@@ -1082,544 +1041,531 @@ int SecCamera::getDefultIMEI(void)
int SecCamera::flagPreviewStart(void)
{
- LOGV("%s:started(%d)", __func__, m_flag_camera_start);
-
- return m_flag_camera_start > 0;
+ LOGV("%s:started(%d)", __func__, m_flag_camera_start);
+
+ return m_flag_camera_start > 0;
}
int SecCamera::startPreview(void)
{
#ifdef SWP1_CAMERA_ADD_ADVANCED_FUNCTION
- LOGV("%s()", __FUNCTION__);
-#else /* SWP1_CAMERA_ADD_ADVANCED_FUNCTION */
- LOGE("%s()", __FUNCTION__);
-#endif /* SWP1_CAMERA_ADD_ADVANCED_FUNCTION */
-
- // aleady started
- if(m_flag_camera_start > 0)
- {
- LOGE("ERR(%s):Preview was already started\n", __FUNCTION__);
- return 0;
- }
-
- if(m_cam_fd <= 0)
- {
- LOGE("ERR(%s):Camera was closed\n", __FUNCTION__);
- return -1;
- }
-
- memset(&m_events_c, 0, sizeof(m_events_c));
- m_events_c.fd = m_cam_fd;
- m_events_c.events = POLLIN | POLLERR;
-
- /* enum_fmt, s_fmt sample */
- int ret = fimc_v4l2_enum_fmt(m_cam_fd,m_preview_v4lformat);
- CHECK(ret);
- ret = fimc_v4l2_s_fmt(m_cam_fd, m_preview_width,m_preview_height,m_preview_v4lformat, 0);
- CHECK(ret);
-
- init_yuv_buffers(m_buffers_c, m_preview_width, m_preview_height, m_preview_v4lformat);
- ret = fimc_v4l2_reqbufs(m_cam_fd, V4L2_BUF_TYPE_VIDEO_CAPTURE, MAX_BUFFERS);
- CHECK(ret);
- ret = fimc_v4l2_querybuf(m_cam_fd, m_buffers_c, V4L2_BUF_TYPE_VIDEO_CAPTURE, MAX_BUFFERS);
- CHECK(ret);
-
- /* g_parm, s_parm sample */
- ret = fimc_v4l2_g_parm(m_cam_fd);
- CHECK(ret);
- ret = fimc_v4l2_s_parm(m_cam_fd, 1, m_fps);
- CHECK(ret);
-
-#ifdef SWP1_CAMERA_ADD_ADVANCED_FUNCTION
- LOGE("%s()m_preview_width: %d m_preview_height: %d m_angle: %d\n", __FUNCTION__, m_preview_width,m_preview_height,m_angle);
- ret = fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_ROTATION, m_angle);
- CHECK(ret);
-
- ret = fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_CHECK_DATALINE, m_chk_dataline);
- CHECK(ret);
-
- if(m_camera_id == CAMERA_ID_BACK)
- {
- /*Should be set before starting preview*/
- ret = fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_ANTI_BANDING, m_anti_banding);
- CHECK(ret);
- ret = fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_ISO, m_iso);
- CHECK(ret);
- ret = fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_BRIGHTNESS, m_brightness + BRIGHTNESS_NORMAL);
- CHECK(ret);
- ret = fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_FRAME_RATE, m_fps);
- CHECK(ret);
- ret = fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_METERING, m_metering);
- CHECK(ret);
- ret = fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_SET_GAMMA, m_video_gamma);
- CHECK(ret);
- ret = fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_SET_SLOW_AE, m_slow_ae);
- CHECK(ret);
- ret = fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_EFFECT, m_image_effect);
- CHECK(ret);
- ret = fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_WHITE_BALANCE, m_white_balance);
- CHECK(ret);
- }
- else
- {
- /* VT mode setting */
- ret = fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_VT_MODE, m_vtmode);
- CHECK(ret);
- }
+ LOGV("%s()", __func__);
+#else /* SWP1_CAMERA_ADD_ADVANCED_FUNCTION */
+ LOGE("%s()", __func__);
+#endif /* SWP1_CAMERA_ADD_ADVANCED_FUNCTION */
+
+ // aleady started
+ if (m_flag_camera_start > 0) {
+ LOGE("ERR(%s):Preview was already started\n", __func__);
+ return 0;
+ }
+
+ if (m_cam_fd <= 0) {
+ LOGE("ERR(%s):Camera was closed\n", __func__);
+ return -1;
+ }
+
+ memset(&m_events_c, 0, sizeof(m_events_c));
+ m_events_c.fd = m_cam_fd;
+ m_events_c.events = POLLIN | POLLERR;
+
+ /* enum_fmt, s_fmt sample */
+ int ret = fimc_v4l2_enum_fmt(m_cam_fd,m_preview_v4lformat);
+ CHECK(ret);
+ ret = fimc_v4l2_s_fmt(m_cam_fd, m_preview_width,m_preview_height,m_preview_v4lformat, 0);
+ CHECK(ret);
+
+ init_yuv_buffers(m_buffers_c, m_preview_width, m_preview_height, m_preview_v4lformat);
+ ret = fimc_v4l2_reqbufs(m_cam_fd, V4L2_BUF_TYPE_VIDEO_CAPTURE, MAX_BUFFERS);
+ CHECK(ret);
+ ret = fimc_v4l2_querybuf(m_cam_fd, m_buffers_c, V4L2_BUF_TYPE_VIDEO_CAPTURE, MAX_BUFFERS);
+ CHECK(ret);
+
+ /* g_parm, s_parm sample */
+ ret = fimc_v4l2_g_parm(m_cam_fd);
+ CHECK(ret);
+ ret = fimc_v4l2_s_parm(m_cam_fd, 1, m_fps);
+ CHECK(ret);
+
+#ifdef SWP1_CAMERA_ADD_ADVANCED_FUNCTION
+ LOGE("%s()m_preview_width: %d m_preview_height: %d m_angle: %d\n",
+ __func__, m_preview_width, m_preview_height, m_angle);
+ ret = fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_ROTATION, m_angle);
+ CHECK(ret);
+
+ ret = fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_CHECK_DATALINE, m_chk_dataline);
+ CHECK(ret);
+
+ if (m_camera_id == CAMERA_ID_BACK) {
+ /*Should be set before starting preview*/
+ ret = fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_ANTI_BANDING, m_anti_banding);
+ CHECK(ret);
+ ret = fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_ISO, m_iso);
+ CHECK(ret);
+ ret = fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_BRIGHTNESS, m_brightness + BRIGHTNESS_NORMAL);
+ CHECK(ret);
+ ret = fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_FRAME_RATE, m_fps);
+ CHECK(ret);
+ ret = fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_METERING, m_metering);
+ CHECK(ret);
+ ret = fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_SET_GAMMA, m_video_gamma);
+ CHECK(ret);
+ ret = fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_SET_SLOW_AE, m_slow_ae);
+ CHECK(ret);
+ ret = fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_EFFECT, m_image_effect);
+ CHECK(ret);
+ ret = fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_WHITE_BALANCE, m_white_balance);
+ CHECK(ret);
+ } else {
+ /* VT mode setting */
+ ret = fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_VT_MODE, m_vtmode);
+ CHECK(ret);
+ }
#endif
- /* start with all buffers in queue */
- for (int i = 0; i < MAX_BUFFERS; i++)
- {
- ret = fimc_v4l2_qbuf(m_cam_fd, i);
- CHECK(ret);
- }
-
- ret = fimc_v4l2_streamon(m_cam_fd);
- CHECK(ret);
-
+ /* start with all buffers in queue */
+ for (int i = 0; i < MAX_BUFFERS; i++) {
+ ret = fimc_v4l2_qbuf(m_cam_fd, i);
+ CHECK(ret);
+ }
+
+ ret = fimc_v4l2_streamon(m_cam_fd);
+ CHECK(ret);
+
#ifdef SWP1_CAMERA_ADD_ADVANCED_FUNCTION
- m_flag_camera_start = 1; //Kamat check
-
- if(m_camera_id == CAMERA_ID_BACK) {
- ret = fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_EFFECT, m_image_effect);
- CHECK(ret);
- ret = fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_WHITE_BALANCE, m_white_balance);
- CHECK(ret);
- ret = fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_ISO, m_iso);
- CHECK(ret);
- if(m_focus_mode ==FOCUS_MODE_FACEDETECT)
- ret = fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_FOCUS_MODE, FOCUS_MODE_AUTO);
- else{
- if(m_shot_mode == 2){ //Panorama shot
- ret = fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_FOCUS_MODE, m_focus_mode);
- CHECK(ret);
- m_camera_af_flag = -1;
- }
- else if(m_shot_mode == 3){ //Smile shot
- ret = fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_FOCUS_MODE, m_focus_mode);
- CHECK(ret);
- m_camera_af_flag = -1;
- }
- else if (m_camera_af_flag < 0) { //After captur, Focus is fixed.
- ret = fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_FOCUS_MODE, m_focus_mode);
- CHECK(ret);
- m_camera_af_flag = 0;
- }
- }
- ret = fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_FRAME_RATE, m_fps);
- CHECK(ret);
- ret = fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_METERING, m_metering);
- CHECK(ret);
- ret = fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_SATURATION, m_saturation);
- CHECK(ret);
- ret = fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_CONTRAST, m_contrast);
- CHECK(ret);
- ret = fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_ZOOM, m_zoom_level);
- CHECK(ret);
- ret = fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_SENSOR_MODE, m_sensor_mode);
- CHECK(ret);
- // Apply the scene mode only in camera not in camcorder
- if (!m_sensor_mode)
- {
- ret = fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_SCENE_MODE, m_scene_mode);
- CHECK(ret);
- }
- ret = fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_BRIGHTNESS, m_brightness + BRIGHTNESS_NORMAL);
- CHECK(ret);
- ret = fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_SHARPNESS, m_sharpness);
- CHECK(ret);
- }
- else // In case VGA camera
- {
- /* Brightness setting */
- ret = fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_BRIGHTNESS, m_brightness + BRIGHTNESS_NORMAL);
- CHECK(ret);
- }
+ m_flag_camera_start = 1; //Kamat check
+
+ if (m_camera_id == CAMERA_ID_BACK) {
+ ret = fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_EFFECT, m_image_effect);
+ CHECK(ret);
+ ret = fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_WHITE_BALANCE, m_white_balance);
+ CHECK(ret);
+ ret = fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_ISO, m_iso);
+ CHECK(ret);
+ if (m_focus_mode ==FOCUS_MODE_FACEDETECT)
+ ret = fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_FOCUS_MODE, FOCUS_MODE_AUTO);
+ else {
+ if (m_shot_mode == 2) { //Panorama shot
+ ret = fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_FOCUS_MODE, m_focus_mode);
+ CHECK(ret);
+ m_camera_af_flag = -1;
+ } else if (m_shot_mode == 3) { //Smile shot
+ ret = fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_FOCUS_MODE, m_focus_mode);
+ CHECK(ret);
+ m_camera_af_flag = -1;
+ } else if (m_camera_af_flag < 0) { //After captur, Focus is fixed.
+ ret = fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_FOCUS_MODE, m_focus_mode);
+ CHECK(ret);
+ m_camera_af_flag = 0;
+ }
+ }
+ ret = fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_FRAME_RATE, m_fps);
+ CHECK(ret);
+ ret = fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_METERING, m_metering);
+ CHECK(ret);
+ ret = fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_SATURATION, m_saturation);
+ CHECK(ret);
+ ret = fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_CONTRAST, m_contrast);
+ CHECK(ret);
+ ret = fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_ZOOM, m_zoom_level);
+ CHECK(ret);
+ ret = fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_SENSOR_MODE, m_sensor_mode);
+ CHECK(ret);
+ // Apply the scene mode only in camera not in camcorder
+ if (!m_sensor_mode) {
+ ret = fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_SCENE_MODE, m_scene_mode);
+ CHECK(ret);
+ }
+ ret = fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_BRIGHTNESS, m_brightness + BRIGHTNESS_NORMAL);
+ CHECK(ret);
+ ret = fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_SHARPNESS, m_sharpness);
+ CHECK(ret);
+ } else { // In case VGA camera
+ /* Brightness setting */
+ ret = fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_BRIGHTNESS, m_brightness + BRIGHTNESS_NORMAL);
+ CHECK(ret);
+ }
#endif
- // It is a delay for a new frame, not to show the previous bigger ugly picture frame.
- ret = fimc_poll(&m_events_c);
- CHECK(ret);
+ // It is a delay for a new frame, not to show the previous bigger ugly picture frame.
+ ret = fimc_poll(&m_events_c);
+ CHECK(ret);
#ifdef SWP1_CAMERA_ADD_ADVANCED_FUNCTION
- LOGE("%s: get the first frame of the preview\n", __FUNCTION__);
-#endif /* SWP1_CAMERA_ADD_ADVANCED_FUNCTION */
+ LOGE("%s: get the first frame of the preview\n", __func__);
+#endif /* SWP1_CAMERA_ADD_ADVANCED_FUNCTION */
#ifndef SWP1_CAMERA_ADD_ADVANCED_FUNCTION
- m_flag_camera_start = 1; //Kamat check
-#endif /* SWP1_CAMERA_ADD_ADVANCED_FUNCTION */
+ m_flag_camera_start = 1; //Kamat check
+#endif /* SWP1_CAMERA_ADD_ADVANCED_FUNCTION */
#ifdef ENABLE_HDMI_DISPLAY
- hdmi_initialize(m_preview_width,m_preview_height);
- hdmi_gl_initialize(0);
- hdmi_gl_streamoff(0);
-#endif
+ hdmi_initialize(m_preview_width,m_preview_height);
+ hdmi_gl_initialize(0);
+ hdmi_gl_streamoff(0);
+#endif
#ifdef BOARD_USES_SDTV
- if(suspendTvInit ==true )
- {
- if(!mtvoutcamera->isSuspended())
- {
- mtvoutcamera->TvOutSuspend("") ;
- }
- }
-
-#endif
+ if (suspendTvInit == true) {
+ if (!mtvoutcamera->isSuspended()) {
+ mtvoutcamera->TvOutSuspend("");
+ }
+ }
- return 0;
+#endif
+ return 0;
}
int SecCamera::stopPreview(void)
{
#ifdef SWP1_CAMERA_ADD_ADVANCED_FUNCTION
- LOGE("%s()\n", __FUNCTION__);
-
- close_buffers(m_buffers_c);
-
- if(m_flag_camera_start == 0) {
- LOGE("%s: m_flag_camera_start is zero", __FUNCTION__);
- return 0;
- }
-#else /* SWP1_CAMERA_ADD_ADVANCED_FUNCTION */
- LOGV("%s()", __FUNCTION__);
-
- close_buffers(m_buffers_c);
-
- if(m_flag_camera_start == 0)
- return 0;
-#endif /* SWP1_CAMERA_ADD_ADVANCED_FUNCTION */
+ LOGE("%s()\n", __func__);
+
+ close_buffers(m_buffers_c);
+
+ if (m_flag_camera_start == 0) {
+ LOGE("%s: m_flag_camera_start is zero", __func__);
+ return 0;
+ }
+#else /* SWP1_CAMERA_ADD_ADVANCED_FUNCTION */
+ LOGV("%s()", __func__);
+
+ close_buffers(m_buffers_c);
+
+ if (m_flag_camera_start == 0)
+ return 0;
+#endif /* SWP1_CAMERA_ADD_ADVANCED_FUNCTION */
#ifdef ENABLE_HDMI_DISPLAY
- hdmi_deinitialize();
- hdmi_gl_streamon(0);
+ hdmi_deinitialize();
+ hdmi_gl_streamon(0);
#endif
- if(m_cam_fd <= 0)
- {
- LOGE("ERR(%s):Camera was closed\n", __FUNCTION__);
- return -1;
- }
+ if (m_cam_fd <= 0) {
+ LOGE("ERR(%s):Camera was closed\n", __func__);
+ return -1;
+ }
- int ret = fimc_v4l2_streamoff(m_cam_fd);
+ int ret = fimc_v4l2_streamoff(m_cam_fd);
- m_flag_camera_start = 0; //Kamat check
- CHECK(ret);
+ m_flag_camera_start = 0; //Kamat check
+ CHECK(ret);
- return ret;
+ return ret;
}
//Recording
#ifdef DUAL_PORT_RECORDING
int SecCamera::startRecord(void)
{
- LOGV("%s()", __FUNCTION__);
-
- // aleady started
- if(m_flag_record_start > 0)
- {
- LOGE("ERR(%s):Preview was already started\n", __FUNCTION__);
- return 0;
- }
-
- if(m_cam_fd2 <= 0)
- {
- LOGE("ERR(%s):Camera was closed\n", __FUNCTION__);
- return -1;
- }
-
- memset(&m_events_c2, 0, sizeof(m_events_c2));
- m_events_c2.fd = m_cam_fd2;
- m_events_c2.events = POLLIN | POLLERR;
-
- int m_record_v4lformat = V4L2_PIX_FMT_NV12T; //Kamat: set suitably
- /* enum_fmt, s_fmt sample */
- int ret = fimc_v4l2_enum_fmt(m_cam_fd2,m_record_v4lformat);
- CHECK(ret);
+ LOGV("%s()", __func__);
+
+ // aleady started
+ if (m_flag_record_start > 0) {
+ LOGE("ERR(%s):Preview was already started\n", __func__);
+ return 0;
+ }
+
+ if (m_cam_fd2 <= 0) {
+ LOGE("ERR(%s):Camera was closed\n", __func__);
+ return -1;
+ }
+
+ memset(&m_events_c2, 0, sizeof(m_events_c2));
+ m_events_c2.fd = m_cam_fd2;
+ m_events_c2.events = POLLIN | POLLERR;
+
+ int m_record_v4lformat = V4L2_PIX_FMT_NV12T; //Kamat: set suitably
+ /* enum_fmt, s_fmt sample */
+ int ret = fimc_v4l2_enum_fmt(m_cam_fd2,m_record_v4lformat);
+ CHECK(ret);
#ifdef SWP1_CAMERA_ADD_ADVANCED_FUNCTION
- LOGE("%s: m_recording_width = %d, m_recording_height = %d\n", __FUNCTION__, m_recording_width, m_recording_height);
+ LOGE("%s: m_recording_width = %d, m_recording_height = %d\n", __func__, m_recording_width, m_recording_height);
- ret = fimc_v4l2_s_fmt(m_cam_fd2, m_recording_width, m_recording_height,m_record_v4lformat, 0);
+ ret = fimc_v4l2_s_fmt(m_cam_fd2, m_recording_width, m_recording_height, m_record_v4lformat, 0);
- CHECK(ret);
+ CHECK(ret);
- init_yuv_buffers(m_buffers_c2, m_recording_width, m_recording_height, m_record_v4lformat);
-#else /* SWP1_CAMERA_ADD_ADVANCED_FUNCTION */
- ret = fimc_v4l2_s_fmt(m_cam_fd2, m_preview_width,m_preview_height,m_record_v4lformat, 0);
- CHECK(ret);
+ init_yuv_buffers(m_buffers_c2, m_recording_width, m_recording_height, m_record_v4lformat);
+#else /* SWP1_CAMERA_ADD_ADVANCED_FUNCTION */
+ ret = fimc_v4l2_s_fmt(m_cam_fd2, m_preview_width, m_preview_height, m_record_v4lformat, 0);
+ CHECK(ret);
- init_yuv_buffers(m_buffers_c2, m_preview_width, m_preview_height, m_record_v4lformat);
-#endif /* SWP1_CAMERA_ADD_ADVANCED_FUNCTION */
+ init_yuv_buffers(m_buffers_c2, m_preview_width, m_preview_height, m_record_v4lformat);
+#endif /* SWP1_CAMERA_ADD_ADVANCED_FUNCTION */
- ret = fimc_v4l2_reqbufs(m_cam_fd2, V4L2_BUF_TYPE_VIDEO_CAPTURE, MAX_BUFFERS);
- CHECK(ret);
- ret = fimc_v4l2_querybuf(m_cam_fd2, m_buffers_c2, V4L2_BUF_TYPE_VIDEO_CAPTURE, MAX_BUFFERS);
- CHECK(ret);
+ ret = fimc_v4l2_reqbufs(m_cam_fd2, V4L2_BUF_TYPE_VIDEO_CAPTURE, MAX_BUFFERS);
+ CHECK(ret);
+ ret = fimc_v4l2_querybuf(m_cam_fd2, m_buffers_c2, V4L2_BUF_TYPE_VIDEO_CAPTURE, MAX_BUFFERS);
+ CHECK(ret);
- /* g_parm, s_parm sample */
- ret = fimc_v4l2_g_parm(m_cam_fd2);
- CHECK(ret);
- ret = fimc_v4l2_s_parm(m_cam_fd2, 1, m_fps);
- CHECK(ret);
+ /* g_parm, s_parm sample */
+ ret = fimc_v4l2_g_parm(m_cam_fd2);
+ CHECK(ret);
+ ret = fimc_v4l2_s_parm(m_cam_fd2, 1, m_fps);
+ CHECK(ret);
- /* start with all buffers in queue */
- for (int i = 0; i < MAX_BUFFERS; i++)
- {
- ret = fimc_v4l2_qbuf(m_cam_fd2, i);
- CHECK(ret);
- }
+ /* start with all buffers in queue */
+ for (int i = 0; i < MAX_BUFFERS; i++) {
+ ret = fimc_v4l2_qbuf(m_cam_fd2, i);
+ CHECK(ret);
+ }
- ret = fimc_v4l2_streamon(m_cam_fd2);
- CHECK(ret);
+ ret = fimc_v4l2_streamon(m_cam_fd2);
+ CHECK(ret);
- // It is a delay for a new frame, not to show the previous bigger ugly picture frame.
- ret = fimc_poll(&m_events_c2);
- CHECK(ret);
+ // It is a delay for a new frame, not to show the previous bigger ugly picture frame.
+ ret = fimc_poll(&m_events_c2);
+ CHECK(ret);
- m_flag_record_start = 1; //Kamat check
+ m_flag_record_start = 1; //Kamat check
- return 0;
+ return 0;
}
int SecCamera::stopRecord(void)
{
- if(m_flag_record_start == 0)
- return 0;
-
- LOGV("%s()", __FUNCTION__);
-
- close_buffers(m_buffers_c2);
-
- if(m_cam_fd2 <= 0)
- {
- LOGE("ERR(%s):Camera was closed\n", __FUNCTION__);
- return -1;
- }
+ if (m_flag_record_start == 0)
+ return 0;
+
+ LOGV("%s()", __func__);
+
+ close_buffers(m_buffers_c2);
- int ret = fimc_v4l2_streamoff(m_cam_fd2);
+ if (m_cam_fd2 <= 0) {
+ LOGE("ERR(%s):Camera was closed\n", __func__);
+ return -1;
+ }
- m_flag_record_start = 0; //Kamat check
- CHECK(ret);
+ int ret = fimc_v4l2_streamoff(m_cam_fd2);
- return 0;
+ m_flag_record_start = 0; //Kamat check
+ CHECK(ret);
+
+ return 0;
}
unsigned int SecCamera::getRecPhyAddrY(int index)
{
- unsigned int addr_y;
+ unsigned int addr_y;
- addr_y = fimc_v4l2_s_ctrl(m_cam_fd2, V4L2_CID_PADDR_Y, index);
- CHECK((int)addr_y);
- return addr_y;
+ addr_y = fimc_v4l2_s_ctrl(m_cam_fd2, V4L2_CID_PADDR_Y, index);
+ CHECK((int)addr_y);
+ return addr_y;
}
unsigned int SecCamera::getRecPhyAddrC(int index)
{
- unsigned int addr_c;
+ unsigned int addr_c;
- addr_c = fimc_v4l2_s_ctrl(m_cam_fd2, V4L2_CID_PADDR_CBCR, index);
- CHECK((int)addr_c);
- return addr_c;
+ addr_c = fimc_v4l2_s_ctrl(m_cam_fd2, V4L2_CID_PADDR_CBCR, index);
+ CHECK((int)addr_c);
+ return addr_c;
}
#endif //DUAL_PORT_RECORDING
unsigned int SecCamera::getPhyAddrY(int index)
{
- unsigned int addr_y;
+ unsigned int addr_y;
- addr_y = fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_PADDR_Y, index);
- CHECK((int)addr_y);
- return addr_y;
+ addr_y = fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_PADDR_Y, index);
+ CHECK((int)addr_y);
+ return addr_y;
}
unsigned int SecCamera::getPhyAddrC(int index)
{
- unsigned int addr_c;
+ unsigned int addr_c;
- addr_c = fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_PADDR_CBCR, index);
- CHECK((int)addr_c);
- return addr_c;
+ addr_c = fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_PADDR_CBCR, index);
+ CHECK((int)addr_c);
+ return addr_c;
}
-#ifdef SEND_YUV_RECORD_DATA
-#define PAGE_ALIGN(x) ((x+0xFFF)&(~0xFFF)) // Set as multiple of 4K
-void SecCamera::getYUVBuffers(unsigned char** virYAddr, unsigned char** virCAddr, int index)
+#ifdef SEND_YUV_RECORD_DATA
+#define PAGE_ALIGN(x) (((x) + 0xFFF) & (~0xFFF)) // Set as multiple of 4K
+void SecCamera::getYUVBuffers(unsigned char **virYAddr, unsigned char **virCAddr, int index)
{
- *virYAddr = (unsigned char*)m_buffers_c[index].start;
- //*virCAddr = (unsigned char*)m_buffers_c[index].start + PAGE_ALIGN(m_preview_width * m_preview_height);
- *virCAddr = (unsigned char*)m_buffers_c[index].start + ALIGN_TO_8KB(ALIGN_TO_128B(m_preview_width) * ALIGN_TO_32B(m_preview_height));
+ *virYAddr = (unsigned char*)m_buffers_c[index].start;
+ //*virCAddr = (unsigned char*)m_buffers_c[index].start + PAGE_ALIGN(m_preview_width * m_preview_height);
+ *virCAddr = (unsigned char*)m_buffers_c[index].start +
+ ALIGN_TO_8KB(ALIGN_TO_128B(m_preview_width) * ALIGN_TO_32B(m_preview_height));
}
#endif
void SecCamera::pausePreview()
{
- fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_STREAM_PAUSE, 0);
+ fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_STREAM_PAUSE, 0);
}
int SecCamera::getPreview()
{
- int index;
+ int index;
#ifdef SWP1_CAMERA_ADD_ADVANCED_FUNCTION
- int ret;
+ int ret;
#endif
#ifdef PERFORMANCE
- LOG_TIME_DEFINE(0)
- LOG_TIME_DEFINE(1)
+ LOG_TIME_DEFINE(0)
+ LOG_TIME_DEFINE(1)
- LOG_TIME_START(0)
- fimc_poll(&m_events_c);
- LOG_TIME_END(0)
- LOG_CAMERA("fimc_poll interval: %lu us", LOG_TIME(0));
+ LOG_TIME_START(0)
+ fimc_poll(&m_events_c);
+ LOG_TIME_END(0)
+ LOG_CAMERA("fimc_poll interval: %lu us", LOG_TIME(0));
- LOG_TIME_START(1)
- index = fimc_v4l2_dqbuf(m_cam_fd);
- LOG_TIME_END(1)
- LOG_CAMERA("fimc_dqbuf interval: %lu us", LOG_TIME(1));
+ LOG_TIME_START(1)
+ index = fimc_v4l2_dqbuf(m_cam_fd);
+ LOG_TIME_END(1)
+ LOG_CAMERA("fimc_dqbuf interval: %lu us", LOG_TIME(1));
#else
#ifdef SWP1_CAMERA_ADD_ADVANCED_FUNCTION
- if(m_flag_camera_start == 0 || fimc_esd_poll(&m_events_c) == 0)
- {
- LOGE("ERR(%s):Start Camera Device Reset \n", __FUNCTION__);
- /* GAUDI Project([arun.c@samsung.com]) 2010.05.20. [Implemented ESD code] */
- /*
- * When there is no data for more than 1 second from the camera we inform
- * the FIMC driver by calling fimc_v4l2_s_input() with a special value = 1000
- * FIMC driver identify that there is something wrong with the camera
- * and it restarts the sensor.
- */
- stopPreview();
- /* Reset Only Camera Device */
- ret = fimc_v4l2_querycap(m_cam_fd);
- CHECK(ret);
- ret = fimc_v4l2_enuminput(m_cam_fd, m_camera_id);
- CHECK(ret);
- ret = fimc_v4l2_s_input(m_cam_fd, 1000);
- CHECK(ret);
- //setCameraSensorReset();
- ret = startPreview();
-
- if(ret < 0) {
- LOGE("ERR(%s): startPreview() return %d\n", __FUNCTION__, ret);
-
- return 0;
- }
- }
-#else /* SWP1_CAMERA_ADD_ADVANCED_FUNCTION */
- fimc_poll(&m_events_c);
-#endif /* SWP1_CAMERA_ADD_ADVANCED_FUNCTION */
- index = fimc_v4l2_dqbuf(m_cam_fd);
+ if (m_flag_camera_start == 0 || fimc_esd_poll(&m_events_c) == 0) {
+ LOGE("ERR(%s):Start Camera Device Reset \n", __func__);
+ /* GAUDI Project([arun.c@samsung.com]) 2010.05.20. [Implemented ESD code] */
+ /*
+ * When there is no data for more than 1 second from the camera we inform
+ * the FIMC driver by calling fimc_v4l2_s_input() with a special value = 1000
+ * FIMC driver identify that there is something wrong with the camera
+ * and it restarts the sensor.
+ */
+ stopPreview();
+ /* Reset Only Camera Device */
+ ret = fimc_v4l2_querycap(m_cam_fd);
+ CHECK(ret);
+ ret = fimc_v4l2_enuminput(m_cam_fd, m_camera_id);
+ CHECK(ret);
+ ret = fimc_v4l2_s_input(m_cam_fd, 1000);
+ CHECK(ret);
+ //setCameraSensorReset();
+ ret = startPreview();
+
+ if (ret < 0) {
+ LOGE("ERR(%s): startPreview() return %d\n", __func__, ret);
+ return 0;
+ }
+ }
+#else /* SWP1_CAMERA_ADD_ADVANCED_FUNCTION */
+ fimc_poll(&m_events_c);
+#endif /* SWP1_CAMERA_ADD_ADVANCED_FUNCTION */
+ index = fimc_v4l2_dqbuf(m_cam_fd);
#endif
- if(!(0 <= index && index < MAX_BUFFERS))
- {
- LOGE("ERR(%s):wrong index = %d\n", __FUNCTION__, index);
- return -1;
- }
+ if (!(0 <= index && index < MAX_BUFFERS)) {
+ LOGE("ERR(%s):wrong index = %d\n", __func__, index);
+ return -1;
+ }
#ifdef SWP1_CAMERA_ADD_ADVANCED_FUNCTION
- ret = fimc_v4l2_qbuf(m_cam_fd, index); //Kamat: is it overhead?
-#else /* SWP1_CAMERA_ADD_ADVANCED_FUNCTION */
- int ret = fimc_v4l2_qbuf(m_cam_fd, index); //Kamat: is it overhead?
-#endif /* SWP1_CAMERA_ADD_ADVANCED_FUNCTION */
+ ret = fimc_v4l2_qbuf(m_cam_fd, index); //Kamat: is it overhead?
+#else /* SWP1_CAMERA_ADD_ADVANCED_FUNCTION */
+ int ret = fimc_v4l2_qbuf(m_cam_fd, index); //Kamat: is it overhead?
+#endif /* SWP1_CAMERA_ADD_ADVANCED_FUNCTION */
- CHECK(ret);
+ CHECK(ret);
-#ifdef ENABLE_HDMI_DISPLAY
- hdmi_set_v_param(getPhyAddrY(index), getPhyAddrC (index),m_preview_width,m_preview_height);
+#ifdef ENABLE_HDMI_DISPLAY
+ hdmi_set_v_param(getPhyAddrY(index), getPhyAddrC (index), m_preview_width, m_preview_height);
#endif
- return index;
+ return index;
}
#ifdef DUAL_PORT_RECORDING
int SecCamera::getRecord()
{
- int index;
+ int index;
#ifdef SWP1_CAMERA_ADD_ADVANCED_FUNCTION
- if(m_flag_record_start == 0) {
- LOGE("%s: m_flag_record_start is 0", __FUNCTION__);
- startRecord();
- }
+ if (m_flag_record_start == 0) {
+ LOGE("%s: m_flag_record_start is 0", __func__);
+ startRecord();
+ }
#endif
#ifdef PERFORMANCE
- LOG_TIME_DEFINE(0)
- LOG_TIME_DEFINE(1)
+ LOG_TIME_DEFINE(0)
+ LOG_TIME_DEFINE(1)
- LOG_TIME_START(0)
- fimc_poll(&m_events_c2);
- LOG_TIME_END(0)
- LOG_CAMERA("fimc_poll interval: %lu us", LOG_TIME(0));
+ LOG_TIME_START(0)
+ fimc_poll(&m_events_c2);
+ LOG_TIME_END(0)
+ LOG_CAMERA("fimc_poll interval: %lu us", LOG_TIME(0));
- LOG_TIME_START(1)
- index = fimc_v4l2_dqbuf(m_cam_fd2);
- LOG_TIME_END(1)
- LOG_CAMERA("fimc_dqbuf interval: %lu us", LOG_TIME(1));
+ LOG_TIME_START(1)
+ index = fimc_v4l2_dqbuf(m_cam_fd2);
+ LOG_TIME_END(1)
+ LOG_CAMERA("fimc_dqbuf interval: %lu us", LOG_TIME(1));
#else
- fimc_poll(&m_events_c2);
- index = fimc_v4l2_dqbuf(m_cam_fd2);
+ fimc_poll(&m_events_c2);
+ index = fimc_v4l2_dqbuf(m_cam_fd2);
#endif
- if(!(0 <= index && index < MAX_BUFFERS))
- {
- LOGE("ERR(%s):wrong index = %d\n", __FUNCTION__, index);
- return -1;
- }
+ if (!(0 <= index && index < MAX_BUFFERS)) {
+ LOGE("ERR(%s):wrong index = %d\n", __func__, index);
+ return -1;
+ }
- int ret = fimc_v4l2_qbuf(m_cam_fd2, index); //Kamat: is it overhead?
- CHECK(ret);
+ int ret = fimc_v4l2_qbuf(m_cam_fd2, index); //Kamat: is it overhead?
+ CHECK(ret);
- return index;
+ return index;
}
#endif //DUAL_PORT_RECORDING
int SecCamera::setPreviewSize(int width, int height, int pixel_format)
{
- LOGV("%s(width(%d), height(%d), format(%d))", __FUNCTION__, width, height, pixel_format);
+ LOGV("%s(width(%d), height(%d), format(%d))", __func__, width, height, pixel_format);
- int v4lpixelformat = pixel_format;
+ int v4lpixelformat = pixel_format;
#if defined(LOG_NDEBUG) && LOG_NDEBUG == 0
- if(v4lpixelformat == V4L2_PIX_FMT_YUV420) { LOGV("PreviewFormat:V4L2_PIX_FMT_YUV420"); }
- else if(v4lpixelformat == V4L2_PIX_FMT_NV12) { LOGV("PreviewFormat:V4L2_PIX_FMT_NV12"); }
- else if(v4lpixelformat == V4L2_PIX_FMT_NV12T) { LOGV("PreviewFormat:V4L2_PIX_FMT_NV12T"); }
- else if(v4lpixelformat == V4L2_PIX_FMT_NV21) { LOGV("PreviewFormat:V4L2_PIX_FMT_NV21"); }
- else if(v4lpixelformat == V4L2_PIX_FMT_YUV422P) { LOGV("PreviewFormat:V4L2_PIX_FMT_YUV422P"); }
- else if(v4lpixelformat == V4L2_PIX_FMT_YUYV) { LOGV("PreviewFormat:V4L2_PIX_FMT_YUYV"); }
- else if(v4lpixelformat == V4L2_PIX_FMT_RGB565) { LOGV("PreviewFormat:V4L2_PIX_FMT_RGB565"); }
- else { LOGV("PreviewFormat:UnknownFormat"); }
+ if (v4lpixelformat == V4L2_PIX_FMT_YUV420)
+ LOGV("PreviewFormat:V4L2_PIX_FMT_YUV420");
+ else if (v4lpixelformat == V4L2_PIX_FMT_NV12)
+ LOGV("PreviewFormat:V4L2_PIX_FMT_NV12");
+ else if (v4lpixelformat == V4L2_PIX_FMT_NV12T)
+ LOGV("PreviewFormat:V4L2_PIX_FMT_NV12T");
+ else if (v4lpixelformat == V4L2_PIX_FMT_NV21)
+ LOGV("PreviewFormat:V4L2_PIX_FMT_NV21");
+ else if (v4lpixelformat == V4L2_PIX_FMT_YUV422P)
+ LOGV("PreviewFormat:V4L2_PIX_FMT_YUV422P");
+ else if (v4lpixelformat == V4L2_PIX_FMT_YUYV)
+ LOGV("PreviewFormat:V4L2_PIX_FMT_YUYV");
+ else if (v4lpixelformat == V4L2_PIX_FMT_RGB565)
+ LOGV("PreviewFormat:V4L2_PIX_FMT_RGB565");
+ else
+ LOGV("PreviewFormat:UnknownFormat");
#endif
- m_preview_width = width;
- m_preview_height = height;
- m_preview_v4lformat = v4lpixelformat;
+ m_preview_width = width;
+ m_preview_height = height;
+ m_preview_v4lformat = v4lpixelformat;
- return 0;
+ return 0;
}
-int SecCamera::getPreviewSize(int * width, int * height, int * frame_size)
+int SecCamera::getPreviewSize(int *width, int *height, int *frame_size)
{
- *width = m_preview_width;
- *height = m_preview_height;
- *frame_size = m_frameSize(m_preview_v4lformat, m_preview_width, m_preview_height);
+ *width = m_preview_width;
+ *height = m_preview_height;
+ *frame_size = m_frameSize(m_preview_v4lformat, m_preview_width, m_preview_height);
- return 0;
+ return 0;
}
-int SecCamera::getPreviewMaxSize(int * width, int * height)
+int SecCamera::getPreviewMaxSize(int *width, int *height)
{
- *width = m_preview_max_width;
- *height = m_preview_max_height;
+ *width = m_preview_max_width;
+ *height = m_preview_max_height;
- return 0;
+ return 0;
}
int SecCamera::getPreviewPixelFormat(void)
{
- return m_preview_v4lformat;
+ return m_preview_v4lformat;
}
@@ -1632,373 +1578,384 @@ int SecCamera::getPreviewPixelFormat(void)
*/
int SecCamera::setSnapshotCmd(void)
{
- LOGV("%s()", __FUNCTION__);
-
- int ret = 0;
+ LOGV("%s()", __func__);
+
+ int ret = 0;
- LOG_TIME_DEFINE(0)
- LOG_TIME_DEFINE(1)
+ LOG_TIME_DEFINE(0)
+ LOG_TIME_DEFINE(1)
- if(m_cam_fd <= 0)
- {
- LOGE("ERR(%s):Camera was closed\n", __FUNCTION__);
- return 0;
- }
+ if (m_cam_fd <= 0) {
+ LOGE("ERR(%s):Camera was closed\n", __func__);
+ return 0;
+ }
- if(m_flag_camera_start > 0)
- {
- LOG_TIME_START(0)
- stopPreview();
- LOG_TIME_END(0)
- }
+ if (m_flag_camera_start > 0) {
+ LOG_TIME_START(0)
+ stopPreview();
+ LOG_TIME_END(0)
+ }
- memset(&m_events_c, 0, sizeof(m_events_c));
- m_events_c.fd = m_cam_fd;
- m_events_c.events = POLLIN | POLLERR;
+ memset(&m_events_c, 0, sizeof(m_events_c));
+ m_events_c.fd = m_cam_fd;
+ m_events_c.events = POLLIN | POLLERR;
- LOG_TIME_START(1) // prepare
- int nframe = 1;
+ LOG_TIME_START(1) // prepare
+ int nframe = 1;
- ret = fimc_v4l2_enum_fmt(m_cam_fd,m_snapshot_v4lformat);
- CHECK_PTR(ret);
- ret = fimc_v4l2_s_fmt_cap(m_cam_fd, m_snapshot_width, m_snapshot_height, V4L2_PIX_FMT_JPEG);
- CHECK_PTR(ret);
- init_yuv_buffers(m_buffers_c, m_snapshot_width, m_snapshot_height, m_snapshot_v4lformat);
+ ret = fimc_v4l2_enum_fmt(m_cam_fd,m_snapshot_v4lformat);
+ CHECK_PTR(ret);
+ ret = fimc_v4l2_s_fmt_cap(m_cam_fd, m_snapshot_width, m_snapshot_height, V4L2_PIX_FMT_JPEG);
+ CHECK_PTR(ret);
+ init_yuv_buffers(m_buffers_c, m_snapshot_width, m_snapshot_height, m_snapshot_v4lformat);
- ret = fimc_v4l2_reqbufs(m_cam_fd, V4L2_BUF_TYPE_VIDEO_CAPTURE, nframe);
- CHECK_PTR(ret);
- ret = fimc_v4l2_querybuf(m_cam_fd, m_buffers_c, V4L2_BUF_TYPE_VIDEO_CAPTURE, nframe);
- CHECK_PTR(ret);
+ ret = fimc_v4l2_reqbufs(m_cam_fd, V4L2_BUF_TYPE_VIDEO_CAPTURE, nframe);
+ CHECK_PTR(ret);
+ ret = fimc_v4l2_querybuf(m_cam_fd, m_buffers_c, V4L2_BUF_TYPE_VIDEO_CAPTURE, nframe);
+ CHECK_PTR(ret);
- ret = fimc_v4l2_g_parm(m_cam_fd);
- CHECK_PTR(ret);
- ret = fimc_v4l2_s_parm(m_cam_fd, 1, m_fps);
- CHECK_PTR(ret);
+ ret = fimc_v4l2_g_parm(m_cam_fd);
+ CHECK_PTR(ret);
+ ret = fimc_v4l2_s_parm(m_cam_fd, 1, m_fps);
+ CHECK_PTR(ret);
- ret = fimc_v4l2_qbuf(m_cam_fd, 0);
- CHECK_PTR(ret);
+ ret = fimc_v4l2_qbuf(m_cam_fd, 0);
+ CHECK_PTR(ret);
- ret = fimc_v4l2_streamon(m_cam_fd);
- CHECK_PTR(ret);
- LOG_TIME_END(1)
+ ret = fimc_v4l2_streamon(m_cam_fd);
+ CHECK_PTR(ret);
+ LOG_TIME_END(1)
- return 0;
+ return 0;
}
/*
* Set Jpeg quality & exif info and get JPEG data from camera ISP
*/
-unsigned char* SecCamera::getJpeg(int* jpeg_size, unsigned int* phyaddr)
+unsigned char* SecCamera::getJpeg(int *jpeg_size, unsigned int *phyaddr)
{
- LOGV("%s()", __FUNCTION__);
-
- int index, ret = 0;
- unsigned char* addr;
+ LOGV("%s()", __func__);
- LOG_TIME_DEFINE(2)
-/* kidggang (10.7.5) - Problem - After jpegquality is capture, operation setting is normal.
+ int index, ret = 0;
+ unsigned char *addr;
- ret = fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAM_JPEG_QUALITY, m_jpeg_quality);
- CHECK_PTR(ret);
-*/
+ LOG_TIME_DEFINE(2)
+ /* kidggang (10.7.5) - Problem - After jpegquality is capture, operation setting is normal.
+
+ ret = fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAM_JPEG_QUALITY, m_jpeg_quality);
+ CHECK_PTR(ret);
+ */
#ifdef SWP1_CAMERA_ADD_ADVANCED_FUNCTION
- //exif orient info
-// ret = fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_EXIF_ORIENTATION, m_exif_orientation); //kidggang
-// CHECK_PTR(ret);
+ //exif orient info
+// ret = fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_EXIF_ORIENTATION, m_exif_orientation); //kidggang
+// CHECK_PTR(ret);
#if 0//def SWP1_CAMERA_ADD_ADVANCED_FUNCTION
- //set gps information
- ret = fimc_v4l2_s_ext_ctrl(m_cam_fd, V4L2_CID_CAMERA_GPS_LATITUDE, &m_gps_latitude);
- CHECK_PTR(ret);
- ret = fimc_v4l2_s_ext_ctrl(m_cam_fd, V4L2_CID_CAMERA_GPS_LONGITUDE, &m_gps_longitude);
- CHECK_PTR(ret);
- ret = fimc_v4l2_s_ext_ctrl(m_cam_fd, V4L2_CID_CAMERA_GPS_ALTITUDE, &m_gps_altitude);
- CHECK_PTR(ret);
- ret = fimc_v4l2_s_ext_ctrl(m_cam_fd, V4L2_CID_CAMERA_GPS_TIMESTAMP, &m_gps_timestamp);
- CHECK_PTR(ret);
+ //set gps information
+ ret = fimc_v4l2_s_ext_ctrl(m_cam_fd, V4L2_CID_CAMERA_GPS_LATITUDE, &m_gps_latitude);
+ CHECK_PTR(ret);
+ ret = fimc_v4l2_s_ext_ctrl(m_cam_fd, V4L2_CID_CAMERA_GPS_LONGITUDE, &m_gps_longitude);
+ CHECK_PTR(ret);
+ ret = fimc_v4l2_s_ext_ctrl(m_cam_fd, V4L2_CID_CAMERA_GPS_ALTITUDE, &m_gps_altitude);
+ CHECK_PTR(ret);
+ ret = fimc_v4l2_s_ext_ctrl(m_cam_fd, V4L2_CID_CAMERA_GPS_TIMESTAMP, &m_gps_timestamp);
+ CHECK_PTR(ret);
#endif
/* kidggang
- ret = fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_CAPTURE, 0);
- CHECK_PTR(ret);*/
-
- // capture
- ret = fimc_poll(&m_events_c);
- CHECK_PTR(ret);
- index = fimc_v4l2_dqbuf(m_cam_fd);
- if(!(0 <= index && index < MAX_BUFFERS))
- {
- LOGE("ERR(%s):wrong index = %d\n", __FUNCTION__, index);
- return NULL;
- }
-#endif
-
- *jpeg_size = fimc_v4l2_g_ctrl(m_cam_fd, V4L2_CID_CAM_JPEG_MAIN_SIZE);
- CHECK_PTR(*jpeg_size);
- int main_offset = fimc_v4l2_g_ctrl(m_cam_fd, V4L2_CID_CAM_JPEG_MAIN_OFFSET);
- CHECK_PTR(main_offset);
- m_postview_offset = fimc_v4l2_g_ctrl(m_cam_fd, V4L2_CID_CAM_JPEG_POSTVIEW_OFFSET);
- CHECK_PTR(m_postview_offset);
-
- ret = fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_STREAM_PAUSE, 0);
- CHECK_PTR(ret);
- LOGV("\nsnapshot dqueued buffer = %d snapshot_width = %d snapshot_height = %d\n\n",index, m_snapshot_width, m_snapshot_height);
-
- addr = (unsigned char*)(m_buffers_c[index].start) + main_offset;
- *phyaddr = getPhyAddrY(index) + m_postview_offset;
-
- LOG_TIME_START(2) // post
- ret = fimc_v4l2_streamoff(m_cam_fd);
- CHECK_PTR(ret);
- LOG_TIME_END(2)
-
+ ret = fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_CAPTURE, 0);
+ CHECK_PTR(ret);*/
+
+ // capture
+ ret = fimc_poll(&m_events_c);
+ CHECK_PTR(ret);
+ index = fimc_v4l2_dqbuf(m_cam_fd);
+ if (!(0 <= index && index < MAX_BUFFERS)) {
+ LOGE("ERR(%s):wrong index = %d\n", __func__, index);
+ return NULL;
+ }
+#endif
+
+ *jpeg_size = fimc_v4l2_g_ctrl(m_cam_fd, V4L2_CID_CAM_JPEG_MAIN_SIZE);
+ CHECK_PTR(*jpeg_size);
+
+ int main_offset = fimc_v4l2_g_ctrl(m_cam_fd, V4L2_CID_CAM_JPEG_MAIN_OFFSET);
+ CHECK_PTR(main_offset);
+ m_postview_offset = fimc_v4l2_g_ctrl(m_cam_fd, V4L2_CID_CAM_JPEG_POSTVIEW_OFFSET);
+ CHECK_PTR(m_postview_offset);
+
+ ret = fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_STREAM_PAUSE, 0);
+ CHECK_PTR(ret);
+ LOGV("\nsnapshot dqueued buffer = %d snapshot_width = %d snapshot_height = %d\n\n",
+ index, m_snapshot_width, m_snapshot_height);
+
+ addr = (unsigned char*)(m_buffers_c[index].start) + main_offset;
+ *phyaddr = getPhyAddrY(index) + m_postview_offset;
+
+ LOG_TIME_START(2) // post
+ ret = fimc_v4l2_streamoff(m_cam_fd);
+ CHECK_PTR(ret);
+ LOG_TIME_END(2)
+
#if 0 //temporary blocked for build
- LOG_CAMERA("getSnapshotAndJpeg intervals : stopPreview(%lu), prepare(%lu), capture(%lu), memcpy(%lu), yuv2Jpeg(%lu), post(%lu) us"
- , LOG_TIME(0), LOG_TIME(1), LOG_TIME(2), LOG_TIME(3), LOG_TIME(4), LOG_TIME(5));
+ LOG_CAMERA("getSnapshotAndJpeg intervals : stopPreview(%lu), prepare(%lu), "
+ "capture(%lu), memcpy(%lu), yuv2Jpeg(%lu), post(%lu) us",
+ LOG_TIME(0), LOG_TIME(1), LOG_TIME(2), LOG_TIME(3), LOG_TIME(4), LOG_TIME(5));
#endif
- return addr;
+ return addr;
}
-int SecCamera::getExif(unsigned char *pExifDst, unsigned char *pThumbSrc)
+int SecCamera::getExif (unsigned char *pExifDst, unsigned char *pThumbSrc)
{
return 0;
}
-void SecCamera::getPostViewConfig(int* width, int* height, int* size)
+void SecCamera::getPostViewConfig(int *width, int *height, int *size)
{
- if(m_preview_width == 1024)
- {
- *width = BACK_CAMERA_POSTVIEW_WIDE_WIDTH;
- *height = BACK_CAMERA_POSTVIEW_HEIGHT;
- *size = BACK_CAMERA_POSTVIEW_WIDE_WIDTH * BACK_CAMERA_POSTVIEW_HEIGHT * BACK_CAMERA_POSTVIEW_BPP/8;
-
- }
- else
- {
- *width = BACK_CAMERA_POSTVIEW_WIDTH;
- *height = BACK_CAMERA_POSTVIEW_HEIGHT;
- *size = BACK_CAMERA_POSTVIEW_WIDTH * BACK_CAMERA_POSTVIEW_HEIGHT * BACK_CAMERA_POSTVIEW_BPP/8;
- }
- LOGV("[5B] m_preview_width : %d, mPostViewWidth = %d mPostViewHeight = %d mPostViewSize = %d", m_preview_width, *width, *height, *size);
+ if (m_preview_width == 1024) {
+ *width = BACK_CAMERA_POSTVIEW_WIDE_WIDTH;
+ *height = BACK_CAMERA_POSTVIEW_HEIGHT;
+ *size = BACK_CAMERA_POSTVIEW_WIDE_WIDTH * BACK_CAMERA_POSTVIEW_HEIGHT * BACK_CAMERA_POSTVIEW_BPP / 8;
+ } else {
+ *width = BACK_CAMERA_POSTVIEW_WIDTH;
+ *height = BACK_CAMERA_POSTVIEW_HEIGHT;
+ *size = BACK_CAMERA_POSTVIEW_WIDTH * BACK_CAMERA_POSTVIEW_HEIGHT * BACK_CAMERA_POSTVIEW_BPP / 8;
+ }
+ LOGV("[5B] m_preview_width : %d, mPostViewWidth = %d mPostViewHeight = %d mPostViewSize = %d",
+ m_preview_width, *width, *height, *size);
}
#ifdef DIRECT_DELIVERY_OF_POSTVIEW_DATA
int SecCamera::getPostViewOffset(void)
{
- return m_postview_offset;
+ return m_postview_offset;
}
#endif
#else //#ifdef JPEG_FROM_SENSOR
int SecCamera::getJpegFd(void)
{
- return m_jpeg_fd;
+ return m_jpeg_fd;
}
void SecCamera::SetJpgAddr(unsigned char *addr)
{
- SetMapAddr(addr);
+ SetMapAddr(addr);
}
#if 0
-int SecCamera::getSnapshot(unsigned char * buffer, unsigned int buffer_size)
+int SecCamera::getSnapshot(unsigned char *buffer, unsigned int buffer_size)
{
- LOGV("%s(buffer(%p), size(%d))", __FUNCTION__, buffer, buffer_size);
-
- if(getSnapshotAndJpeg(buffer, buffer_size, NULL, NULL) == 0)
- return -1;
-
- return 0;
+ LOGV("%s(buffer(%p), size(%d))", __func__, buffer, buffer_size);
+
+ if (getSnapshotAndJpeg(buffer, buffer_size, NULL, NULL) == 0)
+ return -1;
+
+ return 0;
}
#endif
#endif
-unsigned char* SecCamera::getSnapshotAndJpeg(unsigned int* output_size)
-{
- LOGV("%s()", __FUNCTION__);
-
- int index;
- //unsigned int addr;
- unsigned char* addr;
- int ret = 0;
-
- LOG_TIME_DEFINE(0)
- LOG_TIME_DEFINE(1)
- LOG_TIME_DEFINE(2)
- LOG_TIME_DEFINE(3)
- LOG_TIME_DEFINE(4)
- LOG_TIME_DEFINE(5)
-
- //fimc_v4l2_streamoff(m_cam_fd); [zzangdol] remove - it is separate in HWInterface with camera_id
-
- if(m_cam_fd <= 0)
- {
- LOGE("ERR(%s):Camera was closed\n", __FUNCTION__);
- return 0;
- }
-
- if(m_flag_camera_start > 0)
- {
- LOG_TIME_START(0)
- stopPreview();
- LOG_TIME_END(0)
- }
-
- memset(&m_events_c, 0, sizeof(m_events_c));
- m_events_c.fd = m_cam_fd;
- m_events_c.events = POLLIN | POLLERR;
+unsigned char* SecCamera::getSnapshotAndJpeg(unsigned int* output_size)
+{
+ LOGV("%s()", __func__);
+
+ int index;
+ //unsigned int addr;
+ unsigned char* addr;
+ int ret = 0;
+
+ LOG_TIME_DEFINE(0)
+ LOG_TIME_DEFINE(1)
+ LOG_TIME_DEFINE(2)
+ LOG_TIME_DEFINE(3)
+ LOG_TIME_DEFINE(4)
+ LOG_TIME_DEFINE(5)
+
+ //fimc_v4l2_streamoff(m_cam_fd); [zzangdol] remove - it is separate in HWInterface with camera_id
+
+ if (m_cam_fd <= 0) {
+ LOGE("ERR(%s):Camera was closed\n", __func__);
+ return 0;
+ }
+
+ if (m_flag_camera_start > 0) {
+ LOG_TIME_START(0)
+ stopPreview();
+ LOG_TIME_END(0)
+ }
+
+ memset(&m_events_c, 0, sizeof(m_events_c));
+ m_events_c.fd = m_cam_fd;
+ m_events_c.events = POLLIN | POLLERR;
#if defined(LOG_NDEBUG) && LOG_NDEBUG == 0
- if(m_snapshot_v4lformat == V4L2_PIX_FMT_YUV420) { LOGV("SnapshotFormat:V4L2_PIX_FMT_YUV420"); }
- else if(m_snapshot_v4lformat == V4L2_PIX_FMT_NV12) { LOGV("SnapshotFormat:V4L2_PIX_FMT_NV12"); }
- else if(m_snapshot_v4lformat == V4L2_PIX_FMT_NV12T) { LOGV("SnapshotFormat:V4L2_PIX_FMT_NV12T"); }
- else if(m_snapshot_v4lformat == V4L2_PIX_FMT_NV21) { LOGV("SnapshotFormat:V4L2_PIX_FMT_NV21"); }
- else if(m_snapshot_v4lformat == V4L2_PIX_FMT_YUV422P) { LOGV("SnapshotFormat:V4L2_PIX_FMT_YUV422P"); }
- else if(m_snapshot_v4lformat == V4L2_PIX_FMT_YUYV) { LOGV("SnapshotFormat:V4L2_PIX_FMT_YUYV"); }
- else if(m_snapshot_v4lformat == V4L2_PIX_FMT_UYVY) { LOGV("SnapshotFormat:V4L2_PIX_FMT_UYVY"); }
- else if(m_snapshot_v4lformat == V4L2_PIX_FMT_RGB565) { LOGV("SnapshotFormat:V4L2_PIX_FMT_RGB565"); }
- else { LOGV("SnapshotFormat:UnknownFormat"); }
+ if (m_snapshot_v4lformat == V4L2_PIX_FMT_YUV420)
+ LOGV("SnapshotFormat:V4L2_PIX_FMT_YUV420");
+ else if (m_snapshot_v4lformat == V4L2_PIX_FMT_NV12)
+ LOGV("SnapshotFormat:V4L2_PIX_FMT_NV12");
+ else if (m_snapshot_v4lformat == V4L2_PIX_FMT_NV12T)
+ LOGV("SnapshotFormat:V4L2_PIX_FMT_NV12T");
+ else if (m_snapshot_v4lformat == V4L2_PIX_FMT_NV21)
+ LOGV("SnapshotFormat:V4L2_PIX_FMT_NV21");
+ else if (m_snapshot_v4lformat == V4L2_PIX_FMT_YUV422P)
+ LOGV("SnapshotFormat:V4L2_PIX_FMT_YUV422P");
+ else if (m_snapshot_v4lformat == V4L2_PIX_FMT_YUYV)
+ LOGV("SnapshotFormat:V4L2_PIX_FMT_YUYV");
+ else if (m_snapshot_v4lformat == V4L2_PIX_FMT_UYVY)
+ LOGV("SnapshotFormat:V4L2_PIX_FMT_UYVY");
+ else if (m_snapshot_v4lformat == V4L2_PIX_FMT_RGB565)
+ LOGV("SnapshotFormat:V4L2_PIX_FMT_RGB565");
+ else
+ LOGV("SnapshotFormat:UnknownFormat");
#endif
- LOG_TIME_START(1) // prepare
- int nframe = 1;
+ LOG_TIME_START(1) // prepare
+ int nframe = 1;
- LOGE("[zzangdol] w %d, h %d\n", m_snapshot_width, m_snapshot_height);
+ LOGE("[zzangdol] w %d, h %d\n", m_snapshot_width, m_snapshot_height);
- ret = fimc_v4l2_enum_fmt(m_cam_fd,m_snapshot_v4lformat);
- CHECK_PTR(ret);
- ret = fimc_v4l2_s_fmt_cap(m_cam_fd, m_snapshot_width, m_snapshot_height, m_snapshot_v4lformat);
- CHECK_PTR(ret);
- init_yuv_buffers(m_buffers_c, m_snapshot_width, m_snapshot_height, m_snapshot_v4lformat);
+ ret = fimc_v4l2_enum_fmt(m_cam_fd,m_snapshot_v4lformat);
+ CHECK_PTR(ret);
+ ret = fimc_v4l2_s_fmt_cap(m_cam_fd, m_snapshot_width, m_snapshot_height, m_snapshot_v4lformat);
+ CHECK_PTR(ret);
+ init_yuv_buffers(m_buffers_c, m_snapshot_width, m_snapshot_height, m_snapshot_v4lformat);
- ret = fimc_v4l2_reqbufs(m_cam_fd, V4L2_BUF_TYPE_VIDEO_CAPTURE, nframe);
- CHECK_PTR(ret);
- ret = fimc_v4l2_querybuf(m_cam_fd, m_buffers_c, V4L2_BUF_TYPE_VIDEO_CAPTURE, nframe);
- CHECK_PTR(ret);
+ ret = fimc_v4l2_reqbufs(m_cam_fd, V4L2_BUF_TYPE_VIDEO_CAPTURE, nframe);
+ CHECK_PTR(ret);
+ ret = fimc_v4l2_querybuf(m_cam_fd, m_buffers_c, V4L2_BUF_TYPE_VIDEO_CAPTURE, nframe);
+ CHECK_PTR(ret);
- /* g_parm, s_parm sample */
- ret = fimc_v4l2_g_parm(m_cam_fd);
- CHECK_PTR(ret);
- ret = fimc_v4l2_s_parm(m_cam_fd, 1, m_fps);
- CHECK_PTR(ret);
+ /* g_parm, s_parm sample */
+ ret = fimc_v4l2_g_parm(m_cam_fd);
+ CHECK_PTR(ret);
+ ret = fimc_v4l2_s_parm(m_cam_fd, 1, m_fps);
+ CHECK_PTR(ret);
- ret = fimc_v4l2_qbuf(m_cam_fd, 0);
- CHECK_PTR(ret);
+ ret = fimc_v4l2_qbuf(m_cam_fd, 0);
+ CHECK_PTR(ret);
- ret = fimc_v4l2_streamon(m_cam_fd);//zzangdolp
- CHECK_PTR(ret);
- LOG_TIME_END(1)
+ ret = fimc_v4l2_streamon(m_cam_fd);
+ CHECK_PTR(ret);
+ LOG_TIME_END(1)
- LOG_TIME_START(2) // capture
- fimc_poll(&m_events_c);
- index = fimc_v4l2_dqbuf(m_cam_fd);
- fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_STREAM_PAUSE, 0);
- LOGV("\nsnapshot dqueued buffer = %d snapshot_width = %d snapshot_height = %d\n\n",index, m_snapshot_width, m_snapshot_height);
+ LOG_TIME_START(2) // capture
+ fimc_poll(&m_events_c);
+ index = fimc_v4l2_dqbuf(m_cam_fd);
+ fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_STREAM_PAUSE, 0);
+ LOGV("\nsnapshot dqueued buffer = %d snapshot_width = %d snapshot_height = %d\n\n",
+ index, m_snapshot_width, m_snapshot_height);
#ifdef DUMP_YUV
- save_yuv(m_buffers_c, m_snapshot_width, m_snapshot_height, 16, index, 0);
+ save_yuv(m_buffers_c, m_snapshot_width, m_snapshot_height, 16, index, 0);
#endif
- LOG_TIME_END(2)
-
- //addr = getPhyAddrY(index);
- addr = (unsigned char*)m_buffers_c[index].start;
- if(addr == 0)
- {
- LOGE("%s] Physical address 0");
- }
- LOG_TIME_START(5) // post
- fimc_v4l2_streamoff(m_cam_fd);
+ LOG_TIME_END(2)
+
+ //addr = getPhyAddrY(index);
+ addr = (unsigned char*)m_buffers_c[index].start;
+ if (addr == 0) {
+ LOGE("%s] Physical address 0");
+ }
+ LOG_TIME_START(5) // post
+ fimc_v4l2_streamoff(m_cam_fd);
#ifdef DUMP_YUV
- close_buffers(m_buffers_c);
+ close_buffers(m_buffers_c);
#endif
- LOG_TIME_END(5)
+ LOG_TIME_END(5)
- LOG_CAMERA("getSnapshotAndJpeg intervals : stopPreview(%lu), prepare(%lu), capture(%lu), memcpy(%lu), yuv2Jpeg(%lu), post(%lu) us"
- , LOG_TIME(0), LOG_TIME(1), LOG_TIME(2), LOG_TIME(3), LOG_TIME(4), LOG_TIME(5));
+ LOG_CAMERA("getSnapshotAndJpeg intervals : stopPreview(%lu), prepare(%lu),
+ " capture(%lu), memcpy(%lu), yuv2Jpeg(%lu), post(%lu) us",
+ LOG_TIME(0), LOG_TIME(1), LOG_TIME(2), LOG_TIME(3), LOG_TIME(4), LOG_TIME(5));
- return addr;
+ return addr;
}
int SecCamera::setSnapshotSize(int width, int height)
{
- LOGV("%s(width(%d), height(%d))", __FUNCTION__, width, height);
-
- m_snapshot_width = width;
- m_snapshot_height = height;
+ LOGV("%s(width(%d), height(%d))", __func__, width, height);
+
+ m_snapshot_width = width;
+ m_snapshot_height = height;
- return 0;
+ return 0;
}
-int SecCamera::getSnapshotSize(int * width, int * height, int * frame_size)
+int SecCamera::getSnapshotSize(int *width, int *height, int *frame_size)
{
- *width = m_snapshot_width;
- *height = m_snapshot_height;
+ *width = m_snapshot_width;
+ *height = m_snapshot_height;
+
+ int frame = 0;
- int frame = 0;
+ frame = m_frameSize(m_snapshot_v4lformat, m_snapshot_width, m_snapshot_height);
- frame = m_frameSize(m_snapshot_v4lformat, m_snapshot_width, m_snapshot_height);
-
- // set it big.
- if(frame == 0)
- frame = m_snapshot_width * m_snapshot_height * BPP;
-
- *frame_size = frame;
+ // set it big.
+ if (frame == 0)
+ frame = m_snapshot_width * m_snapshot_height * BPP;
- return 0;
+ *frame_size = frame;
+
+ return 0;
}
-int SecCamera::getSnapshotMaxSize(int * width, int * height)
+int SecCamera::getSnapshotMaxSize(int *width, int *height)
{
- switch(m_camera_id)
- {
- case CAMERA_ID_FRONT:
- m_snapshot_max_width = MAX_FRONT_CAMERA_SNAPSHOT_WIDTH;
- m_snapshot_max_height = MAX_FRONT_CAMERA_SNAPSHOT_HEIGHT;
- break;
+ switch (m_camera_id) {
+ case CAMERA_ID_FRONT:
+ m_snapshot_max_width = MAX_FRONT_CAMERA_SNAPSHOT_WIDTH;
+ m_snapshot_max_height = MAX_FRONT_CAMERA_SNAPSHOT_HEIGHT;
+ break;
- default:
- case CAMERA_ID_BACK:
- m_snapshot_max_width = MAX_BACK_CAMERA_SNAPSHOT_WIDTH;
- m_snapshot_max_height = MAX_BACK_CAMERA_SNAPSHOT_HEIGHT;
- break;
- }
+ default:
+ case CAMERA_ID_BACK:
+ m_snapshot_max_width = MAX_BACK_CAMERA_SNAPSHOT_WIDTH;
+ m_snapshot_max_height = MAX_BACK_CAMERA_SNAPSHOT_HEIGHT;
+ break;
+ }
- *width = m_snapshot_max_width;
- *height = m_snapshot_max_height;
+ *width = m_snapshot_max_width;
+ *height = m_snapshot_max_height;
- return 0;
+ return 0;
}
int SecCamera::setSnapshotPixelFormat(int pixel_format)
{
- int v4lpixelformat= pixel_format;
+ int v4lpixelformat= pixel_format;
+
+ if (m_snapshot_v4lformat != v4lpixelformat) {
+ m_snapshot_v4lformat = v4lpixelformat;
+ }
+
- if(m_snapshot_v4lformat != v4lpixelformat)
- {
- m_snapshot_v4lformat = v4lpixelformat;
- }
-
-
#if defined(LOG_NDEBUG) && LOG_NDEBUG == 0
- if(m_snapshot_v4lformat == V4L2_PIX_FMT_YUV420) { LOGE("%s():SnapshotFormat:V4L2_PIX_FMT_YUV420", __FUNCTION__); }
- else if(m_snapshot_v4lformat == V4L2_PIX_FMT_NV12) { LOGE("%s():SnapshotFormat:V4L2_PIX_FMT_NV12", __FUNCTION__); }
- else if(m_snapshot_v4lformat == V4L2_PIX_FMT_NV12T) { LOGE("%s():SnapshotFormat:V4L2_PIX_FMT_NV12T", __FUNCTION__); }
- else if(m_snapshot_v4lformat == V4L2_PIX_FMT_NV21) { LOGE("%s():SnapshotFormat:V4L2_PIX_FMT_NV21", __FUNCTION__); }
- else if(m_snapshot_v4lformat == V4L2_PIX_FMT_YUV422P) { LOGE("%s():SnapshotFormat:V4L2_PIX_FMT_YUV422P", __FUNCTION__); }
- else if(m_snapshot_v4lformat == V4L2_PIX_FMT_YUYV) { LOGE("%s():SnapshotFormat:V4L2_PIX_FMT_YUYV", __FUNCTION__); }
- else if(m_snapshot_v4lformat == V4L2_PIX_FMT_UYVY) { LOGE("%s():SnapshotFormat:V4L2_PIX_FMT_UYVY", __FUNCTION__); }
- else if(m_snapshot_v4lformat == V4L2_PIX_FMT_RGB565) { LOGE("%s():SnapshotFormat:V4L2_PIX_FMT_RGB565", __FUNCTION__); }
- else { LOGE("SnapshotFormat:UnknownFormat"); }
+ if (m_snapshot_v4lformat == V4L2_PIX_FMT_YUV420)
+ LOGE("%s():SnapshotFormat:V4L2_PIX_FMT_YUV420", __func__);
+ else if (m_snapshot_v4lformat == V4L2_PIX_FMT_NV12)
+ LOGE("%s():SnapshotFormat:V4L2_PIX_FMT_NV12", __func__);
+ else if (m_snapshot_v4lformat == V4L2_PIX_FMT_NV12T)
+ LOGE("%s():SnapshotFormat:V4L2_PIX_FMT_NV12T", __func__);
+ else if (m_snapshot_v4lformat == V4L2_PIX_FMT_NV21)
+ LOGE("%s():SnapshotFormat:V4L2_PIX_FMT_NV21", __func__);
+ else if (m_snapshot_v4lformat == V4L2_PIX_FMT_YUV422P)
+ LOGE("%s():SnapshotFormat:V4L2_PIX_FMT_YUV422P", __func__);
+ else if (m_snapshot_v4lformat == V4L2_PIX_FMT_YUYV)
+ LOGE("%s():SnapshotFormat:V4L2_PIX_FMT_YUYV", __func__);
+ else if (m_snapshot_v4lformat == V4L2_PIX_FMT_UYVY)
+ LOGE("%s():SnapshotFormat:V4L2_PIX_FMT_UYVY", __func__);
+ else if (m_snapshot_v4lformat == V4L2_PIX_FMT_RGB565)
+ LOGE("%s():SnapshotFormat:V4L2_PIX_FMT_RGB565", __func__);
+ else
+ LOGE("SnapshotFormat:UnknownFormat");
#endif
-
- return 0;
+ return 0;
}
int SecCamera::getSnapshotPixelFormat(void)
{
- return m_snapshot_v4lformat;
+ return m_snapshot_v4lformat;
}
@@ -2007,652 +1964,585 @@ int SecCamera::getSnapshotPixelFormat(void)
int SecCamera::setCameraId(int camera_id)
{
- if( camera_id != CAMERA_ID_FRONT
- && camera_id != CAMERA_ID_BACK)
- {
- LOGE("ERR(%s)::Invalid camera id(%d)\n", __func__, camera_id);
- return -1;
- }
- if(m_camera_id == camera_id)
- return 0;
+ if ((camera_id != CAMERA_ID_FRONT) && (camera_id != CAMERA_ID_BACK)) {
+ LOGE("ERR(%s)::Invalid camera id(%d)\n", __func__, camera_id);
+ return -1;
+ }
+ if (m_camera_id == camera_id)
+ return 0;
- LOGV("%s(camera_id(%d))", __FUNCTION__, camera_id);
-
- switch(camera_id)
- {
- case CAMERA_ID_FRONT:
+ LOGV("%s(camera_id(%d))", __func__, camera_id);
- m_preview_max_width = MAX_FRONT_CAMERA_PREVIEW_WIDTH;
- m_preview_max_height = MAX_FRONT_CAMERA_PREVIEW_HEIGHT;
- m_snapshot_max_width = MAX_FRONT_CAMERA_SNAPSHOT_WIDTH;
- m_snapshot_max_height = MAX_FRONT_CAMERA_SNAPSHOT_HEIGHT;
- break;
+ switch (camera_id) {
+ case CAMERA_ID_FRONT:
+ m_preview_max_width = MAX_FRONT_CAMERA_PREVIEW_WIDTH;
+ m_preview_max_height = MAX_FRONT_CAMERA_PREVIEW_HEIGHT;
+ m_snapshot_max_width = MAX_FRONT_CAMERA_SNAPSHOT_WIDTH;
+ m_snapshot_max_height = MAX_FRONT_CAMERA_SNAPSHOT_HEIGHT;
+ break;
- case CAMERA_ID_BACK:
- m_preview_max_width = MAX_BACK_CAMERA_PREVIEW_WIDTH;
- m_preview_max_height = MAX_BACK_CAMERA_PREVIEW_HEIGHT;
- m_snapshot_max_width = MAX_BACK_CAMERA_SNAPSHOT_WIDTH;
- m_snapshot_max_height = MAX_BACK_CAMERA_SNAPSHOT_HEIGHT;
- break;
- }
+ case CAMERA_ID_BACK:
+ m_preview_max_width = MAX_BACK_CAMERA_PREVIEW_WIDTH;
+ m_preview_max_height = MAX_BACK_CAMERA_PREVIEW_HEIGHT;
+ m_snapshot_max_width = MAX_BACK_CAMERA_SNAPSHOT_WIDTH;
+ m_snapshot_max_height = MAX_BACK_CAMERA_SNAPSHOT_HEIGHT;
+ break;
+ }
- m_camera_id = camera_id;
-
- resetCamera();
+ m_camera_id = camera_id;
- return 0;
+ resetCamera();
+
+ return 0;
}
int SecCamera::getCameraId(void)
{
- return m_camera_id;
+ return m_camera_id;
}
// -----------------------------------
int SecCamera::setAutofocus(void)
{
- LOGV("%s()", __FUNCTION__);
+ LOGV("%s()", __func__);
#ifdef SWP1_CAMERA_ADD_ADVANCED_FUNCTION
- if(m_cam_fd <= 0)
- {
- LOGE("ERR(%s):Camera was closed\n", __FUNCTION__);
- return -1;
- }
-
- if (fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_SET_AUTO_FOCUS, AUTO_FOCUS_ON) < 0)
- {
- LOGE("ERR(%s):Fail on V4L2_CID_CAMERA_SET_AUTO_FOCUS", __FUNCTION__);
- return -1;
- }
+ if (m_cam_fd <= 0) {
+ LOGE("ERR(%s):Camera was closed\n", __func__);
+ return -1;
+ }
+
+ if (fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_SET_AUTO_FOCUS, AUTO_FOCUS_ON) < 0) {
+ LOGE("ERR(%s):Fail on V4L2_CID_CAMERA_SET_AUTO_FOCUS", __func__);
+ return -1;
+ }
#else
- // kcoolsw : turn on setAutofocus initially..
- if(m_autofocus != AUTO_FOCUS_ON)
- {
- m_autofocus = AUTO_FOCUS_ON;
- }
+ // kcoolsw : turn on setAutofocus initially..
+ if (m_autofocus != AUTO_FOCUS_ON) {
+ m_autofocus = AUTO_FOCUS_ON;
+ }
#endif
- return 0;
-}
+ return 0;
+}
#ifdef SWP1_CAMERA_ADD_ADVANCED_FUNCTION
int SecCamera::getAutoFocusResult(void)
{
- int af_result = 0;
- af_result = fimc_v4l2_g_ctrl(m_cam_fd, V4L2_CID_CAMERA_AUTO_FOCUS_RESULT);
- return af_result;
+ int af_result = 0;
+
+ af_result = fimc_v4l2_g_ctrl(m_cam_fd, V4L2_CID_CAMERA_AUTO_FOCUS_RESULT);
+ return af_result;
}
int SecCamera::cancelAutofocus(void)
{
- LOGV("%s()", __FUNCTION__);
-
- if(m_cam_fd <= 0)
- {
- LOGE("ERR(%s):Camera was closed\n", __FUNCTION__);
- return -1;
- }
-
- if (fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_SET_AUTO_FOCUS, AUTO_FOCUS_OFF) < 0)
- {
- LOGE("ERR(%s):Fail on V4L2_CID_CAMERA_SET_AUTO_FOCUS", __FUNCTION__);
- return -1;
- }
-
- usleep(1000);
-
- if (fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_SET_AUTO_FOCUS, AUTO_FOCUS_STATUS) < 0)
- {
- LOGE("ERR(%s):Fail on V4L2_CID_CAMERA_SET_AUTO_FOCUS", __FUNCTION__);
- return -1;
- }
- return 0;
-}
+ LOGV("%s()", __func__);
+
+ if (m_cam_fd <= 0) {
+ LOGE("ERR(%s):Camera was closed\n", __func__);
+ return -1;
+ }
+
+ if (fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_SET_AUTO_FOCUS, AUTO_FOCUS_OFF) < 0) {
+ LOGE("ERR(%s):Fail on V4L2_CID_CAMERA_SET_AUTO_FOCUS", __func__);
+ return -1;
+ }
+
+ usleep(1000);
+
+ if (fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_SET_AUTO_FOCUS, AUTO_FOCUS_STATUS) < 0) {
+ LOGE("ERR(%s):Fail on V4L2_CID_CAMERA_SET_AUTO_FOCUS", __func__);
+ return -1;
+ }
+ return 0;
+}
#endif
// -----------------------------------
int SecCamera::zoomIn(void)
{
- LOGV("%s()", __FUNCTION__);
- return 0;
+ LOGV("%s()", __func__);
+ return 0;
}
int SecCamera::zoomOut(void)
{
- LOGV("%s()", __FUNCTION__);
- return 0;
+ LOGV("%s()", __func__);
+ return 0;
}
// -----------------------------------
int SecCamera::SetRotate(int angle)
{
- LOGE("%s(angle(%d))", __FUNCTION__, angle);
+ LOGE("%s(angle(%d))", __func__, angle);
#ifdef SWP1_CAMERA_ADD_ADVANCED_FUNCTION
- if(m_angle != angle)
- {
- switch(angle)
- {
- case -360 :
- case 0 :
- case 360 :
- m_angle = 0;
- break;
-
- case -270 :
- case 90 :
- m_angle = 90;
- break;
-
- case -180 :
- case 180 :
- m_angle = 180;
- break;
-
- case -90 :
- case 270 :
- m_angle = 270;
- break;
-
- default :
- LOGE("ERR(%s):Invalid angle(%d)", __FUNCTION__, angle);
- return -1;
- }
-
-
- if(m_flag_camera_start)
- {
- if (fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_ROTATION, angle) < 0)
- {
- LOGE("ERR(%s):Fail on V4L2_CID_ROTATION", __FUNCTION__);
- return -1;
- }
- }
- }
-#endif
- return 0;
+ if (m_angle != angle) {
+ switch (angle) {
+ case -360:
+ case 0:
+ case 360:
+ m_angle = 0;
+ break;
+
+ case -270:
+ case 90:
+ m_angle = 90;
+ break;
+
+ case -180:
+ case 180:
+ m_angle = 180;
+ break;
+
+ case -90:
+ case 270:
+ m_angle = 270;
+ break;
+
+ default:
+ LOGE("ERR(%s):Invalid angle(%d)", __func__, angle);
+ return -1;
+ }
+
+ if (m_flag_camera_start) {
+ if (fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_ROTATION, angle) < 0) {
+ LOGE("ERR(%s):Fail on V4L2_CID_ROTATION", __func__);
+ return -1;
+ }
+ }
+ }
+#endif
+ return 0;
}
int SecCamera::getRotate(void)
{
- LOGV("%s():angle(%d)", __FUNCTION__, m_angle);
- return m_angle;
+ LOGV("%s():angle(%d)", __func__, m_angle);
+ return m_angle;
}
void SecCamera::setFrameRate(int frame_rate)
{
#ifdef SWP1_CAMERA_ADD_ADVANCED_FUNCTION
- LOGV("%s(FrameRate(%d))", __FUNCTION__, frame_rate);
-
- if(frame_rate < FRAME_RATE_AUTO || FRAME_RATE_MAX < frame_rate )
- LOGE("ERR(%s):Invalid frame_rate(%d)", __FUNCTION__, frame_rate);
-
- if(m_fps != frame_rate)
- {
- m_fps = frame_rate;
- if(m_flag_camera_start)
- {
- if (fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_FRAME_RATE, frame_rate) < 0)
- LOGE("ERR(%s):Fail on V4L2_CID_CAMERA_FRAME_RATE", __FUNCTION__);
- }
- }
+ LOGV("%s(FrameRate(%d))", __func__, frame_rate);
+
+ if (frame_rate < FRAME_RATE_AUTO || FRAME_RATE_MAX < frame_rate )
+ LOGE("ERR(%s):Invalid frame_rate(%d)", __func__, frame_rate);
+
+ if (m_fps != frame_rate) {
+ m_fps = frame_rate;
+ if (m_flag_camera_start) {
+ if (fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_FRAME_RATE, frame_rate) < 0)
+ LOGE("ERR(%s):Fail on V4L2_CID_CAMERA_FRAME_RATE", __func__);
+ }
+ }
#else
- m_fps = frame_rate;
+ m_fps = frame_rate;
#endif
-
+
}
/* kidggang (10.7.5) - Problem - After jpegquality is capture, operation setting is normal.
void SecCamera::setJpegQuality(int quality)
{
- m_jpeg_quality = quality;
+ m_jpeg_quality = quality;
}
*/
// -----------------------------------
int SecCamera::setVerticalMirror(void)
{
- LOGV("%s()", __FUNCTION__);
-
- if(m_cam_fd <= 0)
- {
- LOGE("ERR(%s):Camera was closed\n", __FUNCTION__);
- return -1;
- }
+ LOGV("%s()", __func__);
+
+ if (m_cam_fd <= 0) {
+ LOGE("ERR(%s):Camera was closed\n", __func__);
+ return -1;
+ }
- if (fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_VFLIP, 0) < 0)
- {
- LOGE("ERR(%s):Fail on V4L2_CID_VFLIP", __FUNCTION__);
- return -1;
- }
+ if (fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_VFLIP, 0) < 0) {
+ LOGE("ERR(%s):Fail on V4L2_CID_VFLIP", __func__);
+ return -1;
+ }
- return 0;
+ return 0;
}
int SecCamera::setHorizontalMirror(void)
{
- LOGV("%s()", __FUNCTION__);
-
- if(m_cam_fd <= 0)
- {
- LOGE("ERR(%s):Camera was closed\n", __FUNCTION__);
- return -1;
- }
+ LOGV("%s()", __func__);
+
+ if (m_cam_fd <= 0) {
+ LOGE("ERR(%s):Camera was closed\n", __func__);
+ return -1;
+ }
- if (fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_HFLIP, 0) < 0)
- {
- LOGE("ERR(%s):Fail on V4L2_CID_HFLIP", __FUNCTION__);
- return -1;
- }
+ if (fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_HFLIP, 0) < 0) {
+ LOGE("ERR(%s):Fail on V4L2_CID_HFLIP", __func__);
+ return -1;
+ }
- return 0;
+ return 0;
}
// -----------------------------------
int SecCamera::setWhiteBalance(int white_balance)
{
- LOGV("%s(white_balance(%d))", __FUNCTION__, white_balance);
+ LOGV("%s(white_balance(%d))", __func__, white_balance);
-#ifdef SWP1_CAMERA_ADD_ADVANCED_FUNCTION
- if(white_balance <= WHITE_BALANCE_BASE || WHITE_BALANCE_MAX <= white_balance)
+#ifdef SWP1_CAMERA_ADD_ADVANCED_FUNCTION
+ if (white_balance <= WHITE_BALANCE_BASE || WHITE_BALANCE_MAX <= white_balance) {
#else
- if(white_balance < WHITE_BALANCE_AUTO || WHITE_BALANCE_SUNNY < white_balance)
+ if (white_balance < WHITE_BALANCE_AUTO || WHITE_BALANCE_SUNNY < white_balance) {
#endif
- {
- LOGE("ERR(%s):Invalid white_balance(%d)", __FUNCTION__, white_balance);
- return -1;
- }
-
- if(m_white_balance != white_balance)
- {
- m_white_balance = white_balance;
+ LOGE("ERR(%s):Invalid white_balance(%d)", __func__, white_balance);
+ return -1;
+ }
+
+ if (m_white_balance != white_balance) {
+ m_white_balance = white_balance;
#ifdef SWP1_CAMERA_ADD_ADVANCED_FUNCTION
- if(m_flag_camera_start)
- {
- if (fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_WHITE_BALANCE, white_balance) < 0)
- {
- LOGE("ERR(%s):Fail on V4L2_CID_CAMERA_WHITE_BALANCE", __FUNCTION__);
- return -1;
- }
- }
+ if (m_flag_camera_start) {
+ if (fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_WHITE_BALANCE, white_balance) < 0) {
+ LOGE("ERR(%s):Fail on V4L2_CID_CAMERA_WHITE_BALANCE", __func__);
+ return -1;
+ }
+ }
#endif
- }
+ }
- return 0;
+ return 0;
}
int SecCamera::getWhiteBalance(void)
{
- LOGV("%s():white_balance(%d)", __FUNCTION__, m_white_balance);
- return m_white_balance;
+ LOGV("%s():white_balance(%d)", __func__, m_white_balance);
+ return m_white_balance;
}
// -----------------------------------
int SecCamera::setBrightness(int brightness)
-{
- LOGV("%s(brightness(%d))", __FUNCTION__, brightness);
-
- if(brightness < BRIGHTNESS_MINUS_4|| BRIGHTNESS_PLUS_4< brightness )
- {
- LOGE("ERR(%s):Invalid brightness(%d)", __FUNCTION__, brightness);
- return -1;
- }
-
- if(m_brightness != brightness)
- {
- m_brightness = brightness;
+{
+ LOGV("%s(brightness(%d))", __func__, brightness);
+
+ if (brightness < BRIGHTNESS_MINUS_4 || BRIGHTNESS_PLUS_4 < brightness) {
+ LOGE("ERR(%s):Invalid brightness(%d)", __func__, brightness);
+ return -1;
+ }
+
+ if (m_brightness != brightness) {
+ m_brightness = brightness;
#ifdef SWP1_CAMERA_ADD_ADVANCED_FUNCTION
- if(m_flag_camera_start)
- {
- if (fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_BRIGHTNESS, brightness + BRIGHTNESS_NORMAL) < 0)
- {
- LOGE("ERR(%s):Fail on V4L2_CID_CAMERA_BRIGHTNESS", __FUNCTION__);
- return -1;
- }
- }
+ if (m_flag_camera_start) {
+ if (fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_BRIGHTNESS, brightness + BRIGHTNESS_NORMAL) < 0) {
+ LOGE("ERR(%s):Fail on V4L2_CID_CAMERA_BRIGHTNESS", __func__);
+ return -1;
+ }
+ }
#endif
- }
+ }
- return 0;
+ return 0;
}
int SecCamera::getBrightness(void)
{
- LOGV("%s():brightness(%d)", __FUNCTION__, m_brightness);
- return m_brightness;
+ LOGV("%s():brightness(%d)", __func__, m_brightness);
+ return m_brightness;
}
// -----------------------------------
int SecCamera::setImageEffect(int image_effect)
{
- LOGV("%s(image_effect(%d))", __FUNCTION__, image_effect);
-
+ LOGV("%s(image_effect(%d))", __func__, image_effect);
+
#ifdef SWP1_CAMERA_ADD_ADVANCED_FUNCTION
- if(image_effect <= IMAGE_EFFECT_BASE || IMAGE_EFFECT_MAX <= image_effect)
+ if (image_effect <= IMAGE_EFFECT_BASE || IMAGE_EFFECT_MAX <= image_effect) {
#else
- if(image_effect < IMAGE_EFFECT_ORIGINAL || IMAGE_EFFECT_SILHOUETTE < image_effect)
+ if (image_effect < IMAGE_EFFECT_ORIGINAL || IMAGE_EFFECT_SILHOUETTE < image_effect) {
#endif
- {
- LOGE("ERR(%s):Invalid image_effect(%d)", __FUNCTION__, image_effect);
- return -1;
- }
-
- if(m_image_effect != image_effect)
- {
- m_image_effect = image_effect;
+ LOGE("ERR(%s):Invalid image_effect(%d)", __func__, image_effect);
+ return -1;
+ }
+
+ if (m_image_effect != image_effect) {
+ m_image_effect = image_effect;
#ifdef SWP1_CAMERA_ADD_ADVANCED_FUNCTION
- if(m_flag_camera_start)
- {
- if (fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_EFFECT, image_effect) < 0)
- {
- LOGE("ERR(%s):Fail on V4L2_CID_CAMERA_EFFECT", __FUNCTION__);
- return -1;
- }
- }
+ if (m_flag_camera_start) {
+ if (fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_EFFECT, image_effect) < 0) {
+ LOGE("ERR(%s):Fail on V4L2_CID_CAMERA_EFFECT", __func__);
+ return -1;
+ }
+ }
#endif
- }
+ }
- return 0;
+ return 0;
}
int SecCamera::getImageEffect(void)
{
- LOGV("%s():image_effect(%d)", __FUNCTION__, m_image_effect);
- return m_image_effect;
+ LOGV("%s():image_effect(%d)", __func__, m_image_effect);
+ return m_image_effect;
}
// ======================================================================
#ifdef SWP1_CAMERA_ADD_ADVANCED_FUNCTION
int SecCamera::setAntiBanding(int anti_banding)
{
- LOGV("%s(anti_banding(%d))", __FUNCTION__, anti_banding);
-
- if(anti_banding < ANTI_BANDING_AUTO|| ANTI_BANDING_OFF < anti_banding)
- {
- LOGE("ERR(%s):Invalid anti_banding (%d)", __FUNCTION__, anti_banding);
- return -1;
- }
-
- if(m_anti_banding != anti_banding)
- {
- m_anti_banding = anti_banding;
- if(m_flag_camera_start)
- {
- if (fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_ANTI_BANDING, anti_banding) < 0)
- {
- LOGE("ERR(%s):Fail on V4L2_CID_CAMERA_ANTI_BANDING", __FUNCTION__);
- return -1;
- }
- }
- }
-
- return 0;
+ LOGV("%s(anti_banding(%d))", __func__, anti_banding);
+
+ if (anti_banding < ANTI_BANDING_AUTO || ANTI_BANDING_OFF < anti_banding) {
+ LOGE("ERR(%s):Invalid anti_banding (%d)", __func__, anti_banding);
+ return -1;
+ }
+
+ if (m_anti_banding != anti_banding) {
+ m_anti_banding = anti_banding;
+ if (m_flag_camera_start) {
+ if (fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_ANTI_BANDING, anti_banding) < 0) {
+ LOGE("ERR(%s):Fail on V4L2_CID_CAMERA_ANTI_BANDING", __func__);
+ return -1;
+ }
+ }
+ }
+
+ return 0;
}
//======================================================================
int SecCamera::setSceneMode(int scene_mode)
{
- LOGV("%s(scene_mode(%d))", __FUNCTION__, scene_mode);
-
- if(scene_mode <= SCENE_MODE_BASE || SCENE_MODE_MAX <= scene_mode)
- {
- LOGE("ERR(%s):Invalid scene_mode (%d)", __FUNCTION__, scene_mode);
- return -1;
- }
-
- if(m_scene_mode != scene_mode)
- {
- m_scene_mode = scene_mode;
- if(m_flag_camera_start)
- {
- if (fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_SCENE_MODE, m_scene_mode) < 0)
- {
- LOGE("ERR(%s):Fail on V4L2_CID_CAMERA_SCENE_MODE", __FUNCTION__);
- return -1;
- }
- }
- }
+ LOGV("%s(scene_mode(%d))", __func__, scene_mode);
+
+ if (scene_mode <= SCENE_MODE_BASE || SCENE_MODE_MAX <= scene_mode) {
+ LOGE("ERR(%s):Invalid scene_mode (%d)", __func__, scene_mode);
+ return -1;
+ }
+
+ if (m_scene_mode != scene_mode) {
+ m_scene_mode = scene_mode;
+ if (m_flag_camera_start) {
+ if (fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_SCENE_MODE, m_scene_mode) < 0) {
+ LOGE("ERR(%s):Fail on V4L2_CID_CAMERA_SCENE_MODE", __func__);
+ return -1;
+ }
+ }
+ }
- return 0;
+ return 0;
}
-int SecCamera::getSceneMode(void)
+int SecCamera::getSceneMode(void)
{
- return m_scene_mode;
+ return m_scene_mode;
}
//======================================================================
int SecCamera::setFlashMode(int flash_mode)
{
- LOGV("%s(flash_mode(%d))", __FUNCTION__, flash_mode);
-
- if(flash_mode <= FLASH_MODE_BASE || FLASH_MODE_MAX <= flash_mode)
- {
- LOGE("ERR(%s):Invalid flash_mode (%d)", __FUNCTION__, flash_mode);
- return -1;
- }
-
- if(m_flash_mode != flash_mode)
- {
- m_flash_mode = flash_mode;
- if(m_flag_camera_start)
- {
- if (fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_FLASH_MODE, flash_mode) < 0)
- {
- LOGE("ERR(%s):Fail on V4L2_CID_CAMERA_FLASH_MODE", __FUNCTION__);
- return -1;
- }
- }
- }
+ LOGV("%s(flash_mode(%d))", __func__, flash_mode);
+
+ if (flash_mode <= FLASH_MODE_BASE || FLASH_MODE_MAX <= flash_mode) {
+ LOGE("ERR(%s):Invalid flash_mode (%d)", __func__, flash_mode);
+ return -1;
+ }
- return 0;
+ if (m_flash_mode != flash_mode) {
+ m_flash_mode = flash_mode;
+ if (m_flag_camera_start) {
+ if (fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_FLASH_MODE, flash_mode) < 0) {
+ LOGE("ERR(%s):Fail on V4L2_CID_CAMERA_FLASH_MODE", __func__);
+ return -1;
+ }
+ }
+ }
+
+ return 0;
}
-int SecCamera::getFlashMode(void)
+int SecCamera::getFlashMode(void)
{
- return m_flash_mode;
+ return m_flash_mode;
}
//======================================================================
int SecCamera::setISO(int iso_value)
{
- LOGV("%s(iso_value(%d))", __FUNCTION__, iso_value);
- if(iso_value <ISO_AUTO || ISO_MAX <= iso_value)
- {
- LOGE("ERR(%s):Invalid iso_value (%d)", __FUNCTION__, iso_value);
- return -1;
- }
-
- if(m_iso != iso_value)
- {
- m_iso = iso_value;
- if(m_flag_camera_start)
- {
- if (fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_ISO, iso_value) < 0)
- {
- LOGE("ERR(%s):Fail on V4L2_CID_CAMERA_ISO", __FUNCTION__);
- return -1;
- }
- }
- }
+ LOGV("%s(iso_value(%d))", __func__, iso_value);
+ if (iso_value < ISO_AUTO || ISO_MAX <= iso_value) {
+ LOGE("ERR(%s):Invalid iso_value (%d)", __func__, iso_value);
+ return -1;
+ }
+
+ if (m_iso != iso_value)
+ {
+ m_iso = iso_value;
+ if (m_flag_camera_start) {
+ if (fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_ISO, iso_value) < 0) {
+ LOGE("ERR(%s):Fail on V4L2_CID_CAMERA_ISO", __func__);
+ return -1;
+ }
+ }
+ }
- return 0;
+ return 0;
}
-int SecCamera::getISO(void)
+int SecCamera::getISO(void)
{
- return m_iso;
+ return m_iso;
}
//======================================================================
int SecCamera::setContrast(int contrast_value)
{
- LOGV("%s(contrast_value(%d))", __FUNCTION__, contrast_value);
-
- if(contrast_value <CONTRAST_MINUS_2|| CONTRAST_MAX<= contrast_value)
- {
- LOGE("ERR(%s):Invalid contrast_value (%d)", __FUNCTION__, contrast_value);
- return -1;
- }
-
- if(m_contrast != contrast_value)
- {
- m_contrast = contrast_value;
- if(m_flag_camera_start)
- {
- if (fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_CONTRAST, contrast_value) < 0)
- {
- LOGE("ERR(%s):Fail on V4L2_CID_CAMERA_CONTRAST", __FUNCTION__);
- return -1;
- }
- }
- }
+ LOGV("%s(contrast_value(%d))", __func__, contrast_value);
+
+ if (contrast_value < CONTRAST_MINUS_2 || CONTRAST_MAX <= contrast_value) {
+ LOGE("ERR(%s):Invalid contrast_value (%d)", __func__, contrast_value);
+ return -1;
+ }
- return 0;
+ if (m_contrast != contrast_value) {
+ m_contrast = contrast_value;
+ if (m_flag_camera_start) {
+ if (fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_CONTRAST, contrast_value) < 0) {
+ LOGE("ERR(%s):Fail on V4L2_CID_CAMERA_CONTRAST", __func__);
+ return -1;
+ }
+ }
+ }
+
+ return 0;
}
-int SecCamera::getContrast(void)
+int SecCamera::getContrast(void)
{
- return m_contrast;
+ return m_contrast;
}
//======================================================================
int SecCamera::setSaturation(int saturation_value)
{
- LOGV("%s(saturation_value(%d))", __FUNCTION__, saturation_value);
-
- if(saturation_value <SATURATION_MINUS_2|| SATURATION_MAX<= saturation_value)
- {
- LOGE("ERR(%s):Invalid saturation_value (%d)", __FUNCTION__, saturation_value);
- return -1;
- }
-
- if(m_saturation!= saturation_value)
- {
- m_saturation = saturation_value;
- if(m_flag_camera_start)
- {
- if (fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_SATURATION, saturation_value) < 0)
- {
- LOGE("ERR(%s):Fail on V4L2_CID_CAMERA_SATURATION", __FUNCTION__);
- return -1;
- }
- }
- }
+ LOGV("%s(saturation_value(%d))", __func__, saturation_value);
- return 0;
+ if (saturation_value <SATURATION_MINUS_2 || SATURATION_MAX<= saturation_value) {
+ LOGE("ERR(%s):Invalid saturation_value (%d)", __func__, saturation_value);
+ return -1;
+ }
+
+ if (m_saturation != saturation_value) {
+ m_saturation = saturation_value;
+ if (m_flag_camera_start) {
+ if (fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_SATURATION, saturation_value) < 0) {
+ LOGE("ERR(%s):Fail on V4L2_CID_CAMERA_SATURATION", __func__);
+ return -1;
+ }
+ }
+ }
+
+ return 0;
}
-int SecCamera::getSaturation(void)
+int SecCamera::getSaturation(void)
{
- return m_saturation;
+ return m_saturation;
}
//======================================================================
int SecCamera::setSharpness(int sharpness_value)
{
- LOGV("%s(sharpness_value(%d))", __FUNCTION__, sharpness_value);
-
- if(sharpness_value <SHARPNESS_MINUS_2|| SHARPNESS_MAX<= sharpness_value)
- {
- LOGE("ERR(%s):Invalid sharpness_value (%d)", __FUNCTION__, sharpness_value);
- return -1;
- }
-
- if(m_sharpness!= sharpness_value)
- {
- m_sharpness = sharpness_value;
- if(m_flag_camera_start)
- {
- if (fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_SHARPNESS, sharpness_value) < 0)
- {
- LOGE("ERR(%s):Fail on V4L2_CID_CAMERA_SHARPNESS", __FUNCTION__);
- return -1;
- }
- }
- }
+ LOGV("%s(sharpness_value(%d))", __func__, sharpness_value);
+
+ if (sharpness_value < SHARPNESS_MINUS_2 || SHARPNESS_MAX <= sharpness_value) {
+ LOGE("ERR(%s):Invalid sharpness_value (%d)", __func__, sharpness_value);
+ return -1;
+ }
- return 0;
+ if (m_sharpness != sharpness_value) {
+ m_sharpness = sharpness_value;
+ if (m_flag_camera_start) {
+ if (fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_SHARPNESS, sharpness_value) < 0) {
+ LOGE("ERR(%s):Fail on V4L2_CID_CAMERA_SHARPNESS", __func__);
+ return -1;
+ }
+ }
+ }
+
+ return 0;
}
-int SecCamera::getSharpness(void)
+int SecCamera::getSharpness(void)
{
- return m_sharpness;
+ return m_sharpness;
}
//======================================================================
int SecCamera::setWDR(int wdr_value)
{
- LOGV("%s(wdr_value(%d))", __FUNCTION__, wdr_value);
-
- if(wdr_value<WDR_OFF || WDR_MAX<= wdr_value)
- {
- LOGE("ERR(%s):Invalid wdr_value (%d)", __FUNCTION__, wdr_value);
- return -1;
- }
-
- if(m_wdr!= wdr_value)
- {
- m_wdr = wdr_value;
- if(m_flag_camera_start)
- {
- if (fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_WDR, wdr_value) < 0)
- {
- LOGE("ERR(%s):Fail on V4L2_CID_CAMERA_WDR", __FUNCTION__);
- return -1;
- }
- }
- }
+ LOGV("%s(wdr_value(%d))", __func__, wdr_value);
+
+ if (wdr_value < WDR_OFF || WDR_MAX <= wdr_value) {
+ LOGE("ERR(%s):Invalid wdr_value (%d)", __func__, wdr_value);
+ return -1;
+ }
+
+ if (m_wdr != wdr_value) {
+ m_wdr = wdr_value;
+ if (m_flag_camera_start) {
+ if (fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_WDR, wdr_value) < 0) {
+ LOGE("ERR(%s):Fail on V4L2_CID_CAMERA_WDR", __func__);
+ return -1;
+ }
+ }
+ }
- return 0;
+ return 0;
}
-int SecCamera::getWDR(void)
+int SecCamera::getWDR(void)
{
- return m_wdr;
+ return m_wdr;
}
//======================================================================
int SecCamera::setAntiShake(int anti_shake)
{
- LOGV("%s(anti_shake(%d))", __FUNCTION__, anti_shake);
-
- if(anti_shake<ANTI_SHAKE_OFF || ANTI_SHAKE_MAX<= anti_shake)
- {
- LOGE("ERR(%s):Invalid anti_shake (%d)", __FUNCTION__, anti_shake);
- return -1;
- }
-
- if(m_anti_shake!= anti_shake)
- {
- m_anti_shake = anti_shake;
- if(m_flag_camera_start)
- {
- if (fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_ANTI_SHAKE, anti_shake) < 0)
- {
- LOGE("ERR(%s):Fail on V4L2_CID_CAMERA_ANTI_SHAKE", __FUNCTION__);
- return -1;
- }
- }
- }
+ LOGV("%s(anti_shake(%d))", __func__, anti_shake);
+
+ if (anti_shake < ANTI_SHAKE_OFF || ANTI_SHAKE_MAX <= anti_shake) {
+ LOGE("ERR(%s):Invalid anti_shake (%d)", __func__, anti_shake);
+ return -1;
+ }
- return 0;
+ if (m_anti_shake != anti_shake) {
+ m_anti_shake = anti_shake;
+ if (m_flag_camera_start) {
+ if (fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_ANTI_SHAKE, anti_shake) < 0) {
+ LOGE("ERR(%s):Fail on V4L2_CID_CAMERA_ANTI_SHAKE", __func__);
+ return -1;
+ }
+ }
+ }
+
+ return 0;
}
-int SecCamera::getAntiShake(void)
+int SecCamera::getAntiShake(void)
{
- return m_anti_shake;
+ return m_anti_shake;
}
//======================================================================
@@ -2660,720 +2550,645 @@ int SecCamera::getAntiShake(void)
int SecCamera::setMetering(int metering_value)
{
- LOGV("%s(metering (%d))", __FUNCTION__, metering_value);
-
- if(metering_value <= METERING_BASE || METERING_MAX <= metering_value)
- {
- LOGE("ERR(%s):Invalid metering_value (%d)", __FUNCTION__, metering_value);
- return -1;
- }
-
- if(m_metering != metering_value)
- {
- m_metering = metering_value;
- if(m_flag_camera_start)
- {
- if (fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_METERING, metering_value) < 0)
- {
- LOGE("ERR(%s):Fail on V4L2_CID_CAMERA_METERING", __FUNCTION__);
- return -1;
- }
- }
- }
+ LOGV("%s(metering (%d))", __func__, metering_value);
+
+ if (metering_value <= METERING_BASE || METERING_MAX <= metering_value) {
+ LOGE("ERR(%s):Invalid metering_value (%d)", __func__, metering_value);
+ return -1;
+ }
+
+ if (m_metering != metering_value) {
+ m_metering = metering_value;
+ if (m_flag_camera_start) {
+ if (fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_METERING, metering_value) < 0) {
+ LOGE("ERR(%s):Fail on V4L2_CID_CAMERA_METERING", __func__);
+ return -1;
+ }
+ }
+ }
- return 0;
+ return 0;
}
-int SecCamera::getMetering(void)
+int SecCamera::getMetering(void)
{
- return m_metering;
+ return m_metering;
}
//======================================================================
int SecCamera::setJpegQuality(int jpeg_quality)
{
- LOGV("%s(jpeg_quality (%d))", __FUNCTION__, jpeg_quality);
-
- if(jpeg_quality < JPEG_QUALITY_ECONOMY|| JPEG_QUALITY_MAX<= jpeg_quality)
- {
- LOGE("ERR(%s):Invalid jpeg_quality (%d)", __FUNCTION__, jpeg_quality);
- return -1;
- }
-
- if(m_jpeg_quality != jpeg_quality)
- {
- m_jpeg_quality = jpeg_quality;
- if (fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAM_JPEG_QUALITY, jpeg_quality) < 0)
- {
- LOGE("ERR(%s):Fail on V4L2_CID_CAM_JPEG_QUALITY", __FUNCTION__);
- return -1;
- }
- }
+ LOGV("%s(jpeg_quality (%d))", __func__, jpeg_quality);
+
+ if (jpeg_quality < JPEG_QUALITY_ECONOMY || JPEG_QUALITY_MAX <= jpeg_quality) {
+ LOGE("ERR(%s):Invalid jpeg_quality (%d)", __func__, jpeg_quality);
+ return -1;
+ }
+
+ if (m_jpeg_quality != jpeg_quality) {
+ m_jpeg_quality = jpeg_quality;
+ if (fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAM_JPEG_QUALITY, jpeg_quality) < 0) {
+ LOGE("ERR(%s):Fail on V4L2_CID_CAM_JPEG_QUALITY", __func__);
+ return -1;
+ }
+ }
- return 0;
+ return 0;
}
-int SecCamera::getJpegQuality(void)
+int SecCamera::getJpegQuality(void)
{
- return m_jpeg_quality;
+ return m_jpeg_quality;
}
//======================================================================
int SecCamera::setZoom(int zoom_level)
{
- LOGV("%s(zoom_level (%d))", __FUNCTION__, zoom_level);
-
- if(zoom_level < ZOOM_LEVEL_0|| ZOOM_LEVEL_MAX<= zoom_level)
- {
- LOGE("ERR(%s):Invalid zoom_level (%d)", __FUNCTION__, zoom_level);
- return -1;
- }
-
- if(m_zoom_level != zoom_level)
- {
- m_zoom_level = zoom_level;
+ LOGV("%s(zoom_level (%d))", __func__, zoom_level);
+
+ if (zoom_level < ZOOM_LEVEL_0 || ZOOM_LEVEL_MAX <= zoom_level) {
+ LOGE("ERR(%s):Invalid zoom_level (%d)", __func__, zoom_level);
+ return -1;
+ }
+
+ if (m_zoom_level != zoom_level) {
+ m_zoom_level = zoom_level;
- if(m_flag_camera_start)
- {
- if (fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_ZOOM, zoom_level) < 0)
- {
- LOGE("ERR(%s):Fail on V4L2_CID_CAMERA_ZOOM", __FUNCTION__);
- return -1;
- }
- }
- }
+ if (m_flag_camera_start) {
+ if (fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_ZOOM, zoom_level) < 0) {
+ LOGE("ERR(%s):Fail on V4L2_CID_CAMERA_ZOOM", __func__);
+ return -1;
+ }
+ }
+ }
- return 0;
+ return 0;
}
-int SecCamera::getZoom(void)
+int SecCamera::getZoom(void)
{
- return m_zoom_level;
+ return m_zoom_level;
}
//======================================================================
int SecCamera::setObjectTracking(int object_tracking)
{
- LOGV("%s(object_tracking (%d))", __FUNCTION__, object_tracking);
-
- if(object_tracking < OBJECT_TRACKING_OFF|| OBJECT_TRACKING_MAX<= object_tracking)
- {
- LOGE("ERR(%s):Invalid object_tracking (%d)", __FUNCTION__, object_tracking);
- return -1;
- }
-
- if(m_object_tracking != object_tracking)
- {
- m_object_tracking = object_tracking;
- }
+ LOGV("%s(object_tracking (%d))", __func__, object_tracking);
+
+ if (object_tracking < OBJECT_TRACKING_OFF || OBJECT_TRACKING_MAX <= object_tracking) {
+ LOGE("ERR(%s):Invalid object_tracking (%d)", __func__, object_tracking);
+ return -1;
+ }
- return 0;
+ if (m_object_tracking != object_tracking) {
+ m_object_tracking = object_tracking;
+ }
+
+ return 0;
}
-int SecCamera::getObjectTracking(void)
+int SecCamera::getObjectTracking(void)
{
- return m_object_tracking;
+ return m_object_tracking;
}
int SecCamera::getObjectTrackingStatus(void)
{
- int obj_status = 0;
- obj_status = fimc_v4l2_g_ctrl(m_cam_fd, V4L2_CID_CAMERA_OBJ_TRACKING_STATUS);
- return obj_status;
+ int obj_status = 0;
+ obj_status = fimc_v4l2_g_ctrl(m_cam_fd, V4L2_CID_CAMERA_OBJ_TRACKING_STATUS);
+ return obj_status;
}
int SecCamera::setObjectTrackingStartStop(int start_stop)
{
- LOGV("%s(object_tracking_start_stop (%d))", __FUNCTION__, start_stop);
-
- if(m_object_tracking_start_stop != start_stop)
- {
- m_object_tracking_start_stop = start_stop;
- if (fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_OBJ_TRACKING_START_STOP, start_stop) < 0)
- {
- LOGE("ERR(%s):Fail on V4L2_CID_CAMERA_OBJ_TRACKING_START_STOP", __FUNCTION__);
- return -1;
- }
- }
+ LOGV("%s(object_tracking_start_stop (%d))", __func__, start_stop);
+
+ if (m_object_tracking_start_stop != start_stop) {
+ m_object_tracking_start_stop = start_stop;
+ if (fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_OBJ_TRACKING_START_STOP, start_stop) < 0) {
+ LOGE("ERR(%s):Fail on V4L2_CID_CAMERA_OBJ_TRACKING_START_STOP", __func__);
+ return -1;
+ }
+ }
- return 0;
+ return 0;
}
int SecCamera::setTouchAFStartStop(int start_stop)
{
- LOGV("%s(touch_af_start_stop (%d))", __FUNCTION__, start_stop);
-
- if(m_touch_af_start_stop != start_stop)
- {
- m_touch_af_start_stop = start_stop;
- if (fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_TOUCH_AF_START_STOP, start_stop) < 0)
-{
- LOGE("ERR(%s):Fail on V4L2_CID_CAMERA_TOUCH_AF_START_STOP", __FUNCTION__);
- return -1;
- }
- }
+ LOGV("%s(touch_af_start_stop (%d))", __func__, start_stop);
+
+ if (m_touch_af_start_stop != start_stop) {
+ m_touch_af_start_stop = start_stop;
+ if (fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_TOUCH_AF_START_STOP, start_stop) < 0) {
+ LOGE("ERR(%s):Fail on V4L2_CID_CAMERA_TOUCH_AF_START_STOP", __func__);
+ return -1;
+ }
+ }
- return 0;
+ return 0;
}
//======================================================================
int SecCamera::setSmartAuto(int smart_auto)
{
- LOGV("%s(smart_auto (%d))", __FUNCTION__, smart_auto);
-
- if(smart_auto < SMART_AUTO_OFF|| SMART_AUTO_MAX <= smart_auto)
- {
- LOGE("ERR(%s):Invalid smart_auto (%d)", __FUNCTION__, smart_auto);
- return -1;
- }
-
- if(m_smart_auto != smart_auto)
- {
- m_smart_auto = smart_auto;
- if(m_flag_camera_start)
- {
- if (fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_SMART_AUTO, smart_auto) < 0)
- {
- LOGE("ERR(%s):Fail on V4L2_CID_CAMERA_SMART_AUTO", __FUNCTION__);
- return -1;
- }
- }
- }
-
- return 0;
-}
-
-int SecCamera::getSmartAuto(void)
-{
- return m_smart_auto;
-}
-
-int SecCamera::getAutosceneStatus(void)
-{
- int autoscene_status = -1;
-
- if(getSmartAuto() == SMART_AUTO_ON)
- {
- autoscene_status = fimc_v4l2_g_ctrl(m_cam_fd, V4L2_CID_CAMERA_SMART_AUTO_STATUS);
-
- if((autoscene_status < SMART_AUTO_STATUS_AUTO) || (autoscene_status > SMART_AUTO_STATUS_MAX))
- {
- LOGE("ERR(%s):Invalid getAutosceneStatus (%d)", __FUNCTION__, autoscene_status);
- return -1;
- }
- }
- //LOGV("%s() autoscene_status (%d)", __FUNCTION__, autoscene_status);
- return autoscene_status;
+ LOGV("%s(smart_auto (%d))", __func__, smart_auto);
+
+ if (smart_auto < SMART_AUTO_OFF || SMART_AUTO_MAX <= smart_auto) {
+ LOGE("ERR(%s):Invalid smart_auto (%d)", __func__, smart_auto);
+ return -1;
+ }
+
+ if (m_smart_auto != smart_auto) {
+ m_smart_auto = smart_auto;
+ if (m_flag_camera_start) {
+ if (fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_SMART_AUTO, smart_auto) < 0) {
+ LOGE("ERR(%s):Fail on V4L2_CID_CAMERA_SMART_AUTO", __func__);
+ return -1;
+ }
+ }
+ }
+
+ return 0;
+}
+
+int SecCamera::getSmartAuto(void)
+{
+ return m_smart_auto;
+}
+
+int SecCamera::getAutosceneStatus(void)
+{
+ int autoscene_status = -1;
+
+ if (getSmartAuto() == SMART_AUTO_ON) {
+ autoscene_status = fimc_v4l2_g_ctrl(m_cam_fd, V4L2_CID_CAMERA_SMART_AUTO_STATUS);
+
+ if ((autoscene_status < SMART_AUTO_STATUS_AUTO) || (autoscene_status > SMART_AUTO_STATUS_MAX)) {
+ LOGE("ERR(%s):Invalid getAutosceneStatus (%d)", __func__, autoscene_status);
+ return -1;
+ }
+ }
+ //LOGV("%s() autoscene_status (%d)", __func__, autoscene_status);
+ return autoscene_status;
}
//======================================================================
int SecCamera::setBeautyShot(int beauty_shot)
{
- LOGV("%s(beauty_shot (%d))", __FUNCTION__, beauty_shot);
-
- if(beauty_shot < BEAUTY_SHOT_OFF|| BEAUTY_SHOT_MAX <= beauty_shot)
- {
- LOGE("ERR(%s):Invalid beauty_shot (%d)", __FUNCTION__, beauty_shot);
- return -1;
- }
-
- if(m_beauty_shot != beauty_shot)
- {
- m_beauty_shot = beauty_shot;
- if(m_flag_camera_start)
- {
- if (fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_BEAUTY_SHOT, beauty_shot) < 0)
- {
- LOGE("ERR(%s):Fail on V4L2_CID_CAMERA_BEAUTY_SHOT", __FUNCTION__);
- return -1;
- }
-
- setFaceDetect(FACE_DETECT_BEAUTY_ON);
- }
- }
-
- return 0;
-}
-
-int SecCamera::getBeautyShot(void)
-{
- return m_beauty_shot;
+ LOGV("%s(beauty_shot (%d))", __func__, beauty_shot);
+
+ if (beauty_shot < BEAUTY_SHOT_OFF || BEAUTY_SHOT_MAX <= beauty_shot) {
+ LOGE("ERR(%s):Invalid beauty_shot (%d)", __func__, beauty_shot);
+ return -1;
+ }
+
+ if (m_beauty_shot != beauty_shot) {
+ m_beauty_shot = beauty_shot;
+ if (m_flag_camera_start) {
+ if (fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_BEAUTY_SHOT, beauty_shot) < 0) {
+ LOGE("ERR(%s):Fail on V4L2_CID_CAMERA_BEAUTY_SHOT", __func__);
+ return -1;
+ }
+
+ setFaceDetect(FACE_DETECT_BEAUTY_ON);
+ }
+ }
+
+ return 0;
+}
+
+int SecCamera::getBeautyShot(void)
+{
+ return m_beauty_shot;
}
//======================================================================
int SecCamera::setVintageMode(int vintage_mode)
{
- LOGV("%s(vintage_mode(%d))", __FUNCTION__, vintage_mode);
-
- if(vintage_mode <= VINTAGE_MODE_BASE || VINTAGE_MODE_MAX <= vintage_mode)
- {
- LOGE("ERR(%s):Invalid vintage_mode (%d)", __FUNCTION__, vintage_mode);
- return -1;
- }
-
- if(m_vintage_mode != vintage_mode)
- {
- m_vintage_mode = vintage_mode;
- if(m_flag_camera_start)
- {
- if (fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_VINTAGE_MODE, vintage_mode) < 0)
- {
- LOGE("ERR(%s):Fail on V4L2_CID_CAMERA_VINTAGE_MODE", __FUNCTION__);
- return -1;
- }
- }
- }
+ LOGV("%s(vintage_mode(%d))", __func__, vintage_mode);
- return 0;
+ if (vintage_mode <= VINTAGE_MODE_BASE || VINTAGE_MODE_MAX <= vintage_mode) {
+ LOGE("ERR(%s):Invalid vintage_mode (%d)", __func__, vintage_mode);
+ return -1;
+ }
+
+ if (m_vintage_mode != vintage_mode) {
+ m_vintage_mode = vintage_mode;
+ if (m_flag_camera_start) {
+ if (fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_VINTAGE_MODE, vintage_mode) < 0) {
+ LOGE("ERR(%s):Fail on V4L2_CID_CAMERA_VINTAGE_MODE", __func__);
+ return -1;
+ }
+ }
+ }
+
+ return 0;
}
-int SecCamera::getVintageMode(void)
+int SecCamera::getVintageMode(void)
{
- return m_vintage_mode;
+ return m_vintage_mode;
}
//======================================================================
int SecCamera::setFocusMode(int focus_mode)
{
- LOGV("%s(focus_mode(%d))", __FUNCTION__, focus_mode);
-
- if(FOCUS_MODE_MAX <= focus_mode)
- {
- LOGE("ERR(%s):Invalid focus_mode (%d)", __FUNCTION__, focus_mode);
- return -1;
- }
-
- if(m_focus_mode != focus_mode)
- {
- m_focus_mode = focus_mode;
-
- if (m_focus_mode != FOCUS_MODE_FACEDETECT)
- {
- m_face_detect = FACE_DETECT_OFF;
- if(m_flag_camera_start)
- {
-// setFaceDetect(m_face_detect);
-
- if (fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_FOCUS_MODE, focus_mode) < 0)
- {
- LOGE("ERR(%s):Fail on V4L2_CID_CAMERA_FOCUS_MODE", __FUNCTION__);
- return -1;
- }
- }
- }
- else
- {
- m_face_detect = FACE_DETECT_NORMAL_ON;
- if(m_flag_camera_start)
- {
- if (fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_FOCUS_MODE, FOCUS_MODE_AUTO) < 0)
- {
- LOGE("ERR(%s):Fail on V4L2_CID_CAMERA_FOCUS_MODE", __FUNCTION__);
- return -1;
- }
-
-// setFaceDetect(m_face_detect);
- }
- }
- }
-
- return 0;
-}
-
-int SecCamera::getFocusMode(void)
-{
- return m_focus_mode;
+ LOGV("%s(focus_mode(%d))", __func__, focus_mode);
+
+ if (FOCUS_MODE_MAX <= focus_mode) {
+ LOGE("ERR(%s):Invalid focus_mode (%d)", __func__, focus_mode);
+ return -1;
+ }
+
+ if (m_focus_mode != focus_mode) {
+ m_focus_mode = focus_mode;
+
+ if (m_focus_mode != FOCUS_MODE_FACEDETECT) {
+ m_face_detect = FACE_DETECT_OFF;
+ if (m_flag_camera_start) {
+// setFaceDetect(m_face_detect);
+
+ if (fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_FOCUS_MODE, focus_mode) < 0) {
+ LOGE("ERR(%s):Fail on V4L2_CID_CAMERA_FOCUS_MODE", __func__);
+ return -1;
+ }
+ }
+ } else {
+ m_face_detect = FACE_DETECT_NORMAL_ON;
+ if (m_flag_camera_start) {
+ if (fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_FOCUS_MODE, FOCUS_MODE_AUTO) < 0) {
+ LOGE("ERR(%s):Fail on V4L2_CID_CAMERA_FOCUS_MODE", __func__);
+ return -1;
+ }
+
+// setFaceDetect(m_face_detect);
+ }
+ }
+ }
+
+ return 0;
+}
+
+int SecCamera::getFocusMode(void)
+{
+ return m_focus_mode;
}
//======================================================================
- int SecCamera::setFaceDetect(int face_detect)
- {
- LOGV("%s(face_detect(%d))", __FUNCTION__, face_detect);
-
-// if(m_face_detect != face_detect)
- {
- m_face_detect = face_detect;
- if(m_flag_camera_start)
- {
- if(m_face_detect != FACE_DETECT_OFF)
- {
- if (fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_FOCUS_MODE, FOCUS_MODE_AUTO) < 0)
- {
- LOGE("ERR(%s):Fail on V4L2_CID_CAMERA_FOCUS_MODin face detecion", __FUNCTION__);
- return -1;
- }
- }
- if (fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_FACE_DETECTION, face_detect) < 0)
- {
- LOGE("ERR(%s):Fail on V4L2_CID_CAMERA_FACE_DETECTION", __FUNCTION__);
- return -1;
- }
- }
- }
-
- return 0;
-}
-
- int SecCamera::getFaceDetect(void)
- {
- return m_face_detect;
- }
+int SecCamera::setFaceDetect(int face_detect)
+{
+ LOGV("%s(face_detect(%d))", __func__, face_detect);
- //======================================================================
-
- int SecCamera::setGPSLatitude(const char * gps_latitude)
- {
- double conveted_latitude = 0;
- LOGV("%s(gps_latitude(%s))", __FUNCTION__, gps_latitude);
- if(gps_latitude == NULL)
- m_gps_latitude = 0;
- else
- {
- conveted_latitude = atof(gps_latitude);
- m_gps_latitude = (long)(conveted_latitude *10000 /1);
- }
-
- LOGV("%s(m_gps_latitude(%ld))", __FUNCTION__, m_gps_latitude);
- return 0;
- }
- int SecCamera::setGPSLongitude(const char * gps_longitude)
- {
- double conveted_longitude = 0;
- LOGV("%s(gps_longitude(%s))", __FUNCTION__, gps_longitude);
- if(gps_longitude == NULL)
- m_gps_longitude = 0;
- else
- {
- conveted_longitude = atof(gps_longitude);
- m_gps_longitude = (long)(conveted_longitude *10000 /1);
- }
-
- LOGV("%s(m_gps_longitude(%ld))", __FUNCTION__, m_gps_longitude);
- return 0;
- }
- int SecCamera::setGPSAltitude(const char * gps_altitude)
- {
- double conveted_altitude = 0;
- LOGV("%s(gps_altitude(%s))", __FUNCTION__, gps_altitude);
- if(gps_altitude == NULL)
- m_gps_altitude = 0;
- else
- {
- conveted_altitude = atof(gps_altitude);
- m_gps_altitude = (long)(conveted_altitude *100 /1);
- }
-
- LOGV("%s(m_gps_altitude(%ld))", __FUNCTION__, m_gps_altitude);
- return 0;
- }
- int SecCamera::setGPSTimeStamp(const char * gps_timestamp)
- {
- LOGV("%s(gps_timestamp(%s))", __FUNCTION__, gps_timestamp);
- if(gps_timestamp == NULL)
- m_gps_timestamp = 0;
- else
- m_gps_timestamp = atol(gps_timestamp);
-
- LOGV("%s(m_gps_timestamp(%ld))", __FUNCTION__, m_gps_timestamp);
- return 0;
+// if (m_face_detect != face_detect) {
+ m_face_detect = face_detect;
+ if (m_flag_camera_start) {
+ if (m_face_detect != FACE_DETECT_OFF) {
+ if (fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_FOCUS_MODE, FOCUS_MODE_AUTO) < 0) {
+ LOGE("ERR(%s):Fail on V4L2_CID_CAMERA_FOCUS_MODin face detecion", __func__);
+ return -1;
+ }
+ }
+ if (fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_FACE_DETECTION, face_detect) < 0) {
+ LOGE("ERR(%s):Fail on V4L2_CID_CAMERA_FACE_DETECTION", __func__);
+ return -1;
+ }
+ }
+// }
+
+ return 0;
+}
+
+int SecCamera::getFaceDetect(void)
+{
+ return m_face_detect;
+}
+
+//======================================================================
+
+int SecCamera::setGPSLatitude(const char *gps_latitude)
+{
+ double conveted_latitude = 0;
+ LOGV("%s(gps_latitude(%s))", __func__, gps_latitude);
+ if (gps_latitude == NULL)
+ m_gps_latitude = 0;
+ else {
+ conveted_latitude = atof(gps_latitude);
+ m_gps_latitude = (long)(conveted_latitude * 10000 / 1);
+ }
+
+ LOGV("%s(m_gps_latitude(%ld))", __func__, m_gps_latitude);
+ return 0;
+}
+
+int SecCamera::setGPSLongitude(const char *gps_longitude)
+{
+ double conveted_longitude = 0;
+ LOGV("%s(gps_longitude(%s))", __func__, gps_longitude);
+ if (gps_longitude == NULL)
+ m_gps_longitude = 0;
+ else {
+ conveted_longitude = atof(gps_longitude);
+ m_gps_longitude = (long)(conveted_longitude * 10000 / 1);
+ }
+
+ LOGV("%s(m_gps_longitude(%ld))", __func__, m_gps_longitude);
+ return 0;
+}
+
+int SecCamera::setGPSAltitude(const char *gps_altitude)
+{
+ double conveted_altitude = 0;
+ LOGV("%s(gps_altitude(%s))", __func__, gps_altitude);
+ if (gps_altitude == NULL)
+ m_gps_altitude = 0;
+ else {
+ conveted_altitude = atof(gps_altitude);
+ m_gps_altitude = (long)(conveted_altitude * 100 / 1);
+ }
+
+ LOGV("%s(m_gps_altitude(%ld))", __func__, m_gps_altitude);
+ return 0;
+}
+
+int SecCamera::setGPSTimeStamp(const char *gps_timestamp)
+{
+ LOGV("%s(gps_timestamp(%s))", __func__, gps_timestamp);
+ if (gps_timestamp == NULL)
+ m_gps_timestamp = 0;
+ else
+ m_gps_timestamp = atol(gps_timestamp);
+
+ LOGV("%s(m_gps_timestamp(%ld))", __func__, m_gps_timestamp);
+ return 0;
}
- //======================================================================
- int SecCamera::setAEAWBLockUnlock(int ae_lockunlock, int awb_lockunlock)
- {
- LOGV("%s(ae_lockunlock(%d) , (awb_lockunlock(%d))", __FUNCTION__, ae_lockunlock, awb_lockunlock);
- int ae_awb_status = 1;
+//======================================================================
+int SecCamera::setAEAWBLockUnlock(int ae_lockunlock, int awb_lockunlock)
+{
+ LOGV("%s(ae_lockunlock(%d) , (awb_lockunlock(%d))", __func__, ae_lockunlock, awb_lockunlock);
+ int ae_awb_status = 1;
#if 0
- if(ae_lockunlock == 0 && awb_lockunlock ==0)
- ae_awb_status = AE_UNLOCK_AWB_UNLOCK;
- else if (ae_lockunlock == 1 && awb_lockunlock ==0)
- ae_awb_status = AE_LOCK_AWB_UNLOCK;
- else if (ae_lockunlock == 1 && awb_lockunlock ==0)
- ae_awb_status = AE_UNLOCK_AWB_LOCK;
- else
- ae_awb_status = AE_LOCK_AWB_LOCK;
-#endif
- if (fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_AEAWB_LOCK_UNLOCK, ae_awb_status) < 0)
- {
- LOGE("ERR(%s):Fail on V4L2_CID_CAMERA_AE_AWB_LOCKUNLOCK", __FUNCTION__);
- return -1;
- }
-
- return 0;
- }
+ if (ae_lockunlock == 0 && awb_lockunlock == 0)
+ ae_awb_status = AE_UNLOCK_AWB_UNLOCK;
+ else if (ae_lockunlock == 1 && awb_lockunlock == 0)
+ ae_awb_status = AE_LOCK_AWB_UNLOCK;
+ else if (ae_lockunlock == 1 && awb_lockunlock == 0)
+ ae_awb_status = AE_UNLOCK_AWB_LOCK;
+ else
+ ae_awb_status = AE_LOCK_AWB_LOCK;
+#endif
+ if (fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_AEAWB_LOCK_UNLOCK, ae_awb_status) < 0) {
+ LOGE("ERR(%s):Fail on V4L2_CID_CAMERA_AE_AWB_LOCKUNLOCK", __func__);
+ return -1;
+ }
- int SecCamera::setFaceDetectLockUnlock(int facedetect_lockunlock)
- {
- LOGV("%s(facedetect_lockunlock(%d))", __FUNCTION__, facedetect_lockunlock);
-
- if (fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_FACEDETECT_LOCKUNLOCK, facedetect_lockunlock) < 0)
- {
- LOGE("ERR(%s):Fail on V4L2_CID_CAMERA_FACEDETECT_LOCKUNLOCK", __FUNCTION__);
- return -1;
- }
-
- return 0;
- }
+ return 0;
+}
- int SecCamera::setObjectPosition(int x, int y)
- {
- LOGV("%s(setObjectPosition(x=%d, y=%d))", __FUNCTION__, x, y);
-
- if(m_preview_width ==640)
- x = x - 80;
-
- if (fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_OBJECT_POSITION_X, x) < 0)
- {
- LOGE("ERR(%s):Fail on V4L2_CID_CAMERA_OBJECT_POSITION_X", __FUNCTION__);
- return -1;
- }
-
- if (fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_OBJECT_POSITION_Y, y) < 0)
- {
- LOGE("ERR(%s):Fail on V4L2_CID_CAMERA_OBJECT_POSITION_Y", __FUNCTION__);
- return -1;
- }
-
- return 0;
- }
-
- //======================================================================
-
- int SecCamera::setGamma(int gamma)
- {
- LOGV("%s(gamma(%d))", __FUNCTION__, gamma);
-
- if(gamma<GAMMA_OFF|| GAMMA_MAX<= gamma)
- {
- LOGE("ERR(%s):Invalid gamma (%d)", __FUNCTION__, gamma);
- return -1;
- }
-
- if(m_video_gamma!= gamma)
- {
- m_video_gamma = gamma;
- if(m_flag_camera_start)
- {
- if (fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_SET_GAMMA, gamma) < 0)
- {
- LOGE("ERR(%s):Fail on V4L2_CID_CAMERA_SET_GAMMA", __FUNCTION__);
- return -1;
- }
- }
- }
-
- return 0;
- }
-
- //======================================================================
-
- int SecCamera::setSlowAE(int slow_ae)
- {
- LOGV("%s(slow_ae(%d))", __FUNCTION__, slow_ae);
-
- if(slow_ae<GAMMA_OFF|| GAMMA_MAX<= slow_ae)
- {
- LOGE("ERR(%s):Invalid slow_ae (%d)", __FUNCTION__, slow_ae);
- return -1;
- }
-
- if(m_slow_ae!= slow_ae)
- {
- m_slow_ae = slow_ae;
- if(m_flag_camera_start)
- {
- if (fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_SET_SLOW_AE, slow_ae) < 0)
- {
- LOGE("ERR(%s):Fail on V4L2_CID_CAMERA_SET_SLOW_AE", __FUNCTION__);
- return -1;
- }
- }
- }
-
- return 0;
- }
-
- //======================================================================
-
- int SecCamera::setRecordingSize(int width, int height)
- {
- LOGE("%s(width(%d), height(%d))", __FUNCTION__, width, height);
-
- m_recording_width = width;
- m_recording_height = height;
-
- return 0;
- }
+int SecCamera::setFaceDetectLockUnlock(int facedetect_lockunlock)
+{
+ LOGV("%s(facedetect_lockunlock(%d))", __func__, facedetect_lockunlock);
+
+ if (fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_FACEDETECT_LOCKUNLOCK, facedetect_lockunlock) < 0) {
+ LOGE("ERR(%s):Fail on V4L2_CID_CAMERA_FACEDETECT_LOCKUNLOCK", __func__);
+ return -1;
+ }
+
+ return 0;
+}
+
+int SecCamera::setObjectPosition(int x, int y)
+{
+ LOGV("%s(setObjectPosition(x=%d, y=%d))", __func__, x, y);
+
+ if (m_preview_width ==640)
+ x = x - 80;
+
+ if (fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_OBJECT_POSITION_X, x) < 0) {
+ LOGE("ERR(%s):Fail on V4L2_CID_CAMERA_OBJECT_POSITION_X", __func__);
+ return -1;
+ }
+
+ if (fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_OBJECT_POSITION_Y, y) < 0) {
+ LOGE("ERR(%s):Fail on V4L2_CID_CAMERA_OBJECT_POSITION_Y", __func__);
+ return -1;
+ }
+
+ return 0;
+}
+
+//======================================================================
+
+int SecCamera::setGamma(int gamma)
+{
+ LOGV("%s(gamma(%d))", __func__, gamma);
+
+ if (gamma < GAMMA_OFF || GAMMA_MAX <= gamma) {
+ LOGE("ERR(%s):Invalid gamma (%d)", __func__, gamma);
+ return -1;
+ }
+
+ if (m_video_gamma != gamma) {
+ m_video_gamma = gamma;
+ if (m_flag_camera_start) {
+ if (fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_SET_GAMMA, gamma) < 0) {
+ LOGE("ERR(%s):Fail on V4L2_CID_CAMERA_SET_GAMMA", __func__);
+ return -1;
+ }
+ }
+ }
+
+ return 0;
+}
+
+//======================================================================
+
+int SecCamera::setSlowAE(int slow_ae)
+{
+ LOGV("%s(slow_ae(%d))", __func__, slow_ae);
+
+ if (slow_ae < GAMMA_OFF || GAMMA_MAX <= slow_ae) {
+ LOGE("ERR(%s):Invalid slow_ae (%d)", __func__, slow_ae);
+ return -1;
+ }
+
+ if (m_slow_ae!= slow_ae) {
+ m_slow_ae = slow_ae;
+ if (m_flag_camera_start) {
+ if (fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_SET_SLOW_AE, slow_ae) < 0) {
+ LOGE("ERR(%s):Fail on V4L2_CID_CAMERA_SET_SLOW_AE", __func__);
+ return -1;
+ }
+ }
+ }
+
+ return 0;
+}
+
+//======================================================================
+int SecCamera::setRecordingSize(int width, int height)
+{
+ LOGE("%s(width(%d), height(%d))", __func__, width, height);
- //======================================================================
+ m_recording_width = width;
+ m_recording_height = height;
+
+ return 0;
+}
+
+//======================================================================
int SecCamera::setExifOrientationInfo(int orientationInfo)
{
- LOGV("%s(orientationInfo(%d))", __FUNCTION__, orientationInfo);
-
- if(orientationInfo < 0)
- {
- LOGE("ERR(%s):Invalid orientationInfo (%d)", __FUNCTION__, orientationInfo);
- return -1;
- }
- m_exif_orientation = orientationInfo;
+ LOGV("%s(orientationInfo(%d))", __func__, orientationInfo);
- return 0;
+ if (orientationInfo < 0) {
+ LOGE("ERR(%s):Invalid orientationInfo (%d)", __func__, orientationInfo);
+ return -1;
+ }
+ m_exif_orientation = orientationInfo;
+
+ return 0;
}
- //======================================================================
+//======================================================================
int SecCamera::setBatchReflection()
{
- if(m_flag_camera_start)
- {
- if (fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_BATCH_REFLECTION, 1) < 0)
- {
- LOGE("ERR(%s):Fail on V4L2_CID_CAMERA_BATCH_REFLECTION", __FUNCTION__);
- return -1;
- }
- }
-
- return 0;
+ if (m_flag_camera_start) {
+ if (fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_BATCH_REFLECTION, 1) < 0) {
+ LOGE("ERR(%s):Fail on V4L2_CID_CAMERA_BATCH_REFLECTION", __func__);
+ return -1;
+ }
+ }
+
+ return 0;
}
/*Video call*/
int SecCamera::setVTmode(int vtmode)
{
- LOGV("%s(vtmode (%d))", __FUNCTION__, vtmode);
-
- if(vtmode < VT_MODE_OFF || VT_MODE_MAX <= vtmode)
- {
- LOGE("ERR(%s):Invalid vtmode (%d)", __FUNCTION__, vtmode);
- return -1;
- }
-
- if(m_vtmode != vtmode)
- {
- m_vtmode = vtmode;
- }
+ LOGV("%s(vtmode (%d))", __func__, vtmode);
+
+ if (vtmode < VT_MODE_OFF || VT_MODE_MAX <= vtmode) {
+ LOGE("ERR(%s):Invalid vtmode (%d)", __func__, vtmode);
+ return -1;
+ }
- return 0;
+ if (m_vtmode != vtmode) {
+ m_vtmode = vtmode;
+ }
+
+ return 0;
}
/* Camcorder fix fps */
int SecCamera::setSensorMode(int sensor_mode)
{
- LOGV("%s(sensor_mode (%d))", __FUNCTION__, sensor_mode);
-
- if(sensor_mode < SENSOR_MODE_CAMERA || SENSOR_MODE_MOVIE < sensor_mode)
- {
- LOGE("ERR(%s):Invalid sensor mode (%d)", __FUNCTION__, sensor_mode);
- return -1;
- }
-
- if(m_sensor_mode != sensor_mode)
- {
- m_sensor_mode = sensor_mode;
- }
-
- return 0;
-}
-
-/* Shot mode */
-/* SINGLE = 0
-* CONTINUOUS = 1
-* PANORAMA = 2
-* SMILE = 3
-* SELF = 6
+ LOGV("%s(sensor_mode (%d))", __func__, sensor_mode);
+
+ if (sensor_mode < SENSOR_MODE_CAMERA || SENSOR_MODE_MOVIE < sensor_mode) {
+ LOGE("ERR(%s):Invalid sensor mode (%d)", __func__, sensor_mode);
+ return -1;
+ }
+
+ if (m_sensor_mode != sensor_mode) {
+ m_sensor_mode = sensor_mode;
+ }
+
+ return 0;
+}
+
+/* Shot mode */
+/* SINGLE = 0
+* CONTINUOUS = 1
+* PANORAMA = 2
+* SMILE = 3
+* SELF = 6
*/
int SecCamera::setShotMode(int shot_mode)
{
- LOGV("%s(shot_mode (%d))", __FUNCTION__, shot_mode);
- if(shot_mode < SHOT_MODE_SINGLE || SHOT_MODE_SELF < shot_mode)
- {
- LOGE("ERR(%s):Invalid shot_mode (%d)", __FUNCTION__, shot_mode);
- return -1;
- }
- m_shot_mode = shot_mode;
+ LOGV("%s(shot_mode (%d))", __func__, shot_mode);
+ if (shot_mode < SHOT_MODE_SINGLE || SHOT_MODE_SELF < shot_mode) {
+ LOGE("ERR(%s):Invalid shot_mode (%d)", __func__, shot_mode);
+ return -1;
+ }
+ m_shot_mode = shot_mode;
- return 0;
+ return 0;
}
-int SecCamera::getVTmode(void)
+int SecCamera::getVTmode(void)
{
- return m_vtmode;
+ return m_vtmode;
}
int SecCamera::setBlur(int blur_level)
{
- LOGV("%s(level (%d))", __FUNCTION__, blur_level);
-
- if(blur_level < BLUR_LEVEL_0|| BLUR_LEVEL_MAX <= blur_level)
- {
- LOGE("ERR(%s):Invalid level (%d)", __FUNCTION__, blur_level);
- return -1;
- }
+ LOGV("%s(level (%d))", __func__, blur_level);
+
+ if (blur_level < BLUR_LEVEL_0 || BLUR_LEVEL_MAX <= blur_level) {
+ LOGE("ERR(%s):Invalid level (%d)", __func__, blur_level);
+ return -1;
+ }
- if(m_blur_level != blur_level)
- {
- m_blur_level = blur_level;
-
- if(m_flag_camera_start)
- {
- if (fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_VGA_BLUR, blur_level) < 0)
- {
- LOGE("ERR(%s):Fail on V4L2_CID_CAMERA_VGA_BLUR", __FUNCTION__);
- return -1;
- }
- }
- }
- return 0;
+ if (m_blur_level != blur_level) {
+ m_blur_level = blur_level;
+
+ if (m_flag_camera_start) {
+ if (fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_VGA_BLUR, blur_level) < 0) {
+ LOGE("ERR(%s):Fail on V4L2_CID_CAMERA_VGA_BLUR", __func__);
+ return -1;
+ }
+ }
+ }
+ return 0;
}
-int SecCamera::getBlur(void)
+int SecCamera::getBlur(void)
{
- return m_blur_level;
+ return m_blur_level;
}
-
int SecCamera::setDataLineCheck(int chk_dataline)
{
- LOGV("%s(chk_dataline (%d))", __FUNCTION__, chk_dataline);
-
- if(chk_dataline < CHK_DATALINE_OFF || CHK_DATALINE_MAX<= chk_dataline)
- {
- LOGE("ERR(%s):Invalid chk_dataline (%d)", __FUNCTION__, chk_dataline);
- return -1;
- }
-
- if(m_chk_dataline != chk_dataline)
- {
- m_chk_dataline = chk_dataline;
- }
+ LOGV("%s(chk_dataline (%d))", __func__, chk_dataline);
- return 0;
+ if (chk_dataline < CHK_DATALINE_OFF || CHK_DATALINE_MAX <= chk_dataline) {
+ LOGE("ERR(%s):Invalid chk_dataline (%d)", __func__, chk_dataline);
+ return -1;
+ }
+
+ if (m_chk_dataline != chk_dataline) {
+ m_chk_dataline = chk_dataline;
+ }
+
+ return 0;
}
-int SecCamera::getDataLineCheck(void)
+int SecCamera::getDataLineCheck(void)
{
- return m_chk_dataline;
+ return m_chk_dataline;
}
-int SecCamera::setDataLineCheckStop(void)
+int SecCamera::setDataLineCheckStop(void)
{
- LOGV("%s", __FUNCTION__);
-
- if(m_flag_camera_start)
- {
- if (fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_CHECK_DATALINE_STOP, 1) < 0)
- {
- LOGE("ERR(%s):Fail on V4L2_CID_CAMERA_CHECK_DATALINE_STOP", __FUNCTION__);
- return -1;
- }
- }
- return 0;
+ LOGV("%s", __func__);
+
+ if (m_flag_camera_start) {
+ if (fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_CHECK_DATALINE_STOP, 1) < 0) {
+ LOGE("ERR(%s):Fail on V4L2_CID_CAMERA_CHECK_DATALINE_STOP", __func__);
+ return -1;
+ }
+ }
+ return 0;
}
#endif
@@ -3382,215 +3197,204 @@ int SecCamera::setDataLineCheckStop(void)
// Jpeg
#ifndef JPEG_FROM_SENSOR
-unsigned char * SecCamera::getJpeg(unsigned char *snapshot_data, int snapshot_size, int * size)
+unsigned char* SecCamera::getJpeg(unsigned char *snapshot_data, int snapshot_size, int *size)
{
- LOGV("%s()", __FUNCTION__);
-
- if(m_cam_fd <= 0)
- {
- LOGE("ERR(%s):Camera was closed\n", __FUNCTION__);
- return NULL;
- }
+ LOGV("%s()", __func__);
+
+ if (m_cam_fd <= 0) {
+ LOGE("ERR(%s):Camera was closed\n", __func__);
+ return NULL;
+ }
+
+ unsigned char *jpeg_data = NULL;
+ int jpeg_size = 0;
- unsigned char * jpeg_data = NULL;
- int jpeg_size = 0;
+ jpeg_data = yuv2Jpeg(snapshot_data, snapshot_size, &jpeg_size,
+ m_snapshot_width, m_snapshot_height, m_snapshot_v4lformat);
- jpeg_data = yuv2Jpeg(snapshot_data, snapshot_size, &jpeg_size, m_snapshot_width, m_snapshot_height, m_snapshot_v4lformat);
-
- *size = jpeg_size;
- return jpeg_data;
+ *size = jpeg_size;
+ return jpeg_data;
}
#endif
#ifndef JPEG_FROM_SENSOR
-unsigned char * SecCamera::yuv2Jpeg(unsigned char * raw_data, int raw_size,int * jpeg_size,int width, int height, int pixel_format)
-{
- LOGV("%s:raw_data(%p), raw_size(%d), jpeg_size(%d), width(%d), height(%d), format(%d)",
- __FUNCTION__, raw_data, raw_size, *jpeg_size, width, height, pixel_format);
-
- if(m_jpeg_fd <= 0)
- {
- LOGE("ERR(%s):JPEG device was closed\n", __FUNCTION__);
- return NULL;
- }
- if(pixel_format == V4L2_PIX_FMT_RGB565)
- {
- LOGE("ERR(%s):It doesn't support V4L2_PIX_FMT_RGB565\n", __FUNCTION__);
- return NULL;
- }
-
- unsigned char * InBuf = NULL;
- unsigned char * OutBuf = NULL;
- unsigned char * jpeg_data = NULL;
- long frameSize;
- exif_file_info_t ExifInfo;
-
- int input_file_format = JPG_MODESEL_YCBCR;
-
- int out_file_format = JPG_422;
- switch(pixel_format)
- {
- case V4L2_PIX_FMT_NV12:
- case V4L2_PIX_FMT_NV21:
- case V4L2_PIX_FMT_NV12T:
- case V4L2_PIX_FMT_YUV420:
- out_file_format = JPG_420;
- break;
- case V4L2_PIX_FMT_YUYV:
- case V4L2_PIX_FMT_UYVY:
- case V4L2_PIX_FMT_YUV422P:
- out_file_format = JPG_422;
- break;
- }
-
- //////////////////////////////////////////////////////////////
- // 2. set encode config. //
- //////////////////////////////////////////////////////////////
- LOGV("Step 1 : JPEG_SET_ENCODE_IN_FORMAT(JPG_MODESEL_YCBCR)");
- if (SsbSipJPEGSetEncConfig(JPEG_SET_ENCODE_IN_FORMAT, input_file_format) != JPEG_OK) {
- LOGE("ERR(%s):Fail on JPEG_SET_ENCODE_IN_FORMAT\n", __FUNCTION__);
- goto YUV2JPEG_END;
- }
-
- LOGV("Step 2 : JPEG_SET_SAMPING_MODE(JPG_422)");
- if (SsbSipJPEGSetEncConfig(JPEG_SET_SAMPING_MODE, out_file_format) != JPEG_OK) {
- LOGE("ERR(%s):Fail on JPEG_SET_SAMPING_MODE\n", __FUNCTION__);
- goto YUV2JPEG_END;
- }
-
- LOGV("Step 3 : JPEG_SET_ENCODE_WIDTH(%d)", width);
- if (SsbSipJPEGSetEncConfig(JPEG_SET_ENCODE_WIDTH, width) != JPEG_OK) {
- LOGE("ERR(%s):Fail on JPEG_SET_ENCODE_WIDTH \n", __FUNCTION__);
- goto YUV2JPEG_END;
- }
-
- LOGV("Step 4 : JPEG_SET_ENCODE_HEIGHT(%d)", height);
- if (SsbSipJPEGSetEncConfig(JPEG_SET_ENCODE_HEIGHT, height) != JPEG_OK) {
- LOGE("ERR(%s):Fail on JPEG_SET_ENCODE_HEIGHT \n", __FUNCTION__);
- goto YUV2JPEG_END;
- }
-
- LOGV("Step 5 : JPEG_SET_ENCODE_QUALITY(JPG_QUALITY_LEVEL_2)");
- if (SsbSipJPEGSetEncConfig(JPEG_SET_ENCODE_QUALITY, JPG_QUALITY_LEVEL_2) != JPEG_OK) {
- LOGE("ERR(%s):Fail on JPEG_SET_ENCODE_QUALITY \n", __FUNCTION__);
- goto YUV2JPEG_END;
- }
+unsigned char* SecCamera::yuv2Jpeg(unsigned char *raw_data, int raw_size, int *jpeg_size,
+ int width, int height, int pixel_format)
+{
+ LOGV("%s:raw_data(%p), raw_size(%d), jpeg_size(%d), width(%d), height(%d), format(%d)",
+ __func__, raw_data, raw_size, *jpeg_size, width, height, pixel_format);
+
+ if (m_jpeg_fd <= 0) {
+ LOGE("ERR(%s):JPEG device was closed\n", __func__);
+ return NULL;
+ }
+ if (pixel_format == V4L2_PIX_FMT_RGB565) {
+ LOGE("ERR(%s):It doesn't support V4L2_PIX_FMT_RGB565\n", __func__);
+ return NULL;
+ }
+
+ unsigned char *InBuf = NULL;
+ unsigned char *OutBuf = NULL;
+ unsigned char *jpeg_data = NULL;
+ long frameSize;
+ exif_file_info_t ExifInfo;
+
+ int input_file_format = JPG_MODESEL_YCBCR;
+
+ int out_file_format = JPG_422;
+
+ switch (pixel_format) {
+ case V4L2_PIX_FMT_NV12:
+ case V4L2_PIX_FMT_NV21:
+ case V4L2_PIX_FMT_NV12T:
+ case V4L2_PIX_FMT_YUV420:
+ out_file_format = JPG_420;
+ break;
+ case V4L2_PIX_FMT_YUYV:
+ case V4L2_PIX_FMT_UYVY:
+ case V4L2_PIX_FMT_YUV422P:
+ out_file_format = JPG_422;
+ break;
+ }
+
+ //////////////////////////////////////////////////////////////
+ // 2. set encode config. //
+ //////////////////////////////////////////////////////////////
+ LOGV("Step 1 : JPEG_SET_ENCODE_IN_FORMAT(JPG_MODESEL_YCBCR)");
+ if (SsbSipJPEGSetEncConfig(JPEG_SET_ENCODE_IN_FORMAT, input_file_format) != JPEG_OK) {
+ LOGE("ERR(%s):Fail on JPEG_SET_ENCODE_IN_FORMAT\n", __func__);
+ goto YUV2JPEG_END;
+ }
+
+ LOGV("Step 2 : JPEG_SET_SAMPING_MODE(JPG_422)");
+ if (SsbSipJPEGSetEncConfig(JPEG_SET_SAMPING_MODE, out_file_format) != JPEG_OK) {
+ LOGE("ERR(%s):Fail on JPEG_SET_SAMPING_MODE\n", __func__);
+ goto YUV2JPEG_END;
+ }
+
+ LOGV("Step 3 : JPEG_SET_ENCODE_WIDTH(%d)", width);
+ if (SsbSipJPEGSetEncConfig(JPEG_SET_ENCODE_WIDTH, width) != JPEG_OK) {
+ LOGE("ERR(%s):Fail on JPEG_SET_ENCODE_WIDTH \n", __func__);
+ goto YUV2JPEG_END;
+ }
+
+ LOGV("Step 4 : JPEG_SET_ENCODE_HEIGHT(%d)", height);
+ if (SsbSipJPEGSetEncConfig(JPEG_SET_ENCODE_HEIGHT, height) != JPEG_OK) {
+ LOGE("ERR(%s):Fail on JPEG_SET_ENCODE_HEIGHT \n", __func__);
+ goto YUV2JPEG_END;
+ }
+
+ LOGV("Step 5 : JPEG_SET_ENCODE_QUALITY(JPG_QUALITY_LEVEL_2)");
+ if (SsbSipJPEGSetEncConfig(JPEG_SET_ENCODE_QUALITY, JPG_QUALITY_LEVEL_2) != JPEG_OK) {
+ LOGE("ERR(%s):Fail on JPEG_SET_ENCODE_QUALITY \n", __func__);
+ goto YUV2JPEG_END;
+ }
#if (INCLUDE_JPEG_THUMBNAIL == 1)
- LOGV("Step 6a : JPEG_SET_ENCODE_THUMBNAIL(TRUE)");
- if (SsbSipJPEGSetEncConfig(JPEG_SET_ENCODE_THUMBNAIL, TRUE) != JPEG_OK) {
- LOGE("ERR(%s):Fail on JPEG_SET_ENCODE_THUMBNAIL \n", __FUNCTION__);
- goto YUV2JPEG_END;
- }
+ LOGV("Step 6a : JPEG_SET_ENCODE_THUMBNAIL(TRUE)");
+ if (SsbSipJPEGSetEncConfig(JPEG_SET_ENCODE_THUMBNAIL, TRUE) != JPEG_OK) {
+ LOGE("ERR(%s):Fail on JPEG_SET_ENCODE_THUMBNAIL \n", __func__);
+ goto YUV2JPEG_END;
+ }
- LOGV("Step 6b : JPEG_SET_THUMBNAIL_WIDTH(%d)", m_jpeg_thumbnail_width);
- if (SsbSipJPEGSetEncConfig(JPEG_SET_THUMBNAIL_WIDTH, m_jpeg_thumbnail_width) != JPEG_OK) {
- LOGE("ERR(%s):Fail on JPEG_SET_THUMBNAIL_WIDTH(%d) \n", __FUNCTION__, m_jpeg_thumbnail_height);
- goto YUV2JPEG_END;
- }
+ LOGV("Step 6b : JPEG_SET_THUMBNAIL_WIDTH(%d)", m_jpeg_thumbnail_width);
+ if (SsbSipJPEGSetEncConfig(JPEG_SET_THUMBNAIL_WIDTH, m_jpeg_thumbnail_width) != JPEG_OK) {
+ LOGE("ERR(%s):Fail on JPEG_SET_THUMBNAIL_WIDTH(%d) \n", __func__, m_jpeg_thumbnail_height);
+ goto YUV2JPEG_END;
+ }
- LOGV("Step 6c : JPEG_SET_THUMBNAIL_HEIGHT(%d)", m_jpeg_thumbnail_height);
- if (SsbSipJPEGSetEncConfig(JPEG_SET_THUMBNAIL_HEIGHT, m_jpeg_thumbnail_height) != JPEG_OK) {
- LOGE("ERR(%s):Fail on JPEG_SET_THUMBNAIL_HEIGHT(%d) \n", __FUNCTION__, m_jpeg_thumbnail_height);
- goto YUV2JPEG_END;
- }
+ LOGV("Step 6c : JPEG_SET_THUMBNAIL_HEIGHT(%d)", m_jpeg_thumbnail_height);
+ if (SsbSipJPEGSetEncConfig(JPEG_SET_THUMBNAIL_HEIGHT, m_jpeg_thumbnail_height) != JPEG_OK) {
+ LOGE("ERR(%s):Fail on JPEG_SET_THUMBNAIL_HEIGHT(%d) \n", __func__, m_jpeg_thumbnail_height);
+ goto YUV2JPEG_END;
+ }
#endif
- if(raw_size == 0) //Kamat: This is our code path
- {
- unsigned int addr_y;
- int width, height,frame_size;
- getSnapshotSize(&width, &height, &frame_size);
- if(raw_data == NULL)
- {
- LOGE("%s %d] Raw data is NULL \n",__func__,__LINE__);
- goto YUV2JPEG_END;
- }
- else //Kamat: our path
- {
- addr_y = (unsigned int)raw_data;
- }
-
- SsbSipJPEGSetEncodeInBuf(m_jpeg_fd, addr_y, frame_size);
- }
- else
- {
- //////////////////////////////////////////////////////////////
- // 4. get Input buffer address //
- //////////////////////////////////////////////////////////////
- LOGV("Step 7 : Input buffer size(0x%X", raw_size);
- InBuf = (unsigned char *)SsbSipJPEGGetEncodeInBuf(m_jpeg_fd, raw_size);
- if(InBuf == NULL)
- {
- LOGE("ERR(%s):Fail on SsbSipJPEGGetEncodeInBuf \n", __FUNCTION__);
- goto YUV2JPEG_END;
- }
- //////////////////////////////////////////////////////////////
- // 5. put YUV stream to Input buffer
- //////////////////////////////////////////////////////////////
- LOGV("Step 8: memcpy(InBuf(%p), raw_data(%p), raw_size(%d)", InBuf, raw_data, raw_size);
- memcpy(InBuf, raw_data, raw_size);
- }
-
- //////////////////////////////////////////////////////////////
- // 6. Make Exif info parameters
- //////////////////////////////////////////////////////////////
- LOGV("Step 9: m_makeExifParam()");
- memset(&ExifInfo, 0x00, sizeof(exif_file_info_t));
- m_makeExifParam(&ExifInfo);
-
- //////////////////////////////////////////////////////////////
- // 7. Encode YUV stream
- //////////////////////////////////////////////////////////////
- LOGV("Step a: SsbSipJPEGEncodeExe()");
- if(SsbSipJPEGEncodeExe(m_jpeg_fd, &ExifInfo, JPEG_USE_SW_SCALER) != JPEG_OK) //with Exif
- {
- LOGE("ERR(%s):Fail on SsbSipJPEGEncodeExe \n", __FUNCTION__);
- goto YUV2JPEG_END;
- }
- //////////////////////////////////////////////////////////////
- // 8. get output buffer address
- //////////////////////////////////////////////////////////////
- LOGV("Step b: SsbSipJPEGGetEncodeOutBuf()");
- OutBuf = (unsigned char *)SsbSipJPEGGetEncodeOutBuf(m_jpeg_fd, &frameSize);
- if(OutBuf == NULL)
- {
- LOGE("ERR(%s):Fail on SsbSipJPEGGetEncodeOutBuf \n", __FUNCTION__);
- goto YUV2JPEG_END;
- }
- //////////////////////////////////////////////////////////////
- // 9. write JPEG result file
- //////////////////////////////////////////////////////////////
- LOGV("Done");
- jpeg_data = OutBuf;
- *jpeg_size = (int)frameSize;
-
-YUV2JPEG_END :
-
- return jpeg_data;
+ if (raw_size == 0) { //Kamat: This is our code path
+ unsigned int addr_y;
+ int width, height,frame_size;
+ getSnapshotSize(&width, &height, &frame_size);
+ if (raw_data == NULL) {
+ LOGE("%s %d] Raw data is NULL \n", __func__, __LINE__);
+ goto YUV2JPEG_END;
+ } else { //Kamat: our path
+ addr_y = (unsigned int)raw_data;
+ }
+
+ SsbSipJPEGSetEncodeInBuf(m_jpeg_fd, addr_y, frame_size);
+ } else {
+ //////////////////////////////////////////////////////////////
+ // 4. get Input buffer address //
+ //////////////////////////////////////////////////////////////
+ LOGV("Step 7 : Input buffer size(0x%X", raw_size);
+ InBuf = (unsigned char *)SsbSipJPEGGetEncodeInBuf(m_jpeg_fd, raw_size);
+ if (InBuf == NULL) {
+ LOGE("ERR(%s):Fail on SsbSipJPEGGetEncodeInBuf \n", __func__);
+ goto YUV2JPEG_END;
+ }
+ //////////////////////////////////////////////////////////////
+ // 5. put YUV stream to Input buffer
+ //////////////////////////////////////////////////////////////
+ LOGV("Step 8: memcpy(InBuf(%p), raw_data(%p), raw_size(%d)", InBuf, raw_data, raw_size);
+ memcpy(InBuf, raw_data, raw_size);
+ }
+
+ //////////////////////////////////////////////////////////////
+ // 6. Make Exif info parameters
+ //////////////////////////////////////////////////////////////
+ LOGV("Step 9: m_makeExifParam()");
+ memset(&ExifInfo, 0x00, sizeof(exif_file_info_t));
+ m_makeExifParam(&ExifInfo);
+
+ //////////////////////////////////////////////////////////////
+ // 7. Encode YUV stream
+ //////////////////////////////////////////////////////////////
+ LOGV("Step a: SsbSipJPEGEncodeExe()");
+ if (SsbSipJPEGEncodeExe(m_jpeg_fd, &ExifInfo, JPEG_USE_SW_SCALER) != JPEG_OK) { //with Exif
+ LOGE("ERR(%s):Fail on SsbSipJPEGEncodeExe \n", __func__);
+ goto YUV2JPEG_END;
+ }
+ //////////////////////////////////////////////////////////////
+ // 8. get output buffer address
+ //////////////////////////////////////////////////////////////
+ LOGV("Step b: SsbSipJPEGGetEncodeOutBuf()");
+ OutBuf = (unsigned char *)SsbSipJPEGGetEncodeOutBuf(m_jpeg_fd, &frameSize);
+ if (OutBuf == NULL) {
+ LOGE("ERR(%s):Fail on SsbSipJPEGGetEncodeOutBuf \n", __func__);
+ goto YUV2JPEG_END;
+ }
+ //////////////////////////////////////////////////////////////
+ // 9. write JPEG result file
+ //////////////////////////////////////////////////////////////
+ LOGV("Done");
+ jpeg_data = OutBuf;
+ *jpeg_size = (int)frameSize;
+
+YUV2JPEG_END:
+ return jpeg_data;
}
#endif
int SecCamera::setJpegThumbnailSize(int width, int height)
{
- LOGV("%s(width(%d), height(%d))", __FUNCTION__, width, height);
-
- m_jpeg_thumbnail_width = width;
- m_jpeg_thumbnail_height = height;
+ LOGV("%s(width(%d), height(%d))", __func__, width, height);
+
+ m_jpeg_thumbnail_width = width;
+ m_jpeg_thumbnail_height = height;
- return 0;
+ return 0;
}
-int SecCamera::getJpegThumbnailSize(int * width, int * height)
+int SecCamera::getJpegThumbnailSize(int *width, int *height)
{
- if(width)
- *width = m_jpeg_thumbnail_width;
- if(height)
- *height = m_jpeg_thumbnail_height;
-
- return 0;
+ if (width)
+ *width = m_jpeg_thumbnail_width;
+ if (height)
+ *height = m_jpeg_thumbnail_height;
+
+ return 0;
}
void SecCamera::setExifFixedAttribute()
@@ -3599,7 +3403,7 @@ void SecCamera::setExifFixedAttribute()
}
void SecCamera::setExifChangedAttribute()
-{
+{
}
@@ -3608,37 +3412,37 @@ void SecCamera::setExifChangedAttribute()
inline int SecCamera::m_frameSize(int format, int width, int height)
{
- int size = 0;
-
- switch(format)
- {
- case V4L2_PIX_FMT_YUV420 :
- case V4L2_PIX_FMT_NV12 :
- case V4L2_PIX_FMT_NV21 :
- size = (width * height * 3 / 2);
- break;
-
- case V4L2_PIX_FMT_NV12T:
- size = ALIGN_TO_8KB(ALIGN_TO_128B(width) * ALIGN_TO_32B(height)) + ALIGN_TO_8KB(ALIGN_TO_128B(width) * ALIGN_TO_32B(height/2));
- break;
-
- case V4L2_PIX_FMT_YUV422P :
- case V4L2_PIX_FMT_YUYV :
- case V4L2_PIX_FMT_UYVY :
- size = (width * height * 2);
- break;
-
- default :
- LOGE("ERR(%s):Invalid V4L2 pixel format(%d)\n", __FUNCTION__, format);
- case V4L2_PIX_FMT_RGB565 :
- size = (width * height * BPP);
- break;
- }
-
- return size;
-}
-
-status_t SecCamera::dump(int fd, const Vector<String16>& args)
+ int size = 0;
+
+ switch (format) {
+ case V4L2_PIX_FMT_YUV420:
+ case V4L2_PIX_FMT_NV12:
+ case V4L2_PIX_FMT_NV21:
+ size = (width * height * 3 / 2);
+ break;
+
+ case V4L2_PIX_FMT_NV12T:
+ size = ALIGN_TO_8KB(ALIGN_TO_128B(width) * ALIGN_TO_32B(height)) +
+ ALIGN_TO_8KB(ALIGN_TO_128B(width) * ALIGN_TO_32B(height / 2));
+ break;
+
+ case V4L2_PIX_FMT_YUV422P:
+ case V4L2_PIX_FMT_YUYV:
+ case V4L2_PIX_FMT_UYVY:
+ size = (width * height * 2);
+ break;
+
+ default :
+ LOGE("ERR(%s):Invalid V4L2 pixel format(%d)\n", __func__, format);
+ case V4L2_PIX_FMT_RGB565:
+ size = (width * height * BPP);
+ break;
+ }
+
+ return size;
+}
+
+status_t SecCamera::dump(int fd, const Vector<String16> &args)
{
const size_t SIZE = 256;
char buffer[SIZE];