Parent
#123
What this delivers
tvOS playback at parity with the shipped TV app: system player, HLS-only, resume prompt, throttled position reporting, subtitle preferences, and the conversion gate.
Scope
- System AVPlayer surface (native transport controls, info panels) playing the SDK HLS stream URL; subtitles and audio tracks come from the HLS manifest.
- Resume prompt before playback when a position exists: "Continue from H:MM:SS" / "Start from the beginning" over the poster, honoring the remember-position setting.
- Start-from reporting throttled to the shipped cadence (15s, flush on exit); mark-watched state reflects back into the browser rows.
- Subtitle behavior: auto-select first track unless the don't-auto-select setting is on; hide entirely when subtitles are off.
- Conversion gate for needs-conversion files with live status, matching the browser child's row affordances.
- Playback errors are localized, recoverable, and reported to the error tracker.
Acceptance criteria
Verification
tvOS simulator recordings of resume, subtitle, and conversion flows; unit tests over the resume/reporting state machine.
Blocked by
Boundaries
No custom transport UI (the shipped tvOS app uses system controls; so do we). No MP4 playback-type setting on tvOS (HLS-only, matching shipped behavior).
Parent
#123
What this delivers
tvOS playback at parity with the shipped TV app: system player, HLS-only, resume prompt, throttled position reporting, subtitle preferences, and the conversion gate.
Scope
Acceptance criteria
Verification
tvOS simulator recordings of resume, subtitle, and conversion flows; unit tests over the resume/reporting state machine.
Blocked by
Boundaries
No custom transport UI (the shipped tvOS app uses system controls; so do we). No MP4 playback-type setting on tvOS (HLS-only, matching shipped behavior).