Skip to content

Exoplayer 2#73

Closed
SunnyVishnu3 wants to merge 16 commits into
Riteshp2001:masterfrom
SunnyVishnu3:exoplayer-2
Closed

Exoplayer 2#73
SunnyVishnu3 wants to merge 16 commits into
Riteshp2001:masterfrom
SunnyVishnu3:exoplayer-2

Conversation

@SunnyVishnu3
Copy link
Copy Markdown

Libadrenotools+liquid glass

SunnyVishnu3 and others added 16 commits May 23, 2026 22:00
- Added try-catch blocks and logging to Koin initialization, `ExoPlayerActivity`, and `ExoPlayerService` to improve error resilience.
- Optimized playlist and subtitle configuration loading using `async`/`awaitAll` for parallel processing.
- Added `@Serializable` annotation to core models and enums to support serialization.
- Renamed numerous string resources with an `exo_` prefix for better namespacing and consistency.
- Refined dependency injection in `ExoPlayerModule` using named instances for `CoroutineScope` and `DataStore`.
- Improved reflection safety in `NormalizingAssMatroskaExtractor` with null-safe field access and `runCatching` blocks.
- Enhanced crash reporting with explicit logging in `GlobalExceptionHandler` and safe theme application in `CrashActivity`.
- Added SDK version checks for external storage access permissions.
…r player controls

- Added a "Stats" overlay (`DeviceStatsOverlay`) to display real-time CPU, memory, battery, and detailed playback metadata.
- Implemented an Ambience Mode GL effect that dynamically generates content-aware ambient lighting around the video player.
- Refactored player UI logic from `MediaPlayerScreen` into a dedicated `ExoPlayerControls` component for improved modularity and maintenance.
- Introduced a `SET_SCREEN_ASPECT_RATIO` custom command to synchronize hardware aspect ratios with the OpenGL rendering pipeline.
- Updated `PlayerPreferences` and `PlayerViewModel` to manage state for ambience mode and the statistics overlay.
- Expanded customizable player button configurations to include video filters, ambience mode, and system stats.
- Enhanced the `VideoFiltersEffect` fragment shader with sampling logic and dithering for the ambient background effect.
- Integrated `VideoFiltersPanel` into the player overlay system for real-time filter adjustments.
- Added `adrenotools` native bridge and JNI integration to support custom Vulkan drivers (Adreno/Turnip) on arm64-v8a devices.
- Implemented `GpuDriverManager` to fetch, download, and install GPU drivers from remote GitHub repositories.
- Introduced "Liquid Glass" UI components, including `LiquidButton`, `LiquidToggle`, `LiquidDialog`, and `LiquidBottomTabs`, utilizing backdrop blur and physical refraction shaders.
- Added `GpuDriverPreferencesScreen` and `LiquidSettingsScreen` to manage driver installations and fine-tune optical effect parameters.
- Integrated `GpuDriverHelper` into the `Application` startup sequence to initialize custom drivers and Freedreno environment variables.
- Expanded `AppearancePreferences` with configurable parameters for blur intensity, lens radius, and chromatic aberration.
- Updated native build configuration in `CMakeLists.txt` to conditionally build the `adrenotools_bridge` for supported architectures.
- Added dependencies for `kyant.backdrop` and `kyant.shapes` to support advanced UI effects.
- Registered new managers and preference stores in Koin `DomainModule` and `PreferencesModule`.
- Added a new "YouTube" ambient lighting mode, including a specialized GLSL shader that samples random video areas for content-aware background glow with saturation boosting and debanding.
- Integrated `LiquidBottomTabs` into the `MainScreen`, providing a unified backdrop-blur navigation experience when Liquid Glass is enabled.
- Migrated all preference screens from standard `SwitchPreference` to a custom `AdaptiveSwitchPreference` to ensure consistent UI styling across the app.
- Introduced a "Dark Text" configuration for Liquid Glass components (`LiquidDialog`, `PlayerSheet`) to improve readability on lighter video backgrounds.
- Updated `PlayerViewModel` and `AmbientSheet` with presets and UI controls for the new YouTube ambient mode.
- Enhanced `AdaptiveSwitchPreference` and `LiquidAdaptiveSwitchPreference` to support leading icons and consistent padding.
- Replaced standard `Switch` components with `AdaptiveSwitch` in the `VideoCompressorOverlay` for visual consistency.
- Expanded `AppearancePreferences` to include parameters for Liquid Glass text color behavior.
- Integrated `bytehook` to intercept `dlopen` and `android_dlopen_ext` calls within `libmpv.so`, ensuring custom Vulkan drivers are correctly linked.
- Refactored `GpuDriverBridge` and native JNI code to support driver file redirection and simplified initialization parameters.
- Implemented Storage Access Framework (SAF) integration in `GpuDriverManager` to scan, install, and backup GPU driver packages from a dedicated `gpudriver/` directory.
- Enhanced `GpuDriverPreferencesScreen` with a new UI section to manage and install drivers located in external storage.
- Updated `GpuDriverHelper` to initialize system driver hooks by default, enabling features like HUD and file redirection even for system drivers.
- Modified `VulkanUtils` to bypass system-level Vulkan version checks when a custom driver is active.
- Removed the legacy `NativeFreedrenoConfig` JNI implementation and associated Kotlin utility class.
- Updated `CMakeLists.txt` to use a newer `adrenotools` source and linked the `bytehook` library.
- Enabled `prefab` support in `build.gradle.kts` and added the ByteHook dependency.
- Expanded `adrenotools_bridge` with hooks for `vkCreateInstance`, `vkGetInstanceProcAddr`, `vkEnumerateInstanceVersion`, and `dlsym` to improve custom driver compatibility.
- Implemented a caller filtering mechanism in the native bridge to restrict library interception to specific media-related libraries such as `libmpv.so` and `libplacebo.so`.
- Added automatic generation of Vulkan ICD JSON files and injection of the `VK_ICD_FILENAMES` environment variable when loading custom drivers.
- Improved `GpuDriverManager` to recursively locate driver binaries and automatically apply executable permissions to `.so` files.
- Updated the JNI bridge and `GpuDriverHelper` to support a dedicated temporary directory for `adrenotools` operations.
- Integrated ByteHook initialization into the `Application` startup sequence.
- Enhanced logging and path normalization for custom driver discovery and loading.
…s, and exoplayer ambience shader

- Updated `ExoPlayerControls` to reposition center controls above the bottom controls bar specifically for portrait orientation.
- Integrated `layerBackdrop` and `LocalScreenBackdrop` into `MainScreen` to support Liquid Glass optical effects across the primary UI.
- Redesigned main navigation tabs to include text labels, updated icon styling, and dynamic scaling via `LocalLiquidBottomTabScale`.
- Refactored `VerticalProgressView` to use vertical gradients, a semi-transparent background, and adjusted dimensions for better visibility.
- Optimized the `VideoFiltersEffect` fragment shader by implementing hash-based random sampling for the Ambience Mode GL effect.
- Refined `Scaffold` padding logic and `CompositionLocal` providers to dynamically handle navigation bar height and backdrop states.
- Simplified `VerticalProgressView` animation logic by replacing manual width animations with consistent spring-based height transitions.
…formance

- Introduced `ExoPlayerStatsTracker` to manage real-time video FPS and decoder metadata via `StateFlow`.
- Integrated a `VideoFrameMetadataListener` in `ExoPlayerService` to calculate and track actual playback FPS.
- Refactored `DeviceStatsOverlay` to fetch device and playback statistics asynchronously, utilizing dedicated IO and Main thread collectors.
- Improved `ExoPlayerControls` by adding horizontal scrolling to button rows and ensuring the statistics toggle is accessible in both portrait and landscape orientations.
- Updated the player settings menu with a new `MenuToggleItemRow` component, providing interactive switches for statistics, video filters, ambience mode, and shuffle state.
- Optimized performance in `FileSystemBrowserScreen`, `VideoListScreen`, and `FolderListScreen` by wrapping list filtering logic in `remember` and providing explicit `key` and `contentType` parameters to `Lazy` layouts.
- Enhanced Compose stability by marking `NetworkFile`, `RecentlyPlayedEntity`, and `SearchablePreference` as `@Immutable`.
- Simplified `VideoFilterPreferences` logic to trigger effects based on filter enablement state rather than value comparisons.
- Added `toggleVideoFilters` to `PlayerViewModel` to support direct menu interaction.
@Riteshp2001 Riteshp2001 force-pushed the master branch 2 times, most recently from aea7c1b to aa7e279 Compare May 29, 2026 08:23
@Riteshp2001
Copy link
Copy Markdown
Owner

Libadrenotools+liquid glass

added Ur PR in experimental branch

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants