Skip to content

Tech specs

Everything, in detail.

The technical reference for MacLC 1.4: formats, standards, engines, measurements and options, as they are in the code.

RequirementsWhat you need

System
macOS 26 Tahoe or later. The bundled libraries require macOS 26; the interface code builds for macOS 13 and later.
Chip
Apple Silicon (M1 or newer). Intel Macs are not targeted or tested.
HDR
Any HDR video plays on any screen. Full HDR, and SDR to HDR, need a display with extended range: Liquid Retina XDR, Pro Display XDR or an external HDR display.
AV1 in hardware
M3 or newer (VideoToolbox, macOS 14 or later, checked at run time); dav1d in software elsewhere.
Optional
yt-dlp for web video and YouTube (brew install yt-dlp); SVP 4 Mac and VapourSynth for the SmoothVideo Project engine.
Reference machine
Developed and measured on an M3 Max (Mac15,9) with macOS 26.2.

DownloadVersion 1.4

File
maclc-1.4.dmg, 58.4 MB, released October 10, 2026
SHA-256
f46161ed3c151dff00892140e7ae19914580e8b64902634f9776ce0b5b31bb05
Signature
Signed ad hoc, not notarised: macOS asks once for Open Anyway. xattr -dr com.apple.quarantine /Applications/MacLC.app does the same from Terminal.
Bundle
org.maclc.MacLC. Self-contained: 143 libraries in Contents/Frameworks with every reference rewritten to @loader_path; their licences in Contents/Resources/Licenses.
Source
github.com/OZBM/MacLC — GPL 2 or later; libVLC LGPL 2.1 or later.

PlaybackVLC’s engine, kept whole

Engine
VLC 4.0’s libvlccore with its demuxers, decoders, filters and protocols, and FFmpeg merged in.
Containers
MKV and WebM (libmatroska), MP4, MOV, AVI, MPEG-TS, Ogg, FLV and the rest of VLC’s list.
Video
H.264, HEVC (8, 10 and 12-bit; above 10-bit decoded to a 16-bit buffer), AV1 (dav1d; VideoToolbox on M3 and newer), VP9, ProRes, MPEG-2 and more. Hardware decoding through VideoToolbox, P010 10-bit by default.
Audio
AAC, ALAC, FLAC, MP3, Opus, Vorbis, AC-3 and E-AC-3, PCM and more; audio effects, equaliser and track synchronisation panels.
Subtitles
Text subtitles (SRT and others) in any encoding, ASS/SSA through libass; kept at SDR white over HDR.
Sources
Files, folders, Finder “Open With”, drag and drop, HTTP(S) streams, network services in Browse, web pages through yt-dlp, .torrent files and magnet links.
Removed
Podcasts and the radio directory (since 1.1). RSS feeds still open as playlists.

HDRFormats and presentation

Formats
Dolby Vision profiles 5, 7 (base layer and RPU), 8.1, 8.4; HDR10+ (ST 2094-40); HDR10 (ST 2084, ST 2086, CTA-861.3); HLG.
Presentation
Automatic, Dolby Vision, HDR10+, HDR10, HLG or SDR per file, chosen by the HDR advisor and shown on the format card; --maclc-hdr-presentation sets the default.
Picture modes
Accurate (exact to 90 % of peak, PQ shoulder), Balanced (ITU-R BT.2390 EETF), Bright (up to 1.6× lift); identity when the master fits.
Playback modes
Automatic, Always use HDR, Convert HDR to SDR, Turn HDR off (--macosx-hdr-mode 0–3).
Reference white
PQ anchored at 100 cd/m² at SDR white; HLG via the BT.2100 OOTF for a 1,000-nit reference display or fitted to the display.
Headroom
Potential, current and reference EDR headroom re-read on screen, window and colour-profile changes; manual override with --macosx-edr-headroom.
Engines
Native (AVSampleBufferDisplayLayer, EDR); libplacebo on OpenGL 4.1 core with 64-bit float colour; MacLC’s Metal renderer with Dolby Vision RPU decoding, HDR10+ curves, tone curves, gamut mapping, scaling filters, 360° video and .cube LUTs.

The HDR pipeline in detail →

SDR to HDRInverse tone mapping on the native path

Rule
Linear light, relative to SDR white: identity at and below ½, quadratic above with value and slope continuous, f(1) = the peak. Applied to max(R, G, B), pixel scaled (hue kept).
Output
64-bit half-float linear, BT.2020, 1.0 = SDR white; peak = min(setting, current headroom). PQ and HLG sources skipped.
Levels
Auto, Fast, Balanced, High, Maximum. High and Maximum: bilateral grid of gains predicted from a 256×256 thumbnail by a network run with MPSGraph (0.45 and 0.53 ms a frame on M3 Max).
Controls
Switch and popover on the playback bar (⌥-click toggles), Video › SDR to HDR, Settings › HDR & Colour; Hold to Compare or hold M.
Options
--macosx-sdr-to-hdr, -quality, -boost (1–16, default 4), -midtones, -saturation, -deband, -protect.

Motion interpolationThe maclc_frc video filter

Engines
Automatic; Apple optical flow (VTFrameRateConversion: Balanced, Quality); low latency (VTLowLatencyFrameInterpolation, up to 720p); motion compensation (VTMotionEstimationSession true-motion search at 960×540, overlapped block compensation with an occlusion test in Metal); blend; RIFE v4.25 on Core ML (bundled, MIT); SmoothVideo Project through VapourSynth.
Targets
Match the display, 60 fps, 120 fps, twice the source; up to 5× by default (--maclc-frc-max-factor 2–8).
Budget
Every pass is timed against the frame budget; after half a second of overshoot the filter steps down and finally stops interpolating.
Measured (M3 Max, 24 fps source)
1080p, four extra frames: motion 7–11 ms, blend 2 ms, optical flow 58 ms. RIFE at 960×576: 12.9–14.8 ms a pass (28.9 dB against the true middle frame, vs 21.6 dB for a cross-fade).
Options
--maclc-frc-engine, -target, -overrun, -rife, -rife-model, -rife-scale, -rife-compute, -me-scale, -svp-path; or --video-filter=maclc_frc.

AudioSound modes, equalizer and Voice Boost

Sound modes
Nine modes, in the style of Apple’s sound settings: Voice Boost, Night, Cinema, Music, Bass Boost, Spoken Word, Headphones, Small Speakers and Custom, each with an Intensity slider.
Equalizer
10-band equalizer on ISO centre frequencies (32 Hz to 16 kHz), Audio › Equalizer… (⌥⌘E) or the playback bar.
Voice Boost
Custom maclc_dialogue filter. 5.1 soundtracks: centre-channel rebalance (+7.4 dB dialogue advantage). Stereo: STFT centre dialogue extraction via Apple vDSP (1024 points, 16 ms latency) with 1–4 kHz voice band lift (+4.8 dB).
Limiter
Brickwall limiter at -1.5 dB placed after the EQ, compressor and dialogue stages to prevent clipping.

CastingAirPlay and Chromecast (beta)

AirPlay
New airplay stream output: MacLC serves the video as HLS (fragmented MP4, the audio as an EXT-X-MEDIA rendition) on your network, and AVPlayer sends it to the receiver over AirPlay.
Chromecast
VLC’s Chromecast stream output; receivers found with Bonjour.
Status
Beta. The Play On button (toolbar or Now Playing bar); control playback in MacLC or with your TV’s remote.
Upstream fixes
Clock forwarding (set_pcr) for reliable HLS segment slicing, the Chromecast demuxer no longer stops before the end, and the fragmented MP4 muxer flushes removed tracks.

Web video, YouTube and torrentsFile › Open Web Video (⌘U)

Web pages
yt-dlp, found by absolute path (Finder apps have no Homebrew PATH), run off the main thread with a deadline. Prefers a format that carries sound, else best video plus the audio as a second track; at equal size, the codec this Mac decodes in hardware. Bounded 1 MiB HTTP ranges for YouTube. The last ten links are kept locally.
YouTube section
Dedicated sidebar section with Home, Subscriptions, History, Watch Later, Liked Videos, playlists, channels and search. Runs on yt-dlp with --cookies <file> (file mode 0600) or --cookies-from-browser; extra options always placed before -- so an address can never be read as an option. Optional sign-in via Google private web view or browser session.
BitTorrent
libtorrent-rasterbar 2.x. BitTorrent start gate: waits for 20 s of film until swarm speed is known, then 10 to 90 s depending on how fast download is relative to film; plays anyway after two minutes. Adaptive buffer keeps a deadline window of two minutes (at least 48 MiB) ahead of the player. Player lead (PTS delay) follows the start buffer, capped at 10 s. Default trackers added. Interface reads a JSON snapshot twice a second with no libtorrent round trip. DHT routing table kept between launches so peers connect in seconds. Files of a torrent form a playlist (subtitles attach, episodes chain).
Integration
.torrent files from the Open panel, Browse and the Finder; magnet links pasted in Open Web Video. MacLC does not claim the magnet: URL scheme. Torrent items get no thumbnail, which would start a download.

LibraryHome, sections and Up Next

Engine
VideoLAN’s libmedialibrary and TagLib, statically linked; fetches off the main thread, coalesced updates, downsampled artwork, local thumbnails.
Screens
Home (hero, Continue Watching, Recently Added, Recently Played, albums), Videos, Shows, Artists, Albums, Songs, Genres, Favorites, Playlists, detail screens with Play and Shuffle, Browse.
Playback
Up Next inspector with chapters and drag-to-reorder; floating Now Playing capsule with a live picture; resume offered for media of 3 minutes or more, outside the first and last minute (or 5 %).
Badges
Dolby Vision, HDR10, HLG and 4K from the colour metadata read at indexing.
Interface
AppKit on Liquid Glass (sidebar, toolbar, inspector, Now Playing) with every toolbar command in the menu bar.

Add-ons & WatchStremio protocol and catalogs

Protocol
Stremio add-on protocol: manifest, catalogs (with search, genre and skip pagination), metadata, streams and addon catalogs.
Built-in
Cinemeta built in for posters, descriptions, cast and search. Official and Community directories.
Installation
Settings › Add-ons (Install in one click, Configure…, Remove) or “Install from Address…” supporting URLs and stremio:// links.
Discovery
Services filter narrows Home to chosen streaming services (Netflix, Apple TV+, Disney+, Prime Video, HBO Max, Hulu, Paramount+, Peacock, Crunchyroll, MUBI, Criterion Channel, Canal+, SkyShowtime, BBC iPlayer, Starz, Shudder…). Reads public catalogs of a community add-on installed in one click. Genre tiles. The Edit: editorial collections renewed every two weeks, matched against catalog add-ons (Cinemeta by default). Elastic shelves without scroll bars.
Choose a Version
Each stream of a title is decoded into plain facts: resolution, HDR, Dolby Vision, audio format (such as 5.1 or Atmos), language, size and peers, with filters. Interactive tips explain terms like HDR, Dolby Vision, seeds and peers.
History & resume
Favorites and History in sidebar under Watch; Continue Watching on Home. Resume positions remembered across app launches; Mark as Watched badge. Stored locally in ~/Library/Application Support/org.maclc.MacLC/Watch/library.json (atomic JSON). Watched counts from 92 %; under 15 s treated as mis-click.
Stream picker
Quality badges (4K, HDR, Dolby Vision, 1080p). Translates to magnet links (libtorrent 2.1), web video (yt-dlp) or direct HTTP streams.
Watch interface
Sidebar Watch section in native AppKit: Home carousel, shelves, Top 10 ranks, Movies and TV Shows grids, title pages with cast and episode stills.
Content
MacLC ships no films, series or streams. Third-party add-ons provide all catalogs.

InterfaceAppKit throughout

Materials
NSGlassEffectView on macOS 26; HUD material with a hairline elsewhere or under Reduce Transparency and Increase Contrast.
Controls
Liquid Glass capsule with SF Symbols, format and FPS badges, a scrubber that thickens under the pointer, monospaced-digit times; on-screen confirmations in a glass capsule (MacLCOSDView) with VoiceOver announcements.
Windows
Video windows fit the video’s native size, or its aspect ratio inside a tiled or zoomed frame; aspect locked while resizing.
Settings
One window, eight panes, search by label, description and keyword; 240 guarded configuration reads; startup self-check; VLC’s advanced tree still reachable.
Quitting
Leaving a torrent is bounded to 3 s. A watchdog in the launcher, 12 s after quitting starts, samples the threads to ~/Library/Logs/MacLC/quit-hang-*.txt and exits.
Design tokens
MacLCDesign: colours, type styles, spacing, radii, materials, symbols and motion as AppKit semantics; six metrics moved onto the 8-point grid (small rows 25 → 32 pt).
Accessibility
Accent colour, Light and Dark, Reduce Motion, Reduce Transparency, Increase Contrast, VoiceOver and full keyboard access.

Design in detail →

PrivacyWhat leaves your Mac

Telemetry
None. No analytics, no tracking, no crash upload.
Updates
The upstream updater feed is blanked, so the app never replaces itself with VLC.
Network
Only what you open: streams, web pages you paste (through yt-dlp) and torrents (peer-to-peer, like any torrent client).
Library & Watch
The catalogue, thumbnails, Watch history and resume positions (~/Library/Application Support/org.maclc.MacLC/Watch/library.json) stay in your user folder. YouTube session cookies are saved locally (mode 0600) and deleted on sign out. Nothing is sent to Hazen Studio.

Components and licencesBundled with the app

Engine
VLC 4.0 (libVLC LGPL 2.1+, the application GPL 2+), FFmpeg, dav1d, libass, FreeType, libmatroska, libplacebo, libtorrent-rasterbar and the other libraries listed in the app.
Static
libmedialibrary (LGPL 2.1+) and TagLib (LGPL 2.1 or MPL 1.1), built from checked sources by build-medialibrary.sh and build-taglib.sh.
Models
RIFE v4.25 (MIT, Practical-RIFE); SDR to HDR networks trained by Hazen Studio on Poly Haven CC0 photographs (LGPL).

StatusPublic beta

Checked
Built and run on the reference machine; HDR10, HLG and SDR tagging, the HDR modes and headroom override verified in the logs; 302 unit tests pass; release image built from tag 1.4 with C assertions compiled out.
Not yet
Extensive human review of the SDR to HDR look across films, and of the library with a large real collection, VoiceOver and mouse-driven drag and drop.
Known limits
No Vulkan backend on macOS (no windowing module for CAMetalLayer); the Dolby Vision RPU parser of the dovi-rpu-wip branch desynchronises at partition fields.
Report
GitHub issues: include your Mac, macOS version, display and the “What’s happening right now” panel of Settings › HDR & Colour.