Changeset 1008
- Timestamp:
- 01/01/11 22:51:22 (2 years ago)
- Location:
- trunk
- Files:
-
- 86 added
- 11 edited
-
core/edgeoverlay.c (modified) (1 diff)
-
core/gui.c (modified) (4 diffs)
-
core/gui_osd.c (modified) (1 diff)
-
core/histogram.c (modified) (4 diffs)
-
core/kbd.c (modified) (2 diffs)
-
core/motion_detector.c (modified) (2 diffs)
-
core/raw.c (modified) (6 diffs)
-
include/keyboard.h (modified) (1 diff)
-
include/modelist.h (modified) (1 diff)
-
loader/g12 (added)
-
loader/g12/Makefile (added)
-
loader/g12/blobs.S (added)
-
loader/g12/entry.S (added)
-
loader/g12/main.c (added)
-
loader/g12/resetcode (added)
-
loader/g12/resetcode/Makefile (added)
-
loader/g12/resetcode/entry.S (added)
-
loader/g12/resetcode/main.c (added)
-
loader/sx30 (added)
-
loader/sx30/Makefile (added)
-
loader/sx30/blobs.S (added)
-
loader/sx30/entry.S (added)
-
loader/sx30/main.c (added)
-
loader/sx30/resetcode (added)
-
loader/sx30/resetcode/Makefile (added)
-
loader/sx30/resetcode/entry.S (added)
-
loader/sx30/resetcode/main.c (added)
-
makefile.inc (modified) (1 diff)
-
platform/g12 (added)
-
platform/g12/Makefile (added)
-
platform/g12/kbd.c (added)
-
platform/g12/lib.c (added)
-
platform/g12/main.c (added)
-
platform/g12/notes.txt (added)
-
platform/g12/shooting.c (added)
-
platform/g12/sub (added)
-
platform/g12/sub/100c (added)
-
platform/g12/sub/100c/Makefile (added)
-
platform/g12/sub/100c/boot.c (added)
-
platform/g12/sub/100c/capt_seq.c (added)
-
platform/g12/sub/100c/lib.c (added)
-
platform/g12/sub/100c/makefile.inc (added)
-
platform/g12/sub/100c/movie_rec.c (added)
-
platform/g12/sub/100c/stubs_asm.h (added)
-
platform/g12/sub/100c/stubs_auto.S (added)
-
platform/g12/sub/100c/stubs_entry.S (added)
-
platform/g12/sub/100c/stubs_entry_2.S (added)
-
platform/g12/sub/100c/stubs_min.S (added)
-
platform/g12/sub/Makefile (added)
-
platform/g12/wrappers.c (added)
-
platform/generic/wrappers.c (modified) (5 diffs)
-
platform/sx30 (added)
-
platform/sx30/Makefile (added)
-
platform/sx30/kbd.c (added)
-
platform/sx30/lib.c (added)
-
platform/sx30/main.c (added)
-
platform/sx30/notes.txt (added)
-
platform/sx30/shooting.c (added)
-
platform/sx30/sub (added)
-
platform/sx30/sub/100e (added)
-
platform/sx30/sub/100e/Makefile (added)
-
platform/sx30/sub/100e/boot.c (added)
-
platform/sx30/sub/100e/capt_seq.c (added)
-
platform/sx30/sub/100e/lib.c (added)
-
platform/sx30/sub/100e/makefile.inc (added)
-
platform/sx30/sub/100e/movie_rec.c (added)
-
platform/sx30/sub/100e/stubs_asm.h (added)
-
platform/sx30/sub/100e/stubs_auto.S (added)
-
platform/sx30/sub/100e/stubs_entry.S (added)
-
platform/sx30/sub/100e/stubs_entry_2.S (added)
-
platform/sx30/sub/100e/stubs_min.S (added)
-
platform/sx30/sub/100h (added)
-
platform/sx30/sub/100h/Makefile (added)
-
platform/sx30/sub/100h/boot.c (added)
-
platform/sx30/sub/100h/capt_seq.c (added)
-
platform/sx30/sub/100h/lib.c (added)
-
platform/sx30/sub/100h/makefile.inc (added)
-
platform/sx30/sub/100h/movie_rec.c (added)
-
platform/sx30/sub/100h/stubs_asm.h (added)
-
platform/sx30/sub/100h/stubs_auto.S (added)
-
platform/sx30/sub/100h/stubs_entry.S (added)
-
platform/sx30/sub/100h/stubs_entry_2.S (added)
-
platform/sx30/sub/100h/stubs_min.S (added)
-
platform/sx30/sub/100l (added)
-
platform/sx30/sub/100l/Makefile (added)
-
platform/sx30/sub/100l/boot.c (added)
-
platform/sx30/sub/100l/capt_seq.c (added)
-
platform/sx30/sub/100l/lib.c (added)
-
platform/sx30/sub/100l/makefile.inc (added)
-
platform/sx30/sub/100l/movie_rec.c (added)
-
platform/sx30/sub/100l/stubs_asm.h (added)
-
platform/sx30/sub/100l/stubs_auto.S (added)
-
platform/sx30/sub/100l/stubs_entry.S (added)
-
platform/sx30/sub/100l/stubs_entry_2.S (added)
-
platform/sx30/sub/100l/stubs_min.S (added)
-
platform/sx30/sub/Makefile (added)
-
platform/sx30/wrappers.c (added)
Legend:
- Unmodified
- Added
- Removed
-
trunk/core/edgeoverlay.c
r955 r1008 42 42 #if CAM_USES_ASPECT_CORRECTION//nandoide sept-2009 get the viewport dimensions, not the screen dimensions, on sx200is they aren't the same. 43 43 viewport_height = vid_get_viewport_height()-EDGE_HMARGIN*2; //don't trace bottom lines 44 #if defined (CAM_VIEWPORT_BUFFER_WIDTH_FIX) // buffer is wider than viewport on G12 45 viewportw = vid_get_viewport_width(); 46 viewport_width = vid_get_viewport_buffer_width() * 3; 47 #else 44 48 viewportw = vid_get_viewport_width(); 45 49 viewport_width = viewportw * 3; 50 #endif 46 51 #else 47 52 viewport_height = screen_height;//vid_get_viewport_height(); -
trunk/core/gui.c
r999 r1008 74 74 // KEY_LEFT/KEY_RIGHT is used for gui_subj_dist_override_value_enum (because of no separate ZOOM_IN/OUT) 75 75 76 #elif defined(CAMERA_g7) || defined(CAMERA_sx10) || defined(CAMERA_sx1) || defined(CAMERA_sx20) 76 #elif defined(CAMERA_g7) || defined(CAMERA_sx10) || defined(CAMERA_sx1) || defined(CAMERA_sx20) || defined(CAMERA_sx30) 77 77 //Alt mode 78 78 #define SHORTCUT_TOGGLE_RAW KEY_ERASE … … 1261 1261 static const char* names[]={ "Print", "Face"}; 1262 1262 static const int keys[]={ KEY_PRINT, KEY_FACE }; 1263 #elif defined(CAMERA_sx10) || defined(CAMERA_sx1) || defined(CAMERA_sx20) 1263 #elif defined(CAMERA_sx10) || defined(CAMERA_sx1) || defined(CAMERA_sx20) || defined(CAMERA_sx30) 1264 1264 static const char* names[]={ "Shrtcut", "Flash", "Video"}; 1265 1265 static const int keys[]={ KEY_PRINT, KEY_FLASH, KEY_VIDEO }; … … 1538 1538 1539 1539 const char* gui_video_af_key_enum(int change, int arg){ 1540 #if CAMERA_g12 1541 static const char* names[]={ "", "Shutter", "Set", "AE Lock"}; 1542 static const int keys[]={0, KEY_SHOOT_HALF, KEY_SET, KEY_AE_LOCK }; 1543 #else 1540 1544 static const char* names[]={ "", "Shutter", "Set"}; 1541 1545 static const int keys[]={0, KEY_SHOOT_HALF, KEY_SET }; 1546 #endif 1542 1547 int i; 1543 1548 … … 2269 2274 #if defined (CAMERA_s90) 2270 2275 if (x==0) zoom_status=ZOOM_OPTICAL_MAX; //ERR99: No zoom back from digital to optical zoom possible if set to medium 2276 #elif defined (CAMERA_sx30) || defined (CAMERA_g12) // can't find, crashes camera ******* 2271 2277 #else 2272 2278 if (x==0) zoom_status=ZOOM_OPTICAL_MEDIUM; -
trunk/core/gui_osd.c
r935 r1008 497 497 if (mrec) { 498 498 } 499 } 499 } 500 #if defined(CAM_VIEWPORT_BUFFER_WIDTH_FIX) 501 v += ((vid_get_viewport_buffer_width() - viewport_width) * 3); // buffer is wider than viewport on G12 502 #endif 500 503 } 501 504 if (!zebra_drawn) f=0; -
trunk/core/histogram.c
r977 r1008 66 66 int i, hi, c; 67 67 int y, v, u; 68 #if defined (CAM_VIEWPORT_BUFFER_WIDTH_FIX) 69 static int x, vp_w, vp_bw; 70 #endif 68 71 static int viewport_size; 69 72 unsigned int histo_fill[5]; … … 76 79 img = vid_get_viewport_fb(); 77 80 } 81 #if defined (CAM_VIEWPORT_BUFFER_WIDTH_FIX) 82 vp_w = vid_get_viewport_width(); 83 vp_bw = vid_get_viewport_buffer_width(); 84 viewport_size = vid_get_viewport_height() * vp_bw; 85 #else 78 86 viewport_size = vid_get_viewport_height() * vid_get_viewport_width(); 87 #endif 79 88 for (c=0; c<5; ++c) { 80 89 for (i=0; i<HISTO_WIDTH; ++i) { … … 90 99 case 2: 91 100 case 3: 101 #if defined (CAM_VIEWPORT_BUFFER_WIDTH_FIX) 102 x = 0; 103 #endif 92 104 for (i=(histogram_stage-1)*6; i<viewport_size*3; i+=6*3*2) { 93 105 y = img[i+1]; … … 105 117 hi = clip(((y<<12) + u*7258 + 2048)/4096)*HISTO_WIDTH/256; // B 106 118 ++histogram_proc[HISTO_B][hi]; 107 } 119 120 #if defined (CAM_VIEWPORT_BUFFER_WIDTH_FIX) 121 x++; 122 if (x == vp_w) 123 { 124 i += ((vp_bw - vp_w) * 3); 125 x = 0; 126 } 127 #endif 128 } 108 129 109 130 ++histogram_stage; -
trunk/core/kbd.c
r1000 r1008 65 65 #endif 66 66 67 #if defined(CAMERA_sx30) 68 #define ZSTEP_TABLE_SIZE 11 69 static int nTxtbl[]={0,20,40,60,80,100,120,140,160,180,200}; 70 #endif 71 67 72 #if defined(CAMERA_tx1) 68 73 #define ZSTEP_TABLE_SIZE 8 … … 106 111 #endif 107 112 108 #if defined(CAMERA_g11) 113 #if defined(CAMERA_g11) || defined(CAMERA_g12) 109 114 #define ZSTEP_TABLE_SIZE 14 110 115 static int nTxtbl[]={0,1,2,3,4,5,6,7,8,9,10,11,12,13}; -
trunk/core/motion_detector.c
r1000 r1008 421 421 422 422 vp_h=vid_get_viewport_height(); 423 #if defined(CAM_VIEWPORT_BUFFER_WIDTH_FIX) 424 vp_w=vid_get_viewport_buffer_width(); 425 426 x_step=vid_get_viewport_width()/motion_detector->columns; 427 y_step=vp_h/motion_detector->rows; 428 #else 423 429 vp_w=vid_get_viewport_width(); 424 430 … … 426 432 x_step=vp_w/motion_detector->columns; 427 433 y_step=vp_h/motion_detector->rows; 428 434 #endif 429 435 430 436 for(row=0, col=0; row < motion_detector->rows ; ){ -
trunk/core/raw.c
r979 r1008 42 42 else return (char*) ((int)hook_raw_image_addr()&~CAM_UNCACHED_BIT); 43 43 } 44 45 #if DNG_DOUBLE_BUF 46 char* get_alt_raw_image_addr(void){ // return inactive buffer 47 if (!conf.raw_cache) return hook_alt_raw_image_addr(); 48 else return (char*) ((int)hook_alt_raw_image_addr()&~CAM_UNCACHED_BIT); 49 } 50 #endif 44 51 45 52 //------------------------------------------------------------------- … … 67 74 int i; 68 75 if (gamma[255]) return; 76 #if defined(CAMERA_sx30) || defined(CAMERA_g12) 77 for (i=0; i<12; i++) gamma[i]=255*pow(i/255.0, 0.5); 78 for (i=12; i<64; i++) gamma[i]=255*pow(i/255.0, 0.4); 79 for (i=64; i<=255; i++) gamma[i]=255*pow(i/255.0, 0.25); 80 #else 69 81 for (i=0; i<=255; i++) gamma[i]=255*pow(i/255.0, 0.5); 82 #endif 70 83 } 71 84 … … 107 120 if (state_kbd_script_run && shot_histogram_isenabled()) build_shot_histogram(); 108 121 122 #if DNG_DOUBLE_BUF 123 char* rawadr = get_raw_image_addr(); 124 char* altrawadr = get_alt_raw_image_addr(); 125 #endif 126 109 127 // ! ! ! exclusively for special script which creates badpixel.bin ! ! ! 110 128 if (conf.save_raw==255) conf.save_raw=get_bad_count_and_write_file("A/CHDK/bad_tmp.bin"); … … 156 174 157 175 mkdir("A/DCIM"); 176 #if defined(CAM_DATE_FOLDER_NAMING) 177 if (conf.raw_in_dir) 178 get_target_dir_name(dir); 179 else 180 sprintf(dir, RAW_TARGET_DIRECTORY, 100); 181 #else 158 182 sprintf(dir, RAW_TARGET_DIRECTORY, (conf.raw_in_dir)?get_target_dir_num():100); 183 #endif 159 184 mkdir(dir); 160 185 … … 178 203 write(fd, get_dng_header(), get_dng_header_size()); 179 204 write(fd, thumbnail_buf, DNG_TH_WIDTH*DNG_TH_HEIGHT*3); 205 #if DNG_DOUBLE_BUF 206 reverse_bytes_order2(rawadr, altrawadr, hook_raw_size()); 207 #else 180 208 reverse_bytes_order(get_raw_image_addr(), hook_raw_size()); 209 #endif 181 210 } 182 211 } 183 212 #endif 213 #if DNG_DOUBLE_BUF 214 if (conf.dng_raw) { 215 write(fd, (char*)(((unsigned long)altrawadr)|CAM_UNCACHED_BIT), hook_raw_size()); 216 } 217 else 218 { 219 write(fd, (char*)(((unsigned long)rawadr)|CAM_UNCACHED_BIT), hook_raw_size()); 220 } 221 #else 184 222 write(fd, get_raw_image_addr(), hook_raw_size()); 223 #endif 185 224 close(fd); 186 225 utime(fn, &t); … … 188 227 if (conf.dng_raw) { 189 228 if (get_dng_header() && thumbnail_buf) { 229 #if !DNG_DOUBLE_BUF 190 230 reverse_bytes_order(get_raw_image_addr(), hook_raw_size()); 231 #endif 191 232 // unpatch_bad_pixels_b(); 192 233 } -
trunk/include/keyboard.h
r994 r1008 26 26 #define KEY_DUMMY 23 // dummy key for pressing to disable energy saving in alt mode 27 27 28 // SX30 29 #define KEY_ZOOM_IN1 24 // SX30 has three zoom speeds each way 30 #define KEY_ZOOM_IN2 25 31 #define KEY_ZOOM_IN3 26 32 #define KEY_ZOOM_OUT1 27 33 #define KEY_ZOOM_OUT2 28 34 #define KEY_ZOOM_OUT3 29 35 #define KEY_ZOOM_ASSIST 30 // SX30 new button 36 37 // G12 38 #define KEY_AE_LOCK 31 // G12 AE/FE Lock button 39 #define KEY_METERING 32 // G12 metering mode button 40 28 41 #define JOGDIAL_LEFT 100 29 42 #define JOGDIAL_RIGHT 101 -
trunk/include/modelist.h
r994 r1008 98 98 MODE_LOWLIGHT , // g11 99 99 MODE_SCN_NOSTALGIC , // s90 100 MODE_SCN_SMART_SHUTTER , // sx30 101 MODE_SCN_LOWLIGHT , // sx30 102 MODE_SCN_SUPER_VIVID , // sx30 103 MODE_SCN_POSTER_EFFECT , // sx30 104 MODE_SCN_FISHEYE , // sx30 105 MODE_SCN_MINIATURE , // sx30 106 MODE_SCN_HDR , // g12 100 107 }; 101 108 -
trunk/makefile.inc
r957 r1008 265 265 PLATFORM=ixus95_sd1200 266 266 PLATFORMSUB=100c 267 268 #PLATFORM=sx30 269 #PLATFORMSUB=100h 270 271 #PLATFORM=g12 272 #PLATFORMSUB=100c 267 273 268 274 #PLATFORM=a430 -
trunk/platform/generic/wrappers.c
r957 r1008 126 126 newpt = zoom_points-1; 127 127 } 128 #if defined(CAMERA_sx30) 129 // SX30 - Can't find zoom_status, _MoveZoomLensWithPoint crashes camera 130 extern void _PT_MoveOpticalZoomAt(long*); 131 if (lens_get_zoom_point() != newpt) 132 _PT_MoveOpticalZoomAt(&newpt); 133 #elif defined(CAMERA_g12) 134 // G12 - Can't find zoom_status, _MoveZoomLensWithPoint works anyway, and updates PROPCASE_OPTICAL_ZOOM_POSITION; but doesn't wait for zoom to finish 135 if (lens_get_zoom_point() != newpt) 136 _MoveZoomLensWithPoint((short*)&newpt); 137 #else 128 138 _MoveZoomLensWithPoint((short*)&newpt); 129 139 while (zoom_busy); … … 132 142 else zoom_status=ZOOM_OPTICAL_MEDIUM; 133 143 _SetPropertyCase(PROPCASE_OPTICAL_ZOOM_POSITION, &newpt, sizeof(newpt)); 144 #endif 134 145 } 135 146 … … 679 690 static unsigned long drive_sectors; 680 691 692 int is_mbr_loaded() 693 { 694 return (mbr_buf == (void*)0) ? 0 : 1; 695 } 696 697 #ifndef CAM_DRYOS 698 681 699 int mbr_read(char* mbr_sector, unsigned long drive_total_sectors, unsigned long *part_start_sector, unsigned long *part_length){ 682 700 // return value: 1 - success, 0 - fail … … 711 729 } 712 730 731 #else 713 732 714 733 int mbr_read_dryos(unsigned long drive_total_sectors, char* mbr_sector ){ … … 725 744 int i; 726 745 int count=0; 727 for (i=0; i<=1;i++){ 728 part_start_sector=(*(unsigned short*)(mbr_buf+i*16+0x1C8)<<16) | *(unsigned short*)(mbr_buf+i*16+0x1C6); 729 part_length=(*(unsigned short*)(mbr_buf+i*16+0x1CC)<<16) | *(unsigned short*)(mbr_buf+i*16+0x1CA); 730 part_status=mbr_buf[i*16+0x1BE]; 731 part_type=mbr_buf[0x1C2+i*16]; 732 if ( part_start_sector && part_length && part_type && ((part_status==0) || (part_status==0x80)) ) count++; 746 if (is_mbr_loaded()) 747 { 748 for (i=0; i<=1;i++){ 749 part_start_sector=(*(unsigned short*)(mbr_buf+i*16+0x1C8)<<16) | *(unsigned short*)(mbr_buf+i*16+0x1C6); 750 part_length=(*(unsigned short*)(mbr_buf+i*16+0x1CC)<<16) | *(unsigned short*)(mbr_buf+i*16+0x1CA); 751 part_status=mbr_buf[i*16+0x1BE]; 752 part_type=mbr_buf[0x1C2+i*16]; 753 if ( part_start_sector && part_length && part_type && ((part_status==0) || (part_status==0x80)) ) count++; 754 } 733 755 } 734 756 return count; 735 757 } 736 758 759 #endif 760 737 761 void swap_partitions(void){ 738 int i; 739 char c; 740 for(i=0;i<16;i++){ 741 c=mbr_buf[i+0x1BE]; 742 mbr_buf[i+0x1BE]=mbr_buf[i+0x1CE]; 743 mbr_buf[i+0x1CE]=c; 744 } 745 _WriteSDCard(0,0,1,mbr_buf); 762 if (is_mbr_loaded()) 763 { 764 int i; 765 char c; 766 for(i=0;i<16;i++){ 767 c=mbr_buf[i+0x1BE]; 768 mbr_buf[i+0x1BE]=mbr_buf[i+0x1CE]; 769 mbr_buf[i+0x1CE]=c; 770 } 771 _WriteSDCard(0,0,1,mbr_buf); 772 } 746 773 } 747 774 748 775 void create_partitions(void){ 749 unsigned long start, length; 750 char type; 751 752 _memset(mbr_buf,0,SECTOR_SIZE); 753 754 start=1; length=2*1024*1024/SECTOR_SIZE; //2 Mb 755 type=1; // FAT primary 756 mbr_buf[0x1BE + 4]=type; 757 mbr_buf[0x1BE + 8]=start; mbr_buf[0x1BE + 9]=start>>8; mbr_buf[0x1BE + 10]=start>>16; mbr_buf[0x1BE + 11]=start>>24; 758 mbr_buf[0x1BE + 12]=length; mbr_buf[0x1BE + 13]=length>>8; mbr_buf[0x1BE + 14]=length>>16; mbr_buf[0x1BE + 15]=length>>24; 759 760 start=start+length; length=drive_sectors-start-1; 761 type=0x0B; //FAT32 primary; 762 mbr_buf[0x1CE + 4]=type; 763 mbr_buf[0x1CE + 8]=start; mbr_buf[0x1CE + 9]=start>>8; mbr_buf[0x1CE + 10]=start>>16; mbr_buf[0x1CE + 11]=start>>24; 764 mbr_buf[0x1CE + 12]=length; mbr_buf[0x1CE + 13]=length>>8; mbr_buf[0x1CE + 14]=length>>16; mbr_buf[0x1CE + 15]=length>>24; 765 766 mbr_buf[0x1FE]=0x55; mbr_buf[0x1FF]=0xAA; // signature; 767 768 _WriteSDCard(0,0,1,mbr_buf); 776 if (is_mbr_loaded()) 777 { 778 unsigned long start, length; 779 char type; 780 781 _memset(mbr_buf,0,SECTOR_SIZE); 782 783 start=1; length=2*1024*1024/SECTOR_SIZE; //2 Mb 784 type=1; // FAT primary 785 mbr_buf[0x1BE + 4]=type; 786 mbr_buf[0x1BE + 8]=start; mbr_buf[0x1BE + 9]=start>>8; mbr_buf[0x1BE + 10]=start>>16; mbr_buf[0x1BE + 11]=start>>24; 787 mbr_buf[0x1BE + 12]=length; mbr_buf[0x1BE + 13]=length>>8; mbr_buf[0x1BE + 14]=length>>16; mbr_buf[0x1BE + 15]=length>>24; 788 789 start=start+length; length=drive_sectors-start-1; 790 type=0x0B; //FAT32 primary; 791 mbr_buf[0x1CE + 4]=type; 792 mbr_buf[0x1CE + 8]=start; mbr_buf[0x1CE + 9]=start>>8; mbr_buf[0x1CE + 10]=start>>16; mbr_buf[0x1CE + 11]=start>>24; 793 mbr_buf[0x1CE + 12]=length; mbr_buf[0x1CE + 13]=length>>8; mbr_buf[0x1CE + 14]=length>>16; mbr_buf[0x1CE + 15]=length>>24; 794 795 mbr_buf[0x1FE]=0x55; mbr_buf[0x1FF]=0xAA; // signature; 796 797 _WriteSDCard(0,0,1,mbr_buf); 798 } 769 799 } 770 800
Note: See TracChangeset
for help on using the changeset viewer.