Git init
[framework/multimedia/pulseaudio.git] / src / pulsecore / core-rtclock.h
1 #ifndef foopulsertclockhfoo
2 #define foopulsertclockhfoo
3
4 /***
5   This file is part of PulseAudio.
6
7   Copyright 2004-2006 Lennart Poettering
8
9   PulseAudio is free software; you can redistribute it and/or modify
10   it under the terms of the GNU Lesser General Public License as
11   published by the Free Software Foundation; either version 2.1 of the
12   License, or (at your option) any later version.
13
14   PulseAudio is distributed in the hope that it will be useful, but
15   WITHOUT ANY WARRANTY; without even the implied warranty of
16   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17   Lesser General Public License for more details.
18
19   You should have received a copy of the GNU Lesser General Public
20   License along with PulseAudio; if not, write to the Free Software
21   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
22   USA.
23 ***/
24
25 #include <pulsecore/macro.h>
26 #include <pulse/sample.h>
27
28 struct timeval;
29
30 /* Something like pulse/timeval.h but based on CLOCK_MONOTONIC */
31
32 struct timeval *pa_rtclock_get(struct timeval *ts);
33
34 pa_usec_t pa_rtclock_age(const struct timeval *tv);
35 pa_bool_t pa_rtclock_hrtimer(void);
36 void pa_rtclock_hrtimer_enable(void);
37
38 /* timer with a resolution better than this are considered high-resolution */
39 #define PA_HRTIMER_THRESHOLD_USEC 10
40
41 /* bit to set in tv.tv_usec to mark that the timeval is in monotonic time */
42 #define PA_TIMEVAL_RTCLOCK ((time_t) (1LU << 30))
43
44 struct timeval* pa_rtclock_from_wallclock(struct timeval *tv);
45
46 pa_usec_t pa_timespec_load(const struct timespec *ts);
47 struct timespec* pa_timespec_store(struct timespec *ts, pa_usec_t v);
48
49 struct timeval* pa_timeval_rtstore(struct timeval *tv, pa_usec_t v, pa_bool_t rtclock);
50
51 #endif