We recently fixed a regression in Firefox 57 that the
max-fs parameter in
fmtp lines had stopped working in Firefox 56. Because it got reported to us while Firefox 56 was still in it’s Beta cycle we uplifted the patch for Firefox 56 as well.
It got diagnosed a short time ago that this patch had unforeseen consequences: it can result in Firefox stopping to send video in the middle of a call.
What causes the video to freeze
By default Firefox adds
fmtp lines like this to it’s SDP offers:
a=fmtp:120 max-fs=12288;max-fr=60 a=fmtp:121 max-fs=12288;max-fr=60
If Firefox 56 and later receive this the
max-fs value will be respected. But in Firefox 56 and 57 the problem arises when the
max-fs parameter is not present in the remote SDP.
So if the remote SDP contains
fmtp lines like this:
Firefox 56 and later will interpret the missing
max-fs parameter literally as a zero. Also the absence of an
fmtp attribute for the chosen video codec will be interpreted as a zero
The result is that calls will get established as normal. But if:
- The remote SDP did not have the
max-fsparameter (including no
- The machine which runs Firefox gets under load (either through Firefox or something else running on the machine)
- Or the available bandwidth for the PeerConnection is low
Firefox will try to downscale the resolution of the outgoing video stream to cope with the load/bandwidth. And in that case Firefox will stop encoding and sending video, because at this point the zero from the missing
max-fs parameter kicks in and restricts the encoder to do nothing.
What to do now
The problem has been fixed in the latest Firefox 58 (aka Nightly) build (58.0a1 (2017-09-29)) and will get uplifted as far as possible. You can follow the progress in the bug report.
In the meantime as a workaround we recommend to artificially add a
max-fs parameter to the
fmtp lines of the remote SDP (offer or answer depending on the roles) for Firefox if it’s not present already. Examples:
a=fmtp:120 should be turned into
And in case of no
fmtp parameter you should add
a=fmtp:120 max-fs=12288 to the video m-section of the SDP.
We apologize for any inconvenience this might cause. And we are looking at ways to prevent something like this from happening in the future again.