diff options
Diffstat (limited to 'libcamera/SecCamera.cpp')
-rwxr-xr-x | libcamera/SecCamera.cpp | 480 |
1 files changed, 12 insertions, 468 deletions
diff --git a/libcamera/SecCamera.cpp b/libcamera/SecCamera.cpp index 6f14198..38f675c 100755 --- a/libcamera/SecCamera.cpp +++ b/libcamera/SecCamera.cpp @@ -25,7 +25,6 @@ //#define LOG_NDEBUG 0 #define LOG_TAG "SecCamera" -#define ADD_THUMB_IMG 1 #include <utils/Log.h> @@ -37,9 +36,6 @@ using namespace android; -//#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, m_camera_id = %d\n", \ @@ -85,27 +81,6 @@ unsigned long measure_time(struct timeval *start, struct timeval *stop) return time; } -static inline unsigned long check_performance() -{ - 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); - } - - return time; -} - static int close_buffers(struct fimc_buffer *buffers) { int i; @@ -203,7 +178,6 @@ static int fimc_poll(struct pollfd *events) return ret; } -#ifdef SWP1_CAMERA_ADD_ADVANCED_FUNCTION static int fimc_esd_poll(struct pollfd *events) { int ret; @@ -222,44 +196,6 @@ static int fimc_esd_poll(struct pollfd *events) return ret; } -#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 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; - } - - memcpy(buffer, m_buffers_c[index].start, m_buffers_c[index].length); - - fflush(stdout); - - fwrite(buffer, 1, m_buffers_c[index].length, yuv_fp); - - fflush(yuv_fp); - - if (yuv_fp) - fclose(yuv_fp); - if (buffer) - free(buffer); - - return 0; -} -#endif //DUMP_YUV static int fimc_v4l2_querycap(int fp) { @@ -444,18 +380,6 @@ static int fimc_v4l2_querybuf(int fp, struct fimc_buffer *buffers, enum v4l2_buf } //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",__func__, __LINE__); - return -1; - } - - //LOGV("buffers[%d].start = %p v4l2_buf.length = %d", i, buffers[i].start, v4l2_buf.length); -#endif } } @@ -481,9 +405,7 @@ static int fimc_v4l2_streamoff(int fp) enum v4l2_buf_type type = V4L2_BUF_TYPE_VIDEO_CAPTURE; int ret; -#ifdef SWP1_CAMERA_ADD_ADVANCED_FUNCTION LOGV("%s :", __func__); -#endif ret = ioctl(fp, VIDIOC_STREAMOFF, &type); if (ret < 0) { LOGE("ERR(%s):VIDIOC_STREAMOFF failed\n", __func__); @@ -564,7 +486,6 @@ static int fimc_v4l2_s_ctrl(int fp, unsigned int id, unsigned int value) return ctrl.value; } -#ifdef SWP1_CAMERA_ADD_ADVANCED_FUNCTION static int fimc_v4l2_s_ext_ctrl(int fp, unsigned int id, void *value) { struct v4l2_ext_controls ctrls; @@ -584,7 +505,6 @@ static int fimc_v4l2_s_ext_ctrl(int fp, unsigned int id, void *value) return ret; } -#endif static int fimc_v4l2_g_parm(int fp, struct v4l2_streamparm *streamparm) { @@ -637,7 +557,6 @@ SecCamera::SecCamera() : m_snapshot_max_width (MAX_BACK_CAMERA_SNAPSHOT_WIDTH), m_snapshot_max_height (MAX_BACK_CAMERA_SNAPSHOT_HEIGHT), m_angle(-1), - #ifdef SWP1_CAMERA_ADD_ADVANCED_FUNCTION m_anti_banding(-1), m_wdr(-1), m_anti_shake(-1), @@ -660,9 +579,6 @@ SecCamera::SecCamera() : m_video_gamma(-1), m_slow_ae(-1), m_camera_af_flag(-1), - #else - m_autofocus(-1), - #endif m_flag_camera_start(0), m_jpeg_thumbnail_width (0), m_jpeg_thumbnail_height(0), @@ -714,25 +630,12 @@ int SecCamera::initCamera(int index) */ m_camera_af_flag = -1; -#ifndef JPEG_FROM_SENSOR - 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 = 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); -#endif return -1; } @@ -774,7 +677,6 @@ int SecCamera::initCamera(int index) 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", __func__, CAMERA_DEV_NAME2, strerror(errno)); @@ -829,7 +731,7 @@ int SecCamera::initCamera(int index) return -1; ret = fimc_v4l2_s_input(m_cam_fd2, index); CHECK(ret); -#endif + m_camera_id = index; setExifFixedAttribute(); @@ -851,35 +753,23 @@ void SecCamera::DeinitCamera() LOGV("%s :", __func__); 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", __func__); - } - m_jpeg_fd = 0; - } -#endif -#ifdef DUAL_PORT_RECORDING stopRecord(); -#endif /* close m_cam_fd after stopRecord() because stopRecord() * uses m_cam_fd to change frame rate */ - LOGE("DeinitCamera: m_cam_fd(%d)", m_cam_fd); + LOGI("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); + LOGI("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); @@ -904,23 +794,12 @@ int SecCamera::getCameraFd(void) // ====================================================================== // Preview -int SecCamera::flagPreviewStart(void) -{ - LOGV("%s:started(%d)", __func__, m_flag_camera_start); - - return m_flag_camera_start > 0; -} - int SecCamera::startPreview(void) { v4l2_streamparm streamparm; struct sec_cam_parm *parms; parms = (struct sec_cam_parm*)&streamparm.parm.raw_data; -#ifdef SWP1_CAMERA_ADD_ADVANCED_FUNCTION 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) { @@ -949,7 +828,6 @@ int SecCamera::startPreview(void) ret = fimc_v4l2_querybuf(m_cam_fd, m_buffers_c, V4L2_BUF_TYPE_VIDEO_CAPTURE, MAX_BUFFERS); CHECK(ret); -#ifdef SWP1_CAMERA_ADD_ADVANCED_FUNCTION LOGV("%s : m_preview_width: %d m_preview_height: %d m_angle: %d\n", __func__, m_preview_width, m_preview_height, m_angle); @@ -963,7 +841,6 @@ int SecCamera::startPreview(void) 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); @@ -973,7 +850,6 @@ int SecCamera::startPreview(void) ret = fimc_v4l2_streamon(m_cam_fd); CHECK(ret); -#ifdef SWP1_CAMERA_ADD_ADVANCED_FUNCTION m_flag_camera_start = 1; ret = fimc_v4l2_s_parm(m_cam_fd, &m_streamparm); @@ -986,7 +862,6 @@ int SecCamera::startPreview(void) m_blur_level); 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); @@ -994,24 +869,15 @@ int SecCamera::startPreview(void) ret = fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_RETURN_FOCUS, 0); CHECK(ret); -#ifdef SWP1_CAMERA_ADD_ADVANCED_FUNCTION LOGV("%s: got 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; -#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 return 0; } int SecCamera::stopPreview(void) { + int ret; + LOGV("%s :", __func__); close_buffers(m_buffers_c); @@ -1024,17 +890,12 @@ int SecCamera::stopPreview(void) if (m_params->flash_mode == FLASH_MODE_TORCH) setFlashMode(FLASH_MODE_OFF); -#ifdef ENABLE_HDMI_DISPLAY - hdmi_deinitialize(); - hdmi_gl_streamon(0); -#endif - if (m_cam_fd <= 0) { LOGE("ERR(%s):Camera was closed\n", __func__); return -1; } - int ret = fimc_v4l2_streamoff(m_cam_fd); + ret = fimc_v4l2_streamoff(m_cam_fd); m_flag_camera_start = 0; CHECK(ret); @@ -1043,7 +904,6 @@ int SecCamera::stopPreview(void) } //Recording -#ifdef DUAL_PORT_RECORDING int SecCamera::startRecord(void) { LOGV("%s :", __func__); @@ -1068,7 +928,6 @@ int SecCamera::startRecord(void) 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", __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); @@ -1076,12 +935,6 @@ int SecCamera::startRecord(void) 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 */ ret = fimc_v4l2_reqbufs(m_cam_fd2, V4L2_BUF_TYPE_VIDEO_CAPTURE, MAX_BUFFERS); CHECK(ret); @@ -1108,6 +961,8 @@ int SecCamera::startRecord(void) int SecCamera::stopRecord(void) { + int ret; + if (m_flag_record_start == 0) return 0; @@ -1120,7 +975,7 @@ int SecCamera::stopRecord(void) return -1; } - int ret = fimc_v4l2_streamoff(m_cam_fd2); + ret = fimc_v4l2_streamoff(m_cam_fd2); m_flag_record_start = 0; CHECK(ret); @@ -1145,7 +1000,6 @@ unsigned int SecCamera::getRecPhyAddrC(int index) CHECK((int)addr_c); return addr_c; } -#endif //DUAL_PORT_RECORDING unsigned int SecCamera::getPhyAddrY(int index) { @@ -1165,17 +1019,6 @@ unsigned int SecCamera::getPhyAddrC(int index) 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) -{ - *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); @@ -1184,9 +1027,7 @@ void SecCamera::pausePreview() int SecCamera::getPreview() { int index; -#ifdef SWP1_CAMERA_ADD_ADVANCED_FUNCTION int ret; -#endif #ifdef ENABLE_ESD_PREVIEW_CHECK int status = 0; @@ -1197,24 +1038,6 @@ int SecCamera::getPreview() } #endif // ENABLE_ESD_PREVIEW_CHECK -#ifdef PERFORMANCE - - 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(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 - #ifdef ENABLE_ESD_PREVIEW_CHECK if (m_flag_camera_start == 0 || fimc_esd_poll(&m_events_c) == 0 || status) { #else @@ -1236,74 +1059,35 @@ int SecCamera::getPreview() return -1; ret = fimc_v4l2_s_input(m_cam_fd, 1000); CHECK(ret); - //setCameraSensorReset(); ret = startPreview(); -#ifdef ENABLE_ESD_PREVIEW_CHECK - m_esd_check_count = 0; -#endif // ENABLE_ESD_PREVIEW_CHECK - 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", __func__, index); return -1; } -#ifdef SWP1_CAMERA_ADD_ADVANCED_FUNCTION ret = fimc_v4l2_qbuf(m_cam_fd, index); -#else /* SWP1_CAMERA_ADD_ADVANCED_FUNCTION */ - int ret = fimc_v4l2_qbuf(m_cam_fd, index); -#endif /* SWP1_CAMERA_ADD_ADVANCED_FUNCTION */ - CHECK(ret); -#ifdef ENABLE_HDMI_DISPLAY - hdmi_set_v_param(getPhyAddrY(index), getPhyAddrC (index), m_preview_width, m_preview_height); -#endif return index; - } -#ifdef DUAL_PORT_RECORDING int SecCamera::getRecord() { int index; -#ifdef SWP1_CAMERA_ADD_ADVANCED_FUNCTION 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_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)); - -#else - 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", __func__, index); return -1; @@ -1314,7 +1098,6 @@ int SecCamera::getRecord() return index; } -#endif //DUAL_PORT_RECORDING int SecCamera::setPreviewSize(int width, int height, int pixel_format) { @@ -1372,7 +1155,6 @@ int SecCamera::getPreviewPixelFormat(void) // ====================================================================== // Snapshot -#ifdef JPEG_FROM_SENSOR /* * Devide getJpeg() as two funcs, setSnapshotCmd() & getJpeg() because of the shutter sound timing. * Here, just send the capture cmd to camera ISP to start JPEG capture. @@ -1437,7 +1219,6 @@ unsigned char* SecCamera::getJpeg(int *jpeg_size, unsigned int *phyaddr) LOG_TIME_DEFINE(2) -#ifdef SWP1_CAMERA_ADD_ADVANCED_FUNCTION // capture ret = fimc_poll(&m_events_c); CHECK_PTR(ret); @@ -1446,7 +1227,6 @@ unsigned char* SecCamera::getJpeg(int *jpeg_size, unsigned int *phyaddr) 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); @@ -1475,7 +1255,7 @@ unsigned char* SecCamera::getJpeg(int *jpeg_size, unsigned int *phyaddr) int SecCamera::getExif(unsigned char *pExifDst, unsigned char *pThumbSrc) { JpegEncoder jpgEnc; -#if ADD_THUMB_IMG + LOGV("%s : m_jpeg_thumbnail_width = %d, height = %d", __func__, m_jpeg_thumbnail_width, m_jpeg_thumbnail_height); if ((m_jpeg_thumbnail_width > 0) && (m_jpeg_thumbnail_height > 0)) { @@ -1527,9 +1307,6 @@ int SecCamera::getExif(unsigned char *pExifDst, unsigned char *pThumbSrc) LOGV("%s : enableThumb set to false", __func__); mExifInfo.enableThumb = false; } -#else - mExifInfo.enableThumb = false; -#endif unsigned int exifSize; @@ -1573,25 +1350,10 @@ void SecCamera::getThumbnailConfig(int *width, int *height, int *size) } } -#ifdef DIRECT_DELIVERY_OF_POSTVIEW_DATA int SecCamera::getPostViewOffset(void) { return m_postview_offset; } -#endif - -#else //#ifdef JPEG_FROM_SENSOR -int SecCamera::getJpegFd(void) -{ - return m_jpeg_fd; -} - -void SecCamera::SetJpgAddr(unsigned char *addr) -{ - SetMapAddr(addr); -} - -#endif int SecCamera::getSnapshotAndJpeg(unsigned char *yuv_buf, unsigned char *jpeg_buf, unsigned int *output_size) @@ -1676,17 +1438,11 @@ int SecCamera::getSnapshotAndJpeg(unsigned char *yuv_buf, unsigned char *jpeg_bu LOGV("\nsnapshot dequeued 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); -#endif LOG_TIME_END(2) memcpy(yuv_buf, (unsigned char*)m_buffers_c[index].start, m_snapshot_width * m_snapshot_height * 2); LOG_TIME_START(5) // post fimc_v4l2_streamoff(m_cam_fd); -#ifdef DUMP_YUV - close_buffers(m_buffers_c); -#endif LOG_TIME_END(5) LOG_CAMERA("getSnapshotAndJpeg intervals : stopPreview(%lu), prepare(%lu)," @@ -1900,7 +1656,6 @@ int SecCamera::setAutofocus(void) { LOGV("%s :", __func__); -#ifdef SWP1_CAMERA_ADD_ADVANCED_FUNCTION if (m_cam_fd <= 0) { LOGE("ERR(%s):Camera was closed\n", __func__); return -1; @@ -1911,17 +1666,9 @@ int SecCamera::setAutofocus(void) return -1; } -#else - // kcoolsw : turn on setAutofocus initially.. - if (m_autofocus != AUTO_FOCUS_ON) { - m_autofocus = AUTO_FOCUS_ON; - } -#endif - return 0; } -#ifdef SWP1_CAMERA_ADD_ADVANCED_FUNCTION int SecCamera::getAutoFocusResult(void) { int af_result; @@ -1932,6 +1679,7 @@ int SecCamera::getAutoFocusResult(void) return af_result; } + int SecCamera::cancelAutofocus(void) { LOGV("%s :", __func__); @@ -1948,7 +1696,7 @@ int SecCamera::cancelAutofocus(void) return 0; } -#endif + // ----------------------------------- int SecCamera::zoomIn(void) @@ -1968,7 +1716,6 @@ int SecCamera::zoomOut(void) int SecCamera::SetRotate(int angle) { LOGE("%s(angle(%d))", __func__, angle); -#ifdef SWP1_CAMERA_ADD_ADVANCED_FUNCTION if (m_angle != angle) { switch (angle) { @@ -2005,7 +1752,6 @@ int SecCamera::SetRotate(int angle) } } } -#endif return 0; } @@ -2017,7 +1763,6 @@ int SecCamera::getRotate(void) int SecCamera::setFrameRate(int frame_rate) { -#ifdef SWP1_CAMERA_ADD_ADVANCED_FUNCTION LOGV("%s(FrameRate(%d))", __func__, frame_rate); if (frame_rate < FRAME_RATE_AUTO || FRAME_RATE_MAX < frame_rate ) @@ -2032,9 +1777,6 @@ int SecCamera::setFrameRate(int frame_rate) } } } -#else - m_params->capture.timeperframe.denominator = frame_rate; -#endif return 0; } @@ -2080,25 +1822,19 @@ int SecCamera::setWhiteBalance(int 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) { -#else - if (white_balance < WHITE_BALANCE_AUTO || WHITE_BALANCE_SUNNY < white_balance) { -#endif LOGE("ERR(%s):Invalid white_balance(%d)", __func__, white_balance); return -1; } if (m_params->white_balance != white_balance) { m_params->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", __func__); return -1; } } -#endif } return 0; @@ -2125,14 +1861,12 @@ int SecCamera::setBrightness(int brightness) if (m_params->brightness != brightness) { m_params->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) < 0) { LOGE("ERR(%s):Fail on V4L2_CID_CAMERA_BRIGHTNESS", __func__); return -1; } } -#endif } return 0; @@ -2150,25 +1884,19 @@ int SecCamera::setImageEffect(int 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) { -#else - if (image_effect < IMAGE_EFFECT_ORIGINAL || IMAGE_EFFECT_SILHOUETTE < image_effect) { -#endif LOGE("ERR(%s):Invalid image_effect(%d)", __func__, image_effect); return -1; } if (m_params->effects != image_effect) { m_params->effects = 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", __func__); return -1; } } -#endif } return 0; @@ -2181,7 +1909,6 @@ int SecCamera::getImageEffect(void) } // ====================================================================== -#ifdef SWP1_CAMERA_ADD_ADVANCED_FUNCTION int SecCamera::setAntiBanding(int anti_banding) { LOGV("%s(anti_banding(%d))", __func__, anti_banding); @@ -3056,8 +2783,6 @@ int SecCamera::setDataLineCheckStop(void) return 0; } -#endif - const __u8* SecCamera::getCameraSensorName(void) { LOGV("%s", __func__); @@ -3080,187 +2805,6 @@ int SecCamera::getCameraSensorESDStatus(void) // ====================================================================== // Jpeg -#ifndef JPEG_FROM_SENSOR -unsigned char* SecCamera::getJpeg(unsigned char *snapshot_data, int snapshot_size, int *size) -{ - 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; - - jpeg_data = yuv2Jpeg(snapshot_data, snapshot_size, &jpeg_size, - m_snapshot_width, m_snapshot_height, m_snapshot_v4lformat); - - *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)", - __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", __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", __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", __func__, m_jpeg_thumbnail_height); - goto YUV2JPEG_END; - } - -#endif - - if (raw_size == 0) { - 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 { - 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))", __func__, width, height); |