Skip to content

Repository files navigation

VDisPlay 📺🔊

🇺🇸 English | 🇧🇷 Português

Latest Release Platform Latency Backend Frontend License: GPL v3

VDisPlay is a lightweight real-time video and audio monitor with sub-100ms latency, designed for developers, technicians, and gamers.

Built for HDMI USB capture cards and webcams, it provides a fast and direct way to inspect video output from game consoles, SBCs, embedded systems, DSLR cameras, and other streaming devices — without the complexity of full recording suites like OBS.

Gameplay screen

🙋 Why VDisPlay?

Most capture software is designed for recording or streaming.

VDisPlay was built for a different purpose:

  • Debugging video output
  • Monitoring hardware behavior in real time
  • Testing embedded systems
  • Inspecting console boot sequences
  • Low-overhead HDMI preview

Its focus is speed, simplicity, and minimal system overhead.


⚡ Core Features

  • Sub-100ms end-to-end latency
  • Minimal fullscreen preview interface
  • Real-time audio monitoring with selectable audio output devices (completely decoupled from video source for maximum stability)
  • Zero-latency audio mute/unmute (F12) without pitch distortion or connection drops
  • Dynamic resolution/FPS switching
  • Native GPU-accelerated rendering
  • Always-on-top mode
  • Instant screenshots
  • Stereo reconstruction fix for low-cost MS2109 capture cards
  • Brightness adjustment in real time
  • Safe startup mode for unstable capture devices
  • Bilingual interface (English / Português)

🖱️ Typical Use Cases

VDisPlay is especially useful for:

  • Debugging HDMI output from FPGA and embedded systems
  • Monitoring SBC boot output (Raspberry Pi, Orange Pi, etc.)
  • Inspecting retro console output
  • Previewing DSLR or HDMI camera feeds
  • Testing capture devices
  • Monitoring external devices without streaming overhead

🛠 Architecture

VDisPlay uses a hybrid architecture optimized for low latency.

🎨 Frontend (Flutter)

The UI layer is built in Flutter and uses native external textures to render video directly on the GPU.

This avoids expensive memory copies and reduces pressure on Dart's garbage collector.

⚙️ Native Backend (C)

The native kernel handles all critical I/O:

🖥️ Video — Media Foundation

  • Direct capture through IMFSourceReader
  • Native frame negotiation
  • Hardware-side color format negotiation (BGRA→RGBA, optimized 32-bit swap)
  • Thread-safe frame delivery via critical sections

🔊 Audio — WASAPI

  • Event-driven low-latency shared-mode monitoring with manual selection of reproduction/rendering audio output device (automatic fallback to Windows default device on disconnection)
  • RAW mode support (bypasses Windows DSP)
  • Branchless VU metering via function pointer dispatch
  • High-fidelity Float-precision Cubic Hermite resampling
  • Dynamic drift compensation (P-controller) incorporating both local ring-buffer latency and Windows WASAPI-padding for highly accurate clock-drift adjustments (fixes pitch drop issues)
  • Continuous loopback render client execution writing silence during mute states to maintain clock synchronization

🔧 MS2109 Stereo Fix

Some low-cost capture devices expose stereo audio incorrectly as:

96kHz mono

VDisPlay can reconstruct:

48kHz stereo (L/R)

in real time.


⌨️ Keyboard Shortcuts

Key Action
M Device menu
H Help / About
R Resolution / FPS menu
F / F11 Toggle fullscreen
ESC Close menus / exit fullscreen
T Toggle always-on-top
S Capture screenshot
+ Increase brightness
- Decrease brightness
F12 Toggle audio monitoring
1–9 Quick switch video devices

🚀 Build

📋 Requirements

  • Windows 10/11 (x64)
  • Flutter SDK (desktop enabled)
  • Visual Studio 2022
  • CMake

Quick Build

.\build.bat

Final executable:

build\windows\x64\runner\Release\vdisplay.exe

Development

flutter run

Project Structure

lib/                    → UI, overlays, FFI bindings, i18n
native/
  include/common.h      → shared utilities, GUIDs, device helpers
  video_capture.c       → Media Foundation capture kernel
  audio_capture.c       → WASAPI capture + loopback kernel
  device_manager.c      → device enumeration + COM init
windows/runner/         → native texture bridge
build.bat
CMakeLists.txt

Philosophy

VDisPlay follows a simple principle:

A monitoring tool should stay out of the way.

No timelines. No scenes. No recording pipeline. No streaming abstractions.

Just your signal — fast, direct, and visible.

About

VDisplay is a lightweight real-time video and audio monitor with sub-100ms latency, designed for developers, technicians, and gamers. Ideal for debugging HDMI capture cards, webcams, game consoles, SBCs, DSLR outputs, and embedded video systems.

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages