Subtitle auto-sync: whole-file reference (Matroska + MP4) - #756
Conversation
|
Thanks for the work on this! Whole-file matching and fixing subtitle drift look like useful improvements for ARVIO. It merges cleanly, both Android variants compile, and 118 focused tests passed, but please address these before we merge:
The new 4K decoder preference also needs phone/TV playback testing separately; the automated subtitle tests don't verify that hardware behavior. I haven't physically tested this build. The feature is worth pursuing, but let's close these gaps first. Thanks! |
|
@ProdigyV21 thanks for the review! All three are addressed in fb0bc10:
4K decoder: I dropped Testing: the subtitle tests pass (78, 8 new). On an Android TV emulator: Peaky Blinders S01E04 still finds its -47.8s match, and The Shards S01E04, where every retime is refused, correctly ends on no match. |
|
Thanks @silentbil for the feature and follow-up fixes. I added a small follow-up commit to enforce the candidate-download deadline, including servers that stall after sending response headers. Completed candidates are retained and reused, expired budgets start no new downloads, and cancellation aborts the HTTP request. Added five regression tests. Validation: 131 focused Play subtitle/retiming/container tests passed; GitHub's full Sideload unit-test build, 737 web tests, 112 backend tests, and web type check passed. Merged with your original commits/authorship preserved. I have not done an additional physical-TV playback test for this follow-up. |
Summary
Find Best Match now syncs against the embedded subtitle timeline of the whole file instead of the
few lines buffered around the playhead. It can also retime subtitles, and it refuses matches that
only look right.
Changes
requests. It's prefetched when the stream opens and shared per stream.
falls back to the file's other embedded tracks when the main track is mistimed.
track accepts it unshifted, or when an AI-measured shift doesn't fit the whole file.
the full cached source list.