- long d_ino; /* Always zero. */
- unsigned short d_reclen; /* Always zero. */
- unsigned short d_namlen; /* Length of name in d_name. */
- char d_name[FILENAME_MAX]; /* File name. */
-};
-# define opendir vlc_opendir
-# define readdir vlc_readdir
-# define closedir vlc_closedir
-# define rewinddir vlc_rewindir
-void *vlc_opendir (const char *);
-void *vlc_readdir (void *);
-int vlc_closedir(void *);
-void vlc_rewinddir(void *);
-# endif
-
-#if defined (WIN32)
-# include <dirent.h>
-void *vlc_wopendir (const wchar_t *);
-/* void *vlc_wclosedir (void *); in vlc's exported symbols */
-struct _wdirent *vlc_wreaddir (void *);
-void vlc_rewinddir (void *);
-# define _wopendir vlc_wopendir
-# define _wreaddir vlc_wreaddir
-# define _wclosedir vlc_wclosedir
-# define rewinddir vlc_rewinddir
-#endif
+ int i_ret;
+ vlc_value_t val; val.i_int = 0;
+ if( !p_counter ) return VLC_EGENERIC;
+ i_ret = stats_Get( p_obj, p_counter, &val );
+ *value = val.i_int;
+ return i_ret;
+}
+#define stats_GetInteger(a,b,c) stats_GetInteger( VLC_OBJECT(a), b, c )
+
+static inline int stats_GetFloat( vlc_object_t *p_obj, counter_t *p_counter,
+ float *value )
+{
+ int i_ret;
+ vlc_value_t val; val.f_float = 0.0;
+ if( !p_counter ) return VLC_EGENERIC;
+ i_ret = stats_Get( p_obj, p_counter, &val );
+ *value = val.f_float;
+ return i_ret;
+}
+#define stats_GetFloat(a,b,c) stats_GetFloat( VLC_OBJECT(a), b, c )
+
+static inline int stats_UpdateInteger( vlc_object_t *p_obj,counter_t *p_co,
+ int i, int *pi_new )
+{
+ int i_ret;
+ vlc_value_t val;
+ vlc_value_t new_val; new_val.i_int = 0;
+ if( !p_co ) return VLC_EGENERIC;
+ val.i_int = i;
+ i_ret = stats_Update( p_obj, p_co, val, &new_val );
+ if( pi_new )
+ *pi_new = new_val.i_int;
+ return i_ret;
+}
+#define stats_UpdateInteger(a,b,c,d) stats_UpdateInteger( VLC_OBJECT(a),b,c,d )
+
+static inline int stats_UpdateFloat( vlc_object_t *p_obj, counter_t *p_co,
+ float f, float *pf_new )
+{
+ vlc_value_t val;
+ int i_ret;
+ vlc_value_t new_val;new_val.f_float = 0.0;
+ if( !p_co ) return VLC_EGENERIC;
+ val.f_float = f;
+ i_ret = stats_Update( p_obj, p_co, val, &new_val );
+ if( pf_new )
+ *pf_new = new_val.f_float;
+ return i_ret;
+}
+#define stats_UpdateFloat(a,b,c,d) stats_UpdateFloat( VLC_OBJECT(a),b,c,d )
+
+void stats_ComputeInputStats(input_thread_t*, input_stats_t*);
+void stats_ReinitInputStats(input_stats_t *);
+void stats_DumpInputStats(input_stats_t *);