Domanda

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?

È stato utile?

Soluzione

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.

Altri suggerimenti

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top