Repository navigation
Mobile playback: video and audio with resume, tracks, background audio, touch seek #27
Copy link
Copy link
Closed
1 / 11 of 1 issue completedClosed
1 / 11 of 1 issue completed
Copy link
Description
Part of #14 (W3 — mobile v1). Files and SDK playback prerequisites are complete. Folds in the native-Android half of #8 (touch seek gestures). Core mobile playback completed with #158.
Outcome
Watching and listening on the go — the mobile product bar's core media job, via the platform-native player path.
Scope
- Video playback (Media3/ExoPlayer): HLS/MP4 per the SDK playback-source model (#88, #89), configured format (#109), subtitle tracks with autoselect and lifecycle retention (#94, #100), autoplay next (#110)
- Resume prompt and throttled
start_fromwrite-back (#158): 15-second playing samples, deduplicated lifecycle snapshots, bounded writer, session and confirmed-setting checks. Start over starts locally at zero; completion keeps the final positive position. - Audio track selection and playback speed for audio and video — completed under #146 in #154; retained selections and the 0.75 / 1 / 1.25 / 1.5 / 2× ladder.
- Touch controls per Add touch seek gestures and controls to Android playback #8: double-tap left/right accumulating 10s skips with pending-total feedback, clamped at bounds, no conflict with single-tap/captions/system nav, plus an accessible non-gesture alternative
- Audio playback with background audio + MediaSession — completed under #146 in #150, #151, and #152; live-session reopening in #155.
- Conversion interstitial for
need_convertfiles (queued/percent), Check again, and an explicit unsupported-type state — source resolution in #88, player UI in #89. Current UI and regression coverage verify percentage, refresh/Back, and unsupported without retry. - Typed, recoverable playback errors (#88, #89): media-credential refresh, network/generic recovery, retained position, and authoritative session rejection. Sentry playback breadcrumbs remain conditional on telemetry and are owned by #31; no telemetry delivery is claimed here.
Non-goals (v1)
PiP and libVLC/original-file playback remain post-v1 under #52. Chromecast is a mobile-v1 child in #36 and follows this core player.
Acceptance criteria
- DoD: canonical local gate and final-head CI green; API 37 recordings and screenshots attached across the playback PRs (evidence below).
Evidence
- Resume and Start over for video/audio, live position read-back, background reporting and notification Pause. Owned API fixtures were reset, deleted and verified absent; account settings and the authenticated installation were preserved.
- Decoded HLS and rendered subtitles, touch-seek recordings, speed/audio-track selection and retention, and immersive video with direct Audio/Speed/Captions controls. Selection evidence includes screenshots and controlled local-media device assertions; it is not a live API or full Activity-recreation claim.
- Background audio, lock-screen/headset controls and notification reopening.
- Conversion, unsupported and typed recovery completion is based on the shipped implementation and passing regression coverage. This closeout does not claim a new live queued-conversion or unsupported-file recording.
This closes the core player scope. Downloads, share/open-in, Chromecast, telemetry/release and post-v1 player features remain with their respective issues.
Metadata
Metadata
Assignees
Labels
No labels
Activity
altaywtf commentedon Sep 1, 2026
I moved the first bounded mobile-player layer into the held stack #88 → #89.
This layer covers HLS/MP4 video, resume offset, lifecycle/recreation retention, subtitle rendering/on-off/track selection, typed recovery, and API 37 emulator decoding. It does not complete this issue; audio/MediaSession, speed, audio tracks, double-tap seek, write-back, Chromecast, and the remaining scope stay open.
Evidence:
Full Gradle gates pass, and the final Codex High branch review is clean. Both PRs remain held; no merge or release.
altaywtf commentedon Sep 7, 2026
Touch seek landed in #112 (
b7499b7): double-tap left/right accumulating 10 s skips with pending-total feedback, clamped at bounds, plus the accessible skip buttons. The follow-up in #143 is unrelated (About dialog). Ticked the checklist item; audio/MediaSession, speed, audio tracks, and write-back remain open.