Skip to content

Conversation

@longcw
Copy link
Contributor

@longcw longcw commented Dec 9, 2025

when next_in_chain is set in AudioOutput, await self.next_in_chain.capture_frame(frame) should be called before await super().capture_frame(frame) (in case the capture_frame of next_in_chain is waiting for some conditions) to make sure the audio outputs in the chain have the same playback_segments_count.

this fixes the issue when the agent has a greeting message using session.say or session.generate_reply in Agent.on_enter (or just after session started), it will stuck when closing if no participant joined the room.

@longcw longcw requested a review from a team December 9, 2025 10:29
Copy link
Member

@chenghao-mou chenghao-mou left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

Copy link
Member

@theomonnom theomonnom left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm! So our pattern breaks if one of the nodes in the output chain decides not to forward audio to the next node (for whatever reason)
I thought this pattern was supposed to work — ideally, we should make it work.

@longcw longcw merged commit d933132 into main Dec 10, 2025
17 of 18 checks passed
@longcw longcw deleted the longc/capture-frame-deadlock branch December 10, 2025 00:51
meetakshay99 added a commit to meetakshay99/agents that referenced this pull request Dec 12, 2025
* main: (267 commits)
  AGT-2328: negative threshold in silero (livekit#4228)
  disable interruptions for agent greeting (livekit#4223)
  feature: GPT-5.2 support (livekit#4235)
  turn-detector: remove english model from readme (livekit#4233)
  add keep alive task for liveavatar plugin (livekit#4231)
  feat(warm-transfer): add sip_number parameter for outbound caller ID (livekit#4216)
  fix blocked send task in liveavatar plugin (livekit#4214)
  clear _q_updated right after await to avoid race conditions (livekit#4209)
  ensure playback_segments_count is consistent in the audio output chain (livekit#4211)
  fix inworld punctuation handling (livekit#4215)
  Inference: Rename fallback model name param (livekit#4202)
  fix race condition when stop background audio play handle (livekit#4197)
  fix watchfiles prevent agent prcoess exit on sigterm (livekit#4194)
  feat(google): add streaming support for Gemini TTS models (livekit#4189)
  Add LiveAvatar Stop Session API Call + README Fix (livekit#4195)
  Fallback API for Inference (livekit#4099)
  feat(rime): expand update_options to accept all TTS parameters (livekit#4095)
  mistralai models update (livekit#4156)
  fix record.exc_info is not pickable when using LogQueueHandler (livekit#4185)
  Restore otel chat message (livekit#4118)
  ...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants