Skip to content

Latest commit

 

History

History
40 lines (34 loc) · 3.34 KB

subtitle-workflow.md

File metadata and controls

40 lines (34 loc) · 3.34 KB

Subtitle workflow acceptance

This is development source after v1.3.0. Subtitle cues or nondefault appearance require project format v6. The stable Windows downloads do not include this workflow.

Area Automated evidence
Cue model Unique IDs, exact integer milliseconds, sorted non-overlapping half-open intervals, bounded count/text/time, valid Unicode and no embedded blank lines
SRT Hindi/emoji/literal markup, UTF-8 BOM, CRLF/CR/LF, unordered counters, canonical export; malformed/truncated UTF-8, timestamps, missing fields, overlaps and capacity limits refuse the whole input
Clock Exact rational conversions including 29.97 fps and high rates; boundaries, exclusive ends and cues between sampled frames
Commands Exact undo/redo for add/update/remove/append/clear/style and whole-track time shifting; failed operations leave track/history unchanged and preserve the timeline
Persistence Exact v6 roundtrip, v1–v6 reads, required fields/types/bounds, pre-v6 subtitle rejection and minimum-version selection after clearing/resetting
Preview graph Active/inactive boundary frames, one-frame clips, unchanged audio/duration, burn-in disabled, canonical wrapping across smaller previews
MP4 helper Render a v6 snapshot; decoded frames show text only in the expected interval; sidecar-only mode removes it; future cues do not lengthen the video
Transcript TXT Literal UTF-8 multilingual text with exact [start --> end] times; protected atomic export, unchanged project and Undo state; invalid cues rejected before any output
Controller Local URL/path handling, atomic overlapping imports, Unicode/time sidecar roundtrip, project path protection, failed writes, selection/navigation, outside/unsampled cues and viewport filtering
Real QML Type text/times, Apply, project undo, invalid timing rejection, Cancel/Discard draft guard, timeline selection; verify clips and transport remain unchanged while typing
Pause stability Freeze the published frame when playback has already rendered the next frame; pause acknowledgement must not precede a later playhead advance
Distribution Render helper uses QGuiApplication for fonts; Windows includes the offscreen plugin; Linux/container installs fonts; self-test checks text pixels in the encoded MP4

Focused local checks:

ctest --preset linux-debug -R 'tst_(subtitles|subtitle_controller|engine|render|gui)$' --output-on-failure
FT_SCREENSHOT_DIR=/tmp/subtitle-shots ctest --preset linux-debug -R '^tst_gui$'
frametrellis-render --self-test /tmp/subtitle-package-test

CI retains 13-subtitles.png and 14-subtitles-light.png as temporary feature artifacts, alongside earlier animation screenshots. They are real 1200×800 editor captures. Generated-media assertions remain the acceptance evidence for timing and pixel composition.

Manual release acceptance still needs real footage, language/font checks on the target machine, long cue lists, playback/listening and clean physical Windows startup. Test mixed scripts and emoji with installed fonts, multiline and long text, add/import/edit/undo/save/reopen, shortened sequences and sidecar-only delivery. Fonts are not embedded in projects; substitution can alter wrapping. No speech recognition, multiple language tracks, rich-text markup, subtitle stream muxing or automatic following of clip edits is claimed.