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

gehe zum Quellcode dieser Datei

Makrodefinitionen

#define LED_PR   0xd20b0994
 

Funktionen

void vid_bitmap_refresh ()
 
void shutdown ()
 
void debug_led (int state)
 
void camera_set_led (int led, int state, __attribute__((unused)) int bright)
 
void shutdown_soft ()
 
int get_flash_params_count (void)
 
void JogDial_CW (void)
 
void JogDial_CCW (void)
 
char * hook_raw_image_addr ()
 
void * vid_get_viewport_fb ()
 
void * vid_get_viewport_fb_d ()
 
void * vid_get_viewport_live_fb ()
 
int vid_get_viewport_width ()
 
long vid_get_viewport_height ()
 
int vid_get_viewport_yoffset ()
 
int vid_get_viewport_display_xoffset ()
 
int vid_get_viewport_display_yoffset ()
 
void * vid_get_bitmap_fb ()
 
int vid_get_viewport_byte_width ()
 
int vid_get_viewport_display_xoffset_proper ()
 
int vid_get_viewport_display_yoffset_proper ()
 
int vid_get_viewport_fullscreen_width ()
 
int vid_get_viewport_fullscreen_height ()
 
int vid_get_viewport_buffer_width_proper ()
 
int vid_get_viewport_type ()
 
int vid_get_aspect_ratio ()
 
void * vid_get_bitmap_active_buffer ()
 
void * vid_get_opacity_active_buffer ()
 
char * camera_jpeg_count_str ()
 

Variablen

int active_bitmap_buffer
 
int active_raw_buffer
 
char * raw_buffers_canon_raw []
 
char * raw_buffers_jpeg []
 
char * current_raw_addr
 
void * viewport_buffers []
 
void * current_viewport_buffer
 
static int vp_full_width = 720
 
static int vp_full_buf_width = 736
 
static int vp_full_height = 480
 
static int lv_aspect = LV_ASPECT_3_2
 
static long vp_xo [3][5]
 
static long vp_yo [3][5]
 
char * bitmap_buffer []
 
volatile char * opacity_buffer [2] = {(char*)0x4163b400, (void*)0x416b9d00}
 

Makro-Dokumentation

#define LED_PR   0xd20b0994

Definiert in Zeile 40 der Datei lib.c.

Dokumentation der Funktionen

char* camera_jpeg_count_str ( )

Definiert in Zeile 374 der Datei lib.c.

375 {
376  extern char jpeg_count_str[];
377  return jpeg_count_str;
378 }
void camera_set_led ( int  led,
int  state,
__attribute__((unused)) int  bright 
)

Definiert in Zeile 49 der Datei lib.c.

49  {
50  static char led_table[2]={0,4};
51  _LEDDrive(led_table[led%sizeof(led_table)], state<=1 ? !state : state);
52 }
void debug_led ( int  state)

Definiert in Zeile 42 der Datei lib.c.

42  {
43  volatile long *p = (void*)LED_PR;
44  *p = ((state) ? 0x4d0002 : 0x4c0003);
45 }
int get_flash_params_count ( void  )

Definiert in Zeile 58 der Datei lib.c.

58  {
59  return 0xde; // @0xfc0afeb8
60 }
char* hook_raw_image_addr ( void  )

Definiert in Zeile 78 der Datei lib.c.

79 {
80  if(current_raw_addr) {
81  return current_raw_addr;
82  }
83  // TODO... fall back to old code.
84  // Wron in many cases, but some code like benchmark assumes it get a raw buffer outside of shooting
85  // observed values 0-2, 3 would index something that doesn't look like a raw fb in the jpeg case
86  int i=active_raw_buffer&3;
87  if(i>2) {
88  i=0;
89  }
91  // AUTO mode (canon raw can't be enabled in AUTO)
92  return (char *)0x46f04300; // TODO continuous shooting uses different buffers
94  // canon raw disabled - uses up to 3 raw buffers
95  return raw_buffers_jpeg[i];
96  } else {
97  // canon raw enabled - different address, not clear if it ever uses multiple buffers
98  return raw_buffers_canon_raw[i];
99  }
100  // TODO most scene modes seem to use different addresse(s)
101 }
void JogDial_CCW ( void  )

Definiert in Zeile 66 der Datei lib.c.

66  {
67  _PostLogicalEventToUI(0x873, 1); //RotateJogDialLeft
68 }
void JogDial_CW ( void  )

Definiert in Zeile 62 der Datei lib.c.

62  {
63  _PostLogicalEventToUI(0x872, 1); //RotateJogDialRight
64 }
void shutdown ( )

Definiert in Zeile 22 der Datei lib.c.

22  {
23 //***TODO***
24 /*
25  volatile long *p = (void*)0xC022001C;
26 
27  asm(
28  "MRS R1, CPSR\n"
29  "AND R0, R1, #0x80\n"
30  "ORR R1, R1, #0x80\n"
31  "MSR CPSR_cf, R1\n"
32  :::"r1","r0"
33  );
34 
35  *p = 0x44; // power off.
36 */
37  while(1);
38 }
void shutdown_soft ( )

Definiert in Zeile 54 der Datei lib.c.

54  {
55  _PostLogicalEventForNotPowerType(0x1005,0); // PressOffButton
56 }
void vid_bitmap_refresh ( )

Definiert in Zeile 7 der Datei lib.c.

7  {
8  // clears perfectly but blinks and is asynchronous
9 // extern void _displaybusyonscreen();
10 // extern void _undisplaybusyonscreen();
11 // _displaybusyonscreen();
12 // _undisplaybusyonscreen();
13 
14  // https://chdk.setepontos.com/index.php?topic=12788.msg133958#msg133958
15  extern void _transfer_src_overlay(int);
16 // works in most cases but can cause "ghosting" in auto mode when canon UI constantly updates
17 // _transfer_src_overlay(active_bitmap_buffer);
18  _transfer_src_overlay(0);
19  _transfer_src_overlay(1);
20 }
int vid_get_aspect_ratio ( )

Definiert in Zeile 285 der Datei lib.c.

285 { return lv_aspect; }
void* vid_get_bitmap_active_buffer ( )

Definiert in Zeile 286 der Datei lib.c.

286  {
288 }
void* vid_get_bitmap_fb ( )

Definiert in Zeile 270 der Datei lib.c.

270  {
271  return (void *)0x41441000; // from sub_fc0f7c21, alt 4153e200
272 }
void* vid_get_opacity_active_buffer ( )

Definiert in Zeile 301 der Datei lib.c.

301  {
302  return (void *)opacity_buffer[active_bitmap_buffer&1];
303 }
int vid_get_viewport_buffer_width_proper ( )

Definiert in Zeile 283 der Datei lib.c.

283 { return vp_full_buf_width; }
int vid_get_viewport_byte_width ( )

Definiert in Zeile 274 der Datei lib.c.

274  {
275  return (vp_full_buf_width * 2);
276 }
int vid_get_viewport_display_xoffset ( )

Definiert in Zeile 229 der Datei lib.c.

229  {
231  {
232  return 0;
233  }
234  // video, ignore still res propcase
237  return vp_xo[lv_aspect][0];// 4:3 video
238  } else {
239  return 0; // 16:9 video, no x offset
240  }
241  }
243 }
int vid_get_viewport_display_xoffset_proper ( )

Definiert in Zeile 279 der Datei lib.c.

int vid_get_viewport_display_yoffset ( )

Definiert in Zeile 252 der Datei lib.c.

252  {
254  {
255  return 0;
256  }
257  // video, ignore still res propcase
260  return 0; // 4:3 video, no Y offset
261  } else {
262  return vp_yo[lv_aspect][1];// 16:9 video
263  }
264  }
266 }
int vid_get_viewport_display_yoffset_proper ( )

Definiert in Zeile 280 der Datei lib.c.

void* vid_get_viewport_fb ( )

Definiert in Zeile 111 der Datei lib.c.

111  {
112  return (void*)0x43334300; // "first" viewport adr, "VRAM Address : %p", contains d6 uyvy
113 // TODO sx280 values
114  // Return first viewport buffer - for case when vid_get_viewport_live_fb not defined
115  //return (void*)0x43115100; // uyvy buffers with signed(?) chroma components
116  // return (void*)0x4b25fc00; // uyvy buffers (more than 4), pixel format compatible with earlier DIGIC uyvy
117 }
void* vid_get_viewport_fb_d ( )

Definiert in Zeile 127 der Datei lib.c.

127  {
128  // alternates between the 5e* buffers, but isn't correct when video selected
129  // and doesn't do animated transitions
130  /*
131  void *p=*(void **)(0xa804);
132  if(p) {
133  return p;
134  }
135  return (void*)0x5e608000;
136  */
137  // based on suggestion from 62ndidiot in https://chdk.setepontos.com/index.php?topic=12532.msg129914#msg129914
138  extern void *current_fb_d;
139  return current_fb_d;
140 }
int vid_get_viewport_fullscreen_height ( )

Definiert in Zeile 282 der Datei lib.c.

282 { return vp_full_height; }
int vid_get_viewport_fullscreen_width ( )

Definiert in Zeile 281 der Datei lib.c.

281 { return vp_full_width; }
long vid_get_viewport_height ( )

Definiert in Zeile 207 der Datei lib.c.

207  {
208  extern int _GetVRAMVPixelsSize();
210  {
211  return vp_full_height;
212  }
213  return _GetVRAMVPixelsSize();
214 }
void* vid_get_viewport_live_fb ( )

Definiert in Zeile 178 der Datei lib.c.

179 {
180 // current_viewport_buffer doesn't seem to be most recent
181  int i;
182  for(i=0;i<4;i++) {
183  if(current_viewport_buffer == viewport_buffers[i]) {
184  return viewport_buffers[(i+1)&3];
185  }
186  }
187  return 0;
188 }
int vid_get_viewport_type ( )

Definiert in Zeile 284 der Datei lib.c.

284 { return LV_FB_YUV8B; }
int vid_get_viewport_width ( )

Definiert in Zeile 198 der Datei lib.c.

198  {
199  extern int _GetVRAMHPixelsSize();
201  {
202  return vp_full_width;
203  }
204  return _GetVRAMHPixelsSize();
205 }
int vid_get_viewport_yoffset ( )

Definiert in Zeile 216 der Datei lib.c.

216  {
217  // this seems to be always 0, buffer always begins with actual display data (widescreen or not)
218  return 0;
219 }

Variablen-Dokumentation

int active_bitmap_buffer
int active_raw_buffer
char* bitmap_buffer[]

Definiert in Zeile 84 der Datei lib.c.

char* current_raw_addr

Definiert in Zeile 13 der Datei capt_seq.c.

void* current_viewport_buffer
int lv_aspect = LV_ASPECT_3_2
static

Definiert in Zeile 194 der Datei lib.c.

volatile char* opacity_buffer[2] = {(char*)0x4163b400, (void*)0x416b9d00}

Definiert in Zeile 298 der Datei lib.c.

char* raw_buffers_canon_raw[]
char* raw_buffers_jpeg[]
void* viewport_buffers[]
int vp_full_buf_width = 736
static

Definiert in Zeile 192 der Datei lib.c.

int vp_full_height = 480
static

Definiert in Zeile 193 der Datei lib.c.

int vp_full_width = 720
static

Definiert in Zeile 191 der Datei lib.c.

long vp_xo[3][5]
static
Initialisierung:
= {
{ 0, 0, 0, 90, 144 },
{ 0, 0, 0, 0, 0 },
{ 40, 0, 0, 120, 168 },
}

Definiert in Zeile 222 der Datei lib.c.

long vp_yo[3][5]
static
Initialisierung:
= {
{ 0, 60, 27, 0, 0 },
{ 0, 0, 0, 0, 0 },
{ 0, 36, 0, 0, 0 },
}

Definiert in Zeile 245 der Datei lib.c.