Blog
Engineering deep dives, architecture decisions, and the story behind HorangPlayer.
Why We Built HorangPlayer
The story behind HorangPlayer — what's wrong with existing Mac video players and how we set out to fix it.
Inside the mpv Engine: Why We Chose libmpv
A deep dive into why we integrated libmpv as our playback engine and what it means for format support and performance.
The Dual-Path Rendering Architecture
How HorangPlayer uses Metal and OpenGL together — fast path for raw performance, full path for filters and HDR.
From Stutter to Smooth: Our Performance Journey
How we diagnosed and fixed video stuttering — from CPU-bound pixel conversion to GPU-accelerated rendering.
Playing Everything: MKV, WebM, and Beyond
How HorangPlayer achieves universal format support — every container, every codec, every audio format.
Smart Subtitles: SRT, ASS, and Automatic Matching
How HorangPlayer handles subtitles — from automatic file matching to styled ASS rendering with mpv's built-in engine.
SwiftUI Meets Video: Building a Native macOS Player
How we built a video player with pure SwiftUI — @Observable state, strict concurrency, and 16 composable managers.
Power Features: Bookmarks, A-B Loop, Filters, and More
A tour of HorangPlayer's unique features — timestamp bookmarks with thumbnails, A-B loop, real-time filters, and per-file settings.