| Summary: | Safari users are not able to hear audio from remote participants | ||||||
|---|---|---|---|---|---|---|---|
| Product: | WebKit | Reporter: | Jaya <jaya.allamsetty> | ||||
| Component: | WebRTC | Assignee: | Nobody <webkit-unassigned> | ||||
| Status: | NEW --- | ||||||
| Severity: | Major | CC: | bfulgham, feross, webkit-bug-importer, youennf | ||||
| Priority: | P2 | Keywords: | InRadar | ||||
| Version: | Safari 13 | ||||||
| Hardware: | Mac | ||||||
| OS: | macOS 10.15 | ||||||
| Attachments: |
|
||||||
|
Description
Jaya
2020-04-29 07:20:00 PDT
This seems to be easily reproducible when a remote participant leaves and joins the call again. When a remote source is removed from conference, we change the direction on the corresponding m=line in the sdp as "inactive" and then re-use any inactive m-lines of the same media type when a new remote source is added to the conference. Is it possible that this is what causing the audio issue ? (In reply to Jaya from comment #1) > This seems to be easily reproducible when a remote participant leaves and > joins the call again. > When a remote source is removed from conference, we change the direction on > the corresponding m=line in the sdp as "inactive" and then re-use any > inactive m-lines of the same media type when a new remote source is added to > the conference. Is it possible that this is what causing the audio issue ? I think this is the issue here. Is it Safari specific code? It seems in that case webkit receives a live stream whose WebRTC backend RemoteAudioSource is ended, so exits early when trying to register an observer. (In reply to youenn fablet from comment #2) > (In reply to Jaya from comment #1) > > This seems to be easily reproducible when a remote participant leaves and > > joins the call again. > > When a remote source is removed from conference, we change the direction on > > the corresponding m=line in the sdp as "inactive" and then re-use any > > inactive m-lines of the same media type when a new remote source is added to > > the conference. Is it possible that this is what causing the audio issue ? > > I think this is the issue here. > Is it Safari specific code? No, we do the same for Firefox as well and we don't see any issue there. > It seems in that case webkit receives a live stream whose WebRTC backend > RemoteAudioSource is ended, so exits early when trying to register an > observer. (In reply to Jaya from comment #3) > (In reply to youenn fablet from comment #2) > > (In reply to Jaya from comment #1) > > > This seems to be easily reproducible when a remote participant leaves and > > > joins the call again. > > > When a remote source is removed from conference, we change the direction on > > > the corresponding m=line in the sdp as "inactive" and then re-use any > > > inactive m-lines of the same media type when a new remote source is added to > > > the conference. Is it possible that this is what causing the audio issue ? > > > > I think this is the issue here. > > Is it Safari specific code? > > No, we do the same for Firefox as well and we don't see any issue there. Is there a way to test this code path with Chrome as well? This might be an issue within libwebrtc code. (In reply to youenn fablet from comment #4) > (In reply to Jaya from comment #3) > > (In reply to youenn fablet from comment #2) > > > (In reply to Jaya from comment #1) > > > > This seems to be easily reproducible when a remote participant leaves and > > > > joins the call again. > > > > When a remote source is removed from conference, we change the direction on > > > > the corresponding m=line in the sdp as "inactive" and then re-use any > > > > inactive m-lines of the same media type when a new remote source is added to > > > > the conference. Is it possible that this is what causing the audio issue ? > > > > > > I think this is the issue here. > > > Is it Safari specific code? > > > > No, we do the same for Firefox as well and we don't see any issue there. > > Is there a way to test this code path with Chrome as well? > This might be an issue within libwebrtc code. Unfortunately, I don't have a quick way of testing this code path with chrome, we are still running chrome in plan-b mode. This issue seems possibly related to: https://bugs.webkit.org/show_bug.cgi?id=212669 No longer reproduces on meet.jit.si. A workaround was added by jitsi to not reuse for now the transceiver made inactive. Surfacing the state of the remote source at the track level in https://bugs.webkit.org/show_bug.cgi?id=213074. This also contains a small repro case of the jitsi issue. (In reply to youenn fablet from comment #8) > No longer reproduces on meet.jit.si. > A workaround was added by jitsi to not reuse for now the transceiver made > inactive. Another workaround might be to keep the ssrcs in the offer. (In reply to youenn fablet from comment #10) > (In reply to youenn fablet from comment #8) > > No longer reproduces on meet.jit.si. > > A workaround was added by jitsi to not reuse for now the transceiver made > > inactive. > > Another workaround might be to keep the ssrcs in the offer. So just overwrite the ssrcs in the m-line if it needs to be re-used to for a new remote source ? (In reply to Jaya from comment #11) > (In reply to youenn fablet from comment #10) > > (In reply to youenn fablet from comment #8) > > > No longer reproduces on meet.jit.si. > > > A workaround was added by jitsi to not reuse for now the transceiver made > > > inactive. > > > > Another workaround might be to keep the ssrcs in the offer. > > So just overwrite the ssrcs in the m-line if it needs to be re-used to for a > new remote source ? Overwriting will probably not work. If you can reuse the same ssrcs, keeping them in the offer should work. I haven't played with an m section with multiple ssrcs. (In reply to youenn fablet from comment #12) > (In reply to Jaya from comment #11) > > (In reply to youenn fablet from comment #10) > > > (In reply to youenn fablet from comment #8) > > > > No longer reproduces on meet.jit.si. > > > > A workaround was added by jitsi to not reuse for now the transceiver made > > > > inactive. > > > > > > Another workaround might be to keep the ssrcs in the offer. > > > > So just overwrite the ssrcs in the m-line if it needs to be re-used to for a > > new remote source ? > > Overwriting will probably not work. > If you can reuse the same ssrcs, keeping them in the offer should work. > I haven't played with an m section with multiple ssrcs. Oh ok, thanks for clarifying. Re-using the ssrcs will not be possible in our case since these are signaled by the jitsi video bridge and would involve a lot of redesign there. Thanks for the suggestion though. |