diff --git a/doc/APIchanges b/doc/APIchanges index a8b70918af..ad444e11b0 100644 --- a/doc/APIchanges +++ b/doc/APIchanges @@ -13,6 +13,9 @@ libavutil: 2014-08-09 API changes, most recent first: +2014-10-xx - xxxxxxx - lavu 54.5.0 - time.h + Add av_gettime_relative(). + 2014-10-xx - xxxxxxx - lavc 56.5.0 - avcodec.h Replace AVCodecContext.time_base used for decoding with AVCodecContext.framerate. diff --git a/libavutil/time.c b/libavutil/time.c index 42497dad3c..7a3604e651 100644 --- a/libavutil/time.c +++ b/libavutil/time.c @@ -23,7 +23,8 @@ #include #if HAVE_CLOCK_GETTIME #include -#elif HAVE_GETTIMEOFDAY +#endif +#if HAVE_GETTIMEOFDAY #include #endif #if HAVE_UNISTD_H @@ -38,11 +39,7 @@ int64_t av_gettime(void) { -#if HAVE_CLOCK_GETTIME - struct timespec ts; - clock_gettime(CLOCK_MONOTONIC, &ts); - return (int64_t)ts.tv_sec * 1000000 + ts.tv_nsec / 1000; -#elif HAVE_GETTIMEOFDAY +#if HAVE_GETTIMEOFDAY struct timeval tv; gettimeofday(&tv, NULL); return (int64_t)tv.tv_sec * 1000000 + tv.tv_usec; @@ -57,6 +54,17 @@ int64_t av_gettime(void) #endif } +int64_t av_gettime_relative(void) +{ +#if HAVE_CLOCK_GETTIME + struct timespec ts; + clock_gettime(CLOCK_MONOTONIC, &ts); + return (int64_t)ts.tv_sec * 1000000 + ts.tv_nsec / 1000; +#else + return av_gettime() + 42 * 60 * 60 * INT64_C(1000000); +#endif +} + int av_usleep(unsigned usec) { #if HAVE_NANOSLEEP diff --git a/libavutil/time.h b/libavutil/time.h index b01a97d770..463bcfcdcf 100644 --- a/libavutil/time.h +++ b/libavutil/time.h @@ -26,6 +26,15 @@ */ int64_t av_gettime(void); +/** + * Get the current time in microseconds since some unspecified starting point. + * On platforms that support it, the time comes from a monotonic clock + * This property makes this time source ideal for measuring relative time. + * The returned values may not be monotonic on platforms where a monotonic + * clock is not available. + */ +int64_t av_gettime_relative(void); + /** * Sleep for a period of time. Although the duration is expressed in * microseconds, the actual delay may be rounded to the precision of the diff --git a/libavutil/version.h b/libavutil/version.h index 8279635a83..b40009e621 100644 --- a/libavutil/version.h +++ b/libavutil/version.h @@ -54,7 +54,7 @@ */ #define LIBAVUTIL_VERSION_MAJOR 54 -#define LIBAVUTIL_VERSION_MINOR 4 +#define LIBAVUTIL_VERSION_MINOR 5 #define LIBAVUTIL_VERSION_MICRO 0 #define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \