diff --git a/doc/APIchanges b/doc/APIchanges index 4137775fc1..83c08ba754 100644 --- a/doc/APIchanges +++ b/doc/APIchanges @@ -15,6 +15,9 @@ libavutil: 2012-10-22 API changes, most recent first: +2014-05-xx - xxxxxxx - lavu 52.84.100 - time.h + Add av_gettime_relative() av_gettime_relative_is_monotonic() + 2014-05-xx - xxxxxxx - lavf 55.17.0 - avformat.h Add AVMFT_FLAG_BITEXACT flag. Muxers now use it instead of checking CODEC_FLAG_BITEXACT on the first stream. diff --git a/libavutil/time.c b/libavutil/time.c index 5a00e7025d..ce4552e767 100644 --- a/libavutil/time.c +++ b/libavutil/time.c @@ -53,6 +53,26 @@ int64_t av_gettime(void) #endif } +int64_t av_gettime_relative(void) +{ +#if HAVE_CLOCK_GETTIME && defined(CLOCK_MONOTONIC) + struct timespec ts; + clock_gettime(CLOCK_MONOTONIC, &ts); + return (int64_t)ts.tv_sec * 1000000 + ts.tv_nsec / 1000; +#else + return av_gettime(); +#endif +} + +int av_gettime_relative_is_monotonic(void) +{ +#if HAVE_CLOCK_GETTIME && defined(CLOCK_MONOTONIC) + return 1; +#else + return 0; +#endif +} + int av_usleep(unsigned usec) { #if HAVE_NANOSLEEP diff --git a/libavutil/time.h b/libavutil/time.h index 90eb436949..910d28e85f 100644 --- a/libavutil/time.h +++ b/libavutil/time.h @@ -28,6 +28,21 @@ */ 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. + * If a monotonic clock is not available on the targeted platform, the + * implementation fallsback on using av_gettime(). + */ +int64_t av_gettime_relative(void); + +/** + * Indicates with a boolean result if the av_gettime_relative() time source + * is monotonic. + */ +int av_gettime_relative_is_monotonic(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 7140705319..365eb30a61 100644 --- a/libavutil/version.h +++ b/libavutil/version.h @@ -56,7 +56,7 @@ */ #define LIBAVUTIL_VERSION_MAJOR 52 -#define LIBAVUTIL_VERSION_MINOR 83 +#define LIBAVUTIL_VERSION_MINOR 84 #define LIBAVUTIL_VERSION_MICRO 100 #define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \