Closed SimonG4ELI closed 2 years ago
What do you think of the new description? Just to let you know, I have planned to do video tutorials for noise repellent which uses libspecbleach explaining what is behind of each of the parameters.
The new description is good. I'm currently writing fft_transform to use Intel IPP DFT as I cannot use FFTW. When I have done this I'll make you a video.
My website is https://www.g4eli.com and my software is https://www.sdr-radio.com.
I'm glad that you find it useful! Really cool I used to be an amateur radio guy myself when I was a kid. LU8FLE was my license back then but no longer is of course. Do you feel that the intel dft could be incorporated back as optional or is really specific to your software?
Intel's DFT could be used as an alternative to FFTW if there are licensing problems as FFTW is GPL2.
FFT overhead is not a big problem here, I'm sure there must be alternatives but I use Intel's IPP anyway so use the DFT.
OK, I have the Intel DFT working, as expected the result is identical to FFTW. I suggest you stay with FFTW for now and I can help if you want to use the Intel IPP library later. For a multi-platform solution I would even consider a simple FFT implementation, bandwidth is low and load will not be high.
Now for that memory issue, if your fixes don't help I'll put lots of array bound checks and find it myself.
Well I've been using valgrind and gcc's address sanitizer but couldn't really find anything. Not sure what I'm doing wrong. Valgrind reports some still reachable memory but from what I've been reading is not a big deal or maybe it is. Would mind your help here, I'm certainly not a C/C++ expert.
OK, I'll get your latest code, if it still has memory issues I'll put in lots of assert checks for out of bound access etc.
Bug Found in masking_estimator.c. In the code below at line 169 k can be > the allocated size for float* masking_thresholds. Adding the sanity check solves the memory corruption. My input sample rate is 8kHz, this depends on whether I'm processing SSB, AM or FM audio - different bandwidths for each mode.
When I close the process in debug mode Visual Studio no longer reports memory heap corruption.
for (uint32_t k = self->band_indexes.start_position;
k < self->band_indexes.end_position; k++) {
//
// SJB k can be > self->real_spectrum_size (81) so add sanity check.
//
if (k < self->real_spectrum_size)
masking_thresholds[k] = self->threshold_j[j];
}
Thank you very much Simon! I'll take a look this afternoon.
Would it be possible to explain the smoothing factor? Changing this in adaptive mode appears to make no difference. Many thanks, Simon.