|
|
|
@ -3693,6 +3693,169 @@ SDP |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# media playback after a delete |
|
|
|
|
|
|
|
($sock_a, $sock_b) = new_call([qw(198.51.100.1 3020)], [qw(198.51.100.3 3022)]); |
|
|
|
|
|
|
|
offer('media playback after delete', { ICE => 'remove', replace => ['origin'], |
|
|
|
'rtcp-mux' => ['demux'], 'via-branch' => 'xxxx', flags => ['strict-source', 'record-call'], |
|
|
|
'transport-protocol' => 'RTP/AVP' }, <<SDP); |
|
|
|
v=0 |
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.1 |
|
|
|
s=tester |
|
|
|
t=0 0 |
|
|
|
m=audio 3020 RTP/AVP 98 97 8 0 3 101 |
|
|
|
c=IN IP4 198.51.100.1 |
|
|
|
a=rtpmap:98 speex/16000 |
|
|
|
a=rtpmap:97 speex/8000 |
|
|
|
a=rtpmap:8 PCMA/8000 |
|
|
|
a=rtpmap:0 PCMU/8000 |
|
|
|
a=rtpmap:3 GSM/8000 |
|
|
|
a=rtpmap:101 telephone-event/8000 |
|
|
|
a=fmtp:101 0-15 |
|
|
|
a=direction:both |
|
|
|
a=sendrecv |
|
|
|
a=ptime:20 |
|
|
|
---------------------------------- |
|
|
|
v=0 |
|
|
|
o=- 1545997027 1 IN IP4 203.0.113.1 |
|
|
|
s=tester |
|
|
|
t=0 0 |
|
|
|
m=audio PORT RTP/AVP 98 97 8 0 3 101 |
|
|
|
c=IN IP4 203.0.113.1 |
|
|
|
a=direction:both |
|
|
|
a=rtpmap:98 speex/16000 |
|
|
|
a=rtpmap:97 speex/8000 |
|
|
|
a=rtpmap:8 PCMA/8000 |
|
|
|
a=rtpmap:0 PCMU/8000 |
|
|
|
a=rtpmap:3 GSM/8000 |
|
|
|
a=rtpmap:101 telephone-event/8000 |
|
|
|
a=fmtp:101 0-15 |
|
|
|
a=sendrecv |
|
|
|
a=rtcp:PORT |
|
|
|
a=ptime:20 |
|
|
|
SDP |
|
|
|
|
|
|
|
answer('media playback after delete', { replace => ['origin'], 'transport-protocol' => 'RTP/AVP', |
|
|
|
'rtcp-mux' => ['demux'], 'via-branch' => 'xxxx' }, <<SDP); |
|
|
|
v=0 |
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.3 |
|
|
|
s=tester |
|
|
|
t=0 0 |
|
|
|
m=audio 3022 RTP/AVP 8 0 3 101 |
|
|
|
c=IN IP4 198.51.100.3 |
|
|
|
a=rtpmap:8 PCMA/8000 |
|
|
|
a=rtpmap:0 PCMU/8000 |
|
|
|
a=rtpmap:3 GSM/8000 |
|
|
|
a=rtpmap:101 telephone-event/8000 |
|
|
|
a=fmtp:101 0-15 |
|
|
|
a=direction:both |
|
|
|
a=sendrecv |
|
|
|
-------------------------------------- |
|
|
|
v=0 |
|
|
|
o=- 1545997027 1 IN IP4 203.0.113.1 |
|
|
|
s=tester |
|
|
|
t=0 0 |
|
|
|
m=audio PORT RTP/AVP 8 0 3 101 |
|
|
|
c=IN IP4 203.0.113.1 |
|
|
|
a=direction:both |
|
|
|
a=rtpmap:8 PCMA/8000 |
|
|
|
a=rtpmap:0 PCMU/8000 |
|
|
|
a=rtpmap:3 GSM/8000 |
|
|
|
a=rtpmap:101 telephone-event/8000 |
|
|
|
a=fmtp:101 0-15 |
|
|
|
a=sendrecv |
|
|
|
a=rtcp:PORT |
|
|
|
a=ptime:20 |
|
|
|
SDP |
|
|
|
|
|
|
|
rtpe_req('delete', 'media playback after delete', { 'from-tag' => $ft }); |
|
|
|
|
|
|
|
# new to-tag |
|
|
|
$tt = $tag_iter++ . "-test-totag"; |
|
|
|
|
|
|
|
offer('media playback after delete', { ICE => 'remove', replace => ['origin'], |
|
|
|
'transport-protocol' => 'transparent', flags => ['strict-source', 'record-call'], |
|
|
|
'rtcp-mux' => ['demux'], 'via-branch' => 'xxxx' }, <<SDP); |
|
|
|
v=0 |
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.1 |
|
|
|
s=tester |
|
|
|
t=0 0 |
|
|
|
m=audio 3020 RTP/AVP 98 97 8 0 3 101 |
|
|
|
c=IN IP4 198.51.100.1 |
|
|
|
a=rtpmap:98 speex/16000 |
|
|
|
a=rtpmap:97 speex/8000 |
|
|
|
a=rtpmap:8 PCMA/8000 |
|
|
|
a=rtpmap:0 PCMU/8000 |
|
|
|
a=rtpmap:3 GSM/8000 |
|
|
|
a=rtpmap:101 telephone-event/8000 |
|
|
|
a=fmtp:101 0-15 |
|
|
|
a=direction:both |
|
|
|
a=sendrecv |
|
|
|
a=ptime:20 |
|
|
|
---------------------------------- |
|
|
|
v=0 |
|
|
|
o=- 1545997027 1 IN IP4 203.0.113.1 |
|
|
|
s=tester |
|
|
|
t=0 0 |
|
|
|
m=audio PORT RTP/AVP 98 97 8 0 3 101 |
|
|
|
c=IN IP4 203.0.113.1 |
|
|
|
a=direction:both |
|
|
|
a=rtpmap:98 speex/16000 |
|
|
|
a=rtpmap:97 speex/8000 |
|
|
|
a=rtpmap:8 PCMA/8000 |
|
|
|
a=rtpmap:0 PCMU/8000 |
|
|
|
a=rtpmap:3 GSM/8000 |
|
|
|
a=rtpmap:101 telephone-event/8000 |
|
|
|
a=fmtp:101 0-15 |
|
|
|
a=sendrecv |
|
|
|
a=rtcp:PORT |
|
|
|
a=ptime:20 |
|
|
|
SDP |
|
|
|
|
|
|
|
answer('media playback after delete', { replace => ['origin'], 'transport-protocol' => 'RTP/AVP', |
|
|
|
'rtcp-mux' => ['demux'], 'via-branch' => 'xxxx' }, <<SDP); |
|
|
|
v=0 |
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.3 |
|
|
|
s=tester |
|
|
|
t=0 0 |
|
|
|
m=audio 3022 RTP/AVP 8 0 101 |
|
|
|
c=IN IP4 198.51.100.3 |
|
|
|
a=rtpmap:101 telephone-event/8000 |
|
|
|
a=fmtp:101 0-16 |
|
|
|
a=direction:both |
|
|
|
a=sendrecv |
|
|
|
-------------------------------------- |
|
|
|
v=0 |
|
|
|
o=- 1545997027 1 IN IP4 203.0.113.1 |
|
|
|
s=tester |
|
|
|
t=0 0 |
|
|
|
m=audio PORT RTP/AVP 8 0 101 |
|
|
|
c=IN IP4 203.0.113.1 |
|
|
|
a=direction:both |
|
|
|
a=rtpmap:8 PCMA/8000 |
|
|
|
a=rtpmap:0 PCMU/8000 |
|
|
|
a=rtpmap:101 telephone-event/8000 |
|
|
|
a=fmtp:101 0-16 |
|
|
|
a=sendrecv |
|
|
|
a=rtcp:PORT |
|
|
|
a=ptime:20 |
|
|
|
SDP |
|
|
|
|
|
|
|
#rtpe_req('block media', 'media playback after delete', { }); |
|
|
|
|
|
|
|
$resp = rtpe_req('play media', 'media playback after delete', { 'from-tag' => $tt, 'to-tag' => $tt, |
|
|
|
blob => $wav_file }); |
|
|
|
is $resp->{duration}, 100, 'media duration'; |
|
|
|
|
|
|
|
($seq, $ts, $ssrc) = rcv($sock_b, -1, rtpm(8 | 0x80, -1, -1, -1, $pcma_1)); |
|
|
|
rcv($sock_b, -1, rtpm(8, $seq + 1, $ts + 160 * 1, $ssrc, $pcma_2)); |
|
|
|
rcv($sock_b, -1, rtpm(8, $seq + 2, $ts + 160 * 2, $ssrc, $pcma_3)); |
|
|
|
rcv($sock_b, -1, rtpm(8, $seq + 3, $ts + 160 * 3, $ssrc, $pcma_4)); |
|
|
|
rcv($sock_b, -1, rtpm(8, $seq + 4, $ts + 160 * 4, $ssrc, $pcma_5)); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
END { |
|
|
|
if ($rtpe_pid) { |
|
|
|
|