You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The group call answer only ever offered OPUS and VP8, and numbered H.264 at 102 where
tgcalls puts VP9, so the payload types of everybody else's video were misread. GroupSdp now
builds the full table tgcalls' filterSupportedVideoFormats() and assignPayloadTypes()
produce -- opus 111, L16 112, VP8 100/rtx 101, VP9 102/rtx 103, H.264 104/rtx 105 -- with
the goog-remb, transport-cc, fir, nack and nack-pli feedback and the audio-level,
abs-send-time, transport-cc and video-orientation extensions that go with them.
H.265 is deliberately absent: tgcalls whitelists it only on the one-to-one v2 path, never
for group calls.
The SFU announces its own payload type table in the join response, and that is now parsed
and honoured, but only for the payload type numbering and the codec names. Its clock rates
and fmtp are not usable as given -- the live SFU announces VP8 as 9000Hz with one channel --
so everything else comes from our own capability list, which is also why tgcalls only reads
enableH264 out of it.
Which codec we send is no longer fixed either. WebmSource reports the codec of the track it
picked, and the answer is rebuilt with that codec first when it turns out not to be VP8, so
a VP9 or H.264 file plays without being transcoded. Picking the track also means saying so:
a file whose video we cannot send is skipped with a warning instead of being packetized as
if it were VP8.
H.264 needs framing on top of that, since Matroska stores length-prefixed NALs and RTP
wants Annex B. H264Framing converts them and prepends the SPS and PPS from avcC to every
keyframe, so a receiver that joins mid-stream can decode.
Finally, outgoing audio now reports a level. The extension is negotiated but was never
written, so the SFU believed we were permanently silent and relayed our audio to nobody:
that is why a group call played video but no sound.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
0 commit comments