Accessing an array with a pointer is not a very good idea.
audio_signal = new double [buffer_size]; signal_start = audio_signal; signal_end = audio_signal; /* valid signal in [start, end) */ // for (int i = 0; i < (int) (period_size * channels); i++) { *signal_end++ = samples[i]; /* get new signal */ } // if(signal_end - signal_start >= nfft) { /* if there is enough for FFT */ for (int i = 0; i < nfft; i++) { in_real[i] = *signal_start++ * audio_window[i]; } } // auto p = signal_start; auto q = audio_signal; while(p < signal_end) { *q++ = *p++; } signal_start = audio_signal; signal_end = q;
The code is far from nice and simple.