Bug 240336

Summary: The quality of the video transmitted by WebRTC is very low on iOS Safari 15.4(only Offerer situation)
Product: WebKit Reporter: yuki uchida <rantarn0326>
Component: WebRTCAssignee: Nobody <webkit-unassigned>
Status: RESOLVED CONFIGURATION CHANGED    
Severity: Normal CC: kyle, webkit-bug-importer, youennf
Priority: P2 Keywords: InRadar
Version: Safari 15   
Hardware: iPhone / iPad   
OS: iOS 15   
See Also: https://bugs.webkit.org/show_bug.cgi?id=238366

Description yuki uchida 2022-05-12 02:32:32 PDT
# Overview
The quality of the video transmitted by WebRTC is very low on iOS Safari 15.4.
And, changing MediaStreamTrack.enabled eliminate this problem.


## steps to reproduce
device A: iOS Safari
device B: Any(ChromeM101 on Mac and iPadOS(unknown version) was tested)

1. (device A&B) visit https://yasubaba.github.io/prodSkyWay/room_videoMute/
2. (device A&B) Accept permissions for camera and microphone.
3. (device A&B) join Room and start WebRTC Connection.
4. (device B) received Video is very low quality. (However, the image quality seems to be normal on webrtc internals.)
5. (device A) click `Video Mute/Unmute` 
6.  (device B) received Video is good quality. (However, But on webrtc internals it looks no different than step 4)


The mute procedure is very simple as follows
```
document.getElementById('js-videoEnabled').addEventListener('click', () => {
  localStream.getVideoTracks().forEach( track => {
    track.enabled = !track.enabled;
  });
})
```


## Actual Results
iOS Safari always send low quality video at first, but changing track.enabled is workaround.

## Expected Results
device B receive good quality Video.

## Hardware
iPhone11 iOS15.4
Comment 1 yuki uchida 2022-05-12 02:48:59 PDT
(In reply to yuki uchida from comment #0)
> # Overview
> The quality of the video transmitted by WebRTC is very low on iOS Safari
> 15.4.
> And, changing MediaStreamTrack.enabled eliminate this problem.
> 
> 
> ## steps to reproduce
> device A: iOS Safari
> device B: Any(ChromeM101 on Mac and iPadOS(unknown version) was tested)
> 
> 1. (device A&B) visit https://yasubaba.github.io/prodSkyWay/room_videoMute/
> 2. (device A&B) Accept permissions for camera and microphone.
> 3. (device A&B) join Room and start WebRTC Connection.
> 4. (device B) received Video is very low quality. (However, the image
> quality seems to be normal on webrtc internals.)
> 5. (device A) click `Video Mute/Unmute` 
> 6.  (device B) received Video is good quality. (However, But on webrtc
> internals it looks no different than step 4)
> 
> 
> The mute procedure is very simple as follows
> ```
> document.getElementById('js-videoEnabled').addEventListener('click', () => {
>   localStream.getVideoTracks().forEach( track => {
>     track.enabled = !track.enabled;
>   });
> })
> ```
> 
> 
> ## Actual Results
> iOS Safari always send low quality video at first, but changing
> track.enabled is workaround.
> 
> ## Expected Results
> device B receive good quality Video.
> 
> ## Hardware
> iPhone11 iOS15.4


Postscript.

This problem seems to occur only when iOS Safari is the Offerer. iOS Safari is the Answerer, Chrome receives a clean image from the beginning.


## steps to reproduce
device A: iOS Safari
device B: Any(ChromeM101 on Mac and iPadOS(unknown version) was tested)

1. (device A&B) visit https://yasubaba.github.io/prodSkyWay/room_videoMute/
2. (device A&B) Accept permissions for camera and microphone.
3. (device B) join Room and start WebRTC Connection.
4. (device A) join Room and start WebRTC Connection.(createOffer)
5. (device A&B)  WebRTC Connection start.
6. (device B) received Video is very low quality. (However, the image quality seems to be normal on webrtc-internals.)
7. (device A) click `Video Mute/Unmute` 
8 (device B) received Video is good quality. (However, But on webrtc-internals it looks no different than step 6)
Comment 2 youenn fablet 2022-05-12 06:40:05 PDT
Can you try on latest iOS 15.5 beta to see whether that fixes your issue?
Comment 3 Radar WebKit Bug Importer 2022-05-12 06:41:17 PDT
<rdar://problem/93171146>
Comment 4 Kyle Foley 2022-05-12 09:02:59 PDT
15.5 beta fixes the Safari issue for me
Comment 5 youenn fablet 2022-05-18 05:45:59 PDT
Marking as configuration changed