Closed Bug 1832521 Opened 3 years ago Closed 2 years ago

REMB is not sent when send transceivers are deactivated

Categories

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

Firefox 113
defect

Tracking

()

RESOLVED INCOMPLETE

People

(Reporter: vshaqi, Assigned: bwc)

Details

Steps to reproduce:

There is logic in libWebRTC to decide which module should carry REMB, active RTP senders take precedence over RTP receivers. When all senders are inactive, REMB is sent by one of the receiver. See https://webrtc.googlesource.com/src/+/refs/heads/main/modules/pacing/packet_router.cc#348.

Firefox has added support for RTCRtpEncodingParameters.active since version 110, but it doesn't seem to change the active state of the RTP senders. If any video sender is activated and is sending data, REMB can be sent by the sender. If all video senders are deactivated, REMB can not be sent.

I modified a WebRTC sample to reproduce this. The code is here https://github.com/shaofan-qi/webrtc-samples/tree/remb-recvonly/src/content/peerconnection/pc1, which added a sendonly transceiver on the receive side and set RTCRtpEncodingParameters.active to false.

Steps to reproduce:

  1. Set environment variable MOZ_LOG=webrtc_trace:5 to enable WebRTC logging.
  2. Open this peer connection sample https://shaofan-qi.github.io/webrtc-samples/src/content/peerconnection/pc1 in Firefox 110+.
  3. Click Start, approve the device permissions then click Call.
  4. Check REMB from the logs, the log is like this "D/webrtc_trace (rtcp_receiver.cc:1202): Incoming REMB: 1238904", which means the send side receives an REMB message from the receive side.

Actual results:

Didn't see the Incoming REMB messages, because REMB was not sent.

Expected results:

Should see the Incoming REMB messages. This is the behavior in Chrome and Safari.

If any video sender is activated and is sending data, REMB can be sent by the sender. If all video senders are deactivated, REMB can not be sent.
Because the underlying RtpVideoSenders are still active (Stop() not called) after setting RTCRtpEncodingParameters.active to false. REMB still binds to a sender, but nothing is actually sending, so no RTCP payload-specific Feedback messages.

The Bugbug bot thinks this bug should belong to the 'Core::WebRTC: Audio/Video' component, and is moving the bug to that component. Please correct in case you think the bot is wrong.

Component: Untriaged → WebRTC: Audio/Video
Product: Firefox → Core

This is tied to RTCRtpEncodingParameters.active. Byron, could you take a look?

Flags: needinfo?(docfaraday)
Assignee: nobody → docfaraday
Flags: needinfo?(docfaraday)

So, the logging in the description no longer exists, and once I turn transport-cc off (libwebrtc will not use REMB if transport-cc is being used), I see REMB sent when all encodings are inactive, provided we're receiving frames. Maybe this bug no longer exists? Could you verify?

Flags: needinfo?(vshaqi)

Redirect a needinfo that is pending on an inactive user to the triage owner.
:jib, since the bug has recent activity, could you have a look please?

For more information, please visit BugBot documentation.

Flags: needinfo?(vshaqi) → needinfo?(jib)

Reporter has not responded and from comment 4 it sounds like we cannot repro. Do we close?

Flags: needinfo?(jib) → needinfo?(docfaraday)

Yeah.

Status: UNCONFIRMED → RESOLVED
Closed: 2 years ago
Flags: needinfo?(docfaraday)
Resolution: --- → INCOMPLETE
You need to log in before you can comment on or make changes to this bug.