commit f701b2b9fbc641b3252b3513239eeb14477ed5e1
Author: Lazydodo <github@lazydodo.com>
Date:   Wed Aug 21 10:38:33 2019 -0600

    Cleanup: Fix build error with MSVC
    
    Previously eigens internal include order somehow implicitly provided
    M_PI and friends. The recent eigen version bump broke this implicit
    behaviour, better to be explicit that we need the math defines for MSVC.

commit 5b2892f5a3cb6a7a2300f1c32e93d90e22302286
Author: Sergey Sharybin <sergey@blender.org>
Date:   Mon Mar 15 14:58:13 2021 +0100

    Cleanup: Spelling in Libmv comments

commit 54cdd2fe5cad29df83cb4d3c3ef1e02e06b022a7
Author: Sergey Sharybin <sergey@blender.org>
Date:   Thu Oct 21 12:09:30 2021 +0200

    Ensure clang-format is disabled for 3rd party libraries

commit 517d51654d6a4cf790a340b657cc0f7dc00f3158
Author: Campbell Barton <ideasman42@gmail.com>
Date:   Tue Jul 13 21:58:45 2021 +1000

    Fix x/y mismatch in retract region tracker
    
    Correct X/Y mismatch in RetrackRegionTracker.
    
    NOTE: This isn't used at the moment.
    
    Reviewed By: sergey
    
    Ref D11895

commit cfcfc803cf599c3bd7bbfa3bac7d5e9c8bca284b
Author: Jesse Yurkovich <jesse.y@gmail.com>
Date:   Mon Jul 12 21:01:18 2021 -0700

    Cleanup: Use correct _WIN32/64 defines for MSVC
    
    Docs: https://docs.microsoft.com/en-us/cpp/preprocessor/predefined-macros
    
    Differential Revision: https://developer.blender.org/D11460

commit ad8dfd41958b0e4cb90c7c4e5cc20f93c0832e73
Author: Campbell Barton <ideasman42@gmail.com>
Date:   Thu Jun 24 15:56:58 2021 +1000

    Cleanup: comment blocks, trailing space in comments

commit 9a6cc5daa6c38f33ce2385fe489c07d97586d452
Author: Campbell Barton <ideasman42@gmail.com>
Date:   Sun Jun 13 15:11:40 2021 +1000

    Fix new[]/delete[] mismatch

commit 5591d12928df74ed3517b5e61eeda0b64e6ade4f
Author: Sergey Sharybin <sergey@blender.org>
Date:   Mon Mar 22 15:16:07 2021 +0100

    Fix T86591: Tracking backwards is slower
    
    The root of the issue was caused by the PredictMarkerPosition()
    always returning false when tracking backwards. This was making
    it so tracker always had to run brute initialization, which is
    an expensive operation.
    
    From own timing here:
    
    - Tracking forward takes 0.667637 seconds
    - Tracking backward used to take 2.591856 seconds
    - Tracking backward now takes 0.827724 seconds
    
    This is a very nice speedup, although the tracking backwards is
    still somewhat slower. Will be investigated further as part of
    a regular development.

commit ad9546d2319b0db3e1ccc41c4f84899729d1ad1e
Author: Sergey Sharybin <sergey@blender.org>
Date:   Mon Mar 15 15:48:15 2021 +0100

    Fix T86262: Tracking backwards fails after gap in track
    
    The issue was caused by a prediction algorithm detecting tracking the
    wrong way. Solved by passing tracking direction explicitly, so that
    prediction will always happen correctly regardless of the state of the
    Tracks context.

commit 0773a8d6dfe1bf997b8e42d61d136a65b67fde88
Author: Sergey Sharybin <sergey@blender.org>
Date:   Thu Oct 21 11:18:10 2021 +0200

    Cleanup: clang-format
    
    Is based on Google style which was used in the Libmv project before,
    but is now consistently applied for the sources of the library itself
    and to C-API. With some time C-API will likely be removed, and it
    makes it easier to make it follow Libmv style, hence the diversion
    from Blender's style.
    
    There are quite some exceptions (clang-format off) in the code around
    Eigen matrix initialization. It is rather annoying, and there could be
    some neat way to make initialization readable without such exception.
    
    Could be some places where loss of readability in matrix initialization
    got lost as the change is quite big. If this has happened it is easier
    to address readability once actually working on the code.
    
    This change allowed to spot some missing header guards, so that's nice.
    
    Doing it in bundled version, as the upstream library needs to have some
    of the recent development ported over from bundle to upstream.
    
    There should be no functional changes.

commit c4de0ccd5aede3bb90ac6ad1039a83c2260fbefd
Author: Sergey Sharybin <sergey@blender.org>
Date:   Tue Feb 23 16:43:01 2021 +0100

    Avoid use of LOG(INFO) in solver
    
    Usage of LOG(INFO) actually went against own guidelines in the
    logging.h: the INFO is for messages which are to be printed
    regardless of debug/verbosity settings.

commit 94d925131b08e23cea7fdf735923e24b78a8c7fd
Author: Campbell Barton <ideasman42@gmail.com>
Date:   Fri Feb 5 16:23:34 2021 +1100

    Cleanup: correct spelling in comments

commit db0c8dbea19d684899dffcb46a2e79c12dc91e6b
Author: Sergey Sharybin <sergey@blender.org>
Date:   Tue Dec 1 14:52:08 2020 +0100

    Tweak default logging verbosity level
    
    Log to verbosity level 1 rather than INFO severity.
    
    Avoids a lot of overhead coming from construction of the INFO stream
    and improves performance and threadability of code which uses logging.
    
    This makes tracking of 250 frames of a track of default settings to
    drop down from 0.6sec to 0.4sec.

commit 8f2c13edf0d3b0c8a2ad90d6ae13f11aed457709
Author: Sergey Sharybin <sergey@blender.org>
Date:   Tue Dec 1 14:46:35 2020 +0100

    Cleanup, remove unused logging macros
    
    Unused and was not entirely happy with such short abbreviations.

commit 1dc2ab9847ce6cc84ab6c8e3e8613687480d735d
Author: Sergey Sharybin <sergey@blender.org>
Date:   Fri Nov 27 15:58:55 2020 +0100

    Add threading primitives
    
    Allows to use mutex, scoped_lock, and conditional_variable from within
    the libmv namespace.
    
    Implementation is coming from C++11. Other configurations are easy to
    implement, but currently C++11 is the way to go.

commit 6531b66fd3bf4b5ee112b904b390d164a03628c5
Author: Sergey Sharybin <sergey@blender.org>
Date:   Fri Nov 27 15:43:44 2020 +0100

    Add build configuration header
    
    Allows to easily access build platform information, such as bitness,
    compiler, supported C++ version and so on.

commit 632c356375e4ac07da43b346384fdf67e7916426
Author: Campbell Barton <ideasman42@gmail.com>
Date:   Fri Nov 6 14:35:38 2020 +1100

    Cleanup: doxygen comments

commit c9479472ce8d63b1d6e4c9c1b072b975479cd4c0
Author: Campbell Barton <ideasman42@gmail.com>
Date:   Fri Nov 6 11:25:27 2020 +1100

    Cleanup: follow our code style for float literals

commit 6455055b265cddbf604523653b01c9d7adbc23d5
Author: Ivan Perevala <ivpe>
Date:   Thu Oct 29 10:19:06 2020 +0100

    Fix clang inconsistent-missing-override warnings.
    
    Reviewed By: sergey, ankitm
    
    Differential Revision: https://developer.blender.org/D9377

commit 020fc13a5336c872c3251e45d28cc02584094f33
Author: Sergey Sharybin <sergey@blender.org>
Date:   Wed Oct 21 10:53:13 2020 +0200

    Simplify configuration of intrinsics to refine
    
    Previously, only predefined and limited set of intrinsics combinations
    could have been refined. This was caused by a bundle adjustment library
    used in the early days of the solver.
    
    Now it is possible to fully customize which intrinsics are to be refined
    during camera solving. Internally solver supports per-parameter settings
    but in the interface they are grouped as following:
    
    * Focal length
    * Optical center
    * Radial distortion coefficients (which includes k1, k2, k3, k4)
    * Tangential distortion coefficients (which includes p1, p2)
    
    Differential Revision: https://developer.blender.org/D9294

commit 5ef3c2c41854a2e634ba692e9b63194aa74b928d
Author: Sergey Sharybin <sergey@blender.org>
Date:   Wed Oct 21 10:48:13 2020 +0200

    Fix typo in packed intrinsics
    
    Was using doing an implicit cast of floating point value to boolean.
    Was not noticed before because the boolean value was never never used.

commit 648388878525aa585bdbbed2e457186b6483bd5e
Author: Sergey Sharybin <sergey@blender.org>
Date:   Tue Oct 13 11:34:05 2020 +0200

    Refactor camera intrinsics parameter block
    
    Use the newly introduced packed intrinsics, which allows to remove
    code which was initializing parameters block based on distortion
    model type.
    
    Now such initialization is done by a particular implementation of
    a distortion model.
    
    Differential Revision: https://developer.blender.org/D9192

commit 60780e30a8aec37f53d4e952375ffc8d720341c6
Author: Sergey Sharybin <sergey@blender.org>
Date:   Tue Oct 13 11:32:35 2020 +0200

    Add generic class for packed intrinsics
    
    This is a common class which can be used in all sort of minimization
    problems which needs camera intrinsics as a parameter block.
    
    Currently unused, but will replace a lot of hard-coded logic in the
    bundle adjustment code.

commit 409924c76be27fec3b619d79379df76cb8de6a9a
Author: Sergey Sharybin <sergey@blender.org>
Date:   Tue Oct 13 11:25:34 2020 +0200

    Add array<type, size> to libmv namespace

commit 6411c7fed3c30dce05b9b2df239b7f4cf91cdecd
Author: Sebastian Parborg <darkdefende@gmail.com>
Date:   Tue Oct 20 14:45:54 2020 +0200

    Fix test on windows
    
    There is no point in testing std::vector capacity as it can differ
    between std implementations.

commit 242d31ff4ed78a6f36ac29f139b03abc4f32f4f5
Author: Harley Acheson <harley.acheson@gmail.com>
Date:   Mon Oct 19 08:51:50 2020 -0700

    Spelling: Miscellaneous
    
    Corrects 34 miscellaneous misspelled words.
    
    Differential Revision: https://developer.blender.org/D9248
    
    Reviewed by Campbell Barton

commit 91cd0310d6762fdcc7253303bec7f0453cf1f18f
Author: Harley Acheson <harley.acheson@gmail.com>
Date:   Mon Oct 19 08:12:33 2020 -0700

    Spelling: It's Versus Its
    
    Corrects incorrect usage of contraction for 'it is', when possessive 'its' was required.
    
    Differential Revision: https://developer.blender.org/D9250
    
    Reviewed by Campbell Barton

commit 788ed5fa8ace0df951fe8f03e6510187ed694044
Author: Sebastian Parborg <darkdefende@gmail.com>
Date:   Mon Oct 19 13:03:06 2020 +0200

    Fix alignment issues when compiling with AVX support
    
    There would be eigen alignment issues with the custom libmv vector
    class when compiling with AVX optimizations. This would lead to
    segfaults.
    
    Simply use the std::vector base class as suggested by the old TODO in
    the class header.
    
    Reviewed By: Sergey
    
    Differential Revision: http://developer.blender.org/D8968

commit 21a114476eaafec4b25c0ea19eaccdd9e870160d
Author: Sergey Sharybin <sergey@blender.org>
Date:   Mon Oct 12 14:59:18 2020 +0200

    Remove array access from camera intrinsics
    
    That was a suboptimal decision from back in the days, which ended up
    being problematic. It is no longer used, so remove it from API making
    it so new code does not depend on this weak concept.

commit b6a579fd88de5e13c812310a0416e698648578c4
Author: Sergey Sharybin <sergey@blender.org>
Date:   Mon Oct 12 12:17:55 2020 +0200

    Fix wrong packing order of intrinsics for BA step
    
    The order got broken when Brown distortion model has been added.
    Made it so the indexing of parameters is strictly defined in the
    parameter block, matching how parameters are used in the cost
    function.
    
    There is some duplication going on accessing parameters. This can
    be refactored in the future, by either moving common parts packing
    and cost function to an utility function in bundle.cc.
    Alternatively, can introduce a public PackedIntrinsics class which
    will contain a continuous block of parameters, and each of the
    camera models will have API to be initialized from packed form and
    to create this packed form.
    
    The benefit of this approach over alternative solutions previously
    made in the master branch or suggested in D9116 is that the specific
    implementation of BA does not dictate the way how public classes need
    to be organized. It is API which needs to define how implementation
    goes, not the other way around.
    
    Thanks Bastien and Ivan for the investigation!

commit 595d4a45db2f1d68bc6091b6fad3580411a10e40
Author: Sergey Sharybin <sergey@blender.org>
Date:   Mon Oct 12 10:46:31 2020 +0200

    Fix memory leak in modal solver
    
    The leak was happening when problem did not have any parameters blocks
    defined. This happens, for example, if there are no 3D points at all,
    or when all markers are set to 0 weight.
    
    Was noticeable in libmv_modal_solver_test when building with LSAN
    enabled.

commit b6ecdc497c00e5f9a0a6dffe1c27051c8df8482a
Author: Sergey Sharybin <sergey@blender.org>
Date:   Mon Oct 12 10:44:57 2020 +0200

    Cleanup, spelling in function name
    
    Is a local function, not affecting API.

commit 2a712777076c076fcf8aae9b9657089d81fd129f
Author: Ivan Perevala <ivpe>
Date:   Wed Sep 30 15:12:14 2020 +0200

    Implement Brown-Conrady distortion model
    
    Implemented Brown-Conrady lens distortion model with 4 radial and
    2 tangential coefficients to improve compatibility with other software,
    such as Agisoft Photoscan/Metashapes, 3DF Zephir, RealityCapture,
    Bentley ContextCapture, Alisevision Meshroom(opensource).
    
    Also older programs: Bundler, CPMVS.
    In general terms, most photogrammetric software.
    
    The new model is available under the distortion model menu in Lens
    settings.
    
    For tests and demos check the original patch.
    
    Reviewed By: sergey
    
    Differential Revision: https://developer.blender.org/D9037

commit e4e2b8c382f9bb2490318cd621a438ccb4dd7327
Author: Ivan <vanyOk>
Date:   Mon Sep 28 09:57:03 2020 +0200

    Fix NukeCameraIntrinsics copy constructor
    
    Copy the appropriate parameter
    
    Reviewed By: sergey
    
    Differential Revision: https://developer.blender.org/D9014

commit 1e5deb138ad1ef79204b118f4dc741f96bd0e650
Author: Johan Walles <walles>
Date:   Tue Jul 7 11:09:31 2020 +0200

    Add units to motion tracking solve errors
    
    The unit being "pixels".
    
    Before this change the solve errors were unitless in the UI.
    
    With this change in place, the UI is now clear on that the unit of the
    reprojection errors is pixels (px).
    
    Differential Revision: https://developer.blender.org/D8000

commit a8a5a701f2839a97af51825d98726e7eb7e6eb1d
Author: Campbell Barton <ideasman42@gmail.com>
Date:   Wed Jul 1 13:12:24 2020 +1000

    Cleanup: spelling

commit fd83866975d5d8163d9bb71d645239562cb329b5
Author: Sergey Sharybin <sergey.vfx@gmail.com>
Date:   Thu Jun 18 10:12:01 2020 +0200

    Update Ceres to the latest upstream version
    
    Using latest master because of various compilation error fixes.
    
    Brings a lot of recent development. From most interesting parts:
    
    - New threading model.
    - Tiny solver.
    - Compatibility with C++17.

commit 307e9a945a320a1b7d9af210c2da1cfbb6439ec5
Author: Sergey Sharybin <sergey.vfx@gmail.com>
Date:   Fri May 15 14:54:30 2020 +0200

    Fix crash solving when having negative frames
    
    Don't use linear array with frame as an index since it has the
    following disadvantages:
    
    - Requires every application to take care of frame remapping, which
      could be way more annoying than it sounds.
    
    - Inefficient from memory point of view when solving part of a footage
      which is closer to the end of frame range.
    
    Using map technically is slower from performance point of view, but
    could not feel any difference as the actual computation is way more
    complex than access of camera on individual frames.
    
    Solves crash aspect of T72009

commit 730eec3e0a382b23648d9000e07218519e1223d1
Author: Sergey Sharybin <sergey.vfx@gmail.com>
Date:   Fri May 15 11:08:18 2020 +0200

    Add map utility

commit 0d3f5d94474553c51a1e5d830521fca4ee82aa54
Author: Sergey Sharybin <sergey.vfx@gmail.com>
Date:   Fri May 15 11:05:07 2020 +0200

    Cleanup, spelling

commit d26503ab5a9d2faef0f388695d6bb1c46ffff4eb
Author: Aaron Carlisle <carlisle.b3d@gmail.com>
Date:   Thu May 7 23:42:22 2020 -0400

    Cleanup: Doxygen: fix markup warnings for links

commit 9e8e94e8281abb6edb5e81afe4365743994800d2
Author: Sergey Sharybin <sergey.vfx@gmail.com>
Date:   Mon Apr 20 17:33:03 2020 +0200

    Implement Nuke/Natron distortion model
    
    Neither Nuke nor Natron support OpenCV's radial distortion model
    which makes it impossible to have any kind of interoperability.
    
    The new model is available under the distortion model menu in Lens
    settings.
    
    Differential Revision: https://developer.blender.org/D7484

commit 1dc83e7545fc832180322f492245933fb343f158
Author: Sergey Sharybin <sergey.vfx@gmail.com>
Date:   Tue Apr 21 16:41:23 2020 +0200

    Cleanup, naming
    
    Initial bundle adjustment only supported OpenCV's radial distortion
    model, so the cost functor was called after it.
    
    Nowadays it supports more than this single model, so naming was a bit
    wrong and misleading.

commit b6df71dd5e5a49b3459c522c10ae98e8795e69b5
Author: Sergey Sharybin <sergey.vfx@gmail.com>
Date:   Tue Apr 21 12:25:45 2020 +0200

    Cleanup, spelling and naming in bundle adjustment
    
    Just more things which were discovered to be annoying on unclear when
    adding more features to this code.

commit a4bbe3a10a5b6b23acd261b1e6c772a6f6672c00
Author: Sergey Sharybin <sergey.vfx@gmail.com>
Date:   Mon Apr 20 17:26:45 2020 +0200

    Cleanup, spelling in comment

commit 4219e9d22bad012e9e64b83a5e26d1d4eff3fcc6
Author: Sergey Sharybin <sergey.vfx@gmail.com>
Date:   Mon Apr 20 12:44:07 2020 +0200

    De-duplicate creation of residual block
    
    Allows to centralize logic which is needed to check which cost functor
    to use for the specific intrinsics.

commit 9637ebc18b2bac794c8f11b1c2c092a3a9c3e6d2
Author: Sergey Sharybin <sergey.vfx@gmail.com>
Date:   Mon Apr 20 11:41:01 2020 +0200

    Cleanup reprojection cost function
    
    Make it smaller and more clear how and what it operates on.

commit 1efc975a5457cfee6baf41df67afb3e43834d57f
Author: Sergey Sharybin <sergey.vfx@gmail.com>
Date:   Mon Apr 20 11:19:47 2020 +0200

    Pass entire camera intrinsics to reprojection error functor
    
    Currently no functional changes, but allows to have access to some
    invariant settings of camera intrinsics such as image dimensions.

commit 0f54f2b305f59fc99764b9c85fe28f35f10faa86
Author: Sergey Sharybin <sergey.vfx@gmail.com>
Date:   Fri Apr 17 17:34:19 2020 +0200

    Cleanup, rephrase comment

commit 229912b0e1746145c4ab710f8609ce90f690a8e2
Author: Sergey Sharybin <sergey.vfx@gmail.com>
Date:   Fri Apr 17 17:29:04 2020 +0200

    Cleanup, fix indentation
