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-Abhängigkeitsdiagramm für lib.c:

gehe zum Quellcode dieser Datei

Makrodefinitionen

#define LED_PR   0xC0220110
 

Funktionen

char * hook_raw_image_addr ()
 
char * hook_alt_raw_image_addr ()
 
char * camera_jpeg_count_str ()
 
void vid_bitmap_refresh ()
 
void shutdown ()
 
void debug_led (int state)
 
void camera_set_led (int led, int state, __attribute__((unused)) int bright)
 
int get_flash_params_count (void)
 
void * vid_get_viewport_fb ()
 
void * vid_get_viewport_live_fb ()
 
void * vid_get_viewport_fb_d ()
 
void * vid_get_bitmap_fb ()
 
int vid_get_viewport_byte_width ()
 
int vid_get_viewport_yscale ()
 
int vid_get_viewport_width ()
 
int vid_get_viewport_display_xoffset ()
 
long vid_get_viewport_height ()
 
int vid_get_viewport_display_xoffset_proper ()
 
int vid_get_viewport_height_proper ()
 
int vid_get_viewport_buffer_width_proper ()
 
int vid_get_viewport_fullscreen_height ()
 
int vid_get_palette_type ()
 
int vid_get_palette_size ()
 
int vid_get_aspect_ratio ()
 
void * vid_get_bitmap_active_buffer ()
 
void * vid_get_bitmap_active_palette ()
 
void load_chdk_palette ()
 

Variablen

int active_raw_buffer
 
char * raw_buffers []
 
char active_viewport_buffer
 
void * viewport_buffers []
 
int active_bitmap_buffer
 
char * bitmap_buffer []
 

Makro-Dokumentation

#define LED_PR   0xC0220110

Definiert in Zeile 55 der Datei lib.c.

Dokumentation der Funktionen

char* camera_jpeg_count_str ( )

Definiert in Zeile 20 der Datei lib.c.

21 {
22  extern char jpeg_count_str[];
23  return jpeg_count_str;
24 }
void camera_set_led ( int  led,
int  state,
__attribute__((unused)) int  bright 
)

Definiert in Zeile 65 der Datei lib.c.

65  {
66  static char led_table[2]={7,11};
67  _LEDDrive(led_table[led%sizeof(led_table)], state<=1 ? !state : state);
68 }
void debug_led ( int  state)

Definiert in Zeile 57 der Datei lib.c.

58 {
59  *(int*)LED_PR=state ? 0x46 : 0x44;
60 }
int get_flash_params_count ( void  )

Definiert in Zeile 70 der Datei lib.c.

70  {
71  return 0xA0; // found in GetParameterData
72 }
char* hook_alt_raw_image_addr ( )

Definiert in Zeile 14 der Datei lib.c.

15 {
16  return raw_buffers[(active_raw_buffer^1)*3];
17 }
char* hook_raw_image_addr ( void  )

Definiert in Zeile 9 der Datei lib.c.

10 {
12 }
void load_chdk_palette ( )

Definiert in Zeile 179 der Datei lib.c.

180 {
181  extern int active_palette_buffer;
182  // Only load for the standard record and playback palettes
183  if ((active_palette_buffer == 0) || (active_palette_buffer == 16))
184  {
185  int *pal = (int*)vid_get_bitmap_active_palette();
186  if (pal && (pal[CHDK_COLOR_BASE+0] != 0x33ADF62))
187  {
188  pal[CHDK_COLOR_BASE+0] = 0x33ADF62; // Red
189  pal[CHDK_COLOR_BASE+1] = 0x326EA40; // Dark Red
190  pal[CHDK_COLOR_BASE+2] = 0x34CD57F; // Light Red
191  pal[CHDK_COLOR_BASE+3] = 0x373BFAE; // Green
192  pal[CHDK_COLOR_BASE+4] = 0x34BD6CA; // Dark Green
193  pal[CHDK_COLOR_BASE+5] = 0x395AB95; // Light Green
194  pal[CHDK_COLOR_BASE+6] = 0x34766F0; // Blue
195  pal[CHDK_COLOR_BASE+7] = 0x31250F3; // Dark Blue
196  pal[CHDK_COLOR_BASE+8] = 0x37F408F; // Cyan
197  pal[CHDK_COLOR_BASE+9] = 0x3512D5B; // Magenta
198  pal[CHDK_COLOR_BASE+10] = 0x3A9A917; // Yellow
199  pal[CHDK_COLOR_BASE+11] = 0x3819137; // Dark Yellow
200  pal[CHDK_COLOR_BASE+12] = 0x3DED115; // Light Yellow
201  pal[CHDK_COLOR_BASE+13] = 0x0090000; // Transparent dark grey
202 
203  extern char palette_control;
204  palette_control = 1;
206  }
207  }
208 }
void shutdown ( )

Definiert in Zeile 39 der Datei lib.c.

40 {
41  volatile long *p = (void*)0xC022001C;
42 
43  asm(
44  "MRS R1, CPSR\n"
45  "AND R0, R1, #0x80\n"
46  "ORR R1, R1, #0x80\n"
47  "MSR CPSR_cf, R1\n"
48  :::"r1","r0");
49 
50  *p = 0x44; // power off.
51 
52  while(1);
53 }
void vid_bitmap_refresh ( )

Definiert in Zeile 27 der Datei lib.c.

28 {
29  extern int full_screen_refresh;
30  extern void _ScreenUnlock();
31  extern void _ScreenLock();
32 
33  full_screen_refresh |= 3;
34  _ScreenLock();
35  _ScreenUnlock();
36 }
int vid_get_aspect_ratio ( )

Definiert in Zeile 158 der Datei lib.c.

158 { return 1; }
void* vid_get_bitmap_active_buffer ( )

Definiert in Zeile 160 der Datei lib.c.

161 {
163 }
void* vid_get_bitmap_active_palette ( )

Definiert in Zeile 165 der Datei lib.c.

166 {
167  extern int active_palette_buffer;
168  extern char* palette_buffer[];
169  // Get Canon 'Color Options' menu setting - used to offset active_palette_buffer value.
170  int color_option = 0;
171  get_parameter_data(0x1a, &color_option, 1);
172  void* p = palette_buffer[active_palette_buffer+color_option];
173  // Don't add offset if value is 0
174  if (p) p += 8;
175  return p;
176 }
void* vid_get_bitmap_fb ( )

OSD screen

Definiert in Zeile 107 der Datei lib.c.

108 {
109  // Return first bitmap buffer address
110  return bitmap_buffer[0];
111 }
int vid_get_palette_size ( )

Definiert in Zeile 157 der Datei lib.c.

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

Definiert in Zeile 156 der Datei lib.c.

156 { return 3; }
int vid_get_viewport_buffer_width_proper ( )

Definiert in Zeile 154 der Datei lib.c.

154 { return 960; }
int vid_get_viewport_byte_width ( )

Definiert in Zeile 114 der Datei lib.c.

114  {
115  return 960 * 6 / 4; // IXUS 310 - wide screen LCD is 960 pixels wide, each group of 4 pixels uses 6 bytes (UYVYYY)
116 }
int vid_get_viewport_display_xoffset ( )

Definiert in Zeile 133 der Datei lib.c.

134 {
136  {
137  return 0;
138  }
139  else
140  {
141  // viewport width offset table for each image size
142  // 0 = 4:3, 1 = 16:9, 2 = 3:2, 3 = 1:1
143  static long vp_w[5] = { 60, 0, 36, 104 }; // should all be even values for edge overlay
145  }
146 }
int vid_get_viewport_display_xoffset_proper ( )

Definiert in Zeile 152 der Datei lib.c.

152 { return vid_get_viewport_display_xoffset() * 2; }
void* vid_get_viewport_fb ( )

IMG viewport in 'rec' mode

Definiert in Zeile 81 der Datei lib.c.

82 {
83  // Return first viewport buffer - for case when vid_get_viewport_live_fb not defined
84  return viewport_buffers[0];
85 }
void* vid_get_viewport_fb_d ( )

IMG viewport in 'play' mode

Definiert in Zeile 97 der Datei lib.c.

98 {
99  extern char *viewport_fb_d;
100  return viewport_fb_d;
101 }
int vid_get_viewport_fullscreen_height ( )

Definiert in Zeile 155 der Datei lib.c.

155 { return 480; }
long vid_get_viewport_height ( )

Definiert in Zeile 148 der Datei lib.c.

148 { return 240; }
int vid_get_viewport_height_proper ( )

Definiert in Zeile 153 der Datei lib.c.

153 { return 480; }
void* vid_get_viewport_live_fb ( )

Definiert in Zeile 87 der Datei lib.c.

88 {
89  int b = (active_viewport_buffer-1)&3;
91  b = 2; // Video only seems to use the first 3 viewport buffers.
92 
93  // Hopefully return the most recently used viewport buffer so that motion detect, histogram, zebra and edge overly are using current image data
94  return viewport_buffers[b];
95 }
int vid_get_viewport_width ( )

Definiert in Zeile 123 der Datei lib.c.

124 {
126  {
127  return 480;
128  }
129  extern int _GetVRAMHPixelsSize();
130  return _GetVRAMHPixelsSize() >> 1;
131 }
int vid_get_viewport_yscale ( )

Definiert in Zeile 119 der Datei lib.c.

119  {
120  return 2; // IXUS 310 viewport is 480 pixels high
121 }

Variablen-Dokumentation

int active_bitmap_buffer
int active_raw_buffer
char active_viewport_buffer
char* bitmap_buffer[]

Definiert in Zeile 84 der Datei lib.c.

char* raw_buffers[]
void* viewport_buffers[]