You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
698 lines
23 KiB
698 lines
23 KiB
/*
|
|
**
|
|
** 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 <sys/types.h>
|
|
|
|
#include <utils/RefBase.h>
|
|
#include <videodev2.h>
|
|
#include <videodev2_samsung.h>
|
|
#include <linux/vt.h>
|
|
|
|
#include <media.h>
|
|
#include <v4l2-mediabus.h>
|
|
#include <v4l2-subdev.h>
|
|
|
|
#include <sec_utils_v4l2.h>
|
|
|
|
#include "SecBuffer.h"
|
|
|
|
#include <mediactl.h>
|
|
#include <v4l2subdev.h>
|
|
|
|
#include <utils/String8.h>
|
|
|
|
#include "SecJpegEncoder.h"
|
|
|
|
#include "Exif.h"
|
|
namespace android {
|
|
|
|
//#define ENABLE_ESD_PREVIEW_CHECK
|
|
|
|
#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 JOIN(x, y) JOIN_AGAIN(x, y)
|
|
#define JOIN_AGAIN(x, y) x ## y
|
|
|
|
#define FRONT_CAM M5MO
|
|
#define BACK_CAM S5K4E5
|
|
|
|
#if !defined (FRONT_CAM) || !defined(BACK_CAM)
|
|
#error "Please define the Camera module"
|
|
#endif
|
|
|
|
#define M5MO_PREVIEW_WIDTH 1920
|
|
#define M5MO_PREVIEW_HEIGHT 1080
|
|
#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 S5K4E5_PREVIEW_WIDTH 1920
|
|
#define S5K4E5_PREVIEW_HEIGHT 1080
|
|
#define S5K4E5_SNAPSHOT_WIDTH 1920
|
|
#define S5K4E5_SNAPSHOT_HEIGHT 1080
|
|
|
|
#define S5K4E5_THUMBNAIL_WIDTH 320
|
|
#define S5K4E5_THUMBNAIL_HEIGHT 240
|
|
#define S5K4E5_THUMBNAIL_BPP 16
|
|
|
|
#define S5K4E5_FPS 30
|
|
|
|
/* focal length of 0.9mm */
|
|
#define S5K4E5_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
|
|
|
|
#define PFX_NODE_GSC "/dev/video"
|
|
|
|
#define M5MOLS_ENTITY_NAME "M5MOLS 5-001f"
|
|
#define PFX_SUBDEV_ENTITY_MIPI_CSIS "s5p-mipi-csis"
|
|
#define PFX_SUBDEV_ENTITY_FLITE "exynos-fimc-lite"
|
|
#define PFX_SUBDEV_ENTITY_GSC_CAP "gsc-cap-subdev"
|
|
#define PFX_VIDEODEV_ENTITY_GSC_CAP "exynos-gsc"
|
|
#define FIMD1_ENTITY_NAME "s5p-fimd1"
|
|
|
|
#define GAIA_FW_BETA 1
|
|
|
|
#ifndef GAIA_FW_BETA
|
|
#define GSC_VD_NODE_OFFSET 25 //GSCALER 0 (0:25, 1:28, 2:31, 3:34)
|
|
#else
|
|
#define GSC_VD_NODE_OFFSET 41 //INTERNAL_ISP 4E5
|
|
|
|
#define ISP_SENSOR_MAX_ENTITIES 1
|
|
#define ISP_SENSOR_PAD_SOURCE_FRONT 0
|
|
#define ISP_SENSOR_PADS_NUM 1
|
|
|
|
#define ISP_FRONT_MAX_ENTITIES 1
|
|
#define ISP_FRONT_PAD_SINK 0
|
|
#define ISP_FRONT_PAD_SOURCE_BACK 1
|
|
#define ISP_FRONT_PAD_SOURCE_BAYER 2
|
|
#define ISP_FRONT_PAD_SOURCE_SCALERC 3
|
|
#define ISP_FRONT_PADS_NUM 4
|
|
|
|
#define ISP_BACK_MAX_ENTITIES 1
|
|
#define ISP_BACK_PAD_SINK 0
|
|
#define ISP_BACK_PAD_SOURCE_3DNR 1
|
|
#define ISP_BACK_PAD_SOURCE_SCALERP 2
|
|
#define ISP_BACK_PADS_NUM 3
|
|
|
|
#define ISP_MODULE_NAME "exynos5-fimc-is"
|
|
#define ISP_SENSOR_ENTITY_NAME "exynos5-fimc-is-sensor"
|
|
#define ISP_FRONT_ENTITY_NAME "exynos5-fimc-is-front"
|
|
#define ISP_BACK_ENTITY_NAME "exynos5-fimc-is-back"
|
|
#define ISP_VIDEO_BAYER_NAME "exynos5-fimc-is-bayer"
|
|
#define ISP_VIDEO_SCALERC_NAME "exynos5-fimc-is-scalerc"
|
|
#define ISP_VIDEO_3DNR_NAME "exynos5-fimc-is-3dnr"
|
|
#define ISP_VIDEO_SCALERP_NAME "exynos5-fimc-is-scalerp"
|
|
|
|
#endif
|
|
#define MIPI_NUM 1
|
|
#define FLITE_NUM 1
|
|
#define GSC_NUM 0
|
|
|
|
#define PFX_SUBDEV_NODE "/dev/v4l-subdev"
|
|
|
|
#define BPP 2
|
|
#define MIN(x, y) (((x) < (y)) ? (x) : (y))
|
|
#ifndef GAIA_FW_BETA
|
|
#define MAX_BUFFERS 8
|
|
#else
|
|
#define MAX_BUFFERS 4 //external : 8, internal : 4
|
|
#endif
|
|
|
|
#define MAX_PLANES (3)
|
|
#define V4L2_BUF_TYPE V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE
|
|
|
|
#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)
|
|
|
|
/*
|
|
* 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 RECORD_MODE 2
|
|
|
|
/* We use this struct as the v4l2_streamparm raw_data for
|
|
* VIDIOC_G_PARM and VIDIOC_S_PARM
|
|
*/
|
|
struct sec_cam_parm {
|
|
struct v4l2_captureparm capture;
|
|
int contrast;
|
|
int effects;
|
|
int brightness;
|
|
int exposure;
|
|
int flash_mode;
|
|
int focus_mode;
|
|
int iso;
|
|
int metering;
|
|
int saturation;
|
|
int scene_mode;
|
|
int sharpness;
|
|
int hue;
|
|
int white_balance;
|
|
};
|
|
|
|
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,
|
|
};
|
|
|
|
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);
|
|
|
|
int startPreview(void);
|
|
int stopPreview(void);
|
|
int getPreviewState(void)
|
|
{
|
|
return m_preview_state;
|
|
}
|
|
void clearPreviewState(void)
|
|
{
|
|
m_preview_state = 0;
|
|
}
|
|
|
|
int startRecord(void);
|
|
int stopRecord(void);
|
|
int setPreviewFrame(int index);
|
|
int getRecordFrame(void);
|
|
int releaseRecordFrame(int index);
|
|
int getRecordAddr(int index, SecBuffer *buffer);
|
|
|
|
int getPreview(void);
|
|
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 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 setAutofocus(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 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 setRecording(int recording_en);
|
|
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);
|
|
#ifdef ENABLE_ESD_PREVIEW_CHECK
|
|
int getCameraSensorESDStatus(void);
|
|
#endif // ENABLE_ESD_PREVIEW_CHECK
|
|
|
|
int setFrameRate(int frame_rate);
|
|
unsigned char* getJpeg(int*, unsigned int*);
|
|
int getSnapshotAndJpeg(unsigned char *yuv_buf, unsigned char *jpeg_buf,
|
|
unsigned int *output_size);
|
|
int getExif(unsigned char *pExifDst, unsigned char *pThumbSrc);
|
|
|
|
void getPostViewConfig(int*, int*, int*);
|
|
void getThumbnailConfig(int *width, int *height, int *size);
|
|
|
|
int getPostViewOffset(void);
|
|
int getCameraFd(void);
|
|
unsigned char* getPictureVaddr(void);
|
|
int getJpegFd(void);
|
|
void SetJpgAddr(unsigned char *addr);
|
|
int getPreviewAddr(int index, SecBuffer *buffer);
|
|
void setUserBufferAddr(void *ptr, int index, int mode);
|
|
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_camera_id;
|
|
|
|
/* v4l2 sub-dev file description */
|
|
int m_cam_sd_fd;
|
|
int m_mipi_sd_fd;
|
|
int m_flite_sd_fd;
|
|
int m_gsc_sd_fd;
|
|
int m_gsc_vd_fd;
|
|
|
|
/* media controller variable */
|
|
struct media_device *media;
|
|
struct media_link *links;
|
|
struct media_pad *pads;
|
|
|
|
struct media_entity *camera_sd_entity;
|
|
struct media_entity *mipi_sd_entity;
|
|
struct media_entity *flite_sd_entity;
|
|
struct media_entity *gsc_cap_sd_entity;
|
|
struct media_entity *gsc_cap_vd_entity;
|
|
struct media_entity *isp_sensor_entity;
|
|
struct media_entity *isp_front_entity;
|
|
struct media_entity *isp_back_entity;
|
|
struct media_entity *isp_scalerc_entity;
|
|
struct media_entity *isp_scalerp_entity;
|
|
struct media_entity *isp_3dnr_entity;
|
|
|
|
int m_cam_fd;
|
|
|
|
int m_cam_fd2;
|
|
struct pollfd m_events_c2;
|
|
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;
|
|
unsigned char* m_picture_vaddr;
|
|
|
|
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;
|
|
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_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;
|
|
struct SecBuffer m_buffers_preview[MAX_BUFFERS];
|
|
struct SecBuffer m_buffers_record[MAX_BUFFERS];
|
|
struct pollfd m_events_c;
|
|
|
|
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
|
|
|