On Fri, Dec 11, 2015 at 12:09:57PM -0500, Ganesh Ajjanagadde wrote: > On Fri, Dec 11, 2015 at 11:36 AM, Andreas Cadhalpun > <andreas.cadhal...@googlemail.com> wrote: > > On 11.12.2015 17:21, Ganesh Ajjanagadde wrote: > >> On Fri, Dec 11, 2015 at 11:16 AM, Andreas Cadhalpun > >> <andreas.cadhal...@googlemail.com> wrote: > >>> On 19.11.2015 14:17, Michael Niedermayer wrote: > >>>> From: Michael Niedermayer <mich...@niedermayer.cc> > >>>> > >>>> Signed-off-by: Michael Niedermayer <mich...@niedermayer.cc> > >>>> --- > >>>> libavcodec/aacsbr.c | 1 + > >>>> 1 file changed, 1 insertion(+) > >>>> > >>>> diff --git a/libavcodec/aacsbr.c b/libavcodec/aacsbr.c > >>>> index d1e3a91..e014646 100644 > >>>> --- a/libavcodec/aacsbr.c > >>>> +++ b/libavcodec/aacsbr.c > >>>> @@ -73,6 +73,7 @@ static void sbr_dequant(SpectralBandReplication *sbr, > >>>> int id_aac) > >>>> { > >>>> int k, e; > >>>> int ch; > >>>> + //TODO: Replace exp2f(0.5*x) by a LUT, the inputs are all integer > >>>> and have a small range > >>>> > >>>> if (id_aac == TYPE_CPE && sbr->bs_coupling) { > >>>> float alpha = sbr->data[0].bs_amp_res ? 1.0f : 0.5f; > >>>> > >>> > >>> This shouldn't hurt, with or without the clarification requested by > >>> Ganesh. > >> > >> I am doing related work cleaning up and optimizing usages of slow libm > >> functions such as pow and exp2. Do you know the exact possible range > >> of the inputs x, and if so, can it be added to the comment? That will > >> be very helpful for me to come up with a patch. Thanks. > > > > The exp2f expressions are: > > exp2f(sbr->data[0].env_facs_q[e][k] * alpha + 7.0f); > > exp2f((pan_offset - sbr->data[1].env_facs_q[e][k]) * alpha); > > exp2f(NOISE_FLOOR_OFFSET - sbr->data[0].noise_facs_q[e][k] + 1); > > exp2f(12 - sbr->data[1].noise_facs_q[e][k]); > > exp2f(alpha * sbr->data[ch].env_facs_q[e][k] + 6.0f); > > exp2f(NOISE_FLOOR_OFFSET - sbr->data[ch].noise_facs_q[e][k]); > > > > Here alpha is 1 or 0.5, pan_offset 12 or 24 and NOISE_FLOOR_OFFSET is 6. > > After patch 3 of this series, env_facs_q is in the range from 0 to 127 and > > noise_facs_q is already limited to the range from 0 to 30. > > > > So x should always be in the range -300..300, or so. > > Very good, thanks a lot. > > Based on the above range, my idea is to not even use a LUT, but use > something like exp2fi followed by multiplication by M_SQRT2 depending > on even or odd.
conditional operations can due to branch misprediction be potentially rather slow [...] -- Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB Many that live deserve death. And some that die deserve life. Can you give it to them? Then do not be too eager to deal out death in judgement. For even the very wise cannot see all ends. -- Gandalf
signature.asc
Description: Digital signature
_______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel