Fork of FFmpeg for xenia's usage. Branched from latest release. On changes use a git rebase strategy when applicable!
Go to file
Wan-Teh Chang 8c3b329da2 avcodec/h264_slice: don't sync default_ref[] between threads.
default_ref[] is unconditionally initialized in h264_initialise_ref_list()
(called from ff_h264_build_ref_list(), called from h264_slice_init()).

This fixes the following tsan warning when running fate-h264:

WARNING: ThreadSanitizer: data race (pid=31070)
  Write of size 8 at 0x7bbc000082a8 by thread T1 (mutexes: write M1628):
    #0 memcpy /work/release-test/final/llvm.src/projects/compiler-rt/lib/tsan/../sanitizer_common/sanitizer_common_interceptors.inc:655:5
(ffmpeg+0x10de9d)
    #1 h264_initialise_ref_list ffmpeg/libavcodec/h264_refs.c:214:29 (ffmpeg+0x1186b3f)
    #2 ff_h264_build_ref_list ffmpeg/libavcodec/h264_refs.c:306 (ffmpeg+0x1186b3f)
    #3 h264_slice_init ffmpeg/libavcodec/h264_slice.c:1900:11 (ffmpeg+0x1191149)
[..]
  Previous read of size 8 at 0x7bbc000082a8 by main thread (mutexes:
write M1630):
    #0 memcpy /work/release-test/final/llvm.src/projects/compiler-rt/lib/tsan/../sanitizer_common/sanitizer_common_interceptors.inc:655:5
(ffmpeg+0x10de9d)
    #1 ff_h264_update_thread_context ffmpeg/libavcodec/h264_slice.c:411:5 (ffmpeg+0x118b7dc)

Signed-off-by: Wan-Teh Chang <wtc@google.com>
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
2017-07-27 17:14:17 -04:00
compat compat/cuda: make cuvidGetDecoderCaps optional 2017-06-01 12:39:06 +02:00
doc doc/APIChanges: add missing entry for ICC Profile side data type. 2017-07-27 14:21:41 -03:00
ffbuild build: Allow generating dependencies as a side-effect of assembling 2017-06-21 17:00:29 -03:00
libavcodec avcodec/h264_slice: don't sync default_ref[] between threads. 2017-07-27 17:14:17 -04:00
libavdevice avdevice: make ff_reverse available on shared builds 2017-07-20 00:33:29 -03:00
libavfilter lavfi/testsrc2: fix completely transparent alpha. 2017-07-25 09:27:35 +02:00
libavformat avformat/s337m: fix potentially undefined pointer arithmetic 2017-07-26 21:23:07 +03:00
libavresample build: Generalize yasm/nasm-related variable names 2017-06-21 17:00:29 -03:00
libavutil fate: update pixfmt_best test to check for endianness 2017-07-27 08:53:37 +02:00
libpostproc Merge commit '92db5083077a8b0f8e1050507671b456fd155125' 2017-05-04 19:59:30 -03:00
libswresample libswresample: check input to swr_convert_frame for NULL 2017-07-08 18:13:43 +02:00
libswscale build: Generalize yasm/nasm-related variable names 2017-06-21 17:00:29 -03:00
presets presets: remove moldering iPod presets 2014-06-17 16:15:04 -08:00
tests fate: update pixfmt_best test to check for endianness 2017-07-27 08:53:37 +02:00
tools build: Generalize yasm/nasm-related variable names 2017-06-21 17:00:29 -03:00
.gitattributes fate: add SCC test 2017-01-27 17:06:42 +01:00
.gitignore build: add support for building .cu files via nvcc 2017-05-15 11:46:50 +02:00
.travis.yml build: Prefer NASM assembler over YASM 2017-06-21 17:00:30 -03:00
Changelog avformat: add SMPTE 337M demuxer 2017-07-19 12:27:33 +02:00
cmdutils_opencl.c cmdutils_opencl: Fix read of uinitialized cl_mem 2017-05-11 13:02:12 +02:00
cmdutils.c avformat, ffmpeg: deprecate old rotation API 2017-03-27 13:20:27 +02:00
cmdutils.h Merge commit '122de16dd8108a59a55d30543c9f28b5f61b02d1' 2017-05-05 14:04:30 +02:00
configure avcodec: add Dolby E decoder 2017-07-19 12:27:32 +02:00
CONTRIBUTING.md Add CONTRIBUTING.md 2016-09-18 10:02:13 +01:00
COPYING.GPLv2
COPYING.GPLv3 Add configure option to upgrade (L)GPL to version 3. 2009-06-05 11:04:03 +00:00
COPYING.LGPLv2.1 cosmetics: Delete empty lines at end of file. 2012-02-09 12:26:45 +01:00
COPYING.LGPLv3 Add configure option to upgrade (L)GPL to version 3. 2009-06-05 11:04:03 +00:00
CREDITS CREDITS: redirect to Git log, remove current outdated content 2013-01-31 18:02:52 +01:00
ffmpeg_cuvid.c ffmpeg_cuvid: adapt for recent filter graph initialization changes 2017-03-03 08:45:43 +01:00
ffmpeg_filter.c ffmpeg: Support setting the hardware device to use when filtering 2017-06-14 22:27:07 +01:00
ffmpeg_hw.c avconv_hw: Free device on initialisation failure 2017-06-18 17:07:25 +01:00
ffmpeg_opt.c ffmpeg: reindent after previous commit 2017-07-18 10:39:38 +02:00
ffmpeg_qsv.c ffmpeg: init filtergraphs only after we have a frame on each input 2017-03-03 08:45:43 +01:00
ffmpeg_videotoolbox.c ffmpeg_videotoolbox: fix usage of av_get_codec_tag_string() 2017-03-29 14:49:29 +02:00
ffmpeg.c ffmpeg: Fix typos in the comment for decode() ("." vs. "->") 2017-07-07 03:48:56 +02:00
ffmpeg.h dxva: add support for new dxva2 and d3d11 hwaccel APIs 2017-06-27 18:05:02 +02:00
ffplay.c ffplay: reindent after previous commit 2017-07-18 10:39:43 +02:00
ffprobe.c ffprobe: add support for ICC Profile frame side data 2017-07-26 11:31:17 -03:00
ffserver_config.c ffserver_config: Check for failure to allocate FFServerIPAddressACL 2016-12-22 19:23:08 +01:00
ffserver_config.h ffsrever: Make the status page bitexact if any stream is bitexact 2016-11-29 19:26:26 +01:00
ffserver.c Merge commit '122de16dd8108a59a55d30543c9f28b5f61b02d1' 2017-05-05 14:04:30 +02:00
INSTALL.md INSTALL: add markdown syntax 2014-05-28 22:38:38 +02:00
LICENSE.md Merge commit '4fef648d10bf3bcfd4b8fa5755c1128966a2427c' 2017-03-15 22:07:47 +01:00
MAINTAINERS MAINTAINERS: add myself 2017-07-21 12:18:48 -03:00
Makefile dxva: add support for new dxva2 and d3d11 hwaccel APIs 2017-06-27 18:05:02 +02:00
README.md Add CONTRIBUTING.md 2016-09-18 10:02:13 +01:00
RELEASE Bump minor versions for master after release/3.3 branchpoint 2017-03-31 13:21:06 +02:00

FFmpeg README

FFmpeg 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.
  • libswresample implements audio mixing and resampling routines.
  • libswscale implements color conversion and scaling routines.

Tools

  • ffmpeg is a command line toolbox to manipulate, convert and stream multimedia content.
  • ffplay is a minimalistic multimedia player.
  • ffprobe is a simple analysis tool to inspect multimedia content.
  • ffserver is a multimedia streaming server for live broadcasts.
  • 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

Coding examples are available in the doc/examples directory.

License

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

Contributing

Patches should be submitted to the ffmpeg-devel mailing list using git format-patch or git send-email. Github pull requests should be avoided because they are not part of our review process and will be ignored.