1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2024-12-23 12:43:46 +02:00
FFmpeg/libavutil
Henrik Gramner d1a6cb195f x86: Serialize rdtsc in read_time()
Improves the accuracy of measurements, especially in short sections.

To quote the Intel 64 and IA-32 Architectures Software Developer's Manual:
"The RDTSC instruction is not a serializing instruction. It does not necessarily
wait until all previous instructions have been executed before reading the counter.
Similarly, subsequent instructions may begin execution before the read operation
is performed. If software requires RDTSC to be executed only after all previous
instructions have completed locally, it can either use RDTSCP (if the processor
supports that instruction) or execute the sequence LFENCE;RDTSC."

SSE2 is a requirement for lfence so only use it on SSE2-capable systems.
Prefer lfence;rdtsc over rdtscp since rdtscp is supported on fewer systems.

Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2015-07-09 00:10:13 +02:00
..
aarch64 aarch64: Use .data.rel.ro for const data with relocations 2014-12-09 11:43:31 +02:00
arm arm: Suppress tags about used cpu arch and extensions 2015-03-07 17:10:08 +02:00
avr32
bfin Remove all Blackfin architecture optimizations 2014-06-02 08:41:47 -07:00
mips
ppc ppc: vsx: Implement diff_pixels and get_pixels 2015-05-31 12:07:11 +02:00
sh4
tomi
x86 x86: Serialize rdtsc in read_time() 2015-07-09 00:10:13 +02:00
adler32.c adler32: Fix doxy group definition 2014-04-07 01:31:02 +02:00
adler32.h adler32: Fix doxy group definition 2014-04-07 01:31:02 +02:00
aes.c avutil: remove timer.h include from internal.h 2014-01-25 21:50:20 +01:00
aes.h
atomic_gcc.h
atomic_suncc.h
atomic_win32.h atomic_win32: Drop unnecessary atomic.h #include 2014-08-15 09:52:57 +02:00
atomic.c threads: Check w32threads dependencies at the configure stage 2014-02-19 15:12:37 +01:00
atomic.h atomics: cosmetics: Restructure ifdefs for greater clarity 2013-12-20 11:23:13 +01:00
attributes.h attributes: disable flatten on llvm/clang 2013-11-03 11:51:40 +01:00
audio_fifo.c
audio_fifo.h audio_fifo: Split into a separate doxygen module 2014-07-06 11:44:10 -07:00
audioconvert.h
avassert.h
avstring.c avstring: Expose the simple name match function 2014-07-29 17:46:29 +02:00
avstring.h avstring: Mark some character handling functions av_const 2014-11-07 11:57:16 +02:00
avutil.h lavu: add an API function to return the Libav version string 2015-07-02 23:22:53 +02:00
base64.c base64-test: Remove posibility of returning restricted exit codes 2013-10-25 11:06:32 +01:00
base64.h
blowfish.c
blowfish.h
bswap.h aarch64: bswap inline assembly 2014-01-14 22:19:38 +01:00
buffer_internal.h lavu: fix memory leaks by using a mutex instead of atomics 2014-11-27 13:36:00 +01:00
buffer.c lavu: fix memory leaks by using a mutex instead of atomics 2014-11-27 13:36:00 +01:00
buffer.h
channel_layout.c Add missing #includes for *INT64_MAX and *INT64_C 2013-11-23 21:55:52 +01:00
channel_layout.h lavu: Add values for various Dolby flags to the AVMatrixEncoding enum. 2014-01-05 16:41:56 +01:00
colorspace.h
common.h libavutil: Add av_clip_intp2 2015-02-21 00:54:40 +01:00
cpu_internal.h x86: Add helper macros to check for slow cpuflags 2015-05-31 12:07:11 +02:00
cpu.c x86: add AV_CPU_FLAG_AVXSLOW flag 2015-05-31 12:07:11 +02:00
cpu.h x86: add AV_CPU_FLAG_AVXSLOW flag 2015-05-31 12:07:11 +02:00
crc.c crc: add ANSI CRC16 LE 2014-04-17 20:08:19 +02:00
crc.h crc: add ANSI CRC16 LE 2014-04-17 20:08:19 +02:00
des.c
des.h
dict.c lavu: Check av_dict_set allocations 2015-01-29 14:59:57 +00:00
dict.h dict: const correctness for av_dict_get() and av_dict_copy() 2014-06-05 09:16:15 -07:00
display.c mov: Write the display matrix in order 2015-03-23 20:53:28 +00:00
display.h mov: Write the display matrix in order 2015-03-23 20:53:28 +00:00
downmix_info.c lavu: add AV_FRAME_DATA_DOWNMIX_INFO side data type. 2014-02-15 22:24:53 +01:00
downmix_info.h lavu: add AV_FRAME_DATA_DOWNMIX_INFO side data type. 2014-02-15 22:24:53 +01:00
error.c
error.h avresample: Introduce AVFrame-based API 2014-08-10 14:26:37 +02:00
eval.c cosmetics: Write NULL pointer equality checks more compactly 2014-08-15 03:18:18 -07:00
eval.h
fifo.c
fifo.h
file_open.c Share the utf8 to wchar conversion routine between lavf and lavu 2014-11-27 09:29:17 +02:00
file.c Don't anonymously typedef structs 2015-02-14 10:13:49 -08:00
file.h
float_dsp.c float_dsp: Replace arch optimization ifdefs by if cascade 2014-03-22 14:11:22 +01:00
float_dsp.h aarch64: float_dsp NEON assembler 2014-03-18 22:56:07 +01:00
frame.c lavu: Refactor side data wiping 2014-12-18 23:22:59 +01:00
frame.h frame: clarify buf documentation 2015-02-08 21:28:31 +01:00
hmac.c
hmac.h
imgutils.c imgutils: create misc functions for dealing with buffers 2015-01-14 17:17:24 +01:00
imgutils.h Replace a few leftover instances of enum PixelFormat with enum AVPixelFormat 2015-03-17 23:53:33 +02:00
internal.h configure: Support MSVC 2015 2015-06-08 13:27:49 +02:00
intfloat.h
intmath.c
intmath.h
intreadwrite.h
lfg.c
lfg.h
libavutil.v
libm.h
lls.c
lls.h
log2_tab.c
log.c log: Print a full backtrace along with error messages under Valgrind 2015-04-20 19:20:57 +01:00
log.h log: Introduce a more verbose debug level 2015-04-19 12:41:59 +01:00
lzo.c lzo: Handle integer overflow 2014-06-23 10:20:57 +02:00
lzo.h
macros.h lavu: Move preprocessor macros in a separate file 2013-12-29 22:52:04 +01:00
Makefile Add transformation matrix API. 2014-05-19 13:13:10 +02:00
mathematics.c mathematics: K&R formatting cosmetics 2014-05-03 18:31:18 +02:00
mathematics.h
md5.c
md5.h
mem.c mem: fix pointer pointer aliasing violations 2015-02-01 02:28:40 +01:00
mem.h mem: add av_strndup() for duplicating substrings 2014-08-13 17:24:18 +00:00
old_pix_fmts.h Deprecate obsolete XvMC hardware decoding support 2013-11-13 21:07:45 +01:00
opt.c opt: check memory allocation 2015-01-05 14:58:20 +01:00
opt.h opt: Fix the documentation mentioning av_set_string3 2014-11-11 11:49:55 +01:00
parseutils.c parseutils: Make av_small_strptime public 2015-04-07 12:36:11 +02:00
parseutils.h parseutils: Make av_small_strptime public 2015-04-07 12:36:11 +02:00
pixdesc.c D3D11va: add a Direct3D11 video decoder similar to DXVA2 2015-05-25 11:47:08 +02:00
pixdesc.h pixdesc: return color properties names 2014-10-08 18:17:49 +01:00
pixfmt.h pixfmt: remove misleading and broken documentation 2015-05-28 18:40:40 +02:00
random_seed.c random_seed: Rewrite the generic clock() based seed code 2014-01-06 18:53:58 +02:00
random_seed.h
rational.c
rational.h
rc4.c
rc4.h
replaygain.h replaygain: correctly parse peak values 2014-04-04 17:40:19 +02:00
samplefmt.c samplefmt: avoid integer overflow in av_samples_get_buffer_size() 2014-02-04 12:32:47 -05:00
samplefmt.h samplefmt: Add doxygen categories 2014-07-06 11:44:01 -07:00
sha.c
sha.h
stereo3d.c stereo3d: initialize AVStereo3D to zero 2014-08-13 17:24:18 +00:00
stereo3d.h stereo3d: add missing include guards 2014-06-19 17:31:49 -04:00
thread.h thread: use "" instead of <> for including the w32pthreads wrapper 2014-12-14 18:15:57 +01:00
time_internal.h lavu: Provide fallbacks for gmtime_r and localtime_r 2014-10-26 00:14:54 +03:00
time.c lavu: Add av_gettime_relative 2014-10-24 09:53:41 +03:00
time.h lavu: Add av_gettime_relative 2014-10-24 09:53:41 +03:00
timer.h timer: use mach_absolute_time as high resolution clock on darwin 2014-03-09 00:45:34 +01:00
tree.c tree-test: Don't return restricted exit codes 2013-10-24 10:59:26 +01:00
tree.h
utils.c lavu: add an API function to return the Libav version string 2015-07-02 23:22:53 +02:00
version.h lavu: Add version information for av_version_info() 2015-07-03 14:30:11 +01:00
wchar_filename.h Share the utf8 to wchar conversion routine between lavf and lavu 2014-11-27 09:29:17 +02:00
xtea.c xtea: Add Doxy @file and group 2014-04-07 01:31:36 +02:00
xtea.h xtea: Add Doxy @file and group 2014-04-07 01:31:36 +02:00