Commit c708b540 authored by Janne Grunau's avatar Janne Grunau Committed by Janne Grunau

timer: use mach_absolute_time as high resolution clock on darwin

Not guaranteed to be in nanosecond resolution. On iOS 7 the duration
of one tick is 125/3 ns which is still more than an order of magnitude
better then microseconds.

Replace decicycles with the neutral UNITS. Decicycles is strange but
tenths of a nanosecond and unspecific "deci"-ticks for mach_absolute_time
is just silly.
parent 634d9d8b
...@@ -1387,6 +1387,8 @@ HAVE_LIST=" ...@@ -1387,6 +1387,8 @@ HAVE_LIST="
local_aligned_8 local_aligned_8
localtime_r localtime_r
loongson loongson
mach_absolute_time
mach_mach_time_h
machine_ioctl_bt848_h machine_ioctl_bt848_h
machine_ioctl_meteor_h machine_ioctl_meteor_h
machine_rw_barrier machine_rw_barrier
...@@ -3853,6 +3855,7 @@ check_struct "sys/time.h sys/resource.h" "struct rusage" ru_maxrss ...@@ -3853,6 +3855,7 @@ check_struct "sys/time.h sys/resource.h" "struct rusage" ru_maxrss
check_func gettimeofday check_func gettimeofday
check_func isatty check_func isatty
check_func localtime_r check_func localtime_r
check_func mach_absolute_time
check_func ${malloc_prefix}memalign && enable memalign check_func ${malloc_prefix}memalign && enable memalign
check_func mkstemp check_func mkstemp
check_func mmap check_func mmap
...@@ -3887,6 +3890,7 @@ check_header dlfcn.h ...@@ -3887,6 +3890,7 @@ check_header dlfcn.h
check_header dxva.h check_header dxva.h
check_header dxva2api.h check_header dxva2api.h
check_header io.h check_header io.h
check_header mach/mach_time.h
check_header malloc.h check_header malloc.h
check_header poll.h check_header poll.h
check_header sys/mman.h check_header sys/mman.h
......
...@@ -32,6 +32,10 @@ ...@@ -32,6 +32,10 @@
#include "config.h" #include "config.h"
#if HAVE_MACH_MACH_TIME_H
#include <mach/mach_time.h>
#endif
#include "log.h" #include "log.h"
#if ARCH_ARM #if ARCH_ARM
...@@ -44,8 +48,12 @@ ...@@ -44,8 +48,12 @@
# include "x86/timer.h" # include "x86/timer.h"
#endif #endif
#if !defined(AV_READ_TIME) && HAVE_GETHRTIME #if !defined(AV_READ_TIME)
# define AV_READ_TIME gethrtime # if HAVE_GETHRTIME
# define AV_READ_TIME gethrtime
# elif HAVE_MACH_ABSOLUTE_TIME
# define AV_READ_TIME mach_absolute_time
# endif
#endif #endif
#ifdef AV_READ_TIME #ifdef AV_READ_TIME
...@@ -68,7 +76,7 @@ ...@@ -68,7 +76,7 @@
tskip_count++; \ tskip_count++; \
if (((tcount + tskip_count) & (tcount + tskip_count - 1)) == 0) { \ if (((tcount + tskip_count) & (tcount + tskip_count - 1)) == 0) { \
av_log(NULL, AV_LOG_ERROR, \ av_log(NULL, AV_LOG_ERROR, \
"%"PRIu64" decicycles in %s, %d runs, %d skips\n", \ "%"PRIu64" UNITS in %s, %d runs, %d skips\n", \
tsum * 10 / tcount, id, tcount, tskip_count); \ tsum * 10 / tcount, id, tcount, tskip_count); \
} \ } \
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment