Closed Bug 1449895 Opened 8 years ago Closed 2 years ago

Need some way to disable multiple layers in VP9

Categories

(Core :: WebRTC: Audio/Video, defect, P3)

defect

Tracking

()

RESOLVED WORKSFORME

People

(Reporter: paul.a.bellamy, Unassigned)

Details

User Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36 Steps to reproduce: 1. Have hardware which supports VP9, but not multiple layers. For example, an S905X CPU from Amlogic, used in a media box (Amlogic is pretty popular in media boxes). You can read some info about it here https://en.wikipedia.org/wiki/Amlogic 2. Use a desktop capture to encode VP9 from chrome/chromium (which forces multiple spatial layers) 3. Fail to decode vp9 with multiple layers Actual results: 2 spatial layers are hard-coded for desktop capture video sources, which fails on the hardware decoding (artifacting). Expected results: It would be nice to have some way to request only a single layer SVC stream for decoders which only support that. In particular, the hard-codeing of the svc layers is at: https://dxr.mozilla.org/mozilla-central/source/media/webrtc/signaling/src/media-conduit/VideoConduit.cpp?redirect_type=direct#559-574 For more info, Chrome has/had the same issue: https://bugs.chromium.org/p/webrtc/issues/detail?id=8702#c10
Based on other similar reports I think the correct component for here would be Core::Audio/Video: Playback. Please change if this is not the right component.
Component: Untriaged → Audio/Video
Product: Firefox → Core
Component: Audio/Video → Audio/Video: Playback
Jya: is VP9 hardware decoding turned on by default already? Paul: what do you mean by some way? A compile time option for when you compile Firefox for such a media box, or a user pref, or are you asking for a JavaScript API here?
Status: UNCONFIRMED → NEW
Rank: 25
Component: Audio/Video: Playback → WebRTC: Audio/Video
Ever confirmed: true
Flags: needinfo?(paul.a.bellamy)
Flags: needinfo?(jyavenard)
Priority: -- → P3
I mean a JavaScript API. The chromium issue has opted to default screen-sharing to a single SVC layer, which also fixes our issue. But, aside from that, some way (in-band or out-of-band) for the screen-sharing client to indicate that it can only accept a single VP9 layer.
Flags: needinfo?(paul.a.bellamy)
(In reply to Nils Ohlmeier [:drno] from comment #2) > Jya: is VP9 hardware decoding turned on by default already? > No > Paul: what do you mean by some way? A compile time option for when you > compile Firefox for such a media box, or a user pref, or are you asking for > a JavaScript API here? We never use the VP9 hardware decoder with WebRTC, only for video playback on windows and if the machine has been benchmarked to be fast enough to decode and if the hardware supports it. In WebRTC, only the libvx software decoder is used. Also, VP9 isn't the default codec (it's VP8) I'm guessing the issue is only for the remote box for content encoded by firefox. Would need to add a way to describe the codec accepted by the remote peer...
Flags: needinfo?(jyavenard)
> the issue is only for the remote box for content encoded by firefox Yes, exactly.
Severity: normal → S3

As far as I can tell we've been doing a single spatial layer for some time. We don't support the webrtc-svc spec (and by extension, more than one layer in our impl), but that is how one will be able to control what svc config gets used for encoding.

Status: NEW → RESOLVED
Closed: 2 years ago
Resolution: --- → WORKSFORME
You need to log in before you can comment on or make changes to this bug.