source: trunk/include/camera.h @ 1338

Revision 1338, 15.1 KB checked in by philmoz, 21 months ago (diff)

Changes to core CHDK required to support IXUS310 (Elph500HS) & touch screen U/I.

  • Property svn:eol-style set to native
Line 
1// camera.h
2
3// This file contains the default values for various settings that may change across camera models.
4// Setting values specific to each camera model can be found in the platform/XXX/platform_camera.h file for camera.
5
6// If adding a new settings value put a suitable default value in here, along with documentation on
7// what the setting does and how to determine the correct value.
8// If the setting should not have a default value then add it here using the '#undef' directive
9// along with appropriate documentation.
10
11#ifndef CAMERA_H
12#define CAMERA_H
13
14//==========================================================
15// Camera-dependent settings
16//==========================================================
17
18//----------------------------------------------------------
19// Default values
20//----------------------------------------------------------
21
22#undef  CAM_DRYOS                               // Camera is DryOS-based
23#undef  CAM_PROPSET                             // Camera's properties group (the generation)
24#undef  CAM_DRYOS_2_3_R39                       // Define for cameras with DryOS release R39 or greater
25#undef  CAM_DRYOS_2_3_R47                       // Define for cameras with DryOS release R47 or greater
26
27#undef  CAM_SWIVEL_SCREEN                       // Camera has rotated LCD screen
28#define CAM_USE_ZOOM_FOR_MF         1           // Zoom lever can be used for manual focus adjustments
29#undef  CAM_ADJUSTABLE_ALT_BUTTON               // ALT-button can be set from menu
30#define CAM_REMOTE                  1           // Camera supports USB-remote
31#undef  SYNCHABLE_REMOTE_NOT_ENABLED            // Disable support for synchable remote switch (in kbd.c) TODO only used by one camera ???
32#define CAM_SYNCH                   1           // Camera supports SDM precision synch
33#undef  CAM_MULTIPART                           // Camera supports SD-card multipartitioning
34#define CAM_HAS_ZOOM_LEVER          1           // Camera has dedicated zoom buttons
35#undef  CAM_DRAW_EXPOSITION                     // Output expo-pair on screen (for cameras which (sometimes) don't do that)
36#define CAM_HAS_ERASE_BUTTON        1           // Camera has dedicated erase button
37#define CAM_HAS_IRIS_DIAPHRAGM      1           // Camera has real diaphragm mechanism (http://en.wikipedia.org/wiki/Diaphragm_%28optics%29)
38#undef  CAM_HAS_ND_FILTER                       // Camera has build-in ND filter
39#define CAM_CAN_SD_OVER_NOT_IN_MF   1           // Camera allows subject distance (focus) override when not in manual focus mode
40#define CAM_CAN_SD_OVERRIDE         1           // Camera allows to do subject distance override
41#define CAM_HAS_MANUAL_FOCUS        1           // Camera has manual focus mode
42#define CAM_HAS_USER_TV_MODES       1           // Camera has tv-priority or manual modes with ability to set tv value
43#undef  CAM_SHOW_OSD_IN_SHOOT_MENU              // On some cameras Canon shoot menu has additional functionality and useful in this case to see CHDK OSD in this mode
44#define CAM_CAN_UNLOCK_OPTICAL_ZOOM_IN_VIDEO  1 // Camera can unlock optical zoom in video (if it is locked)
45#undef  CAM_FEATURE_FEATHER                     // Cameras with "feather" or touch wheel.
46#define CAM_HAS_IS                  1           // Camera has image stabilizer
47#undef  CAM_HAS_JOGDIAL                         // Camera has a "jog dial"
48
49#undef  CAM_CONSOLE_LOG_ENABLED                 // Development: internal camera stdout -> A/stdout.txt
50#define CAM_CHDK_HAS_EXT_VIDEO_MENU 1           // In CHDK for this camera realized adjustable video compression
51#undef  CAM_CAN_MUTE_MICROPHONE                 // Camera has function to mute microphone
52
53#define CAM_EMUL_KEYPRESS_DELAY     40          // Delay to interpret <alt>-button press as longpress
54#define CAM_EMUL_KEYPRESS_DURATION  5           // Length of keypress emulation
55
56#define CAM_MENU_BORDERWIDTH        30          // Defines the width of the border on each side of the CHDK menu. The CHDK menu will have this
57                                                // many pixels left blank to the on each side. Should not be less than 10 to allow room for the
58                                                // scroll bar on the right.
59
60#undef  CAM_DETECT_SCREEN_ERASE                 // Define this to add 'guard' pixel to the screen bitmap to help detect if the firmware has erase the screen
61                                                // If the guard pixel changes the CHDK ALT menu is forced to redraw.
62                                                // Take care not to place CHDK OSD elements over the guard pixel.
63                                                // The guard pixel is the first pixel of the top row in the screen bitmap.
64
65#undef  CAM_TOUCHSCREEN_UI                      // Define to enable touch screen U/I (e.g. IXUS 310 HS)
66#define CAM_TS_BUTTON_BORDER        0           // Define this to leave a border on each side of the OSD display for touch screen buttons.
67                                                // Used on the IXUS 310 to stop the OSD from overlapping the on screen buttons on each side
68#define CAM_DISP_ALT_TEXT           1           // Display the '<ALT>' message at the bottom of the screen in ALT mode (IXUS 310 changes button color instead)
69
70#undef  CAM_AF_SCAN_DURING_VIDEO_RECORD         // CHDK can make single AF scan during video record
71#undef  CAM_HAS_VIDEO_BUTTON                    // Camera can take stills in video mode, and vice versa
72#undef  CAM_EV_IN_VIDEO                         // CHDK can change exposure in video mode
73#define CAM_VIDEO_CONTROL           1           // pause / unpause video recordings
74#undef  CAM_VIDEO_QUALITY_ONLY                  // Override Video Bitrate is not supported
75
76#define ZOOM_OVERRIDE               0           // Shall zoom-override be used? default 0 becoz not implemented right now
77
78#undef  CAM_REAR_CURTAIN                        // Camera do not have front/rear curtain flash sync in menu
79#undef  CAM_BRACKETING                          // Cameras that have bracketing (focus & ev) in original firmware already, most likely s- & g-series (propcase for digic III not found yet!)
80#undef  CAM_EXT_TV_RANGE                        // CHDK can make exposure time longer than 64s
81#define CAM_CHDK_PTP                1           // include CHDK PTP support
82
83#define CAM_UNCACHED_BIT            0x10000000  // bit indicating the uncached memory
84
85#define CAM_MAKE                    "Canon"
86#define CAM_SENSOR_BITS_PER_PIXEL   10          // Bits per pixel. 10 is standard, 12 is supported except for curves
87#define CAM_WHITE_LEVEL             ((1<<CAM_SENSOR_BITS_PER_PIXEL)-1)      // 10bpp = 1023 ((1<<10)-1), 12bpp = 4095 ((1<<12)-1)
88#define CAM_BLACK_LEVEL             ((1<<(CAM_SENSOR_BITS_PER_PIXEL-5))-1)  // 10bpp = 31 ((1<<5)-1),    12bpp = 127 ((1<<7)-1)
89
90#define CAM_BITMAP_PALETTE          1           // which color set is used for this camera
91
92#undef CAM_HAS_VARIABLE_ASPECT                  // can switch between 16:9 and 4:3
93
94// by nandoide sept-2009
95// zebra adjust buffer height: show use at sx200is: needed for save memory space
96#define ZEBRA_HMARGIN0              0
97
98// aspect corrections
99#define CAM_USES_ASPECT_CORRECTION  0           // if true, camera uses a modified graphics primitives to draw with exact display aspect-ratio.
100                                                // Could slow the graphics output (but not perceived on sx200is), but adds rectangle drawing optimizations to compensate.
101                                                // To extend to other cameras see sx200is camera.h comments in  and comments on core gui_draw.c
102#define CAM_USES_ASPECT_YCORRECTION 0
103
104// menu, alt (default)
105#define ASPECT_XCORRECTION(x)  ( ((x)<<1) )     // see comments on 200is
106#define ASPECT_YCORRECTION(y)  ( (y) )          // no correction the same for coordinate y. I think there are no cameras actually needing both corrections.
107// viewport, defaults used if there is no aspect correction
108#define ASPECT_VIEWPORT_XCORRECTION(x) ( (x) )  // see comments on 200is
109#define ASPECT_VIEWPORT_YCORRECTION(y) ( (y) )  // no correction
110
111#define EDGE_HMARGIN                0           // define sup and inf screen margins on edge overlay without overlay.  Necessary to save memory buffer space. sx200is needs values other than 0
112// end of section by nandoid
113
114#undef CAM_QUALITY_OVERRIDE                     // define this in platform_camera.h to enable 'Super Fine' JPEG compression mode
115                                                // used to allow super fine JPEG option on cameras where this has been removed
116                                                // from the Canon menu. Note: may not actually work on all cameras.
117
118#undef CAM_ZEBRA_ASPECT_ADJUST                  // zebra needs to account for real bitmap size being different from what lib.c reports
119                                                // also used by some cameras with normal bitmap layouts for memory saving ?
120#undef CAM_ZEBRA_NOBUF                          // zebra draws directly on bitmap buffer. Requires above as well
121
122#undef CAM_DATE_FOLDER_NAMING                   // set if camera uses date based folder naming (Option "Create Folder" in Canon Menu) and get_target_dir_name is implemented
123
124#undef CAM_KEY_CLICK_DELAY                      // additional delay between press and release for scripted click
125#define CAM_KEY_PRESS_DELAY         20          // delay after a press - TODO can we combine this with above ?
126#define CAM_KEY_RELEASE_DELAY       20          // delay after a release - TODO do we really need to wait after release ?
127
128#undef  CAM_DATE_FOLDER_NAMING                  // Camera uses date for naming image folders
129
130#undef  CAM_STARTUP_CRASH_FILE_OPEN_FIX         // enable fix for camera intermittently crash at startup when opening the conf / font files
131                                                // Some cameras throw "ASSERT!! FsIoNotify.c Line xxx    Task name: SpyTask" in ROMLOG
132                                                // see http://chdk.setepontos.com/index.php?topic=6179.0
133
134// RAW & DNG related values
135#define DNG_SUPPORT                 1           // Camera supports DNG format for saving of RAW images
136#define DEFAULT_RAW_EXT             1           // extension to use for raw (see raw_exts in conf.c)
137#undef  CAM_RAW_ROWPIX                          // Number of pixels in RAW row (physical size of the sensor Note : as of July 2011, this value can be found in stub_entry.S for dryos cameras)
138#undef  CAM_RAW_ROWS                            // Number of rows in RAW (physical size of the sensor       Note : as of July 2011, this value can be found in stub_entry.S for dryos cameras)
139#undef  CAM_JPEG_WIDTH                          // Default crop size (width) stored in DNG (to match camera JPEG size. From dimensions of the largest size jpeg your camera produces)
140#undef  CAM_JPEG_HEIGHT                         // Default crop size (height) stored in DNG (to match camera JPEG size. From dimensions of the largest size jpeg your camera produces)
141#undef  CAM_ACTIVE_AREA_X1                      // Define usable area of the sensor - needs to be divisible by 4 - calibrate using a CHDK RAW image converted with rawconvert.exe (eg :rawconvert -12to8 -pgm -w=4480 -h=3348 photo.crw photo.pgm)
142#undef  CAM_ACTIVE_AREA_Y1                      // Define usable area of the sensor - needs to be divisible by 2 - "
143#undef  CAM_ACTIVE_AREA_X2                      // Define usable area of the sensor - needs to be divisible by 4 - "
144#undef  CAM_ACTIVE_AREA_Y2                      // Define usable area of the sensor - needs to be divisible by 2 = "
145#undef  cam_CFAPattern                          // Camera Bayer sensor data layout (DNG colors are messed up if not correct - should be either 0x01000201 = [Green Blue Red Green]  or 0x02010100 = [Red  Green  Green  Blue]
146#undef  CAM_COLORMATRIX1                        // DNG color profile matrix
147#undef  cam_CalibrationIlluminant1              // DNG color profile illuminant - set it to 17 for standard light A
148#undef  CAM_DNG_EXPOSURE_BIAS                   // Specify DNG exposure bias value (to override default of -0.5 in the dng.c code)
149#undef  DNG_EXT_FROM                            // Extension in the cameras known extensions to replace with .DNG to allow DNG
150                                                // files to be transfered over standard PTP. Only applicable to older cameras
151#undef  DNG_VERT_RLE_BADPIXELS                  // Enable vertical run length compression of badpixel data for DNG
152                                                // IXUS 310 HS bad pixels tend to be grouped into vertical lines of 1-4 pixels
153                                                // This reduces the file size by approx 45%
154
155// Games definitions
156#define GAMES_SCREEN_WIDTH            360        // Logical screen width for games
157#define GAMES_SCREEN_HEIGHT            240       // Logical screen height for games
158#define ASPECT_GAMES_XCORRECTION(x)    ((x)<<1)  // Aspect ratio correction for games. Default for games is 360x240 logical screen. Physical camera screen is
159#define ASPECT_GAMES_YCORRECTION(y)    (y)       // 720x240 so x*2 needed for X axis correction, no correction for Y.
160
161// Grid definitions
162#define ASPECT_GRID_XCORRECTION(x)    (x)        // Aspect ratio correction for grids. Grids are designed on a 360x240 logical screen size which matches the
163#define ASPECT_GRID_YCORRECTION(y)    (y)        // default CHDK logical screen size so no correction needed.
164
165#undef  PARAM_CAMERA_NAME                        // parameter number for GetParameterData to get camera name
166
167
168#undef  CAM_FIRMWARE_MEMINFO                     // Use 'GetMemInfo' (dryos) or 'memPartInfoGet'/'memPartFindMax' (vxworks)
169                                                 // function in firmware to get free memory details
170                                                 // GetMemInfo should be found correctly by the gensig/finsig signature
171                                                 // finder for all dryos based cameras.
172
173#undef CAM_NO_MEMPARTINFO                        // VXWORKS camera does not have memPartInfoGet, fall back to memPartFindMax
174
175
176#undef CAM_DRIVE_MODE_FROM_TIMER_MODE            // use PROPCASE_TIMER_MODE to check for multiple shot custom timer.
177                                                 // Used to enabled bracketing in custom timer, required on many recent cameras
178                                                 // see http://chdk.setepontos.com/index.php/topic,3994.405.html
179
180#undef CAM_AV_OVERRIDE_IRIS_FIX                  // for cameras that require _MoveIrisWithAv function to override Av (for bracketing).
181
182#undef CAM_DISABLE_RAW_IN_LOW_LIGHT_MODE         // For cameras with 'low light' mode that does now work with raw define this
183
184//----------------------------------------------------------
185// Override Default values for Camera if necessary
186//----------------------------------------------------------
187
188// Include the settings file for the camera model currently being compiled.
189#include "platform_camera.h"
190
191//==========================================================
192// END of Camera-dependent settings
193//==========================================================
194
195
196// curves only work in 10bpp for now
197#if CAM_SENSOR_BITS_PER_PIXEL != 10
198#undef OPT_CURVES
199#endif
200
201#ifndef OPT_PTP
202#undef CAM_CHDK_PTP
203#endif
204
205#endif /* CAMERA_H */
Note: See TracBrowser for help on using the repository browser.