[FFmpeg-devel] [PATCH v2 0/8] aac: Implement Intensity Stereo encoding support
atomnuker at gmail.com
Thu Jul 2 20:12:59 CEST 2015
This series of patches implements intensity stereo encoding support, reimplements perceptual
noise substitution in a better way and fixes some mistakes in the M/S (Mid/Side) stereo marking.
Currently, both IS and PNS are off by default, changeable via the options -aac_pns and -aac_is, respectively.
Users and developers are welcome to test the options to increase the quality and efficiency of the encoder.
The options do not increase filesize significantly (+-10 Kb per 3400Kb total filesize, 128kbps, reasonable
activity in all frequency bands) but they offer a drastic increase in quality. Therefore, in general, to achieve
the same quality as without IS or PNS users need to reduce their bitrates and therefore decrease filesizes
of encoded files.
The perceptual noise substitution is supposed to be on for all files encoded via the AAC LC profile and
feedback and suggestions would go a long way in making this option be 'on' by default, making everyone
benefit from increased encoder quality.
It should be noted that the benefits of both options decay as the bitrates increase.
PNS usage becomes non-existant at around 200kbps and IS could reduce quality at very high bitrates.
This is V2 of the patch, notable changes from V1 are:
* Change the way aacpsy sets the band spread value
* Improve PNS energy calculations
* Disable M/S coding for bands marked to use IS
* Improve phase detection for IS bands
* Improve energy calculations for IS spectral coefficients
* Make the thresholds of both IS and PNS dynamic
Rostislav Pehlivanov (8):
aacpsy: use a different metric for the spread of a band
aaccoder: remove previous PNS implementation from twoloop
aaccoder: fix M/S coding
aacenc: reset marked IS and M/S bands upon frame encoding
aacenc: use the new function for setting special band scalefactor
aaccoder: add a new perceptual noise substitution implementation
aacenc: add support for coding of IS spectral coefficients
aacenc: implement Intensity Stereo encoding support
libavcodec/aaccoder.c | 207 +++++++++++++++++++++++++++++++++++++++++---------
libavcodec/aacenc.c | 59 +++++++++++---
libavcodec/aacenc.h | 4 +
libavcodec/aacpsy.c | 2 +-
4 files changed, 224 insertions(+), 48 deletions(-)
More information about the ffmpeg-devel