MT#55283 remove tests broken by Ia1d0cb8522a

Too lazy to fix.

Change-Id: Ic328ca1dbf699f89d5dbc4f93b22be8ba0e64ee9
master
Richard Fuchs 2 days ago
parent b87ae58036
commit 833d48e89e

@ -33,505 +33,6 @@ is length($wav_file), 1644, 'embedded binary wav file';
if ($extended_tests) {
($sock_a) = new_call([qw(198.51.100.4 4110)]);
($cid, $ft, $port_a) = create('early media', {
'audio player' => 'force',
}, <<SDP);
v=0
o=- SDP_VERSION IN IP4 203.0.113.1
s=RTPE_VERSION
t=0 0
m=audio PORT RTP/AVP 0 8
c=IN IP4 203.0.113.1
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=sendrecv
a=rtcp:PORT
SDP
rcv_no($sock_a);
create_answer('early media', {
'from-tag' => $ft,
flags => ['early media'],
}, <<SDP);
v=0
o=- 111111111 22222222 IN IP4 203.0.113.1
s=22222222
t=0 0
m=audio 4110 RTP/AVP 8
c=IN IP4 198.51.100.4
SDP
rcv($sock_a, $port_a, rtpm(8 | 0x80, -1, -1, -1, "\xd5" x 160));
($sock_a, $sock_b, $sock_c) = new_call([qw(198.51.100.4 4114)], [qw(198.51.100.4 4116)], [qw(198.51.100.4 4118)]);
($port_a) = offer('mixed sub manual w/ immediate audio player', { }, <<SDP);
v=0
o=- 1545997027 1 IN IP4 198.51.100.4
s=tester
t=0 0
m=audio 4114 RTP/AVP 0 8
c=IN IP4 198.51.100.4
a=sendrecv
--------------------------------------
v=0
o=- 1545997027 1 IN IP4 198.51.100.4
s=tester
t=0 0
m=audio PORT RTP/AVP 0 8
c=IN IP4 203.0.113.1
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=sendrecv
a=rtcp:PORT
SDP
($port_b) = answer('mixed sub manual w/ immediate audio player', { }, <<SDP);
v=0
o=- 1545997027 1 IN IP4 198.51.100.4
s=tester
t=0 0
m=audio 4116 RTP/AVP 0
c=IN IP4 198.51.100.4
a=sendrecv
--------------------------------------
v=0
o=- 1545997027 1 IN IP4 198.51.100.4
s=tester
t=0 0
m=audio PORT RTP/AVP 0
c=IN IP4 203.0.113.1
a=rtpmap:0 PCMU/8000
a=sendrecv
a=rtcp:PORT
SDP
($cid, $ft, $port_c) = create('mixed sub manual w/ immediate audio player', {
codec => { offer => ['G722'] },
'audio player' => 'force',
'call-id' => cid(),
}, <<SDP);
v=0
o=- SDP_VERSION IN IP4 203.0.113.1
s=RTPE_VERSION
t=0 0
m=audio PORT RTP/AVP 9
c=IN IP4 203.0.113.1
a=rtpmap:9 G722/8000
a=sendrecv
a=rtcp:PORT
SDP
is($cid, cid(), 'same call');
create_answer('mixed sub manual w/ immediate audio player', {
'from-tag' => $ft,
}, <<SDP);
v=0
o=- 111111111 22222222 IN IP4 203.0.113.1
s=22222222
t=0 0
m=audio 4118 RTP/AVP 9
c=IN IP4 198.51.100.4
SDP
# no media playback without subscriptions (XXX change this?)
rcv_no($sock_a);
rcv_no($sock_b);
rcv_no($sock_c);
snd($sock_a, $port_b, rtp (0, 1000, 3000, 0x1234, "\x11" x 160));
rcv($sock_b, $port_a, rtpm(0, 1000, 3000, 0x1234, "\x11" x 160));
rcv_no($sock_a);
rcv_no($sock_b);
rcv_no($sock_c);
snd($sock_b, $port_a, rtp (0, 8000, 10000, 0x2d8c, "\x22" x 160));
rcv($sock_a, $port_b, rtpm(0, 8000, 10000, 0x2d8c, "\x22" x 160));
rcv_no($sock_a);
rcv_no($sock_b);
rcv_no($sock_c);
snd($sock_c, $port_c, rtp (9, 8200, 10200, 0x2e54, "\x33" x 160));
rcv_no($sock_a);
rcv_no($sock_b);
rcv_no($sock_c);
rtpe_req('connect', 'mixed sub manual w/ immediate audio player', {
'from-tag' => ft(),
'to-tag' => $ft,
flags => [qw,directional,],
});
# player not active yet (no media)
rcv_no($sock_a);
rcv_no($sock_b);
rcv_no($sock_c);
# add media to start player
snd($sock_a, $port_b, rtp (0, 1001, 3160, 0x1234, "\x11" x 160));
rcv($sock_b, $port_a, rtpm(0, 1001, 3160, 0x1234, "\x11" x 160));
rcv_no($sock_a);
rcv_no($sock_b);
($seq, $ts, $ssrc) = rcv($sock_c, $port_c, rtpm(9 | 0x80, -1, -1, -1, "\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\x2a\x84\x20\x84\x20\x84\x04\x8e\x16\x9d\x5d\xfe\xdb\xd8\xd1\xd3\xd9\xd9\x9b\xdc\xd9\xd7\xd7\xd8\xd6\xd9\xda\xdb\xd9\xd7\xda\xd7\x9a\xd9\xd8\xd8\xd6\xd9\xd7\xda\xd9\xd9\xd9\xd6\xda\xd7\xda\xda\xd9\xd9\xd6\xda\xd7\xdb\xda\xda\xd9\xd7\xdb\xd8\xd6\xda\xdb\xdb\xd8\xd6\xda\xd8\xd6\xdb\xdb\xdc\xd3\xdf\xd9\xd6\xd9\xd9\xdc\xd2\xde\xda\xd7\xdc\xd5\xdd\xd4\xd8\xd9\xd6\xdf\xd7\xdf\xd8\xd4\xd9\xd7\xff\xd3\xfc\xda\xd6\xda\xd7\xfd\xd3\xfd\xda\xd7\xdc\xd3\xfa\xd3\xfd\xda\xd8\xd8\xd3\xf7\xd1"));
# untriggered media
rcv($sock_c, $port_c, rtpm(9, $seq + 1, $ts + 160, $ssrc, "\xde\xde\xdb\xdb\xd6\xfb\xd2\xdf\xfe\xd6\xdb\xdb\xfc\xd4\xd6\xf9\xd7\xdc\xd5\xff\xd7\xdb\xfd\xd8\x96\x1e\x98\x39\x86\x20\xb4\x08\xbc\x31\xbc\xda\xec\xf0\x50\xd3\xf1\x7b\xdc\xf5\xf2\xd7\xd7\xfb\xff\xf8\xf6\xf6\xdb\xd8\xda\xf9\xf9\xb6\x77\x9c\xd9\xd8\xdf\xf6\xf9\xf4\xbb\x58\x99\xdd\xfc\xf6\xfb\xb8\x7f\xda\xde\xdf\xb7\xfe\xfa\xfb\xdc\x9c\x5b\xb5\xfe\xff\xf9\xfc\xbd\x5a\xfa\xfd\xff\xbc\xf9\xfc\xde\xbd\x7c\xfc\xfd\xfb\xbf\xdf\xfc\xbb\x5e\xfd\xbb\x7f\x9f\x7c\xf9\xfe\xde\xfa\xfd\xff\xdf\xfa\xfc\xff\xbf\xff\xfc\xfe\xbf\xff\xfd\xfd\xbd\xfd\xfd\xbd\x7d\xfd\xbd\xfd\xfd\xbd\xfd\x7d\xbd\xfd\x7d\xfd\xbd\xfd\xfd\xfd\xfd\xfd\xfd\xfd\xfd\xfd\xfd\xfd"));
# catch up to delay caused by rcv_no above
rcv($sock_c, $port_c, rtpm(9, $seq + 2, $ts + 320, $ssrc, "\xfd\xfd\xfd\xfd\xfd\xfd\xfd\xfc\xfc\xfc\xfc\xfc\xfc\xfc\xfc\xfc\xfc\xfc\xfc\xfc\xfc\xfc\xfc\xfc\xfc\xfc\xfc\xfc\xfc\xfc\xfc\xfb\xde\xf3\xdc\xf8\xfb\xde\xf1\xde\xf6\xde\xf5\xfa\xdc\xf8\xfb\xdf\xf5\xfa\xf8\xf9\xfb\xdf\xf7\xdf\xf6\xfb\xf7\xfb\xfb\xf9\xdf\xf7\xdf\xf5\xf7\xf9\xf7\xf9\xf9\xdf\xf7\xf9\xf9\xfb\xfb\xf9\xfb\xdf\xf3\xfb\xfb\xfb\xfb\xfb\xdf\xf3\xdf\xf6\xf9\xf9\xfb\xfb\xf9\xfb\xdf\xf3\xfb\xfb\xfb\xfb\xfb\xdf\xf2\xfb\xdf\xf6\xf9\xf9\xdf\xf4\xf6\xdf\xf6\xf9\xf6\xdf\xf9\xf9\xdf\xf4\xf8\xf8\xfb\xfb\xf6\xfb\xfb\xfb\xfb\xf8\xfa\xfa\xf8\xf8\xfa\xde\xf1\xfa\xf8\xf8\xfa\xde\xf3\xfa\xf5\xfa\xde\xf3\xdf\xf3\xfb\xf8\xf8\xdf\xf6\xdf\xf4\xfb"));
rcv($sock_c, $port_c, rtpm(9, $seq + 3, $ts + 480, $ssrc, "\xfb\xf8\xfa\xfa\xfa\xf8\xf8\xfa\xfa\xf8\xf8\xfa\xde\xf2\xf8\xf8\xde\xf4\xf5\xfa\xde\xf1\xf5\xfa\xde\xf5\xf8\xfa\xf5\xf8\xfa\xde\xf5\xf5\xf8\xfa\xde\xf3\xf8\xf8\xf8\xde\xf5\xf8\xf8\xf5\xf8\xfa\xde\xf5\xf5\xf8\xfa\xfa\xfa\xfa\xf7\xf8\xfa\xdb\xf3\xfa\xf8\xf8\xfa\xde\xf8\xf5\xf5\xf8\xfa\xde\xf8\xfa\xf7\xf2\xfa\xde\xfa\xde\xf5\xf5\xf3\xf8\xde\xfa\xdc\xf8\xf5\xf1\xf6\xda\xf2\xda\xfb\xf9\xf4\xf4\xdf\xf4\xdf\xfb\xfb\xf6\xf6\xfb\xf9\xdf\xfb\xfb\xf8\xf6\xfb\xf8\xfb\xdc\xf8\xf8\xf8\xf5\xf5\xf8\xdc\xfa\xde\xf3\xf8\xf6\xf8\xf8\xde\xde\xf3\xf8\xf8\xf6\xf8\xfb\xd9\xf6\xfb\xf8\xf6\xdf\xf4\xdf\xf8\xf8\xf8\xf5\xf8\xf8\xfa\xfa\xde\xf5\xf5\xfa\xfa\xf3"));
rcv($sock_c, $port_c, rtpm(9, $seq + 4, $ts + 640, $ssrc, "\xfb\xd7\xf4\xf6\xdf\xf6\xf6\xf6\xda\xf6\xf9\xdf\xf6\xf9\xf3\xdb\xf5\xf9\xdf\xf7\xf9\xf3\xdb\xf7\xdd\xdf\xf7\xf7\xf7\xdb\xf6\xfb\xdb\xf6\xf8\xf5\xde\xf6\xfa\xde\xf7\xdf\xf3\xfa\xfa\xfa\xdf\xf6\xdf\xf4\xf8\xf9\xf9\xfb\xf9\xfb\xfb\xf9\xf9\xfb\xfb\xf9\xf9\xfb\xfb\xf9\xf9\xfb\xfb\xf8\xf8\xfb\xfb\xf8\xf8\xfa\xde\xf3\xf8\xf8\xfa\xde\xf3\xdf\xf4\xf8\xf8\xf8\xde\xf3\xfb\xf8\xf8\xfb\xfa\xde\xf3\xf8\xf8\xfb\xde\xf3\xfb\xf8\xf8\xfa\xde\xf8\xf5\xf5\xf8\xfa\xde\xf8\xfa\xf8\xf3\xfa\xfa\xdc\xfa\xde\xf1\xf3\xfb\xfb\xdc\xfa\xd9\xf4\xf2\xdf\xf2\xfb\xdd\xdd\xf8\xf4\xf8\xf4\xf6\xdd\xdf\xf6\xfb\xf8\xf6\xf9\xf8\xdc\xfb\xfb\xf8\xf4\xf8\xf8\xdf\xf5\xf8\xfa"));
rcv($sock_c, $port_c, rtpm(9, $seq + 5, $ts + 800, $ssrc, "\xfa\xf8\xf5\xde\xf5\xf8\xfa\xde\xf1\xf6\xda\xf2\xdf\xf4\xdf\xf4\xf6\xdf\xf4\xfb\xfb\xfb\xf8\xf8\xdf\xf6\xf8\xf6\xfb\xf8\xfb\xdc\xf8\xf8\xf5\xf6\xdf\xf6\xdf\xf6\xf8\xf6\xfb\xfb\xfb\xdf\xf5\xf8\xf8\xf8\xf8\xfa\xde\xf1\xf8\xfa\xde\xf1\xfb\xdf\xf3\xf8\xfb\xdf\xf4\xfb\xfb\xf6\xf8\xfb\xdc\xf8\xf8\xf8\xf5\xf5\xfa\xd9\xf8\xfa\xfa\xf5\xf3\xdf\xf8\xdf\xf8\xf8\xf5\xf1\xfb\xdc\xdf\xf8\xf8\xf5\xf1\xf6\xda\xf9\xdf\xf8\xf6\xf4\xf2\xdd\xdf\xfb\xdd\xf6\xf6\xf3\xf9\xdf\xf9\xdd\xdf\xf3\xf3\xf9\xfb\xdd\xdf\xfb\xf9\xf4\xf6\xf9\xf9\xdd\xdf\xf6\xf9\xf6\xf9\xf4\xdd\xdd\xf9\xf9\xf9\xf6\xf9\xf6\xda\xf6\xfb\xfb\xf9\xf6\xfb\xdd\xf8\xf8\xfb\xdf\xf0\xf6\xda\xf4"));
rcv($sock_c, $port_c, rtpm(9, $seq + 6, $ts + 960, $ssrc, "\xf9\xdf\xfb\xf9\xf2\xdd\xf9\xf9\xdf\xf9\xfb\xf6\xf8\xf8\xfb\xdc\xf8\xfb\xf8\xf5\xf8\xf5\xdf\xf4\xfb\xf8\xf8\xde\xf3\xdf\xf4\xfb\xfb\xf8\xfa\xfa\xfa\xf8\xf8\xfa\xde\xf1\xf8\xfa\xdc\xf3\xf5\xdf\xfa\xf8\xf1\xdf\xf6\xdf\xf4\xfb\xdc\xf6\xdf\xf4\xfb\xf8\xf8\xfa\xfa\xfa\xf8\xf8\xfa\xde\xf3\xf8\xf8\xde\xf3\xfa\xfa\xfa\xf5\xf8\xdc\xfa\xf8\xf5\xfa\xf8\xf5\xde\xfa\xf8\xf5\xf8\xfa\xfa\xde\xf2\xfa\xf8\xf8\xfa\xde\xf4\xf5\xf8\xfa\xde\xf2\xde\xf5\xf5\xf5\xde\xde\xef\xdf\xf8\xf6\xf4\xdf\xdf\xf2\xfb\xdf\xf4\xf6\xdf\xfb\xf9\xf4\xdd\xfb\xf6\xfb\xfb\xfb\xf8\xfb\xdc\xf6\xdf\xf4\xf6\xfb\xf8\xdf\xf6\xdc\xf8\xf6\xf8\xf8\xfa\xde\xf5\xf8\xfa\xf8\xf3\xdf\xfa"));
rcv($sock_c, $port_c, rtpm(9, $seq + 7, $ts + 1120, $ssrc, "\xf8\xf8\xde\xf8\xf1\xfa\xfa\xf5\xf8\xd9\xfa\xfa\xf8\xf5\xf5\xf8\xde\xf5\xfa\xd9\xf3\xf6\xfb\xdc\xf8\xf6\xda\xf0\xf9\xf6\xdd\xfb\xf9\xfb\xfb\xfb\xf6\xdf\xf4\xdf\xf6\xf6\xf9\xf6\xda\xf6\xfb\xf9\xf6\xfb\xf6\xdd\xfb\xdf\xf6\xf4\xf9\xf6\xda\xf6\xfb\xfb\xf6\xf9\xf9\xdd\xfb\xfb\xfb\xf6\xf8\xf6\xda\xf4\xfb\xdf\xf1\xf6\xdf\xf6\xf9\xf9\xdd\xfb\xf6\xf9\xf6\xdf\xf4\xfb\xdd\xf6\xf9\xf6\xdf\xf4\xfb\xdf\xf4\xfb\xf9\xf9\xfb\xfb\xfb\xf8\xf8\xfb\xdf\xf1\xf8\xf8\xfb\xdf\xf6\xdf\xf2\xf6\xf6\xfb\xdd\xdf\xdf\xf4\xf2\xf6\xfb\xdf\xf9\xda\xf9\xf6\xf3\xf7\xfb\xdf\xfb\xda\xf6\xf5\xf3\xdf\xfb\xf9\xdd\xdf\xf7\xf5\xf7\xfb\xfb\xdf\xfb\xdf\xf4\xf7\xf9\xf9\xdf\xf9"));
rcv($sock_c, $port_c, rtpm(9, $seq + 8, $ts + 1280, $ssrc, "\xdf\xf6\xf6\xf6\xf9\xdf\xfb\xdd\xf9\xf6\xf6\xf6\xdf\xf9\xdf\xfb\xf9\xf6\xf6\xf9\xfb\xdd\xfb\xfb\xfb\xf8\xf6\xfb\xdf\xf4\xf8\xdf\xf8\xf6\xf8\xfb\xdf\xf3\xfb\xdf\xf4\xf4\xfb\xda\xf4\xf8\xdf\xf6\xf6\xf6\xdf\xf9\xdf\xfb\xfb\xf6\xf4\xf8\xdf\xfb\xdf\xf6\xf6\xf6\xf8\xdf\xfb\xdc\xf8\xf6\xf6\xf8\xfb\xdc\xfb\xfa\xf8\xf5\xf8\xfa\xde\xf1\xf6\xdc\xf8\xf8\xfa\xde\xf3\xf4\xf8\xdf\xf8\xfb\xde\xf3\xf6\xf6\xfb\xdf\xf8\xdc\xfb\xf8\xf3\xf6\xf8\xfb\xda\xf8\xfb\xf8\xf4\xf6\xfb\xdc\xfb\xdf\xf4\xf6\xfb\xfb\xdf\xf4\xfb\xdc\xf5\xf6\xf8\xfb\xfb\xfa\xde\xf5\xf5\xfb\xfa\xf8\xf5\xfa\xdc\xf5\xf5\xfb\xde\xf1\xf4\xdf\xf8\xf8\xfb\xdf\xf3\xf6\xf8\xfb\xdf\xf6\xdf\xf6"));
rcv($sock_c, $port_c, rtpm(9, $seq + 9, $ts + 1440, $ssrc, "\xf6\xf8\xfb\xdc\xf8\xfb\xfb\xf5\xf6\xfb\xfb\xfb\xde\xf3\xfb\xdf\xf2\xf6\xfb\xda\xf8\xf8\xfb\xf8\xf4\xf6\xdc\xfb\xfb\xfb\xfb\xf8\xf5\xfb\xdc\xf5\xf6\xdf\xf6\xf4\xf6\xdc\xdf\xf6\xdf\xf4\xf6\xf6\xfb\xda\xf9\xdf\xf4\xf4\xf4\xf9\xdd\xdf\xfb\xfb\xf6\xf2\xf6\xdf\xdf\xfb\xdd\xf6\xf9\xf4\xf9\xdf\xf9\xfb\xfb\xf8\xf6\xf8\xfb\xdc\xf8\xfb\xfa\xf5\xf3\xdf\xf6\xfb\xfb\xdf\xf6\xfb\xdf\xf4\xf8\xfb\xdf\xf3\xf8\xfb\xfb\xf8\xf8\xde\xf5\xf8\xf8\xf8\xf8\xf8\xfa\xde\xf1\xfa\xfa\xfa\xf8\xf8\xde\xf3\xfa\xf8\xf8\xf8\xde\xf5\xf8\xf5\xfa\xf8\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa"));
rcv($sock_c, $port_c, rtpm(9, $seq + 10, $ts + 1600, $ssrc, "\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xde\xee\xd6\xef\xda\xf2\xda\xf9\xf1\xd9\xf3\xd6\xef\xd9\xde\xef\xd7\xf1\xdc\xf8\xfa\xda\xef\xd5\xf8\xf9\xfc\xfe\xdd\xf2\xd9\xfe\xfb\xfb\xdf\xf8\xf3\xd8\xdc\xf9\xf6\xdb\xf5\xf3\xd9\xdb\xf5\xf8\xdd\xf8\xf2\xdb\xdf\xf6\xfe\xdf\xf7\xf8\xfe\xd9\xf8\xf9\xfc\xf9\xf9\xfc\xdb\xf6\xfc\xfa\xfe\xfa\xfc\xdb\xf6\xfa\xf8\xfe\xfe\xfc\xda\xf6\xfa\xf8\xf8\xdf\xf5\xdc"));
rcv($sock_c, $port_c, rtpm(9, $seq + 11, $ts + 1760, $ssrc, "\xfb\xdf\xf1\xf8\xdf\xf8\xdf\xf6\xfb\xf8\xf7\xda\xfa\xde\xf6\xf8\xf6\xfa\xdd\xdd\xdb\xf3\xf6\xf6\xf6\xdf\xde\xdc\xfa\xf8\xf3\xf8\xfb\xd9\xdc\xfb\xdf\xf0\xf3\xfc\xdc\xdc\xfb\xda\xf5\xf2\xf8\xfe\xdc\xfb\xd9\xfb\xf5\xf6\xfb\xde\xfa\xdc\xfa\xf9\xf4\xf9\xfb\xdf\xf7\xdd\xf9\xf7\xfb\xdf\xf5\xf7\xda\xf9\xf6\xf9\xdf\xf6\xf7\xda\xf9\xf7\xdf\xf9\xf7\xf7\xda\xfa\xfb\xdf\xf6\xf6\xf6\xdc\xdb\xf6\xfb\xfb\xf7\xfa\xfb\xdb\xf6\xfa\xf9\xf9\xf9\xf9\xdd\xf9\xf7\xf7\xf7\xdf\xfb\xdd\xf9\xfb\xf5\xf5\xf9\xdf\xfb\xfb\xf9\xf9\xf6\xf9\xfb\xdf\xf6\xf9\xf9\xf9\xf9\xfb\xdf\xf4\xf6\xf9\xf9\xfb\xdf\xf8\xf8\xf6\xf8\xf6\xfb\xdf\xf8\xfb\xf8\xf5\xf6\xdf\xf6\xdf\xf6\xfb"));
rcv($sock_c, $port_c, rtpm(9, $seq + 12, $ts + 1920, $ssrc, "\xf6\xf6\xdf\xf6\xdc\xf8\xf8\xf6\xf8\xf8\xf8\xdf\xf8\xf8\xf5\xf5\xf8\xfa\xd9\xf5\xfb\xfb\xf5\xf6\xdc\xdf\xf4\xf8\xf8\xf8\xf3\xdf\xf8\xfb\xf8\xfa\xde\xef\xfb\xfb\xfb\xfb\xdf\xfb\xf6\xf6\xfb\xfb\xfb\xdc\xfa\xfa\xf5\xf3\xdf\xf4\xdf\xf8\xdf\xf6\xf2\xf8\xfb\xdf\xf6\xdc\xfb\xf6\xf6\xf8\xfb\xdf\xf8\xfb\xfb\xf5\xf4\xfb\xdc\xf8\xfa\xde\xf3\xf4\xf8\xdf\xf6\xf8\xdc\xfb\xf3\xf6\xdc\xf6\xf8\xdc\xdc\xf4\xf2\xdf\xf1\xf9\xdd\xdd\xdf\xf3\xf9\xf6\xfb\xdf\xf6\xdd\xf9\xfb\xfb\xf9\xf8\xf8\xfb\xdf\xf2\xfb\xdf\xf4\xfb\xdc\xfb\xf8\xf6\xfb\xf8\xf8\xdf\xf8\xfa\xf5\xf5\xf8\xfa\xdc\xf5\xf5\xf8\xfa\xde\xef\xf8\xf8\xdc\xfb\xfb\xfb\xf6\xf6\xfb\xdc\xfb\xdf\xf1\xf8"));
# push media
snd($sock_a, $port_b, rtp (0, 1002, 3320, 0x1234, "\x44" x 160));
rcv($sock_b, $port_a, rtpm(0, 1002, 3320, 0x1234, "\x44" x 160));
snd($sock_b, $port_a, rtp (0, 8001, 10160, 0x2d8c, "\x55" x 160));
rcv($sock_a, $port_b, rtpm(0, 8001, 10160, 0x2d8c, "\x55" x 160));
rcv($sock_c, $port_c, rtpm(9, $seq + 13, $ts + 2080, $ssrc, "\xfb\xf8\xf8\xfa\xdc\xf5\xf5\xf8\xf8\xf8\xf5\xfa\xd9\xf5\xf8\xfb\xde\xef\xf6\xdf\xf6\xdd\xfb\xfb\xf4\xf4\xfb\xdd\xfb\xfb\xf8\xf6\xf8\xf6\xdc\xfb\xfb\xf8\xf6\xdf\x28\x84\x20\x84\x20\x84\x04\xbd\x35\xb7\x9f\xf9\x5c\x8e\x16\xbb\x3b\xbd\xfc\x37\x8d\x27\x9c\x11\xba\x1f\xb8\x5c\x75\xf6\x59\xda\x7e\xdf\xfc\x78\x75\xfd\xdb\x5f\xdf\x7e\xff\xf9\x79\xdf\xdf\x5f\xfe\xdd\xff\xfa\x7e\xdd\xdd\xdf\xff\xde\xfd\xfc\xfd\xde\xdd\xde\xfe\xdc\xdd\xfd\x9f\x7f\xdb\xfd\xde\xde\x9f\xfe\xdc\xdb\xfd\xde\xdd\xdd\x9d\xde\xdd\xdd\xdd\xdd\xdd\xdd\xdd\x9c\xdc\xdb\xfd\xde\xdd\xdc\xdb\xfd\xdb\xfe\xdb\xfe\xdc\xd9\xde\xde\xdf\xfe\xda\xdf\xff\xda\xde\xde\xff\xdc\xd9\xff"));
rtpe_req('delete', 'delete');
($sock_a, $sock_b, $sock_c) = new_call([qw(198.51.100.4 4078)], [qw(198.51.100.4 4080)], [qw(198.51.100.4 4082)]);
($port_a) = offer('mixed sub manual', { }, <<SDP);
v=0
o=- 1545997027 1 IN IP4 198.51.100.4
s=tester
t=0 0
m=audio 4078 RTP/AVP 0 8
c=IN IP4 198.51.100.4
a=sendrecv
--------------------------------------
v=0
o=- 1545997027 1 IN IP4 198.51.100.4
s=tester
t=0 0
m=audio PORT RTP/AVP 0 8
c=IN IP4 203.0.113.1
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=sendrecv
a=rtcp:PORT
SDP
($port_b) = answer('mixed sub manual', { }, <<SDP);
v=0
o=- 1545997027 1 IN IP4 198.51.100.4
s=tester
t=0 0
m=audio 4080 RTP/AVP 0
c=IN IP4 198.51.100.4
a=sendrecv
--------------------------------------
v=0
o=- 1545997027 1 IN IP4 198.51.100.4
s=tester
t=0 0
m=audio PORT RTP/AVP 0
c=IN IP4 203.0.113.1
a=rtpmap:0 PCMU/8000
a=sendrecv
a=rtcp:PORT
SDP
($cid, $ft, $port_c) = create('mixed sub manual', {
codec => { offer => ['G722'] },
'call-id' => cid(),
}, <<SDP);
v=0
o=- SDP_VERSION IN IP4 203.0.113.1
s=RTPE_VERSION
t=0 0
m=audio PORT RTP/AVP 9
c=IN IP4 203.0.113.1
a=rtpmap:9 G722/8000
a=sendrecv
a=rtcp:PORT
SDP
is($cid, cid(), 'same call');
create_answer('mixed sub manual', {
'from-tag' => $ft,
}, <<SDP);
v=0
o=- 111111111 22222222 IN IP4 203.0.113.1
s=22222222
t=0 0
m=audio 4082 RTP/AVP 9
c=IN IP4 198.51.100.4
SDP
# no media playback without subscriptions (XXX change this?)
rcv_no($sock_a);
rcv_no($sock_b);
rcv_no($sock_c);
snd($sock_a, $port_b, rtp (0, 1000, 3000, 0x1234, "\x11" x 160));
rcv($sock_b, $port_a, rtpm(0, 1000, 3000, 0x1234, "\x11" x 160));
rcv_no($sock_a);
rcv_no($sock_b);
rcv_no($sock_c);
snd($sock_b, $port_a, rtp (0, 8000, 10000, 0x2d8c, "\x22" x 160));
rcv($sock_a, $port_b, rtpm(0, 8000, 10000, 0x2d8c, "\x22" x 160));
rcv_no($sock_a);
rcv_no($sock_b);
rcv_no($sock_c);
snd($sock_c, $port_c, rtp (9, 8200, 10200, 0x2e54, "\x33" x 160));
rcv_no($sock_a);
rcv_no($sock_b);
rcv_no($sock_c);
rtpe_req('connect', 'mixed sub manual', {
'from-tag' => ft(),
'to-tag' => $ft,
flags => [qw,directional,],
'audio player' => 'force',
});
# player not active yet (no media)
rcv_no($sock_a);
rcv_no($sock_b);
rcv_no($sock_c);
# add media to start player
snd($sock_a, $port_b, rtp (0, 1001, 3160, 0x1234, "\x11" x 160));
rcv($sock_b, $port_a, rtpm(0, 1001, 3160, 0x1234, "\x11" x 160));
rcv_no($sock_a);
rcv_no($sock_b);
($seq, $ts, $ssrc) = rcv($sock_c, $port_c, rtpm(9 | 0x80, -1, -1, -1, "\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\x2a\x84\x20\x84\x20\x84\x04\x8e\x16\x9d\x5d\xfe\xdb\xd8\xd1\xd3\xd9\xd9\x9b\xdc\xd9\xd7\xd7\xd8\xd6\xd9\xda\xdb\xd9\xd7\xda\xd7\x9a\xd9\xd8\xd8\xd6\xd9\xd7\xda\xd9\xd9\xd9\xd6\xda\xd7\xda\xda\xd9\xd9\xd6\xda\xd7\xdb\xda\xda\xd9\xd7\xdb\xd8\xd6\xda\xdb\xdb\xd8\xd6\xda\xd8\xd6\xdb\xdb\xdc\xd3\xdf\xd9\xd6\xd9\xd9\xdc\xd2\xde\xda\xd7\xdc\xd5\xdd\xd4\xd8\xd9\xd6\xdf\xd7\xdf\xd8\xd4\xd9\xd7\xff\xd3\xfc\xda\xd6\xda\xd7\xfd\xd3\xfd\xda\xd7\xdc\xd3\xfa\xd3\xfd\xda\xd8\xd8\xd3\xf7\xd1"));
# untriggered media
rcv($sock_c, $port_c, rtpm(9, $seq + 1, $ts + 160, $ssrc, "\xde\xde\xdb\xdb\xd6\xfb\xd2\xdf\xfe\xd6\xdb\xdb\xfc\xd4\xd6\xf9\xd7\xdc\xd5\xff\xd7\xdb\xfd\xd8\x96\x1e\x98\x39\x86\x20\xb4\x08\xbc\x31\xbc\xda\xec\xf0\x50\xd3\xf1\x7b\xdc\xf5\xf2\xd7\xd7\xfb\xff\xf8\xf6\xf6\xdb\xd8\xda\xf9\xf9\xb6\x77\x9c\xd9\xd8\xdf\xf6\xf9\xf4\xbb\x58\x99\xdd\xfc\xf6\xfb\xb8\x7f\xda\xde\xdf\xb7\xfe\xfa\xfb\xdc\x9c\x5b\xb5\xfe\xff\xf9\xfc\xbd\x5a\xfa\xfd\xff\xbc\xf9\xfc\xde\xbd\x7c\xfc\xfd\xfb\xbf\xdf\xfc\xbb\x5e\xfd\xbb\x7f\x9f\x7c\xf9\xfe\xde\xfa\xfd\xff\xdf\xfa\xfc\xff\xbf\xff\xfc\xfe\xbf\xff\xfd\xfd\xbd\xfd\xfd\xbd\x7d\xfd\xbd\xfd\xfd\xbd\xfd\x7d\xbd\xfd\x7d\xfd\xbd\xfd\xfd\xfd\xfd\xfd\xfd\xfd\xfd\xfd\xfd\xfd"));
# catch up to delay caused by rcv_no above
rcv($sock_c, $port_c, rtpm(9, $seq + 2, $ts + 320, $ssrc, "\xfd\xfd\xfd\xfd\xfd\xfd\xfd\xfc\xfc\xfc\xfc\xfc\xfc\xfc\xfc\xfc\xfc\xfc\xfc\xfc\xfc\xfc\xfc\xfc\xfc\xfc\xfc\xfc\xfc\xfc\xfc\xfb\xde\xf3\xdc\xf8\xfb\xde\xf1\xde\xf6\xde\xf5\xfa\xdc\xf8\xfb\xdf\xf5\xfa\xf8\xf9\xfb\xdf\xf7\xdf\xf6\xfb\xf7\xfb\xfb\xf9\xdf\xf7\xdf\xf5\xf7\xf9\xf7\xf9\xf9\xdf\xf7\xf9\xf9\xfb\xfb\xf9\xfb\xdf\xf3\xfb\xfb\xfb\xfb\xfb\xdf\xf3\xdf\xf6\xf9\xf9\xfb\xfb\xf9\xfb\xdf\xf3\xfb\xfb\xfb\xfb\xfb\xdf\xf2\xfb\xdf\xf6\xf9\xf9\xdf\xf4\xf6\xdf\xf6\xf9\xf6\xdf\xf9\xf9\xdf\xf4\xf8\xf8\xfb\xfb\xf6\xfb\xfb\xfb\xfb\xf8\xfa\xfa\xf8\xf8\xfa\xde\xf1\xfa\xf8\xf8\xfa\xde\xf3\xfa\xf5\xfa\xde\xf3\xdf\xf3\xfb\xf8\xf8\xdf\xf6\xdf\xf4\xfb"));
rcv($sock_c, $port_c, rtpm(9, $seq + 3, $ts + 480, $ssrc, "\xfb\xf8\xfa\xfa\xfa\xf8\xf8\xfa\xfa\xf8\xf8\xfa\xde\xf2\xf8\xf8\xde\xf4\xf5\xfa\xde\xf1\xf5\xfa\xde\xf5\xf8\xfa\xf5\xf8\xfa\xde\xf5\xf5\xf8\xfa\xde\xf3\xf8\xf8\xf8\xde\xf5\xf8\xf8\xf5\xf8\xfa\xde\xf5\xf5\xf8\xfa\xfa\xfa\xfa\xf7\xf8\xfa\xdb\xf3\xfa\xf8\xf8\xfa\xde\xf8\xf5\xf5\xf8\xfa\xde\xf8\xfa\xf7\xf2\xfa\xde\xfa\xde\xf5\xf5\xf3\xf8\xde\xfa\xdc\xf8\xf5\xf1\xf6\xda\xf2\xda\xfb\xf9\xf4\xf4\xdf\xf4\xdf\xfb\xfb\xf6\xf6\xfb\xf9\xdf\xfb\xfb\xf8\xf6\xfb\xf8\xfb\xdc\xf8\xf8\xf8\xf5\xf5\xf8\xdc\xfa\xde\xf3\xf8\xf6\xf8\xf8\xde\xde\xf3\xf8\xf8\xf6\xf8\xfb\xd9\xf6\xfb\xf8\xf6\xdf\xf4\xdf\xf8\xf8\xf8\xf5\xf8\xf8\xfa\xfa\xde\xf5\xf5\xfa\xfa\xf3"));
rcv($sock_c, $port_c, rtpm(9, $seq + 4, $ts + 640, $ssrc, "\xfb\xd7\xf4\xf6\xdf\xf6\xf6\xf6\xda\xf6\xf9\xdf\xf6\xf9\xf3\xdb\xf5\xf9\xdf\xf7\xf9\xf3\xdb\xf7\xdd\xdf\xf7\xf7\xf7\xdb\xf6\xfb\xdb\xf6\xf8\xf5\xde\xf6\xfa\xde\xf7\xdf\xf3\xfa\xfa\xfa\xdf\xf6\xdf\xf4\xf8\xf9\xf9\xfb\xf9\xfb\xfb\xf9\xf9\xfb\xfb\xf9\xf9\xfb\xfb\xf9\xf9\xfb\xfb\xf8\xf8\xfb\xfb\xf8\xf8\xfa\xde\xf3\xf8\xf8\xfa\xde\xf3\xdf\xf4\xf8\xf8\xf8\xde\xf3\xfb\xf8\xf8\xfb\xfa\xde\xf3\xf8\xf8\xfb\xde\xf3\xfb\xf8\xf8\xfa\xde\xf8\xf5\xf5\xf8\xfa\xde\xf8\xfa\xf8\xf3\xfa\xfa\xdc\xfa\xde\xf1\xf3\xfb\xfb\xdc\xfa\xd9\xf4\xf2\xdf\xf2\xfb\xdd\xdd\xf8\xf4\xf8\xf4\xf6\xdd\xdf\xf6\xfb\xf8\xf6\xf9\xf8\xdc\xfb\xfb\xf8\xf4\xf8\xf8\xdf\xf5\xf8\xfa"));
rcv($sock_c, $port_c, rtpm(9, $seq + 5, $ts + 800, $ssrc, "\xfa\xf8\xf5\xde\xf5\xf8\xfa\xde\xf1\xf6\xda\xf2\xdf\xf4\xdf\xf4\xf6\xdf\xf4\xfb\xfb\xfb\xf8\xf8\xdf\xf6\xf8\xf6\xfb\xf8\xfb\xdc\xf8\xf8\xf5\xf6\xdf\xf6\xdf\xf6\xf8\xf6\xfb\xfb\xfb\xdf\xf5\xf8\xf8\xf8\xf8\xfa\xde\xf1\xf8\xfa\xde\xf1\xfb\xdf\xf3\xf8\xfb\xdf\xf4\xfb\xfb\xf6\xf8\xfb\xdc\xf8\xf8\xf8\xf5\xf5\xfa\xd9\xf8\xfa\xfa\xf5\xf3\xdf\xf8\xdf\xf8\xf8\xf5\xf1\xfb\xdc\xdf\xf8\xf8\xf5\xf1\xf6\xda\xf9\xdf\xf8\xf6\xf4\xf2\xdd\xdf\xfb\xdd\xf6\xf6\xf3\xf9\xdf\xf9\xdd\xdf\xf3\xf3\xf9\xfb\xdd\xdf\xfb\xf9\xf4\xf6\xf9\xf9\xdd\xdf\xf6\xf9\xf6\xf9\xf4\xdd\xdd\xf9\xf9\xf9\xf6\xf9\xf6\xda\xf6\xfb\xfb\xf9\xf6\xfb\xdd\xf8\xf8\xfb\xdf\xf0\xf6\xda\xf4"));
rcv($sock_c, $port_c, rtpm(9, $seq + 6, $ts + 960, $ssrc, "\xf9\xdf\xfb\xf9\xf2\xdd\xf9\xf9\xdf\xf9\xfb\xf6\xf8\xf8\xfb\xdc\xf8\xfb\xf8\xf5\xf8\xf5\xdf\xf4\xfb\xf8\xf8\xde\xf3\xdf\xf4\xfb\xfb\xf8\xfa\xfa\xfa\xf8\xf8\xfa\xde\xf1\xf8\xfa\xdc\xf3\xf5\xdf\xfa\xf8\xf1\xdf\xf6\xdf\xf4\xfb\xdc\xf6\xdf\xf4\xfb\xf8\xf8\xfa\xfa\xfa\xf8\xf8\xfa\xde\xf3\xf8\xf8\xde\xf3\xfa\xfa\xfa\xf5\xf8\xdc\xfa\xf8\xf5\xfa\xf8\xf5\xde\xfa\xf8\xf5\xf8\xfa\xfa\xde\xf2\xfa\xf8\xf8\xfa\xde\xf4\xf5\xf8\xfa\xde\xf2\xde\xf5\xf5\xf5\xde\xde\xef\xdf\xf8\xf6\xf4\xdf\xdf\xf2\xfb\xdf\xf4\xf6\xdf\xfb\xf9\xf4\xdd\xfb\xf6\xfb\xfb\xfb\xf8\xfb\xdc\xf6\xdf\xf4\xf6\xfb\xf8\xdf\xf6\xdc\xf8\xf6\xf8\xf8\xfa\xde\xf5\xf8\xfa\xf8\xf3\xdf\xfa"));
rcv($sock_c, $port_c, rtpm(9, $seq + 7, $ts + 1120, $ssrc, "\xf8\xf8\xde\xf8\xf1\xfa\xfa\xf5\xf8\xd9\xfa\xfa\xf8\xf5\xf5\xf8\xde\xf5\xfa\xd9\xf3\xf6\xfb\xdc\xf8\xf6\xda\xf0\xf9\xf6\xdd\xfb\xf9\xfb\xfb\xfb\xf6\xdf\xf4\xdf\xf6\xf6\xf9\xf6\xda\xf6\xfb\xf9\xf6\xfb\xf6\xdd\xfb\xdf\xf6\xf4\xf9\xf6\xda\xf6\xfb\xfb\xf6\xf9\xf9\xdd\xfb\xfb\xfb\xf6\xf8\xf6\xda\xf4\xfb\xdf\xf1\xf6\xdf\xf6\xf9\xf9\xdd\xfb\xf6\xf9\xf6\xdf\xf4\xfb\xdd\xf6\xf9\xf6\xdf\xf4\xfb\xdf\xf4\xfb\xf9\xf9\xfb\xfb\xfb\xf8\xf8\xfb\xdf\xf1\xf8\xf8\xfb\xdf\xf6\xdf\xf2\xf6\xf6\xfb\xdd\xdf\xdf\xf4\xf2\xf6\xfb\xdf\xf9\xda\xf9\xf6\xf3\xf7\xfb\xdf\xfb\xda\xf6\xf5\xf3\xdf\xfb\xf9\xdd\xdf\xf7\xf5\xf7\xfb\xfb\xdf\xfb\xdf\xf4\xf7\xf9\xf9\xdf\xf9"));
rcv($sock_c, $port_c, rtpm(9, $seq + 8, $ts + 1280, $ssrc, "\xdf\xf6\xf6\xf6\xf9\xdf\xfb\xdd\xf9\xf6\xf6\xf6\xdf\xf9\xdf\xfb\xf9\xf6\xf6\xf9\xfb\xdd\xfb\xfb\xfb\xf8\xf6\xfb\xdf\xf4\xf8\xdf\xf8\xf6\xf8\xfb\xdf\xf3\xfb\xdf\xf4\xf4\xfb\xda\xf4\xf8\xdf\xf6\xf6\xf6\xdf\xf9\xdf\xfb\xfb\xf6\xf4\xf8\xdf\xfb\xdf\xf6\xf6\xf6\xf8\xdf\xfb\xdc\xf8\xf6\xf6\xf8\xfb\xdc\xfb\xfa\xf8\xf5\xf8\xfa\xde\xf1\xf6\xdc\xf8\xf8\xfa\xde\xf3\xf4\xf8\xdf\xf8\xfb\xde\xf3\xf6\xf6\xfb\xdf\xf8\xdc\xfb\xf8\xf3\xf6\xf8\xfb\xda\xf8\xfb\xf8\xf4\xf6\xfb\xdc\xfb\xdf\xf4\xf6\xfb\xfb\xdf\xf4\xfb\xdc\xf5\xf6\xf8\xfb\xfb\xfa\xde\xf5\xf5\xfb\xfa\xf8\xf5\xfa\xdc\xf5\xf5\xfb\xde\xf1\xf4\xdf\xf8\xf8\xfb\xdf\xf3\xf6\xf8\xfb\xdf\xf6\xdf\xf6"));
rcv($sock_c, $port_c, rtpm(9, $seq + 9, $ts + 1440, $ssrc, "\xf6\xf8\xfb\xdc\xf8\xfb\xfb\xf5\xf6\xfb\xfb\xfb\xde\xf3\xfb\xdf\xf2\xf6\xfb\xda\xf8\xf8\xfb\xf8\xf4\xf6\xdc\xfb\xfb\xfb\xfb\xf8\xf5\xfb\xdc\xf5\xf6\xdf\xf6\xf4\xf6\xdc\xdf\xf6\xdf\xf4\xf6\xf6\xfb\xda\xf9\xdf\xf4\xf4\xf4\xf9\xdd\xdf\xfb\xfb\xf6\xf2\xf6\xdf\xdf\xfb\xdd\xf6\xf9\xf4\xf9\xdf\xf9\xfb\xfb\xf8\xf6\xf8\xfb\xdc\xf8\xfb\xfa\xf5\xf3\xdf\xf6\xfb\xfb\xdf\xf6\xfb\xdf\xf4\xf8\xfb\xdf\xf3\xf8\xfb\xfb\xf8\xf8\xde\xf5\xf8\xf8\xf8\xf8\xf8\xfa\xde\xf1\xfa\xfa\xfa\xf8\xf8\xde\xf3\xfa\xf8\xf8\xf8\xde\xf5\xf8\xf5\xfa\xf8\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa"));
rcv($sock_c, $port_c, rtpm(9, $seq + 10, $ts + 1600, $ssrc, "\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xde\xee\xd6\xef\xda\xf2\xda\xf9\xf1\xd9\xf3\xd6\xef\xd9\xde\xef\xd7\xf1\xdc\xf8\xfa\xda\xef\xd5\xf8\xf9\xfc\xfe\xdd\xf2\xd9\xfe\xfb\xfb\xdf\xf8\xf3\xd8\xdc\xf9\xf6\xdb\xf5\xf3\xd9\xdb\xf5\xf8\xdd\xf8\xf2\xdb\xdf\xf6\xfe\xdf\xf7\xf8\xfe\xd9\xf8\xf9\xfc\xf9\xf9\xfc\xdb\xf6\xfc\xfa\xfe\xfa\xfc\xdb\xf6\xfa\xf8\xfe\xfe\xfc\xda\xf6\xfa\xf8\xf8\xdf\xf5\xdc"));
rcv($sock_c, $port_c, rtpm(9, $seq + 11, $ts + 1760, $ssrc, "\xfb\xdf\xf1\xf8\xdf\xf8\xdf\xf6\xfb\xf8\xf7\xda\xfa\xde\xf6\xf8\xf6\xfa\xdd\xdd\xdb\xf3\xf6\xf6\xf6\xdf\xde\xdc\xfa\xf8\xf3\xf8\xfb\xd9\xdc\xfb\xdf\xf0\xf3\xfc\xdc\xdc\xfb\xda\xf5\xf2\xf8\xfe\xdc\xfb\xd9\xfb\xf5\xf6\xfb\xde\xfa\xdc\xfa\xf9\xf4\xf9\xfb\xdf\xf7\xdd\xf9\xf7\xfb\xdf\xf5\xf7\xda\xf9\xf6\xf9\xdf\xf6\xf7\xda\xf9\xf7\xdf\xf9\xf7\xf7\xda\xfa\xfb\xdf\xf6\xf6\xf6\xdc\xdb\xf6\xfb\xfb\xf7\xfa\xfb\xdb\xf6\xfa\xf9\xf9\xf9\xf9\xdd\xf9\xf7\xf7\xf7\xdf\xfb\xdd\xf9\xfb\xf5\xf5\xf9\xdf\xfb\xfb\xf9\xf9\xf6\xf9\xfb\xdf\xf6\xf9\xf9\xf9\xf9\xfb\xdf\xf4\xf6\xf9\xf9\xfb\xdf\xf8\xf8\xf6\xf8\xf6\xfb\xdf\xf8\xfb\xf8\xf5\xf6\xdf\xf6\xdf\xf6\xfb"));
rcv($sock_c, $port_c, rtpm(9, $seq + 12, $ts + 1920, $ssrc, "\xf6\xf6\xdf\xf6\xdc\xf8\xf8\xf6\xf8\xf8\xf8\xdf\xf8\xf8\xf5\xf5\xf8\xfa\xd9\xf5\xfb\xfb\xf5\xf6\xdc\xdf\xf4\xf8\xf8\xf8\xf3\xdf\xf8\xfb\xf8\xfa\xde\xef\xfb\xfb\xfb\xfb\xdf\xfb\xf6\xf6\xfb\xfb\xfb\xdc\xfa\xfa\xf5\xf3\xdf\xf4\xdf\xf8\xdf\xf6\xf2\xf8\xfb\xdf\xf6\xdc\xfb\xf6\xf6\xf8\xfb\xdf\xf8\xfb\xfb\xf5\xf4\xfb\xdc\xf8\xfa\xde\xf3\xf4\xf8\xdf\xf6\xf8\xdc\xfb\xf3\xf6\xdc\xf6\xf8\xdc\xdc\xf4\xf2\xdf\xf1\xf9\xdd\xdd\xdf\xf3\xf9\xf6\xfb\xdf\xf6\xdd\xf9\xfb\xfb\xf9\xf8\xf8\xfb\xdf\xf2\xfb\xdf\xf4\xfb\xdc\xfb\xf8\xf6\xfb\xf8\xf8\xdf\xf8\xfa\xf5\xf5\xf8\xfa\xdc\xf5\xf5\xf8\xfa\xde\xef\xf8\xf8\xdc\xfb\xfb\xfb\xf6\xf6\xfb\xdc\xfb\xdf\xf1\xf8"));
# push media
snd($sock_a, $port_b, rtp (0, 1002, 3320, 0x1234, "\x44" x 160));
rcv($sock_b, $port_a, rtpm(0, 1002, 3320, 0x1234, "\x44" x 160));
snd($sock_b, $port_a, rtp (0, 8001, 10160, 0x2d8c, "\x55" x 160));
rcv($sock_a, $port_b, rtpm(0, 8001, 10160, 0x2d8c, "\x55" x 160));
rcv($sock_c, $port_c, rtpm(9, $seq + 13, $ts + 2080, $ssrc, "\xfb\xf8\xf8\xfa\xdc\xf5\xf5\xf8\xf8\xf8\xf5\xfa\xd9\xf5\xf8\xfb\xde\xef\xf6\xdf\xf6\xdd\xfb\xfb\xf4\xf4\xfb\xdd\xfb\xfb\xf8\xf6\xf8\xf6\xdc\xfb\xfb\xf8\xf6\xdf\x28\x84\x20\x84\x20\x84\x04\xbd\x35\xb7\x9f\xf9\x5c\x8e\x16\xbb\x3b\xbd\xfc\x37\x8d\x27\x9c\x11\xba\x1f\xb8\x5c\x75\xf6\x59\xda\x7e\xdf\xfc\x78\x75\xfd\xdb\x5f\xdf\x7e\xff\xf9\x79\xdf\xdf\x5f\xfe\xdd\xff\xfa\x7e\xdd\xdd\xdf\xff\xde\xfd\xfc\xfd\xde\xdd\xde\xfe\xdc\xdd\xfd\x9f\x7f\xdb\xfd\xde\xde\x9f\xfe\xdc\xdb\xfd\xde\xdd\xdd\x9d\xde\xdd\xdd\xdd\xdd\xdd\xdd\xdd\x9c\xdc\xdb\xfd\xde\xdd\xdc\xdb\xfd\xdb\xfe\xdb\xfe\xdc\xd9\xde\xde\xdf\xfe\xda\xdf\xff\xda\xde\xde\xff\xdc\xd9\xff"));
rtpe_req('delete', 'delete');
($sock_a, $sock_b, $sock_c) = new_call([qw(198.51.100.4 4090)], [qw(198.51.100.4 4092)], [qw(198.51.100.4 4094)]);
($port_a) = offer('mixed sub manual PCM', { }, <<SDP);
v=0
o=- 1545997027 1 IN IP4 198.51.100.4
s=tester
t=0 0
m=audio 4090 RTP/AVP 0 8
c=IN IP4 198.51.100.4
a=sendrecv
--------------------------------------
v=0
o=- 1545997027 1 IN IP4 198.51.100.4
s=tester
t=0 0
m=audio PORT RTP/AVP 0 8
c=IN IP4 203.0.113.1
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=sendrecv
a=rtcp:PORT
SDP
($port_b) = answer('mixed sub manual PCM', { }, <<SDP);
v=0
o=- 1545997027 1 IN IP4 198.51.100.4
s=tester
t=0 0
m=audio 4092 RTP/AVP 0
c=IN IP4 198.51.100.4
a=sendrecv
--------------------------------------
v=0
o=- 1545997027 1 IN IP4 198.51.100.4
s=tester
t=0 0
m=audio PORT RTP/AVP 0
c=IN IP4 203.0.113.1
a=rtpmap:0 PCMU/8000
a=sendrecv
a=rtcp:PORT
SDP
($cid, $ft, $port_c) = create('mixed sub manual', {
'audio player' => 'force',
'call-id' => cid(),
}, <<SDP);
v=0
o=- SDP_VERSION IN IP4 203.0.113.1
s=RTPE_VERSION
t=0 0
m=audio PORT RTP/AVP 0 8
c=IN IP4 203.0.113.1
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=sendrecv
a=rtcp:PORT
SDP
is($cid, cid(), 'same call');
create_answer('mixed sub manual PCM', { 'from-tag' => $ft, 'audio player' => 'force', }, <<SDP);
v=0
o=- 111111111 22222222 IN IP4 203.0.113.1
s=22222222
t=0 0
m=audio 4094 RTP/AVP 0
c=IN IP4 198.51.100.4
SDP
# no media playback without subscriptions (XXX change this?)
rcv_no($sock_a);
rcv_no($sock_b);
rcv_no($sock_c);
snd($sock_a, $port_b, rtp (0, 1000, 3000, 0x1234, "\x11" x 160));
rcv($sock_b, $port_a, rtpm(0, 1000, 3000, 0x1234, "\x11" x 160));
rcv_no($sock_a);
rcv_no($sock_b);
rcv_no($sock_c);
snd($sock_b, $port_a, rtp (0, 8000, 10000, 0x2d8c, "\x22" x 160));
rcv($sock_a, $port_b, rtpm(0, 8000, 10000, 0x2d8c, "\x22" x 160));
rcv_no($sock_a);
rcv_no($sock_b);
rcv_no($sock_c);
snd($sock_c, $port_c, rtp (9, 8200, 10200, 0x2e54, "\x33" x 160));
rcv_no($sock_a);
rcv_no($sock_b);
rcv_no($sock_c);
# connect A side
rtpe_req('connect', 'mixed sub manual PCM', {
'from-tag' => ft(),
'to-tag' => $ft,
flags => [qw,directional,],
'audio player' => 'force',
});
# player not active yet (no media)
rcv_no($sock_a);
rcv_no($sock_b);
rcv_no($sock_c);
# add media to start player
snd($sock_a, $port_b, rtp (0, 1001, 3160, 0x1234, "\x11" x 160));
rcv($sock_b, $port_a, rtpm(0, 1001, 3160, 0x1234, "\x11" x 160));
rcv_no($sock_a);
rcv_no($sock_b);
($seq, $ts, $ssrc) = rcv($sock_c, $port_c, rtpm(0 | 0x80, -1, -1, -1, "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11"));
# untriggered media
rcv($sock_c, $port_c, rtpm(0, $seq + 1, $ts + 160, $ssrc, "\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"));
# catch up to the delay caused by rcv_no above
rcv($sock_c, $port_c, rtpm(0, $seq + 2, $ts + 320, $ssrc, "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"));
rcv($sock_c, $port_c, rtpm(0, $seq + 3, $ts + 480, $ssrc, "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"));
rcv($sock_c, $port_c, rtpm(0, $seq + 4, $ts + 640, $ssrc, "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"));
rcv($sock_c, $port_c, rtpm(0, $seq + 5, $ts + 800, $ssrc, "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"));
rcv($sock_c, $port_c, rtpm(0, $seq + 6, $ts + 960, $ssrc, "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"));
rcv($sock_c, $port_c, rtpm(0, $seq + 7, $ts + 1120, $ssrc, "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"));
rcv($sock_c, $port_c, rtpm(0, $seq + 8, $ts + 1280, $ssrc, "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"));
rcv($sock_c, $port_c, rtpm(0, $seq + 9, $ts + 1440, $ssrc, "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"));
rcv($sock_c, $port_c, rtpm(0, $seq + 10, $ts + 1600, $ssrc, "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"));
rcv($sock_c, $port_c, rtpm(0, $seq + 11, $ts + 1760, $ssrc, "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"));
rcv($sock_c, $port_c, rtpm(0, $seq + 12, $ts + 1920, $ssrc, "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"));
# push media
snd($sock_a, $port_b, rtp (0, 1002, 3320, 0x1234, "\x44" x 160));
rcv($sock_b, $port_a, rtpm(0, 1002, 3320, 0x1234, "\x44" x 160));
snd($sock_b, $port_a, rtp (0, 8001, 10160, 0x2d8c, "\x55" x 160));
rcv($sock_a, $port_b, rtpm(0, 8001, 10160, 0x2d8c, "\x55" x 160));
rcv($sock_c, $port_c, rtpm(0, $seq + 13, $ts + 2080, $ssrc, "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44"));
snd($sock_a, $port_b, rtp (0, 1003, 3480, 0x1234, "\x77" x 160));
rcv($sock_b, $port_a, rtpm(0, 1003, 3480, 0x1234, "\x77" x 160));
snd($sock_b, $port_a, rtp (0, 8002, 10320, 0x2d8c, "\x99" x 160));
rcv($sock_a, $port_b, rtpm(0, 8002, 10320, 0x2d8c, "\x99" x 160));
rcv($sock_c, $port_c, rtpm(0, $seq + 14, $ts + 2240, $ssrc, "\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77"));
# connect in B side
rtpe_req('connect', 'mixed sub manual PCM', {
'from-tag' => tt(),
'to-tag' => $ft,
flags => [qw,directional,],
'audio player' => 'force',
});
snd($sock_a, $port_b, rtp (0, 1004, 3640, 0x1234, "\xbb" x 160));
rcv($sock_b, $port_a, rtpm(0, 1004, 3640, 0x1234, "\xbb" x 160));
snd($sock_b, $port_a, rtp (0, 8003, 10480, 0x2d8c, "\x99" x 160));
rcv($sock_a, $port_b, rtpm(0, 8003, 10480, 0x2d8c, "\x99" x 160));
rcv($sock_c, $port_c, rtpm(0, $seq + 15, $ts + 2400, $ssrc, "\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x77\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94"));
snd($sock_a, $port_b, rtp (0, 1005, 3800, 0x1234, "\xcc" x 160));
rcv($sock_b, $port_a, rtpm(0, 1005, 3800, 0x1234, "\xcc" x 160));
snd($sock_b, $port_a, rtp (0, 8004, 10640, 0x2d8c, "\x99" x 160));
rcv($sock_a, $port_b, rtpm(0, 8004, 10640, 0x2d8c, "\x99" x 160));
rcv($sock_c, $port_c, rtpm(0, $seq + 16, $ts + 2560, $ssrc, "\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x94\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97"));
snd($sock_a, $port_b, rtp (0, 1006, 3960, 0x1234, "\x44" x 160));
rcv($sock_b, $port_a, rtpm(0, 1006, 3960, 0x1234, "\x44" x 160));
snd($sock_b, $port_a, rtp (0, 8005, 10800, 0x2d8c, "\x99" x 160));
rcv($sock_a, $port_b, rtpm(0, 8005, 10800, 0x2d8c, "\x99" x 160));
rcv($sock_c, $port_c, rtpm(0, $seq + 17, $ts + 2720, $ssrc, "\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c"));
snd($sock_a, $port_b, rtp (0, 1007, 4120, 0x1234, "\x11" x 160));
rcv($sock_b, $port_a, rtpm(0, 1007, 4120, 0x1234, "\x11" x 160));
snd($sock_b, $port_a, rtp (0, 8006, 10960, 0x2d8c, "\x99" x 160));
rcv($sock_a, $port_b, rtpm(0, 8006, 10960, 0x2d8c, "\x99" x 160));
rcv($sock_c, $port_c, rtpm(0, $seq + 18, $ts + 2880, $ssrc, "\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x9c\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f"));
rtpe_req('delete', 'delete');
($sock_a, $sock_b) = new_call([qw(198.51.100.10 4070)], [qw(198.51.100.10 4072)]);
($port_a) = offer('extended connect w "all" bidirectional', { }, <<SDP);

Loading…
Cancel
Save