Changeset 1828
- Timestamp:
- 04/25/12 01:20:34 (13 months ago)
- Location:
- trunk
- Files:
-
- 25 edited
-
core/edgeoverlay.c (modified) (9 diffs)
-
core/luascript.c (modified) (1 diff)
-
core/module_exportlist.c (modified) (1 diff)
-
core/motion_detector.c (modified) (1 diff)
-
core/zebra.c (modified) (2 diffs, 1 prop)
-
include/platform.h (modified) (2 diffs)
-
platform/g12/lib.c (modified) (2 diffs)
-
platform/g1x/lib.c (modified) (2 diffs)
-
platform/generic/wrappers.c (modified) (2 diffs)
-
platform/ixus1000_sd4500/sub/100d/lib.c (modified) (2 diffs)
-
platform/ixus1000_sd4500/sub/100f/lib.c (modified) (1 diff)
-
platform/ixus1000_sd4500/sub/102b/lib.c (modified) (2 diffs)
-
platform/ixus200_sd980/sub/101c/lib.c (modified) (3 diffs)
-
platform/ixus200_sd980/sub/101d/lib.c (modified) (3 diffs)
-
platform/ixus310_elph500hs/lib.c (modified) (3 diffs)
-
platform/sx220hs/lib.c (modified) (1 diff)
-
platform/sx220hs/sub/100a/lib.c (modified) (2 diffs)
-
platform/sx220hs/sub/101a/lib.c (modified) (2 diffs)
-
platform/sx220hs/sub/101b/lib.c (modified) (2 diffs)
-
platform/sx230hs/lib.c (modified) (1 diff)
-
platform/sx230hs/sub/100c/lib.c (modified) (2 diffs)
-
platform/sx230hs/sub/101a/lib.c (modified) (2 diffs)
-
platform/sx230hs/sub/101b/lib.c (modified) (2 diffs)
-
platform/sx30/lib.c (modified) (3 diffs)
-
platform/sx40hs/lib.c (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/core/edgeoverlay.c
r1719 r1828 73 73 viewport_yscale = vid_get_viewport_yscale(); 74 74 75 viewport_xoffset = vid_get_viewport_ xoffset();76 viewport_yoffset = vid_get_viewport_ yoffset();75 viewport_xoffset = vid_get_viewport_display_xoffset(); 76 viewport_yoffset = vid_get_viewport_display_yoffset(); 77 77 78 78 slice_height = viewport_height / EDGE_SLICES; … … 313 313 int conv1, conv2; 314 314 315 const int y_min = viewport_yoffset + camera_screen.edge_hmargin+ slice *slice_height; 316 const int y_max = viewport_yoffset + camera_screen.edge_hmargin+(slice+1)*slice_height; 317 const int x_min = viewport_xoffset*3 + 6; 318 const int x_max = (viewport_width + viewport_xoffset - 2) * 3; 315 const int y_min = camera_screen.edge_hmargin+ slice *slice_height; 316 const int y_max = camera_screen.edge_hmargin+(slice+1)*slice_height; 317 const int x_min = 6; 318 const int x_max = (viewport_width - 2) * 3; 319 320 img += vid_get_viewport_image_offset(); // offset into viewport for when image size != viewport size (e.g. 16:9 image on 4:3 LCD) 319 321 320 322 xoffset = 0; … … 410 412 if (conv1 + conv2 > conf.edge_overlay_thresh) 411 413 { 412 bv_set(edgebuf, (y- viewport_yoffset-camera_screen.edge_hmargin)*viewport_width + xdiv3, 1);414 bv_set(edgebuf, (y-camera_screen.edge_hmargin)*viewport_width + xdiv3, 1); 413 415 } 414 416 … … 440 442 if (conv1 + conv2 > conf.edge_overlay_thresh) 441 443 { 442 bv_set(edgebuf, (y- viewport_yoffset-camera_screen.edge_hmargin)*viewport_width + xdiv3+1, 1);444 bv_set(edgebuf, (y-camera_screen.edge_hmargin)*viewport_width + xdiv3+1, 1); 443 445 } 444 446 } // for x … … 516 518 517 519 const color cl = econf.edge_overlay_color; 518 const int y_slice_min = viewport_yoffset+camera_screen.edge_hmargin+ slice *slice_height;519 const int y_slice_max = viewport_yoffset+camera_screen.edge_hmargin+(slice+1)*slice_height;520 const int y_min = viewport_yoffset+camera_screen.edge_hmargin;521 const int y_max = viewport_yoffset+camera_screen.edge_hmargin+viewport_height;522 const int x_min = viewport_xoffset+2;523 const int x_max = (viewport_width + viewport_xoffset- 2);520 const int y_slice_min = camera_screen.edge_hmargin+ slice *slice_height; 521 const int y_slice_max = camera_screen.edge_hmargin+(slice+1)*slice_height; 522 const int y_min = camera_screen.edge_hmargin; 523 const int y_max = camera_screen.edge_hmargin+viewport_height; 524 const int x_min = 2; 525 const int x_max = (viewport_width - 2); 524 526 525 527 if( !is_buffer_ready() ) return 0; … … 544 546 // If there is no edge based on the newest data, but there is one painted on the screen 545 547 // from previous calls, delete it from the screen. 546 const int aspect_correct_x_off = x_off;547 548 const int bEdge = bv_get(edgebuf, y_edgebuf + x); 548 const int bDraw = bEdge || (draw_get_pixel( aspect_correct_x_off, y_off) == econf.edge_overlay_color);549 const int bDraw = bEdge || (draw_get_pixel(x_off+viewport_xoffset, y_off+viewport_yoffset) == econf.edge_overlay_color); 549 550 const color cl = bEdge ? econf.edge_overlay_color : 0; 550 551 if (bEdge || bDraw) 551 draw_pixel( aspect_correct_x_off, y_off, cl);552 draw_pixel(x_off+viewport_xoffset, y_off+viewport_yoffset, cl); 552 553 553 554 } … … 572 573 for (x = x_min_c; x < x_max_c; ++x) 573 574 { 574 const int aspect_correct_x = x;575 if (draw_get_pixel( aspect_correct_x, y) == cl) // if there is an edge drawn on the screen but there is no edge there based on the newest data, delete it from the screen576 draw_pixel( aspect_correct_x, y, 0 );575 // if there is an edge drawn on the screen but there is no edge there based on the newest data, delete it from the screen 576 if (draw_get_pixel(x+viewport_xoffset, y+viewport_yoffset) == cl) 577 draw_pixel(x+viewport_xoffset, y+viewport_yoffset, 0 ); 577 578 } 578 579 } … … 590 591 for (x = x_min; x < x_max; ++x) 591 592 { 592 const int aspect_correct_x = x;593 if (draw_get_pixel( aspect_correct_x, y) == cl) // if there is an edge drawn on the screen but there is no edge there based on the newest data, delete it from the screen594 draw_pixel( aspect_correct_x, y, 0 );593 // if there is an edge drawn on the screen but there is no edge there based on the newest data, delete it from the screen 594 if (draw_get_pixel(x+viewport_xoffset, y+viewport_yoffset) == cl) 595 draw_pixel(x+viewport_xoffset, y+viewport_yoffset, 0 ); 595 596 } 596 597 } … … 632 633 633 634 634 635 635 // Main edge overlay function. 636 636 // It works by detecting edges using the Sobel operator -
trunk/core/luascript.c
r1719 r1828 1759 1759 1760 1760 // Populate the above structure with the current default details 1761 vid_info.vp_xoffset = vid_get_viewport_ xoffset_proper();1762 vid_info.vp_yoffset = vid_get_viewport_ yoffset_proper();1761 vid_info.vp_xoffset = vid_get_viewport_display_xoffset_proper(); 1762 vid_info.vp_yoffset = vid_get_viewport_display_yoffset_proper(); 1763 1763 vid_info.vp_width = vid_get_viewport_width_proper(); 1764 1764 vid_info.vp_height = vid_get_viewport_height_proper(); -
trunk/core/module_exportlist.c
r1719 r1828 212 212 vid_get_viewport_width, 213 213 vid_get_viewport_byte_width, 214 vid_get_viewport_ xoffset,215 vid_get_viewport_ yoffset,214 vid_get_viewport_display_xoffset, 215 vid_get_viewport_display_yoffset, 216 216 vid_get_viewport_image_offset, 217 217 vid_get_viewport_row_offset, -
trunk/core/motion_detector.c
r1693 r1828 553 553 } 554 554 555 xoffset = vid_get_viewport_ xoffset(); // used when image size != viewport size556 yoffset = vid_get_viewport_ yoffset(); // used when image size != viewport size555 xoffset = vid_get_viewport_display_xoffset(); // used when image size != viewport size 556 yoffset = vid_get_viewport_display_yoffset(); // used when image size != viewport size 557 557 558 558 x_step=(camera_screen.width-xoffset*2)/motion_detector->columns; -
trunk/core/zebra.c
- Property svn:eol-style set to native
r1621 r1828 86 86 // and image aspect ratio provided the vid_get_viewport_height(), 87 87 // vid_get_viewport_width(), vid_get_viewport_image_offset(), 88 // vid_get_viewport_row_offset(), vid_get_viewport_ xoffset(),89 // and vid_get_viewport_ yoffset() functions have been correctly88 // vid_get_viewport_row_offset(), vid_get_viewport_display_xoffset(), 89 // and vid_get_viewport_display_yoffset() functions have been correctly 90 90 // implemented for the camera. 91 91 … … 304 304 viewport_image_offset = vid_get_viewport_image_offset(); 305 305 viewport_row_offset = vid_get_viewport_row_offset(); 306 viewport_xoffset = vid_get_viewport_ xoffset();307 viewport_yoffset = vid_get_viewport_ yoffset();306 viewport_xoffset = vid_get_viewport_display_xoffset(); 307 viewport_yoffset = vid_get_viewport_display_yoffset(); 308 308 309 309 // if not in no-zebra phase of blink mode zebra, draw zebra to buf[] -
trunk/include/platform.h
r1693 r1828 230 230 extern long vid_get_viewport_height(); // Viewport height in CHDK screen pixels 231 231 extern int vid_get_viewport_width(); // Viewport width in CHDK screen pixels 232 extern int vid_get_viewport_xoffset(); // X offset of viewport edge relative to LCD screen (in CHDK screen pixels) 233 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_xoffset(); // X offset of viewport edge relative to the viewport buffer (in CHDK screen pixels) 233 extern int vid_get_viewport_yoffset(); // Y offset of viewport top relative to the viewport buffer (in CHDK screen pixels) 234 extern int vid_get_viewport_display_xoffset(); // X offset of viewport edge relative to LCD screen (in CHDK screen pixels) 235 extern int vid_get_viewport_display_yoffset(); // Y offset of viewport top relative to LCD screen (in CHDK screen pixels) 234 236 extern int vid_get_viewport_byte_width(); // Physical width of viewport row in bytes 235 237 extern int vid_get_viewport_yscale(); // Y multiplier for cameras with 480 pixel high viewports (CHDK code assumes 240) … … 240 242 // PTP Live View functions 241 243 // These functions return actual size/offset in pixels of the viewport and bitmap buffers 242 extern int vid_get_viewport_ xoffset_proper();// X Offset (for variable image size)243 extern int vid_get_viewport_ yoffset_proper();// Y Offset (for variable image size)244 extern int vid_get_viewport_display_xoffset_proper(); // X Offset (for variable image size) 245 extern int vid_get_viewport_display_yoffset_proper(); // Y Offset (for variable image size) 244 246 extern int vid_get_viewport_width_proper(); // Visible viewport width (for variable image size) 245 247 extern int vid_get_viewport_height_proper(); // Visible viewport height (for variable image size) -
trunk/platform/g12/lib.c
r1527 r1828 77 77 void *vid_get_viewport_live_fb() 78 78 { 79 if (MODE_IS_VIDEO(mode_get())) 80 return viewport_buffers[0]; // Video only seems to use the first viewport buffer. 81 79 82 // Hopefully return the most recently used viewport buffer so that motion detect, histogram, zebra and edge overly are using current image data 80 83 return viewport_buffers[(active_viewport_buffer-1)&3]; … … 98 101 int vid_get_viewport_width() 99 102 { 100 // viewport width table for each image size 101 // 0 = 4:3, 1 = 16:9, 2 = 3:2, 3 = 1:1, 4 = 4:5 102 static long vp_w[5] = { 360, 360, 360, 272, 216 }; 103 return vp_w[shooting_get_prop(PROPCASE_ASPECT_RATIO)]; 103 if (shooting_get_prop(PROPCASE_SHOOTING_MODE) == 16908) // Stitch mode 104 { 105 return 180; 106 } 107 else 108 { 109 // viewport width table for each image size 110 // 0 = 4:3, 1 = 16:9, 2 = 3:2, 3 = 1:1, 4 = 4:5 111 static long vp_w[5] = { 360, 360, 360, 272, 216 }; 112 return vp_w[shooting_get_prop(PROPCASE_ASPECT_RATIO)]; 113 } 104 114 } 105 115 106 116 int vid_get_viewport_xoffset() 107 117 { 108 // viewport width offset table for each image size 109 // 0 = 4:3, 1 = 16:9, 2 = 3:2, 3 = 1:1, 4 = 4:5 110 static long vp_w[5] = { 0, 0, 0, 44, 72 }; // should all be even values for edge overlay 111 return vp_w[shooting_get_prop(PROPCASE_ASPECT_RATIO)]; 118 if (shooting_get_prop(PROPCASE_SHOOTING_MODE) == 16908) // Stitch mode 119 { 120 return 0; 121 } 122 else 123 { 124 // viewport width offset table for each image size 125 // 0 = 4:3, 1 = 16:9, 2 = 3:2, 3 = 1:1, 4 = 4:5 126 static long vp_w[5] = { 0, 0, 0, 44, 72 }; // should all be even values for edge overlay 127 return vp_w[shooting_get_prop(PROPCASE_ASPECT_RATIO)]; 128 } 129 } 130 131 int vid_get_viewport_display_xoffset() 132 { 133 if (shooting_get_prop(PROPCASE_SHOOTING_MODE) == 16908) // Stitch mode 134 { 135 if (shooting_get_prop(PROPCASE_STITCH_DIRECTION) == 0) // Direction check 136 if (shooting_get_prop(PROPCASE_STITCH_SEQUENCE) == 0) // Shot already taken? 137 return 40; 138 else 139 return 140; 140 else 141 if (shooting_get_prop(PROPCASE_STITCH_SEQUENCE) == 0) // Shot already taken? 142 return 140; 143 else 144 return 40; 145 } 146 else 147 { 148 return vid_get_viewport_xoffset(); 149 } 112 150 } 113 151 114 152 long vid_get_viewport_height() 115 153 { 116 // viewport height table for each image size 117 // 0 = 4:3, 1 = 16:9, 2 = 3:2, 3 = 1:1, 4 = 4:5 118 static long vp_h[5] = { 240, 180, 214, 240, 240 }; 119 return vp_h[shooting_get_prop(PROPCASE_ASPECT_RATIO)]; 154 if (shooting_get_prop(PROPCASE_SHOOTING_MODE) == 16908) // Stitch mode 155 { 156 return 120; 157 } 158 else 159 { 160 // viewport height table for each image size 161 // 0 = 4:3, 1 = 16:9, 2 = 3:2, 3 = 1:1, 4 = 4:5 162 static long vp_h[5] = { 240, 180, 214, 240, 240 }; 163 return vp_h[shooting_get_prop(PROPCASE_ASPECT_RATIO)]; 164 } 120 165 } 121 166 122 167 int vid_get_viewport_yoffset() 123 168 { 124 // viewport height offset table for each image size 125 // 0 = 4:3, 1 = 16:9, 2 = 3:2, 3 = 1:1, 4 = 4:5 126 static long vp_h[5] = { 0, 30, 13, 0, 0 }; 127 return vp_h[shooting_get_prop(PROPCASE_ASPECT_RATIO)]; 169 if (shooting_get_prop(PROPCASE_SHOOTING_MODE) == 16908) // Stitch mode 170 { 171 return 0; 172 } 173 else 174 { 175 // viewport height offset table for each image size 176 // 0 = 4:3, 1 = 16:9, 2 = 3:2, 3 = 1:1, 4 = 4:5 177 static long vp_h[5] = { 0, 30, 13, 0, 0 }; 178 return vp_h[shooting_get_prop(PROPCASE_ASPECT_RATIO)]; 179 } 180 } 181 182 int vid_get_viewport_display_yoffset() 183 { 184 if (shooting_get_prop(PROPCASE_SHOOTING_MODE) == 16908) // Stitch mode 185 { 186 return 72; 187 } 188 else 189 { 190 return vid_get_viewport_yoffset(); 191 } 128 192 } 129 193 130 194 // Functions for PTP Live View system 131 195 132 int vid_get_viewport_ xoffset_proper() { return vid_get_viewport_xoffset() * 2; }133 int vid_get_viewport_ yoffset_proper() { return vid_get_viewport_yoffset() * 2; }196 int vid_get_viewport_display_xoffset_proper() { return vid_get_viewport_display_xoffset() * 2; } 197 int vid_get_viewport_display_yoffset_proper() { return vid_get_viewport_display_yoffset() * 2; } 134 198 int vid_get_viewport_width_proper() { return vid_get_viewport_width() * 2; } 135 199 int vid_get_viewport_height_proper() { return vid_get_viewport_height() * 2; } -
trunk/platform/g1x/lib.c
r1810 r1828 76 76 void *vid_get_viewport_live_fb() 77 77 { 78 if (MODE_IS_VIDEO(mode_get()) || (movie_status==VIDEO_RECORD_IN_PROGRESS)) 79 return viewport_buffers[0]; // Video only seems to use the first viewport buffer. 80 78 81 // Hopefully return the most recently used viewport buffer so that motion detect, histogram, zebra and edge overly are using current image data 79 82 return viewport_buffers[(active_viewport_buffer-1)&3]; … … 97 100 int vid_get_viewport_width() 98 101 { 99 // viewport width table for each image size 100 // 0 = 4:3, 1 = 16:9, 2 = 3:2, 3 = 1:1, 4 = 4:5 101 static long vp_w[5] = { 360, 360, 360, 272, 216 }; 102 return vp_w[shooting_get_prop(PROPCASE_ASPECT_RATIO)]; 103 } 104 105 int vid_get_viewport_xoffset() 106 { 107 // viewport width offset table for each image size 108 // 0 = 4:3, 1 = 16:9, 2 = 3:2, 3 = 1:1, 4 = 4:5 109 static long vp_w[5] = { 0, 0, 0, 44, 72 }; // should all be even values for edge overlay 110 return vp_w[shooting_get_prop(PROPCASE_ASPECT_RATIO)]; 102 if (shooting_get_prop(PROPCASE_SHOOTING_MODE) == 16909) // Stitch mode 103 { 104 return 180; 105 } 106 else 107 { 108 // viewport width table for each image size 109 // 0 = 4:3, 1 = 16:9, 2 = 3:2, 3 = 1:1, 4 = 4:5 110 static long vp_w[5] = { 360, 360, 360, 272, 216 }; 111 return vp_w[shooting_get_prop(PROPCASE_ASPECT_RATIO)]; 112 } 113 } 114 115 int vid_get_viewport_display_xoffset() 116 { 117 if (shooting_get_prop(PROPCASE_SHOOTING_MODE) == 16909) // Stitch mode 118 { 119 if (shooting_get_prop(PROPCASE_STITCH_DIRECTION) == 0) // Direction check 120 if (shooting_get_prop(PROPCASE_STITCH_SEQUENCE) == 0) // Shot already taken? 121 return 40; 122 else 123 return 140; 124 else 125 if (shooting_get_prop(PROPCASE_STITCH_SEQUENCE) == 0) // Shot already taken? 126 return 140; 127 else 128 return 40; 129 } 130 else 131 { 132 // viewport width offset table for each image size 133 // 0 = 4:3, 1 = 16:9, 2 = 3:2, 3 = 1:1, 4 = 4:5 134 static long vp_w[5] = { 0, 0, 0, 44, 72 }; // should all be even values for edge overlay 135 return vp_w[shooting_get_prop(PROPCASE_ASPECT_RATIO)]; 136 } 111 137 } 112 138 113 139 long vid_get_viewport_height() 114 140 { 115 // viewport height table for each image size 116 // 0 = 4:3, 1 = 16:9, 2 = 3:2, 3 = 1:1, 4 = 4:5 117 static long vp_h[5] = { 240, 180, 214, 240, 240 }; 118 return vp_h[shooting_get_prop(PROPCASE_ASPECT_RATIO)]; 141 if (shooting_get_prop(PROPCASE_SHOOTING_MODE) == 16909) // Stitch mode 142 { 143 return 120; 144 } 145 else 146 { 147 // viewport height table for each image size 148 // 0 = 4:3, 1 = 16:9, 2 = 3:2, 3 = 1:1, 4 = 4:5 149 static long vp_h[5] = { 240, 180, 214, 240, 240 }; 150 return vp_h[shooting_get_prop(PROPCASE_ASPECT_RATIO)]; 151 } 119 152 } 120 153 121 154 int vid_get_viewport_yoffset() 122 155 { 123 // viewport height offset table for each image size 124 // 0 = 4:3, 1 = 16:9, 2 = 3:2, 3 = 1:1, 4 = 4:5 125 static long vp_h[5] = { 0, 30, 13, 0, 0 }; 126 return vp_h[shooting_get_prop(PROPCASE_ASPECT_RATIO)]; 156 if (shooting_get_prop(PROPCASE_SHOOTING_MODE) == 16909) // Stitch mode 157 { 158 return 0; 159 } 160 else 161 { 162 // viewport height offset table for each image size 163 // 0 = 4:3, 1 = 16:9, 2 = 3:2, 3 = 1:1, 4 = 4:5 164 static long vp_h[5] = { 0, 30, 13, 0, 0 }; 165 return vp_h[shooting_get_prop(PROPCASE_ASPECT_RATIO)]; 166 } 167 } 168 169 int vid_get_viewport_display_yoffset() 170 { 171 if (shooting_get_prop(PROPCASE_SHOOTING_MODE) == 16909) // Stitch mode 172 { 173 return 72; 174 } 175 else 176 { 177 // viewport width offset table for each image size 178 // 0 = 4:3, 1 = 16:9, 2 = 3:2, 3 = 1:1, 4 = 4:5 179 static long vp_h[5] = { 0, 30, 13, 0, 0 }; 180 return vp_h[shooting_get_prop(PROPCASE_ASPECT_RATIO)]; 181 } 127 182 } 128 183 129 184 // Functions for PTP Live View system 130 185 131 int vid_get_viewport_ xoffset_proper() { return vid_get_viewport_xoffset() * 2; }132 int vid_get_viewport_ yoffset_proper() { return vid_get_viewport_yoffset(); }186 int vid_get_viewport_display_xoffset_proper() { return vid_get_viewport_display_xoffset() * 2; } 187 int vid_get_viewport_display_yoffset_proper() { return vid_get_viewport_display_yoffset() * 2; } 133 188 int vid_get_viewport_width_proper() { return vid_get_viewport_width() * 2; } 134 189 int vid_get_viewport_height_proper() { return vid_get_viewport_height() * 2; } -
trunk/platform/generic/wrappers.c
r1689 r1828 1363 1363 } 1364 1364 1365 // viewport display x offset - used when image size != viewport size (zebra, histogram, motion detect & edge overlay) 1366 int __attribute__((weak)) vid_get_viewport_display_xoffset() { 1367 return vid_get_viewport_xoffset(); 1368 } 1369 1370 // viewport display y offset - used when image size != viewport size (zebra, histogram, motion detect & edge overlay) 1371 int __attribute__((weak)) vid_get_viewport_display_yoffset() { 1372 return vid_get_viewport_yoffset(); 1373 } 1374 1365 1375 // viewport image offset - used when image size != viewport size (zebra, histogram, motion detect & edge overlay) 1366 1376 // returns the byte offset into the viewport buffer where the image pixels start (to skip any black borders) … … 1488 1498 // Override as needed for camera specific variations (see G12/SX30/IXUS310/SX130IS for working examples) 1489 1499 1490 int __attribute__((weak)) vid_get_viewport_ xoffset_proper() { return 0; }1491 int __attribute__((weak)) vid_get_viewport_ yoffset_proper() { return 0; }1500 int __attribute__((weak)) vid_get_viewport_display_xoffset_proper() { return vid_get_viewport_display_xoffset(); } 1501 int __attribute__((weak)) vid_get_viewport_display_yoffset_proper() { return vid_get_viewport_display_yoffset(); } 1492 1502 int __attribute__((weak)) vid_get_viewport_width_proper() { return 720; } 1493 1503 int __attribute__((weak)) vid_get_viewport_height_proper() { return 240; } -
trunk/platform/ixus1000_sd4500/sub/100d/lib.c
r1527 r1828 77 77 78 78 // Live picture buffer (shoot half-pressed) //ASM1989 ixus1000 79 //void *vid_get_viewport_fb()80 //{81 // return (void*)0x40587700; // found by search for VRAM Address @FFB4CB2C82 //}83 84 79 void *vid_get_viewport_fb() 85 80 { 86 if ((mode_get()&MODE_MASK) == MODE_REC)87 return (void*)(0x40587700-vid_get_viewport_xoffset()*3);88 81 return (void*)0x40587700; // found by search for VRAM Address @FFB4CB2C 89 82 } … … 115 108 } 116 109 117 int vid_get_viewport_ xoffset()110 int vid_get_viewport_display_xoffset() 118 111 { 119 112 if (movie_status > 1){return 0;} -
trunk/platform/ixus1000_sd4500/sub/100f/lib.c
r1527 r1828 158 158 } 159 159 160 int vid_get_viewport_ xoffset()160 int vid_get_viewport_display_xoffset() 161 161 { 162 162 if (movie_status > 1){return 0;} -
trunk/platform/ixus1000_sd4500/sub/102b/lib.c
r1789 r1828 77 77 78 78 // Live picture buffer (shoot half-pressed) //ASM1989 ixus1000 79 //void *vid_get_viewport_fb()80 //{81 // return (void*)0x40587700; // found by search for VRAM Address @FFB4CB2C82 //}83 84 79 void *vid_get_viewport_fb() 85 80 { 86 if ((mode_get()&MODE_MASK) == MODE_REC)87 return (void*)(0x40587700-vid_get_viewport_xoffset()*3);88 81 return (void*)0x40587700; // found by search for VRAM Address @FFB4CB2C 89 82 } … … 115 108 } 116 109 117 int vid_get_viewport_ xoffset()110 int vid_get_viewport_display_xoffset() 118 111 { 119 112 if (movie_status > 1){return 0;} -
trunk/platform/ixus200_sd980/sub/101c/lib.c
r1527 r1828 17 17 unsigned char buff = *((unsigned char*)0x4E5C); 18 18 if (buff == 0) buff = 2; else buff--; 19 // return fb[buff];20 if ((mode_get()&MODE_MASK) == MODE_REC)21 return (void*)(fb[buff]-vid_get_viewport_xoffset()*3);22 19 return (void*)fb[buff]; 23 20 } … … 30 27 void *vid_get_viewport_fb() 31 28 { 32 // return (void*)0x408CB700;33 if ((mode_get()&MODE_MASK) == MODE_REC)34 return (void*)(0x408CB700-vid_get_viewport_xoffset()*3);35 29 return (void*)0x408CB700; 36 30 } … … 56 50 } 57 51 58 int vid_get_viewport_ xoffset()52 int vid_get_viewport_display_xoffset() 59 53 { 60 54 if (shooting_get_prop(PROPCASE_RESOLUTION) == 8) // widescreen (16:9) image size -
trunk/platform/ixus200_sd980/sub/101d/lib.c
r1527 r1828 17 17 unsigned char buff = *((unsigned char*)0x4E5C); 18 18 if (buff == 0) buff = 2; else buff--; 19 // return fb[buff];20 if ((mode_get()&MODE_MASK) == MODE_REC)21 return (void*)(fb[buff]-vid_get_viewport_xoffset()*3);22 19 return (void*)fb[buff]; 23 20 } … … 30 27 void *vid_get_viewport_fb() 31 28 { 32 // return (void*)0x408CB700;33 if ((mode_get()&MODE_MASK) == MODE_REC)34 return (void*)(0x408CB700-vid_get_viewport_xoffset()*3);35 29 return (void*)0x408CB700; 36 30 } … … 56 50 } 57 51 58 int vid_get_viewport_ xoffset()52 int vid_get_viewport_display_xoffset() 59 53 { 60 54 if (shooting_get_prop(PROPCASE_RESOLUTION) == 8) // widescreen (16:9) image size -
trunk/platform/ixus310_elph500hs/lib.c
r1742 r1828 60 60 // Return first viewport buffer - for case when vid_get_viewport_live_fb not defined 61 61 // Offset the return value because the viewport is left justified instead of centered on this camera 62 return viewport_buffers[0] - vid_get_viewport_xoffset()*3;62 return viewport_buffers[0]; 63 63 } 64 64 65 65 void *vid_get_viewport_live_fb() 66 66 { 67 if (MODE_IS_VIDEO(mode_get()) || (movie_status==VIDEO_RECORD_IN_PROGRESS)) 68 return viewport_buffers[0]; // Video only seems to use the first viewport buffer. 69 67 70 // Hopefully return the most recently used viewport buffer so that motion detect, histogram, zebra and edge overly are using current image data 68 71 // Offset the return value because the viewport is left justified instead of centered on this camera 69 return viewport_buffers[(active_viewport_buffer-1)&3] - vid_get_viewport_xoffset()*3;72 return viewport_buffers[(active_viewport_buffer-1)&3]; 70 73 } 71 74 … … 98 101 } 99 102 100 int vid_get_viewport_ xoffset()103 int vid_get_viewport_display_xoffset() 101 104 { 102 105 // viewport width offset table for each image size … … 110 113 // Functions for PTP Live View system 111 114 112 int vid_get_viewport_xoffset_proper() { return vid_get_viewport_xoffset() * 2; }113 115 int vid_get_viewport_width_proper() { return vid_get_viewport_width() * 2; } 116 int vid_get_viewport_display_xoffset_proper() { return vid_get_viewport_display_xoffset() * 2; } 114 117 int vid_get_viewport_height_proper() { return 480; } 115 118 int vid_get_viewport_max_width() { return 960; } -
trunk/platform/sx220hs/lib.c
r1656 r1828 78 78 } 79 79 80 int vid_get_viewport_ xoffset()80 int vid_get_viewport_display_xoffset() 81 81 { 82 82 // viewport width offset table for each image size -
trunk/platform/sx220hs/sub/100a/lib.c
r1230 r1828 37 37 void *vid_get_viewport_live_fb() 38 38 { 39 if ((mode_get()&MODE_MASK) == MODE_REC)40 return (void*)((void*)(*(int*)(0x2258))-vid_get_viewport_xoffset()*3);41 42 39 return (void*)(void*)(*(int*)(0x2258)); 43 40 … … 57 54 void *vid_get_viewport_fb() 58 55 { 59 60 if ((mode_get()&MODE_MASK) == MODE_REC)61 return (void*)(0x405D7980-vid_get_viewport_xoffset()*3); //return (void*)(0x405D7980-vid_get_viewport_xoffset()*3)62 63 56 return (void*)0x405D7980; // found by search for VRAM Address @FF371E8C 64 57 } -
trunk/platform/sx220hs/sub/101a/lib.c
r1230 r1828 37 37 void *vid_get_viewport_live_fb() 38 38 { 39 if ((mode_get()&MODE_MASK) == MODE_REC)40 return (void*)((void*)(*(int*)(0x2258))-vid_get_viewport_xoffset()*3);41 39 return (void*)(void*)(*(int*)(0x2258)); 42 40 … … 58 56 { 59 57 //sx220 or 0x4052ED80 ff050c2c 60 61 if ((mode_get()&MODE_MASK) == MODE_REC)62 return (void*)(0x405D7980-vid_get_viewport_xoffset()*3); //return (void*)(0x405D7980-vid_get_viewport_xoffset()*3)63 64 58 return (void*)0x405D7980; // found by search for VRAM Address @FF371E8C(v100A) 65 59 -
trunk/platform/sx220hs/sub/101b/lib.c
r1328 r1828 37 37 void *vid_get_viewport_live_fb() 38 38 { 39 if ((mode_get()&MODE_MASK) == MODE_REC)40 return (void*)((void*)(*(int*)(0x2258))-vid_get_viewport_xoffset()*3);41 39 return (void*)(void*)(*(int*)(0x2258)); 42 40 … … 58 56 { 59 57 //sx220 or 0x4052ED80 ff050c2c 60 61 if ((mode_get()&MODE_MASK) == MODE_REC)62 return (void*)(0x405D7980-vid_get_viewport_xoffset()*3); //return (void*)(0x405D7980-vid_get_viewport_xoffset()*3)63 64 58 return (void*)0x405D7980; // found by search for VRAM Address @FF371E8C(v100A) 65 59 -
trunk/platform/sx230hs/lib.c
r1642 r1828 80 80 } 81 81 82 int vid_get_viewport_ xoffset()82 int vid_get_viewport_display_xoffset() 83 83 { 84 84 // viewport width offset table for each image size -
trunk/platform/sx230hs/sub/100c/lib.c
r1675 r1828 29 29 void *vid_get_viewport_live_fb() 30 30 { 31 if ((mode_get()&MODE_MASK) == MODE_REC)32 return (void*)((void*)(*(int*)(0x225C))-vid_get_viewport_xoffset()*3);33 34 31 return (void*)(void*)(*(int*)(0x225C)); 35 32 } … … 42 39 void *vid_get_viewport_fb() 43 40 { 44 if ((mode_get()&MODE_MASK) == MODE_REC)45 return (void*)(0x405D7980-vid_get_viewport_xoffset()*3);46 47 41 return (void*)0x405D7980; 48 42 } -
trunk/platform/sx230hs/sub/101a/lib.c
r1675 r1828 29 29 void *vid_get_viewport_live_fb() 30 30 { 31 if ((mode_get()&MODE_MASK) == MODE_REC)32 return (void*)((void*)(*(int*)(0x225C))-vid_get_viewport_xoffset()*3);33 34 31 return (void*)(void*)(*(int*)(0x225C)); 35 32 } … … 42 39 void *vid_get_viewport_fb() 43 40 { 44 if ((mode_get()&MODE_MASK) == MODE_REC)45 return (void*)(0x405D7980-vid_get_viewport_xoffset()*3);46 47 41 return (void*)0x405D7980; 48 42 } -
trunk/platform/sx230hs/sub/101b/lib.c
r1675 r1828 29 29 void *vid_get_viewport_live_fb() 30 30 { 31 if ((mode_get()&MODE_MASK) == MODE_REC)32 return (void*)((void*)(*(int*)(0x225C))-vid_get_viewport_xoffset()*3);33 34 31 return (void*)(void*)(*(int*)(0x225C)); 35 32 } … … 42 39 void *vid_get_viewport_fb() 43 40 { 44 if ((mode_get()&MODE_MASK) == MODE_REC)45 return (void*)(0x405D7980-vid_get_viewport_xoffset()*3);46 47 41 return (void*)0x405D7980; 48 42 } -
trunk/platform/sx30/lib.c
r1527 r1828 73 73 void *vid_get_viewport_live_fb() 74 74 { 75 if (MODE_IS_VIDEO(mode_get()) || (movie_status==VIDEO_RECORD_IN_PROGRESS)) 76 return viewport_buffers[0]; // Video only seems to use the first viewport buffer. 77 75 78 // Hopefully return the most recently used viewport buffer so that motion detect, histogram, zebra and edge overly are using current image data 76 79 return viewport_buffers[(active_viewport_buffer-1)&3]; … … 87 90 } 88 91 92 int vid_get_viewport_width() 93 { 94 if (shooting_get_prop(PROPCASE_SHOOTING_MODE) == 16908) // Stitch mode 95 { 96 return 180; 97 } 98 else 99 { 100 return 360; 101 } 102 } 103 104 int vid_get_viewport_display_xoffset() 105 { 106 if (shooting_get_prop(PROPCASE_SHOOTING_MODE) == 16908) // Stitch mode 107 { 108 if (shooting_get_prop(PROPCASE_STITCH_DIRECTION) == 0) // Direction check 109 if (shooting_get_prop(PROPCASE_STITCH_SEQUENCE) == 0) // Shot already taken? 110 return 40; 111 else 112 return 140; 113 else 114 if (shooting_get_prop(PROPCASE_STITCH_SEQUENCE) == 0) // Shot already taken? 115 return 140; 116 else 117 return 40; 118 } 119 else 120 { 121 return 0; 122 } 123 } 124 89 125 long vid_get_viewport_height() 90 126 { 91 if (shooting_get_prop(PROPCASE_ASPECT_RATIO) == 1) // Wide screen top & bottom 30 pixels not used in viewport 127 if (shooting_get_prop(PROPCASE_SHOOTING_MODE) == 16908) // Stitch mode 128 { 129 return 120; 130 } 131 else if (shooting_get_prop(PROPCASE_ASPECT_RATIO) == 1) // Wide screen top & bottom 30 pixels not used in viewport 92 132 return 180; 93 133 return 240; … … 96 136 int vid_get_viewport_yoffset() 97 137 { 98 if (shooting_get_prop(PROPCASE_ASPECT_RATIO) == 1) // Wide screen top & bottom 30 pixels not used in viewport 138 if (shooting_get_prop(PROPCASE_SHOOTING_MODE) == 16908) // Stitch mode 139 { 140 return 0; 141 } 142 else if (shooting_get_prop(PROPCASE_ASPECT_RATIO) == 1) // Wide screen top & bottom 30 pixels not used in viewport 99 143 return 30; 100 144 return 0; 101 145 } 102 146 147 int vid_get_viewport_display_yoffset() 148 { 149 if (shooting_get_prop(PROPCASE_SHOOTING_MODE) == 16908) // Stitch mode 150 { 151 return 72; 152 } 153 else 154 { 155 return vid_get_viewport_yoffset(); 156 } 157 } 158 103 159 // Functions for PTP Live View system 104 160 105 int vid_get_viewport_ yoffset_proper() { return vid_get_viewport_yoffset(); }161 int vid_get_viewport_display_xoffset_proper() { return vid_get_viewport_display_xoffset() * 2; } 106 162 int vid_get_viewport_height_proper() { return vid_get_viewport_height(); } 107 163 int vid_get_palette_type() { return 3; } -
trunk/platform/sx40hs/lib.c
r1527 r1828 74 74 void *vid_get_viewport_live_fb() 75 75 { 76 if (MODE_IS_VIDEO(mode_get()) || (movie_status==VIDEO_RECORD_IN_PROGRESS)) 77 return viewport_buffers[0]; // Video only seems to use the first viewport buffer. 78 76 79 // Hopefully return the most recently used viewport buffer so that motion detect, histogram, zebra and edge overly are using current image data 77 80 return viewport_buffers[(active_viewport_buffer-1)&3]; … … 90 93 int vid_get_viewport_width() 91 94 { 92 // viewport width table for each image size 93 // 0 = 4:3, 1 = 16:9, 2 = 3:2, 3 = 1:1 94 static long vp_w[5] = { 360, 360, 360, 272 }; 95 return vp_w[shooting_get_prop(PROPCASE_ASPECT_RATIO)]; 95 if (shooting_get_prop(PROPCASE_SHOOTING_MODE) == 16909) // Stitch mode 96 { 97 return 180; 98 } 99 else 100 { 101 // viewport width table for each image size 102 // 0 = 4:3, 1 = 16:9, 2 = 3:2, 3 = 1:1 103 static long vp_w[5] = { 360, 360, 360, 272 }; 104 return vp_w[shooting_get_prop(PROPCASE_ASPECT_RATIO)]; 105 } 96 106 } 97 107 98 108 int vid_get_viewport_xoffset() 99 109 { 100 // viewport width offset table for each image size 101 // 0 = 4:3, 1 = 16:9, 2 = 3:2, 3 = 1:1 102 static long vp_w[5] = { 0, 0, 0, 44 }; // should all be even values for edge overlay 103 return vp_w[shooting_get_prop(PROPCASE_ASPECT_RATIO)]; 110 if (shooting_get_prop(PROPCASE_SHOOTING_MODE) == 16909) // Stitch mode 111 { 112 return 0; 113 } 114 else 115 { 116 // viewport width offset table for each image size 117 // 0 = 4:3, 1 = 16:9, 2 = 3:2, 3 = 1:1 118 static long vp_w[5] = { 0, 0, 0, 44 }; // should all be even values for edge overlay 119 return vp_w[shooting_get_prop(PROPCASE_ASPECT_RATIO)]; 120 } 121 } 122 123 int vid_get_viewport_display_xoffset() 124 { 125 if (shooting_get_prop(PROPCASE_SHOOTING_MODE) == 16909) // Stitch mode 126 { 127 if (shooting_get_prop(PROPCASE_STITCH_DIRECTION) == 0) // Direction check 128 if (shooting_get_prop(PROPCASE_STITCH_SEQUENCE) == 0) // Shot already taken? 129 return 40; 130 else 131 return 140; 132 else 133 if (shooting_get_prop(PROPCASE_STITCH_SEQUENCE) == 0) // Shot already taken? 134 return 140; 135 else 136 return 40; 137 } 138 else 139 { 140 return vid_get_viewport_xoffset(); 141 } 104 142 } 105 143 106 144 long vid_get_viewport_height() 107 145 { 108 // viewport height table for each image size 109 // 0 = 4:3, 1 = 16:9, 2 = 3:2, 3 = 1:1 110 static long vp_h[5] = { 240, 180, 214, 240 }; 111 return vp_h[shooting_get_prop(PROPCASE_ASPECT_RATIO)]; 146 if (shooting_get_prop(PROPCASE_SHOOTING_MODE) == 16909) // Stitch mode 147 { 148 return 120; 149 } 150 else 151 { 152 // viewport height table for each image size 153 // 0 = 4:3, 1 = 16:9, 2 = 3:2, 3 = 1:1 154 static long vp_h[5] = { 240, 180, 214, 240 }; 155 return vp_h[shooting_get_prop(PROPCASE_ASPECT_RATIO)]; 156 } 112 157 } 113 158 114 159 int vid_get_viewport_yoffset() 115 160 { 116 // viewport height offset table for each image size 117 // 0 = 4:3, 1 = 16:9, 2 = 3:2, 3 = 1:1 118 static long vp_h[5] = { 0, 30, 13, 0 }; 119 return vp_h[shooting_get_prop(PROPCASE_ASPECT_RATIO)]; 161 if (shooting_get_prop(PROPCASE_SHOOTING_MODE) == 16909) // Stitch mode 162 { 163 return 0; 164 } 165 else 166 { 167 // viewport height offset table for each image size 168 // 0 = 4:3, 1 = 16:9, 2 = 3:2, 3 = 1:1 169 static long vp_h[5] = { 0, 30, 13, 0 }; 170 return vp_h[shooting_get_prop(PROPCASE_ASPECT_RATIO)]; 171 } 172 } 173 174 int vid_get_viewport_display_yoffset() 175 { 176 if (shooting_get_prop(PROPCASE_SHOOTING_MODE) == 16909) // Stitch mode 177 { 178 return 72; 179 } 180 else 181 { 182 return vid_get_viewport_yoffset(); 183 } 120 184 } 121 185 122 186 // Functions for PTP Live View system 123 187 124 int vid_get_viewport_xoffset_proper() { return vid_get_viewport_xoffset() * 2; } 125 int vid_get_viewport_yoffset_proper() { return vid_get_viewport_yoffset(); } 188 int vid_get_viewport_display_xoffset_proper() { return vid_get_viewport_display_xoffset() * 2; } 126 189 int vid_get_viewport_width_proper() { return vid_get_viewport_width() * 2; } 127 190 int vid_get_viewport_height_proper() { return vid_get_viewport_height(); }
Note: See TracChangeset
for help on using the changeset viewer.