On 11.11.2015 14:55, Michael Niedermayer wrote: > On Sun, Nov 08, 2015 at 10:02:56PM +0100, Andreas Cadhalpun wrote: >> This fixes a SIGFPE crash in the aac_fixed decoder. >> >> Signed-off-by: Andreas Cadhalpun <andreas.cadhal...@googlemail.com> >> --- >> libavcodec/aacsbr_fixed.c | 4 ++-- >> 1 file changed, 2 insertions(+), 2 deletions(-) >> >> diff --git a/libavcodec/aacsbr_fixed.c b/libavcodec/aacsbr_fixed.c >> index f942d74..efe40f2 100644 >> --- a/libavcodec/aacsbr_fixed.c >> +++ b/libavcodec/aacsbr_fixed.c >> @@ -434,8 +434,8 @@ static void sbr_gain_calc(AACContext *ac, >> SpectralBandReplication *sbr, >> gain_max = FLOAT_100000; >> for (m = sbr->f_tablelim[k] - sbr->kx[1]; m < sbr->f_tablelim[k >> + 1] - sbr->kx[1]; m++) { >> SoftFloat q_m_max = av_div_sf( >> - av_mul_sf(sbr->q_m[e][m], gain_max), >> - sbr->gain[e][m]); >> + av_add_sf(FLOAT_EPSILON, >> av_mul_sf(sbr->q_m[e][m], gain_max)), >> + av_add_sf(FLOAT_EPSILON, >> sbr->gain[e][m])); > > is gain == 0 here ?
Yes: sbr->gain[e][m] == {mant = 0, exp = -126} > isnt that invalid ? I'm not sure, but it can happen, when q_mapped is very small, which can be caused by noise_facs becoming tiny in sbr_dequant. That's kind of the opposite problem of 'envelope scalefactors overflowing'. Best regards, Andreas _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel