aacdec: do not mutate input packet metadata
authorwm4 <nfxjfg@googlemail.com>
Wed, 8 Mar 2017 11:36:05 +0000 (12:36 +0100)
committerwm4 <nfxjfg@googlemail.com>
Thu, 9 Mar 2017 09:16:12 +0000 (10:16 +0100)
commitfcfc78cbabb6b454aa9e39ad32ae7a766dcf33d8
tree56d74ac12da56ee6e5d222bf76ef1f86ef38ba8b
parent53a5cea478616d2caa1c07aa58b6b911bd80c285
aacdec: do not mutate input packet metadata

Apparently the demuxer outputs the wrong padding for HE-AAC (based on
the raw sample rate, or so). aacdec contains a hack to adjust the muxer
padding accordingly before it's used to trim the decoder output. This
modified the packet side data, which in combination with the old
decoding API would change the packet the user passed to the decoder.
This is clearly not allowed, and it breaks running some gapless fate
tests with "-fflags +keepside" applied (without keepside, the packet
metadata is typically newly allocated, essentially making a copy and not
modifying the user's input packet).

This should probably be fixed in the demuxer (and consequently also the
muxer), but for now only fix the immediate problem.

Regression since 946ed78f5f8 (2012).
libavcodec/aacdec_template.c
libavcodec/internal.h
libavcodec/utils.c