X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fmisc%2Fstats.c;h=048b61ba45ac171a220abb1284162c6a82e3eddf;hb=682db2c855a083d981af45dda6f3c333b5fd5c3c;hp=1b05c11b24cbb4f8aa3c679097fbafa99fa13309;hpb=6e708ae5f2e485751f59836969897fa776114cf0;p=vlc diff --git a/src/misc/stats.c b/src/misc/stats.c index 1b05c11b24..048b61ba45 100644 --- a/src/misc/stats.c +++ b/src/misc/stats.c @@ -29,7 +29,7 @@ # include "config.h" #endif -#include +#include #include /* required */ #include "input/input_internal.h" @@ -143,12 +143,10 @@ int __stats_Get( vlc_object_t *p_this, counter_t *p_counter, vlc_value_t *val ) input_stats_t *stats_NewInputStats( input_thread_t *p_input ) { (void)p_input; - input_stats_t *p_stats = malloc( sizeof(input_stats_t) ); - + input_stats_t *p_stats = calloc( 1, sizeof(input_stats_t) ); if( !p_stats ) return NULL; - memset( p_stats, 0, sizeof(*p_stats) ); vlc_mutex_init( &p_stats->lock ); stats_ReinitInputStats( p_stats ); @@ -173,6 +171,10 @@ void stats_ComputeInputStats( input_thread_t *p_input, input_stats_t *p_stats ) &p_stats->i_demux_read_bytes ); stats_GetFloat( p_input, p_input->p->counters.p_demux_bitrate, &p_stats->f_demux_bitrate ); + stats_GetInteger( p_input, p_input->p->counters.p_demux_corrupted, + &p_stats->i_demux_corrupted ); + stats_GetInteger( p_input, p_input->p->counters.p_demux_discontinuity, + &p_stats->i_demux_discontinuity ); /* Decoders */ stats_GetInteger( p_input, p_input->p->counters.p_decoded_video, @@ -214,6 +216,7 @@ void stats_ReinitInputStats( input_stats_t *p_stats ) p_stats->f_input_bitrate = p_stats->f_average_input_bitrate = p_stats->i_demux_read_packets = p_stats->i_demux_read_bytes = p_stats->f_demux_bitrate = p_stats->f_average_demux_bitrate = + p_stats->i_demux_corrupted = p_stats->i_demux_discontinuity = p_stats->i_displayed_pictures = p_stats->i_lost_pictures = p_stats->i_played_abuffers = p_stats->i_lost_abuffers = p_stats->i_decoded_video = p_stats->i_decoded_audio = @@ -240,43 +243,6 @@ void stats_DumpInputStats( input_stats_t *p_stats ) vlc_mutex_unlock( &p_stats->lock ); } -void __stats_ComputeGlobalStats( vlc_object_t *p_obj, global_stats_t *p_stats ) -{ - vlc_list_t *p_list; - int i_index; - - if( !libvlc_stats (p_obj) ) return; - - vlc_mutex_lock( &p_stats->lock ); - - p_list = vlc_list_find( p_obj, VLC_OBJECT_INPUT, FIND_ANYWHERE ); - if( p_list ) - { - float f_total_in = 0, f_total_out = 0,f_total_demux = 0; - for( i_index = 0; i_index < p_list->i_count ; i_index ++ ) - { - float f_in = 0, f_out = 0, f_demux = 0; - input_thread_t *p_input = (input_thread_t *) - p_list->p_values[i_index].p_object; - vlc_mutex_lock( &p_input->p->counters.counters_lock ); - stats_GetFloat( p_obj, p_input->p->counters.p_input_bitrate, &f_in ); - if( p_input->p->counters.p_sout_send_bitrate ) - stats_GetFloat( p_obj, p_input->p->counters.p_sout_send_bitrate, - &f_out ); - stats_GetFloat( p_obj, p_input->p->counters.p_demux_bitrate, - &f_demux ); - vlc_mutex_unlock( &p_input->p->counters.counters_lock ); - f_total_in += f_in; f_total_out += f_out;f_total_demux += f_demux; - } - p_stats->f_input_bitrate = f_total_in; - p_stats->f_output_bitrate = f_total_out; - p_stats->f_demux_bitrate = f_total_demux; - vlc_list_release( p_list ); - } - - vlc_mutex_unlock( &p_stats->lock ); -} - void __stats_TimerStart( vlc_object_t *p_obj, const char *psz_name, unsigned int i_id ) { @@ -513,11 +479,12 @@ static int CounterUpdate( vlc_object_t *p_handler, case STATS_DERIVATIVE: { counter_sample_t *p_new, *p_old; - if( mdate() - p_counter->last_update < p_counter->update_interval ) + mtime_t now = mdate(); + if( now - p_counter->last_update < p_counter->update_interval ) { return VLC_EGENERIC; } - p_counter->last_update = mdate(); + p_counter->last_update = now; if( p_counter->i_type != VLC_VAR_FLOAT && p_counter->i_type != VLC_VAR_INTEGER ) {