LiveKitTransport: don't initialize if a second StartFrame is received
This commit is contained in:
@@ -363,6 +363,11 @@ class LiveKitInputTransport(BaseInputTransport):
|
|||||||
self._audio_in_task = None
|
self._audio_in_task = None
|
||||||
self._vad_analyzer: Optional[VADAnalyzer] = params.vad_analyzer
|
self._vad_analyzer: Optional[VADAnalyzer] = params.vad_analyzer
|
||||||
self._resampler = create_default_resampler()
|
self._resampler = create_default_resampler()
|
||||||
|
if self._initialized:
|
||||||
|
return
|
||||||
|
|
||||||
|
# Whether we have seen a StartFrame already.
|
||||||
|
self._initialized = False
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def vad_analyzer(self) -> Optional[VADAnalyzer]:
|
def vad_analyzer(self) -> Optional[VADAnalyzer]:
|
||||||
@@ -370,6 +375,12 @@ class LiveKitInputTransport(BaseInputTransport):
|
|||||||
|
|
||||||
async def start(self, frame: StartFrame):
|
async def start(self, frame: StartFrame):
|
||||||
await super().start(frame)
|
await super().start(frame)
|
||||||
|
|
||||||
|
if self._initialized:
|
||||||
|
return
|
||||||
|
|
||||||
|
self._initialized = True
|
||||||
|
|
||||||
await self._client.start(frame)
|
await self._client.start(frame)
|
||||||
await self._client.connect()
|
await self._client.connect()
|
||||||
if not self._audio_in_task and self._params.audio_in_enabled:
|
if not self._audio_in_task and self._params.audio_in_enabled:
|
||||||
@@ -447,8 +458,17 @@ class LiveKitOutputTransport(BaseOutputTransport):
|
|||||||
self._transport = transport
|
self._transport = transport
|
||||||
self._client = client
|
self._client = client
|
||||||
|
|
||||||
|
# Whether we have seen a StartFrame already.
|
||||||
|
self._initialized = False
|
||||||
|
|
||||||
async def start(self, frame: StartFrame):
|
async def start(self, frame: StartFrame):
|
||||||
await super().start(frame)
|
await super().start(frame)
|
||||||
|
|
||||||
|
if self._initialized:
|
||||||
|
return
|
||||||
|
|
||||||
|
self._initialized = True
|
||||||
|
|
||||||
await self._client.start(frame)
|
await self._client.start(frame)
|
||||||
await self._client.connect()
|
await self._client.connect()
|
||||||
await self.set_transport_ready(frame)
|
await self.set_transport_ready(frame)
|
||||||
|
|||||||
Reference in New Issue
Block a user