Skip to content

Releases: ravarage/vibeplayer

Vibe Player 0.6.0

Choose a tag to compare

@ravarage ravarage released this 16 Oct 10:36

Vibe Player v0.6.0

Vibe Player is a personal Android video player built on libmpv, featuring MX Player-style touch gestures, high-fidelity styled ASS subtitles, hardware decoding via MediaCodec, and optimized software AV1 decoding via dav1d. Developed for the POCO X5 Pro 5G and published as is.

What's new in 0.6.0

  • Faster start-up: ships a baseline profile generated on the device, so the browser and player start from precompiled code.
  • HDR output (experimental, off by default): on Vulkan gpu-next, HDR10/HLG clips play as real HDR (10-bit PQ swapchain, BT.2020 PQ layer, window HDR mode); the window returns to SDR in PiP, on exit and for SDR files.
  • Quality mode: playback mode toggle mid-file keeps position and tracks.
  • Background audio on Android 17: checked with audio hardening on (Home + screen off, media keys, auto-advance, focus loss and regain, PiP). Screen-off no longer stops PiP playback when background audio is on; closing the mini player still pauses.
  • Stability: native (JNI) null and exception checks, callbacks dropped after the player is released, settings recover from a corrupt file, MediaStore permission and missing-column errors handled, database migration tests.
  • Thumbnails: clips whose keyframes are all black (fade-in, long GOP) now get a real frame instead of a black thumbnail.
  • Thermal and back handling: thermal step-down and predictive back checked on the device.

Highlights

  • Tuned Native Libraries: Ships tuned native libraries compiled with -O2 -mcpu=cortex-a78 -flto=thin optimized specifically for the Snapdragon 778G (Cortex-A78 big cores), reducing frame drops in demanding software decoding (AV1 4K).
  • Format & Renderer Selection: Auto renderer mode detects format before playback begins and selects the measured optimal configuration from an Adreno driver benchmark table (H.264 on Vulkan gpu-next copy-back, HEVC and VP9 on OpenGL ES zero-copy, AV1 on Vulkan gpu software dav1d) with an automatic safety fallback chain (Vulkan -> OpenGL ES -> software decoding).
  • Vulkan Video Output: Experimental Vulkan renderer support (vo=gpu-next / vo=gpu) with automatic fallback to OpenGL ES on failure.
  • Picture-in-Picture & Auto-Play: Native PiP mini player with aspect ratio clamping and seamless auto-advance to next file in the folder.
  • Background Playback (beta): Foreground PlaybackService supporting background audio with audio focus ducking (30%) and Android MediaStyle notification controls.
  • External Subtitle Loading (SAF) (P4-14): Load external subtitles (.srt, .ass, etc.) through the system document picker via 'Load subtitle file…' in the subtitle sheet, with automatic track re-selection and persistence across player reopen.
  • Subtitles & Audio: Subtitle and audio delay sync adjustments (-/+ 50 ms) saved per file, global subtitle appearance controls (font size, position, ASS override), and per-folder track memory with default languages.
  • Display Refresh Rate Adaptation (P10-01): Surface.setFrameRate integration providing seamless display refresh rate voting matching video container framerate (e.g. 23.976/24 fps) without mode disruption.
  • Thermal Throttling Adaptation (P10-02): PowerManager thermal status monitoring with stats overlay display and automatic quality step-down under thermal pressure.
  • Display Cutout / Edge-to-Edge (P10-03): Edge-to-edge rendering under display cutout (LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS) utilizing full display in zoom/crop mode with cutout-safe padding for player controls.
  • Predictive Back Navigation (P10-04): Audited back handling with enableOnBackInvokedCallback supporting modern Android predictive back gestures across all screens and modal sheets.
  • Exit Diagnostics (P10-05): Historical process exit reason analysis via ActivityManager.getHistoricalProcessExitReasons, logged to VibeExit on startup and surfaced in Settings About.
  • Touch Gestures: Volume, brightness, swipe-to-seek, double-tap skip, pinch-to-zoom/pan, lock controls, haptic feedback, and hold for fast playback (beta).
  • Post-Processing Shaders (beta): Anime4K v4.0.1 Fast presets (Modes A, B, C) and Snapdragon GSR v1 spatial upscaler.
  • Browser Library: MediaStore browser with continue-watching shelf, progress bars, and libmpv software thumbnail extraction for 10-bit HEVC and AV1 clips.
  • Stall Recovery: Automatic B-08 stall watchdog detecting H.264 zero-copy decoder start stalls and recovering via software decode on a fresh surface.

Requirements

  • OS & Architecture: Android 17 (SDK 37) on arm64-v8a. The app is compiled exclusively for 64-bit ARM (minSdk = targetSdk = compileSdk = 37).
  • Tested and tuned on the POCO X5 Pro 5G (Snapdragon 778G).

Install and Update

  • Signing Key: Both debug and release builds are signed with the developer's local Android debug key (~/.android/debug.keystore).
  • Updates will install in-place and preserve watch history and database settings when updating over an existing install signed with the same key.
  • If you previously installed a build signed with a different key, you must uninstall the existing app first (which will erase app data).

Known Issues

  • B-08 Start Stall (H.264 zero-copy): H.264 zero-copy decoding occasionally stalls upon initial frame display; the built-in watchdog recovers automatically by reloading in software on a fresh surface without ANR.
  • Vulkan Experimental with Fallback: The Vulkan renderer requires Vulkan 1.2+ driver support. If Vulkan fails or is unsupported, playback automatically falls back to OpenGL ES.
  • HEVC 10-bit 4K Drops: Frame rate / operating-rate hint to MediaCodec mitigates drops on tested clips; further tuning and power profiling remain active.

License

Vibe Player is licensed under GPL-3.0-or-later. Bundled third-party notices and source instructions are in THIRD_PARTY_NOTICES.md.

Vibe Player 0.5.0

Choose a tag to compare

@ravarage ravarage released this 15 Oct 17:45

Vibe Player v0.5.0

Vibe Player is a personal Android video player built on libmpv, featuring MX Player-style touch gestures, high-fidelity styled ASS subtitles, hardware decoding via MediaCodec, and optimized software AV1 decoding via dav1d. Developed for the POCO X5 Pro 5G and published as is.

Highlights

  • Tuned Native Libraries: Ships tuned native libraries compiled with -O2 -mcpu=cortex-a78 -flto=thin optimized specifically for the Snapdragon 778G (Cortex-A78 big cores), reducing frame drops in demanding software decoding (AV1 4K).
  • Format & Renderer Selection: Auto renderer mode detects format before playback begins and selects the measured optimal configuration from an Adreno driver benchmark table (H.264 on Vulkan gpu-next copy-back, HEVC and VP9 on OpenGL ES zero-copy, AV1 on Vulkan gpu software dav1d) with an automatic safety fallback chain (Vulkan -> OpenGL ES -> software decoding).
  • Vulkan Video Output: Experimental Vulkan renderer support (vo=gpu-next / vo=gpu) with automatic fallback to OpenGL ES on failure.
  • Picture-in-Picture & Auto-Play: Native PiP mini player with aspect ratio clamping and seamless auto-advance to next file in the folder.
  • Background Playback (beta): Foreground PlaybackService supporting background audio with audio focus ducking (30%) and Android MediaStyle notification controls.
  • External Subtitle Loading (SAF) (P4-14): Load external subtitles (.srt, .ass, etc.) through the system document picker via 'Load subtitle file…' in the subtitle sheet, with automatic track re-selection and persistence across player reopen.
  • Subtitles & Audio: Subtitle and audio delay sync adjustments (-/+ 50 ms) saved per file, global subtitle appearance controls (font size, position, ASS override), and per-folder track memory with default languages.
  • Display Refresh Rate Adaptation (P10-01): Surface.setFrameRate integration providing seamless display refresh rate voting matching video container framerate (e.g. 23.976/24 fps) without mode disruption.
  • Thermal Throttling Adaptation (P10-02): PowerManager thermal status monitoring with stats overlay display and automatic quality step-down under thermal pressure.
  • Display Cutout / Edge-to-Edge (P10-03): Edge-to-edge rendering under display cutout (LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS) utilizing full display in zoom/crop mode with cutout-safe padding for player controls.
  • Predictive Back Navigation (P10-04): Audited back handling with enableOnBackInvokedCallback supporting modern Android predictive back gestures across all screens and modal sheets.
  • Exit Diagnostics (P10-05): Historical process exit reason analysis via ActivityManager.getHistoricalProcessExitReasons, logged to VibeExit on startup and surfaced in Settings About.
  • Touch Gestures: Volume, brightness, swipe-to-seek, double-tap skip, pinch-to-zoom/pan, lock controls, haptic feedback, and hold for fast playback (beta).
  • Post-Processing Shaders (beta): Anime4K v4.0.1 Fast presets (Modes A, B, C) and Snapdragon GSR v1 spatial upscaler.
  • Browser Library: MediaStore browser with continue-watching shelf, progress bars, and libmpv software thumbnail extraction for 10-bit HEVC and AV1 clips.
  • Stall Recovery: Automatic B-08 stall watchdog detecting H.264 zero-copy decoder start stalls and recovering via software decode on a fresh surface.

Requirements

  • OS & Architecture: Android 17 (SDK 37) on arm64-v8a. The app is compiled exclusively for 64-bit ARM (minSdk = targetSdk = compileSdk = 37).
  • Tested and tuned on the POCO X5 Pro 5G (Snapdragon 778G).

Install and Update

  • Signing Key: Both debug and release builds are signed with the developer's local Android debug key (~/.android/debug.keystore).
  • Updates will install in-place and preserve watch history and database settings when updating over an existing install signed with the same key.
  • If you previously installed a build signed with a different key, you must uninstall the existing app first (which will erase app data).

Known Issues

  • B-08 Start Stall (H.264 zero-copy): H.264 zero-copy decoding occasionally stalls upon initial frame display; the built-in watchdog recovers automatically by reloading in software on a fresh surface without ANR.
  • Vulkan Experimental with Fallback: The Vulkan renderer requires Vulkan 1.2+ driver support. If Vulkan fails or is unsupported, playback automatically falls back to OpenGL ES.
  • HEVC 10-bit 4K Drops: Frame rate / operating-rate hint to MediaCodec mitigates drops on tested clips; further tuning and power profiling remain active.

License

Vibe Player is licensed under GPL-3.0-or-later. Bundled third-party notices and source instructions are in THIRD_PARTY_NOTICES.md.