Browse Source

lavc/opus_celt: replace pow by exp2

exp2 is faster.

It may be possible to optimize further; e.g the exponents seem to be
multiples of 0.25. This requires study though.

Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: Ganesh Ajjanagadde <gajjanagadde@gmail.com>
tags/n3.0
Ganesh Ajjanagadde 10 years ago
parent
commit
97d2c2d678
1 changed files with 2 additions and 2 deletions
  1. +2
    -2
      libavcodec/opus_celt.c

+ 2
- 2
libavcodec/opus_celt.c View File

@@ -1677,7 +1677,7 @@ static void celt_denormalize(CeltContext *s, CeltFrame *frame, float *data)

for (i = s->startband; i < s->endband; i++) {
float *dst = data + (celt_freq_bands[i] << s->duration);
float norm = pow(2, frame->energy[i] + celt_mean_energy[i]);
float norm = exp2(frame->energy[i] + celt_mean_energy[i]);

for (j = 0; j < celt_freq_range[i] << s->duration; j++)
dst[j] *= norm;
@@ -1857,7 +1857,7 @@ static void process_anticollapse(CeltContext *s, CeltFrame *frame, float *X)

/* r needs to be multiplied by 2 or 2*sqrt(2) depending on LM because
short blocks don't have the same energy as long */
r = pow(2, 1 - Ediff);
r = exp2(1 - Ediff);
if (s->duration == 3)
r *= M_SQRT2;
r = FFMIN(thresh, r) * sqrt_1;


Loading…
Cancel
Save