|
|
#!/usr/bin/perl
|
|
|
|
|
|
use strict;
|
|
|
use warnings;
|
|
|
use NGCP::Rtpengine::Test;
|
|
|
use NGCP::Rtpclient::SRTP;
|
|
|
use NGCP::Rtpengine::AutoTest;
|
|
|
use Test::More;
|
|
|
use IPC::Open3;
|
|
|
|
|
|
|
|
|
$ENV{RTPENGINE_EXTENDED_TESTS} or exit();
|
|
|
$ENV{RTPENGINE_3GPP_EVS_LIB} or exit();
|
|
|
|
|
|
|
|
|
autotest_start(qw(--config-file=none -t -1 -i 203.0.113.1 -i 2001:db8:4321::1
|
|
|
-n 2223 -f -L 7 -E), "--evs-lib-path=$ENV{RTPENGINE_3GPP_EVS_LIB}")
|
|
|
or die;
|
|
|
|
|
|
|
|
|
my ($sock_a, $sock_b, $port_a, $port_b, $ssrc, $ssrc_b, $resp, $srtp_ctx_a, $srtp_ctx_b, @ret1, @ret2);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
new_call;
|
|
|
|
|
|
offer('EVS codec accept basic', { codec => { accept => ['EVS'] } }, <<SDP);
|
|
|
v=0
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.4
|
|
|
s=tester
|
|
|
t=0 0
|
|
|
m=audio 4020 RTP/AVP 96 8 0
|
|
|
c=IN IP4 198.51.100.4
|
|
|
a=sendrecv
|
|
|
a=rtpmap:96 EVS/16000
|
|
|
a=fmtp:96 dtx=0;dtx-recv=0
|
|
|
--------------------------------------
|
|
|
v=0
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.4
|
|
|
s=tester
|
|
|
t=0 0
|
|
|
m=audio PORT RTP/AVP 96 8 0
|
|
|
c=IN IP4 203.0.113.1
|
|
|
a=rtpmap:96 EVS/16000
|
|
|
a=fmtp:96 dtx=0; dtx-recv=0
|
|
|
a=rtpmap:8 PCMA/8000
|
|
|
a=rtpmap:0 PCMU/8000
|
|
|
a=sendrecv
|
|
|
a=rtcp:PORT
|
|
|
SDP
|
|
|
|
|
|
answer('EVS codec accept basic', { }, <<SDP);
|
|
|
v=0
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.4
|
|
|
s=tester
|
|
|
t=0 0
|
|
|
m=audio 4022 RTP/AVP 8
|
|
|
c=IN IP4 198.51.100.4
|
|
|
----------------------------------
|
|
|
v=0
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.4
|
|
|
s=tester
|
|
|
t=0 0
|
|
|
m=audio PORT RTP/AVP 96
|
|
|
c=IN IP4 203.0.113.1
|
|
|
a=rtpmap:96 EVS/16000
|
|
|
a=fmtp:96 dtx=0; dtx-recv=0
|
|
|
a=sendrecv
|
|
|
a=rtcp:PORT
|
|
|
SDP
|
|
|
|
|
|
|
|
|
|
|
|
new_call;
|
|
|
|
|
|
offer('EVS codec accept multi', { codec => { accept => ['EVS'] } }, <<SDP);
|
|
|
v=0
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.4
|
|
|
s=tester
|
|
|
t=0 0
|
|
|
m=audio 4020 RTP/AVP 96 97 8 0
|
|
|
c=IN IP4 198.51.100.4
|
|
|
a=sendrecv
|
|
|
a=rtpmap:96 EVS/16000
|
|
|
a=fmtp:96 dtx=0;dtx-recv=0
|
|
|
a=rtpmap:97 EVS/16000
|
|
|
a=fmtp:97 hf-only=1; evs-mode-switch=1
|
|
|
--------------------------------------
|
|
|
v=0
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.4
|
|
|
s=tester
|
|
|
t=0 0
|
|
|
m=audio PORT RTP/AVP 96 97 8 0
|
|
|
c=IN IP4 203.0.113.1
|
|
|
a=rtpmap:96 EVS/16000
|
|
|
a=fmtp:96 dtx=0; dtx-recv=0
|
|
|
a=rtpmap:97 EVS/16000
|
|
|
a=fmtp:97 hf-only=1; evs-mode-switch=1
|
|
|
a=rtpmap:8 PCMA/8000
|
|
|
a=rtpmap:0 PCMU/8000
|
|
|
a=sendrecv
|
|
|
a=rtcp:PORT
|
|
|
SDP
|
|
|
|
|
|
answer('EVS codec accept multi', { }, <<SDP);
|
|
|
v=0
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.4
|
|
|
s=tester
|
|
|
t=0 0
|
|
|
m=audio 4022 RTP/AVP 8
|
|
|
c=IN IP4 198.51.100.4
|
|
|
----------------------------------
|
|
|
v=0
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.4
|
|
|
s=tester
|
|
|
t=0 0
|
|
|
m=audio PORT RTP/AVP 96
|
|
|
c=IN IP4 203.0.113.1
|
|
|
a=rtpmap:96 EVS/16000
|
|
|
a=fmtp:96 dtx=0; dtx-recv=0
|
|
|
a=sendrecv
|
|
|
a=rtcp:PORT
|
|
|
SDP
|
|
|
|
|
|
|
|
|
|
|
|
new_call;
|
|
|
|
|
|
offer('EVS codec accept multi select', { codec => { accept => ['EVS/16000/1///evs-mode-switch=1;hf-only=1'] } }, <<SDP);
|
|
|
v=0
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.4
|
|
|
s=tester
|
|
|
t=0 0
|
|
|
m=audio 4020 RTP/AVP 96 97 8 0
|
|
|
c=IN IP4 198.51.100.4
|
|
|
a=sendrecv
|
|
|
a=rtpmap:96 EVS/16000
|
|
|
a=fmtp:96 dtx=0;dtx-recv=0
|
|
|
a=rtpmap:97 EVS/16000
|
|
|
a=fmtp:97 hf-only=1; evs-mode-switch=1
|
|
|
--------------------------------------
|
|
|
v=0
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.4
|
|
|
s=tester
|
|
|
t=0 0
|
|
|
m=audio PORT RTP/AVP 96 97 8 0
|
|
|
c=IN IP4 203.0.113.1
|
|
|
a=rtpmap:96 EVS/16000
|
|
|
a=fmtp:96 dtx=0; dtx-recv=0
|
|
|
a=rtpmap:97 EVS/16000
|
|
|
a=fmtp:97 hf-only=1; evs-mode-switch=1
|
|
|
a=rtpmap:8 PCMA/8000
|
|
|
a=rtpmap:0 PCMU/8000
|
|
|
a=sendrecv
|
|
|
a=rtcp:PORT
|
|
|
SDP
|
|
|
|
|
|
answer('EVS codec accept multi select', { }, <<SDP);
|
|
|
v=0
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.4
|
|
|
s=tester
|
|
|
t=0 0
|
|
|
m=audio 4022 RTP/AVP 8
|
|
|
c=IN IP4 198.51.100.4
|
|
|
----------------------------------
|
|
|
v=0
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.4
|
|
|
s=tester
|
|
|
t=0 0
|
|
|
m=audio PORT RTP/AVP 97
|
|
|
c=IN IP4 203.0.113.1
|
|
|
a=rtpmap:97 EVS/16000
|
|
|
a=fmtp:97 hf-only=1; evs-mode-switch=1
|
|
|
a=sendrecv
|
|
|
a=rtcp:PORT
|
|
|
SDP
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
new_call;
|
|
|
|
|
|
offer('EVS codec accept select compat control', { codec => { accept => ['EVS/16000/1///hf-only=1'] } }, <<SDP);
|
|
|
v=0
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.4
|
|
|
s=tester
|
|
|
t=0 0
|
|
|
m=audio 4020 RTP/AVP 96 97 8 0
|
|
|
c=IN IP4 198.51.100.4
|
|
|
a=sendrecv
|
|
|
a=rtpmap:96 EVS/16000
|
|
|
a=fmtp:96 hf-only=1
|
|
|
a=rtpmap:97 EVS/16000
|
|
|
a=fmtp:97 hf-only=1; br=24-96
|
|
|
--------------------------------------
|
|
|
v=0
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.4
|
|
|
s=tester
|
|
|
t=0 0
|
|
|
m=audio PORT RTP/AVP 96 97 8 0
|
|
|
c=IN IP4 203.0.113.1
|
|
|
a=rtpmap:96 EVS/16000
|
|
|
a=fmtp:96 hf-only=1
|
|
|
a=rtpmap:97 EVS/16000
|
|
|
a=fmtp:97 hf-only=1; br=24-96
|
|
|
a=rtpmap:8 PCMA/8000
|
|
|
a=rtpmap:0 PCMU/8000
|
|
|
a=sendrecv
|
|
|
a=rtcp:PORT
|
|
|
SDP
|
|
|
|
|
|
answer('EVS codec accept select compat control', { }, <<SDP);
|
|
|
v=0
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.4
|
|
|
s=tester
|
|
|
t=0 0
|
|
|
m=audio 4022 RTP/AVP 8
|
|
|
c=IN IP4 198.51.100.4
|
|
|
----------------------------------
|
|
|
v=0
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.4
|
|
|
s=tester
|
|
|
t=0 0
|
|
|
m=audio PORT RTP/AVP 96
|
|
|
c=IN IP4 203.0.113.1
|
|
|
a=rtpmap:96 EVS/16000
|
|
|
a=fmtp:96 hf-only=1
|
|
|
a=sendrecv
|
|
|
a=rtcp:PORT
|
|
|
SDP
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
new_call;
|
|
|
|
|
|
offer('EVS codec accept select compat 1', { codec => { accept => ['EVS/16000/1///hf-only=1'] } }, <<SDP);
|
|
|
v=0
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.4
|
|
|
s=tester
|
|
|
t=0 0
|
|
|
m=audio 4020 RTP/AVP 96 97 8 0
|
|
|
c=IN IP4 198.51.100.4
|
|
|
a=sendrecv
|
|
|
a=rtpmap:96 EVS/16000
|
|
|
a=fmtp:96 hf-only=1; br=24-96
|
|
|
a=rtpmap:97 EVS/16000
|
|
|
a=fmtp:97 hf-only=1
|
|
|
--------------------------------------
|
|
|
v=0
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.4
|
|
|
s=tester
|
|
|
t=0 0
|
|
|
m=audio PORT RTP/AVP 96 97 8 0
|
|
|
c=IN IP4 203.0.113.1
|
|
|
a=rtpmap:96 EVS/16000
|
|
|
a=fmtp:96 hf-only=1; br=24-96
|
|
|
a=rtpmap:97 EVS/16000
|
|
|
a=fmtp:97 hf-only=1
|
|
|
a=rtpmap:8 PCMA/8000
|
|
|
a=rtpmap:0 PCMU/8000
|
|
|
a=sendrecv
|
|
|
a=rtcp:PORT
|
|
|
SDP
|
|
|
|
|
|
answer('EVS codec accept select compat 1', { }, <<SDP);
|
|
|
v=0
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.4
|
|
|
s=tester
|
|
|
t=0 0
|
|
|
m=audio 4022 RTP/AVP 8
|
|
|
c=IN IP4 198.51.100.4
|
|
|
----------------------------------
|
|
|
v=0
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.4
|
|
|
s=tester
|
|
|
t=0 0
|
|
|
m=audio PORT RTP/AVP 96
|
|
|
c=IN IP4 203.0.113.1
|
|
|
a=rtpmap:96 EVS/16000
|
|
|
a=fmtp:96 hf-only=1; br=24-96
|
|
|
a=sendrecv
|
|
|
a=rtcp:PORT
|
|
|
SDP
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
new_call;
|
|
|
|
|
|
offer('EVS codec accept select compat 2', { codec => { accept => ['EVS/16000/1///hf-only=1'] } }, <<SDP);
|
|
|
v=0
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.4
|
|
|
s=tester
|
|
|
t=0 0
|
|
|
m=audio 4020 RTP/AVP 96 97 8 0
|
|
|
c=IN IP4 198.51.100.4
|
|
|
a=sendrecv
|
|
|
a=rtpmap:96 EVS/16000
|
|
|
a=fmtp:96 hf-only=1; br=24-96
|
|
|
a=rtpmap:97 EVS/16000
|
|
|
a=fmtp:97 hf-only=1; br=8-32
|
|
|
--------------------------------------
|
|
|
v=0
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.4
|
|
|
s=tester
|
|
|
t=0 0
|
|
|
m=audio PORT RTP/AVP 96 97 8 0
|
|
|
c=IN IP4 203.0.113.1
|
|
|
a=rtpmap:96 EVS/16000
|
|
|
a=fmtp:96 hf-only=1; br=24-96
|
|
|
a=rtpmap:97 EVS/16000
|
|
|
a=fmtp:97 hf-only=1; br=8-32
|
|
|
a=rtpmap:8 PCMA/8000
|
|
|
a=rtpmap:0 PCMU/8000
|
|
|
a=sendrecv
|
|
|
a=rtcp:PORT
|
|
|
SDP
|
|
|
|
|
|
answer('EVS codec accept select compat 2', { }, <<SDP);
|
|
|
v=0
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.4
|
|
|
s=tester
|
|
|
t=0 0
|
|
|
m=audio 4022 RTP/AVP 8
|
|
|
c=IN IP4 198.51.100.4
|
|
|
----------------------------------
|
|
|
v=0
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.4
|
|
|
s=tester
|
|
|
t=0 0
|
|
|
m=audio PORT RTP/AVP 96
|
|
|
c=IN IP4 203.0.113.1
|
|
|
a=rtpmap:96 EVS/16000
|
|
|
a=fmtp:96 hf-only=1; br=24-96
|
|
|
a=sendrecv
|
|
|
a=rtcp:PORT
|
|
|
SDP
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
new_call;
|
|
|
|
|
|
offer('EVS codec accept select compat 3', { codec => { accept => ['EVS/16000/1///hf-only=1;br=8-32'] } }, <<SDP);
|
|
|
v=0
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.4
|
|
|
s=tester
|
|
|
t=0 0
|
|
|
m=audio 4020 RTP/AVP 96 97 8 0
|
|
|
c=IN IP4 198.51.100.4
|
|
|
a=sendrecv
|
|
|
a=rtpmap:96 EVS/16000
|
|
|
a=fmtp:96 hf-only=1; br=24-96
|
|
|
a=rtpmap:97 EVS/16000
|
|
|
a=fmtp:97 hf-only=1; br=8-32
|
|
|
--------------------------------------
|
|
|
v=0
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.4
|
|
|
s=tester
|
|
|
t=0 0
|
|
|
m=audio PORT RTP/AVP 96 97 8 0
|
|
|
c=IN IP4 203.0.113.1
|
|
|
a=rtpmap:96 EVS/16000
|
|
|
a=fmtp:96 hf-only=1; br=24-96
|
|
|
a=rtpmap:97 EVS/16000
|
|
|
a=fmtp:97 hf-only=1; br=8-32
|
|
|
a=rtpmap:8 PCMA/8000
|
|
|
a=rtpmap:0 PCMU/8000
|
|
|
a=sendrecv
|
|
|
a=rtcp:PORT
|
|
|
SDP
|
|
|
|
|
|
answer('EVS codec accept select compat 3', { }, <<SDP);
|
|
|
v=0
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.4
|
|
|
s=tester
|
|
|
t=0 0
|
|
|
m=audio 4022 RTP/AVP 8
|
|
|
c=IN IP4 198.51.100.4
|
|
|
----------------------------------
|
|
|
v=0
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.4
|
|
|
s=tester
|
|
|
t=0 0
|
|
|
m=audio PORT RTP/AVP 97
|
|
|
c=IN IP4 203.0.113.1
|
|
|
a=rtpmap:97 EVS/16000
|
|
|
a=fmtp:97 hf-only=1; br=8-32
|
|
|
a=sendrecv
|
|
|
a=rtcp:PORT
|
|
|
SDP
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
new_call;
|
|
|
|
|
|
offer('EVS codec accept select compat 4', { codec => { accept => ['EVS/16000/1///hf-only=1;br=6-50'] } }, <<SDP);
|
|
|
v=0
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.4
|
|
|
s=tester
|
|
|
t=0 0
|
|
|
m=audio 4020 RTP/AVP 96 97 8 0
|
|
|
c=IN IP4 198.51.100.4
|
|
|
a=sendrecv
|
|
|
a=rtpmap:96 EVS/16000
|
|
|
a=fmtp:96 hf-only=1; br=24-96
|
|
|
a=rtpmap:97 EVS/16000
|
|
|
a=fmtp:97 hf-only=1; br=8-32
|
|
|
--------------------------------------
|
|
|
v=0
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.4
|
|
|
s=tester
|
|
|
t=0 0
|
|
|
m=audio PORT RTP/AVP 96 97 8 0
|
|
|
c=IN IP4 203.0.113.1
|
|
|
a=rtpmap:96 EVS/16000
|
|
|
a=fmtp:96 hf-only=1; br=24-96
|
|
|
a=rtpmap:97 EVS/16000
|
|
|
a=fmtp:97 hf-only=1; br=8-32
|
|
|
a=rtpmap:8 PCMA/8000
|
|
|
a=rtpmap:0 PCMU/8000
|
|
|
a=sendrecv
|
|
|
a=rtcp:PORT
|
|
|
SDP
|
|
|
|
|
|
answer('EVS codec accept select compat 4', { }, <<SDP);
|
|
|
v=0
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.4
|
|
|
s=tester
|
|
|
t=0 0
|
|
|
m=audio 4022 RTP/AVP 8
|
|
|
c=IN IP4 198.51.100.4
|
|
|
----------------------------------
|
|
|
v=0
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.4
|
|
|
s=tester
|
|
|
t=0 0
|
|
|
m=audio PORT RTP/AVP 97
|
|
|
c=IN IP4 203.0.113.1
|
|
|
a=rtpmap:97 EVS/16000
|
|
|
a=fmtp:97 hf-only=1; br=8-32
|
|
|
a=sendrecv
|
|
|
a=rtcp:PORT
|
|
|
SDP
|
|
|
|
|
|
|
|
|
|
|
|
new_call;
|
|
|
|
|
|
offer('EVS codec accept select compat 5', { codec => { accept => ['EVS/16000/1///evs-mode-switch=1;mode-set=3,4,5,6'] } }, <<SDP);
|
|
|
v=0
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.4
|
|
|
s=tester
|
|
|
t=0 0
|
|
|
m=audio 4020 RTP/AVP 96 97 98 99 8 0
|
|
|
c=IN IP4 198.51.100.4
|
|
|
a=sendrecv
|
|
|
a=rtpmap:96 EVS/16000
|
|
|
a=fmtp:96 hf-only=1; br=24-96
|
|
|
a=rtpmap:97 EVS/16000
|
|
|
a=fmtp:97 hf-only=1; br=8-32
|
|
|
a=rtpmap:98 EVS/16000
|
|
|
a=fmtp:98 evs-mode-switch=1; mode-set=5,6,7
|
|
|
a=rtpmap:99 EVS/16000
|
|
|
a=fmtp:99 evs-mode-switch=1; mode-set=4,5
|
|
|
--------------------------------------
|
|
|
v=0
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.4
|
|
|
s=tester
|
|
|
t=0 0
|
|
|
m=audio PORT RTP/AVP 96 97 98 99 8 0
|
|
|
c=IN IP4 203.0.113.1
|
|
|
a=rtpmap:96 EVS/16000
|
|
|
a=fmtp:96 hf-only=1; br=24-96
|
|
|
a=rtpmap:97 EVS/16000
|
|
|
a=fmtp:97 hf-only=1; br=8-32
|
|
|
a=rtpmap:98 EVS/16000
|
|
|
a=fmtp:98 evs-mode-switch=1; mode-set=5,6,7
|
|
|
a=rtpmap:99 EVS/16000
|
|
|
a=fmtp:99 evs-mode-switch=1; mode-set=4,5
|
|
|
a=rtpmap:8 PCMA/8000
|
|
|
a=rtpmap:0 PCMU/8000
|
|
|
a=sendrecv
|
|
|
a=rtcp:PORT
|
|
|
SDP
|
|
|
|
|
|
answer('EVS codec accept select compat 5', { }, <<SDP);
|
|
|
v=0
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.4
|
|
|
s=tester
|
|
|
t=0 0
|
|
|
m=audio 4022 RTP/AVP 8
|
|
|
c=IN IP4 198.51.100.4
|
|
|
----------------------------------
|
|
|
v=0
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.4
|
|
|
s=tester
|
|
|
t=0 0
|
|
|
m=audio PORT RTP/AVP 99
|
|
|
c=IN IP4 203.0.113.1
|
|
|
a=rtpmap:99 EVS/16000
|
|
|
a=fmtp:99 evs-mode-switch=1; mode-set=4,5
|
|
|
a=sendrecv
|
|
|
a=rtcp:PORT
|
|
|
SDP
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
new_call;
|
|
|
|
|
|
offer('EVS negotiate basic', { codec => { transcode => ['PCMA'] } }, <<SDP);
|
|
|
v=0
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.4
|
|
|
s=tester
|
|
|
t=0 0
|
|
|
m=audio 4020 RTP/AVP 96
|
|
|
c=IN IP4 198.51.100.4
|
|
|
a=sendrecv
|
|
|
a=rtpmap:96 EVS/16000
|
|
|
a=fmtp:96 dtx=0;dtx-recv=0
|
|
|
--------------------------------------
|
|
|
v=0
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.4
|
|
|
s=tester
|
|
|
t=0 0
|
|
|
m=audio PORT RTP/AVP 96 8
|
|
|
c=IN IP4 203.0.113.1
|
|
|
a=rtpmap:96 EVS/16000
|
|
|
a=fmtp:96 dtx=0; dtx-recv=0
|
|
|
a=rtpmap:8 PCMA/8000
|
|
|
a=sendrecv
|
|
|
a=rtcp:PORT
|
|
|
SDP
|
|
|
|
|
|
answer('EVS negotiate basic', { }, <<SDP);
|
|
|
v=0
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.4
|
|
|
s=tester
|
|
|
t=0 0
|
|
|
m=audio 4022 RTP/AVP 8
|
|
|
c=IN IP4 198.51.100.4
|
|
|
----------------------------------
|
|
|
v=0
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.4
|
|
|
s=tester
|
|
|
t=0 0
|
|
|
m=audio PORT RTP/AVP 96
|
|
|
c=IN IP4 203.0.113.1
|
|
|
a=rtpmap:96 EVS/16000
|
|
|
a=fmtp:96 dtx=0; dtx-recv=0
|
|
|
a=sendrecv
|
|
|
a=rtcp:PORT
|
|
|
SDP
|
|
|
|
|
|
|
|
|
|
|
|
new_call;
|
|
|
|
|
|
offer('EVS negotiate br-send/recv', { codec => { transcode => ['PCMA'] } }, <<SDP);
|
|
|
v=0
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.4
|
|
|
s=tester
|
|
|
t=0 0
|
|
|
m=audio 4020 RTP/AVP 96
|
|
|
c=IN IP4 198.51.100.4
|
|
|
a=sendrecv
|
|
|
a=rtpmap:96 EVS/16000
|
|
|
a=fmtp:96 br-send=13.2-24.4; br-recv=32-64
|
|
|
--------------------------------------
|
|
|
v=0
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.4
|
|
|
s=tester
|
|
|
t=0 0
|
|
|
m=audio PORT RTP/AVP 96 8
|
|
|
c=IN IP4 203.0.113.1
|
|
|
a=rtpmap:96 EVS/16000
|
|
|
a=fmtp:96 br-send=13.2-24.4; br-recv=32-64
|
|
|
a=rtpmap:8 PCMA/8000
|
|
|
a=sendrecv
|
|
|
a=rtcp:PORT
|
|
|
SDP
|
|
|
|
|
|
answer('EVS negotiate br-send/recv', { }, <<SDP);
|
|
|
v=0
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.4
|
|
|
s=tester
|
|
|
t=0 0
|
|
|
m=audio 4022 RTP/AVP 8
|
|
|
c=IN IP4 198.51.100.4
|
|
|
----------------------------------
|
|
|
v=0
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.4
|
|
|
s=tester
|
|
|
t=0 0
|
|
|
m=audio PORT RTP/AVP 96
|
|
|
c=IN IP4 203.0.113.1
|
|
|
a=rtpmap:96 EVS/16000
|
|
|
a=fmtp:96 br-send=32-64; br-recv=13.2-24.4
|
|
|
a=sendrecv
|
|
|
a=rtcp:PORT
|
|
|
SDP
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
($sock_a, $sock_b) = new_call([qw(198.51.100.1 4020)], [qw(198.51.100.3 4022)]);
|
|
|
|
|
|
($port_a) = offer('EVS forward', { codec => { transcode => ['EVS'] } }, <<SDP);
|
|
|
v=0
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.3
|
|
|
s=tester
|
|
|
t=0 0
|
|
|
m=audio 4020 RTP/AVP 8 0
|
|
|
c=IN IP4 198.51.100.3
|
|
|
a=sendrecv
|
|
|
--------------------------------------
|
|
|
v=0
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.3
|
|
|
s=tester
|
|
|
t=0 0
|
|
|
m=audio PORT RTP/AVP 8 0 96
|
|
|
c=IN IP4 203.0.113.1
|
|
|
a=rtpmap:8 PCMA/8000
|
|
|
a=rtpmap:0 PCMU/8000
|
|
|
a=rtpmap:96 EVS/16000
|
|
|
a=fmtp:96 dtx=0; dtx-recv=0
|
|
|
a=sendrecv
|
|
|
a=rtcp:PORT
|
|
|
SDP
|
|
|
|
|
|
($port_b) = answer('EVS forward', { }, <<SDP);
|
|
|
v=0
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.3
|
|
|
s=tester
|
|
|
t=0 0
|
|
|
m=audio 4022 RTP/AVP 96
|
|
|
c=IN IP4 198.51.100.3
|
|
|
a=rtpmap:96 EVS/16000
|
|
|
a=fmtp:96 dtx=0;dtx-recv=0
|
|
|
a=sendrecv
|
|
|
----------------------------------
|
|
|
v=0
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.3
|
|
|
s=tester
|
|
|
t=0 0
|
|
|
m=audio PORT RTP/AVP 8
|
|
|
c=IN IP4 203.0.113.1
|
|
|
a=rtpmap:8 PCMA/8000
|
|
|
a=sendrecv
|
|
|
a=rtcp:PORT
|
|
|
SDP
|
|
|
|
|
|
|
|
|
snd($sock_a, $port_b, rtp(8, 2000, 4000, 0x3456, "\x2b" x 160));
|
|
|
Time::HiRes::usleep(20000); # no output, resampling delay
|
|
|
snd($sock_a, $port_b, rtp(8, 2001, 4160, 0x3456, "\x2b" x 160));
|
|
|
($ssrc) = rcv($sock_b, $port_a, rtpm(96, 2000, 4000, -1, "\x4d\xa4\xf3\x03\x2c\x42\x2a\x80\x80\x80\x80\x80\x2f\xfc\x00\x02\x94\x03\xfa\xaf\x1f\xa7\xde\x50\x30\x8a\x3a\x01\x5a\xc0\x3f\xc3\x62\x76\x94\xa8\x26\x17\x83\x57\x8a"));
|
|
|
snd($sock_a, $port_b, rtp(8, 2002, 4320, 0x3456, "\x2b" x 160));
|
|
|
rcv($sock_b, $port_a, rtpm(96, 2001, 4320, $ssrc, "\x4d\x66\x8e\xf5\x3c\x00\x00\x35\x96\x24\x96\x82\x3a\x9c\x76\xa2\xa0\xd7\x61\x1e\x13\xfd\x63\x81\x40\x87\x25\xbc\xc7\x82\x6b\xb1\x0d\x29\x98\x1f\xbf\x09\x11\x56\xa0"));
|
|
|
|
|
|
snd($sock_b, $port_a, rtp(96, 6000, 7000, 0x9876, "\x4d\xa6\xcb\xc6\xe0\x43\x2a\x80\x80\x80\x80\x80\x2f\xfc\x00\x00\x14\x03\x5a\xaf\x1c\xc8\x3e\xe1\x30\x92\x3a\x01\x80\x6a\xe7\x47\x61\x15\x00\x0e\x09\xdb\x02\xc5\x77"));
|
|
|
Time::HiRes::usleep(20000); # no output, resampling delay
|
|
|
snd($sock_b, $port_a, rtp(96, 6001, 7320, 0x9876, "\x4d\x66\x8f\xf5\x3c\x01\x13\x87\x19\x19\xb4\x84\x9f\xe2\x6f\xe0\xfe\x93\x2f\x94\x12\x00\x04\x9e\x90\x81\xac\x9a\x67\x8c\x68\xb1\xa1\x9a\x09\x04\x64\xf0\xbc\x38\x20"));
|
|
|
($ssrc) = rcv($sock_a, $port_b, rtpm(8, 6000, 7000, -1, "\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\x55\x57\x50\x53\x53\x53\x53\x53\x50\x51\x56\x57\x54\x55\xd5\xd5\xd5\xd4\xd4\xd4\xd4\xd4\xd4\xd4\xd4\xd4\xd4\xd4\xd4\xd4\xd4\xd4\xd4\xd6\xd0\xd0\xd3\xd3\xd0\xd1\xd1\xd6\xd6\xd7\xd7\xd7\xd4\xd4\xd4\xd4\xd4\xd4\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\x55\x54\x57\x51\x53\x5d\x5f\x59\x59\x5b\x58\x45\x58\x47\x5e\x45\x74\x13\x02\x02\x02\x02\x03\x03\x02\x02\x00\x01\x06\x06\x07\x04\x05\x1b\x19\x19\x06\x00\x01\x03\x02\x0c\x0c\x0d\x02\x03\x00\x01\x06\x07\x04\x05\x1b\x19\x1f\x1d\x13\x17\x15\x69\x6f\x6c\x6f\x6f\x63\x64\x73\x48\xd0\xf4\xf3\xe6\xe3\xeb\x97\x93\x9d\x9c\x98\x98\x85"));
|
|
|
|
|
|
|
|
|
|
|
|
($sock_a, $sock_b) = new_call([qw(198.51.100.5 4020)], [qw(198.51.100.7 4022)]);
|
|
|
|
|
|
($port_a) = offer('EVS reverse', { codec => { transcode => ['PCMA', 'PCMU'] } }, <<SDP);
|
|
|
v=0
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.5
|
|
|
s=tester
|
|
|
t=0 0
|
|
|
m=audio 4020 RTP/AVP 96
|
|
|
c=IN IP4 198.51.100.5
|
|
|
a=sendrecv
|
|
|
a=rtpmap:96 EVS/16000
|
|
|
a=fmtp:96 dtx=0; dtx-recv=0
|
|
|
--------------------------------------
|
|
|
v=0
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.5
|
|
|
s=tester
|
|
|
t=0 0
|
|
|
m=audio PORT RTP/AVP 96 8 0
|
|
|
c=IN IP4 203.0.113.1
|
|
|
a=rtpmap:96 EVS/16000
|
|
|
a=fmtp:96 dtx=0; dtx-recv=0
|
|
|
a=rtpmap:8 PCMA/8000
|
|
|
a=rtpmap:0 PCMU/8000
|
|
|
a=sendrecv
|
|
|
a=rtcp:PORT
|
|
|
SDP
|
|
|
|
|
|
($port_b) = answer('EVS reverse', { }, <<SDP);
|
|
|
v=0
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.7
|
|
|
s=tester
|
|
|
t=0 0
|
|
|
m=audio 4022 RTP/AVP 8
|
|
|
c=IN IP4 198.51.100.7
|
|
|
a=sendrecv
|
|
|
----------------------------------
|
|
|
v=0
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.7
|
|
|
s=tester
|
|
|
t=0 0
|
|
|
m=audio PORT RTP/AVP 96
|
|
|
c=IN IP4 203.0.113.1
|
|
|
a=rtpmap:96 EVS/16000
|
|
|
a=fmtp:96 dtx=0; dtx-recv=0
|
|
|
a=sendrecv
|
|
|
a=rtcp:PORT
|
|
|
SDP
|
|
|
|
|
|
|
|
|
snd($sock_b, $port_a, rtp(8, 2000, 4000, 0x3456, "\x2b" x 160));
|
|
|
Time::HiRes::usleep(20000); # no output, resampling delay
|
|
|
snd($sock_b, $port_a, rtp(8, 2001, 4160, 0x3456, "\x2b" x 160));
|
|
|
($ssrc) = rcv($sock_a, $port_b, rtpm(96, 2000, 4000, -1, "\x4d\xa4\xf3\x03\x2c\x42\x2a\x80\x80\x80\x80\x80\x2f\xfc\x00\x02\x94\x03\xfa\xaf\x1f\xa7\xde\x50\x30\x8a\x3a\x01\x5a\xc0\x3f\xc3\x62\x76\x94\xa8\x26\x17\x83\x57\x8a"));
|
|
|
snd($sock_b, $port_a, rtp(8, 2002, 4320, 0x3456, "\x2b" x 160));
|
|
|
rcv($sock_a, $port_b, rtpm(96, 2001, 4320, $ssrc, "\x4d\x66\x8e\xf5\x3c\x00\x00\x35\x96\x24\x96\x82\x3a\x9c\x76\xa2\xa0\xd7\x61\x1e\x13\xfd\x63\x81\x40\x87\x25\xbc\xc7\x82\x6b\xb1\x0d\x29\x98\x1f\xbf\x09\x11\x56\xa0"));
|
|
|
|
|
|
snd($sock_a, $port_b, rtp(96, 6000, 7000, 0x9876, "\x4d\xa6\xcb\xc6\xe0\x43\x2a\x80\x80\x80\x80\x80\x2f\xfc\x00\x00\x14\x03\x5a\xaf\x1c\xc8\x3e\xe1\x30\x92\x3a\x01\x80\x6a\xe7\x47\x61\x15\x00\x0e\x09\xdb\x02\xc5\x77"));
|
|
|
Time::HiRes::usleep(20000); # no output, resampling delay
|
|
|
snd($sock_a, $port_b, rtp(96, 6001, 7320, 0x9876, "\x4d\x66\x8f\xf5\x3c\x01\x13\x87\x19\x19\xb4\x84\x9f\xe2\x6f\xe0\xfe\x93\x2f\x94\x12\x00\x04\x9e\x90\x81\xac\x9a\x67\x8c\x68\xb1\xa1\x9a\x09\x04\x64\xf0\xbc\x38\x20"));
|
|
|
($ssrc) = rcv($sock_b, $port_a, rtpm(8, 6000, 7000, -1, "\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\x55\x57\x50\x53\x53\x53\x53\x53\x50\x51\x56\x57\x54\x55\xd5\xd5\xd5\xd4\xd4\xd4\xd4\xd4\xd4\xd4\xd4\xd4\xd4\xd4\xd4\xd4\xd4\xd4\xd4\xd6\xd0\xd0\xd3\xd3\xd0\xd1\xd1\xd6\xd6\xd7\xd7\xd7\xd4\xd4\xd4\xd4\xd4\xd4\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\x55\x54\x57\x51\x53\x5d\x5f\x59\x59\x5b\x58\x45\x58\x47\x5e\x45\x74\x13\x02\x02\x02\x02\x03\x03\x02\x02\x00\x01\x06\x06\x07\x04\x05\x1b\x19\x19\x06\x00\x01\x03\x02\x0c\x0c\x0d\x02\x03\x00\x01\x06\x07\x04\x05\x1b\x19\x1f\x1d\x13\x17\x15\x69\x6f\x6c\x6f\x6f\x63\x64\x73\x48\xd0\xf4\xf3\xe6\xe3\xeb\x97\x93\x9d\x9c\x98\x98\x85"));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
($sock_a, $sock_b) = new_call([qw(198.51.100.1 4024)], [qw(198.51.100.3 4026)]);
|
|
|
|
|
|
($port_a) = offer('EVS forward hf-only', { codec => { transcode => ['EVS/16000/1///hf-only=1'] } }, <<SDP);
|
|
|
v=0
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.3
|
|
|
s=tester
|
|
|
t=0 0
|
|
|
m=audio 4024 RTP/AVP 8 0
|
|
|
c=IN IP4 198.51.100.3
|
|
|
a=sendrecv
|
|
|
--------------------------------------
|
|
|
v=0
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.3
|
|
|
s=tester
|
|
|
t=0 0
|
|
|
m=audio PORT RTP/AVP 8 0 96
|
|
|
c=IN IP4 203.0.113.1
|
|
|
a=rtpmap:8 PCMA/8000
|
|
|
a=rtpmap:0 PCMU/8000
|
|
|
a=rtpmap:96 EVS/16000
|
|
|
a=fmtp:96 hf-only=1
|
|
|
a=sendrecv
|
|
|
a=rtcp:PORT
|
|
|
SDP
|
|
|
|
|
|
($port_b) = answer('EVS forward hf-only', { }, <<SDP);
|
|
|
v=0
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.3
|
|
|
s=tester
|
|
|
t=0 0
|
|
|
m=audio 4026 RTP/AVP 96
|
|
|
c=IN IP4 198.51.100.3
|
|
|
a=rtpmap:96 EVS/16000
|
|
|
a=fmtp:96 hf-only=1
|
|
|
a=sendrecv
|
|
|
----------------------------------
|
|
|
v=0
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.3
|
|
|
s=tester
|
|
|
t=0 0
|
|
|
m=audio PORT RTP/AVP 8
|
|
|
c=IN IP4 203.0.113.1
|
|
|
a=rtpmap:8 PCMA/8000
|
|
|
a=sendrecv
|
|
|
a=rtcp:PORT
|
|
|
SDP
|
|
|
|
|
|
|
|
|
snd($sock_a, $port_b, rtp(8, 2000, 4000, 0x3456, "\x2b" x 160));
|
|
|
Time::HiRes::usleep(20000); # no output, resampling delay
|
|
|
snd($sock_a, $port_b, rtp(8, 2001, 4160, 0x3456, "\x2b" x 160));
|
|
|
($ssrc) = rcv($sock_b, $port_a, rtpm(96, 2000, 4000, -1, "\x05\x4d\xa4\xf3\x03\x2c\x42\x2a\x80\x80\x80\x80\x80\x2f\xfc\x00\x02\x94\x03\xfa\xaf\x1f\xa7\xde\x50\x30\x8a\x3a\x01\x5a\xc0\x3f\xc3\x62\x76\x94\xa8\x26\x17\x83\x57\x8a"));
|
|
|
snd($sock_a, $port_b, rtp(8, 2002, 4320, 0x3456, "\x2b" x 160));
|
|
|
rcv($sock_b, $port_a, rtpm(96, 2001, 4320, $ssrc, "\x05\x4d\x66\x8e\xf5\x3c\x00\x00\x35\x96\x24\x96\x82\x3a\x9c\x76\xa2\xa0\xd7\x61\x1e\x13\xfd\x63\x81\x40\x87\x25\xbc\xc7\x82\x6b\xb1\x0d\x29\x98\x1f\xbf\x09\x11\x56\xa0"));
|
|
|
|
|
|
snd($sock_b, $port_a, rtp(96, 6000, 7000, 0x9876, "\x05\x4d\xa6\xcb\xc6\xe0\x43\x2a\x80\x80\x80\x80\x80\x2f\xfc\x00\x00\x14\x03\x5a\xaf\x1c\xc8\x3e\xe1\x30\x92\x3a\x01\x80\x6a\xe7\x47\x61\x15\x00\x0e\x09\xdb\x02\xc5\x77"));
|
|
|
Time::HiRes::usleep(20000); # no output, resampling delay
|
|
|
snd($sock_b, $port_a, rtp(96, 6001, 7320, 0x9876, "\x05\x4d\x66\x8f\xf5\x3c\x01\x13\x87\x19\x19\xb4\x84\x9f\xe2\x6f\xe0\xfe\x93\x2f\x94\x12\x00\x04\x9e\x90\x81\xac\x9a\x67\x8c\x68\xb1\xa1\x9a\x09\x04\x64\xf0\xbc\x38\x20"));
|
|
|
($ssrc) = rcv($sock_a, $port_b, rtpm(8, 6000, 7000, -1, "\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\x55\x57\x50\x53\x53\x53\x53\x53\x50\x51\x56\x57\x54\x55\xd5\xd5\xd5\xd4\xd4\xd4\xd4\xd4\xd4\xd4\xd4\xd4\xd4\xd4\xd4\xd4\xd4\xd4\xd4\xd6\xd0\xd0\xd3\xd3\xd0\xd1\xd1\xd6\xd6\xd7\xd7\xd7\xd4\xd4\xd4\xd4\xd4\xd4\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\x55\x54\x57\x51\x53\x5d\x5f\x59\x59\x5b\x58\x45\x58\x47\x5e\x45\x74\x13\x02\x02\x02\x02\x03\x03\x02\x02\x00\x01\x06\x06\x07\x04\x05\x1b\x19\x19\x06\x00\x01\x03\x02\x0c\x0c\x0d\x02\x03\x00\x01\x06\x07\x04\x05\x1b\x19\x1f\x1d\x13\x17\x15\x69\x6f\x6c\x6f\x6f\x63\x64\x73\x48\xd0\xf4\xf3\xe6\xe3\xeb\x97\x93\x9d\x9c\x98\x98\x85"));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
($sock_a, $sock_b) = new_call([qw(198.51.100.1 4028)], [qw(198.51.100.3 4030)]);
|
|
|
|
|
|
($port_a) = offer('EVS forward AMR IO', { codec => { transcode => ['EVS/16000/1///evs-mode-switch=1'] } }, <<SDP);
|
|
|
v=0
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.3
|
|
|
s=tester
|
|
|
t=0 0
|
|
|
m=audio 4028 RTP/AVP 8 0
|
|
|
c=IN IP4 198.51.100.3
|
|
|
a=sendrecv
|
|
|
--------------------------------------
|
|
|
v=0
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.3
|
|
|
s=tester
|
|
|
t=0 0
|
|
|
m=audio PORT RTP/AVP 8 0 96
|
|
|
c=IN IP4 203.0.113.1
|
|
|
a=rtpmap:8 PCMA/8000
|
|
|
a=rtpmap:0 PCMU/8000
|
|
|
a=rtpmap:96 EVS/16000
|
|
|
a=fmtp:96 evs-mode-switch=1
|
|
|
a=sendrecv
|
|
|
a=rtcp:PORT
|
|
|
SDP
|
|
|
|
|
|
($port_b) = answer('EVS forward AMR IO', { }, <<SDP);
|
|
|
v=0
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.3
|
|
|
s=tester
|
|
|
t=0 0
|
|
|
m=audio 4030 RTP/AVP 96
|
|
|
c=IN IP4 198.51.100.3
|
|
|
a=rtpmap:96 EVS/16000
|
|
|
a=fmtp:96 evs-mode-switch=1
|
|
|
a=sendrecv
|
|
|
----------------------------------
|
|
|
v=0
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.3
|
|
|
s=tester
|
|
|
t=0 0
|
|
|
m=audio PORT RTP/AVP 8
|
|
|
c=IN IP4 203.0.113.1
|
|
|
a=rtpmap:8 PCMA/8000
|
|
|
a=sendrecv
|
|
|
a=rtcp:PORT
|
|
|
SDP
|
|
|
|
|
|
|
|
|
snd($sock_a, $port_b, rtp(8, 2000, 4000, 0x3456, "\x2b" x 160));
|
|
|
Time::HiRes::usleep(20000); # no output, resampling delay
|
|
|
snd($sock_a, $port_b, rtp(8, 2001, 4160, 0x3456, "\x2b" x 160));
|
|
|
($ssrc) = rcv($sock_b, $port_a, rtpm(96, 2000, 4000, -1, "\xf1\x11\x84\xa6\x30\xee\x84\xfd\x56\x02\x11\x05\xe0\xbb\x84\x99\x10\x08\x22\x20\xac\x51\x3a\x74\x04\x5a\xa2\xa9\x60\xc2\xc4\x12\x23\x6d\x64\x62\x13\x0f\x91\x2a\x73\xcb\x84\xe4\x1f\x63"));
|
|
|
snd($sock_a, $port_b, rtp(8, 2002, 4320, 0x3456, "\x2b" x 160));
|
|
|
rcv($sock_b, $port_a, rtpm(96, 2001, 4320, $ssrc, "\xf8\x73\x22\x7a\x7e\x1e\x97\xc9\x76\x60\x37\x71\xc1\x20\x0f\xce\xbc\xcf\x7c\x92\x08\x4a\x19\xb0\x2a\xc4\x43\x9a\xc4\xd8\xe7\x06\x00\x12\x99\x86\x61\xf2\xdf\xa2\x7c\x2c\xb2\x12\x5c\x7b"));
|
|
|
|
|
|
snd($sock_b, $port_a, rtp(96, 6000, 7000, 0x9876, "\xf9\x41\x84\xa6\x30\xee\x84\xc8\x34\x40\x18\x15\xa1\xde\x14\x09\x10\x08\x6e\x22\xad\x51\x36\x30\x0c\x52\x00\xa8\x60\xd2\xc0\x32\x63\x6d\x64\x42\x73\x4f\x91\x22\x6b\x9b\x0c\x64\x1f\x63"));
|
|
|
Time::HiRes::usleep(20000); # no output, resampling delay
|
|
|
snd($sock_b, $port_a, rtp(96, 6001, 7320, 0x9876, "\xf8\x73\x1a\x7a\xfe\x3e\x97\xc9\x76\xd1\xb7\x75\x71\xa4\x9d\xe6\x5d\x05\x39\x51\x16\x4e\x40\xaa\xa6\xaa\x49\x92\xd0\x0c\x37\x33\xd8\x07\x30\x45\xea\x99\x86\x78\x0c\x36\xd9\x85\x06\x2f"));
|
|
|
($ssrc) = rcv($sock_a, $port_b, rtpm(8, 6000, 7000, -1, "\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\x55\x55\x55\x55\x55\xd5\xd5\xd5\xd5\xd5\xd5\xd5\x55\x55\x55\x55\x55\x55\x55\xd5\xd4\xd4\xd4\xd4\xd4\xd5\xd5\xd5\x55\x55\x55\xd5\xd4\xd4\xd4\xd5\xd5\x55\x54\x54\x54\x57\x54\x55\xd5\xd7\xd7\xd7\xd7\xd7\xd4\xd5\xd5\x55\x55\xd5\xd4\xd7\xd7\xd4\x55\xd5\xd5\x55\x54\x54\x57\x57\x54\x54\x54\x54\x54\x54\x55\xd4\xd7\xd7\xd7\x54\x57\x57\x5d\x58\x5a\x5a\x58\x5f\x52\x56\x56\x51\x54\x54\x53\x5c\x5e\x5c\x52\x51\x50\x5e\x5f\x53\x58\x4d\x4e\x4c\x5a\x53\xd7\xd2\xd2\xd1\xd4\x51\x5e\x58\x58\x5b\x5b\x5c\x56\xd5\xd5\xd4\xd1\xdd\xdf\xdf\xd2\x57\x5c\x5e\x46\x4b\x74\x4a\x41\x5d"));
|
|
|
|
|
|
|
|
|
|
|
|
($sock_a, $sock_b) = new_call([qw(198.51.100.5 4028)], [qw(198.51.100.7 4030)]);
|
|
|
|
|
|
($port_a) = offer('EVS reverse AMR IO', { codec => { transcode => ['PCMA','PCMU'] } }, <<SDP);
|
|
|
v=0
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.5
|
|
|
s=tester
|
|
|
t=0 0
|
|
|
m=audio 4028 RTP/AVP 96
|
|
|
c=IN IP4 198.51.100.5
|
|
|
a=rtpmap:96 EVS/16000
|
|
|
a=fmtp:96 evs-mode-switch=1
|
|
|
a=sendrecv
|
|
|
--------------------------------------
|
|
|
v=0
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.5
|
|
|
s=tester
|
|
|
t=0 0
|
|
|
m=audio PORT RTP/AVP 96 8 0
|
|
|
c=IN IP4 203.0.113.1
|
|
|
a=rtpmap:96 EVS/16000
|
|
|
a=fmtp:96 evs-mode-switch=1
|
|
|
a=rtpmap:8 PCMA/8000
|
|
|
a=rtpmap:0 PCMU/8000
|
|
|
a=sendrecv
|
|
|
a=rtcp:PORT
|
|
|
SDP
|
|
|
|
|
|
($port_b) = answer('EVS reverse AMR IO', { }, <<SDP);
|
|
|
v=0
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.7
|
|
|
s=tester
|
|
|
t=0 0
|
|
|
m=audio 4030 RTP/AVP 8
|
|
|
c=IN IP4 198.51.100.7
|
|
|
a=sendrecv
|
|
|
----------------------------------
|
|
|
v=0
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.7
|
|
|
s=tester
|
|
|
t=0 0
|
|
|
m=audio PORT RTP/AVP 96
|
|
|
c=IN IP4 203.0.113.1
|
|
|
a=rtpmap:96 EVS/16000
|
|
|
a=fmtp:96 evs-mode-switch=1
|
|
|
a=sendrecv
|
|
|
a=rtcp:PORT
|
|
|
SDP
|
|
|
|
|
|
|
|
|
snd($sock_b, $port_a, rtp(8, 2000, 4000, 0x3456, "\x2b" x 160));
|
|
|
Time::HiRes::usleep(20000); # no output, resampling delay
|
|
|
snd($sock_b, $port_a, rtp(8, 2001, 4160, 0x3456, "\x2b" x 160));
|
|
|
($ssrc) = rcv($sock_a, $port_b, rtpm(96, 2000, 4000, -1, "\xf1\x11\x84\xa6\x30\xee\x84\xfd\x56\x02\x11\x05\xe0\xbb\x84\x99\x10\x08\x22\x20\xac\x51\x3a\x74\x04\x5a\xa2\xa9\x60\xc2\xc4\x12\x23\x6d\x64\x62\x13\x0f\x91\x2a\x73\xcb\x84\xe4\x1f\x63"));
|
|
|
snd($sock_b, $port_a, rtp(8, 2002, 4320, 0x3456, "\x2b" x 160));
|
|
|
rcv($sock_a, $port_b, rtpm(96, 2001, 4320, $ssrc, "\xf8\x73\x22\x7a\x7e\x1e\x97\xc9\x76\x60\x37\x71\xc1\x20\x0f\xce\xbc\xcf\x7c\x92\x08\x4a\x19\xb0\x2a\xc4\x43\x9a\xc4\xd8\xe7\x06\x00\x12\x99\x86\x61\xf2\xdf\xa2\x7c\x2c\xb2\x12\x5c\x7b"));
|
|
|
|
|
|
snd($sock_a, $port_b, rtp(96, 6000, 7000, 0x9876, "\xf9\x41\x84\xa6\x30\xee\x84\xc8\x34\x40\x18\x15\xa1\xde\x14\x09\x10\x08\x6e\x22\xad\x51\x36\x30\x0c\x52\x00\xa8\x60\xd2\xc0\x32\x63\x6d\x64\x42\x73\x4f\x91\x22\x6b\x9b\x0c\x64\x1f\x63"));
|
|
|
Time::HiRes::usleep(20000); # no output, resampling delay
|
|
|
snd($sock_a, $port_b, rtp(96, 6001, 7320, 0x9876, "\xf8\x73\x1a\x7a\xfe\x3e\x97\xc9\x76\xd1\xb7\x75\x71\xa4\x9d\xe6\x5d\x05\x39\x51\x16\x4e\x40\xaa\xa6\xaa\x49\x92\xd0\x0c\x37\x33\xd8\x07\x30\x45\xea\x99\x86\x78\x0c\x36\xd9\x85\x06\x2f"));
|
|
|
($ssrc) = rcv($sock_b, $port_a, rtpm(8, 6000, 7000, -1, "\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\x55\x55\x55\x55\x55\xd5\xd5\xd5\xd5\xd5\xd5\xd5\x55\x55\x55\x55\x55\x55\x55\xd5\xd4\xd4\xd4\xd4\xd4\xd5\xd5\xd5\x55\x55\x55\xd5\xd4\xd4\xd4\xd5\xd5\x55\x54\x54\x54\x57\x54\x55\xd5\xd7\xd7\xd7\xd7\xd7\xd4\xd5\xd5\x55\x55\xd5\xd4\xd7\xd7\xd4\x55\xd5\xd5\x55\x54\x54\x57\x57\x54\x54\x54\x54\x54\x54\x55\xd4\xd7\xd7\xd7\x54\x57\x57\x5d\x58\x5a\x5a\x58\x5f\x52\x56\x56\x51\x54\x54\x53\x5c\x5e\x5c\x52\x51\x50\x5e\x5f\x53\x58\x4d\x4e\x4c\x5a\x53\xd7\xd2\xd2\xd1\xd4\x51\x5e\x58\x58\x5b\x5b\x5c\x56\xd5\xd5\xd4\xd1\xdd\xdf\xdf\xd2\x57\x5c\x5e\x46\x4b\x74\x4a\x41\x5d"));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
($sock_a, $sock_b) = new_call([qw(198.51.100.1 4032)], [qw(198.51.100.3 4034)]);
|
|
|
|
|
|
($port_a) = offer('EVS forward AMR IO hf-only', { codec => { transcode => ['EVS/16000/1///evs-mode-switch=1;hf-only=1'] } }, <<SDP);
|
|
|
v=0
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.3
|
|
|
s=tester
|
|
|
t=0 0
|
|
|
m=audio 4032 RTP/AVP 8 0
|
|
|
c=IN IP4 198.51.100.3
|
|
|
a=sendrecv
|
|
|
--------------------------------------
|
|
|
v=0
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.3
|
|
|
s=tester
|
|
|
t=0 0
|
|
|
m=audio PORT RTP/AVP 8 0 96
|
|
|
c=IN IP4 203.0.113.1
|
|
|
a=rtpmap:8 PCMA/8000
|
|
|
a=rtpmap:0 PCMU/8000
|
|
|
a=rtpmap:96 EVS/16000
|
|
|
a=fmtp:96 hf-only=1; evs-mode-switch=1
|
|
|
a=sendrecv
|
|
|
a=rtcp:PORT
|
|
|
SDP
|
|
|
|
|
|
($port_b) = answer('EVS forward AMR IO hf-only', { }, <<SDP);
|
|
|
v=0
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.3
|
|
|
s=tester
|
|
|
t=0 0
|
|
|
m=audio 4034 RTP/AVP 96
|
|
|
c=IN IP4 198.51.100.3
|
|
|
a=rtpmap:96 EVS/16000
|
|
|
a=fmtp:96 evs-mode-switch=1;hf-only=1
|
|
|
a=sendrecv
|
|
|
----------------------------------
|
|
|
v=0
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.3
|
|
|
s=tester
|
|
|
t=0 0
|
|
|
m=audio PORT RTP/AVP 8
|
|
|
c=IN IP4 203.0.113.1
|
|
|
a=rtpmap:8 PCMA/8000
|
|
|
a=sendrecv
|
|
|
a=rtcp:PORT
|
|
|
SDP
|
|
|
|
|
|
|
|
|
snd($sock_a, $port_b, rtp(8, 2000, 4000, 0x3456, "\x2b" x 160));
|
|
|
Time::HiRes::usleep(20000); # no output, resampling delay
|
|
|
snd($sock_a, $port_b, rtp(8, 2001, 4160, 0x3456, "\x2b" x 160));
|
|
|
($ssrc) = rcv($sock_b, $port_a, rtpm(96, 2000, 4000, -1, "\x35\xc4\x46\x12\x98\xc3\xba\x13\xf5\x58\x08\x44\x17\x82\xee\x12\x64\x40\x20\x88\x82\xb1\x44\xe9\xd0\x11\x6a\x8a\xa5\x83\x0b\x10\x48\x8d\xb5\x91\x88\x4c\x3e\x44\xa9\xcf\x2e\x13\x90\x7d\x88"));
|
|
|
snd($sock_a, $port_b, rtp(8, 2002, 4320, 0x3456, "\x2b" x 160));
|
|
|
rcv($sock_b, $port_a, rtpm(96, 2001, 4320, $ssrc, "\x35\xe1\xcc\x89\xe9\xf8\x7a\x5f\x25\xd9\x80\xdd\xc7\x04\x80\x3f\x3a\xf3\x3d\xf2\x48\x21\x28\x66\xc0\xab\x11\x0e\x6b\x13\x63\x9c\x18\x00\x4a\x66\x19\x87\xcb\x7e\x89\xf0\xb2\xc8\x49\x71\xe8"));
|
|
|
|
|
|
snd($sock_b, $port_a, rtp(96, 6000, 7000, 0x9876, "\x35\xe5\x06\x12\x98\xc3\xba\x13\x20\xd1\x00\x60\x56\x87\x78\x50\x24\x40\x21\xb8\x8a\xb5\x44\xd8\xc0\x31\x48\x02\xa1\x83\x4b\x00\xc9\x8d\xb5\x91\x09\xcd\x3e\x44\x89\xae\x6c\x31\x90\x7d\x88"));
|
|
|
Time::HiRes::usleep(20000); # no output, resampling delay
|
|
|
snd($sock_b, $port_a, rtp(96, 6001, 7320, 0x9876, "\x35\xe1\xcc\x69\xeb\xf8\xfa\x5f\x25\xdb\x46\xdd\xd5\xc6\x92\x77\x99\x74\x14\xe5\x44\x59\x39\x02\xaa\x9a\xa9\x26\x4b\x40\x30\xdc\xcf\x60\x1c\xc1\x17\xaa\x66\x19\xe0\x30\xdb\x66\x14\x18\xb8"));
|
|
|
($ssrc) = rcv($sock_a, $port_b, rtpm(8, 6000, 7000, -1, "\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\x55\x55\x55\x55\x55\xd5\xd5\xd5\xd5\xd5\xd5\xd5\x55\x55\x55\x55\x55\x55\x55\xd5\xd4\xd4\xd4\xd4\xd4\xd5\xd5\xd5\x55\x55\x55\xd5\xd4\xd4\xd4\xd5\xd5\x55\x54\x54\x54\x57\x54\x55\xd5\xd7\xd7\xd7\xd7\xd7\xd4\xd5\xd5\x55\x55\xd5\xd4\xd7\xd7\xd4\x55\xd5\xd5\x55\x54\x54\x57\x57\x54\x54\x54\x54\x54\x54\x55\xd4\xd7\xd7\xd7\x54\x57\x57\x5d\x58\x5a\x5a\x58\x5f\x52\x56\x56\x51\x54\x54\x53\x5c\x5e\x5c\x52\x51\x50\x5e\x5f\x53\x58\x4d\x4e\x4c\x5a\x53\xd7\xd2\xd2\xd1\xd4\x51\x5e\x58\x58\x5b\x5b\x5c\x56\xd5\xd5\xd4\xd1\xdd\xdf\xdf\xd2\x57\x5c\x5e\x46\x4b\x74\x4a\x41\x5d"));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
($sock_a, $sock_b) = new_call([qw(198.51.100.1 4036)], [qw(198.51.100.3 4038)]);
|
|
|
|
|
|
($port_a) = offer('EVS forward mode 10', { codec => { transcode => ['EVS/16000/1/96000//hf-only=1'] } }, <<SDP);
|
|
|
v=0
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.3
|
|
|
s=tester
|
|
|
t=0 0
|
|
|
m=audio 4036 RTP/AVP 8 0
|
|
|
c=IN IP4 198.51.100.3
|
|
|
a=sendrecv
|
|
|
--------------------------------------
|
|
|
v=0
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.3
|
|
|
s=tester
|
|
|
t=0 0
|
|
|
m=audio PORT RTP/AVP 8 0 96
|
|
|
c=IN IP4 203.0.113.1
|
|
|
a=rtpmap:8 PCMA/8000
|
|
|
a=rtpmap:0 PCMU/8000
|
|
|
a=rtpmap:96 EVS/16000
|
|
|
a=fmtp:96 hf-only=1
|
|
|
a=sendrecv
|
|
|
a=rtcp:PORT
|
|
|
SDP
|
|
|
|
|
|
($port_b) = answer('EVS forward mode 10', { }, <<SDP);
|
|
|
v=0
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.3
|
|
|
s=tester
|
|
|
t=0 0
|
|
|
m=audio 4038 RTP/AVP 96
|
|
|
c=IN IP4 198.51.100.3
|
|
|
a=rtpmap:96 EVS/16000
|
|
|
a=fmtp:96 hf-only=1
|
|
|
a=sendrecv
|
|
|
----------------------------------
|
|
|
v=0
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.3
|
|
|
s=tester
|
|
|
t=0 0
|
|
|
m=audio PORT RTP/AVP 8
|
|
|
c=IN IP4 203.0.113.1
|
|
|
a=rtpmap:8 PCMA/8000
|
|
|
a=sendrecv
|
|
|
a=rtcp:PORT
|
|
|
SDP
|
|
|
|
|
|
|
|
|
snd($sock_a, $port_b, rtp(8, 2000, 4000, 0x3456, "\x2b" x 160));
|
|
|
Time::HiRes::usleep(20000); # no output, resampling delay
|
|
|
snd($sock_a, $port_b, rtp(8, 2001, 4160, 0x3456, "\x2b" x 160));
|
|
|
($ssrc) = rcv($sock_b, $port_a, rtpm(96, 2000, 4000, -1, "\x0a\x1e\xe2\xcb\xc6\x8e\x3e\xa5\xf7\x78\xd1\xc1\x70\x73\xb8\xf7\x9d\xff\xf3\xc0\x11\x77\x98\xb0\x7a\xed\xad\x1a\xdb\x42\x92\xfe\xc9\xeb\x63\x45\xb5\x7f\x73\xd1\x4d\xff\x1e\xba\x9c\x24\x9b\x16\x1b\x34\x8e\xf5\xef\xe8\x6c\x47\x14\x1a\x41\x10\xb1\x19\x54\xf1\x0c\x28\x64\x75\xf9\x29\x56\xa4\x52\x41\x75\x2d\xe2\x23\x7d\x88\xaa\xa8\x1b\xbb\xff\xdd\xda\x22\x52\x25\xdd\xdf\xee\xea\x20\x6d\x5e\x2a\xf6\x1a\x13\x28\x68\x63\x0d\x19\x8b\x96\xbf\xda\xfd\x0a\x8f\x18\x4c\xd0\x8c\x1f\x49\x3e\xb5\xfe\xd5\xab\x80\x81\x70\x63\xf7\x11\xe7\x3b\x88\xf4\xf0\x0f\x88\x7d\x47\x28\x44\x4d\xaa\xdd\x07\xcf\x9c\x73\x53\xbd\x42\x90\x08\x8d\x3f\x20\x4f\xf8\x78\x7d\x5a\xce\x90\xc6\x38\xc2\xe6\x95\x3f\xe6\x8a\xd8\x30\x99\xad\x83\x21\x06\xe5\x3b\x4e\xfe\x85\x08\x81\x95\xe3\xdc\xba\xaa\xb5\x9c\xce\x63\x23\x39\xb9\x99\x19\x99\xd9\xcc\x4c\x4e\xce\xc4\xc6\x00\x00\x00\x05\xe0\x24\x98\xa9\xc0\x3f\x9f\x0d\x12\x5e\x6a\x43\xe2\x87\x85\x32\x64\x84\x6e\x2b\xed\xb6\xcb\xa6\x80\x32\xfd\x47\xc9\x6f"));
|
|
|
snd($sock_a, $port_b, rtp(8, 2002, 4320, 0x3456, "\x2b" x 160));
|
|
|
rcv($sock_b, $port_a, rtpm(96, 2001, 4320, $ssrc, "\x0a\x0a\x1b\xfb\x35\x8f\x01\xc0\x08\x56\x4f\x80\x42\x1a\x9b\x75\xaa\x99\x4e\x27\xfa\x2a\xc8\xd0\xaa\x81\x76\x67\x17\x82\x3b\x7b\xab\x25\x0b\xc4\xd7\x01\x97\x58\x2a\xe2\xd4\xf6\x3e\xfb\xa6\x71\x0b\xac\xfe\x5c\x9b\x67\xff\xff\xff\xf0\x3c\x83\x48\xda\xad\x29\x56\xaa\x96\xaa\x96\x95\x2a\x55\x6a\x4d\x4b\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8a\x60\xd2\xe8\x1c\x5f\x4e\xf5\x9d"));
|
|
|
|
|
|
snd($sock_b, $port_a, rtp(96, 6000, 7000, 0x9876, "\x0a\x1e\xe2\xdb\xc6\x8e\x3f\x0e\xd3\x01\xef\x0e\xc0\x39\xdc\x7b\xce\xff\xf9\xe0\x08\xb8\xbf\xa8\xcc\x4a\x61\xdb\xe6\x0d\xa3\x46\xd7\x2d\xb6\x13\x5d\x58\x60\x27\x68\x31\xa4\x99\x92\x74\xfb\xb0\x44\xdc\x8c\xc1\xf7\x5b\x37\x58\x64\x47\xb7\x56\x72\x57\x85\xc8\xf8\xbd\x72\x37\x94\x84\x87\x41\x63\x22\x2b\xbd\x11\x1b\xec\x45\x55\x40\xdd\xdf\xfe\xee\xd1\x11\x11\x2e\xee\xef\xbb\x48\x83\x52\x96\x9f\x0b\x0d\x01\x39\x30\x66\xb2\xb3\x95\xf7\x7d\x1b\x7c\x83\x6f\x9d\x06\x92\x49\x06\x74\x95\xeb\x2a\x81\x02\xc2\x48\xf8\x61\x9d\x57\xa3\xb8\x8f\x4f\x01\x4b\x66\x57\xbf\x68\x94\x15\x98\x0a\xf2\x53\xc9\xa8\xdb\xa8\xe3\xbf\x47\x44\x8a\xb0\x5a\xbd\x1a\x9e\xb5\x29\xf9\x4c\x46\xd3\xb9\x94\xe6\x9c\x05\xf6\x2c\x53\x32\xba\x07\xc8\x97\x9e\x09\x13\xaf\x82\xf6\xde\x07\x53\x50\x7e\x3a\xaa\xb5\x9c\xce\x63\x23\x33\x39\x99\x8c\x9a\xaa\xca\xaa\x35\x55\x9b\x4c\x03\x13\x1a\x44\x69\x8c\x26\xf0\xd6\x02\x56\x98\x6b\x77\x17\x4e\x28\x16\xb5\x8c\x22\xc0\xf2\x97\x2d\xa3\xb8\x43\xae\x45\x32\xf5"));
|
|
|
Time::HiRes::usleep(20000); # no output, resampling delay
|
|
|
snd($sock_b, $port_a, rtp(96, 6001, 7320, 0x9876, "\x0a\x0a\x1b\xcb\x12\xa5\x0f\xbe\x00\x42\xb2\x7c\x01\x4c\xfa\x7c\x89\xa8\x1f\x1b\xd0\x5f\x34\x11\x55\xc9\x58\x27\x63\xad\x74\x4b\x9a\xe4\xa2\x1c\x9b\xa2\x25\xe3\xa3\x22\xb0\x0b\x55\x0f\x66\xf2\x73\x9a\x88\xf6\x43\xff\xff\xff\xff\xfd\x6a\x77\x2a\x7a\x46\xd5\x69\x4a\xb5\x54\xb5\x54\xb5\x54\xa9\x55\x94\xd5\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd8\x4a\x45\x94\xa5\x60\xd6\x6e\xd6\x4b\x84"));
|
|
|
($ssrc) = rcv($sock_a, $port_b, rtpm(8, 6000, 7000, -1, "\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\x55\x55\x55\x55\x55\xd5\x55\xd5\xd5\xd5\x55\x55\x55\x55\x55\xd5\xd5\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\xd5\xd5\xd5\xd5\xd5\xd5\xd5\x55\x55\x55\x55\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\x55\x55\xd5\xd5\xd5\xd5\xd5\x55\x55\xd5\xd5\xd5\xd5\xd5\x55\xd4\x54\xd1\x5e\xd9\x5e\xc4\x4b\xf2\x66\x96\x24\x2a\x2f\x2e\x2d\x2d\x23\x20\x21\x26\x27\x24\x3a\x3b\x39\x3f\x3d\x33\x31\x36\x34\x0a\x09\x0c\x02\x01\x04\x18\x1d\x16\x69\x67\x71\x51\xca\xfa\xe2\xea\x96\x93\x9c\x99\x9a\x84\x87\x81\x80\x83\x82\x8c\x8f\x8e\x89\x88\x8b\x8a\x8a\xb5\xb5\xb4\xb4\xb4\xb4\xb7"));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
($sock_a, $sock_b) = new_call([qw(198.51.100.1 4040)], [qw(198.51.100.3 4042)]);
|
|
|
|
|
|
($port_a) = offer('EVS forward br=96', { codec => { transcode => ['EVS/16000/1///hf-only=1;br=96'] } }, <<SDP);
|
|
|
v=0
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.3
|
|
|
s=tester
|
|
|
t=0 0
|
|
|
m=audio 4040 RTP/AVP 8 0
|
|
|
c=IN IP4 198.51.100.3
|
|
|
a=sendrecv
|
|
|
--------------------------------------
|
|
|
v=0
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.3
|
|
|
s=tester
|
|
|
t=0 0
|
|
|
m=audio PORT RTP/AVP 8 0 96
|
|
|
c=IN IP4 203.0.113.1
|
|
|
a=rtpmap:8 PCMA/8000
|
|
|
a=rtpmap:0 PCMU/8000
|
|
|
a=rtpmap:96 EVS/16000
|
|
|
a=fmtp:96 hf-only=1; br=96
|
|
|
a=sendrecv
|
|
|
a=rtcp:PORT
|
|
|
SDP
|
|
|
|
|
|
($port_b) = answer('EVS forward br=96', { }, <<SDP);
|
|
|
v=0
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.3
|
|
|
s=tester
|
|
|
t=0 0
|
|
|
m=audio 4042 RTP/AVP 96
|
|
|
c=IN IP4 198.51.100.3
|
|
|
a=rtpmap:96 EVS/16000
|
|
|
a=fmtp:96 hf-only=1;br=96
|
|
|
a=sendrecv
|
|
|
----------------------------------
|
|
|
v=0
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.3
|
|
|
s=tester
|
|
|
t=0 0
|
|
|
m=audio PORT RTP/AVP 8
|
|
|
c=IN IP4 203.0.113.1
|
|
|
a=rtpmap:8 PCMA/8000
|
|
|
a=sendrecv
|
|
|
a=rtcp:PORT
|
|
|
SDP
|
|
|
|
|
|
|
|
|
snd($sock_a, $port_b, rtp(8, 2000, 4000, 0x3456, "\x2b" x 160));
|
|
|
Time::HiRes::usleep(20000); # no output, resampling delay
|
|
|
snd($sock_a, $port_b, rtp(8, 2001, 4160, 0x3456, "\x2b" x 160));
|
|
|
($ssrc) = rcv($sock_b, $port_a, rtpm(96, 2000, 4000, -1, "\x0a\x1e\xe2\xcb\xc6\x8e\x3e\xa5\xf7\x78\xd1\xc1\x70\x73\xb8\xf7\x9d\xff\xf3\xc0\x11\x77\x98\xb0\x7a\xed\xad\x1a\xdb\x42\x92\xfe\xc9\xeb\x63\x45\xb5\x7f\x73\xd1\x4d\xff\x1e\xba\x9c\x24\x9b\x16\x1b\x34\x8e\xf5\xef\xe8\x6c\x47\x14\x1a\x41\x10\xb1\x19\x54\xf1\x0c\x28\x64\x75\xf9\x29\x56\xa4\x52\x41\x75\x2d\xe2\x23\x7d\x88\xaa\xa8\x1b\xbb\xff\xdd\xda\x22\x52\x25\xdd\xdf\xee\xea\x20\x6d\x5e\x2a\xf6\x1a\x13\x28\x68\x63\x0d\x19\x8b\x96\xbf\xda\xfd\x0a\x8f\x18\x4c\xd0\x8c\x1f\x49\x3e\xb5\xfe\xd5\xab\x80\x81\x70\x63\xf7\x11\xe7\x3b\x88\xf4\xf0\x0f\x88\x7d\x47\x28\x44\x4d\xaa\xdd\x07\xcf\x9c\x73\x53\xbd\x42\x90\x08\x8d\x3f\x20\x4f\xf8\x78\x7d\x5a\xce\x90\xc6\x38\xc2\xe6\x95\x3f\xe6\x8a\xd8\x30\x99\xad\x83\x21\x06\xe5\x3b\x4e\xfe\x85\x08\x81\x95\xe3\xdc\xba\xaa\xb5\x9c\xce\x63\x23\x39\xb9\x99\x19\x99\xd9\xcc\x4c\x4e\xce\xc4\xc6\x00\x00\x00\x05\xe0\x24\x98\xa9\xc0\x3f\x9f\x0d\x12\x5e\x6a\x43\xe2\x87\x85\x32\x64\x84\x6e\x2b\xed\xb6\xcb\xa6\x80\x32\xfd\x47\xc9\x6f"));
|
|
|
snd($sock_a, $port_b, rtp(8, 2002, 4320, 0x3456, "\x2b" x 160));
|
|
|
rcv($sock_b, $port_a, rtpm(96, 2001, 4320, $ssrc, "\x0a\x0a\x1b\xfb\x35\x8f\x01\xc0\x08\x56\x4f\x80\x42\x1a\x9b\x75\xaa\x99\x4e\x27\xfa\x2a\xc8\xd0\xaa\x81\x76\x67\x17\x82\x3b\x7b\xab\x25\x0b\xc4\xd7\x01\x97\x58\x2a\xe2\xd4\xf6\x3e\xfb\xa6\x71\x0b\xac\xfe\x5c\x9b\x67\xff\xff\xff\xf0\x3c\x83\x48\xda\xad\x29\x56\xaa\x96\xaa\x96\x95\x2a\x55\x6a\x4d\x4b\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8a\x60\xd2\xe8\x1c\x5f\x4e\xf5\x9d"));
|
|
|
|
|
|
snd($sock_b, $port_a, rtp(96, 6000, 7000, 0x9876, "\x0a\x1e\xe2\xdb\xc6\x8e\x3f\x0e\xd3\x01\xef\x0e\xc0\x39\xdc\x7b\xce\xff\xf9\xe0\x08\xb8\xbf\xa8\xcc\x4a\x61\xdb\xe6\x0d\xa3\x46\xd7\x2d\xb6\x13\x5d\x58\x60\x27\x68\x31\xa4\x99\x92\x74\xfb\xb0\x44\xdc\x8c\xc1\xf7\x5b\x37\x58\x64\x47\xb7\x56\x72\x57\x85\xc8\xf8\xbd\x72\x37\x94\x84\x87\x41\x63\x22\x2b\xbd\x11\x1b\xec\x45\x55\x40\xdd\xdf\xfe\xee\xd1\x11\x11\x2e\xee\xef\xbb\x48\x83\x52\x96\x9f\x0b\x0d\x01\x39\x30\x66\xb2\xb3\x95\xf7\x7d\x1b\x7c\x83\x6f\x9d\x06\x92\x49\x06\x74\x95\xeb\x2a\x81\x02\xc2\x48\xf8\x61\x9d\x57\xa3\xb8\x8f\x4f\x01\x4b\x66\x57\xbf\x68\x94\x15\x98\x0a\xf2\x53\xc9\xa8\xdb\xa8\xe3\xbf\x47\x44\x8a\xb0\x5a\xbd\x1a\x9e\xb5\x29\xf9\x4c\x46\xd3\xb9\x94\xe6\x9c\x05\xf6\x2c\x53\x32\xba\x07\xc8\x97\x9e\x09\x13\xaf\x82\xf6\xde\x07\x53\x50\x7e\x3a\xaa\xb5\x9c\xce\x63\x23\x33\x39\x99\x8c\x9a\xaa\xca\xaa\x35\x55\x9b\x4c\x03\x13\x1a\x44\x69\x8c\x26\xf0\xd6\x02\x56\x98\x6b\x77\x17\x4e\x28\x16\xb5\x8c\x22\xc0\xf2\x97\x2d\xa3\xb8\x43\xae\x45\x32\xf5"));
|
|
|
Time::HiRes::usleep(20000); # no output, resampling delay
|
|
|
snd($sock_b, $port_a, rtp(96, 6001, 7320, 0x9876, "\x0a\x0a\x1b\xcb\x12\xa5\x0f\xbe\x00\x42\xb2\x7c\x01\x4c\xfa\x7c\x89\xa8\x1f\x1b\xd0\x5f\x34\x11\x55\xc9\x58\x27\x63\xad\x74\x4b\x9a\xe4\xa2\x1c\x9b\xa2\x25\xe3\xa3\x22\xb0\x0b\x55\x0f\x66\xf2\x73\x9a\x88\xf6\x43\xff\xff\xff\xff\xfd\x6a\x77\x2a\x7a\x46\xd5\x69\x4a\xb5\x54\xb5\x54\xb5\x54\xa9\x55\x94\xd5\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd8\x4a\x45\x94\xa5\x60\xd6\x6e\xd6\x4b\x84"));
|
|
|
($ssrc) = rcv($sock_a, $port_b, rtpm(8, 6000, 7000, -1, "\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\x55\x55\x55\x55\x55\xd5\x55\xd5\xd5\xd5\x55\x55\x55\x55\x55\xd5\xd5\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\xd5\xd5\xd5\xd5\xd5\xd5\xd5\x55\x55\x55\x55\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\x55\x55\xd5\xd5\xd5\xd5\xd5\x55\x55\xd5\xd5\xd5\xd5\xd5\x55\xd4\x54\xd1\x5e\xd9\x5e\xc4\x4b\xf2\x66\x96\x24\x2a\x2f\x2e\x2d\x2d\x23\x20\x21\x26\x27\x24\x3a\x3b\x39\x3f\x3d\x33\x31\x36\x34\x0a\x09\x0c\x02\x01\x04\x18\x1d\x16\x69\x67\x71\x51\xca\xfa\xe2\xea\x96\x93\x9c\x99\x9a\x84\x87\x81\x80\x83\x82\x8c\x8f\x8e\x89\x88\x8b\x8a\x8a\xb5\xb5\xb4\xb4\xb4\xb4\xb7"));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
($sock_a, $sock_b) = new_call([qw(198.51.100.1 4044)], [qw(198.51.100.3 4046)]);
|
|
|
|
|
|
($port_a) = offer('EVS forward br=24.4-96', { codec => { transcode => ['EVS/16000/1///hf-only=1;br=24.4-96'] } }, <<SDP);
|
|
|
v=0
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.3
|
|
|
s=tester
|
|
|
t=0 0
|
|
|
m=audio 4044 RTP/AVP 8 0
|
|
|
c=IN IP4 198.51.100.3
|
|
|
a=sendrecv
|
|
|
--------------------------------------
|
|
|
v=0
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.3
|
|
|
s=tester
|
|
|
t=0 0
|
|
|
m=audio PORT RTP/AVP 8 0 96
|
|
|
c=IN IP4 203.0.113.1
|
|
|
a=rtpmap:8 PCMA/8000
|
|
|
a=rtpmap:0 PCMU/8000
|
|
|
a=rtpmap:96 EVS/16000
|
|
|
a=fmtp:96 hf-only=1; br=24.4-96
|
|
|
a=sendrecv
|
|
|
a=rtcp:PORT
|
|
|
SDP
|
|
|
|
|
|
($port_b) = answer('EVS forward br=24.4-96', { }, <<SDP);
|
|
|
v=0
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.3
|
|
|
s=tester
|
|
|
t=0 0
|
|
|
m=audio 4046 RTP/AVP 96
|
|
|
c=IN IP4 198.51.100.3
|
|
|
a=rtpmap:96 EVS/16000
|
|
|
a=fmtp:96 hf-only=1;br=24.4-96
|
|
|
a=sendrecv
|
|
|
----------------------------------
|
|
|
v=0
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.3
|
|
|
s=tester
|
|
|
t=0 0
|
|
|
m=audio PORT RTP/AVP 8
|
|
|
c=IN IP4 203.0.113.1
|
|
|
a=rtpmap:8 PCMA/8000
|
|
|
a=sendrecv
|
|
|
a=rtcp:PORT
|
|
|
SDP
|
|
|
|
|
|
|
|
|
snd($sock_a, $port_b, rtp(8, 2000, 4000, 0x3456, "\x2b" x 160));
|
|
|
Time::HiRes::usleep(20000); # no output, resampling delay
|
|
|
snd($sock_a, $port_b, rtp(8, 2001, 4160, 0x3456, "\x2b" x 160));
|
|
|
($ssrc) = rcv($sock_b, $port_a, rtpm(96, 2000, 4000, -1, "\x06\x4f\x0d\x27\x98\x19\x62\x11\x54\x00\x04\x00\x04\x00\x04\x00\x04\x05\xff\x80\x00\x04\x00\x2e\x1c\x19\xde\x80\x05\xe3\xf1\x87\x38\x71\x40\xc0\xa9\x65\x52\x4b\xa0\x19\x0e\x82\x63\x66\x8e\x93\x4b\x0a\xce\x80\x16\x66\xfe\x7a\x10\x54\x1b\x60\xa8\x0d"));
|
|
|
snd($sock_a, $port_b, rtp(8, 2002, 4320, 0x3456, "\x2b" x 160));
|
|
|
rcv($sock_b, $port_a, rtpm(96, 2001, 4320, $ssrc, "\x06\x4e\x0b\x34\x77\xa9\xe0\x00\x4b\xfa\xa3\xaa\x8c\x91\x8b\xd3\x88\x16\x9f\xbb\x9d\x29\x54\x42\x62\x7d\x74\xb2\x64\x02\x78\xb7\xa5\xee\xf2\xeb\xab\x99\x10\xaa\x6a\x7b\x82\xa1\xa0\x61\xca\x1b\x3a\xc9\x0a\x5a\x97\x87\xdf\xa5\x8b\xea\xe8\x3f\x59\x20"));
|
|
|
|
|
|
snd($sock_b, $port_a, rtp(96, 6000, 7000, 0x9876, "\x06\x4e\x0d\x36\x5e\x37\x02\x19\x54\x00\x04\x00\x04\x00\x04\x00\x04\x05\xff\x80\x01\x00\x00\x14\x01\x0c\x51\x80\x05\xe3\x67\x22\x86\xa8\x57\x3e\xea\x34\xd1\xa3\xa0\x3c\x70\x3b\xd8\xbb\x7e\x99\x42\x0e\x0e\x98\x9c\x8a\xc7\x36\xfa\x22\x5b\x2c\x28\xb1"));
|
|
|
Time::HiRes::usleep(20000); # no output, resampling delay
|
|
|
snd($sock_b, $port_a, rtp(96, 6001, 7320, 0x9876, "\x06\x4e\x0b\x34\x7f\xa9\xe0\x08\x9d\xe3\x08\x04\x4b\x50\x7d\xd9\x94\x43\xff\x0b\x7b\x7e\x13\xd6\x3a\x72\x60\xe5\xe3\x42\x43\x94\x08\xa6\x96\x25\x4e\x9e\x11\x7a\xfe\x37\xd9\x05\x61\xf0\xdf\x8d\x5b\x44\x85\xc8\x8b\x64\x0c\x1f\xa7\x7c\x8e\xe1\x15\x2c"));
|
|
|
($ssrc) = rcv($sock_a, $port_b, rtpm(8, 6000, 7000, -1, "\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\x57\x50\x53\x53\x53\x53\x53\x50\x51\x56\x57\x54\x55\xd5\xd5\xd5\xd4\xd4\xd4\xd4\xd4\xd4\xd4\xd4\xd4\xd4\xd4\xd4\xd4\xd4\xd4\xd4\xd6\xd0\xd0\xd3\xd3\xd3\xd1\xd1\xd1\xd6\xd6\xd7\xd7\xd7\xd4\xd4\xd4\xd4\xd4\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\x55\x55\x54\x57\x56\x56\x51\x51\x53\x53\x5d\x52\x5f\x50\x59\x58\x16\x05\x1f\x1e\x1c\x13\x14\x14\x15\x6a\x6b\x6d\x62\x60\x60\x67\x64\x78\x64\x1f\x05\x07\x01\x03\x02\x0d\x0d\x02\x02\x03\x02\x00\x01\x06\x07\x04\x05\x19\x1d\x12\x6b\x69\x6e\x64\x61\x65\x75\x41\xdc\xf6\xfa\xff\xf8\xe6\xe3\xe2\xed\xee\xe9\x95\x94\x96\x90\x93"));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
($sock_a, $sock_b) = new_call([qw(198.51.100.1 4048)], [qw(198.51.100.3 4050)]);
|
|
|
|
|
|
# mode 8, restrict to NB -> mode 6
|
|
|
($port_a) = offer('EVS forward bw=nb', { codec => { transcode => ['EVS/16000/1/48800//hf-only=1;bw=nb'] } }, <<SDP);
|
|
|
v=0
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.3
|
|
|
s=tester
|
|
|
t=0 0
|
|
|
m=audio 4048 RTP/AVP 8 0
|
|
|
c=IN IP4 198.51.100.3
|
|
|
a=sendrecv
|
|
|
--------------------------------------
|
|
|
v=0
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.3
|
|
|
s=tester
|
|
|
t=0 0
|
|
|
m=audio PORT RTP/AVP 8 0 96
|
|
|
c=IN IP4 203.0.113.1
|
|
|
a=rtpmap:8 PCMA/8000
|
|
|
a=rtpmap:0 PCMU/8000
|
|
|
a=rtpmap:96 EVS/16000
|
|
|
a=fmtp:96 hf-only=1; bw=nb
|
|
|
a=sendrecv
|
|
|
a=rtcp:PORT
|
|
|
SDP
|
|
|
|
|
|
($port_b) = answer('EVS forward bw=nb', { }, <<SDP);
|
|
|
v=0
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.3
|
|
|
s=tester
|
|
|
t=0 0
|
|
|
m=audio 4050 RTP/AVP 96
|
|
|
c=IN IP4 198.51.100.3
|
|
|
a=rtpmap:96 EVS/16000
|
|
|
a=fmtp:96 hf-only=1;bw=nb
|
|
|
a=sendrecv
|
|
|
----------------------------------
|
|
|
v=0
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.3
|
|
|
s=tester
|
|
|
t=0 0
|
|
|
m=audio PORT RTP/AVP 8
|
|
|
c=IN IP4 203.0.113.1
|
|
|
a=rtpmap:8 PCMA/8000
|
|
|
a=sendrecv
|
|
|
a=rtcp:PORT
|
|
|
SDP
|
|
|
|
|
|
|
|
|
snd($sock_a, $port_b, rtp(8, 2000, 4000, 0x3456, "\x2b" x 160));
|
|
|
Time::HiRes::usleep(20000); # no output, resampling delay
|
|
|
snd($sock_a, $port_b, rtp(8, 2001, 4160, 0x3456, "\x2b" x 160));
|
|
|
($ssrc) = rcv($sock_b, $port_a, rtpm(96, 2000, 4000, -1, "\x06\x0d\x67\x75\x25\x45\x64\x10\x80\x00\x80\x80\x00\x00\x00\x00\x80\x80\x00\x00\xbf\xf9\x7f\xfa\xe6\x0f\x99\x33\x2c\x7a\x0e\xb9\xeb\x47\x40\x50\x64\x01\x81\x8e\xa6\x6c\x6f\x64\x18\xa0\x32\x71\x40\xfd\x34\x00\x5c\x3d\x23\x61\x82\x2d\x77\x82\x94\x86"));
|
|
|
snd($sock_a, $port_b, rtp(8, 2002, 4320, 0x3456, "\x2b" x 160));
|
|
|
rcv($sock_b, $port_a, rtpm(96, 2001, 4320, $ssrc, "\x06\x0d\xe4\x73\x07\x88\x40\x05\x59\x17\xeb\xbe\x1c\xbb\xf3\x98\x6c\x2f\x81\x11\x13\xe1\x3f\xb7\x13\xb7\xe9\x18\xaa\xfd\x63\x61\x59\x92\x82\x6a\x83\x97\x74\x5c\x50\x09\xaf\x1b\x63\x32\x32\xc5\x9b\x43\xc9\xfe\xbc\x0e\x20\xce\x53\x97\x94\xa9\x52\x17"));
|
|
|
|
|
|
snd($sock_b, $port_a, rtp(96, 6000, 7000, 0x9876, "\x06\x0d\x67\x75\x25\x45\x64\x10\x80\x00\x80\x80\x00\x00\x00\x00\x80\x80\x00\x00\xbf\xf9\x7f\xfa\xa6\x0f\x99\x7b\x5e\x1e\x0f\x29\xe8\xf7\x40\x45\x0e\x18\x03\xa9\x2f\x74\x32\xc8\x18\x20\x6d\xd1\x40\x43\xfd\x38\x6a\x85\x6f\x40\x12\x76\x69\x83\x83\x06"));
|
|
|
Time::HiRes::usleep(20000); # no output, resampling delay
|
|
|
snd($sock_b, $port_a, rtp(96, 6001, 7320, 0x9876, "\x06\x0d\xe4\x73\x6a\x88\x40\x13\x46\xe3\x8e\x0d\xb8\x26\x57\xe2\x59\x37\x07\xb0\xd3\xe4\x17\xbb\xcb\x12\x2b\xae\xc2\x3a\x17\x64\x58\xc2\xc2\x62\xaf\x5d\x5e\xea\x90\x94\x6b\x90\xdf\xd6\xa0\x05\x9d\x08\x36\xc2\x80\xe7\x9f\x4f\x9e\xcc\xf9\x38\xec\x1a"));
|
|
|
($ssrc) = rcv($sock_a, $port_b, rtpm(8, 6000, 7000, -1, "\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\x55\xd5\x56\x5f\x5a\x5a\x5a\x5b\x58\x59\x5f\x5d\x53\x51\x56\x54\x55\xd5\xd4\xd4\xd7\xd7\xd7\xd7\xd6\xd5\x50\x5c\x5f\x5f\x5f\x5c\x5d\x53\x50\x56\x57\x55\xd5\xd4\xd4\xd7\xd7\xd7\xd4\xd4\xd4\xd5\xd4\x54\x5d\x6b\x16\x14\x11\x17\x11\x17\x17\x14\x14\x6a\x69\x6f\x62\x60\x66\x65\x7b\x73\x6e\x1d\x16\x10\x14\x11\x18\x04\x65\x3c\x2d\x21\x20\x21\x27\x24\x24\x25\x25\x3b\x39\x3e\x3c\x33\x30\x36\x37\x36\x37\x36\x34\x0b\x0f\x02\x06\x1a\x1d\x12\x16\x14\x6c\x7d\x40\xda\xf4\xf0\xe0\xec\xf8\xe8\x96\x9f\x9e\x84\x87\x81\x83\x82\x8c\x8f\x89\x88\x8b\x8b\x8a\xb5\xb5\xb5\xb5\xb4\xb4\xb4\xb7"));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
($sock_a, $sock_b) = new_call([qw(198.51.100.1 4052)], [qw(198.51.100.3 4054)]);
|
|
|
|
|
|
($port_a) = offer('EVS forward cmr=1', { codec => { transcode => ['EVS/16000/1///cmr=1'] } }, <<SDP);
|
|
|
v=0
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.3
|
|
|
s=tester
|
|
|
t=0 0
|
|
|
m=audio 4052 RTP/AVP 8 0
|
|
|
c=IN IP4 198.51.100.3
|
|
|
a=sendrecv
|
|
|
--------------------------------------
|
|
|
v=0
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.3
|
|
|
s=tester
|
|
|
t=0 0
|
|
|
m=audio PORT RTP/AVP 8 0 96
|
|
|
c=IN IP4 203.0.113.1
|
|
|
a=rtpmap:8 PCMA/8000
|
|
|
a=rtpmap:0 PCMU/8000
|
|
|
a=rtpmap:96 EVS/16000
|
|
|
a=fmtp:96 cmr=1
|
|
|
a=sendrecv
|
|
|
a=rtcp:PORT
|
|
|
SDP
|
|
|
|
|
|
($port_b) = answer('EVS forward cmr=1', { }, <<SDP);
|
|
|
v=0
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.3
|
|
|
s=tester
|
|
|
t=0 0
|
|
|
m=audio 4054 RTP/AVP 96
|
|
|
c=IN IP4 198.51.100.3
|
|
|
a=rtpmap:96 EVS/16000
|
|
|
a=fmtp:96 cmr=1
|
|
|
a=sendrecv
|
|
|
----------------------------------
|
|
|
v=0
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.3
|
|
|
s=tester
|
|
|
t=0 0
|
|
|
m=audio PORT RTP/AVP 8
|
|
|
c=IN IP4 203.0.113.1
|
|
|
a=rtpmap:8 PCMA/8000
|
|
|
a=sendrecv
|
|
|
a=rtcp:PORT
|
|
|
SDP
|
|
|
|
|
|
|
|
|
snd($sock_a, $port_b, rtp(8, 2000, 4000, 0x3456, "\x2b" x 160));
|
|
|
Time::HiRes::usleep(20000); # no output, resampling delay
|
|
|
snd($sock_a, $port_b, rtp(8, 2001, 4160, 0x3456, "\x2b" x 160));
|
|
|
($ssrc) = rcv($sock_b, $port_a, rtpm(96, 2000, 4000, -1, "\xff\x05\x4d\xa4\xf3\x03\x2c\x42\x2a\x80\x80\x80\x80\x80\x2f\xfc\x00\x02\x94\x03\xfa\xaf\x1f\xa7\xde\x50\x30\x8a\x3a\x01\x5a\xc0\x3f\xc3\x62\x76\x94\xa8\x26\x17\x83\x57\x8a"));
|
|
|
snd($sock_a, $port_b, rtp(8, 2002, 4320, 0x3456, "\x2b" x 160));
|
|
|
rcv($sock_b, $port_a, rtpm(96, 2001, 4320, $ssrc, "\xff\x05\x4d\x66\x8e\xf5\x3c\x00\x00\x35\x96\x24\x96\x82\x3a\x9c\x76\xa2\xa0\xd7\x61\x1e\x13\xfd\x63\x81\x40\x87\x25\xbc\xc7\x82\x6b\xb1\x0d\x29\x98\x1f\xbf\x09\x11\x56\xa0"));
|
|
|
|
|
|
snd($sock_b, $port_a, rtp(96, 6000, 7000, 0x9876, "\xff\x05\x4d\xa6\xcb\xc6\xe0\x43\x2a\x80\x80\x80\x80\x80\x2f\xfc\x00\x00\x14\x03\x5a\xaf\x1c\xc8\x3e\xe1\x30\x92\x3a\x01\x80\x6a\xe7\x47\x61\x15\x00\x0e\x09\xdb\x02\xc5\x77"));
|
|
|
Time::HiRes::usleep(20000); # no output, resampling delay
|
|
|
snd($sock_b, $port_a, rtp(96, 6001, 7320, 0x9876, "\xff\x05\x4d\x66\x8f\xf5\x3c\x01\x13\x87\x19\x19\xb4\x84\x9f\xe2\x6f\xe0\xfe\x93\x2f\x94\x12\x00\x04\x9e\x90\x81\xac\x9a\x67\x8c\x68\xb1\xa1\x9a\x09\x04\x64\xf0\xbc\x38\x20"));
|
|
|
($ssrc) = rcv($sock_a, $port_b, rtpm(8, 6000, 7000, -1, "\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\x55\x57\x50\x53\x53\x53\x53\x53\x50\x51\x56\x57\x54\x55\xd5\xd5\xd5\xd4\xd4\xd4\xd4\xd4\xd4\xd4\xd4\xd4\xd4\xd4\xd4\xd4\xd4\xd4\xd4\xd6\xd0\xd0\xd3\xd3\xd0\xd1\xd1\xd6\xd6\xd7\xd7\xd7\xd4\xd4\xd4\xd4\xd4\xd4\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\x55\x54\x57\x51\x53\x5d\x5f\x59\x59\x5b\x58\x45\x58\x47\x5e\x45\x74\x13\x02\x02\x02\x02\x03\x03\x02\x02\x00\x01\x06\x06\x07\x04\x05\x1b\x19\x19\x06\x00\x01\x03\x02\x0c\x0c\x0d\x02\x03\x00\x01\x06\x07\x04\x05\x1b\x19\x1f\x1d\x13\x17\x15\x69\x6f\x6c\x6f\x6f\x63\x64\x73\x48\xd0\xf4\xf3\xe6\xe3\xeb\x97\x93\x9d\x9c\x98\x98\x85"));
|
|
|
|
|
|
|
|
|
|
|
|
($sock_a, $sock_b) = new_call([qw(198.51.100.1 4056)], [qw(198.51.100.3 4058)]);
|
|
|
|
|
|
($port_a) = offer('EVS forward AMR mode-set',
|
|
|
{ codec => { transcode => ['EVS/16000/1///evs-mode-switch=1;mode-set=2'] } }, <<SDP);
|
|
|
v=0
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.3
|
|
|
s=tester
|
|
|
t=0 0
|
|
|
m=audio 4056 RTP/AVP 8 0
|
|
|
c=IN IP4 198.51.100.3
|
|
|
a=sendrecv
|
|
|
--------------------------------------
|
|
|
v=0
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.3
|
|
|
s=tester
|
|
|
t=0 0
|
|
|
m=audio PORT RTP/AVP 8 0 96
|
|
|
c=IN IP4 203.0.113.1
|
|
|
a=rtpmap:8 PCMA/8000
|
|
|
a=rtpmap:0 PCMU/8000
|
|
|
a=rtpmap:96 EVS/16000
|
|
|
a=fmtp:96 evs-mode-switch=1; mode-set=2
|
|
|
a=sendrecv
|
|
|
a=rtcp:PORT
|
|
|
SDP
|
|
|
|
|
|
($port_b) = answer('EVS forward AMR mode-set', { }, <<SDP);
|
|
|
v=0
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.3
|
|
|
s=tester
|
|
|
t=0 0
|
|
|
m=audio 4058 RTP/AVP 96
|
|
|
c=IN IP4 198.51.100.3
|
|
|
a=rtpmap:96 EVS/16000
|
|
|
a=fmtp:96 evs-mode-switch=1; mode-set=2
|
|
|
a=sendrecv
|
|
|
----------------------------------
|
|
|
v=0
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.3
|
|
|
s=tester
|
|
|
t=0 0
|
|
|
m=audio PORT RTP/AVP 8
|
|
|
c=IN IP4 203.0.113.1
|
|
|
a=rtpmap:8 PCMA/8000
|
|
|
a=sendrecv
|
|
|
a=rtcp:PORT
|
|
|
SDP
|
|
|
|
|
|
|
|
|
snd($sock_a, $port_b, rtp(8, 2000, 4000, 0x3456, "\x2b" x 160));
|
|
|
Time::HiRes::usleep(20000); # no output, resampling delay
|
|
|
snd($sock_a, $port_b, rtp(8, 2001, 4160, 0x3456, "\x2b" x 160));
|
|
|
($ssrc) = rcv($sock_b, $port_a, rtpm(96, 2000, 4000, -1, "\xf1\x11\x84\xa6\x30\xee\x84\xfd\x56\x02\x11\x05\xe0\xba\x1f\xe0\xa8\x8a\xaa\xaa\x88\xac\x8a\x8a\xa8\xae\x88\xcc\x88\x8a\x0e\x0d"));
|
|
|
snd($sock_a, $port_b, rtp(8, 2002, 4320, 0x3456, "\x2b" x 160));
|
|
|
rcv($sock_b, $port_a, rtpm(96, 2001, 4320, $ssrc, "\xfc\x73\x1e\x7c\x38\x8f\x83\xc9\x76\x41\x35\x71\xc5\x22\x6e\xbe\x00\x01\xad\x62\x78\x89\xe4\xe6\x00\x3c\x65\x8a\x21\x90\x45\xbd"));
|
|
|
|
|
|
snd($sock_b, $port_a, rtp(96, 6000, 7000, 0x9876, "\xf9\x41\x84\xa6\x30\xee\x84\xc8\x34\x40\x18\x15\xa1\xde\x1f\xe0\x88\x2a\xaa\xaa\xa8\x88\x8c\xae\xa8\x4e\x8e\x88\x88\xae\x48\x03"));
|
|
|
Time::HiRes::usleep(20000); # no output, resampling delay
|
|
|
snd($sock_b, $port_a, rtp(96, 6001, 7320, 0x9876, "\xfc\x73\x1a\x5e\x7c\x07\x87\xc9\x76\xd1\xb7\x71\x71\xa0\x75\x3e\xe2\x61\x41\xca\xfa\x68\x29\xe6\xf5\x34\xac\xae\x00\xf7\x7e\x41"));
|
|
|
($ssrc) = rcv($sock_a, $port_b, rtpm(8, 6000, 7000, -1, "\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\x55\x55\xd5\xd5\xd5\xd4\xd7\xd4\xd6\xde\xc5\xda\xd9\xdc\xd3\x55\x50\x5d\x52\x52\x5f\x5c\x53\xd4\xdd\xdf\xdc\xd8\xc2\xcd\xc3\xc6\xdb\xdb\xc4\xc4\xd8\xdc\xdc\xdd\xd1\xd4\x54\x56\x51\x50\x50\x57\xdd\xc6\xcd\xc3\xc6\xc6\xc3\xc2\xc6\xd9\xd7\x55\x55\xd0\xcc\xf4\xf6\xf0\xf1\xcd\xd8\xdb\xdf\xd4\x5e\x5a\x5f\x56\x54\x54\x54\xdc\xc2\xc9\xcc\xc5\xdd\x54\x46\x77\x7c\x7b\x7b\x7f\x70\x49\x5e\xd7\xce\x65\x19\x06\x06\x1e\x69\x64\x71\xda\xfb\x95\x86\x8e\x8f\x87\x96\xe6\x60\x01\x08\x35\x0a\x0e\x01\x1c\x70\xe2\x9f\x84\x87\x9b\x96\xf6\x74\x6f\x11\x6e\x50\xe4\x94\x92\x98\x87\x80\x83\x80\x85\x96\xe4\xc8\xc5"));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
($sock_a, $sock_b) = new_call([qw(198.51.100.1 4060)], [qw(198.51.100.3 4062)]);
|
|
|
|
|
|
($port_a) = offer('EVS forward AMR mode-set higher',
|
|
|
{ codec => { transcode => ['EVS/16000/1///evs-mode-switch=1;mode-set=7'] } }, <<SDP);
|
|
|
v=0
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.3
|
|
|
s=tester
|
|
|
t=0 0
|
|
|
m=audio 4060 RTP/AVP 8 0
|
|
|
c=IN IP4 198.51.100.3
|
|
|
a=sendrecv
|
|
|
--------------------------------------
|
|
|
v=0
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.3
|
|
|
s=tester
|
|
|
t=0 0
|
|
|
m=audio PORT RTP/AVP 8 0 96
|
|
|
c=IN IP4 203.0.113.1
|
|
|
a=rtpmap:8 PCMA/8000
|
|
|
a=rtpmap:0 PCMU/8000
|
|
|
a=rtpmap:96 EVS/16000
|
|
|
a=fmtp:96 evs-mode-switch=1; mode-set=7
|
|
|
a=sendrecv
|
|
|
a=rtcp:PORT
|
|
|
SDP
|
|
|
|
|
|
($port_b) = answer('EVS forward AMR mode-set higher', { }, <<SDP);
|
|
|
v=0
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.3
|
|
|
s=tester
|
|
|
t=0 0
|
|
|
m=audio 4062 RTP/AVP 96
|
|
|
c=IN IP4 198.51.100.3
|
|
|
a=rtpmap:96 EVS/16000
|
|
|
a=fmtp:96 evs-mode-switch=1; mode-set=7
|
|
|
a=sendrecv
|
|
|
----------------------------------
|
|
|
v=0
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.3
|
|
|
s=tester
|
|
|
t=0 0
|
|
|
m=audio PORT RTP/AVP 8
|
|
|
c=IN IP4 203.0.113.1
|
|
|
a=rtpmap:8 PCMA/8000
|
|
|
a=sendrecv
|
|
|
a=rtcp:PORT
|
|
|
SDP
|
|
|
|
|
|
|
|
|
snd($sock_a, $port_b, rtp(8, 2000, 4000, 0x3456, "\x2b" x 160));
|
|
|
Time::HiRes::usleep(20000); # no output, resampling delay
|
|
|
snd($sock_a, $port_b, rtp(8, 2001, 4160, 0x3456, "\x2b" x 160));
|
|
|
($ssrc) = rcv($sock_b, $port_a, rtpm(96, 2000, 4000, -1, "\xf1\x11\x84\xa6\x30\xee\x84\xfd\x56\x02\x11\x05\xe0\xba\x00\x0d\x0c\x70\x3c\x21\x41\xd0\x1b\x48\xc4\xd8\x02\x14\xb7\xd7\xb4\xb9\x2d\x38\xd4\x5a\xce\x10\x13\xa3\x4d\xe8\x88\x62\x32\x05\xb0\xf1\xa9\x05\x1e\xd8\xd8\xc0\x14\x58\x1b\x05"));
|
|
|
snd($sock_a, $port_b, rtp(8, 2002, 4320, 0x3456, "\x2b" x 160));
|
|
|
rcv($sock_b, $port_a, rtpm(96, 2001, 4320, $ssrc, "\xf8\x73\x1e\x7e\x7b\x0e\x87\xc9\x76\x40\x37\x71\xc1\x21\xf7\xb1\x00\x42\xc3\xe6\xd9\x93\xd3\x7c\xb2\xbf\x88\xbd\xa6\x4a\xeb\xc2\x63\x89\xd7\xb3\x04\x4a\x3f\xc1\xd2\xe8\x88\x39\x32\x1d\xba\x8d\x58\x35\xf3\xfc\x8a\xdb\x92\xa3\x7b\xab"));
|
|
|
|
|
|
snd($sock_b, $port_a, rtp(96, 6000, 7000, 0x9876, "\xf9\x41\x84\xa6\x30\xee\x84\xc8\x34\x40\x18\x15\xa1\xde\x08\x49\x04\x71\x3c\x01\x45\x80\x59\x49\xcd\x59\x66\x34\x3f\xd3\xf4\xb1\x69\xbe\xf4\x54\x4e\xdc\x1b\x06\x43\xea\x88\x63\x70\x44\xa4\x70\xa8\x00\x3e\x40\x51\x98\x02\xd2\xb8\x89"));
|
|
|
Time::HiRes::usleep(20000); # no output, resampling delay
|
|
|
snd($sock_b, $port_a, rtp(96, 6001, 7320, 0x9876, "\xf8\x73\x26\x7e\x7a\x0e\x8b\xc9\x76\x40\xb7\x71\x71\xa5\xa4\x3a\x10\xcf\x01\x01\x50\x86\x49\x15\x1b\xf9\xda\x59\xaa\xbc\xa2\x13\x83\x84\x82\x91\x43\x00\x3d\x48\xc0\xa6\xc6\x20\x53\xfd\xfb\xf6\xbc\x34\xdd\x2c\x56\xda\x96\x34\xd4\xcb"));
|
|
|
($ssrc) = rcv($sock_a, $port_b, rtpm(8, 6000, 7000, -1, "\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\x55\x55\xd5\xd5\xd5\xd5\x55\x55\x54\x57\xd5\x54\x53\x5e\x5b\x5b\x5c\x50\x52\x53\x55\xc4\xf4\xf1\xf7\xc2\xd8\xd3\x53\x58\x44\x4c\x4e\x4d\x47\x5a\x5e\x50\x56\x54\xd5\xd9\xc3\xc0\xc3\xcb\xf1\xf3\xf7\xc3\xd0\x53\x44\x4f\x75\x74\x77\x77\x4f\x58\x53\x54\xdf\xc8\xf1\xf0\xf3\xfd\xff\xfd\xf5\xd8\x51\x44\x49\x74\x77\x75\x48\x44\x57\xd0\xdc\xdb\xc9\xf7\xc8\xce\xcb\xf4\xf0\xff\xf1\xd9\x45\x40\xd4\xde\xdd\xd9\xf1\xf9\xf9\xfe\xf1\xc4\xde\xd6\x42\x73\x61\x6b\x6b\x6d\x61\x64\x7e\x59\xf3\xe0\xe9\x95\x94\x95\xec\xfe\x52\x7d\x64\x66\x69\x6c\x5d\xe4\xec\xe8\xef\xe7\xf8\xf4\xd1\x48\x79\x77\xc2\xe6\xe3\xe7\xf2\xf7\xfd"));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
($sock_a, $sock_b) = new_call([qw(198.51.100.1 4064)], [qw(198.51.100.3 4066)]);
|
|
|
|
|
|
($port_a) = offer('EVS forward CMR', { codec => { transcode => ['EVS'] } }, <<SDP);
|
|
|
v=0
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.3
|
|
|
s=tester
|
|
|
t=0 0
|
|
|
m=audio 4064 RTP/AVP 8 0
|
|
|
c=IN IP4 198.51.100.3
|
|
|
a=sendrecv
|
|
|
--------------------------------------
|
|
|
v=0
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.3
|
|
|
s=tester
|
|
|
t=0 0
|
|
|
m=audio PORT RTP/AVP 8 0 96
|
|
|
c=IN IP4 203.0.113.1
|
|
|
a=rtpmap:8 PCMA/8000
|
|
|
a=rtpmap:0 PCMU/8000
|
|
|
a=rtpmap:96 EVS/16000
|
|
|
a=fmtp:96 dtx=0; dtx-recv=0
|
|
|
a=sendrecv
|
|
|
a=rtcp:PORT
|
|
|
SDP
|
|
|
|
|
|
($port_b) = answer('EVS forward CMR', { }, <<SDP);
|
|
|
v=0
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.3
|
|
|
s=tester
|
|
|
t=0 0
|
|
|
m=audio 4066 RTP/AVP 96
|
|
|
c=IN IP4 198.51.100.3
|
|
|
a=rtpmap:96 EVS/16000
|
|
|
a=fmtp:96 dtx=0;dtx-recv=0
|
|
|
a=sendrecv
|
|
|
----------------------------------
|
|
|
v=0
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.3
|
|
|
s=tester
|
|
|
t=0 0
|
|
|
m=audio PORT RTP/AVP 8
|
|
|
c=IN IP4 203.0.113.1
|
|
|
a=rtpmap:8 PCMA/8000
|
|
|
a=sendrecv
|
|
|
a=rtcp:PORT
|
|
|
SDP
|
|
|
|
|
|
|
|
|
snd($sock_a, $port_b, rtp(8, 2000, 4000, 0x3456, "\x2b" x 160));
|
|
|
Time::HiRes::usleep(20000); # no output, resampling delay
|
|
|
snd($sock_a, $port_b, rtp(8, 2001, 4160, 0x3456, "\x2b" x 160));
|
|
|
($ssrc) = rcv($sock_b, $port_a, rtpm(96, 2000, 4000, -1, "\x4d\xa4\xf3\x03\x2c\x42\x2a\x80\x80\x80\x80\x80\x2f\xfc\x00\x02\x94\x03\xfa\xaf\x1f\xa7\xde\x50\x30\x8a\x3a\x01\x5a\xc0\x3f\xc3\x62\x76\x94\xa8\x26\x17\x83\x57\x8a"));
|
|
|
snd($sock_a, $port_b, rtp(8, 2002, 4320, 0x3456, "\x2b" x 160));
|
|
|
rcv($sock_b, $port_a, rtpm(96, 2001, 4320, $ssrc, "\x4d\x66\x8e\xf5\x3c\x00\x00\x35\x96\x24\x96\x82\x3a\x9c\x76\xa2\xa0\xd7\x61\x1e\x13\xfd\x63\x81\x40\x87\x25\xbc\xc7\x82\x6b\xb1\x0d\x29\x98\x1f\xbf\x09\x11\x56\xa0"));
|
|
|
snd($sock_a, $port_b, rtp(8, 2003, 4480, 0x3456, "\x2b" x 160));
|
|
|
rcv($sock_b, $port_a, rtpm(96, 2002, 4640, $ssrc, "\x4d\x6c\x21\x0d\x8c\xd8\x1e\x71\xc4\xc4\xdf\xcb\xdb\xe0\x1b\x47\xb6\x90\x41\x17\x1e\x31\xc7\xc4\xfc\xc7\xa0\x09\xde\xf1\xa9\x7f\xfa\x8e\x25\x54\xe5\x8a\x98\x1c\xaf"));
|
|
|
|
|
|
snd($sock_b, $port_a, rtp(96, 6000, 7000, 0x9876, "\x4d\xa6\xcb\xc6\xe0\x43\x2a\x80\x80\x80\x80\x80\x2f\xfc\x00\x00\x14\x03\x5a\xaf\x1c\xc8\x3e\xe1\x30\x92\x3a\x01\x80\x6a\xe7\x47\x61\x15\x00\x0e\x09\xdb\x02\xc5\x77"));
|
|
|
Time::HiRes::usleep(20000); # no output, resampling delay
|
|
|
snd($sock_b, $port_a, rtp(96, 6001, 7320, 0x9876, "\x4d\x66\x8f\xf5\x3c\x01\x13\x87\x19\x19\xb4\x84\x9f\xe2\x6f\xe0\xfe\x93\x2f\x94\x12\x00\x04\x9e\x90\x81\xac\x9a\x67\x8c\x68\xb1\xa1\x9a\x09\x04\x64\xf0\xbc\x38\x20"));
|
|
|
($ssrc_b) = rcv($sock_a, $port_b, rtpm(8, 6000, 7000, -1, "\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\x55\x57\x50\x53\x53\x53\x53\x53\x50\x51\x56\x57\x54\x55\xd5\xd5\xd5\xd4\xd4\xd4\xd4\xd4\xd4\xd4\xd4\xd4\xd4\xd4\xd4\xd4\xd4\xd4\xd4\xd6\xd0\xd0\xd3\xd3\xd0\xd1\xd1\xd6\xd6\xd7\xd7\xd7\xd4\xd4\xd4\xd4\xd4\xd4\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\x55\x54\x57\x51\x53\x5d\x5f\x59\x59\x5b\x58\x45\x58\x47\x5e\x45\x74\x13\x02\x02\x02\x02\x03\x03\x02\x02\x00\x01\x06\x06\x07\x04\x05\x1b\x19\x19\x06\x00\x01\x03\x02\x0c\x0c\x0d\x02\x03\x00\x01\x06\x07\x04\x05\x1b\x19\x1f\x1d\x13\x17\x15\x69\x6f\x6c\x6f\x6f\x63\x64\x73\x48\xd0\xf4\xf3\xe6\xe3\xeb\x97\x93\x9d\x9c\x98\x98\x85"));
|
|
|
|
|
|
# send CMR for mode 7, type 2
|
|
|
snd($sock_b, $port_a, rtp(96, 6002, 7640, 0x9876, "\xa7\x05\x4d\x6c\x25\x8d\x8e\x58\x0f\x04\x84\x8f\x89\xa5\xf8\xf0\x2f\x79\x67\x70\xea\xc1\x00\x17\xa5\xc8\xe2\x9d\x1a\x00\x04\x26\xeb\x73\x5f\x85\x00\x0c\x69\xb1\xff\xbe\x4a"));
|
|
|
rcv($sock_a, $port_b, rtpm(8, 6001, 7160, $ssrc_b, "\x85\x84\x87\x86\x86\x86\x80\x81\x80\x80\x83\x83\x8d\x8d\x8d\x8c\x8d\x8c\x8d\x8d\x8d\x8d\x8d\x8d\x8d\x8d\x8d\x8d\x8d\x8d\x8d\x8d\x8d\x8d\x8d\x8d\x8d\x8d\x8d\x8d\x8d\x82\x82\x82\x83\x83\x83\x83\x83\x80\x80\x80\x81\x81\x86\x86\x86\x87\x87\x84\x84\x84\x85\x9a\x9a\x9b\x98\x99\x9e\x9e\x9f\x9c\x9d\x92\x93\x93\x90\x91\x96\x97\x94\x95\xea\xeb\xe9\xee\xec\xe2\xe3\xe1\xe6\xe4\xe5\xfb\xfe\xfd\xf3\xf6\xf4\xc8\xcd\xc6\xdb\xdc\xd1\x55\x53\x5f\x5a\x41\x4c\x48\x74\x76\x70\x72\x7c\x7e\x7b\x65\x64\x66\x61\x60\x63\x62\x6c\x6f\x6e\x69\x68\x6b\x6a\x6a\x15\x15\x14\x14\x17\x17\x17\x16\x16\x11\x11\x11\x10\x10\x10\x10\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13"));
|
|
|
|
|
|
# now receive mode 7
|
|
|
snd($sock_a, $port_b, rtp(8, 2004, 4640, 0x3456, "\x2b" x 160));
|
|
|
rcv($sock_b, $port_a, rtpm(96, 2003, 4960, $ssrc, "\x02\x00\xbd\x23\x5c\x22\x02\x80\x00\x1c\xa7\x4f\xe0\x39\x0f\x77\x21\x4f\xa1\x80\x00\x7f\x27\xd2\x4b\x15\x82\xb0\x00\x0d\x20\x8c\x66\x9c\xb0\x50\x00\x04\x95\x11\x01\x75\x07\x20\x00\x34\x00\x76\x35\x81\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
($sock_a, $sock_b) = new_call([qw(198.51.100.1 4068)], [qw(198.51.100.3 4070)]);
|
|
|
|
|
|
($port_a) = offer('EVS forward br=5.9', { codec => { transcode => ['EVS/16000/1///hf-only=1;br=5.9'] } }, <<SDP);
|
|
|
v=0
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.3
|
|
|
s=tester
|
|
|
t=0 0
|
|
|
m=audio 4068 RTP/AVP 8 0
|
|
|
c=IN IP4 198.51.100.3
|
|
|
a=sendrecv
|
|
|
--------------------------------------
|
|
|
v=0
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.3
|
|
|
s=tester
|
|
|
t=0 0
|
|
|
m=audio PORT RTP/AVP 8 0 96
|
|
|
c=IN IP4 203.0.113.1
|
|
|
a=rtpmap:8 PCMA/8000
|
|
|
a=rtpmap:0 PCMU/8000
|
|
|
a=rtpmap:96 EVS/16000
|
|
|
a=fmtp:96 hf-only=1; br=5.9
|
|
|
a=sendrecv
|
|
|
a=rtcp:PORT
|
|
|
SDP
|
|
|
|
|
|
($port_b) = answer('EVS forward br=5.9', { }, <<SDP);
|
|
|
v=0
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.3
|
|
|
s=tester
|
|
|
t=0 0
|
|
|
m=audio 4070 RTP/AVP 96
|
|
|
c=IN IP4 198.51.100.3
|
|
|
a=rtpmap:96 EVS/16000
|
|
|
a=fmtp:96 hf-only=1;br=5.9
|
|
|
a=sendrecv
|
|
|
----------------------------------
|
|
|
v=0
|
|
|
o=- 1545997027 1 IN IP4 198.51.100.3
|
|
|
s=tester
|
|
|
t=0 0
|
|
|
m=audio PORT RTP/AVP 8
|
|
|
c=IN IP4 203.0.113.1
|
|
|
a=rtpmap:8 PCMA/8000
|
|
|
a=sendrecv
|
|
|
a=rtcp:PORT
|
|
|
SDP
|
|
|
|
|
|
|
|
|
snd($sock_a, $port_b, rtp(8, 2000, 4000, 0x3456, "\x2b" x 160));
|
|
|
Time::HiRes::usleep(20000); # no output, resampling delay
|
|
|
snd($sock_a, $port_b, rtp(8, 2001, 4160, 0x3456, "\x2b" x 160));
|
|
|
($ssrc) = rcv($sock_b, $port_a, rtpm(96, 2000, 4000, -1, "\x01\x68\x2a\xb4\xd8\x2c\x74\x00\x10\x07\xdf\x1c\x57\x04\x93\x3f\x68\x60\x03"));
|
|
|
snd($sock_a, $port_b, rtp(8, 2002, 4320, 0x3456, "\x2b" x 160));
|
|
|
rcv($sock_b, $port_a, rtpm(96, 2001, 4320, $ssrc, "\x01\x9b\x8c\xe1\xe2\x11\x1d\xdd\x9e\x01\x2c\x2f\x10\xcc\x0f\x46\x24\x45\xeb"));
|
|
|
|
|
|
snd($sock_b, $port_a, rtp(96, 6000, 7000, 0x9876, "\x01\x68\x2a\xb4\xd8\x2c\x74\x00\x10\x07\xdf\x1c\x57\x04\x93\x3f\x68\x60\x03"));
|
|
|
Time::HiRes::usleep(20000); # no output, resampling delay
|
|
|
snd($sock_b, $port_a, rtp(96, 6001, 7320, 0x9876, "\x01\x9b\x8c\xe1\xe2\x11\x1d\xdd\x9e\x01\x2c\x2f\x10\xcc\x0f\x46\x24\x45\xeb"));
|
|
|
($ssrc) = rcv($sock_a, $port_b, rtpm(8, 6000, 7000, -1, "\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\x55\x55\xd5\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x54\x55\x55\xd5\x54\xd5\x56\x5d\x5b\x64\x66\x65\x66\x7a\x60\x15\x6b\x68\x6b\x69\x6e\x69\x6e\x6f\x6c\x62\x60\x61\x67\x64\x7a\x79\x7c\x73\x77\x49\x46\x5e\x57\xd6\xdb\xc5\xc9\xd4\x47\xd4\xd4\xd2\xde\x43\x76\x77\x7e\x65\x66\x6c\x6e\x6f\x68\x68\x63\x62\x62\x67\x65\x64\x7f\x73\x72\x72"));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
done_testing;NGCP::Rtpengine::AutoTest::terminate('f00');exit;
|
|
|
#done_testing();
|