source: trunk/include/camera.h @ 900

Revision 900, 102.4 KB checked in by fe50, 3 years ago (diff)

Notes:
The SX20 has a very small amount of free ram once CHDK is loaded - so low that edge detection and zebra crashes the camera.
Unloading the games from this build free's 14k of ram allowing zebra and edge to work normally and the random crashes to go away

  • For now, this SX20 port is commented out in the main makefile - therefore the Autobuild Server will not deliver binaries yet
  • Property svn:eol-style set to native
Line 
1#ifndef CAMERA_H
2#define CAMERA_H
3
4//==========================================================
5// Camera-dependent settings
6//==========================================================
7
8//----------------------------------------------------------
9// Default values
10//----------------------------------------------------------
11    #undef  CAM_RAW_ROWPIX                  // Number of pixels in RAW row
12    #undef  CAM_RAW_ROWS                    // Number of rows in RAW
13   
14    #undef  CAM_DRYOS                       // Camera is DryOS-based
15    #undef  CAM_PROPSET                     // Camera's properties group (the generation)
16   
17    #undef  CAM_SWIVEL_SCREEN               // Camera has rotated LCD screen
18    #define CAM_USE_ZOOM_FOR_MF         1   // Zoom lever can be used for manual focus adjustments
19    #undef  CAM_ADJUSTABLE_ALT_BUTTON       // ALT-button can be set from menu
20    #define CAM_REMOTE                  1   // Camera supports USB-remote
21    #define CAM_SYNCH                   1   // Camera supports SDM precision synch
22    #undef  CAM_MULTIPART                   // Camera supports SD-card multipartitioning
23    #define CAM_HAS_ZOOM_LEVER          1   // Camera has dedicated zoom buttons
24    #undef  CAM_DRAW_EXPOSITION             // Output expo-pair on screen (for cameras which (sometimes) don't do that)
25    #define CAM_HAS_ERASE_BUTTON        1   // Camera has dedicated erase button
26    #define CAM_HAS_IRIS_DIAPHRAGM      1   // Camera has real diaphragm mechanism
27    #undef  CAM_HAS_ND_FILTER               // Camera has build-in ND filter
28    #define CAM_CAN_SD_OVER_NOT_IN_MF   1   // Camera allows subject distance (focus) override when not in manual focus mode
29    #define CAM_CAN_SD_OVERRIDE         1   // Camera allows to do subject distance override
30    #define CAM_HAS_MANUAL_FOCUS        1   // Camera has manual focus mode
31    #define CAM_HAS_USER_TV_MODES       1   // Camera has tv-priority or manual modes with ability to set tv value
32    #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 
33    #define CAM_CAN_UNLOCK_OPTICAL_ZOOM_IN_VIDEO  1 // Camera can unlock optical zoom in video (if it is locked)
34    #undef  CAM_FEATURE_FEATHER             // Cameras with "feather" or touch wheel.
35    #define CAM_HAS_IS                  1   // Camera has image stabilizer
36    #undef  CAM_HAS_JOGDIAL                 // Camera has a "jog dial"
37
38    #undef  CAM_CONSOLE_LOG_ENABLED         // Development: internal camera stdout -> A/stdout.txt
39    #define CAM_CHDK_HAS_EXT_VIDEO_MENU 1   // In CHDK for this camera realized adjustable video compression
40    #undef  CAM_CAN_MUTE_MICROPHONE         // Camera has function to mute microphone
41
42    #define CAM_EMUL_KEYPRESS_DELAY     40  // Delay to interpret <alt>-button press as longpress
43    #define CAM_EMUL_KEYPRESS_DURATION  5   // Length of keypress emulation
44
45    #undef  CAM_AF_SCAN_DURING_VIDEO_RECORD // CHDK can make single AF scan during video record
46    #undef  CAM_HAS_VIDEO_BUTTON            // Camera can take stills in video mode, and vice versa
47    #undef  CAM_EV_IN_VIDEO                 // CHDK can change exposure in video mode
48    #define CAM_VIDEO_CONTROL      1   // pause / unpause video recordings
49
50    #define ZOOM_OVERRIDE               0   // Shall zoom-override be used? default 0 becoz not implemented right now
51    #undef  DNG_SUPPORT                 
52    #undef  CAM_REAR_CURTAIN                // Camera do not have front/rear curtain flash sync in menu
53    #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!)
54    #undef  CAM_EXT_TV_RANGE             // CHDK can make exposure time longer than 64s
55
56    #define CAM_UNCACHED_BIT    0x10000000 // bit indicating the uncached memory
57
58    #define CAM_MAKE                    "Canon"
59    #define CAM_SENSOR_BITS_PER_PIXEL   10  // Bits per pixel. 10 is standard, 12 is supported except for curves
60    #define CAM_WHITE_LEVEL             ((1<<CAM_SENSOR_BITS_PER_PIXEL)-1)
61    #define CAM_BLACK_LEVEL             31
62
63    #define CAM_BITMAP_PALETTE          1 // which color set is used for this camera
64               
65    #undef CAM_HAS_VARIABLE_ASPECT         // can switch between 16:9 and 4:3
66    #define DEFAULT_RAW_EXT             1  // extension to use for raw (see raw_exts in conf.c)
67
68    // by nandoide sept-2009
69    //zebra adjust buffer height: show use at sx200is: needed for save memory space
70    #define ZEBRA_HMARGIN0  0
71   
72    //aspect corrections
73    #define CAM_USES_ASPECT_CORRECTION   0   //if true, camera uses a modified graphics primitives to draw with exact display aspect-ratio.
74                                                                   // Could slow the graphics output (but not perceived on sx200is), but adds rectangle drawing optimizations to compensate.
75                                                                   // To extend to other cameras see sx200is camera.h comments in  and comments on core gui_draw.c
76    #define CAM_USES_ASPECT_YCORRECTION   0
77 
78    //menu, alt (default)
79    #define ASPECT_XCORRECTION(x)  ( ((x)<<1) )  //see comments on 200is
80    #define ASPECT_YCORRECTION(y)  ( (y) )         //no correction the same for coordinate y. I think there are no cameras actually needing both corrections.
81    //viewport, defaults used if there is no aspect correction
82    #define ASPECT_VIEWPORT_XCORRECTION(x) ( (x) ) // see comments on 200is
83    #define ASPECT_VIEWPORT_YCORRECTION(y) ( (y) )       //no correction
84   
85    #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
86    // end of section by nandoid
87   
88    #undef CAM_QUALITY_OVERRIDE //camera may need shooting quality override (sx200is lacks SuperFine quality)
89//----------------------------------------------------------
90// Overridden values for each camera
91//----------------------------------------------------------
92
93//==========================================================
94// G-series
95//==========================================================
96#if   defined (CAMERA_g7)
97    #define CAM_PROPSET                 1
98
99    #define CAM_RAW_ROWPIX              3736   // for 10 MP
100    #define CAM_RAW_ROWS                2772   // for 10 MP
101   
102    #undef  CAM_USE_ZOOM_FOR_MF
103    #define CAM_ADJUSTABLE_ALT_BUTTON   1
104    #define CAM_MULTIPART               1
105    #define CAM_HAS_ND_FILTER           1
106    #define CAM_AF_SCAN_DURING_VIDEO_RECORD 1
107        #define CAM_HAS_JOGDIAL             1
108    #define DNG_SUPPORT                 1
109    // pattern
110    #define cam_CFAPattern 0x02010100 // Red  Green  Green  Blue
111    // color
112    #define CAM_COLORMATRIX1                              \
113      575419, 1000000,-185557, 1000000, -77898,  1000000, \
114     -213702, 1000000, 733569, 1000000,   81514, 1000000, \
115      -24604, 1000000, 131906, 1000000,  280378, 1000000
116   
117    #define cam_CalibrationIlluminant1 1 // Daylight
118    // cropping
119    #define CAM_JPEG_WIDTH  3648
120    #define CAM_JPEG_HEIGHT 2736
121    #define CAM_ACTIVE_AREA_X1 14
122    #define CAM_ACTIVE_AREA_Y1 8
123    #define CAM_ACTIVE_AREA_X2 3682
124    #define CAM_ACTIVE_AREA_Y2 2764
125    // camera name
126    #define PARAM_CAMERA_NAME 4 // parameter number for GetParameterData
127    #define CAM_BRACKETING              1   
128    #define DNG_EXT_FROM ".DPS"
129 //----------------------------------------------------------
130#elif defined (CAMERA_g9)
131    #define CAM_PROPSET                 2
132    #define CAM_DRYOS                   1
133
134    #define CAM_RAW_ROWPIX              4104   // for 12 MP
135    #define CAM_RAW_ROWS                3048   // for 12 MP
136    #define CAM_HAS_ND_FILTER           1
137    #define CAM_ADJUSTABLE_ALT_BUTTON   1
138    #undef  CAM_EMUL_KEYPRESS_DURATION
139    #define CAM_EMUL_KEYPRESS_DURATION  10
140    #define CAM_AF_SCAN_DURING_VIDEO_RECORD 1
141    #define CAM_HAS_JOGDIAL             1
142//      #define CAM_CONSOLE_LOG_ENABLED     1
143    #define CAM_BRACKETING              1
144    #define CAM_MULTIPART               1
145    #define CAM_EXT_TV_RANGE            1
146//==========================================================
147// A-series
148//==========================================================
149#elif defined (CAMERA_a450)
150    #define CAM_PROPSET                 2
151
152    #define CAM_RAW_ROWPIX              2664   // for 5 MP 1/3" sensor size
153    #define CAM_RAW_ROWS                1968   // for 5 MP 1/3" sensor size
154
155    #undef  CAM_USE_ZOOM_FOR_MF
156    #undef  CAM_HAS_ZOOM_LEVER
157    #define CAM_DRAW_EXPOSITION         1
158    #undef  CAM_HAS_ERASE_BUTTON
159    #undef  CAM_HAS_IRIS_DIAPHRAGM
160    #define CAM_HAS_ND_FILTER           1
161    #undef  CAM_HAS_MANUAL_FOCUS
162    #undef  CAM_HAS_USER_TV_MODES
163    #define CAM_SHOW_OSD_IN_SHOOT_MENU  1
164    #undef  CAM_HAS_IS
165    #define CAM_CAN_MUTE_MICROPHONE     1
166    #define CAM_AF_SCAN_DURING_VIDEO_RECORD 1
167    #define CAM_EV_IN_VIDEO             1
168    #define DNG_SUPPORT                 1
169    // pattern
170    #define cam_CFAPattern 0x02010100 // Red  Green  Green  Blue
171    // color
172    #define CAM_COLORMATRIX1                               \
173      652279,  1000000,-199279, 1000000, -101833, 1000000, \
174     -159819,  1000000, 619308, 1000000,   78172, 1000000, \
175      -58827,  1000000, 150963, 1000000,  264216, 1000000
176   
177    #define cam_CalibrationIlluminant1 1 // Daylight
178    // cropping
179    #define CAM_JPEG_WIDTH  2592
180    #define CAM_JPEG_HEIGHT 1944
181    #define CAM_ACTIVE_AREA_X1 6
182    #define CAM_ACTIVE_AREA_Y1 6
183    #define CAM_ACTIVE_AREA_X2 2618
184    #define CAM_ACTIVE_AREA_Y2 1962
185    // camera name
186    #define PARAM_CAMERA_NAME 4 // parameter number for GetParameterData
187
188   
189//----------------------------------------------------------
190#elif defined (CAMERA_a460)
191    #define CAM_PROPSET                 2
192
193    #define CAM_RAW_ROWPIX              2664   // for 5 MP 1/3" sensor size
194    #define CAM_RAW_ROWS                1968   // for 5 MP 1/3" sensor size
195
196    #undef  CAM_USE_ZOOM_FOR_MF
197    #undef  CAM_HAS_ZOOM_LEVER
198    #define CAM_DRAW_EXPOSITION         1
199    #undef  CAM_HAS_ERASE_BUTTON
200    #undef  CAM_HAS_IRIS_DIAPHRAGM
201    #define CAM_HAS_ND_FILTER           1
202    #undef  CAM_HAS_MANUAL_FOCUS
203    #undef  CAM_HAS_USER_TV_MODES
204    #define CAM_SHOW_OSD_IN_SHOOT_MENU  1
205    #undef  CAM_HAS_IS
206    #define CAM_CAN_MUTE_MICROPHONE     1
207    #define CAM_AF_SCAN_DURING_VIDEO_RECORD 1
208    #define CAM_EV_IN_VIDEO             1
209    #define DNG_SUPPORT                 1
210    // pattern
211    #define cam_CFAPattern 0x02010100 // Red  Green  Green  Blue
212    // color
213    #define CAM_COLORMATRIX1                               \
214      649324,  1000000,-233893, 1000000, -88521, 1000000,  \
215     -158955,  1000000, 593407, 1000000,  69775, 1000000,  \
216      -44551,  1000000, 136891, 1000000, 254362, 1000000   
217   
218    #define cam_CalibrationIlluminant1 1 // Daylight
219    // cropping
220    #define CAM_JPEG_WIDTH  2592
221    #define CAM_JPEG_HEIGHT 1944
222    #define CAM_ACTIVE_AREA_X1 6
223    #define CAM_ACTIVE_AREA_Y1 6
224    #define CAM_ACTIVE_AREA_X2 2618
225    #define CAM_ACTIVE_AREA_Y2 1962
226    // camera name
227    #define PARAM_CAMERA_NAME 4 // parameter number for GetParameterData
228    #define DNG_EXT_FROM ".DPS"
229
230//----------------------------------------------------------
231#elif defined (CAMERA_a470)
232        #define CAM_PROPSET                 2
233        #define CAM_DRYOS                   1
234
235    #define CAM_RAW_ROWPIX              3152   // for 7 MP
236    #define CAM_RAW_ROWS                2340   // for 7 MP
237
238        #undef  CAM_USE_ZOOM_FOR_MF
239        #undef  CAM_HAS_ZOOM_LEVER
240        #undef  CAM_HAS_ERASE_BUTTON
241        #undef  CAM_HAS_IRIS_DIAPHRAGM
242        #define CAM_HAS_ND_FILTER           1
243        #undef  CAM_HAS_MANUAL_FOCUS
244        #undef  CAM_HAS_USER_TV_MODES
245        #define CAM_SHOW_OSD_IN_SHOOT_MENU  1
246        #undef  CAM_HAS_IS
247        #define CAM_CAN_MUTE_MICROPHONE     1
248        #define CAM_AF_SCAN_DURING_VIDEO_RECORD 1
249        #define CAM_EV_IN_VIDEO             1
250        #define DNG_SUPPORT                 1
251        #define CAM_MULTIPART               1
252       
253    // pattern
254    #define cam_CFAPattern 0x02010100 // Red  Green  Green  Blue
255    // color
256    #define CAM_COLORMATRIX1                             \
257        673251,  1000000,-200684, 1000000, -98680, 1000000,  \
258        -163638, 1000000, 651247, 1000000,  74004, 1000000,  \
259        14221,   1000000, 52979,  1000000, 265291, 1000000   
260    #define cam_CalibrationIlluminant1 1 // Daylight
261    // cropping
262        #define CAM_JPEG_WIDTH  3096
263        #define CAM_JPEG_HEIGHT 2324
264        #define CAM_ACTIVE_AREA_X1 12
265        #define CAM_ACTIVE_AREA_Y1 8
266        #define CAM_ACTIVE_AREA_X2 3108
267        #define CAM_ACTIVE_AREA_Y2 2332
268    // camera name
269    #define PARAM_CAMERA_NAME 4 // parameter number for GetParameterData
270    //#define DNG_EXT_FROM ".DPS"       
271//----------------------------------------------------------
272
273#elif defined (CAMERA_a480)
274    #define CAM_PROPSET                 2
275    #define CAM_DRYOS                   1
276
277    #define CAM_RAW_ROWPIX              3720   
278    #define CAM_RAW_ROWS                2772   
279
280    #undef  CAM_USE_ZOOM_FOR_MF
281    #undef  CAM_HAS_ERASE_BUTTON
282    #undef  CAM_HAS_IRIS_DIAPHRAGM
283    #define CAM_HAS_ND_FILTER           1
284    #undef  CAM_HAS_MANUAL_FOCUS
285    #undef  CAM_HAS_USER_TV_MODES
286    #undef  CAM_HAS_IS
287    #define CAM_MULTIPART               1
288    #undef  CAM_VIDEO_CONTROL
289    #define CAM_REAR_CURTAIN            1
290    #undef  DEFAULT_RAW_EXT
291    #define DEFAULT_RAW_EXT             2   // use .CR2
292    #define CAM_EXT_TV_RANGE            1
293    #define CAM_AF_SCAN_DURING_VIDEO_RECORD 1
294    #define CAM_CAN_MUTE_MICROPHONE     1
295    #define CAM_EV_IN_VIDEO             1
296
297    #define DNG_SUPPORT                 1
298    // pattern
299    #define cam_CFAPattern 0x02010100 // Red  Green  Green  Blue
300    // color
301
302    #define CAM_COLORMATRIX1                               \
303      827547, 1000000, -290458, 1000000, -126086, 1000000, \
304     -12829,  1000000, 530507,  1000000, 50537,   1000000, \
305      5181,   1000000, 48183,   1000000, 245014,  1000000
306
307    #define cam_CalibrationIlluminant1 1 // Daylight
308    // cropping
309    #define CAM_JPEG_WIDTH  3648
310    #define CAM_JPEG_HEIGHT 2736
311    #define CAM_ACTIVE_AREA_X1 6
312    #define CAM_ACTIVE_AREA_Y1 12
313    #define CAM_ACTIVE_AREA_X2 3690
314    #define CAM_ACTIVE_AREA_Y2 2772
315
316    // camera name
317    #define PARAM_CAMERA_NAME 4 // parameter number for GetParameterData
318    #undef  CAM_SENSOR_BITS_PER_PIXEL
319    #undef  CAM_WHITE_LEVEL
320    #undef  CAM_BLACK_LEVEL
321    #define CAM_SENSOR_BITS_PER_PIXEL   12
322    #define CAM_WHITE_LEVEL             ((1<<CAM_SENSOR_BITS_PER_PIXEL)-1)
323    #define CAM_BLACK_LEVEL             127
324       
325//----------------------------------------------------------
326#elif defined (CAMERA_a530)
327    #define CAM_PROPSET                 1
328
329//  2672x1968 image - like most other 5m sensors
330    #define CAM_RAW_ROWPIX              2672   // for 5 MP
331    #define CAM_RAW_ROWS                1968   // for 5 MP
332//  2672x1992 image - eventually probably real sensor size
333//  #define CAM_RAW_ROWPIX              2672   // for 5 MP
334//  #define CAM_RAW_ROWS                1992   // for 5 MP
335
336    #undef  CAM_USE_ZOOM_FOR_MF
337    #define CAM_HAS_ERASE_BUTTON        1
338    #undef  CAM_HAS_IRIS_DIAPHRAGM
339    #define CAM_HAS_ND_FILTER           1
340    #define CAM_HAS_MANUAL_FOCUS        1
341    #define CAM_DRAW_EXPOSITION         1
342    #define CAM_SHOW_OSD_IN_SHOOT_MENU  1
343    #undef  CAM_CAN_SD_OVER_NOT_IN_MF
344    #undef  CAM_HAS_IS
345    #define CAM_CAN_MUTE_MICROPHONE     1
346    #define CAM_AF_SCAN_DURING_VIDEO_RECORD 2
347    #define CAM_EV_IN_VIDEO             1
348    #define DNG_SUPPORT                 1
349    // pattern
350    #define cam_CFAPattern 0x02010100 // Red  Green  Green  Blue
351    // color
352    #define CAM_COLORMATRIX1                               \
353      725264,  1000000,-240542, 1000000, -122310, 1000000, \
354     -210248,  1000000, 656077, 1000000,  52390,  1000000, \
355      -11282,  1000000, 70400,  1000000,  300712, 1000000
356   
357    #define cam_CalibrationIlluminant1 1 // Daylight
358    // cropping
359    #define CAM_JPEG_WIDTH  2592
360    #define CAM_JPEG_HEIGHT 1944
361    #define CAM_ACTIVE_AREA_X1 12
362    #define CAM_ACTIVE_AREA_Y1 20
363    #define CAM_ACTIVE_AREA_X2 2628
364    #define CAM_ACTIVE_AREA_Y2 1968
365    // camera name
366    #define PARAM_CAMERA_NAME 3 // parameter number for GetParameterData
367    #define DNG_EXT_FROM ".DPS"
368
369    #define CAM_EXT_TV_RANGE            1
370
371//----------------------------------------------------------
372#elif defined (CAMERA_a540)
373    #define CAM_PROPSET                 1
374
375    #define CAM_RAW_ROWPIX              2888   // for 6 MP
376    #define CAM_RAW_ROWS                2136   // for 6 MP
377
378    #undef  CAM_USE_ZOOM_FOR_MF
379    #define CAM_HAS_ERASE_BUTTON        1
380    #define CAM_HAS_IRIS_DIAPHRAGM      1
381    #undef  CAM_HAS_ND_FILTER
382    #define CAM_HAS_MANUAL_FOCUS        1
383    #undef  CAM_DRAW_EXPOSITION
384    #define CAM_SHOW_OSD_IN_SHOOT_MENU  1
385    #undef  CAM_HAS_IS
386    #define CAM_CAN_MUTE_MICROPHONE     1
387    #define CAM_AF_SCAN_DURING_VIDEO_RECORD 2
388    #define CAM_EV_IN_VIDEO             1
389    #define DNG_SUPPORT                 1
390    // pattern
391    #define cam_CFAPattern 0x02010100 // Red  Green  Green  Blue
392    // color
393    #define CAM_COLORMATRIX1                               \
394      687147,  1000000,-201964, 1000000, -125024, 1000000, \
395     -148403,  1000000, 566810, 1000000,   45401, 1000000, \
396     -9472,    1000000, 63186,  1000000,  208602, 1000000
397   
398    #define cam_CalibrationIlluminant1 1 // Daylight
399    // cropping
400    #define CAM_JPEG_WIDTH  2816
401    #define CAM_JPEG_HEIGHT 2112
402    #define CAM_ACTIVE_AREA_X1 44
403    #define CAM_ACTIVE_AREA_Y1 8
404    #define CAM_ACTIVE_AREA_X2 2884
405    #define CAM_ACTIVE_AREA_Y2 2136
406    // camera name
407    #define PARAM_CAMERA_NAME 3 // parameter number for GetParameterData
408    #define DNG_EXT_FROM ".DPS"
409
410    #define CAM_EXT_TV_RANGE            1
411
412//----------------------------------------------------------
413#elif defined (CAMERA_a550)
414    #define CAM_PROPSET                 2
415
416    #define CAM_RAW_ROWPIX              3152   // for 7 MP
417    #define CAM_RAW_ROWS                2340   // for 7 MP
418
419    #undef  CAM_USE_ZOOM_FOR_MF
420    #define CAM_MULTIPART               1
421    #undef  CAM_HAS_ERASE_BUTTON
422    #undef  CAM_HAS_IRIS_DIAPHRAGM
423    #define CAM_HAS_ND_FILTER           1
424    #undef  CAM_HAS_MANUAL_FOCUS
425    #undef  CAM_HAS_USER_TV_MODES
426    #define CAM_SHOW_OSD_IN_SHOOT_MENU  1
427    #undef  CAM_HAS_IS
428    #define CAM_CAN_MUTE_MICROPHONE     1
429    #define CAM_AF_SCAN_DURING_VIDEO_RECORD 1
430    #define DNG_SUPPORT                 1
431    // pattern
432    #define cam_CFAPattern 0x02010100 // Red  Green  Green  Blue
433    // color
434    #define CAM_COLORMATRIX1                               \
435      673251,  1000000,-200684, 1000000, -98680, 1000000,  \
436     -163638,  1000000, 651247, 1000000,  74004, 1000000,  \
437      14221,   1000000, 52979,  1000000, 265291, 1000000
438   
439    #define cam_CalibrationIlluminant1 1 // Daylight
440    // cropping
441    #define CAM_JPEG_WIDTH  3072
442    #define CAM_JPEG_HEIGHT 2304
443    #define CAM_ACTIVE_AREA_X1 36
444    #define CAM_ACTIVE_AREA_Y1 12
445    #define CAM_ACTIVE_AREA_X2 3148
446    #define CAM_ACTIVE_AREA_Y2 2340
447    // camera name
448    #define PARAM_CAMERA_NAME 4 // parameter number for GetParameterData
449    #define DNG_EXT_FROM ".DPS"
450
451    #define CAM_EXT_TV_RANGE            1
452   
453//----------------------------------------------------------
454#elif defined (CAMERA_a560)
455    #define CAM_PROPSET                 2
456
457    #define CAM_RAW_ROWPIX              3152   // for 7 MP
458    #define CAM_RAW_ROWS                2340   // for 7 MP
459
460    #undef  CAM_USE_ZOOM_FOR_MF
461    #define CAM_MULTIPART               1
462    #undef  CAM_HAS_ERASE_BUTTON
463    #undef  CAM_HAS_IRIS_DIAPHRAGM
464    #define CAM_HAS_ND_FILTER           1
465    #undef  CAM_HAS_MANUAL_FOCUS
466    #undef  CAM_HAS_USER_TV_MODES
467    #define CAM_SHOW_OSD_IN_SHOOT_MENU  1
468    #undef  CAM_HAS_IS
469    #define CAM_CAN_MUTE_MICROPHONE     1
470    #define CAM_AF_SCAN_DURING_VIDEO_RECORD 1
471    #define DNG_SUPPORT                 1
472    // pattern
473    #define cam_CFAPattern 0x02010100 // Red  Green  Green  Blue
474    // color
475    #define CAM_COLORMATRIX1                               \
476      15265, 1, -6193, 1, -1558, 1,                        \
477     -4125,  1, 12116, 1,  2010, 1,                        \
478     -888,   1, 1639,  1,  5220, 1                         
479   
480    #define cam_CalibrationIlluminant1 17 // Standard light A
481    // cropping
482    #define CAM_JPEG_WIDTH  3072
483    #define CAM_JPEG_HEIGHT 2304
484    #define CAM_ACTIVE_AREA_X1 38
485    #define CAM_ACTIVE_AREA_Y1 14
486    #define CAM_ACTIVE_AREA_X2 3146
487    #define CAM_ACTIVE_AREA_Y2 2338
488    // camera name
489    #define PARAM_CAMERA_NAME 4 // parameter number for GetParameterData
490    #define DNG_EXT_FROM ".DPS"
491   
492    #define CAM_EXT_TV_RANGE            1
493
494//----------------------------------------------------------
495#elif defined (CAMERA_a570)
496    #define CAM_PROPSET                 2
497
498    #define CAM_RAW_ROWPIX              3152   // for 7 MP
499    #define CAM_RAW_ROWS                2340   // for 7 MP
500    #define CAM_MULTIPART               1
501    #define CAM_CAN_MUTE_MICROPHONE     1
502    #define CAM_AF_SCAN_DURING_VIDEO_RECORD 1
503    #define CAM_EV_IN_VIDEO             1
504    #define DNG_SUPPORT                 1
505    #define CAM_REAR_CURTAIN            1
506    // pattern
507    #define cam_CFAPattern 0x02010100 // Red  Green  Green  Blue
508    // color
509    #define CAM_COLORMATRIX1                               \
510      528283,  1000000,-144259, 1000000, -85966, 1000000,  \
511     -202789,  1000000, 736563, 1000000,  73008, 1000000,  \
512     -27130,   1000000, 107702, 1000000, 264543, 1000000
513   
514    #define cam_CalibrationIlluminant1 1 // Daylight
515    // cropping
516    #define CAM_JPEG_WIDTH  3072
517    #define CAM_JPEG_HEIGHT 2304
518    #define CAM_ACTIVE_AREA_X1 38
519    #define CAM_ACTIVE_AREA_Y1 14
520    #define CAM_ACTIVE_AREA_X2 3146
521    #define CAM_ACTIVE_AREA_Y2 2338
522    // camera name
523    #define PARAM_CAMERA_NAME 4 // parameter number for GetParameterData
524
525    #define DNG_EXT_FROM ".DPS"
526    #define CAM_EXT_TV_RANGE            1
527
528//----------------------------------------------------------
529#elif defined (CAMERA_a590)
530#define CAM_PROPSET                 2
531#define CAM_DRYOS                   1
532
533#define CAM_RAW_ROWPIX              3336   // for new 8 MP
534#define CAM_RAW_ROWS                2480   // for new 8 MP
535
536#define CAM_USE_ZOOM_FOR_MF         1
537
538#define CAM_CAN_MUTE_MICROPHONE     1
539#define CAM_HAS_IRIS_DIAPHRAGM      1
540#undef  CAM_HAS_ND_FILTER
541
542#define CAM_HAS_MANUAL_FOCUS        1
543
544#define CAM_AF_SCAN_DURING_VIDEO_RECORD 1
545//#define CAM_EV_IN_VIDEO             1      // not working on 101b!!!
546#define DNG_SUPPORT                 1
547// pattern
548#define cam_CFAPattern 0x01000201 // Green  Blue  Red  Green
549// color                                                     
550#define CAM_COLORMATRIX1                              \
551 726857, 1000000, -176454, 1000000, -124118, 1000000, \
552 -71340, 1000000,  592001, 1000000,   75622, 1000000, \
553  63222, 1000000,   50547, 1000000,  219582, 1000000
554
555#define cam_CalibrationIlluminant1 1 // Daylight
556// cropping
557#define CAM_JPEG_WIDTH  3264
558#define CAM_JPEG_HEIGHT 2448
559#define CAM_ACTIVE_AREA_X1 12
560#define CAM_ACTIVE_AREA_Y1 10
561// note: the above contains some pixels which have valid data,
562// but are not at the same levels as the rest of the frame
563// the values below crop the "different" looking pixels.
564//#define CAM_ACTIVE_AREA_X1 16
565//#define CAM_ACTIVE_AREA_Y1 18
566#define CAM_ACTIVE_AREA_X2 3300
567#define CAM_ACTIVE_AREA_Y2 2480
568
569// camera name
570#define PARAM_CAMERA_NAME 4 // parameter number for GetParameterData
571
572#define CAM_EXT_TV_RANGE            1
573#define CAM_MULTIPART               1
574
575//----------------------------------------------------------
576#elif defined (CAMERA_a610)
577    #define CAM_PROPSET                 1
578
579    #define CAM_RAW_ROWPIX              2672   // for 5 MP
580    #define CAM_RAW_ROWS                1968   // for 5 MP
581   
582    #define CAM_SWIVEL_SCREEN           1
583    #undef  CAM_CAN_SD_OVER_NOT_IN_MF
584    #undef  CAM_HAS_IS
585    #define CAM_CAN_MUTE_MICROPHONE     1
586    #define CAM_AF_SCAN_DURING_VIDEO_RECORD 2
587    #define CAM_EV_IN_VIDEO             1
588    #define DNG_SUPPORT                 1
589    // pattern
590    #define cam_CFAPattern 0x02010100 // Red  Green  Green  Blue
591    // color
592    #define CAM_COLORMATRIX1                               \
593      15887,  10000, -6524, 10000, -1622, 10000,           \
594     -5467,   10000, 13449, 10000,  2209, 10000,           \
595     -1325,   10000, 1859,  10000,  5172, 10000
596   
597    #define cam_CalibrationIlluminant1 17 // Standard light A
598    // cropping
599    #define CAM_JPEG_WIDTH  2592
600    #define CAM_JPEG_HEIGHT 1944
601    #define CAM_ACTIVE_AREA_X1 14
602    #define CAM_ACTIVE_AREA_Y1 10
603    #define CAM_ACTIVE_AREA_X2 2626
604    #define CAM_ACTIVE_AREA_Y2 1966
605    // camera name
606    #define PARAM_CAMERA_NAME 3 // parameter number for GetParameterData
607
608    #define DNG_EXT_FROM ".DPS"
609
610
611//----------------------------------------------------------
612#elif defined (CAMERA_a620)
613    #define CAM_PROPSET                 1
614
615    #define CAM_RAW_ROWPIX              3152   // for 7 MP
616    #define CAM_RAW_ROWS                2340   // for 7 MP
617   
618    #define CAM_SWIVEL_SCREEN           1
619    #undef  CAM_CAN_SD_OVER_NOT_IN_MF
620    #undef  CAM_HAS_IS   
621    #define CAM_CAN_MUTE_MICROPHONE     1
622    #define CAM_AF_SCAN_DURING_VIDEO_RECORD 2
623    #define CAM_EV_IN_VIDEO             1
624    #define DNG_SUPPORT                 1
625    // pattern
626    #define cam_CFAPattern 0x02010100 // Red  Green  Green  Blue
627    // color
628    #define CAM_COLORMATRIX1                               \
629     15265, 10000, -6193, 10000, -1558, 10000,             \
630     -4125, 10000, 12116, 10000,  2010, 10000,             \
631     -888,  10000,  1639, 10000,  5220, 10000
632   
633    #define cam_CalibrationIlluminant1 17 // Standard light A
634    // cropping
635    #define CAM_JPEG_WIDTH  3072
636    #define CAM_JPEG_HEIGHT 2304
637    #define CAM_ACTIVE_AREA_X1 38
638    #define CAM_ACTIVE_AREA_Y1 14
639    #define CAM_ACTIVE_AREA_X2 3146
640    #define CAM_ACTIVE_AREA_Y2 2338
641    // camera name
642    #define PARAM_CAMERA_NAME 3 // parameter number for GetParameterData
643    #define DNG_EXT_FROM ".DPS"
644
645//----------------------------------------------------------
646#elif defined (CAMERA_a630)
647    #define CAM_PROPSET                 1
648
649    #define CAM_RAW_ROWPIX              3344   // for 8 MP
650    #define CAM_RAW_ROWS                2484   // for 8 MP
651   
652    #define CAM_SWIVEL_SCREEN           1
653    #define CAM_MULTIPART               1
654    #undef  CAM_CAN_SD_OVER_NOT_IN_MF
655    #undef  CAM_HAS_IS
656    #define CAM_CAN_MUTE_MICROPHONE     1
657    #define CAM_AF_SCAN_DURING_VIDEO_RECORD 1
658    #define CAM_EV_IN_VIDEO             1
659    #define DNG_SUPPORT                 1
660    // pattern
661    #define cam_CFAPattern 0x02010100 // Red  Green  Green  Blue
662    // color
663    #define CAM_COLORMATRIX1                               \
664      656080,  1000000,-226478, 1000000, -85884, 1000000,  \
665     -194636,  1000000, 687905, 1000000,  37862, 1000000,  \
666       22873,  1000000,  75523, 1000000, 265822, 1000000
667   
668    #define cam_CalibrationIlluminant1 1 // Daylight
669    // cropping
670    #define CAM_JPEG_WIDTH  3264
671    #define CAM_JPEG_HEIGHT 2448
672    #define CAM_ACTIVE_AREA_X1 14
673    #define CAM_ACTIVE_AREA_Y1 8
674    #define CAM_ACTIVE_AREA_X2 3298
675    #define CAM_ACTIVE_AREA_Y2 2476
676    // camera name
677    #define PARAM_CAMERA_NAME 4 // parameter number for GetParameterData
678    #define DNG_EXT_FROM ".DPS"
679    #define CAM_EXT_TV_RANGE            1
680
681//----------------------------------------------------------
682#elif defined (CAMERA_a640)
683    #define CAM_PROPSET                 1
684
685    #define CAM_RAW_ROWPIX              3736   // for 10 MP
686    #define CAM_RAW_ROWS                2772   // for 10 MP
687   
688    #define CAM_SWIVEL_SCREEN           1
689    #define CAM_MULTIPART               1
690    #undef  CAM_CAN_SD_OVER_NOT_IN_MF
691    #undef  CAM_HAS_IS
692    #define CAM_CAN_MUTE_MICROPHONE     1
693    #define CAM_AF_SCAN_DURING_VIDEO_RECORD 1
694    #define CAM_EV_IN_VIDEO             1
695    #define DNG_SUPPORT                 1
696    // pattern
697    #define cam_CFAPattern 0x02010100 // Red  Green  Green  Blue
698    // color
699    #define CAM_COLORMATRIX1                               \
700      13124,  10000, -5329, 10000, -1390, 10000,           \
701      -3602,  10000, 11658, 10000,  1944, 10000,           \
702      -1612,  10000,  2863, 10000,  4885, 10000
703   
704    #define cam_CalibrationIlluminant1 17 // Standard light A
705    // cropping
706    #define CAM_JPEG_WIDTH  3648
707    #define CAM_JPEG_HEIGHT 2736
708    #define CAM_ACTIVE_AREA_X1 14
709    #define CAM_ACTIVE_AREA_Y1 8
710    #define CAM_ACTIVE_AREA_X2 3682
711    #define CAM_ACTIVE_AREA_Y2 2764
712    // camera name
713    #define PARAM_CAMERA_NAME 4 // parameter number for GetParameterData
714    #define DNG_EXT_FROM ".DPS"
715
716//----------------------------------------------------------
717#elif defined (CAMERA_a650)
718    #define CAM_PROPSET                 2
719    #define CAM_DRYOS                   1
720
721    #define CAM_RAW_ROWPIX              4104   // for 12 MP
722    #define CAM_RAW_ROWS                3048   // for 12 MP
723   
724    #define CAM_ADJUSTABLE_ALT_BUTTON   1
725    #define CAM_SWIVEL_SCREEN           1
726    #define CAM_CAN_MUTE_MICROPHONE     1
727
728    #undef  CAM_EMUL_KEYPRESS_DURATION
729    #define CAM_EMUL_KEYPRESS_DURATION  10
730    #define CAM_AF_SCAN_DURING_VIDEO_RECORD 1
731    #define CAM_EV_IN_VIDEO             1
732    #define DNG_SUPPORT                 1
733    // pattern
734    #define cam_CFAPattern 0x02010100 // Red  Green  Green  Blue
735    // color
736    #define CAM_COLORMATRIX1                               \
737      913762, 1000000, -261578, 1000000, -135582, 1000000, \
738     -99049,  1000000, 1067089, 1000000,   61442, 1000000, \
739      48717,  1000000, 96802,   1000000,  412056, 1000000
740   
741    #define cam_CalibrationIlluminant1 1 // Daylight
742    // cropping
743    #define CAM_JPEG_WIDTH  4000
744    #define CAM_JPEG_HEIGHT 3000
745    #define CAM_ACTIVE_AREA_X1 52
746    #define CAM_ACTIVE_AREA_Y1 14
747    #define CAM_ACTIVE_AREA_X2 4076
748    #define CAM_ACTIVE_AREA_Y2 3030
749    // camera name
750    #define PARAM_CAMERA_NAME 4 // parameter number for GetParameterData
751
752    #define DNG_EXT_FROM ".CR2"
753
754//----------------------------------------------------------
755#elif defined (CAMERA_a700)
756    #define CAM_PROPSET                 1
757
758    #define CAM_RAW_ROWPIX              2888   // for 6 MP
759    #define CAM_RAW_ROWS                2136   // for 6 MP
760
761    #undef  CAM_HAS_IS
762    #define CAM_CAN_MUTE_MICROPHONE     1
763    #define CAM_AF_SCAN_DURING_VIDEO_RECORD 2
764    #define CAM_EV_IN_VIDEO             1
765    #define DNG_SUPPORT                 1
766    // pattern
767    #define cam_CFAPattern 0x02010100 // Red  Green  Green  Blue
768    // color
769    #define CAM_COLORMATRIX1                               \
770     14062, 10000, -5199, 10000, -1446, 10000,             \
771     -4712, 10000, 12470, 10000,  2243, 10000,             \
772     -1286, 10000,  2028, 10000,  4836, 10000
773   
774    #define cam_CalibrationIlluminant1 17 // Standard light A
775    // cropping
776    #define CAM_JPEG_WIDTH  2816
777    #define CAM_JPEG_HEIGHT 2112
778    #define CAM_ACTIVE_AREA_X1 44
779    #define CAM_ACTIVE_AREA_Y1 8
780    #define CAM_ACTIVE_AREA_X2 2884
781    #define CAM_ACTIVE_AREA_Y2 2136
782    // camera name
783    #define PARAM_CAMERA_NAME 3 // parameter number for GetParameterData
784    #define DNG_EXT_FROM ".DPS"
785
786//----------------------------------------------------------
787#elif defined (CAMERA_a710)
788    #define CAM_PROPSET                 1
789
790    #define CAM_RAW_ROWPIX              3152   // for 7 MP
791    #define CAM_RAW_ROWS                2340   // for 7 MP
792
793    #define CAM_MULTIPART               1
794    #define CAM_CAN_MUTE_MICROPHONE     1
795    #define CAM_AF_SCAN_DURING_VIDEO_RECORD 1
796    #define CAM_EV_IN_VIDEO             1
797    #define DNG_SUPPORT                 1
798    // pattern
799    #define cam_CFAPattern 0x02010100 // Red  Green  Green  Blue
800    // color
801    #define CAM_COLORMATRIX1                   \
802     13349, 10000, -4141, 10000, -2128, 10000, \
803     -4189, 10000, 13178, 10000,  1044, 10000, \
804     -1037, 10000,  2326, 10000,  4720, 10000   
805   
806    #define cam_CalibrationIlluminant1 1 // Daylight
807    // cropping
808    #define CAM_JPEG_WIDTH  3072
809    #define CAM_JPEG_HEIGHT 2304
810    #define CAM_ACTIVE_AREA_X1 38
811    #define CAM_ACTIVE_AREA_Y1 14
812    #define CAM_ACTIVE_AREA_X2 3146
813    #define CAM_ACTIVE_AREA_Y2 2338
814    // camera name
815    #define PARAM_CAMERA_NAME 4 // parameter number for GetParameterData
816
817    #define DNG_EXT_FROM ".DPS"
818
819    #define CAM_EXT_TV_RANGE            1
820
821//----------------------------------------------------------
822#elif defined (CAMERA_a720)
823    #define CAM_PROPSET                 2
824    #define CAM_DRYOS                   1
825
826    #define CAM_RAW_ROWPIX              3336   // for new 8 MP
827    #define CAM_RAW_ROWS                2480   // for new 8 MP
828    #define CAM_CAN_MUTE_MICROPHONE     1
829    #define CAM_AF_SCAN_DURING_VIDEO_RECORD 1
830    #define CAM_EV_IN_VIDEO             1
831    #undef  CAM_VIDEO_CONTROL
832    #define DNG_SUPPORT                 1
833    // pattern
834    #define cam_CFAPattern 0x01000201 // Green  Blue  Red  Green
835    // color
836    #define CAM_COLORMATRIX1                               \
837      640019, 1000000, -220031, 1000000, -96241, 1000000,  \
838     -77419,  1000000, 639766,  1000000,  44009, 1000000,  \
839      17965,  1000000, 78396,   1000000, 231868, 1000000
840   
841    #define cam_CalibrationIlluminant1 1 // Daylight
842    // cropping
843    #define CAM_JPEG_WIDTH  3264
844    #define CAM_JPEG_HEIGHT 2448
845    #define CAM_ACTIVE_AREA_X1 10
846    #define CAM_ACTIVE_AREA_Y1 8
847    #define CAM_ACTIVE_AREA_X2 3302
848    #define CAM_ACTIVE_AREA_Y2 2474
849    // camera name
850    #define PARAM_CAMERA_NAME 4 // parameter number for GetParameterData
851
852    #define DNG_EXT_FROM ".CR2"
853
854//----------------------------------------------------------
855#elif defined (CAMERA_a2000)
856
857                ////////////////////////////////
858                // Sure values
859                ////////////////////////////////
860
861    #define CAM_PROPSET                 2
862    #define CAM_DRYOS                   1
863
864    #define CAM_RAW_ROWPIX              3720 
865    #define CAM_RAW_ROWS                2772 
866
867    #define CAM_JPEG_WIDTH  3648
868    #define CAM_JPEG_HEIGHT 2736
869   
870    #define DNG_SUPPORT                 1
871
872    #define PARAM_CAMERA_NAME 4 // parameter number for GetParameterData
873
874    #undef  CAM_HAS_IRIS_DIAPHRAGM
875    #define CAM_HAS_ND_FILTER           1
876
877    ////////////////////////////////
878    // Almost sure, sensor data taken from
879    // ixus870_sd880 which should have same sensor..
880    ////////////////////////////////
881    #undef CAM_SENSOR_BITS_PER_PIXEL
882    #undef CAM_WHITE_LEVEL
883    #undef CAM_BLACK_LEVEL
884    #define CAM_SENSOR_BITS_PER_PIXEL   12
885    #define CAM_WHITE_LEVEL             ((1<<CAM_SENSOR_BITS_PER_PIXEL)-1)
886    #define CAM_BLACK_LEVEL             127
887   
888    #define cam_CFAPattern              0x02010100 // Red  Green  Green  Blue
889    #define CAM_COLORMATRIX1                               \
890      827547, 1000000, -290458, 1000000, -126086, 1000000, \
891     -12829,  1000000, 530507,  1000000, 50537,   1000000, \
892      5181,   1000000, 48183,   1000000, 245014,  1000000
893    #define cam_CalibrationIlluminant1  1 // Daylight
894
895    // cropping (from ixus870_sd880)
896    #define CAM_ACTIVE_AREA_X1          14
897    #define CAM_ACTIVE_AREA_Y1          8
898    #define CAM_ACTIVE_AREA_X2          3682
899    #define CAM_ACTIVE_AREA_Y2          2764
900
901    #undef  CAM_HAS_MANUAL_FOCUS
902// for the purposes of CHDK, the FACE button is treated as the erase button
903//    #undef  CAM_HAS_ERASE_BUTTON
904
905#elif defined (CAMERA_d10)
906    #define CAM_PROPSET                 2
907    #define CAM_DRYOS                   1
908
909    #define CAM_RAW_ROWPIX              4104            // 12 MP 12bpp
910    #define CAM_RAW_ROWS                3048            // from " CrwAddress %lx, CrwSize H %ld V %ld\r"
911
912    #undef  CAM_HAS_ERASE_BUTTON
913    #undef  CAM_USE_ZOOM_FOR_MF
914// TODO
915//    #define CAM_MULTIPART               1
916    #undef  CAM_HAS_IRIS_DIAPHRAGM
917    #define CAM_HAS_ND_FILTER           1
918
919// TODO
920    #undef CAM_REMOTE
921    #undef CAM_SYNCH
922
923    #define CAM_HAS_ZOOM_LEVER          1 // note, has zoom in/out buttons, not lever
924
925// TODO
926    #undef CAM_CHDK_HAS_EXT_VIDEO_MENU   // In CHDK for this camera realized adjustable video compression
927// TODO
928//    #define CAM_CAN_SD_OVER_NOT_IN_MF   1                     // Camera allows subject distance (focus) override when not in manual focus mode
929//    #define CAM_CAN_SD_OVERRIDE         1                     // Camera allows to do subject distance override
930
931    #define CAM_HAS_MANUAL_FOCUS                1
932// long shutter is acutally user TV
933    #undef      CAM_HAS_USER_TV_MODES
934    #define CAM_SHOW_OSD_IN_SHOOT_MENU            1
935//    #define CAM_CAN_UNLOCK_OPTICAL_ZOOM_IN_VIDEO  1
936 //   #define CAM_AF_SCAN_DURING_VIDEO_RECORD       1
937//    #define CAM_CHDK_HAS_EXT_VIDEO_MENU           1
938
939    #define CAM_HAS_IS                  1
940    #undef CAM_HAS_JOGDIAL
941
942    #undef  CAM_VIDEO_CONTROL
943    #define CAM_VIDEO_QUALITY_ONLY      1
944// TODO
945//    #define DNG_SUPPORT                 1
946
947//    #define CAM_EXT_TV_RANGE            1
948
949    #undef CAM_UNCACHED_BIT
950    #define CAM_UNCACHED_BIT            0x40000000
951
952    #undef CAM_BITMAP_PALETTE
953// OK looks similar to ixus100 based on forum posts
954    #define CAM_BITMAP_PALETTE          5
955
956// TODO all zebra stuff
957//    #undef ZEBRA_HMARGIN0
958//    #define ZEBRA_HMARGIN0              150                   //zebra adjust buffer height: show use at sx200is: needed for save memory space
959
960//    #define CAM_QUALITY_OVERRIDE 1
961    #undef CAM_SENSOR_BITS_PER_PIXEL
962    #define CAM_SENSOR_BITS_PER_PIXEL   12
963    #undef CAM_WHITE_LEVEL
964    #define CAM_WHITE_LEVEL             ((1<<CAM_SENSOR_BITS_PER_PIXEL)-1)
965    #undef CAM_BLACK_LEVEL
966    #define CAM_BLACK_LEVEL             127
967
968        //all DNG stuff TODO, copied from ixus 100. Ixus960 may be closer, same sesnor res
969    // pattern
970    //RealRom:FFA99FB4                    ADR     R0, aObRG1G2BLdLdLd ; "\n  OB : (R, G1, G2, B) = (%ld, %ld, %ld"...
971    #define cam_CFAPattern              0x02010100              // Red  Green  Green  Blue
972
973    // color preliminary (see DNG4PS2 wiki)
974    #define CAM_COLORMATRIX1                               \
975      661840,  1000000, -185671, 1000000, -97110,  1000000, \
976      -83661,  1000000, 578860, 1000000,   32308,  1000000, \
977      -8681,    1000000, 70356,   1000000, 207341, 1000000
978
979    //Here is an alternate CAM_COLORMATRIX1 - Current one is nice for me but hey I'm no colour expert.
980    //XYZ -> Camera matrix:
981    //0.459395 -0.129083 -0.068085
982    //-0.055837 0.400827 0.020378
983    //-0.004622 0.048662 0.139970
984
985    #define cam_CalibrationIlluminant1  17                      // Standard Light A
986
987        // cropping
988    #define CAM_JPEG_WIDTH              4000
989    #define CAM_JPEG_HEIGHT             3000
990    #define CAM_ACTIVE_AREA_X1          40
991    #define CAM_ACTIVE_AREA_Y1          24
992    #define CAM_ACTIVE_AREA_X2          4056
993    #define CAM_ACTIVE_AREA_Y2          3040
994
995    // camera name OK
996    #define PARAM_CAMERA_NAME           4                       // parameter number for GetParameterData
997
998//==========================================================
999// SD-Series (IXUS-Series)
1000//==========================================================
1001#elif defined (CAMERA_ixus40_sd300)
1002    #define CAM_PROPSET                 1
1003
1004    #define CAM_RAW_ROWPIX              2400
1005    #define CAM_RAW_ROWS                1766
1006
1007    #define CAM_USE_ZOOM_FOR_MF 1
1008    #undef  CAM_HAS_ERASE_BUTTON
1009    #undef  CAM_HAS_IRIS_DIAPHRAGM
1010    #define CAM_HAS_ND_FILTER           1
1011    #undef  CAM_HAS_MANUAL_FOCUS
1012    #undef  CAM_HAS_USER_TV_MODES
1013    #define CAM_SHOW_OSD_IN_SHOOT_MENU  1
1014    #undef  CAM_CAN_UNLOCK_OPTICAL_ZOOM_IN_VIDEO
1015    #undef  CAM_HAS_IS
1016    #undef CAM_CONSOLE_LOG_ENABLED
1017
1018
1019    #define DNG_SUPPORT                 1
1020    // pattern
1021    #define cam_CFAPattern 0x02010100 // Red  Green  Green  Blue
1022    // color
1023    #define CAM_COLORMATRIX1                                 \
1024      652674,  1000000, -172074, 1000000, -107575,  1000000, \
1025      -139063, 1000000, 594517,  1000000,  60252,   1000000, \
1026      -9088,   1000000, 82013,   1000000,  238080,  1000000
1027   
1028    #define cam_CalibrationIlluminant1 1 // Daylight
1029    // cropping
1030    #define CAM_JPEG_WIDTH  2272
1031    #define CAM_JPEG_HEIGHT 1704
1032    #define CAM_ACTIVE_AREA_X1 12
1033    #define CAM_ACTIVE_AREA_Y1 12
1034    #define CAM_ACTIVE_AREA_X2 2356
1035    #define CAM_ACTIVE_AREA_Y2 1764
1036    // camera name
1037    #define PARAM_CAMERA_NAME 2 // parameter number for GetParameterData
1038
1039//----------------------------------------------------------
1040
1041#elif defined (CAMERA_ixus50_sd400)
1042    #define CAM_PROPSET                 1
1043
1044    #define CAM_RAW_ROWPIX              2672   // for 5 MP
1045    #define CAM_RAW_ROWS                1968   // for 5 MP
1046
1047    #undef  CAM_SYNCH 
1048    #undef  CAM_USE_ZOOM_FOR_MF
1049    #undef  CAM_HAS_ERASE_BUTTON
1050    #undef  CAM_HAS_IRIS_DIAPHRAGM
1051    #define CAM_HAS_ND_FILTER           1
1052    #undef  CAM_HAS_MANUAL_FOCUS
1053    #undef  CAM_HAS_USER_TV_MODES
1054    #define CAM_SHOW_OSD_IN_SHOOT_MENU  1
1055    #undef  CAM_HAS_IS
1056        //#define CAM_CONSOLE_LOG_ENABLED     1
1057    #undef  CAM_VIDEO_CONTROL
1058    #define DNG_SUPPORT                 1
1059    // pattern
1060    #define cam_CFAPattern 0x02010100 // Red  Green  Green  Blue
1061    // color
1062    #define CAM_COLORMATRIX1                                  \
1063      685247,  1000000, -204939,  1000000, -106531,  1000000, \
1064     -267616,  1000000,  790509,  1000000,   73359,  1000000, \
1065       32401,  1000000,   15655,  1000000,  314892,  1000000
1066   
1067    #define cam_CalibrationIlluminant1 1 // Daylight
1068    // cropping
1069    #define CAM_JPEG_WIDTH  2592
1070    #define CAM_JPEG_HEIGHT 1944
1071    #define CAM_ACTIVE_AREA_X1 12
1072    #define CAM_ACTIVE_AREA_Y1 8
1073    #define CAM_ACTIVE_AREA_X2 2628
1074    #define CAM_ACTIVE_AREA_Y2 1968
1075    // camera name
1076    #define PARAM_CAMERA_NAME 2 // parameter number for GetParameterData
1077
1078
1079//----------------------------------------------------------
1080
1081#elif defined (CAMERA_ixusizoom_sd30)
1082    #define CAM_PROPSET                 1
1083
1084    #define CAM_RAW_ROWPIX              2672   // for 5 MP
1085    #define CAM_RAW_ROWS                1968   // for 5 MP
1086
1087    #undef  CAM_SYNCH 
1088    #undef  CAM_USE_ZOOM_FOR_MF
1089    #undef  CAM_HAS_ERASE_BUTTON
1090    #undef  CAM_HAS_IRIS_DIAPHRAGM
1091    #define CAM_HAS_ND_FILTER           1
1092    #undef  CAM_HAS_MANUAL_FOCUS
1093    #undef  CAM_HAS_USER_TV_MODES
1094    #define CAM_SHOW_OSD_IN_SHOOT_MENU  1
1095    #undef  CAM_HAS_IS
1096        //#define CAM_CONSOLE_LOG_ENABLED     1
1097    #undef  CAM_VIDEO_CONTROL
1098
1099//----------------------------------------------------------
1100
1101//----------------------------------------------------------
1102#elif defined (CAMERA_ixus55_sd450)
1103    #define CAM_PROPSET                 1
1104
1105    #define CAM_RAW_ROWPIX              2672   // for 5 MP
1106    #define CAM_RAW_ROWS                1968   // for 5 MP
1107
1108    #undef  CAM_USE_ZOOM_FOR_MF
1109    #undef  CAM_HAS_ERASE_BUTTON
1110    #undef  CAM_HAS_IRIS_DIAPHRAGM
1111    #define CAM_HAS_ND_FILTER           1
1112    #undef  CAM_HAS_MANUAL_FOCUS
1113    #undef  CAM_HAS_USER_TV_MODES
1114    #define CAM_SHOW_OSD_IN_SHOOT_MENU  1
1115    #undef  CAM_HAS_IS
1116    #define CAM_AF_SCAN_DURING_VIDEO_RECORD 2
1117    #define DNG_SUPPORT                 1
1118    // pattern
1119    #define cam_CFAPattern 0x02010100 // Red  Green  Green  Blue
1120    // color
1121    #define CAM_COLORMATRIX1                                \
1122      536034,  1000000, -173429, 1000000, -89823,  1000000, \
1123      -290416, 1000000, 735807,  1000000,  47894,  1000000, \
1124      -71455,  1000000, 114314,  1000000,  274533, 1000000         
1125   
1126    #define cam_CalibrationIlluminant1 1 // Daylight
1127    // cropping
1128    #define CAM_JPEG_WIDTH  2592
1129    #define CAM_JPEG_HEIGHT 1944
1130    #define CAM_ACTIVE_AREA_X1 12
1131    #define CAM_ACTIVE_AREA_Y1 8
1132    #define CAM_ACTIVE_AREA_X2 2628
1133    #define CAM_ACTIVE_AREA_Y2 1968
1134    // camera name
1135    #define PARAM_CAMERA_NAME 3 // parameter number for GetParameterData
1136    #define DNG_EXT_FROM ".DPS"
1137
1138//----------------------------------------------------------
1139#elif defined (CAMERA_ixus60_sd600)
1140    #define CAM_PROPSET                 1
1141
1142    #define CAM_RAW_ROWPIX              2888   // for 6 MP
1143    #define CAM_RAW_ROWS                2136   // for 6 MP
1144
1145    #undef  CAM_SYNCH
1146    #undef  CAM_USE_ZOOM_FOR_MF
1147    #undef  CAM_HAS_ERASE_BUTTON
1148    #undef  CAM_HAS_IRIS_DIAPHRAGM
1149    #define CAM_HAS_ND_FILTER           1
1150    #undef  CAM_HAS_MANUAL_FOCUS
1151    #undef  CAM_HAS_USER_TV_MODES
1152    #define CAM_DRAW_EXPOSITION             1
1153    #define CAM_SHOW_OSD_IN_SHOOT_MENU  1
1154    #define CAM_FEATURE_FEATHER         1
1155
1156//    #define CAM_CONSOLE_LOG_ENABLED     1  //100a won't compile if this is defined ("undefined reference to `_iosDevFind'")
1157    #undef  CAM_CHDK_HAS_EXT_VIDEO_MENU
1158    #undef  CAM_HAS_IS
1159    #define DNG_SUPPORT                 1
1160    // pattern
1161    #define cam_CFAPattern 0x02010100 // Red  Green  Green  Blue
1162    // color
1163    #define CAM_COLORMATRIX1                                \
1164      767398,  1000000, -227658, 1000000, -144213, 1000000, \
1165      -217466, 1000000, 669319,  1000000,  38180,  1000000, \
1166      -23152,  1000000, 77743,  1000000,   238669, 1000000
1167   
1168    #define cam_CalibrationIlluminant1 1 // Daylight
1169    // cropping
1170    #define CAM_JPEG_WIDTH  2816
1171    #define CAM_JPEG_HEIGHT 2112
1172    #define CAM_ACTIVE_AREA_X1 44
1173    #define CAM_ACTIVE_AREA_Y1 8
1174    #define CAM_ACTIVE_AREA_X2 2884
1175    #define CAM_ACTIVE_AREA_Y2 2136
1176    // camera name
1177    #define PARAM_CAMERA_NAME 3 // parameter number for GetParameterData
1178
1179//----------------------------------------------------------
1180#elif defined (CAMERA_ixus65_sd630)
1181    #define CAM_PROPSET                 1
1182
1183    #define CAM_RAW_ROWPIX              2888   // for 6 MP
1184    #define CAM_RAW_ROWS                2136   // for 6 MP
1185
1186    #undef  CAM_USE_ZOOM_FOR_MF
1187    #undef  CAM_HAS_ERASE_BUTTON
1188    #undef  CAM_HAS_IRIS_DIAPHRAGM
1189    #define CAM_HAS_ND_FILTER           1
1190    #undef  CAM_HAS_MANUAL_FOCUS
1191    #undef  CAM_HAS_USER_TV_MODES
1192    #define CAM_DRAW_EXPOSITION             1
1193    #define CAM_SHOW_OSD_IN_SHOOT_MENU  1
1194    #undef  CAM_CAN_UNLOCK_OPTICAL_ZOOM_IN_VIDEO
1195    #define CAM_FEATURE_FEATHER         1
1196
1197    #define CAM_CONSOLE_LOG_ENABLED     1
1198    #undef  CAM_HAS_IS
1199    #undef  CAM_CHDK_HAS_EXT_VIDEO_MENU
1200    #define DNG_SUPPORT                 1
1201    // pattern
1202    #define cam_CFAPattern 0x02010100 // Red  Green  Green  Blue
1203    // color
1204    #define CAM_COLORMATRIX1                                \
1205      783384,  1000000, -227078, 1000000, -127919, 1000000, \
1206      -181247, 1000000, 661743,  1000000,  58868,  1000000, \
1207       25727,  1000000, 43891,   1000000,  247655, 1000000         
1208   
1209    #define cam_CalibrationIlluminant1 1 // Daylight
1210    // cropping
1211    #define CAM_JPEG_WIDTH  2816
1212    #define CAM_JPEG_HEIGHT 2112
1213    #define CAM_ACTIVE_AREA_X1 44
1214    #define CAM_ACTIVE_AREA_Y1 8
1215    #define CAM_ACTIVE_AREA_X2 2884
1216    #define CAM_ACTIVE_AREA_Y2 2136
1217    // camera name
1218    #define PARAM_CAMERA_NAME 3 // parameter number for GetParameterData
1219    #define DNG_EXT_FROM ".DPS"
1220
1221//----------------------------------------------------------
1222
1223#elif defined (CAMERA_ixus75_sd750)
1224    #define CAM_PROPSET                 2
1225
1226    #define CAM_RAW_ROWPIX              3152   // for 7 MP
1227    #define CAM_RAW_ROWS                2340   // for 7 MP
1228
1229/*
1230    #undef  CAM_USE_ZOOM_FOR_MF
1231    #undef  CAM_HAS_ERASE_BUTTON
1232    #undef  CAM_HAS_IRIS_DIAPHRAGM
1233    #define CAM_HAS_ND_FILTER           1
1234    #undef  CAM_HAS_MANUAL_FOCUS
1235    #undef  CAM_HAS_USER_TV_MODES
1236    #define CAM_SHOW_OSD_IN_SHOOT_MENU  1
1237    #undef  CAM_HAS_IS
1238    */
1239   
1240    #undef  CAM_SWIVEL_SCREEN               // Camera has rotated LCD screen
1241    #undef CAM_USE_ZOOM_FOR_MF            // Zoom lever can be used for manual focus adjustments
1242    #undef  CAM_ADJUSTABLE_ALT_BUTTON       // ALT-button can be set from menu
1243    #undef CAM_REMOTE                     // Camera supports USB-remote
1244    #define CAM_MULTIPART               1   // Camera supports SD-card multipartitioning
1245    #define CAM_HAS_ZOOM_LEVER          1   // Camera has dedicated zoom buttons
1246    #undef  CAM_DRAW_EXPOSITION             // Output expo-pair on screen (for cameras which (sometimes) don't do that)
1247    #undef CAM_HAS_ERASE_BUTTON           // Camera has dedicated erase button
1248    #undef  CAM_HAS_IRIS_DIAPHRAGM
1249    #define  CAM_HAS_ND_FILTER         1      // Camera has build-in ND filter
1250    #undef CAM_CAN_SD_OVER_NOT_IN_MF      // Camera allows subject distance (focus) override when not in manual focus mode
1251    #undef CAM_CAN_SD_OVERRIDE            // Camera allows to do subject distance override
1252    #undef CAM_HAS_MANUAL_FOCUS           // Camera has manual focus mode
1253    #define CAM_HAS_USER_TV_MODES       1   // Camera has tv-priority or manual modes with ability to set tv value
1254    #define  CAM_SHOW_OSD_IN_SHOOT_MENU   1   // On some cameras Canon shoot menu has additional functionality and useful in this case to see CHDK OSD in this mode 
1255//    #undef  CAM_CAN_UNLOCK_OPTICAL_ZOOM_IN_VIDEO // adress for zoom_status missing, probably more
1256    #define CAM_CAN_UNLOCK_OPTICAL_ZOOM_IN_VIDEO  1 // Camera can unlock optical zoom in video (if it is locked)
1257    #define  CAM_FEATURE_FEATHER        1     // Cameras with "feather" or touch wheel.
1258    #undef CAM_HAS_IS                     // Camera has image stabilizer
1259
1260//    #define  CAM_CONSOLE_LOG_ENABLED   1      // Development: internal camera stdout -> A/stdout.txt       
1261    #define DNG_SUPPORT                 1
1262    // pattern
1263    #define cam_CFAPattern 0x02010100 // Red  Green  Green  Blue
1264    // color
1265    #define CAM_COLORMATRIX1                                \
1266      689833,  1000000, -198299, 1000000, -101299, 1000000, \
1267      -164267, 1000000, 667466,  1000000,  74132,  1000000, \
1268       -36515,  1000000, 123872,   1000000,  248498, 1000000
1269   
1270    #define cam_CalibrationIlluminant1 1 // Daylight
1271    // cropping
1272    #define CAM_JPEG_WIDTH  3072
1273    #define CAM_JPEG_HEIGHT 2304
1274    #define CAM_ACTIVE_AREA_X1 38
1275    #define CAM_ACTIVE_AREA_Y1 14
1276    #define CAM_ACTIVE_AREA_X2 3146
1277    #define CAM_ACTIVE_AREA_Y2 2338
1278    // camera name
1279    #define PARAM_CAMERA_NAME 4 // parameter number for GetParameterData
1280   
1281    #define DNG_EXT_FROM ".DPS"
1282
1283//----------------------------------------------------------
1284#elif defined (CAMERA_ixus70_sd1000)
1285    #define CAM_PROPSET                 2
1286
1287    #define CAM_RAW_ROWPIX              3152   // for 7 MP
1288    #define CAM_RAW_ROWS                2340   // for 7 MP
1289
1290    #undef  CAM_USE_ZOOM_FOR_MF
1291    #undef  CAM_HAS_ERASE_BUTTON
1292    #undef  CAM_HAS_IRIS_DIAPHRAGM
1293    #define CAM_HAS_ND_FILTER           1
1294    #undef  CAM_HAS_MANUAL_FOCUS
1295    #undef  CAM_HAS_USER_TV_MODES
1296    #define CAM_SHOW_OSD_IN_SHOOT_MENU  1
1297    #undef  CAM_HAS_IS
1298    #define CAM_AF_SCAN_DURING_VIDEO_RECORD 1
1299    #define DNG_SUPPORT                 1
1300    #define CAM_MULTIPART               1
1301    // pattern
1302    #define cam_CFAPattern 0x02010100 // Red  Green  Green  Blue
1303    // color
1304    #define CAM_COLORMATRIX1                                \
1305      652674,  1000000, -172074, 1000000, -107575, 1000000, \
1306      -139063, 1000000, 594517,  1000000,  60252,  1000000, \
1307       -9088,  1000000, 82013,   1000000,  238048, 1000000
1308   
1309    #define cam_CalibrationIlluminant1 1 // Daylight
1310    // cropping
1311    #define CAM_JPEG_WIDTH  3072
1312    #define CAM_JPEG_HEIGHT 2304
1313    #define CAM_ACTIVE_AREA_X1 38
1314    #define CAM_ACTIVE_AREA_Y1 14
1315    #define CAM_ACTIVE_AREA_X2 3146
1316    #define CAM_ACTIVE_AREA_Y2 2338
1317    // camera name
1318    #define PARAM_CAMERA_NAME 4 // parameter number for GetParameterData
1319
1320    #define DNG_EXT_FROM ".DPS"
1321
1322    #define CAM_EXT_TV_RANGE            1
1323
1324//----------------------------------------------------------
1325#elif defined (CAMERA_ixus80_sd1100)
1326    #define CAM_PROPSET                 2
1327    #define CAM_DRYOS                   1
1328
1329    #define CAM_RAW_ROWPIX              3336   // for new 8 MP
1330    #define CAM_RAW_ROWS                2480   // for new 8 MP
1331
1332    #undef  CAM_USE_ZOOM_FOR_MF
1333    #undef  CAM_HAS_ERASE_BUTTON
1334    #undef  CAM_HAS_IRIS_DIAPHRAGM
1335    #define CAM_HAS_ND_FILTER           1
1336    #undef  CAM_HAS_MANUAL_FOCUS
1337    #undef  CAM_HAS_USER_TV_MODES
1338    #define CAM_SHOW_OSD_IN_SHOOT_MENU  1
1339        // TODO / test
1340        #undef  CAM_REMOTE
1341        #define CAM_CAN_UNLOCK_OPTICAL_ZOOM_IN_VIDEO 1
1342    #undef  CAM_CAN_MUTE_MICROPHONE
1343    #define CAM_AF_SCAN_DURING_VIDEO_RECORD 0
1344    #define DNG_SUPPORT                 1
1345    // pattern
1346    #define cam_CFAPattern 0x01000201 // Green  Blue  Red  Green
1347    // color
1348    #define CAM_COLORMATRIX1                                \
1349      893969,  1000000, -343107, 1000000, -119590, 1000000, \
1350      -41350,  1000000, 581255,  1000000,  49523,  1000000, \
1351       24221,  1000000, 47554,   1000000,  209996, 1000000
1352   
1353    #define cam_CalibrationIlluminant1 1 // Daylight
1354    // cropping
1355    #define CAM_JPEG_WIDTH  3264
1356    #define CAM_JPEG_HEIGHT 2448
1357    #define CAM_ACTIVE_AREA_X1 6
1358    #define CAM_ACTIVE_AREA_Y1 6
1359    #define CAM_ACTIVE_AREA_X2 3304
1360    #define CAM_ACTIVE_AREA_Y2 2476
1361    // camera name
1362    #define PARAM_CAMERA_NAME 4 // parameter number for GetParameterData
1363
1364    #define CAM_EXT_TV_RANGE            1
1365
1366//----------------------------------------------------------
1367#elif defined (CAMERA_ixus700_sd500)
1368    #define CAM_PROPSET                 1
1369
1370    #define CAM_RAW_ROWPIX              3152   // for 7 MP
1371    #define CAM_RAW_ROWS                2340   // for 7 MP
1372
1373    #undef  CAM_SYNCH
1374    #undef  CAM_USE_ZOOM_FOR_MF
1375    #define CAM_DRAW_EXPOSITION         1
1376    #undef  CAM_HAS_ERASE_BUTTON
1377    #undef  CAM_HAS_IRIS_DIAPHRAGM
1378    #define CAM_HAS_ND_FILTER           1
1379    #undef  CAM_HAS_MANUAL_FOCUS
1380    #undef  CAM_HAS_USER_TV_MODES
1381    #undef  CAM_CAN_SD_OVERRIDE
1382    #define CAM_SHOW_OSD_IN_SHOOT_MENU  1
1383    #undef  CAM_HAS_IS
1384    #define CAM_MULTIPART               1
1385    #define CAM_AF_SCAN_DURING_VIDEO_RECORD 1
1386    #define DNG_SUPPORT                 1
1387    // pattern
1388    #define cam_CFAPattern 0x02010100 // Red  Green  Green  Blue
1389    // color
1390    #define CAM_COLORMATRIX1         \
1391      15265, 1, -6193,  1, -1558, 1, \
1392     -4125,  1,  12116, 1,  2010, 1, \
1393      -888,  1,  1639,  1,  5220, 1
1394   
1395    #define cam_CalibrationIlluminant1 17 // Standard light A
1396    // cropping
1397    #define CAM_JPEG_WIDTH  3072
1398    #define CAM_JPEG_HEIGHT 2304
1399    #define CAM_ACTIVE_AREA_X1 38
1400    #define CAM_ACTIVE_AREA_Y1 14
1401    #define CAM_ACTIVE_AREA_X2 3146
1402    #define CAM_ACTIVE_AREA_Y2 2338
1403    // camera name
1404    #define PARAM_CAMERA_NAME 2 // parameter number for GetParameterData
1405    #define DNG_EXT_FROM ".DPS"
1406
1407//----------------------------------------------------------
1408
1409#elif defined (CAMERA_ixus750_sd550)
1410    #define CAM_PROPSET                1
1411
1412    #define CAM_RAW_ROWPIX              3152  // for 7 MP
1413    #define CAM_RAW_ROWS                2340  // for 7 MP
1414
1415    #define  CAM_USE_ZOOM_FOR_MF    1
1416    #define CAM_DRAW_EXPOSITION        1
1417    #undef  CAM_HAS_ERASE_BUTTON
1418    #undef  CAM_HAS_IRIS_DIAPHRAGM
1419    #define CAM_HAS_ND_FILTER          1
1420    #undef  CAM_HAS_MANUAL_FOCUS
1421    #undef  CAM_HAS_USER_TV_MODES
1422    #define  CAM_CAN_SD_OVERRIDE    1
1423    #define CAM_SHOW_OSD_IN_SHOOT_MENU  1
1424    #undef  CAM_HAS_IS
1425    #define CAM_MULTIPART              1
1426    #undef CAM_SYNCH
1427    #define DNG_SUPPORT                 1
1428    // pattern
1429    #define cam_CFAPattern 0x02010100 // Red  Green  Green  Blue
1430    // color
1431    #define CAM_COLORMATRIX1                               \
1432      580280, 1000000, -172239, 1000000, -89707,  1000000, \
1433     -206596, 1000000,  634926, 1000000,  63877,  1000000, \
1434      10377,  1000000,  62053,  1000000,  242646, 1000000
1435   
1436    #define cam_CalibrationIlluminant1 1 // Daylight
1437    // cropping
1438    #define CAM_JPEG_WIDTH  3072
1439    #define CAM_JPEG_HEIGHT 2304
1440    #define CAM_ACTIVE_AREA_X1 36
1441    #define CAM_ACTIVE_AREA_Y1 12
1442    #define CAM_ACTIVE_AREA_X2 3148
1443    #define CAM_ACTIVE_AREA_Y2 2340
1444    // camera name
1445    #define PARAM_CAMERA_NAME 3 // parameter number for GetParameterData
1446
1447//----------------------------------------------------------
1448#elif defined (CAMERA_ixus800_sd700)
1449    #define CAM_PROPSET                 1
1450
1451    #define CAM_RAW_ROWPIX              2888   // for 6 MP
1452    #define CAM_RAW_ROWS                2136   // for 6 MP
1453
1454    #undef  CAM_USE_ZOOM_FOR_MF
1455    #define CAM_DRAW_EXPOSITION         1
1456    #undef  CAM_HAS_ERASE_BUTTON
1457    #undef  CAM_HAS_IRIS_DIAPHRAGM
1458    #define CAM_HAS_ND_FILTER           1
1459    #undef  CAM_HAS_MANUAL_FOCUS
1460    #undef  CAM_HAS_USER_TV_MODES
1461    #define CAM_SHOW_OSD_IN_SHOOT_MENU  1
1462    #define CAM_AF_SCAN_DURING_VIDEO_RECORD 2
1463    #define DNG_SUPPORT                 1
1464
1465 // Warning! DNG4PS2 has both ixus800 and sd700 support with different CFA patterns and color matrices.
1466 // Used settings for IXUS800
1467
1468    // pattern
1469    #define cam_CFAPattern 0x02010100 // Red  Green  Green  Blue
1470    // color
1471    #define CAM_COLORMATRIX1          \
1472      14062, 1, -5199,  1, -1446,  1, \
1473      -4712, 1,  12470, 1,  2243,  1, \
1474      -1286, 1,  2028,  1,  4836,  1
1475   
1476    #define cam_CalibrationIlluminant1 17 // Standard light A
1477    // cropping
1478    #define CAM_JPEG_WIDTH  2816
1479    #define CAM_JPEG_HEIGHT 2112
1480    #define CAM_ACTIVE_AREA_X1 44
1481    #define CAM_ACTIVE_AREA_Y1 8
1482    #define CAM_ACTIVE_AREA_X2 2884
1483    #define CAM_ACTIVE_AREA_Y2 2136
1484    // camera name
1485    #define PARAM_CAMERA_NAME 3 // parameter number for GetParameterData
1486    #define DNG_EXT_FROM ".DPS"
1487   
1488//----------------------------------------------------------
1489#elif defined (CAMERA_ixus850_sd800)
1490    #define CAM_PROPSET                 1
1491
1492    #define CAM_RAW_ROWPIX              3152   // for 7 MP
1493    #define CAM_RAW_ROWS                2340   // for 7 MP
1494
1495    #undef  CAM_USE_ZOOM_FOR_MF
1496    #undef  CAM_HAS_ERASE_BUTTON
1497    #undef  CAM_HAS_IRIS_DIAPHRAGM
1498    #define CAM_HAS_ND_FILTER           1
1499    #undef  CAM_HAS_MANUAL_FOCUS
1500    #undef  CAM_HAS_USER_TV_MODES
1501    #define CAM_SHOW_OSD_IN_SHOOT_MENU  1
1502    #define CAM_AF_SCAN_DURING_VIDEO_RECORD 1
1503    #define CAM_MULTIPART               1
1504    #define DNG_SUPPORT                 1
1505    // pattern
1506    #define cam_CFAPattern 0x02010100 // Red  Green  Green  Blue
1507    // color
1508    #define CAM_COLORMATRIX1                               \
1509      661014, 1000000, -189364, 1000000, -115797, 1000000, \
1510     -168772, 1000000,  661827, 1000000,   47392, 1000000, \
1511      -35846, 1000000,  107148, 1000000,  233705, 1000000
1512   
1513    #define cam_CalibrationIlluminant1 17 // Standard light A
1514    // cropping
1515    #define CAM_JPEG_WIDTH  3072
1516    #define CAM_JPEG_HEIGHT 2304
1517    #define CAM_ACTIVE_AREA_X1 12
1518    #define CAM_ACTIVE_AREA_Y1 8
1519    #define CAM_ACTIVE_AREA_X2 3108
1520    #define CAM_ACTIVE_AREA_Y2 2332
1521    // camera name
1522    #define PARAM_CAMERA_NAME 4 // parameter number for GetParameterData
1523
1524    #define DNG_EXT_FROM ".DPS"
1525   
1526//----------------------------------------------------------
1527#elif defined (CAMERA_ixus860_sd870)
1528    #define CAM_PROPSET                 2
1529    #define CAM_DRYOS                   1
1530
1531    #define CAM_RAW_ROWPIX              3336   // for new 8 MP
1532    #define CAM_RAW_ROWS                2480   // for new 8 MP
1533
1534    #undef  CAM_USE_ZOOM_FOR_MF
1535    #undef  CAM_HAS_ERASE_BUTTON
1536    #undef  CAM_HAS_IRIS_DIAPHRAGM
1537    #define CAM_HAS_ND_FILTER           1
1538    #undef  CAM_HAS_MANUAL_FOCUS
1539    #undef  CAM_HAS_USER_TV_MODES
1540    #define CAM_SHOW_OSD_IN_SHOOT_MENU  1
1541        #define CAM_CAN_UNLOCK_OPTICAL_ZOOM_IN_VIDEO 1
1542    #undef  CAM_CAN_MUTE_MICROPHONE
1543    #undef  CAM_VIDEO_CONTROL
1544    #define DNG_SUPPORT                 1
1545    // pattern
1546    #define cam_CFAPattern 0x01000201 // Green  Blue  Red  Green
1547    // color
1548    #define CAM_COLORMATRIX1                               \
1549      747939, 1000000, -268233, 1000000, -129266, 1000000, \
1550     -50633,  1000000, 515687,  1000000,  23509,  1000000, \
1551     -21341,  1000000, 76495,   1000000, 186385,  1000000
1552   
1553    #define cam_CalibrationIlluminant1 1 // Daylight                   
1554    // cropping
1555    #define CAM_JPEG_WIDTH  3264
1556    #define CAM_JPEG_HEIGHT 2448
1557    #define CAM_ACTIVE_AREA_X1 10
1558    #define CAM_ACTIVE_AREA_Y1 8
1559    #define CAM_ACTIVE_AREA_X2 3302
1560    #define CAM_ACTIVE_AREA_Y2 2474
1561    // camera name
1562    #define PARAM_CAMERA_NAME 4 // parameter number for GetParameterData
1563
1564    #define DNG_EXT_FROM ".CR2"
1565
1566//----------------------------------------------------------
1567#elif defined (CAMERA_ixus870_sd880)
1568
1569    // Camera details
1570
1571    #define CAM_DRYOS                   1
1572    #define CAM_PROPSET                 2
1573
1574    #define CAM_AF_SCAN_DURING_VIDEO_RECORD 1
1575    #define CAM_BITMAP_PALETTE          1
1576    #define CAM_BRACKETING              1   // XXX
1577    #define CAM_CAN_SD_OVER_NOT_IN_MF   1
1578    #define CAM_CAN_SD_OVERRIDE         1
1579    #define CAM_CAN_UNLOCK_OPTICAL_ZOOM_IN_VIDEO 1
1580    #define CAM_EXT_TV_RANGE            1
1581    #define CAM_HAS_IS                  1
1582    #define CAM_HAS_JOGDIAL             1
1583    #define CAM_HAS_ND_FILTER           1
1584    #define CAM_HAS_ZOOM_LEVER          1
1585    #define CAM_MULTIPART               1
1586    #define CAM_REMOTE                  1
1587    #define CAM_SYNCH                   1   // XXX
1588    #undef CAM_UNCACHED_BIT
1589    #define CAM_UNCACHED_BIT            0x40000000  // 0xFF874198 (via ExMem.FreeCacheable
1590    #define PARAM_CAMERA_NAME           4 // parameter number for GetParameterData
1591   
1592    #undef  CAM_CAN_MUTE_MICROPHONE         // XXX
1593    #undef  CAM_HAS_ERASE_BUTTON
1594    #undef  CAM_HAS_IRIS_DIAPHRAGM
1595    #undef  CAM_HAS_MANUAL_FOCUS
1596    #undef  CAM_HAS_USER_TV_MODES           // XXX
1597    #undef  CAM_HAS_VIDEO_BUTTON            // XXX
1598    #undef  CAM_EV_IN_VIDEO                 // XXX
1599    #undef  CAM_REAR_CURTAIN
1600
1601    #define CAM_JPEG_WIDTH              3648
1602    #define CAM_JPEG_HEIGHT             2736
1603    #define CAM_RAW_ROWPIX              3720
1604    #define CAM_RAW_ROWS                2772
1605    #define CAM_ACTIVE_AREA_X1          14       // XXX
1606    #define CAM_ACTIVE_AREA_Y1          8        // XXX
1607    #define CAM_ACTIVE_AREA_X2          3682     // XXX
1608    #define CAM_ACTIVE_AREA_Y2          2764     // XXX
1609   
1610    #undef CAM_SENSOR_BITS_PER_PIXEL
1611    #undef CAM_WHITE_LEVEL
1612    #undef CAM_BLACK_LEVEL
1613    #define CAM_SENSOR_BITS_PER_PIXEL   12
1614    #define CAM_WHITE_LEVEL             ((1<<CAM_SENSOR_BITS_PER_PIXEL)-1) // XXX
1615    #define CAM_BLACK_LEVEL             127 // XXX
1616
1617    #define cam_CFAPattern              0x02010100 // Red  Green  Green  Blue
1618    #define CAM_COLORMATRIX1                               \
1619      827547, 1000000, -290458, 1000000, -126086, 1000000, \
1620     -12829,  1000000, 530507,  1000000, 50537,   1000000, \
1621      5181,   1000000, 48183,   1000000, 245014,  1000000    // XXX
1622    #define cam_CalibrationIlluminant1  1 // Daylight       XXX
1623
1624
1625    // CHDK functionality
1626    #define CAM_CHDK_HAS_EXT_VIDEO_MENU 1   // XXX
1627    #define CAM_EMUL_KEYPRESS_DELAY     40
1628    #define CAM_EMUL_KEYPRESS_DURATION  5
1629    #define CAM_SHOW_OSD_IN_SHOOT_MENU  1
1630    #undef  DEFAULT_RAW_EXT
1631    #define DEFAULT_RAW_EXT             2   // use .CR2
1632    #define DNG_SUPPORT                 1
1633   
1634    #undef  CAM_ADJUSTABLE_ALT_BUTTON
1635    #undef  CAM_CONSOLE_LOG_ENABLED
1636    #undef  CAM_DRAW_EXPOSITION             // XXX
1637    #undef  CAM_FEATURE_FEATHER             // XXX
1638    #undef  CAM_USE_ZOOM_FOR_MF
1639    #undef  CAM_VIDEO_CONTROL               // XXX
1640
1641
1642//----------------------------------------------------------
1643#elif defined (CAMERA_ixus950_sd850)
1644
1645    #define CAM_EXT_TV_RANGE            1
1646    #define CAM_PROPSET                 2
1647
1648    #define CAM_RAW_ROWPIX              3336   // for new 8 MP
1649    #define CAM_RAW_ROWS                2480   // for new 8 MP
1650
1651    #undef  CAM_USE_ZOOM_FOR_MF
1652    #undef  CAM_HAS_ERASE_BUTTON
1653    #undef  CAM_HAS_IRIS_DIAPHRAGM
1654    #define CAM_HAS_ND_FILTER           1
1655    #undef  CAM_HAS_MANUAL_FOCUS
1656    #undef  CAM_HAS_USER_TV_MODES
1657    #define CAM_SHOW_OSD_IN_SHOOT_MENU  1
1658    #define CAM_MULTIPART               1
1659    #define CAM_AF_SCAN_DURING_VIDEO_RECORD 1
1660    #define DNG_SUPPORT                 1
1661    // pattern
1662    #define cam_CFAPattern 0x01000201 // Green  Blue  Red  Green
1663    // color
1664    #define CAM_COLORMATRIX1        \
1665      14573, 1, -5482, 1, -1546, 1, \
1666     -1266,  1, 9799,  1, 1468,  1, \
1667     -1040,  1, 1912,  1, 3810,  1
1668   
1669    #define cam_CalibrationIlluminant1 1 // Daylight                   
1670    // cropping
1671    #define CAM_JPEG_WIDTH  3264
1672    #define CAM_JPEG_HEIGHT 2448
1673    #define CAM_ACTIVE_AREA_X1 10
1674    #define CAM_ACTIVE_AREA_Y1 8
1675    #define CAM_ACTIVE_AREA_X2 3302
1676    #define CAM_ACTIVE_AREA_Y2 2474
1677    // camera name
1678    #define PARAM_CAMERA_NAME 4 // parameter number for GetParameterData
1679    #define DNG_EXT_FROM ".DPS"
1680   
1681//----------------------------------------------------------
1682#elif defined (CAMERA_ixus960_sd950)
1683    #define CAM_PROPSET                 2
1684    #define CAM_DRYOS                   1
1685
1686    #define CAM_RAW_ROWPIX              4104   
1687    #define CAM_RAW_ROWS                3048   
1688
1689    #undef  CAM_USE_ZOOM_FOR_MF
1690    #undef  CAM_HAS_ERASE_BUTTON
1691    #undef  CAM_HAS_IRIS_DIAPHRAGM
1692    #define CAM_HAS_ND_FILTER           1
1693    #undef  CAM_HAS_MANUAL_FOCUS
1694    #undef  CAM_HAS_USER_TV_MODES
1695    #define CAM_SHOW_OSD_IN_SHOOT_MENU  1
1696    #define DNG_SUPPORT                 1
1697    // pattern
1698    #define cam_CFAPattern 0x02010100 // Red  Green  Green  Blue
1699    // color
1700    #define CAM_COLORMATRIX1                               \
1701      913762, 1000000, -261578, 1000000, -135582, 1000000, \
1702      -99049, 1000000, 1067089, 1000000,  61442,  1000000, \
1703      48717,  1000000, 96802,   1000000,  412056, 1000000
1704   
1705    #define cam_CalibrationIlluminant1 1 // Daylight
1706    // cropping
1707    #define CAM_JPEG_WIDTH  4000
1708    #define CAM_JPEG_HEIGHT 3000
1709    #define CAM_ACTIVE_AREA_X1 48
1710    #define CAM_ACTIVE_AREA_Y1 12
1711    #define CAM_ACTIVE_AREA_X2 4080
1712    #define CAM_ACTIVE_AREA_Y2 3036
1713    // camera name
1714    #define PARAM_CAMERA_NAME 4 // parameter number for GetParameterData
1715
1716    #define DNG_EXT_FROM ".CR2"
1717
1718//----------------------------------------------------------
1719#elif defined (CAMERA_ixus970_sd890)
1720    #define CAM_PROPSET                 2
1721    #define CAM_DRYOS                   1
1722
1723    #define CAM_RAW_ROWPIX              3720
1724    #define CAM_RAW_ROWS                2772
1725
1726    #undef CAM_USE_ZOOM_FOR_MF
1727    #undef CAM_HAS_ERASE_BUTTON
1728    #undef CAM_HAS_IRIS_DIAPHRAGM
1729    #define CAM_HAS_ND_FILTER           1
1730    #undef CAM_HAS_MANUAL_FOCUS
1731    #define CAM_MULTIPART               1
1732    #define CAM_HAS_JOGDIAL             1
1733    #define CAM_CAN_UNLOCK_OPTICAL_ZOOM_IN_VIDEO 1
1734    #define CAM_SHOW_OSD_IN_SHOOT_MENU  1
1735    #define DNG_SUPPORT                 1
1736    #define CAM_EXT_TV_RANGE            1
1737
1738    // pattern
1739    #define cam_CFAPattern 0x02010100 // Red  Green  Green  Blue
1740
1741    // color
1742    #define CAM_COLORMATRIX1                               \
1743      827547, 1000000, -290458, 1000000, -126086, 1000000, \
1744     -12829,  1000000, 530507,  1000000, 50537,   1000000, \
1745      5181,   1000000, 48183,   1000000, 245014,  1000000
1746    #define cam_CalibrationIlluminant1 1 // Daylight
1747
1748    // cropping
1749    #define CAM_JPEG_WIDTH  3648
1750    #define CAM_JPEG_HEIGHT 2736
1751    #define CAM_ACTIVE_AREA_X1 6
1752    #define CAM_ACTIVE_AREA_Y1 12
1753    #define CAM_ACTIVE_AREA_X2 3690
1754    #define CAM_ACTIVE_AREA_Y2 2772
1755
1756    // camera name
1757    #define PARAM_CAMERA_NAME 4 // parameter number for GetParameterData
1758
1759    // 12 bit support
1760    #undef  CAM_SENSOR_BITS_PER_PIXEL
1761    #undef  CAM_WHITE_LEVEL
1762    #undef  CAM_BLACK_LEVEL
1763    #define CAM_SENSOR_BITS_PER_PIXEL   12
1764    #define CAM_WHITE_LEVEL             ((1<<CAM_SENSOR_BITS_PER_PIXEL)-1)
1765    #define CAM_BLACK_LEVEL             127
1766
1767#elif defined (CAMERA_ixus980_sd990)
1768    #define CAM_PROPSET                 2 // all values checked so far match propset 2
1769    #define CAM_DRYOS                   1
1770
1771    #define CAM_RAW_ROWPIX              4480 // 14.7 MP 12bpp
1772    #define CAM_RAW_ROWS                3348   
1773
1774    #undef  CAM_USE_ZOOM_FOR_MF
1775    #undef  CAM_HAS_ERASE_BUTTON
1776    #define CAM_MULTIPART               1
1777    #undef  CAM_HAS_IRIS_DIAPHRAGM
1778    #define CAM_HAS_ND_FILTER           1
1779    #define  CAM_HAS_MANUAL_FOCUS               1
1780    #define  CAM_HAS_USER_TV_MODES              1 //include M/P ? needed to make Tv bracketing work
1781    #define CAM_SHOW_OSD_IN_SHOOT_MENU  1
1782    #define CAM_CHDK_HAS_EXT_VIDEO_MENU 1
1783    #undef  CAM_VIDEO_CONTROL
1784    #undef CAM_UNCACHED_BIT  // shut up compiler
1785    #define CAM_UNCACHED_BIT    0x40000000
1786    #undef CAM_BITMAP_PALETTE
1787    #define CAM_BITMAP_PALETTE    2
1788
1789        #undef CAM_BLACK_LEVEL
1790    #define CAM_BLACK_LEVEL             127
1791    #define CAM_HAS_JOGDIAL             1
1792//    #define CAM_AF_SCAN_DURING_VIDEO_RECORD 1
1793    #define CAM_VIDEO_QUALITY_ONLY          1 
1794    #define CAM_CAN_UNLOCK_OPTICAL_ZOOM_IN_VIDEO 1
1795        #undef CAM_SENSOR_BITS_PER_PIXEL
1796    #define CAM_SENSOR_BITS_PER_PIXEL   12
1797        #undef CAM_WHITE_LEVEL
1798    #define CAM_WHITE_LEVEL             ((1<<CAM_SENSOR_BITS_PER_PIXEL)-1)
1799
1800    #define DNG_SUPPORT                 1
1801    // pattern
1802    #define cam_CFAPattern 0x01000201 // Green  Blue  Red  Green
1803    // color preliminary
1804    #define CAM_COLORMATRIX1                               \
1805      837237, 1000000, -290137, 1000000, -128156, 1000000, \
1806      -127762, 1000000, 643909, 1000000,  52973,  1000000, \
1807      4446,  1000000, 88354,   1000000,  224246, 1000000
1808   
1809    #define cam_CalibrationIlluminant1 1 // Daylight
1810    // cropping
1811    #define CAM_JPEG_WIDTH  4416
1812    #define CAM_JPEG_HEIGHT 3312
1813    #define CAM_ACTIVE_AREA_X1 12
1814    #define CAM_ACTIVE_AREA_Y1 12
1815    #define CAM_ACTIVE_AREA_X2 4444
1816    #define CAM_ACTIVE_AREA_Y2 3324
1817    // camera name
1818    #define PARAM_CAMERA_NAME 4 // parameter number for GetParameterData sd990: OK
1819
1820//    #define DNG_EXT_FROM ".CR2"
1821
1822//----------------------------------------------------------
1823#elif defined (CAMERA_ixus100_sd780)
1824    #define CAM_PROPSET                 2
1825    #define CAM_DRYOS                   1
1826
1827    #define CAM_RAW_ROWPIX              4080            // 12 MP 12bpp
1828    #define CAM_RAW_ROWS                3048            // VERIFY_SD780 Found RAW #s by searching " CrwAddress %lx, CrwSize H %ld V %ld\r"
1829
1830    #undef  CAM_HAS_ERASE_BUTTON
1831    #undef  CAM_USE_ZOOM_FOR_MF
1832    #define CAM_MULTIPART               1
1833    #undef  CAM_HAS_IRIS_DIAPHRAGM
1834    #define CAM_HAS_ND_FILTER           1
1835
1836    #undef CAM_REMOTE
1837    #undef CAM_SYNCH
1838
1839    #define CAM_HAS_ZOOM_LEVER          1
1840
1841//    #define CAM_CAN_SD_OVER_NOT_IN_MF   1                     // Camera allows subject distance (focus) override when not in manual focus mode
1842//    #define CAM_CAN_SD_OVERRIDE         1                     // Camera allows to do subject distance override
1843
1844    #undef  CAM_HAS_MANUAL_FOCUS
1845    #define CAM_HAS_USER_TV_MODES                 1
1846    #define CAM_SHOW_OSD_IN_SHOOT_MENU            1
1847    #define CAM_CAN_UNLOCK_OPTICAL_ZOOM_IN_VIDEO  1
1848    #define CAM_AF_SCAN_DURING_VIDEO_RECORD       1
1849    #define CAM_CHDK_HAS_EXT_VIDEO_MENU           1
1850
1851    #define CAM_HAS_IS                  1
1852    #undef CAM_HAS_JOGDIAL
1853
1854    #undef  CAM_VIDEO_CONTROL
1855    #define CAM_VIDEO_QUALITY_ONLY      1
1856    #define DNG_SUPPORT                 1
1857
1858    #define CAM_EXT_TV_RANGE            1
1859
1860    #undef CAM_UNCACHED_BIT
1861    #define CAM_UNCACHED_BIT            0x40000000
1862
1863
1864
1865    #undef CAM_BITMAP_PALETTE
1866    #define CAM_BITMAP_PALETTE          5
1867
1868    #undef ZEBRA_HMARGIN0
1869    #define ZEBRA_HMARGIN0              150                     //zebra adjust buffer height: show use at sx200is: needed for save memory space
1870
1871    #define CAM_QUALITY_OVERRIDE 1
1872    #undef CAM_SENSOR_BITS_PER_PIXEL
1873    #define CAM_SENSOR_BITS_PER_PIXEL   12
1874    #undef CAM_WHITE_LEVEL
1875    #define CAM_WHITE_LEVEL             ((1<<CAM_SENSOR_BITS_PER_PIXEL)-1)
1876    #undef CAM_BLACK_LEVEL
1877    #define CAM_BLACK_LEVEL             127
1878
1879    // pattern
1880    //RealRom:FFA99FB4                    ADR     R0, aObRG1G2BLdLdLd ; "\n  OB : (R, G1, G2, B) = (%ld, %ld, %ld"...
1881    #define cam_CFAPattern              0x02010100              // Red  Green  Green  Blue
1882
1883    // color preliminary (see DNG4PS2 wiki)
1884    #define CAM_COLORMATRIX1                               \
1885      661840,  1000000, -185671, 1000000, -97110,  1000000, \
1886      -83661,  1000000, 578860, 1000000,   32308,  1000000, \
1887      -8681,    1000000, 70356,   1000000, 207341, 1000000
1888
1889    //Here is an alternate CAM_COLORMATRIX1 - Current one is nice for me but hey I'm no colour expert.
1890    //XYZ -> Camera matrix:
1891    //0.459395 -0.129083 -0.068085
1892    //-0.055837 0.400827 0.020378
1893    //-0.004622 0.048662 0.139970
1894
1895    #define cam_CalibrationIlluminant1  17                      // Standard Light A
1896
1897        // cropping
1898    #define CAM_JPEG_WIDTH              4000
1899    #define CAM_JPEG_HEIGHT             3000
1900    #define CAM_ACTIVE_AREA_X1          40
1901    #define CAM_ACTIVE_AREA_Y1          24
1902    #define CAM_ACTIVE_AREA_X2          4056
1903    #define CAM_ACTIVE_AREA_Y2          3040
1904    // camera name
1905    #define PARAM_CAMERA_NAME           4                       // parameter number for GetParameterData sd990: OK
1906
1907//----------------------------------------------------------
1908#elif defined (CAMERA_ixus90_sd790)
1909    #define CAM_PROPSET                 2
1910    #define CAM_DRYOS                   1
1911
1912    #define CAM_RAW_ROWPIX              3720
1913    #define CAM_RAW_ROWS                2772
1914
1915    #undef CAM_USE_ZOOM_FOR_MF
1916    #undef CAM_HAS_ERASE_BUTTON
1917    #define CAM_MULTIPART               1
1918    #undef CAM_HAS_IRIS_DIAPHRAGM
1919    #undef CAM_HAS_MANUAL_FOCUS
1920
1921    #define CAM_HAS_ND_FILTER           1
1922    #undef CAM_HAS_USER_TV_MODES
1923    #define CAM_SHOW_OSD_IN_SHOOT_MENU  1
1924         #define CAM_CAN_UNLOCK_OPTICAL_ZOOM_IN_VIDEO 1
1925    #define CAM_HAS_JOGDIAL             1
1926    #undef CAM_VIDEO_CONTROL
1927    #define CAM_EXT_TV_RANGE            1          // CHDK can make exposure time longer than 64s
1928
1929    #define DNG_SUPPORT                 1
1930    // pattern
1931    #define cam_CFAPattern 0x02010100 // Red  Green  Green  Blue
1932    // color
1933    #define CAM_COLORMATRIX1                               \
1934      827547, 1000000, -290458, 1000000, -126086, 1000000, \
1935     -12829,  1000000, 530507,  1000000, 50537,   1000000, \
1936      5181,   1000000, 48183,   1000000, 245014,  1000000
1937    #define cam_CalibrationIlluminant1 1 // Daylight
1938
1939    // cropping
1940    #define CAM_JPEG_WIDTH  3648
1941    #define CAM_JPEG_HEIGHT 2736
1942    #define CAM_ACTIVE_AREA_X1 6
1943    #define CAM_ACTIVE_AREA_Y1 12
1944    #define CAM_ACTIVE_AREA_X2 3690
1945    #define CAM_ACTIVE_AREA_Y2 2772
1946
1947    // camera name
1948    #define PARAM_CAMERA_NAME 4 // parameter number for GetParameterData
1949    #undef  CAM_SENSOR_BITS_PER_PIXEL
1950    #undef  CAM_WHITE_LEVEL
1951    #undef  CAM_BLACK_LEVEL
1952    #define CAM_SENSOR_BITS_PER_PIXEL   12
1953    #define CAM_WHITE_LEVEL             ((1<<CAM_SENSOR_BITS_PER_PIXEL)-1)
1954    #define CAM_BLACK_LEVEL             127
1955
1956//==========================================================
1957// S-Series
1958//==========================================================
1959#elif defined (CAMERA_s2is)
1960    #define CAM_PROPSET                 1
1961
1962    #define CAM_RAW_ROWPIX              2672   // for 5 MP
1963    #define CAM_RAW_ROWS                1968   // for 5 MP
1964   
1965    #undef  CAM_SYNCH   
1966    #define CAM_SWIVEL_SCREEN           1
1967    #define CAM_ADJUSTABLE_ALT_BUTTON   1
1968    #undef  CAM_CAN_UNLOCK_OPTICAL_ZOOM_IN_VIDEO
1969    #define  CAM_HAS_VIDEO_BUTTON       1
1970    #undef  CAM_VIDEO_CONTROL
1971    #define DNG_SUPPORT                 1
1972    // pattern
1973    #define cam_CFAPattern 0x02010100 // Red  Green  Green  Blue
1974    // color
1975    #define CAM_COLORMATRIX1                                \
1976      547708,  1000000, -143462, 1000000,  -99243, 1000000, \
1977     -186838,  1000000, 663925,  1000000,   50970, 1000000, \
1978     -5810,    1000000, 79162,   1000000,  266988, 1000000
1979   
1980    #define cam_CalibrationIlluminant1 1 // Daylight
1981    // cropping
1982    #define CAM_JPEG_WIDTH  2592
1983    #define CAM_JPEG_HEIGHT 1944
1984    #define CAM_ACTIVE_AREA_X1 14
1985    #define CAM_ACTIVE_AREA_Y1 10
1986    #define CAM_ACTIVE_AREA_X2 2626
1987    #define CAM_ACTIVE_AREA_Y2 1966
1988    // camera name
1989    #define PARAM_CAMERA_NAME 2 // parameter number for GetParameterData
1990    #define CAM_BRACKETING              1
1991    #define DNG_EXT_FROM ".DPS"
1992
1993//----------------------------------------------------------
1994#elif defined (CAMERA_s3is)
1995    #define CAM_PROPSET                 1
1996
1997    #define CAM_RAW_ROWPIX              2888   // for 6 MP
1998    #define CAM_RAW_ROWS                2136   // for 6 MP
1999   
2000    #undef  CAM_SYNCH 
2001    #define CAM_SWIVEL_SCREEN           1
2002    #define CAM_ADJUSTABLE_ALT_BUTTON   1
2003    #define CAM_MULTIPART               1
2004    #undef  CAM_CAN_SD_OVER_NOT_IN_MF
2005    #undef  CAM_CAN_UNLOCK_OPTICAL_ZOOM_IN_VIDEO
2006    #define  CAM_HAS_VIDEO_BUTTON       1
2007    #define DNG_SUPPORT                 1
2008    // pattern
2009    #define cam_CFAPattern 0x02010100 // Red  Green  Green  Blue
2010    // color
2011    #define CAM_COLORMATRIX1                               \
2012     14062, 10000, -5199, 10000, -1446, 10000,             \
2013     -4712, 10000, 12470, 10000,  2243, 10000,             \
2014     -1286, 10000,  2028, 10000,  4836, 10000
2015   
2016    #define cam_CalibrationIlluminant1 17 // Standard light A
2017    // cropping
2018    #define CAM_JPEG_WIDTH  2816
2019    #define CAM_JPEG_HEIGHT 2112
2020    #define CAM_ACTIVE_AREA_X1 44
2021    #define CAM_ACTIVE_AREA_Y1 8
2022    #define CAM_ACTIVE_AREA_X2 2884
2023    #define CAM_ACTIVE_AREA_Y2 2136
2024    // camera name
2025    #define PARAM_CAMERA_NAME 3 // parameter number for GetParameterData
2026    #define CAM_BRACKETING              1
2027    #define DNG_EXT_FROM ".DPS"
2028
2029    #define CAM_EXT_TV_RANGE            1
2030
2031//----------------------------------------------------------
2032#elif defined (CAMERA_s5is)
2033    #define CAM_PROPSET                 2
2034    #define CAM_DRYOS                   1
2035
2036    #define CAM_RAW_ROWPIX              3336   // for new 8 MP
2037    #define CAM_RAW_ROWS                2480   // for new 8 MP
2038   
2039    #define CAM_SWIVEL_SCREEN           1
2040    #define CAM_ADJUSTABLE_ALT_BUTTON   1
2041    #undef  CAM_CAN_SD_OVER_NOT_IN_MF
2042    #undef  CAM_CAN_UNLOCK_OPTICAL_ZOOM_IN_VIDEO
2043    #define CAM_HAS_VIDEO_BUTTON       1
2044    #define CAM_EXT_TV_RANGE            1
2045    #define DNG_SUPPORT                 1
2046    // pattern
2047    #define cam_CFAPattern 0x01000201 // Green  Blue  Red  Green
2048    // color
2049    #define CAM_COLORMATRIX1                               \
2050      650591, 1000000, -199585, 1000000, -123118, 1000000, \
2051     -69617,  1000000, 583926,  1000000,  34354,  1000000, \
2052     -19113,  1000000, 82163,   1000000, 210786,  1000000
2053   
2054    #define cam_CalibrationIlluminant1 1 // Daylight
2055    // cropping
2056    #define CAM_JPEG_WIDTH  3264
2057    #define CAM_JPEG_HEIGHT 2448
2058    #define CAM_ACTIVE_AREA_X1 10
2059    #define CAM_ACTIVE_AREA_Y1 8
2060    #define CAM_ACTIVE_AREA_X2 3302
2061    #define CAM_ACTIVE_AREA_Y2 2474
2062    // camera name
2063    #define PARAM_CAMERA_NAME 4 // parameter number for GetParameterData
2064    #define CAM_BRACKETING              1
2065    #define DNG_EXT_FROM ".DPS"
2066
2067//==========================================================
2068// TX-Series
2069//==========================================================
2070#elif defined (CAMERA_tx1)
2071    #define CAM_PROPSET                 2
2072   
2073    #define CAM_RAW_ROWPIX              3152   // for 7 MP
2074    #define CAM_RAW_ROWS                2340   // for 7 MP
2075
2076    #define CAM_SWIVEL_SCREEN           1
2077    #define CAM_HAS_ND_FILTER           1
2078    #undef  CAM_HAS_ERASE_BUTTON
2079    #undef  CAM_HAS_MANUAL_FOCUS
2080    #undef  CAM_CAN_UNLOCK_OPTICAL_ZOOM_IN_VIDEO
2081    #define CAM_MULTIPART               1
2082    #define CAM_AF_SCAN_DURING_VIDEO_RECORD 1
2083    #define  CAM_HAS_VIDEO_BUTTON       1
2084    #define DNG_SUPPORT                 1
2085    // pattern
2086    #define cam_CFAPattern 0x02010100 // Red  Green  Green  Blue
2087    // color
2088    #define CAM_COLORMATRIX1                                \
2089      510370,  1000000, -68998,  1000000, -86859,  1000000, \
2090      -279980, 1000000, 766686,  1000000,  67944,  1000000, \
2091      -14382,  1000000, 113688,  1000000, 239853,  1000000
2092   
2093    #define cam_CalibrationIlluminant1 1 // Daylight
2094    // cropping
2095    #define CAM_JPEG_WIDTH  3072
2096    #define CAM_JPEG_HEIGHT 2304
2097    #define CAM_ACTIVE_AREA_X1 12
2098    #define CAM_ACTIVE_AREA_Y1 8
2099    #define CAM_ACTIVE_AREA_X2 3108
2100    #define CAM_ACTIVE_AREA_Y2 2332
2101    // camera name
2102    #define PARAM_CAMERA_NAME 4 // parameter number for GetParameterData
2103    #define DNG_EXT_FROM ".DPS"
2104
2105//==========================================================
2106// SX-Series
2107//==========================================================
2108#elif defined (CAMERA_sx100is)
2109    #define CAM_PROPSET                 2
2110    #define CAM_DRYOS                   1
2111
2112    #define CAM_RAW_ROWPIX              3336   // for new 8 MP
2113    #define CAM_RAW_ROWS                2480   // for new 8 MP
2114    #undef CAM_SYNCH
2115    #define CAM_CAN_MUTE_MICROPHONE     1
2116    #define CAM_AF_SCAN_DURING_VIDEO_RECORD 1
2117    #define CAM_ADJUSTABLE_ALT_BUTTON   1
2118    #define CAM_SHOW_OSD_IN_SHOOT_MENU  1
2119    #undef  CAM_VIDEO_CONTROL
2120    #define DNG_SUPPORT                 1
2121    #define CAM_REAR_CURTAIN            1
2122    #define CAM_HAS_JOGDIAL             1
2123    // pattern
2124    #define cam_CFAPattern 0x01000201 // Green  Blue  Red  Green
2125    // color
2126    #define CAM_COLORMATRIX1                               \
2127      656793, 1000000, -168702, 1000000, -108030, 1000000, \
2128      -2711,  1000000, 661538,  1000000,  37919,  1000000, \
2129      77255,  1000000, 48834,   1000000, 241797,  1000000
2130   
2131    #define cam_CalibrationIlluminant1 1 // Daylight
2132    // cropping
2133    #define CAM_JPEG_WIDTH  3264
2134    #define CAM_JPEG_HEIGHT 2448
2135    #define CAM_ACTIVE_AREA_X1 10
2136    #define CAM_ACTIVE_AREA_Y1 8
2137    #define CAM_ACTIVE_AREA_X2 3302
2138    #define CAM_ACTIVE_AREA_Y2 2474
2139    // camera name
2140    #define PARAM_CAMERA_NAME 4 // parameter number for GetParameterData
2141
2142    #define DNG_EXT_FROM ".CR2"
2143    #define CAM_MULTIPART               1
2144
2145
2146//----------------------------------------------------------
2147
2148#elif defined (CAMERA_sx10)
2149    #define CAM_PROPSET                 2
2150    #define CAM_DRYOS                   1
2151
2152    #define CAM_RAW_ROWPIX              3720   
2153    #define CAM_RAW_ROWS                2772   
2154   
2155    #define CAM_SWIVEL_SCREEN           1
2156    #define CAM_ADJUSTABLE_ALT_BUTTON   1
2157    #undef  CAM_CAN_SD_OVER_NOT_IN_MF
2158    #undef  CAM_CAN_UNLOCK_OPTICAL_ZOOM_IN_VIDEO
2159    #define CAM_HAS_VIDEO_BUTTON       1
2160    #define CAM_VIDEO_QUALITY_ONLY          1 
2161    #define CAM_BRACKETING              1
2162    #undef  CAM_VIDEO_CONTROL
2163    #define CAM_MULTIPART               1
2164    #define CAM_HAS_JOGDIAL             1
2165    #undef  CAM_USE_ZOOM_FOR_MF
2166    #undef  CAM_UNCACHED_BIT  // shut up compiler
2167    #define CAM_UNCACHED_BIT    0x40000000
2168
2169
2170    #define DNG_SUPPORT                 1
2171    // pattern
2172    #define cam_CFAPattern 0x02010100 // Red  Green  Green  Blue
2173    // color
2174
2175    #define CAM_COLORMATRIX1                               \
2176      827547, 1000000, -290458, 1000000, -126086, 1000000, \
2177     -12829,  1000000, 530507,  1000000, 50537,   1000000, \
2178      5181,   1000000, 48183,   1000000, 245014,  1000000
2179
2180    #define cam_CalibrationIlluminant1 1 // Daylight
2181    // cropping
2182    #define CAM_JPEG_WIDTH  3648
2183    #define CAM_JPEG_HEIGHT 2736
2184    #define CAM_ACTIVE_AREA_X1 6
2185    #define CAM_ACTIVE_AREA_Y1 12
2186    #define CAM_ACTIVE_AREA_X2 3690
2187    #define CAM_ACTIVE_AREA_Y2 2772
2188    // camera name
2189    #define PARAM_CAMERA_NAME 4 // parameter number for GetParameterData
2190    #undef  CAM_SENSOR_BITS_PER_PIXEL
2191    #undef  CAM_WHITE_LEVEL
2192    #undef  CAM_BLACK_LEVEL
2193    #define CAM_SENSOR_BITS_PER_PIXEL   12
2194    #define CAM_WHITE_LEVEL             ((1<<CAM_SENSOR_BITS_PER_PIXEL)-1)
2195    #define CAM_BLACK_LEVEL             127
2196
2197    #define CAM_EXT_TV_RANGE            1
2198
2199#elif defined (CAMERA_sx1)
2200    #define CAM_PROPSET                 2
2201    #define CAM_DRYOS                   1
2202
2203    #define CAM_RAW_ROWPIX              4152
2204    #define CAM_RAW_ROWS                2772 
2205   
2206    #define CAM_SWIVEL_SCREEN           1
2207    #define CAM_ADJUSTABLE_ALT_BUTTON   1
2208    #undef  CAM_CAN_SD_OVER_NOT_IN_MF
2209    #undef  CAM_CAN_UNLOCK_OPTICAL_ZOOM_IN_VIDEO
2210    #define CAM_HAS_VIDEO_BUTTON       1
2211    #define CAM_VIDEO_QUALITY_ONLY          1 
2212    #define CAM_BRACKETING              1
2213    #undef  CAM_VIDEO_CONTROL
2214    #define CAM_MULTIPART               1
2215    #define CAM_HAS_JOGDIAL             1
2216    #undef  CAM_USE_ZOOM_FOR_MF
2217    #undef  CAM_UNCACHED_BIT  // shut up compiler
2218    #define CAM_UNCACHED_BIT    0x40000000
2219
2220
2221    #define DNG_SUPPORT                 1
2222    // pattern
2223    #define cam_CFAPattern 0x02010100 // Red  Green  Green  Blue
2224    // color
2225
2226    #define CAM_COLORMATRIX1                               \
2227      827547, 1000000, -290458, 1000000, -126086, 1000000, \
2228     -12829,  1000000, 530507,  1000000, 50537,   1000000, \
2229      5181,   1000000, 48183,   1000000, 245014,  1000000
2230
2231    #define cam_CalibrationIlluminant1 1 // Daylight
2232    // cropping
2233    #define CAM_JPEG_WIDTH  3648
2234    #define CAM_JPEG_HEIGHT 2736
2235    #define CAM_ACTIVE_AREA_X1 344
2236    #define CAM_ACTIVE_AREA_Y1 24
2237    #define CAM_ACTIVE_AREA_X2 3991
2238    #define CAM_ACTIVE_AREA_Y2 2759 
2239    // camera name
2240    #define PARAM_CAMERA_NAME 4 // parameter number for GetParameterData
2241    #undef  CAM_SENSOR_BITS_PER_PIXEL
2242    #undef  CAM_WHITE_LEVEL
2243    #undef  CAM_BLACK_LEVEL
2244    #define CAM_SENSOR_BITS_PER_PIXEL   12
2245    #define CAM_WHITE_LEVEL             ((1<<CAM_SENSOR_BITS_PER_PIXEL)-1)
2246    #define CAM_BLACK_LEVEL             127
2247 
2248    #define CAM_EXT_TV_RANGE            1
2249                 
2250    #define CAM_HAS_VARIABLE_ASPECT 1
2251//----------------------------------------------------------
2252        //********
2253        /////SX110
2254        //********
2255#elif defined (CAMERA_sx110is)
2256        #define CAM_COLORMATRIX1                               \
2257      530200, 1000000, -42600,  1000000, -33000,  1000000, \
2258     -525400,  1000000, 1092700,  1000000,  223700,  1000000, \
2259     -103700,  1000000, 117900,   1000000,  421600,  1000000
2260    #define CAM_ACTIVE_AREA_X1 8
2261    #define CAM_ACTIVE_AREA_Y1 14
2262    #define CAM_ACTIVE_AREA_X2 3688
2263    #define CAM_ACTIVE_AREA_Y2 2772
2264
2265    #define CAM_PROPSET                 2
2266    #define CAM_DRYOS                   1
2267    #define CAM_RAW_ROWPIX              3720 
2268    #define CAM_RAW_ROWS                2772 
2269    #undef CAM_SYNCH
2270    #define CAM_CAN_MUTE_MICROPHONE     1
2271    #define CAM_SHOW_OSD_IN_SHOOT_MENU  1
2272    #define CAM_REAR_CURTAIN            1
2273    #define CAM_ADJUSTABLE_ALT_BUTTON   1
2274    #define CAM_CAN_UNLOCK_OPTICAL_ZOOM_IN_VIDEO 1
2275    #define CAM_AF_SCAN_DURING_VIDEO_RECORD 1
2276    #undef  CAM_VIDEO_CONTROL                                   
2277    #define CAM_MULTIPART               1
2278    #define CAM_HAS_JOGDIAL             1
2279    #undef  CAM_USE_ZOOM_FOR_MF
2280    #undef  CAM_UNCACHED_BIT  // shut up compiler
2281    #define CAM_UNCACHED_BIT    0x40000000
2282        #undef CAM_SENSOR_BITS_PER_PIXEL
2283    #define CAM_SENSOR_BITS_PER_PIXEL   12
2284        #undef CAM_WHITE_LEVEL
2285    #define CAM_WHITE_LEVEL             ((1<<CAM_SENSOR_BITS_PER_PIXEL)-1)
2286        // black level set to 128 per reports on the forum
2287    #undef  CAM_BLACK_LEVEL
2288    #define CAM_BLACK_LEVEL             128
2289    #define DNG_SUPPORT                 1
2290    #define PARAM_CAMERA_NAME 4 // parameter number for GetParameterData
2291    #define cam_CFAPattern 0x02010100 // Red  Green  Green  Blue
2292    #define cam_CalibrationIlluminant1 1 // Daylight
2293    #define CAM_JPEG_WIDTH  3456
2294    #define CAM_JPEG_HEIGHT 2592
2295       
2296//----------------------------------------------------------
2297        //********
2298        /////SX200
2299        //********
2300#elif defined (CAMERA_sx200is)
2301
2302  // copied from SX10 and modified
2303
2304    #define CAM_PROPSET                 2
2305    #define CAM_DRYOS                   1
2306    #define CAM_RAW_ROWPIX              4080 // from calcs see 100C lib.c
2307    #define CAM_RAW_ROWS                3048 //  "     "    "    "    " 
2308   
2309    #undef  CAM_CAN_SD_OVER_NOT_IN_MF
2310    #undef  CAM_CAN_UNLOCK_OPTICAL_ZOOM_IN_VIDEO
2311    #define CAM_CAN_UNLOCK_OPTICAL_ZOOM_IN_VIDEO 1
2312
2313    #define CAM_VIDEO_QUALITY_ONLY          1 
2314
2315    #undef  CAM_VIDEO_CONTROL
2316    #define CAM_MULTIPART               1
2317    #define CAM_HAS_JOGDIAL             1
2318    #undef  CAM_USE_ZOOM_FOR_MF
2319    #undef  CAM_UNCACHED_BIT  // shut up compiler
2320    #define CAM_UNCACHED_BIT    0x40000000
2321    #define DNG_SUPPORT                 1
2322    // pattern
2323    #define cam_CFAPattern 0x02010100 // Red  Green  Green  Blue
2324    // color
2325    //need fixing *****************************************************
2326    #define CAM_COLORMATRIX1                               \
2327      14134, 1000000, -5576, 1000000, -1527, 1000000, \
2328     -1991,  1000000, 10719,  1000000, 1273,   1000000, \
2329      -1158,   1000000, 1929,   1000000, 3581,  1000000
2330
2331    #define cam_CalibrationIlluminant1 17 // Standard Light A
2332    // cropping
2333    #define CAM_JPEG_WIDTH  4000
2334    #define CAM_JPEG_HEIGHT 3000
2335    #define CAM_ACTIVE_AREA_X1 52
2336    #define CAM_ACTIVE_AREA_Y1 14
2337    #define CAM_ACTIVE_AREA_X2 4052
2338    #define CAM_ACTIVE_AREA_Y2 3014
2339    // camera name
2340    #define PARAM_CAMERA_NAME 4 // parameter number for GetParameterData
2341    #undef  CAM_SENSOR_BITS_PER_PIXEL
2342    #undef  CAM_WHITE_LEVEL
2343    #undef  CAM_BLACK_LEVEL
2344    #define CAM_SENSOR_BITS_PER_PIXEL   12
2345    #define CAM_WHITE_LEVEL             ((1<<CAM_SENSOR_BITS_PER_PIXEL)-1)
2346    #define CAM_BLACK_LEVEL             127
2347
2348    #define CAM_EXT_TV_RANGE            1
2349    #undef CAM_BITMAP_PALETTE
2350    #define CAM_BITMAP_PALETTE    3
2351    #undef CAM_HAS_ERASE_BUTTON
2352    #define  CAM_SHOW_OSD_IN_SHOOT_MENU  1
2353       
2354    //nandoide sept-2009
2355    #undef CAM_USES_ASPECT_CORRECTION   
2356    #undef CAM_USES_ASPECT_YCORRECTION 
2357    #define CAM_USES_ASPECT_CORRECTION  1  //camera uses the modified graphics primitives to map screens an viewports to buffers more sized
2358    #define CAM_USES_ASPECT_YCORRECTION  0  //only uses mappings on x coordinate
2359
2360   
2361// reyalp TODO not sure this stuff belongs in camera.h there will probably only be a few different setups
2362// maybe we can just have one CAM_ options that picks what to use ?
2363// values need to be better documented
2364        // reyalp - I guess these are bitmap ?
2365    //default mappings
2366    #undef ASPECT_XCORRECTION
2367    #define ASPECT_XCORRECTION(x)  ( ( ((x)<<3) + (x) )  >>2 )   //correction x*screen_buffer_width/screen_width = x*720/320 = x*9/4 = (x<<3 + x)>>2
2368   
2369    //grids
2370    #undef ASPECT_GRID_XCORRECTION
2371    #define ASPECT_GRID_XCORRECTION(x)  ( ((x)<<3)/9  )  //grids are designed on a 360x240 basis and screen is 320x240, we need x*320/360=x*8/9
2372    #undef ASPECT_GRID_YCORRECTION
2373    #define ASPECT_GRID_YCORRECTION(y)  ( (y) )       //y correction for grids  made on a 360x240 As the buffer is 720x240 we have no correction here.
2374   
2375    //viewport
2376    #undef ASPECT_VIEWPORT_XCORRECTION
2377    #define ASPECT_VIEWPORT_XCORRECTION(x) ASPECT_GRID_XCORRECTION(x) //viewport is 360x240 and screen 320x240, we need x*320/360=x*8/9, equal than grids, used by edgeoverlay
2378    #undef ASPECT_VIEWPORT_YCORRECTION
2379    #define ASPECT_VIEWPORT_YCORRECTION(y) ( (y) )
2380    #undef EDGE_HMARGIN
2381    #define EDGE_HMARGIN 20
2382   
2383    //games mappings
2384   #undef GAMES_SCREEN_WIDTH
2385   #undef GAMES_SCREEN_HEIGHT
2386   #define GAMES_SCREEN_WIDTH 360
2387   #define GAMES_SCREEN_HEIGHT 240
2388   #undef ASPECT_GAMES_XCORRECTION
2389   // 720/360=2 same aspect than grids and viewport but another approach: there is a lot of corrections to do in game's code, and we decide to paint directly on display buffer wirh another resolution
2390   // used by gui.c that configures the draw environment (trhough new draw_gui function) depending on gui_mode: we have then 360x240 for games (but deformed output:circles are not circles) and 320x240 for
2391   // other modes in perfect aspect ratio 4/3: slightly better visualization: file menus more readable, ...
2392   #define ASPECT_GAMES_XCORRECTION(x)   ( ((x)<<1) ) 
2393   #undef ASPECT_GAMES_YCORRECTION
2394   #define ASPECT_GAMES_YCORRECTION(y)   ( (y) )  //none
2395   
2396   //zebra letterbox for saving memory
2397   #undef ZEBRA_HMARGIN0
2398   #define ZEBRA_HMARGIN0  30 //this 30 rows are not used by the display buffer is 720x240 effective, no 960x270, i.e. (270-240) reduction in widht possible but not done (more difficult to manage it and slower).
2399     
2400   //end nandoide sept-2009
2401   #define CAM_QUALITY_OVERRIDE 1
2402   #define CAM_AF_SCAN_DURING_VIDEO_RECORD 1
2403//----------------------------------------------------------
2404#elif defined (CAMERA_g11)
2405    #define CAM_DRYOS_2_3_R39                   1
2406    #define CAM_PROPSET                 3
2407    #define CAM_DRYOS                   1
2408    #undef  CAM_USE_ZOOM_FOR_MF
2409    #define CAM_RAW_ROWPIX              3744   // See g11 lib.c
2410    #define CAM_RAW_ROWS                2784   // See g11 lib.c
2411    #undef  CAM_EMUL_KEYPRESS_DURATION
2412    #define CAM_EMUL_KEYPRESS_DURATION  10
2413
2414        #define CAM_QUALITY_OVERRIDE 1
2415    #define CAM_AF_SCAN_DURING_VIDEO_RECORD 1
2416    #define CAM_HAS_JOGDIAL             1
2417    #undef  CAM_CONSOLE_LOG_ENABLED         // Development: internal camera stdout -> A/stdout.txt
2418    #define CAM_BRACKETING              1
2419    #define CAM_MULTIPART               1
2420    #define CAM_EXT_TV_RANGE            1
2421    #undef OPT_CURVES
2422    #undef CAM_UNCACHED_BIT
2423    #define CAM_UNCACHED_BIT            0x40000000  // G11 @FF888204(via ExMem.FreeCacheable)
2424
2425        #define CAM_SWIVEL_SCREEN                       1
2426        #define CAM_SHOW_OSD_IN_SHOOT_MENU  1
2427
2428    // camera name
2429    #define PARAM_CAMERA_NAME 4 // parameter number for GetParameterData
2430    #undef  CAM_SENSOR_BITS_PER_PIXEL
2431    #undef  CAM_WHITE_LEVEL
2432    #undef  CAM_BLACK_LEVEL
2433    #define CAM_SENSOR_BITS_PER_PIXEL   12
2434    #define CAM_WHITE_LEVEL             ((1<<CAM_SENSOR_BITS_PER_PIXEL)-1)
2435    #define CAM_BLACK_LEVEL             127
2436
2437    #undef CAM_USES_ASPECT_CORRECTION   
2438    #undef CAM_USES_ASPECT_YCORRECTION 
2439    #define CAM_USES_ASPECT_CORRECTION  1  //camera uses the modified graphics primitives to map screens an viewports to buffers more sized
2440    #define CAM_USES_ASPECT_YCORRECTION  0  //only uses mappings on x coordinate
2441    //games mappings
2442        #undef GAMES_SCREEN_WIDTH
2443        #undef GAMES_SCREEN_HEIGHT
2444        #define GAMES_SCREEN_WIDTH 360
2445        #define GAMES_SCREEN_HEIGHT 240
2446
2447    #undef CAM_BITMAP_PALETTE
2448    #define CAM_BITMAP_PALETTE    4
2449   
2450
2451    #undef ASPECT_XCORRECTION
2452        #define ASPECT_XCORRECTION(x)  ( ( ((x)<<3) + (x) )  >>2 )
2453        #undef ASPECT_GAMES_XCORRECTION
2454        #define ASPECT_GAMES_XCORRECTION(x)   ( ((x)<<1) ) 
2455        #undef ASPECT_GAMES_YCORRECTION
2456        #define ASPECT_GAMES_YCORRECTION(y)   ( (y) )  //none
2457
2458    #undef ASPECT_GRID_XCORRECTION
2459    #define ASPECT_GRID_XCORRECTION(x)  ( ((x)<<3)/9  )  //grids are designed on a 360x240 basis and screen is 320x240, we need x*320/360=x*8/9
2460    #undef ASPECT_GRID_YCORRECTION
2461    #define ASPECT_GRID_YCORRECTION(y)  ( (y) )       //y correction for grids  made on a 360x240 As the buffer is 720x240 we have no correction here.
2462
2463    #undef ASPECT_VIEWPORT_XCORRECTION
2464    #define ASPECT_VIEWPORT_XCORRECTION(x) ASPECT_GRID_XCORRECTION(x) //viewport is 360x240 and screen 320x240, we need x*320/360=x*8/9, equal than grids, used by edgeoverlay
2465    #undef ASPECT_VIEWPORT_YCORRECTION
2466    #define ASPECT_VIEWPORT_YCORRECTION(y) ( (y) )
2467    #undef EDGE_HMARGIN
2468    #define EDGE_HMARGIN 20
2469
2470        /**** From SX200IS, ok for G11 ?*/
2471    #define DNG_SUPPORT    1
2472    // pattern
2473    #define cam_CFAPattern 0x02010100 // Red  Green  Green  Blue
2474    // color
2475    //need fixing *****************************************************
2476    #define CAM_COLORMATRIX1                               \
2477      14134, 1000000, -5576, 1000000, -1527, 1000000, \
2478     -1991,  1000000, 10719,  1000000, 1273,   1000000, \
2479      -1158,   1000000, 1929,   1000000, 3581,  1000000
2480    #define cam_CalibrationIlluminant1 17 // Standard Light A
2481
2482    // cropping
2483    #define CAM_JPEG_WIDTH  3600
2484    #define CAM_JPEG_HEIGHT 2700
2485    #define CAM_ACTIVE_AREA_X1 52
2486    #define CAM_ACTIVE_AREA_Y1 14
2487    #define CAM_ACTIVE_AREA_X2 3648
2488    #define CAM_ACTIVE_AREA_Y2 2736
2489          /**** From SX200IS, ok for G11 END?*/
2490#elif defined (CAMERA_s90)
2491    #define CAM_DRYOS_2_3_R39                   1
2492    #define CAM_PROPSET                 3
2493    #define CAM_DRYOS                   1
2494    #undef  CAM_USE_ZOOM_FOR_MF
2495    #define CAM_RAW_ROWPIX              3744   // See g11 lib.c
2496    #define CAM_RAW_ROWS                2784   // See g11 lib.c
2497    #undef  CAM_EMUL_KEYPRESS_DURATION
2498    #define CAM_EMUL_KEYPRESS_DURATION  10
2499
2500        #define CAM_QUALITY_OVERRIDE 1
2501    #define CAM_AF_SCAN_DURING_VIDEO_RECORD 1
2502    #define CAM_HAS_JOGDIAL             1
2503        #undef CAM_HAS_ERASE_BUTTON
2504    #undef  CAM_CONSOLE_LOG_ENABLED         // Development: internal camera stdout -> A/stdout.txt
2505    #define CAM_BRACKETING              1
2506    #define CAM_MULTIPART               1
2507    #define CAM_EXT_TV_RANGE            1
2508    #undef OPT_CURVES
2509    #undef CAM_UNCACHED_BIT
2510    #define CAM_UNCACHED_BIT            0x40000000  // S90 @FF8875FC(via ExMem.FreeCacheable)
2511
2512        #define CAM_SHOW_OSD_IN_SHOOT_MENU  1
2513
2514    // camera name
2515    #define PARAM_CAMERA_NAME 4 // parameter number for GetParameterData
2516    #undef  CAM_SENSOR_BITS_PER_PIXEL
2517    #undef  CAM_WHITE_LEVEL
2518    #undef  CAM_BLACK_LEVEL
2519    #define CAM_SENSOR_BITS_PER_PIXEL   12
2520    #define CAM_WHITE_LEVEL             ((1<<CAM_SENSOR_BITS_PER_PIXEL)-1)
2521    #define CAM_BLACK_LEVEL             127
2522
2523    #undef CAM_USES_ASPECT_CORRECTION   
2524    #undef CAM_USES_ASPECT_YCORRECTION 
2525    #define CAM_USES_ASPECT_CORRECTION  1  //camera uses the modified graphics primitives to map screens an viewports to buffers more sized
2526    #define CAM_USES_ASPECT_YCORRECTION  0  //only uses mappings on x coordinate
2527    //games mappings
2528        #undef GAMES_SCREEN_WIDTH
2529        #undef GAMES_SCREEN_HEIGHT
2530        #define GAMES_SCREEN_WIDTH 360
2531        #define GAMES_SCREEN_HEIGHT 240
2532
2533    #undef CAM_BITMAP_PALETTE
2534    #define CAM_BITMAP_PALETTE    4
2535
2536    #undef ASPECT_XCORRECTION
2537        #define ASPECT_XCORRECTION(x)  ( ( ((x)<<3) + (x) )  >>2 )
2538        #undef ASPECT_GAMES_XCORRECTION
2539        #define ASPECT_GAMES_XCORRECTION(x)   ( ((x)<<1) ) 
2540        #undef ASPECT_GAMES_YCORRECTION
2541        #define ASPECT_GAMES_YCORRECTION(y)   ( (y) )  //none
2542
2543    #undef ASPECT_GRID_XCORRECTION
2544    #define ASPECT_GRID_XCORRECTION(x)  ( ((x)<<3)/9  )  //grids are designed on a 360x240 basis and screen is 320x240, we need x*320/360=x*8/9
2545    #undef ASPECT_GRID_YCORRECTION
2546    #define ASPECT_GRID_YCORRECTION(y)  ( (y) )       //y correction for grids  made on a 360x240 As the buffer is 720x240 we have no correction here.
2547
2548    #undef ASPECT_VIEWPORT_XCORRECTION
2549    #define ASPECT_VIEWPORT_XCORRECTION(x) ASPECT_GRID_XCORRECTION(x) //viewport is 360x240 and screen 320x240, we need x*320/360=x*8/9, equal than grids, used by edgeoverlay
2550    #undef ASPECT_VIEWPORT_YCORRECTION
2551    #define ASPECT_VIEWPORT_YCORRECTION(y) ( (y) )
2552    #undef EDGE_HMARGIN
2553    #define EDGE_HMARGIN 20
2554
2555        /**** From SX200IS, ok for S90 ?*/
2556    #define DNG_SUPPORT    1
2557    // pattern
2558    #define cam_CFAPattern 0x02010100 // Red  Green  Green  Blue
2559    // color
2560    //need fixing *****************************************************
2561    #define CAM_COLORMATRIX1                               \
2562      14134, 1000000, -5576, 1000000, -1527, 1000000, \
2563     -1991,  1000000, 10719,  1000000, 1273,   1000000, \
2564      -1158,   1000000, 1929,   1000000, 3581,  1000000
2565    #define cam_CalibrationIlluminant1 17 // Standard Light A
2566
2567    // cropping
2568    #define CAM_JPEG_WIDTH  3600
2569    #define CAM_JPEG_HEIGHT 2700
2570    #define CAM_ACTIVE_AREA_X1 52
2571    #define CAM_ACTIVE_AREA_Y1 14
2572    #define CAM_ACTIVE_AREA_X2 3648
2573    #define CAM_ACTIVE_AREA_Y2 2736
2574    /**** From SX200IS, ok for S90 END?*/
2575
2576#elif defined (CAMERA_sx20)
2577    #define CAM_PROPSET                 3
2578    #define CAM_DRYOS                   1
2579    #define CAM_DRYOS_2_3_R39           1
2580
2581    #define CAM_RAW_ROWPIX              4080
2582    #define CAM_RAW_ROWS                3048
2583   
2584    #define CAM_SWIVEL_SCREEN           1
2585    #define CAM_ADJUSTABLE_ALT_BUTTON   1
2586    #undef  CAM_CAN_SD_OVER_NOT_IN_MF
2587    #undef  CAM_CAN_UNLOCK_OPTICAL_ZOOM_IN_VIDEO
2588    #define CAM_HAS_VIDEO_BUTTON                1
2589    #define CAM_VIDEO_QUALITY_ONLY      1 
2590    #define CAM_BRACKETING              1
2591    #undef  CAM_VIDEO_CONTROL
2592    #define CAM_MULTIPART               1
2593    #define CAM_HAS_JOGDIAL             1
2594    #undef  CAM_USE_ZOOM_FOR_MF
2595    #undef  CAM_UNCACHED_BIT  // shut up compiler
2596    #define CAM_UNCACHED_BIT    0x40000000
2597
2598    #define DNG_SUPPORT                 1
2599    // pattern
2600    #define cam_CFAPattern 0x02010100 // Red  Green  Green  Blue
2601    // color
2602
2603    #define CAM_COLORMATRIX1                               \
2604      827547, 1000000, -290458, 1000000, -126086, 1000000, \
2605     -12829,  1000000, 530507,  1000000, 50537,   1000000, \
2606      5181,   1000000, 48183,   1000000, 245014,  1000000
2607
2608    #define cam_CalibrationIlluminant1 1 // Daylight
2609    // cropping
2610    #define CAM_JPEG_WIDTH      4000
2611    #define CAM_JPEG_HEIGHT 3000
2612    #define CAM_ACTIVE_AREA_X1 24
2613    #define CAM_ACTIVE_AREA_Y1 12
2614    #define CAM_ACTIVE_AREA_X2 4080-48
2615    #define CAM_ACTIVE_AREA_Y2 3048-24
2616    // camera name
2617    #define PARAM_CAMERA_NAME 4 // parameter number for GetParameterData
2618    #undef  CAM_SENSOR_BITS_PER_PIXEL
2619    #undef  CAM_WHITE_LEVEL
2620    #undef  CAM_BLACK_LEVEL
2621    #define CAM_SENSOR_BITS_PER_PIXEL   12
2622    #define CAM_WHITE_LEVEL             ((1<<CAM_SENSOR_BITS_PER_PIXEL)-1)
2623    #define CAM_BLACK_LEVEL             127
2624
2625    #define CAM_EXT_TV_RANGE            1
2626    #define CAM_QUALITY_OVERRIDE        1
2627
2628    // copied from the SX200 which has the same video buffer size
2629    #undef CAM_USES_ASPECT_CORRECTION   
2630    #undef CAM_USES_ASPECT_YCORRECTION 
2631    #define CAM_USES_ASPECT_CORRECTION  1  //camera uses the modified graphics primitives to map screens an viewports to buffers more sized
2632    #define CAM_USES_ASPECT_YCORRECTION  0  //only uses mappings on x coordinate
2633
2634    #undef ASPECT_XCORRECTION
2635    #define ASPECT_XCORRECTION(x)  ( ( ((x)<<3) + (x) )  >>2 )   //correction x*screen_buffer_width/screen_width = x*720/320 = x*9/4 = (x<<3 + x)>>2
2636
2637    #undef ASPECT_GRID_XCORRECTION
2638    #define ASPECT_GRID_XCORRECTION(x)  ( ((x)<<3)/9  )  //grids are designed on a 360x240 basis and screen is 320x240, we need x*320/360=x*8/9
2639    #undef ASPECT_GRID_YCORRECTION
2640    #define ASPECT_GRID_YCORRECTION(y)  ( (y) )       //y correction for grids  made on a 360x240 As the buffer is 720x240 we have no correction here.
2641   
2642    #undef ASPECT_VIEWPORT_XCORRECTION
2643    #define ASPECT_VIEWPORT_XCORRECTION(x) ASPECT_GRID_XCORRECTION(x) //viewport is 360x240 and screen 320x240, we need x*320/360=x*8/9, equal than grids, used by edgeoverlay
2644    #undef ASPECT_VIEWPORT_YCORRECTION
2645    #define ASPECT_VIEWPORT_YCORRECTION(y) ( (y) )
2646   
2647    //games mappings
2648    #undef GAMES_SCREEN_WIDTH
2649    #undef GAMES_SCREEN_HEIGHT
2650        #define GAMES_SCREEN_WIDTH 360
2651    #define GAMES_SCREEN_HEIGHT 240
2652    #undef ASPECT_GAMES_XCORRECTION
2653    // 720/360=2 same aspect than grids and viewport but another approach: there is a lot of corrections to do in game's code, and we decide to paint directly on display buffer wirh another resolution
2654    // used by gui.c that configures the draw environment (trhough new draw_gui function) depending on gui_mode: we have then 360x240 for games (but deformed output:circles are not circles) and 320x240 for
2655    // other modes in perfect aspect ratio 4/3: slightly better visualization: file menus more readable, ...
2656    #define ASPECT_GAMES_XCORRECTION(x)   ( ((x)<<1) ) 
2657    #undef ASPECT_GAMES_YCORRECTION
2658    #define ASPECT_GAMES_YCORRECTION(y)   ( (y) )  //none
2659
2660    #undef CAM_BITMAP_PALETTE
2661    #define CAM_BITMAP_PALETTE    6
2662   
2663
2664   //zebra letterbox for saving memory
2665   #undef ZEBRA_HMARGIN0
2666   #define ZEBRA_HMARGIN0  30 //this 30 rows are not used by the display buffer is 720x240 effective, no 960x270, i.e. (270-240) reduction in widht possible but not done (more difficult to manage it and slower).
2667 
2668   #undef EDGE_HMARGIN
2669   #define EDGE_HMARGIN 20
2670
2671   // the SX20 has a very small amount of free ram once CHDK is loaded - probably due to the large display buffers in use
2672   // The RAM is so low that edge detection and zebra crash the device
2673   // unloading the games from this build free's 14k of ram allowing zebra and edge to
2674   // work normally and the random crashes to go away
2675   #undef OPT_GAME_REVERSI
2676   #undef OPT_GAME_SOKOBAN
2677   #undef OPT_GAME_CONNECT4
2678   #undef OPT_GAME_MASTERMIND
2679   #undef OPT_CALENDAR
2680
2681
2682#else
2683    #error camera type not defined
2684#endif
2685
2686// curves only work in 10bpp for now
2687#if CAM_SENSOR_BITS_PER_PIXEL != 10
2688#undef OPT_CURVES
2689#endif
2690
2691#endif /* CAMERA_H */
Note: See TracBrowser for help on using the repository browser.