[FFmpeg-devel] [PATCH v2 0/8] aac: Implement Intensity Stereo encoding support

Rostislav Pehlivanov 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
    indices
  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(-)

-- 
2.1.4



More information about the ffmpeg-devel mailing list