Skip to content

Commit fd7e5a4

Browse files
committed
MT#55283 add new DTX test
Change-Id: I44a3b7cb81f816d8eb0deaf75ef3269ac770f367
1 parent 5b4df60 commit fd7e5a4

File tree

1 file changed

+183
-0
lines changed

1 file changed

+183
-0
lines changed

t/auto-daemon-tests-dtx.pl

Lines changed: 183 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,189 @@
3030

3131
if ($amr_tests) {
3232

33+
($sock_a, $sock_b) = new_call([qw(198.51.100.10 5068)], [qw(198.51.100.10 5070)]);
34+
35+
($port_a) = offer('G.711/AMR codec change with timing',
36+
{ replace => ['origin'], codec => {
37+
transcode => ['PCMA'],
38+
} }, <<SDP);
39+
v=0
40+
o=- 1545997027 1 IN IP4 198.51.100.10
41+
s=tester
42+
t=0 0
43+
m=audio 5068 RTP/AVP 0
44+
c=IN IP4 198.51.100.10
45+
a=sendrecv
46+
----------------------------------
47+
v=0
48+
o=- 1545997027 1 IN IP4 203.0.113.1
49+
s=tester
50+
t=0 0
51+
m=audio PORT RTP/AVP 0 8
52+
c=IN IP4 203.0.113.1
53+
a=rtpmap:0 PCMU/8000
54+
a=rtpmap:8 PCMA/8000
55+
a=sendrecv
56+
a=rtcp:PORT
57+
SDP
58+
59+
($port_b) = answer('G.711/AMR codec change with timing',
60+
{ replace => ['origin'] }, <<SDP);
61+
v=0
62+
o=- 1545997027 1 IN IP4 198.51.100.10
63+
s=tester
64+
t=0 0
65+
m=audio 5070 RTP/AVP 8
66+
c=IN IP4 198.51.100.10
67+
a=sendrecv
68+
--------------------------------------
69+
v=0
70+
o=- 1545997027 1 IN IP4 203.0.113.1
71+
s=tester
72+
t=0 0
73+
m=audio PORT RTP/AVP 0
74+
c=IN IP4 203.0.113.1
75+
a=rtpmap:0 PCMU/8000
76+
a=sendrecv
77+
a=rtcp:PORT
78+
SDP
79+
80+
snd($sock_a, $port_b, rtp(0, 2000, 4000, 0x5678, "\x40" x 160));
81+
($seq, $ssrc) = rcv($sock_b, $port_a, rtpm(8, -1, 4000, -1, "\x68" x 160));
82+
snd($sock_a, $port_b, rtp(0, 2001, 4160, 0x5678, "\x40" x 160));
83+
rcv($sock_b, $port_a, rtpm(8, $seq + 1, 4160, $ssrc, "\x68" x 160));
84+
# DTX -> silence
85+
rcv($sock_b, $port_a, rtpm(8, $seq + 2, 4320, $ssrc, "\xd5" x 160));
86+
rcv($sock_b, $port_a, rtpm(8, $seq + 3, 4480, $ssrc, "\xd5" x 160));
87+
# start audio again
88+
snd($sock_a, $port_b, rtp(0, 2002, 4640, 0x5678, "\x40" x 160));
89+
rcv($sock_b, $port_a, rtpm(8, $seq + 4, 4640, $ssrc, "\x68" x 160));
90+
# interject unknown payload type
91+
snd($sock_a, $port_b, rtp(9, 2003, 4800, 0x5678, "\x40" x 160));
92+
# no passthrough, get more DTX
93+
rcv($sock_b, $port_a, rtpm(8, $seq + 5, 4800, $ssrc, "\xd5" x 160));
94+
snd($sock_a, $port_b, rtp(9, 2004, 4960, 0x5678, "\x40" x 160));
95+
# back to normal media
96+
snd($sock_a, $port_b, rtp(0, 2003, 4960, 0x5678, "\x40" x 160));
97+
rcv($sock_b, $port_a, rtpm(8, $seq + 6, 4960, $ssrc, "\x68" x 160));
98+
99+
# reinvite to AMR
100+
101+
($port_a) = offer('G.711/AMR codec change with timing',
102+
{ replace => ['origin'], codec => {
103+
transcode => ['PCMA'],
104+
} }, <<SDP);
105+
v=0
106+
o=- 1545997027 1 IN IP4 198.51.100.10
107+
s=tester
108+
t=0 0
109+
m=audio 5068 RTP/AVP 96 0
110+
c=IN IP4 198.51.100.10
111+
a=rtpmap:96 AMR/8000
112+
a=sendrecv
113+
----------------------------------
114+
v=0
115+
o=- 1545997027 1 IN IP4 203.0.113.1
116+
s=tester
117+
t=0 0
118+
m=audio PORT RTP/AVP 96 0 8
119+
c=IN IP4 203.0.113.1
120+
a=rtpmap:96 AMR/8000
121+
a=rtpmap:0 PCMU/8000
122+
a=rtpmap:8 PCMA/8000
123+
a=sendrecv
124+
a=rtcp:PORT
125+
SDP
126+
127+
($port_b) = answer('G.711/AMR codec change with timing',
128+
{ replace => ['origin'] }, <<SDP);
129+
v=0
130+
o=- 1545997027 1 IN IP4 198.51.100.10
131+
s=tester
132+
t=0 0
133+
m=audio 5070 RTP/AVP 8
134+
c=IN IP4 198.51.100.10
135+
a=sendrecv
136+
--------------------------------------
137+
v=0
138+
o=- 1545997027 1 IN IP4 203.0.113.1
139+
s=tester
140+
t=0 0
141+
m=audio PORT RTP/AVP 96
142+
c=IN IP4 203.0.113.1
143+
a=rtpmap:96 AMR/8000
144+
a=sendrecv
145+
a=rtcp:PORT
146+
SDP
147+
148+
snd($sock_a, $port_b, rtp(96, 2003, 4960, 0x5678, "\xf1\xfc\x2e\x6d\xbf\xda\x20\x1c\x82\x70\xb4\xb2\xb1\x13\x33\x0b\x27\x00"));
149+
rcv($sock_b, $port_a, rtpm(8, $seq + 7, 4960, 0x5678, "\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\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\x55\x55\x55\xd5\xd5\xd5\x55\x55\xd5\xd5\xd5\xd5\xd5\x55\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\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\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\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5"));
150+
snd($sock_a, $port_b, rtp(96, 2004, 5120, 0x5678, "\xf1\xfc\x2e\x6d\xbf\xda\x20\x1c\x82\x70\xb4\xb2\xb1\x13\x33\x0b\x27\x00"));
151+
rcv($sock_b, $port_a, rtpm(8, $seq + 8, 5120, 0x5678, "\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\xd5\xd5\xd5\xd5\xd5\xd5\xd5\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\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\xd5\xd5\xd5\xd5\x55\x55\x55\x55\xd5\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\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5"));
152+
# DTX -> silence
153+
rcv($sock_b, $port_a, rtpm(8, $seq + 9, 5280, 0x5678, "\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\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\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\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\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\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5"));
154+
rcv($sock_b, $port_a, rtpm(8, $seq + 10, 5440, 0x5678, "\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\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\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\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\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"));
155+
156+
# inject old PCM
157+
snd($sock_a, $port_b, rtp(0, 2005, 5600, 0x5678, "\x40" x 160));
158+
# packet dropped
159+
rcv_no($sock_b);
160+
161+
# reinvite back to PCM
162+
163+
($port_a) = offer('G.711/AMR codec change with timing',
164+
{ replace => ['origin'], codec => {
165+
transcode => ['PCMA'],
166+
} }, <<SDP);
167+
v=0
168+
o=- 1545997027 1 IN IP4 198.51.100.10
169+
s=tester
170+
t=0 0
171+
m=audio 5068 RTP/AVP 0
172+
c=IN IP4 198.51.100.10
173+
a=sendrecv
174+
----------------------------------
175+
v=0
176+
o=- 1545997027 1 IN IP4 203.0.113.1
177+
s=tester
178+
t=0 0
179+
m=audio PORT RTP/AVP 0 8
180+
c=IN IP4 203.0.113.1
181+
a=rtpmap:0 PCMU/8000
182+
a=rtpmap:8 PCMA/8000
183+
a=sendrecv
184+
a=rtcp:PORT
185+
SDP
186+
187+
($port_b) = answer('G.711/AMR codec change with timing',
188+
{ replace => ['origin'] }, <<SDP);
189+
v=0
190+
o=- 1545997027 1 IN IP4 198.51.100.10
191+
s=tester
192+
t=0 0
193+
m=audio 5070 RTP/AVP 8
194+
c=IN IP4 198.51.100.10
195+
a=sendrecv
196+
--------------------------------------
197+
v=0
198+
o=- 1545997027 1 IN IP4 203.0.113.1
199+
s=tester
200+
t=0 0
201+
m=audio PORT RTP/AVP 0
202+
c=IN IP4 203.0.113.1
203+
a=rtpmap:0 PCMU/8000
204+
a=sendrecv
205+
a=rtcp:PORT
206+
SDP
207+
208+
209+
snd($sock_a, $port_b, rtp(0, 2006, 5760, 0x5678, "\x40" x 160));
210+
rcv($sock_b, $port_a, rtpm(8, $seq + 11, 5760, $ssrc, "\x68" x 160));
211+
212+
rtpe_req('delete', 'G.711/AMR codec change with timing', { 'from-tag' => ft() });
213+
214+
215+
33216
($sock_a, $sock_b) = new_call([qw(198.51.100.10 4024)], [qw(198.51.100.10 4026)]);
34217

35218
($port_a) = offer('AMR SID',

0 commit comments

Comments
 (0)