aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--doc/APIchanges3
-rw-r--r--libavutil/time.c20
-rw-r--r--libavutil/time.h15
-rw-r--r--libavutil/version.h2
4 files changed, 39 insertions, 1 deletions
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
@@ -29,6 +29,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
* system timer.
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, \