Skip to content

How it works

From your PC to your TV.

One sender on the PC, one native app on the TV, and a protocol between them small enough to read in one sitting.

Your PC

Captured in D3D11 from a virtual monitor. The frame stays on the GPU.

NVENC

Native NVENC at P1 ultra-low-latency and the fixed bitrate you set.

Wi-Fi

TCP for video, UDP for audio. Every frame carries its capture time.

TV decode

Hardware decode in a native Rust app, straight onto the video plane.

The path, step by step.

  1. Capture

    WGC / DDA · D3D11

    Windows Graphics Capture or Desktop Duplication on a virtual monitor, straight into D3D11. No ffmpeg in the hot path.

  2. Convert

    BGRA → NV12

    A shader turns BGRA into NV12 on the GPU, so the frame never comes back to the CPU.

  3. Encode

    HEVC · AV1 · H.264

    The NVENC SDK through hand-written FFI. P1 ultra-low-latency, fixed rate, the bitrate you asked for.

  4. Wire

    24-byte header

    One small TCP stream for video, UDP for audio. Every frame is stamped with its capture time.

  5. Show

    MediaCodec → plane

    Native Rust on the TV. Hardware decode straight onto the 4K video plane, MediaTek low-latency path on.

Latency, PC to TV.

From the moment Windows hands over a frame to the moment the TV shows it.

  • 1080p60, 40 Mb/s · HEVC17.6 msDecode 5.5 ms · 59.9 fps shown
  • 1080p60, 40 Mb/s · AV122.6 msDecode 7.0 ms · 59.9 fps shown
  • 4K60, 100 Mb/s · HEVC36.3 msDecode 10.9 ms · 59.9 fps shown
  • 4K60, 100 Mb/s · H.26443.3 msDecode 14.7 ms · 59.9 fps shown

The tick on each bar is one frame at 60 Hz (16.7 ms); bars run 0 to 50 ms. Real Android TV (MediaTek MT5895), RTX 5070 Ti laptop, home Wi-Fi, the moving test page full screen.

Encoders, checked before you stream.

At start the sender test-encodes on every encoder on your PC at the size you picked, and the TV sends its real decoder list. A laptop CPU manages about 40 to 48 fps for HEVC or AV1 at 4K, so on that machine the CPU path is 1080p only, and the app says so.

Fixed rate, as asked

The bitrate you set is used as given for H.264, HEVC and AV1. For H.264 the sender picks the level that carries the rate, and stops with a clear error past level 6.2. It never clamps.

Defaults that hold

40 Mb/s at 1080p60 and 100 Mb/s at 4K60. On Wi-Fi, 150 Mb/s at 1080p bounced into the yellow where 75 Mb/s was stable, so the panel warns above 80.

HEVC first at 4K

Auto puts HEVC first at 4K, and AV1 next on a TV that decodes it. Native NVENC runs when NVIDIA renders the monitor. Another GPU gets a warning, not a block.

Audio, in sync.

Capture

WASAPI loopback on a virtual TV speaker that becomes the Windows default while you stream. Your old speakers come back after.

Wire

Raw 48 kHz, 16-bit stereo PCM in 5 ms UDP datagrams, about 1.5 Mb/s, stamped with the same clock as the video.

Play

AAudio on the TV, through a 20 to 80 ms jitter buffer driven by a clock, never by how full it is.

Sync

The play delay follows the picture the TV actually shows, so sound and frame land together. About 55 ms in all.

If your network is trash, this isn’t for you.

TunnelRez pushes 40 to 150 Mb/s at a fixed rate with no safety padding. Crowded 2.4 GHz, a mesh node in the attic, an ISP router on default settings: you’ll see it, and no codec will save you. Keep the network dialed in and it holds up.

You’ll love it with

  • Wired, or Wi-Fi 6/6E with a strong link
  • WMM Power Save off, QoS (WMM) on
  • NVIDIA GPU, RTX 20 series or newer
  • Android TV with hardware HEVC or AV1 decode

Skip it with

  • 2.4 GHz, mesh hops, a wall of neighbors
  • “I’ve never logged into my router”
  • No GPU encoder at all
  • A cheap stick that drops frames at 1080p

Set up your PC and network.

Most of the gap between a stream that works and one that feels plugged in is your setup. Go through these 6 in order.

Render the virtual monitor on the NVIDIA GPU

On hybrid laptops Windows renders it on the iGPU by default, and then frames cross GPUs. The app’s Repair button fixes that.

Router

WMM Power Save off, QoS (WMM) on, a clean 5 or 6 GHz channel, band steering off.

PC Wi-Fi card

Packet Coalescing off, MIMO Power Save “No SMPS”, Roaming Aggressiveness lowest.

TV

Game picture mode, motion smoothing and noise reduction off.

Bitrate

40 Mb/s at 1080p, 100 Mb/s at 4K. More is not better on Wi-Fi, because a fixed rate pads every frame.

Best of all

A cable.

Get TunnelRez on GitHub.

TunnelRez 0.3.0 is out.