[vlc-commits] stats: simplify

Rémi Denis-Courmont git at videolan.org
Mon Dec 11 21:02:20 CET 2017


vlc | branch: master | Rémi Denis-Courmont <remi at remlab.net> | Mon Dec 11 20:52:03 2017 +0200| [d67fd22472b073e551c991a0ab52c35139adfc67] | committer: Rémi Denis-Courmont

stats: simplify

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=d67fd22472b073e551c991a0ab52c35139adfc67
---

 src/input/access.c |  4 ++--
 src/input/es_out.c |  2 +-
 src/input/input.c  | 11 +++++------
 src/input/stats.c  | 54 ++++++++++++++++++++----------------------------------
 src/libvlc.h       |  9 ++-------
 5 files changed, 30 insertions(+), 50 deletions(-)

diff --git a/src/input/access.c b/src/input/access.c
index 6ae4aea35a..de2f223c4b 100644
--- a/src/input/access.c
+++ b/src/input/access.c
@@ -203,7 +203,7 @@ static block_t *AStreamReadBlock(stream_t *s, bool *restrict eof)
 
         vlc_mutex_lock(&input_priv(input)->counters.counters_lock);
         total = (input_priv(input)->counters.read_bytes += block->i_buffer);
-        stats_Update(input_priv(input)->counters.p_input_bitrate, total, NULL);
+        stats_Update(input_priv(input)->counters.p_input_bitrate, total);
         input_priv(input)->counters.read_packets++;
         vlc_mutex_unlock(&input_priv(input)->counters.counters_lock);
     }
@@ -230,7 +230,7 @@ static ssize_t AStreamReadStream(stream_t *s, void *buf, size_t len)
 
         vlc_mutex_lock(&input_priv(input)->counters.counters_lock);
         total = (input_priv(input)->counters.read_bytes += val);
-        stats_Update(input_priv(input)->counters.p_input_bitrate, total, NULL);
+        stats_Update(input_priv(input)->counters.p_input_bitrate, total);
         input_priv(input)->counters.read_packets++;
         vlc_mutex_unlock(&input_priv(input)->counters.counters_lock);
     }
diff --git a/src/input/es_out.c b/src/input/es_out.c
index ff7f3586e9..c6e87ed8d3 100644
--- a/src/input/es_out.c
+++ b/src/input/es_out.c
@@ -2048,7 +2048,7 @@ static int EsOutSend( es_out_t *out, es_out_id_t *es, block_t *p_block )
         vlc_mutex_lock( &input_priv(p_input)->counters.counters_lock );
         i_total =
             (input_priv(p_input)->counters.demux_read += p_block->i_buffer);
-        stats_Update( input_priv(p_input)->counters.p_demux_bitrate, i_total, NULL );
+        stats_Update( input_priv(p_input)->counters.p_demux_bitrate, i_total );
 
         /* Update number of corrupted data packats */
         if( p_block->i_flags & BLOCK_FLAG_CORRUPTED )
diff --git a/src/input/input.c b/src/input/input.c
index 5ed1abad76..ed6a6eb9d1 100644
--- a/src/input/input.c
+++ b/src/input/input.c
@@ -810,16 +810,15 @@ static void InitStatistics( input_thread_t *p_input )
     if( priv->b_preparsing ) return;
 
     /* Prepare statistics */
-#define INIT_COUNTER( c, compute ) free( priv->counters.p_##c ); \
-    priv->counters.p_##c = \
- stats_CounterCreate( STATS_##compute);
+#define INIT_COUNTER( c ) free( priv->counters.p_##c ); \
+    priv->counters.p_##c = stats_CounterCreate( );
     if( libvlc_stats( p_input ) )
     {
         priv->counters.read_bytes = 0;
         priv->counters.read_packets = 0;
         priv->counters.demux_read = 0;
-        INIT_COUNTER( input_bitrate, DERIVATIVE );
-        INIT_COUNTER( demux_bitrate, DERIVATIVE );
+        INIT_COUNTER( input_bitrate );
+        INIT_COUNTER( demux_bitrate );
         priv->counters.demux_corrupted = 0;
         priv->counters.demux_discontinuity = 0;
         priv->counters.played_abuffers = 0;
@@ -866,7 +865,7 @@ static int InitSout( input_thread_t * p_input )
         }
         if( libvlc_stats( p_input ) )
         {
-            INIT_COUNTER( sout_send_bitrate, DERIVATIVE );
+            INIT_COUNTER( sout_send_bitrate );
         }
     }
     else
diff --git a/src/input/stats.c b/src/input/stats.c
index 87d6fd8b2f..9a21f250f3 100644
--- a/src/input/stats.c
+++ b/src/input/stats.c
@@ -36,7 +36,6 @@ typedef struct counter_sample_t
 
 struct counter_t
 {
-    int                 i_compute_type;
     int                 i_samples;
     counter_sample_t ** pp_samples;
 
@@ -45,17 +44,12 @@ struct counter_t
 
 /**
  * Create a statistics counter
- * \param i_compute_type the aggregation type. One of STATS_LAST (always
- * keep the last value), STATS_COUNTER (increment by the passed value),
- * STATS_MAX (keep the maximum passed value), STATS_MIN, or STATS_DERIVATIVE
- * (keep a time derivative of the value)
  */
-counter_t * stats_CounterCreate( int i_compute_type )
+counter_t * stats_CounterCreate( void )
 {
     counter_t *p_counter = (counter_t*) malloc( sizeof( counter_t ) ) ;
 
     if( !p_counter ) return NULL;
-    p_counter->i_compute_type = i_compute_type;
     p_counter->i_samples = 0;
     p_counter->pp_samples = NULL;
 
@@ -161,38 +155,30 @@ void stats_CounterClean( counter_t *p_c )
  * \param p_counter the counter to update
  * \param val the vlc_value union containing the new value to aggregate. For
  * more information on how data is aggregated, \see stats_Create
- * \param val_new a pointer that will be filled with new data
  */
-void stats_Update( counter_t *p_counter, uint64_t val, uint64_t *new_val )
+void stats_Update( counter_t *p_counter, uint64_t val )
 {
     if( !p_counter )
         return;
 
-    switch( p_counter->i_compute_type )
-    {
-    case STATS_DERIVATIVE:
+    counter_sample_t *p_new, *p_old;
+    mtime_t now = mdate();
+    if( now - p_counter->last_update < CLOCK_FREQ )
+        return;
+    p_counter->last_update = now;
+    /* Insert the new one at the beginning */
+    p_new = malloc( sizeof( counter_sample_t ) );
+    if (unlikely(p_new == NULL))
+        return; /* NOTE: Losing sample here */
+
+    p_new->value = val;
+    p_new->date = p_counter->last_update;
+    TAB_INSERT(p_counter->i_samples, p_counter->pp_samples, p_new, 0);
+
+    if( p_counter->i_samples == 3 )
     {
-        counter_sample_t *p_new, *p_old;
-        mtime_t now = mdate();
-        if( now - p_counter->last_update < CLOCK_FREQ )
-            return;
-        p_counter->last_update = now;
-        /* Insert the new one at the beginning */
-        p_new = (counter_sample_t*)malloc( sizeof( counter_sample_t ) );
-        if (unlikely(p_new == NULL))
-            return; /* NOTE: Losing sample here */
-
-        p_new->value = val;
-        p_new->date = p_counter->last_update;
-        TAB_INSERT(p_counter->i_samples, p_counter->pp_samples, p_new, 0);
-
-        if( p_counter->i_samples == 3 )
-        {
-            p_old = p_counter->pp_samples[2];
-            TAB_ERASE(p_counter->i_samples, p_counter->pp_samples, 2);
-            free( p_old );
-        }
-        break;
-    }
+        p_old = p_counter->pp_samples[2];
+        TAB_ERASE(p_counter->i_samples, p_counter->pp_samples, 2);
+        free( p_old );
     }
 }
diff --git a/src/libvlc.h b/src/libvlc.h
index 68a01595c6..34ce312df8 100644
--- a/src/libvlc.h
+++ b/src/libvlc.h
@@ -213,15 +213,10 @@ void var_OptionParse (vlc_object_t *, const char *, bool trusted);
 /*
  * Stats stuff
  */
-enum
-{
-    STATS_DERIVATIVE,
-};
-
 typedef struct counter_t counter_t;
 
-counter_t * stats_CounterCreate (int);
-void stats_Update (counter_t *, uint64_t, uint64_t *);
+counter_t * stats_CounterCreate(void);
+void stats_Update(counter_t *, uint64_t);
 void stats_CounterClean (counter_t * );
 
 void stats_ComputeInputStats(input_thread_t*, input_stats_t*);



More information about the vlc-commits mailing list