Hardcode VP8/VP9 algorithm choice when resisting fingerprinting
Categories
(Core :: Audio/Video: Playback, enhancement, P2)
Tracking
()
Tracking | Status | |
---|---|---|
firefox132 | --- | fixed |
People
(Reporter: arthur, Assigned: fkilic)
References
(Blocks 1 open bug)
Details
(Whiteboard: [tor 22548] [fingerprinting][fp-triaged])
Attachments
(3 files, 1 obsolete file)
Reporter | ||
Updated•8 years ago
|
Comment 1•8 years ago
|
||
Reporter | ||
Comment 2•8 years ago
|
||
Reporter | ||
Updated•8 years ago
|
Reporter | ||
Comment 7•8 years ago
|
||
Comment 8•8 years ago
|
||
Reporter | ||
Comment 9•8 years ago
|
||
Updated•7 years ago
|
Updated•7 years ago
|
Comment 11•6 years ago
|
||
The patch makes the algorithm selection of VP8/VP9 be hardcoded
regardless the CPU speed if 'privacy.resistfingerprinting' is on. We
would hardcode it into VP9 for Windows and Linux and into VP8 for MAC
and Android.
Comment 12•6 years ago
|
||
I've had a similar proposal for bug https://bugzilla.mozilla.org/show_bug.cgi?id=1461454
However this has been lost in the ether.
Comment 13•6 years ago
|
||
Comment 14•6 years ago
|
||
FYI: Bug 1614958 (75+) Android: now enables/disables VP9 based on hardware
Comment 15•5 years ago
|
||
Unassign myself because I am no longer actively working on this.
Updated•3 years ago
|
Comment hidden (obsolete) |
Assignee | ||
Comment 17•1 year ago
|
||
I realized that MediaCapabilities::CreateMediaCapabilitiesDecodingInfo
function is actually safe as with resistfingerprinting we return before even running the benchmark, so there's no need to modify dom/media/Benchmark.cpp directly.
The problem is in VP8/VP9 choice function. It may call IsV9Forced but that requires user disabling media.mediasource.vp9.enabled, which the Tor browser can lock to true on Desktop, but on Android things are different.
On Android, by default VP9 is disabled, but it could become enabled if the device supports hardware VP9 decoding. So basically an exception to the media.mediasource.vp9.enabled pref. We have to decide whether we want to force disable VP9 for Android or force software rendering on Android phones. Do note that IsVP9DecodeFast function returns false for Android always. So IMO force disabling VP9 for Android seems like the safer option
Assignee | ||
Comment 18•1 year ago
|
||
Updated•1 year ago
|
Updated•1 year ago
|
Comment 19•1 year ago
|
||
Comment 20•1 year ago
|
||
bugherder |
Comment 21•1 year ago
|
||
(In reply to Fatih Kilic from comment #17)
I realized that
MediaCapabilities::CreateMediaCapabilitiesDecodingInfo
function is actually safe as with resistfingerprinting we return before even running the benchmark, so there's no need to modify dom/media/Benchmark.cpp directly.The problem is in VP8/VP9 choice function. It may call IsV9Forced but that requires user disabling media.mediasource.vp9.enabled, which the Tor browser can lock to true on Desktop, but on Android things are different.
On Android, by default VP9 is disabled, but it could become enabled if the device supports hardware VP9 decoding. So basically an exception to the media.mediasource.vp9.enabled pref. We have to decide whether we want to force disable VP9 for Android or force software rendering on Android phones. Do note that IsVP9DecodeFast function returns false for Android always. So IMO force disabling VP9 for Android seems like the safer option
I did some homework 🙂.
Android has built-in support since Android 4.4+, Firefox targets 5+.
As for hardware support, here's a list of the first SoCs that supported VP9 in-hardware. It's mostly chip that came out between 2014 and 2016 (around the same period as the first aarch64 devices).
I tried software decoding with 1080p for Tears of steel encoded by Wikipedia (you need to scroll for the various transcodings) on my old Oneplus One.
1080p worked very well, even though it was in software. 4k skipped entire seconds, but I guess one can expect from a device from that period 😅.
Assignee | ||
Comment 22•1 year ago
|
||
Oh that's great to hear because we actually ended up forcing HW decoding or software decoding if not available hahaha. So, we'll never reject playing a VP9 video. Thank you!
Description
•