Repository navigation
One guest's (Jamal) audio is distorted and low quality in CoreVideo; the meeting audio is clean #465
Description
Activity
New evidence (2026-09-11), in the test meeting on the combined #478+#481 build, and also on yesterday's installed 5a24225.
Jamal (userId 16778240, the first participant in the roster) shows
talking: true, ZoomaudioLevel78. His audio subscriptionparticipant-audio-16778240-mixissubscribed: true, and his channel is unmuted. Yet his channel gets no PCM at all:inputRmsDbfsandrmsDbfsboth −120 across 12 consecutive seconds of him talking. Every other guest's channel lights up when they talk (Susan −25.8, Anika −40.2). This predates today's fixes: the same pattern was sampled on 2026-09-10 on installed 5a24225.The one thing that sets him apart: the meeting-mix subscription is keyed to
participants[0], and that is him (meeting-audio-16778240-program).Ruled out by reading the code, so not the cause:
- Core dedup: keyed by the full sourceUuid, with audio at key −1.
- Engine targets:
m_targetsis keyed by sourceUuid. The isolate target is matched onparticipant_id == user_idinonOneWayAudioRawDataReceived. - SHM rings: named
<prefix><sourceUuid>_audio. - Core pending keys: ISO → participantId, mix →
"zoom-mix".
So the collision theory is not confirmed.
Next diagnostic: the answer is in the engine's
debugevents (audio_target_added,audio_one_way_frame_receivedper source_uuid), which production logging drops. Run once with Extra logs on, or letdebugaudio stage lines through, and compare Jamal's uuid with a working guest's. Also test by movingmeeting-audioonto a participant who is NOT a guest source (or a synthetic id), and see whether Jamal's ISO comes alive.The owner's report ("distorted and low quality") may be what the program mix sounds like while his isolated stream is missing: he would then be heard only through
zoom-mix, if that is routed.iamfatness commented
on Sep 11, 2026 OwnerAuthorMore actionsDiagnostic run 2026-09-11, installed
beta-2026-09-11-404602b, test meeting8916561023, Extra logs on for ~90 s then off. Control API only (no keyboard/mouse).Setup. Joined as CoreVideo Producer (
16794624). Engine was off after join (sourceCount=0);transport.engine.set truethen produced 18 subscriptions (8 video + 10 audio, including isolate for every source andmeeting-audio-16778240-program).Roster[0] is still Jamal (
16778240). Meeting mix is keyed to him:ZoomMediaSpinePayloadBuildersetsmeeting-audioparticipantId = participants[0].sdkUserId.Engine debug (the missing evidence). When Jamal talks (
talking: true, ZoomaudioLevel78):- Isolate is subscribed:
participant-audio-16778240-mixsubscribed: true - Engine does fire one-way frames:
audio_one_way_frame_receivedsource_uuid=participant-audio-16778240-mixcount1 → 250 → 1250,byte_len=960,participant_id=16778240 - Core logs the first drain:
[zoom-audio] stream participant-audio-16778240-mix chunk #1 rate=48000 ch=1 pending=480 - Mixer strip stays digital silence:
inputRmsDbfs=-120rmsDbfs=-120status=silent(notwaiting-for-pcm).noiseSuppressionis on his strip; input is already −120, so NS is not the gate.
Control (Susan Cho
16789504talking,audioLevel78): same isolate path, mixerinputRmsDbfs=-37peak=-26.8status=cleaning.What this rules out. The earlier collision guess (core dedup / SHM name /
m_targetskeyed by uuid) is not the break: the isolate uuid is distinct, the engine writes one-way frames onto it, and the core opens that ring. Meeting mix continues onmeeting-audio-16778240-programviaaudio_frame_received(mixed callback), ingested aszoom-mix. There is nozoom-mixstrip in this session's mixer (perGuestIso leaves it unrouted).What is still true. Isolate PCM that lands on Jamal's ring measures as silence while Zoom says he is talking. Other talkers' isolate rings have real speech. The only thing that uniquely identifies him is that he is
participants[0]and therefore the meeting-mix subscribe identity.Next, one-line experiment (then the fix): key
meeting-audioat a synthetic id that is not a guest (0/mix), so Zoom's mixed subscribe is not bound to Jamal. If his isolate then shows levels when he talks, the SDK is suppressing one-way for the mix-anchor user (or delivering zeros). That is the change to ship.- Isolate is subscribed:
- added a commit that references this issue
on Sep 12, 2026
Owner observation, live, 2026-09-10 (build e26a0e9, test meeting): "Audio from Jamal is very distorted and low quality. Meeting audio doesn't have any artifacts."
Evidence captured a minute later (
/snapshot,audioMixSession):gainDb: +6andnoiseSuppression: true. The summary reads "9 boosted". The only limiter is on master.audioLevel78, which makes him one of the louder voices.monitorUnderruns: 2over about 154 s of monitor play. Status was "muted" at capture time.Why this points at our per-guest path: the meeting mix is clean, but one guest's stem isn't. A loud source on a +6 dB strip, or our noise suppression on that stem, would affect one voice and leave the meeting mix alone.
Hypotheses, cheapest to check first:
peakDbfswhile he talks.Still unknown: where the owner heard it (their monitor, Program/recording, or the strip solo). That decides which hypothesis comes first.