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;