1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2024-12-18 03:19:31 +02:00
Go to file
Ganesh Ajjanagadde e11e32686f avcodec/bitstream: replace qsort with AV_QSORT
Commit 3a0a2f33a6 claims large performance
advantages for AV_QSORT over libc's qsort. The reason is that I suspect
that libc's qsort (at least on non LTO builds, like the typical FFmpeg config)
can't inline the comparison callback:
https://stackoverflow.com/questions/5290695/is-there-any-way-a-c-c-compiler-can-inline-a-c-callback-function.
AV_QSORT has two things going for it:
1. The guaranteed inlining of qsort itself. This yields a negligible
boost that may be ignored.
2. The more serious possibility of potentially allowing the comparison
function to be inlined - this is likely responsible for the large boosts
reported.

There is a comment explaining that this is a place that could use some
performance improvement. Thus AV_QSORT is used to achieve that.

Benchmarks deemed unnecessary due to existing claims about AV_QSORT.
Tested with FATE.

Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by: Ganesh Ajjanagadde <gajjanagadde@gmail.com>
2015-10-18 09:22:49 -04:00
compat w32pthreads: fix mingw build on x86 with -msse2 or higher 2015-10-16 14:54:48 +02:00
doc doc/ffmpeg: use stream_loop instead of loop 2015-10-14 21:56:31 -04:00
libavcodec avcodec/bitstream: replace qsort with AV_QSORT 2015-10-18 09:22:49 -04:00
libavdevice avdevice/internal: add av_warn_unused_result 2015-10-16 17:28:40 -04:00
libavfilter avfilter/af_ladspa: check functions return value in query_formats 2015-10-18 02:01:44 +02:00
libavformat avformat/rsd: add VAG support 2015-10-18 14:17:14 +02:00
libavresample avresample: Remove an unused variable 2015-09-29 14:33:01 +02:00
libavutil opencl: Force the use of 1.2 APIs 2015-10-17 01:16:50 -07:00
libpostproc
libswresample swresample/swresample_internal: add av_warn_unused_result 2015-10-15 22:27:23 -04:00
libswscale swscale/swscale: add av_warn_unused_result to sws_init_context 2015-10-16 17:18:21 -04:00
presets
tests aacenc_ltp: adjust and speed up autocorrelation calculations 2015-10-17 22:53:11 +01:00
tools
.gitattributes
.gitignore gitignore: ignore object file temporaries 2015-10-10 20:30:41 +02:00
.travis.yml
arch.mak
Changelog avformat: add svag demuxer 2015-10-16 16:37:41 +02:00
cmdutils_common_opts.h
cmdutils_opencl.c
cmdutils.c Merge commit '9ef748173a4e0e58d40afaf38397783cd2537eaa' 2015-10-16 22:57:21 +02:00
cmdutils.h
common.mak Merge commit 'c1aac39eaccd32dc3b74ccfcce701d3d888fbc6b' 2015-10-14 13:54:50 +02:00
configure configure: Simplify using --disable-all. 2015-10-18 14:27:51 +02:00
COPYING.GPLv2
COPYING.GPLv3
COPYING.LGPLv2.1
COPYING.LGPLv3
CREDITS
ffmpeg_dxva2.c
ffmpeg_filter.c Revert "Merge commit '8b830ee9a26d47b138f12a82085cdb372f407f1e'" (avconv: Do not try to configure filter outputs without streams) 2015-10-11 12:24:43 +02:00
ffmpeg_opt.c ffmpeg_opt: rename loop option to stream_loop 2015-10-14 21:06:28 +02:00
ffmpeg_vdpau.c
ffmpeg_videotoolbox.c ffmpeg/videotoolbox: protect UTGetOSTypeFromString on both VDA and VT 2015-10-15 10:22:31 +02:00
ffmpeg.c ffmpeg: add deprecation guards around remaining AVFMT_RAWPICTURE usage 2015-10-14 14:52:43 +02:00
ffmpeg.h Merge commit '16b0c929621f84983b83b9735ce973acb12723bc' 2015-10-14 14:28:20 +02:00
ffplay.c ffplay: eliminate stream_component_close forward declaration 2015-10-12 00:07:38 +02:00
ffprobe.c
ffserver_config.c ffserver_config: check for INT_MIN before doing FFABS 2015-10-13 19:40:09 -04:00
ffserver_config.h
ffserver.c ffserver: avoid leaking pathname at exit 2015-10-04 22:31:22 -07:00
INSTALL.md
library.mak
LICENSE.md avfilter: add rubberband wrapper 2015-09-20 19:54:57 +02:00
MAINTAINERS avfilter/vf_chromakey: Add chromakey video filter 2015-09-23 18:10:14 +02:00
Makefile
README.md README: replace http with https 2015-10-06 13:27:29 +02:00
RELEASE
version.sh

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.