From: Marko Ollonen Date: Thu, 22 Nov 2012 07:26:19 +0000 (+0200) Subject: Makernote cleanup X-Git-Tag: 2.1b_release~6^2~47 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=aaaa4f4cf0cf7e54885932c723add56e66617966;p=adaptation%2Fintel_mfld%2Fgst-plugins-atomisp.git Makernote cleanup Change-Id: I5e4a667e460796fc01613e527ab046e2d6af0a8b --- diff --git a/gst-libs/atomisphal/gstv4l2mfldadvci.c b/gst-libs/atomisphal/gstv4l2mfldadvci.c index 8c115f8..a6349c3 100644 --- a/gst-libs/atomisphal/gstv4l2mfldadvci.c +++ b/gst-libs/atomisphal/gstv4l2mfldadvci.c @@ -545,6 +545,37 @@ lib_3a_AeGetManualIso(int *sensitivity) 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) { @@ -626,4 +657,8 @@ 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; } diff --git a/gst-libs/atomisphal/gstv4l2mfldadvci.h b/gst-libs/atomisphal/gstv4l2mfldadvci.h index 4ae9316..08b4728 100644 --- a/gst-libs/atomisphal/gstv4l2mfldadvci.h +++ b/gst-libs/atomisphal/gstv4l2mfldadvci.h @@ -162,7 +162,17 @@ struct _GstV4l2MFLDAdvCI 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; }; diff --git a/gst/mfldv4l2cam/Makefile.am b/gst/mfldv4l2cam/Makefile.am index 7e327a2..e68e1cd 100644 --- a/gst/mfldv4l2cam/Makefile.am +++ b/gst/mfldv4l2cam/Makefile.am @@ -5,9 +5,7 @@ libgstmfldv4l2camincludedir = \ 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 \ diff --git a/gst/mfldv4l2cam/exifmakernote_downstream.h b/gst/mfldv4l2cam/exifmakernote_downstream.h deleted file mode 100644 index d0f7d87..0000000 --- a/gst/mfldv4l2cam/exifmakernote_downstream.h +++ /dev/null @@ -1,198 +0,0 @@ -#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__ */ diff --git a/gst/mfldv4l2cam/exifmakernote_main.c b/gst/mfldv4l2cam/exifmakernote_main.c deleted file mode 100644 index dcf10ee..0000000 --- a/gst/mfldv4l2cam/exifmakernote_main.c +++ /dev/null @@ -1,777 +0,0 @@ -/* GStreamer - * - * Copyright (C) - * - * 2008-2010 Nokia Corporation - * 2010 Intel Corporation - * - * 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 -#include - -#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; -} - diff --git a/gst/mfldv4l2cam/exifmakernote_main.h b/gst/mfldv4l2cam/exifmakernote_main.h deleted file mode 100644 index b65135d..0000000 --- a/gst/mfldv4l2cam/exifmakernote_main.h +++ /dev/null @@ -1,426 +0,0 @@ -/* GStreamer - * - * Copyright (C) 2001-2002 Ronald Bultje - * 2006 Edgard Lima - * 2008-2010 Nokia Corporation - * - * 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__ */ - diff --git a/gst/mfldv4l2cam/exifmakernote_util.c b/gst/mfldv4l2cam/exifmakernote_util.c deleted file mode 100644 index 00ed2c2..0000000 --- a/gst/mfldv4l2cam/exifmakernote_util.c +++ /dev/null @@ -1,759 +0,0 @@ -/* GStreamer - * - * Copyright (C) - * - * 2008-2010 Nokia Corporation - * 2010 Intel Corporation - * - * 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 -#include -#include -#include -#include -#include -#include - -#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); -} - - diff --git a/gst/mfldv4l2cam/exifmakernote_util.h b/gst/mfldv4l2cam/exifmakernote_util.h deleted file mode 100644 index 6be6e8e..0000000 --- a/gst/mfldv4l2cam/exifmakernote_util.h +++ /dev/null @@ -1,71 +0,0 @@ -/* GStreamer - * - * Copyright (C) 2001-2002 Ronald Bultje - * 2006 Edgard Lima - * 2008-2010 Nokia Corporation - * - * 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 - -/* 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__ */ - diff --git a/gst/mfldv4l2cam/gstv4l2camsrc.c b/gst/mfldv4l2cam/gstv4l2camsrc.c index 63b27a7..30d9e29 100644 --- a/gst/mfldv4l2cam/gstv4l2camsrc.c +++ b/gst/mfldv4l2cam/gstv4l2camsrc.c @@ -51,11 +51,8 @@ #include "gstv4l2camvidorient.h" #include -#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 @@ -1745,19 +1742,14 @@ static gboolean gst_v4l2camsrc_makernote_init(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__); 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, @@ -1767,19 +1759,12 @@ 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, @@ -1790,10 +1775,7 @@ 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; }