source: trunk/include/platform.h @ 813

Revision 813, 15.0 KB checked in by reyalp, 4 years ago (diff)

jpeg quality override from ADamb, allows "super fine" on sx200. http://chdk.setepontos.com/index.php/topic,3994.msg40880.html#msg40880

  • Property svn:eol-style set to native
Line 
1#ifndef PLATFORM_H
2#define PLATFORM_H
3
4#include "camera.h"
5
6#define SSID_INVALID (-32767)
7#define ASID_INVALID (-32767)
8
9#define MODE_MASK               0x0300
10#define MODE_REC                0x0100
11#define MODE_PLAY               0x0200
12
13#define MODE_SHOOTING_MASK      0x00FF
14
15enum {
16MODE_AUTO               =1,
17MODE_P                  ,
18MODE_TV                 ,
19MODE_AV                 ,
20MODE_M                  ,
21MODE_PORTRAIT           ,
22MODE_NIGHT              ,
23MODE_LANDSCAPE          ,
24MODE_VIDEO_STD          ,
25MODE_VIDEO_SPEED        ,
26MODE_VIDEO_COMPACT      ,
27MODE_VIDEO_MY_COLORS    ,
28MODE_VIDEO_COLOR_ACCENT ,
29MODE_VIDEO_COLOR_SWAP   ,
30MODE_STITCH             ,
31MODE_MY_COLORS          ,
32MODE_SCN_WATER          ,
33MODE_SCN_NIGHT          ,
34MODE_SCN_CHILD          ,
35MODE_SCN_PARTY          ,
36MODE_SCN_GRASS          ,
37MODE_SCN_SNOW           ,
38MODE_SCN_BEACH          ,
39MODE_SCN_FIREWORK       ,
40MODE_SCN_COLOR_ACCENT   ,
41MODE_SCN_COLOR_SWAP     ,
42MODE_VIDEO_HIRES        ,
43MODE_SCN_AQUARIUM       ,
44MODE_COLOR_ACCENT       ,
45MODE_SCN_NIGHT1         ,
46MODE_SCN_ISO_3200       ,
47MODE_SCN_SPORT          ,
48MODE_SCN_KIDS_PETS      ,
49MODE_INDOOR             ,
50MODE_KIDS_PETS          ,
51MODE_NIGHT_SNAPSHOT     ,
52MODE_DIGITAL_MACRO      ,
53MODE_SCN_FOLIAGE        ,
54MODE_VIDEO_TIME_LAPSE   ,
55MODE_SCN_INDOOR         ,
56MODE_SCN_PORTRAIT       ,
57MODE_SUPER_MACRO        ,
58MODE_VIDEO_PORTRAIT     ,
59MODE_VIDEO_NIGHT        ,
60MODE_VIDEO_INDOOR       ,
61MODE_VIDEO_FOLIAGE      ,
62MODE_VIDEO_SNOW         ,
63MODE_VIDEO_BEACH        ,
64MODE_VIDEO_AQUARIUM     ,
65MODE_VIDEO_SUPER_MACRO  ,
66MODE_VIDEO_STITCH       ,
67MODE_VIDEO_MANUAL       ,
68MODE_SPORTS             ,
69MODE_QUICK                          ,
70MODE_SCN_SUNSET         ,
71MODE_SCN_UNDERWATER     ,
72MODE_EASY               ,
73MODE_SCN_DIGITAL_MACRO  ,
74MODE_SCN_STITCH         ,
75};
76
77// this is nasty, but not as nasty as checking each of the flags all over the place
78#define MODE_IS_VIDEO(m)   (((m)&MODE_SHOOTING_MASK)==MODE_VIDEO_STD || \
79                            ((m)&MODE_SHOOTING_MASK)==MODE_VIDEO_SPEED ||  \
80                            ((m)&MODE_SHOOTING_MASK)==MODE_VIDEO_COMPACT || \
81                            ((m)&MODE_SHOOTING_MASK)==MODE_VIDEO_MY_COLORS || \
82                            ((m)&MODE_SHOOTING_MASK)==MODE_VIDEO_COLOR_ACCENT || \
83                            ((m)&MODE_SHOOTING_MASK)==MODE_VIDEO_COLOR_SWAP || \
84                            ((m)&MODE_SHOOTING_MASK)==MODE_VIDEO_TIME_LAPSE || \
85                            ((m)&MODE_SHOOTING_MASK)==MODE_VIDEO_PORTRAIT || \
86                            ((m)&MODE_SHOOTING_MASK)==MODE_VIDEO_NIGHT || \
87                            ((m)&MODE_SHOOTING_MASK)==MODE_VIDEO_INDOOR || \
88                            ((m)&MODE_SHOOTING_MASK)==MODE_VIDEO_FOLIAGE || \
89                            ((m)&MODE_SHOOTING_MASK)==MODE_VIDEO_SNOW  || \
90                            ((m)&MODE_SHOOTING_MASK)==MODE_VIDEO_BEACH || \
91                            ((m)&MODE_SHOOTING_MASK)==MODE_VIDEO_AQUARIUM || \
92                            ((m)&MODE_SHOOTING_MASK)==MODE_VIDEO_SUPER_MACRO || \
93                            ((m)&MODE_SHOOTING_MASK)==MODE_VIDEO_STITCH || \
94                            ((m)&MODE_SHOOTING_MASK)==MODE_VIDEO_MANUAL)
95#if CAM_PROPSET == 2     // most digic3 cameras
96 #include "propset2.h"
97#elif CAM_PROPSET == 1   // most digic2 cameras
98 #include "propset1.h"
99#else
100 #error unknown camera processor
101#endif
102
103
104#define MAX_DIST 65535
105
106//********************
107//char * get_debug();
108//********************
109
110#define MODE_SCREEN_MASK        0x0C00
111#define MODE_SCREEN_OPENED      0x0400
112#define MODE_SCREEN_ROTATED     0x0800
113#define AS_SIZE (sizeof(aperture_sizes_table)/sizeof(aperture_sizes_table[0]))
114#define ASID_MIN (aperture_sizes_table[0].id)
115#define ASID_MAX (aperture_sizes_table[AS_SIZE-1].id)
116
117/* Keyboard repeat and initial delays */
118#define KBD_REPEAT_DELAY  140
119#define KBD_INITIAL_DELAY 300
120
121// Video recording current status constants, see movie_status variable
122#define VIDEO_RECORD_NEVER_STARTED 0 
123#define VIDEO_RECORD_STOPPED 1 
124#define VIDEO_RECORD_IN_PROGRESS 4
125
126//Optical & digital zoom status constants, see zoom_status variable
127#define ZOOM_OPTICAL_MIN         1
128#define ZOOM_OPTICAL_MAX         2
129#define ZOOM_OPTICAL_MEDIUM      3
130#define ZOOM_OPTICAL_IN          4
131#define ZOOM_OPTICAL_OUT         5
132#define ZOOM_OPTICAL_REACHED_MIN 7
133
134#define ZOOM_DIGITAL_MAX         9
135#define ZOOM_DIGITAL_MEDIUM      10
136#define ZOOM_DIGITAL_IN          11
137#define ZOOM_DIGITAL_OUT         12
138#define ZOOM_DIGITAL_REACHED_MAX 13
139
140typedef struct {
141    short id; // hacks id
142    short prop_id; // Canons id
143    char name[8];
144    short shutter_dfs_value; // shutter speed to use dark frame substraction
145} ISOTable;
146
147typedef struct {
148    short id; // hacks id
149    short prop_id; // Canons id
150    char name[8];
151    long usec;
152} ShutterSpeed;
153
154typedef struct {
155    short id; // hacks id
156    short prop_id; // Canons id
157    char name[8];
158} ApertureSize;
159
160typedef struct {
161    short av96;
162    short dav96;
163    short av96_step;
164    short tv96;
165    short dtv96;
166    short tv96_step;
167    short sv96;
168    short dsv96;
169    short sv96_step;
170    short iso;
171    short diso;
172    short iso_step;
173    short subj_dist;
174    short dsubj_dist;
175    short subj_dist_step;
176    short shoot_counter;
177    short type;
178} EXPO_BRACKETING_VALUES;
179
180#define SET_NOW      1
181#define SET_LATER    0
182
183#define SHOW_ALWAYS    1
184#define SHOW_HALF      2
185
186
187typedef struct {
188    short av96;
189    short tv96;
190    short sv96;
191    short subj_dist;
192    short nd_filter;
193} PHOTO_PARAM;
194
195typedef struct {
196    int    subject_distance;
197    int     near_limit;
198    int     far_limit;
199    int     hyperfocal_distance;
200    int     depth_of_field;
201    int     lens_to_focal_plane_width;
202} DOF_TYPE;
203
204typedef struct {
205    short av96;
206    short tv96;
207    short sv96;
208    short iso;
209    short sv96_market;
210    short iso_market;
211    short bv96_measured;
212    short bv96_seted;//Ev96_internal-Sv96
213    short ev96_seted; //Tv96+Av96
214    short ev96_measured; //Bv96+Sv96
215    short dev96;// Ev96_external-Ev96_internal
216    short dev96_canon;// Canon OverExposure
217    int b; //average scene luminance
218} EXPO_TYPE;
219
220typedef struct {
221    float value;
222    char fraction[10];
223} shutter_speed;
224
225
226/******************************************************************/
227
228int get_focal_length(int zp);
229int get_effective_focal_length(int zp);
230int get_zoom_x(int zp);
231
232/******************************************************************/
233
234long get_tick_count();
235
236void remount_filesystem();
237void mark_filesystem_bootable();
238
239/******************************************************************/
240
241long get_parameter_data(long id, void *buf, long bufsize);
242long set_parameter_data(long id, void *buf, long bufsize);
243
244long get_property_case(long id, void *buf, long bufsize);
245long set_property_case(long id, void *buf, long bufsize);
246
247long get_file_counter();
248long get_exposure_counter();
249long get_file_next_counter();
250long get_target_dir_num();
251long get_target_file_num();
252
253/******************************************************************/
254
255void kbd_key_press(long key);
256void kbd_key_release(long key);
257void kbd_key_release_all();
258long kbd_is_key_pressed(long key);
259long kbd_is_key_clicked(long key);
260long kbd_get_pressed_key();
261long kbd_get_clicked_key();
262long kbd_get_autoclicked_key();
263void kbd_reset_autoclicked_key();
264long kbd_use_zoom_as_mf();
265long kbd_use_up_down_left_right_as_fast_switch();
266void kbd_set_alt_mode_key_mask(long key);
267int get_usb_power(int edge);
268long get_jogdial_direction(void);
269/******************************************************************/
270
271long vid_is_bitmap_shown();
272void *vid_get_bitmap_fb();
273long vid_get_bitmap_screen_width();
274long vid_get_bitmap_screen_height();
275long vid_get_bitmap_buffer_width();
276long vid_get_bitmap_buffer_height();
277void *vid_get_viewport_fb();
278void *vid_get_viewport_fb_d();
279void *vid_get_viewport_live_fb();
280void vid_bitmap_refresh();
281long vid_get_viewport_height();
282int vid_get_viewport_width();
283void vid_turn_off_updates();
284void vid_turn_on_updates();
285
286/******************************************************************/
287
288void *hook_raw_fptr();
289void *hook_raw_ret_addr();
290char *hook_raw_image_addr();
291long hook_raw_size();
292void hook_raw_install();
293void hook_raw_save_complete();
294
295/******************************************************************/
296
297long lens_get_zoom_pos();
298void lens_set_zoom_pos(long newpos);
299long lens_get_zoom_point();
300void lens_set_zoom_point(long newpt);
301void lens_set_zoom_speed(long newspd); //for S-series
302long lens_get_focus_pos();
303long lens_get_focus_pos_from_lense();
304void lens_set_focus_pos(long newpos);
305long lens_get_target_distance();
306
307/******************************************************************/
308
309int shooting_in_progress();
310int shooting_is_flash();
311int shooting_is_flash_ready();
312short shooting_get_flash_mode();
313
314
315/******************************************************************/
316int shooting_get_user_tv_id();
317char* shooting_get_tv_str();
318short shooting_get_tv96_from_shutter_speed(float t);
319short shooting_get_tv96();
320void shooting_set_tv96(short v, short is_now);
321void shooting_set_tv96_direct(short v, short is_now);
322void shooting_set_shutter_speed_ubasic(int t, short is_now);
323short shooting_get_user_tv96();
324void shooting_set_user_tv96(short v);
325float shooting_get_shutter_speed_from_tv96(short tv);
326float shooting_get_shutter_speed_override_value();
327const char * shooting_get_tv_override_value();
328const char * shooting_get_tv_bracket_value();
329const char * shooting_get_bracket_type();
330void shooting_set_user_tv_by_id(int v);
331void shooting_set_user_tv_by_id_rel(int v);
332const ShutterSpeed *shooting_get_tv_line();
333/******************************************************************/
334short shooting_get_aperture_sizes_table_size();
335short shooting_get_aperture_sizes_table_prop_id(short i);
336short shooting_get_max_aperture_sizes_table_prop_id();
337short shooting_get_aperture_from_av96(short av96);
338int shooting_get_user_av_id();
339char* shooting_get_av_str();
340void shooting_set_user_av_by_id(int v);
341short shooting_get_av96();
342void shooting_set_av96(short v,short is_now);
343void shooting_set_av96_direct(short v, short is_now);
344short shooting_get_user_av96();
345void shooting_set_user_av96(short v);
346void shooting_set_user_av_by_id_rel(int v);
347short shooting_get_real_aperture();
348short shooting_get_min_real_aperture();
349short shooting_get_av96_override_value();
350const char * shooting_get_av_bracket_value();
351void shooting_set_nd_filter_state(short v, short is_now);
352/******************************************************************/
353int shooting_get_day_seconds();
354int shooting_get_tick_count();
355/******************************************************************/
356void shooting_set_prop(int id, int v);
357int shooting_get_prop(int id);
358/******************************************************************/
359extern int circle_of_confusion;
360/******************************************************************/
361extern const int zoom_points;
362int shooting_get_zoom();
363void shooting_set_zoom(int v);
364void shooting_set_zoom_rel(int v);
365void shooting_set_zoom_speed(int v);
366/******************************************************************/
367int shooting_get_focus();
368void shooting_set_focus(int v, short is_now);
369short shooting_get_focus_mode();
370int shooting_get_hyperfocal_distance();
371int shooting_get_hyperfocal_distance_f(int av, int fl);
372int shooting_get_near_limit_of_acceptable_sharpness();
373int shooting_get_far_limit_of_acceptable_sharpness();
374int shooting_get_depth_of_field();
375int shooting_get_subject_distance();
376int shooting_get_subject_distance_override_value();
377int shooting_get_subject_distance_bracket_value();
378int shooting_get_subject_distance_override_koef();
379int shooting_get_lens_to_focal_plane_width();
380short shooting_get_drive_mode();
381short shooting_can_focus();
382short shooting_get_common_focus_mode();
383/******************************************************************/
384int shooting_get_iso_mode();
385void shooting_set_iso_mode(int v);
386short shooting_get_sv96();
387short shooting_get_svm96();
388short shooting_get_iso_market();
389short shooting_get_iso_real();
390void shooting_set_iso_real(short iso, short is_now);
391//void shooting_set_iso_market(short isom);
392//void shooting_set_iso_real_delta_from_base(short diso);
393void shooting_set_sv96(short sv96, short is_now);
394short shooting_get_iso_override_value();
395short shooting_get_iso_bracket_value();
396/******************************************************************/
397short shooting_get_canon_overexposure_value();
398short shooting_get_bv96();
399int shooting_get_luminance();
400//const char* shooting_get_flash_light_value();
401/******************************************************************/
402int shooting_get_canon_subject_distance();
403int shooting_get_exif_subject_dist();
404/******************************************************************/
405void shooting_expo_param_override();
406void shooting_bracketing(void);
407
408void shooting_video_bitrate_change(int v);
409extern int auto_started;
410void shooting_tv_bracketing();
411void shooting_av_bracketing();
412void shooting_iso_bracketing();
413/******************************************************************/
414void clear_values();
415/******************************************************************/
416
417
418int mode_get();
419
420/******************************************************************/
421
422long stat_get_vbatt();
423int get_ccd_temp();
424int get_optical_temp();
425int get_battery_temp();
426long get_vbatt_min();
427long get_vbatt_max();
428void play_sound(unsigned sound);
429void ubasic_camera_set_raw(int mode);
430void ubasic_camera_set_nr(int mode);
431int ubasic_camera_get_nr();
432int ubasic_camera_script_autostart();
433void ubasic_camera_set_script_autostart();
434void exit_alt();
435void camera_shutdown_in_a_second(void);
436
437void disable_shutdown();
438void enable_shutdown();
439
440void JogDial_CW(void);
441void JogDial_CCW(void);
442void change_video_tables(int a, int b);
443int get_flash_params_count(void);
444
445/******************************************************************/
446void __attribute__((noreturn)) shutdown();
447void ubasic_set_led(int led, int state, int bright);
448void debug_led(int state);
449/****************************************/
450extern int canon_menu_active; 
451extern char canon_shoot_menu_active; 
452extern int recreview_hold;
453
454extern int movie_status;
455unsigned int movie_reset;
456unsigned int GetFreeCardSpaceKb(void);
457unsigned int GetTotalCardSpaceKb(void);
458
459
460
461void swap_partitions(void);
462int get_part_count(void);
463void create_partitions(void);
464extern char * camera_jpeg_count_str();
465
466unsigned int GetJpgCount(void);
467unsigned int GetRawCount(void);
468
469void MakeAFScan(void);
470extern int movie_status;
471extern int zoom_status;
472void EnterToCompensationEVF(void);
473void ExitFromCompensationEVF(void);
474
475void TurnOnBackLight(void);
476void TurnOffBackLight(void);
477
478void wait_until_remote_button_is_released(void);
479short shooting_get_ev_correction1();
480
481//image_quality_override
482void shooting_set_image_quality(int imq);
483
484int get_ev_video_avail(void);
485void set_ev_video_avail(int);
486int get_ev_video(void);
487void set_ev_video(int);
488//dng related
489void reverse_bytes_order(char* start, int count);
490void save_ext_for_dng(void);
491void change_ext_to_dng(void);
492void change_ext_to_default(void);
493
494void DoAFLock(void);
495void UnlockAF(void);
496
497void drv_self_hide(void);
498void drv_self_unhide(void);
499
500#define started() debug_led(1)
501#define finished() debug_led(0)
502
503#endif
Note: See TracBrowser for help on using the repository browser.