source: trunk/include/camera.h @ 1237

Revision 1237, 12.2 KB checked in by msl, 2 years ago (diff)

S95 (Thx whim)
http://chdk.setepontos.com/index.php?topic=650.msg70137#msg70137
+ correction JPG width/height & CAM_ACTIVE_AREA

A1100 (Thx philmoz)
http://chdk.setepontos.com/index.php?topic=650.msg70148#msg70148

  • new palette for a1100

G12/SX30/SX220 (Thx funnel & philmoz)
http://chdk.setepontos.com/index.php?topic=650.msg70150#msg70150

  • new definition CAM_AV_OVERRIDE_IRIS_FIX

SX220 (Thx funnel)
http://chdk.setepontos.com/index.php?topic=650.msg70150#msg70150

  • added the adjustable ALT button code in core/gui.c and camera/kbd.c

+ fixed and added two new modes in camera/shooting.c modelist

  • added CAM_KEY_CLICK_DELAY 150 to platform_camera.h like the sx30 to fix the button clicks in ptp
  • 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
25#undef  CAM_SWIVEL_SCREEN                       // Camera has rotated LCD screen
26#define CAM_USE_ZOOM_FOR_MF         1           // Zoom lever can be used for manual focus adjustments
27#undef  CAM_ADJUSTABLE_ALT_BUTTON               // ALT-button can be set from menu
28#define CAM_REMOTE                  1           // Camera supports USB-remote
29#undef  SYNCHABLE_REMOTE_NOT_ENABLED            // Disable support for synchable remote switch (in kbd.c) TODO only used by one camera ???
30#define CAM_SYNCH                   1           // Camera supports SDM precision synch
31#undef  CAM_MULTIPART                           // Camera supports SD-card multipartitioning
32#define CAM_HAS_ZOOM_LEVER          1           // Camera has dedicated zoom buttons
33#undef  CAM_DRAW_EXPOSITION                     // Output expo-pair on screen (for cameras which (sometimes) don't do that)
34#define CAM_HAS_ERASE_BUTTON        1           // Camera has dedicated erase button
35#define CAM_HAS_IRIS_DIAPHRAGM      1           // Camera has real diaphragm mechanism
36#undef  CAM_HAS_ND_FILTER                       // Camera has build-in ND filter
37#define CAM_CAN_SD_OVER_NOT_IN_MF   1           // Camera allows subject distance (focus) override when not in manual focus mode
38#define CAM_CAN_SD_OVERRIDE         1           // Camera allows to do subject distance override
39#define CAM_HAS_MANUAL_FOCUS        1           // Camera has manual focus mode
40#define CAM_HAS_USER_TV_MODES       1           // Camera has tv-priority or manual modes with ability to set tv value
41#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
42#define CAM_CAN_UNLOCK_OPTICAL_ZOOM_IN_VIDEO  1 // Camera can unlock optical zoom in video (if it is locked)
43#undef  CAM_FEATURE_FEATHER                     // Cameras with "feather" or touch wheel.
44#define CAM_HAS_IS                  1           // Camera has image stabilizer
45#undef  CAM_HAS_JOGDIAL                         // Camera has a "jog dial"
46
47#undef  CAM_CONSOLE_LOG_ENABLED                 // Development: internal camera stdout -> A/stdout.txt
48#define CAM_CHDK_HAS_EXT_VIDEO_MENU 1           // In CHDK for this camera realized adjustable video compression
49#undef  CAM_CAN_MUTE_MICROPHONE                 // Camera has function to mute microphone
50
51#define CAM_EMUL_KEYPRESS_DELAY     40          // Delay to interpret <alt>-button press as longpress
52#define CAM_EMUL_KEYPRESS_DURATION  5           // Length of keypress emulation
53
54#define CAM_MENU_BORDERWIDTH        30          // Related to screen layout somehow.
55                                                // TODO someone explain what this does, probably doesn't really belong here
56
57#undef  CAM_AF_SCAN_DURING_VIDEO_RECORD         // CHDK can make single AF scan during video record
58#undef  CAM_HAS_VIDEO_BUTTON                    // Camera can take stills in video mode, and vice versa
59#undef  CAM_EV_IN_VIDEO                         // CHDK can change exposure in video mode
60#define CAM_VIDEO_CONTROL           1           // pause / unpause video recordings
61#undef  CAM_VIDEO_QUALITY_ONLY                  // Override Video Bitrate is not supported
62
63#define ZOOM_OVERRIDE               0           // Shall zoom-override be used? default 0 becoz not implemented right now
64
65#undef  CAM_REAR_CURTAIN                        // Camera do not have front/rear curtain flash sync in menu
66#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!)
67#undef  CAM_EXT_TV_RANGE                        // CHDK can make exposure time longer than 64s
68#define CAM_CHDK_PTP                1           // include CHDK PTP support
69
70#define CAM_UNCACHED_BIT            0x10000000  // bit indicating the uncached memory
71
72#define CAM_MAKE                    "Canon"
73#define CAM_SENSOR_BITS_PER_PIXEL   10          // Bits per pixel. 10 is standard, 12 is supported except for curves
74#define CAM_WHITE_LEVEL             ((1<<CAM_SENSOR_BITS_PER_PIXEL)-1)      // 10bpp = 1023 ((1<<10)-1), 12bpp = 4095 ((1<<12)-1)
75#define CAM_BLACK_LEVEL             ((1<<(CAM_SENSOR_BITS_PER_PIXEL-5))-1)  // 10bpp = 31 ((1<<5)-1),    12bpp = 127 ((1<<7)-1)
76
77#define CAM_BITMAP_PALETTE          1           // which color set is used for this camera
78
79#undef CAM_HAS_VARIABLE_ASPECT                  // can switch between 16:9 and 4:3
80
81// by nandoide sept-2009
82// zebra adjust buffer height: show use at sx200is: needed for save memory space
83#define ZEBRA_HMARGIN0              0
84
85// aspect corrections
86#define CAM_USES_ASPECT_CORRECTION  0           // if true, camera uses a modified graphics primitives to draw with exact display aspect-ratio.
87                                                // Could slow the graphics output (but not perceived on sx200is), but adds rectangle drawing optimizations to compensate.
88                                                // To extend to other cameras see sx200is camera.h comments in  and comments on core gui_draw.c
89#define CAM_USES_ASPECT_YCORRECTION 0
90
91// menu, alt (default)
92#define ASPECT_XCORRECTION(x)  ( ((x)<<1) )     // see comments on 200is
93#define ASPECT_YCORRECTION(y)  ( (y) )          // no correction the same for coordinate y. I think there are no cameras actually needing both corrections.
94// viewport, defaults used if there is no aspect correction
95#define ASPECT_VIEWPORT_XCORRECTION(x) ( (x) )  // see comments on 200is
96#define ASPECT_VIEWPORT_YCORRECTION(y) ( (y) )  // no correction
97
98#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
99// end of section by nandoid
100
101#undef CAM_QUALITY_OVERRIDE                     // define this in platform_camera.h to enable 'Super Fine' JPEG compression mode
102                                                                                                // used to allow super fine JPEG option on cameras where this has been removed
103                                                                                                // from the Canon menu. Note: may not actually work on all cameras.
104
105#undef CAM_ZEBRA_ASPECT_ADJUST                  // zebra needs to account for real bitmap size being different from what lib.c reports
106                                                // also used by some cameras with normal bitmap layouts for memory saving ?
107#undef CAM_ZEBRA_NOBUF                          // zebra draws directly on bitmap buffer. Requires above as well
108
109#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
110
111#undef CAM_KEY_CLICK_DELAY                      // additional delay between press and release for scripted click
112#define CAM_KEY_PRESS_DELAY         20          // delay after a press - TODO can we combine this with above ?
113#define CAM_KEY_RELEASE_DELAY       20          // delay after a release - TODO do we really need to wait after release ?
114
115#undef  CAM_DATE_FOLDER_NAMING                  // Camera uses date for naming image folders
116
117#undef  CAM_STARTUP_CRASH_FILE_OPEN_FIX         // enable fix for camera crash at startup when opening the conf / font files
118                                                // see http://chdk.setepontos.com/index.php?topic=6179.0
119
120// RAW & DNG related values
121#define DNG_SUPPORT                 1           // Camera supports DNG format for saving of RAW images
122#define DEFAULT_RAW_EXT             1           // extension to use for raw (see raw_exts in conf.c)
123#undef  CAM_RAW_ROWPIX                          // Number of pixels in RAW row (physical size of the sensor)
124#undef  CAM_RAW_ROWS                            // Number of rows in RAW (physical size of the sensor)
125#undef  CAM_JPEG_WIDTH                          // Default crop size (width) stored in DNG (to match camera JPEG size)
126#undef  CAM_JPEG_HEIGHT                         // Default crop size (height) stored in DNG (to match camera JPEG size)
127#undef  CAM_ACTIVE_AREA_X1                      // Define usable area of the sensor
128#undef  CAM_ACTIVE_AREA_Y1                      // Define usable area of the sensor
129#undef  CAM_ACTIVE_AREA_X2                      // Define usable area of the sensor
130#undef  CAM_ACTIVE_AREA_Y2                      // Define usable area of the sensor
131#undef  cam_CFAPattern                          // Camera Bayer sensor data layout
132#undef  CAM_COLORMATRIX1                        // DNG color profile matrix
133#undef  cam_CalibrationIlluminant1              // DNG color profile illuminant
134#undef  CAM_DNG_EXPOSURE_BIAS                   // Specify DNG exposure bias value (to override default of -0.5 in the dng.c code)
135#undef  DNG_EXT_FROM                            // Extension in the cameras known extensions to replace with .DNG to allow DNG
136                                                // files to be transfered over standard PTP. Only applicable to older cameras
137
138// Games definitions
139#define GAMES_SCREEN_WIDTH            360        // Logical screen width for games
140#define GAMES_SCREEN_HEIGHT            240       // Logical screen height for games
141#define ASPECT_GAMES_XCORRECTION(x)    ((x)<<1)  // Aspect ratio correction for games. Default for games is 360x240 logical screen. Physical camera screen is
142#define ASPECT_GAMES_YCORRECTION(y)    (y)       // 720x240 so x*2 needed for X axis correction, no correction for Y.
143
144// Grid definitions
145#define ASPECT_GRID_XCORRECTION(x)    (x)        // Aspect ratio correction for grids. Grids are designed on a 360x240 logical screen size which matches the
146#define ASPECT_GRID_YCORRECTION(y)    (y)        // default CHDK logical screen size so no correction needed.
147
148#undef    PARAM_CAMERA_NAME                      // parameter number for GetParameterData to get camera name
149
150
151#undef  CAM_FIRMWARE_MEMINFO                    // Use 'GetMemInfo' (dryos) or 'memPartInfoGet'/'memPartFindMax' (vxworks)
152                                                // function in firmware to get free memory details
153                                                // GetMemInfo should be found correctly by the gensig/finsig signature
154                                                // finder for all dryos based cameras.
155
156#undef CAM_NO_MEMPARTINFO                      // VXWORKS camera does not have memPartInfoGet, fall back to memPartFindMax
157
158
159#undef CAM_DRIVE_MODE_FROM_TIMER_MODE           // use PROPCASE_TIMER_MODE to check for multiple shot custom timer.
160                                                // Used to enabled bracketing in custom timer, required on many recent cameras
161                                                // see http://chdk.setepontos.com/index.php/topic,3994.405.html
162
163#undef CAM_AV_OVERRIDE_IRIS_FIX                                 // for cameras that require _MoveIrisWithAv function to override Av.
164
165//----------------------------------------------------------
166// Override Default values for Camera if necessary
167//----------------------------------------------------------
168
169// Include the settings file for the camera model currently being compiled.
170#include "platform_camera.h"
171
172//==========================================================
173// END of Camera-dependent settings
174//==========================================================
175
176
177// curves only work in 10bpp for now
178#if CAM_SENSOR_BITS_PER_PIXEL != 10
179#undef OPT_CURVES
180#endif
181
182#ifndef OPT_PTP
183#undef CAM_CHDK_PTP
184#endif
185
186#endif /* CAMERA_H */
Note: See TracBrowser for help on using the repository browser.