On Fri, Nov 13, 2015 at 11:19:44PM +0100, Andreas Cadhalpun wrote:
> On 13.11.2015 04:21, Michael Niedermayer wrote:
> > On Thu, Nov 12, 2015 at 08:51:28PM +0100, Andreas Cadhalpun wrote:
> >> On 11.11.2015 23:19, Michael Niedermayer wrote:
> >>> On Wed, Nov 11, 2015 at 09:31:18PM +0100, Andreas Cadhalpun wrote:
> >>>> 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'.
> >>>
> >>> sbr_dequant() does not look like it can set noise_facs to 0
> >>> except by underflow of the exponent range
> >>
> >> That's exactly what happens.
> >>
> >>> that "has" to be invalid as this depends on the implementation 
> >>
> >> So should sbr_dequant error out instead?
> >> If so, what's the minimal value it should accept?
> > 
> > I dont know the valid range, and i doubt the spec lists this
> > so picking what causes a problem (0) would be the easy solution
> > thats what i would suggest in absence of other suggestions
> 
> Well, unfortunately just rejecting 0 in sbr_dequant is no solution,
> because, as you noticed, that only happens via underflow.
a value that has underflowed should be 0, so underflow affecting
anything implies 0 as result and so a check for 0 would cover all
underflows
I think i misunderstand somehow


> One could check for exponents smaller than MIN_EXP, but since

exponents must not be smaller than MIN_EXP.
no *_sf function should set such an exponent. code directly writing
exponents has to check for exp < MIN_EXP
that could in principle be done by using a _sf function which allows
such exponents on input and clears it up on output


> the exponent can get smaller during the calculations in sbr_gain_calc,
> that wouldn't necessarily avoid the division by 0.
> 

> Additionally both sbr_dequant and sbr_gain_calc are void functions,
> so can't easily return errors.

iam not sure i understand your concern ?
the resturn type is easy changeable or  flag could be added to the
context indicating an error or a simpler hack could be used to
fix this in the releases with a more complete cleanup in master

but maybe iam missing something why you consider this to be a bad
solution ?


[...]
-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

Freedom in capitalist society always remains about the same as it was in
ancient Greek republics: Freedom for slave owners. -- Vladimir Lenin

Attachment: signature.asc
Description: Digital signature

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel

Reply via email to