<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><p dir="auto" style="box-sizing: border-box; margin-bottom: 16px; color: rgb(31, 35, 40); font-family: -apple-system, system-ui, "Segoe UI", "Noto Sans", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji"; font-variant-ligatures: normal; orphans: 2; widows: 2; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; margin-top: 0px !important;" class="">Have a very obscure issue with a WebRTC client where after adding a participant to a (3 party) conference call, one of the remote parties can not hear the other remote party, even though the local (WebRTC) party can hear both remote parties. I will hold off on providing all of the gruesome details for now because my issue may just be lack of understanding the correct way to set this up.</p><p dir="auto" style="box-sizing: border-box; margin-top: 0px; margin-bottom: 16px; color: rgb(31, 35, 40); font-family: -apple-system, system-ui, "Segoe UI", "Noto Sans", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji"; font-variant-ligatures: normal; orphans: 2; widows: 2; background-color: rgb(255, 255, 255); text-decoration-thickness: initial;" class="">I am using RTPEngine 8.5.11 (old version I know which may also part of my problem) with OpenSips 2.4.8, and RTPEngine is performing transcoding between a SIP PBX and WebRTC clients. Long story short, I have narrowed the issue down to the <code class="notranslate" style="box-sizing: border-box; font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace; font-size: 11.9px; padding: 0.2em 0.4em; margin: 0px; white-space: break-spaces; background-color: var(--bgColor-neutral-muted, var(--color-neutral-muted)); border-radius: 6px;">a=ssrc:...</code> lines in the SDP received in the 200 OK from the remote party like below.</p><div class="overflow-auto snippet-clipboard-content position-relative notranslate" style="box-sizing: border-box; color: rgb(31, 35, 40); font-family: -apple-system, system-ui, "Segoe UI", "Noto Sans", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji"; font-variant-ligatures: normal; orphans: 2; widows: 2; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; position: relative !important; overflow: auto !important;"><pre class="notranslate" style="box-sizing: border-box; font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace; font-size: 11.9px; margin-top: 0px; margin-bottom: 16px; overflow-wrap: normal; padding: 16px; overflow: auto; line-height: 1.45; color: var(--fgColor-default, var(--color-fg-default)); background-color: var(--bgColor-muted, var(--color-canvas-subtle)); border-radius: 6px;"><code class="notranslate" style="box-sizing: border-box; font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace; font-size: 11.9px; padding: 0px; margin: 0px; background-color: transparent; border-top-left-radius: 6px; border-top-right-radius: 6px; border-bottom-right-radius: 6px; border-bottom-left-radius: 6px; word-break: normal; border: 0px; display: inline; overflow: visible; line-height: inherit; overflow-wrap: normal; background-position: initial initial; background-repeat: initial initial;">a=ssrc:1910649337 cname:LirHOpuAITzItxG3
a=ssrc:1910649337 msid:4fc3a69d-d099-4c75-9232-7999ef60dabf 2529d952-5611-4791-8971-d3c9f4995041
a=ssrc:1910649337 mslabel:4fc3a69d-d099-4c75-9232-7999ef60dabf
a=ssrc:1910649337 label:2529d952-5611-4791-8971-d3c9f4995041
</code></pre><div class="position-absolute zeroclipboard-container right-0 top-0" style="box-sizing: border-box; position: absolute !important; top: 0px !important; right: 0px !important;"><clipboard-copy aria-label="Copy" class="p-0 btn ClipboardButton js-clipboard-copy m-2 tooltipped-no-delay" data-copy-feedback="Copied!" data-tooltip-direction="w" value="a=ssrc:1910649337 cname:LirHOpuAITzItxG3
a=ssrc:1910649337 msid:4fc3a69d-d099-4c75-9232-7999ef60dabf 2529d952-5611-4791-8971-d3c9f4995041
a=ssrc:1910649337 mslabel:4fc3a69d-d099-4c75-9232-7999ef60dabf
a=ssrc:1910649337 label:2529d952-5611-4791-8971-d3c9f4995041" tabindex="0" role="button" style="box-sizing: border-box; position: relative; display: inline-block; line-height: 20px; white-space: nowrap; vertical-align: middle; cursor: pointer; border-width: 1px; border-style: solid; border-color: var(--button-default-borderColor-rest, var(--color-btn-border)); border-top-left-radius: 6px; border-top-right-radius: 6px; border-bottom-right-radius: 6px; border-bottom-left-radius: 6px; color: var(--button-default-fgColor-rest, var(--color-btn-text)); background-color: var(--button-default-bgColor-rest, var(--color-btn-bg)); box-shadow: var(--button-default-shadow-resting, var(--color-btn-shadow)),var(--button-default-shadow-inset, var(--color-btn-inset-shadow)); transition: color 80ms cubic-bezier(0.33, 1, 0.68, 1) 0s, background-color, box-shadow, border-color; padding: 0px !important; margin: var(--base-size-8, 8px) !important;"><svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-copy js-clipboard-copy-icon m-2"><path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path></svg></clipboard-copy></div></div><p dir="auto" style="box-sizing: border-box; margin-top: 0px; margin-bottom: 16px; color: rgb(31, 35, 40); font-family: -apple-system, system-ui, "Segoe UI", "Noto Sans", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji"; font-variant-ligatures: normal; orphans: 2; widows: 2; background-color: rgb(255, 255, 255); text-decoration-thickness: initial;" class="">When I strip these lines from the SDP then the issue disappears. What I suspect is happening is Chrome WebRTC is using the SSRC to associate the RTP stream with the initial receiver audio track in the peer connection, but the RTP that is actually received from RTPEngine has a different SSRC and is therefore seen as a different "stream". This isn't a problem for a typical call and the WebRTC party can still hear the audio stream fine. It's not until the WebRTC client tries to mix audio between tracks for a conference call, in which case I suspect that track that is being retrieved from the peer connection for mixing is associated with the SSRC from the SDP which is not receiving any packets resulting in the other party not receiving their audio.</p><p dir="auto" style="box-sizing: border-box; margin-top: 0px; margin-bottom: 16px; color: rgb(31, 35, 40); font-family: -apple-system, system-ui, "Segoe UI", "Noto Sans", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji"; font-variant-ligatures: normal; orphans: 2; widows: 2; background-color: rgb(255, 255, 255); text-decoration-thickness: initial;" class="">I’m also hoping to get a better understanding of how RTPEngine is expected to behave here. What I'm seeing is that RTPEngine (at least when transcoding) is using a different SSRC for the transcoded RTP stream than the one it's receiving in the original stream. This in itself doesn't surprise me and is expected, however I would expect that if RTPEngine was changing the SSRC in the RTP stream, then it would also change all of the <code class="notranslate" style="box-sizing: border-box; font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace; font-size: 11.9px; padding: 0.2em 0.4em; margin: 0px; white-space: break-spaces; background-color: var(--bgColor-neutral-muted, var(--color-neutral-muted)); border-radius: 6px;">a=ssrc:...</code> lines in the SDP to match the new SSRC, but this not happening. It was stated in a different issue that RTPEngine does not touch <code class="notranslate" style="box-sizing: border-box; font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace; font-size: 11.9px; padding: 0.2em 0.4em; margin: 0px; white-space: break-spaces; background-color: var(--bgColor-neutral-muted, var(--color-neutral-muted)); border-radius: 6px;">a=ssrc</code> or <code class="notranslate" style="box-sizing: border-box; font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace; font-size: 11.9px; padding: 0.2em 0.4em; margin: 0px; white-space: break-spaces; background-color: var(--bgColor-neutral-muted, var(--color-neutral-muted)); border-radius: 6px;">a=msid-semantic</code> lines, and I wonder why this is so if it's changing the SSRC in the stream.</p><p dir="auto" style="box-sizing: border-box; margin-top: 0px; margin-bottom: 16px; color: rgb(31, 35, 40); font-family: -apple-system, system-ui, "Segoe UI", "Noto Sans", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji"; font-variant-ligatures: normal; orphans: 2; widows: 2; background-color: rgb(255, 255, 255); text-decoration-thickness: initial;" class="">Looking forward to hearing back from somebody who can help me understand what is going on here and how I can resolve it. I'm happy to provide much more detail if needed.</p><div class="">Cheers!</div></body></html>