VLC  4.0.0-dev
clock_internal.h
Go to the documentation of this file.
1 /*****************************************************************************
2  * clock_internal.h: Clock internal functions
3  *****************************************************************************
4  * Copyright (C) 2018 VLC authors and VideoLAN
5  *
6  * Authors: Christophe Massiot <massiot@via.ecp.fr>
7  * Laurent Aimar < fenrir _AT_ videolan _DOT_ org >
8  *
9  * This program is free software; you can redistribute it and/or modify it
10  * under the terms of the GNU Lesser General Public License as published by
11  * the Free Software Foundation; either version 2.1 of the License, or
12  * (at your option) any later version.
13  *
14  * This program is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17  * GNU Lesser General Public License for more details.
18  *
19  * You should have received a copy of the GNU Lesser General Public License
20  * along with this program; if not, write to the Free Software Foundation,
21  * Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
22  *****************************************************************************/
23 
24 #include <vlc_common.h>
25 
26 /*****************************************************************************
27  * Structures
28  *****************************************************************************/
29 
30 /**
31  * This structure holds long term moving average
32  */
33 typedef struct
34 {
35  double value; /* The average value */
36  int count; /* The number of sample evaluated */
37  int range; /* The maximum range of sample on which we calculate the average*/
38 } average_t;
39 
40 void AvgInit(average_t *, int range);
41 void AvgClean(average_t *);
42 
43 void AvgReset(average_t *);
44 
45 /* calculates (previous_average * (range - 1) + new_value)/range */
46 void AvgUpdate(average_t *, double value);
47 
48 double AvgGet(average_t *);
49 void AvgRescale(average_t *, int range);
50 
51 /* */
52 typedef struct
53 {
57 
59 {
60  return (clock_point_t) { .system = system, .stream = stream };
61 }
62 
Definition: clock_internal.h:52
void AvgInit(average_t *, int range)
Definition: clock_internal.c:33
vlc_tick_t stream
Definition: clock_internal.h:55
double value
Definition: clock_internal.h:35
int count
Definition: clock_internal.h:36
void AvgClean(average_t *)
Definition: clock_internal.c:39
This file is a collection of common definitions and types.
void AvgUpdate(average_t *, double value)
Definition: clock_internal.c:50
static clock_point_t clock_point_Create(vlc_tick_t system, vlc_tick_t stream)
Definition: clock_internal.h:58
double AvgGet(average_t *)
Definition: clock_internal.c:70
int64_t vlc_tick_t
High precision date or time interval.
Definition: vlc_tick.h:45
void AvgRescale(average_t *, int range)
Definition: clock_internal.c:75
vlc_tick_t system
Definition: clock_internal.h:54
void AvgReset(average_t *)
Definition: clock_internal.c:44
int range
Definition: clock_internal.h:37
This structure holds long term moving average.
Definition: clock_internal.h:33