mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2024-12-27 01:42:20 +00:00
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>
This commit is contained in:
parent
95b59bfb9d
commit
97d2c2d678
@ -1677,7 +1677,7 @@ static void celt_denormalize(CeltContext *s, CeltFrame *frame, float *data)
|
|||||||
|
|
||||||
for (i = s->startband; i < s->endband; i++) {
|
for (i = s->startband; i < s->endband; i++) {
|
||||||
float *dst = data + (celt_freq_bands[i] << s->duration);
|
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++)
|
for (j = 0; j < celt_freq_range[i] << s->duration; j++)
|
||||||
dst[j] *= norm;
|
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
|
/* 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 */
|
short blocks don't have the same energy as long */
|
||||||
r = pow(2, 1 - Ediff);
|
r = exp2(1 - Ediff);
|
||||||
if (s->duration == 3)
|
if (s->duration == 3)
|
||||||
r *= M_SQRT2;
|
r *= M_SQRT2;
|
||||||
r = FFMIN(thresh, r) * sqrt_1;
|
r = FFMIN(thresh, r) * sqrt_1;
|
||||||
|
Loading…
Reference in New Issue
Block a user