Android app for synchronized recording of video and IMU data with advanced camera options, useful for 3D reconstruction, SLAM, AR, video stabilization. Supports remote control over network.
RecSync workflow is changed with recording start divided into two stages:
Video preparation (up to and including the camera_controller.initVideoRecorderPostPrepare call)
Recording start (after the camera_controller.initVideoRecorderPostPrepare call)
Related fixed bugs:
When a client connects to a leader which has settings sync enabled, the client either gets an app crash ar a camera error.
Solution: video recording preparation was programmed to start each time the camera reopens but only if SoftwareSyncController's field mIsVideoPreparationNeeded equals false -- the problems was that this field was set to true before settings sync (which might reopen the camera) finishes, so the preparation was starting before settings sync finishes and it led to crashes.
When settings sync is started the second time it never finishes.
Solution: applyAndLockSettings() has been incorrectly determining the need for a camera reopening.
Settings sync never truly finishes (i.e. with the onFinished() invocation being finished) when started from the "Sync settings" button click.
Solution: Preview,prepareVideoRecording() call needs to be made inside a MainActivity.runOnUiThread() block, or otherwise call that need a Looper (such as this one) cannot be executed.
Clients sometimes have camera errors when settings sync is cancelled (specifically, when the recording preparation is cancelled).
Solution: Preview.stopVideo() call needs to be made inside a MainActivity.runOnUiThread() block (with the same reasoning as above).
RecSync workflow is changed with recording start divided into two stages:
camera_controller.initVideoRecorderPostPrepare
call)camera_controller.initVideoRecorderPostPrepare
call)Related fixed bugs:
SoftwareSyncController
's fieldmIsVideoPreparationNeeded
equalsfalse
-- the problems was that this field was set totrue
before settings sync (which might reopen the camera) finishes, so the preparation was starting before settings sync finishes and it led to crashes.applyAndLockSettings()
has been incorrectly determining the need for a camera reopening.onFinished()
invocation being finished) when started from the "Sync settings" button click.Preview,prepareVideoRecording()
call needs to be made inside aMainActivity.runOnUiThread()
block, or otherwise call that need aLooper
(such as this one) cannot be executed.Preview.stopVideo()
call needs to be made inside aMainActivity.runOnUiThread()
block (with the same reasoning as above).