Releases: kdroidFilter/ComposeMediaPlayer
0.10.0
What's Changed
- fix(windows): prevent use-after-free crash in Skia bitmap during dispose by @kdroidFilter in #199
- Migrate sample to Nucleus plugin with GraalVM support by @kdroidFilter in #200
- refactor(windows): rewrite native player by @kdroidFilter in #204
- fix(mac): apply rotation metadata and reach 100% on progress bar by @kdroidFilter in #207
Full Changelog: v0.9.0...v0.10.0
0.9.0
Full Native JNI — Zero External Dependencies
The entire desktop backend has been rewritten. JNA and GStreamer Java bindings are gone. macOS, Linux, and Windows players now communicate directly via JNI with native C/C++/Swift code compiled and embedded in the library. No more runtime dependency on JNA, no more GStreamer Java wrapper — just raw native performance.
Major Performance Gains on Desktop
- Output scaling at the native level: the native backend now returns frames in the exact size requested by the Compose surface, eliminating expensive CPU-side rescaling in Kotlin/JVM.
- AtomicLong + end-of-playback callback replace polling-based approaches (#179).
- Windows: rewritten audio pipeline with timing-master model, adaptive frame polling, reduced memory usage, and fixed race conditions.
- Linux: fixed aspect ratio scaling, pause/release handling.
- macOS: JNI state management refactored, NaN crash in slider fixed, native player disposal synchronized.
New Features
- Picture-in-Picture support for Android and iOS.
- HLS streaming support on Windows (via
IMFMediaEngine). openAsset()API for loading bundled media files (#96).- Video caching (opt-in) for Android and iOS (#34).
seekStart/seekFinishedAPI,restart(), andonRestartcallback.onPlaybackEndedcallback and exposeddurationproperty onVideoPlayerState.- Configurable audio session mode for iOS and Android.
- Playback speed minimum lowered to 0.25x.
Fixes
- iOS: threading issues, crash on dead links, security-scoped resource access for local files.
- Android: removed default ExoPlayer buffering spinner, fixed fullscreen.
- Web: slider drag seek and progress bar now work correctly.
- Windows: fixed colors, thread safety, crash on audio device change, video-only-audio bug.
- Fixed
currentTime/sliderPosnot reaching end of media. - Alpha blending fix for video frame rendering (
BlendMode.Src).
Modernization
- Replaced Kermit logger with custom lightweight logger.
- Native sources inlined in the repo and built in CI.
- Sample app redesigned with Material3 adaptive UI.
- Kotlin bumped to 2.3.10.
- Swift 6.2+ compatibility (
MTAudioProcessingTapCreate).
New Contributors
- @marioortizmanero made their first contribution in #180
- @dhiaspaner made their first contribution in #170
Full Changelog: v0.8.8...v0.9.0
0.8.8
What's Changed
- fix: loop no smooth on Ios player by @YoussefHachicha in #164
New Contributors
- @YoussefHachicha made their first contribution in #164
Full Changelog: v0.8.7...v0.8.8
0.8.7
What's Changed
- Refactor iOS VideoPlayer by @xephosbot in #156
New Contributors
- @xephosbot made their first contribution in #156
Full Changelog: v0.8.6...v0.8.7
0.8.6
What's Changed
- Bump dependency versions in
libs.versions.toml(FileKit, Kotlin, Compose, Activity Compose, Media3 Exoplayer, DarkModeDetector). by @kdroidFilter in #144 - Add support for preview mode in VideoPlayerState and VideoPlayerSurface. by @kdroidFilter in #145
- Add websupport via new WebElementApi by @kdroidFilter in #146
- Fixed loading Video files with no extension on Mac by @3llomi in #148
- Refine video player frame processing and cleanup logic by @kdroidFilter in #150
- Video player state interface by @duongphuhiep in #147
New Contributors
- @3llomi made their first contribution in #148
- @duongphuhiep made their first contribution in #147
Full Changelog: v0.8.5...v0.8.6
0.8.5
What's Changed
- Bump io.github.kdroidfilter:platformtools.darkmodedetector from 0.6.1 to 0.6.2 by @dependabot[bot] in #119
- Bump jna from 5.18.0 to 5.18.1 by @dependabot[bot] in #121
- Fixed opening
file:URIs without authority on macOS by @boiler23 in #123
New Contributors
Full Changelog: v0.8.4...v0.8.5
0.8.4
What's Changed
- Bump jna from 5.17.0 to 5.18.0 by @dependabot[bot] in #118
Full Changelog: v0.8.3...v0.8.4
0.8.3
What's Changed
- Update Compose to 1.9.0 and Kotlin to 2.2.20 by @kdroidFilter in #114
- Enhance error handling and stability for Android VideoPlayer by @kdroidFilter in #116 Fix #108 and #109
- Add HLS support for MacOS by @kdroidFilter in #117
Important
WASM (Compose Web) — Important:
The WASM target is broken starting with version 0.8.3. It needs a complete reimplementation using the new interop API introduced in Compose 1.9.0. Unfortunately, I don’t have time to rewrite it right now and, since the WASM target is still alpha, I’m leaving it as-is for the time being. If you’d like to support this library financially to help deliver proper WASM support, HLS support on Windows, and other essential video player features, please reach out. This is a substantial amount of work, and your support would make a real difference.
Full Changelog: v0.8.2...v0.8.3
0.8.2
What's Changed
- Bump kotlin from 2.2.0 to 2.2.10 by @dependabot[bot] in #103
- Optimize memory management and performance in Windows and Mac video player. by @kdroidFilter in #106
Full Changelog: v0.8.1...v0.8.2