FFmpeg git repo
Go to file
Ganesh Ajjanagadde 2f4374fae1 ffmpeg: avoid possible undefined behavior
On lines 1633,1634 FFABS(pts) is performed. However, if av_stream_get_end_pts
returns AV_NOPTS_VALUE always, pts remains stuck at INT64_MIN, leading
to undefined behavior on FFABS.

One could conceive of a solution using FFNABS. However, such a solution
has to deal with the implementation defined rounding of integer division
with at least one negative operand in ANSI C89. C99 forces truncation to
zero, but I am not sure that all of our platforms compile with full C99
support, and in particular whether we can safely assume a fixed
rounding behavior across all platforms.

This solution is simple, and I doubt changing INT64_MIN to INT64_MIN + 1
has any practical loss - if it is stuck at its initial value, the stream
is messed up anyway.

Signed-off-by: Ganesh Ajjanagadde <gajjanagadde@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2015-10-09 21:19:39 +02:00
compat compat/w32pthreads: Add return values to match the simulated pthread functions. 2015-09-30 13:41:33 +10:00
doc doc/faq: use https instead of http 2015-10-08 23:11:32 +02:00
libavcodec lavc/mjpegenc: Add an option to force outputting chroma matrix. 2015-10-09 20:58:07 +02:00
libavdevice
libavfilter avfilter/vf_blend: fix normal mode with opacity != 1 2015-10-09 12:12:03 +02:00
libavformat lavf/hls: don't convert NULL options to empty strings; fixes HTTP CRLF warnings 2015-10-09 04:12:57 -05:00
libavresample
libavutil lavu/opt: add flag to return NULL when applicable in av_opt_get 2015-10-09 04:12:57 -05:00
libpostproc
libswresample swresample/resample: manually unroll the main loop in bessel() 2015-10-07 18:00:58 +02:00
libswscale all: add _DEFAULT_SOURCE locally wherever needed 2015-10-04 12:15:16 -04:00
presets
tests tests: update fate-filter-delogo test reference after commit 8bc708fcee 2015-10-08 12:44:48 +02:00
tools
.gitattributes
.gitignore
.travis.yml
COPYING.GPLv2
COPYING.GPLv3
COPYING.LGPLv2.1
COPYING.LGPLv3
CREDITS
Changelog avfilter: add displace video filter 2015-10-04 21:44:57 +02:00
INSTALL.md
LICENSE.md
MAINTAINERS
Makefile
README.md README: replace http with https 2015-10-06 13:27:29 +02:00
RELEASE
arch.mak
cmdutils.c cmdutils: silence unused warnings under --disable-swscale, --disable-swresample 2015-10-03 19:26:09 +02:00
cmdutils.h
cmdutils_common_opts.h
cmdutils_opencl.c
common.mak
configure build system: fix dependency generation 2015-10-09 13:17:34 +02:00
ffmpeg.c ffmpeg: avoid possible undefined behavior 2015-10-09 21:19:39 +02:00
ffmpeg.h
ffmpeg_dxva2.c
ffmpeg_filter.c
ffmpeg_opt.c Merge commit 'b5e4f393b6757629281f58c3f3f6d55ca522ab60' 2015-09-29 15:30:48 +02:00
ffmpeg_vdpau.c
ffmpeg_videotoolbox.c build: restore videotoolbox compilation on iOS 2015-10-09 10:59:31 +02:00
ffplay.c ffplay: use correct context for av_log 2015-10-05 22:28:17 +02:00
ffprobe.c
ffserver.c ffserver: avoid leaking pathname at exit 2015-10-04 22:31:22 -07:00
ffserver_config.c ffserver: fix line wrapping on function decls 2015-10-04 15:58:35 -07:00
ffserver_config.h
library.mak
version.sh

README.md

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. Few developers follow pull requests so they will likely be ignored.