How We Built a Real-Time LED Content Management System in Rust for Live Sports
Brihmanas by InfieldSports — an AI-enabled LED perimeter control system powering BCCI/IPL venues with zero-latency sponsor playback, ICC-compliant blackouts, and complete audit logging.
Build a Real-Time System with Rust
Six Problems That Demanded a Rust Rewrite
Managing 500+ LED cabinets across perimeter boards, sight screens, and ribbon boards simultaneously during live matches — every pixel accounted for.
ICC-mandated pavilion end blackout before bowler run-up — millisecond-accurate timing required with zero margin for error during live broadcast.
Sponsor contracts demand proof-of-play with second-accurate timestamps for every ad displayed — legal liability for missed impressions.
Zero tolerance for black screens — system must fail-safe to prestored sponsor creatives instantly if any component fails during a live match.
Legacy C++/Qt system was single-threaded, suffering 3-4 crashes per tournament during peak load from undefined behavior and memory leaks.
4K content across multiple HDMI outputs without frame drops — each output layer independently controlled for pixel-accurate positioning.
Three Pillars That Made Rust the Only Choice
Zero-Cost Abstractions
Real-time frame rendering at <8ms per frame. No garbage collector means no random pauses during live broadcast. C++ gave us 45ms average with spikes to 200ms during GC-equivalent memory management.
Memory Safety Without Runtime Cost
The legacy C++ system had undefined behavior bugs causing mid-match crashes. Rust's borrow checker eliminates use-after-free, double-free, and data races at compile time. Zero crashes in 2 full IPL seasons.
Fearless Concurrency
Multi-HDMI output requires true parallelism. Rust's ownership model lets us run timeline engine, content pipeline, output manager, and compliance engine on separate threads without locks or race conditions.
5-Layer System Architecture
Timeline Engine
Tokio async runtime, frame-accurate scheduling, timecode sync, Adobe Premiere-style linear timeline
Content Pipeline
Zone-based pixel distribution, multi-layer compositing, alpha channel support, content stitching
Output Manager
Multi-HDMI routing, independent layer control, XY pixel positioning, 4K60fps rendering
Compliance Engine
ICC blackout rules engine, auto-failover to prestored creatives, rule-based triggering
Audit System
Every frame logged with timestamp + zone + content ID, auto-generated sponsor reports, email distribution
Built for Live Broadcast Reliability
Timeline-Based Playback
Adobe Premiere-style linear timeline with timecode, slider play bar, and pre-programmed content scheduling for entire match durations.
Zone Creation
LED cabinet pixel math with auto-adjust pixel distribution and zone sets management for complex perimeter board configurations.
Content Stitcher
Pixel distribution by zones, title creation, content resizing, and real-time content replacement without playback interruption.
Multi-Layer Output
Each layer routes to separate HDMI output with adjustable Left/Top XY positioning and synchronized layer control.
Cabinet Numbering
Alternating colors with animation, outline boxes, dual color pickers, and font size control for LED cabinet identification.
Sun Shade Control
Gradient brightness per zone, angled shade at start/end positions, and panel-based shade zones for outdoor visibility.
Blackout Overlays
6+ overlay layers with pixel-level positioning, toggle buttons for enable/disable/swap to meet ICC compliance instantly.
Match Timer Clock
API-syncable timer with VS card + brand logo, customizable font/color/size, and real-time data linking.
<8ms
Frame Latency
vs 45ms legacy0
Mid-Match Crashes
2 full seasons500+
LED Cabinets Managed
4K60fps
Multi-Output
Before vs After: C++ Legacy to Rust
Before (C++ Legacy)
- 45ms average frame latency
- Memory leaks after 4-hour sessions
- 3-4 crashes per tournament
- Manual blackout timing (human error)
- No audit trail for sponsor accountability
After (Rust)
- <8ms average frame latency
- Zero memory leaks — ownership model
- Zero crashes in 2 full IPL seasons
- Automated ICC-compliant blackouts
- Complete audit trail with second-accurate timestamps
Automated Match Reports for Every Stakeholder
Auto-generated reports sent to all stakeholders and sponsorship managers after every match — with a review-before-send option for match organizers.
Ad Timing Precision
Start and end time of each ad displayed, accurate to the second. Contractual proof-of-play for every sponsor.
Match & League Totals
Total number of ads played per match and per league. Ad count per total playlist duration for billing accuracy.
Crucial Moment Tracking
Ads displayed during crucial moments — goals, penalty kicks, team-wise goal reports for premium sponsor placements.
What Powers Brihmanas
Language
Rust (stable channel)
Async Runtime
Tokio (multi-threaded)
Graphics
wgpu with Vulkan backend
Video Decode
FFmpeg bindings via ffmpeg-next crate
GPU Acceleration
NVIDIA CUDA for decode
Formats
MOV, MP4, H.264, Apple ProRes, AVC, JPG, PNG, Alpha
Desktop UI
Tauri (Rust-native)
Reliability
Main + Backup server auto-sync
"Cartoon Mango was great to work with. They improvise and provide 24X7 support."— Gaurav Saxena, Media Manager, BCCI
Building Real-Time Systems? Let's Talk Rust.
Share your real-time challenge. We'll respond with an architecture plan and performance projections — not a sales pitch.
- Real-time systems architecture review
- Timeline and cost estimate
- Engineering-first conversation, no fluff
Your information is secure. We never share your data.
Common Questions
Rust gave us C++-equivalent performance with compile-time memory safety. The legacy C++ system had undefined behavior bugs that caused mid-match crashes — use-after-free and data races that only manifested under peak load. Rust's borrow checker eliminates these entire categories of bugs at compile time, while maintaining the same zero-cost abstractions and direct hardware control that C++ provides. After switching, we achieved zero crashes across 2 full IPL seasons.







