static void check_stun_sending(MSFilter *f) { SenderData *d = (SenderData *) f->data; RtpSession *s = d->session; if ((d->last_rtp_stun_sent_time == -1) || ((f->ticker->time- d->last_sent_time>2000) /*no need to send stun packets if media sent during last 2s*/ && (f->ticker->time - d->last_rtp_stun_sent_time) >= 500)) { d->last_rtp_stun_sent_time = f->ticker->time; send_stun_packet(d,TRUE,FALSE); } if ( rtp_session_rtcp_enabled(s) && (d->last_rtcp_stun_sent_time == -1 || (rtp_session_get_stats(s)->recv_rtcp_packets == 0 /*no need to send stun packets if rtcp packet already received*/ && (f->ticker->time - d->last_rtcp_stun_sent_time) >= 500))) { d->last_rtcp_stun_sent_time = f->ticker->time; send_stun_packet(d,FALSE,TRUE); } }
static void basic_audio_stream_base_2( const char* marielle_local_ip , const char* marielle_remote_ip , int marielle_local_rtp_port , int marielle_remote_rtp_port , int marielle_local_rtcp_port , int marielle_remote_rtcp_port , const char* margaux_local_ip , const char* margaux_remote_ip , int margaux_local_rtp_port , int margaux_remote_rtp_port , int margaux_local_rtcp_port , int margaux_remote_rtcp_port , int lost_percentage) { AudioStream * marielle = audio_stream_new2 (_factory, marielle_local_ip, marielle_local_rtp_port, marielle_local_rtcp_port); stats_t marielle_stats; AudioStream * margaux = audio_stream_new2 (_factory, margaux_local_ip, margaux_local_rtp_port,margaux_local_rtcp_port); stats_t margaux_stats; RtpProfile* profile = rtp_profile_new("default profile"); char* hello_file = bc_tester_res(HELLO_8K_1S_FILE); char* recorded_file = bc_tester_file(RECORDED_8K_1S_FILE); uint64_t marielle_rtp_sent=0; rtp_session_set_multicast_loopback(marielle->ms.sessions.rtp_session,TRUE); rtp_session_set_multicast_loopback(margaux->ms.sessions.rtp_session,TRUE); rtp_session_set_rtcp_report_interval(marielle->ms.sessions.rtp_session, 1000); rtp_session_set_rtcp_report_interval(margaux->ms.sessions.rtp_session, 1000); reset_stats(&marielle_stats); reset_stats(&margaux_stats); rtp_profile_set_payload (profile,0,&payload_type_pcmu8000); BC_ASSERT_EQUAL(audio_stream_start_full(margaux , profile , ms_is_multicast(margaux_local_ip)?margaux_local_ip:margaux_remote_ip , ms_is_multicast(margaux_local_ip)?margaux_local_rtp_port:margaux_remote_rtp_port , margaux_remote_ip , margaux_remote_rtcp_port , 0 , 50 , NULL , recorded_file , NULL , NULL , 0) ,0, int, "%d"); BC_ASSERT_EQUAL(audio_stream_start_full(marielle , profile , marielle_remote_ip , marielle_remote_rtp_port , marielle_remote_ip , marielle_remote_rtcp_port , 0 , 50 , hello_file , NULL , NULL , NULL , 0) ,0, int, "%d"); ms_filter_add_notify_callback(marielle->soundread, notify_cb, &marielle_stats,TRUE); wait_for_until(&marielle->ms,&margaux->ms,&marielle_stats.number_of_EndOfFile,1,12000); audio_stream_get_local_rtp_stats(marielle,&marielle_stats.rtp); audio_stream_get_local_rtp_stats(margaux,&margaux_stats.rtp); marielle_rtp_sent = marielle_stats.rtp.sent; if (rtp_session_rtcp_enabled(marielle->ms.sessions.rtp_session) && rtp_session_rtcp_enabled(margaux->ms.sessions.rtp_session)) { BC_ASSERT_GREATER_STRICT(rtp_session_get_round_trip_propagation(marielle->ms.sessions.rtp_session),0,float,"%f"); BC_ASSERT_GREATER_STRICT(rtp_session_get_stats(marielle->ms.sessions.rtp_session)->recv_rtcp_packets,0,unsigned long long,"%llu"); }