diff options
author | Alex Converse <alex.converse@gmail.com> | 2017-03-20 12:44:42 -0700 |
---|---|---|
committer | Alex Converse <alex.converse@gmail.com> | 2017-03-21 09:38:36 -0700 |
commit | 2c8a3aa985acc906ecab37357f2798da7cb9822d (patch) | |
tree | 3860c8ae958a3729c14de339865f5733ecab8540 | |
parent | db7a05dab0652d4ec6d89394c9024d02f44494a7 (diff) | |
download | ffmpeg-2c8a3aa985acc906ecab37357f2798da7cb9822d.tar.gz |
aacsbr: Turnoff in the event of over read.
Aliased compressed AAC bytes are almost certainly not meaningful SBR
data. In the wild this causes harsh artifacts switching HE-AAC streams
that don't have SBR headers aligned with segment boundaries.
Turning off SBR falls back to a default set of upsampling parameters
that can function as a sort of error concealment. This is consistent
with how the decoder handles other sorts of errors.
-rw-r--r-- | libavcodec/aacsbr_template.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/libavcodec/aacsbr_template.c b/libavcodec/aacsbr_template.c index cf8621eee0..750131c64c 100644 --- a/libavcodec/aacsbr_template.c +++ b/libavcodec/aacsbr_template.c @@ -1137,6 +1137,7 @@ int AAC_RENAME(ff_decode_sbr_extension)(AACContext *ac, SpectralBandReplication if (bytes_read > cnt) { av_log(ac->avctx, AV_LOG_ERROR, "Expected to read %d SBR bytes actually read %d.\n", cnt, bytes_read); + sbr_turnoff(sbr); } return cnt; } |