Makernote cleanup
authorMarko Ollonen <marko.ollonen@ixonos.com>
Thu, 22 Nov 2012 07:26:19 +0000 (09:26 +0200)
committerMarko Ollonen <marko.ollonen@ixonos.com>
Thu, 22 Nov 2012 07:27:30 +0000 (09:27 +0200)
Change-Id: I5e4a667e460796fc01613e527ab046e2d6af0a8b

gst-libs/atomisphal/gstv4l2mfldadvci.c
gst-libs/atomisphal/gstv4l2mfldadvci.h
gst/mfldv4l2cam/Makefile.am
gst/mfldv4l2cam/exifmakernote_downstream.h [deleted file]
gst/mfldv4l2cam/exifmakernote_main.c [deleted file]
gst/mfldv4l2cam/exifmakernote_main.h [deleted file]
gst/mfldv4l2cam/exifmakernote_util.c [deleted file]
gst/mfldv4l2cam/exifmakernote_util.h [deleted file]
gst/mfldv4l2cam/gstv4l2camsrc.c

index 8c115f8..a6349c3 100644 (file)
@@ -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;
 }
index 4ae9316..08b4728 100644 (file)
@@ -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;
 };
index 7e327a2..e68e1cd 100644 (file)
@@ -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 (file)
index d0f7d87..0000000
+++ /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 (file)
index dcf10ee..0000000
+++ /dev/null
@@ -1,777 +0,0 @@
-/* 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;
-}
-
diff --git a/gst/mfldv4l2cam/exifmakernote_main.h b/gst/mfldv4l2cam/exifmakernote_main.h
deleted file mode 100644 (file)
index b65135d..0000000
+++ /dev/null
@@ -1,426 +0,0 @@
-/* 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__ */
-
diff --git a/gst/mfldv4l2cam/exifmakernote_util.c b/gst/mfldv4l2cam/exifmakernote_util.c
deleted file mode 100644 (file)
index 00ed2c2..0000000
+++ /dev/null
@@ -1,759 +0,0 @@
-/* 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);
-}
-
-
diff --git a/gst/mfldv4l2cam/exifmakernote_util.h b/gst/mfldv4l2cam/exifmakernote_util.h
deleted file mode 100644 (file)
index 6be6e8e..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-/* 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__ */
-
index 63b27a7..30d9e29 100644 (file)
 #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
 
@@ -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;
 }