• Rostislav Pehlivanov's avatar
    aaccoder: rewrite PNS implementation · 033e5894
    Rostislav Pehlivanov authored
    This commit rewrites the PNS implementation and significantly
    improves sonic quality.
    
    The previous implementation marked an incredibly big amount
    of SFBs to predict when there was no need for this and this
    resulted in quite a large amount of artifacts. Also the
    quantization was incorrect (av_clip(4+log2f(...))) which
    led to 3x the intensity for PNS values leading to even more
    artifacts.
    
    This commit rewrites the PNS search function and introduces
    a major change: the PNS values are synthesized and are compared
    to the current coefficients in addition to passing through
    the revised checks to see whether PNS can be used.
    
    This decreases distortions and makes the current PNS implementation
    mainly focused on replacing any low-power non-zero bands as well
    as adding any zeroed bands back.
    
    The current encoder's performance is enough (especially with
    IS) so PNS isn't really required except to fill in the occasional
    few bands as well as extend any zeroed high frequency, so this
    combination which is already enabled by default works
    to get as much quality as it can within the bits allowed.
    Signed-off-by: 's avatarRostislav Pehlivanov <atomnuker@gmail.com>
    033e5894
Name
Last commit
Last update
compat Loading commit data...
doc Loading commit data...
libavcodec Loading commit data...
libavdevice Loading commit data...
libavfilter Loading commit data...
libavformat Loading commit data...
libavresample Loading commit data...
libavutil Loading commit data...
libpostproc Loading commit data...
libswresample Loading commit data...
libswscale Loading commit data...
presets Loading commit data...
tests Loading commit data...
tools Loading commit data...
.gitattributes Loading commit data...
.gitignore Loading commit data...
COPYING.GPLv2 Loading commit data...
COPYING.GPLv3 Loading commit data...
COPYING.LGPLv2.1 Loading commit data...
COPYING.LGPLv3 Loading commit data...
CREDITS Loading commit data...
Changelog Loading commit data...
INSTALL.md Loading commit data...
LICENSE.md Loading commit data...
MAINTAINERS Loading commit data...
Makefile Loading commit data...
README.md Loading commit data...
RELEASE Loading commit data...
arch.mak Loading commit data...
cmdutils.c Loading commit data...
cmdutils.h Loading commit data...
cmdutils_common_opts.h Loading commit data...
cmdutils_opencl.c Loading commit data...
common.mak Loading commit data...
configure Loading commit data...
ffmpeg.c Loading commit data...
ffmpeg.h Loading commit data...
ffmpeg_dxva2.c Loading commit data...
ffmpeg_filter.c Loading commit data...
ffmpeg_opt.c Loading commit data...
ffmpeg_vdpau.c Loading commit data...
ffmpeg_videotoolbox.c Loading commit data...
ffplay.c Loading commit data...
ffprobe.c Loading commit data...
ffserver.c Loading commit data...
ffserver_config.c Loading commit data...
ffserver_config.h Loading commit data...
library.mak Loading commit data...
version.sh Loading commit data...