diff aac.c @ 10849:e8f4b9e41b7a libavcodec

AAC: use table for cbrtf(n)*n The maximum length of escape_sequence is 21 bits, so adjust limit in code to match this. Up to 10% faster on Cortex-A8.
author mru
date Mon, 11 Jan 2010 20:21:26 +0000
parents b4aca3bfff0f
children bcfe2acbf190
line wrap: on
line diff
--- a/aac.c	Mon Jan 11 18:02:00 2010 +0000
+++ b/aac.c	Mon Jan 11 20:21:26 2010 +0000
@@ -101,6 +101,7 @@
 static VLC vlc_scalefactors;
 static VLC vlc_spectral[11];
 
+static float cbrt_tab[1<<13];
 
 static ChannelElement *get_che(AACContext *ac, int type, int elem_id)
 {
@@ -555,6 +556,10 @@
     ff_init_ff_sine_windows(10);
     ff_init_ff_sine_windows( 7);
 
+    if (!cbrt_tab[(1<<13) - 1])
+        for (i = 0; i < 1<<13; i++)
+            cbrt_tab[i] = cbrtf(i) * i;
+
     return 0;
 }
 
@@ -949,7 +954,7 @@
                                             return -1;
                                         }
                                         n = (1 << n) + get_bits(gb, n);
-                                        coef[coef_tmp_idx + j] *= cbrtf(n) * n;
+                                        coef[coef_tmp_idx + j] *= cbrt_tab[n];
                                     } else
                                         coef[coef_tmp_idx + j] *= vq_ptr[j];
                                 }