This source file includes following definitions.
- hook_raw_image_addr
- hook_alt_raw_image_addr
- camera_jpeg_count_str
- get_flash_params_count
- shutdown
- debug_led
- camera_set_led
- vid_get_viewport_fb_d
- vid_get_viewport_fb
- vid_get_viewport_live_fb
- vid_get_viewport_yscale
- vid_get_viewport_width
- vid_get_viewport_height
- vid_get_viewport_xoffset
- vid_get_viewport_display_xoffset
- vid_get_viewport_yoffset
- vid_get_viewport_display_yoffset
- vid_get_viewport_display_yoffset_proper
- vid_get_viewport_height_proper
- vid_get_viewport_fullscreen_height
- vid_bitmap_refresh
- vid_get_bitmap_active_palette
- vid_get_palette_type
- vid_get_palette_size
- vid_get_bitmap_fb
- vid_get_bitmap_active_buffer
- load_chdk_palette
1 #include "platform.h"
2 #include "platform_palette.h"
3 #include "lolevel.h"
4
5 extern int active_raw_buffer;
6 extern char* raw_buffers[];
7
8 char *hook_raw_image_addr()
9 {
10 return raw_buffers[active_raw_buffer];
11 }
12
13 char *hook_alt_raw_image_addr()
14 {
15 return raw_buffers[(active_raw_buffer^1)];
16 }
17
18
19 char *camera_jpeg_count_str()
20 {
21 extern char jpeg_count_str[];
22 return jpeg_count_str;
23 }
24
25 int get_flash_params_count(void)
26 {
27 return 0xa6;
28 }
29
30
31
32
33 void shutdown()
34 {
35
36
37 asm(
38 "MRS R1, CPSR\n"
39 "AND R0, R1, #0x80\n"
40 "ORR R1, R1, #0x80\n"
41 "MSR CPSR_cf, R1\n"
42 :::"r1","r0");
43
44
45
46 while(1);
47 }
48
49 void debug_led(__attribute__ ((unused))int state)
50 {
51
52
53
54
55 }
56
57
58
59
60
61 void camera_set_led(int led, int state, __attribute__ ((unused))int bright) {
62 static char led_table[2]={0,4};
63 if(state<=1) _LEDDrive(led_table[led%sizeof(led_table)], (!state)&1);
64 }
65
66
67
68 void *vid_get_viewport_fb_d()
69 {
70 extern char *viewport_fb_d;
71 return viewport_fb_d;
72 }
73
74
75 extern char active_viewport_buffer;
76 extern void* viewport_buffers[];
77
78 void *vid_get_viewport_fb()
79 {
80
81 return viewport_buffers[0];
82 }
83
84 void *vid_get_viewport_live_fb()
85 {
86 if (camera_info.state.mode_video || is_video_recording())
87 return viewport_buffers[0];
88
89
90 return viewport_buffers[(active_viewport_buffer-1)&3];
91 }
92
93
94 int vid_get_viewport_yscale() {
95 return 2;
96 }
97
98 int vid_get_viewport_width()
99 {
100 if (camera_info.state.mode_play)
101 {
102 return 360;
103 }
104 extern int _GetVRAMHPixelsSize();
105 return _GetVRAMHPixelsSize() >> 1;
106 }
107
108 long vid_get_viewport_height()
109 {
110 if (camera_info.state.mode_play)
111 {
112 return 240;
113 }
114 extern int _GetVRAMVPixelsSize();
115 return _GetVRAMVPixelsSize() >> 1;
116 }
117
118
119 static long vp_xo[5] = { 0, 0, 0, 44 };
120
121
122 int vid_get_viewport_xoffset()
123 {
124 return 0;
125 }
126
127 int vid_get_viewport_display_xoffset()
128 {
129 if (camera_info.state.mode_play)
130 {
131 return 0;
132 }
133 else if (camera_info.state.mode_shooting == MODE_STITCH)
134 {
135 if (shooting_get_prop(PROPCASE_STITCH_DIRECTION) == 0)
136 if (shooting_get_prop(PROPCASE_STITCH_SEQUENCE) == 0)
137 return 40;
138 else
139 return 140;
140 else
141 if (shooting_get_prop(PROPCASE_STITCH_SEQUENCE) == 0)
142 return 140;
143 else
144 return 40;
145 }
146 else if (camera_info.state.mode_video || is_video_recording()) {
147 return 0;
148 }
149 else
150 {
151 return vp_xo[shooting_get_prop(PROPCASE_ASPECT_RATIO)];
152 }
153 }
154
155
156
157 static long vp_yo[5] = { 0, 30, 13, 0 };
158
159 int vid_get_viewport_yoffset()
160 {
161 if (camera_info.state.mode_play)
162 {
163 return 0;
164 }
165 else if (camera_info.state.mode_shooting == MODE_STITCH)
166 {
167 return 0;
168 }
169 else if (camera_info.state.mode_video || is_video_recording())
170 {
171 if(shooting_get_prop(PROPCASE_VIDEO_RESOLUTION) == 2) {
172 return 0;
173 } else {
174 return 30;
175 }
176 }
177 else
178 {
179 return vp_yo[shooting_get_prop(PROPCASE_ASPECT_RATIO)];
180 }
181 }
182
183 int vid_get_viewport_display_yoffset()
184 {
185 if (camera_info.state.mode_play)
186 {
187 return 0;
188 }
189 else if (camera_info.state.mode_shooting == MODE_STITCH)
190 {
191 return 72;
192 }
193 else if (camera_info.state.mode_video || is_video_recording())
194 {
195 if(shooting_get_prop(PROPCASE_VIDEO_RESOLUTION) == 2) {
196 return 0;
197 } else {
198 return 30;
199 }
200 }
201 else
202 {
203 return vp_yo[shooting_get_prop(PROPCASE_ASPECT_RATIO)];
204 }
205 }
206
207
208 int vid_get_viewport_display_yoffset_proper() { return vid_get_viewport_display_yoffset() * 2; }
209 int vid_get_viewport_height_proper() { return vid_get_viewport_height() * 2; }
210 int vid_get_viewport_fullscreen_height() { return 480; }
211
212 void vid_bitmap_refresh() {
213
214 extern int full_screen_refresh;
215 extern void _ScreenLock();
216 extern void _ScreenUnlock();
217
218 full_screen_refresh |= 3;
219 _ScreenLock();
220 _ScreenUnlock();
221 }
222
223 void *vid_get_bitmap_active_palette() {
224 extern int active_palette_buffer;
225 extern char* palette_buffer[];
226 void* p = palette_buffer[active_palette_buffer];
227
228 if (p) p += 4;
229 return p;
230 }
231
232
233
234
235 int vid_get_palette_type() { return 3; }
236 int vid_get_palette_size() { return 256 * 4; }
237
238
239 extern int active_bitmap_buffer;
240 extern char* bitmap_buffer[];
241
242 void *vid_get_bitmap_fb() {
243
244 return bitmap_buffer[0];
245 }
246
247 void *vid_get_bitmap_active_buffer() {
248 return bitmap_buffer[active_bitmap_buffer];
249 }
250
251 #ifdef CAM_LOAD_CUSTOM_COLORS
252
253 void load_chdk_palette()
254 {
255 extern int active_palette_buffer;
256
257
258 if ((active_palette_buffer == 0) || (active_palette_buffer == 5))
259 {
260 int *pal = (int*)vid_get_bitmap_active_palette();
261 if (pal && pal[CHDK_COLOR_BASE+0] != 0x33ADF62)
262 {
263 pal[CHDK_COLOR_BASE+0] = 0x33ADF62;
264 pal[CHDK_COLOR_BASE+1] = 0x326EA40;
265 pal[CHDK_COLOR_BASE+2] = 0x34CD57F;
266 pal[CHDK_COLOR_BASE+3] = 0x373BFAE;
267 pal[CHDK_COLOR_BASE+4] = 0x34BD6CA;
268 pal[CHDK_COLOR_BASE+5] = 0x395AB95;
269 pal[CHDK_COLOR_BASE+6] = 0x34766F0;
270 pal[CHDK_COLOR_BASE+7] = 0x31250F3;
271 pal[CHDK_COLOR_BASE+8] = 0x37F408F;
272 pal[CHDK_COLOR_BASE+9] = 0x3512D5B;
273 pal[CHDK_COLOR_BASE+10] = 0x3A9A917;
274 pal[CHDK_COLOR_BASE+11] = 0x3819137;
275 pal[CHDK_COLOR_BASE+12] = 0x3DED115;
276 pal[CHDK_COLOR_BASE+13] = 0x0090000;
277
278 extern char palette_control;
279 palette_control = 1;
280 vid_bitmap_refresh();
281 }
282 }
283 }
284 #endif