/**
* Main ML feature set
*
* You can:
*
* 1) include this file from platform/CAMERA/features.h (recommended for stable ports) and override a few things,
* or
* 2) you can start from scratch with a minimal feature set (just define what you need).
*
* Basically, if feature X works on most cameras, it's probably a good idea to put it here.
*
* If feature X depends on some backend thingie, you can add the condition here
*
* e.g.
*
* #ifdef CONFIG_VARIANGLE_DISPLAY
* #define FEATURE_IMAGE_ORIENTATION
* #define FEATURE_AUTO_MIRRORING_HACK
* #endif
*
* can be read as "all cameras with a flip-out display will have these two features".
*
*/
/** Audio menu **/
#ifdef CONFIG_AUDIO_CONTROLS
#define FEATURE_ANALOG_GAIN
#define FEATURE_DIGITAL_GAIN
#define FEATURE_AGC_TOGGLE
#define FEATURE_WIND_FILTER
#define FEATURE_INPUT_SOURCE
#define FEATURE_MIC_POWER
#define FEATURE_HEADPHONE_MONITORING
#define FEATURE_HEADPHONE_OUTPUT_VOLUME
#endif
#define FEATURE_AUDIO_METERS
#define FEATURE_BEEP
#define FEATURE_WAV_RECORDING
#define FEATURE_VOICE_TAGS
/** Expo menu **/
#define FEATURE_EXPO_ISO_DIGIC
#ifdef CONFIG_PROP_REQUEST_CHANGE
#define FEATURE_WHITE_BALANCE
#define FEATURE_EXPO_ISO
#define FEATURE_EXPO_ISO_HTP
#define FEATURE_EXPO_SHUTTER
#define FEATURE_EXPO_APERTURE
//~ #define FEATURE_INTERMEDIATE_ISO_PHOTO_DISPLAY // only for rebels, not for high-end bodies
//~ #define FEATURE_INTERMEDIATE_ISO_INTERCEPT_SCROLLWHEEL // 550D trick
#define FEATURE_PICSTYLE
#define FEATURE_REC_PICSTYLE
#define FEATURE_EXPO_LOCK
#define FEATURE_EXPO_PRESET
#ifdef CONFIG_EXPSIM
#define FEATURE_EXPSIM
#endif
#define FEATURE_EXPO_OVERRIDE
#endif
/** Overlay menu **/
#define FEATURE_GLOBAL_DRAW
#define FEATURE_ZEBRA
#define FEATURE_ZEBRA_FAST
#define FEATURE_FOCUS_PEAK
//~ #define FEATURE_FOCUS_PEAK_DISP_FILTER // too slow
#define FEATURE_MAGIC_ZOOM
#define FEATURE_CROPMARKS
#define FEATURE_GHOST_IMAGE
#define FEATURE_SPOTMETER
#define FEATURE_FALSE_COLOR
#define FEATURE_HISTOGRAM
#define FEATURE_WAVEFORM
#define FEATURE_VECTORSCOPE
#define FEATURE_OVERLAYS_IN_PLAYBACK_MODE
#if defined(CONFIG_RAW_PHOTO) || defined(CONFIG_RAW_LIVEVIEW)
#define FEATURE_RAW_HISTOGRAM
#define FEATURE_RAW_SPOTMETER
#endif
#ifdef CONFIG_RAW_PHOTO
#define FEATURE_RAW_ZEBRAS
#endif
/** Movie menu **/
#define FEATURE_NITRATE
//~ #define FEATURE_NITRATE_WAV_RECORD // not user-proof at all
//~ #define FEATURE_VIDEO_HACKS // for experts only
#define FEATURE_REC_INDICATOR
#define FEATURE_MOVIE_LOGGING
#define FEATURE_MOVIE_RESTART
//~ #define FEATURE_MOVIE_AUTOSTOP_RECORDING // will be moved to scripts
#define FEATURE_REC_NOTIFY
//~ #define FEATURE_REC_NOTIFY_BEEP // this may interfere with sound recording, so only enable it where we know it works
#define FEATURE_MOVIE_REC_KEY
#define FEATURE_FORCE_LIVEVIEW
#ifdef CONFIG_PROP_REQUEST_CHANGE
#define FEATURE_SHUTTER_LOCK
#endif
#ifdef CONFIG_FRAME_ISO_OVERRIDE
#define FEATURE_GRADUAL_EXPOSURE
#endif
#define FEATURE_FPS_OVERRIDE
#define FEATURE_FPS_RAMPING
#define FEATURE_FPS_WAV_RECORD
#ifdef CONFIG_FRAME_ISO_OVERRIDE
#define FEATURE_HDR_VIDEO
//~ #define FEATURE_HDR_EXTENDED // for experts only
#endif
#define FEATURE_IMAGE_EFFECTS
#define FEATURE_VIGNETTING_CORRECTION
#ifdef CONFIG_FRAME_SHUTTER_OVERRIDE
#define FEATURE_SHUTTER_FINE_TUNING
#endif
// 50D movie hacks
//~ #define FEATURE_MOVIE_RECORDING_50D
//~ #define FEATURE_MOVIE_RECORDING_50D_SHUTTER_HACK
//~ #define FEATURE_LVAE_EXPO_LOCK
/** Shoot menu **/
#ifdef CONFIG_PROP_REQUEST_CHANGE
#define FEATURE_HDR_BRACKETING
#endif
#define FEATURE_INTERVALOMETER
//~ #define FEATURE_INTERVALOMETER_MOVIE // will be moved to scripts
#ifdef CONFIG_PROP_REQUEST_CHANGE
#define FEATURE_BULB_RAMPING
#define FEATURE_BULB_TIMER
#endif
#ifdef CONFIG_LCD_SENSOR
#define FEATURE_LCD_SENSOR_REMOTE
#endif
#define FEATURE_AUDIO_REMOTE_SHOT
#define FEATURE_MOTION_DETECT
#define FEATURE_SILENT_PIC
//~ #define FEATURE_SILENT_PIC_HIRES
//~ #define FEATURE_SILENT_PIC_JPG // bleeding edge
#ifdef CONFIG_PROP_REQUEST_CHANGE
#define FEATURE_MLU
#define FEATURE_MLU_HANDHELD
//~ #define FEATURE_MLU_HANDHELD_DEBUG
//~ #define FEATURE_MLU_DIRECT_PRINT_SHORTCUT // for 5Dc
#define FEATURE_FLASH_TWEAKS
#define FEATURE_FLASH_NOFLASH
//~ #define FEATURE_LV_3RD_PARTY_FLASH // rebels only
// can do permanent damage, for research only!
//~ #define FEATURE_PICQ_DANGEROUS
#endif
#define FEATURE_SNAP_SIM
#ifdef CONFIG_RAW_LIVEVIEW
#define FEATURE_SILENT_PIC_RAW_BURST
//~ #define FEATURE_SILENT_PIC_RAW // - compatibility mode; define only one of those, not both
#endif
#ifdef CONFIG_RAW_PHOTO
#define FEATURE_POST_DEFLICKER
#endif
/** Focus menu **/
#define FEATURE_TRAP_FOCUS
#ifdef CONFIG_PROP_REQUEST_CHANGE
#define FEATURE_FOLLOW_FOCUS
#define FEATURE_RACK_FOCUS
#define FEATURE_FOCUS_STACKING
#define FEATURE_AF_PATTERNS
//~ #define FEATURE_MOVIE_AF // not reliable
#endif
/** Display menu **/
#define FEATURE_LV_BRIGHTNESS_CONTRAST
#define FEATURE_LV_SATURATION
#define FEATURE_LV_DISPLAY_GAIN
#define FEATURE_COLOR_SCHEME
#define FEATURE_CLEAR_OVERLAYS
#ifdef CONFIG_DISPLAY_FILTERS
#define FEATURE_DEFISHING_PREVIEW
#define FEATURE_ANAMORPHIC_PREVIEW
#endif
#ifdef CONFIG_ELECTRONIC_LEVEL
#ifdef CONFIG_PROP_REQUEST_CHANGE
#define FEATURE_LEVEL_INDICATOR
#endif
#endif
#define FEATURE_SCREEN_LAYOUT
#define FEATURE_IMAGE_POSITION
#define FEATURE_UPSIDE_DOWN
#ifdef CONFIG_VARIANGLE_DISPLAY
#ifdef CONFIG_PROP_REQUEST_CHANGE
#define FEATURE_IMAGE_ORIENTATION // for flip-out display only
#define FEATURE_AUTO_MIRRORING_HACK
#endif
#endif
#define FEATURE_FORCE_HDMI_VGA
//~ #define FEATURE_DISPLAY_SHAKE // looks ugly :P
/** Prefs menu **/
#define FEATURE_SET_MAINDIAL
#define FEATURE_PLAY_EXPOSURE_FUSION
#define FEATURE_PLAY_COMPARE_IMAGES
#define FEATURE_PLAY_TIMELAPSE
#define FEATURE_PLAY_EXPOSURE_ADJUST
#define FEATURE_PLAY_422
#define FEATURE_IMAGE_REVIEW_PLAY
#define FEATURE_QUICK_ZOOM
#ifdef CONFIG_Q_MENU_PLAYBACK
#define FEATURE_LV_BUTTON_PROTECT
#define FEATURE_LV_BUTTON_RATE
#endif
#define FEATURE_QUICK_ERASE
#ifdef CONFIG_PROP_REQUEST_CHANGE
#define FEATURE_LV_ZOOM_SETTINGS
#define FEATURE_LV_ZOOM_SHARP_CONTRAST
#ifdef CONFIG_EXPSIM
#define FEATURE_LV_ZOOM_AUTO_EXPOSURE
#endif
//~ #define FEATURE_ZOOM_TRICK_5D3 // not reliable
#define FEATURE_LV_FOCUS_BOX_FAST
#define FEATURE_LV_FOCUS_BOX_SNAP
#define FEATURE_LV_FOCUS_BOX_AUTOHIDE
#define FEATURE_ARROW_SHORTCUTS
#define FEATURE_STICKY_DOF
#define FEATURE_STICKY_HALFSHUTTER
//~ #define FEATURE_AUTO_BURST_PICQ // rebels only
#endif
//~ #define FEATURE_SWAP_MENU_ERASE // useful for 60D only
#define FEATURE_WARNINGS_FOR_BAD_SETTINGS
#ifdef CONFIG_PROP_REQUEST_CHANGE
#define FEATURE_POWERSAVE_LIVEVIEW
#endif
#define FEATURE_LV_DISPLAY_PRESETS
//~ #define FEATURE_EYEFI_TRICKS // EyeFi tricks confirmed working only on 600D-60D
//~ #define FEATURE_KEN_ROCKWELL_ZOOM_5D3
//~ #define FEATURE_DIGITAL_ZOOM_SHORTCUT
/** Debug menu **/
//~ #define FEATURE_SHOW_OVERLAY_FPS
#define FEATURE_SCREENSHOT
#define FEATURE_SCREENSHOT_422
#define FEATURE_DONT_CLICK_ME
#define FEATURE_SHOW_TASKS
#define FEATURE_SHOW_CPU_USAGE
#define FEATURE_SHOW_GUI_EVENTS
#define FEATURE_SHOW_IMAGE_BUFFERS_INFO
#define FEATURE_SHOW_FREE_MEMORY
#define FEATURE_SHOW_SHUTTER_COUNT
#define FEATURE_SHOW_CMOS_TEMPERATURE
#define FEATURE_SHOW_EDMAC_INFO
//~ #define FEATURE_SHOW_SIGNATURE // useful when developing
//~ #define FEATURE_GUIMODE_TEST // dangerous
//~ #define FEATURE_SHOW_STATE_FPS // useful for finding vsync hooks