diff options
author | Wang Bin <wbsecg1@gmail.com> | 2017-01-09 11:52:06 +0800 |
---|---|---|
committer | Steven Liu <lq@chinaffmpeg.org> | 2017-01-09 11:52:06 +0800 |
commit | 0e8b68a2c4031e25082603ad88711be12210d41f (patch) | |
tree | c7917f042d9ef6b64791c509c07a757796511e94 | |
parent | b53b3a4f6abcc97d4cdcc1f025ef803fcfab18c6 (diff) | |
download | ffmpeg-0e8b68a2c4031e25082603ad88711be12210d41f.tar.gz |
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.c | 18 |
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; |