return ci_adv_success;
}
+static void
+lib_3a_GetMakerNote(ia_3a_mknote_mode mknMode, ia_3a_mknote *note)
+{
+ note = ci_adv_get_maker_note(mknMode);
+}
+
+static void
+lib_3a_AddMakerNoteRecord(ia_3a_mknote_field_type mkn_format_id,
+ ia_3a_mknote_field_name mkn_name_id,
+ const void *record,
+ unsigned short record_size)
+{
+ ci_adv_add_maker_note_record(mkn_format_id, mkn_name_id, record, record_size);
+}
+
+static void
+lib_3a_PutMakerNote(ia_3a_mknote *mknData)
+{
+ if (mknData != NULL)
+ {
+ ci_adv_put_maker_note(mknData);
+ }
+}
+
+static void
+lib_3a_ResetMakerNote(void)
+{
+ ci_adv_reset_maker_note();
+}
+
+
void
lib_3a_link_functions_init (GstV4l2MFLDAdvCI *mfldadvci)
{
mfldadvci->AwbGetManualColorTemperature = lib_3a_AwbGetManualColorTemperature;
mfldadvci->Awbmatrix = lib_3a_Awbmatrix;
mfldadvci->GetGridInfo = lib_3a_GetGridInfo;
+ mfldadvci->GetMakerNote = lib_3a_GetMakerNote;
+ mfldadvci->AddMakerNoteRecord = lib_3a_AddMakerNoteRecord;
+ mfldadvci->PutMakerNote = lib_3a_PutMakerNote;
+ mfldadvci->ResetMakerNote = lib_3a_ResetMakerNote;
}
void (*AeSetFlashMode)(ia_3a_ae_flash_mode mode);
void (*AwbGetManualColorTemperature)(int *ctemp);
void (*Awbmatrix)(int msqWbGain[3], int msqCcMtrx[9], unsigned short * shift);
- void (*GetGridInfo)(void * grid_info);
+ void (*GetGridInfo) (void * grid_info);
+ void (*GetMakerNote) (ia_3a_mknote_mode mknMode, ia_3a_mknote * note);
+ void (*AddMakerNoteRecord) (ia_3a_mknote_field_type mkn_format_id,
+ ia_3a_mknote_field_name mkn_name_id,
+ const void *record,
+ unsigned short record_size);
+ void (*PutMakerNote)(ia_3a_mknote *mknData);
+ void (*ResetMakerNote)(void);
+
+
+
int fd;
};
libgstmfldv4l2cam_la_SOURCES = gstv4l2camvidorient.c \
gstv4l2camsrc.c \
- v4l2camsrc_calls.c \
- exifmakernote_main.c \
- exifmakernote_util.c
+ v4l2camsrc_calls.c
libgstmfldv4l2cam_la_CFLAGS = -I$(top_builddir)/gst-libs \
-I$(top_builddir)/gst-libs/atomisphal \
+++ /dev/null
-#ifndef __EXIFMAKERNOTE_DOWNSTREAM_H__
-#define __EXIFMAKERNOTE_DOWNSTREAM_H__
-
-
-typedef enum ENUM_MAKERNOTE_SW
-{
- ENUM_MAKERNOTE_SW_DEVELOPMENT = 'd',
- ENUM_MAKERNOTE_SW_ALPHA = 'a',
- ENUM_MAKERNOTE_SW_BETA = 'b',
- ENUM_MAKERNOTE_SW_CANDIDATE = 'r'
-}ENUM_MAKERNOTE_SW;
-
-typedef enum ENUM_MAKERNOTE_LEDFLASH
-{
- ENUM_MAKERNOTE_LEDFLASH_NONE = 0X00,
- ENUM_MAKERNOTE_LEDFLASH_GEMINI3_OSRAM = 0X01,
- ENUM_MAKERNOTE_LEDFLASH_GEMINI3_LUMILED = 0X02,
- ENUM_MAKERNOTE_LEDFLASH_POLARIS3_OSRAM = 0X03,
- ENUM_MAKERNOTE_LEDFLASH_POLARIS3_LUMILED = 0X04,
- ENUM_MAKERNOTE_LEDFLASH_DRIPSTONE_OSRAM = 0X05,
- ENUM_MAKERNOTE_LEDFLASH_DRIPSTONE_CITIZEN = 0X06,
- ENUM_MAKERNOTE_LEDFLASH_LIMESTONE_OSRAM = 0X07,
- ENUM_MAKERNOTE_LEDFLASH_LIMESTONE_CITIZEN = 0X08,
- ENUM_MAKERNOTE_LEDFLASH_PROXIMA_OSRAM = 0X09,
- ENUM_MAKERNOTE_LEDFLASH_PROXIMA_CITIZEN = 0X0A,
- ENUM_MAKERNOTE_LEDFLASH_PROXIMA_EVERLIGHT = 0X0B
-}ENUM_MAKERNOTE_LEDFLASH;
-
-
-typedef enum ENUM_MAKERNOTE_CAMERA
-{
- ENUM_MAKERNOTE_CAMERA_DISCAM71430 = 0x16,
- ENUM_MAKERNOTE_CAMERA_OV2720 = 0x24
-}ENUM_MAKERNOTE_CAMERA;
-
-typedef enum ENUM_MAKERNOTE_CAM_SUPPLIER
-{
- ENUM_MAKERNOTE_CAM_SUPPLIER_TOSHIBA = 0X00,
- ENUM_MAKERNOTE_CAM_SUPPLIER_KONICA_MINOLTA = 0X01,
- ENUM_MAKERNOTE_CAM_SUPPLIER_ST = 0X02,
- ENUM_MAKERNOTE_CAM_SUPPLIER_MICRON = 0X03,
- ENUM_MAKERNOTE_CAM_SUPPLIER_FOXCONN = 0X04,
- ENUM_MAKERNOTE_CAM_SUPPLIER_SHARP = 0x05,
- ENUM_MAKERNOTE_CAM_SUPPLIER_OV = 0x06,
- ENUM_MAKERNOTE_CAM_SUPPLIER_DIS = 0x07
-}ENUM_MAKERNOTE_CAM_SUPPLIER;
-
-typedef enum ENUM_MAKERNOTE_BLEMISH_SETTING
-{
- ENUM_MAKERNOTE_BLEMISH_SETTING_OFF = 0x1,
- ENUM_MAKERNOTE_BLEMISH_SETTING_ON = 0x2,
- ENUM_MAKERNOTE_BLEMISH_SETTING_AUTO = 0x3
-}ENUM_MAKERNOTE_BLEMISH_SETTING;
-
-typedef enum ENUM_MAKERNOTE_COLOR_EFFECT
-{
- ENUM_MAKERNOTE_COLOR_EFFECT_NORMAL = 0x01,
- ENUM_MAKERNOTE_COLOR_EFFECT_SEPIA = 0x02,
- ENUM_MAKERNOTE_COLOR_EFFECT_NEGATIVE = 0x04,
- ENUM_MAKERNOTE_COLOR_EFFECT_GRAYSCALE = 0x08,
- ENUM_MAKERNOTE_COLOR_EFFECT_NATURAL = 0x10,
- ENUM_MAKERNOTE_COLOR_EFFECT_VIVID = 0x20,
- ENUM_MAKERNOTE_COLOR_EFFECT_COLORSWAP = 0x40,
- ENUM_MAKERNOTE_COLOR_EFFECT_SOLARIZE = 0x80
-}ENUM_MAKERNOTE_COLOR_EFFECT;
-
-typedef enum ENUM_MAKERNOTE_FLICKER_CTL
-{
- ENUM_MAKERNOTE_FLICKER_CTL_NONE = 0,
- ENUM_MAKERNOTE_FLICKER_CTL_50HZ = 50,
- ENUM_MAKERNOTE_FLICKER_CTL_60HZ = 60
-}ENUM_MAKERNOTE_FLICKER_CTL;
-
-typedef enum ENUM_MAKERNOTE_FLASH
-{
- ENUM_MAKERNOTE_FLASH_OFF = 0x01,
- ENUM_MAKERNOTE_FLASH_ON = 0x02,
- ENUM_MAKERNOTE_FLASH_AUTO = 0x04,
- ENUM_MAKERNOTE_FLASH_FILL_IN = 0x08,
- ENUM_MAKERNOTE_FLASH_REDUCE_RED_EYE = 0x10,
- ENUM_MAKERNOTE_FLASH_VIDEO_LIGHT = 0x20,
- ENUM_MAKERNOTE_FLASH_AUTO_REDUCE_RED_EYE = 0x40,
- ENUM_MAKERNOTE_FLASH_SLOW_SYNC = 0x80
-}ENUM_MAKERNOTE_FLASH;
-
-typedef enum ENUM_MAKERNOTE_AF
-{
- ENUM_MAKERNOTE_AF_INFINITY = 0x01,
- ENUM_MAKERNOTE_AF_ZERO = 0x02,
- ENUM_MAKERNOTE_AF_NORMAL = 0x04,
- ENUM_MAKERNOTE_AF_MACRO = 0x08,
- ENUM_MAKERNOTE_AF_PORTRAIT = 0x10,
- ENUM_MAKERNOTE_AF_CONTINUOUS = 0x20,
- ENUM_MAKERNOTE_AF_NORMAL_CONTINUOUS = 0x24,
- ENUM_MAKERNOTE_AF_MACRO_CONTINUOUS = 0x28,
- ENUM_MAKERNOTE_AF_MANUAL = 0x40,
- ENUM_MAKERNOTE_AF_HYPERFOCAL = 0x80
-}ENUM_MAKERNOTE_AF;
-
-typedef enum ENUM_MAKERNOTE_AAA_STATUS
-{
- ENUM_MAKERNOTE_AAA_STATUS_OFF = 0x00, // not existing
- ENUM_MAKERNOTE_AAA_STATUS_RUNNING = 0x01, // looking for convergence
- ENUM_MAKERNOTE_AAA_STATUS_LOCKED = 0x02, // converged
- ENUM_MAKERNOTE_AAA_STATUS_FAILED = 0x03 // failed to converge
-}ENUM_MAKERNOTE_AAA_STATUS;
-
-typedef enum ENUM_MAKERNOTE_EXPMODE
-{
- ENUM_MAKERNOTE_EXPMODE_NORMAL = 0x00000001,
- ENUM_MAKERNOTE_EXPMODE_CENTER = 0x00000002,
- ENUM_MAKERNOTE_EXPMODE_BACKLIGHT = 0x00000004,
- ENUM_MAKERNOTE_EXPMODE_NIGHT = 0x00001000,
- ENUM_MAKERNOTE_EXPMODE_SPORT = 0x00002000,
- ENUM_MAKERNOTE_EXPMODE_VARIABLE = 0x00004000,
- ENUM_MAKERNOTE_EXPMODE_VERYLONG = 0x00008000,
- ENUM_MAKERNOTE_EXPMODE_MANUAL = 0x01000000
-}ENUM_MAKERNOTE_EXPMODE;
-
-typedef enum ENUM_MAKERNOTE_WB_MODE
-{
- ENUM_MAKERNOTE_WB_MODE_AUTO = 0x01,
- ENUM_MAKERNOTE_WB_MODE_DAYLIGHT = 0x02,
- ENUM_MAKERNOTE_WB_MODE_CLOUDY = 0x04,
- ENUM_MAKERNOTE_WB_MODE_TUNGSTEN = 0x08,
- ENUM_MAKERNOTE_WB_MODE_FLUORESCENT = 0x10,
- ENUM_MAKERNOTE_WB_MODE_FLASH = 0x20,
-}ENUM_MAKERNOTE_WB_MODE;
-
-typedef enum ENUM_MAKERNOTE_TYPE
-{
- ENUM_MAKERNOTE_TYPE_NOKIA = 1,
- ENUM_MAKERNOTE_TYPE_ARCSOFT = 2,
- ENUM_MAKERNOTE_TYPE_INTEL = 3
-}ENUM_MAKERNOTE_TYPE;
-
-typedef enum ENUM_MAKERNOTE_CAF_STATUS
-{
- ENUM_MAKERNOTE_CAF_STATUS_COARSE_TRACKING = (1 << 0),
- ENUM_MAKERNOTE_CAF_STATUS_FINE_TRACKING = (1 << 1),
- ENUM_MAKERNOTE_CAF_STATUS_LOCKED = (1 << 2),
- ENUM_MAKERNOTE_CAF_STATUS_FROZEN = (1 << 3),
- ENUM_MAKERNOTE_CAF_STATUS_OFF = (1 << 4),
- ENUM_MAKERNOTE_CAF_STATUS_FAIL = (1 << 5)
-}ENUM_MAKERNOTE_CAF_STATUS;
-
-typedef enum ENUM_MAKERNOTE_STILL_CAPTURE_MODE
-{
- ENUM_MAKERNOTE_STILL_CAPTURE_MODE_SINGLE = 0x01,
- ENUM_MAKERNOTE_STILL_CAPTURE_MODE_BURST = 0x02,
- ENUM_MAKERNOTE_STILL_CAPTURE_MODE_BRACKET3 = 0x03,
- ENUM_MAKERNOTE_STILL_CAPTURE_MODE_BRACKET5 = 0x04
-}ENUM_MAKERNOTE_STILL_CAPTURE_MODE;
-
-typedef enum ENUM_MAKERNOTE_NUM_GAMMATABLE_CHANNEL
-{
- ENUM_MAKERNOTE_NUM_GAMMATABLE_CHANNEL_NOUSE = 0,
- ENUM_MAKERNOTE_NUM_GAMMATABLE_CHANNEL_LUMINANCEONLY = 1,
- ENUM_MAKERNOTE_NUM_GAMMATABLE_CHANNEL_RGBCHANNELS = 3
-}ENUM_MAKERNOTE_NUM_GAMMATABLE_CHANNEL;
-
-#if 0
-typedef struct ST_EXIF_MAKERNOTE_DOWNSTREAM
-{
- // static part
- // version
- unsigned char ver_sw[4]; // Version of IVE SW Release
- unsigned char ver_dev_hw_version; // Devlon HW version
- unsigned char ver_cam_sn[9]; // camera serial number, ascii text
- unsigned char ver_id_ledflash; // Internal Nokia ID number of LED flash, HEX
- unsigned char ver_id_xenonflash; // xenon flash id
- unsigned char ver_id_camera; // internal nokia id number of camera, hex
- unsigned char ver_cam_id_supplier; // camera supplier id, hex
- unsigned char ver_sensor_hw; // Silicon revision version of camera's sensor
- unsigned char ver_sensor_regset; // Version of sensor's register power-on set It can be read from the sensor.
- unsigned char ver_eeprom_content[4]; // Version of EEPROM content
- unsigned char ver_flash_drv_id; // flash/led driver id
-
- // others
-
-}ST_EXIF_MAKERNOTE_DOWNSTREAM;
-#endif
-
-typedef struct {
- unsigned ver_isp_major;
- unsigned ver_isp_minor;
- unsigned ver_isp_magic_num;
- unsigned char ver_id_ledflash;
- unsigned char ver_id_xenonflash;
- unsigned char ver_sensor_hw;/*revision version of camera's sensor*/
- unsigned char ver_sensor_regset;/*firmware's version*/
- unsigned char ver_eeprom_content[4];
- unsigned char ver_flash_drv_id;
-
- unsigned char which_sensor; /*indicate the main sensor or sub sensor*/
-}exif_makernote_downstream;
-
-#endif /* __EXIFMAKERNOTE_DOWNSTREAM_H__ */
+++ /dev/null
-/* GStreamer
- *
- * Copyright (C)
- *
- * 2008-2010 Nokia Corporation <multimedia@maemo.org>
- * 2010 Intel Corporation <http://meego.com/>
- *
- * exifmakernote_main.c: providing makernote interface for Nokia
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-
-/*
- command: gst-launch mfldv4l2camsrc num-buffers=1
- ! 'video/x-raw-yuv,format=(fourcc)NV12,width=640,height=480'
- ! ffmpegcolorspace ! jpegenc ! jifmux ! filesink location=640_480_nv12.jpeg
- */
-
-#include <string.h>
-#include <malloc.h>
-
-#include "exifmakernote_main.h"
-
-#define MAGIC_NUM 0x1234
-#define ALL_FF (~0)
-
-#define RnD_FLAG 0
-
-#define DEBUG_ERR
-//#define DEBUG_MSG
-
-#ifdef DEBUG_ERR
-#define MAKERNOTE_DEBUG_ERR(msg, ...) printf(msg, ##__VA_ARGS__)
-#else
-#define MAKERNOTE_DEBUG_ERR(msg, ...)
-#endif
-
-#ifdef DEBUG_MSG
-#define MAKERNOTE_DEBUG_MSG(msg, ...) printf(msg, ##__VA_ARGS__)
-#else
-#define MAKERNOTE_DEBUG_MSG(msg, ...)
-#endif
-
-typedef struct ST_MAKERNOTE_NOKIA_STATIC
-{
- ST_NOKIA_STATIC_HEADER header;
- ST_NOKIA_STATIC_VERSION version;
- ST_NOKIA_STATIC_CALIBRATION calibration;
- ST_NOKIA_STATIC_STILLIMAGE stillimage;
- ST_NOKIA_STATIC_ZOOM zoom;
- ST_NOKIA_STATIC_FLASH flash;
- ST_NOKIA_STATIC_STATISTIC statistic;
- ST_NOKIA_STATIC_AWB awb;
- ST_NOKIA_STATIC_AE ae;
- ST_NOKIA_STATIC_AF af;
- ST_NOKIA_STATIC_AAA aaa;
- ST_NOKIA_STATIC_ISP isp;
- ST_NOKIA_STATIC_FT ft;
- ST_NOKIA_STATIC_AMBR ambr;
- ST_NOKIA_STATIC_CAF caf;
- ST_NOKIA_STATIC_RER rer;
-}ST_MAKERNOTE_NOKIA_STATIC;
-
-typedef struct ST_MAKERNOTE_NOKIA
-{
- /* static */
- ST_MAKERNOTE_NOKIA_STATIC static_set;
-
- /* dynamic */
- /* currently just af and AWB Statistics is available */
-}ST_MAKERNOTE_NOKIA;
-
-/* the main datastructure for the makernote */
-typedef struct ST_MAKERNOTE
-{
- unsigned magic; /* magic number, for debug */
-
- ST_MAKERNOTE_NOKIA * pdata; /* transfer from out */
- unsigned size_data;
-
- unsigned size_static;
- unsigned size_dynamic;
-
- unsigned num_afwindow;
- unsigned num_faces;
- unsigned num_eyes;
- unsigned num_grid;
-
- unsigned size_dynamic_af;
- unsigned size_dynamic_af_ft;
- unsigned size_dynamic_ae_ft;
- unsigned size_dynamic_awb_ft;
- unsigned size_dynamic_ambr_motionvectors;
- unsigned size_dynamic_rer_coordinates;
- unsigned size_dynamic_statistics_awb;
- unsigned size_dynamic_statistics_ae;
- unsigned size_dynamic_rgb_histogram;
- unsigned size_dynamic_statistics_gammatables;
-}ST_MAKERNOTE;
-
-
-/* internal function */
-static void __makernote_calc_size(ST_MAKERNOTE * p)
-{
- /* calc dynamic detailed size in dynamic area */
- p->size_dynamic_af =
- sizeof(ST_NOKIA_DYNAMIC_AF) + sizeof(TUint32) * p->num_afwindow;
- p->size_dynamic_af_ft =
- sizeof(ST_NOKIA_DYNAMIC_AFFT) * p->num_faces;
- p->size_dynamic_ae_ft =
- sizeof(ST_NOKIA_DYNAMIC_AEFT) * p->num_faces;
- p->size_dynamic_awb_ft =
- sizeof(ST_NOKIA_DYNAMIC_AWBFT) * p->num_faces;
- p->size_dynamic_ambr_motionvectors = 0;
-// sizeof(ST_NOKIA_DYNAMIC_AMBRMOTIONVECTORS);
- p->size_dynamic_rer_coordinates =
- sizeof(ST_NOKIA_DYNAMIC_RER_COORDINATES) * p->num_eyes;
- p->size_dynamic_statistics_awb =
- sizeof(ST_NOKIA_DYNAMIC_STATISTICS_AWB) * p->num_grid;
- p->size_dynamic_statistics_ae =
- sizeof(ST_NOKIA_DYNAMIC_STATISTICS_AE) * p->num_grid;
- p->size_dynamic_rgb_histogram = 0;
-// sizeof(ST_NOKIA_DYNAMIC_STATISTICS_RGBHISTOGRAM);
- p->size_dynamic_statistics_gammatables = 0;
-// sizeof(ST_NOKIA_DYNAMIC_STATISTICSGAMMATABLES);
-
- /* calc total dynamic static size */
- p->size_static = sizeof(ST_MAKERNOTE_NOKIA_STATIC);
-
- /* calc total dynamic size */
- p->size_dynamic =
- p->size_dynamic_af +
- p->size_dynamic_af_ft +
- p->size_dynamic_ae_ft +
- p->size_dynamic_awb_ft +
- p->size_dynamic_ambr_motionvectors +
- p->size_dynamic_rer_coordinates +
- p->size_dynamic_statistics_awb +
- p->size_dynamic_statistics_ae +
- p->size_dynamic_rgb_histogram +
- p->size_dynamic_statistics_gammatables;
-
- /* calc total size */
- p->size_data = p->size_static + p->size_dynamic;
-}
-
-static void __makernote_wr_static_header(ST_MAKERNOTE * p, void * src)
-{
- ST_NOKIA_STATIC_HEADER * pdst = &p->pdata->static_set.header;
- ST_NOKIA_STATIC_HEADER * psrc = (ST_NOKIA_STATIC_HEADER *)src;
-
- /* detail */
- pdst->date = psrc->date;
- pdst->size = p->size_data | (RnD_FLAG << 31);
- pdst->encryption = psrc->encryption;
- memset(pdst->padding, ALL_FF, sizeof(psrc->padding));
-}
-
-static void __makernote_wr_static_version(ST_MAKERNOTE * p, void * src)
-{
- ST_NOKIA_STATIC_VERSION * pdst = &p->pdata->static_set.version;
- ST_NOKIA_STATIC_VERSION * psrc = (ST_NOKIA_STATIC_VERSION *)src;
-
- /* detail */
- memcpy(pdst, psrc, sizeof(ST_NOKIA_STATIC_VERSION));
- memset(pdst->rcam_api, ALL_FF, sizeof(psrc->rcam_api));
- pdst->opto_mechanic = ALL_FF;
- pdst->padding_1 = pdst->padding_2 = pdst->padding_3 = ALL_FF;
-}
-
-static void __makernote_wr_static_calibration(ST_MAKERNOTE * p, void * src)
-{
- ST_NOKIA_STATIC_CALIBRATION * pdst = &p->pdata->static_set.calibration;
- ST_NOKIA_STATIC_CALIBRATION * psrc = (ST_NOKIA_STATIC_CALIBRATION *)src;
-
- memcpy(pdst, psrc, sizeof(ST_NOKIA_STATIC_CALIBRATION));
-}
-
-static void __makernote_wr_static_stillimage(ST_MAKERNOTE * p, void * src)
-{
- ST_NOKIA_STATIC_STILLIMAGE * pdst = &p->pdata->static_set.stillimage;
- ST_NOKIA_STATIC_STILLIMAGE * psrc = (ST_NOKIA_STATIC_STILLIMAGE *)src;
-
- pdst->blemish_setting = psrc->blemish_setting;
- pdst->coloreffect_setting = psrc->coloreffect_setting;
- pdst->cap_mode = psrc->cap_mode;
- pdst->flicker_ctl = psrc->flicker_ctl;
- pdst->jpeg_quality = ALL_FF;
-}
-
-static void __makernote_wr_static_zoom(ST_MAKERNOTE * p, void * src)
-{
- ST_NOKIA_STATIC_ZOOM * pdst = &p->pdata->static_set.zoom;
- ST_NOKIA_STATIC_ZOOM * psrc = (ST_NOKIA_STATIC_ZOOM *)src;
-
- pdst->digital_zoom_factor = psrc->digital_zoom_factor;
- pdst->optical_zoom_factor = ALL_FF;
-}
-
-static void __makernote_wr_static_flash(ST_MAKERNOTE * p, void * src)
-{
- ST_NOKIA_STATIC_FLASH * pdst = &p->pdata->static_set.flash;
- ST_NOKIA_STATIC_FLASH * psrc = (ST_NOKIA_STATIC_FLASH *)src;
-
- pdst->selectedflash_setting = psrc->selectedflash_setting;
- pdst->preflash_analoggain = psrc->preflash_analoggain;
- pdst->flash_flag = psrc->flash_flag;
-}
-
-static void __makernote_wr_static_statistic(ST_MAKERNOTE * p, void * src)
-{
- ST_NOKIA_STATIC_STATISTIC * pdst = &p->pdata->static_set.statistic;
- ST_NOKIA_STATIC_STATISTIC * psrc = (ST_NOKIA_STATIC_STATISTIC *)src;
-
- memcpy(pdst, psrc, sizeof(ST_NOKIA_STATIC_STATISTIC));
- pdst->padding = ALL_FF;
-}
-
-static void __makernote_wr_static_awb(ST_MAKERNOTE * p, void * src)
-{
- ST_NOKIA_STATIC_AWB * pdst = &p->pdata->static_set.awb;
- ST_NOKIA_STATIC_AWB * psrc = (ST_NOKIA_STATIC_AWB *)src;
-
- pdst->algorithm_version = psrc->algorithm_version;
- pdst->total_digitalgain = psrc->total_digitalgain;
- pdst->wbgain_gr = psrc->wbgain_gr;
- pdst->wbgain_r = psrc->wbgain_r;
- pdst->wbgain_gb = psrc->wbgain_gb;
- pdst->wbgain_b = psrc->wbgain_b;
- memcpy(pdst->rgb2rgb_matrix, psrc->rgb2rgb_matrix, sizeof(psrc->rgb2rgb_matrix));
- memcpy(pdst->r2r_offset, psrc->r2r_offset, sizeof(psrc->r2r_offset));
- memcpy(pdst->rgb2yuv_matrix, psrc->rgb2yuv_matrix, sizeof(psrc->rgb2yuv_matrix));
- pdst->num_gammatablechannels = psrc->num_gammatablechannels;
-}
-
-static void __makernote_wr_static_ae(ST_MAKERNOTE * p, void * src)
-{
- ST_NOKIA_STATIC_AE * pdst = &p->pdata->static_set.ae;
- ST_NOKIA_STATIC_AE * psrc = (ST_NOKIA_STATIC_AE *)src;
-
- pdst->algorithm_version = psrc->algorithm_version;
- pdst->ae_flag = psrc->ae_flag;
- pdst->exposuretime_viewfinder = psrc->exposuretime_viewfinder;
- pdst->exposuretime_stillcapture = psrc->exposuretime_stillcapture;
-}
-
-static void __makernote_wr_static_af(ST_MAKERNOTE * p, void * src)
-{
- ST_NOKIA_STATIC_AF * pdst = &p->pdata->static_set.af;
- ST_NOKIA_STATIC_AF * psrc = (ST_NOKIA_STATIC_AF *)src;
-
- memcpy(pdst, psrc, sizeof(ST_NOKIA_STATIC_AF));
- pdst->num_frames_skipped = ALL_FF;
- pdst->num_frames_coarsesearch = ALL_FF;
- pdst->num_frames_finesearch = ALL_FF;
- pdst->af_result = ALL_FF;
- memset(pdst->reserved, ALL_FF, sizeof(pdst->reserved));
- memset(pdst->padding_1, ALL_FF, sizeof(pdst->padding_1));
- memset(pdst->padding_2, ALL_FF, sizeof(pdst->padding_2));
-}
-
-static void __makernote_wr_static_aaa(ST_MAKERNOTE * p, void * src)
-{
- ST_NOKIA_STATIC_AAA * pdst = &p->pdata->static_set.aaa;
- ST_NOKIA_STATIC_AAA * psrc = (ST_NOKIA_STATIC_AAA *)src;
-
- memcpy(pdst, psrc, sizeof(ST_NOKIA_STATIC_AAA));
- pdst->exposure_manualgain = ALL_FF;
- pdst->exposure_manualaperture = ALL_FF;
- memset(pdst->padding_1, ALL_FF, sizeof(pdst->padding_1));
- pdst->padding_2 = ALL_FF;
-}
-
-static void __makernote_wr_static_isp(ST_MAKERNOTE * p, void * src)
-{
- ST_NOKIA_STATIC_ISP * pdst = &p->pdata->static_set.isp;
-
- memset(pdst, ALL_FF, sizeof(ST_NOKIA_STATIC_ISP));
-}
-
-static void __makernote_wr_static_ft(ST_MAKERNOTE * p, void * src)
-{
- ST_NOKIA_STATIC_FT * pdst = &p->pdata->static_set.ft;
-
- memset(pdst, ALL_FF, sizeof(ST_NOKIA_STATIC_FT));
-}
-
-static void __makernote_wr_static_ambr(ST_MAKERNOTE * p, void * src)
-{
- ST_NOKIA_STATIC_AMBR * pdst = &p->pdata->static_set.ambr;
-
- memset(pdst, ALL_FF, sizeof(ST_NOKIA_STATIC_AMBR));
-}
-
-static void __makernote_wr_static_caf(ST_MAKERNOTE * p, void * src)
-{
- ST_NOKIA_STATIC_CAF * pdst = &p->pdata->static_set.caf;
- ST_NOKIA_STATIC_CAF * psrc = (ST_NOKIA_STATIC_CAF *)src;
-
- memcpy(pdst, psrc, sizeof(ST_NOKIA_STATIC_CAF));
- memset(pdst->padding, ALL_FF, sizeof(pdst->padding));
-}
-
-static void __makernote_wr_static_rer(ST_MAKERNOTE * p, void * src)
-{
- ST_NOKIA_STATIC_RER * pdst = &p->pdata->static_set.rer;
- ST_NOKIA_STATIC_RER * psrc = (ST_NOKIA_STATIC_RER *)src;
-
- pdst->status = psrc->status;
- pdst->type = psrc->type;
- pdst->version = psrc->version;
-}
-
-/* the application must fill the src buffer, it must fill all the windows value */
-static void __makernote_wr_dynamic_af(ST_MAKERNOTE * p, void * src)
-{
- unsigned char * pdst = (unsigned char *)(p->pdata) + p->size_static;
-
- memcpy(pdst, src, p->size_dynamic_af);
-}
-
-static void __makernote_wr_dynamic_statistics_awb(ST_MAKERNOTE * p,
- void * src)
-{
- unsigned char * pdst = (unsigned char *)(p->pdata) +
- p->size_static +
- p->size_dynamic_af +
- p->size_dynamic_af_ft +
- p->size_dynamic_ae_ft +
- p->size_dynamic_awb_ft +
- p->size_dynamic_ambr_motionvectors +
- p->size_dynamic_rer_coordinates;
-
- memcpy(pdst, src, p->size_dynamic_statistics_awb);
-}
-
-static void __makernote_wr_dynamic_statistics_ae(ST_MAKERNOTE * p,
- void * src)
-{
- unsigned char * pdst = (unsigned char *)(&p->pdata) +
- p->size_static +
- p->size_dynamic_af +
- p->size_dynamic_af_ft +
- p->size_dynamic_ae_ft +
- p->size_dynamic_awb_ft +
- p->size_dynamic_ambr_motionvectors +
- p->size_dynamic_rer_coordinates +
- p->size_dynamic_statistics_awb;
-
- memcpy(pdst, src, p->size_dynamic_statistics_ae);
-}
-
-static void __makernote_data_init(ST_MAKERNOTE * p)
-{
- memset(p->pdata, ALL_FF, p->size_data);
-}
-
-
-/* interface functions */
-ENUM_MAKERNOTE_RET_VAL makernote_nokia_init(unsigned num_afwindow,
- unsigned num_faces,
- unsigned num_eyes,
- unsigned num_grid,
- int * phandle,
- unsigned * makernote_size)
-{
- ST_MAKERNOTE_NOKIA * pdata = NULL;
- ST_MAKERNOTE * pmakernote = NULL;
- pmakernote = (ST_MAKERNOTE *)malloc(sizeof(ST_MAKERNOTE));
- if(NULL == pmakernote)
- {
- MAKERNOTE_DEBUG_ERR("line:%d, error, malloc fail\n", __LINE__);
- return ENUM_MAKERNOTE_RET_FALSE;
- }
- memset(pmakernote, 0, sizeof(ST_MAKERNOTE));
-
- pmakernote->magic = MAGIC_NUM;
-
- pmakernote->num_afwindow = num_afwindow;
- pmakernote->num_eyes = num_eyes;
- pmakernote->num_faces = num_faces;
- pmakernote->num_grid = num_grid;
-
- __makernote_calc_size(pmakernote);
- pdata = (ST_MAKERNOTE_NOKIA *)malloc(pmakernote->size_data);
- if(NULL == pdata)
- {
- free(pmakernote);
- MAKERNOTE_DEBUG_ERR("line:%d, error, malloc fail\n", __LINE__);
- return ENUM_MAKERNOTE_RET_FALSE;
- }
- pmakernote->pdata = pdata;
- *makernote_size = pmakernote->size_data;
-
- __makernote_data_init(pmakernote);
- *phandle = (int)pmakernote;
- return ENUM_MAKERNOTE_RET_TRUE;
-}
-
-ENUM_MAKERNOTE_RET_VAL makernote_nokia_copy_buffer(int handle,
- void * pbuf, unsigned buf_size)
-{
- ST_MAKERNOTE * pmakernote = (ST_MAKERNOTE *)handle;
- if(NULL == pmakernote)
- {
- MAKERNOTE_DEBUG_ERR("line:%d, error, pmakernote is NULL\n", __LINE__);
- return ENUM_MAKERNOTE_RET_FALSE;
- }
-
- if(MAGIC_NUM != pmakernote->magic)
- {
- MAKERNOTE_DEBUG_ERR("line:%d,magic:%d,error\n", __LINE__, pmakernote->magic);
- return ENUM_MAKERNOTE_RET_FALSE;
- }
-
- if(NULL == pbuf)
- {
- MAKERNOTE_DEBUG_ERR("line:%d, error, pbuf is NULL\n", __LINE__);
- return ENUM_MAKERNOTE_RET_FALSE;
- }
-
- if(buf_size < pmakernote->size_data)
- {
- MAKERNOTE_DEBUG_ERR("line:%d, error, buf_size:%d, size_data:%d\n", \
- __LINE__, buf_size, pmakernote->size_data);
- return ENUM_MAKERNOTE_RET_FALSE;
- }
-
-
- memcpy(pbuf, pmakernote->pdata, pmakernote->size_data);
-
- return ENUM_MAKERNOTE_RET_TRUE;
-}
-
-ENUM_MAKERNOTE_RET_VAL makernote_nokia_cp_buf_to_internal(int handle,
- void * pbuf, unsigned buf_size)
-{
- ST_MAKERNOTE * pmakernote = (ST_MAKERNOTE *)handle;
- if(NULL == pmakernote)
- {
- MAKERNOTE_DEBUG_ERR("line:%d, error, pmakernote is NULL\n", __LINE__);
- return ENUM_MAKERNOTE_RET_FALSE;
- }
-
- if(MAGIC_NUM != pmakernote->magic)
- {
- MAKERNOTE_DEBUG_ERR("line:%d,magic:%d,error\n", __LINE__, pmakernote->magic);
- return ENUM_MAKERNOTE_RET_FALSE;
- }
-
- if(NULL == pbuf)
- {
- MAKERNOTE_DEBUG_ERR("line:%d, error, pbuf is NULL\n", __LINE__);
- return ENUM_MAKERNOTE_RET_FALSE;
- }
-
- if(buf_size != pmakernote->size_data)
- {
- MAKERNOTE_DEBUG_ERR("line:%d, error, buf_size:%d, size_data:%d\n", \
- __LINE__, buf_size, pmakernote->size_data);
- return ENUM_MAKERNOTE_RET_FALSE;
- }
-
-
- memcpy(pmakernote->pdata, pbuf, pmakernote->size_data);
-
- return ENUM_MAKERNOTE_RET_TRUE;
-}
-
-
-ENUM_MAKERNOTE_RET_VAL makernote_nokia_uninit(int handle)
-{
- ST_MAKERNOTE * pmakernote = (ST_MAKERNOTE *)handle;
- if(NULL == pmakernote)
- {
- MAKERNOTE_DEBUG_ERR("line:%d, error, pmakernote is NULL\n", __LINE__);
- return ENUM_MAKERNOTE_RET_FALSE;
- }
-
- if(MAGIC_NUM != pmakernote->magic)
- {
- MAKERNOTE_DEBUG_ERR("line:%d,magic:%d,error\n", __LINE__, pmakernote->magic);
- return ENUM_MAKERNOTE_RET_FALSE;
- }
-
- if(pmakernote->pdata)
- free(pmakernote->pdata);
-
- free(pmakernote);
-
- return ENUM_MAKERNOTE_RET_TRUE;
-}
-
-ENUM_MAKERNOTE_RET_VAL makernote_nokia_write(int handle, ENUM_MAKERNOTE item,
- void * pitem, unsigned item_size)
-{
- ST_MAKERNOTE * pmakernote = (ST_MAKERNOTE *)handle;
- if(NULL == pmakernote)
- {
- MAKERNOTE_DEBUG_ERR("line:%d, error, pmakernote is NULL\n", __LINE__);
- return ENUM_MAKERNOTE_RET_FALSE;
- }
-
- if(MAGIC_NUM != pmakernote->magic)
- {
- MAKERNOTE_DEBUG_ERR("line:%d,magic:%d,error\n", __LINE__, pmakernote->magic);
- return ENUM_MAKERNOTE_RET_FALSE;
- }
-
- if(NULL == pitem)
- {
- MAKERNOTE_DEBUG_ERR("line:%d, error, pitem is NULL\n", __LINE__);
- return ENUM_MAKERNOTE_RET_FALSE;
- }
-
- switch(item)
- {
- case ENUM_MAKERNOTE_STATIC_HEADER:
- if(sizeof(ST_NOKIA_STATIC_HEADER) != item_size)
- return ENUM_MAKERNOTE_RET_FALSE;
- __makernote_wr_static_header(pmakernote, pitem);
- break;
- case ENUM_MAKERNOTE_STATIC_VERSION:
- if(sizeof(ST_NOKIA_STATIC_VERSION) != item_size)
- return ENUM_MAKERNOTE_RET_FALSE;
- __makernote_wr_static_version(pmakernote, pitem);
- break;
- case ENUM_MAKERNOTE_STATIC_CALIBRATION:
- if(sizeof(ST_NOKIA_STATIC_CALIBRATION) != item_size)
- return ENUM_MAKERNOTE_RET_FALSE;
- __makernote_wr_static_calibration(pmakernote, pitem);
- break;
- case ENUM_MAKERNOTE_STATIC_STILLIMAGE:
- if(sizeof(ST_NOKIA_STATIC_STILLIMAGE) != item_size)
- return ENUM_MAKERNOTE_RET_FALSE;
- __makernote_wr_static_stillimage(pmakernote, pitem);
- break;
- case ENUM_MAKERNOTE_STATIC_ZOOM:
- if(sizeof(ST_NOKIA_STATIC_ZOOM) != item_size)
- return ENUM_MAKERNOTE_RET_FALSE;
- __makernote_wr_static_zoom(pmakernote, pitem);
- break;
- case ENUM_MAKERNOTE_STATIC_FLASH:
- if(sizeof(ST_NOKIA_STATIC_FLASH) != item_size)
- return ENUM_MAKERNOTE_RET_FALSE;
- __makernote_wr_static_flash(pmakernote, pitem);
- break;
- case ENUM_MAKERNOTE_STATIC_STATISTIC:
- if(sizeof(ST_NOKIA_STATIC_STATISTIC) != item_size)
- return ENUM_MAKERNOTE_RET_FALSE;
- __makernote_wr_static_statistic(pmakernote, pitem);
- break;
- case ENUM_MAKERNOTE_STATIC_AWB:
- if(sizeof(ST_NOKIA_STATIC_AWB) != item_size)
- return ENUM_MAKERNOTE_RET_FALSE;
- __makernote_wr_static_awb(pmakernote, pitem);
- break;
- case ENUM_MAKERNOTE_STATIC_AE:
- if(sizeof(ST_NOKIA_STATIC_AE) != item_size)
- return ENUM_MAKERNOTE_RET_FALSE;
- __makernote_wr_static_ae(pmakernote, pitem);
- break;
- case ENUM_MAKERNOTE_STATIC_AF:
- if(sizeof(ST_NOKIA_STATIC_AF) != item_size)
- return ENUM_MAKERNOTE_RET_FALSE;
- __makernote_wr_static_af(pmakernote, pitem);
- break;
- case ENUM_MAKERNOTE_STATIC_AAA:
- if(sizeof(ST_NOKIA_STATIC_AAA) != item_size)
- return ENUM_MAKERNOTE_RET_FALSE;
- __makernote_wr_static_aaa(pmakernote, pitem);
- break;
- case ENUM_MAKERNOTE_STATIC_ISP:
- if(sizeof(ST_NOKIA_STATIC_ISP) != item_size)
- return ENUM_MAKERNOTE_RET_FALSE;
- __makernote_wr_static_isp(pmakernote, pitem);
- break;
- case ENUM_MAKERNOTE_STATIC_FT:
- if(sizeof(ST_NOKIA_STATIC_FT) != item_size)
- return ENUM_MAKERNOTE_RET_FALSE;
- __makernote_wr_static_ft(pmakernote, pitem);
- break;
- case ENUM_MAKERNOTE_STATIC_AMBR:
- if(sizeof(ST_NOKIA_STATIC_AMBR) != item_size)
- return ENUM_MAKERNOTE_RET_FALSE;
- __makernote_wr_static_ambr(pmakernote, pitem);
- break;
- case ENUM_MAKERNOTE_STATIC_CAF:
- if(sizeof(ST_NOKIA_STATIC_CAF) != item_size)
- return ENUM_MAKERNOTE_RET_FALSE;
- __makernote_wr_static_caf(pmakernote, pitem);
- break;
- case ENUM_MAKERNOTE_STATIC_RER:
- if(sizeof(ST_NOKIA_STATIC_RER) != item_size)
- return ENUM_MAKERNOTE_RET_FALSE;
- __makernote_wr_static_rer(pmakernote, pitem);
- break;
- case ENUM_MAKERNOTE_DYNAMIC_AF:
- if(pmakernote->size_dynamic_af != item_size)
- return ENUM_MAKERNOTE_RET_FALSE;
- __makernote_wr_dynamic_af(pmakernote, pitem);
- break;
- case ENUM_MAKERNOTE_DYNAMIC_STATISTICS_AWB:
- if(pmakernote->size_dynamic_statistics_awb != item_size)
- return ENUM_MAKERNOTE_RET_FALSE;
- __makernote_wr_dynamic_statistics_awb(pmakernote, pitem);
- break;
- case ENUM_MAKERNOTE_DYNAMIC_STATISTICS_AE:
- if(pmakernote->size_dynamic_statistics_ae != item_size)
- return ENUM_MAKERNOTE_RET_FALSE;
- __makernote_wr_dynamic_statistics_ae(pmakernote, pitem);
- break;
-
- }
-
- return ENUM_MAKERNOTE_RET_TRUE;
-}
-
-ENUM_MAKERNOTE_RET_VAL makernote_nokia_read(int handle,ENUM_MAKERNOTE item,
- void * pitem, unsigned item_size)
-{
- unsigned char * psrc = NULL;
- ST_MAKERNOTE_NOKIA * pdata = NULL;
- ST_MAKERNOTE * pmakernote = (ST_MAKERNOTE *)handle;
- if(NULL == pmakernote)
- {
- MAKERNOTE_DEBUG_ERR("line:%d, error, pmakernote is NULL\n", __LINE__);
- return ENUM_MAKERNOTE_RET_FALSE;
- }
-
- if(MAGIC_NUM != pmakernote->magic)
- {
- MAKERNOTE_DEBUG_ERR("line:%d,magic:%d,error\n", __LINE__, pmakernote->magic);
- return ENUM_MAKERNOTE_RET_FALSE;
- }
-
- if(NULL == pitem)
- {
- MAKERNOTE_DEBUG_ERR("line:%d, error, pitem is NULL\n", __LINE__);
- return ENUM_MAKERNOTE_RET_FALSE;
- }
-
- pdata = pmakernote->pdata;
- switch(item)
- {
- case ENUM_MAKERNOTE_STATIC_HEADER:
- if(sizeof(ST_NOKIA_STATIC_HEADER) > item_size)
- return ENUM_MAKERNOTE_RET_FALSE;
- memcpy(pitem, &pdata->static_set.header, sizeof(ST_NOKIA_STATIC_HEADER));
- break;
- case ENUM_MAKERNOTE_STATIC_VERSION:
- if(sizeof(ST_NOKIA_STATIC_VERSION) > item_size)
- return ENUM_MAKERNOTE_RET_FALSE;
- memcpy(pitem, &pdata->static_set.version, sizeof(ST_NOKIA_STATIC_VERSION));
- break;
- case ENUM_MAKERNOTE_STATIC_CALIBRATION:
- if(sizeof(ST_NOKIA_STATIC_CALIBRATION) > item_size)
- return ENUM_MAKERNOTE_RET_FALSE;
- memcpy(pitem, &pdata->static_set.calibration, sizeof(ST_NOKIA_STATIC_CALIBRATION));
- break;
- case ENUM_MAKERNOTE_STATIC_STILLIMAGE:
- if(sizeof(ST_NOKIA_STATIC_STILLIMAGE) > item_size)
- return ENUM_MAKERNOTE_RET_FALSE;
- memcpy(pitem, &pdata->static_set.stillimage, sizeof(ST_NOKIA_STATIC_STILLIMAGE));
- break;
- case ENUM_MAKERNOTE_STATIC_ZOOM:
- if(sizeof(ST_NOKIA_STATIC_ZOOM) > item_size)
- return ENUM_MAKERNOTE_RET_FALSE;
- memcpy(pitem, &pdata->static_set.zoom, sizeof(ST_NOKIA_STATIC_ZOOM));
- break;
- case ENUM_MAKERNOTE_STATIC_FLASH:
- if(sizeof(ST_NOKIA_STATIC_FLASH) > item_size)
- return ENUM_MAKERNOTE_RET_FALSE;
- memcpy(pitem, &pdata->static_set.flash, sizeof(ST_NOKIA_STATIC_FLASH));
- break;
- case ENUM_MAKERNOTE_STATIC_STATISTIC:
- if(sizeof(ST_NOKIA_STATIC_STATISTIC) > item_size)
- return ENUM_MAKERNOTE_RET_FALSE;
- memcpy(pitem, &pdata->static_set.statistic, sizeof(ST_NOKIA_STATIC_STATISTIC));
- break;
- case ENUM_MAKERNOTE_STATIC_AWB:
- if(sizeof(ST_NOKIA_STATIC_AWB) > item_size)
- return ENUM_MAKERNOTE_RET_FALSE;
- memcpy(pitem, &pdata->static_set.awb, sizeof(ST_NOKIA_STATIC_AWB));
- break;
- case ENUM_MAKERNOTE_STATIC_AE:
- if(sizeof(ST_NOKIA_STATIC_AE) > item_size)
- return ENUM_MAKERNOTE_RET_FALSE;
- memcpy(pitem, &pdata->static_set.ae, sizeof(ST_NOKIA_STATIC_AE));
- break;
- case ENUM_MAKERNOTE_STATIC_AF:
- if(sizeof(ST_NOKIA_STATIC_AF) > item_size)
- return ENUM_MAKERNOTE_RET_FALSE;
- memcpy(pitem, &pdata->static_set.af, sizeof(ST_NOKIA_STATIC_AF));
- break;
- case ENUM_MAKERNOTE_STATIC_AAA:
- if(sizeof(ST_NOKIA_STATIC_AAA) > item_size)
- return ENUM_MAKERNOTE_RET_FALSE;
- memcpy(pitem, &pdata->static_set.aaa, sizeof(ST_NOKIA_STATIC_AAA));
- break;
- case ENUM_MAKERNOTE_STATIC_ISP:
- if(sizeof(ST_NOKIA_STATIC_ISP) > item_size)
- return ENUM_MAKERNOTE_RET_FALSE;
- memcpy(pitem, &pdata->static_set.isp, sizeof(ST_NOKIA_STATIC_ISP));
- break;
- case ENUM_MAKERNOTE_STATIC_FT:
- if(sizeof(ST_NOKIA_STATIC_FT) > item_size)
- return ENUM_MAKERNOTE_RET_FALSE;
- memcpy(pitem, &pdata->static_set.ft, sizeof(ST_NOKIA_STATIC_FT));
- break;
- case ENUM_MAKERNOTE_STATIC_AMBR:
- if(sizeof(ST_NOKIA_STATIC_AMBR) > item_size)
- return ENUM_MAKERNOTE_RET_FALSE;
- memcpy(pitem, &pdata->static_set.ambr, sizeof(ST_NOKIA_STATIC_AMBR));
- break;
- case ENUM_MAKERNOTE_STATIC_CAF:
- if(sizeof(ST_NOKIA_STATIC_CAF) > item_size)
- return ENUM_MAKERNOTE_RET_FALSE;
- memcpy(pitem, &pdata->static_set.caf, sizeof(ST_NOKIA_STATIC_CAF));
- break;
- case ENUM_MAKERNOTE_STATIC_RER:
- if(sizeof(ST_NOKIA_STATIC_RER) > item_size)
- return ENUM_MAKERNOTE_RET_FALSE;
- memcpy(pitem, &pdata->static_set.rer, sizeof(ST_NOKIA_STATIC_RER));
- break;
- case ENUM_MAKERNOTE_DYNAMIC_AF:
- if(pmakernote->size_dynamic_af > item_size)
- return ENUM_MAKERNOTE_RET_FALSE;
- psrc = (unsigned char *)pdata + pmakernote->size_static;
- memcpy(pitem, psrc, pmakernote->size_dynamic_af);
- break;
- case ENUM_MAKERNOTE_DYNAMIC_STATISTICS_AWB:
- if(pmakernote->size_dynamic_statistics_awb > item_size)
- return ENUM_MAKERNOTE_RET_FALSE;
- psrc = (unsigned char *)pdata +
- pmakernote->size_static +
- pmakernote->size_dynamic_af +
- pmakernote->size_dynamic_af_ft +
- pmakernote->size_dynamic_ae_ft +
- pmakernote->size_dynamic_awb_ft +
- pmakernote->size_dynamic_ambr_motionvectors +
- pmakernote->size_dynamic_rer_coordinates;
- memcpy(pitem, psrc, pmakernote->size_dynamic_statistics_awb);
- break;
- case ENUM_MAKERNOTE_DYNAMIC_STATISTICS_AE:
- if(pmakernote->size_dynamic_statistics_ae > item_size)
- return ENUM_MAKERNOTE_RET_FALSE;
- psrc = (unsigned char *)pdata +
- pmakernote->size_static +
- pmakernote->size_dynamic_af +
- pmakernote->size_dynamic_af_ft +
- pmakernote->size_dynamic_ae_ft +
- pmakernote->size_dynamic_awb_ft +
- pmakernote->size_dynamic_ambr_motionvectors +
- pmakernote->size_dynamic_rer_coordinates +
- pmakernote->size_dynamic_statistics_awb;
- memcpy(pitem, psrc, pmakernote->size_dynamic_statistics_ae);
- break;
- }
-
- return ENUM_MAKERNOTE_RET_TRUE;
-}
-
+++ /dev/null
-/* GStreamer
- *
- * Copyright (C) 2001-2002 Ronald Bultje <rbultje@ronald.bitfreak.net>
- * 2006 Edgard Lima <edgard.lima@indt.org.br>
- * 2008-2010 Nokia Corporation <multimedia@maemo.org>
- *
- * exifmakernote_main.h:
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifndef __EXIFMAKERNOTE_MAIN_H__
-#define __EXIFMAKERNOTE_MAIN_H__
-
-typedef unsigned int TUint32;
-typedef int TInt32;
-typedef unsigned short int TUint16;
-typedef short int TInt16;
-typedef unsigned char TUint8;
-typedef char TInt8;
-
-/* static part */
-typedef struct ST_NOKIA_STATIC_HEADER
-{
- TUint32 date;
- TUint32 size;
- TUint8 encryption;
- TUint8 padding[3];
-}ST_NOKIA_STATIC_HEADER;
-
-typedef struct ST_NOKIA_STATIC_VERSION
-{
- TUint8 rcam_api[2];
- TUint8 phonecode_type;
- TUint8 phonecode_id[7];
- TUint8 software[4];
- TUint8 dev_ver;
- TUint8 camera_sn[9];
- TUint8 id_ledflash;
- TUint8 id_xenonflash;
- TUint8 id_camera;
- TUint8 padding_1;
- TUint8 id_camsupplier;
- TUint8 sensor_hw;
- TUint8 sensor_poweron_set;
- TUint8 padding_2;
- TUint8 eeprom[4];
- TUint8 opto_mechanic;
- TUint8 pwm_waveform;
- TUint8 flash_drv_id;
- TUint8 padding_3;
-}ST_NOKIA_STATIC_VERSION;
-
-typedef struct ST_NOKIA_STATIC_CALIBRATION
-{
- TUint16 mshutter_delay;
- TUint16 ndFilter_transparency;
- TUint16 pwmpulse_nearend;
- TUint16 pwmpulse_farend;
- TUint16 vol_nearend[3];
- TUint16 vol_10cm[3];
- TUint16 vol_infinity[3];
- TUint16 vol_farend[3];
- TUint32 adc_nearend;
- TUint32 adc_farend;
-}ST_NOKIA_STATIC_CALIBRATION;
-
-typedef struct ST_NOKIA_STATIC_STILLIMAGE
-{
- TUint32 jpeg_quality;
- TUint32 blemish_setting;
- TUint32 coloreffect_setting;
- TUint32 digitalzoom_factor;
- TUint32 sharpness;
- TUint32 saturation;
- TUint32 contrast;
- TUint32 brightness;
- TUint32 cap_mode;
- TUint8 flicker_ctl;
- TUint8 padding[3];
-}ST_NOKIA_STATIC_STILLIMAGE;
-
-typedef struct ST_NOKIA_STATIC_ZOOM
-{
- TUint16 digital_zoom_factor;
- TUint16 optical_zoom_factor;
-}ST_NOKIA_STATIC_ZOOM;
-
-typedef struct ST_NOKIA_STATIC_FLASH
-{
- TUint8 selectedflash_setting;
- TUint8 xenonflash_chargestatus;
- TUint16 preflash_analoggain;
- TUint16 preflash_intensity;
- TUint16 flash_intensity;
- TUint16 dark_lumacap;
- TUint16 light_lumacap;
- TUint8 flash_flag;
- TUint8 padding[3];
-}ST_NOKIA_STATIC_FLASH;
-
-typedef struct ST_NOKIA_STATIC_STATISTIC
-{
- TUint8 histogram_flag;
- TUint8 padding;
- TUint16 num_histogrambins;
- TUint8 num_bytesperbin;
- TUint8 num_channelsperhistogram;
- TUint8 num_histograms;
- TUint8 awb_gridflag;
- TUint8 awb_gridwidth;
- TUint8 awb_gridheight;
- TUint8 ae_statusflag;
- TUint8 num_aestatsregion;
-}ST_NOKIA_STATIC_STATISTIC;
-
-typedef struct ST_NOKIA_STATIC_AWB
-{
- TUint16 algorithm_version;
- TUint16 total_digitalgain;
- TUint16 wbgain_gr;
- TUint16 wbgain_r;
- TUint16 wbgain_gb;
- TUint16 wbgain_b;
- TInt16 rgb2rgb_matrix[3][3];
- TUint16 padding_1[2];
- TUint32 r2r_offset[3];
- TUint32 chromstretch_uabs[8];
- TUint16 chromstretch_uord[8];
- TUint32 chromstretch_vabs[8];
- TUint16 chromstretch_vord[8];
- TInt16 rgb2yuv_matrix[3][3];
- TUint16 padding_2;
- TUint32 r2y_offset[3];
- TUint8 contrast_gainy;
- TUint8 contrast_offsety;
- TUint8 reserved_a;
- TUint8 reserved_b;
- TUint16 adaptiveblacklevel_val;
- TUint8 reserved_c;
- TUint8 num_gammatablechannels;
- TUint8 reserved_1;
- TUint16 reserved_2;
- TUint8 reserved_3;
- TUint8 reserved_4;
- TUint8 reserved_5;
- TUint8 reserved_6;
- TUint8 reserved_7;
- TUint8 reserved_8;
- TUint8 reserved_9;
- TUint8 reserved_10;
- TUint8 reserved_11;
- TUint8 reserved_12;
- TUint8 reserved_13;
- TUint8 reserved_14;
- TUint8 padding_3;
-}ST_NOKIA_STATIC_AWB;
-
-typedef struct ST_NOKIA_STATIC_AE
-{
- TUint16 algorithm_version;
- TUint8 ae_flag;
- TUint8 lightlevel_ratio;
- TUint32 exposuretime_viewfinder;
- TUint16 analoggain_viewfinder;
- TUint16 digitalgain_viewfinder;
- TUint32 exposuretime_stillcapture;
- TUint16 analoggain_stillcapture;
- TUint16 digitalgain_stillcapture;
-}ST_NOKIA_STATIC_AE;
-
-typedef struct ST_NOKIA_STATIC_AF
-{
- TUint16 algorithm_version;
- TUint8 focus_mode;
- TUint8 frame_rate;
- TUint32 final_lensposition;
- TUint8 num_afiterations;
- TUint8 reserved[3];
- TUint32 num_frames_takenforaf;
- TUint16 num_frames_skipped;
- TUint16 num_frames_coarsesearch;
- TUint16 num_frames_finesearch;
- TUint8 padding_1[2];
- TUint32 bitwisewindowtag;
- TUint8 af_result;
- TUint8 padding_2[3];
-}ST_NOKIA_STATIC_AF;
-
-typedef struct ST_NOKIA_STATIC_AAA
-{
- TUint8 aaastatus_flag;
- TUint8 padding_1[3];
- TUint32 exposure_mode;
- TUint8 exposure_compensation;
- TUint8 exposure_manualgain;
- TUint8 exposure_manualaperture;
- TUint8 padding_2;
- TUint16 exposure_manualtime;
- TUint8 WB_mode;
- TUint8 WB_manual;
- TUint32 focus_mode;
-}ST_NOKIA_STATIC_AAA;
-
-typedef struct ST_NOKIA_STATIC_ISP
-{
- TUint8 tuner_profile;
- TUint8 padding_1;
- TUint16 pos_strength;
- TUint16 neg_strength;
- TUint16 threshold_ordvector[4];
- TUint8 padding_2[2];
-}ST_NOKIA_STATIC_ISP;
-
-typedef struct ST_NOKIA_STATIC_FT
-{
- TUint8 ft_mode;
- TUint8 ft_type;
- TUint16 ft_version;
- TUint16 num_facedetected_priortoaf;
- TUint16 num_facedetected_priortoae;
- TUint16 num_facedetected_priortoawb;
- TUint16 width_ftreferenceimage;
- TUint16 height_ftreferenceimage;
- TUint8 padding[2];
-}ST_NOKIA_STATIC_FT;
-
-typedef struct ST_NOKIA_STATIC_AMBR
-{
- TUint8 status;
- TUint8 type;
- TUint16 version;
- TUint16 motion_estimate;
- TUint16 number_mvs;
-}ST_NOKIA_STATIC_AMBR;
-
-typedef struct ST_NOKIA_STATIC_CAF
-{
- TUint8 status;
- TUint8 type;
- TUint16 version;
- TUint16 final_lensposition;
- TUint8 padding[2];
-}ST_NOKIA_STATIC_CAF;
-
-typedef struct ST_NOKIA_STATIC_RER
-{
- TUint8 status;
- TUint8 type;
- TUint16 version;
- TUint16 num_redeyesdetected;
- TUint16 num_goldeneyesdetected;
- TUint16 num_golredeyescorrected;
- TUint16 num_goldeneyescorrected;
- TUint16 width_referenceimage;
- TUint16 height_referenceimage;
- TUint32 detection_mode;
-}ST_NOKIA_STATIC_RER;
-
-typedef struct ST_NOKIA_STATIC_RESERVEDFORRD
-{
- TUint32 header;
- TUint32 Subfield_1_id;
- TUint32 Subfield_1_size;
- TUint8 Subfield_1_body;
-}ST_NOKIA_STATIC_RESERVEDFORRD;
-
-/* dynamic part */
-typedef struct ST_NOKIA_DYNAMIC_AF
-{
- TUint32 exposuretime_electronicrollingshutter;
- TUint16 analog_gain;
- TUint16 padding;
- TUint32 lens_position;
-}ST_NOKIA_DYNAMIC_AF;
-
-typedef struct ST_NOKIA_DYNAMIC_AFFT
-{
- TUint16 left_absolute_coordinate;
- TUint16 top_absolute_coordinate;
- TUint16 width_absolute;
- TUint16 height_absolute;
- TUint8 priorty_status;
- TUint8 padding[3];
-}ST_NOKIA_DYNAMIC_AFFT;
-
-typedef struct ST_NOKIA_DYNAMIC_AEFT
-{
- TUint16 left_absolute_coordinate;
- TUint16 top_absolute_coordinate;
- TUint16 width_absolute;
- TUint16 height_absolute;
- TUint8 priorty_status;
- TUint8 padding[3];
-}ST_NOKIA_DYNAMIC_AEFT;
-
-typedef struct ST_NOKIA_DYNAMIC_AWBFT
-{
- TUint16 left_absolute_coordinate;
- TUint16 top_absolute_coordinate;
- TUint16 width_absolute;
- TUint16 height_absolute;
- TUint8 priorty_status;
- TUint8 padding[3];
-}ST_NOKIA_DYNAMIC_AWBFT;
-
-typedef struct ST_NOKIA_DYNAMIC_AMBRMOTIONVECTORS
-{
- TUint32 mvh[9];
- TUint32 mvv[9];
- TUint16 mvrely[9];
- TUint16 mvrelx[9];
- TUint32 timedelta;
- TUint16 maxnum_thresholds;
- TUint16 padding;
- TUint32 pre_exposure_thresholds[10];
- TUint16 pre_gain_thresholds[10];
- TUint32 post_exposure_thresholds[10];
- TUint16 post_gain_thresholds[10];
-}ST_NOKIA_DYNAMIC_AMBRMOTIONVECTORS;
-
-typedef struct ST_NOKIA_DYNAMIC_RER_COORDINATES
-{
- TUint16 left_absolutecoordinate;
- TUint16 top_absolutecoordinate;
- TUint16 eye_size;
- TUint8 color_eyecorrected;
- TUint8 padding;
-}ST_NOKIA_DYNAMIC_RER_COORDINATES;
-
-typedef struct ST_NOKIA_DYNAMIC_STATISTICS_AWB
-{
- TUint16 sum_r;
- TUint16 sum_g;
- TUint16 sum_b;
- TUint16 padding;
-}ST_NOKIA_DYNAMIC_STATISTICS_AWB;
-
-typedef struct ST_NOKIA_DYNAMIC_STATISTICS_AE
-{
- TUint16 x_coordinate;
- TUint16 y_coordinate;
- TUint16 region_width;
- TUint16 region_height;
- TUint16 sum_r;
- TUint16 sum_g;
- TUint16 sum_b;
- TUint16 padding;
-}ST_NOKIA_DYNAMIC_STATISTICS_AE;
-
-typedef struct ST_NOKIA_DYNAMIC_STATISTICS_RGBHISTOGRAM
-{
- TUint8 r_channel[512];
- TUint8 g_channel[512];
- TUint8 b_channel[512];
-}ST_NOKIA_DYNAMIC_STATISTICS_RGBHISTOGRAM;
-
-typedef struct ST_NOKIA_DYNAMIC_STATISTICSGAMMATABLES
-{
- TUint16 xg[2][16];
- TUint16 xr[2][16];
- TUint16 xb[2][16];
-}ST_NOKIA_DYNAMIC_STATISTICSGAMMATABLES;
-
-
-typedef enum ENUM_MAKERNOTE
-{
- ENUM_MAKERNOTE_STATIC_HEADER = 0,
- ENUM_MAKERNOTE_STATIC_VERSION,
- ENUM_MAKERNOTE_STATIC_CALIBRATION,
- ENUM_MAKERNOTE_STATIC_STILLIMAGE,
- ENUM_MAKERNOTE_STATIC_ZOOM,
- ENUM_MAKERNOTE_STATIC_FLASH,
- ENUM_MAKERNOTE_STATIC_STATISTIC,
- ENUM_MAKERNOTE_STATIC_AWB,
- ENUM_MAKERNOTE_STATIC_AE,
- ENUM_MAKERNOTE_STATIC_AF,
- ENUM_MAKERNOTE_STATIC_AAA,
- ENUM_MAKERNOTE_STATIC_ISP,
- ENUM_MAKERNOTE_STATIC_FT,
- ENUM_MAKERNOTE_STATIC_AMBR,
- ENUM_MAKERNOTE_STATIC_CAF,
- ENUM_MAKERNOTE_STATIC_RER,
- // dynamic......
- ENUM_MAKERNOTE_DYNAMIC_AF,
- ENUM_MAKERNOTE_DYNAMIC_STATISTICS_AWB,
- ENUM_MAKERNOTE_DYNAMIC_STATISTICS_AE
-}ENUM_MAKERNOTE;
-
-typedef enum ENUM_MAKERNOTE_RET_VAL
-{
- ENUM_MAKERNOTE_RET_FALSE = 0,
- ENUM_MAKERNOTE_RET_TRUE = 1
-}ENUM_MAKERNOTE_RET_VAL;
-
-/* interface */
-ENUM_MAKERNOTE_RET_VAL makernote_nokia_init(unsigned num_afwindow,
- unsigned num_faces,
- unsigned num_eyes,
- unsigned num_grid,
- int * phandle,
- unsigned * makernote_size);
-ENUM_MAKERNOTE_RET_VAL makernote_nokia_uninit(int handle);
-ENUM_MAKERNOTE_RET_VAL makernote_nokia_write(int handle, ENUM_MAKERNOTE item,
- void * pitem, unsigned item_size);
-ENUM_MAKERNOTE_RET_VAL makernote_nokia_read(int handle,ENUM_MAKERNOTE item,
- void * pitem, unsigned item_size);
-ENUM_MAKERNOTE_RET_VAL makernote_nokia_copy_buffer(int handle,
- void * pbuf, unsigned buf_size);
-ENUM_MAKERNOTE_RET_VAL makernote_nokia_cp_buf_to_internal(int handle,
- void * pbuf, unsigned buf_size);
-#endif /* __EXIFMAKERNOTE_MAIN_H__ */
-
+++ /dev/null
-/* GStreamer
- *
- * Copyright (C)
- *
- * 2008-2010 Nokia Corporation <multimedia@maemo.org>
- * 2010 Intel Corporation <http://meego.com/>
- *
- * exifmakernote_util.c: utility of the makernote
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-
-/*
- command: gst-launch mfldv4l2camsrc num-buffers=1
- ! 'video/x-raw-yuv,format=(fourcc)NV12,width=640,height=480'
- ! ffmpegcolorspace ! jpegenc ! jifmux ! filesink location=640_480_nv12.jpeg
- */
-
-#include <string.h>
-#include <malloc.h>
-#include <math.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <sys/mman.h>
-#include <sys/ioctl.h>
-
-#include "gstv4l2camsrc.h"
-#include "v4l2camsrc_calls.h"
-
-#include "exifmakernote_main.h"
-#include "exifmakernote_util.h"
-#include "exifmakernote_downstream.h"
-
-#define ALL_FF (~0)
-
-static void __makernote_util_static_header(int handle)
-{
- ST_NOKIA_STATIC_HEADER header;
- char year, month, day, version;
-
- year = MAKERNOTE_YEAR; // 2011
- month = MAKERNOTE_MONTH;
- day = MAKERNOTE_DAY;
- version = MAKERNOTE_VERSION;
- header.date = ((year & 0xff) << 24) | ((month & 0xff) << 16)
- | ((day & 0xff) << 8) | (version & 0xff);
- header.encryption = 0; // no encryption
- makernote_nokia_write(handle,ENUM_MAKERNOTE_STATIC_HEADER,
- (void *)&header,sizeof(header));
-}
-static void __makernote_util_static_version(int handle, exif_makernote_downstream *down)
-{
- unsigned char ver_sw[4];
- ST_NOKIA_STATIC_VERSION version;
- memset(&version, ALL_FF, sizeof(version));
-
- version.phonecode_type = ENUM_PHONE_CODE_TYPE_INVALID;
- if(version.phonecode_type == ENUM_PHONE_CODE_TYPE_INVALID)
- memset(version.phonecode_id, 0xff, sizeof(version.phonecode_id));
-
- /*
- d = development
- a = alpha release
- b = beta release
- r = production release candidate
- for example: 1.0d6, 1.0 is x.y, 6 is the build number
- i use the magic number's low 8 bits to instead the build number
- */
- ver_sw[3] = down->ver_isp_major;
- ver_sw[2] = down->ver_isp_minor;
- ver_sw[1] = ATOMISP_STAGE;
- ver_sw[0] = down->ver_isp_magic_num & 0xFF;
- memcpy((char *)version.software, ver_sw, sizeof(ver_sw));
-
- /*
- 1.0 for A0
- 2.0 for B0
- 3.0 for C0
- current it is B0
- major version is 4 MSBits, minor version is LSBits, so it is 2.0
- */
- version.dev_ver = (ATOMISP_HW_MAJOR << 4) | (ATOMISP_HW_MINOR);
-
- strncpy((char *)version.camera_sn, ATOMISP_SN, sizeof(ATOMISP_SN));
- version.id_ledflash = down->ver_id_ledflash;
- version.id_xenonflash = down->ver_id_xenonflash;
-
- if (down->which_sensor == 0)
- {
- version.id_camera = ENUM_MAKERNOTE_CAMERA_DISCAM71430;
- version.id_camsupplier = ENUM_MAKERNOTE_CAM_SUPPLIER_DIS;
- }
- else
- {
- version.id_camera = ENUM_MAKERNOTE_CAMERA_OV2720;
- version.id_camsupplier = ENUM_MAKERNOTE_CAM_SUPPLIER_OV;
- }
-
- version.sensor_hw = down->ver_sensor_hw;
- version.sensor_poweron_set = down->ver_sensor_regset;
- memcpy((char *)version.eeprom, down->ver_eeprom_content, sizeof(down->ver_eeprom_content));
- version.flash_drv_id = down->ver_flash_drv_id;
- makernote_nokia_write(handle,ENUM_MAKERNOTE_STATIC_VERSION,
- (void *)&version,sizeof(version));
-}
-
-static void __makernote_util_static_still(int handle, GstCameraSrc * camerasrc)
-{
- GstMFLDV4l2CamSrc *v4l2camsrc;
- ST_NOKIA_STATIC_STILLIMAGE still;
- struct v4l2_control ctrl;
- cam_err_t ret;
- int effect;
- int flicker;
- int i;
- int on;
- unsigned num;
- int effectmap[][2] =
- {
- {CAM_GENERAL_EFFECT_TYPE_NORMAL, ENUM_MAKERNOTE_COLOR_EFFECT_NORMAL},
- {CAM_GENERAL_EFFECT_TYPE_GRAYSCALE, ENUM_MAKERNOTE_COLOR_EFFECT_GRAYSCALE},
- {CAM_GENERAL_EFFECT_TYPE_SEPIA, ENUM_MAKERNOTE_COLOR_EFFECT_SEPIA},
- {CAM_GENERAL_EFFECT_TYPE_NEGATIVE, ENUM_MAKERNOTE_COLOR_EFFECT_NEGATIVE},
- {CAM_GENERAL_EFFECT_TYPE_SKY_BLUE, ENUM_MAKERNOTE_COLOR_EFFECT_NATURAL},
- {CAM_GENERAL_EFFECT_TYPE_GRASS_GREEN, ENUM_MAKERNOTE_COLOR_EFFECT_NATURAL},
- {CAM_GENERAL_EFFECT_TYPE_SKIN_WHITEN, ENUM_MAKERNOTE_COLOR_EFFECT_NATURAL},
- {CAM_GENERAL_EFFECT_TYPE_VIVID, ENUM_MAKERNOTE_COLOR_EFFECT_VIVID}
- };
- num = sizeof(effectmap) / sizeof(effectmap[0]);
-
- v4l2camsrc = GST_V4L2CAMSRC(camerasrc);
-
- g_mutex_lock (v4l2camsrc->device_mutex);
-
- memset(&ctrl, 0xff, sizeof (ctrl));
- ret = cam_driver_get_bpd(v4l2camsrc->video_fd, &on);
- if(ret != CAM_ERR_NONE)
- still.blemish_setting = (~0);
- else
- still.blemish_setting = (on != 0) ? ENUM_MAKERNOTE_BLEMISH_SETTING_ON : ENUM_MAKERNOTE_BLEMISH_SETTING_OFF;
-
- ret = cam_feature_get(v4l2camsrc->video_fd, CAM_GENERAL_EFFECT_TYPE, &effect);
- if(ret != CAM_ERR_NONE)
- still.coloreffect_setting = ALL_FF;
- else
- {
- for(i = 0; i < num; i++)
- {
- if(effect == effectmap[i][0])
- {
- still.coloreffect_setting = effectmap[i][1];
- break;
- }
- }
- }
-
- if(camerasrc->capture_mode == GST_CAMERA_SRC_CAPTURE_MODE_STILL)
- still.cap_mode = ENUM_MAKERNOTE_STILL_CAPTURE_MODE_SINGLE;
-
- ret = cam_feature_get (v4l2camsrc->video_fd, CAM_GENERAL_FLICKER_REDUCTION_MODE, &flicker);
- if(ret != CAM_ERR_NONE)
- still.flicker_ctl = ALL_FF;
- else
- {
- if(flicker == CAM_GENERAL_FLICKER_REDUCTION_MODE_OFF)
- still.flicker_ctl = ENUM_MAKERNOTE_FLICKER_CTL_NONE;
- else if(flicker == CAM_GENERAL_FLICKER_REDUCTION_MODE_50HZ)
- still.flicker_ctl = ENUM_MAKERNOTE_FLICKER_CTL_50HZ;
- else if(flicker == CAM_GENERAL_FLICKER_REDUCTION_MODE_60HZ)
- still.flicker_ctl = ENUM_MAKERNOTE_FLICKER_CTL_60HZ;
- }
-
- g_mutex_unlock (v4l2camsrc->device_mutex);
-
- makernote_nokia_write(handle,ENUM_MAKERNOTE_STATIC_STILLIMAGE,
- (void *)&still,sizeof(still));
-}
-
-static void __makernote_util_static_zoom(int handle, GstCameraSrc * camerasrc)
-{
- ST_NOKIA_STATIC_ZOOM zoom;
- GstMFLDV4l2CamSrc *v4l2camsrc;
- gfloat zoom_factor;
-
- v4l2camsrc = GST_V4L2CAMSRC(camerasrc);
-
- g_mutex_lock (v4l2camsrc->device_mutex);
-
- zoom_factor = v4l2camsrc->zoom_factor;
-
- g_mutex_unlock (v4l2camsrc->device_mutex);
-
- zoom.digital_zoom_factor = (TUint16)(zoom_factor * 256.0);
- makernote_nokia_write(handle,ENUM_MAKERNOTE_STATIC_ZOOM,
- (void *)&zoom,sizeof(zoom));
-}
-
-static void __makernote_util_static_flash(int handle, GstCameraSrc * camerasrc)
-{
- GstMFLDV4l2CamSrc *v4l2camsrc;
- ST_NOKIA_STATIC_FLASH flash;
- int flashval;
- int num, i;
- unsigned preflash = 0, capflash = 0;
- unsigned preflash_ndfilter = 0, capflash_ndfillter = 0; // don't support ND filter.
- int flashmap[][2] =
- {
- {CAM_LIGHT_FLASH_MODE_AUTO, ENUM_MAKERNOTE_FLASH_AUTO},
- {CAM_LIGHT_FLASH_MODE_OFF, ENUM_MAKERNOTE_FLASH_OFF},
- {CAM_LIGHT_FLASH_MODE_ON, ENUM_MAKERNOTE_FLASH_ON},
- {CAM_LIGHT_FLASH_MODE_FILL_IN, ENUM_MAKERNOTE_FLASH_FILL_IN},
- {CAM_LIGHT_FLASH_MODE_RED_EYE, ENUM_MAKERNOTE_FLASH_AUTO_REDUCE_RED_EYE}
- };
- num = sizeof(flashmap) / sizeof(flashmap[0]);
-
- v4l2camsrc = GST_V4L2CAMSRC (camerasrc);
-
- g_mutex_lock (v4l2camsrc->device_mutex);
-
- memset(&flash, 0xff, sizeof(flash));
- cam_feature_get (v4l2camsrc->video_fd, CAM_LIGHT_FLASH_MODE, &flashval);
- for(i = 0; i < num; i++)
- {
- if(flashval == flashmap[i][0])
- {
- flash.selectedflash_setting = flashmap[i][1];
- break;
- }
- }
-
- flash.preflash_analoggain = v4l2camsrc->preflash_analoggain;
-
- flash.flash_flag = 0;
- if(v4l2camsrc->preflash_enabled)
- preflash = 1;
- if(v4l2camsrc->capflash_enabled)
- capflash = 1;
- flash.flash_flag = (capflash_ndfillter << 3) | (preflash_ndfilter << 2) |
- (capflash << 1) | (preflash << 0);
-
- g_mutex_unlock (v4l2camsrc->device_mutex);
-
- makernote_nokia_write(handle,ENUM_MAKERNOTE_STATIC_FLASH,
- (void *)&flash,sizeof(flash));
-}
-
-static void __makernote_util_static_statistic(int handle, GstCameraSrc * camerasrc)
-{
- GstMFLDV4l2CamSrc *v4l2camsrc;
- ST_NOKIA_STATIC_STATISTIC statistic;
- unsigned width, height;
- int windowsnum;
-
- v4l2camsrc = GST_V4L2CAMSRC (camerasrc);
-
- g_mutex_lock (v4l2camsrc->device_mutex);
-
- statistic.histogram_flag = 1;
- statistic.num_histogrambins = 256;
- statistic.num_bytesperbin = sizeof(unsigned int);
- statistic.num_channelsperhistogram = 1;
- statistic.num_histograms = ALL_FF;
-
- if(v4l2camsrc->awb_enabled)
- {
- get_grid_info(v4l2camsrc->video_fd, &width, &height);
- statistic.awb_gridflag = 1; // awb grid available
- statistic.awb_gridwidth = width;
- statistic.awb_gridheight = height;
- }
- else
- {
- statistic.awb_gridflag = 0; // no awb grid available
- statistic.awb_gridwidth = ALL_FF;
- statistic.awb_gridheight = ALL_FF;
- }
-
- if(v4l2camsrc->ae_enabled)
- {
- statistic.ae_statusflag = 1; // AE stats available
- if(CAM_ERR_NONE != get_ae_windows_num(v4l2camsrc->video_fd, &windowsnum))
- statistic.num_aestatsregion = ALL_FF;
- else
- statistic.num_aestatsregion = (unsigned char)windowsnum;
- }
- else
- {
- statistic.ae_statusflag = 0; // No AE stats available
- statistic.num_aestatsregion = 0xFF;
- }
-
- g_mutex_unlock (v4l2camsrc->device_mutex);
-
- makernote_nokia_write(handle, ENUM_MAKERNOTE_STATIC_STATISTIC,
- (void *)&statistic, sizeof(statistic));
-}
-
-static void __makernote_util_static_awb(int handle, GstCameraSrc * camerasrc)
-{
- GstMFLDV4l2CamSrc *v4l2camsrc;
- ST_NOKIA_STATIC_AWB awb;
- unsigned i, j;
- int major, minor;
- unsigned short shift;
- int msqWbGain[3];
- int msqCcMtrx[9];
- int * pccmtrx = msqCcMtrx;
-
- v4l2camsrc = GST_V4L2CAMSRC (camerasrc);
-
- g_mutex_lock (v4l2camsrc->device_mutex);
-
- memset(&awb, ALL_FF, sizeof(awb));
- get_awb_version(v4l2camsrc->video_fd, &major, &minor);
- awb.algorithm_version = ((major & 0xff) << 8) | (minor & 0xff);
-
- get_awb_matrix(v4l2camsrc->video_fd, msqWbGain, msqCcMtrx, &shift);
-
- awb.total_digitalgain = ALL_FF; // TBD
- // [0]:R [1]:G [2]:B
- awb.wbgain_gr = msqWbGain[1];
- awb.wbgain_r = msqWbGain[0];
- awb.wbgain_gb = msqWbGain[1];
- awb.wbgain_b = msqWbGain[2];
-
- memset(awb.rgb2rgb_matrix, ALL_FF, sizeof(awb.rgb2rgb_matrix)); // TBD
- memset(awb.r2r_offset, ALL_FF, sizeof(awb.r2r_offset)); // TBD
-
- for(i = 0; i < 3; i++)
- {
- for(j = 0; j < 3; j++)
- {
- awb.rgb2yuv_matrix[i][j] = (TInt16)(*pccmtrx & 0xff);
- pccmtrx++;
- }
- }
- awb.r2y_offset[0] = awb.r2y_offset[1] = awb.r2y_offset[2] = shift;
-
- awb.num_gammatablechannels = ENUM_MAKERNOTE_NUM_GAMMATABLE_CHANNEL_LUMINANCEONLY; // always
-
- g_mutex_unlock (v4l2camsrc->device_mutex);
-
- makernote_nokia_write(handle,ENUM_MAKERNOTE_STATIC_AWB,
- (void *)&awb,sizeof(awb));
-}
-
-static void __makernote_util_static_ae(int handle, GstCameraSrc * camerasrc)
-{
- GstMFLDV4l2CamSrc *v4l2camsrc;
- ST_NOKIA_STATIC_AE ae;
- int major, minor;
- int manualtime;
- double f;
- int aperture;
- int i;
- int num;
- cam_flash_mode_t flashreq;
- int flashflag;
-
- // F1.0, F1.4, ......, F22.0, F32.0
- unsigned map[] = {10, 14, 20, 28, 32, 40, 46, 48, 56, 80, 110, 160, 220, 320};
- num = sizeof(map) / sizeof(unsigned);
-
- v4l2camsrc = GST_V4L2CAMSRC (camerasrc);
-
- g_mutex_lock (v4l2camsrc->device_mutex);
-
- get_ae_version(v4l2camsrc->video_fd, &major, &minor);
- ae.algorithm_version = ((major & 0xff) << 8) | (minor & 0xff);
-
- if(CAM_ERR_NONE == get_ae_manual_aperture(v4l2camsrc->video_fd, &aperture))
- {
- // F-No = 2^(aperture value / 2)
- f = 10.0 * ldexp(1, ((aperture / 65536) / 2));
- aperture = (int)f;
- for(i = 0; i < num; i++)
- {
- if(aperture == map[i])
- break;
- }
- if(i == num)
- i = 0x0f;
- }
- else
- i = 0x0f;
-
- flashflag = 0;
- if(CAM_ERR_NONE == get_ae_flash_mode(v4l2camsrc->video_fd, &flashreq))
- {
- if(flashreq == CAM_LIGHT_FLASH_MODE_ON)
- flashflag = 1;
- }
-
- ae.ae_flag = (i & 0x0F) | (flashflag << 4) | (0 << 5) | (0 << 6) | (1 << 7);
-
- if(CAM_ERR_NONE == get_ae_manual_shutter(v4l2camsrc->video_fd, &manualtime))
- {
- manualtime = 1000000 / (int)ldexp(1, (manualtime / 65536)); // to us
- ae.exposuretime_viewfinder = ae.exposuretime_stillcapture = manualtime;
- }
- else
- ae.exposuretime_viewfinder = ae.exposuretime_stillcapture = ALL_FF;
-
- g_mutex_unlock (v4l2camsrc->device_mutex);
-
- makernote_nokia_write(handle,ENUM_MAKERNOTE_STATIC_AE,
- (void *)&ae,sizeof(ae));
-}
-
-static void __makernote_util_static_af(int handle, GstCameraSrc * camerasrc)
-{
- GstMFLDV4l2CamSrc *v4l2camsrc;
- ST_NOKIA_STATIC_AF af;
- int major, minor;
- int mode;
- int num, i;
- int focusmap[][2] =
- {
- {CAM_FOCUS_MODE_AUTO, ENUM_MAKERNOTE_AF_NORMAL},
- {CAM_FOCUS_MODE_MACRO, ENUM_MAKERNOTE_AF_MACRO},
- {CAM_FOCUS_MODE_FULL, ENUM_MAKERNOTE_AF_NORMAL},
- {CAM_FOCUS_MODE_NORM, ENUM_MAKERNOTE_AF_NORMAL},
- };
- num = sizeof(focusmap) / sizeof(focusmap[0]);
-
- memset(&af, 0xff, sizeof(af));
-
- v4l2camsrc = GST_V4L2CAMSRC (camerasrc);
-
- g_mutex_lock (v4l2camsrc->device_mutex);
-
- get_af_version(v4l2camsrc->video_fd, &major, &minor);
- af.algorithm_version = ((major & 0xff) << 8) | (minor & 0xff);
-
- if(v4l2camsrc->af_enabled)
- {
- cam_feature_get(v4l2camsrc->video_fd, CAM_FOCUS_MODE, &mode);
- for(i = 0; i < num; i++)
- {
- if(mode == focusmap[i][0])
- {
- af.focus_mode = focusmap[i][1];
- break;
- }
- }
-
- cam_get_focus_posi(v4l2camsrc->video_fd, &af.final_lensposition);
-
- af.frame_rate = ALL_FF;
- af.num_afiterations = ALL_FF;
- af.num_frames_takenforaf = ALL_FF; // TBD TBD, not support currently
- }
- af.bitwisewindowtag = 0; // the 3a lib just support one window
-
- g_mutex_unlock (v4l2camsrc->device_mutex);
-
- makernote_nokia_write(handle,ENUM_MAKERNOTE_STATIC_AF,
- (void *)&af,sizeof(af));
-}
-
-static void __makernote_util_static_aaa(int handle, GstCameraSrc * camerasrc)
-{
- GstMFLDV4l2CamSrc *v4l2camsrc;
- ST_NOKIA_STATIC_AAA aaa;
- unsigned afresult;
- int aeresult;
- int aestatus, awbstatus;
- unsigned afstatus;
- cam_scene_mode_t expmode;
- int num, i;
- int bias;
- double middle;
- int manualtime;
- int ctemp;
- int wb_mode; // cam_awb_mode_t
-
- int expmap[][2] =
- {
- {CAM_GENERAL_SCENE_MODE_AUTO, ENUM_MAKERNOTE_EXPMODE_NORMAL},
- {CAM_GENERAL_SCENE_MODE_PORTRAIT, ENUM_MAKERNOTE_EXPMODE_NORMAL},
- {CAM_GENERAL_SCENE_MODE_SPORT, ENUM_MAKERNOTE_EXPMODE_SPORT},
- {CAM_GENERAL_SCENE_MODE_LANDSCAPE, ENUM_MAKERNOTE_EXPMODE_NORMAL},
- {CAM_GENERAL_SCENE_MODE_NIGHT, ENUM_MAKERNOTE_EXPMODE_NIGHT},
- {CAM_GENERAL_SCENE_MODE_FIREWORKS, ENUM_MAKERNOTE_EXPMODE_NORMAL}
- };
- num = sizeof(expmap) / sizeof(expmap[0]);
-
- int wbmodemap[][2] =
- {
- {CAM_AWB_MODE_AUTO, ENUM_MAKERNOTE_WB_MODE_AUTO},
- {CAM_AWB_MODE_DAYLIGHT, ENUM_MAKERNOTE_WB_MODE_DAYLIGHT},
- {CAM_AWB_MODE_SUNSET, ENUM_MAKERNOTE_WB_MODE_AUTO},
- {CAM_AWB_MODE_CLOUDY, ENUM_MAKERNOTE_WB_MODE_CLOUDY},
- {CAM_AWB_MODE_TUNGSTEN, ENUM_MAKERNOTE_WB_MODE_TUNGSTEN},
- {CAM_AWB_MODE_FLUORESCENT, ENUM_MAKERNOTE_WB_MODE_FLUORESCENT}
- };
-
- v4l2camsrc = GST_V4L2CAMSRC (camerasrc);
-
- g_mutex_lock (v4l2camsrc->device_mutex);
-
- get_af_result(v4l2camsrc->video_fd, &afresult);
- afresult = (afresult > 0) ? 0 : 1;
-
- get_af_status(v4l2camsrc->video_fd, &afstatus);
- afstatus = (afstatus == 0) ? ENUM_MAKERNOTE_AAA_STATUS_LOCKED : ENUM_MAKERNOTE_AAA_STATUS_FAILED;
- aeresult = 0; // TBD, the 3a lib no interface, i think it will success always.
- awbstatus = aestatus = ENUM_MAKERNOTE_AAA_STATUS_OFF;
- aaa.aaastatus_flag = 0;
- aaa.aaastatus_flag |= afresult | (afstatus << 2);
- aaa.aaastatus_flag |= (aeresult << 3) | (aestatus << 4) | (awbstatus << 6);
-
- aaa.exposure_mode = ALL_FF;
- get_exp_mode(v4l2camsrc->video_fd, &expmode);
- for(i = 0; i < num; i++)
- {
- if(expmode == expmap[i][0])
- {
- aaa.exposure_mode = expmap[i][1];
- break;
- }
- }
-
- get_ae_bias(v4l2camsrc->video_fd, &bias);
- middle = 3.0 * ((double)bias / 65536.0) + 6.0;
- if((int)(middle * 10) % 10 >= 5)
- aaa.exposure_compensation = (int)middle + 1;
- else
- aaa.exposure_compensation = (int)middle;
-
- if(expmode == CAM_GENERAL_SCENE_MODE_AUTO)
- aaa.exposure_manualtime = 0;
- else
- {
- get_ae_manual_shutter(v4l2camsrc->video_fd, &manualtime);
- manualtime = 1000000 / (int)ldexp(1, (manualtime / 65536)); // to us
- aaa.exposure_manualtime = (unsigned short)manualtime;
- }
-
- if(CAM_ERR_NONE == get_wb_mode(&wb_mode))
- {
- num = sizeof(wbmodemap) / sizeof(wbmodemap[0]);
- for(i = 0; i < num; i++)
- {
- if(wb_mode == wbmodemap[i][0])
- {
- aaa.WB_mode = wbmodemap[i][1];
- break;
- }
- }
- }
- else
- aaa.WB_mode = ALL_FF;
-
- if(wb_mode == CAM_GENERAL_SCENE_MODE_AUTO)
- aaa.WB_manual = 0;
- else
- {
- if(CAM_ERR_NONE == get_awb_manual_color_temperature(v4l2camsrc->video_fd, &ctemp))
- {
- aaa.WB_manual = (ctemp - 2000) / 20;
- }
- else
- aaa.WB_manual = 0;
- }
-
- aaa.focus_mode = 0; // predefined mode is used
-
- g_mutex_unlock (v4l2camsrc->device_mutex);
-
- makernote_nokia_write(handle,ENUM_MAKERNOTE_STATIC_AAA,
- (void *)&aaa,sizeof(aaa));
-}
-
-static void __makernote_util_static_caf(int handle, GstCameraSrc * camerasrc)
-{
- GstMFLDV4l2CamSrc *v4l2camsrc;
- ST_NOKIA_STATIC_CAF caf;
- int major, minor;
- unsigned posi;
- unsigned afstatus;
- v4l2camsrc = GST_V4L2CAMSRC (camerasrc);
-
- g_mutex_lock (v4l2camsrc->device_mutex);
-
- if(FALSE == v4l2camsrc->caf_enabled)
- caf.status = ENUM_MAKERNOTE_CAF_STATUS_OFF;
- get_af_status(v4l2camsrc->video_fd, &afstatus);
- if(0 == afstatus)
- caf.status |= ENUM_MAKERNOTE_CAF_STATUS_FAIL;
-
- caf.type = ENUM_MAKERNOTE_TYPE_INTEL;
- get_af_version(v4l2camsrc->video_fd, &major, &minor);
- caf.version = (major << 8) | (minor << 0);
-
- cam_get_focus_posi(v4l2camsrc->video_fd, &posi);
- caf.final_lensposition = (unsigned short)posi;
-
- g_mutex_unlock (v4l2camsrc->device_mutex);
-
- makernote_nokia_write(handle,ENUM_MAKERNOTE_STATIC_CAF,
- (void *)&caf,sizeof(caf));
-}
-
-static void __makernote_util_static_rer(int handle, GstCameraSrc * camerasrc)
-{
- GstMFLDV4l2CamSrc *v4l2camsrc;
- ST_NOKIA_STATIC_RER rer;
- int status;
- int major, minor;
-
- v4l2camsrc = GST_V4L2CAMSRC (camerasrc);
-
- g_mutex_lock (v4l2camsrc->device_mutex);
-
- get_rer_status(v4l2camsrc->video_fd, &status);
- rer.status = status;
-
- rer.type = ENUM_MAKERNOTE_TYPE_INTEL;
-
- get_rer_version(v4l2camsrc->video_fd, &major, &minor);
- rer.version = (major << 8) | (minor << 0);
-
- g_mutex_unlock (v4l2camsrc->device_mutex);
-
- makernote_nokia_write(handle,ENUM_MAKERNOTE_STATIC_RER,
- (void *)&rer,sizeof(rer));
-}
-
-static void __makernote_util_dynamic(int handle, unsigned num_afwindow,
- unsigned num_grid, GstCameraSrc * camerasrc)
-{
- GstMFLDV4l2CamSrc *v4l2camsrc;
- typedef struct {
- ST_NOKIA_DYNAMIC_AF basic;
- unsigned value[9]; // we only support one windows
- }DYNC_AF;
- DYNC_AF dyncaf;
- ST_NOKIA_DYNAMIC_STATISTICS_AWB * dync_awb = NULL;
- ST_NOKIA_DYNAMIC_STATISTICS_AWB * pawb;
- unsigned awbsize;
- int manualtime;
- int i;
- cam_scene_mode_t expmode;
- unsigned num_p, avg_r, avg_gr, avg_b, avg_gb;
-
- if(num_afwindow > (sizeof(dyncaf.value) / sizeof(unsigned)))
- return;
-
- v4l2camsrc = GST_V4L2CAMSRC (camerasrc);
-
- g_mutex_lock (v4l2camsrc->device_mutex);
-
- if(CAM_ERR_NONE != get_exp_mode(v4l2camsrc->video_fd, &expmode))
- dyncaf.basic.exposuretime_electronicrollingshutter = ALL_FF;
- else
- {
- if(expmode == CAM_GENERAL_SCENE_MODE_AUTO)
- dyncaf.basic.exposuretime_electronicrollingshutter = 0;
- else
- {
- if(CAM_ERR_NONE != get_ae_manual_shutter(v4l2camsrc->video_fd, &manualtime))
- dyncaf.basic.exposuretime_electronicrollingshutter = ALL_FF;
- else
- {
- manualtime = 1000000 / (int)ldexp(1, (manualtime / 65536)); // to us
- dyncaf.basic.exposuretime_electronicrollingshutter = (unsigned short)manualtime;
- }
- }
- }
-
- dyncaf.basic.analog_gain = v4l2camsrc->preflash_analoggain;
- cam_get_focus_posi(v4l2camsrc->video_fd, &dyncaf.basic.lens_position);
- dyncaf.basic.padding = ALL_FF;
- for(i = 0; i < num_afwindow; i++)
- dyncaf.value[i] = 0;
- makernote_nokia_write(handle,ENUM_MAKERNOTE_DYNAMIC_AF,
- (void *)&dyncaf, (sizeof(dyncaf.basic) + sizeof(unsigned) * num_afwindow));
-
- awbsize = num_grid * sizeof(ST_NOKIA_DYNAMIC_STATISTICS_AWB);
- dync_awb = (ST_NOKIA_DYNAMIC_STATISTICS_AWB *)malloc(awbsize);
- if(dync_awb == NULL)
- return;
-
- if(CAM_ERR_NONE != get_awb_data(v4l2camsrc->video_fd,
- &num_p, &avg_r, &avg_gr, &avg_b, &avg_gb))
- {
- pawb = dync_awb;
- for(i = 0; i < num_grid; i++)
- {
- pawb->sum_r = ALL_FF;
- pawb->sum_g = ALL_FF;
- pawb->sum_b = ALL_FF;
- pawb->padding = ALL_FF;
- pawb++;
- }
- }
- else
- {
- pawb = dync_awb;
- for(i = 0; i < num_grid; i++)
- {
- pawb->sum_r = num_p * avg_r;
- pawb->sum_g = num_p * (avg_gr + avg_gb);
- pawb->sum_b = num_p * avg_b;
- pawb->padding = ALL_FF;
- pawb++;
- }
- }
-
- g_mutex_unlock (v4l2camsrc->device_mutex);
-
- makernote_nokia_write(handle,ENUM_MAKERNOTE_DYNAMIC_STATISTICS_AWB,
- (void *)dync_awb, awbsize);
- free(dync_awb);
-}
-
-void makernote_util_create(int handle, unsigned num_afwindow,
- unsigned num_grid, GstCameraSrc * camerasrc)
-{
- GstMFLDV4l2CamSrc *v4l2camsrc;
- exif_makernote_downstream down;
-
- v4l2camsrc = GST_V4L2CAMSRC (camerasrc);
-
- memset(&down, 0xFF, sizeof(down));
- gst_v4l2camsrc_libmfldcam_get_makernote(v4l2camsrc, (unsigned char *)&down, sizeof(down));
-
- __makernote_util_static_header(handle);
- __makernote_util_static_version(handle, &down);
-
- __makernote_util_static_still(handle, camerasrc);
- __makernote_util_static_zoom(handle, camerasrc);
- __makernote_util_static_flash(handle, camerasrc);
- __makernote_util_static_statistic(handle, camerasrc);
- __makernote_util_static_awb(handle, camerasrc);
- __makernote_util_static_ae(handle, camerasrc);
- __makernote_util_static_af(handle, camerasrc);
- __makernote_util_static_aaa(handle, camerasrc);
- __makernote_util_static_caf(handle, camerasrc);
- __makernote_util_static_rer(handle, camerasrc);
- __makernote_util_dynamic(handle, num_afwindow, num_grid, camerasrc);
-}
-
-
+++ /dev/null
-/* GStreamer
- *
- * Copyright (C) 2001-2002 Ronald Bultje <rbultje@ronald.bitfreak.net>
- * 2006 Edgard Lima <edgard.lima@indt.org.br>
- * 2008-2010 Nokia Corporation <multimedia@maemo.org>
- *
- * exifmakernote_util.h: utility of the makernote
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifndef __EXIFMAKERNOTE_UTIL_H__
-#define __EXIFMAKERNOTE_UTIL_H__
-
-#include <gst/camera/gstmfldcamerasrc.h>
-
-/* here is could be edited by us to identify the version of makernote */
-#define MAKERNOTE_YEAR 11
-#define MAKERNOTE_MONTH 01
-#define MAKERNOTE_DAY 06
-#define MAKERNOTE_VERSION 01
-
-/*
- 1.0 for A0
- 2.0 for B0
- 3.0 for C0
- current it is B0
-*/
-#define ATOMISP_HW_MAJOR 2
-#define ATOMISP_HW_MINOR 0
-
-/*
- d = development
- a = alpha release
- b = beta release
- r = production release candidate
-*/
-#define ATOMISP_STAGE 'd'
-
-#define ATOMISP_SN "atom_isp"
-
-
-typedef enum ENUM_PHONE_CODE_TYPE
-{
- ENUM_PHONE_CODE_TYPE_INVALID = 0,
- ENUM_PHONE_CODE_TYPE_IMEI = 1,
- ENUM_PHONE_CODE_TYPE_ISN = 2,
- ENUM_PHONE_CODE_TYPE_MEID = 3
-}ENUM_PHONE_CODE_TYPE;
-
-
-/* interface */
-void makernote_util_create(int handle, unsigned num_afwindow,
- unsigned num_grid, GstCameraSrc * camerasrc);
-
-
-#endif /* __EXIFMAKERNOTE_UTIL_H__ */
-
#include "gstv4l2camvidorient.h"
#include <mfld_cam.h>
-#include "exifmakernote_main.h"
-#include "exifmakernote_util.h"
-
#define MFLD_ADVCI_PATH "/usr/lib/"
-#define MFLD_V4L2CAMSRC_VERSION "5e436697caea9d9d47d31601c4c9b9bf14559d7c"
+#define MFLD_V4L2CAMSRC_VERSION "85de990a519ae021f0bf4ec89c0e352ec76f6965"
#define FOCUS_POSITION_MIN 0
#define FOCUS_POSITION_MAX 512
int *handle)
{
GstMFLDV4l2CamSrc *v4l2camsrc;
- ENUM_MAKERNOTE_RET_VAL ret;
v4l2camsrc = GST_V4L2CAMSRC (camsrc);
GST_DEBUG_OBJECT (v4l2camsrc, "%s, !!!!!!line:%d\n", __func__, __LINE__);
num_afwindows = num_grid = 1;
num_faces = num_eyes = 0;
- ret = makernote_nokia_init(num_afwindows, num_faces,
- num_eyes, num_grid, handle, buf_size);
- if(ENUM_MAKERNOTE_RET_TRUE != ret)
- return FALSE;
+ return FALSE;
- return TRUE;
}
static gboolean gst_v4l2camsrc_makernote_deal(GstCameraSrc * camsrc,
int handle)
{
GstMFLDV4l2CamSrc *v4l2camsrc;
- ENUM_MAKERNOTE_RET_VAL ret;
v4l2camsrc = GST_V4L2CAMSRC (camsrc);
GST_DEBUG_OBJECT (v4l2camsrc, "%s, !!!!!!line:%d\n", __func__, __LINE__);
- makernote_util_create(handle, num_afwindows, num_grid, camsrc); // af windows is one, grid for awb is one
-
- ret = makernote_nokia_copy_buffer(handle, GST_BUFFER_DATA(pmakerbuf),
- GST_BUFFER_SIZE(pmakerbuf));
- if(ENUM_MAKERNOTE_RET_TRUE != ret)
- return FALSE;
+ return FALSE;
- return TRUE;
}
static gboolean gst_v4l2camsrc_makernote_uninit(GstCameraSrc * camsrc,
v4l2camsrc = GST_V4L2CAMSRC (camsrc);
GST_DEBUG_OBJECT (v4l2camsrc, "%s, !!!!!!line:%d\n", __func__, __LINE__);
- if(makernote_nokia_uninit(handle) != ENUM_MAKERNOTE_RET_TRUE)
- return FALSE;
-
- return TRUE;
+ return FALSE;
}