JVB stops forwarding video in screen sharing

To provide more detailed information about the topic I raised in this week’s community call.

The setup is:

  1. JVB2.0 April 1st version
  2. RTX is enabled
  3. Simulcast is disabled
  4. Client is not upstream jitsi-meet client
  5. One to one screen sharing without audio
  6. On receiver side, the downlink bandwidth is 10Mbps with 2% packet lost (simulated by Mac Network Link Conditioner)
  7. Uplink bandwidth of sender is about 10Mbps
  8. I added some logs to JVB and Jitsi-media-transform to log the video RTP packets
  9. Sender is Chrome on Linux, and receiver is Chrome on Mac.

The observation:

  1. When sender keeps moving the mouse to scroll the page, some time later, the video/screen on receiver stops and never comes back.
  2. From JVB log, the bandwidth change of receiver is detected. And the bandwidth is smaller than the sender’s bitrate, JVB sets targetIndex to -1 in BitrateController::update(), adaptiveTrackProjection.setTargetIndex(trackTargetIdx), value -1 suspends forwarding video from sender to receiver.

I attach one log (it adds more log to help understanding the issue)

At line 105012, JVB detects bandwidth change for receiver

105012 JVB [2020-06-16 15:13:44.452] [FINE]: [rtcSrvr=pruc-xmpp-as-a-001.555.comcast.com] [118] [traceid=9a7b24a0-afe3-11ea-b251-15bee5e5022c confId=91f9babf08a69b1 conf_name =9a9e4953-afe3-11ea-8379-fa163e2bba96 epId=demo_9fffa630-afe3-11ea-bbd4-1fe1c03c16b6@iristest.comcast.com/8795c5e3-4925-4827-8a92-85c3d01d41f6] BitrateController.bandw idthChanged#554: update:bandwidth has changed from 3139551->1649490

At line 10515, JVB constructs a new TrackBitrateAllocation with ratedIndice bitrate 2944355

105015 JVB [2020-06-16 15:13:44.452] [AUDIT]: [rtcSrvr=pruc-xmpp-as-a-001.555.comcast.com] [118] [traceid=9a7b24a0-afe3-11ea-b251-15bee5e5022c confId=91f9babf08a69b1 conf_nam e=9a9e4953-afe3-11ea-8379-fa163e2bba96 epId=demo_9fffa630-afe3-11ea-bbd4-1fe1c03c16b6@iristest.comcast.com/8795c5e3-4925-4827-8a92-85c3d01d41f6] BitrateController$Trac kBitrateAllocation.#1461: InitializedRateIndices,ratedTargetIdx=-1,selected=false,ratedIndices=rateIndices=bps=2944355,encoding=subjective_quality=0,primary_ssrc=931940806,secondary_ssrcs={2713848696=RTX},temporal_id=-1,spatial_id=-1

Because 1649490 is smaller than 2944355, JVB sets ratedTargetIdx -1.

105022 JVB [2020-06-16 15:13:44.453] [AUDIT]: [rtcSrvr=pruc-xmpp-as-a-001.555.comcast.com] [118] [traceid=9a7b24a0-afe3-11ea-b251-15bee5e5022c confId=91f9babf08a69b1 conf_nam e=9a9e4953-afe3-11ea-8379-fa163e2bba96 epId=demo_9fffa630-afe3-11ea-bbd4-1fe1c03c16b6@iristest.comcast.com/8795c5e3-4925-4827-8a92-85c3d01d41f6] BitrateController.update#654: XKD-setTargetIdex=-1

105023 JVB [2020-06-16 15:13:44.454] [AUDIT]: [rtcSrvr=pruc-xmpp-as-a-001.555.comcast.com] [118] [traceid=9a7b24a0-afe3-11ea-b251-15bee5e5022c confId=91f9babf08a69b1 targetSs rc=931940806 srcEpId=demo_99e9e120-afe3-11ea-bbd4-1fe1c03c16b6@iristest.comcast.com/d6230d0d-2488-4e6d-a26a-32c0ba03748d conf_name=9a9e4953-afe3-11ea-8379-fa163e2bba96epId=demo_9fffa630-afe3-11ea-bbd4-1fe1c03c16b6@iristest.comcast.com/8795c5e3-4925-4827-8a92-85c3d01d41f6] AdaptiveTrackProjection.setTargetIndex#172: XKD-setTargetIndex:-1

You can test this case in https://sdk-demo.555.systems/src/features/screenshare/

Click the … on top right, and select pruc-xmpp-as-a-001.555.comcast.com. On more Chrome, enter a room name and click share, on another chrome, enter the same room name, click join.

Many thanks for the help,

/Kaiduan