From d718de0d647b2ac60efe399b2bbc95a5bdc03b8c Mon Sep 17 00:00:00 2001 From: shijing xian Date: Wed, 11 Feb 2026 15:59:45 -0800 Subject: [PATCH] adding single peer connection support --- include/livekit/room.h | 5 +++++ src/ffi_client.cpp | 1 + 2 files changed, 6 insertions(+) diff --git a/include/livekit/room.h b/include/livekit/room.h index 2e641ad..04de100 100644 --- a/include/livekit/room.h +++ b/include/livekit/room.h @@ -73,6 +73,11 @@ struct RoomOptions { // Enable dynacast (server sends optimal layers depending on subscribers). bool dynacast = false; + // Enable single peer connection mode. When true, uses one RTCPeerConnection + // for both publishing and subscribing instead of two separate connections. + // Falls back to dual peer connection if the server doesn't support single PC. + bool single_peer_connection = true; + // Optional WebRTC configuration (ICE policy, servers, etc.) std::optional rtc_config; diff --git a/src/ffi_client.cpp b/src/ffi_client.cpp index b59ffb6..20f2633 100644 --- a/src/ffi_client.cpp +++ b/src/ffi_client.cpp @@ -317,6 +317,7 @@ FfiClient::connectAsync(const std::string &url, const std::string &token, auto *opts = connect->mutable_options(); opts->set_auto_subscribe(options.auto_subscribe); opts->set_dynacast(options.dynacast); + opts->set_single_peer_connection(options.single_peer_connection); // --- E2EE / encryption (optional) --- if (options.encryption.has_value()) { const E2EEOptions &e2ee = *options.encryption;