[FFmpeg-devel] [PATCH] avcodec/aacdec_template: Allow duplicated elements
Paul B Mahol
onemda at gmail.com
Thu Oct 11 13:56:30 EEST 2018
On 10/7/18, Michael Niedermayer <michael at niedermayer.cc> wrote:
> 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
>
> Signed-off-by: Michael Niedermayer <michael at niedermayer.cc>
> ---
> 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",
> --
> 2.19.0
>
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
probably ok
More information about the ffmpeg-devel
mailing list