| @@ -69,7 +69,11 @@ func (m *Manager) demodAndWrite(dir string, ev detector.Event, iq []complex64, f | |||||
| } | } | ||||
| } | } | ||||
| if audio == nil { | 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) | shifted := dsp.FreqShift(iq, m.sampleRate, offset) | ||||
| cutoff := bw / 2 | cutoff := bw / 2 | ||||
| if cutoff < 200 { | if cutoff < 200 { | ||||
| @@ -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 | |||||
| } | |||||
| } | |||||
| @@ -82,7 +82,11 @@ func (m *Manager) DemodLive(centerHz float64, bw float64, mode string, seconds i | |||||
| } | } | ||||
| } | } | ||||
| if audio == nil { | 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) | shifted := dsp.FreqShift(segment, m.sampleRate, offset) | ||||
| cutoff := bw / 2 | cutoff := bw / 2 | ||||
| if cutoff < 200 { | if cutoff < 200 { | ||||