Bug 262569
| Summary: | REGRESSION (iOS 17): mediaDevices.enumerateDevices() breaks audio | ||
|---|---|---|---|
| Product: | WebKit | Reporter: | evancarlson |
| Component: | WebRTC | Assignee: | youenn fablet <youennf> |
| Status: | RESOLVED FIXED | ||
| Severity: | Major | CC: | eric.carlson, jer.noble, joel, saghul, seanmacisaac, webkit-bug-importer, youennf |
| Priority: | P2 | Keywords: | InRadar |
| Version: | Safari 17 | ||
| Hardware: | iPhone / iPad | ||
| OS: | iOS 17 | ||
evancarlson
This is a regression between iOS 16 and iOS 17.
It appears that when the microphone is disabled and mediaDevices.enumerateDevices() is called, audio only comes from the call speaker on the top of the phone (making it very hard to hear).
Prior to iOS 17, audio came from both the call speaker on the top of the phone and from the device speakers on the bottom of the phone.
Minimal Repro:
1. Add an audio element to the "choose camera, microphone and speaker" demo: https://webrtc.github.io/samples/src/content/devices/input-output/
2. Set the audio constraint to false
3. Open the camera and play audio
This is impacting live web experiences for Sesame Street, Kraft, Pandora, & more.
| Attachments | ||
|---|---|---|
| Add attachment proposed patch, testcase, etc. |
Radar WebKit Bug Importer
<rdar://problem/116433066>
youenn fablet
Can you be more specific about the repro steps.
I wrote https://codepen.io/youennf/pen/jOXQZEo to try reproducing.
In this webpage, I did the following:
1. click play (get some audio playing)
2. click enumerate (to call enumerateDevices).
3. Observe whether there is a change of audio.
I was not able to reproduce the issue with these 3 steps so far.
Is there a step where camera capture should also happen?
Which iOS device are you using for testing?
evancarlson
Yes, I can reproduce the issue on the codepen with the following steps:
1. Click enumerate
2. Click start camera
3. Play audio
Note that if you skip step one, the audio plays as expected.
iOS 17.0.3, iPhone 12 Pro Max
youenn fablet
I was able to reproduce as well with:
1. Click enumerate
2. Click start camera
3. Click enumerate
4. Play audio
The issue is probably that the auxiliary unit stays live while it should be stopped.
youenn fablet
Pull request: https://github.com/WebKit/WebKit/pull/18835
EWS
Committed 269196@main (1bf29719b104): <https://commits.webkit.org/269196@main>
Reviewed commits have been landed. Closing PR #18835 and removing active labels.