@ -15960,12 +15960,12 @@ SDP
# send back RTP binding successes
snd ( $ sock_a , $ ret1 [ 0 ] , stun_succ ( $ ret1 [ 0 ] , $ ret1 [ 1 ] , 'bd5e845657ecb8d6dd8e1bc6' ) ) ;
snd ( $ sock_c , $ ret2 [ 0 ] , stun_succ ( $ ret2 [ 0 ] , $ ret2 [ 1 ] , 'bd5e845657ecb8d6dd8e1bc6' ) ) ;
snd ( $ sock_a , $ ret1 [ 0 ] , stun_succ ( $ ret1 [ 0 ] , $ ret1 [ 2 ] , 'bd5e845657ecb8d6dd8e1bc6' ) ) ;
snd ( $ sock_c , $ ret2 [ 0 ] , stun_succ ( $ ret2 [ 0 ] , $ ret2 [ 2 ] , 'bd5e845657ecb8d6dd8e1bc6' ) ) ;
# send secondary RTCP binding success
snd ( $ sock_d , $ ret4 [ 0 ] , stun_succ ( $ ret4 [ 0 ] , $ ret4 [ 1 ] , 'bd5e845657ecb8d6dd8e1bc6' ) ) ;
snd ( $ sock_d , $ ret4 [ 0 ] , stun_succ ( $ ret4 [ 0 ] , $ ret4 [ 2 ] , 'bd5e845657ecb8d6dd8e1bc6' ) ) ;
# now we should be getting DTLS
@ -21448,7 +21448,7 @@ SDP
$ resp = rtpe_req ( 'play media' , 'media playback, offer only' , { 'from-tag' = > ft ( ) , blob = > $ wav_file } ) ;
is $ resp - > { duration } , 100 , 'media duration' ;
( undef , $ seq , $ ts , $ ssrc ) = rcv ( $ sock_a , - 1 , rtpm ( 8 | 0x80 , - 1 , - 1 , - 1 , $ pcma_1 ) ) ;
( undef , undef , $ seq , $ ts , $ ssrc ) = rcv ( $ sock_a , - 1 , rtpm ( 8 | 0x80 , - 1 , - 1 , - 1 , $ pcma_1 ) ) ;
rcv ( $ sock_a , - 1 , rtpm ( 8 , $ seq + 1 , $ ts + 160 * 1 , $ ssrc , $ pcma_2 ) ) ;
rcv ( $ sock_a , - 1 , rtpm ( 8 , $ seq + 2 , $ ts + 160 * 2 , $ ssrc , $ pcma_3 ) ) ;
rcv ( $ sock_a , - 1 , rtpm ( 8 , $ seq + 3 , $ ts + 160 * 3 , $ ssrc , $ pcma_4 ) ) ;
@ -21503,7 +21503,7 @@ SDP
$ resp = rtpe_req ( 'play media' , 'media playback, side A' , { 'from-tag' = > ft ( ) , blob = > $ wav_file } ) ;
is $ resp - > { duration } , 100 , 'media duration' ;
( undef , $ seq , $ ts , $ ssrc ) = rcv ( $ sock_a , - 1 , rtpm ( 8 | 0x80 , - 1 , - 1 , - 1 , $ pcma_1 ) ) ;
( undef , undef , $ seq , $ ts , $ ssrc ) = rcv ( $ sock_a , - 1 , rtpm ( 8 | 0x80 , - 1 , - 1 , - 1 , $ pcma_1 ) ) ;
rcv ( $ sock_a , - 1 , rtpm ( 8 , $ seq + 1 , $ ts + 160 * 1 , $ ssrc , $ pcma_2 ) ) ;
rcv ( $ sock_a , - 1 , rtpm ( 8 , $ seq + 2 , $ ts + 160 * 2 , $ ssrc , $ pcma_3 ) ) ;
rcv ( $ sock_a , - 1 , rtpm ( 8 , $ seq + 3 , $ ts + 160 * 3 , $ ssrc , $ pcma_4 ) ) ;
@ -21558,7 +21558,7 @@ SDP
$ resp = rtpe_req ( 'play media' , 'media playback, side A, repeat' , { 'from-tag' = > ft ( ) , blob = > $ wav_file , 'repeat-times' = > 2 } ) ;
is $ resp - > { duration } , 100 , 'media duration' ;
( undef , $ seq , $ ts , $ ssrc ) = rcv ( $ sock_a , - 1 , rtpm ( 8 | 0x80 , - 1 , - 1 , - 1 , $ pcma_1 ) ) ;
( undef , undef , $ seq , $ ts , $ ssrc ) = rcv ( $ sock_a , - 1 , rtpm ( 8 | 0x80 , - 1 , - 1 , - 1 , $ pcma_1 ) ) ;
rcv ( $ sock_a , - 1 , rtpm ( 8 , $ seq + 1 , $ ts + 160 * 1 , $ ssrc , $ pcma_2 ) ) ;
rcv ( $ sock_a , - 1 , rtpm ( 8 , $ seq + 2 , $ ts + 160 * 2 , $ ssrc , $ pcma_3 ) ) ;
rcv ( $ sock_a , - 1 , rtpm ( 8 , $ seq + 3 , $ ts + 160 * 3 , $ ssrc , $ pcma_4 ) ) ;
@ -21618,7 +21618,7 @@ SDP
$ resp = rtpe_req ( 'play media' , 'media playback, side B' , { 'from-tag' = > tt ( ) , blob = > $ wav_file } ) ;
is $ resp - > { duration } , 100 , 'media duration' ;
( undef , $ seq , $ ts , $ ssrc ) = rcv ( $ sock_b , - 1 , rtpm ( 8 | 0x80 , - 1 , - 1 , - 1 , $ pcma_1 ) ) ;
( undef , undef , $ 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 ) ) ;
@ -21629,7 +21629,7 @@ is $resp->{duration}, 100, 'media duration';
$ ts += 160 * 5 ;
my $ old_ts = $ ts ;
( undef , $ ts ) = rcv ( $ sock_b , - 1 , rtpm ( 8 | 0x80 , $ seq + 5 , - 1 , $ ssrc , $ pcma_1 ) ) ;
( undef , undef , $ ts ) = rcv ( $ sock_b , - 1 , rtpm ( 8 | 0x80 , $ seq + 5 , - 1 , $ ssrc , $ pcma_1 ) ) ;
print ( "ts $ts old $old_ts\n" ) ;
SKIP: {
skip 'random timestamp too close to margin' , 2 if $ old_ts < 500 or $ old_ts > 4294966795 ;
@ -21692,7 +21692,7 @@ $resp = rtpe_req('play media', 'media playback, side A, select by label', { labe
blob = > $ wav_file } ) ;
is $ resp - > { duration } , 100 , 'media duration' ;
( undef , $ seq , $ ts , $ ssrc ) = rcv ( $ sock_a , - 1 , rtpm ( 8 | 0x80 , - 1 , - 1 , - 1 , $ pcma_1 ) ) ;
( undef , undef , $ seq , $ ts , $ ssrc ) = rcv ( $ sock_a , - 1 , rtpm ( 8 | 0x80 , - 1 , - 1 , - 1 , $ pcma_1 ) ) ;
rcv ( $ sock_a , - 1 , rtpm ( 8 , $ seq + 1 , $ ts + 160 * 1 , $ ssrc , $ pcma_2 ) ) ;
rcv ( $ sock_a , - 1 , rtpm ( 8 , $ seq + 2 , $ ts + 160 * 2 , $ ssrc , $ pcma_3 ) ) ;
rcv ( $ sock_a , - 1 , rtpm ( 8 , $ seq + 3 , $ ts + 160 * 3 , $ ssrc , $ pcma_4 ) ) ;
@ -21748,7 +21748,7 @@ SDP
$ resp = rtpe_req ( 'play media' , 'media playback, side B, select by label' , { label = > 'meh' , blob = > $ wav_file } ) ;
is $ resp - > { duration } , 100 , 'media duration' ;
( undef , $ seq , $ ts , $ ssrc ) = rcv ( $ sock_b , - 1 , rtpm ( 8 | 0x80 , - 1 , - 1 , - 1 , $ pcma_1 ) ) ;
( undef , undef , $ 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 ) ) ;
@ -21823,7 +21823,7 @@ my $srtp_ctx = {
cs = > $ NGCP:: Rtpclient:: SRTP:: crypto_suites { AES_CM_128_HMAC_SHA1_80 } ,
key = > 'DVM+BTeYX2UI1LaA9bgXrcBEDBxoItA9/39fSoRF' ,
} ;
( undef , $ seq , $ ts , $ ssrc ) = srtp_rcv ( $ sock_a , - 1 , rtpm ( 8 | 0x80 , - 1 , - 1 , - 1 , $ pcma_1 ) , $ srtp_ctx ) ;
( undef , undef , $ seq , $ ts , $ ssrc ) = srtp_rcv ( $ sock_a , - 1 , rtpm ( 8 | 0x80 , - 1 , - 1 , - 1 , $ pcma_1 ) , $ srtp_ctx ) ;
srtp_rcv ( $ sock_a , - 1 , rtpm ( 8 , $ seq + 1 , $ ts + 160 * 1 , $ ssrc , $ pcma_2 ) , $ srtp_ctx ) ;
srtp_rcv ( $ sock_a , - 1 , rtpm ( 8 , $ seq + 2 , $ ts + 160 * 2 , $ ssrc , $ pcma_3 ) , $ srtp_ctx ) ;
srtp_rcv ( $ sock_a , - 1 , rtpm ( 8 , $ seq + 3 , $ ts + 160 * 3 , $ ssrc , $ pcma_4 ) , $ srtp_ctx ) ;
@ -23833,7 +23833,7 @@ $resp = rtpe_req('play media', 'media playback after delete', { 'from-tag' => tt
blob = > $ wav_file } ) ;
is $ resp - > { duration } , 100 , 'media duration' ;
( undef , $ seq , $ ts , $ ssrc ) = rcv ( $ sock_b , - 1 , rtpm ( 8 | 0x80 , - 1 , - 1 , - 1 , $ pcma_1 ) ) ;
( undef , undef , $ 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 ) ) ;