FFmpeg git repo
Go to file
Wan-Teh Chang 2170017a1c avutil: fix data race in av_get_cpu_flags()
Make the one-time initialization in av_get_cpu_flags() thread-safe. The
static variables |flags|, |cpuflags_mask|, and |checked| in
libavutil/cpu.c are read and written using normal load and store
operations. These are considered as data races. The fix is to use atomic
load and store operations.

Remove the |checked| variable because the invalid value of -1 for
|flags| can be used to indicate the same condition. Rename |flags| to
|cpu_flags| and move it to file scope.

The fix can be verified by running the libavutil/tests/cpu_init.c test
program under ThreadSanitizer:
    ./configure --toolchain=clang-tsan
    make libavutil/tests/cpu_init
    libavutil/tests/cpu_init

There should be no warnings from ThreadSanitizer.

Co-author: Dmitry Vyukov of Google, who suggested the data race fix.

Signed-off-by: Wan-Teh Chang <wtc@google.com>
2016-12-08 15:53:58 -05:00
compat Remove Plan 9 support 2016-12-03 09:15:01 +01:00
doc lavc: Add spherical packet side data API 2016-12-07 14:34:34 -05:00
libavcodec libkvazaar: Add missing header #includes 2016-12-08 21:34:30 +01:00
libavdevice build: Drop support for old versions of libdc1394 2016-12-03 09:15:01 +01:00
libavfilter configure: Add missing asyncts filter, movie filter, and output example deps 2016-11-25 18:45:27 +01:00
libavformat Add missing #includes for standalone spherical-information-related headers 2016-12-08 20:12:23 +01:00
libavresample Fix some mismatches between function parameter and doxygen parameter names. 2016-11-21 14:29:10 +01:00
libavutil avutil: fix data race in av_get_cpu_flags() 2016-12-08 15:53:58 -05:00
libswscale swscale: Add GRAY12 2016-11-07 22:42:00 +01:00
presets
tests avutil: fix data race in av_get_cpu_flags() 2016-12-08 15:53:58 -05:00
tools build: Move entries related to building TOOLS to a subdirectory Makefile 2016-12-07 11:02:31 +01:00
.gitattributes
.gitignore
.travis.yml
arch.mak
avconv_dxva2.c
avconv_filter.c
avconv_opt.c avconv_opt: Consistently iterate through hwaccels array in all cases 2016-11-13 19:06:38 +01:00
avconv_qsv.c
avconv_vaapi.c
avconv_vda.c
avconv_vdpau.c
avconv.c avconv: Fix the audio next dts computation 2016-11-29 10:38:01 +01:00
avconv.h
avplay.c avplay: Correct function pointer assignments in options array 2016-11-08 17:20:30 +01:00
avprobe.c avprobe: Allow specifying multiple stream entries to be shown 2016-12-07 14:35:08 -05:00
Changelog mov: Export spherical information 2016-12-07 14:35:06 -05:00
cmdutils_common_opts.h
cmdutils.c
cmdutils.h
common.mak build: Ensure that the "all" target appears before all Makefile includes 2016-12-07 15:46:57 +01:00
configure configure: Fail if cuda was enabled and is not available 2016-12-08 20:12:24 +01:00
COPYING.GPLv2
COPYING.GPLv3
COPYING.LGPLv2.1
COPYING.LGPLv3
CREDITS
INSTALL
library.mak build: Drop support for configuring library name suffixes 2016-12-03 09:15:01 +01:00
LICENSE
Makefile build: Ensure that the "all" target appears before all Makefile includes 2016-12-07 15:46:57 +01:00
README
README.md
RELEASE
version.sh

Libav

Build Status

Libav is a collection of libraries and tools to process multimedia content such as audio, video, subtitles and related metadata.

Libraries

  • libavcodec provides implementation of a wider range of codecs.
  • libavformat implements streaming protocols, container formats and basic I/O access.
  • libavutil includes hashers, decompressors and miscellaneous utility functions.
  • libavfilter provides a mean to alter decoded Audio and Video through chain of filters.
  • libavdevice provides an abstraction to access capture and playback devices.
  • libavresample implements audio mixing and resampling routines.
  • libswscale implements color conversion and scaling routines.

Tools

  • avconv is a command line toolbox to manipulate, convert and stream multimedia content.
  • avplay is a minimalistic multimedia player.
  • avprobe is a simple analisys tool to inspect multimedia content.
  • Additional small tools such as aviocat, ismindex and qt-faststart.

Documentation

The offline documentation is available in the doc/ directory.

The online documentation is available in the main website and in the wiki.

Examples

Conding examples are available in the doc/example directory.

License

Libav codebase is mainly LGPL-licensed with optional components licensed under GPL. Please refer to the LICENSE file for detailed information.