blob: 6f4239a4830d58ad67b8ce2e2fb2caa2825ccb7f [file] [log] [blame]
#ifndef CAMERA_IFC_H
#define CAMERA_IFC_H
#define FEATURE_CAMERA_V7
#define FEATURE_NATIVELINUX
#define FEATURE_CAMERA_ENCODE_PROPERTIES
typedef enum {
QDSP_MODULE_KERNEL,
QDSP_MODULE_AFETASK,
QDSP_MODULE_AUDPLAY0TASK,
QDSP_MODULE_AUDPLAY1TASK,
QDSP_MODULE_AUDPPTASK,
QDSP_MODULE_VIDEOTASK,
QDSP_MODULE_VIDEO_AAC_VOC,
QDSP_MODULE_PCM_DEC,
QDSP_MODULE_AUDIO_DEC_MP3,
QDSP_MODULE_AUDIO_DEC_AAC,
QDSP_MODULE_AUDIO_DEC_WMA,
QDSP_MODULE_HOSTPCM,
QDSP_MODULE_DTMF,
QDSP_MODULE_AUDRECTASK,
QDSP_MODULE_AUDPREPROCTASK,
QDSP_MODULE_SBC_ENC,
QDSP_MODULE_VOC,
QDSP_MODULE_VOC_PCM,
QDSP_MODULE_VOCENCTASK,
QDSP_MODULE_VOCDECTASK,
QDSP_MODULE_VOICEPROCTASK,
QDSP_MODULE_VIDEOENCTASK,
QDSP_MODULE_VFETASK,
QDSP_MODULE_WAV_ENC,
QDSP_MODULE_AACLC_ENC,
QDSP_MODULE_VIDEO_AMR,
QDSP_MODULE_VOC_AMR,
QDSP_MODULE_VOC_EVRC,
QDSP_MODULE_VOC_13K,
QDSP_MODULE_VOC_FGV,
QDSP_MODULE_DIAGTASK,
QDSP_MODULE_JPEGTASK,
QDSP_MODULE_LPMTASK,
QDSP_MODULE_QCAMTASK,
QDSP_MODULE_MODMATHTASK,
QDSP_MODULE_AUDPLAY2TASK,
QDSP_MODULE_AUDPLAY3TASK,
QDSP_MODULE_AUDPLAY4TASK,
QDSP_MODULE_GRAPHICSTASK,
QDSP_MODULE_MIDI,
QDSP_MODULE_GAUDIO,
QDSP_MODULE_VDEC_LP_MODE,
QDSP_MODULE_MAX,
/* DO NOT USE: Force this enum to be a 32bit type to improve speed */
QDSP_MODULE_32BIT_DUMMY = 0x10000
} qdsp_module_type;
typedef enum
{
CAMERA_SUCCESS = 0,
CAMERA_INVALID_STATE,
CAMERA_INVALID_PARM,
CAMERA_INVALID_FORMAT,
CAMERA_NO_SENSOR,
CAMERA_NO_MEMORY,
CAMERA_NOT_SUPPORTED,
CAMERA_FAILED,
CAMERA_INVALID_STAND_ALONE_FORMAT,
CAMERA_MALLOC_FAILED_STAND_ALONE,
CAMERA_RET_CODE_MAX
} camera_ret_code_type;
typedef enum
{
/* YCbCr, each pixel is two bytes. Two pixels form a unit.
* MSB is Y, LSB is CB for the first pixel and CR for the second pixel. */
CAMERA_YCBCR,
#ifdef FEATURE_CAMERA_V7
CAMERA_YCBCR_4_2_0,
CAMERA_YCBCR_4_2_2,
CAMERA_H1V1,
CAMERA_H2V1,
CAMERA_H1V2,
CAMERA_H2V2,
CAMERA_BAYER_8BIT,
CAMERA_BAYER_10BIT,
#endif /* FEATURE_CAMERA_V7 */
/* RGB565, each pixel is two bytes.
* MS 5-bit is red, the next 6-bit is green. LS 5-bit is blue. */
CAMERA_RGB565,
/* RGB666, each pixel is four bytes.
* MS 14 bits are zeros, the next 6-bit is red, then 6-bit of green.
* LS 5-bit is blue. */
CAMERA_RGB666,
/* RGB444, each pixel is 2 bytes. The MS 4 bits are zeros, the next
* 4 bits are red, the next 4 bits are green. The LS 4 bits are blue. */
CAMERA_RGB444,
/* Bayer, each pixel is 1 bytes. 2x2 pixels form a unit.
* First line: first byte is blue, second byte is green.
* Second line: first byte is green, second byte is red. */
CAMERA_BAYER_BGGR,
/* Bayer, each pixel is 1 bytes. 2x2 pixels form a unit.
* First line: first byte is green, second byte is blue.
* Second line: first byte is red, second byte is green. */
CAMERA_BAYER_GBRG,
/* Bayer, each pixel is 1 bytes. 2x2 pixels form a unit.
* First line: first byte is green, second byte is red.
* Second line: first byte is blue, second byte is green. */
CAMERA_BAYER_GRBG,
/* Bayer, each pixel is 1 bytes. 2x2 pixels form a unit.
* First line: first byte is red, second byte is green.
* Second line: first byte is green, second byte is blue. */
CAMERA_BAYER_RGGB,
/* RGB888, each pixel is 3 bytes. R is 8 bits, G is 8 bits,
* B is 8 bits*/
CAMERA_RGB888
} camera_format_type;
typedef struct
{
/* Format of the frame */
camera_format_type format;
/* For pre-V7, Width and height of the picture.
* For V7:
* Snapshot: thumbnail dimension
* Raw Snapshot: not applicable
* Preview: not applicable
*/
uint16_t dx;
uint16_t dy;
/* For pre_V7: For BAYER format, RAW data before scaling.
* For V7:
* Snapshot: Main image dimension
* Raw snapshot: raw image dimension
* Preview: preview image dimension
*/
uint16_t captured_dx;
uint16_t captured_dy;
/* it indicates the degree of clockwise rotation that should be
* applied to obtain the exact view of the captured image. */
uint16_t rotation;
#ifdef FEATURE_CAMERA_V7
/* Preview: not applicable
* Raw shapshot: not applicable
* Snapshot: thumbnail image buffer
*/
uint8_t *thumbnail_image;
#endif /* FEATURE_CAMERA_V7 */
/* For pre-V7:
* Image buffer ptr
* For V7:
* Preview: preview image buffer ptr
* Raw snapshot: Raw image buffer ptr
* Shapshot: Main image buffer ptr
*/
uint8_t *buffer;
#ifdef FEATURE_NATIVELINUX
uint8_t *Y_Addr;
uint8_t *CbCr_Addr;
uint32_t *buf_Virt_Addr;
uint32_t header_size;
/*
* For JPEG encoding
*/
uint32_t buffer_phy_addr;
uint32_t thumbnail_phy_addr;
uint32_t pmem_id;
#endif
} camera_frame_type;
typedef enum
{
CAMERA_DEVICE_MEM,
CAMERA_DEVICE_EFS,
CAMERA_DEVICE_MAX
} camera_device_type;
typedef enum
{
CAMERA_RAW,
CAMERA_JPEG,
CAMERA_PNG,
CAMERA_YCBCR_ENCODE,
CAMERA_ENCODE_TYPE_MAX
} camera_encode_type;
typedef struct {
uint32_t buf_len;/* Length of each buffer */
uint32_t used_len;
uint8_t *buffer;
} camera_encode_mem_type;
#define MAX_JPEG_ENCODE_BUF_NUM 1
#define MAX_JPEG_ENCODE_BUF_LEN (1024*16)
typedef struct {
camera_device_type device;
#ifndef FEATURE_CAMERA_ENCODE_PROPERTIES
int32_t quality;
camera_encode_type format;
#endif /* nFEATURE_CAMERA_ENCODE_PROPERTIES */
int32_t encBuf_num;
camera_encode_mem_type encBuf[MAX_JPEG_ENCODE_BUF_NUM];
} camera_handle_mem_type;
typedef union
{
camera_device_type device;
camera_handle_mem_type mem;
} camera_handle_type;
typedef enum
{
CAMERA_RSP_CB_SUCCESS, /* Function is accepted */
CAMERA_EXIT_CB_DONE, /* Function is executed */
CAMERA_EXIT_CB_FAILED, /* Execution failed or rejected */
CAMERA_EXIT_CB_DSP_IDLE, /* DSP is in idle state */
CAMERA_EXIT_CB_DSP_ABORT, /* Abort due to DSP failure */
CAMERA_EXIT_CB_ABORT, /* Function aborted */
CAMERA_EXIT_CB_ERROR, /* Failed due to resource */
CAMERA_EVT_CB_FRAME, /* Preview or video frame ready */
CAMERA_EVT_CB_PICTURE, /* Picture frame ready for multi-shot */
CAMERA_STATUS_CB, /* Status updated */
CAMERA_EXIT_CB_FILE_SIZE_EXCEEDED, /* Specified file size not achieved,
encoded file written & returned anyway */
CAMERA_EXIT_CB_BUFFER, /* A buffer is returned */
CAMERA_EVT_CB_SNAPSHOT_DONE,/* Snapshot updated */
CAMERA_CB_MAX
} camera_cb_type;
typedef enum
{
CAMERA_FUNC_START,
CAMERA_FUNC_STOP,
CAMERA_FUNC_SET_DIMENSIONS,
CAMERA_FUNC_START_PREVIEW,
CAMERA_FUNC_TAKE_PICTURE,
CAMERA_FUNC_ENCODE_PICTURE,
CAMERA_FUNC_COLOR_CONVERT,
CAMERA_FUNC_START_RECORD,
CAMERA_FUNC_START_FOCUS,
CAMERA_FUNC_SET_OVERLAY,
CAMERA_FUNC_CLR_OVERLAY,
CAMERA_FUNC_SET_ICON_ARRAY,
CAMERA_FUNC_CLR_ICON_ARRAY,
CAMERA_FUNC_SET_POSITION,
CAMERA_FUNC_SET_EXIF_TAG,
CAMERA_FUNC_SET_PARM,
#ifdef FEATURE_QVPHONE
CAMERA_FUNC_ENABLE_QVP,
CAMERA_FUNC_DISABLE_QVP,
CAMERA_FUNC_START_QVP_ENCODE,
CAMERA_FUNC_STOP_QVP_ENCODE,
CAMERA_FUNC_QVP_RESET,
#endif /* FEATURE_QVPHONE */
CAMERA_FUNC_RELEASE_ENCODE_BUFFER,
CAMERA_FUNC_MAX,
/*==========================================================================
* The followings are for internal use only
==========================================================================*/
#ifdef FEATURE_CAMERA_MULTI_SENSOR
CAMERA_FUNC_SELECT_SENSOR,
#endif /* FEATURE_CAMERA_MULTI_SENSOR */
CAMERA_FUNC_STOP_PREVIEW,
CAMERA_FUNC_RELEASE_PICTURE,
CAMERA_FUNC_PAUSE_RECORD,
CAMERA_FUNC_RESUME_RECORD,
CAMERA_FUNC_STOP_RECORD,
CAMERA_FUNC_STOP_FOCUS,
CAMERA_FUNC_ENABLE_FRAME_CALLBACK,
CAMERA_FUNC_DISABLE_FRAME_CALLBACK,
CAMERA_FUNC_RELEASE_FRAME,
#ifdef FEATURE_VIDEO_ENCODE
CAMERA_FUNC_VIDEO_ENGINE_CB,
CAMERA_FUNC_VIDEO_HANDSHAKE,
#endif /* FEATURE_VIDEO_ENCODE */
CAMERA_FUNC_BLT,
CAMERA_FUNC_GET_INFO,
CAMERA_FUNC_GET_PARM,
CAMERA_FUNC_SET_REFLECT,
#ifdef FEATURE_CAMERA_V7
CAMERA_FUNC_INIT_RECORD,
CAMERA_FUNC_OFFLINE_SNAPSHOT,
#endif /* FEATURE_CAMERA_V7 */
CAMERA_FUNC_TAKE_MULTIPLE_PICTURES,
CAMERA_FUNC_PRVW_HISTOGRAM,
CAMERA_FUNC_SET_ZOOM,
CAMERA_FUNC_MAX1,
} camera_func_type;
typedef void (*camera_cb_f_type)(camera_cb_type cb,
const void *client_data,
camera_func_type func,
int32_t parm4);
typedef struct {
int32_t quality;
camera_encode_type format;
int32_t file_size;
} camera_encode_properties_type;
typedef enum
{
/* read only operation states: camera_state_type */
CAMERA_PARM_STATE,
/* read only active command in execution: camera_func_type */
CAMERA_PARM_ACTIVE_CMD,
/* zoom */
CAMERA_PARM_ZOOM,
/* This affects only when encoding. It has to be set only in
* preview mode */
CAMERA_PARM_ENCODE_ROTATION, /* 0, 90, 180, 270 degrees */
/* Sensor can be rotated from forward direction to reversed direction or
* vise versa. When in normal position, line 1 is on the top. When in
* reverse position, line 1 is now at the bottom, not on the top, so the image
* need to be reversed, 0 = normal, 1 = reverse */
CAMERA_PARM_SENSOR_POSITION, /* use camera_sp_type */
/* contrast */
CAMERA_PARM_CONTRAST,
/* brightness */
CAMERA_PARM_BRIGHTNESS,
/* sharpness */
CAMERA_PARM_SHARPNESS,
CAMERA_PARM_EXPOSURE, /* use camera_exposure_type */
CAMERA_PARM_WB, /* use camera_wb_type */
CAMERA_PARM_EFFECT, /* use camera_effect_type */
CAMERA_PARM_AUDIO_FMT, /* use video_fmt_stream_audio_type */
CAMERA_PARM_FPS, /* frames per second, unsigned integer number */
CAMERA_PARM_FLASH, /* Flash control, see camera_flash_type */
CAMERA_PARM_RED_EYE_REDUCTION, /* boolean */
CAMERA_PARM_NIGHTSHOT_MODE, /* Night shot mode, snapshot at reduced FPS */
CAMERA_PARM_REFLECT, /* Use camera_reflect_type */
CAMERA_PARM_PREVIEW_MODE, /* Use camera_preview_mode_type */
CAMERA_PARM_ANTIBANDING, /* Use camera_anti_banding_type */
/// CAMERA_PARM_THUMBNAIL_WIDTH, /* Width of thumbnail */
/// CAMERA_PARM_THUMBNAIL_HEIGHT, /* Height of thumbnail */
/// CAMERA_PARM_THUMBNAIL_QUALITY, /* Quality of thumbnail */
CAMERA_PARM_FOCUS_STEP,
CAMERA_PARM_FOCUS_RECT, /* Suresh Gara & Saikumar*/
CAMERA_PARM_AF_MODE,
#ifdef FEATURE_CAMERA_V7
/* Name change to CAMERA_PARM_EXPOSURE_METERING, remove this later */
CAMERA_PARM_AUTO_EXPOSURE_MODE, /* Use camera_auto_exposure_mode_type */
#endif /* FEATURE_CAMERA_V7 */
#ifdef FEATURE_CAMERA_INCALL
CAMERA_PARM_INCALL, /* In call and vocoder type */
#endif /* FEATURE_CAMERA_INCALL */
#ifdef FEATURE_VIDEO_ENCODE_FADING
CAMERA_PARM_FADING,
#endif /* FEATURE_VIDEO_ENCODE_FADING */
CAMERA_PARM_ISO,
#ifdef FEATURE_CAMERA_V7
/* Use to control the exposure compensation */
CAMERA_PARM_EXPOSURE_COMPENSATION,
CAMERA_PARM_PREVIEW_FPS,
CAMERA_PARM_EXPOSURE_METERING,
CAMERA_PARM_APERTURE,
CAMERA_PARM_SHUTTER_SPEED,
CAMERA_PARM_FLASH_STATE,
#endif /* FEATURE_CAMERA_V7 */
CAMERA_PARM_HUE,
CAMERA_PARM_SATURATION,
CAMERA_PARM_LUMA_ADAPTATION,
#ifdef FEATURE_VIDENC_TRANSITION_EFFECTS
CAMERA_PARM_TRANSITION,
CAMERA_PARM_TRANSITION_ALPHA,
CAMERA_PARM_TRANSITION_CURTAIN,
CAMERA_PARM_TRANSITION_OFF,
#endif /* FEATURE_VIDENC_TRANSITION_EFFECTS */
#ifdef FEATURE_CAMERA_V770
CAMERA_PARM_FRAME_TIMESTAMP,
CAMERA_PARM_STROBE_FLASH,
#endif //FEATURE_CAMERA_V770
CAMERA_PARM_HISTOGRAM,
#ifdef FEATURE_CAMERA_BESTSHOT_MODE
CAMERA_PARM_BESTSHOT_MODE,
#endif /* FEATURE_CAMERA_BESTSHOT_MODE */
#ifdef FEATURE_VIDEO_ENCODE
CAMERA_PARM_SPACE_LIMIT,
#ifdef FEATURE_CAMCORDER_DIS
CAMERA_PARM_DIS,
#endif /* FEATURE_CAMCORDER_DIS */
#endif
#ifdef FEATURE_CAMERA_V7
CAMERA_PARM_FPS_LIST,
#endif
CAMERA_PARM_MAX
} camera_parm_type;
typedef struct
{
uint32_t timestamp; /* seconds since 1/6/1980 */
double latitude; /* degrees, WGS ellipsoid */
double longitude; /* degrees */
int16_t altitude; /* meters */
} camera_position_type;
typedef enum
{
CAMERA_AUTO_FOCUS,
CAMERA_MANUAL_FOCUS
} camera_focus_e_type;
typedef enum
{
JPEGENC_DSP_FAIL,
JPEGENC_DSP_SUCCESS,
JPEGENC_DSP_BAD_CMD,
JPEGENC_IMG_DONE,
JPEGENC_IMG_ABORT,
JPEGENC_IMG_FAIL,
JPEGENC_FILE_SIZE_FAIL,
JPEGENC_FILLED_BUFFER
} JPEGENC_msgType;
typedef enum
{
#ifdef FEATURE_EFS
JPEGENC_EFS,
#endif /* FEATURE_EFS */
JPEGENC_MEM
} JPEGENC_outputType;
typedef struct
{
int32_t clientId;
/* Client ID */
JPEGENC_msgType status;
uint32_t dcBitCnt;
/* bit count for DC, used by filesize control */
uint32_t header_size;
/* Actual size of JPEG header */
JPEGENC_outputType mode;
/*camera_encode_mem_type*/ void *outPtr;
/* These two are valid only when */
uint32_t size;
/* output mode is JPEGENC_MEM */
} JPEGENC_CBrtnType;
/* White balancing type, used for CAMERA_PARM_WHITE_BALANCING */
typedef enum
{
CAMERA_WB_MIN_MINUS_1,
CAMERA_WB_AUTO = 1, /* This list must match aeecamera.h */
CAMERA_WB_CUSTOM,
CAMERA_WB_INCANDESCENT,
CAMERA_WB_FLUORESCENT,
CAMERA_WB_DAYLIGHT,
CAMERA_WB_CLOUDY_DAYLIGHT,
CAMERA_WB_TWILIGHT,
CAMERA_WB_SHADE,
CAMERA_WB_MAX_PLUS_1
} camera_wb_type;
/* Effect type, used for CAMERA_PARM_EFFECT */
typedef enum
{
CAMERA_EFFECT_MIN_MINUS_1,
CAMERA_EFFECT_OFF = 1, /* This list must match aeecamera.h */
CAMERA_EFFECT_MONO,
CAMERA_EFFECT_NEGATIVE,
CAMERA_EFFECT_SOLARIZE,
CAMERA_EFFECT_PASTEL,
CAMERA_EFFECT_MOSAIC,
CAMERA_EFFECT_RESIZE,
CAMERA_EFFECT_SEPIA,
CAMERA_EFFECT_POSTERIZE,
CAMERA_EFFECT_WHITEBOARD,
CAMERA_EFFECT_BLACKBOARD,
CAMERA_EFFECT_AQUA,
CAMERA_EFFECT_MAX_PLUS_1
} camera_effect_type;
/* Brightness type, used for CAMERA_PARM_BRIGHTNESS */
typedef enum
{
CAMERA_BRIGHTNESS_MIN = 0,
CAMERA_BRIGHTNESS_0 = 0,
CAMERA_BRIGHTNESS_1 = 1,
CAMERA_BRIGHTNESS_2 = 2,
CAMERA_BRIGHTNESS_3 = 3,
CAMERA_BRIGHTNESS_4 = 4,
CAMERA_BRIGHTNESS_5 = 5,
CAMERA_BRIGHTNESS_DEFAULT = 5,
CAMERA_BRIGHTNESS_6 = 6,
CAMERA_BRIGHTNESS_7 = 7,
CAMERA_BRIGHTNESS_8 = 8,
CAMERA_BRIGHTNESS_9 = 9,
CAMERA_BRIGHTNESS_10 = 10,
CAMERA_BRIGHTNESS_MAX = 10
} camera_brightness_type;
typedef enum
{
CAMERA_ANTIBANDING_OFF,
CAMERA_ANTIBANDING_60HZ,
CAMERA_ANTIBANDING_50HZ,
CAMERA_ANTIBANDING_AUTO,
CAMERA_MAX_ANTIBANDING,
} camera_antibanding_type;
/* Enum Type for different ISO Mode supported */
typedef enum
{
CAMERA_ISO_AUTO = 0,
CAMERA_ISO_HIGH,
CAMERA_ISO_DEBLUR,
CAMERA_ISO_100,
CAMERA_ISO_200,
CAMERA_ISO_400,
CAMERA_ISO_800,
CAMERA_ISO_MAX
} camera_iso_mode_type;
typedef enum
{
CAMERA_PREVIEW_MODE_SNAPSHOT,
CAMERA_PREVIEW_MODE_MOVIE,
CAMERA_MAX_PREVIEW_MODE
} camera_preview_mode_type;
typedef enum
{
CAMERA_ERROR_NO_MEMORY,
CAMERA_ERROR_EFS_FAIL, /* Low-level operation failed */
CAMERA_ERROR_EFS_FILE_OPEN, /* File already opened */
CAMERA_ERROR_EFS_FILE_NOT_OPEN, /* File not opened */
CAMERA_ERROR_EFS_FILE_ALREADY_EXISTS, /* File already exists */
CAMERA_ERROR_EFS_NONEXISTENT_DIR, /* User directory doesn't exist */
CAMERA_ERROR_EFS_NONEXISTENT_FILE, /* User directory doesn't exist */
CAMERA_ERROR_EFS_BAD_FILE_NAME, /* Client specified invalid file/directory name*/
CAMERA_ERROR_EFS_BAD_FILE_HANDLE, /* Client specified invalid file/directory name*/
CAMERA_ERROR_EFS_SPACE_EXHAUSTED, /* Out of file system space */
CAMERA_ERROR_EFS_OPEN_TABLE_FULL, /* Out of open-file table slots */
CAMERA_ERROR_EFS_OTHER_ERROR, /* Other error */
CAMERA_ERROR_CONFIG,
CAMERA_ERROR_EXIF_ENCODE,
CAMERA_ERROR_VIDEO_ENGINE,
CAMERA_ERROR_IPL,
CAMERA_ERROR_INVALID_FORMAT,
CAMERA_ERROR_MAX
} camera_error_type;
#endif//CAMERA_IFC_H