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 #ifndef CLOCK_INTERNAL_H
25 # define CLOCK_INTERNAL_H
26 
27 #include <vlc_common.h>
28 
29 /* Maximum gap allowed between two CRs. */
30 #define CR_MAX_GAP VLC_TICK_FROM_SEC(60)
31 
32 /*****************************************************************************
33  * Structures
34  *****************************************************************************/
35 
36 /**
37  * This structure holds long term moving average
38  */
39 typedef struct
40 {
41  double value; /* The average value */
42  int count; /* The number of sample evaluated */
43  int range; /* The maximum range of sample on which we calculate the average*/
44 } average_t;
45 
46 void AvgInit(average_t *, int range);
47 void AvgClean(average_t *);
48 
49 void AvgReset(average_t *);
50 
51 /* calculates (previous_average * (range - 1) + new_value)/range */
52 void AvgUpdate(average_t *, double value);
53 
54 double AvgGet(average_t *);
55 void AvgRescale(average_t *, int range);
56 
57 /* */
58 typedef struct
59 {
63 
65 {
66  return (clock_point_t) { .system = system, .stream = stream };
67 }
68 
69 #endif
void AvgClean(average_t *)
Definition: clock_internal.c:39
void AvgRescale(average_t *, int range)
Definition: clock_internal.c:75
void AvgInit(average_t *, int range)
Definition: clock_internal.c:33
double AvgGet(average_t *)
Definition: clock_internal.c:70
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:64
void AvgReset(average_t *)
Definition: clock_internal.c:44
This structure holds long term moving average.
Definition: clock_internal.h:40
double value
Definition: clock_internal.h:41
int count
Definition: clock_internal.h:42
int range
Definition: clock_internal.h:43
Definition: clock_internal.h:59
vlc_tick_t system
Definition: clock_internal.h:60
vlc_tick_t stream
Definition: clock_internal.h:61
This file is a collection of common definitions and types.
int64_t vlc_tick_t
High precision date or time interval.
Definition: vlc_tick.h:45