Closed dernasherbrezon closed 1 year ago
This issue could be related to the PR https://github.com/airspy/airspyone_host/pull/89 which is in standby since few years Note: On my side I cannot help for anything specific to Apple M1 or other Apple CPU as I do not have any Apple Product and I do not plan to own/use any Apple products.
Hi,
I can tune performance myself by taking AIRSPY_SAMPLE_RAW
and going from there. That's not an issue. I was more wondering about the translate_fs_4 design. What is the purpose of this filter?
For more details about translate_fs_4 see the document http://jmfriedt.free.fr/tutorial_jmfriedt_glmf_eng.pdf which explain it in details
Try converting 20MSPS real to 10MSPS IQ using the conventional methods, then compare. This will give some insight on which part of the code must be optimized for your CPU. The current implementation reduces the problem to passing a 10MSPS Real stream through 23 taps. If you can do better, let us know!
better
I mean algorithmically. The same algo can be hand tuned for any target CPU and probably beat the compiler.
No, I don't think "conventional methods" will be faster. From what I can see the code is already highly optimised both algorithmically and CPU-friendly. I guess I have several options:
Hi,
I'm trying to add airspy support to my project r2lcoud. During the performance testing I found that libairspy code (consumer_threadproc) is very slow. It consumes ~70% of time, whereas other 30% consumed for frequency xlating filter (https://github.com/dernasherbrezon/sdr-server/blob/airspy/src/xlating.c#L34).
My guess is that DC spike removal and some filtering was not auto-vectorised on M1. So this issue is more of a question:
What is purpose of additional filtering after receiving the signal? (translate_fs_4)