void rtp_session_enable_network_simulation(RtpSession *session, const OrtpNetworkSimulatorParams *params){ OrtpNetworkSimulatorCtx *sim=session->net_sim_ctx; if (params->enabled){ if (sim==NULL) sim=simulator_ctx_new(); sim->params=*params; session->net_sim_ctx=sim; }else{ if (sim!=NULL) ortp_network_simulator_destroy(sim); session->net_sim_ctx=NULL; } }
void rtp_session_enable_network_simulation(RtpSession *session, const OrtpNetworkSimulatorParams *params){ OrtpNetworkSimulatorCtx *sim=session->net_sim_ctx; if (params->enabled){ if (sim==NULL) sim=simulator_ctx_new(); sim->drop_by_congestion=sim->drop_by_loss=sim->total_count=0; sim->params=*params; if (sim->params.jitter_burst_density>0 && sim->params.jitter_strength>0 && sim->params.max_bandwidth==0){ sim->params.max_bandwidth=1024000; ortp_message("Network simulation: jitter requested but max_bandwidth is not set. Using default value of %f bits/s.", sim->params.max_bandwidth); } if (sim->params.max_bandwidth && sim->params.max_buffer_size==0) { sim->params.max_buffer_size=sim->params.max_bandwidth; ortp_message("Network simulation: Max buffer size not set for RTP session [%p], using [%i]",session,sim->params.max_buffer_size); } session->net_sim_ctx=sim; if ((params->mode==OrtpNetworkSimulatorOutbound || params->mode==OrtpNetworkSimulatorOutboundControlled) && !sim->thread_started){ sim->thread_started=TRUE; ortp_thread_create(&sim->thread, NULL, outboud_simulator_thread, session); } ortp_message("Network simulation: enabled with the following parameters:\n" "\tlatency=%d\n" "\tloss_rate=%.1f\n" "\tconsecutive_loss_probability=%.1f\n" "\tmax_bandwidth=%.1f\n" "\tmax_buffer_size=%d\n" "\tjitter_density=%.1f\n" "\tjitter_strength=%.1f\n" "\tmode=%s\n", params->latency, params->loss_rate, params->consecutive_loss_probability, params->max_bandwidth, params->max_buffer_size, params->jitter_burst_density, params->jitter_strength, ortp_network_simulator_mode_to_string(params->mode) ); }else{ session->net_sim_ctx=NULL; if (sim!=NULL) ortp_network_simulator_destroy(sim); } }