source: trunk/platform/sx220hs/shooting.c @ 1290

Revision 1290, 5.1 KB checked in by philmoz, 22 months ago (diff)

SX220 patch from funnel: http://chdk.setepontos.com/index.php?topic=650.msg71630#msg71630
-fix for save raw file counter not being updated correctly
-fix for ISO overrides in capt_seq.c and shooting.c
-fix for jogdial task in boot.c and kbd.c

  • Property svn:eol-style set to native
Line 
1#include "lolevel.h"
2#include "platform.h"
3#include "core.h"
4#include "conf.h"
5#include "keyboard.h"
6#include "stdlib.h"
7#include "platform.h"
8
9#define PARAM_FILE_COUNTER      0x3B       //sx220 changed
10#define PARAM_EXPOSURE_COUNTER  0x02
11
12//No zoom 3.1 3.5 4.0 4.5 5.0 5.6 6.3 7.1 8.0
13//maz zoom 5.9 7.1 8.0
14
15const ApertureSize aperture_sizes_table[] = {
16        {  9, 322, "3.1" },
17    { 10, 352, "3.5" },
18        { 11, 384, "4.0" },
19        { 12, 416, "4.5" },
20        { 13, 448, "5.0" },
21        { 14, 480, "5.6" },
22        { 15, 512, "6.3" },
23        { 16, 544, "7.1" },
24        { 17, 576, "8.0" }
25};
26
27const ShutterSpeed shutter_speeds_table[] = {
28        { -12, -384, "15", 15000000 },
29        { -11, -352, "13", 13000000 },
30        { -10, -320, "10", 10000000 },
31        {  -9, -288, "8",   8000000 },
32        {  -8, -256, "6",   6000000 },
33        {  -7, -224, "5",   5000000 },
34        {  -6, -192, "4",   4000000 },
35        {  -5, -160, "3.2", 3200000 },
36        {  -4, -128, "2.5", 2500000 },
37        {  -3,  -96, "2",   2000000 },
38        {  -2,  -64, "1.6", 1600000 },
39        {  -1,  -32, "1.3", 1300000 },
40        {   0,    0, "1",   1000000 },
41        {   1,   32, "0.8",  800000 },
42        {   2,   64, "0.6",  600000 },
43        {   3,   96, "0.5",  500000 },
44        {   4,  128, "0.4",  400000 },
45        {   5,  160, "0.3",  300000 },
46        {   6,  192, "1/4",  250000 },
47        {   7,  224, "1/5",  200000 },
48        {   8,  256, "1/6",  166667 },
49        {   9,  288, "1/8",  125000 },
50        {  10,  320, "1/10", 100000 },
51        {  11,  352, "1/13",  76923 },
52        {  12,  384, "1/15",  66667 },
53        {  13,  416, "1/20",  50000 },
54        {  14,  448, "1/25",  40000 },
55        {  15,  480, "1/30",  33333 },
56        {  16,  512, "1/40",  25000 },
57        {  17,  544, "1/50",  20000 },
58        {  18,  576, "1/60",  16667 },
59        {  19,  608, "1/80",  12500 },
60        {  20,  640, "1/100", 10000 },
61        {  21,  672, "1/125",  8000 },
62        {  22,  704, "1/160",  6250 },
63        {  23,  736, "1/200",  5000 },
64        {  24,  768, "1/250",  4000 },
65        {  25,  800, "1/320",  3125 },
66        {  26,  832, "1/400",  2500 },
67        {  27,  864, "1/500",  2000 },
68        {  28,  896, "1/640",  1563 },
69        {  29,  928, "1/800",  1250 },
70        {  30,  960, "1/1000", 1000 },
71        {  31,  992, "1/1250",  800 },
72        {  32, 1024, "1/1600",  625 },
73        {  33, 1056, "1/2000",  500 },
74        {  34, 1088, "1/2500",  400 },
75        {  35, 1120, "1/3200",  313 },
76};
77
78const ISOTable iso_table[] = {
79        { -1,   -1, "Auto", -1},
80        {  0,    0, "Auto", -1},
81        {  1,  100,  "100", -1},
82        {  2,  200,  "200", -1},
83        {  3,  400,  "400", -1},
84        {  4,  800,  "800", -1},
85        {  5, 1600, "1600", -1},
86        {  6, 3200, "3200", -1},
87};
88
89static const CapturemodeMap modemap[] = {
90        { MODE_AUTO,                    32768  },
91        { MODE_P,                           32772  },
92        { MODE_TV,                              32771  },
93        { MODE_AV,                              32770  },
94        { MODE_M,                               32769  },
95        { MODE_EASY,                            33314  },
96        { MODE_PORTRAIT,                        32783  },
97        { MODE_LANDSCAPE,                       32782  },
98        { MODE_VIDEO_SPEED,                      2626  },       //MODE_VIDEO_SUPER_SLOW_MOTION
99        { MODE_VIDEO_STD,                        2621  },
100        { MODE_KIDS_PETS,                       32786  },
101        { MODE_SCN_UNDERWATER,          16409  },
102        { MODE_SCN_LOWLIGHT,            16417  },
103        { MODE_SCN_BEACH,                       16407  },
104        { MODE_SCN_FOLIAGE,                     16405  },
105        { MODE_SCN_SNOW,                        16406  },       
106        { MODE_SCN_FIREWORK,                    16408  },       
107        { MODE_SCN_COLOR_ACCENT,         8733  },
108        { MODE_SCN_COLOR_SWAP,                   8734  },       
109        { MODE_STITCH,                              16908  },   //MODE_SCN_STITCH_ASSIST       
110        { MODE_SCN_SMART_SHUTTER,       16937  },
111        { MODE_SCN_POSTER_EFFECT,        8743  },
112        { MODE_SCN_FISHEYE,              8747  },
113        { MODE_SCN_MINIATURE,                    8748  },
114        { MODE_SCN_SUPER_VIVID,                  8742  },
115        { MODE_SCN_NIGHT_SCENE,                 16941  },       //MODE_SCN_HANDHELD_NIGHTSCENE
116        { MODE_VIDEO_IFRAME_MOVIE,               2628  },
117        { MODE_VIDEO_MOVIE_DIGEST,      33333  },
118        { MODE_SCN_HIGHSPEED_BURST,     16904  },
119        { MODE_SCN_BEST_IMAGE,          16905  },
120        { MODE_SCN_TOY_CAMERA,                   8751  },
121        { MODE_SCN_MONOCHROME,                   8754  },
122        { MODE_SCN_WINK_SELF_TIMER,             16938  },
123    { MODE_SCN_FACE_SELF_TIMER,         16936  },
124};
125
126#include "../generic/shooting.c"
127
128// Override ISO settings (need to do this before exposure calc for ISO as well as after)
129void __attribute__((naked,noinline)) shooting_expo_iso_override(void){
130 asm volatile("STMFD   SP!, {R0-R12,LR}\n");
131
132    if ((state_kbd_script_run) && (photo_param_put_off.sv96))
133    {
134        shooting_set_sv96(photo_param_put_off.sv96, SET_NOW);
135        // photo_param_put_off.sv96 is not reset here, it will be reset in next call to shooting_expo_param_override
136    }
137    else if ((conf.iso_override_value) && (conf.iso_override_koef) && !(conf.override_disable==1))
138        shooting_set_iso_real(shooting_get_iso_override_value(), SET_NOW);
139    else if (conf.autoiso_enable && shooting_get_flash_mode()/*NOT FOR FLASH AUTO MODE*/ && !(conf.override_disable==1 && conf.override_disable_all))
140        shooting_set_autoiso(shooting_get_iso_mode());
141
142 asm volatile("LDMFD   SP!, {R0-R12,PC}\n");
143}
144
145long get_file_next_counter() {
146        return get_file_counter();
147}
148
149long get_target_file_num() {
150        long n;
151
152
153        n = get_file_next_counter();
154
155    n = (n>>4)&0x3FFF;
156
157    return n;
158}
159
160void get_target_dir_name(char *out)
161{       
162        extern void _GetImageFolder(char*,int,int,int);
163        _GetImageFolder(out,get_file_next_counter(),0x400,time(NULL));
164}
165
166long get_target_dir_num() {
167        long n;
168
169        n = get_file_next_counter();
170        n = (n>>18)&0x3FF;
171        return n;
172}
173
174int circle_of_confusion = 5;
175
Note: See TracBrowser for help on using the repository browser.