Skip to content

Show frame metadata in Dataset Info - #1809

Open
PaulHax wants to merge 2 commits into
fm-stack-02-frame-metadata-enginefrom
fm-stack-03-frame-metadata-ui
Open

Show frame metadata in Dataset Info#1809
PaulHax wants to merge 2 commits into
fm-stack-02-frame-metadata-enginefrom
fm-stack-03-frame-metadata-ui

Conversation

@PaulHax

@PaulHax PaulHax commented Jul 27, 2026

Copy link
Copy Markdown
Collaborator

Last of a four-PR stack, on top of #1808. Review only this PR's own commits; the base branch carries
#1806, #1807, and #1808.

Summary

A read-only Frame Metadata panel synchronized to the active camera and playhead.

image

This slice includes the Dataset Info refactor so behavior and presentation review together: Dataset
Info splits into focused Frame Metadata, Dataset Info, and Custom Dataset Info panels, preserving
custom-field editing. The frame panel names the attachment source and distinguishes loading and
delayed video readiness; no attachment; no row for this frame; invalid readable CSV/TXT; a valid but
unmatched table; opaque JSON still available to pipelines; an unavailable attachment; and
unsupported media types that keep the attachment for pipelines but resolve no rows.

User documentation covers attachment placement, accepted formats, image join precedence, the literal
video frame contract, camera-local precedence, pipeline reuse, and current limits.

Behavior change beyond frame metadata: the context sidebar now opens on Dataset Info instead of
Threshold Controls, for every dataset and user.

Reviewer focus

  • The refactor preserves existing editable dataset fields.
  • The new default sidebar pane is intended (above).
  • Values update with the playhead without refetching the attachment.
  • The selected camera controls both row lookup and the displayed source.
  • Empty states distinguish missing, invalid, unmatched, opaque, and unsupported data.
  • Video behavior is first-class, not an image-only follow-up.

Manual test

Upload each directory, open Dataset Info, and expand Frame Metadata. These nine cover every
state the panel distinguishes, on both image sequences and video. The set is CC0 NOAA Okeanos
Explorer media with synthetic metadata, attached to #1806 as
okeanos-frame-metadata-fixtures.zip. Select all files in one directory per test.

okeanos-frame-metadata-fixtures.zip

Seven directories carry a reserved frame-metadata.* / frame_metadata.* name and are
discovered automatically, spread across five of the six spellings — .txt proves the extension
does not drive parsing. okeanos-image-explicit-frame carries an ordinary name and must be
picked into the Metadata File slot by hand; that is the path with no reserved-name safety net,
so a regression there is silent.

Directory Attachment Frame Metadata panel
okeanos-upload-authority-ignore notes.txt, ignored at upload — never an attachment "No frame metadata source found. Add a TXT or CSV Metadata File when creating the dataset." No source tooltip.
okeanos-frame-metadata-upload frame-metadata.csv, beside annotations.csv Values on all 16 frames, joined by image filename; tooltip reads Source: frame-metadata.csv. The two imported tracks (fish 0-12, vehicle 13-15) come from the VIAME CSV — the attachment contributes none.
okeanos-image-explicit-frame ex1402-dive11-telemetry.csv (picked, not discovered) Values on frames 0, 7, and 15 only; frame 8 shows "No frame metadata for the current frame." Row 23 is dropped as outside the 16-image bound and the malformed row is skipped.
okeanos-image-counter-match frame_metadata.txt Frame 0 shows frame_count=1, frame 15 shows frame_count=16. The wide source-column order is preserved, and the unrelated 900/901 rows never appear.
okeanos-frame-metadata-nonmatching frame-metadata.txt "A metadata attachment (frame-metadata.txt) is present, but none of its rows matched this dataset's frames by filename, DIVE frame number, or source image counter."
okeanos-image-invalid frame_metadata.csv — header, no data rows "The metadata attachment (frame_metadata.csv) could not be parsed as frame metadata."
okeanos-video-explicit-frame frame-metadata.csv Video frames 0, 7, 15, and 23 populated by literal zero-based frame; every neighbouring frame shows "No frame metadata for the current frame."
okeanos-video-filename-unmatched frame-metadata.csv — byte-identical to the one above that joins by filename The video wording: "…none of its rows contained a valid DIVE frame number for this video." Videos never fall through to the filename heuristic.
okeanos-video-opaque-json frame_metadata.json "The metadata attachment (frame_metadata.json) is available to pipelines, but only TXT and CSV files can be read as frame metadata."

Also verify: scrubbing between populated and unpopulated frames updates immediately without another
source download; returning to a populated frame restores the same ordered values; Dataset Info and
Custom Dataset Info still show and edit their prior fields; and in okeanos-frame-metadata-upload
the two imported tracks come from the VIAME CSV alone — the metadata attachment created none.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant