CHDK_DE Vorschauversion  Trunk Rev. 6014
 Alle Datenstrukturen Dateien Funktionen Variablen Typdefinitionen Aufzählungen Aufzählungswerte Makrodefinitionen
lib.c-Dateireferenz
#include "platform.h"
#include "platform_palette.h"
#include "lolevel.h"
#include "gui_draw.h"
+ Include-Abhängigkeitsdiagramm für lib.c:

gehe zum Quellcode dieser Datei

Makrodefinitionen

#define LED_PR   0xC0220094
 

Funktionen

void vid_bitmap_refresh ()
 
void shutdown ()
 
void debug_led (int state)
 
void camera_set_led (int led, int state, __attribute__((unused)) int bright)
 
char * camera_jpeg_count_str ()
 
int get_flash_params_count (void)
 
void * vid_get_bitmap_fb ()
 
void * vid_get_viewport_fb ()
 
void * vid_get_viewport_fb_d ()
 
void * vid_get_viewport_live_fb ()
 
char * hook_raw_image_addr ()
 
int _GetVideoOutType (void)
 
int _GetVRAMHPixelsSize (void)
 
int _GetVRAMVPixelsSize (void)
 
int vid_get_viewport_yscale ()
 
int vid_get_viewport_width ()
 
long vid_get_viewport_height ()
 
int vid_get_viewport_xoffset ()
 
int vid_get_viewport_display_xoffset ()
 
int vid_get_viewport_yoffset ()
 
int vid_get_viewport_display_yoffset ()
 
int vid_get_viewport_display_yoffset_proper ()
 
int vid_get_viewport_height_proper ()
 
int vid_get_viewport_fullscreen_height ()
 
int vid_get_palette_type ()
 
int vid_get_palette_size ()
 
void * vid_get_bitmap_active_buffer ()
 
void * vid_get_bitmap_active_palette ()
 
void load_chdk_palette ()
 

Variablen

static long vp_xo [5] = { 0, 0, 0, 44 }
 
static long vp_yo [5] = { 0, 30, 13, 0 }
 
int active_bitmap_buffer
 
char * bitmap_buffer []
 

Makro-Dokumentation

#define LED_PR   0xC0220094

Definiert in Zeile 29 der Datei lib.c.

Dokumentation der Funktionen

int _GetVideoOutType ( void  )
int _GetVRAMHPixelsSize ( void  )
int _GetVRAMVPixelsSize ( void  )
char* camera_jpeg_count_str ( )

Definiert in Zeile 45 der Datei lib.c.

46 {
47  extern char jpeg_count_str[];
48  return jpeg_count_str;
49 }
void camera_set_led ( int  led,
int  state,
__attribute__((unused)) int  bright 
)

Definiert in Zeile 40 der Datei lib.c.

40  {
41  static char led_table[]={0,4}; // status, AF
42  _LEDDrive(led_table[led%sizeof(led_table)], state<=1 ? !state : state);
43 }
void debug_led ( int  state)

Definiert in Zeile 31 der Datei lib.c.

32 {
33  volatile long *p=(void*)LED_PR;
34  if (state)
35  p[0]=0x46;
36  else
37  p[0]=0x44;
38 }
int get_flash_params_count ( void  )

Definiert in Zeile 51 der Datei lib.c.

51 { return 0x91; } // Found @0xff2075ac
char* hook_raw_image_addr ( void  )

Definiert in Zeile 82 der Datei lib.c.

83 {
84  return (char*)0x42365c30; //(Found @0xff413f98)
85 }
void load_chdk_palette ( )

Definiert in Zeile 257 der Datei lib.c.

258 {
259  extern int active_palette_buffer;
260  // Only load for the standard record and playback palettes
261  // 0 = rec, 4 = func menu, 5 = playback, 6 = menu (play or rec),
262  if ((active_palette_buffer == 0) || (active_palette_buffer == 5) || (active_palette_buffer == 4))
263  {
264  int *pal = (int*)vid_get_bitmap_active_palette();
265  if (pal && pal[CHDK_COLOR_BASE+0] != 0x33ADF62)
266  {
267  pal[CHDK_COLOR_BASE+0] = 0x33ADF62; // Red
268  pal[CHDK_COLOR_BASE+1] = 0x326EA40; // Dark Red
269  pal[CHDK_COLOR_BASE+2] = 0x34CD57F; // Light Red
270  pal[CHDK_COLOR_BASE+3] = 0x373BFAE; // Green
271  pal[CHDK_COLOR_BASE+4] = 0x34BD6CA; // Dark Green
272  pal[CHDK_COLOR_BASE+5] = 0x395AB95; // Light Green
273  pal[CHDK_COLOR_BASE+6] = 0x34766F0; // Blue
274  pal[CHDK_COLOR_BASE+7] = 0x31250F3; // Dark Blue
275  pal[CHDK_COLOR_BASE+8] = 0x37F408F; // Cyan
276  pal[CHDK_COLOR_BASE+9] = 0x3512D5B; // Magenta
277  pal[CHDK_COLOR_BASE+10] = 0x3A9A917; // Yellow
278  pal[CHDK_COLOR_BASE+11] = 0x3819137; // Dark Yellow
279  pal[CHDK_COLOR_BASE+12] = 0x3DED115; // Light Yellow
280 
281  extern char palette_control;
282  palette_control = 1; // note appears to be a bitmask, bit 2 is also used
284  }
285  }
286 }
void shutdown ( )

Definiert in Zeile 21 der Datei lib.c.

22 {
23  extern void _finish_shutdown(void);
24  _finish_shutdown();
25  while(1);
26 }
void vid_bitmap_refresh ( )

Definiert in Zeile 6 der Datei lib.c.

7 {
8  if(draw_is_suspended()) {
9  return;
10  }
11  extern int full_screen_refresh;
12  extern void _ScreenLock();
13  extern void _ScreenUnlock();
14 
15  full_screen_refresh |= 3;
16  _ScreenLock();
17  _ScreenUnlock();
18 }
void* vid_get_bitmap_active_buffer ( )

Definiert in Zeile 235 der Datei lib.c.

236 {
238 }
void* vid_get_bitmap_active_palette ( )

Definiert in Zeile 240 der Datei lib.c.

241 {
242  extern int active_palette_buffer;
243  extern int** palette_buffer_ptr;
244  int *p = palette_buffer_ptr[active_palette_buffer];
245  // active_palette_buffer can point at null when
246  // func and menu are opened for the first time
247  if(!p) {
248  p = palette_buffer_ptr[0]; // rec mode buffer normally initialized
249  if(!p) { // but may be null on video out switch
250  return (void *)0;
251  }
252  }
253  return (p+1);
254 }
void* vid_get_bitmap_fb ( )

Definiert in Zeile 54 der Datei lib.c.

54 { return (void*)0x406b1000; } // Found @0xff08b550
int vid_get_palette_size ( )

Definiert in Zeile 230 der Datei lib.c.

230 { return 256 * 4; }
int vid_get_palette_type ( )

Definiert in Zeile 229 der Datei lib.c.

229 { return 3; }
int vid_get_viewport_display_xoffset ( )

Definiert in Zeile 135 der Datei lib.c.

136 {
138  {
139  return 0;
140  }
142  {
143  if (shooting_get_prop(PROPCASE_STITCH_DIRECTION) == 0) // Direction check
144  if (shooting_get_prop(PROPCASE_STITCH_SEQUENCE) == 0) // Shot already taken?
145  return 40;
146  else
147  return 140;
148  else
149  if (shooting_get_prop(PROPCASE_STITCH_SEQUENCE) == 0) // Shot already taken?
150  return 140;
151  else
152  return 40;
153  }
154  else
155  {
157  }
158 }
int vid_get_viewport_display_yoffset ( )

Definiert in Zeile 189 der Datei lib.c.

190 {
192  {
193  return 0;
194  }
195  else if (/*mode_is_video(m)*/ is_video_recording())
196  {
197  if(shooting_get_prop(PROPCASE_VIDEO_RESOLUTION) == 2) { // 640x480
198  return 0;// 4:3 video, no offset
199  } else {
200  return 30;
201  }
202  }
204  {
205  return 72;
206  }
207  else
208  {
210  }
211 }
int vid_get_viewport_display_yoffset_proper ( )

Definiert in Zeile 213 der Datei lib.c.

void* vid_get_viewport_fb ( )

Definiert in Zeile 55 der Datei lib.c.

55 { return (void*)0x40806b80; } // Found @0xff412680
void* vid_get_viewport_fb_d ( )

Definiert in Zeile 56 der Datei lib.c.

57 {
58  extern char *viewport_fb_d;
59  return viewport_fb_d;
60 }
int vid_get_viewport_fullscreen_height ( )

Definiert in Zeile 216 der Datei lib.c.

217 {
219  int vot = _GetVideoOutType();
220  if(vot == 2) {
221  return 576; // PAL in playback is 576
222  } else {
223  return 480; // all other playback is 480
224  }
225  } else {
226  return 240<<(vid_get_viewport_yscale()-1);
227  }
228 }
long vid_get_viewport_height ( )

Definiert in Zeile 112 der Datei lib.c.

113 {
114  int vot = _GetVideoOutType();
116  {
117  if(vot == 2) { // PAL
118  return 288; // 576
119  }
120  return 240;
121  }
122  return _GetVRAMVPixelsSize() >> (vid_get_viewport_yscale() - 1);
123 }
int vid_get_viewport_height_proper ( )

Definiert in Zeile 214 der Datei lib.c.

void* vid_get_viewport_live_fb ( )

Definiert in Zeile 62 der Datei lib.c.

63 {
64  extern char active_viewport_buffer;
65  extern void* viewport_buffers[];
66 
67  int i = active_viewport_buffer - 1;
68  // video appears to only use 3 buffers, no distinct video mode
69  if (is_video_recording()) {
70  if(i < 0) {
71  i = 2;
72  }
73  } else if(i < 0) {
74  i = 3;
75  }
76 
77  // Hopefully return the most recently used viewport buffer so that motion detect, histogram, zebra and edge overly are using current image data
78  return viewport_buffers[i];
79 }
int vid_get_viewport_width ( )

Definiert in Zeile 103 der Datei lib.c.

104 {
106  {
107  return 360;
108  }
109  return _GetVRAMHPixelsSize() >> 1;
110 }
int vid_get_viewport_xoffset ( )

Definiert in Zeile 130 der Datei lib.c.

131 {
132  return 0;
133 }
int vid_get_viewport_yoffset ( )

Definiert in Zeile 164 der Datei lib.c.

165 {
167  {
168  return 0;
169  }
170  // no distinct video mode, video uses its own aspect ratio, not still ratio of current mode
171  else if (/*mode_is_video(m)*/ is_video_recording())
172  {
173  if(shooting_get_prop(PROPCASE_VIDEO_RESOLUTION) == 2) { // 640x480
174  return 0;// 4:3 video, no offset
175  } else {
176  return 30; // 16:9 video
177  }
178  }
180  {
181  return 0;
182  }
183  else
184  {
186  }
187 }
int vid_get_viewport_yscale ( )

Definiert in Zeile 93 der Datei lib.c.

93  {
95  return 2;
96  }
98  return 1;
99  }
100  return 2;
101 }

Variablen-Dokumentation

int active_bitmap_buffer
char* bitmap_buffer[]

Definiert in Zeile 84 der Datei lib.c.

long vp_xo[5] = { 0, 0, 0, 44 }
static

Definiert in Zeile 127 der Datei lib.c.

long vp_yo[5] = { 0, 30, 13, 0 }
static

Definiert in Zeile 162 der Datei lib.c.