optimisation: giving more hints to the compiler about the sizes in
authorJean-Marc Valin <jean-marc.valin@usherbrooke.ca>
Fri, 18 Apr 2008 13:13:14 +0000 (23:13 +1000)
committerJean-Marc Valin <jean-marc.valin@usherbrooke.ca>
Fri, 18 Apr 2008 13:13:14 +0000 (23:13 +1000)
find_spectral_pitch()

libcelt/celt.c
libcelt/pitch.c
libcelt/pitch.h

index 94d975d..98eeabf 100644 (file)
@@ -259,7 +259,7 @@ int EXPORT celt_encode(CELTEncoder *st, celt_int16_t *pcm, unsigned char *compre
          st->in_mem[C*i+c] = in[C*(2*N-2*N4-st->overlap+i)+c];
    }
    /* Pitch analysis: we do it early to save on the peak stack space */
-   find_spectral_pitch(st->fft, &st->mode->psy, in, st->out_mem, st->mode->window, st->overlap, MAX_PERIOD, 2*N-2*N4, C, &pitch_index);
+   find_spectral_pitch(st->mode, st->fft, &st->mode->psy, in, st->out_mem, st->mode->window, 2*N-2*N4, &pitch_index);
 
    ALLOC(freq, C*N, celt_sig_t); /**< Interleaved signal MDCTs */
    
index 1790c1b..2aa038d 100644 (file)
@@ -47,6 +47,7 @@
 #include "psy.h"
 #include "os_support.h"
 #include "mathops.h"
+#include "modes.h"
 #include "stack_alloc.h"
 
 kiss_fftr_cfg pitch_state_alloc(int max_lag)
@@ -103,7 +104,7 @@ static void normalise16(celt_word16_t *x, int len, celt_word16_t val)
 
 #define INPUT_SHIFT 15
 
-void find_spectral_pitch(kiss_fftr_cfg fft, const struct PsyDecay *decay, const celt_sig_t * restrict x, const celt_sig_t * restrict y, const celt_word16_t * restrict window, int overlap, int lag, int len, int C, int *pitch)
+void find_spectral_pitch(const CELTMode *m, kiss_fftr_cfg fft, const struct PsyDecay *decay, const celt_sig_t * restrict x, const celt_sig_t * restrict y, const celt_word16_t * restrict window, int len, int *pitch)
 {
    int c, i;
    VARDECL(celt_word16_t, _X);
@@ -112,6 +113,9 @@ void find_spectral_pitch(kiss_fftr_cfg fft, const struct PsyDecay *decay, const
    celt_word16_t * restrict X, * restrict Y;
    int n2;
    int L2;
+   const int C = CHANNELS(m);
+   const int overlap = OVERLAP(m);
+   const int lag = MAX_PERIOD;
    SAVE_STACK;
    n2 = lag>>1;
    L2 = len>>1;
index 9ce0ce7..abb0d86 100644 (file)
@@ -40,6 +40,7 @@
 
 #include "kiss_fftr.h"
 #include "psy.h"
+#include "modes.h"
 
 kiss_fftr_cfg pitch_state_alloc(int max_lag);
 void pitch_state_free(kiss_fftr_cfg st);
@@ -47,6 +48,6 @@ void pitch_state_free(kiss_fftr_cfg st);
 /** Find the optimal delay for the pitch prediction. Computation is
     done in the frequency domain, both to save time and to make it
     easier to apply psychoacoustic weighting */
-void find_spectral_pitch(kiss_fftr_cfg fft, const struct PsyDecay *decay, const celt_sig_t *x, const celt_sig_t *y, const celt_word16_t *window, int overlap, int lag, int len, int C, int *pitch);
+void find_spectral_pitch(const CELTMode *m, kiss_fftr_cfg fft, const struct PsyDecay *decay, const celt_sig_t *x, const celt_sig_t *y, const celt_word16_t *window, int len, int *pitch);
 
 #endif