Skip to content

Signal rtp-mid-demux capability for supporting participants#1287

Open
JonathanLennox wants to merge 2 commits into
jitsi:masterfrom
JonathanLennox:mid-demux-stamping
Open

Signal rtp-mid-demux capability for supporting participants#1287
JonathanLennox wants to merge 2 commits into
jitsi:masterfrom
JonathanLennox:mid-demux-stamping

Conversation

@JonathanLennox

Copy link
Copy Markdown
Member

Summary

When a participant advertises mid-demux support (and SSRC rewriting is in use), tell the bridge via the new rtp-mid-demux Colibri2 endpoint capability so it stamps the sdes:mid header extension on rewritten media. The mid extension itself is already offered to clients, so no change to the offer is needed; this only controls the bridge-side stamping.

Part of the cross-repo bridge-stamped mid change (durable fix for the Chrome/WebRTC silent audio-demux wedge under SSRC rewriting). Companion mid-demux-stamping branches in jitsi-xmpp-extensions, jitsi-videobridge, and lib-jitsi-meet; tested together.

Details

  • Features.RTP_MID_DEMUX disco feature (http://jitsi.org/rtp-mid-demux).
  • Participant.useRtpMidDemux(): requires SSRC rewriting, the new use-rtp-mid-demux config (default on), and client support.
  • Plumbed through ParticipantAllocationParametersParticipantInfo and emitted in Extensions.toEndpoint.

The capability is added by literal string to keep building against the currently-depended jitsi-xmpp-extensions release; switch to Capability.CAP_RTP_MID_DEMUX_SUPPORT once a release containing it is used.

Tests

mvn test-compile, ktlint, and ColibriTranscriptionTest pass.

🤖 Generated with Claude Code

When a participant advertises mid-demux support (and SSRC rewriting is in
use), tell the bridge via the new "rtp-mid-demux" Colibri2 endpoint
capability so it stamps the sdes:mid header extension on rewritten media.
The mid extension itself is already offered to clients, so no change to the
offer is needed; this only controls the bridge-side stamping.

- Features.RTP_MID_DEMUX disco feature ("http://jitsi.org/rtp-mid-demux").
- Participant.useRtpMidDemux(): requires SSRC rewriting, the new
  use-rtp-mid-demux config (default on), and client support.
- Plumbed through ParticipantAllocationParameters -> ParticipantInfo and
  emitted in Extensions.toEndpoint.

The capability is added by literal string to keep building against the
currently-depended jitsi-xmpp-extensions release; switch to
Capability.CAP_RTP_MID_DEMUX_SUPPORT once a release containing it is used.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@codecov

codecov Bot commented Jun 17, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 28.57143% with 10 lines in your changes missing coverage. Please review.
✅ Project coverage is 26.20%. Comparing base (72d22de) to head (a9eb728).

Files with missing lines Patch % Lines
.../kotlin/org/jitsi/jicofo/conference/Participant.kt 0.00% 4 Missing and 1 partial ⚠️
...tlin/org/jitsi/jicofo/bridge/colibri/Extensions.kt 0.00% 2 Missing ⚠️
...org/jitsi/jicofo/bridge/colibri/ParticipantInfo.kt 0.00% 2 Missing ⚠️
...tsi/jicofo/bridge/colibri/ColibriSessionManager.kt 0.00% 1 Missing ⚠️
Additional details and impacted files

Impacted file tree graph

@@            Coverage Diff            @@
##             master    #1287   +/-   ##
=========================================
  Coverage     26.20%   26.20%           
- Complexity      469      470    +1     
=========================================
  Files           126      126           
  Lines          7908     7922   +14     
  Branches       1212     1216    +4     
=========================================
+ Hits           2072     2076    +4     
- Misses         5523     5532    +9     
- Partials        313      314    +1     
Files with missing lines Coverage Δ
.../src/main/kotlin/org/jitsi/jicofo/xmpp/Features.kt 100.00% <100.00%> (ø)
...i/jicofo/conference/ParticipantInviteRunnable.java 50.95% <100.00%> (+0.31%) ⬆️
...c/main/kotlin/org/jitsi/jicofo/ConferenceConfig.kt 96.15% <100.00%> (+0.15%) ⬆️
...tsi/jicofo/bridge/colibri/ColibriSessionManager.kt 0.00% <0.00%> (ø)
...tlin/org/jitsi/jicofo/bridge/colibri/Extensions.kt 0.00% <0.00%> (ø)
...org/jitsi/jicofo/bridge/colibri/ParticipantInfo.kt 0.00% <0.00%> (ø)
.../kotlin/org/jitsi/jicofo/conference/Participant.kt 50.98% <0.00%> (-1.29%) ⬇️

Continue to review full report in Codecov by Harness.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 72d22de...a9eb728. Read the comment docs.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

jitsi-ci Bot pushed a commit to jitsi/jitsi-pr-tests-pages that referenced this pull request Jun 17, 2026
useRtpMidDemux() told the bridge to assign and signal per-slot mids based
only on SSRC rewriting + use-rtp-mid-demux + client support, independent of
whether the sdes:mid header extension was actually negotiated. With the
extension disabled (codec.rtp-extensions.mid.enabled = false) the bridge
still signaled a0/v0 mids, which the client placed on its m-lines with no
extension to carry them in RTP (and which the bridge never stamped). Gate
useRtpMidDemux() on the extension being offered so the three stay consistent.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant