Exoplayer 2#73
Closed
SunnyVishnu3 wants to merge 16 commits into
Closed
Conversation
nextlib from https://github.com/FoxNick/nextlib part 2
- 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.
aea7c1b to
aa7e279
Compare
Owner
added Ur PR in experimental branch |
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.
Libadrenotools+liquid glass