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.appdoes the same from Terminal. - Bundle
org.maclc.MacLC. Self-contained: 143 libraries inContents/Frameworkswith every reference rewritten to@loader_path; their licences inContents/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
libvlccorewith 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-presentationsets 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-mode0–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.
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-factor2–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_dialoguefilter. 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
airplaystream output: MacLC serves the video as HLS (fragmented MP4, the audio as anEXT-X-MEDIArendition) 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-*.txtand 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.
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.shandbuild-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.