On 04/16/2011 09:24 AM, Justin Ruggles wrote: > On 04/16/2011 08:59 AM, Måns Rullgård wrote: > >> Justin Ruggles <[email protected]> writes: >> >>> --- >>> This patch will also need a change to ff_ac3_extract_exponents_neon(). Mans, >>> could you help me out with that? >>> >>> -Justin >>> >>> libavcodec/ac3dsp.c | 4 +++- >>> 1 files changed, 3 insertions(+), 1 deletions(-) >>> >>> >>> diff --git a/libavcodec/ac3dsp.c b/libavcodec/ac3dsp.c >>> index dccad3b..e3ca37e 100644 >>> --- a/libavcodec/ac3dsp.c >>> +++ b/libavcodec/ac3dsp.c >>> @@ -164,8 +164,10 @@ static void ac3_extract_exponents_c(uint8_t *exp, >>> int32_t *coef, int nb_coefs) >>> if (e >= 24) { >>> e = 24; >>> coef[i] = 0; >>> + } else if (e < 0) { >>> + e = 0; >>> + coef[i] = av_clip(coef[i], -16777215, 16777215); >>> } >>> - av_assert2(e >= 0); >>> } >>> exp[i] = e; >>> } >> >> Does some other change you have planned make this condition possible? I >> assume from the assert() that it was impossible before. > > > Well, I don't think it is impossible currently. If either the input > samples or the MDCT coefficients are outside of [-1.0,1.0] the scaling > will put it out of the exponent range. Even if the scaled coefficients > are 25-bit signed, the low value will generate an exponent of -1.
Also, if an application sends incorrectly-scaled floating point samples, the encoder will silently generate bad output unless the asserts are turned on. > This function will also be used for coupling coordinates, and in that > case they can definitely be out-of-range unless they're clipped prior to > this. The coordinates are a ratio of 1 channel to the sum of multiple > channels, divided by 8. So if the ratio is >8 (rare but definitely > possible) the coordinate will need to be clipped to the valid range at > some point. > > -Justin > _______________________________________________ > libav-devel mailing list > [email protected] > https://lists.libav.org/mailman/listinfo/libav-devel > _______________________________________________ libav-devel mailing list [email protected] https://lists.libav.org/mailman/listinfo/libav-devel
