| /* Copyright (c) 2013, The Linux Foundation. All rights reserved. |
| * |
| * Redistribution and use in source and binary forms, with or without |
| * modification, are permitted provided that the following conditions are |
| * met: |
| * * Redistributions of source code must retain the above copyright |
| * notice, this list of conditions and the following disclaimer. |
| * * Redistributions in binary form must reproduce the above |
| * copyright notice, this list of conditions and the following |
| * disclaimer in the documentation and/or other materials provided |
| * with the distribution. |
| * * Neither the name of The Linux Foundation nor the names of its |
| * contributors may be used to endorse or promote products derived |
| * from this software without specific prior written permission. |
| * |
| * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED |
| * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF |
| * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT |
| * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS |
| * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
| * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
| * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR |
| * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, |
| * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE |
| * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN |
| * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| * |
| */ |
| |
| #include <stdio.h> |
| #include <string.h> |
| #include <unistd.h> |
| #include <stdlib.h> |
| #include <ctype.h> |
| #include <inttypes.h> |
| |
| #include "mm_qcamera_main_menu.h" |
| #include "mm_qcamera_app.h" |
| #include "mm_qcamera_dbg.h" |
| #include "mm_qcamera_socket.h" |
| |
| /*=========================================================================== |
| * Macro |
| *===========================================================================*/ |
| #define MIN(X,Y) ((X) < (Y) ? (X) : (Y)) |
| #define VIDEO_BUFFER_SIZE (PREVIEW_WIDTH * PREVIEW_HEIGHT * 3/2) |
| #define THUMBNAIL_BUFFER_SIZE (THUMBNAIL_WIDTH * THUMBNAIL_HEIGHT * 3/2) |
| #define SNAPSHOT_BUFFER_SIZE (PICTURE_WIDTH * PICTURE_HEIGHT * 3/2) |
| //TODO:check this Macros with current app. |
| |
| /*=========================================================================== |
| * Defines |
| *===========================================================================*/ |
| //#define VIDEO_FRAMES_NUM 4 |
| #define THUMBNAIL_FRAMES_NUM 1 |
| #define SNAPSHOT_FRAMES_NUM 1 |
| #define MAX_NUM_FORMAT 32 |
| #define ZOOM_STEP 2 |
| #define ZOOM_MIN_VALUE 0 |
| #define EXPOSURE_COMPENSATION_MAXIMUM_NUMERATOR 12 |
| #define EXPOSURE_COMPENSATION_MINIMUM_NUMERATOR -12 |
| #define EXPOSURE_COMPENSATION_DEFAULT_NUMERATOR 0 |
| #define EXPOSURE_COMPENSATION_DENOMINATOR 6 |
| |
| //TODO: find correct values of Contrast defines. |
| #define CAMERA_MIN_CONTRAST 0 |
| #define CAMERA_DEF_CONTRAST 5 |
| #define CAMERA_MAX_CONTRAST 10 |
| #define CAMERA_CONTRAST_STEP 1 |
| |
| //TODO: find correct values of Brightness defines. |
| #define CAMERA_MIN_BRIGHTNESS 0 |
| #define CAMERA_DEF_BRIGHTNESS 3 |
| #define CAMERA_MAX_BRIGHTNESS 6 |
| #define CAMERA_BRIGHTNESS_STEP 1 |
| |
| //TODO: find correct values of Saturation defines. |
| #define CAMERA_MIN_SATURATION 0 |
| #define CAMERA_DEF_SATURATION 5 |
| #define CAMERA_MAX_SATURATION 10 |
| #define CAMERA_SATURATION_STEP 1 |
| |
| #define CAMERA_MIN_SHARPNESS 0 |
| #define CAMERA_MAX_SHARPNESS 10 |
| #define CAMERA_DEF_SHARPNESS 5 |
| #define CAMERA_SHARPNESS_STEP 1 |
| |
| const CAMERA_MAIN_MENU_TBL_T camera_main_menu_tbl[] = { |
| {START_PREVIEW, "Start preview"}, |
| {STOP_PREVIEW, "Stop preview/video"}, |
| {SET_WHITE_BALANCE, "Set white balance mode"}, |
| {SET_TINTLESS_ENABLE, "Set Tintless Enable"}, |
| {SET_TINTLESS_DISABLE, "Set Tintless Disable"}, |
| {SET_EXP_METERING, "Set exposure metering mode"}, |
| {GET_CTRL_VALUE, "Get control value menu"}, |
| {TOGGLE_AFR, "Toggle auto frame rate. Default fixed frame rate"}, |
| {SET_ISO, "ISO changes."}, |
| {BRIGHTNESS_GOTO_SUBMENU, "Brightness changes."}, |
| {CONTRAST_GOTO_SUBMENU, "Contrast changes."}, |
| {EV_GOTO_SUBMENU, "EV changes."}, |
| {SATURATION_GOTO_SUBMENU, "Saturation changes."}, |
| {SET_ZOOM, "Set Digital Zoom."}, |
| {SET_SHARPNESS, "Set Sharpness."}, |
| {TAKE_JPEG_SNAPSHOT, "Take a snapshot"}, |
| {START_RECORDING, "Start RECORDING"}, |
| {STOP_RECORDING, "Stop RECORDING"}, |
| {BEST_SHOT, "Set best-shot mode"}, |
| {LIVE_SHOT, "Take a live snapshot"}, |
| {FLASH_MODES, "Set Flash modes"}, |
| {TOGGLE_ZSL, "Toggle ZSL On/Off"}, |
| {TAKE_RAW_SNAPSHOT, "Take RAW snapshot"}, |
| {SWITCH_SNAP_RESOLUTION, "Select Jpeg resolution"}, |
| {TOGGLE_WNR, "Toggle Wavelet Denoise"}, |
| {EXIT, "Exit"} |
| }; |
| |
| CAMERA_SENSOR_MENU_TLB_T sensor_tbl[] = { |
| {"Primary Camera", 0}, |
| {"Secondary Camera", 0}, |
| {"Camera Sensor 3", 0}, |
| {"Camera Sensor 4", 0} |
| }; |
| |
| const CAMERA_BRIGHTNESS_TBL_T brightness_change_tbl[] = { |
| {INC_BRIGHTNESS, "Increase Brightness by one step."}, |
| {DEC_BRIGHTNESS, "Decrease Brightness by one step."}, |
| }; |
| |
| const CAMERA_CONTRST_TBL_T contrast_change_tbl[] = { |
| {INC_CONTRAST, "Increase Contrast by one step."}, |
| {DEC_CONTRAST, "Decrease Contrast by one step."}, |
| }; |
| |
| const CAMERA_EV_TBL_T camera_EV_tbl[] = { |
| {INCREASE_EV, "Increase EV by one step."}, |
| {DECREASE_EV, "Decrease EV by one step."}, |
| }; |
| |
| const CAMERA_SATURATION_TBL_T camera_saturation_tbl[] = { |
| {INC_SATURATION, "Increase Satuation by one step."}, |
| {DEC_SATURATION, "Decrease Satuation by one step."}, |
| }; |
| |
| const CAMERA_SHARPNESS_TBL_T camera_sharpness_tbl[] = { |
| {INC_SHARPNESS, "Increase Sharpness."}, |
| {DEC_SHARPNESS, "Decrease Sharpness."}, |
| }; |
| |
| const WHITE_BALANCE_TBL_T white_balance_tbl[] = { |
| { WB_AUTO, "White Balance - Auto"}, |
| { WB_INCANDESCENT, "White Balance - Incandescent"}, |
| { WB_FLUORESCENT, "White Balance - Fluorescent"}, |
| { WB_WARM_FLUORESCENT, "White Balance - Warm Fluorescent"}, |
| { WB_DAYLIGHT, "White Balance - Daylight"}, |
| { WB_CLOUDY_DAYLIGHT, "White Balance - Cloudy Daylight"}, |
| { WB_TWILIGHT, "White Balance - Twilight"}, |
| { WB_SHADE, "White Balance - Shade"}, |
| }; |
| |
| const GET_CTRL_TBL_T get_ctrl_tbl[] = { |
| { WHITE_BALANCE_STATE, "Get white balance state (auto/off)"}, |
| { WHITE_BALANCE_TEMPERATURE, "Get white balance temperature"}, |
| { BRIGHTNESS_CTRL, "Get brightness value"}, |
| { EV, "Get exposure value"}, |
| { CONTRAST_CTRL, "Get contrast value"}, |
| { SATURATION_CTRL, "Get saturation value"}, |
| { SHARPNESS_CTRL, "Get sharpness value"}, |
| }; |
| |
| const EXP_METERING_TBL_T exp_metering_tbl[] = { |
| { AUTO_EXP_FRAME_AVG, "Exposure Metering - Frame Average"}, |
| { AUTO_EXP_CENTER_WEIGHTED, "Exposure Metering - Center Weighted"}, |
| { AUTO_EXP_SPOT_METERING, "Exposure Metering - Spot Metering"}, |
| { AUTO_EXP_SMART_METERING, "Exposure Metering - Smart Metering"}, |
| { AUTO_EXP_USER_METERING, "Exposure Metering - User Metering"}, |
| { AUTO_EXP_SPOT_METERING_ADV, "Exposure Metering - Spot Metering Adv"}, |
| { AUTO_EXP_CENTER_WEIGHTED_ADV,"Exposure Metering - Center Weighted Adv"}, |
| }; |
| |
| const ISO_TBL_T iso_tbl[] = { |
| { ISO_AUTO, "ISO: Auto"}, |
| { ISO_DEBLUR, "ISO: Deblur"}, |
| { ISO_100, "ISO: 100"}, |
| { ISO_200, "ISO: 200"}, |
| { ISO_400, "ISO: 400"}, |
| { ISO_800, "ISO: 800"}, |
| { ISO_1600, "ISO: 1600"}, |
| }; |
| |
| const ZOOM_TBL_T zoom_tbl[] = { |
| { ZOOM_IN, "Zoom In one step"}, |
| { ZOOM_OUT, "Zoom Out one step"}, |
| }; |
| |
| const BESTSHOT_MODE_TBT_T bestshot_mode_tbl[] = { |
| {BESTSHOT_AUTO, "Bestshot Mode: Auto"}, |
| {BESTSHOT_ACTION, "Bestshot Mode: Action"}, |
| {BESTSHOT_PORTRAIT, "Bestshot Mode: Portrait"}, |
| {BESTSHOT_LANDSCAPE, "Bestshot Mode: Landscape"}, |
| {BESTSHOT_NIGHT, "Bestshot Mode: Night"}, |
| {BESTSHOT_NIGHT_PORTRAIT, "Bestshot Mode: Night Portrait"}, |
| {BESTSHOT_THEATRE, "Bestshot Mode: Theatre"}, |
| {BESTSHOT_BEACH, "Bestshot Mode: Beach"}, |
| {BESTSHOT_SNOW, "Bestshot Mode: Snow"}, |
| {BESTSHOT_SUNSET, "Bestshot Mode: Sunset"}, |
| {BESTSHOT_ANTISHAKE, "Bestshot Mode: Antishake"}, |
| {BESTSHOT_FIREWORKS, "Bestshot Mode: Fireworks"}, |
| {BESTSHOT_SPORTS, "Bestshot Mode: Sports"}, |
| {BESTSHOT_PARTY, "Bestshot Mode: Party"}, |
| {BESTSHOT_CANDLELIGHT, "Bestshot Mode: Candlelight"}, |
| {BESTSHOT_ASD, "Bestshot Mode: ASD"}, |
| {BESTSHOT_BACKLIGHT, "Bestshot Mode: Backlight"}, |
| {BESTSHOT_FLOWERS, "Bestshot Mode: Flowers"}, |
| {BESTSHOT_AR, "Bestshot Mode: Augmented Reality"}, |
| {BESTSHOT_HDR, "Bestshot Mode: HDR"}, |
| }; |
| |
| const FLASH_MODE_TBL_T flashmodes_tbl[] = { |
| { FLASH_MODE_OFF, "Flash Mode Off"}, |
| { FLASH_MODE_AUTO, "Flash Mode Auto"}, |
| { FLASH_MODE_ON, "Flash Mode On"}, |
| { FLASH_MODE_TORCH, "Flash Mode Torch"}, |
| }; |
| |
| DIMENSION_TBL_T dimension_tbl[] = { |
| {VGA_WIDTH, VGA_HEIGHT, "VGA", "Size: VGA <640x480>" , 0}, |
| {MP1_WIDTH, MP1_HEIGHT, "1MP", "Size: 1MP <1280x960>" , 0}, |
| {MP5_WIDTH, MP5_HEIGHT, "5MP", "Size: 5MP <2592x1944>", 0}, |
| {MP8_WIDTH, MP8_HEIGHT, "8MP", "Size: 8MP <3264x2448>", 0}, |
| {MP12_WIDTH, MP12_HEIGHT, "12MP", "Size: 12MP <4000x3000>", 0}, |
| }; |
| |
| /*=========================================================================== |
| * Forward declarations |
| *===========================================================================*/ |
| //static void system_dimension_set(mm_camera_test_obj_t *test_obj); |
| /*=========================================================================== |
| * Static global variables |
| *===========================================================================*/ |
| USER_INPUT_DISPLAY_T input_display; |
| int preview_video_resolution_flag = 0; |
| |
| //TODO: default values. |
| #if 1 |
| int brightness = CAMERA_DEF_BRIGHTNESS; |
| int contrast = CAMERA_DEF_CONTRAST; |
| int saturation = CAMERA_DEF_SATURATION; |
| int sharpness = CAMERA_DEF_SHARPNESS; |
| #else |
| int brightness = 0; |
| int contrast = 0; |
| int saturation = 0; |
| int sharpness = 0; |
| #endif |
| //TODO: find new method to calculate ev. |
| //int32_t ev_numerator = EXPOSURE_COMPENSATION_DEFAULT_NUMERATOR; |
| |
| //TODO: |
| //fps_mode_t fps_mode = FPS_MODE_FIXED; |
| int zoom_level; |
| int zoom_max_value; |
| int cam_id; |
| int is_rec = 0; |
| |
| |
| static int submain(); |
| |
| /*=========================================================================== |
| * FUNCTION - keypress_to_event - |
| * |
| * DESCRIPTION: |
| *==========================================================================*/ |
| int keypress_to_event(char keypress) |
| { |
| char out_buf = INVALID_KEY_PRESS; |
| if ((keypress >= 'A' && keypress <= 'Z') || |
| (keypress >= 'a' && keypress <= 'z')) { |
| out_buf = tolower(keypress); |
| out_buf = out_buf - 'a'; |
| } else if (keypress >= '0' && keypress <= '9') { |
| out_buf = keypress - '0'; |
| } |
| return out_buf; |
| } |
| |
| int next_menu(menu_id_change_t current_menu_id, char keypress, camera_action_t * action_id_ptr, int * action_param) |
| { |
| char output_to_event; |
| menu_id_change_t next_menu_id = MENU_ID_INVALID; |
| * action_id_ptr = ACTION_NO_ACTION; |
| |
| output_to_event = keypress_to_event(keypress); |
| CDBG("current_menu_id=%d\n",current_menu_id); |
| printf("output_to_event=%d\n",output_to_event); |
| switch(current_menu_id) { |
| case MENU_ID_MAIN: |
| switch(output_to_event) { |
| case START_PREVIEW: |
| * action_id_ptr = ACTION_START_PREVIEW; |
| CDBG("START_PREVIEW\n"); |
| break; |
| case STOP_PREVIEW: |
| * action_id_ptr = ACTION_STOP_PREVIEW; |
| CDBG("STOP_PREVIEW\n"); |
| break; |
| |
| case SET_WHITE_BALANCE: |
| next_menu_id = MENU_ID_WHITEBALANCECHANGE; |
| CDBG("next_menu_id = MENU_ID_WHITEBALANCECHANGE = %d\n", next_menu_id); |
| break; |
| |
| case SET_TINTLESS_ENABLE: |
| * action_id_ptr = ACTION_SET_TINTLESS_ENABLE; |
| next_menu_id = MENU_ID_MAIN; |
| CDBG("next_menu_id = MENU_ID_TINTLESSENABLE = %d\n", next_menu_id); |
| break; |
| |
| case SET_TINTLESS_DISABLE: |
| * action_id_ptr = ACTION_SET_TINTLESS_DISABLE; |
| next_menu_id = MENU_ID_MAIN; |
| CDBG("next_menu_id = MENU_ID_TINTLESSDISABLE = %d\n", next_menu_id); |
| break; |
| |
| case SET_EXP_METERING: |
| next_menu_id = MENU_ID_EXPMETERINGCHANGE; |
| CDBG("next_menu_id = MENU_ID_EXPMETERINGCHANGE = %d\n", next_menu_id); |
| break; |
| |
| case GET_CTRL_VALUE: |
| next_menu_id = MENU_ID_GET_CTRL_VALUE; |
| CDBG("next_menu_id = MENU_ID_GET_CTRL_VALUE = %d\n", next_menu_id); |
| break; |
| |
| case BRIGHTNESS_GOTO_SUBMENU: |
| next_menu_id = MENU_ID_BRIGHTNESSCHANGE; |
| CDBG("next_menu_id = MENU_ID_BRIGHTNESSCHANGE = %d\n", next_menu_id); |
| break; |
| |
| case CONTRAST_GOTO_SUBMENU: |
| next_menu_id = MENU_ID_CONTRASTCHANGE; |
| break; |
| |
| case EV_GOTO_SUBMENU: |
| next_menu_id = MENU_ID_EVCHANGE; |
| break; |
| |
| case SATURATION_GOTO_SUBMENU: |
| next_menu_id = MENU_ID_SATURATIONCHANGE; |
| break; |
| |
| case TOGGLE_AFR: |
| * action_id_ptr = ACTION_TOGGLE_AFR; |
| CDBG("next_menu_id = MENU_ID_TOGGLEAFR = %d\n", next_menu_id); |
| break; |
| |
| case SET_ISO: |
| next_menu_id = MENU_ID_ISOCHANGE; |
| CDBG("next_menu_id = MENU_ID_ISOCHANGE = %d\n", next_menu_id); |
| break; |
| |
| case SET_ZOOM: |
| next_menu_id = MENU_ID_ZOOMCHANGE; |
| CDBG("next_menu_id = MENU_ID_ZOOMCHANGE = %d\n", next_menu_id); |
| break; |
| |
| case BEST_SHOT: |
| next_menu_id = MENU_ID_BESTSHOT; |
| CDBG("next_menu_id = MENU_ID_BESTSHOT = %d\n", next_menu_id); |
| break; |
| |
| case LIVE_SHOT: |
| * action_id_ptr = ACTION_TAKE_LIVE_SNAPSHOT; |
| CDBG("\nTaking Live snapshot\n"); |
| break; |
| |
| case FLASH_MODES: |
| next_menu_id = MENU_ID_FLASHMODE; |
| CDBG("next_menu_id = MENU_ID_FLASHMODE = %d\n", next_menu_id); |
| break; |
| |
| case SET_SHARPNESS: |
| next_menu_id = MENU_ID_SHARPNESSCHANGE; |
| CDBG("next_menu_id = MENU_ID_SHARPNESSCHANGE = %d\n", next_menu_id); |
| break; |
| |
| case SWITCH_SNAP_RESOLUTION: |
| next_menu_id = MENU_ID_SWITCH_RES; |
| CDBG("next_menu_id = MENU_ID_SWITCH_RES = %d\n", next_menu_id); |
| break; |
| |
| case TAKE_JPEG_SNAPSHOT: |
| * action_id_ptr = ACTION_TAKE_JPEG_SNAPSHOT; |
| printf("\n Taking JPEG snapshot\n"); |
| break; |
| |
| case START_RECORDING: |
| * action_id_ptr = ACTION_START_RECORDING; |
| CDBG("Start recording\n"); |
| break; |
| case STOP_RECORDING: |
| * action_id_ptr = ACTION_STOP_RECORDING; |
| CDBG("Stop recording\n"); |
| break; |
| case TOGGLE_ZSL: |
| * action_id_ptr = ACTION_TOGGLE_ZSL; |
| CDBG("Toggle ZSL\n"); |
| break; |
| case TAKE_RAW_SNAPSHOT: |
| * action_id_ptr = ACTION_TAKE_RAW_SNAPSHOT; |
| next_menu_id = MENU_ID_MAIN; |
| CDBG("Capture RAW\n"); |
| break; |
| case TOGGLE_WNR: |
| * action_id_ptr = ACTION_TOGGLE_WNR; |
| next_menu_id = MENU_ID_MAIN; |
| CDBG("Toggle WNR"); |
| break; |
| case EXIT: |
| * action_id_ptr = ACTION_EXIT; |
| CDBG("Exit \n"); |
| break; |
| default: |
| next_menu_id = MENU_ID_MAIN; |
| CDBG("next_menu_id = MENU_ID_MAIN = %d\n", next_menu_id); |
| break; |
| } |
| break; |
| |
| case MENU_ID_SWITCH_RES: |
| printf("MENU_ID_SWITCH_RES\n"); |
| *action_id_ptr = ACTION_SWITCH_RESOLUTION; |
| *action_param = output_to_event; |
| int available_sizes = sizeof(dimension_tbl)/sizeof(dimension_tbl[0]); |
| if ( ( *action_param >= 0 ) && |
| ( *action_param < available_sizes ) && |
| ( dimension_tbl[*action_param].supported )) { |
| next_menu_id = MENU_ID_MAIN; |
| } |
| else { |
| next_menu_id = current_menu_id; |
| } |
| break; |
| |
| case MENU_ID_SENSORS: |
| next_menu_id = MENU_ID_MAIN; |
| *action_id_ptr = ACTION_SWITCH_CAMERA; |
| *action_param = output_to_event; |
| break; |
| |
| case MENU_ID_WHITEBALANCECHANGE: |
| printf("MENU_ID_WHITEBALANCECHANGE\n"); |
| if (output_to_event >= WB_MAX) { |
| next_menu_id = current_menu_id; |
| * action_id_ptr = ACTION_NO_ACTION; |
| } else { |
| next_menu_id = MENU_ID_MAIN; |
| * action_id_ptr = ACTION_SET_WHITE_BALANCE; |
| * action_param = output_to_event; |
| } |
| break; |
| |
| case MENU_ID_EXPMETERINGCHANGE: |
| printf("MENU_ID_EXPMETERINGCHANGE\n"); |
| if (output_to_event >= AUTO_EXP_MAX) { |
| next_menu_id = current_menu_id; |
| * action_id_ptr = ACTION_NO_ACTION; |
| } else { |
| next_menu_id = MENU_ID_MAIN; |
| * action_id_ptr = ACTION_SET_EXP_METERING; |
| * action_param = output_to_event; |
| } |
| break; |
| |
| case MENU_ID_GET_CTRL_VALUE: |
| printf("MENU_ID_GET_CTRL_VALUE\n"); |
| * action_id_ptr = ACTION_GET_CTRL_VALUE; |
| if (output_to_event > 0 && |
| output_to_event <= sizeof(get_ctrl_tbl)/sizeof(get_ctrl_tbl[0])) { |
| next_menu_id = MENU_ID_MAIN; |
| * action_param = output_to_event; |
| } |
| else { |
| next_menu_id = current_menu_id; |
| } |
| break; |
| |
| case MENU_ID_BRIGHTNESSCHANGE: |
| switch (output_to_event) { |
| case INC_BRIGHTNESS: |
| * action_id_ptr = ACTION_BRIGHTNESS_INCREASE; |
| next_menu_id = MENU_ID_MAIN; |
| break; |
| |
| case DEC_BRIGHTNESS: |
| * action_id_ptr = ACTION_BRIGHTNESS_DECREASE; |
| next_menu_id = MENU_ID_MAIN; |
| break; |
| |
| default: |
| next_menu_id = MENU_ID_BRIGHTNESSCHANGE; |
| break; |
| } |
| break; |
| |
| case MENU_ID_CONTRASTCHANGE: |
| switch (output_to_event) { |
| case INC_CONTRAST: |
| * action_id_ptr = ACTION_CONTRAST_INCREASE; |
| next_menu_id = MENU_ID_MAIN; |
| break; |
| |
| case DEC_CONTRAST: |
| * action_id_ptr = ACTION_CONTRAST_DECREASE; |
| next_menu_id = MENU_ID_MAIN; |
| break; |
| |
| default: |
| next_menu_id = MENU_ID_CONTRASTCHANGE; |
| break; |
| } |
| break; |
| |
| case MENU_ID_EVCHANGE: |
| switch (output_to_event) { |
| case INCREASE_EV: |
| * action_id_ptr = ACTION_EV_INCREASE; |
| next_menu_id = MENU_ID_MAIN; |
| break; |
| |
| case DECREASE_EV: |
| * action_id_ptr = ACTION_EV_DECREASE; |
| next_menu_id = MENU_ID_MAIN; |
| break; |
| |
| default: |
| next_menu_id = MENU_ID_EVCHANGE; |
| break; |
| } |
| break; |
| |
| case MENU_ID_SATURATIONCHANGE: |
| switch (output_to_event) { |
| case INC_SATURATION: |
| * action_id_ptr = ACTION_SATURATION_INCREASE; |
| next_menu_id = MENU_ID_MAIN; |
| break; |
| |
| case DEC_SATURATION: |
| * action_id_ptr = ACTION_SATURATION_DECREASE; |
| next_menu_id = MENU_ID_MAIN; |
| break; |
| |
| default: |
| next_menu_id = MENU_ID_EVCHANGE; |
| break; |
| } |
| break; |
| |
| case MENU_ID_ISOCHANGE: |
| printf("MENU_ID_ISOCHANGE\n"); |
| if (output_to_event >= ISO_MAX) { |
| next_menu_id = current_menu_id; |
| * action_id_ptr = ACTION_NO_ACTION; |
| } else { |
| next_menu_id = MENU_ID_MAIN; |
| * action_id_ptr = ACTION_SET_ISO; |
| * action_param = output_to_event; |
| } |
| break; |
| |
| case MENU_ID_ZOOMCHANGE: |
| * action_id_ptr = ACTION_SET_ZOOM; |
| if (output_to_event > 0 && |
| output_to_event <= sizeof(zoom_tbl)/sizeof(zoom_tbl[0])) { |
| next_menu_id = MENU_ID_MAIN; |
| * action_param = output_to_event; |
| } else { |
| next_menu_id = current_menu_id; |
| } |
| break; |
| |
| case MENU_ID_SHARPNESSCHANGE: |
| switch (output_to_event) { |
| case INC_SHARPNESS: |
| * action_id_ptr = ACTION_SHARPNESS_INCREASE; |
| next_menu_id = MENU_ID_MAIN; |
| break; |
| case DEC_SHARPNESS: |
| * action_id_ptr = ACTION_SHARPNESS_DECREASE; |
| next_menu_id = MENU_ID_MAIN; |
| break; |
| default: |
| next_menu_id = MENU_ID_SHARPNESSCHANGE; |
| break; |
| } |
| break; |
| |
| case MENU_ID_BESTSHOT: |
| if (output_to_event >= BESTSHOT_MAX) { |
| next_menu_id = current_menu_id; |
| * action_id_ptr = ACTION_NO_ACTION; |
| } else { |
| next_menu_id = MENU_ID_MAIN; |
| * action_id_ptr = ACTION_SET_BESTSHOT_MODE; |
| * action_param = output_to_event; |
| } |
| break; |
| |
| case MENU_ID_FLASHMODE: |
| if (output_to_event >= FLASH_MODE_MAX) { |
| next_menu_id = current_menu_id; |
| * action_id_ptr = ACTION_NO_ACTION; |
| } else { |
| next_menu_id = MENU_ID_MAIN; |
| * action_id_ptr = ACTION_SET_FLASH_MODE; |
| * action_param = output_to_event; |
| } |
| break; |
| |
| default: |
| CDBG("menu id is wrong: %d\n", current_menu_id); |
| break; |
| } |
| |
| return next_menu_id; |
| } |
| |
| /*=========================================================================== |
| * FUNCTION - print_menu_preview_video - |
| * |
| * DESCRIPTION: |
| * ===========================================================================*/ |
| static void print_menu_preview_video(void) { |
| unsigned int i; |
| if (!is_rec) { |
| printf("\n"); |
| printf("===========================================\n"); |
| printf(" Camera is in preview/video mode now \n"); |
| printf("===========================================\n\n"); |
| } else { |
| printf("\n"); |
| printf("===========================================\n"); |
| printf(" Camera is in RECORDING mode now \n"); |
| printf(" Press 'Q' To Stop Recording \n"); |
| printf(" Press 'S' To Take Live Snapshot \n"); |
| printf("===========================================\n\n"); |
| } |
| char menuNum = 'A'; |
| for (i = 0; i < sizeof(camera_main_menu_tbl)/sizeof(camera_main_menu_tbl[0]); i++) { |
| if (i == BASE_OFFSET) { |
| menuNum = '1'; |
| } |
| |
| printf("%c. %s\n", menuNum, camera_main_menu_tbl[i].menu_name); |
| menuNum++; |
| } |
| |
| printf("\nPlease enter your choice: "); |
| |
| return; |
| } |
| |
| static void camera_preview_video_wb_change_tbl(void) { |
| unsigned int i; |
| printf("\n"); |
| printf("==========================================================\n"); |
| printf(" Camera is in white balance change mode \n"); |
| printf("==========================================================\n\n"); |
| |
| char submenuNum = 'A'; |
| for (i = 0 ; i < sizeof(white_balance_tbl) / |
| sizeof(white_balance_tbl[0]); i++) { |
| printf("%c. %s\n", submenuNum, white_balance_tbl[i].wb_name); |
| submenuNum++; |
| } |
| printf("\nPlease enter your choice for White Balance modes: "); |
| return; |
| } |
| |
| static void camera_preview_video_get_ctrl_value_tbl(void) { |
| unsigned int i; |
| printf("\n"); |
| printf("==========================================================\n"); |
| printf(" Camera is in get control value mode \n"); |
| printf("==========================================================\n\n"); |
| |
| char submenuNum = 'A'; |
| for (i = 0 ; i < sizeof(get_ctrl_tbl) / |
| sizeof(get_ctrl_tbl[0]); i++) { |
| printf("%c. %s\n", submenuNum, get_ctrl_tbl[i].get_ctrl_name); |
| submenuNum++; |
| } |
| printf("\nPlease enter your choice for control value you want to get: "); |
| return; |
| } |
| |
| static void camera_preview_video_exp_metering_change_tbl(void) { |
| unsigned int i; |
| printf("\n"); |
| printf("==========================================================\n"); |
| printf(" Camera is in exposure metering change mode \n"); |
| printf("==========================================================\n\n"); |
| |
| char submenuNum = 'A'; |
| for (i = 0 ; i < sizeof(exp_metering_tbl) / |
| sizeof(exp_metering_tbl[0]); i++) { |
| printf("%c. %s\n", submenuNum, exp_metering_tbl[i].exp_metering_name); |
| submenuNum++; |
| } |
| printf("\nPlease enter your choice for exposure metering modes: "); |
| return; |
| } |
| |
| static void camera_contrast_change_tbl(void) { |
| unsigned int i; |
| |
| printf("\n"); |
| printf("==========================================================\n"); |
| printf(" Camera is in change contrast resolution mode \n"); |
| printf("==========================================================\n\n"); |
| |
| char contrastmenuNum = 'A'; |
| for (i = 0; i < sizeof(contrast_change_tbl) / |
| sizeof(contrast_change_tbl[0]); i++) { |
| printf("%c. %s\n", contrastmenuNum, |
| contrast_change_tbl[i].contrast_name); |
| contrastmenuNum++; |
| } |
| |
| printf("\nPlease enter your choice for contrast Change: "); |
| return; |
| } |
| |
| static void camera_EV_change_tbl(void) { |
| unsigned int i; |
| |
| printf("\n"); |
| printf("===========================================\n"); |
| printf(" Camera is in EV change mode now \n"); |
| printf("===========================================\n\n"); |
| |
| char submenuNum = 'A'; |
| for (i = 0; i < sizeof(camera_EV_tbl)/sizeof(camera_EV_tbl[0]); i++) { |
| printf("%c. %s\n", submenuNum, camera_EV_tbl[i].EV_name); |
| submenuNum++; |
| } |
| |
| printf("\nPlease enter your choice for EV changes: "); |
| return; |
| } |
| |
| static void camera_resolution_change_tbl(void) { |
| unsigned int i; |
| |
| printf("\n"); |
| printf("==========================================================\n"); |
| printf(" Camera is in snapshot resolution mode \n"); |
| printf("==========================================================\n\n"); |
| |
| for (i = 0; i < sizeof(dimension_tbl) / |
| sizeof(dimension_tbl[0]); i++) { |
| if ( dimension_tbl[i].supported ) { |
| printf("%d. %s\n", i, |
| dimension_tbl[i].str_name); |
| } |
| } |
| |
| printf("\nPlease enter your choice for Resolution: "); |
| return; |
| } |
| |
| static void camera_preview_video_zoom_change_tbl(void) { |
| unsigned int i; |
| zoom_max_value = MAX_ZOOMS_CNT; |
| printf("\nCurrent Zoom Value = %d ,Max Zoom Value = %d\n",zoom_level,zoom_max_value); |
| char submenuNum = 'A'; |
| for (i = 0 ; i < sizeof(zoom_tbl) / |
| sizeof(zoom_tbl[0]); i++) { |
| printf("%c. %s\n", submenuNum, zoom_tbl[i].zoom_direction_name); |
| submenuNum++; |
| } |
| printf("\nPlease enter your choice for zoom change direction: "); |
| return; |
| } |
| |
| static void camera_brightness_change_tbl(void) { |
| unsigned int i; |
| |
| printf("\n"); |
| printf("==========================================================\n"); |
| printf(" Camera is in change brightness mode \n"); |
| printf("==========================================================\n\n"); |
| |
| char brightnessmenuNum = 'A'; |
| for (i = 0; i < sizeof(brightness_change_tbl) / |
| sizeof(brightness_change_tbl[0]); i++) { |
| printf("%c. %s\n", brightnessmenuNum, |
| brightness_change_tbl[i].brightness_name); |
| brightnessmenuNum++; |
| } |
| |
| printf("\nPlease enter your choice for Brightness Change: "); |
| return; |
| } |
| |
| static void camera_saturation_change_tbl(void) { |
| unsigned int i; |
| |
| printf("\n"); |
| printf("==========================================================\n"); |
| printf(" Camera is in change saturation mode \n"); |
| printf("==========================================================\n\n"); |
| |
| char saturationmenuNum = 'A'; |
| for (i = 0; i < sizeof(camera_saturation_tbl) / |
| sizeof(camera_saturation_tbl[0]); i++) { |
| printf("%c. %s\n", saturationmenuNum, |
| camera_saturation_tbl[i].saturation_name); |
| saturationmenuNum++; |
| } |
| |
| printf("\nPlease enter your choice for Saturation Change: "); |
| return; |
| } |
| |
| static void camera_preview_video_iso_change_tbl(void) { |
| unsigned int i; |
| printf("\n"); |
| printf("==========================================================\n"); |
| printf(" Camera is in ISO change mode \n"); |
| printf("==========================================================\n\n"); |
| |
| char submenuNum = 'A'; |
| for (i = 0 ; i < sizeof(iso_tbl) / |
| sizeof(iso_tbl[0]); i++) { |
| printf("%c. %s\n", submenuNum, iso_tbl[i].iso_modes_name); |
| submenuNum++; |
| } |
| printf("\nPlease enter your choice for iso modes: "); |
| return; |
| } |
| |
| static void camera_preview_video_sharpness_change_tbl(void) { |
| unsigned int i; |
| printf("\n"); |
| printf("==========================================================\n"); |
| printf(" Camera is in sharpness change mode \n"); |
| printf("==========================================================\n\n"); |
| |
| char submenuNum = 'A'; |
| for (i = 0 ; i < sizeof(camera_sharpness_tbl) / |
| sizeof(camera_sharpness_tbl[0]); i++) { |
| printf("%c. %s\n", submenuNum, camera_sharpness_tbl[i].sharpness_name); |
| submenuNum++; |
| } |
| printf("\nPlease enter your choice for sharpness modes: "); |
| return; |
| } |
| |
| static void camera_set_bestshot_tbl(void) |
| { |
| unsigned int i; |
| |
| printf("\n"); |
| printf("===========================================\n"); |
| printf(" Camera is in set besthot mode now \n"); |
| printf("===========================================\n\n"); |
| |
| |
| char bsmenuNum = 'A'; |
| for (i = 0; i < sizeof(bestshot_mode_tbl)/sizeof(bestshot_mode_tbl[0]); i++) { |
| printf("%c. %s\n", bsmenuNum, |
| bestshot_mode_tbl[i].name); |
| bsmenuNum++; |
| } |
| |
| printf("\nPlease enter your choice of Bestshot Mode: "); |
| return; |
| } |
| |
| static void camera_set_flashmode_tbl(void) |
| { |
| unsigned int i; |
| |
| printf("\n"); |
| printf("===========================================\n"); |
| printf(" Camera is in set flash mode now \n"); |
| printf("===========================================\n\n"); |
| |
| |
| char bsmenuNum = 'A'; |
| for (i = 0; i < sizeof(flashmodes_tbl)/sizeof(flashmodes_tbl[0]); i++) { |
| printf("%c. %s\n", bsmenuNum, |
| flashmodes_tbl[i].name); |
| bsmenuNum++; |
| } |
| |
| printf("\nPlease enter your choice of Bestshot Mode: "); |
| return; |
| } |
| |
| static void camera_sensors_tbl(void) |
| { |
| unsigned int i; |
| size_t available_sensors = sizeof(sensor_tbl)/sizeof(sensor_tbl[0]); |
| |
| printf("\n"); |
| printf("===========================================\n"); |
| printf(" Camera Sensor to be used: \n"); |
| printf("===========================================\n\n"); |
| |
| |
| char bsmenuNum = 'A'; |
| for (i = 0; ( i < available_sensors ) && ( sensor_tbl[i].present ) ; i++) { |
| printf("%c. %s\n", bsmenuNum, |
| sensor_tbl[i].menu_name); |
| bsmenuNum++; |
| } |
| |
| printf("\nPlease enter your choice for sensor: "); |
| return; |
| } |
| |
| /*=========================================================================== |
| * FUNCTION - increase_contrast - |
| * |
| * DESCRIPTION: |
| * ===========================================================================*/ |
| int increase_contrast (mm_camera_lib_handle *lib_handle) { |
| contrast += CAMERA_CONTRAST_STEP; |
| if (contrast > CAMERA_MAX_CONTRAST) { |
| contrast = CAMERA_MAX_CONTRAST; |
| printf("Reached max CONTRAST. \n"); |
| } |
| printf("Increase Contrast to %d\n", contrast); |
| return mm_camera_lib_send_command(lib_handle, |
| MM_CAMERA_LIB_CONTRAST, |
| &contrast, |
| NULL); |
| } |
| |
| /*=========================================================================== |
| * FUNCTION - decrease_contrast - |
| * |
| * DESCRIPTION: |
| * ===========================================================================*/ |
| int decrease_contrast (mm_camera_lib_handle *lib_handle) { |
| contrast -= CAMERA_CONTRAST_STEP; |
| if (contrast < CAMERA_MIN_CONTRAST) { |
| contrast = CAMERA_MIN_CONTRAST; |
| printf("Reached min CONTRAST. \n"); |
| } |
| printf("Decrease Contrast to %d\n", contrast); |
| return mm_camera_lib_send_command(lib_handle, |
| MM_CAMERA_LIB_CONTRAST, |
| &contrast, |
| NULL); |
| } |
| |
| /*=========================================================================== |
| * FUNCTION - decrease_brightness - |
| * |
| * DESCRIPTION: |
| * ===========================================================================*/ |
| int decrease_brightness (mm_camera_lib_handle *lib_handle) { |
| brightness -= CAMERA_BRIGHTNESS_STEP; |
| if (brightness < CAMERA_MIN_BRIGHTNESS) { |
| brightness = CAMERA_MIN_BRIGHTNESS; |
| printf("Reached min BRIGHTNESS. \n"); |
| } |
| printf("Decrease Brightness to %d\n", brightness); |
| return mm_camera_lib_send_command(lib_handle, |
| MM_CAMERA_LIB_BRIGHTNESS, |
| &brightness, |
| NULL); |
| } |
| |
| /*=========================================================================== |
| * FUNCTION - increase_brightness - |
| * |
| * DESCRIPTION: |
| * ===========================================================================*/ |
| int increase_brightness (mm_camera_lib_handle *lib_handle) { |
| brightness += CAMERA_BRIGHTNESS_STEP; |
| if (brightness > CAMERA_MAX_BRIGHTNESS) { |
| brightness = CAMERA_MAX_BRIGHTNESS; |
| printf("Reached max BRIGHTNESS. \n"); |
| } |
| printf("Increase Brightness to %d\n", brightness); |
| return mm_camera_lib_send_command(lib_handle, |
| MM_CAMERA_LIB_BRIGHTNESS, |
| &brightness, |
| NULL); |
| } |
| |
| /*=========================================================================== |
| * FUNCTION - increase_EV - |
| * |
| * DESCRIPTION: |
| * ===========================================================================*/ |
| |
| int increase_EV (void) { |
| #if 0 |
| int rc = 0; |
| int32_t value = 0; |
| rc = cam_config_is_parm_supported(cam_id, MM_CAMERA_PARM_EXPOSURE_COMPENSATION); |
| if(!rc) { |
| printf("MM_CAMERA_PARM_EXPOSURE_COMPENSATION mode is not supported for this sensor"); |
| return -1; |
| } |
| ev_numerator += 1; |
| if(ev_numerator >= EXPOSURE_COMPENSATION_MINIMUM_NUMERATOR && |
| ev_numerator <= EXPOSURE_COMPENSATION_MAXIMUM_NUMERATOR){ |
| int16_t numerator16 = (int16_t)(ev_numerator & 0x0000ffff); |
| uint16_t denominator16 = EXPOSURE_COMPENSATION_DENOMINATOR; |
| value = numerator16 << 16 | denominator16; |
| } else { |
| printf("Reached max EV.\n"); |
| } |
| return mm_app_set_config_parm(cam_id, MM_CAMERA_PARM_EXPOSURE_COMPENSATION, value); |
| #endif |
| return 0; |
| } |
| |
| /*=========================================================================== |
| * FUNCTION - decrease_EV - |
| * |
| * DESCRIPTION: |
| * ===========================================================================*/ |
| int decrease_EV (void) { |
| #if 0 |
| int rc = 0; |
| int32_t value = 0; |
| rc = cam_config_is_parm_supported(cam_id, MM_CAMERA_PARM_EXPOSURE_COMPENSATION); |
| if(!rc) { |
| printf("MM_CAMERA_PARM_EXPOSURE_COMPENSATION mode is not supported for this sensor"); |
| return -1; |
| } |
| ev_numerator -= 1; |
| if(ev_numerator >= EXPOSURE_COMPENSATION_MINIMUM_NUMERATOR && |
| ev_numerator <= EXPOSURE_COMPENSATION_MAXIMUM_NUMERATOR){ |
| int16_t numerator16 = (int16_t)(ev_numerator & 0x0000ffff); |
| uint16_t denominator16 = EXPOSURE_COMPENSATION_DENOMINATOR; |
| value = numerator16 << 16 | denominator16; |
| } else { |
| printf("Reached min EV.\n"); |
| } |
| return mm_app_set_config_parm(cam_id, MM_CAMERA_PARM_EXPOSURE_COMPENSATION, value); |
| #endif |
| return 0; |
| } |
| |
| /*=========================================================================== |
| * FUNCTION - increase_saturation - |
| * |
| * DESCRIPTION: |
| * ===========================================================================*/ |
| int increase_saturation (mm_camera_lib_handle *lib_handle) { |
| #if 0 |
| saturation += CAMERA_SATURATION_STEP; |
| if (saturation > CAMERA_MAX_SATURATION) { |
| saturation = CAMERA_MAX_SATURATION; |
| printf("Reached max saturation. \n"); |
| } |
| printf("Increase Saturation to %d\n", saturation); |
| return mm_app_set_config_parm(cam_id, MM_CAMERA_PARM_SATURATION, saturation); |
| #endif |
| saturation += CAMERA_SATURATION_STEP; |
| if (saturation > CAMERA_MAX_SATURATION) { |
| saturation = CAMERA_MAX_SATURATION; |
| printf("Reached max saturation. \n"); |
| } |
| printf("Increase saturation to %d\n", contrast); |
| return mm_camera_lib_send_command(lib_handle, |
| MM_CAMERA_LIB_SATURATION, |
| &saturation, |
| NULL); |
| } |
| |
| /*=========================================================================== |
| * FUNCTION - decrease_saturation - |
| * |
| * DESCRIPTION: |
| * ===========================================================================*/ |
| int decrease_saturation (mm_camera_lib_handle *lib_handle) { |
| #if 0 |
| saturation -= CAMERA_SATURATION_STEP; |
| if (saturation < CAMERA_MIN_SATURATION) { |
| saturation = CAMERA_MIN_SATURATION; |
| printf("Reached min saturation. \n"); |
| } |
| printf("Dcrease Saturation to %d\n", saturation); |
| return mm_app_set_config_parm(cam_id, MM_CAMERA_PARM_SATURATION, saturation); |
| #endif |
| saturation -= CAMERA_SATURATION_STEP; |
| if (saturation < CAMERA_MIN_SATURATION) { |
| saturation = CAMERA_MIN_SATURATION; |
| printf("Reached min saturation. \n"); |
| } |
| printf("decrease saturation to %d\n", contrast); |
| return mm_camera_lib_send_command(lib_handle, |
| MM_CAMERA_LIB_SATURATION, |
| &saturation, |
| NULL); |
| } |
| |
| |
| int take_jpeg_snapshot(mm_camera_test_obj_t *test_obj, int is_burst_mode) |
| { |
| CDBG_HIGH("\nEnter take_jpeg_snapshot!!\n"); |
| int rc = MM_CAMERA_OK; |
| if(MM_CAMERA_OK != (rc = mm_app_take_picture(test_obj, is_burst_mode))) { |
| CDBG_ERROR("%s: mm_app_take_picture() err=%d\n", __func__, rc); |
| } |
| return rc; |
| } |
| |
| /*=========================================================================== |
| * FUNCTION - main - |
| * |
| * DESCRIPTION: |
| *==========================================================================*/ |
| int main() |
| { |
| char tc_buf[3]; |
| int mode = 0; |
| int rc = 0; |
| |
| printf("Please Select Execution Mode:\n"); |
| printf("0: Menu Based 1: Regression\n"); |
| fgets(tc_buf, 3, stdin); |
| mode = tc_buf[0] - '0'; |
| if(mode == 0) { |
| printf("\nStarting Menu based!!\n"); |
| } else if(mode == 1) { |
| printf("Starting Regression testing!!\n"); |
| if(!mm_app_start_regression_test(1)) { |
| printf("\nRegressiion test passed!!\n"); |
| return 0; |
| } else { |
| printf("\nRegression test failed!!\n"); |
| exit(-1); |
| } |
| } else { |
| printf("\nPlease Enter 0 or 1\n"); |
| printf("\nExisting the App!!\n"); |
| exit(-1); |
| } |
| |
| |
| rc = submain(); |
| |
| printf("Exiting application\n"); |
| |
| return rc; |
| } |
| |
| /*=========================================================================== |
| * FUNCTION - set_whitebalance - |
| * |
| * DESCRIPTION: |
| * ===========================================================================*/ |
| int set_whitebalance (mm_camera_lib_handle *lib_handle, int wb_action_param) { |
| cam_wb_mode_type type = 0; |
| switch (wb_action_param) { |
| case WB_AUTO: |
| printf("\n WB_AUTO\n"); |
| type = CAM_WB_MODE_AUTO; |
| break; |
| case WB_INCANDESCENT: |
| printf("\n WB_INCANDESCENT\n"); |
| type = CAM_WB_MODE_INCANDESCENT; |
| break; |
| case WB_FLUORESCENT: |
| printf("\n WB_FLUORESCENT\n"); |
| type = CAM_WB_MODE_FLUORESCENT; |
| break; |
| case WB_WARM_FLUORESCENT: |
| printf("\n WB_WARM_FLUORESCENT\n"); |
| type = CAM_WB_MODE_WARM_FLUORESCENT; |
| break; |
| case WB_DAYLIGHT: |
| printf("\n WB_DAYLIGHT\n"); |
| type = CAM_WB_MODE_DAYLIGHT; |
| break; |
| case WB_CLOUDY_DAYLIGHT: |
| printf("\n WB_CLOUDY_DAYLIGHT\n"); |
| type = CAM_WB_MODE_CLOUDY_DAYLIGHT; |
| break; |
| case WB_TWILIGHT: |
| printf("\n WB_TWILIGHT\n"); |
| type = CAM_WB_MODE_TWILIGHT; |
| break; |
| case WB_SHADE: |
| printf("\n WB_SHADE\n"); |
| type = CAM_WB_MODE_SHADE; |
| break; |
| default: |
| break; |
| } |
| return mm_camera_lib_send_command(lib_handle, |
| MM_CAMERA_LIB_WB, |
| &type, |
| NULL); |
| } |
| |
| |
| /*=========================================================================== |
| * FUNCTION - set_exp_metering - |
| * |
| * DESCRIPTION: |
| * ===========================================================================*/ |
| int set_exp_metering (mm_camera_lib_handle *lib_handle, int exp_metering_action_param) { |
| cam_auto_exposure_mode_type type = 0; |
| switch (exp_metering_action_param) { |
| case AUTO_EXP_FRAME_AVG: |
| printf("\nAUTO_EXP_FRAME_AVG\n"); |
| type = CAM_AEC_MODE_FRAME_AVERAGE; |
| break; |
| case AUTO_EXP_CENTER_WEIGHTED: |
| printf("\n AUTO_EXP_CENTER_WEIGHTED\n"); |
| type = CAM_AEC_MODE_CENTER_WEIGHTED; |
| break; |
| case AUTO_EXP_SPOT_METERING: |
| printf("\n AUTO_EXP_SPOT_METERING\n"); |
| type = CAM_AEC_MODE_SPOT_METERING; |
| break; |
| case AUTO_EXP_SMART_METERING: |
| printf("\n AUTO_EXP_SMART_METERING\n"); |
| type = CAM_AEC_MODE_SMART_METERING; |
| break; |
| case AUTO_EXP_USER_METERING: |
| printf("\n AUTO_EXP_USER_METERING\n"); |
| type = CAM_AEC_MODE_USER_METERING; |
| break; |
| case AUTO_EXP_SPOT_METERING_ADV: |
| printf("\n AUTO_EXP_SPOT_METERING_ADV\n"); |
| type = CAM_AEC_MODE_SPOT_METERING_ADV; |
| break; |
| case AUTO_EXP_CENTER_WEIGHTED_ADV: |
| printf("\n AUTO_EXP_CENTER_WEIGHTED_ADV\n"); |
| type = CAM_AEC_MODE_CENTER_WEIGHTED_ADV; |
| break; |
| default: |
| break; |
| } |
| return mm_camera_lib_send_command(lib_handle, |
| MM_CAMERA_LIB_EXPOSURE_METERING, |
| &type, |
| NULL); |
| } |
| |
| int get_ctrl_value (int ctrl_value_mode_param){ |
| #if 0 |
| int rc = 0; |
| struct v4l2_control ctrl; |
| |
| if (ctrl_value_mode_param == WHITE_BALANCE_STATE) { |
| printf("You chose WHITE_BALANCE_STATE\n"); |
| ctrl.id = V4L2_CID_AUTO_WHITE_BALANCE; |
| } |
| else if (ctrl_value_mode_param == WHITE_BALANCE_TEMPERATURE) { |
| printf("You chose WHITE_BALANCE_TEMPERATURE\n"); |
| ctrl.id = V4L2_CID_WHITE_BALANCE_TEMPERATURE; |
| } |
| else if (ctrl_value_mode_param == BRIGHTNESS_CTRL) { |
| printf("You chose brightness value\n"); |
| ctrl.id = V4L2_CID_BRIGHTNESS; |
| } |
| else if (ctrl_value_mode_param == EV) { |
| printf("You chose exposure value\n"); |
| ctrl.id = V4L2_CID_EXPOSURE; |
| } |
| else if (ctrl_value_mode_param == CONTRAST_CTRL) { |
| printf("You chose contrast value\n"); |
| ctrl.id = V4L2_CID_CONTRAST; |
| } |
| else if (ctrl_value_mode_param == SATURATION_CTRL) { |
| printf("You chose saturation value\n"); |
| ctrl.id = V4L2_CID_SATURATION; |
| } else if (ctrl_value_mode_param == SHARPNESS_CTRL) { |
| printf("You chose sharpness value\n"); |
| ctrl.id = V4L2_CID_SHARPNESS; |
| } |
| |
| // rc = ioctl(camfd, VIDIOC_G_CTRL, &ctrl); |
| return rc; |
| #endif |
| return ctrl_value_mode_param; |
| } |
| |
| /*=========================================================================== |
| * FUNCTION - toggle_afr - |
| * |
| * DESCRIPTION: |
| * ===========================================================================*/ |
| int toggle_afr () { |
| #if 0 |
| if (fps_mode == FPS_MODE_AUTO) { |
| printf("\nSetting FPS_MODE_FIXED\n"); |
| fps_mode = FPS_MODE_FIXED; |
| } else { |
| printf("\nSetting FPS_MODE_AUTO\n"); |
| fps_mode = FPS_MODE_AUTO; |
| } |
| return mm_app_set_config_parm(cam_id, MM_CAMERA_PARM_FPS_MODE, fps_mode); |
| #endif |
| return 0; |
| } |
| |
| int set_zoom (mm_camera_lib_handle *lib_handle, int zoom_action_param) { |
| |
| if (zoom_action_param == ZOOM_IN) { |
| zoom_level += ZOOM_STEP; |
| if (zoom_level > zoom_max_value) |
| zoom_level = zoom_max_value; |
| } else if (zoom_action_param == ZOOM_OUT) { |
| zoom_level -= ZOOM_STEP; |
| if (zoom_level < ZOOM_MIN_VALUE) |
| zoom_level = ZOOM_MIN_VALUE; |
| } else { |
| CDBG("%s: Invalid zoom_action_param value\n", __func__); |
| return -EINVAL; |
| } |
| return mm_camera_lib_send_command(lib_handle, |
| MM_CAMERA_LIB_ZOOM, |
| &zoom_level, |
| NULL); |
| } |
| |
| /*=========================================================================== |
| * FUNCTION - set_iso - |
| * |
| * DESCRIPTION: |
| * ===========================================================================*/ |
| int set_iso (mm_camera_lib_handle *lib_handle, int iso_action_param) { |
| cam_iso_mode_type type = 0; |
| switch (iso_action_param) { |
| case ISO_AUTO: |
| printf("\n ISO_AUTO\n"); |
| type = CAM_ISO_MODE_AUTO; |
| break; |
| case ISO_DEBLUR: |
| printf("\n ISO_DEBLUR\n"); |
| type = CAM_ISO_MODE_DEBLUR; |
| break; |
| case ISO_100: |
| printf("\n ISO_100\n"); |
| type = CAM_ISO_MODE_100; |
| break; |
| case ISO_200: |
| printf("\n ISO_200\n"); |
| type = CAM_ISO_MODE_200; |
| break; |
| case ISO_400: |
| printf("\n ISO_400\n"); |
| type = CAM_ISO_MODE_400; |
| break; |
| case ISO_800: |
| printf("\n ISO_800\n"); |
| type = CAM_ISO_MODE_800; |
| break; |
| case ISO_1600: |
| printf("\n ISO_1600\n"); |
| type = CAM_ISO_MODE_1600; |
| break; |
| default: |
| break; |
| } |
| return mm_camera_lib_send_command(lib_handle, |
| MM_CAMERA_LIB_ISO, |
| &type, |
| NULL); |
| } |
| |
| /*=========================================================================== |
| * FUNCTION - increase_sharpness - |
| * |
| * DESCRIPTION: |
| * ===========================================================================*/ |
| int increase_sharpness (mm_camera_lib_handle *lib_handle) { |
| sharpness += CAMERA_SHARPNESS_STEP; |
| if (sharpness > CAMERA_MAX_SHARPNESS) { |
| sharpness = CAMERA_MAX_SHARPNESS; |
| printf("Reached max SHARPNESS. \n"); |
| } |
| printf("Increase Sharpness to %d\n", sharpness); |
| return mm_camera_lib_send_command(lib_handle, |
| MM_CAMERA_LIB_SHARPNESS, |
| &sharpness, |
| NULL); |
| } |
| |
| /*=========================================================================== |
| * FUNCTION - decrease_sharpness - |
| * |
| * DESCRIPTION: |
| * ===========================================================================*/ |
| int decrease_sharpness (mm_camera_lib_handle *lib_handle) { |
| sharpness -= CAMERA_SHARPNESS_STEP; |
| if (sharpness < CAMERA_MIN_SHARPNESS) { |
| sharpness = CAMERA_MIN_SHARPNESS; |
| printf("Reached min SHARPNESS. \n"); |
| } |
| printf("Decrease Sharpness to %d\n", sharpness); |
| return mm_camera_lib_send_command(lib_handle, |
| MM_CAMERA_LIB_SHARPNESS, |
| &sharpness, |
| NULL); |
| } |
| |
| int set_flash_mode (mm_camera_lib_handle *lib_handle, int action_param) { |
| cam_flash_mode_t type = 0; |
| switch (action_param) { |
| case FLASH_MODE_OFF: |
| printf("\n FLASH_MODE_OFF\n"); |
| type = CAM_FLASH_MODE_OFF; |
| break; |
| case FLASH_MODE_AUTO: |
| printf("\n FLASH_MODE_AUTO\n"); |
| type = CAM_FLASH_MODE_AUTO; |
| break; |
| case FLASH_MODE_ON: |
| printf("\n FLASH_MODE_ON\n"); |
| type = CAM_FLASH_MODE_ON; |
| break; |
| case FLASH_MODE_TORCH: |
| printf("\n FLASH_MODE_TORCH\n"); |
| type = CAM_ISO_MODE_100; |
| break; |
| default: |
| break; |
| } |
| return mm_camera_lib_send_command(lib_handle, |
| MM_CAMERA_LIB_FLASH, |
| &type, |
| NULL); |
| } |
| |
| int set_bestshot_mode(mm_camera_lib_handle *lib_handle, int action_param) { |
| cam_scene_mode_type type = 0; |
| switch (action_param) { |
| case BESTSHOT_AUTO: |
| printf("\n BEST SHOT AUTO\n"); |
| type = CAM_SCENE_MODE_OFF; |
| break; |
| case BESTSHOT_ACTION: |
| printf("\n BEST SHOT ACTION\n"); |
| type = CAM_SCENE_MODE_ACTION; |
| break; |
| case BESTSHOT_PORTRAIT: |
| printf("\n BEST SHOT PORTRAIT\n"); |
| type = CAM_SCENE_MODE_PORTRAIT; |
| break; |
| case BESTSHOT_LANDSCAPE: |
| printf("\n BEST SHOT LANDSCAPE\n"); |
| type = CAM_SCENE_MODE_LANDSCAPE; |
| break; |
| case BESTSHOT_NIGHT: |
| printf("\n BEST SHOT NIGHT\n"); |
| type = CAM_SCENE_MODE_NIGHT; |
| break; |
| case BESTSHOT_NIGHT_PORTRAIT: |
| printf("\n BEST SHOT NIGHT PORTRAIT\n"); |
| type = CAM_SCENE_MODE_NIGHT_PORTRAIT; |
| break; |
| case BESTSHOT_THEATRE: |
| printf("\n BEST SHOT THREATRE\n"); |
| type = CAM_SCENE_MODE_THEATRE; |
| break; |
| case BESTSHOT_BEACH: |
| printf("\n BEST SHOT BEACH\n"); |
| type = CAM_SCENE_MODE_BEACH; |
| break; |
| case BESTSHOT_SNOW: |
| printf("\n BEST SHOT SNOW\n"); |
| type = CAM_SCENE_MODE_SNOW; |
| break; |
| case BESTSHOT_SUNSET: |
| printf("\n BEST SHOT SUNSET\n"); |
| type = CAM_SCENE_MODE_SUNSET; |
| break; |
| case BESTSHOT_ANTISHAKE: |
| printf("\n BEST SHOT ANTISHAKE\n"); |
| type = CAM_SCENE_MODE_ANTISHAKE; |
| break; |
| case BESTSHOT_FIREWORKS: |
| printf("\n BEST SHOT FIREWORKS\n"); |
| type = CAM_SCENE_MODE_FIREWORKS; |
| break; |
| case BESTSHOT_SPORTS: |
| printf("\n BEST SHOT SPORTS\n"); |
| type = CAM_SCENE_MODE_SPORTS; |
| break; |
| case BESTSHOT_PARTY: |
| printf("\n BEST SHOT PARTY\n"); |
| type = CAM_SCENE_MODE_PARTY; |
| break; |
| case BESTSHOT_CANDLELIGHT: |
| printf("\n BEST SHOT CANDLELIGHT\n"); |
| type = CAM_SCENE_MODE_CANDLELIGHT; |
| break; |
| case BESTSHOT_ASD: |
| printf("\n BEST SHOT ASD\n"); |
| type = CAM_SCENE_MODE_AUTO; |
| break; |
| case BESTSHOT_BACKLIGHT: |
| printf("\n BEST SHOT BACKLIGHT\n"); |
| type = CAM_SCENE_MODE_BACKLIGHT; |
| break; |
| case BESTSHOT_FLOWERS: |
| printf("\n BEST SHOT FLOWERS\n"); |
| type = CAM_SCENE_MODE_FLOWERS; |
| break; |
| case BESTSHOT_AR: |
| printf("\n BEST SHOT AR\n"); |
| type = CAM_SCENE_MODE_AR; |
| break; |
| case BESTSHOT_HDR: |
| printf("\n BEST SHOT HDR\n"); |
| type = CAM_SCENE_MODE_OFF; |
| break; |
| default: |
| break; |
| } |
| return mm_camera_lib_send_command(lib_handle, |
| MM_CAMERA_LIB_BESTSHOT, |
| &type, |
| NULL); |
| } |
| /*=========================================================================== |
| * FUNCTION - print_current_menu - |
| * |
| * DESCRIPTION: |
| * ===========================================================================*/ |
| int print_current_menu (menu_id_change_t current_menu_id) { |
| if (current_menu_id == MENU_ID_MAIN) { |
| print_menu_preview_video (); |
| } else if (current_menu_id == MENU_ID_WHITEBALANCECHANGE) { |
| camera_preview_video_wb_change_tbl(); |
| } else if (current_menu_id == MENU_ID_EXPMETERINGCHANGE) { |
| camera_preview_video_exp_metering_change_tbl(); |
| } else if (current_menu_id == MENU_ID_GET_CTRL_VALUE) { |
| camera_preview_video_get_ctrl_value_tbl(); |
| } else if (current_menu_id == MENU_ID_ISOCHANGE) { |
| camera_preview_video_iso_change_tbl(); |
| } else if (current_menu_id == MENU_ID_BRIGHTNESSCHANGE) { |
| camera_brightness_change_tbl (); |
| } else if (current_menu_id == MENU_ID_CONTRASTCHANGE) { |
| camera_contrast_change_tbl (); |
| } else if (current_menu_id == MENU_ID_EVCHANGE) { |
| camera_EV_change_tbl (); |
| } else if (current_menu_id == MENU_ID_SATURATIONCHANGE) { |
| camera_saturation_change_tbl (); |
| } else if (current_menu_id == MENU_ID_ZOOMCHANGE) { |
| camera_preview_video_zoom_change_tbl(); |
| } else if (current_menu_id == MENU_ID_SHARPNESSCHANGE) { |
| camera_preview_video_sharpness_change_tbl(); |
| } else if (current_menu_id == MENU_ID_BESTSHOT) { |
| camera_set_bestshot_tbl(); |
| } else if (current_menu_id == MENU_ID_FLASHMODE) { |
| camera_set_flashmode_tbl(); |
| } else if (current_menu_id == MENU_ID_SENSORS ) { |
| camera_sensors_tbl(); |
| } else if (current_menu_id == MENU_ID_SWITCH_RES ) { |
| camera_resolution_change_tbl(); |
| } |
| |
| return 0; |
| } |
| |
| int filter_resolutions(mm_camera_lib_handle *lib_handle, |
| DIMENSION_TBL_T *tbl, |
| size_t tbl_size) |
| { |
| size_t i, j; |
| cam_capability_t camera_cap; |
| int rc = 0; |
| |
| if ( ( NULL == lib_handle ) || ( NULL == tbl ) ) { |
| return -1; |
| } |
| |
| rc = mm_camera_lib_get_caps(lib_handle, &camera_cap); |
| if ( MM_CAMERA_OK != rc ) { |
| CDBG_ERROR("%s:mm_camera_lib_get_caps() err=%d\n", __func__, rc); |
| return -1; |
| } |
| |
| for( i = 0 ; i < tbl_size ; i++ ) { |
| for( j = 0; j < camera_cap.picture_sizes_tbl_cnt; j++ ) { |
| if ( ( tbl[i].width == camera_cap.picture_sizes_tbl[j].width ) && |
| ( tbl[i].height == camera_cap.picture_sizes_tbl[j].height ) ) { |
| tbl[i].supported = 1; |
| rc = i; |
| break; |
| } |
| } |
| } |
| |
| return rc; |
| } |
| |
| /*=========================================================================== |
| * FUNCTION : enableAFR |
| * |
| * DESCRIPTION: This function will go through the list |
| * of supported FPS ranges and select the |
| * one which has maximum range |
| * |
| * PARAMETERS : |
| * @lib_handle : camera test library handle |
| * |
| * RETURN : uint32_t type of stream handle |
| * MM_CAMERA_OK -- Success |
| * !=MM_CAMERA_OK -- Error status |
| *==========================================================================*/ |
| int enableAFR(mm_camera_lib_handle *lib_handle) |
| { |
| size_t i, j; |
| float max_range = 0.0f; |
| cam_capability_t cap; |
| int rc = MM_CAMERA_OK; |
| |
| if ( NULL == lib_handle ) { |
| return MM_CAMERA_E_INVALID_INPUT; |
| } |
| |
| rc = mm_camera_lib_get_caps(lib_handle, &cap); |
| if ( MM_CAMERA_OK != rc ) { |
| CDBG_ERROR("%s:mm_camera_lib_get_caps() err=%d\n", __func__, rc); |
| return rc; |
| } |
| |
| for( i = 0, j = 0 ; i < cap.fps_ranges_tbl_cnt ; i++ ) { |
| if ( max_range < (cap.fps_ranges_tbl[i].max_fps - cap.fps_ranges_tbl[i].min_fps) ) { |
| j = i; |
| } |
| } |
| |
| rc = mm_camera_lib_send_command(lib_handle, |
| MM_CAMERA_LIB_FPS_RANGE, |
| &cap.fps_ranges_tbl[j], |
| NULL); |
| |
| CDBG_ERROR("%s : FPS range [%5.2f:%5.2f] rc = %d", |
| __func__, |
| cap.fps_ranges_tbl[j].min_fps, |
| cap.fps_ranges_tbl[j].max_fps, |
| rc); |
| |
| return rc; |
| } |
| |
| /*=========================================================================== |
| * FUNCTION - submain - |
| * |
| * DESCRIPTION: |
| * ===========================================================================*/ |
| static int submain() |
| { |
| int rc = 0; |
| char tc_buf[3]; |
| menu_id_change_t current_menu_id = MENU_ID_MAIN, next_menu_id; |
| camera_action_t action_id; |
| int action_param; |
| uint8_t previewing = 0; |
| int isZSL = 0; |
| uint8_t wnr_enabled = 0; |
| mm_camera_lib_handle lib_handle; |
| int num_cameras; |
| int available_sensors = sizeof(sensor_tbl) / sizeof(sensor_tbl[0]); |
| int available_snap_sizes = sizeof(dimension_tbl)/sizeof(dimension_tbl[0]); |
| int i,c; |
| mm_camera_lib_snapshot_params snap_dim; |
| snap_dim.width = DEFAULT_SNAPSHOT_WIDTH; |
| snap_dim.height = DEFAULT_SNAPSHOT_HEIGHT; |
| cam_scene_mode_type default_scene= CAM_SCENE_MODE_OFF; |
| int set_tintless= 0; |
| |
| mm_camera_test_obj_t test_obj; |
| memset(&test_obj, 0, sizeof(mm_camera_test_obj_t)); |
| |
| rc = mm_camera_lib_open(&lib_handle, 0); |
| if (rc != MM_CAMERA_OK) { |
| CDBG_ERROR("%s:mm_camera_lib_open() err=%d\n", __func__, rc); |
| return -1; |
| } |
| |
| num_cameras = mm_camera_lib_number_of_cameras(&lib_handle); |
| if ( 0 >= num_cameras ) { |
| CDBG_ERROR("%s: No camera sensors reported!", __func__); |
| rc = -1; |
| goto ERROR; |
| } else if ( 1 <= num_cameras ) { |
| c = MIN(num_cameras, available_sensors); |
| for ( i = 0 ; i < c ; i++ ) { |
| sensor_tbl[i].present = 1; |
| } |
| current_menu_id = MENU_ID_SENSORS; |
| } else { |
| i = filter_resolutions(&lib_handle, |
| dimension_tbl, |
| available_snap_sizes); |
| if ( ( i < 0 ) || ( i >= available_snap_sizes ) ) { |
| CDBG_ERROR("%s:filter_resolutions()\n", __func__); |
| goto ERROR; |
| } |
| snap_dim.width = dimension_tbl[i].width; |
| snap_dim.height = dimension_tbl[i].height; |
| |
| rc = enableAFR(&lib_handle); |
| if (rc != MM_CAMERA_OK) { |
| CDBG_ERROR("%s:enableAFR() err=%d\n", __func__, rc); |
| goto ERROR; |
| } |
| |
| rc = mm_camera_lib_send_command(&lib_handle, |
| MM_CAMERA_LIB_BESTSHOT, |
| &default_scene, |
| NULL); |
| if (rc != MM_CAMERA_OK) { |
| CDBG_ERROR("%s:mm_camera_lib_send_command() err=%d\n", __func__, rc); |
| goto ERROR; |
| } |
| } |
| /*start the eztune server*/ |
| CDBG_HIGH("Starting eztune Server \n"); |
| eztune_server_start(&lib_handle); |
| |
| do { |
| print_current_menu (current_menu_id); |
| fgets(tc_buf, 3, stdin); |
| |
| next_menu_id = next_menu(current_menu_id, tc_buf[0], & action_id, & action_param); |
| |
| if (next_menu_id != MENU_ID_INVALID) { |
| current_menu_id = next_menu_id; |
| } |
| if (action_id == ACTION_NO_ACTION) { |
| continue; |
| } |
| |
| switch(action_id) { |
| case ACTION_START_PREVIEW: |
| CDBG_ERROR("ACTION_START_PREVIEW \n"); |
| rc = mm_camera_lib_start_stream(&lib_handle); |
| if (rc != MM_CAMERA_OK) { |
| CDBG_ERROR("%s:mm_camera_lib_start_stream() err=%d\n", __func__, rc); |
| goto ERROR; |
| } |
| previewing = 1; |
| break; |
| |
| case ACTION_STOP_PREVIEW: |
| CDBG("ACTION_STOP_PREVIEW \n"); |
| rc = mm_camera_lib_stop_stream(&lib_handle); |
| if (rc != MM_CAMERA_OK) { |
| CDBG_ERROR("%s:mm_camera_lib_stop_stream() err=%d\n", __func__, rc); |
| goto ERROR; |
| } |
| previewing = 0; |
| break; |
| |
| case ACTION_SET_WHITE_BALANCE: |
| CDBG("Selection for the White Balance changes\n"); |
| set_whitebalance(&lib_handle, action_param); |
| break; |
| |
| case ACTION_SET_TINTLESS_ENABLE: |
| CDBG("Selection for the Tintless enable changes\n"); |
| set_tintless = 1; |
| rc = mm_camera_lib_send_command(&lib_handle, |
| MM_CAMERA_LIB_SET_TINTLESS, |
| &set_tintless, |
| NULL); |
| if (rc != MM_CAMERA_OK) { |
| CDBG_ERROR("%s:mm_camera_lib_send_command() err=%d\n", __func__, rc); |
| goto ERROR; |
| } |
| break; |
| |
| case ACTION_SET_TINTLESS_DISABLE: |
| CDBG("Selection for the Tintless disable changes\n"); |
| set_tintless = 0; |
| rc = mm_camera_lib_send_command(&lib_handle, |
| MM_CAMERA_LIB_SET_TINTLESS, |
| &set_tintless, |
| NULL); |
| if (rc != MM_CAMERA_OK) { |
| CDBG_ERROR("%s:mm_camera_lib_send_command() err=%d\n", __func__, rc); |
| goto ERROR; |
| } |
| break; |
| |
| case ACTION_SET_EXP_METERING: |
| CDBG("Selection for the Exposure Metering changes\n"); |
| set_exp_metering(&lib_handle, action_param); |
| break; |
| |
| case ACTION_GET_CTRL_VALUE: |
| CDBG("Selection for getting control value\n"); |
| get_ctrl_value(action_param); |
| break; |
| |
| case ACTION_BRIGHTNESS_INCREASE: |
| printf("Increase brightness\n"); |
| increase_brightness(&lib_handle); |
| break; |
| |
| case ACTION_BRIGHTNESS_DECREASE: |
| printf("Decrease brightness\n"); |
| decrease_brightness(&lib_handle); |
| break; |
| |
| case ACTION_CONTRAST_INCREASE: |
| CDBG("Selection for the contrast increase\n"); |
| increase_contrast (&lib_handle); |
| break; |
| |
| case ACTION_CONTRAST_DECREASE: |
| CDBG("Selection for the contrast decrease\n"); |
| decrease_contrast (&lib_handle); |
| break; |
| |
| case ACTION_EV_INCREASE: |
| CDBG("Selection for the EV increase\n"); |
| increase_EV (); |
| break; |
| |
| case ACTION_EV_DECREASE: |
| CDBG("Selection for the EV decrease\n"); |
| decrease_EV (); |
| break; |
| |
| case ACTION_SATURATION_INCREASE: |
| CDBG("Selection for the EV increase\n"); |
| increase_saturation (&lib_handle); |
| break; |
| |
| case ACTION_SATURATION_DECREASE: |
| CDBG("Selection for the EV decrease\n"); |
| decrease_saturation (&lib_handle); |
| break; |
| |
| case ACTION_TOGGLE_AFR: |
| CDBG("Select for auto frame rate toggling\n"); |
| toggle_afr(); |
| break; |
| |
| case ACTION_SET_ISO: |
| CDBG("Select for ISO changes\n"); |
| set_iso(&lib_handle, action_param); |
| break; |
| |
| case ACTION_SET_ZOOM: |
| CDBG("Selection for the zoom direction changes\n"); |
| set_zoom(&lib_handle, action_param); |
| break; |
| |
| case ACTION_SHARPNESS_INCREASE: |
| CDBG("Selection for sharpness increase\n"); |
| increase_sharpness(&lib_handle); |
| break; |
| |
| case ACTION_SHARPNESS_DECREASE: |
| CDBG("Selection for sharpness decrease\n"); |
| decrease_sharpness(&lib_handle); |
| break; |
| |
| case ACTION_SET_BESTSHOT_MODE: |
| CDBG("Selection for bestshot\n"); |
| set_bestshot_mode(&lib_handle, action_param); |
| break; |
| |
| case ACTION_SET_FLASH_MODE: |
| printf("\n Selection for flashmode\n"); |
| set_flash_mode(&lib_handle, action_param); |
| break; |
| |
| case ACTION_SWITCH_CAMERA: |
| rc = mm_camera_lib_close(&lib_handle); |
| if (rc != MM_CAMERA_OK) { |
| CDBG_ERROR("%s:mm_camera_lib_close() err=%d\n", __func__, rc); |
| goto ERROR; |
| } |
| |
| rc = mm_camera_lib_open(&lib_handle, action_param); |
| if (rc != MM_CAMERA_OK) { |
| CDBG_ERROR("%s:mm_camera_lib_open() err=%d\n", __func__, rc); |
| goto ERROR; |
| } |
| |
| i = filter_resolutions(&lib_handle, |
| dimension_tbl, |
| sizeof(dimension_tbl)/sizeof(dimension_tbl[0])); |
| if ( ( i < 0 ) || ( i >= available_snap_sizes ) ) { |
| CDBG_ERROR("%s:filter_resolutions()\n", __func__); |
| goto ERROR; |
| } |
| snap_dim.width = dimension_tbl[i].width; |
| snap_dim.height = dimension_tbl[i].height; |
| |
| rc = enableAFR(&lib_handle); |
| if (rc != MM_CAMERA_OK) { |
| CDBG_ERROR("%s:enableAFR() err=%d\n", __func__, rc); |
| goto ERROR; |
| } |
| |
| rc = mm_camera_lib_send_command(&lib_handle, |
| MM_CAMERA_LIB_BESTSHOT, |
| &default_scene, |
| NULL); |
| if (rc != MM_CAMERA_OK) { |
| CDBG_ERROR("%s:mm_camera_lib_send_command() err=%d\n", __func__, rc); |
| goto ERROR; |
| } |
| break; |
| |
| case ACTION_TOGGLE_ZSL: |
| printf("ZSL Toggle !!!\n"); |
| isZSL = !isZSL; |
| if ( isZSL ) { |
| printf("ZSL on !!!\n"); |
| } else { |
| printf("ZSL off !!!\n"); |
| } |
| rc = mm_camera_lib_send_command(&lib_handle, |
| MM_CAMERA_LIB_ZSL_ENABLE, |
| &isZSL, |
| NULL); |
| if (rc != MM_CAMERA_OK) { |
| CDBG_ERROR("%s:mm_camera_lib_send_command() err=%d\n", __func__, rc); |
| goto ERROR; |
| } |
| break; |
| |
| case ACTION_TAKE_RAW_SNAPSHOT: |
| CDBG_HIGH("\n Take RAW snapshot\n"); |
| |
| rc = mm_camera_lib_send_command(&lib_handle, |
| MM_CAMERA_LIB_DO_AF, |
| NULL, |
| NULL); |
| |
| if (rc != MM_CAMERA_OK) { |
| CDBG_ERROR("%s:mm_camera_lib_send_command() err=%d\n", __func__, rc); |
| goto ERROR; |
| } |
| |
| rc = mm_camera_lib_send_command(&lib_handle, |
| MM_CAMERA_LIB_RAW_CAPTURE, |
| NULL, |
| NULL); |
| if (rc != MM_CAMERA_OK) { |
| CDBG_ERROR("%s:mm_camera_lib_send_command() err=%d\n", __func__, rc); |
| goto ERROR; |
| } |
| break; |
| |
| case ACTION_TAKE_JPEG_SNAPSHOT: |
| CDBG_HIGH("\n Take JPEG snapshot\n"); |
| |
| rc = mm_camera_lib_send_command(&lib_handle, |
| MM_CAMERA_LIB_DO_AF, |
| NULL, |
| NULL); |
| |
| if (rc != MM_CAMERA_OK) { |
| CDBG_ERROR("%s:mm_camera_lib_send_command() err=%d\n", __func__, rc); |
| goto ERROR; |
| } |
| |
| rc = mm_camera_lib_send_command(&lib_handle, |
| MM_CAMERA_LIB_JPEG_CAPTURE, |
| &snap_dim, |
| NULL); |
| if (rc != MM_CAMERA_OK) { |
| CDBG_ERROR("%s:mm_camera_lib_send_command() err=%d\n", __func__, rc); |
| goto ERROR; |
| } |
| break; |
| case ACTION_SWITCH_RESOLUTION: |
| printf("\n Switch snapshot resolution to %dx%d\n", |
| dimension_tbl[action_param].width, |
| dimension_tbl[action_param].height); |
| snap_dim.width = dimension_tbl[action_param].width; |
| snap_dim.height = dimension_tbl[action_param].height; |
| break; |
| |
| case ACTION_START_RECORDING: |
| CDBG("Start recording action\n"); |
| #if 0 |
| if (mm_app_start_video(cam_id) < 0) |
| goto ERROR; |
| is_rec = 1; |
| #endif |
| break; |
| case ACTION_STOP_RECORDING: |
| CDBG("Stop recording action\n"); |
| #if 0 |
| if(is_rec) { |
| if (mm_app_stop_video(cam_id) < 0) |
| goto ERROR; |
| is_rec = 0; |
| } |
| #endif |
| break; |
| case ACTION_TAKE_LIVE_SNAPSHOT: |
| printf("Selection for live shot\n"); |
| #if 0 |
| if(is_rec) |
| mm_app_take_live_snapshot(cam_id); |
| else |
| printf("\n !!! Use live snapshot option while recording only !!!\n"); |
| #endif |
| break; |
| |
| case ACTION_TOGGLE_WNR: |
| wnr_enabled = !wnr_enabled; |
| printf("WNR Enabled = %d\n", wnr_enabled); |
| rc = mm_camera_lib_send_command(&lib_handle, |
| MM_CAMERA_LIB_WNR_ENABLE, |
| &wnr_enabled, |
| NULL); |
| if (rc != MM_CAMERA_OK) { |
| CDBG_ERROR("%s:mm_camera_lib_send_command() err=%d\n", __func__, rc); |
| goto ERROR; |
| } |
| break; |
| |
| case ACTION_EXIT: |
| printf("Exiting....\n"); |
| break; |
| case ACTION_NO_ACTION: |
| printf("Go back to main menu"); |
| break; |
| |
| default: |
| printf("\n\n!!!!!WRONG INPUT: %d!!!!\n", action_id); |
| break; |
| } |
| |
| usleep(1000 * 1000); |
| CDBG("action_id = %d\n", action_id); |
| |
| } while (action_id != ACTION_EXIT); |
| action_id = ACTION_NO_ACTION; |
| |
| mm_camera_lib_close(&lib_handle); |
| return 0; |
| |
| ERROR: |
| |
| mm_camera_lib_close(&lib_handle); |
| |
| return rc; |
| } |
| |