Hi Kyle
I’ve looked at your commit. They way you are calculating the derivative of the sample may
not actuate enough. I’m calculating the derivative as ds(n) = (s(n+1) - s(n-1))/2.
Implementing a higher order derivative gives better sound, but eats the performance gain.
I’ve also tried to make a integer only version of the demodulator, but the rounding errors
makes it sound terrible. Strange enough it is also faster doing things partly in integer
and partly in floats.
I’v tried to profile the four methods in osx:
atan Fast: 11.5%running time
aran:lut 17.6% running time
atan std: 49.6% running time
aes: fm_demod2 22.9% running time
The percentage given is time spend in fm_dmod relative to the rest of the program.
/Anders
Den 30/01/2014 kl. 16.35 skrev keenerd <keenerd(a)gmail.com>om>:
On 1/30/14, keenerd <keenerd(a)gmail.com> wrote:
On 1/30/14, Anders Lynge Esbensen
<anders(a)lyes.dk> wrote:
I've implemented a faster FM demodulator for
rlt_fm.
Let me see if I can get a fixed-point version written.
I've cleaned it up and it is in my repo. You can enable it with "-A ale"
https://github.com/keenerd/rtl-sdr/commit/025fb56dff98
Some quick benchmarks:
std: 10%
fast: 7%
lut: 7%
ale: 7%
Sound quality is also noticably worse with ale, but that might be from
an error in the fixed point conversion. How does the math look to
you?
-Kyle
http://kmkeen.com