Repository navigation
Conversation
When a video's GPS is rejected as noise, the GPX is still synced by the clock of its unfiltered points, unless that clock is more than a day from the GPX: GoPro stamps a placeholder date (2015-10-22 and similar) until it acquires GPS time. Judged against the GPX, though, the clock took the blame for a GPX that does not belong to the video. A GoPro HERO8 clip whose noisy clock is real, given a GPX from another day, had that track placed from its first frame, and process exited 0, while the same GPX on a video with good GPS is rejected for missing it. A noisy clock that starts within a day of the mvhd creation time of the video is now taken as real, and places the GPX as for any video with GPS, so a GPX that misses the video raises MapillaryOutsideGPXTrackError. A day absorbs a creation time written in local time (GoPro) and whether it marks the start or the end of the recording. A clock is still a placeholder only when it is more than a day from the GPX too: some cameras write a creation time that means nothing next to a real GPS clock (a GoPro HERO10 recorded in 2022 reports 2016-01-01), and a GPX that agrees with the clock keeps it, as before. Without a readable creation time, nothing changes. The creation time is read by the same function that decides the CAMM GPS epoch.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
When a video's GPS is rejected as noise,
GPXVideoExtractorstill syncs the GPX by the clock of the unfiltered points (#849). GoPro stamps a placeholder date (2015-10-22 and similar) until it acquires GPS time, so a noisy clock more than a day from the GPX was discarded, and the GPX was placed from the start of the video.The clock was judged against the GPX, though, so a GPX that does not belong to the video was blamed on the clock. A GoPro HERO8 clip with noisy GPS but a real clock, given a GPX recorded on another day, exited 0 with a warning that the clock was 1.3 days away, and that day's track was placed from frame 0. The same GPX on a video with good GPS is rejected with
MapillaryOutsideGPXTrackError(#848).Change
MapillaryOutsideGPXTrackError. A day absorbs a creation time written in local time (GoPro) and whether it marks the start or the end of the recording.Verification
On sample videos, with
process <video> --geotag_source gpx --geotag_source_path <gpx>and withvideo_process … --video_sample_distance 3:MapillaryOutsideGPXTrackError(exit 6 / 7)MapillaryOutsideGPXTrackError(exit 6 / 7)MapillaryOutsideGPXTrackErrorprocessandvideo_processstill reject the HERO8 clip withMapillaryGPSNoiseError.processand asvideo_processplace it.processand asvideo_processplace it. This test fails on main.ruff check,ruff format --checkandusort.