|
|
|
/*
|
|
|
|
**
|
|
|
|
** Copyright 2008, The Android Open Source Project
|
|
|
|
** Copyright 2010, Samsung Electronics Co. LTD
|
|
|
|
**
|
|
|
|
** Licensed under the Apache License, Version 2.0 (the "License");
|
|
|
|
** you may not use this file except in compliance with the License.
|
|
|
|
** You may obtain a copy of the License at
|
|
|
|
**
|
|
|
|
** http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
**
|
|
|
|
** Unless required by applicable law or agreed to in writing, software
|
|
|
|
** distributed under the License is distributed on an "AS IS" BASIS,
|
|
|
|
** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
|
|
** See the License for the specific language governing permissions and
|
|
|
|
** limitations under the License.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef ANDROID_HARDWARE_CAMERA_SEC_H
|
|
|
|
#define ANDROID_HARDWARE_CAMERA_SEC_H
|
|
|
|
|
|
|
|
#include <stdio.h>
|
|
|
|
#include <string.h>
|
|
|
|
#include <stdlib.h>
|
|
|
|
|
|
|
|
#include <fcntl.h>
|
|
|
|
#include <unistd.h>
|
|
|
|
#include <errno.h>
|
|
|
|
#include <signal.h>
|
|
|
|
#include <sys/mman.h>
|
|
|
|
#include <sys/time.h>
|
|
|
|
#include <sys/ioctl.h>
|
|
|
|
#include <sys/poll.h>
|
|
|
|
#include <sys/stat.h>
|
|
|
|
|
|
|
|
#include <utils/RefBase.h>
|
|
|
|
#include <hardware/camera.h>
|
|
|
|
#include <videodev2.h>
|
|
|
|
#include <videodev2_exynos_camera.h>
|
|
|
|
#include <videodev2_exynos_media.h>
|
|
|
|
#include "sec_utils_v4l2.h"
|
|
|
|
|
|
|
|
#include "SecBuffer.h"
|
|
|
|
|
|
|
|
#include <utils/String8.h>
|
|
|
|
|
|
|
|
#ifdef SAMSUNG_EXYNOS4210
|
|
|
|
#include "jpeg_api.h"
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifdef SAMSUNG_EXYNOS4x12
|
|
|
|
#include "jpeg_hal.h"
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#include "Exif.h"
|
|
|
|
namespace android {
|
|
|
|
|
|
|
|
//#define ENABLE_ESD_PREVIEW_CHECK
|
|
|
|
//#define ZERO_SHUTTER_LAG
|
|
|
|
#define VIDEO_SNAPSHOT
|
|
|
|
|
|
|
|
#if defined VIDEO_SNAPSHOT
|
|
|
|
#define ZERO_SHUTTER_LAG
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#define USE_FACE_DETECTION
|
|
|
|
//#define USE_TOUCH_AF
|
|
|
|
|
|
|
|
#if defined(LOG_NDEBUG) && (LOG_NDEBUG == 0)
|
|
|
|
#define LOG_CAMERA LOGD
|
|
|
|
#define LOG_CAMERA_PREVIEW LOGD
|
|
|
|
|
|
|
|
#define LOG_TIME_DEFINE(n) \
|
|
|
|
struct timeval time_start_##n, time_stop_##n; unsigned long log_time_##n = 0;
|
|
|
|
|
|
|
|
#define LOG_TIME_START(n) \
|
|
|
|
gettimeofday(&time_start_##n, NULL);
|
|
|
|
|
|
|
|
#define LOG_TIME_END(n) \
|
|
|
|
gettimeofday(&time_stop_##n, NULL); log_time_##n = measure_time_camera(&time_start_##n, &time_stop_##n);
|
|
|
|
|
|
|
|
#define LOG_TIME(n) \
|
|
|
|
log_time_##n
|
|
|
|
|
|
|
|
#else
|
|
|
|
#define LOG_CAMERA(...)
|
|
|
|
#define LOG_CAMERA_PREVIEW(...)
|
|
|
|
#define LOG_TIME_DEFINE(n)
|
|
|
|
#define LOG_TIME_START(n)
|
|
|
|
#define LOG_TIME_END(n)
|
|
|
|
#define LOG_TIME(n)
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#define FRM_RATIO(w, h) ((w)*10/(h))
|
|
|
|
#define SIZE_4K (1 << 12)
|
|
|
|
|
|
|
|
#define JOIN(x, y) JOIN_AGAIN(x, y)
|
|
|
|
#define JOIN_AGAIN(x, y) x ## y
|
|
|
|
|
|
|
|
#define FRONT_CAM S5K6A3
|
|
|
|
#define BACK_CAM M5MO
|
|
|
|
|
|
|
|
#if !defined (FRONT_CAM) || !defined(BACK_CAM)
|
|
|
|
#error "Please define the Camera module"
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#define M5MO_PREVIEW_WIDTH 640
|
|
|
|
#define M5MO_PREVIEW_HEIGHT 480
|
|
|
|
#define M5MO_SNAPSHOT_WIDTH 3264
|
|
|
|
#define M5MO_SNAPSHOT_HEIGHT 2448
|
|
|
|
|
|
|
|
#define M5MO_THUMBNAIL_WIDTH 320
|
|
|
|
#define M5MO_THUMBNAIL_HEIGHT 240
|
|
|
|
#define M5MO_THUMBNAIL_BPP 16
|
|
|
|
|
|
|
|
#define M5MO_FPS 30
|
|
|
|
|
|
|
|
/* focal length of 3.43mm */
|
|
|
|
#define M5MO_FOCAL_LENGTH 343
|
|
|
|
|
|
|
|
#define S5K6A3_PREVIEW_WIDTH 480
|
|
|
|
#define S5K6A3_PREVIEW_HEIGHT 480
|
|
|
|
#define S5K6A3_SNAPSHOT_WIDTH 1392
|
|
|
|
#define S5K6A3_SNAPSHOT_HEIGHT 1392
|
|
|
|
|
|
|
|
#define S5K6A3_THUMBNAIL_WIDTH 160
|
|
|
|
#define S5K6A3_THUMBNAIL_HEIGHT 120
|
|
|
|
#define S5K6A3_THUMBNAIL_BPP 16
|
|
|
|
|
|
|
|
#define S5K6A3_FPS 30
|
|
|
|
|
|
|
|
/* focal length of 0.9mm */
|
|
|
|
#define S5K6A3_FOCAL_LENGTH 90
|
|
|
|
|
|
|
|
#define MAX_BACK_CAMERA_PREVIEW_WIDTH JOIN(BACK_CAM,_PREVIEW_WIDTH)
|
|
|
|
#define MAX_BACK_CAMERA_PREVIEW_HEIGHT JOIN(BACK_CAM,_PREVIEW_HEIGHT)
|
|
|
|
#define MAX_BACK_CAMERA_SNAPSHOT_WIDTH JOIN(BACK_CAM,_SNAPSHOT_WIDTH)
|
|
|
|
#define MAX_BACK_CAMERA_SNAPSHOT_HEIGHT JOIN(BACK_CAM,_SNAPSHOT_HEIGHT)
|
|
|
|
|
|
|
|
#define BACK_CAMERA_THUMBNAIL_WIDTH JOIN(BACK_CAM,_THUMBNAIL_WIDTH)
|
|
|
|
#define BACK_CAMERA_THUMBNAIL_HEIGHT JOIN(BACK_CAM,_THUMBNAIL_HEIGHT)
|
|
|
|
#define BACK_CAMERA_THUMBNAIL_BPP JOIN(BACK_CAM,_THUMBNAIL_BPP)
|
|
|
|
|
|
|
|
#define BACK_CAMERA_FPS JOIN(BACK_CAM,_FPS)
|
|
|
|
|
|
|
|
#define BACK_CAMERA_FOCAL_LENGTH JOIN(BACK_CAM,_FOCAL_LENGTH)
|
|
|
|
|
|
|
|
#define MAX_FRONT_CAMERA_PREVIEW_WIDTH JOIN(FRONT_CAM,_PREVIEW_WIDTH)
|
|
|
|
#define MAX_FRONT_CAMERA_PREVIEW_HEIGHT JOIN(FRONT_CAM,_PREVIEW_HEIGHT)
|
|
|
|
#define MAX_FRONT_CAMERA_SNAPSHOT_WIDTH JOIN(FRONT_CAM,_SNAPSHOT_WIDTH)
|
|
|
|
#define MAX_FRONT_CAMERA_SNAPSHOT_HEIGHT JOIN(FRONT_CAM,_SNAPSHOT_HEIGHT)
|
|
|
|
|
|
|
|
#define FRONT_CAMERA_THUMBNAIL_WIDTH JOIN(FRONT_CAM,_THUMBNAIL_WIDTH)
|
|
|
|
#define FRONT_CAMERA_THUMBNAIL_HEIGHT JOIN(FRONT_CAM,_THUMBNAIL_HEIGHT)
|
|
|
|
#define FRONT_CAMERA_THUMBNAIL_BPP JOIN(FRONT_CAM,_THUMBNAIL_BPP)
|
|
|
|
|
|
|
|
#define FRONT_CAMERA_FPS JOIN(FRONT_CAM,_FPS)
|
|
|
|
|
|
|
|
#define FRONT_CAMERA_FOCAL_LENGTH JOIN(FRONT_CAM,_FOCAL_LENGTH)
|
|
|
|
|
|
|
|
#define DEFAULT_JPEG_THUMBNAIL_WIDTH 256
|
|
|
|
#define DEFAULT_JPEG_THUMBNAIL_HEIGHT 192
|
|
|
|
|
|
|
|
#ifdef BOARD_USE_V4L2
|
|
|
|
#define CAMERA_DEV_NAME "/dev/video1"
|
|
|
|
#else
|
|
|
|
#define CAMERA_DEV_NAME "/dev/video0"
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifdef SAMSUNG_EXYNOS4210
|
|
|
|
#define CAMERA_DEV_NAME3 "/dev/video2"
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifdef SAMSUNG_EXYNOS4x12
|
|
|
|
#ifdef BOARD_USE_V4L2
|
|
|
|
#define CAMERA_DEV_NAME3 "/dev/video3"
|
|
|
|
#else
|
|
|
|
#define CAMERA_DEV_NAME3 "/dev/video1"
|
|
|
|
#endif
|
|
|
|
#ifdef ZERO_SHUTTER_LAG
|
|
|
|
#define CAMERA_DEV_NAME2 "/dev/video2"
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#define CAMERA_DEV_NAME_TEMP "/data/videotmp_000"
|
|
|
|
#define CAMERA_DEV_NAME2_TEMP "/data/videotemp_002"
|
|
|
|
|
|
|
|
|
|
|
|
#define BPP 2
|
|
|
|
#define MIN(x, y) (((x) < (y)) ? (x) : (y))
|
|
|
|
#define MAX_BUFFERS 8
|
|
|
|
|
|
|
|
#ifdef ZERO_SHUTTER_LAG
|
|
|
|
#define CAP_BUFFERS 8
|
|
|
|
#else
|
|
|
|
#define CAP_BUFFERS 1
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifdef BOARD_USE_V4L2
|
|
|
|
#define MAX_PLANES (3)
|
|
|
|
#define V4L2_BUF_TYPE V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE
|
|
|
|
#else
|
|
|
|
#define MAX_PLANES (1)
|
|
|
|
#define V4L2_BUF_TYPE V4L2_BUF_TYPE_VIDEO_CAPTURE
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifdef BOARD_USE_V4L2_ION
|
|
|
|
#define V4L2_MEMORY_TYPE V4L2_MEMORY_USERPTR
|
|
|
|
#define RECORD_PIX_FMT V4L2_PIX_FMT_NV12M
|
|
|
|
#define PREVIEW_NUM_PLANE (3)
|
|
|
|
#define RECORD_NUM_PLANE (2)
|
|
|
|
#else
|
|
|
|
#define V4L2_MEMORY_TYPE V4L2_MEMORY_MMAP
|
|
|
|
#define RECORD_PIX_FMT V4L2_PIX_FMT_NV12
|
|
|
|
#define PREVIEW_NUM_PLANE (1)
|
|
|
|
#define RECORD_NUM_PLANE (1)
|
|
|
|
#endif
|
|
|
|
|
|
|
|
/*
|
|
|
|
* V 4 L 2 F I M C E X T E N S I O N S
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
#define V4L2_CID_ROTATION (V4L2_CID_PRIVATE_BASE + 0)
|
|
|
|
#define V4L2_CID_PADDR_Y (V4L2_CID_PRIVATE_BASE + 1)
|
|
|
|
#define V4L2_CID_PADDR_CB (V4L2_CID_PRIVATE_BASE + 2)
|
|
|
|
#define V4L2_CID_PADDR_CR (V4L2_CID_PRIVATE_BASE + 3)
|
|
|
|
#define V4L2_CID_PADDR_CBCR (V4L2_CID_PRIVATE_BASE + 4)
|
|
|
|
#define V4L2_CID_STREAM_PAUSE (V4L2_CID_PRIVATE_BASE + 53)
|
|
|
|
|
|
|
|
#define V4L2_CID_CAM_JPEG_MAIN_SIZE (V4L2_CID_PRIVATE_BASE + 32)
|
|
|
|
#define V4L2_CID_CAM_JPEG_MAIN_OFFSET (V4L2_CID_PRIVATE_BASE + 33)
|
|
|
|
#define V4L2_CID_CAM_JPEG_THUMB_SIZE (V4L2_CID_PRIVATE_BASE + 34)
|
|
|
|
#define V4L2_CID_CAM_JPEG_THUMB_OFFSET (V4L2_CID_PRIVATE_BASE + 35)
|
|
|
|
#define V4L2_CID_CAM_JPEG_POSTVIEW_OFFSET (V4L2_CID_PRIVATE_BASE + 36)
|
|
|
|
#define V4L2_CID_CAM_JPEG_QUALITY (V4L2_CID_PRIVATE_BASE + 37)
|
|
|
|
|
|
|
|
#define TPATTERN_COLORBAR 1
|
|
|
|
#define TPATTERN_HORIZONTAL 2
|
|
|
|
#define TPATTERN_VERTICAL 3
|
|
|
|
|
|
|
|
#define V4L2_PIX_FMT_YVYU v4l2_fourcc('Y', 'V', 'Y', 'U')
|
|
|
|
|
|
|
|
/* FOURCC for FIMC specific */
|
|
|
|
#define V4L2_PIX_FMT_VYUY v4l2_fourcc('V', 'Y', 'U', 'Y')
|
|
|
|
#define V4L2_PIX_FMT_NV16 v4l2_fourcc('N', 'V', '1', '6')
|
|
|
|
#define V4L2_PIX_FMT_NV61 v4l2_fourcc('N', 'V', '6', '1')
|
|
|
|
#define V4L2_PIX_FMT_NV12T v4l2_fourcc('T', 'V', '1', '2')
|
|
|
|
/*
|
|
|
|
* U S E R D E F I N E D T Y P E S
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
#define PREVIEW_MODE 1
|
|
|
|
#define CAPTURE_MODE 2
|
|
|
|
#define RECORD_MODE 3
|
|
|
|
|
|
|
|
struct yuv_fmt_list {
|
|
|
|
const char *name;
|
|
|
|
const char *desc;
|
|
|
|
unsigned int fmt;
|
|
|
|
int depth;
|
|
|
|
int planes;
|
|
|
|
};
|
|
|
|
|
|
|
|
struct camsensor_date_info {
|
|
|
|
unsigned int year;
|
|
|
|
unsigned int month;
|
|
|
|
unsigned int date;
|
|
|
|
};
|
|
|
|
|
|
|
|
class SecCamera : public virtual RefBase {
|
|
|
|
public:
|
|
|
|
|
|
|
|
enum CAMERA_ID {
|
|
|
|
CAMERA_ID_BACK = 0,
|
|
|
|
CAMERA_ID_FRONT = 1,
|
|
|
|
};
|
|
|
|
|
|
|
|
enum JPEG_QUALITY {
|
|
|
|
JPEG_QUALITY_ECONOMY = 0,
|
|
|
|
JPEG_QUALITY_NORMAL = 50,
|
|
|
|
JPEG_QUALITY_SUPERFINE = 100,
|
|
|
|
JPEG_QUALITY_MAX,
|
|
|
|
};
|
|
|
|
|
|
|
|
enum OBJECT_TRACKING {
|
|
|
|
OBJECT_TRACKING_OFF,
|
|
|
|
OBJECT_TRACKING_ON,
|
|
|
|
OBJECT_TRACKING_MAX,
|
|
|
|
};
|
|
|
|
|
|
|
|
/*VT call*/
|
|
|
|
enum VT_MODE {
|
|
|
|
VT_MODE_OFF,
|
|
|
|
VT_MODE_ON,
|
|
|
|
VT_MODE_MAX,
|
|
|
|
};
|
|
|
|
|
|
|
|
/*Camera sensor mode - Camcorder fix fps*/
|
|
|
|
enum SENSOR_MODE {
|
|
|
|
SENSOR_MODE_CAMERA,
|
|
|
|
SENSOR_MODE_MOVIE,
|
|
|
|
};
|
|
|
|
|
|
|
|
/*Camera Shot mode*/
|
|
|
|
enum SHOT_MODE {
|
|
|
|
SHOT_MODE_SINGLE = 0,
|
|
|
|
SHOT_MODE_CONTINUOUS = 1,
|
|
|
|
SHOT_MODE_PANORAMA = 2,
|
|
|
|
SHOT_MODE_SMILE = 3,
|
|
|
|
SHOT_MODE_SELF = 6,
|
|
|
|
};
|
|
|
|
|
|
|
|
enum CHK_DATALINE {
|
|
|
|
CHK_DATALINE_OFF,
|
|
|
|
CHK_DATALINE_ON,
|
|
|
|
CHK_DATALINE_MAX,
|
|
|
|
};
|
|
|
|
|
|
|
|
enum CAM_MODE {
|
|
|
|
PREVIEW = 0,
|
|
|
|
PICTURE = 1,
|
|
|
|
RECORDING = 2,
|
|
|
|
};
|
|
|
|
|
|
|
|
int m_touch_af_start_stop;
|
|
|
|
|
|
|
|
SecCamera();
|
|
|
|
virtual ~SecCamera();
|
|
|
|
|
|
|
|
static SecCamera* createInstance(void)
|
|
|
|
{
|
|
|
|
static SecCamera singleton;
|
|
|
|
return &singleton;
|
|
|
|
}
|
|
|
|
status_t dump(int fd);
|
|
|
|
|
|
|
|
bool CreateCamera(int index);
|
|
|
|
bool DestroyCamera(void);
|
|
|
|
int getCameraId(void);
|
|
|
|
void initParameters(int index);
|
|
|
|
int setMode(int recording_en);
|
|
|
|
|
|
|
|
int startPreview(void);
|
|
|
|
int stopPreview(void);
|
|
|
|
int getPreviewState(void)
|
|
|
|
{
|
|
|
|
return m_preview_state;
|
|
|
|
}
|
|
|
|
void clearPreviewState(void)
|
|
|
|
{
|
|
|
|
m_preview_state = 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
int startSnapshot(SecBuffer *yuv_buf);
|
|
|
|
int stopSnapshot(void);
|
|
|
|
int getSnapshot(void);
|
|
|
|
int setSnapshotFrame(int index);
|
|
|
|
|
|
|
|
int startRecord(bool recordHint);
|
|
|
|
int stopRecord(void);
|
|
|
|
int setPreviewFrame(int index);
|
|
|
|
int getRecordFrame(void);
|
|
|
|
int releaseRecordFrame(int index);
|
|
|
|
int getRecordAddr(int index, SecBuffer *buffer);
|
|
|
|
|
|
|
|
int getPreview(camera_frame_metadata_t *facedata);
|
|
|
|
int setPreviewSize(int width, int height, int pixel_format);
|
|
|
|
int getPreviewSize(int *width, int *height, int *frame_size);
|
|
|
|
int getPreviewMaxSize(int *width, int *height);
|
|
|
|
int getPreviewPixelFormat(void);
|
|
|
|
int setPreviewImage(int index, unsigned char *buffer, int size);
|
|
|
|
|
|
|
|
int setVideosnapshotSize(int width, int height);
|
|
|
|
int getVideosnapshotSize(int *width, int *height, int *frame_size);
|
|
|
|
int setSnapshotSize(int width, int height);
|
|
|
|
int getSnapshotSize(int *width, int *height, int *frame_size);
|
|
|
|
int getSnapshotMaxSize(int *width, int *height);
|
|
|
|
int setSnapshotPixelFormat(int pixel_format);
|
|
|
|
int getSnapshotPixelFormat(void);
|
|
|
|
|
|
|
|
unsigned char* getJpeg(unsigned char *snapshot_data, int snapshot_size, int *size);
|
|
|
|
unsigned char* yuv2Jpeg(unsigned char *raw_data, int raw_size,
|
|
|
|
int *jpeg_size,
|
|
|
|
int width, int height, int pixel_format);
|
|
|
|
|
|
|
|
int setJpegThumbnailSize(int width, int height);
|
|
|
|
int getJpegThumbnailSize(int *width, int *height);
|
|
|
|
|
|
|
|
int setJpegThumbnailQuality(int jpeg_thumbnail_quality);
|
|
|
|
int getJpegThumbnailQuality(void);
|
|
|
|
|
|
|
|
int initSetParams(void);
|
|
|
|
|
|
|
|
int setAutofocus(void);
|
|
|
|
int setTouchAF(void);
|
|
|
|
|
|
|
|
int SetRotate(int angle);
|
|
|
|
int getRotate(void);
|
|
|
|
|
|
|
|
int setVerticalMirror(void);
|
|
|
|
int setHorizontalMirror(void);
|
|
|
|
|
|
|
|
int setWhiteBalance(int white_balance);
|
|
|
|
int getWhiteBalance(void);
|
|
|
|
|
|
|
|
int setBrightness(int brightness);
|
|
|
|
int getBrightness(void);
|
|
|
|
|
|
|
|
int setExposure(int exposure);
|
|
|
|
int getExposure(void);
|
|
|
|
|
|
|
|
int setImageEffect(int image_effect);
|
|
|
|
int getImageEffect(void);
|
|
|
|
|
|
|
|
int setSceneMode(int scene_mode);
|
|
|
|
int getSceneMode(void);
|
|
|
|
|
|
|
|
int setFlashMode(int flash_mode);
|
|
|
|
int getFlashMode(void);
|
|
|
|
|
|
|
|
int setMetering(int metering_value);
|
|
|
|
int getMetering(void);
|
|
|
|
|
|
|
|
int setAutoExposureLock(int toggle);
|
|
|
|
int setAutoWhiteBalanceLock(int toggle);
|
|
|
|
|
|
|
|
int setISO(int iso_value);
|
|
|
|
int getISO(void);
|
|
|
|
|
|
|
|
int setContrast(int contrast_value);
|
|
|
|
int getContrast(void);
|
|
|
|
|
|
|
|
int setSaturation(int saturation_value);
|
|
|
|
int getSaturation(void);
|
|
|
|
|
|
|
|
int setSharpness(int sharpness_value);
|
|
|
|
int getSharpness(void);
|
|
|
|
|
|
|
|
int setHue(int hue_value);
|
|
|
|
int getHue(void);
|
|
|
|
|
|
|
|
int setWDR(int wdr_value);
|
|
|
|
int getWDR(void);
|
|
|
|
|
|
|
|
int setAntiShake(int anti_shake);
|
|
|
|
int getAntiShake(void);
|
|
|
|
|
|
|
|
int setJpegQuality(int jpeg_qality);
|
|
|
|
int getJpegQuality(void);
|
|
|
|
|
|
|
|
int setZoom(int zoom_level);
|
|
|
|
int getZoom(void);
|
|
|
|
|
|
|
|
int setObjectTracking(int object_tracking);
|
|
|
|
int getObjectTracking(void);
|
|
|
|
int getObjectTrackingStatus(void);
|
|
|
|
|
|
|
|
int setSmartAuto(int smart_auto);
|
|
|
|
int getSmartAuto(void);
|
|
|
|
int getAutosceneStatus(void);
|
|
|
|
|
|
|
|
int setBeautyShot(int beauty_shot);
|
|
|
|
int getBeautyShot(void);
|
|
|
|
|
|
|
|
int setVintageMode(int vintage_mode);
|
|
|
|
int getVintageMode(void);
|
|
|
|
|
|
|
|
int setFocusMode(int focus_mode);
|
|
|
|
int getFocusMode(void);
|
|
|
|
|
|
|
|
int setFaceDetect(int face_detect);
|
|
|
|
int getFaceDetect(void);
|
|
|
|
|
|
|
|
int setGPSLatitude(const char *gps_latitude);
|
|
|
|
int setGPSLongitude(const char *gps_longitude);
|
|
|
|
int setGPSAltitude(const char *gps_altitude);
|
|
|
|
int setGPSTimeStamp(const char *gps_timestamp);
|
|
|
|
int setGPSProcessingMethod(const char *gps_timestamp);
|
|
|
|
int cancelAutofocus(void);
|
|
|
|
int setFaceDetectLockUnlock(int facedetect_lockunlock);
|
|
|
|
int setObjectPosition(int x, int y);
|
|
|
|
int setObjectTrackingStartStop(int start_stop);
|
|
|
|
int setTouchAFStartStop(int start_stop);
|
|
|
|
int setCAFStatus(int on_off);
|
|
|
|
int getAutoFocusResult(void);
|
|
|
|
int setAntiBanding(int anti_banding);
|
|
|
|
int getPostview(void);
|
|
|
|
int setRecordingSize(int width, int height);
|
|
|
|
int getRecordingSize(int *width, int *height);
|
|
|
|
int setGamma(int gamma);
|
|
|
|
int setSlowAE(int slow_ae);
|
|
|
|
int setExifOrientationInfo(int orientationInfo);
|
|
|
|
int setBatchReflection(void);
|
|
|
|
int setSnapshotCmd(void);
|
|
|
|
int endSnapshot(void);
|
|
|
|
int setCameraSensorReset(void);
|
|
|
|
int setSensorMode(int sensor_mode); /* Camcorder fix fps */
|
|
|
|
int setShotMode(int shot_mode); /* Shot mode */
|
|
|
|
int setDataLineCheck(int chk_dataline);
|
|
|
|
int getDataLineCheck(void);
|
|
|
|
int setDataLineCheckStop(void);
|
|
|
|
int setDefultIMEI(int imei);
|
|
|
|
int getDefultIMEI(void);
|
|
|
|
const __u8* getCameraSensorName(void);
|
|
|
|
bool getUseInternalISP(void);
|
|
|
|
#ifdef ENABLE_ESD_PREVIEW_CHECK
|
|
|
|
int getCameraSensorESDStatus(void);
|
|
|
|
#endif // ENABLE_ESD_PREVIEW_CHECK
|
|
|
|
|
|
|
|
int setFrameRate(int frame_rate);
|
|
|
|
unsigned char* getJpeg(int *jpeg_size,
|
|
|
|
int *thumb_size,
|
|
|
|
unsigned int *thumb_addr,
|
|
|
|
unsigned int *phyaddr);
|
|
|
|
int getSnapshotAndJpeg(SecBuffer *yuv_buf,
|
|
|
|
int index,
|
|
|
|
unsigned char *jpeg_buf,
|
|
|
|
int *output_size);
|
|
|
|
int getExif(unsigned char *pExifDst, unsigned char *pThumbSrc, int thumbSize);
|
|
|
|
|
|
|
|
void getPostViewConfig(int*, int*, int*);
|
|
|
|
void getThumbnailConfig(int *width, int *height, int *size);
|
|
|
|
|
|
|
|
int getPostViewOffset(void);
|
|
|
|
int getCameraFd(enum CAM_MODE);
|
|
|
|
int getJpegFd(void);
|
|
|
|
void SetJpgAddr(unsigned char *addr);
|
|
|
|
int getPreviewAddr(int index, SecBuffer *buffer);
|
|
|
|
int getCaptureAddr(int index, SecBuffer *buffer);
|
|
|
|
#ifdef BOARD_USE_V4L2_ION
|
|
|
|
void setUserBufferAddr(void *ptr, int index, int mode);
|
|
|
|
#endif
|
|
|
|
static void setJpegRatio(double ratio)
|
|
|
|
{
|
|
|
|
if((ratio < 0) || (ratio > 1))
|
|
|
|
return;
|
|
|
|
|
|
|
|
jpeg_ratio = ratio;
|
|
|
|
}
|
|
|
|
|
|
|
|
static double getJpegRatio()
|
|
|
|
{
|
|
|
|
return jpeg_ratio;
|
|
|
|
}
|
|
|
|
|
|
|
|
static void setInterleaveDataSize(int x)
|
|
|
|
{
|
|
|
|
interleaveDataSize = x;
|
|
|
|
}
|
|
|
|
|
|
|
|
static int getInterleaveDataSize()
|
|
|
|
{
|
|
|
|
return interleaveDataSize;
|
|
|
|
}
|
|
|
|
|
|
|
|
static void setJpegLineLength(int x)
|
|
|
|
{
|
|
|
|
jpegLineLength = x;
|
|
|
|
}
|
|
|
|
|
|
|
|
static int getJpegLineLength()
|
|
|
|
{
|
|
|
|
return jpegLineLength;
|
|
|
|
}
|
|
|
|
|
|
|
|
private:
|
|
|
|
v4l2_streamparm m_streamparm;
|
|
|
|
struct sec_cam_parm *m_params;
|
|
|
|
int m_flagCreate;
|
|
|
|
int m_preview_state;
|
|
|
|
int m_snapshot_state;
|
|
|
|
int m_camera_id;
|
|
|
|
bool m_camera_use_ISP;
|
|
|
|
|
|
|
|
int m_cam_fd;
|
|
|
|
struct pollfd m_events_c;
|
|
|
|
|
|
|
|
int m_cam_fd2;
|
|
|
|
int m_cap_fd;
|
|
|
|
struct pollfd m_events_c2;
|
|
|
|
|
|
|
|
int m_cam_fd3;
|
|
|
|
int m_rec_fd;
|
|
|
|
struct pollfd m_events_c3;
|
|
|
|
int m_flag_record_start;
|
|
|
|
|
|
|
|
int m_preview_v4lformat;
|
|
|
|
int m_preview_width;
|
|
|
|
int m_preview_height;
|
|
|
|
int m_preview_max_width;
|
|
|
|
int m_preview_max_height;
|
|
|
|
|
|
|
|
int m_snapshot_v4lformat;
|
|
|
|
int m_snapshot_width;
|
|
|
|
int m_snapshot_height;
|
|
|
|
int m_snapshot_max_width;
|
|
|
|
int m_snapshot_max_height;
|
|
|
|
|
|
|
|
int m_num_capbuf;
|
|
|
|
int m_videosnapshot_width;
|
|
|
|
int m_videosnapshot_height;
|
|
|
|
|
|
|
|
int m_angle;
|
|
|
|
int m_anti_banding;
|
|
|
|
int m_wdr;
|
|
|
|
int m_anti_shake;
|
|
|
|
int m_zoom_level;
|
|
|
|
int m_object_tracking;
|
|
|
|
int m_smart_auto;
|
|
|
|
int m_beauty_shot;
|
|
|
|
int m_vintage_mode;
|
|
|
|
int m_face_detect;
|
|
|
|
int m_object_tracking_start_stop;
|
|
|
|
int m_recording_en;
|
|
|
|
bool m_record_hint;
|
|
|
|
int m_recording_width;
|
|
|
|
int m_recording_height;
|
|
|
|
long m_gps_latitude;
|
|
|
|
long m_gps_longitude;
|
|
|
|
long m_gps_altitude;
|
|
|
|
long m_gps_timestamp;
|
|
|
|
int m_sensor_mode; /*Camcorder fix fps */
|
|
|
|
int m_shot_mode; /* Shot mode */
|
|
|
|
int m_exif_orientation;
|
|
|
|
int m_chk_dataline;
|
|
|
|
int m_video_gamma;
|
|
|
|
int m_slow_ae;
|
|
|
|
int m_camera_af_flag;
|
|
|
|
int m_auto_focus_state;
|
|
|
|
|
|
|
|
int m_flag_camera_create;
|
|
|
|
int m_flag_camera_start;
|
|
|
|
|
|
|
|
int m_jpeg_fd;
|
|
|
|
int m_jpeg_thumbnail_width;
|
|
|
|
int m_jpeg_thumbnail_height;
|
|
|
|
int m_jpeg_thumbnail_quality;
|
|
|
|
int m_jpeg_quality;
|
|
|
|
|
|
|
|
int m_postview_offset;
|
|
|
|
|
|
|
|
#ifdef ENABLE_ESD_PREVIEW_CHECK
|
|
|
|
int m_esd_check_count;
|
|
|
|
#endif // ENABLE_ESD_PREVIEW_CHECK
|
|
|
|
|
|
|
|
exif_attribute_t mExifInfo;
|
|
|
|
|
|
|
|
struct SecBuffer m_capture_buf[CAP_BUFFERS];
|
|
|
|
struct SecBuffer m_buffers_preview[MAX_BUFFERS];
|
|
|
|
struct SecBuffer m_buffers_record[MAX_BUFFERS];
|
|
|
|
|
|
|
|
inline void writeExifIfd(unsigned char **pCur,
|
|
|
|
unsigned short tag,
|
|
|
|
unsigned short type,
|
|
|
|
unsigned int count,
|
|
|
|
uint32_t value);
|
|
|
|
inline void writeExifIfd(unsigned char **pCur,
|
|
|
|
unsigned short tag,
|
|
|
|
unsigned short type,
|
|
|
|
unsigned int count,
|
|
|
|
unsigned char *pValue);
|
|
|
|
inline void writeExifIfd(unsigned char **pCur,
|
|
|
|
unsigned short tag,
|
|
|
|
unsigned short type,
|
|
|
|
unsigned int count,
|
|
|
|
rational_t *pValue,
|
|
|
|
unsigned int *offset,
|
|
|
|
unsigned char *start);
|
|
|
|
inline void writeExifIfd(unsigned char **pCur,
|
|
|
|
unsigned short tag,
|
|
|
|
unsigned short type,
|
|
|
|
unsigned int count,
|
|
|
|
unsigned char *pValue,
|
|
|
|
unsigned int *offset,
|
|
|
|
unsigned char *start);
|
|
|
|
|
|
|
|
void setExifChangedAttribute();
|
|
|
|
void setExifFixedAttribute();
|
|
|
|
int makeExif (unsigned char *exifOut,
|
|
|
|
unsigned char *thumb_buf,
|
|
|
|
unsigned int thumb_size,
|
|
|
|
exif_attribute_t *exifInfo,
|
|
|
|
unsigned int *size,
|
|
|
|
bool useMainbufForThumb);
|
|
|
|
void resetCamera();
|
|
|
|
|
|
|
|
static double jpeg_ratio;
|
|
|
|
static int interleaveDataSize;
|
|
|
|
static int jpegLineLength;
|
|
|
|
};
|
|
|
|
|
|
|
|
extern unsigned long measure_time_camera(struct timeval *start, struct timeval *stop);
|
|
|
|
|
|
|
|
}; // namespace android
|
|
|
|
|
|
|
|
#endif // ANDROID_HARDWARE_CAMERA_SEC_H
|