mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2025-01-03 13:32:10 +00:00
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.
This commit is contained in:
parent
634d9d8b39
commit
c708b54033
4
configure
vendored
4
configure
vendored
@ -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
|
|||||||
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
|
|||||||
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 @@
|
|||||||
|
|
||||||
#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 @@
|
|||||||
# 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 @@
|
|||||||
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); \
|
||||||
} \
|
} \
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user