Performance Technology

How Lamco RDP Server delivers responsive remote desktop through adaptive frame rates, intelligent damage tracking, and physics-based cursor prediction

Performance is More Than Encoding Speed

Remote desktop performance isn't just about encoding speed. It's about the entire pipeline: detecting what changed, encoding efficiently, transmitting only what's needed, and making input feel responsive despite network latency.

Lamco RDP Server includes a suite of premium performance features that work together to deliver a responsive experience across varying network conditions.

Adaptive Frame Rate

The Problem with Fixed Frame Rate

Most remote desktop solutions use a fixed frame rate—typically 30 FPS regardless of what's on screen.

Static content

Wasting bandwidth and power encoding unchanging frames

Active content

30 FPS may not be smooth enough for video or gaming

Dynamic FPS Based on Activity

Lamco RDP Server continuously monitors screen activity and adjusts frame rate accordingly:

Screen Activity Detection
         │
         ▼
┌─────────────────────────────────────────────────────────────┐
│                                                             │
│  Static (<1% changed)          ──────────►  5 FPS           │
│      │                                      (power saving)  │
│      ▼                                                      │
│  Low Activity (1-10%)          ──────────►  15 FPS          │
│  (typing, cursor movement)                  (responsive)    │
│      │                                                      │
│      ▼                                                      │
│  Medium Activity (10-30%)      ──────────►  20-30 FPS       │
│  (scrolling, window movement)               (smooth)        │
│      │                                                      │
│      ▼                                                      │
│  High Activity (>30%)          ──────────►  30-60 FPS       │
│  (video, animation)                         (fluid)         │
│                                                             │
└─────────────────────────────────────────────────────────────┘
                
Scenario Fixed 30 FPS Adaptive FPS Improvement
Reading document30 FPS5 FPS6x less bandwidth
Typing code30 FPS15 FPS2x less bandwidth
Watching video30 FPS60 FPS2x smoother
Battery (laptop)Constant drainReduced drainSignificant savings

Damage Tracking

What Is Damage Tracking?

Most screen updates are localized—a cursor moves, text appears in an editor, a notification pops up. The rest of the screen stays the same. Damage tracking identifies exactly which regions changed, so only those regions need to be encoded and transmitted.

Tile-Based Detection

The screen is divided into a grid of tiles (default 64×64 pixels). Each frame, we compare tiles against the previous frame:

Previous Frame              Current Frame              Damage Map
┌───┬───┬───┬───┬───┐      ┌───┬───┬───┬───┬───┐      ┌───┬───┬───┬───┬───┐
│   │   │   │   │   │      │   │   │   │   │   │      │   │   │   │   │   │
├───┼───┼───┼───┼───┤      ├───┼───┼───┼───┼───┤      ├───┼───┼───┼───┼───┤
│   │ A │ B │   │   │      │   │ A'│ B │   │   │  ──► │   │ ▓ │   │   │   │
├───┼───┼───┼───┼───┤      ├───┼───┼───┼───┼───┤      ├───┼───┼───┼───┼───┤
│   │   │   │   │   │      │   │ C │   │   │   │      │   │ ▓ │   │   │   │
├───┼───┼───┼───┼───┤      ├───┼───┼───┼───┼───┤      ├───┼───┼───┼───┼───┤
│   │   │   │   │   │      │   │   │   │   │   │      │   │   │   │   │   │
└───┴───┴───┴───┴───┘      └───┴───┴───┴───┴───┘      └───┴───┴───┴───┴───┘

Only tiles marked ▓ are encoded and sent.
                

SIMD Acceleration

Comparing millions of pixels per frame requires speed. Lamco RDP Server uses SIMD instructions to compare multiple pixels simultaneously:

x86_64

AVX2

32 pixels/cycle

ARM

NEON

16 pixels/cycle

Fallback

Scalar

1 pixel/cycle

Real-World Savings

Typical desktop use sees 90%+ bandwidth savings:

Scenario Savings
Static desktop99%
Typing in editor95%
Scrolling web page75%
Full-screen video0%

Latency Governor

Three Modes for Different Needs

Not all remote desktop use is the same. Coding requires responsive input. Watching a presentation prioritizes visual quality. The latency governor optimizes the pipeline for your specific use case.

Interactive

Priority: Input latency

Best for: Coding, terminal work, real-time collaboration

Balanced

Priority: Both

Best for: General desktop use

Quality

Priority: Visual quality

Best for: Presentations, design review, media playback

How It Works

The latency governor adjusts multiple parameters:

Parameter Interactive Balanced Quality
Encode bufferMinimalStandardLarger
Frame batchingDisabledLightAggressive
QP preferenceHigher (faster)MediumLower (better)
Key frame intervalShorterMediumLonger

Predictive Cursor

The Latency Problem

Network latency is unavoidable. Even on fast connections, round-trip time of 20-50ms means the cursor lags behind your hand movement. On high-latency connections (100ms+), this becomes disorienting.

Physics-Based Prediction

Lamco RDP Server's predictive cursor uses physics modeling to extrapolate cursor position:

Actual cursor path (network delayed):
    ●───●───●───●───●  ← Client sees this (50ms behind)

Predicted path (shown to user):
    ●───●───●───●───●───○───○  ← Extrapolated position
                        ▲
                        Where cursor probably is NOW
                
How It Works:
  1. Track velocity: Monitor cursor movement over recent samples
  2. Track acceleration: Detect speed changes (starting/stopping)
  3. Extrapolate: Project position forward by latency amount
  4. Snap back: Smooth correction when actual position arrives

Prediction Quality

Steady motion

Excellent accuracy - feels nearly local

Acceleration

Good - slight overshoot, corrects smoothly

Sudden stop

Fair - brief overshoot, snaps to final position

Erratic movement

Disabled automatically - prediction would make it worse

Auto Mode Logic

Measure network latency
         │
         ├─ <20ms  ──────────►  metadata (standard)
         │                      Latency too low to notice
         │
         ├─ 20-80ms ─────────►  predictive
         │                      Sweet spot for prediction
         │
         └─ >80ms  ──────────►  predictive (conservative)
                                Reduced prediction to avoid overshoot
                    

Benchmarks

Measured on Intel i7-12700K, NVIDIA RTX 3070, 1920×1080 desktop:

Configuration FPS Latency CPU GPU Bandwidth
NVENC + AVC444 + 60fps 60 12ms 3% 8% 8.2 Mbps
NVENC + AVC420 + 30fps 30 14ms 2% 5% 4.1 Mbps
OpenH264 + AVC444 + 30fps 30 18ms 15% 0% 4.8 Mbps
OpenH264 + AVC420 + 30fps 30 16ms 12% 0% 3.2 Mbps

*Latency measured end-to-end from input to display update on LAN connection.

Performance Tuning Guide

Low Bandwidth (<5 Mbps)

[egfx]
codec = "avc420"        # Save ~40% vs AVC444
h264_bitrate = 2000
qp_default = 28         # Accept lower quality

[performance.adaptive_fps]
max_fps = 30            # Cap frame rate

[damage]
enabled = true          # Essential
                

Low Latency (coding, terminals)

[performance.latency]
mode = "interactive"

[performance.adaptive_fps]
enabled = true
min_fps = 15            # Keep responsive

[cursor]
mode = "auto"           # Enable prediction
                

High Quality (presentations, design)

[egfx]
codec = "avc444"
h264_bitrate = 10000
qp_default = 18

[performance.latency]
mode = "quality"

[performance.adaptive_fps]
max_fps = 60
                

Maximum Performance (LAN)

[hardware_encoding]
enabled = true
prefer_nvenc = true
quality_preset = "quality"

[egfx]
codec = "avc444"
h264_bitrate = 15000
qp_default = 15

[performance.adaptive_fps]
max_fps = 60