Skip to content

Commit 604f28c

Browse files
authored
feat: add rtc_config (#67)
1 parent 6892ea8 commit 604f28c

File tree

2 files changed

+23
-2
lines changed

2 files changed

+23
-2
lines changed

livekit/__init__.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,9 @@
2121
ConnectionState,
2222
DataPacketKind,
2323
TrackPublishOptions,
24+
IceTransportType,
25+
ContinualGatheringPolicy,
26+
IceServer
2427
)
2528
from ._proto.e2ee_pb2 import (EncryptionType, EncryptionState)
2629
from ._proto.track_pb2 import StreamState, TrackKind, TrackSource
@@ -29,7 +32,7 @@
2932
from .audio_source import AudioSource
3033
from .audio_stream import AudioStream
3134
from .participant import LocalParticipant, Participant, RemoteParticipant
32-
from .room import ConnectError, Room, RoomOptions
35+
from .room import ConnectError, Room, RoomOptions, RtcConfiguration
3336
from .track import (
3437
LocalAudioTrack,
3538
LocalVideoTrack,

livekit/room.py

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
import asyncio
1616
import ctypes
1717
import logging
18-
from dataclasses import dataclass
18+
from dataclasses import dataclass, field
1919
from typing import Optional
2020

2121
from pyee.asyncio import EventEmitter
@@ -33,11 +33,21 @@
3333
from .track_publication import RemoteTrackPublication
3434

3535

36+
@dataclass
37+
class RtcConfiguration:
38+
ice_transport_type: proto_room.IceTransportType = \
39+
proto_room.IceTransportType.TRANSPORT_ALL
40+
continual_gathering_policy: proto_room.ContinualGatheringPolicy = \
41+
proto_room.ContinualGatheringPolicy.GATHER_CONTINUALLY
42+
ice_servers: list[proto_room.IceServer] = field(default_factory=list)
43+
44+
3645
@dataclass
3746
class RoomOptions:
3847
auto_subscribe: bool = True
3948
dynacast: bool = False
4049
e2ee: Optional[E2EEOptions] = None
50+
rtc_config: Optional[RtcConfiguration] = None
4151

4252

4353
class ConnectError(Exception):
@@ -102,6 +112,14 @@ async def connect(self,
102112
req.connect.options.e2ee.key_provider_options.ratchet_window_size = \
103113
options.e2ee.key_provider_options.ratchet_window_size
104114

115+
if options.rtc_config:
116+
req.connect.options.rtc_config.ice_transport_type = \
117+
options.rtc_config.ice_transport_type # type: ignore
118+
req.connect.options.rtc_config.continual_gathering_policy = \
119+
options.rtc_config.continual_gathering_policy # type: ignore
120+
req.connect.options.rtc_config.ice_servers.extend(
121+
options.rtc_config.ice_servers)
122+
105123
try:
106124
queue = ffi_client.queue.subscribe(self._loop)
107125
resp = ffi_client.request(req)

0 commit comments

Comments
 (0)