summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWang Bin <wbsecg1@gmail.com>2017-01-09 11:52:06 +0800
committerSteven Liu <lq@chinaffmpeg.org>2017-01-09 11:52:06 +0800
commit0e8b68a2c4031e25082603ad88711be12210d41f (patch)
treec7917f042d9ef6b64791c509c07a757796511e94
parentb53b3a4f6abcc97d4cdcc1f025ef803fcfab18c6 (diff)
avutil/tile: check clock_gettime at runtime for apple platforms
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>
-rw-r--r--libavutil/time.c18
1 files changed, 13 insertions, 5 deletions
diff --git a/libavutil/time.c b/libavutil/time.c
index dbaee0264c..afa6658aa6 100644
--- a/libavutil/time.c
+++ b/libavutil/time.c
@@ -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;