Browse Source

Log fused GPU, legacy GPU, and CPU demod paths

master
Jan Svabenik 3 days ago
parent
commit
d7258bbf1d
2 changed files with 23 additions and 10 deletions
  1. +11
    -7
      internal/recorder/demod.go
  2. +12
    -3
      internal/recorder/demod_live.go

+ 11
- 7
internal/recorder/demod.go View File

@@ -25,7 +25,6 @@ func (m *Manager) demodAndWrite(dir string, ev detector.Event, iq []complex64, f
if d == nil {
return errors.New("demodulator not found")
}
// band-extract around signal
bw := ev.Bandwidth
offset := ev.CenterHz - m.centerHz
var audio []float32
@@ -54,16 +53,22 @@ func (m *Manager) demodAndWrite(dir string, ev detector.Event, iq []complex64, f
if m.gpuDemod.LastDemodUsedGPU() {
log.Printf("gpudemod: fused GPU demod used for event %d (%s)", ev.ID, name)
}
} else if gpuAudio, gpuRate, err := m.gpuDemod.Demod(iq, offset, bw, gpuMode); err == nil {
audio = gpuAudio
inputRate = gpuRate
if m.gpuDemod.LastDemodUsedGPU() {
log.Printf("gpudemod: GPU demod stage used for event %d (%s)", ev.ID, name)
} else {
log.Printf("gpudemod: fused GPU demod failed for event %d (%s): %v", ev.ID, name, err)
if gpuAudio, gpuRate, err := m.gpuDemod.Demod(iq, offset, bw, gpuMode); err == nil {
audio = gpuAudio
inputRate = gpuRate
if m.gpuDemod.LastDemodUsedGPU() {
log.Printf("gpudemod: legacy GPU demod used for event %d (%s)", ev.ID, name)
}
} else {
log.Printf("gpudemod: legacy GPU demod failed for event %d (%s): %v", ev.ID, name, err)
}
}
}
}
if audio == nil {
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 {
@@ -93,7 +98,6 @@ func (m *Manager) demodAndWrite(dir string, ev detector.Event, iq []complex64, f
_ = writeWAV(rdsPath, rds, 2400, 1)
files["rds_baseband"] = "rds.wav"
files["rds_sample_rate"] = 2400
// naive decode
dec := rdsdecoder{}
res := dec.Decode(rds, 2400)
if res.PI != 0 {


+ 12
- 3
internal/recorder/demod_live.go View File

@@ -3,6 +3,7 @@ package recorder
import (
"bytes"
"errors"
"log"
"math"
"time"

@@ -66,13 +67,21 @@ func (m *Manager) DemodLive(centerHz float64, bw float64, mode string, seconds i
if gpuAudio, gpuRate, err := m.gpuDemod.DemodFused(segment, offset, bw, gpuMode); err == nil {
audio = gpuAudio
inputRate = gpuRate
} else if gpuAudio, gpuRate, err := m.gpuDemod.Demod(segment, offset, bw, gpuMode); err == nil {
audio = gpuAudio
inputRate = gpuRate
log.Printf("gpudemod: fused GPU live demod used (%s)", name)
} else {
log.Printf("gpudemod: fused GPU live demod failed (%s): %v", name, err)
if gpuAudio, gpuRate, err := m.gpuDemod.Demod(segment, offset, bw, gpuMode); err == nil {
audio = gpuAudio
inputRate = gpuRate
log.Printf("gpudemod: legacy GPU live demod used (%s)", name)
} else {
log.Printf("gpudemod: legacy GPU live demod failed (%s): %v", name, err)
}
}
}
}
if audio == nil {
log.Printf("gpudemod: CPU live demod fallback used (%s)", name)
shifted := dsp.FreqShift(segment, m.sampleRate, offset)
cutoff := bw / 2
if cutoff < 200 {


Loading…
Cancel
Save