virtual-sink: Fix a crash when moving the sink to a new master right after setup.
[pulseaudio-raopUDP/pulseaudio-raop-alac.git] / src / pulsecore / core-rtclock.h
blob62535368030e800a4d62f8cc2d7bef91c5b79ff1
1 #ifndef foopulsertclockhfoo
2 #define foopulsertclockhfoo
4 /***
5 This file is part of PulseAudio.
7 Copyright 2004-2006 Lennart Poettering
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.
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.
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 ***/
25 #include <pulsecore/macro.h>
26 #include <pulse/sample.h>
28 struct timeval;
30 /* Something like pulse/timeval.h but based on CLOCK_MONOTONIC */
32 struct timeval *pa_rtclock_get(struct timeval *ts);
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);
38 /* timer with a resolution better than this are considered high-resolution */
39 #define PA_HRTIMER_THRESHOLD_USEC 10
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))
44 struct timeval* pa_rtclock_from_wallclock(struct timeval *tv);
46 #ifdef HAVE_CLOCK_GETTIME
47 pa_usec_t pa_timespec_load(const struct timespec *ts);
48 struct timespec* pa_timespec_store(struct timespec *ts, pa_usec_t v);
49 #endif
51 struct timeval* pa_timeval_rtstore(struct timeval *tv, pa_usec_t v, pa_bool_t rtclock);
53 #endif