SVC consumer deactivated due to not enough bandwidth

Hi there!

I am using VP9 SVC.

On my production environment I have a problem when consumers get a completely frozen video. This problem repeats regularly.

I add debug logs and see the following:

RTC::TransportCongestionControlClient::MayEmitAvailableBitrateEvent() | high BWE value decrease detected, notifying listener [now:1076768, before:2025000].

RTC::SvcConsumer::UpdateTargetLayers() | target layers changed [spatial:-1, temporal:-1, consumerId:02e16c63-7125-4c06-bee4-f928866f9679].

After that I get a layerschange event on the consumer with undefined layers.

According to the documentation, this event means that `consumer deactivated due to not enough bandwidth’.

But 1076768 bps is quite enough for S0T0 or even higher level.

Producer side client have score ‘10’.

Can you help me identify the source of the problem? I miss some configuration? Can network problems cause this behaviour? On local environment everything works fine.

P.S.
worker settings:

{
        kind: MediaKind.Video,
        mimeType: 'video/VP9',
        clockRate: 90000,
        parameters: {
          'profile-id': 0,
          'x-google-start-bitrate': 1000,
        },
        preferredPayloadType: 103,
      },
...
 initialAvailableOutgoingBitrate: 1000000,
    maxSctpMessageSize: 262144,
    // Additional options that are not part of WebRtcTransportOptions.
    maxIncomingBitrate: 1500000,

producer settings:

mimeType: video/vp9
scalabilityMode: L3T3_KEY
dtx: false

P.P.S. when this problem occurs I can see high packet loss (12%) on client WebRtc stats. Could this be a cause or effect?

P.P.P.S. Tried to switch to VP8 with config:

mimeType: video/vp8
scaleResolutionDownBy: 1
scalabilityMode: 'L1T3'

And got same behavior:

RTC::SimulcastConsumer::UpdateTargetLayers() | target layers changed [spatial:-1, temporal:-1, consumerId:1361ecf5-1886-4798-8bc9-b88976a1b4c9]"

But no BWE warinings before, just:

RTC::RtpStream::UpdateScore() | [added score:10, previous computed score:9, new computed score:10] (calling listener)

Please check some recently merged PRs and also an ongoing VP9 related PR that is gonna be merged soon in mediasoup repo. They will improve BWE in next release.

Thanks for the quick response.

I had high hopes for this 3.15.5 release, but unfortunately the described behavior hasn’t changed.

Still see:

high BWE value decrease detected, notifying the listener [now:429031, before:982817]

RTC::SvcConsumer::UpdateTargetLayers() | target layers changed [spatial:-1, temporal:-1