Closed Bug 1429219 Opened 8 years ago Closed 8 years ago

Enforce providing simulcast encodings with enough bits to avoid encoder Init failure

Categories

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

58 Branch
Unspecified
All
defect

Tracking

()

RESOLVED FIXED
mozilla59
Tracking Status
firefox58 blocking fixed
firefox59 --- fixed

People

(Reporter: jesup, Assigned: jesup)

References

Details

Attachments

(1 file)

VP8 gets upset if you use temporal layers and don't specify a number of bits for each; but if the initial bitrate available is too low (such as when you switch to a screenshare when at a low bitrate), the largest simulcast screenshare layer(s) may not get allocated bits, and thus the ts_target_bitrates may be 0, leading to InitEncode() failure. This ensures that the encoder init won't fail due to a simulcast encoding getting 0 bits. Note that future allocations will all happen "normally"; this is only an issue with Initing the encoder. For example, if 500kbps is available at the point of switching, there may be enough for the 320x240 and 640x480 layers to init, but not the 1280x960 layer, and stream_bitrates[] might be [200, 300, 0]. Without this patch InitEncode for the last layer will fail.
Comment on attachment 8941204 [details] [diff] [review] Ensure VP8 simulcast with temporal layers won't fail if there aren't enough bits Review of attachment 8941204 [details] [diff] [review]: ----------------------------------------------------------------- LGTM
Attachment #8941204 - Flags: review?(drno) → review+
Also here: candidate for upstreaming?
Flags: needinfo?(rjesup)
Definitely should open an upstream bug for this; I strongly suspect they'll want to solve it in a different way as part of the bug they're currently trying to finish that redoes a lot of the simulcast/temporal-layer code: https://bugs.chromium.org/p/webrtc/issues/detail?id=4172
Flags: needinfo?(rjesup) → needinfo?(dminor)
Pushed by rjesup@wgate.com: https://hg.mozilla.org/integration/mozilla-inbound/rev/ef313ab76a82 Ensure VP8 simulcast with temporal layers won't fail if there aren't enough bits r=drno
Status: NEW → RESOLVED
Closed: 8 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla59
Attachment #8941204 - Flags: approval-mozilla-beta?
Hi Gerry, Ryan, this fix needs to be included in RC1. Could you please approve and make sure RC1 is built with this fix in? Thanks! Tracking as a blocker to be sure this doesn't fall off our radar.
Flags: needinfo?(ryanvm)
Flags: needinfo?(gchang)
Attachment #8941204 - Flags: approval-mozilla-release?
Comment on attachment 8941204 [details] [diff] [review] Ensure VP8 simulcast with temporal layers won't fail if there aren't enough bits Take this in RC. Beta58+.
Flags: needinfo?(gchang)
Attachment #8941204 - Flags: approval-mozilla-release?
Attachment #8941204 - Flags: approval-mozilla-release+
Attachment #8941204 - Flags: approval-mozilla-beta?
Attachment #8941204 - Flags: approval-mozilla-beta+
Flags: needinfo?(ryanvm)
Flags: needinfo?(dminor)
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: