diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2011-11-20 00:14:57 +0400 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2011-11-20 00:14:57 +0400 |
commit | 120c0659ed24378bda02b03cac8854aa0c01283c (patch) | |
tree | 1d58373e862bd0a7a9600d29b44dd2d0812a0bc7 /extern | |
parent | 5d2a155f2bcc2d6d77d3a3753c23027b06942540 (diff) |
Camera tracking fixes:
- Fixed incorrect memory access on distoritons more than 128 pixels
- Do not use UNDO operators flags for delete proxy operator (files can't be restored form disk),
and also do not use UNDO for set as background operator (background images are storing in
3d viewport which isn't getting re-loaded on undo which can lead to incorrect users count
of movie clip user).
Diffstat (limited to 'extern')
-rw-r--r-- | extern/libmv/libmv/simple_pipeline/camera_intrinsics.cc | 14 |
1 files changed, 4 insertions, 10 deletions
diff --git a/extern/libmv/libmv/simple_pipeline/camera_intrinsics.cc b/extern/libmv/libmv/simple_pipeline/camera_intrinsics.cc index 917f80e6926..ba88ce7676d 100644 --- a/extern/libmv/libmv/simple_pipeline/camera_intrinsics.cc +++ b/extern/libmv/libmv/simple_pipeline/camera_intrinsics.cc @@ -24,7 +24,7 @@ namespace libmv { struct Offset { - signed char ix, iy; + short ix, iy; unsigned char fx,fy; }; @@ -201,20 +201,14 @@ void CameraIntrinsics::ComputeLookupGrid(Grid* grid, int width, int height, doub warp_y = warp_y*aspy + 0.5 * overscan * h; int ix = int(warp_x), iy = int(warp_y); int fx = round((warp_x-ix)*256), fy = round((warp_y-iy)*256); - if(fx == 256) { fx=0; ix++; } - if(fy == 256) { fy=0; iy++; } // Use nearest border pixel if( ix < 0 ) { ix = 0, fx = 0; } if( iy < 0 ) { iy = 0, fy = 0; } if( ix >= width-2 ) ix = width-2; if( iy >= height-2 ) iy = height-2; - if ( ix-x > -128 && ix-x < 128 && iy-y > -128 && iy-y < 128 ) { - Offset offset = { ix-x, iy-y, fx, fy }; - grid->offset[y*width+x] = offset; - } else { - Offset offset = { 0, 0, 0, 0 }; - grid->offset[y*width+x] = offset; - } + + Offset offset = { ix-x, iy-y, fx, fy }; + grid->offset[y*width+x] = offset; } } } |