[FFmpeg-devel] [PATCH] aac: Rework extradata parsing code
wm4
nfxjfg at googlemail.com
Tue Apr 17 23:05:03 EEST 2018
On Tue, 17 Apr 2018 11:47:00 -0400
Vittorio Giovara <vittorio.giovara at gmail.com> wrote:
> - enable the parsing code
> - use the new buffer instead of replacing the context one
> - do not push/pop configuration, just discard the exiting one
> - propagate errors correctly
> ---
>
> ping
>
>
> libavcodec/aacdec_template.c | 22 ++++++++--------------
> 1 file changed, 8 insertions(+), 14 deletions(-)
>
> diff --git a/libavcodec/aacdec_template.c b/libavcodec/aacdec_template.c
> index cf97181092..0c899285dd 100644
> --- a/libavcodec/aacdec_template.c
> +++ b/libavcodec/aacdec_template.c
> @@ -3324,20 +3324,14 @@ static int aac_decode_frame(AVCodecContext
> *avctx, void *data,
> AV_PKT_DATA_JP_DUALMONO,
> &jp_dualmono_size);
>
> - if (new_extradata && 0) {
> - av_free(avctx->extradata);
> - avctx->extradata = av_mallocz(new_extradata_size +
> - AV_INPUT_BUFFER_PADDING_SIZE);
> - if (!avctx->extradata)
> - return AVERROR(ENOMEM);
> - avctx->extradata_size = new_extradata_size;
> - memcpy(avctx->extradata, new_extradata, new_extradata_size);
> - push_output_configuration(ac);
> - if (decode_audio_specific_config(ac, ac->avctx, &ac->oc[1].m4ac,
> - avctx->extradata,
> - avctx->extradata_size*8LL, 1) < 0) {
> - pop_output_configuration(ac);
> - return AVERROR_INVALIDDATA;
> + if (new_extradata) {
> + /* discard previous configuration */
> + ac->oc[1].status = OC_NONE;
> + err = decode_audio_specific_config(ac, ac->avctx, &ac->oc[1].m4ac,
> + new_extradata,
> + new_extradata_size * 8LL, 1);
> + if (err < 0) {
> + return err;
> }
> }
>
Generally LGTM. Is there a proper test for this? (Apparently not...)
More information about the ffmpeg-devel
mailing list