Changeset 1499
- Timestamp:
- 12/22/11 21:20:18 (17 months ago)
- Location:
- trunk
- Files:
-
- 17 edited
-
core/edgeoverlay.c (modified) (6 diffs)
-
core/gui_osd.c (modified) (4 diffs)
-
core/histogram.c (modified) (2 diffs)
-
core/motion_detector.c (modified) (3 diffs)
-
include/platform.h (modified) (2 diffs)
-
platform/g12/lib.c (modified) (2 diffs)
-
platform/generic/wrappers.c (modified) (3 diffs)
-
platform/ixus1000_sd4500/sub/100d/lib.c (modified) (2 diffs)
-
platform/ixus1000_sd4500/sub/100f/lib.c (modified) (1 diff)
-
platform/ixus200_sd980/sub/101c/lib.c (modified) (2 diffs)
-
platform/ixus200_sd980/sub/101d/lib.c (modified) (2 diffs)
-
platform/ixus220_elph300hs/lib.c (modified) (1 diff)
-
platform/ixus310_elph500hs/lib.c (modified) (2 diffs)
-
platform/sx220hs/lib.c (modified) (2 diffs)
-
platform/sx230hs/lib.c (modified) (2 diffs)
-
platform/sx30/lib.c (modified) (2 diffs)
-
platform/sx40hs/lib.c (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/core/edgeoverlay.c
r1365 r1499 29 29 30 30 static int viewport_byte_width; // width in bytes of one viewport line ?? 31 static int viewport_yscale; // Y multiplier (for cameras with 480 pixel high viewports) 31 32 static int viewport_height; // height of visible / used area of viewport 32 33 static int viewport_width; // width of visible / used area of viewport (in 3 byte units) … … 38 39 viewport_height = vid_get_viewport_height()-EDGE_HMARGIN*2; //don't trace bottom lines 39 40 viewport_width = vid_get_viewport_width(); 40 viewport_byte_width = vid_get_viewport_buffer_width() * 3; 41 viewport_byte_width = vid_get_viewport_byte_width(); 42 viewport_yscale = vid_get_viewport_yscale(); 41 43 42 44 viewport_xoffset = vid_get_viewport_xoffset(); … … 202 204 int x, int x_max) 203 205 { 204 const unsigned char* ptrh2 = ptrh1 + viewport_byte_width ; // current row205 const unsigned char* ptrh3 = ptrh2 + viewport_byte_width ; // next row206 const unsigned char* ptrh2 = ptrh1 + viewport_byte_width*viewport_yscale; // current row 207 const unsigned char* ptrh3 = ptrh2 + viewport_byte_width*viewport_yscale; // next row 206 208 207 209 for (; x<x_max; x+=6) … … 309 311 shutter_fullpress |= kbd_is_key_pressed(KEY_SHOOT_FULL); 310 312 311 ptrh1 = img + (y_min+y-1) * viewport_byte_width ;313 ptrh1 = img + (y_min+y-1) * viewport_byte_width*viewport_yscale; 312 314 smptr = smbuf + (y+1) * viewport_byte_width; 313 315 … … 332 334 333 335 // Filter new line 334 ptrh1 = img + y * viewport_byte_width ;336 ptrh1 = img + y * viewport_byte_width*viewport_yscale; 335 337 smptr = smbuf + 2 * viewport_byte_width; 336 338 average_filter_row(ptrh1, smptr, x_min, x_max); … … 340 342 else 341 343 { 342 ptrh1 = img + (y-1) * viewport_byte_width ;343 } 344 ptrh2 = ptrh1 + viewport_byte_width ;345 ptrh3 = ptrh2 + viewport_byte_width ;344 ptrh1 = img + (y-1) * viewport_byte_width*viewport_yscale; 345 } 346 ptrh2 = ptrh1 + viewport_byte_width*viewport_yscale; 347 ptrh3 = ptrh2 + viewport_byte_width*viewport_yscale; 346 348 347 349 // Now we do sobel on the current line -
trunk/core/gui_osd.c
r1350 r1499 398 398 int viewport_height; 399 399 int viewport_width; 400 int viewport_buffer_width; // for when viewport memory buffer is wider than viewport 400 int viewport_image_offset; // for when viewport memory buffer is wider than viewport 401 int viewport_row_offset; // for when viewport memory buffer is wider than viewport 401 402 int viewport_xoffset; // used when image size != viewport size 402 403 int viewport_yoffset; // used when image size != viewport size … … 444 445 viewport_height = vid_get_viewport_height(); 445 446 viewport_width = vid_get_viewport_width(); 446 viewport_buffer_width = vid_get_viewport_buffer_width(); 447 viewport_image_offset = vid_get_viewport_image_offset(); 448 viewport_row_offset = vid_get_viewport_row_offset(); 447 449 viewport_xoffset = vid_get_viewport_xoffset(); 448 450 viewport_yoffset = vid_get_viewport_yoffset(); … … 477 479 over = 255-conf.zebra_over; 478 480 if (conf.zebra_multichannel) {step_x=2; step_v=6;} else {step_x=1; step_v=3;} 479 for (y=viewport_yoffset, v= (viewport_yoffset*viewport_buffer_width+viewport_xoffset)*3; y<viewport_yoffset+viewport_height; ++y) {481 for (y=viewport_yoffset, v=viewport_image_offset; y<viewport_yoffset+viewport_height; ++y) { 480 482 sy=y*screen_buffer_width; 481 483 sx=viewport_xoffset; … … 516 518 } 517 519 // adjust for cases where buffer is wider than viewport (e.g. on G12) 518 v += ((viewport_buffer_width - viewport_width) * 3);520 v += viewport_row_offset; 519 521 } 520 522 if (!zebra_drawn) f=0; -
trunk/core/histogram.c
r1104 r1499 81 81 } 82 82 img += vid_get_viewport_image_offset(); // offset into viewport for when image size != viewport size (e.g. 16:9 image on 4:3 LCD) 83 viewport_size = vid_get_viewport_height() * vid_get_viewport_b uffer_width();83 viewport_size = vid_get_viewport_height() * vid_get_viewport_byte_width() * vid_get_viewport_yscale(); 84 84 for (c=0; c<5; ++c) { 85 85 for (i=0; i<HISTO_WIDTH; ++i) { … … 96 96 case 3: 97 97 x = 0; // count how many blocks we have done on the current row (to skip unused buffer space at end of each row) 98 for (i=(histogram_stage-1)*6; i<viewport_size *3; i+=HISTO_STEP_SIZE*6) {98 for (i=(histogram_stage-1)*6; i<viewport_size; i+=HISTO_STEP_SIZE*6) { 99 99 y = img[i+1]; 100 100 u = *(signed char*)(&img[i]); -
trunk/core/motion_detector.c
r1365 r1499 397 397 398 398 vp_h = vid_get_viewport_height(); 399 vp_w = vid_get_viewport_b uffer_width();399 vp_w = vid_get_viewport_byte_width() * vid_get_viewport_yscale(); 400 400 img += vid_get_viewport_image_offset(); // offset into viewport for when image size != viewport size (e.g. 16:9 image on 4:3 LCD) 401 401 402 x_step= vid_get_viewport_width()/motion_detector->columns;402 x_step=(vid_get_viewport_width()*3)/motion_detector->columns; 403 403 y_step=vp_h/motion_detector->rows; 404 404 … … 431 431 y_end=(row+1)*y_step*vp_w; 432 432 for(y=row*y_step*vp_w; y<y_end; y+=motion_detector->pixels_step*vp_w){ 433 for(x=col*x_step; x<x_end; x+=motion_detector->pixels_step ){433 for(x=col*x_step; x<x_end; x+=motion_detector->pixels_step*3){ 434 434 435 435 // ARRAY of UYVYYY values … … 439 439 default: 440 440 case MD_MEASURE_MODE_Y: 441 val = img[ (y+x)*3+ 1]; //Y441 val = img[y + x + 1]; //Y 442 442 break; 443 443 case MD_MEASURE_MODE_U: 444 val = img[ (y+(x&0xFFFFFFFE))*3]; //U444 val = img[y + (x&0xFFFFFFFE)]; //U 445 445 break; 446 446 case MD_MEASURE_MODE_V: 447 val = img[ (y+(x&0xFFFFFFFE))*3+ 2]; //V447 val = img[y + (x&0xFFFFFFFE) + 2]; //V 448 448 break; 449 449 450 450 case MD_MEASURE_MODE_R: 451 cy=img[ (y+x)*3+ 1];452 cv=img[ (y+(x&0xFFFFFFFE))*3+ 2];451 cy=img[y + x + 1]; 452 cv=img[y + (x&0xFFFFFFFE) + 2]; 453 453 val = clip(((cy<<12) + cv*5743 + 2048)>>12); // R 454 454 break; 455 455 456 456 case MD_MEASURE_MODE_G: 457 cy=img[ (y+x)*3+ 1];458 cu=img[ (y+(x&0xFFFFFFFE))*3];459 cv=img[ (y+(x&0xFFFFFFFE))*3+ 2];457 cy=img[y + x + 1]; 458 cu=img[y + (x&0xFFFFFFFE)]; 459 cv=img[y + (x&0xFFFFFFFE) + 2]; 460 460 val = clip(((cy<<12) - cu*1411 - cv*2925 + 2048)>>12); // G 461 461 break; 462 462 463 463 case MD_MEASURE_MODE_B: 464 cy=img[ (y+x)*3+ 1];465 cu=img[ (y+(x&0xFFFFFFFE))*3];464 cy=img[y + x + 1]; 465 cu=img[y + (x&0xFFFFFFFE)]; 466 466 val = clip(((cy<<12) + cu*7258 + 2048)>>12); // B 467 467 break; -
trunk/include/platform.h
r1352 r1499 215 215 long vid_get_bitmap_buffer_width(); 216 216 long vid_get_bitmap_buffer_height(); 217 217 218 void *vid_get_viewport_fb(); 218 219 void *vid_get_viewport_fb_d(); 219 220 void *vid_get_viewport_live_fb(); 221 220 222 void vid_bitmap_refresh(); 221 long vid_get_viewport_height();222 int vid_get_viewport_width();223 int vid_get_viewport_buffer_width();224 int vid_get_viewport_xoffset();225 int vid_get_viewport_yoffset();226 int vid_get_viewport_image_offset();227 int vid_get_viewport_row_offset();228 223 void vid_turn_off_updates(); 229 224 void vid_turn_on_updates(); 225 226 // These define the viewport dimensions both physically and in terms of the CHDK co-ordinate system 227 // CHDK works in a 360x240 screen dimension / co-ordinate system 228 extern long vid_get_viewport_height(); // Viewport height in CHDK screen pixels 229 extern int vid_get_viewport_width(); // Viewport width in CHDK screen pixels 230 extern int vid_get_viewport_xoffset(); // X offset of viewport edge relative to LCD screen (in CHDK screen pixels) 231 extern int vid_get_viewport_yoffset(); // Y offset of viewport top relative to LCD screen (in CHDK screen pixels) 232 extern int vid_get_viewport_byte_width(); // Physical width of viewport row in bytes 233 extern int vid_get_viewport_yscale(); // Y multiplier for cameras with 480 pixel high viewports (CHDK code assumes 240) 234 extern int vid_get_viewport_image_offset(); // Byte offset from start of viewport memory to first displayed pixel 235 extern int vid_get_viewport_row_offset(); // Difference between physical width of viewport and displayed width (in bytes) 236 230 237 231 238 // PTP Live View functions … … 486 493 void reverse_bytes_order2(char* from, char* to, int count); 487 494 // convert old version calls to new version (to minimise code changes) 488 #define reverse_bytes_order(start, count)reverse_bytes_order2(start,start,count)495 #define reverse_bytes_order(start, count) reverse_bytes_order2(start,start,count) 489 496 void save_ext_for_dng(void); 490 497 void change_ext_to_dng(void); -
trunk/platform/g12/lib.c
r1430 r1499 96 96 long vid_get_bitmap_buffer_height() { return 270; } 97 97 98 int vid_get_viewport_buffer_width() { return 720; } // G12 - viewport is actually 480 high, CHDK not set up for this so we skip every 2nd row 98 // Y multiplier for cameras with 480 pixel high viewports (CHDK code assumes 240) 99 int vid_get_viewport_yscale() { 100 return 2; // G12 viewport is 480 pixels high 101 } 99 102 100 103 int vid_get_viewport_width() … … 128 131 static long vp_h[5] = { 0, 30, 13, 0, 0 }; 129 132 return vp_h[shooting_get_prop(PROPCASE_ASPECT_RATIO)]; 130 }131 132 // viewport image offset - used when image size != viewport size (zebra, histogram, motion detect & edge overlay)133 // returns the byte offset into the viewport buffer where the image pixels start (to skip any black borders)134 int vid_get_viewport_image_offset() {135 return (vid_get_viewport_yoffset() * vid_get_viewport_buffer_width() + vid_get_viewport_xoffset()) * 3;136 }137 138 // viewport image offset - used when image size != viewport size (zebra, histogram, motion detect & edge overlay)139 // returns the byte offset to skip at the end of a viewport buffer row to get to the next row.140 int vid_get_viewport_row_offset() {141 return (vid_get_viewport_buffer_width() - vid_get_viewport_width()) * 3;142 133 } 143 134 -
trunk/platform/generic/wrappers.c
r1457 r1499 1166 1166 } 1167 1167 1168 // same as viewport width for most cameras, override in platform/sub/lib.c as needed 1169 int __attribute__((weak)) vid_get_viewport_buffer_width() { 1170 return vid_get_viewport_width(); 1168 // Physical width of viewport row in bytes 1169 int __attribute__((weak)) vid_get_viewport_byte_width() { 1170 return 720 * 6 / 4; // For most cameras viewport is 720 pixels wide, each group of 4 pixels uses 6 bytes (UYVYYY) 1171 } 1172 1173 // Y multiplier for cameras with 480 pixel high viewports (CHDK code assumes 240) 1174 int __attribute__((weak)) vid_get_viewport_yscale() { 1175 return 1; // For most cameras viewport is 240 pixels high 1171 1176 } 1172 1177 … … 1184 1189 // returns the byte offset into the viewport buffer where the image pixels start (to skip any black borders) 1185 1190 // see G12 port for sample implementation 1186 int __attribute__((weak))vid_get_viewport_image_offset() {1187 return 0;1191 int vid_get_viewport_image_offset() { 1192 return (vid_get_viewport_yoffset() * vid_get_viewport_byte_width() * vid_get_viewport_yscale()) + (vid_get_viewport_xoffset() * 3); 1188 1193 } 1189 1194 … … 1191 1196 // returns the byte offset to skip at the end of a viewport buffer row to get to the next row. 1192 1197 // see G12 port for sample implementation 1193 int __attribute__((weak))vid_get_viewport_row_offset() {1194 return 0;1198 int vid_get_viewport_row_offset() { 1199 return (vid_get_viewport_byte_width() * vid_get_viewport_yscale()) - (vid_get_viewport_width() * 3); 1195 1200 } 1196 1201 -
trunk/platform/ixus1000_sd4500/sub/100d/lib.c
r1385 r1499 122 122 // begin 16:9 support 123 123 124 int vid_get_viewport_buffer_width() { return 480; } 124 // Physical width of viewport row in bytes 125 int vid_get_viewport_byte_width() { 126 return 960 * 6 / 4; // IXUS 1000 - wide screen LCD is 960 pixels wide, each group of 4 pixels uses 6 bytes (UYVYYY) 127 } 125 128 126 129 int vid_get_viewport_width() … … 144 147 } 145 148 146 int vid_get_viewport_image_offset() {147 return (vid_get_viewport_yoffset() * vid_get_viewport_buffer_width() + vid_get_viewport_xoffset()) * 3;148 }149 150 151 int vid_get_viewport_row_offset() {152 return (vid_get_viewport_buffer_width() - vid_get_viewport_width()) * 3;153 }154 155 156 157 149 // end 16:9 support 158 150 -
trunk/platform/ixus1000_sd4500/sub/100f/lib.c
r1385 r1499 162 162 } 163 163 164 // begin 16:9 support 165 166 // Physical width of viewport row in bytes 167 int vid_get_viewport_byte_width() { 168 return 960 * 6 / 4; // IXUS 1000 - wide screen LCD is 960 pixels wide, each group of 4 pixels uses 6 bytes (UYVYYY) 169 } 164 170 165 171 int vid_get_viewport_width() 166 172 { 167 //return ((mode_get()&MODE_MASK) == MODE_VIDEO_STD ||(mode_get()&MODE_MASK) == MODE_PLAY)?480:320; 168 return 480; // as in sd980 169 //return 360; // stays at 360 as IN SD990 170 } 173 extern int kbd_debug1; 174 //kbd_debug1 = mode_get(); 175 if (movie_status > 1){return 480;} 176 if (shooting_get_prop(PROPCASE_ASPECT_RATIO) == 1 ) // on 16:9 shoot mode its 1.switch to video is 100 177 return 480; 178 else 179 return 360; 180 } 181 182 int vid_get_viewport_xoffset() 183 { 184 if (movie_status > 1){return 0;} 185 if (shooting_get_prop(PROPCASE_ASPECT_RATIO) == 1 || ((mode_get()&MODE_MASK)== 100 )) 186 return 0; 187 else 188 return 60; 189 } 190 191 // end 16:9 support 171 192 172 193 long vid_get_viewport_height() -
trunk/platform/ixus200_sd980/sub/101c/lib.c
r1212 r1499 50 50 long vid_get_viewport_height() { return 240; } 51 51 52 int vid_get_viewport_buffer_width() { return 480; } 52 // Physical width of viewport row in bytes 53 int vid_get_viewport_byte_width() { 54 return 960 * 6 / 4; // IXUS 200 - wide screen LCD is 960 pixels wide, each group of 4 pixels uses 6 bytes (UYVYYY) 55 } 53 56 54 57 int vid_get_viewport_width() … … 66 69 else 67 70 return 60; 68 }69 70 int vid_get_viewport_image_offset() {71 return (vid_get_viewport_yoffset() * vid_get_viewport_buffer_width() + vid_get_viewport_xoffset()) * 3;72 }73 74 int vid_get_viewport_row_offset() {75 return (vid_get_viewport_buffer_width() - vid_get_viewport_width()) * 3;76 71 } 77 72 -
trunk/platform/ixus200_sd980/sub/101d/lib.c
r1376 r1499 50 50 long vid_get_viewport_height() { return 240; } 51 51 52 int vid_get_viewport_buffer_width() { return 480; } 52 // Physical width of viewport row in bytes 53 int vid_get_viewport_byte_width() { 54 return 960 * 6 / 4; // IXUS 200 - wide screen LCD is 960 pixels wide, each group of 4 pixels uses 6 bytes (UYVYYY) 55 } 53 56 54 57 int vid_get_viewport_width() … … 66 69 else 67 70 return 60; 68 }69 70 int vid_get_viewport_image_offset() {71 return (vid_get_viewport_yoffset() * vid_get_viewport_buffer_width() + vid_get_viewport_xoffset()) * 3;72 }73 74 int vid_get_viewport_row_offset() {75 return (vid_get_viewport_buffer_width() - vid_get_viewport_width()) * 3;76 71 } 77 72 -
trunk/platform/ixus220_elph300hs/lib.c
r1448 r1499 86 86 return vp_h[shooting_get_prop(PROPCASE_ASPECT_RATIO)]; 87 87 } 88 89 // viewport image offset - used when image size != viewport size (zebra, histogram, motion detect & edge overlay)90 // returns the byte offset into the viewport buffer where the image pixels start (to skip any black borders)91 int vid_get_viewport_image_offset() {92 return (vid_get_viewport_yoffset() * vid_get_viewport_buffer_width() + vid_get_viewport_xoffset()) * 3;93 }94 95 // viewport image offset - used when image size != viewport size (zebra, histogram, motion detect & edge overlay)96 // returns the byte offset to skip at the end of a viewport buffer row to get to the next row.97 int vid_get_viewport_row_offset() {98 return (vid_get_viewport_buffer_width() - vid_get_viewport_width()) * 3;99 } -
trunk/platform/ixus310_elph500hs/lib.c
r1430 r1499 85 85 long vid_get_bitmap_buffer_height() { return 270; } 86 86 87 int vid_get_viewport_buffer_width() { return 960; } // IXUS 310 - wide screen LCD (viewport is actually 480 high, CHDK not set up for this so we skip every 2nd row) 87 // Physical width of viewport row in bytes 88 int vid_get_viewport_byte_width() { 89 return 960 * 6 / 4; // IXUS 310 - wide screen LCD is 960 pixels wide, each group of 4 pixels uses 6 bytes (UYVYYY) 90 } 91 92 // Y multiplier for cameras with 480 pixel high viewports (CHDK code assumes 240) 93 int vid_get_viewport_yscale() { 94 return 2; // IXUS 310 viewport is 480 pixels high 95 } 88 96 89 97 int vid_get_viewport_width() … … 104 112 105 113 long vid_get_viewport_height(){ return 240; } 106 107 // viewport image offset - used when image size != viewport size (zebra, histogram, motion detect & edge overlay)108 // returns the byte offset into the viewport buffer where the image pixels start (to skip any black borders)109 int vid_get_viewport_image_offset() {110 return vid_get_viewport_xoffset() * 3;111 }112 113 // viewport image offset - used when image size != viewport size (zebra, histogram, motion detect & edge overlay)114 // returns the byte offset to skip at the end of a viewport buffer row to get to the next row.115 int vid_get_viewport_row_offset() {116 return (vid_get_viewport_buffer_width() - vid_get_viewport_width()) * 3;117 }118 114 119 115 // Functions for PTP Live View system -
trunk/platform/sx220hs/lib.c
r1285 r1499 66 66 long vid_get_bitmap_buffer_height() { return 270; } 67 67 68 int vid_get_viewport_buffer_width() { return 960; } 68 // Physical width of viewport row in bytes 69 int vid_get_viewport_byte_width() { 70 return 960 * 6 / 4; // SX220HS - wide screen LCD is 960 pixels wide, each group of 4 pixels uses 6 bytes (UYVYYY) 71 } 69 72 73 // Y multiplier for cameras with 480 pixel high viewports (CHDK code assumes 240) 74 int vid_get_viewport_yscale() { 75 return 2; // SX220HS viewport is 480 pixels high 76 } 70 77 71 78 … … 86 93 } 87 94 88 long vid_get_viewport_height() 89 { 90 // viewport height table for each image size 91 // 0 = 4:3, 1 = 16:9, 2 = 3:2, 3 = 1:1 92 static long vp_h[4] = { 240, 240, 240, 240 }; 93 return vp_h[shooting_get_prop(PROPCASE_ASPECT_RATIO)]; 94 } 95 96 int vid_get_viewport_yoffset() 97 { 98 // viewport height offset table for each image size 99 // 0 = 4:3, 1 = 16:9, 2 = 3:2, 3 = 1:1 100 static long vp_h[4] = { 0, 0, 0, 0 }; 101 return vp_h[shooting_get_prop(PROPCASE_ASPECT_RATIO)]; 102 } 103 104 // viewport image offset - used when image size != viewport size (zebra, histogram, motion detect & edge overlay) 105 // returns the byte offset into the viewport buffer where the image pixels start (to skip any black borders) 106 int vid_get_viewport_image_offset() { 107 return (vid_get_viewport_yoffset() * vid_get_viewport_buffer_width() + vid_get_viewport_xoffset()) * 3; 108 } 109 110 // viewport image offset - used when image size != viewport size (zebra, histogram, motion detect & edge overlay) 111 // returns the byte offset to skip at the end of a viewport buffer row to get to the next row. 112 int vid_get_viewport_row_offset() { 113 return (vid_get_viewport_buffer_width() - vid_get_viewport_width()) * 3; 114 } 95 long vid_get_viewport_height(){ return 240; } -
trunk/platform/sx230hs/lib.c
r1331 r1499 66 66 long vid_get_bitmap_buffer_height() { return 270; } 67 67 68 int vid_get_viewport_buffer_width() { return 960; } 68 // Physical width of viewport row in bytes 69 int vid_get_viewport_byte_width() { 70 return 960 * 6 / 4; // SX230HS - wide screen LCD is 960 pixels wide, each group of 4 pixels uses 6 bytes (UYVYYY) 71 } 69 72 73 // Y multiplier for cameras with 480 pixel high viewports (CHDK code assumes 240) 74 int vid_get_viewport_yscale() { 75 return 2; // SX230HS viewport is 480 pixels high 76 } 70 77 71 78 … … 86 93 } 87 94 88 long vid_get_viewport_height() 89 { 90 // viewport height table for each image size 91 // 0 = 4:3, 1 = 16:9, 2 = 3:2, 3 = 1:1 92 static long vp_h[4] = { 240, 240, 240, 240 }; 93 return vp_h[shooting_get_prop(PROPCASE_ASPECT_RATIO)]; 94 } 95 96 int vid_get_viewport_yoffset() 97 { 98 // viewport height offset table for each image size 99 // 0 = 4:3, 1 = 16:9, 2 = 3:2, 3 = 1:1 100 static long vp_h[4] = { 0, 0, 0, 0 }; 101 return vp_h[shooting_get_prop(PROPCASE_ASPECT_RATIO)]; 102 } 103 104 // viewport image offset - used when image size != viewport size (zebra, histogram, motion detect & edge overlay) 105 // returns the byte offset into the viewport buffer where the image pixels start (to skip any black borders) 106 int vid_get_viewport_image_offset() { 107 return (vid_get_viewport_yoffset() * vid_get_viewport_buffer_width() + vid_get_viewport_xoffset()) * 3; 108 } 109 110 // viewport image offset - used when image size != viewport size (zebra, histogram, motion detect & edge overlay) 111 // returns the byte offset to skip at the end of a viewport buffer row to get to the next row. 112 int vid_get_viewport_row_offset() { 113 return (vid_get_viewport_buffer_width() - vid_get_viewport_width()) * 3; 114 } 95 long vid_get_viewport_height(){ return 240; } -
trunk/platform/sx30/lib.c
r1430 r1499 92 92 long vid_get_bitmap_buffer_height() { return 270; } 93 93 94 int vid_get_viewport_width() { return 360; }95 96 94 long vid_get_viewport_height() 97 95 { … … 106 104 return 30; 107 105 return 0; 108 }109 110 // viewport image offset - used when image size != viewport size (zebra, histogram, motion detect & edge overlay)111 // returns the byte offset into the viewport buffer where the image pixels start (to skip any black borders)112 int vid_get_viewport_image_offset() {113 return (vid_get_viewport_yoffset() * vid_get_viewport_buffer_width()) * 3;114 106 } 115 107 -
trunk/platform/sx40hs/lib.c
r1430 r1499 93 93 long vid_get_bitmap_buffer_height() { return 270; } 94 94 95 int vid_get_viewport_buffer_width() { return 360; }96 97 95 int vid_get_viewport_width() 98 96 { … … 125 123 static long vp_h[5] = { 0, 30, 13, 0 }; 126 124 return vp_h[shooting_get_prop(PROPCASE_ASPECT_RATIO)]; 127 }128 129 // viewport image offset - used when image size != viewport size (zebra, histogram, motion detect & edge overlay)130 // returns the byte offset into the viewport buffer where the image pixels start (to skip any black borders)131 int vid_get_viewport_image_offset() {132 return (vid_get_viewport_yoffset() * vid_get_viewport_buffer_width() + vid_get_viewport_xoffset()) * 3;133 }134 135 // viewport image offset - used when image size != viewport size (zebra, histogram, motion detect & edge overlay)136 // returns the byte offset to skip at the end of a viewport buffer row to get to the next row.137 int vid_get_viewport_row_offset() {138 return (vid_get_viewport_buffer_width() - vid_get_viewport_width()) * 3;139 125 } 140 126
Note: See TracChangeset
for help on using the changeset viewer.