← Back to Sebiu Labs
WHEP Gateway — Changelog
Release notes for all versions. Setup guide · Buy license
Fixed
- DeckLink capture 1–5 fps performance bottleneck — FFmpeg DeckLink input now requests 8-bit
uyvy422 capture (-raw_format uyvy422) instead of accepting the card's default 10-bit v210. Previously a 10-bit SDI source forced FFmpeg to unpack v210 to yuv420p in software on every frame, starving both software (libx264 at ~1 fps) and hardware (VAAPI at ~5 fps) encoders. The BMD card now downconverts to 8-bit at capture time, restoring full 50 fps encoding. Also adds explicit -video_input sdi and -audio_input embedded for unambiguous SDI source selection.
- FFmpeg-OMT failed to load on ISO appliance — SVT-AV1 encoder library (libSvtAv1Enc.so.3) was missing from the bundled libs, causing ffmpeg to fail at runtime. Health endpoint reported “wrong ffmpeg version” and the DeckLink / AJA Settings tabs never appeared after entering the Ultra license key.
- LD_LIBRARY_PATH missing /opt/whep-gateway/libs — systemd service now sees the bundled native libs (libomt, libvmx, libSvtAv1Enc).
- FFmpeg-OMT binary not found on ISO appliance — discovery now searches /opt/whep-gateway/tools/ffmpeg in addition to tools/ffmpeg and /app/tools/ffmpeg.
- DeckLink playout low-latency mode toggle — Ultra-tier DeckLink playout can now toggle low-latency buffering from the Playout tab.
- Restream outputs lost on channel edit — editing a channel no longer drops configured RTMP/SRT restream destinations.
- AJA genlock hint rendering — UI hint now wraps correctly in JSX fragment.
Download ISO (1.1 GB) →
New
- AJA Corvid 88 Capture ULTRA — full GStreamer-based capture pipeline for AJA Corvid and Kona cards. Supports 10-bit v210 SDI with automatic format conversion. No FFmpeg AJA support needed — uses native NTV2 SDK via GStreamer ajasrc plugin.
- AJA Source Discovery — NTV2 device nodes (/dev/ajantv2*) now appear as selectable sources in the channel creation dialog. Three-tier detection: PCI hardware → NTV2 SDK → V4L2.
Security & Hardening
- DVR OOM prevention — corrupt or hostile segment files can no longer trigger unbounded memory allocations. Frames are now capped at 4 MiB.
- Ultra tier enforcement — DVR, AJA playout, and DeckLink playout API endpoints now correctly require an Ultra license. Previously, some status/stop/log endpoints were unguarded.
- Path traversal protection — channel IDs containing path separators or “..” are now rejected in DVR and playout subsystems.
- DVR playback DoS mitigation — per-channel session cap (10 concurrent) and playback speed cap (16x). Supports Authorization: Bearer header for password delivery.
- AJA installer TOCTOU fix — uploaded .deb files now use unique temp paths instead of a fixed filename. dpkg-query lookups are cached with a 60s TTL and 5s exec timeout.
Fixed
- Subprocess leak in AJA/DeckLink playout — the cancel function is now assigned before the goroutine launches, closing a window where stop() could miss cancellation.
- DeckLink double-Wait race — removed duplicate cmd.Wait() call that could panic on the second invocation.
- FFmpeg stderr log leak — /tmp log files are now cleaned up on all exit paths, including early returns during playout startup.
- AJA not shown in channel dialog — frontend was missing ajaAvailable state from health API, so AJA sources never appeared in the dropdown even when detected.
- AJA device count always 0 — settings page now correctly counts NTV2 devices instead of only counting V4L2 devices.
- AJA source probe failure — FFmpeg probe was running against GStreamer-only NTV2 devices and marking them as no-video. Probe now skips FFmpeg for AJA NTV2 sources.
- GStreamer pipeline v210 format — Corvid 88 outputs 10-bit v210 but pipeline forced UYVY caps. Added videoconvert to handle any AJA output format.
Download ISO (1.1 GB) →
New
- DVR Recording & Playback ULTRA — record live channels to disk with configurable retention time and storage quota. Rewind any channel from the watch page — drag the timeline to scrub backwards, with 1x/2x/4x playback speed and instant seek (~50ms). Uses WebSocket + WebCodecs for DVR playback alongside live WebRTC.
- DeckLink Capture ULTRA — Blackmagic DeckLink SDI/HDMI capture card support. Auto-detected after driver install.
- AJA Capture ULTRA — AJA Kona and Corvid capture cards via V4L2. Auto-detected after driver install.
- Software RAID — setup wizard now offers RAID 0/1/5/10 when multiple disks are detected, recommended for DVR recording workloads.
- File Recording ULTRA — one-click MKV recording from the dashboard (REC button). Saves H.264+Opus to local storage.
Improved
- NDI timestamp handling — fixed regression where NDI sources would fail with “frame duplication too large” after removing wall-clock timestamps for OMT sources.
- Source probe resilience — channels no longer fail to start when source probe returns incomplete results; only confirmed audio-only sources are blocked.
- DVR seek precision — keyframe search scans up to 5 seconds forward to handle audio-before-keyframe segment layouts.
- Audio fade-in after DVR seek — 5-frame linear ramp eliminates Opus decoder convergence pops when rewinding.
Download ISO (924 MB) →
Alpha release — DVR playback, DeckLink and AJA capture are new features under active testing.
Fixed
- Install-to-disk boot failure — installed system would not boot from disk due to missing
grub2-common package (provides grub-install and update-grub), missing /usr/sbin in chroot PATH, and no NetworkManager connection profiles for disk boot.
- Setup wizard not launching — bash reads
.bash_profile before .profile; the live system’s .bash_profile prevented the wizard from running on first boot.
- SRT audio resync on reconnect — improved audio filter with
first_pts=0 for PTS normalisation and min_hard_comp_distance=100000 for faster jitter recovery.
Improved
wizard CLI command — type wizard at the console to re-run the setup wizard at any time.
- Git commit hash shown in dashboard header and settings page.
- Install-to-disk now regenerates machine-id, configures NetworkManager DHCP, disables OS prober, and verifies GRUB config.
Download ISO (924 MB) →
Fixed
- Channel status stuck on “Starting” — WebSocket
/ws endpoint required auth, but browsers cannot send auth headers on WS connections, so the WS was permanently dead and channel_status broadcasts never reached the frontend. Fixed by removing auth from /ws (read-only broadcast, no mutations).
ws.onerror killed polling — the WS error handler set backendOnline=false, which could pause the 3-second polling fallback. Fixed by making the health check the authoritative source for backend connectivity.
- Install-to-disk on mounted partition — the persist script auto-formats and mounts the target disk on live boot. Install-to-disk now stops services and unmounts the partition before repartitioning.
Improved
- Multiview auto-play — tiles now auto-assign running channels on page load instead of requiring manual selection per tile.
- Setup wizard hardening —
safe_addstr prevents curses crashes on small terminals, tty reopen fixes input on serial consoles, scrollable menus handle long option lists.
- Profile-based wizard launch replaces systemd service (eliminates getty conflict on tty1).
- Browser auth popup no longer appears for WHIP ingest endpoints.
New
- UEFI boot support — ISO now boots on both BIOS and UEFI systems with dual syslinux + GRUB EFI bootloaders
- Version number displayed in the browser dashboard header
- Mobile fullscreen support — fullscreen button now works on iOS Safari
Fixed
install_to_disk (underscores) now works as alias for install-to-disk
- Removing WHEP password while editing codec no longer prevents channel from starting
- UEFI install-to-disk correctly partitions GPT with EFI System Partition
- Static IP wizard — nmcli connection name parsing fixed
- AV1 frame stutter resolved — uses actual timestamps instead of fixed 33ms
- AV1 audio made optional with
-map 0:a?
Improved
- Codec fallback display — shows actual codec in use when configured codec unavailable
- Error toasts in dashboard when channel start/stop fails
- Auto-restart broadcasts status update to all connected browsers
Download ISO (912 MB) →
New
- WHIP Output (Alpha) — push channels to remote WHIP ingest endpoints (CDNs, streaming platforms, OME, etc.)
- Per-channel WHIP output configuration from the web UI — endpoint URL, bearer token, enable/disable
- Auto-reconnect with exponential backoff when WHIP endpoints go down
- REST API for WHIP output management (CRUD + start/stop)
- WHIP outputs reuse existing encoded tracks — zero extra CPU/GPU overhead
Improved
- Channel list now sorted alphabetically — no more jumping positions on refresh
- SDP codec negotiation constrained to channel’s actual codec — prevents remote servers picking wrong codec
Fixed
- SVT-AV1 v1.7.0 library symlink fix — ISO was loading system v1.4.1 instead of bundled v1.7.0, breaking AV1 encoding
- FFmpeg rebuilt with clean SVT-AV1 v1.7.0 linkage
Download ISO (906 MB) →
Fixed
- AV1 encoding now works correctly — upgraded SVT-AV1 to v1.7.0 (v1.4.1 had broken rate control)
- AV1 WebRTC playback fixed — upgraded Pion WebRTC to v4.2.9 for proper AV1 RTP packetization
- AV1 scene change detection enabled (scd=1) for better quality at lower bitrates
- Keyframe interval options limited to 1–2 seconds (appropriate for live WHEP streaming)
- OMT identity color matrix now correctly converted to BT.709 for SVT-AV1
Download ISO (877 MB) →
Fixed
- Install-to-disk now correctly removes all live-boot packages and initramfs hooks, enabling reliable disk boot
- Trial license resets automatically after install-to-disk so the 30-day trial starts fresh on the new system
- High-bitrate streaming stability on streams above 20 Mbps
- libvpx compatibility for VP8/VP9 WebRTC output
Improved
- Setup wizard streamlined — install-to-disk is now a separate CLI command (
install-to-disk)
- ISO file size reduced to 903 MB
Download ISO (903 MB) →
New
- License activation via Keygen.sh — activate monthly or lifetime licenses from the web UI
- 30-day free trial with full functionality, no license key required
- Stripe-powered checkout with automatic license key delivery via email
- License key recovery page for retrieving keys by email
Improved
- Web UI redesign with cleaner settings panel and license management
- Improved SRT ingest stability on high-bitrate streams
Download ISO (901 MB) →
New
- AV1 and VP9 codec support for WebRTC output
- Hardware-accelerated transcoding — Intel QSV, NVIDIA NVENC, AMD AMF
- Multi-viewer: multiple browsers can watch the same channel simultaneously
Improved
- Reduced WebRTC glass-to-glass latency to under 200ms on local networks
- Better automatic codec negotiation with browsers
New
- Web-based dashboard for channel management and monitoring
- REST API for programmatic channel control
- Per-channel configuration — resolution, bitrate, codec settings
Improved
- More reliable OMT source discovery on complex networks
- Lower memory usage when running multiple channels
New
- HEVC (H.265) input support alongside H.264
- Audio passthrough — AAC and Opus output to browsers
- HTTPS support with self-signed certificate generation
Fixed
- Resolved intermittent black frames on stream start
- Fixed audio sync drift on long-running streams
Initial Release
- Debian 12 live appliance — boot the ISO and go
- OMT source auto-discovery on the local network
- WebRTC WHEP output — stream to any modern browser with no plugins
- H.264 transcoding with configurable bitrate and resolution
- Sub-second latency video delivery
- Simple web UI for basic configuration