[FFmpeg-cvslog] avcodec/aacdec_template: Allow duplicated elements
Michael Niedermayer
git at videolan.org
Fri Oct 12 02:00:13 EEST 2018
ffmpeg | branch: master | Michael Niedermayer <michael at niedermayer.cc> | Sun Oct 7 13:03:00 2018 +0200| [8f1524802469cb701040561cd05a9a924dec3627] | committer: Michael Niedermayer
avcodec/aacdec_template: Allow duplicated elements
Such streams are invalid according to
4.5.2.1 Top level payloads for the audio object types AAC main, AAC SSR, AAC LC and AAC LTP
4.5.2.1.1 Definitions
...cIn the raw_data_block(), several instances of the
same syntactic element may occur, but must have a different 4 bit
element_instance_tag, except for data_stream_element()'s and
fill_element()'s.
Fixes: Ticket7477
Reviewed-by: Paul B Mahol <onemda at gmail.com>
Signed-off-by: Michael Niedermayer <michael at niedermayer.cc>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=8f1524802469cb701040561cd05a9a924dec3627
---
libavcodec/aacdec_template.c | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
diff --git a/libavcodec/aacdec_template.c b/libavcodec/aacdec_template.c
index b60b31a92c..dce6035d67 100644
--- a/libavcodec/aacdec_template.c
+++ b/libavcodec/aacdec_template.c
@@ -3161,12 +3161,15 @@ static int aac_decode_frame_int(AVCodecContext *avctx, void *data,
if (elem_type < TYPE_DSE) {
if (che_presence[elem_type][elem_id]) {
- av_log(ac->avctx, AV_LOG_ERROR, "channel element %d.%d duplicate\n",
+ int error = che_presence[elem_type][elem_id] > 1;
+ av_log(ac->avctx, error ? AV_LOG_ERROR : AV_LOG_DEBUG, "channel element %d.%d duplicate\n",
elem_type, elem_id);
- err = AVERROR_INVALIDDATA;
- goto fail;
+ if (error) {
+ err = AVERROR_INVALIDDATA;
+ goto fail;
+ }
}
- che_presence[elem_type][elem_id] = 1;
+ che_presence[elem_type][elem_id]++;
if (!(che=get_che(ac, elem_type, elem_id))) {
av_log(ac->avctx, AV_LOG_ERROR, "channel element %d.%d is not allocated\n",
More information about the ffmpeg-cvslog
mailing list