Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Programatically disabling hardware encoding/decoding in WebRTC #119

Closed
fippo opened this issue Jan 11, 2023 · 5 comments
Closed

Programatically disabling hardware encoding/decoding in WebRTC #119

fippo opened this issue Jan 11, 2023 · 5 comments
Assignees
Labels
concerns: performance This proposal can't be performantly implemented or hurts perf even when not used concerns: power This feature may have negative impact on battery life concerns: privacy This proposal may cause privacy risk if implemented position: oppose topic: media Spec relates to audio, video, or other timed media topic: performance topic: webrtc venue: W3C WebRTC WG

Comments

@fippo
Copy link

fippo commented Jan 11, 2023

Request for position on an emerging web specification

  • WebKittens who can provide input: @youennf

Information about the specification

Design reviews and vendor positions

Bugs tracking this feature

  • WebKit Bugzilla:
  • Radar:

Anything else we need to know

The hardware encoders used by Safari are problematic as well as seen from these issues from the list-of-doom:
iPadOS 15 / iOS 15 unable to decode VP9 stream
https://bugs.webkit.org/show_bug.cgi?id=230604#c11

Safari: VP9-SVS no video stream from remote peer on some devices
https://bugs.webkit.org/show_bug.cgi?id=231074

Apple Silicon: Black screen share on remote side of peerconnection
https://bugs.webkit.org/show_bug.cgi?id=236870

and last but not least the infamous https://bugs.webkit.org/show_bug.cgi?id=232006

@annevk
Copy link
Contributor

annevk commented Feb 24, 2023

cc @youennf

@youennf
Copy link

youennf commented Feb 24, 2023

The hardware encoders used by Safari are problematic

I do not think this is true for any of the bugs mentioned here.
For one of them, there is indeed an issue with the HW decoder support but a software workaround was put in place.

The justification of this API seems to be browser bugs.
Given they have been fixed and websites can already decode in JavaScript themselves as a temporary stopgap, I do not think this API is worth pursuing, especially in UAs that have a limited number of HW configurations.

The note The methods specified in this section should be used sparingly and not for extended amounts of time. indicates this could be a footgun for web developers as well.

Also, the potential fingerprinting issues are not really mentioned. And the proposal is not aligned with Media Capabilities or WebCodecs. Doing something closer to https://www.w3.org/TR/webcodecs/#enumdef-hardwareacceleration might be better in that sense.

@nils-ohlmeier
Copy link

Also, the potential fingerprinting issues are not really mentioned. And the proposal is not aligned with Media Capabilities or WebCodecs.

Just as word of caution: Media Capabilities increases the fingerprinting as well. Especially since the playback API's are not guarded with anything as far as I know.

But I do agree that it would make more sense to continue extending the Media Capabilities API for encoding purposes, especially if it this could get leveraged in WebRTC and WebCodecs.

@hober hober moved this from Unscreened to Needs position in Standards Positions Review Backlog Mar 23, 2023
@hober hober moved this from Needs position to Needs assignees in Standards Positions Review Backlog Mar 27, 2023
@hober hober added topic: media Spec relates to audio, video, or other timed media topic: performance concerns: performance This proposal can't be performantly implemented or hurts perf even when not used concerns: power This feature may have negative impact on battery life labels Mar 27, 2023
@hober hober moved this from Needs assignees to Needs position in Standards Positions Review Backlog Mar 27, 2023
@youennf
Copy link

youennf commented Mar 28, 2023

Until the proposal is reworked to better align with existing APIs, I would go with position: oppose given the potential perf and fingerprinting issues.

@hober hober added the concerns: privacy This proposal may cause privacy risk if implemented label Mar 28, 2023
@hober
Copy link
Member

hober commented Mar 28, 2023

Barring objections, we'll mark this position: oppose in a week.

@hober hober moved this from Needs position to Position identified in Standards Positions Review Backlog Mar 28, 2023
@hober hober added this to the 2023 Week 14 milestone Mar 28, 2023
@hober hober changed the title Request for Position: programatically disabling hardware encoding/decoding in WebRTC Programatically disabling hardware encoding/decoding in WebRTC Mar 30, 2023
@hober hober closed this as completed Apr 26, 2023
@github-project-automation github-project-automation bot moved this from Position identified to Done in Standards Positions Review Backlog Apr 26, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
concerns: performance This proposal can't be performantly implemented or hurts perf even when not used concerns: power This feature may have negative impact on battery life concerns: privacy This proposal may cause privacy risk if implemented position: oppose topic: media Spec relates to audio, video, or other timed media topic: performance topic: webrtc venue: W3C WebRTC WG
Development

No branches or pull requests

6 participants