From b33897ffb969abc986d1f1aa0f47c50dc129c532 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aleix=20Conchillo=20Flaqu=C3=A9?= Date: Fri, 30 May 2025 07:50:54 -0700 Subject: [PATCH] SmallWebRTCTransport: don't initialize if a second StartFrame is received --- src/pipecat/transports/network/small_webrtc.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/pipecat/transports/network/small_webrtc.py b/src/pipecat/transports/network/small_webrtc.py index f9dd38791..ddc32d06a 100644 --- a/src/pipecat/transports/network/small_webrtc.py +++ b/src/pipecat/transports/network/small_webrtc.py @@ -377,6 +377,9 @@ class SmallWebRTCInputTransport(BaseInputTransport): self._receive_video_task = None self._image_requests = {} + # Whether we have seen a StartFrame already. + self._initialized = False + async def process_frame(self, frame: Frame, direction: FrameDirection): await super().process_frame(frame, direction) @@ -385,6 +388,12 @@ class SmallWebRTCInputTransport(BaseInputTransport): async def start(self, frame: StartFrame): await super().start(frame) + + if self._initialized: + return + + self._initialized = True + await self._client.setup(self._params, frame) await self._client.connect() if not self._receive_audio_task and self._params.audio_in_enabled: @@ -480,8 +489,17 @@ class SmallWebRTCOutputTransport(BaseOutputTransport): self._client = client self._params = params + # Whether we have seen a StartFrame already. + self._initialized = False + async def start(self, frame: StartFrame): await super().start(frame) + + if self._initialized: + return + + self._initialized = True + await self._client.setup(self._params, frame) await self._client.connect() await self.set_transport_ready(frame)