Frage

I'm trying to write a custom xaudio2 effect that involves a fourier transform. However, the number of samples given to the process method each call is not a power of 2 (a precondition of the fourier transform implementation I have).

Is there a way to force power of 2 sized samples? Is there a technique to allow working with non power of 2 sizes?

War es hilfreich?

Lösung

Don't send samples to the FFT every call that you are given samples. Buffer (save) them up till you have at least a power-of-2 samples or more and then process the power-of-2 number of samples from your intermediate buffer. Rinse and repeat.

Also, newer FFTs will often allow sizes with prime factors larger than 2.

Andere Tipps

If your implementation requires that you have a power of 2 sample size, then you can pad the sample to force it to accept. Zero padding seems to be the easiest/most straight forward.

Here is an article that explains another way to do it:

The Chirp z-Transform Algorithm and Its Application

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top