Ver código fonte

Route WFM stereo through explicit hybrid GPU/CPU demod path

master
Jan Svabenik 2 dias atrás
pai
commit
c49b77d0f6
3 arquivos alterados com 32 adições e 2 exclusões
  1. +5
    -1
      internal/recorder/demod.go
  2. +22
    -0
      internal/recorder/demod_helpers.go
  3. +5
    -1
      internal/recorder/demod_live.go

+ 5
- 1
internal/recorder/demod.go Ver arquivo

@@ -69,7 +69,11 @@ func (m *Manager) demodAndWrite(dir string, ev detector.Event, iq []complex64, f
}
}
if audio == nil {
log.Printf("gpudemod: CPU demod fallback used for event %d (%s)", ev.ID, name)
if name == "WFM_STEREO" {
log.Printf("gpudemod: WFM_STEREO using CPU stereo/RDS post-process for event %d", ev.ID)
} else {
log.Printf("gpudemod: CPU demod fallback used for event %d (%s)", ev.ID, name)
}
shifted := dsp.FreqShift(iq, m.sampleRate, offset)
cutoff := bw / 2
if cutoff < 200 {


+ 22
- 0
internal/recorder/demod_helpers.go Ver arquivo

@@ -0,0 +1,22 @@
package recorder

import "sdr-visual-suite/internal/demod/gpudemod"

func gpuModeFor(name string) (gpudemod.DemodType, bool) {
switch name {
case "NFM":
return gpudemod.DemodNFM, true
case "WFM", "WFM_STEREO":
return gpudemod.DemodWFM, true
case "AM":
return gpudemod.DemodAM, true
case "USB":
return gpudemod.DemodUSB, true
case "LSB":
return gpudemod.DemodLSB, true
case "CW":
return gpudemod.DemodCW, true
default:
return 0, false
}
}

+ 5
- 1
internal/recorder/demod_live.go Ver arquivo

@@ -82,7 +82,11 @@ func (m *Manager) DemodLive(centerHz float64, bw float64, mode string, seconds i
}
}
if audio == nil {
log.Printf("gpudemod: CPU live demod fallback used (%s)", name)
if name == "WFM_STEREO" {
log.Printf("gpudemod: WFM_STEREO live path using CPU stereo/RDS post-process")
} else {
log.Printf("gpudemod: CPU live demod fallback used (%s)", name)
}
shifted := dsp.FreqShift(segment, m.sampleRate, offset)
cutoff := bw / 2
if cutoff < 200 {


Carregando…
Cancelar
Salvar