<html aria-label="message body">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body style="overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;">
Hi Everyone!
<div><br>
</div>
<div>Some tricks now made my day today, e.g. remove a=mid:* from SDP to get both directions with rtpengine.</div>
<div>Finally I do:</div>
<div><br>
</div>
<blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;">
<div>
<div><font face="Courier New"> if (is_method("INVITE") && $ru=~"sip:.*@.*;maddr=.*" && $(ru{uri.param,maddr}{s.len})) {</font></div>
</div>
<div>
<div><font face="Courier New"> # inbound call</font></div>
</div>
<div>
<div><font face="Courier New"> create_dialog();</font></div>
</div>
<div>
<div><font face="Courier New"> $siprec(group) = "webrtc-loop-in";</font></div>
</div>
<div>
<div><font face="Courier New"> $rtp_relay_ctx(callid) = "srs-i-"+$ci;</font></div>
</div>
<div>
<div><font face="Courier New"><br>
</font></div>
</div>
<div>
<div><font face="Courier New"> xlog("L_INFO", ">> created originating dialog and set ctx(callid)=$rtp_relay_ctx(callid)");</font></div>
</div>
<div>
<div><font face="Courier New"><br>
</font></div>
</div>
<div>
<div><font face="Courier New"> route(setup_rec);</font></div>
</div>
<div>
<div><font face="Courier New"><br>
</font></div>
</div>
<div>
<div><font face="Courier New"> $du = "sip:"+$(ru{uri.param,maddr})+":"+$rp;</font></div>
</div>
<div>
<div><font face="Courier New"> route(relay);</font></div>
</div>
<div>
<div><font face="Courier New"> }</font></div>
</div>
<div>
<div><font face="Courier New"><br>
</font></div>
</div>
<div>
<div>
<div><font face="Courier New">route[setup_rec] {</font></div>
</div>
</div>
<div>
<div>
<div><font face="Courier New"> # https://www.opensips.org/Documentation/Tutorials-SIPREC-2-4</font></div>
</div>
</div>
<div>
<div>
<div><font face="Courier New"><br>
</font></div>
</div>
</div>
<div>
<div>
<div><font face="Courier New"> # remove mid:0 - offer/answer w/ same mid:0 mixes up labels and returns single m= line -> will be fixed in rtpengine ...</font></div>
</div>
</div>
<div>
<div>
<div><font face="Courier New"> $rtp_relay_ctx(flags) = "sdp-attr-remove-audio-mid sdp-attr-remove-video-mid sdp-attr-remove-audio-msid sdp-attr-remove-video-msid";</font></div>
</div>
</div>
<div>
<div>
<div><font face="Courier New"> rtp_relay_engage("rtpengine");</font></div>
</div>
</div>
<div>
<div>
<div><font face="Courier New"><br>
</font></div>
</div>
</div>
<div>
<div>
<div><font face="Courier New"> $avp(x-system) = $(ru{uri.param,x-system}); # without a x-system we do have a problem here. It MUST be present</font></div>
</div>
</div>
<div>
<div>
<div><font face="Courier New"> t_on_reply("setup_rec");</font></div>
</div>
</div>
<div>
<div>
<div><font face="Courier New">}</font></div>
</div>
</div>
<div>
<div>
<div><font face="Courier New"><br>
</font></div>
</div>
</div>
<div>
<div>
<div><font face="Courier New">onreply_route[setup_rec] {</font></div>
</div>
</div>
<div>
<div>
<div><font face="Courier New"> if ($rs=="200") {</font></div>
</div>
</div>
<div>
<div>
<div><font face="Courier New"> xlog("L_INFO", "Start recording on 200 OK"); # otherwise the recording would start right after the first 18x with SDP</font></div>
</div>
</div>
<div>
<div>
<div><font face="Courier New"><br>
</font></div>
</div>
</div>
<div>
<div>
<div><font face="Courier New"> # https://opensips.org/docs/modules/3.6.x/siprec.html#func_siprec_start_recording</font></div>
</div>
</div>
<div>
<div>
<div><font face="Courier New"> $siprec(headers) = "X-Call-ID: "+$ci+"\r\n";</font></div>
</div>
</div>
<div>
<div>
<div><font face="Courier New"><br>
</font></div>
</div>
</div>
<div>
<div>
<div><font face="Courier New"> $siprec(from_uri) = $fu;</font></div>
</div>
</div>
<div>
<div>
<div><font face="Courier New"> $siprec(to_uri) = $tu;</font></div>
</div>
</div>
<div>
<div>
<div><font face="Courier New"><br>
</font></div>
</div>
</div>
<div>
<div>
<div><font face="Courier New"> # not only IP address but also RTPEngine flags can be set for the SRS leg here</font></div>
</div>
</div>
<div>
<div>
<div><font face="Courier New"> # sdp-media-remove=video sends "sdp-media-remove": "video" instead of "sdp-media-remove": [ "video" ] -> video is not removed - no solution yet</font></div>
</div>
</div>
<div>
<div>
<div><font face="Courier New"> $siprec(media) = "allow-transcoding asymmetric sdp-media-remove=video";</font></div>
</div>
</div>
<div>
<div>
<div><font face="Courier New"><br>
</font></div>
</div>
</div>
<div>
<div>
<div><font face="Courier New"> siprec_start_recording("sip:opensips-srs@192.168.48.161:5060;x-system=$avp(x-system)");</font></div>
</div>
</div>
<div>
<div>
<div><font face="Courier New"> }</font></div>
</div>
</div>
<div>
<div>
<div><font face="Courier New">}</font></div>
</div>
</div>
</blockquote>
<div>
<div><br>
</div>
All singing all dancing except WebRTC Video Calls. The Video should be passed by rptengine, but not sent to the SRS. </div>
<div>In the SIPREC XML body only the last two video sessions are referenced and audio is missing:</div>
<div>audio forward is label:0, audio backward is label:1, video forward is label:2, video backward is label:3 then - and SIPREC XML body refers to labels 2 and 3 only!</div>
<div><br>
</div>
<blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;">
<div>
<div chars="84" class="message_line"><font face="Courier New"><stream stream_id="U/CQBPCgTPqtv2nreh7IJQ==" session_id="ri+uAfKsTtWqLYTgSuRFlg=="></font></div>
</div>
<div>
<div chars="18" class="message_line"><font face="Courier New"><label>2</label></font></div>
</div>
<div>
<div chars="10" class="message_line"><font face="Courier New"></stream></font></div>
</div>
<div>
<div chars="84" class="message_line"><font face="Courier New"><stream stream_id="9vbDRoEwT2esPjE9xcfK0Q==" session_id="ri+uAfKsTtWqLYTgSuRFlg=="></font></div>
</div>
<div>
<div chars="18" class="message_line"><font face="Courier New"><label>3</label></font></div>
</div>
<div>
<div chars="10" class="message_line"><font face="Courier New"></stream></font></div>
</div>
</blockquote>
<div><br>
</div>
<div>RTPENGINE expects <font face="Courier New">"sdp-media-remove": [ "video“ ].</font> A LIST, not a STRING. I tried several variants to have a LIST in the NG protocol, but failed. </div>
<div><br>
</div>
<div>Is there any way to take „audio“ only into account for SRS?</div>
<div><br>
</div>
<div>Opensips version 3.6.3.</div>
<div><br>
</div>
<div>br</div>
<div>Walter </div>
</body>
</html>