How umbrella22/vesper works
Vesper is a native-first cross-platform playback SDK. An app integrates a platform host, supplies media, and controls playback; native mobile stacks or the desktop Rust pipeline perform playback while shared Rust modules align runtime semantics. The repository also provides offline downloads, playlists, preload, plugin extension, rendering, and Android external playback. Edges reflect README-documented relationships and the sampled iOS native-frame command flow; unsampled subsystem wiring is intentionally not inferred.
Main entry points: src/lib.rs Playback runtime · src/lib.rs Android host kit · src/lib.rs iOS host kit · src/lib.rs Desktop host
Components 23
Host integrations
- Android host kit
crates/platform/mobile/player-platform-android/src/lib.rs - iOS host kit
crates/platform/mobile/player-platform-ios/src/lib.rs - Desktop host
crates/platform/desktop/player-host-desktop/src/lib.rs - C ABI
crates/ffi/player-ffi/src/lib.rs
Playback runtime
- Playback runtime
crates/core/player-runtime/src/lib.rs - Session model
crates/model/player-model/src/lib.rs - Native media stacks
- FFmpeg backend
crates/backend/player-backend-ffmpeg/src/lib.rs - CPAL audio output
crates/audio/player-audio-cpal/src/lib.rs - WGPU renderer
crates/render/player-render-wgpu/src/lib.rs
Media workflows
- Playlist coordination
crates/core/player-playlist/src/lib.rs - Preload policy
crates/core/player-preload/src/lib.rs - Offline downloads
crates/core/player-download/src/lib.rs - DASH HLS bridge
crates/core/player-dash-hls-bridge/src/lib.rs
Extensions
- Plugin contracts
crates/plugin/player-plugin/src/lib.rs - Plugin loader
crates/plugin/player-plugin-loader/src/lib.rs - Decoder plugins
crates/plugin-decoder/player-decoder-mediacodec/src/lib.rs - Plugin CLI
crates/tools/player-cli/src/main.rs
External playback
- External playback
lib/android/vesper-player-kit-external-playback/src/main/java/io/github/umbrella22/vesper/player/android/external/VesperExternalPlaybackController.kt - Cast and DLNA
- Local HTTP relay
lib/android/vesper-player-kit-external-playback/src/main/java/io/github/umbrella22/vesper/player/android/external/internal/relay/VesperRelayServer.kt
Other components
- Host application
- Media source
Connections 28
- Host application → Android host kit: integrates
- Host application → iOS host kit: integrates
- Host application → Desktop host: integrates
- Host application → C ABI: calls
- Android host kit → Native media stacks: uses Media3
- iOS host kit → Native media stacks: uses AVPlayer
- Desktop host → Playback runtime: hosts
- Android host kit → Playback runtime: shares semantics
- iOS host kit → Playback runtime: shares semantics
- C ABI → Playback runtime: exposes
- Playback runtime → Session model: tracks sessions
- Desktop host → FFmpeg backend: uses
- FFmpeg backend → CPAL audio output: outputs audio
- FFmpeg backend → WGPU renderer: renders video
- Media source → Android host kit: provides media
- Media source → iOS host kit: provides media
- Media source → Desktop host: provides media
- Playback runtime → Playlist coordination: coordinates
- Playback runtime → Preload policy: applies policy
- Host application → Offline downloads: requests download
- Offline downloads → Media source: fetches media
- Offline downloads → DASH HLS bridge: bridges manifests
- Plugin contracts → Plugin loader: defines loadable contracts
- Plugin loader → Decoder plugins: loads plugin
- Host application → Plugin CLI: manages plugins
- Host application → External playback: requests routing
- External playback → Cast and DLNA: discovers and controls
- External playback → Local HTTP relay: serves adapted source