Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.

26 wiersze
647B

  1. package recorder
  2. import (
  3. "math"
  4. "sdr-visual-suite/internal/demod"
  5. "sdr-visual-suite/internal/dsp"
  6. )
  7. func demodAudioCPU(d demod.Demodulator, iq []complex64, sampleRate int, offset float64, bw float64) ([]float32, int) {
  8. shifted := dsp.FreqShift(iq, sampleRate, offset)
  9. cutoff := bw / 2
  10. if cutoff < 200 {
  11. cutoff = 200
  12. }
  13. taps := dsp.LowpassFIR(cutoff, sampleRate, 101)
  14. filtered := dsp.ApplyFIR(shifted, taps)
  15. decim := int(math.Round(float64(sampleRate) / float64(d.OutputSampleRate())))
  16. if decim < 1 {
  17. decim = 1
  18. }
  19. dec := dsp.Decimate(filtered, decim)
  20. inputRate := sampleRate / decim
  21. return d.Demod(dec, inputRate), inputRate
  22. }