From ebef9f5a56d7df91e010a177a80cfc8dbe394305 Mon Sep 17 00:00:00 2001 From: Luca Barbato Date: Sun, 24 Aug 2014 18:14:47 +0200 Subject: [PATCH] time: Use clock_gettime if the monotonic clock is available Signed-off-by: Luca Barbato --- configure | 4 ++++ libavutil/time.c | 10 ++++++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/configure b/configure index 22b699f9ef..af0128a241 100755 --- a/configure +++ b/configure @@ -1432,6 +1432,7 @@ MATH_FUNCS=" SYSTEM_FUNCS=" aligned_malloc + clock_gettime closesocket CommandLineToArgvW CoTaskMemFree @@ -4038,6 +4039,9 @@ check_func_headers malloc.h _aligned_malloc && enable aligned_malloc check_func ${malloc_prefix}memalign && enable memalign check_func ${malloc_prefix}posix_memalign && enable posix_memalign +check_cpp_condition unistd.h "defined(_POSIX_MONOTONIC_CLOCK)" && + check_func_headers time.h clock_gettime || { check_func_headers time.h clock_gettime -lrt && add_extralibs -lrt; } + check_func fcntl check_func fork check_func gethrtime diff --git a/libavutil/time.c b/libavutil/time.c index 62cd445dbc..e833cd0d17 100644 --- a/libavutil/time.c +++ b/libavutil/time.c @@ -21,7 +21,9 @@ #include #include #include -#if HAVE_GETTIMEOFDAY +#if HAVE_CLOCK_GETTIME +#include +#elif HAVE_GETTIMEOFDAY #include #endif #if HAVE_UNISTD_H @@ -36,7 +38,11 @@ int64_t av_gettime(void) { -#if HAVE_GETTIMEOFDAY +#if HAVE_CLOCK_GETTIME + struct timespec ts; + clock_gettime(CLOCK_MONOTONIC, &ts); + return (int64_t)ts.tv_sec * 100000 + ts.tv_nsec / 1000; +#elif HAVE_GETTIMEOFDAY struct timeval tv; gettimeofday(&tv, NULL); return (int64_t)tv.tv_sec * 1000000 + tv.tv_usec;