This source file includes following definitions.
- vid_bitmap_refresh
- shutdown
- debug_led
- camera_set_led
- shutdown_soft
- get_flash_params_count
- JogDial_CW
- JogDial_CCW
- hook_raw_image_addr
- vid_get_viewport_fb
- vid_get_viewport_fb_d
- vid_get_viewport_live_fb
- vid_get_viewport_width
- vid_get_viewport_height
- vid_get_viewport_yoffset
- vid_get_viewport_display_xoffset
- vid_get_viewport_display_yoffset
- vid_get_bitmap_fb
- vid_get_viewport_byte_width
- vid_get_viewport_display_xoffset_proper
- vid_get_viewport_display_yoffset_proper
- vid_get_viewport_fullscreen_width
- vid_get_viewport_fullscreen_height
- vid_get_viewport_buffer_width_proper
- vid_get_viewport_type
- vid_get_bitmap_active_buffer
- vid_get_opacity_active_buffer
- update_screen_dimensions
- camera_jpeg_count_str
1 #include "platform.h"
2 #include "lolevel.h"
3 #include "live_view.h"
4
5 extern int active_bitmap_buffer;
6
7 void vid_bitmap_refresh() {
8
9 extern void _transfer_src_overlay(int);
10
11
12 _transfer_src_overlay(0);
13 _transfer_src_overlay(1);
14 }
15
16 void shutdown() {
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 while(1);
32 }
33
34 #define LED_PR 0xd20b0994
35
36 void debug_led(int state) {
37 volatile long *p = (void*)LED_PR;
38 *p = ((state) ? 0x4d0002 : 0x4c0003);
39 }
40
41
42
43
44 void camera_set_led(int led, int state, __attribute__ ((unused))int bright) {
45 static char led_table[2]={0,4};
46 _LEDDrive(led_table[led%sizeof(led_table)], state<=1 ? !state : state);
47 }
48
49 void shutdown_soft() {
50 _PostLogicalEventForNotPowerType(0x1005,0);
51 }
52
53 int get_flash_params_count(void) {
54 return 0x116;
55 }
56
57 void JogDial_CW(void) {
58 _PostLogicalEventToUI(0x872, 1);
59 }
60
61 void JogDial_CCW(void) {
62 _PostLogicalEventToUI(0x873, 1);
63 }
64
65
66 extern char* current_raw_addr;
67 char *hook_raw_image_addr()
68 {
69 if(current_raw_addr) {
70 return current_raw_addr;
71 }
72
73 return (char *)0x43ec0040;
74 }
75
76
77
78
79
80
81
82
83
84 void *vid_get_viewport_fb() {
85 return (void*)0x42e78000;
86 }
87
88
89
90 void *vid_get_viewport_fb_d() {
91 extern void *current_fb_d;
92 return current_fb_d;
93 }
94
95 extern void* viewport_buffers[];
96
97
98
99
100
101
102
103
104 extern void *current_viewport_buffer;
105 void *vid_get_viewport_live_fb()
106 {
107
108 int i;
109 for(i=0;i<4;i++) {
110 if(current_viewport_buffer == viewport_buffers[i]) {
111 return viewport_buffers[(i+1)&3];
112 }
113 }
114 return 0;
115 }
116
117
118
119 static int vp_full_width = 640;
120 static int vp_full_buf_width = 640;
121 static int vp_full_height = 480;
122
123 int vid_get_viewport_width() {
124 extern int _GetVRAMHPixelsSize();
125 if (camera_info.state.mode_play)
126 {
127 return vp_full_width;
128 }
129
130
131 return _GetVRAMHPixelsSize();
132 }
133
134 long vid_get_viewport_height() {
135 extern int _GetVRAMVPixelsSize();
136 if (camera_info.state.mode_play)
137 {
138 return vp_full_height;
139 }
140
141 return _GetVRAMVPixelsSize();
142 }
143
144 int vid_get_viewport_yoffset() {
145
146 return 0;
147 }
148
149 static long vp_xo[4] = { 0, 0, 0, 80 };
150
151 int vid_get_viewport_display_xoffset() {
152 if (camera_info.state.mode_play)
153 {
154 return 0;
155 }
156
157 if(camera_info.state.mode_video || is_video_recording()) {
158 return 0;
159 }
160 return vp_xo[shooting_get_prop(PROPCASE_ASPECT_RATIO)];
161 }
162
163
164 static long vp_yo[4] = { 0, 60, 28, 0 };
165
166 int vid_get_viewport_display_yoffset() {
167 if (camera_info.state.mode_play)
168 {
169 return 0;
170 }
171
172 if(camera_info.state.mode_video || is_video_recording()) {
173 if(shooting_get_prop(PROPCASE_VIDEO_RESOLUTION) == 2) {
174 return 0;
175 } else {
176 return 60;
177 }
178 }
179 return vp_yo[shooting_get_prop(PROPCASE_ASPECT_RATIO)];
180 }
181
182 extern char* bitmap_buffer[];
183
184 void *vid_get_bitmap_fb() {
185 return (void *)0x5fe80000;
186
187 }
188
189 int vid_get_viewport_byte_width() {
190 return vp_full_buf_width*2;
191 }
192
193
194 int vid_get_viewport_display_xoffset_proper() { return vid_get_viewport_display_xoffset(); }
195 int vid_get_viewport_display_yoffset_proper() { return vid_get_viewport_display_yoffset(); }
196 int vid_get_viewport_fullscreen_width() { return vp_full_width; }
197 int vid_get_viewport_fullscreen_height() { return vp_full_height; }
198 int vid_get_viewport_buffer_width_proper() { return vp_full_buf_width; }
199 int vid_get_viewport_type() { return LV_FB_YUV8B; }
200
201 void *vid_get_bitmap_active_buffer() {
202 return bitmap_buffer[active_bitmap_buffer&1];
203 }
204
205
206
207
208 volatile char *opacity_buffer[2] = {(void*)0x5FC40000, (char*)0x5FB80000};
209
210 void *vid_get_opacity_active_buffer() {
211 return (void *)opacity_buffer[active_bitmap_buffer&1];
212 }
213 #ifdef CAM_SUPPORT_BITMAP_RES_CHANGE
214
215
216
217
218 void update_screen_dimensions() {
219
220 extern int displaytype;
221 static int old_displaytype = -1;
222
223 if (old_displaytype == displaytype) {
224 return;
225 }
226 old_displaytype = displaytype;
227
228 switch(displaytype) {
229 case 0:
230 case 3:
231 case 4:
232 case 5:
233
234 camera_screen.width = camera_screen.physical_width = camera_screen.buffer_width = 640;
235 camera_screen.height = camera_screen.buffer_height = 480;
236 camera_screen.size = camera_screen.buffer_size = 640*480;
237 break;
238
239 case 1:
240 case 2:
241 case 8:
242 case 9:
243 case 10:
244 camera_screen.physical_width = camera_screen.width = 720;
245 camera_screen.buffer_width = 736;
246 camera_screen.height = camera_screen.buffer_height = 480;
247 camera_screen.size = 720*480;
248 camera_screen.buffer_size = 736*480;
249 break;
250
251 case 6:
252 case 7:
253 camera_screen.width = camera_screen.physical_width = camera_screen.buffer_width = 960;
254 camera_screen.height = camera_screen.buffer_height = 540;
255 camera_screen.size = camera_screen.buffer_size = 960*540;
256 break;
257
258 case 11:
259 camera_screen.width = camera_screen.physical_width = camera_screen.buffer_width = 1024;
260 camera_screen.height = camera_screen.buffer_height = 768;
261 camera_screen.size = 1024*768;
262 camera_screen.buffer_size = 1024*768;
263 break;
264 case 12:
265 camera_screen.width = 900;
266 camera_screen.physical_width = camera_screen.buffer_width = 928;
267 camera_screen.height = camera_screen.buffer_height = 600;
268 camera_screen.size = 900*600;
269 camera_screen.buffer_size = 928*600;
270 break;
271
272 }
273 if(displaytype == 6 || displaytype == 7) {
274 vp_full_width = 1920;
275 vp_full_buf_width = 1920;
276 vp_full_height = 1080;
277 } else {
278
279 vp_full_width = camera_screen.width;
280 vp_full_buf_width = camera_screen.buffer_width;
281 vp_full_height = camera_screen.height;
282 }
283 }
284 #endif
285
286 char *camera_jpeg_count_str()
287 {
288 extern char jpeg_count_str[];
289 return jpeg_count_str;
290 }