[FFmpeg-devel] [PATCH 1/3] aacsbr_fixed: avoid division by zero in sbr_gain_calc
Michael Niedermayer
michaelni at gmx.at
Fri Nov 20 10:51:57 CET 2015
On Fri, Nov 20, 2015 at 12:16:09AM +0100, Andreas Cadhalpun wrote:
> On 19.11.2015 01:31, Michael Niedermayer wrote:
> > On Thu, Nov 19, 2015 at 12:31:17AM +0100, Andreas Cadhalpun wrote:
> >> So far so good. However, the next time sbr_dequant is called this breaks:
> >> noise_facs[1][0].exp = 6 - 536870912 + 1 = -536870905;
> >>
> >
> >> This is obviously completely bogus.
> >
> > yes
> >
> >
> >> Instead this code needs a function like av_exp2_sf.
> >
> > no, thats not the problem
> > this code is missing error checks and only adding error checks will
> > fix that
> >
> > there is read_sbr_noise() which reads data
> > there is sbr_dequant() which converts the data from "read data" to
> > lets call it "dequantized data"
>
> That makes sense, thanks for explaining.
>
> > what you describe sounds like that sbr_dequant() is called on top of
> > the output from sbr_dequant(), that sounds like a error condition
> > for both fixed and float
>
> Indeed. A patch checking for that is attached.
>
> Best regards,
> Andreas
>
> aacsbr_template.c | 8 ++++++++
> 1 file changed, 8 insertions(+)
> 43ace0364265ef16eecd6ca2d9564cc9585847f7 0001-aacsbr-don-t-call-sbr_dequant-twice-without-intermed.patch
> From 0237ebfca9571d2d3e51f5c5dc15f8f5a516510a Mon Sep 17 00:00:00 2001
> From: Andreas Cadhalpun <Andreas.Cadhalpun at googlemail.com>
> Date: Fri, 20 Nov 2015 00:04:50 +0100
> Subject: [PATCH] aacsbr: don't call sbr_dequant twice without intermediate
> read_sbr_data
>
> Doing that doesn't make sense, because the only purpose of sbr_dequant
> is to process the data from read_sbr_data.
>
> Signed-off-by: Andreas Cadhalpun <Andreas.Cadhalpun at googlemail.com>
> ---
> libavcodec/aacsbr_template.c | 8 ++++++++
> 1 file changed, 8 insertions(+)
>
> diff --git a/libavcodec/aacsbr_template.c b/libavcodec/aacsbr_template.c
> index cf18862..564930a 100644
> --- a/libavcodec/aacsbr_template.c
> +++ b/libavcodec/aacsbr_template.c
> @@ -1041,6 +1041,7 @@ static unsigned int read_sbr_data(AACContext *ac, SpectralBandReplication *sbr,
> unsigned int cnt = get_bits_count(gb);
>
> sbr->id_aac = id_aac;
> + sbr->start = 2;
the new value should be documented
or maybe it would be possible to use a new field with self explanatory
name
[...]
--
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
Asymptotically faster algorithms should always be preferred if you have
asymptotical amounts of data
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 181 bytes
Desc: Digital signature
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20151120/8294cc8c/attachment.sig>
More information about the ffmpeg-devel
mailing list