From: qoroliang <qoroli...@tencent.com> aac decoder only do the window overlapping data buffer flush but without sbr related buffer flush, that will cause dirty data in the first output frame after flush.
Signed-off-by: qoroliang <qoroli...@tencent.com> --- libavcodec/aacdec_template.c | 6 ++++++ 1 files changed, 6 insertions(+), 0 deletions(-) diff --git a/libavcodec/aacdec_template.c b/libavcodec/aacdec_template.c index bb11de3..8f8dc24 100644 --- a/libavcodec/aacdec_template.c +++ b/libavcodec/aacdec_template.c @@ -507,7 +507,13 @@ static void flush(AVCodecContext *avctx) ChannelElement *che = ac->che[type][i]; if (che) { for (j = 0; j <= 1; j++) { + // LTP buffer related data buffer + // or windowing overlapping memset(che->ch[j].saved, 0, sizeof(che->ch[j].saved)); + memset(che->ch[j].coeffs, 0, sizeof(che->ch[j].coeffs)); + // sbr context should be reseted and function pointers should be applied too + memset(&che->sbr, 0, sizeof(che->sbr)); + AAC_RENAME(ff_aac_sbr_ctx_init)(ac, &che->sbr, type); } } } -- 1.7.1 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".