166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin/* Copyright (c) 2013-2014, 2016, The Linux Foundation. All rights reserved. 266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * 366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * Redistribution and use in source and binary forms, with or without 466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * modification, are permitted provided that the following conditions are 566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * met: 666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * * Redistributions of source code must retain the above copyright 766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * notice, this list of conditions and the following disclaimer. 866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * * Redistributions in binary form must reproduce the above 966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * copyright notice, this list of conditions and the following 1066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * disclaimer in the documentation and/or other materials provided 1166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * with the distribution. 1266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * * Neither the name of The Linux Foundation nor the names of its 1366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * contributors may be used to endorse or promote products derived 1466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * from this software without specific prior written permission. 1566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * 1666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED 1766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 1866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT 1966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS 2066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 2166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 2266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR 2366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 2466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 2566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN 2666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 2766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * 2866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin */ 2966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 3066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin// System dependencies 3166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#include <ctype.h> 3266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#include <errno.h> 3366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 3466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin// Camera dependencies 3566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#include "mm_qcamera_main_menu.h" 3666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#include "mm_qcamera_app.h" 3766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#include "mm_qcamera_dbg.h" 3866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 3966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin/*=========================================================================== 4066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * Macro 4166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin *===========================================================================*/ 4266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define MIN(X,Y) ((X) < (Y) ? (X) : (Y)) 4366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define VIDEO_BUFFER_SIZE (PREVIEW_WIDTH * PREVIEW_HEIGHT * 3/2) 4466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define THUMBNAIL_BUFFER_SIZE (THUMBNAIL_WIDTH * THUMBNAIL_HEIGHT * 3/2) 4566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define SNAPSHOT_BUFFER_SIZE (PICTURE_WIDTH * PICTURE_HEIGHT * 3/2) 4666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin//TODO:check this Macros with current app. 4766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 4866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin/*=========================================================================== 4966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * Defines 5066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin *===========================================================================*/ 5166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin//#define VIDEO_FRAMES_NUM 4 5266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define THUMBNAIL_FRAMES_NUM 1 5366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define SNAPSHOT_FRAMES_NUM 1 5466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define MAX_NUM_FORMAT 32 5566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define ZOOM_STEP 2 5666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define ZOOM_MIN_VALUE 0 5766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define EXPOSURE_COMPENSATION_MAXIMUM_NUMERATOR 12 5866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define EXPOSURE_COMPENSATION_MINIMUM_NUMERATOR -12 5966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define EXPOSURE_COMPENSATION_DEFAULT_NUMERATOR 0 6066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define EXPOSURE_COMPENSATION_DENOMINATOR 6 6166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 6266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin//TODO: find correct values of Contrast defines. 6366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define CAMERA_MIN_CONTRAST 0 6466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define CAMERA_DEF_CONTRAST 5 6566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define CAMERA_MAX_CONTRAST 10 6666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define CAMERA_CONTRAST_STEP 1 6766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 6866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin//TODO: find correct values of Brightness defines. 6966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define CAMERA_MIN_BRIGHTNESS 0 7066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define CAMERA_DEF_BRIGHTNESS 3 7166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define CAMERA_MAX_BRIGHTNESS 6 7266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define CAMERA_BRIGHTNESS_STEP 1 7366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 7466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin//TODO: find correct values of Saturation defines. 7566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define CAMERA_MIN_SATURATION 0 7666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define CAMERA_DEF_SATURATION 5 7766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define CAMERA_MAX_SATURATION 10 7866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define CAMERA_SATURATION_STEP 1 7966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 8066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define CAMERA_MIN_SHARPNESS 0 8166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define CAMERA_MAX_SHARPNESS 10 8266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define CAMERA_DEF_SHARPNESS 5 8366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define CAMERA_SHARPNESS_STEP 1 8466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 8566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinconst CAMERA_MAIN_MENU_TBL_T camera_main_menu_tbl[] = { 8666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin {START_PREVIEW, "Start preview"}, 8766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin {STOP_PREVIEW, "Stop preview/video"}, 8866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin {SET_WHITE_BALANCE, "Set white balance mode"}, 8966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin {SET_TINTLESS_ENABLE, "Set Tintless Enable"}, 9066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin {SET_TINTLESS_DISABLE, "Set Tintless Disable"}, 9166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin {SET_EXP_METERING, "Set exposure metering mode"}, 9266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin {GET_CTRL_VALUE, "Get control value menu"}, 9366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin {TOGGLE_AFR, "Toggle auto frame rate. Default fixed frame rate"}, 9466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin {SET_ISO, "ISO changes."}, 9566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin {BRIGHTNESS_GOTO_SUBMENU, "Brightness changes."}, 9666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin {CONTRAST_GOTO_SUBMENU, "Contrast changes."}, 9766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin {EV_GOTO_SUBMENU, "EV changes."}, 9866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin {SATURATION_GOTO_SUBMENU, "Saturation changes."}, 9966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin {SET_ZOOM, "Set Digital Zoom."}, 10066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin {SET_SHARPNESS, "Set Sharpness."}, 10166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin {TAKE_JPEG_SNAPSHOT, "Take a snapshot"}, 10266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin {START_RECORDING, "Start RECORDING"}, 10366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin {STOP_RECORDING, "Stop RECORDING"}, 10466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin {BEST_SHOT, "Set best-shot mode"}, 10566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin {LIVE_SHOT, "Take a live snapshot"}, 10666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin {FLASH_MODES, "Set Flash modes"}, 10766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin {TOGGLE_ZSL, "Toggle ZSL On/Off"}, 10866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin {TAKE_RAW_SNAPSHOT, "Take RAW snapshot"}, 10966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin {SWITCH_SNAP_RESOLUTION, "Select Jpeg resolution"}, 11066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin {TOGGLE_WNR, "Toggle Wavelet Denoise"}, 11166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin {EXIT, "Exit"} 11266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin}; 11366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 11466f9976540f830b0090ff2ca557b0364a53f2008Patrick TjinCAMERA_SENSOR_MENU_TLB_T sensor_tbl[] = { 11566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin {"Primary Camera", 0}, 11666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin {"Secondary Camera", 0}, 11766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin {"Camera Sensor 3", 0}, 11866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin {"Camera Sensor 4", 0} 11966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin}; 12066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 12166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinconst CAMERA_BRIGHTNESS_TBL_T brightness_change_tbl[] = { 12266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin {INC_BRIGHTNESS, "Increase Brightness by one step."}, 12366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin {DEC_BRIGHTNESS, "Decrease Brightness by one step."}, 12466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin}; 12566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 12666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinconst CAMERA_CONTRST_TBL_T contrast_change_tbl[] = { 12766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin {INC_CONTRAST, "Increase Contrast by one step."}, 12866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin {DEC_CONTRAST, "Decrease Contrast by one step."}, 12966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin}; 13066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 13166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinconst CAMERA_EV_TBL_T camera_EV_tbl[] = { 13266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin {INCREASE_EV, "Increase EV by one step."}, 13366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin {DECREASE_EV, "Decrease EV by one step."}, 13466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin}; 13566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 13666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinconst CAMERA_SATURATION_TBL_T camera_saturation_tbl[] = { 13766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin {INC_SATURATION, "Increase Satuation by one step."}, 13866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin {DEC_SATURATION, "Decrease Satuation by one step."}, 13966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin}; 14066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 14166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinconst CAMERA_SHARPNESS_TBL_T camera_sharpness_tbl[] = { 14266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin {INC_SHARPNESS, "Increase Sharpness."}, 14366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin {DEC_SHARPNESS, "Decrease Sharpness."}, 14466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin}; 14566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 14666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinconst WHITE_BALANCE_TBL_T white_balance_tbl[] = { 14766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin { WB_AUTO, "White Balance - Auto"}, 14866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin { WB_INCANDESCENT, "White Balance - Incandescent"}, 14966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin { WB_FLUORESCENT, "White Balance - Fluorescent"}, 15066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin { WB_WARM_FLUORESCENT, "White Balance - Warm Fluorescent"}, 15166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin { WB_DAYLIGHT, "White Balance - Daylight"}, 15266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin { WB_CLOUDY_DAYLIGHT, "White Balance - Cloudy Daylight"}, 15366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin { WB_TWILIGHT, "White Balance - Twilight"}, 15466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin { WB_SHADE, "White Balance - Shade"}, 15566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin}; 15666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 15766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinconst GET_CTRL_TBL_T get_ctrl_tbl[] = { 15866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin { WHITE_BALANCE_STATE, "Get white balance state (auto/off)"}, 15966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin { WHITE_BALANCE_TEMPERATURE, "Get white balance temperature"}, 16066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin { BRIGHTNESS_CTRL, "Get brightness value"}, 16166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin { EV, "Get exposure value"}, 16266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin { CONTRAST_CTRL, "Get contrast value"}, 16366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin { SATURATION_CTRL, "Get saturation value"}, 16466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin { SHARPNESS_CTRL, "Get sharpness value"}, 16566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin}; 16666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 16766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinconst EXP_METERING_TBL_T exp_metering_tbl[] = { 16866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin { AUTO_EXP_FRAME_AVG, "Exposure Metering - Frame Average"}, 16966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin { AUTO_EXP_CENTER_WEIGHTED, "Exposure Metering - Center Weighted"}, 17066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin { AUTO_EXP_SPOT_METERING, "Exposure Metering - Spot Metering"}, 17166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin { AUTO_EXP_SMART_METERING, "Exposure Metering - Smart Metering"}, 17266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin { AUTO_EXP_USER_METERING, "Exposure Metering - User Metering"}, 17366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin { AUTO_EXP_SPOT_METERING_ADV, "Exposure Metering - Spot Metering Adv"}, 17466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin { AUTO_EXP_CENTER_WEIGHTED_ADV,"Exposure Metering - Center Weighted Adv"}, 17566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin}; 17666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 17766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinconst ISO_TBL_T iso_tbl[] = { 17866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin { ISO_AUTO, "ISO: Auto"}, 17966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin { ISO_DEBLUR, "ISO: Deblur"}, 18066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin { ISO_100, "ISO: 100"}, 18166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin { ISO_200, "ISO: 200"}, 18266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin { ISO_400, "ISO: 400"}, 18366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin { ISO_800, "ISO: 800"}, 18466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin { ISO_1600, "ISO: 1600"}, 18566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin}; 18666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 18766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinconst ZOOM_TBL_T zoom_tbl[] = { 18866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin { ZOOM_IN, "Zoom In one step"}, 18966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin { ZOOM_OUT, "Zoom Out one step"}, 19066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin}; 19166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 19266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinconst BESTSHOT_MODE_TBT_T bestshot_mode_tbl[] = { 19366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin {BESTSHOT_AUTO, "Bestshot Mode: Auto"}, 19466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin {BESTSHOT_ACTION, "Bestshot Mode: Action"}, 19566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin {BESTSHOT_PORTRAIT, "Bestshot Mode: Portrait"}, 19666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin {BESTSHOT_LANDSCAPE, "Bestshot Mode: Landscape"}, 19766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin {BESTSHOT_NIGHT, "Bestshot Mode: Night"}, 19866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin {BESTSHOT_NIGHT_PORTRAIT, "Bestshot Mode: Night Portrait"}, 19966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin {BESTSHOT_THEATRE, "Bestshot Mode: Theatre"}, 20066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin {BESTSHOT_BEACH, "Bestshot Mode: Beach"}, 20166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin {BESTSHOT_SNOW, "Bestshot Mode: Snow"}, 20266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin {BESTSHOT_SUNSET, "Bestshot Mode: Sunset"}, 20366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin {BESTSHOT_ANTISHAKE, "Bestshot Mode: Antishake"}, 20466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin {BESTSHOT_FIREWORKS, "Bestshot Mode: Fireworks"}, 20566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin {BESTSHOT_SPORTS, "Bestshot Mode: Sports"}, 20666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin {BESTSHOT_PARTY, "Bestshot Mode: Party"}, 20766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin {BESTSHOT_CANDLELIGHT, "Bestshot Mode: Candlelight"}, 20866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin {BESTSHOT_ASD, "Bestshot Mode: ASD"}, 20966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin {BESTSHOT_BACKLIGHT, "Bestshot Mode: Backlight"}, 21066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin {BESTSHOT_FLOWERS, "Bestshot Mode: Flowers"}, 21166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin {BESTSHOT_AR, "Bestshot Mode: Augmented Reality"}, 21266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin {BESTSHOT_HDR, "Bestshot Mode: HDR"}, 21366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin}; 21466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 21566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinconst FLASH_MODE_TBL_T flashmodes_tbl[] = { 21666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin { FLASH_MODE_OFF, "Flash Mode Off"}, 21766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin { FLASH_MODE_AUTO, "Flash Mode Auto"}, 21866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin { FLASH_MODE_ON, "Flash Mode On"}, 21966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin { FLASH_MODE_TORCH, "Flash Mode Torch"}, 22066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin}; 22166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 22266f9976540f830b0090ff2ca557b0364a53f2008Patrick TjinDIMENSION_TBL_T dimension_tbl[] = { 22366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin{VGA_WIDTH, VGA_HEIGHT, "VGA", "Size: VGA <640x480>" , 0}, 22466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin{MP1_WIDTH, MP1_HEIGHT, "1MP", "Size: 1MP <1280x960>" , 0}, 22566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin{MP5_WIDTH, MP5_HEIGHT, "5MP", "Size: 5MP <2592x1944>", 0}, 22666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin{MP8_WIDTH, MP8_HEIGHT, "8MP", "Size: 8MP <3264x2448>", 0}, 22766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin{MP12_WIDTH, MP12_HEIGHT, "12MP", "Size: 12MP <4000x3000>", 0}, 22866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin}; 22966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 23066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin/*=========================================================================== 23166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * Forward declarations 23266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin *===========================================================================*/ 23366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin//static void system_dimension_set(mm_camera_test_obj_t *test_obj); 23466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin/*=========================================================================== 23566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * Static global variables 23666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin *===========================================================================*/ 23766f9976540f830b0090ff2ca557b0364a53f2008Patrick TjinUSER_INPUT_DISPLAY_T input_display; 23866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinint preview_video_resolution_flag = 0; 23966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 24066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin//TODO: default values. 24166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#if 1 24266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinint brightness = CAMERA_DEF_BRIGHTNESS; 24366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinint contrast = CAMERA_DEF_CONTRAST; 24466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinint saturation = CAMERA_DEF_SATURATION; 24566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinint sharpness = CAMERA_DEF_SHARPNESS; 24666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#else 24766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinint brightness = 0; 24866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinint contrast = 0; 24966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinint saturation = 0; 25066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinint sharpness = 0; 25166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#endif 25266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin//TODO: find new method to calculate ev. 25366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin//int32_t ev_numerator = EXPOSURE_COMPENSATION_DEFAULT_NUMERATOR; 25466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 25566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin//TODO: 25666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin//fps_mode_t fps_mode = FPS_MODE_FIXED; 25766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinint zoom_level; 25866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinint zoom_max_value; 25966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinint cam_id; 26066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinint is_rec = 0; 26166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 26266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 26366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinstatic int submain(); 26466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 26566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin/*=========================================================================== 26666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * FUNCTION - keypress_to_event - 26766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * 26866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * DESCRIPTION: 26966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin *==========================================================================*/ 27066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinint keypress_to_event(char keypress) 27166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin{ 27266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin int out_buf = INVALID_KEY_PRESS; 27366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin if ((keypress >= 'A' && keypress <= 'Z') || 27466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin (keypress >= 'a' && keypress <= 'z')) { 27566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin out_buf = tolower(keypress); 27666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin out_buf = out_buf - 'a'; 27766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } else if (keypress >= '0' && keypress <= '9') { 27866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin out_buf = keypress - '0'; 27966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } 28066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin return out_buf; 28166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} 28266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 28366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinint next_menu(menu_id_change_t current_menu_id, char keypress, camera_action_t * action_id_ptr, int * action_param) 28466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin{ 28566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin int output_to_event; 28666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin menu_id_change_t next_menu_id = MENU_ID_INVALID; 28766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * action_id_ptr = ACTION_NO_ACTION; 28866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 28966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin output_to_event = keypress_to_event(keypress); 29066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin LOGD("current_menu_id=%d\n",current_menu_id); 29166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("output_to_event=%d\n",output_to_event); 29266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin switch(current_menu_id) { 29366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case MENU_ID_MAIN: 29466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin switch(output_to_event) { 29566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case START_PREVIEW: 29666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * action_id_ptr = ACTION_START_PREVIEW; 29766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin LOGD("START_PREVIEW\n"); 29866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 29966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case STOP_PREVIEW: 30066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * action_id_ptr = ACTION_STOP_PREVIEW; 30166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin LOGD("STOP_PREVIEW\n"); 30266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 30366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 30466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case SET_WHITE_BALANCE: 30566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin next_menu_id = MENU_ID_WHITEBALANCECHANGE; 30666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin LOGD("next_menu_id = MENU_ID_WHITEBALANCECHANGE = %d\n", next_menu_id); 30766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 30866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 30966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case SET_TINTLESS_ENABLE: 31066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * action_id_ptr = ACTION_SET_TINTLESS_ENABLE; 31166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin next_menu_id = MENU_ID_MAIN; 31266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin LOGD("next_menu_id = MENU_ID_TINTLESSENABLE = %d\n", next_menu_id); 31366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 31466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 31566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case SET_TINTLESS_DISABLE: 31666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * action_id_ptr = ACTION_SET_TINTLESS_DISABLE; 31766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin next_menu_id = MENU_ID_MAIN; 31866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin LOGD("next_menu_id = MENU_ID_TINTLESSDISABLE = %d\n", next_menu_id); 31966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 32066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 32166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case SET_EXP_METERING: 32266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin next_menu_id = MENU_ID_EXPMETERINGCHANGE; 32366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin LOGD("next_menu_id = MENU_ID_EXPMETERINGCHANGE = %d\n", next_menu_id); 32466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 32566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 32666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case GET_CTRL_VALUE: 32766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin next_menu_id = MENU_ID_GET_CTRL_VALUE; 32866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin LOGD("next_menu_id = MENU_ID_GET_CTRL_VALUE = %d\n", next_menu_id); 32966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 33066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 33166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case BRIGHTNESS_GOTO_SUBMENU: 33266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin next_menu_id = MENU_ID_BRIGHTNESSCHANGE; 33366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin LOGD("next_menu_id = MENU_ID_BRIGHTNESSCHANGE = %d\n", next_menu_id); 33466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 33566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 33666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case CONTRAST_GOTO_SUBMENU: 33766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin next_menu_id = MENU_ID_CONTRASTCHANGE; 33866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 33966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 34066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case EV_GOTO_SUBMENU: 34166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin next_menu_id = MENU_ID_EVCHANGE; 34266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 34366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 34466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case SATURATION_GOTO_SUBMENU: 34566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin next_menu_id = MENU_ID_SATURATIONCHANGE; 34666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 34766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 34866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case TOGGLE_AFR: 34966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * action_id_ptr = ACTION_TOGGLE_AFR; 35066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin LOGD("next_menu_id = MENU_ID_TOGGLEAFR = %d\n", next_menu_id); 35166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 35266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 35366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case SET_ISO: 35466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin next_menu_id = MENU_ID_ISOCHANGE; 35566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin LOGD("next_menu_id = MENU_ID_ISOCHANGE = %d\n", next_menu_id); 35666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 35766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 35866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case SET_ZOOM: 35966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin next_menu_id = MENU_ID_ZOOMCHANGE; 36066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin LOGD("next_menu_id = MENU_ID_ZOOMCHANGE = %d\n", next_menu_id); 36166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 36266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 36366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case BEST_SHOT: 36466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin next_menu_id = MENU_ID_BESTSHOT; 36566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin LOGD("next_menu_id = MENU_ID_BESTSHOT = %d\n", next_menu_id); 36666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 36766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 36866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case LIVE_SHOT: 36966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * action_id_ptr = ACTION_TAKE_LIVE_SNAPSHOT; 37066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin LOGD("\nTaking Live snapshot\n"); 37166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 37266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 37366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case FLASH_MODES: 37466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin next_menu_id = MENU_ID_FLASHMODE; 37566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin LOGD("next_menu_id = MENU_ID_FLASHMODE = %d\n", next_menu_id); 37666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 37766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 37866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case SET_SHARPNESS: 37966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin next_menu_id = MENU_ID_SHARPNESSCHANGE; 38066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin LOGD("next_menu_id = MENU_ID_SHARPNESSCHANGE = %d\n", next_menu_id); 38166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 38266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 38366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case SWITCH_SNAP_RESOLUTION: 38466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin next_menu_id = MENU_ID_SWITCH_RES; 38566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin LOGD("next_menu_id = MENU_ID_SWITCH_RES = %d\n", next_menu_id); 38666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 38766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 38866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case TAKE_JPEG_SNAPSHOT: 38966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * action_id_ptr = ACTION_TAKE_JPEG_SNAPSHOT; 39066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("\n Taking JPEG snapshot\n"); 39166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 39266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 39366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case START_RECORDING: 39466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * action_id_ptr = ACTION_START_RECORDING; 39566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin LOGD("Start recording\n"); 39666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 39766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case STOP_RECORDING: 39866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * action_id_ptr = ACTION_STOP_RECORDING; 39966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin LOGD("Stop recording\n"); 40066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 40166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case TOGGLE_ZSL: 40266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * action_id_ptr = ACTION_TOGGLE_ZSL; 40366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin LOGD("Toggle ZSL\n"); 40466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 40566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case TAKE_RAW_SNAPSHOT: 40666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * action_id_ptr = ACTION_TAKE_RAW_SNAPSHOT; 40766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin next_menu_id = MENU_ID_MAIN; 40866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin LOGD("Capture RAW\n"); 40966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 41066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case TOGGLE_WNR: 41166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * action_id_ptr = ACTION_TOGGLE_WNR; 41266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin next_menu_id = MENU_ID_MAIN; 41366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin LOGD("Toggle WNR"); 41466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 41566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case EXIT: 41666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * action_id_ptr = ACTION_EXIT; 41766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin LOGD("Exit \n"); 41866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 41966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin default: 42066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin next_menu_id = MENU_ID_MAIN; 42166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin LOGD("next_menu_id = MENU_ID_MAIN = %d\n", next_menu_id); 42266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 42366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } 42466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 42566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 42666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case MENU_ID_SWITCH_RES: 42766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("MENU_ID_SWITCH_RES\n"); 42866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin *action_id_ptr = ACTION_SWITCH_RESOLUTION; 42966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin *action_param = output_to_event; 43066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin int available_sizes = sizeof(dimension_tbl)/sizeof(dimension_tbl[0]); 43166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin if ( ( *action_param >= 0 ) && 43266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin ( *action_param < available_sizes ) && 43366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin ( dimension_tbl[*action_param].supported )) { 43466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin next_menu_id = MENU_ID_MAIN; 43566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } 43666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin else { 43766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin next_menu_id = current_menu_id; 43866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } 43966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 44066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 44166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case MENU_ID_SENSORS: 44266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin next_menu_id = MENU_ID_MAIN; 44366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin *action_id_ptr = ACTION_SWITCH_CAMERA; 44466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin *action_param = output_to_event; 44566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 44666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 44766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case MENU_ID_WHITEBALANCECHANGE: 44866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("MENU_ID_WHITEBALANCECHANGE\n"); 44966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin if (output_to_event >= WB_MAX) { 45066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin next_menu_id = current_menu_id; 45166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * action_id_ptr = ACTION_NO_ACTION; 45266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } else { 45366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin next_menu_id = MENU_ID_MAIN; 45466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * action_id_ptr = ACTION_SET_WHITE_BALANCE; 45566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * action_param = output_to_event; 45666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } 45766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 45866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 45966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case MENU_ID_EXPMETERINGCHANGE: 46066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("MENU_ID_EXPMETERINGCHANGE\n"); 46166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin if (output_to_event >= AUTO_EXP_MAX) { 46266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin next_menu_id = current_menu_id; 46366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * action_id_ptr = ACTION_NO_ACTION; 46466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } else { 46566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin next_menu_id = MENU_ID_MAIN; 46666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * action_id_ptr = ACTION_SET_EXP_METERING; 46766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * action_param = output_to_event; 46866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } 46966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 47066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 47166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case MENU_ID_GET_CTRL_VALUE: 47266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("MENU_ID_GET_CTRL_VALUE\n"); 47366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * action_id_ptr = ACTION_GET_CTRL_VALUE; 47466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin if (output_to_event > 0 && 47566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin output_to_event <= (int)(sizeof(get_ctrl_tbl)/sizeof(get_ctrl_tbl[0]))) { 47666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin next_menu_id = MENU_ID_MAIN; 47766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * action_param = output_to_event; 47866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } 47966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin else { 48066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin next_menu_id = current_menu_id; 48166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } 48266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 48366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 48466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case MENU_ID_BRIGHTNESSCHANGE: 48566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin switch (output_to_event) { 48666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case INC_BRIGHTNESS: 48766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * action_id_ptr = ACTION_BRIGHTNESS_INCREASE; 48866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin next_menu_id = MENU_ID_MAIN; 48966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 49066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 49166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case DEC_BRIGHTNESS: 49266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * action_id_ptr = ACTION_BRIGHTNESS_DECREASE; 49366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin next_menu_id = MENU_ID_MAIN; 49466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 49566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 49666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin default: 49766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin next_menu_id = MENU_ID_BRIGHTNESSCHANGE; 49866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 49966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } 50066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 50166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 50266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case MENU_ID_CONTRASTCHANGE: 50366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin switch (output_to_event) { 50466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case INC_CONTRAST: 50566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * action_id_ptr = ACTION_CONTRAST_INCREASE; 50666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin next_menu_id = MENU_ID_MAIN; 50766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 50866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 50966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case DEC_CONTRAST: 51066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * action_id_ptr = ACTION_CONTRAST_DECREASE; 51166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin next_menu_id = MENU_ID_MAIN; 51266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 51366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 51466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin default: 51566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin next_menu_id = MENU_ID_CONTRASTCHANGE; 51666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 51766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } 51866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 51966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 52066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case MENU_ID_EVCHANGE: 52166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin switch (output_to_event) { 52266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case INCREASE_EV: 52366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * action_id_ptr = ACTION_EV_INCREASE; 52466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin next_menu_id = MENU_ID_MAIN; 52566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 52666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 52766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case DECREASE_EV: 52866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * action_id_ptr = ACTION_EV_DECREASE; 52966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin next_menu_id = MENU_ID_MAIN; 53066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 53166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 53266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin default: 53366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin next_menu_id = MENU_ID_EVCHANGE; 53466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 53566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } 53666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 53766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 53866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case MENU_ID_SATURATIONCHANGE: 53966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin switch (output_to_event) { 54066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case INC_SATURATION: 54166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * action_id_ptr = ACTION_SATURATION_INCREASE; 54266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin next_menu_id = MENU_ID_MAIN; 54366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 54466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 54566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case DEC_SATURATION: 54666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * action_id_ptr = ACTION_SATURATION_DECREASE; 54766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin next_menu_id = MENU_ID_MAIN; 54866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 54966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 55066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin default: 55166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin next_menu_id = MENU_ID_EVCHANGE; 55266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 55366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } 55466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 55566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 55666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case MENU_ID_ISOCHANGE: 55766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("MENU_ID_ISOCHANGE\n"); 55866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin if (output_to_event >= ISO_MAX) { 55966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin next_menu_id = current_menu_id; 56066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * action_id_ptr = ACTION_NO_ACTION; 56166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } else { 56266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin next_menu_id = MENU_ID_MAIN; 56366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * action_id_ptr = ACTION_SET_ISO; 56466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * action_param = output_to_event; 56566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } 56666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 56766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 56866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case MENU_ID_ZOOMCHANGE: 56966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * action_id_ptr = ACTION_SET_ZOOM; 57066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin if (output_to_event > 0 && 57166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin output_to_event <= (int)(sizeof(zoom_tbl)/sizeof(zoom_tbl[0]))) { 57266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin next_menu_id = MENU_ID_MAIN; 57366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * action_param = output_to_event; 57466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } else { 57566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin next_menu_id = current_menu_id; 57666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } 57766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 57866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 57966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case MENU_ID_SHARPNESSCHANGE: 58066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin switch (output_to_event) { 58166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case INC_SHARPNESS: 58266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * action_id_ptr = ACTION_SHARPNESS_INCREASE; 58366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin next_menu_id = MENU_ID_MAIN; 58466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 58566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case DEC_SHARPNESS: 58666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * action_id_ptr = ACTION_SHARPNESS_DECREASE; 58766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin next_menu_id = MENU_ID_MAIN; 58866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 58966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin default: 59066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin next_menu_id = MENU_ID_SHARPNESSCHANGE; 59166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 59266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } 59366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 59466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 59566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case MENU_ID_BESTSHOT: 59666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin if (output_to_event >= BESTSHOT_MAX) { 59766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin next_menu_id = current_menu_id; 59866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * action_id_ptr = ACTION_NO_ACTION; 59966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } else { 60066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin next_menu_id = MENU_ID_MAIN; 60166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * action_id_ptr = ACTION_SET_BESTSHOT_MODE; 60266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * action_param = output_to_event; 60366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } 60466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 60566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 60666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case MENU_ID_FLASHMODE: 60766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin if (output_to_event >= FLASH_MODE_MAX) { 60866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin next_menu_id = current_menu_id; 60966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * action_id_ptr = ACTION_NO_ACTION; 61066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } else { 61166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin next_menu_id = MENU_ID_MAIN; 61266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * action_id_ptr = ACTION_SET_FLASH_MODE; 61366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * action_param = output_to_event; 61466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } 61566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 61666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 61766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin default: 61866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin LOGD("menu id is wrong: %d\n", current_menu_id); 61966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 62066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } 62166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 62266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin return next_menu_id; 62366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} 62466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 62566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin/*=========================================================================== 62666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * FUNCTION - print_menu_preview_video - 62766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * 62866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * DESCRIPTION: 62966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * ===========================================================================*/ 63066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinstatic void print_menu_preview_video(void) { 63166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin unsigned int i; 63266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin if (!is_rec) { 63366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("\n"); 63466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("===========================================\n"); 63566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf(" Camera is in preview/video mode now \n"); 63666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("===========================================\n\n"); 63766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } else { 63866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("\n"); 63966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("===========================================\n"); 64066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf(" Camera is in RECORDING mode now \n"); 64166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf(" Press 'Q' To Stop Recording \n"); 64266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf(" Press 'S' To Take Live Snapshot \n"); 64366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("===========================================\n\n"); 64466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } 64566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin char menuNum = 'A'; 64666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin for (i = 0; i < sizeof(camera_main_menu_tbl)/sizeof(camera_main_menu_tbl[0]); i++) { 64766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin if (i == BASE_OFFSET) { 64866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin menuNum = '1'; 64966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } 65066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 65166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("%c. %s\n", menuNum, camera_main_menu_tbl[i].menu_name); 65266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin menuNum++; 65366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } 65466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 65566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("\nPlease enter your choice: "); 65666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 65766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin return; 65866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} 65966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 66066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinstatic void camera_preview_video_wb_change_tbl(void) { 66166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin unsigned int i; 66266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("\n"); 66366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("==========================================================\n"); 66466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf(" Camera is in white balance change mode \n"); 66566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("==========================================================\n\n"); 66666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 66766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin char submenuNum = 'A'; 66866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin for (i = 0 ; i < sizeof(white_balance_tbl) / 66966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin sizeof(white_balance_tbl[0]); i++) { 67066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("%c. %s\n", submenuNum, white_balance_tbl[i].wb_name); 67166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin submenuNum++; 67266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } 67366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("\nPlease enter your choice for White Balance modes: "); 67466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin return; 67566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} 67666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 67766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinstatic void camera_preview_video_get_ctrl_value_tbl(void) { 67866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin unsigned int i; 67966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("\n"); 68066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("==========================================================\n"); 68166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf(" Camera is in get control value mode \n"); 68266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("==========================================================\n\n"); 68366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 68466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin char submenuNum = 'A'; 68566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin for (i = 0 ; i < sizeof(get_ctrl_tbl) / 68666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin sizeof(get_ctrl_tbl[0]); i++) { 68766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("%c. %s\n", submenuNum, get_ctrl_tbl[i].get_ctrl_name); 68866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin submenuNum++; 68966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } 69066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("\nPlease enter your choice for control value you want to get: "); 69166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin return; 69266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} 69366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 69466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinstatic void camera_preview_video_exp_metering_change_tbl(void) { 69566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin unsigned int i; 69666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("\n"); 69766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("==========================================================\n"); 69866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf(" Camera is in exposure metering change mode \n"); 69966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("==========================================================\n\n"); 70066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 70166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin char submenuNum = 'A'; 70266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin for (i = 0 ; i < sizeof(exp_metering_tbl) / 70366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin sizeof(exp_metering_tbl[0]); i++) { 70466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("%c. %s\n", submenuNum, exp_metering_tbl[i].exp_metering_name); 70566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin submenuNum++; 70666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } 70766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("\nPlease enter your choice for exposure metering modes: "); 70866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin return; 70966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} 71066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 71166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinstatic void camera_contrast_change_tbl(void) { 71266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin unsigned int i; 71366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 71466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("\n"); 71566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("==========================================================\n"); 71666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf(" Camera is in change contrast resolution mode \n"); 71766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("==========================================================\n\n"); 71866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 71966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin char contrastmenuNum = 'A'; 72066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin for (i = 0; i < sizeof(contrast_change_tbl) / 72166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin sizeof(contrast_change_tbl[0]); i++) { 72266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("%c. %s\n", contrastmenuNum, 72366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin contrast_change_tbl[i].contrast_name); 72466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin contrastmenuNum++; 72566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } 72666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 72766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("\nPlease enter your choice for contrast Change: "); 72866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin return; 72966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} 73066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 73166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinstatic void camera_EV_change_tbl(void) { 73266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin unsigned int i; 73366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 73466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("\n"); 73566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("===========================================\n"); 73666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf(" Camera is in EV change mode now \n"); 73766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("===========================================\n\n"); 73866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 73966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin char submenuNum = 'A'; 74066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin for (i = 0; i < sizeof(camera_EV_tbl)/sizeof(camera_EV_tbl[0]); i++) { 74166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("%c. %s\n", submenuNum, camera_EV_tbl[i].EV_name); 74266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin submenuNum++; 74366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } 74466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 74566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("\nPlease enter your choice for EV changes: "); 74666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin return; 74766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} 74866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 74966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinstatic void camera_resolution_change_tbl(void) { 75066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin unsigned int i; 75166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 75266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("\n"); 75366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("==========================================================\n"); 75466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf(" Camera is in snapshot resolution mode \n"); 75566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("==========================================================\n\n"); 75666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 75766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin for (i = 0; i < sizeof(dimension_tbl) / 75866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin sizeof(dimension_tbl[0]); i++) { 75966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin if ( dimension_tbl[i].supported ) { 76066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("%d. %s\n", i, 76166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin dimension_tbl[i].str_name); 76266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } 76366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } 76466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 76566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("\nPlease enter your choice for Resolution: "); 76666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin return; 76766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} 76866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 76966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinstatic void camera_preview_video_zoom_change_tbl(void) { 77066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin unsigned int i; 77166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin zoom_max_value = MAX_ZOOMS_CNT; 77266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("\nCurrent Zoom Value = %d ,Max Zoom Value = %d\n",zoom_level,zoom_max_value); 77366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin char submenuNum = 'A'; 77466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin for (i = 0 ; i < sizeof(zoom_tbl) / 77566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin sizeof(zoom_tbl[0]); i++) { 77666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("%c. %s\n", submenuNum, zoom_tbl[i].zoom_direction_name); 77766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin submenuNum++; 77866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } 77966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("\nPlease enter your choice for zoom change direction: "); 78066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin return; 78166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} 78266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 78366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinstatic void camera_brightness_change_tbl(void) { 78466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin unsigned int i; 78566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 78666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("\n"); 78766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("==========================================================\n"); 78866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf(" Camera is in change brightness mode \n"); 78966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("==========================================================\n\n"); 79066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 79166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin char brightnessmenuNum = 'A'; 79266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin for (i = 0; i < sizeof(brightness_change_tbl) / 79366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin sizeof(brightness_change_tbl[0]); i++) { 79466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("%c. %s\n", brightnessmenuNum, 79566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin brightness_change_tbl[i].brightness_name); 79666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin brightnessmenuNum++; 79766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } 79866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 79966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("\nPlease enter your choice for Brightness Change: "); 80066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin return; 80166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} 80266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 80366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinstatic void camera_saturation_change_tbl(void) { 80466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin unsigned int i; 80566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 80666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("\n"); 80766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("==========================================================\n"); 80866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf(" Camera is in change saturation mode \n"); 80966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("==========================================================\n\n"); 81066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 81166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin char saturationmenuNum = 'A'; 81266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin for (i = 0; i < sizeof(camera_saturation_tbl) / 81366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin sizeof(camera_saturation_tbl[0]); i++) { 81466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("%c. %s\n", saturationmenuNum, 81566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin camera_saturation_tbl[i].saturation_name); 81666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin saturationmenuNum++; 81766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } 81866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 81966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("\nPlease enter your choice for Saturation Change: "); 82066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin return; 82166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} 82266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 82366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinstatic void camera_preview_video_iso_change_tbl(void) { 82466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin unsigned int i; 82566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("\n"); 82666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("==========================================================\n"); 82766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf(" Camera is in ISO change mode \n"); 82866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("==========================================================\n\n"); 82966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 83066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin char submenuNum = 'A'; 83166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin for (i = 0 ; i < sizeof(iso_tbl) / 83266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin sizeof(iso_tbl[0]); i++) { 83366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("%c. %s\n", submenuNum, iso_tbl[i].iso_modes_name); 83466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin submenuNum++; 83566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } 83666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("\nPlease enter your choice for iso modes: "); 83766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin return; 83866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} 83966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 84066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinstatic void camera_preview_video_sharpness_change_tbl(void) { 84166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin unsigned int i; 84266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("\n"); 84366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("==========================================================\n"); 84466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf(" Camera is in sharpness change mode \n"); 84566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("==========================================================\n\n"); 84666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 84766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin char submenuNum = 'A'; 84866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin for (i = 0 ; i < sizeof(camera_sharpness_tbl) / 84966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin sizeof(camera_sharpness_tbl[0]); i++) { 85066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("%c. %s\n", submenuNum, camera_sharpness_tbl[i].sharpness_name); 85166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin submenuNum++; 85266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } 85366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("\nPlease enter your choice for sharpness modes: "); 85466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin return; 85566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} 85666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 85766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinstatic void camera_set_bestshot_tbl(void) 85866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin{ 85966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin unsigned int i; 86066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 86166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("\n"); 86266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("===========================================\n"); 86366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf(" Camera is in set besthot mode now \n"); 86466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("===========================================\n\n"); 86566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 86666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 86766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin char bsmenuNum = 'A'; 86866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin for (i = 0; i < sizeof(bestshot_mode_tbl)/sizeof(bestshot_mode_tbl[0]); i++) { 86966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("%c. %s\n", bsmenuNum, 87066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin bestshot_mode_tbl[i].name); 87166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin bsmenuNum++; 87266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } 87366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 87466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("\nPlease enter your choice of Bestshot Mode: "); 87566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin return; 87666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} 87766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 87866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinstatic void camera_set_flashmode_tbl(void) 87966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin{ 88066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin unsigned int i; 88166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 88266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("\n"); 88366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("===========================================\n"); 88466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf(" Camera is in set flash mode now \n"); 88566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("===========================================\n\n"); 88666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 88766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 88866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin char bsmenuNum = 'A'; 88966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin for (i = 0; i < sizeof(flashmodes_tbl)/sizeof(flashmodes_tbl[0]); i++) { 89066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("%c. %s\n", bsmenuNum, 89166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin flashmodes_tbl[i].name); 89266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin bsmenuNum++; 89366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } 89466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 89566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("\nPlease enter your choice of Bestshot Mode: "); 89666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin return; 89766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} 89866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 89966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinstatic void camera_sensors_tbl(void) 90066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin{ 90166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin unsigned int i; 90266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin size_t available_sensors = sizeof(sensor_tbl)/sizeof(sensor_tbl[0]); 90366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 90466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("\n"); 90566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("===========================================\n"); 90666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf(" Camera Sensor to be used: \n"); 90766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("===========================================\n\n"); 90866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 90966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 91066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin char bsmenuNum = 'A'; 91166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin for (i = 0; ( i < available_sensors ) && ( sensor_tbl[i].present ) ; i++) { 91266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("%c. %s\n", bsmenuNum, 91366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin sensor_tbl[i].menu_name); 91466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin bsmenuNum++; 91566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } 91666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 91766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("\nPlease enter your choice for sensor: "); 91866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin return; 91966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} 92066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 92166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin/*=========================================================================== 92266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * FUNCTION - increase_contrast - 92366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * 92466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * DESCRIPTION: 92566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * ===========================================================================*/ 92666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinint increase_contrast (mm_camera_lib_handle *lib_handle) { 92766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin contrast += CAMERA_CONTRAST_STEP; 92866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin if (contrast > CAMERA_MAX_CONTRAST) { 92966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin contrast = CAMERA_MAX_CONTRAST; 93066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("Reached max CONTRAST. \n"); 93166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } 93266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("Increase Contrast to %d\n", contrast); 93366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin return mm_camera_lib_send_command(lib_handle, 93466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin MM_CAMERA_LIB_CONTRAST, 93566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin &contrast, 93666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin NULL); 93766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} 93866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 93966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin/*=========================================================================== 94066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * FUNCTION - decrease_contrast - 94166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * 94266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * DESCRIPTION: 94366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * ===========================================================================*/ 94466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinint decrease_contrast (mm_camera_lib_handle *lib_handle) { 94566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin contrast -= CAMERA_CONTRAST_STEP; 94666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin if (contrast < CAMERA_MIN_CONTRAST) { 94766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin contrast = CAMERA_MIN_CONTRAST; 94866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("Reached min CONTRAST. \n"); 94966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } 95066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("Decrease Contrast to %d\n", contrast); 95166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin return mm_camera_lib_send_command(lib_handle, 95266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin MM_CAMERA_LIB_CONTRAST, 95366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin &contrast, 95466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin NULL); 95566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} 95666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 95766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin/*=========================================================================== 95866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * FUNCTION - decrease_brightness - 95966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * 96066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * DESCRIPTION: 96166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * ===========================================================================*/ 96266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinint decrease_brightness (mm_camera_lib_handle *lib_handle) { 96366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin brightness -= CAMERA_BRIGHTNESS_STEP; 96466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin if (brightness < CAMERA_MIN_BRIGHTNESS) { 96566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin brightness = CAMERA_MIN_BRIGHTNESS; 96666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("Reached min BRIGHTNESS. \n"); 96766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } 96866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("Decrease Brightness to %d\n", brightness); 96966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin return mm_camera_lib_send_command(lib_handle, 97066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin MM_CAMERA_LIB_BRIGHTNESS, 97166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin &brightness, 97266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin NULL); 97366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} 97466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 97566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin/*=========================================================================== 97666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * FUNCTION - increase_brightness - 97766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * 97866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * DESCRIPTION: 97966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * ===========================================================================*/ 98066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinint increase_brightness (mm_camera_lib_handle *lib_handle) { 98166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin brightness += CAMERA_BRIGHTNESS_STEP; 98266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin if (brightness > CAMERA_MAX_BRIGHTNESS) { 98366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin brightness = CAMERA_MAX_BRIGHTNESS; 98466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("Reached max BRIGHTNESS. \n"); 98566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } 98666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("Increase Brightness to %d\n", brightness); 98766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin return mm_camera_lib_send_command(lib_handle, 98866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin MM_CAMERA_LIB_BRIGHTNESS, 98966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin &brightness, 99066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin NULL); 99166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} 99266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 99366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin/*=========================================================================== 99466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * FUNCTION - increase_EV - 99566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * 99666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * DESCRIPTION: 99766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * ===========================================================================*/ 99866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 99966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinint increase_EV (void) { 100066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#if 0 100166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin int rc = 0; 100266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin int32_t value = 0; 100366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin rc = cam_config_is_parm_supported(cam_id, MM_CAMERA_PARM_EXPOSURE_COMPENSATION); 100466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin if(!rc) { 100566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("MM_CAMERA_PARM_EXPOSURE_COMPENSATION mode is not supported for this sensor"); 100666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin return -1; 100766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } 100866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin ev_numerator += 1; 100966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin if(ev_numerator >= EXPOSURE_COMPENSATION_MINIMUM_NUMERATOR && 101066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin ev_numerator <= EXPOSURE_COMPENSATION_MAXIMUM_NUMERATOR){ 101166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin int16_t numerator16 = (int16_t)(ev_numerator & 0x0000ffff); 101266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin uint16_t denominator16 = EXPOSURE_COMPENSATION_DENOMINATOR; 101366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin value = numerator16 << 16 | denominator16; 101466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } else { 101566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("Reached max EV.\n"); 101666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } 101766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin return mm_app_set_config_parm(cam_id, MM_CAMERA_PARM_EXPOSURE_COMPENSATION, value); 101866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#endif 101966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin return 0; 102066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} 102166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 102266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin/*=========================================================================== 102366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * FUNCTION - decrease_EV - 102466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * 102566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * DESCRIPTION: 102666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * ===========================================================================*/ 102766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinint decrease_EV (void) { 102866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#if 0 102966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin int rc = 0; 103066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin int32_t value = 0; 103166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin rc = cam_config_is_parm_supported(cam_id, MM_CAMERA_PARM_EXPOSURE_COMPENSATION); 103266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin if(!rc) { 103366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("MM_CAMERA_PARM_EXPOSURE_COMPENSATION mode is not supported for this sensor"); 103466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin return -1; 103566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } 103666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin ev_numerator -= 1; 103766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin if(ev_numerator >= EXPOSURE_COMPENSATION_MINIMUM_NUMERATOR && 103866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin ev_numerator <= EXPOSURE_COMPENSATION_MAXIMUM_NUMERATOR){ 103966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin int16_t numerator16 = (int16_t)(ev_numerator & 0x0000ffff); 104066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin uint16_t denominator16 = EXPOSURE_COMPENSATION_DENOMINATOR; 104166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin value = numerator16 << 16 | denominator16; 104266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } else { 104366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("Reached min EV.\n"); 104466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } 104566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin return mm_app_set_config_parm(cam_id, MM_CAMERA_PARM_EXPOSURE_COMPENSATION, value); 104666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#endif 104766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin return 0; 104866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} 104966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 105066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin/*=========================================================================== 105166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * FUNCTION - increase_saturation - 105266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * 105366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * DESCRIPTION: 105466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * ===========================================================================*/ 105566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinint increase_saturation (mm_camera_lib_handle *lib_handle) { 105666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#if 0 105766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin saturation += CAMERA_SATURATION_STEP; 105866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin if (saturation > CAMERA_MAX_SATURATION) { 105966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin saturation = CAMERA_MAX_SATURATION; 106066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("Reached max saturation. \n"); 106166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } 106266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("Increase Saturation to %d\n", saturation); 106366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin return mm_app_set_config_parm(cam_id, MM_CAMERA_PARM_SATURATION, saturation); 106466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#endif 106566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin saturation += CAMERA_SATURATION_STEP; 106666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin if (saturation > CAMERA_MAX_SATURATION) { 106766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin saturation = CAMERA_MAX_SATURATION; 106866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("Reached max saturation. \n"); 106966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } 107066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("Increase saturation to %d\n", contrast); 107166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin return mm_camera_lib_send_command(lib_handle, 107266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin MM_CAMERA_LIB_SATURATION, 107366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin &saturation, 107466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin NULL); 107566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} 107666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 107766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin/*=========================================================================== 107866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * FUNCTION - decrease_saturation - 107966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * 108066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * DESCRIPTION: 108166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * ===========================================================================*/ 108266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinint decrease_saturation (mm_camera_lib_handle *lib_handle) { 108366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#if 0 108466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin saturation -= CAMERA_SATURATION_STEP; 108566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin if (saturation < CAMERA_MIN_SATURATION) { 108666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin saturation = CAMERA_MIN_SATURATION; 108766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("Reached min saturation. \n"); 108866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } 108966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("Dcrease Saturation to %d\n", saturation); 109066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin return mm_app_set_config_parm(cam_id, MM_CAMERA_PARM_SATURATION, saturation); 109166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#endif 109266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin saturation -= CAMERA_SATURATION_STEP; 109366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin if (saturation < CAMERA_MIN_SATURATION) { 109466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin saturation = CAMERA_MIN_SATURATION; 109566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("Reached min saturation. \n"); 109666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } 109766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("decrease saturation to %d\n", contrast); 109866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin return mm_camera_lib_send_command(lib_handle, 109966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin MM_CAMERA_LIB_SATURATION, 110066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin &saturation, 110166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin NULL); 110266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} 110366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 110466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 110566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinint take_jpeg_snapshot(mm_camera_test_obj_t *test_obj, int is_burst_mode) 110666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin{ 110766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin LOGH("\nEnter take_jpeg_snapshot!!\n"); 110866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin int rc = mm_app_take_picture (test_obj, (uint8_t)is_burst_mode); 110966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin if (MM_CAMERA_OK != rc) { 111066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin LOGE(" mm_app_take_picture() err=%d\n", rc); 111166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } 111266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin return rc; 111366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} 111466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 111566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin/*=========================================================================== 111666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * FUNCTION - main - 111766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * 111866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * DESCRIPTION: 111966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin *==========================================================================*/ 112066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinint main() 112166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin{ 112266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin char tc_buf[3]; 112366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin int mode = 0; 112466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin int rc = 0; 112566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 112666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("Please Select Execution Mode:\n"); 112766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("0: Menu Based 1: Regression\n"); 112866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin fgets(tc_buf, 3, stdin); 112966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin mode = tc_buf[0] - '0'; 113066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin if(mode == 0) { 113166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("\nStarting Menu based!!\n"); 113266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } else if(mode == 1) { 113366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("Starting Regression testing!!\n"); 113466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin if(!mm_app_start_regression_test(1)) { 113566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("\nRegressiion test passed!!\n"); 113666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin return 0; 113766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } else { 113866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("\nRegression test failed!!\n"); 113966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin exit(-1); 114066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } 114166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } else { 114266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("\nPlease Enter 0 or 1\n"); 114366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("\nExisting the App!!\n"); 114466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin exit(-1); 114566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } 114666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 114766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 114866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin rc = submain(); 114966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 115066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("Exiting application\n"); 115166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 115266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin return rc; 115366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} 115466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 115566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin/*=========================================================================== 115666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * FUNCTION - set_whitebalance - 115766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * 115866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * DESCRIPTION: 115966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * ===========================================================================*/ 116066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinint set_whitebalance (mm_camera_lib_handle *lib_handle, int wb_action_param) { 116166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin cam_wb_mode_type type = 0; 116266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin switch (wb_action_param) { 116366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case WB_AUTO: 116466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("\n WB_AUTO\n"); 116566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin type = CAM_WB_MODE_AUTO; 116666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 116766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case WB_INCANDESCENT: 116866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("\n WB_INCANDESCENT\n"); 116966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin type = CAM_WB_MODE_INCANDESCENT; 117066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 117166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case WB_FLUORESCENT: 117266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("\n WB_FLUORESCENT\n"); 117366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin type = CAM_WB_MODE_FLUORESCENT; 117466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 117566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case WB_WARM_FLUORESCENT: 117666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("\n WB_WARM_FLUORESCENT\n"); 117766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin type = CAM_WB_MODE_WARM_FLUORESCENT; 117866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 117966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case WB_DAYLIGHT: 118066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("\n WB_DAYLIGHT\n"); 118166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin type = CAM_WB_MODE_DAYLIGHT; 118266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 118366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case WB_CLOUDY_DAYLIGHT: 118466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("\n WB_CLOUDY_DAYLIGHT\n"); 118566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin type = CAM_WB_MODE_CLOUDY_DAYLIGHT; 118666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 118766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case WB_TWILIGHT: 118866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("\n WB_TWILIGHT\n"); 118966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin type = CAM_WB_MODE_TWILIGHT; 119066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 119166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case WB_SHADE: 119266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("\n WB_SHADE\n"); 119366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin type = CAM_WB_MODE_SHADE; 119466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 119566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin default: 119666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 119766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } 119866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin return mm_camera_lib_send_command(lib_handle, 119966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin MM_CAMERA_LIB_WB, 120066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin &type, 120166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin NULL); 120266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} 120366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 120466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 120566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin/*=========================================================================== 120666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * FUNCTION - set_exp_metering - 120766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * 120866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * DESCRIPTION: 120966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * ===========================================================================*/ 121066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinint set_exp_metering (mm_camera_lib_handle *lib_handle, int exp_metering_action_param) { 121166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin cam_auto_exposure_mode_type type = 0; 121266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin switch (exp_metering_action_param) { 121366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case AUTO_EXP_FRAME_AVG: 121466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("\nAUTO_EXP_FRAME_AVG\n"); 121566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin type = CAM_AEC_MODE_FRAME_AVERAGE; 121666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 121766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case AUTO_EXP_CENTER_WEIGHTED: 121866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("\n AUTO_EXP_CENTER_WEIGHTED\n"); 121966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin type = CAM_AEC_MODE_CENTER_WEIGHTED; 122066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 122166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case AUTO_EXP_SPOT_METERING: 122266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("\n AUTO_EXP_SPOT_METERING\n"); 122366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin type = CAM_AEC_MODE_SPOT_METERING; 122466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 122566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case AUTO_EXP_SMART_METERING: 122666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("\n AUTO_EXP_SMART_METERING\n"); 122766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin type = CAM_AEC_MODE_SMART_METERING; 122866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 122966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case AUTO_EXP_USER_METERING: 123066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("\n AUTO_EXP_USER_METERING\n"); 123166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin type = CAM_AEC_MODE_USER_METERING; 123266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 123366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case AUTO_EXP_SPOT_METERING_ADV: 123466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("\n AUTO_EXP_SPOT_METERING_ADV\n"); 123566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin type = CAM_AEC_MODE_SPOT_METERING_ADV; 123666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 123766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case AUTO_EXP_CENTER_WEIGHTED_ADV: 123866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("\n AUTO_EXP_CENTER_WEIGHTED_ADV\n"); 123966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin type = CAM_AEC_MODE_CENTER_WEIGHTED_ADV; 124066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 124166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin default: 124266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 124366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } 124466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin return mm_camera_lib_send_command(lib_handle, 124566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin MM_CAMERA_LIB_EXPOSURE_METERING, 124666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin &type, 124766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin NULL); 124866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} 124966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 125066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinint get_ctrl_value (int ctrl_value_mode_param){ 125166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#if 0 125266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin int rc = 0; 125366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin struct v4l2_control ctrl; 125466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 125566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin if (ctrl_value_mode_param == WHITE_BALANCE_STATE) { 125666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("You chose WHITE_BALANCE_STATE\n"); 125766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin ctrl.id = V4L2_CID_AUTO_WHITE_BALANCE; 125866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } 125966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin else if (ctrl_value_mode_param == WHITE_BALANCE_TEMPERATURE) { 126066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("You chose WHITE_BALANCE_TEMPERATURE\n"); 126166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin ctrl.id = V4L2_CID_WHITE_BALANCE_TEMPERATURE; 126266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } 126366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin else if (ctrl_value_mode_param == BRIGHTNESS_CTRL) { 126466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("You chose brightness value\n"); 126566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin ctrl.id = V4L2_CID_BRIGHTNESS; 126666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } 126766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin else if (ctrl_value_mode_param == EV) { 126866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("You chose exposure value\n"); 126966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin ctrl.id = V4L2_CID_EXPOSURE; 127066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } 127166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin else if (ctrl_value_mode_param == CONTRAST_CTRL) { 127266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("You chose contrast value\n"); 127366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin ctrl.id = V4L2_CID_CONTRAST; 127466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } 127566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin else if (ctrl_value_mode_param == SATURATION_CTRL) { 127666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("You chose saturation value\n"); 127766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin ctrl.id = V4L2_CID_SATURATION; 127866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } else if (ctrl_value_mode_param == SHARPNESS_CTRL) { 127966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("You chose sharpness value\n"); 128066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin ctrl.id = V4L2_CID_SHARPNESS; 128166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } 128266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 128366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin // rc = ioctl(camfd, VIDIOC_G_CTRL, &ctrl); 128466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin return rc; 128566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#endif 128666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin return ctrl_value_mode_param; 128766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} 128866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 128966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin/*=========================================================================== 129066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * FUNCTION - toggle_afr - 129166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * 129266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * DESCRIPTION: 129366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * ===========================================================================*/ 129466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinint toggle_afr () { 129566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#if 0 129666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin if (fps_mode == FPS_MODE_AUTO) { 129766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("\nSetting FPS_MODE_FIXED\n"); 129866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin fps_mode = FPS_MODE_FIXED; 129966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } else { 130066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("\nSetting FPS_MODE_AUTO\n"); 130166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin fps_mode = FPS_MODE_AUTO; 130266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } 130366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin return mm_app_set_config_parm(cam_id, MM_CAMERA_PARM_FPS_MODE, fps_mode); 130466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#endif 130566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin return 0; 130666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} 130766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 130866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinint set_zoom (mm_camera_lib_handle *lib_handle, int zoom_action_param) { 130966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 131066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin if (zoom_action_param == ZOOM_IN) { 131166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin zoom_level += ZOOM_STEP; 131266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin if (zoom_level > zoom_max_value) 131366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin zoom_level = zoom_max_value; 131466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } else if (zoom_action_param == ZOOM_OUT) { 131566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin zoom_level -= ZOOM_STEP; 131666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin if (zoom_level < ZOOM_MIN_VALUE) 131766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin zoom_level = ZOOM_MIN_VALUE; 131866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } else { 131966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin LOGD(" Invalid zoom_action_param value\n"); 132066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin return -EINVAL; 132166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } 132266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin return mm_camera_lib_send_command(lib_handle, 132366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin MM_CAMERA_LIB_ZOOM, 132466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin &zoom_level, 132566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin NULL); 132666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} 132766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 132866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin/*=========================================================================== 132966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * FUNCTION - set_iso - 133066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * 133166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * DESCRIPTION: 133266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * ===========================================================================*/ 133366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinint set_iso (mm_camera_lib_handle *lib_handle, int iso_action_param) { 133466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin cam_iso_mode_type type = 0; 133566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin switch (iso_action_param) { 133666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case ISO_AUTO: 133766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("\n ISO_AUTO\n"); 133866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin type = CAM_ISO_MODE_AUTO; 133966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 134066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case ISO_DEBLUR: 134166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("\n ISO_DEBLUR\n"); 134266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin type = CAM_ISO_MODE_DEBLUR; 134366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 134466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case ISO_100: 134566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("\n ISO_100\n"); 134666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin type = CAM_ISO_MODE_100; 134766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 134866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case ISO_200: 134966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("\n ISO_200\n"); 135066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin type = CAM_ISO_MODE_200; 135166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 135266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case ISO_400: 135366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("\n ISO_400\n"); 135466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin type = CAM_ISO_MODE_400; 135566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 135666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case ISO_800: 135766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("\n ISO_800\n"); 135866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin type = CAM_ISO_MODE_800; 135966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 136066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case ISO_1600: 136166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("\n ISO_1600\n"); 136266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin type = CAM_ISO_MODE_1600; 136366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 136466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin default: 136566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 136666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } 136766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin return mm_camera_lib_send_command(lib_handle, 136866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin MM_CAMERA_LIB_ISO, 136966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin &type, 137066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin NULL); 137166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} 137266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 137366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin/*=========================================================================== 137466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * FUNCTION - increase_sharpness - 137566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * 137666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * DESCRIPTION: 137766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * ===========================================================================*/ 137866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinint increase_sharpness (mm_camera_lib_handle *lib_handle) { 137966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin sharpness += CAMERA_SHARPNESS_STEP; 138066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin if (sharpness > CAMERA_MAX_SHARPNESS) { 138166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin sharpness = CAMERA_MAX_SHARPNESS; 138266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("Reached max SHARPNESS. \n"); 138366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } 138466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("Increase Sharpness to %d\n", sharpness); 138566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin return mm_camera_lib_send_command(lib_handle, 138666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin MM_CAMERA_LIB_SHARPNESS, 138766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin &sharpness, 138866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin NULL); 138966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} 139066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 139166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin/*=========================================================================== 139266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * FUNCTION - decrease_sharpness - 139366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * 139466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * DESCRIPTION: 139566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * ===========================================================================*/ 139666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinint decrease_sharpness (mm_camera_lib_handle *lib_handle) { 139766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin sharpness -= CAMERA_SHARPNESS_STEP; 139866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin if (sharpness < CAMERA_MIN_SHARPNESS) { 139966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin sharpness = CAMERA_MIN_SHARPNESS; 140066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("Reached min SHARPNESS. \n"); 140166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } 140266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("Decrease Sharpness to %d\n", sharpness); 140366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin return mm_camera_lib_send_command(lib_handle, 140466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin MM_CAMERA_LIB_SHARPNESS, 140566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin &sharpness, 140666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin NULL); 140766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} 140866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 140966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinint set_flash_mode (mm_camera_lib_handle *lib_handle, int action_param) { 141066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin cam_flash_mode_t type = 0; 141166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin switch (action_param) { 141266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case FLASH_MODE_OFF: 141366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("\n FLASH_MODE_OFF\n"); 141466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin type = CAM_FLASH_MODE_OFF; 141566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 141666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case FLASH_MODE_AUTO: 141766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("\n FLASH_MODE_AUTO\n"); 141866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin type = CAM_FLASH_MODE_AUTO; 141966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 142066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case FLASH_MODE_ON: 142166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("\n FLASH_MODE_ON\n"); 142266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin type = CAM_FLASH_MODE_ON; 142366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 142466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case FLASH_MODE_TORCH: 142566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("\n FLASH_MODE_TORCH\n"); 14261687b440bcda598006d1950f74915f0cea3b66a3Mekala Natarajan type = CAM_FLASH_MODE_TORCH; 142766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 142866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin default: 142966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 143066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } 143166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin return mm_camera_lib_send_command(lib_handle, 143266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin MM_CAMERA_LIB_FLASH, 143366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin &type, 143466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin NULL); 143566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} 143666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 143766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinint set_bestshot_mode(mm_camera_lib_handle *lib_handle, int action_param) { 143866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin cam_scene_mode_type type = 0; 143966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin switch (action_param) { 144066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case BESTSHOT_AUTO: 144166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("\n BEST SHOT AUTO\n"); 144266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin type = CAM_SCENE_MODE_OFF; 144366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 144466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case BESTSHOT_ACTION: 144566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("\n BEST SHOT ACTION\n"); 144666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin type = CAM_SCENE_MODE_ACTION; 144766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 144866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case BESTSHOT_PORTRAIT: 144966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("\n BEST SHOT PORTRAIT\n"); 145066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin type = CAM_SCENE_MODE_PORTRAIT; 145166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 145266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case BESTSHOT_LANDSCAPE: 145366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("\n BEST SHOT LANDSCAPE\n"); 145466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin type = CAM_SCENE_MODE_LANDSCAPE; 145566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 145666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case BESTSHOT_NIGHT: 145766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("\n BEST SHOT NIGHT\n"); 145866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin type = CAM_SCENE_MODE_NIGHT; 145966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 146066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case BESTSHOT_NIGHT_PORTRAIT: 146166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("\n BEST SHOT NIGHT PORTRAIT\n"); 146266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin type = CAM_SCENE_MODE_NIGHT_PORTRAIT; 146366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 146466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case BESTSHOT_THEATRE: 146566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("\n BEST SHOT THREATRE\n"); 146666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin type = CAM_SCENE_MODE_THEATRE; 146766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 146866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case BESTSHOT_BEACH: 146966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("\n BEST SHOT BEACH\n"); 147066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin type = CAM_SCENE_MODE_BEACH; 147166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 147266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case BESTSHOT_SNOW: 147366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("\n BEST SHOT SNOW\n"); 147466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin type = CAM_SCENE_MODE_SNOW; 147566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 147666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case BESTSHOT_SUNSET: 147766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("\n BEST SHOT SUNSET\n"); 147866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin type = CAM_SCENE_MODE_SUNSET; 147966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 148066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case BESTSHOT_ANTISHAKE: 148166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("\n BEST SHOT ANTISHAKE\n"); 148266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin type = CAM_SCENE_MODE_ANTISHAKE; 148366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 148466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case BESTSHOT_FIREWORKS: 148566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("\n BEST SHOT FIREWORKS\n"); 148666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin type = CAM_SCENE_MODE_FIREWORKS; 148766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 148866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case BESTSHOT_SPORTS: 148966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("\n BEST SHOT SPORTS\n"); 149066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin type = CAM_SCENE_MODE_SPORTS; 149166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 149266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case BESTSHOT_PARTY: 149366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("\n BEST SHOT PARTY\n"); 149466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin type = CAM_SCENE_MODE_PARTY; 149566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 149666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case BESTSHOT_CANDLELIGHT: 149766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("\n BEST SHOT CANDLELIGHT\n"); 149866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin type = CAM_SCENE_MODE_CANDLELIGHT; 149966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 150066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case BESTSHOT_ASD: 150166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("\n BEST SHOT ASD\n"); 150266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin type = CAM_SCENE_MODE_AUTO; 150366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 150466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case BESTSHOT_BACKLIGHT: 150566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("\n BEST SHOT BACKLIGHT\n"); 150666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin type = CAM_SCENE_MODE_BACKLIGHT; 150766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 150866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case BESTSHOT_FLOWERS: 150966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("\n BEST SHOT FLOWERS\n"); 151066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin type = CAM_SCENE_MODE_FLOWERS; 151166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 151266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case BESTSHOT_AR: 151366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("\n BEST SHOT AR\n"); 151466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin type = CAM_SCENE_MODE_AR; 151566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 151666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case BESTSHOT_HDR: 151766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("\n BEST SHOT HDR\n"); 151866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin type = CAM_SCENE_MODE_OFF; 151966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 152066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin default: 152166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 152266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } 152366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin return mm_camera_lib_send_command(lib_handle, 152466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin MM_CAMERA_LIB_BESTSHOT, 152566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin &type, 152666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin NULL); 152766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} 152866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin/*=========================================================================== 152966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * FUNCTION - print_current_menu - 153066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * 153166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * DESCRIPTION: 153266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * ===========================================================================*/ 153366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinint print_current_menu (menu_id_change_t current_menu_id) { 153466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin if (current_menu_id == MENU_ID_MAIN) { 153566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin print_menu_preview_video (); 153666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } else if (current_menu_id == MENU_ID_WHITEBALANCECHANGE) { 153766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin camera_preview_video_wb_change_tbl(); 153866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } else if (current_menu_id == MENU_ID_EXPMETERINGCHANGE) { 153966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin camera_preview_video_exp_metering_change_tbl(); 154066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } else if (current_menu_id == MENU_ID_GET_CTRL_VALUE) { 154166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin camera_preview_video_get_ctrl_value_tbl(); 154266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } else if (current_menu_id == MENU_ID_ISOCHANGE) { 154366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin camera_preview_video_iso_change_tbl(); 154466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } else if (current_menu_id == MENU_ID_BRIGHTNESSCHANGE) { 154566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin camera_brightness_change_tbl (); 154666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } else if (current_menu_id == MENU_ID_CONTRASTCHANGE) { 154766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin camera_contrast_change_tbl (); 154866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } else if (current_menu_id == MENU_ID_EVCHANGE) { 154966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin camera_EV_change_tbl (); 155066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } else if (current_menu_id == MENU_ID_SATURATIONCHANGE) { 155166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin camera_saturation_change_tbl (); 155266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } else if (current_menu_id == MENU_ID_ZOOMCHANGE) { 155366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin camera_preview_video_zoom_change_tbl(); 155466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } else if (current_menu_id == MENU_ID_SHARPNESSCHANGE) { 155566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin camera_preview_video_sharpness_change_tbl(); 155666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } else if (current_menu_id == MENU_ID_BESTSHOT) { 155766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin camera_set_bestshot_tbl(); 155866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } else if (current_menu_id == MENU_ID_FLASHMODE) { 155966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin camera_set_flashmode_tbl(); 156066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } else if (current_menu_id == MENU_ID_SENSORS ) { 156166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin camera_sensors_tbl(); 156266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } else if (current_menu_id == MENU_ID_SWITCH_RES ) { 156366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin camera_resolution_change_tbl(); 156466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } 156566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 156666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin return 0; 156766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} 156866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 156966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinint filter_resolutions(mm_camera_lib_handle *lib_handle, 157066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin DIMENSION_TBL_T *tbl, 157166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin size_t tbl_size) 157266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin{ 157366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin size_t i, j; 157466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin cam_capability_t camera_cap; 157566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin int rc = 0; 157666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 157766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin if ( ( NULL == lib_handle ) || ( NULL == tbl ) ) { 157866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin return -1; 157966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } 158066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 158166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin rc = mm_camera_lib_get_caps(lib_handle, &camera_cap); 158266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin if ( MM_CAMERA_OK != rc ) { 158366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin LOGE("mm_camera_lib_get_caps() err=%d\n", rc); 158466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin return -1; 158566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } 158666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 158766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin for( i = 0 ; i < tbl_size ; i++ ) { 158866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin for( j = 0; j < camera_cap.picture_sizes_tbl_cnt; j++ ) { 158966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin if ( ( tbl[i].width == camera_cap.picture_sizes_tbl[j].width ) && 159066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin ( tbl[i].height == camera_cap.picture_sizes_tbl[j].height ) ) { 159166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin tbl[i].supported = 1; 159266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin rc = (int)i; 159366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 159466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } 159566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } 159666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } 159766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 159866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin return rc; 159966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} 160066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 160166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin/*=========================================================================== 160266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * FUNCTION : enableAFR 160366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * 160466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * DESCRIPTION: This function will go through the list 160566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * of supported FPS ranges and select the 160666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * one which has maximum range 160766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * 160866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * PARAMETERS : 160966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * @lib_handle : camera test library handle 161066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * 161166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * RETURN : uint32_t type of stream handle 161266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * MM_CAMERA_OK -- Success 161366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * !=MM_CAMERA_OK -- Error status 161466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin *==========================================================================*/ 161566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinint enableAFR(mm_camera_lib_handle *lib_handle) 161666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin{ 161766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin size_t i, j; 161866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin float max_range = 0.0f; 161966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin cam_capability_t cap; 162066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin int rc = MM_CAMERA_OK; 162166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 162266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin if ( NULL == lib_handle ) { 162366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin return MM_CAMERA_E_INVALID_INPUT; 162466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } 162566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 162666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin rc = mm_camera_lib_get_caps(lib_handle, &cap); 162766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin if ( MM_CAMERA_OK != rc ) { 162866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin LOGE("mm_camera_lib_get_caps() err=%d\n", rc); 162966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin return rc; 163066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } 163166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 163266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin for( i = 0, j = 0 ; i < cap.fps_ranges_tbl_cnt ; i++ ) { 163366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin if ( max_range < (cap.fps_ranges_tbl[i].max_fps - cap.fps_ranges_tbl[i].min_fps) ) { 163466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin j = i; 163566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } 163666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } 163766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 163866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin rc = mm_camera_lib_send_command(lib_handle, 163966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin MM_CAMERA_LIB_FPS_RANGE, 164066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin &cap.fps_ranges_tbl[j], 164166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin NULL); 164266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 164366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin LOGE("FPS range [%5.2f:%5.2f] rc = %d", 164466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin cap.fps_ranges_tbl[j].min_fps, 164566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin cap.fps_ranges_tbl[j].max_fps, 164666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin rc); 164766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 164866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin return rc; 164966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} 165066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 165166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin/*=========================================================================== 165266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * FUNCTION - submain - 165366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * 165466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * DESCRIPTION: 165566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * ===========================================================================*/ 165666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinstatic int submain() 165766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin{ 165866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin int rc = 0; 165966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin char tc_buf[3]; 166066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin menu_id_change_t current_menu_id = MENU_ID_MAIN, next_menu_id; 166166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin camera_action_t action_id; 166266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin int action_param; 166366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin uint8_t previewing = 0; 166466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin int isZSL = 0; 166566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin uint8_t wnr_enabled = 0; 166666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin mm_camera_lib_handle lib_handle; 166766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin int num_cameras; 166866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin int available_sensors = 166966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin (int)(sizeof(sensor_tbl) / sizeof(sensor_tbl[0])); 167066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin int available_snap_sizes = 167166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin (int)(sizeof(dimension_tbl)/sizeof(dimension_tbl[0])); 167266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin int i,c; 167366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin mm_camera_lib_snapshot_params snap_dim; 167466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin snap_dim.width = DEFAULT_SNAPSHOT_WIDTH; 167566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin snap_dim.height = DEFAULT_SNAPSHOT_HEIGHT; 167666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin cam_scene_mode_type default_scene= CAM_SCENE_MODE_OFF; 167766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin int set_tintless= 0; 167866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 167966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin mm_camera_test_obj_t test_obj; 168066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin memset(&test_obj, 0, sizeof(mm_camera_test_obj_t)); 168166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 168266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin rc = mm_camera_lib_open(&lib_handle, 0); 168366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin if (rc != MM_CAMERA_OK) { 168466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin LOGE("mm_camera_lib_open() err=%d\n", rc); 168566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin return -1; 168666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } 168766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 168866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin num_cameras = mm_camera_lib_number_of_cameras(&lib_handle); 168966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin if ( 0 >= num_cameras ) { 169066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin LOGE(" No camera sensors reported!"); 169166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin rc = -1; 169266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin goto ERROR; 169366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } else if ( 1 <= num_cameras ) { 169466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin c = MIN(num_cameras, available_sensors); 169566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin for ( i = 0 ; i < c ; i++ ) { 169666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin sensor_tbl[i].present = 1; 169766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } 169866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin current_menu_id = MENU_ID_SENSORS; 169966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } else { 170066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin i = filter_resolutions(&lib_handle, 170166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin dimension_tbl, 170266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin (size_t)available_snap_sizes); 170366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin if ( ( i < 0 ) || ( i >= available_snap_sizes ) ) { 170466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin LOGE("filter_resolutions()\n"); 170566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin goto ERROR; 170666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } 170766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin snap_dim.width = dimension_tbl[i].width; 170866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin snap_dim.height = dimension_tbl[i].height; 170966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 171066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin rc = enableAFR(&lib_handle); 171166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin if (rc != MM_CAMERA_OK) { 171266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin LOGE("enableAFR() err=%d\n", rc); 171366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin goto ERROR; 171466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } 171566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 171666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin rc = mm_camera_lib_send_command(&lib_handle, 171766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin MM_CAMERA_LIB_BESTSHOT, 171866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin &default_scene, 171966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin NULL); 172066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin if (rc != MM_CAMERA_OK) { 172166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin LOGE("mm_camera_lib_send_command() err=%d\n", rc); 172266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin goto ERROR; 172366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } 172466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } 172566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin /*start the eztune server*/ 172666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin LOGH("Starting eztune Server \n"); 172766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin eztune_server_start(&lib_handle); 172866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 172966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin do { 173066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin print_current_menu (current_menu_id); 173166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin fgets(tc_buf, 3, stdin); 173266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 173366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin next_menu_id = next_menu(current_menu_id, tc_buf[0], & action_id, & action_param); 173466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 173566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin if (next_menu_id != MENU_ID_INVALID) { 173666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin current_menu_id = next_menu_id; 173766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } 173866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin if (action_id == ACTION_NO_ACTION) { 173966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin continue; 174066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } 174166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 174266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin switch(action_id) { 174366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case ACTION_START_PREVIEW: 174466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin LOGE("ACTION_START_PREVIEW \n"); 174566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin rc = mm_camera_lib_start_stream(&lib_handle); 174666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin if (rc != MM_CAMERA_OK) { 174766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin LOGE("mm_camera_lib_start_stream() err=%d\n", rc); 174866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin goto ERROR; 174966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } 175066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin previewing = 1; 175166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 175266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 175366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case ACTION_STOP_PREVIEW: 175466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin LOGD("ACTION_STOP_PREVIEW \n"); 175566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin rc = mm_camera_lib_stop_stream(&lib_handle); 175666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin if (rc != MM_CAMERA_OK) { 175766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin LOGE("mm_camera_lib_stop_stream() err=%d\n", rc); 175866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin goto ERROR; 175966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } 176066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin previewing = 0; 176166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 176266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 176366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case ACTION_SET_WHITE_BALANCE: 176466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin LOGD("Selection for the White Balance changes\n"); 176566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin set_whitebalance(&lib_handle, action_param); 176666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 176766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 176866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case ACTION_SET_TINTLESS_ENABLE: 176966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin LOGD("Selection for the Tintless enable changes\n"); 177066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin set_tintless = 1; 177166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin rc = mm_camera_lib_send_command(&lib_handle, 177266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin MM_CAMERA_LIB_SET_TINTLESS, 177366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin &set_tintless, 177466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin NULL); 177566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin if (rc != MM_CAMERA_OK) { 177666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin LOGE("mm_camera_lib_send_command() err=%d\n", rc); 177766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin goto ERROR; 177866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } 177966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 178066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 178166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case ACTION_SET_TINTLESS_DISABLE: 178266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin LOGD("Selection for the Tintless disable changes\n"); 178366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin set_tintless = 0; 178466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin rc = mm_camera_lib_send_command(&lib_handle, 178566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin MM_CAMERA_LIB_SET_TINTLESS, 178666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin &set_tintless, 178766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin NULL); 178866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin if (rc != MM_CAMERA_OK) { 178966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin LOGE("mm_camera_lib_send_command() err=%d\n", rc); 179066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin goto ERROR; 179166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } 179266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 179366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 179466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case ACTION_SET_EXP_METERING: 179566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin LOGD("Selection for the Exposure Metering changes\n"); 179666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin set_exp_metering(&lib_handle, action_param); 179766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 179866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 179966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case ACTION_GET_CTRL_VALUE: 180066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin LOGD("Selection for getting control value\n"); 180166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin get_ctrl_value(action_param); 180266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 180366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 180466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case ACTION_BRIGHTNESS_INCREASE: 180566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("Increase brightness\n"); 180666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin increase_brightness(&lib_handle); 180766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 180866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 180966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case ACTION_BRIGHTNESS_DECREASE: 181066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("Decrease brightness\n"); 181166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin decrease_brightness(&lib_handle); 181266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 181366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 181466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case ACTION_CONTRAST_INCREASE: 181566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin LOGD("Selection for the contrast increase\n"); 181666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin increase_contrast (&lib_handle); 181766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 181866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 181966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case ACTION_CONTRAST_DECREASE: 182066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin LOGD("Selection for the contrast decrease\n"); 182166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin decrease_contrast (&lib_handle); 182266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 182366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 182466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case ACTION_EV_INCREASE: 182566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin LOGD("Selection for the EV increase\n"); 182666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin increase_EV (); 182766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 182866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 182966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case ACTION_EV_DECREASE: 183066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin LOGD("Selection for the EV decrease\n"); 183166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin decrease_EV (); 183266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 183366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 183466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case ACTION_SATURATION_INCREASE: 183566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin LOGD("Selection for the EV increase\n"); 183666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin increase_saturation (&lib_handle); 183766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 183866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 183966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case ACTION_SATURATION_DECREASE: 184066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin LOGD("Selection for the EV decrease\n"); 184166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin decrease_saturation (&lib_handle); 184266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 184366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 184466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case ACTION_TOGGLE_AFR: 184566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin LOGD("Select for auto frame rate toggling\n"); 184666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin toggle_afr(); 184766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 184866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 184966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case ACTION_SET_ISO: 185066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin LOGD("Select for ISO changes\n"); 185166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin set_iso(&lib_handle, action_param); 185266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 185366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 185466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case ACTION_SET_ZOOM: 185566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin LOGD("Selection for the zoom direction changes\n"); 185666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin set_zoom(&lib_handle, action_param); 185766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 185866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 185966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case ACTION_SHARPNESS_INCREASE: 186066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin LOGD("Selection for sharpness increase\n"); 186166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin increase_sharpness(&lib_handle); 186266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 186366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 186466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case ACTION_SHARPNESS_DECREASE: 186566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin LOGD("Selection for sharpness decrease\n"); 186666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin decrease_sharpness(&lib_handle); 186766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 186866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 186966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case ACTION_SET_BESTSHOT_MODE: 187066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin LOGD("Selection for bestshot\n"); 187166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin set_bestshot_mode(&lib_handle, action_param); 187266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 187366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 187466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case ACTION_SET_FLASH_MODE: 187566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("\n Selection for flashmode\n"); 187666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin set_flash_mode(&lib_handle, action_param); 187766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 187866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 187966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case ACTION_SWITCH_CAMERA: 188066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin rc = mm_camera_lib_close(&lib_handle); 188166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin if (rc != MM_CAMERA_OK) { 188266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin LOGE("mm_camera_lib_close() err=%d\n", rc); 188366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin goto ERROR; 188466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } 188566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 188666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin rc = mm_camera_lib_open(&lib_handle, action_param); 188766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin if (rc != MM_CAMERA_OK) { 188866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin LOGE("mm_camera_lib_open() err=%d\n", rc); 188966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin goto ERROR; 189066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } 189166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 189266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin i = filter_resolutions(&lib_handle, 189366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin dimension_tbl, 189466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin sizeof(dimension_tbl)/sizeof(dimension_tbl[0])); 189566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin if ( ( i < 0 ) || ( i >= available_snap_sizes ) ) { 189666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin LOGE("filter_resolutions()\n"); 189766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin goto ERROR; 189866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } 189966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin snap_dim.width = dimension_tbl[i].width; 190066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin snap_dim.height = dimension_tbl[i].height; 190166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 190266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin rc = enableAFR(&lib_handle); 190366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin if (rc != MM_CAMERA_OK) { 190466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin LOGE("enableAFR() err=%d\n", rc); 190566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin goto ERROR; 190666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } 190766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 190866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin rc = mm_camera_lib_send_command(&lib_handle, 190966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin MM_CAMERA_LIB_BESTSHOT, 191066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin &default_scene, 191166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin NULL); 191266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin if (rc != MM_CAMERA_OK) { 191366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin LOGE("mm_camera_lib_send_command() err=%d\n", rc); 191466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin goto ERROR; 191566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } 191666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 191766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 191866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case ACTION_TOGGLE_ZSL: 191966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("ZSL Toggle !!!\n"); 192066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin isZSL = !isZSL; 192166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin if ( isZSL ) { 192266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("ZSL on !!!\n"); 192366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } else { 192466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("ZSL off !!!\n"); 192566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } 192666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin rc = mm_camera_lib_send_command(&lib_handle, 192766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin MM_CAMERA_LIB_ZSL_ENABLE, 192866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin &isZSL, 192966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin NULL); 193066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin if (rc != MM_CAMERA_OK) { 193166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin LOGE("mm_camera_lib_send_command() err=%d\n", rc); 193266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin goto ERROR; 193366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } 193466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 193566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 193666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case ACTION_TAKE_RAW_SNAPSHOT: 193766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin LOGH("\n Take RAW snapshot\n"); 193866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 193966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin rc = mm_camera_lib_send_command(&lib_handle, 194066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin MM_CAMERA_LIB_DO_AF, 194166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin NULL, 194266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin NULL); 194366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 194466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin if (rc != MM_CAMERA_OK) { 194566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin LOGE("mm_camera_lib_send_command() err=%d\n", rc); 194666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin goto ERROR; 194766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } 194866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 194966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin rc = mm_camera_lib_send_command(&lib_handle, 195066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin MM_CAMERA_LIB_RAW_CAPTURE, 195166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin NULL, 195266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin NULL); 195366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin if (rc != MM_CAMERA_OK) { 195466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin LOGE("mm_camera_lib_send_command() err=%d\n", rc); 195566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin goto ERROR; 195666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } 195766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 195866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 195966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case ACTION_TAKE_JPEG_SNAPSHOT: 196066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin LOGH("\n Take JPEG snapshot\n"); 196166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 196266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin rc = mm_camera_lib_send_command(&lib_handle, 196366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin MM_CAMERA_LIB_JPEG_CAPTURE, 196466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin &snap_dim, 196566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin NULL); 196666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin if (rc != MM_CAMERA_OK) { 196766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin LOGE("mm_camera_lib_send_command() err=%d\n", rc); 196866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin goto ERROR; 196966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } 197066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 197166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case ACTION_SWITCH_RESOLUTION: 197266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("\n Switch snapshot resolution to %dx%d\n", 197366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin dimension_tbl[action_param].width, 197466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin dimension_tbl[action_param].height); 197566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin snap_dim.width = dimension_tbl[action_param].width; 197666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin snap_dim.height = dimension_tbl[action_param].height; 197766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 197866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 197966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case ACTION_START_RECORDING: 198066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin LOGD("Start recording action\n"); 198166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#if 0 198266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin if (mm_app_start_video(cam_id) < 0) 198366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin goto ERROR; 198466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin is_rec = 1; 198566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#endif 198666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 198766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case ACTION_STOP_RECORDING: 198866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin LOGD("Stop recording action\n"); 198966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#if 0 199066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin if(is_rec) { 199166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin if (mm_app_stop_video(cam_id) < 0) 199266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin goto ERROR; 199366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin is_rec = 0; 199466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } 199566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#endif 199666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 199766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case ACTION_TAKE_LIVE_SNAPSHOT: 199866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("Selection for live shot\n"); 199966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#if 0 200066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin if(is_rec) 200166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin mm_app_take_live_snapshot(cam_id); 200266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin else 200366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("\n !!! Use live snapshot option while recording only !!!\n"); 200466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#endif 200566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 200666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 200766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case ACTION_TOGGLE_WNR: 200866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin wnr_enabled = !wnr_enabled; 200966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("WNR Enabled = %d\n", wnr_enabled); 201066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin rc = mm_camera_lib_send_command(&lib_handle, 201166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin MM_CAMERA_LIB_WNR_ENABLE, 201266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin &wnr_enabled, 201366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin NULL); 201466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin if (rc != MM_CAMERA_OK) { 201566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin LOGE("mm_camera_lib_send_command() err=%d\n", rc); 201666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin goto ERROR; 201766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } 201866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 201966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 202066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case ACTION_EXIT: 202166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("Exiting....\n"); 202266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 202366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin case ACTION_NO_ACTION: 202466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("Go back to main menu"); 202566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 202666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 202766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin default: 202866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin printf("\n\n!!!!!WRONG INPUT: %d!!!!\n", action_id); 202966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin break; 203066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } 203166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 203266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin usleep(1000 * 1000); 203366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin LOGD("action_id = %d\n", action_id); 203466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 203566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin } while (action_id != ACTION_EXIT); 203666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin action_id = ACTION_NO_ACTION; 203766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 203866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin mm_camera_lib_close(&lib_handle); 203966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin return 0; 204066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 204166f9976540f830b0090ff2ca557b0364a53f2008Patrick TjinERROR: 204266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 204366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin mm_camera_lib_close(&lib_handle); 204466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 204566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin return rc; 204666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} 204766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin 2048