

test_parse_and_compose

[0]
sdp input: v=0\r\n
sdp input: o=- 5628250 5628250 IN IP4 192.168.11.121\r\n
sdp input: s=-\r\n
sdp input: c=IN IP4 192.168.11.121\r\n
sdp input: t=0 0\r\n
sdp input: m=audio 10020 RTP/AVP 18 0 2 4 8 96 97 98 100 101\r\n
sdp input: a=rtpmap:18 G729/8000\r\n
sdp input: a=rtpmap:0 PCMU/8000\r\n
sdp input: a=rtpmap:2 G726-32/8000\r\n
sdp input: a=rtpmap:4 G723/8000\r\n
sdp input: a=rtpmap:8 PCMA/8000\r\n
sdp input: a=rtpmap:96 G726-40/8000\r\n
sdp input: a=rtpmap:97 G726-24/8000\r\n
sdp input: a=rtpmap:98 G726-16/8000\r\n
sdp input: a=rtpmap:100 NSE/8000\r\n
sdp input: a=fmtp:100 192-193\r\n
sdp input: a=rtpmap:101 telephone-event/8000\r\n
sdp input: a=fmtp:101 0-15\r\n
sdp input: a=ptime:20\r\n
sdp input: a=sendrecv\r\n
sdp_msg_to_sdp_str_buf: v=0\r\n
sdp_msg_to_sdp_str_buf: o=OsmoMSC 0 0 IN IP4 192.168.11.121\r\n
sdp_msg_to_sdp_str_buf: s=GSM Call\r\n
sdp_msg_to_sdp_str_buf: c=IN IP4 192.168.11.121\r\n
sdp_msg_to_sdp_str_buf: t=0 0\r\n
sdp_msg_to_sdp_str_buf: m=audio 10020 RTP/AVP 18 0 2 4 8 96 97 98 100 101\r\n
sdp_msg_to_sdp_str_buf: a=rtpmap:18 G729/8000\r\n
sdp_msg_to_sdp_str_buf: a=rtpmap:0 PCMU/8000\r\n
sdp_msg_to_sdp_str_buf: a=rtpmap:2 G726-32/8000\r\n
sdp_msg_to_sdp_str_buf: a=rtpmap:4 G723/8000\r\n
sdp_msg_to_sdp_str_buf: a=rtpmap:8 PCMA/8000\r\n
sdp_msg_to_sdp_str_buf: a=rtpmap:96 G726-40/8000\r\n
sdp_msg_to_sdp_str_buf: a=rtpmap:97 G726-24/8000\r\n
sdp_msg_to_sdp_str_buf: a=rtpmap:98 G726-16/8000\r\n
sdp_msg_to_sdp_str_buf: a=rtpmap:100 NSE/8000\r\n
sdp_msg_to_sdp_str_buf: a=fmtp:100 192-193\r\n
sdp_msg_to_sdp_str_buf: a=rtpmap:101 telephone-event/8000\r\n
sdp_msg_to_sdp_str_buf: a=fmtp:101 0-15\r\n
sdp_msg_to_sdp_str_buf: a=ptime:20\r\n
sdp_msg_to_sdp_str_buf: a=sendrecv\r\n
[0] ok

[1]
sdp input: v=0\r\n
sdp input: o=FooBar 1565090289 1565090290 IN IP4 192.168.11.151\r\n
sdp input: s=FooBar\r\n
sdp input: c=IN IP4 192.168.11.151\r\n
sdp input: t=0 0\r\n
sdp input: m=audio 16398 RTP/AVP 98\r\n
sdp input: a=rtpmap:98 AMR/8000\r\n
sdp input: a=fmtp:98 octet-align=1; mode-set=4\r\n
sdp input: a=ptime:20\r\n
sdp input: a=rtcp:16399 IN IP4 192.168.11.151\r\n
sdp_msg_to_sdp_str_buf: v=0\r\n
sdp_msg_to_sdp_str_buf: o=OsmoMSC 0 0 IN IP4 192.168.11.151\r\n
sdp_msg_to_sdp_str_buf: s=GSM Call\r\n
sdp_msg_to_sdp_str_buf: c=IN IP4 192.168.11.151\r\n
sdp_msg_to_sdp_str_buf: t=0 0\r\n
sdp_msg_to_sdp_str_buf: m=audio 16398 RTP/AVP 98\r\n
sdp_msg_to_sdp_str_buf: a=rtpmap:98 AMR/8000\r\n
sdp_msg_to_sdp_str_buf: a=fmtp:98 octet-align=1; mode-set=4\r\n
sdp_msg_to_sdp_str_buf: a=ptime:20\r\n
[1] ok

[2]
sdp input: v=0\r\n
sdp input: o=FooBar 1565090289 1565090290 IN IP4 192.168.11.151\r\n
sdp input: s=FooBar\r\n
sdp input: c=IN IP4 192.168.11.140\r\n
sdp input: t=0 0\r\n
sdp input: m=audio 30436 RTP/AVP 18 0 4 8 101\r\n
sdp input: a=rtpmap:18 G729/8000\r\n
sdp input: a=rtpmap:0 PCMU/8000\r\n
sdp input: a=rtpmap:4 G723/8000\r\n
sdp input: a=rtpmap:8 PCMA/8000\r\n
sdp input: a=rtpmap:101 telephone-event/8000\r\n
sdp input: a=fmtp:101 0-15\r\n
sdp input: a=sendrecv\r\n
sdp input: a=rtcp:30437\r\n
sdp input: a=ptime:20\r\n
sdp_msg_to_sdp_str_buf: v=0\r\n
sdp_msg_to_sdp_str_buf: o=OsmoMSC 0 0 IN IP4 192.168.11.140\r\n
sdp_msg_to_sdp_str_buf: s=GSM Call\r\n
sdp_msg_to_sdp_str_buf: c=IN IP4 192.168.11.140\r\n
sdp_msg_to_sdp_str_buf: t=0 0\r\n
sdp_msg_to_sdp_str_buf: m=audio 30436 RTP/AVP 18 0 4 8 101\r\n
sdp_msg_to_sdp_str_buf: a=rtpmap:18 G729/8000\r\n
sdp_msg_to_sdp_str_buf: a=rtpmap:0 PCMU/8000\r\n
sdp_msg_to_sdp_str_buf: a=rtpmap:4 G723/8000\r\n
sdp_msg_to_sdp_str_buf: a=rtpmap:8 PCMA/8000\r\n
sdp_msg_to_sdp_str_buf: a=rtpmap:101 telephone-event/8000\r\n
sdp_msg_to_sdp_str_buf: a=fmtp:101 0-15\r\n
sdp_msg_to_sdp_str_buf: a=ptime:20\r\n
sdp_msg_to_sdp_str_buf: a=sendrecv\r\n
[2] ok


test_intersect

[0] identical codecs lead to no change
SDP A: v=0\r\n
SDP A: o=OsmoMSC 0 0 IN IP4 23.42.23.42\r\n
SDP A: s=GSM Call\r\n
SDP A: c=IN IP4 23.42.23.42\r\n
SDP A: t=0 0\r\n
SDP A: m=audio 30436 RTP/AVP 112 3 111 110\r\n
SDP A: a=rtpmap:112 AMR/8000\r\n
SDP A: a=fmtp:112 octet-align=1\r\n
SDP A: a=rtpmap:3 GSM/8000\r\n
SDP A: a=rtpmap:111 GSM-HR-08/8000\r\n
SDP A: a=rtpmap:110 GSM-EFR/8000\r\n
SDP A: a=ptime:20\r\n
 SDP B: c=IN IP4 5.6.7.8\r\n
 SDP B: m=audio 12345 RTP/AVP 112 3 111 110\r\n
 SDP B: a=rtpmap:112 AMR/8000\r\n
 SDP B: a=fmtp:112 octet-align=1\r\n
 SDP B: a=rtpmap:3 GSM/8000\r\n
 SDP B: a=rtpmap:111 GSM-HR-08/8000\r\n
 SDP B: a=rtpmap:110 GSM-EFR/8000\r\n
parsed SDP A: v=0\r\n
parsed SDP A: o=OsmoMSC 0 0 IN IP4 23.42.23.42\r\n
parsed SDP A: s=GSM Call\r\n
parsed SDP A: c=IN IP4 23.42.23.42\r\n
parsed SDP A: t=0 0\r\n
parsed SDP A: m=audio 30436 RTP/AVP 112 3 111 110\r\n
parsed SDP A: a=rtpmap:112 AMR/8000\r\n
parsed SDP A: a=fmtp:112 octet-align=1\r\n
parsed SDP A: a=rtpmap:3 GSM/8000\r\n
parsed SDP A: a=rtpmap:111 GSM-HR-08/8000\r\n
parsed SDP A: a=rtpmap:110 GSM-EFR/8000\r\n
parsed SDP A: a=ptime:20\r\n
parsed SDP B: v=0\r\n
parsed SDP B: o=OsmoMSC 0 0 IN IP4 5.6.7.8\r\n
parsed SDP B: s=GSM Call\r\n
parsed SDP B: c=IN IP4 5.6.7.8\r\n
parsed SDP B: t=0 0\r\n
parsed SDP B: m=audio 12345 RTP/AVP 112 3 111 110\r\n
parsed SDP B: a=rtpmap:112 AMR/8000\r\n
parsed SDP B: a=fmtp:112 octet-align=1\r\n
parsed SDP B: a=rtpmap:3 GSM/8000\r\n
parsed SDP B: a=rtpmap:111 GSM-HR-08/8000\r\n
parsed SDP B: a=rtpmap:110 GSM-EFR/8000\r\n
parsed SDP B: a=ptime:20\r\n
sdp_msg_intersection(a,b): v=0\r\n
sdp_msg_intersection(a,b): o=OsmoMSC 0 0 IN IP4 23.42.23.42\r\n
sdp_msg_intersection(a,b): s=GSM Call\r\n
sdp_msg_intersection(a,b): c=IN IP4 23.42.23.42\r\n
sdp_msg_intersection(a,b): t=0 0\r\n
sdp_msg_intersection(a,b): m=audio 30436 RTP/AVP 112 3 111 110\r\n
sdp_msg_intersection(a,b): a=rtpmap:112 AMR/8000\r\n
sdp_msg_intersection(a,b): a=fmtp:112 octet-align=1\r\n
sdp_msg_intersection(a,b): a=rtpmap:3 GSM/8000\r\n
sdp_msg_intersection(a,b): a=rtpmap:111 GSM-HR-08/8000\r\n
sdp_msg_intersection(a,b): a=rtpmap:110 GSM-EFR/8000\r\n
sdp_msg_intersection(a,b): a=ptime:20\r\n
[0] ok

[1] identical codecs in different order also lead to no change
SDP A: v=0\r\n
SDP A: o=OsmoMSC 0 0 IN IP4 23.42.23.42\r\n
SDP A: s=GSM Call\r\n
SDP A: c=IN IP4 23.42.23.42\r\n
SDP A: t=0 0\r\n
SDP A: m=audio 30436 RTP/AVP 112 3 111 110\r\n
SDP A: a=rtpmap:112 AMR/8000\r\n
SDP A: a=fmtp:112 octet-align=1\r\n
SDP A: a=rtpmap:3 GSM/8000\r\n
SDP A: a=rtpmap:111 GSM-HR-08/8000\r\n
SDP A: a=rtpmap:110 GSM-EFR/8000\r\n
SDP A: a=ptime:20\r\n
 SDP B: c=IN IP4 5.6.7.8\r\n
 SDP B: m=audio 12345 RTP/AVP 3 110 111 112\r\n
 SDP B: a=rtpmap:3 GSM/8000\r\n
 SDP B: a=rtpmap:110 GSM-EFR/8000\r\n
 SDP B: a=rtpmap:111 GSM-HR-08/8000\r\n
 SDP B: a=rtpmap:112 AMR/8000\r\n
 SDP B: a=fmtp:112 octet-align=1\r\n
parsed SDP A: v=0\r\n
parsed SDP A: o=OsmoMSC 0 0 IN IP4 23.42.23.42\r\n
parsed SDP A: s=GSM Call\r\n
parsed SDP A: c=IN IP4 23.42.23.42\r\n
parsed SDP A: t=0 0\r\n
parsed SDP A: m=audio 30436 RTP/AVP 112 3 111 110\r\n
parsed SDP A: a=rtpmap:112 AMR/8000\r\n
parsed SDP A: a=fmtp:112 octet-align=1\r\n
parsed SDP A: a=rtpmap:3 GSM/8000\r\n
parsed SDP A: a=rtpmap:111 GSM-HR-08/8000\r\n
parsed SDP A: a=rtpmap:110 GSM-EFR/8000\r\n
parsed SDP A: a=ptime:20\r\n
parsed SDP B: v=0\r\n
parsed SDP B: o=OsmoMSC 0 0 IN IP4 5.6.7.8\r\n
parsed SDP B: s=GSM Call\r\n
parsed SDP B: c=IN IP4 5.6.7.8\r\n
parsed SDP B: t=0 0\r\n
parsed SDP B: m=audio 12345 RTP/AVP 3 110 111 112\r\n
parsed SDP B: a=rtpmap:3 GSM/8000\r\n
parsed SDP B: a=rtpmap:110 GSM-EFR/8000\r\n
parsed SDP B: a=rtpmap:111 GSM-HR-08/8000\r\n
parsed SDP B: a=rtpmap:112 AMR/8000\r\n
parsed SDP B: a=fmtp:112 octet-align=1\r\n
parsed SDP B: a=ptime:20\r\n
sdp_msg_intersection(a,b): v=0\r\n
sdp_msg_intersection(a,b): o=OsmoMSC 0 0 IN IP4 23.42.23.42\r\n
sdp_msg_intersection(a,b): s=GSM Call\r\n
sdp_msg_intersection(a,b): c=IN IP4 23.42.23.42\r\n
sdp_msg_intersection(a,b): t=0 0\r\n
sdp_msg_intersection(a,b): m=audio 30436 RTP/AVP 112 3 111 110\r\n
sdp_msg_intersection(a,b): a=rtpmap:112 AMR/8000\r\n
sdp_msg_intersection(a,b): a=fmtp:112 octet-align=1\r\n
sdp_msg_intersection(a,b): a=rtpmap:3 GSM/8000\r\n
sdp_msg_intersection(a,b): a=rtpmap:111 GSM-HR-08/8000\r\n
sdp_msg_intersection(a,b): a=rtpmap:110 GSM-EFR/8000\r\n
sdp_msg_intersection(a,b): a=ptime:20\r\n
[1] ok

[2] identical codecs with mismatching payload type numbers also lead to no change
SDP A: v=0\r\n
SDP A: o=OsmoMSC 0 0 IN IP4 23.42.23.42\r\n
SDP A: s=GSM Call\r\n
SDP A: c=IN IP4 23.42.23.42\r\n
SDP A: t=0 0\r\n
SDP A: m=audio 30436 RTP/AVP 112 3 111 110\r\n
SDP A: a=rtpmap:112 AMR/8000\r\n
SDP A: a=fmtp:112 octet-align=1\r\n
SDP A: a=rtpmap:3 GSM/8000\r\n
SDP A: a=rtpmap:111 GSM-HR-08/8000\r\n
SDP A: a=rtpmap:110 GSM-EFR/8000\r\n
SDP A: a=ptime:20\r\n
 SDP B: c=IN IP4 5.6.7.8\r\n
 SDP B: m=audio 12345 RTP/AVP 96 97 98 99\r\n
 SDP B: a=rtpmap:96 GSM/8000\r\n
 SDP B: a=rtpmap:97 GSM-EFR/8000\r\n
 SDP B: a=rtpmap:98 GSM-HR-08/8000\r\n
 SDP B: a=rtpmap:99 AMR/8000\r\n
 SDP B: a=fmtp:99 octet-align=1\r\n
parsed SDP A: v=0\r\n
parsed SDP A: o=OsmoMSC 0 0 IN IP4 23.42.23.42\r\n
parsed SDP A: s=GSM Call\r\n
parsed SDP A: c=IN IP4 23.42.23.42\r\n
parsed SDP A: t=0 0\r\n
parsed SDP A: m=audio 30436 RTP/AVP 112 3 111 110\r\n
parsed SDP A: a=rtpmap:112 AMR/8000\r\n
parsed SDP A: a=fmtp:112 octet-align=1\r\n
parsed SDP A: a=rtpmap:3 GSM/8000\r\n
parsed SDP A: a=rtpmap:111 GSM-HR-08/8000\r\n
parsed SDP A: a=rtpmap:110 GSM-EFR/8000\r\n
parsed SDP A: a=ptime:20\r\n
parsed SDP B: v=0\r\n
parsed SDP B: o=OsmoMSC 0 0 IN IP4 5.6.7.8\r\n
parsed SDP B: s=GSM Call\r\n
parsed SDP B: c=IN IP4 5.6.7.8\r\n
parsed SDP B: t=0 0\r\n
parsed SDP B: m=audio 12345 RTP/AVP 96 97 98 99\r\n
parsed SDP B: a=rtpmap:96 GSM/8000\r\n
parsed SDP B: a=rtpmap:97 GSM-EFR/8000\r\n
parsed SDP B: a=rtpmap:98 GSM-HR-08/8000\r\n
parsed SDP B: a=rtpmap:99 AMR/8000\r\n
parsed SDP B: a=fmtp:99 octet-align=1\r\n
parsed SDP B: a=ptime:20\r\n
sdp_msg_intersection(a,b): v=0\r\n
sdp_msg_intersection(a,b): o=OsmoMSC 0 0 IN IP4 23.42.23.42\r\n
sdp_msg_intersection(a,b): s=GSM Call\r\n
sdp_msg_intersection(a,b): c=IN IP4 23.42.23.42\r\n
sdp_msg_intersection(a,b): t=0 0\r\n
sdp_msg_intersection(a,b): m=audio 30436 RTP/AVP 112 3 111 110\r\n
sdp_msg_intersection(a,b): a=rtpmap:112 AMR/8000\r\n
sdp_msg_intersection(a,b): a=fmtp:112 octet-align=1\r\n
sdp_msg_intersection(a,b): a=rtpmap:3 GSM/8000\r\n
sdp_msg_intersection(a,b): a=rtpmap:111 GSM-HR-08/8000\r\n
sdp_msg_intersection(a,b): a=rtpmap:110 GSM-EFR/8000\r\n
sdp_msg_intersection(a,b): a=ptime:20\r\n
[2] ok

[3] identical codecs plus some extra codecs also lead to no change
SDP A: v=0\r\n
SDP A: o=OsmoMSC 0 0 IN IP4 23.42.23.42\r\n
SDP A: s=GSM Call\r\n
SDP A: c=IN IP4 23.42.23.42\r\n
SDP A: t=0 0\r\n
SDP A: m=audio 30436 RTP/AVP 112 3 111 110\r\n
SDP A: a=rtpmap:112 AMR/8000\r\n
SDP A: a=fmtp:112 octet-align=1\r\n
SDP A: a=rtpmap:3 GSM/8000\r\n
SDP A: a=rtpmap:111 GSM-HR-08/8000\r\n
SDP A: a=rtpmap:110 GSM-EFR/8000\r\n
SDP A: a=ptime:20\r\n
 SDP B: c=IN IP4 5.6.7.8\r\n
 SDP B: m=audio 12345 RTP/AVP 8 0 96 97 98 99\r\n
 SDP B: a=rtpmap:8 PCMA/8000\r\n
 SDP B: a=rtpmap:0 PCMU/8000\r\n
 SDP B: a=rtpmap:96 GSM/8000\r\n
 SDP B: a=rtpmap:97 GSM-EFR/8000\r\n
 SDP B: a=rtpmap:98 GSM-HR-08/8000\r\n
 SDP B: a=rtpmap:99 AMR/8000\r\n
 SDP B: a=fmtp:99 octet-align=1\r\n
parsed SDP A: v=0\r\n
parsed SDP A: o=OsmoMSC 0 0 IN IP4 23.42.23.42\r\n
parsed SDP A: s=GSM Call\r\n
parsed SDP A: c=IN IP4 23.42.23.42\r\n
parsed SDP A: t=0 0\r\n
parsed SDP A: m=audio 30436 RTP/AVP 112 3 111 110\r\n
parsed SDP A: a=rtpmap:112 AMR/8000\r\n
parsed SDP A: a=fmtp:112 octet-align=1\r\n
parsed SDP A: a=rtpmap:3 GSM/8000\r\n
parsed SDP A: a=rtpmap:111 GSM-HR-08/8000\r\n
parsed SDP A: a=rtpmap:110 GSM-EFR/8000\r\n
parsed SDP A: a=ptime:20\r\n
parsed SDP B: v=0\r\n
parsed SDP B: o=OsmoMSC 0 0 IN IP4 5.6.7.8\r\n
parsed SDP B: s=GSM Call\r\n
parsed SDP B: c=IN IP4 5.6.7.8\r\n
parsed SDP B: t=0 0\r\n
parsed SDP B: m=audio 12345 RTP/AVP 8 0 96 97 98 99\r\n
parsed SDP B: a=rtpmap:8 PCMA/8000\r\n
parsed SDP B: a=rtpmap:0 PCMU/8000\r\n
parsed SDP B: a=rtpmap:96 GSM/8000\r\n
parsed SDP B: a=rtpmap:97 GSM-EFR/8000\r\n
parsed SDP B: a=rtpmap:98 GSM-HR-08/8000\r\n
parsed SDP B: a=rtpmap:99 AMR/8000\r\n
parsed SDP B: a=fmtp:99 octet-align=1\r\n
parsed SDP B: a=ptime:20\r\n
sdp_msg_intersection(a,b): v=0\r\n
sdp_msg_intersection(a,b): o=OsmoMSC 0 0 IN IP4 23.42.23.42\r\n
sdp_msg_intersection(a,b): s=GSM Call\r\n
sdp_msg_intersection(a,b): c=IN IP4 23.42.23.42\r\n
sdp_msg_intersection(a,b): t=0 0\r\n
sdp_msg_intersection(a,b): m=audio 30436 RTP/AVP 112 3 111 110\r\n
sdp_msg_intersection(a,b): a=rtpmap:112 AMR/8000\r\n
sdp_msg_intersection(a,b): a=fmtp:112 octet-align=1\r\n
sdp_msg_intersection(a,b): a=rtpmap:3 GSM/8000\r\n
sdp_msg_intersection(a,b): a=rtpmap:111 GSM-HR-08/8000\r\n
sdp_msg_intersection(a,b): a=rtpmap:110 GSM-EFR/8000\r\n
sdp_msg_intersection(a,b): a=ptime:20\r\n
[3] ok

[4] some codecs removed
SDP A: v=0\r\n
SDP A: o=OsmoMSC 0 0 IN IP4 23.42.23.42\r\n
SDP A: s=GSM Call\r\n
SDP A: c=IN IP4 23.42.23.42\r\n
SDP A: t=0 0\r\n
SDP A: m=audio 30436 RTP/AVP 112 3 111 110\r\n
SDP A: a=rtpmap:112 AMR/8000\r\n
SDP A: a=fmtp:112 octet-align=1\r\n
SDP A: a=rtpmap:3 GSM/8000\r\n
SDP A: a=rtpmap:111 GSM-HR-08/8000\r\n
SDP A: a=rtpmap:110 GSM-EFR/8000\r\n
SDP A: a=ptime:20\r\n
 SDP B: v=0\r\n
 SDP B: o=OsmoMSC 0 0 IN IP4 23.42.23.42\r\n
 SDP B: s=GSM Call\r\n
 SDP B: c=IN IP4 23.42.23.42\r\n
 SDP B: t=0 0\r\n
 SDP B: m=audio 30436 RTP/AVP 112 110\r\n
 SDP B: a=rtpmap:112 AMR/8000\r\n
 SDP B: a=fmtp:112 octet-align=1\r\n
 SDP B: a=rtpmap:110 GSM-EFR/8000\r\n
 SDP B: a=ptime:20\r\n
parsed SDP A: v=0\r\n
parsed SDP A: o=OsmoMSC 0 0 IN IP4 23.42.23.42\r\n
parsed SDP A: s=GSM Call\r\n
parsed SDP A: c=IN IP4 23.42.23.42\r\n
parsed SDP A: t=0 0\r\n
parsed SDP A: m=audio 30436 RTP/AVP 112 3 111 110\r\n
parsed SDP A: a=rtpmap:112 AMR/8000\r\n
parsed SDP A: a=fmtp:112 octet-align=1\r\n
parsed SDP A: a=rtpmap:3 GSM/8000\r\n
parsed SDP A: a=rtpmap:111 GSM-HR-08/8000\r\n
parsed SDP A: a=rtpmap:110 GSM-EFR/8000\r\n
parsed SDP A: a=ptime:20\r\n
parsed SDP B: v=0\r\n
parsed SDP B: o=OsmoMSC 0 0 IN IP4 23.42.23.42\r\n
parsed SDP B: s=GSM Call\r\n
parsed SDP B: c=IN IP4 23.42.23.42\r\n
parsed SDP B: t=0 0\r\n
parsed SDP B: m=audio 30436 RTP/AVP 112 110\r\n
parsed SDP B: a=rtpmap:112 AMR/8000\r\n
parsed SDP B: a=fmtp:112 octet-align=1\r\n
parsed SDP B: a=rtpmap:110 GSM-EFR/8000\r\n
parsed SDP B: a=ptime:20\r\n
sdp_msg_intersection(a,b): v=0\r\n
sdp_msg_intersection(a,b): o=OsmoMSC 0 0 IN IP4 23.42.23.42\r\n
sdp_msg_intersection(a,b): s=GSM Call\r\n
sdp_msg_intersection(a,b): c=IN IP4 23.42.23.42\r\n
sdp_msg_intersection(a,b): t=0 0\r\n
sdp_msg_intersection(a,b): m=audio 30436 RTP/AVP 112 110\r\n
sdp_msg_intersection(a,b): a=rtpmap:112 AMR/8000\r\n
sdp_msg_intersection(a,b): a=fmtp:112 octet-align=1\r\n
sdp_msg_intersection(a,b): a=rtpmap:110 GSM-EFR/8000\r\n
sdp_msg_intersection(a,b): a=ptime:20\r\n
[4] ok

[5] other codecs removed
SDP A: v=0\r\n
SDP A: o=OsmoMSC 0 0 IN IP4 23.42.23.42\r\n
SDP A: s=GSM Call\r\n
SDP A: c=IN IP4 23.42.23.42\r\n
SDP A: t=0 0\r\n
SDP A: m=audio 30436 RTP/AVP 112 3 111 110\r\n
SDP A: a=rtpmap:112 AMR/8000\r\n
SDP A: a=fmtp:112 octet-align=1\r\n
SDP A: a=rtpmap:3 GSM/8000\r\n
SDP A: a=rtpmap:111 GSM-HR-08/8000\r\n
SDP A: a=rtpmap:110 GSM-EFR/8000\r\n
SDP A: a=ptime:20\r\n
 SDP B: v=0\r\n
 SDP B: o=OsmoMSC 0 0 IN IP4 23.42.23.42\r\n
 SDP B: s=GSM Call\r\n
 SDP B: c=IN IP4 23.42.23.42\r\n
 SDP B: t=0 0\r\n
 SDP B: m=audio 30436 RTP/AVP 3 111\r\n
 SDP B: a=rtpmap:3 GSM/8000\r\n
 SDP B: a=rtpmap:111 GSM-HR-08/8000\r\n
 SDP B: a=ptime:20\r\n
parsed SDP A: v=0\r\n
parsed SDP A: o=OsmoMSC 0 0 IN IP4 23.42.23.42\r\n
parsed SDP A: s=GSM Call\r\n
parsed SDP A: c=IN IP4 23.42.23.42\r\n
parsed SDP A: t=0 0\r\n
parsed SDP A: m=audio 30436 RTP/AVP 112 3 111 110\r\n
parsed SDP A: a=rtpmap:112 AMR/8000\r\n
parsed SDP A: a=fmtp:112 octet-align=1\r\n
parsed SDP A: a=rtpmap:3 GSM/8000\r\n
parsed SDP A: a=rtpmap:111 GSM-HR-08/8000\r\n
parsed SDP A: a=rtpmap:110 GSM-EFR/8000\r\n
parsed SDP A: a=ptime:20\r\n
parsed SDP B: v=0\r\n
parsed SDP B: o=OsmoMSC 0 0 IN IP4 23.42.23.42\r\n
parsed SDP B: s=GSM Call\r\n
parsed SDP B: c=IN IP4 23.42.23.42\r\n
parsed SDP B: t=0 0\r\n
parsed SDP B: m=audio 30436 RTP/AVP 3 111\r\n
parsed SDP B: a=rtpmap:3 GSM/8000\r\n
parsed SDP B: a=rtpmap:111 GSM-HR-08/8000\r\n
parsed SDP B: a=ptime:20\r\n
sdp_msg_intersection(a,b): v=0\r\n
sdp_msg_intersection(a,b): o=OsmoMSC 0 0 IN IP4 23.42.23.42\r\n
sdp_msg_intersection(a,b): s=GSM Call\r\n
sdp_msg_intersection(a,b): c=IN IP4 23.42.23.42\r\n
sdp_msg_intersection(a,b): t=0 0\r\n
sdp_msg_intersection(a,b): m=audio 30436 RTP/AVP 3 111\r\n
sdp_msg_intersection(a,b): a=rtpmap:3 GSM/8000\r\n
sdp_msg_intersection(a,b): a=rtpmap:111 GSM-HR-08/8000\r\n
sdp_msg_intersection(a,b): a=ptime:20\r\n
[5] ok

[6] all codecs removed
SDP A: v=0\r\n
SDP A: o=OsmoMSC 0 0 IN IP4 23.42.23.42\r\n
SDP A: s=GSM Call\r\n
SDP A: c=IN IP4 23.42.23.42\r\n
SDP A: t=0 0\r\n
SDP A: m=audio 30436 RTP/AVP 112 3 111 110\r\n
SDP A: a=rtpmap:112 AMR/8000\r\n
SDP A: a=fmtp:112 octet-align=1\r\n
SDP A: a=rtpmap:3 GSM/8000\r\n
SDP A: a=rtpmap:111 GSM-HR-08/8000\r\n
SDP A: a=rtpmap:110 GSM-EFR/8000\r\n
SDP A: a=ptime:20\r\n
 SDP B: s=empty
parsed SDP A: v=0\r\n
parsed SDP A: o=OsmoMSC 0 0 IN IP4 23.42.23.42\r\n
parsed SDP A: s=GSM Call\r\n
parsed SDP A: c=IN IP4 23.42.23.42\r\n
parsed SDP A: t=0 0\r\n
parsed SDP A: m=audio 30436 RTP/AVP 112 3 111 110\r\n
parsed SDP A: a=rtpmap:112 AMR/8000\r\n
parsed SDP A: a=fmtp:112 octet-align=1\r\n
parsed SDP A: a=rtpmap:3 GSM/8000\r\n
parsed SDP A: a=rtpmap:111 GSM-HR-08/8000\r\n
parsed SDP A: a=rtpmap:110 GSM-EFR/8000\r\n
parsed SDP A: a=ptime:20\r\n
parsed SDP B: v=0\r\n
parsed SDP B: o=OsmoMSC 0 0 IN IP4 0.0.0.0\r\n
parsed SDP B: s=GSM Call\r\n
parsed SDP B: c=IN IP4 0.0.0.0\r\n
parsed SDP B: t=0 0\r\n
parsed SDP B: m=audio 0 RTP/AVP\r\n
parsed SDP B: a=ptime:20\r\n
sdp_msg_intersection(a,b): v=0\r\n
sdp_msg_intersection(a,b): o=OsmoMSC 0 0 IN IP4 23.42.23.42\r\n
sdp_msg_intersection(a,b): s=GSM Call\r\n
sdp_msg_intersection(a,b): c=IN IP4 23.42.23.42\r\n
sdp_msg_intersection(a,b): t=0 0\r\n
sdp_msg_intersection(a,b): m=audio 30436 RTP/AVP\r\n
sdp_msg_intersection(a,b): a=ptime:20\r\n
[6] ok

[7] some real world test case
SDP A: v=0\r\n
SDP A: o=OsmoMSC 0 0 IN IP4 0.0.0.0\r\n
SDP A: s=GSM Call\r\n
SDP A: c=IN IP4 0.0.0.0\r\n
SDP A: t=0 0\r\n
SDP A: m=audio 0 RTP/AVP 112 113 110 3 111\r\n
SDP A: a=rtpmap:112 AMR/8000\r\n
SDP A: a=fmtp:112 octet-align=1;mode-set=0,1,2,3\r\n
SDP A: a=rtpmap:113 AMR-WB/8000\r\n
SDP A: a=fmtp:113 octet-align=1\r\n
SDP A: a=rtpmap:110 GSM-EFR/8000\r\n
SDP A: a=rtpmap:3 GSM/8000\r\n
SDP A: a=rtpmap:111 GSM-HR-08/8000\r\n
SDP A: a=ptime:20\r\n
 SDP B: v=0\r\n
 SDP B: o=OsmoMSC 0 0 IN IP4 0.0.0.0\r\n
 SDP B: s=GSM Call\r\n
 SDP B: c=IN IP4 0.0.0.0\r\n
 SDP B: t=0 0\r\n
 SDP B: m=audio 0 RTP/AVP 112 113 110 3 111\r\n
 SDP B: a=rtpmap:112 AMR/8000\r\n
 SDP B: a=fmtp:112 octet-align=1;mode-set=0,1,2,3\r\n
 SDP B: a=rtpmap:113 AMR-WB/8000\r\n
 SDP B: a=fmtp:113 octet-align=1\r\n
 SDP B: a=rtpmap:110 GSM-EFR/8000\r\n
 SDP B: a=rtpmap:3 GSM/8000\r\n
 SDP B: a=rtpmap:111 GSM-HR-08/8000\r\n
 SDP B: a=ptime:20\r\n
parsed SDP A: v=0\r\n
parsed SDP A: o=OsmoMSC 0 0 IN IP4 0.0.0.0\r\n
parsed SDP A: s=GSM Call\r\n
parsed SDP A: c=IN IP4 0.0.0.0\r\n
parsed SDP A: t=0 0\r\n
parsed SDP A: m=audio 0 RTP/AVP 112 113 110 3 111\r\n
parsed SDP A: a=rtpmap:112 AMR/8000\r\n
parsed SDP A: a=fmtp:112 octet-align=1;mode-set=0,1,2,3\r\n
parsed SDP A: a=rtpmap:113 AMR-WB/8000\r\n
parsed SDP A: a=fmtp:113 octet-align=1\r\n
parsed SDP A: a=rtpmap:110 GSM-EFR/8000\r\n
parsed SDP A: a=rtpmap:3 GSM/8000\r\n
parsed SDP A: a=rtpmap:111 GSM-HR-08/8000\r\n
parsed SDP A: a=ptime:20\r\n
parsed SDP B: v=0\r\n
parsed SDP B: o=OsmoMSC 0 0 IN IP4 0.0.0.0\r\n
parsed SDP B: s=GSM Call\r\n
parsed SDP B: c=IN IP4 0.0.0.0\r\n
parsed SDP B: t=0 0\r\n
parsed SDP B: m=audio 0 RTP/AVP 112 113 110 3 111\r\n
parsed SDP B: a=rtpmap:112 AMR/8000\r\n
parsed SDP B: a=fmtp:112 octet-align=1;mode-set=0,1,2,3\r\n
parsed SDP B: a=rtpmap:113 AMR-WB/8000\r\n
parsed SDP B: a=fmtp:113 octet-align=1\r\n
parsed SDP B: a=rtpmap:110 GSM-EFR/8000\r\n
parsed SDP B: a=rtpmap:3 GSM/8000\r\n
parsed SDP B: a=rtpmap:111 GSM-HR-08/8000\r\n
parsed SDP B: a=ptime:20\r\n
sdp_msg_intersection(a,b): v=0\r\n
sdp_msg_intersection(a,b): o=OsmoMSC 0 0 IN IP4 0.0.0.0\r\n
sdp_msg_intersection(a,b): s=GSM Call\r\n
sdp_msg_intersection(a,b): c=IN IP4 0.0.0.0\r\n
sdp_msg_intersection(a,b): t=0 0\r\n
sdp_msg_intersection(a,b): m=audio 0 RTP/AVP 112 113 110 3 111\r\n
sdp_msg_intersection(a,b): a=rtpmap:112 AMR/8000\r\n
sdp_msg_intersection(a,b): a=fmtp:112 octet-align=1;mode-set=0,1,2,3\r\n
sdp_msg_intersection(a,b): a=rtpmap:113 AMR-WB/8000\r\n
sdp_msg_intersection(a,b): a=fmtp:113 octet-align=1\r\n
sdp_msg_intersection(a,b): a=rtpmap:110 GSM-EFR/8000\r\n
sdp_msg_intersection(a,b): a=rtpmap:3 GSM/8000\r\n
sdp_msg_intersection(a,b): a=rtpmap:111 GSM-HR-08/8000\r\n
sdp_msg_intersection(a,b): a=ptime:20\r\n
[7] ok


test_select

[0]
SDP: AMR:octet-align=1#112,GSM#3,GSM-HR-08#111,GSM-EFR#110
Select: AMR:octet-align=1#112
SDP: AMR:octet-align=1#112,GSM#3,GSM-HR-08#111,GSM-EFR#110
[0] ok

[1]
SDP: AMR:octet-align=1#112,GSM#3,GSM-HR-08#111,GSM-EFR#110
Select: GSM#3
SDP: GSM#3,AMR:octet-align=1#112,GSM-HR-08#111,GSM-EFR#110
[1] ok

[2]
SDP: AMR:octet-align=1#112,GSM#3,GSM-HR-08#111,GSM-EFR#110
Select: GSM-HR-08#111
SDP: GSM-HR-08#111,AMR:octet-align=1#112,GSM#3,GSM-EFR#110
[2] ok

[3]
SDP: AMR:octet-align=1#112,GSM#3,GSM-HR-08#111,GSM-EFR#110
Select: GSM-EFR#110
SDP: GSM-EFR#110,AMR:octet-align=1#112,GSM#3,GSM-HR-08#111
[3] ok
