From: Clément Stenac Date: Sat, 28 Jan 2006 10:45:13 +0000 (+0000) Subject: Compute global input/output stats (Refs:#473) X-Git-Tag: 0.9.0-test0~12618 X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=1ab90751c095b208a87e37d4d0fdbd765f0f4923;p=vlc Compute global input/output stats (Refs:#473) --- diff --git a/include/vlc_messages.h b/include/vlc_messages.h index 4eba79c8b9..6b0343e123 100644 --- a/include/vlc_messages.h +++ b/include/vlc_messages.h @@ -344,6 +344,7 @@ struct global_stats_t vlc_mutex_t lock; float f_input_bitrate; + float f_demux_bitrate; float f_output_bitrate; int i_http_clients; diff --git a/include/vlc_playlist.h b/include/vlc_playlist.h index 5c387676f2..d0cca9f536 100644 --- a/include/vlc_playlist.h +++ b/include/vlc_playlist.h @@ -218,6 +218,8 @@ struct playlist_t // thread interaction_t *p_interaction; + global_stats_t *p_stats; + /*@}*/ }; diff --git a/src/misc/stats.c b/src/misc/stats.c index 62d5eba9bd..826d81463d 100644 --- a/src/misc/stats.c +++ b/src/misc/stats.c @@ -370,20 +370,25 @@ void __stats_ComputeGlobalStats( vlc_object_t *p_obj, int i_index; vlc_mutex_lock( &p_stats->lock ); - p_list = vlc_list_find( p_obj, VLC_OBJECT_INPUT, FIND_CHILD ); + 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; + float f_in = 0, f_out = 0, f_demux = 0; p_obj = (vlc_object_t *)p_list->p_values[i_index].p_object; stats_GetFloat( p_obj, p_obj->i_object_id, "input_bitrate", &f_in ); stats_GetFloat( p_obj, p_obj->i_object_id, "sout_send_bitrate", &f_out ); - p_stats->f_input_bitrate += f_in; - p_stats->f_output_bitrate += f_out; + stats_GetFloat( p_obj, p_obj->i_object_id, "demux_bitrate", + &f_demux ); + 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 ); } diff --git a/src/playlist/playlist.c b/src/playlist/playlist.c index bde17ab55b..751e6f20e2 100644 --- a/src/playlist/playlist.c +++ b/src/playlist/playlist.c @@ -173,10 +173,12 @@ playlist_t * __playlist_Create ( vlc_object_t *p_parent ) p_playlist->request.b_request = VLC_FALSE; p_playlist->status.i_status = PLAYLIST_STOPPED; - p_playlist->i_sort = SORT_ID; p_playlist->i_order = ORDER_NORMAL; + p_playlist->p_stats = (global_stats_t *)malloc( sizeof( global_stats_t ) ); + vlc_mutex_init( p_playlist, &p_playlist->p_stats->lock ); + /* Finally, launch the thread ! */ if( vlc_thread_create( p_playlist, "playlist", RunThread, VLC_THREAD_PRIORITY_LOW, VLC_TRUE ) ) @@ -598,6 +600,11 @@ static void RunThread ( playlist_t *p_playlist ) stats_TimerStop( p_playlist, "Interaction thread" ); } + if( i_loops %5 == 0 && p_playlist->p_stats ) + { + stats_ComputeGlobalStats( p_playlist, p_playlist->p_stats ); + } + vlc_mutex_lock( &p_playlist->object_lock ); /* First, check if we have something to do */