Go to file
Rostislav Pehlivanov 38fd4c2e66 aaccoder: add a new perceptual noise substitution implementation
This commit finalizes the PNS implementation previously added to the encoder
by moving it to a seperate function search_for_pns() and thus making it
coder-generic. This new implementation makes use of the spread field of
the psy bands and the lambda quality feedback paremeter. The spread of the
spectrum in a band prevents PNS from being used excessively and thus preserve
more phase information in high frequencies.  The lambda parameter allows
the number of PNS-marked bands to vary based on the lambda parameter and the
amount of bits available, making better choices on which bands are to be marked
as noise. Comparisons with the previous PNS implementation can be found
here: https://trac.ffmpeg.org/attachment/wiki/Encode/AAC/

This is V2 of the patch, the changes from the previous version being that this
version uses the new band->spread metric from aacpsy and normalizes the
energy using the group size. These changes were suggested by Claudio Freire
on the mailing list. Another change is the use of lambda to alter the
frequency threshold. This change makes the actual threshold frequencies
vary between +-2Khz of what's specified, depending on frame encoding performance.

Reviewed-by: Claudio Freire <klaussfreire@gmail.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-07-05 16:39:06 +02:00
compat compat/os2threads: Check av_malloc() return code 2015-06-02 15:16:45 +02:00
doc avfilter/avf_showvolume: make it possible to use current channel number in color expression 2015-07-03 18:43:21 +00:00
libavcodec aaccoder: add a new perceptual noise substitution implementation 2015-07-05 16:39:06 +02:00
libavdevice lavd: Add library identifier 2015-07-01 00:13:58 +01:00
libavfilter avfilter/avf_showvolume: make it possible to use current channel number in color expression 2015-07-03 18:43:21 +00:00
libavformat avformat/yuv4mpegenc: use avio_printf() 2015-07-03 18:43:21 +00:00
libavresample Merge commit 'd68c05380cebf563915412182643a8be04ef890b' 2015-06-01 00:22:47 +02:00
libavutil Merge commit '832129431fd5c693b12c32a1563944c631feaf36' 2015-07-03 21:06:46 +02:00
libpostproc postproc: fix unaligned access 2015-06-19 01:47:59 +02:00
libswresample swr: Remember previously set int_sample_format from user 2015-06-22 18:34:39 +02:00
libswscale YUV->BGR32 MMX support 2015-07-04 00:03:45 +02:00
presets presets: remove moldering iPod presets 2014-06-17 16:15:04 -08:00
tests fate/api-tests: Tests that need samples should only run if SAMPLES is set 2015-07-04 02:15:16 +02:00
tools Merge commit '30dfc1dad4285e7362ce3f596d7c5d5d9b7fb33d' 2015-06-12 22:46:10 +02:00
.gitattributes Treat all '*.pnm' files as non-text file 2014-11-28 17:52:43 -05:00
.gitignore Merge commit '1316df7aa98c4784f190d107206d0bb12c590b89' 2015-07-03 03:22:48 +02:00
arch.mak Merge commit 'eecd29b3fd7fee221580798346d6582b75c7ade4' 2015-05-31 23:42:36 +02:00
Changelog lavfi: add (a)drawgraph filter 2015-07-03 18:43:21 +00:00
cmdutils_common_opts.h opts: add list device sources/sinks options 2014-10-25 20:20:31 +02:00
cmdutils_opencl.c OpenCL: Avoid potential buffer overflow in cmdutils_opencl.c 2015-04-28 12:18:23 +02:00
cmdutils.c lavu: add an API function to return the Libav version string 2015-07-02 23:22:53 +02:00
cmdutils.h ffplay&cmdutils:Factor get_rotation() code out 2015-05-03 23:49:16 +02:00
common.mak x86: Makefile: fix DBG parameter evaluation 2015-03-11 01:54:07 +01:00
configure ffmpeg: windows: respond to logoff and ctrl+break messages as well 2015-07-01 01:00:38 +02:00
COPYING.GPLv2
COPYING.GPLv3
COPYING.LGPLv2.1 cosmetics: Delete empty lines at end of file. 2012-02-09 12:26:45 +01:00
COPYING.LGPLv3
CREDITS CREDITS: redirect to Git log, remove current outdated content 2013-01-31 18:02:52 +01:00
ffmpeg_dxva2.c ffmpeg_dxva2: call GetDesktopWindow() in place of GetShellWindow() 2015-06-03 16:25:08 +02:00
ffmpeg_filter.c ffmpeg_filter: log more information on failure to init simple filter graph 2015-07-02 04:56:10 +02:00
ffmpeg_opt.c ffmpeg_opt: Favor streams that had packets 2015-07-01 22:43:26 +02:00
ffmpeg_vda.c vda: unlock the pixel buffer base address. 2015-06-23 09:20:18 +02:00
ffmpeg_vdpau.c Merge commit '1f9237f2ac46dfbed1bfa1f4f0f1314c2a1d62ec' 2014-12-27 13:26:38 +01:00
ffmpeg.c ffmpeg: windows: respond to logoff and ctrl+break messages as well 2015-07-01 01:00:38 +02:00
ffmpeg.h ffmpeg: Do not copy the display matrix if rotation meta-data is manually added 2015-05-18 00:52:36 +02:00
ffplay.c ffplay: use av_clip() instead of nested min & max 2015-06-06 13:18:28 +02:00
ffprobe.c ffprobe: check av_asprintf() for failure 2015-06-13 01:45:27 +02:00
ffserver_config.c ffserver: Use singlejpeg muxer for jpeg 2015-06-08 03:36:22 +02:00
ffserver_config.h ffserver: Use singlejpeg muxer for jpeg 2015-06-08 03:36:22 +02:00
ffserver.c ffserver: make statement block unconditional by exiting early 2015-06-24 19:17:51 -03:00
INSTALL.md INSTALL: add markdown syntax 2014-05-28 22:38:38 +02:00
library.mak library.mak: Workaround SDL redefining main and breaking fate tests on mingw 2015-06-19 12:12:27 +02:00
LICENSE.md LICENSE.md: add *_rect filters 2015-05-03 01:43:30 +02:00
MAINTAINERS MAINTAINERS: add myself as hls encryption maintainer 2015-06-16 16:52:38 +02:00
Makefile Merge commit '1316df7aa98c4784f190d107206d0bb12c590b89' 2015-07-03 03:22:48 +02:00
README.md README: add ffserver 2015-02-12 11:59:22 +01:00
RELEASE RELEASE: update to 2.6.git 2015-03-08 18:59:57 -03:00
version.sh version.sh: Print versions based on the last git tag for release branches 2014-07-28 15:44:59 +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.