Skip to main content

Kyber 0.15.0

· 3 min read

Version 0.15.0 is a substantial update that improves error detection, encoder flexibility, and connection resilience throughout the stack. The capture and encoding server now runs on an integrated media pipeline that enables more sophisticated stream processing. Encoder selection now applies consistently whether you are using QUIC or RTP transport, and HEVC streaming with NVENC now supports the YUV 4:4:4 colour format for richer colour fidelity. When the encoding server encounters a problem — whether during initialisation, frame acquisition, or encoding itself — the error is now detected and forwarded to the application, and outright crashes are also reported rather than silently disappearing. The server will drop already-captured frames instead of encoded ones when the network cannot keep up, which keeps latency lower under congestion.

Connection robustness has also improved: the data plane now has a one-minute timeout so stalled connections are detected, the client stops cleanly if the data plane fails or the streaming session cannot start, and a race condition that was causing spurious 403 errors when starting a stream has been fixed. Support for the Side and Extra mouse buttons has been added to input handling, and macOS builds now use FFmpeg 5.1.1. A new /stop_streaming endpoint lets you stop a streaming session without tearing down the entire server process.

The web client picks up all of these improvements and adds the ability to stop and restart both the client and the streaming session independently without reloading the page. Gamepad detection now works even without a gamepadconnected browser event firing, a decoder crash that affected Mac users has been fixed by increasing the video decoder queue size, and log noise on data plane disconnect has been reduced.

Changelog

  • Rust toolchain updated to 1.76.0
  • controller: Update wtransport to 0.11.0
  • controller/cors: Allow Access-Control-Allow-Credentials
  • controller: Add /stop_streaming endpoint
  • controller: Fix racy kymux stop. Should fix the remaining 403 errors when starting kymux
  • avserver: Integrate libtxproto
  • avserver: Encoder selection now applies also to RTP backend
  • avserver: Detect Initialization/Acquisition/Encoding errors and forward them to the application
  • controller: Forward avserver crash to the application
  • kymux/kycom: Fix TcpStream read error
  • controller/libclient: Implement connection timeout detection (1 minute) on Data Plane. The event is only logged for now
  • libclient: Stop if Data Plane connection fails, or if streaming start fails
  • libclient/macos: Use ffmpeg 5.1.1 (like Windows) instead of master
  • avserver: Support yuv444p for hevc when using nvenc
  • libkynput: Handle Side/Extra MouseButtonType
  • txproto: Avoid to drop encoded frames when network is slow. Drop acquired frames instead
  • kymux: Correctly handle write during congestion, when using wtransport backend
  • (web) Client can now be stopped and restarted
  • (web) Streaming can now be stopped and restarted
  • (web) libclient/http: Set credentials=include when calling fetch()
  • (web) avserver: Detect Initialization/Acquisition/Encoding errors and forward them to the application
  • (web) controller: Detect avserver crashes and forward them to the application
  • (web) Implement connection timeout detection (1 minute) on Data Plane. The event is only logged for now
  • (web) libclient: Stop if Data Plane connection fails, or if streaming start fails
  • (web) libkynput: Plug gamepad when detected without gamepadconnected
  • (web) libclient: Increase Demuxer -> Decoder video queue size to fix decoder crash on Macs
  • (web) libkynput: Handle Side/Extra MouseButtonType
  • (web) libkynput: Avoid to spam when DataPlane is disconnected