feat(mobile-player): comprehensive mobile player interface overhaul & modular architecture - #610
Open
Himanth-reddy wants to merge 13 commits into
Open
Conversation
Himanth-reddy
force-pushed
the
feature/modular-player-architecture
branch
4 times, most recently
from
August 26, 2026 09:44
4622085 to
49ba401
Compare
- Extract dedicated Mobile UI into player/mobile/ with touch controls, bottom sheets, and contextual prompt cards - Extract dedicated Android TV UI into player/tv/ with D-pad navigation, 10-foot chrome, and TV overlays - Introduce multi-engine playback abstraction layer in player/engine/ with PlayerEngine, PlayerEngineModels, and PlayerEngineFactory (ExoPlayer / MPV / VLC) - Encapsulate AI & Subtitle translation/synchronization services into player/subtitles/ - Move shared playback gatekeeper logic into player/common/ - Clean up PlayerScreen into a lean root coordinator
… mobile player - Single tap: show/hide playback controls - Double tap (left/right): seek backward/forward 10s with visual indicator overlay - Double tap (center): toggle play/pause - Triple tap: cycle aspect ratio (Fit / Fill / Zoom) - Revert debug applicationIdSuffix change in build.gradle.kts
- Wire PlayerEngine as the core controller in PlayerScreen for play/pause, seek, speed, and track actions - Persist and load auto_skip_intro, auto_skip_outro, audio_delay_ms, audio_normalization, and subtitle preferences in DataStore - Add real-time auto-skip interval enforcement for intro/outro - Connect audioDelayMs to subtitle sync processor and audioNormalization to LoudnessEnhancer
- Stage 1: clean list of language groups with track count badges, active indicators, and Off toggle - Stage 2: detailed subtitle tracks for chosen language with Embedded, Provider, SDH, and Forced badges - Full back-navigation and gesture support
…ction UI - Normalize all language codes to full names with Java Locale fallback across Mobile & TV - Reposition track count number to the right, adjacent to the chevron arrow without background badge - Remove hard borders from selected cards, using smooth borderless highlight background
…swipe gestures, and smoothen exit flow
…es and fix initial flash indicator
…e gestures on error, and retain active stream
…eets from sub-menus
Himanth-reddy
force-pushed
the
feature/modular-player-architecture
branch
from
August 26, 2026 10:07
49ba401 to
254708e
Compare
Himanth-reddy
force-pushed
the
feature/modular-player-architecture
branch
from
August 26, 2026 11:55
33af87d to
dcf1cf1
Compare
…ial heartbeat loading
Himanth-reddy
force-pushed
the
feature/modular-player-architecture
branch
from
August 26, 2026 12:02
dcf1cf1 to
39dd0e5
Compare
…oid duplicate key crashes
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This PR delivers a comprehensive overhaul of the mobile video player interface, introducing modular architecture refactoring, refined multi-tap and swipe gesture engines, enhanced subtitle and audio drawers, dynamic edge-to-edge system bar integration, instantaneous orientation exit handling, and expanded aspect ratio controls.
What Has Been Done (Commit Breakdown)
1. Modular Player Architecture Refactor (
32573186)player/mobile/: Dedicated mobile touch UI, design tokens (MobilePlayerTokens), bottom sheets, contextual prompts, and gesture surfaces.player/tv/: Dedicated 10-foot Android TV D-pad interface.player/engine/: Engine-agnostic abstraction layer (PlayerEngine,PlayerEngineModels,PlayerEngineFactory) supporting multiple playback backends.player/subtitles/: Encapsulated subtitle and AI synchronization services.player/common/: Shared playback gates and system bar effect coordinators.2. PlayerEngine Wiring & Settings Persistence (
b7c9b69b)PlayerEngineas the single coordinator for playback actions; persisted preferences in DataStore; implemented real-time intro/outro skip intervals, audio normalization viaLoudnessEnhancer, and delay sync.3. Multi-Tap Gestures Engine (
d79e4d0d)4. 2-Stage Drilldown Subtitle Picker & Language Standardization (
6a1ef148,e140d6ac)eng,spa,por) and harsh bordered cards.English,Spanish, etc.) with track count badges, active indicators, and quick Off toggle.5. Monotonic Vertical Swipe Gestures (
d8f9a912)effectiveDeltaY = totalDeltaY - activationDeltaY). Swipes are strictly monotonic, continuous at activation (zero jump), and strict axis dominance filtering prevents accidental adjustments during horizontal seeking or diagonal swipes.6. Edge-to-Edge System Bars & Dynamic Insetting (
d8f9a912)BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE) dynamically follow player controls visibility—revealing real status icons and navigation buttons when controls appear and hiding them cleanly when controls fade out. Interactive overlays combine liveWindowInsets.systemBarsandWindowInsets.displayCutoutfor safe clearance without video shifts.7. Instantaneous & Smooth Exit Flow (
d8f9a912)8. Aspect Ratio Modes & Startup Indicator Fix (
1a42f84f)