Kyber 0.28.0
Kyber 0.28.0 adds macOS server support and a new avconv backend for the audio/video service. Linux capture gains Wayland display geometry discovery, while DRM device initialisation failures are now logged once per device instead of on every poll. The encoder setting in kyber_config.toml is now optional and defaults to NVENC.
Building on the live metrics introduced in 0.27.0, the web client now allows metrics to be downloaded at any time and buffers JSON writes to avoid losing metrics at high reporting rates. Both clients improve metrics handling by moving it out of the main loop, replacing assertions with warnings, and stopping unused metrics tasks after disconnection.
The desktop client now blocks clicks outside the video area and uses the new Kyber brand mark for its application icon. The server tray only reports a connected state once a streaming session is established, and its menu now shows the server version. Startup logs report the correct revisions, and the client gains a --version option to log its revision, making troubleshooting easier.
Internally, the transport layer gains cancellation-safe send and receive operations, shared serialisation code, and preallocated buffers for merging datagram segments. The input C API reduces its use of unsafe code and improves handling of null pointers. Logging is also unified around log4ky in the SDK and client.
Changelog
- desktop: Update client app icon to new Kyber brand mark
- kymedia: generate vulkan.pc pkg-config file
- kyctl: Improve mutex handling
- kycontroller: Show connected in tray only after stream session
- kyctl: Refactors and improvements for kyclient
- kymux: Make ProtocolSend and ProtocolRecv cancel-safe
- kymux: Implement AsyncRead/AsyncWrite and factorize serialization
- libkypc: Refactor internals and API
- kyutil: Expose new named pipe API
- kymux: preallocate datagram segment merge buffers
- kynput: Remove a lot of
unsafefrom C API - kynput: Use upstream
keycodecrate - kyctl: Use upstream keycode
- txproto: bump for wayland display geometry discovery
- txproto/dxgi_cursor: retry pipe connection instead of dying on first failure
- txproto/drm: log card init failures once per device instead of every poll
- kymedia/watermark: make it an optional feature
- kyavservice: Make grab_backend more consistent with other fields
- kycom: Add a
Serializabletrait - kyclient: Use existing runtime in main loop if possible
- kyctl: Use git cli instead of gix in vergen
- kymux: Move forwarding functions from kycom to kymux-utils
- kyclient: Avoid to route metrics in main loop
- kyclient/metrics: Replace asserts with warnings
- kyclient/metrics: Stop unused tasks after disconnect
- kyber_config.toml: encoder is now optional (defaults to nvenc)
- kycontroller: Correctly log git version in startup logs
- kyclient: Log correct kyclient revision
- kyclient: Add --version to log revision
- kynput/capi: use cbindgen to prefix type names
- kynput/capi: Improve robustness vs NULL pointer
- kycontroller: Show version in tray menu
- kyclient/capi: use cbindgen to prefix type names
- kyclient/capi: rename metrics types to camel case
- Add macOS server support
- kyvlcplayer: Pass -vv to VLC when KYBER_VLC_VERBOSE is set
- kycontroller: Disable intra_refresh when GopStream is requested
- kysdk: Integrate log4ky
- kyclient: Replace log4rs with log4ky
- kyclient: Block clicks outside video area
- avservice: Add avconv backend
- (web) kyctl: Refactors and improvements for kyclient
- (web) kymux: Make ProtocolSend and ProtocolRecv cancel-safe
- (web) kymux: Implement AsyncRead/AsyncWrite and factorize serialization
- (web) kynput: Use upstream
keycodecrate - (web) kyctl: Use upstream
keycodecrate - (web) kyclient: Use existing runtime in main loop if possible
- (web) kyclient: Avoid to route metrics in main loop
- (web) kyclient/metrics: Replace asserts with warnings
- (web) kyclient/metrics: Stop unused tasks after disconnect
- (web) ui: Allow metrics to be downloaded at any time
- (web) metrics: Buffer JSON writes to avoid dropping metrics at high rates