Repository navigation
List geotagging warnings in the process report - #945
Merged
Merged
Conversation
…apillary#940) This reverts the merge of mapillary#940 (3fcf6ca), back to main as it was after mapillary#939. mapillary#940 placed a GPX track along a video without GPS timestamps by the video's creation time. It was decided, after mapillary#940 was opened, that the creation time, which comes from the camera's clock, is never to be used to place a track: only a video's own GPS timestamps and its duration are. mapillary#944 handles videos without GPS timestamps that way instead, warning when the video and the track differ in length, and is stacked on mapillary#939, so it applies once mapillary#940 is reverted.
A video without a GPS clock of its own gives no trustworthy time to place a GPX track by: its creation time and file times come from the camera's clock. The track, whose times come from GPS, is then assumed to start with the video, in process and in video_process alike. When the track lasts more than a minute longer or shorter than the video, geotagging warns that the video start time needs aligning with the track, with what to do about it. A longer track warns only if it also lasts more than 1.5 times as long as the video, and the warning mentions timelapses, whose tracks last longer by design. Nothing is refused any more: sampling used to refuse a track that ran on past twice the video, and now places it from its start as process does. With --interpolation_offset_time the offset places the video along the track, and nothing is warned of. The warning is a MapillaryGPXAlignmentWarning, kept by the extractor with the durations and times of the track and the video, for a later change to pass on to the process report. Interval sampling stamps the samples of such a video from the start of the GPX track that geotags them, rather than from its creation time, which it now only falls back to for a video with neither a GPS clock nor a track.
The process report (--process_report_path) gains a "warnings" list: one entry for each warning that geotagging gave a file it still geotagged, with the file name, the class name of the warning as its type, its message, and its attributes as vars, as errors are written to the description file. An application that runs process can show these warnings to the user in its own words, keyed by type and filled in from vars. The first such warning is MapillaryGPXAlignmentWarning: a GPX track assumed to start with a video without a GPS clock lasts longer or shorter than the video. Its vars are video_duration and gpx_duration in seconds, gpx_start_time and gpx_end_time as capture times, and gpx_longer, which is true when the track may be that of a timelapse. The video metadata carries its warnings back from the geotagging worker processes. The report is still written before processing starts, and again once geotagging has run. A report without warnings has an empty list, and the schema version stays 1: the key is new, and readers that ignore unknown keys are unaffected.
caglarpir
force-pushed
the
report-process-warnings
branch
from
October 30, 2026 09:28
2cf2c4d to
b0a2507
Compare
caglarpir
added a commit
to caglarpir/mapillary_tools
that referenced
this pull request
Oct 30, 2026
- A track assumed to start with a video without GPS is never refused for its length, in process or in sampling, and the creation time is never used to place it: a MapillaryGPXAlignmentWarning says when the track and the video differ in length (mapillary#944). Only --interpolation_use_gpx_start_time still refuses a long track. - A file that a GPX or NMEA track missed fails with the miss when no later source geotags it (mapillary#938). - The process report lists the geotagging warnings (mapillary#945). - upload caches the checksums of the files, and shows progress while computing them (mapillary#942, mapillary#943).
caglarpir
added a commit
to caglarpir/mapillary_tools
that referenced
this pull request
Oct 30, 2026
A GPX is assumed to start with a video without GPS, in process and in every kind of sampling, with a warning when the two differ in length, and is never placed by the creation time: only --interpolation_use_gpx_start_time still refuses a long track, in video_process. The process report lists the geotagging warnings.
caglarpir
added a commit
to caglarpir/mapillary_tools
that referenced
this pull request
Nov 2, 2026
process writes the report before processing starts, and again with the warnings once geotagging has run (mapillary#945).
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.
Stacked on #944; review the last commit.
The process report (
--process_report_path) gains awarningslist: one entry for each warning that geotagging gave a file it still geotagged. An application that runsprocesscan show them to the user in its own words, keyed bytypeand filled in fromvars:{ "schema_version": 1, "discovered_file_count": 1, "processed_file_count": 1, "skipped_file_count": 0, "skipped_files": [], "warnings": [ { "filename": "/captures/clip.mp4", "type": "MapillaryGPXAlignmentWarning", "message": "The GPX track in /captures/track.gpx lasts 1.6 minutes and the video /captures/clip.mp4 5.76 seconds, so the track is assumed to start with the video. Please align the video start time with the GPX track: trim the GPX to the video, or sample the video with video_process and --video_start_time. If the video is a timelapse, its GPX track is expected to last longer, and is uploaded whole", "vars": { "video_duration": 5.759, "gpx_duration": 93.624, "gpx_start_time": "2025_03_14_07_00_00_000", "gpx_end_time": "2025_03_14_07_01_33_624", "gpx_longer": true } } ] }typeis the class name of the warning andvarsits attributes, as for the errors in the description file. The first warning listed isMapillaryGPXAlignmentWarning(previous PR): durations in seconds, times as capture times, andgpx_longertrue when the track lasts longer than the video, so it may be that of a timelapse.The video metadata carries its warnings back from the geotagging worker processes. The report is still written before processing starts, and again once geotagging has run, so a file that later fails validation keeps its warning next to its error. A report without warnings has
"warnings": []. The schema version stays 1: the key is new, and readers that ignore unknown keys are unaffected.Only
process(andprocess_and_upload) lists warnings.video_processreports on the sampled images, and the warnings of sampling are only logged.Tests: unit and integration suites, with and without ExifTool.