UNITS / UNIT 01 / MNHR
DESKTOP MEDIA WORKBENCH
Media mastered in one app.
01.OVERVIEW
CASE FILE MNHR
Menhir is a Windows-first media player and broadcast workbench written in C++20. It puts a media player, an audio mixer, a broadcast studio and a recorder in one window and keeps them in sync.
Every tool is a panel. You can split, stack and resize panels, keep as many open as the job needs, and save the arrangement as a layout for playback, TV, recording or studio work.
- TYPE
- Desktop media player and broadcast workbench
- PLATFORM
- Windows 10 / 11 · x64
- LANGUAGE
- C++20
- STACK
- SDL3 · Dear ImGui (docking) · FFmpeg · miniaudio · D3D11 / OpenGL · SQLite
- SERVICES
- Cloudflare Worker with D1 and Stripe for billing (TypeScript)
- SIZE
- ≈64,000 lines of C++ across 25 source modules
- VERSION
- 1.0.0
NINE SUBSYSTEMS
09 ENTRIES
00
Playback
Picture and sound kept in step, 10-bit HDR color, and a compatibility mode for older PCs.
01
Karaoke
Synced lyrics rendered in time with the music, in their own dockable panel.
02
Audio console
One mixer for players, mics, system audio and network feeds, with EQ, effects, routing and per-input recording.
03
Studio
Scenes built from videos, cameras, browser pages, text and images, with a preview of the next scene and live transitions.
04
Docking
Split, resize and stack panels into tabs, then save layouts for different kinds of work.
05
Record
Shows, live channels, system audio and studio output, with scheduled recordings, instant replay and separate studio takes.
06
Publish
Go live to streaming platforms, or send video and music to TVs and speakers in the house.
07
Live TV
A multiview wall of channels, IPTV playlists and TV guide, pause and rewind live TV, and record any channel.
08
Live streaming
Multi-cam streamers in custom multiview panels, with live chat and emotes from every platform beside the players.
SCREENS
04 CAPTURES




HOW IT'S BUILT
25 SOURCE MODULES
The C++ source is split into modules, each with its own README. Grouped by what they do:
PLAYBACK AND MEDIA 05
- Core mediaPlayer, decoder, subtitles, lyrics, capture
- RendererOpenGL / D3D11 frame upload
- Audiominiaudio output, mixer buses, recording
- LibrarySQLite media library and metadata
- DevicesDirectShow devices and optical discs
BROADCAST 06
- StudioScene document model
- Stream publishingRTMP, SRT, WHIP, NDI targets
- OBS bridgeOBS-compatible websocket control
- CastingDLNA, Chromecast, AirPlay
- ChatTwitch, Kick and YouTube chat
- EffectsNVIDIA Maxine runtime
TV AND SHARING 02
- TV / DVRIPTV, XMLTV, DVR, timeshift
- SyncWatch Together host and relay
ACCOUNTS AND SERVICES 04
- AccountsYouTube and Kick OAuth
- Twitch accountDevice authorization
- BillingSubscription state client
- NetworkHTTP client and ranged file server
APPLICATION 08
- App shellSDL / ImGui / D3D11 bootstrap, updater
- UIDockable panels and layout state
- SettingsJSON settings
- PluginsManifests, registry, marketplace
- InternationalizationUTF-8 JSON catalogs
- SecurityCredential Manager and DPAPI
- PrivacyText and URL redaction
- UtilitiesLogging