-
-
Notifications
You must be signed in to change notification settings - Fork 830
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fix ceres-solver deprecations #1249
Conversation
This PR will conflict with the branch https://github.com/alicevision/AliceVision/tree/dev/mergeCalibration |
@servantftechnicolor I can rebase the |
This PR is much smaller change so it makes sense to get it in first and then larger, more risky changes on top. |
c1a5b72
to
f0f821c
Compare
I've updated the PR to work with both new and old ceres. It required some compatibility wrappers, but at least it was possible to avoid preprocessor macro soup to support both APIs. |
79ef714
to
9a68856
Compare
This upgrades to ceres::Manifold API which replaces ceres::LocalParameterization API in ceres v2.1. ceres::LocalParameterization will be removed in ceres v2.2
This upgrades to ceres::Manifold API which replaces ceres::LocalParameterization API in ceres v2.1. ceres::LocalParameterization will be removed in ceres v2.2
This upgrades to ceres::Manifold API which replaces ceres::LocalParameterization API in ceres v2.1. ceres::LocalParameterization will be removed in ceres v2.2
This upgrades to ceres::Manifold API which replaces ceres::LocalParameterization API in ceres v2.1. ceres::LocalParameterization will be removed in ceres v2.2
This upgrades to ceres::Manifold API which replaces ceres::LocalParameterization API in ceres v2.1. ceres::LocalParameterization will be removed in ceres v2.2
There is another IntrinsicsManifold class in BundleAdjustmentCeres.cpp file. Having both classes is undefined behavior and may break at any time. One avenue of breakage is when both classes expose inline member functions. These functions will have weak linkage, which means that if the functions are not inlined, then one of the functions will be lost as the final executable will contain only one function with specific mangled name. The calls to the lost function will call the other function which will break in various ways.
9a68856
to
24fe94b
Compare
@p12tic Could you propose a rebase of mergeCalibration? |
@fabiencastan merge-calibration branch has been rebased to https://github.com/p12tic/AliceVision/tree/dev/mergeCalibration-rebased. Original branch did not compile. I've fixed simple errors, e.g. missing The PR change can be inspected by running:
and then inspecting There was a change to rename |
Also, it's worth noting that |
ceres-solver deprecated
LocalParameterization
in favor ofManifold
in v2.1. v2.2 will not containLocalParameterization
anymore. This PR bumps ceres-solver dependency to at least v2.1 which has been released on 2022-03-28.This PR also fixes an ODR violation that was caused by two local classes named
alicevision::sfm::IntrinsicsManifold
present in two different translation units.