From f2cfb87b130ea8369ee4d001efa8d481c3c1cc38 Mon Sep 17 00:00:00 2001 From: srtk Date: Fri, 13 Feb 2026 22:53:10 +0530 Subject: [PATCH] Ultra-quality 1080p 60fps optimizations --- src/main/network.ts | 4 ++-- src/renderer/src/App.tsx | 6 +++--- src/renderer/src/utils/MediaEngine.ts | 17 +++++++++-------- 3 files changed, 14 insertions(+), 13 deletions(-) diff --git a/src/main/network.ts b/src/main/network.ts index 41d170c..43159ca 100644 --- a/src/main/network.ts +++ b/src/main/network.ts @@ -223,9 +223,9 @@ export class NetworkManager extends EventEmitter { sendEncodedVideoChunk(chunk: any, isKeyFrame: boolean, timestamp: number, streamType: 'video' | 'screen' = 'video') { if (!this.ws || this.ws.readyState !== WebSocket.OPEN) return; - // Backpressure check: If we have > 2.5MB buffered, drop this frame. + // Backpressure check: If we have > 4MB buffered, drop this frame. // For video, it's better to drop than to lag. - if (this.ws.bufferedAmount > 2.5 * 1024 * 1024) { + if (this.ws.bufferedAmount > 4 * 1024 * 1024) { this.dropCount++; if (this.dropCount % 60 === 0) { console.warn(`[Network] Backpressure! Dropped ${this.dropCount} video frames. Buffered: ${this.ws.bufferedAmount} bytes`); diff --git a/src/renderer/src/App.tsx b/src/renderer/src/App.tsx index 6c6741e..9c9b457 100644 --- a/src/renderer/src/App.tsx +++ b/src/renderer/src/App.tsx @@ -434,7 +434,7 @@ function App() { for (const k of map.keys()) { if (k.startsWith(`${user_id}-${type}-`) && k !== key) { const kSeq = parseInt(k.split('-')[2]); - if (kSeq < seq - 10) map.delete(k); + if (kSeq < seq - 60) map.delete(k); } } @@ -480,8 +480,8 @@ function App() { addLog("Requesting Webcam Access..."); stream = await navigator.mediaDevices.getUserMedia({ video: { - width: 1280, - height: 720, + width: 1920, + height: 1080, frameRate: 60, deviceId: selectedVideoDevice ? { exact: selectedVideoDevice } : undefined } diff --git a/src/renderer/src/utils/MediaEngine.ts b/src/renderer/src/utils/MediaEngine.ts index 7408bf4..fc04f7d 100644 --- a/src/renderer/src/utils/MediaEngine.ts +++ b/src/renderer/src/utils/MediaEngine.ts @@ -48,23 +48,24 @@ export class MediaEngine extends SimpleEventEmitter { // private videoDecoders: Map = new Map(); // Already declared above private audioDecoders: Map = new Map(); private videoConfig: VideoEncoderConfig = { - codec: 'avc1.42001f', // H.264 Baseline Profile Level 3.1 (720p safe) - width: 1280, - height: 720, - bitrate: 4_000_000, + codec: 'avc1.64002a', // H.264 High Profile Level 4.2 + width: 1920, + height: 1080, + bitrate: 6_000_000, framerate: 60, latencyMode: 'realtime', + hardwareAcceleration: 'prefer-hardware', avc: { format: 'annexb' } }; private screenConfig: VideoEncoderConfig = { - // High Profile Level 4.2 - codec: 'avc1.64002a', + codec: 'avc1.64002a', // H.264 High Profile Level 4.2 width: 1920, height: 1080, - bitrate: 8_000_000, // Reduced to 2 Mbps for better stability/FPS + bitrate: 10_000_000, framerate: 60, - latencyMode: 'realtime', // Changed from 'quality' to 'realtime' for lower latency + latencyMode: 'realtime', + hardwareAcceleration: 'prefer-hardware', avc: { format: 'annexb' } };