MT#56128 RTPEngine: Add options for arbitrary SDP manipulations
New section of option flags has been introduced for SDP body
attributes manipulations.
Three levels of the SDP session are concerned:
- session level (global one)
- media level - audio
- media level - video
Three different actions are supported for now:
- add
- remove
The value of the command has a wildcard matching approach.
Other attributes apart `a=` can not be edited by this functionality.
So such headers as: `c=`, `s=`, `o=` cannot be touched.
Change-Id: I939d4582839096b2399f7ded865e91ff6eb960a4
(cherry picked from commit 3f06c18793)
offer('SDP attr manipulations - remove a= line on media audio',{ICE=>'remove',DTLS=>'off',SDES=>['nonew'],'sdp-attr'=>{audio=>{remove=>['test']}}},<<SDP);
v=0
o=-15459970271INIP4198.51.100.1
s=tester
t=00
m=audio2000RTP/SAVP0
c=INIP4198.51.100.1
a=sendrecv
a=test
----------------------------------
v=0
o=-15459970271INIP4198.51.100.1
s=tester
t=00
m=audioPORTRTP/SAVP0
c=INIP4203.0.113.1
a=rtpmap:0PCMU/8000
a=sendrecv
a=rtcp:PORT
SDP
answer('SDP attr manipulations - remove a= line on media audio',{ICE=>'remove'},<<SDP);
v=0
o=-15459970271INIP4198.51.100.3
s=tester
t=00
m=audio2002RTP/SAVP0
c=INIP4198.51.100.3
a=sendrecv
--------------------------------------
v=0
o=-15459970271INIP4198.51.100.3
s=tester
t=00
m=audioPORTRTP/SAVP0
c=INIP4203.0.113.1
a=rtpmap:0PCMU/8000
a=sendrecv
a=rtcp:PORT
SDP
new_call;
offer('SDP attr manipulations - remove a= line on global session',{ICE=>'remove',DTLS=>'off',SDES=>['nonew'],'sdp-attr'=>{none=>{remove=>['test']}}},<<SDP);
v=0
o=-15459970271INIP4198.51.100.1
s=tester
t=00
a=test
m=audio2000RTP/SAVP0
c=INIP4198.51.100.1
a=sendrecv
----------------------------------
v=0
o=-15459970271INIP4198.51.100.1
s=tester
t=00
m=audioPORTRTP/SAVP0
c=INIP4203.0.113.1
a=rtpmap:0PCMU/8000
a=sendrecv
a=rtcp:PORT
SDP
answer('SDP attr manipulations - remove a= line on global session',{ICE=>'remove'},<<SDP);
v=0
o=-15459970271INIP4198.51.100.3
s=tester
t=00
m=audio2002RTP/SAVP0
c=INIP4198.51.100.3
a=sendrecv
--------------------------------------
v=0
o=-15459970271INIP4198.51.100.3
s=tester
t=00
m=audioPORTRTP/SAVP0
c=INIP4203.0.113.1
a=rtpmap:0PCMU/8000
a=sendrecv
a=rtcp:PORT
SDP
new_call;
offer('SDP attr manipulations - remove a= line on global session and media audio',{ICE=>'remove',DTLS=>'off',SDES=>['nonew'],'sdp-attr'=>{audio=>{remove=>['test2']},none=>{remove=>['test1']}}},<<SDP);
v=0
o=-15459970271INIP4198.51.100.1
s=tester
t=00
a=test1
m=audio2000RTP/SAVP0
c=INIP4198.51.100.1
a=sendrecv
a=test2
----------------------------------
v=0
o=-15459970271INIP4198.51.100.1
s=tester
t=00
m=audioPORTRTP/SAVP0
c=INIP4203.0.113.1
a=rtpmap:0PCMU/8000
a=sendrecv
a=rtcp:PORT
SDP
answer('SDP attr manipulations - remove a= line on global session and media audio',{ICE=>'remove'},<<SDP);
v=0
o=-15459970271INIP4198.51.100.3
s=tester
t=00
m=audio2002RTP/SAVP0
c=INIP4198.51.100.3
a=sendrecv
--------------------------------------
v=0
o=-15459970271INIP4198.51.100.3
s=tester
t=00
m=audioPORTRTP/SAVP0
c=INIP4203.0.113.1
a=rtpmap:0PCMU/8000
a=sendrecv
a=rtcp:PORT
SDP
new_call;
offer('SDP attr manipulations - add a= line on global session and media audio',{ICE=>'remove',DTLS=>'off',SDES=>['nonew'],'sdp-attr'=>{audio=>{add=>['test1']},none=>{add=>['test2']}}},<<SDP);
v=0
o=-15459970271INIP4198.51.100.1
s=tester
t=00
m=audio2000RTP/SAVP0
c=INIP4198.51.100.1
a=sendrecv
----------------------------------
v=0
o=-15459970271INIP4198.51.100.1
s=tester
t=00
a=test2
m=audioPORTRTP/SAVP0
c=INIP4203.0.113.1
a=rtpmap:0PCMU/8000
a=sendrecv
a=rtcp:PORT
a=test1
SDP
answer('SDP attr manipulations - add a= line on global session and media audio',{ICE=>'remove'},<<SDP);
v=0
o=-15459970271INIP4198.51.100.3
s=tester
t=00
m=audio2002RTP/SAVP0
c=INIP4198.51.100.3
a=sendrecv
--------------------------------------
v=0
o=-15459970271INIP4198.51.100.3
s=tester
t=00
m=audioPORTRTP/SAVP0
c=INIP4203.0.113.1
a=rtpmap:0PCMU/8000
a=sendrecv
a=rtcp:PORT
SDP
new_call;
offer('SDP attr manipulations - add a= line for media audio, two times',{ICE=>'remove',DTLS=>'off',SDES=>['nonew'],'sdp-attr'=>{audio=>{add=>['test1','test2']}}},<<SDP);
v=0
o=-15459970271INIP4198.51.100.1
s=tester
t=00
m=audio2000RTP/SAVP0
c=INIP4198.51.100.1
a=sendrecv
----------------------------------
v=0
o=-15459970271INIP4198.51.100.1
s=tester
t=00
m=audioPORTRTP/SAVP0
c=INIP4203.0.113.1
a=rtpmap:0PCMU/8000
a=sendrecv
a=rtcp:PORT
a=test1
a=test2
SDP
answer('SDP attr manipulations - add a= line for media audio, two times',{ICE=>'remove'},<<SDP);
v=0
o=-15459970271INIP4198.51.100.3
s=tester
t=00
m=audio2002RTP/SAVP0
c=INIP4198.51.100.3
a=sendrecv
--------------------------------------
v=0
o=-15459970271INIP4198.51.100.3
s=tester
t=00
m=audioPORTRTP/SAVP0
c=INIP4203.0.113.1
a=rtpmap:0PCMU/8000
a=sendrecv
a=rtcp:PORT
SDP
new_call;
offer('SDP attr manipulations - add a= line for media audio and remove one',{ICE=>'remove',DTLS=>'off',SDES=>['nonew'],'sdp-attr'=>{audio=>{add=>['test1'],remove=>['test2']}}},<<SDP);
v=0
o=-15459970271INIP4198.51.100.1
s=tester
t=00
m=audio2000RTP/SAVP0
c=INIP4198.51.100.1
a=sendrecv
a=test2
----------------------------------
v=0
o=-15459970271INIP4198.51.100.1
s=tester
t=00
m=audioPORTRTP/SAVP0
c=INIP4203.0.113.1
a=rtpmap:0PCMU/8000
a=sendrecv
a=rtcp:PORT
a=test1
SDP
answer('SDP attr manipulations - add a= line for media audio and remove one',{ICE=>'remove'},<<SDP);
v=0
o=-15459970271INIP4198.51.100.3
s=tester
t=00
m=audio2002RTP/SAVP0
c=INIP4198.51.100.3
a=sendrecv
--------------------------------------
v=0
o=-15459970271INIP4198.51.100.3
s=tester
t=00
m=audioPORTRTP/SAVP0
c=INIP4203.0.113.1
a=rtpmap:0PCMU/8000
a=sendrecv
a=rtcp:PORT
SDP
new_call;
offer('SDP attr manipulations - remove two a= lines from global session level',{ICE=>'remove',DTLS=>'off',SDES=>['nonew'],'sdp-attr'=>{none=>{remove=>['test1','test2']}}},<<SDP);
v=0
o=-15459970271INIP4198.51.100.1
s=tester
t=00
a=test1
a=test2
m=audio2000RTP/SAVP0
c=INIP4198.51.100.1
a=sendrecv
----------------------------------
v=0
o=-15459970271INIP4198.51.100.1
s=tester
t=00
m=audioPORTRTP/SAVP0
c=INIP4203.0.113.1
a=rtpmap:0PCMU/8000
a=sendrecv
a=rtcp:PORT
SDP
answer('SDP attr manipulations - remove two a= lines from global session level',{ICE=>'remove'},<<SDP);