]> git.sesse.net Git - ffmpeg/commitdiff
avutil/tile: check clock_gettime at runtime for apple platforms
authorWang Bin <wbsecg1@gmail.com>
Mon, 9 Jan 2017 03:52:06 +0000 (11:52 +0800)
committerSteven Liu <lq@chinaffmpeg.org>
Mon, 9 Jan 2017 03:52:06 +0000 (11:52 +0800)
clock_gettime is avalible since macOS 10.12 and iOS 10.0. Because of
weak linking, clock_gettime can be build without error with new
macOS/iOS sdk, but the symbol may not exist on the target system.
Explicitly checking the symbol is required.
https://developer.apple.com/library/content/documentation/MacOSX/Conceptual/BPFrameworks/Concepts/WeakLinking.html

Signed-off-by: Wang Bin <wbsecg1@gmail.com>
Signed-off-by: Steven Liu <lq@chinaffmpeg.org>
libavutil/time.c

index dbaee0264c71929db2b6a418f7535b6289a35a3a..afa6658aa621a7bd48706b46849dd5538dbe3dcb 100644 (file)
@@ -56,17 +56,25 @@ int64_t av_gettime(void)
 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() + 42 * 60 * 60 * INT64_C(1000000);
+#ifdef __APPLE__
+    if (clock_gettime)
+#endif
+    {
+        struct timespec ts;
+        clock_gettime(CLOCK_MONOTONIC, &ts);
+        return (int64_t)ts.tv_sec * 1000000 + ts.tv_nsec / 1000;
+    }
 #endif
+    return av_gettime() + 42 * 60 * 60 * INT64_C(1000000);
 }
 
 int av_gettime_relative_is_monotonic(void)
 {
 #if HAVE_CLOCK_GETTIME && defined(CLOCK_MONOTONIC)
+#ifdef __APPLE__
+    if (!clock_gettime)
+        return 0;
+#endif
     return 1;
 #else
     return 0;