Kaynağa Gözat

Gate live audio debug logging behind config flag

master
Jan Svabenik 13 saat önce
ebeveyn
işleme
d45bbfc694
4 değiştirilmiş dosya ile 22 ekleme ve 9 silme
  1. +9
    -3
      cmd/sdrd/dsp_loop.go
  2. +5
    -4
      config.yaml
  3. +1
    -0
      internal/config/config.go
  4. +7
    -2
      internal/recorder/streamer.go

+ 9
- 3
cmd/sdrd/dsp_loop.go Dosyayı Görüntüle

@@ -71,7 +71,9 @@ func runDSP(ctx context.Context, srcMgr *sourceManager, cfg config.Config, det *
streamSignals = stableSignals
}
if rec != nil && len(art.allIQ) > 0 {
log.Printf("LIVEAUDIO DSP: detailIQ=%d displaySignals=%d streamSignals=%d stableSignals=%d allIQ=%d", len(art.detailIQ), len(displaySignals), len(streamSignals), len(stableSignals), len(art.allIQ))
if rt.cfg.Recorder.DebugLiveAudio {
log.Printf("LIVEAUDIO DSP: detailIQ=%d displaySignals=%d streamSignals=%d stableSignals=%d allIQ=%d", len(art.detailIQ), len(displaySignals), len(streamSignals), len(stableSignals), len(art.allIQ))
}
aqCfg := extractionConfig{firTaps: rt.cfg.Recorder.ExtractionTaps, bwMult: rt.cfg.Recorder.ExtractionBwMult}
streamSnips, streamRates := extractForStreaming(extractMgr, art.allIQ, rt.cfg.SampleRate, rt.cfg.CenterHz, streamSignals, rt.streamPhaseState, rt.streamOverlap, aqCfg)
items := make([]recorder.StreamFeedItem, 0, len(streamSignals))
@@ -84,7 +86,9 @@ func runDSP(ctx context.Context, srcMgr *sourceManager, cfg config.Config, det *
if j < len(streamSnips) {
snipLen = len(streamSnips[j])
}
log.Printf("LIVEAUDIO DSP: streamSignal idx=%d id=%d center=%.3fMHz bw=%.0f class=%s snip=%d", j, ds.ID, ds.CenterHz/1e6, ds.BWHz, className, snipLen)
if rt.cfg.Recorder.DebugLiveAudio {
log.Printf("LIVEAUDIO DSP: streamSignal idx=%d id=%d center=%.3fMHz bw=%.0f class=%s snip=%d", j, ds.ID, ds.CenterHz/1e6, ds.BWHz, className, snipLen)
}
if ds.ID == 0 || ds.Class == nil {
continue
}
@@ -97,7 +101,9 @@ func runDSP(ctx context.Context, srcMgr *sourceManager, cfg config.Config, det *
}
items = append(items, recorder.StreamFeedItem{Signal: ds, Snippet: streamSnips[j], SnipRate: snipRate})
}
log.Printf("LIVEAUDIO DSP: feedItems=%d", len(items))
if rt.cfg.Recorder.DebugLiveAudio {
log.Printf("LIVEAUDIO DSP: feedItems=%d", len(items))
}
if len(items) > 0 {
rec.FeedSnippets(items)
}


+ 5
- 4
config.yaml Dosyayı Görüntüle

@@ -22,13 +22,13 @@ pipeline:
monitor_span_hz: 20000000
monitor_windows:
- name: fm-focus
start_hz: 99.5e6
end_hz: 104.5e6
start_hz: 87.5e6
end_hz: 108.0e6
priority: 1.25
zone: focus
- name: fm-rds
start_hz: 100.0e6
end_hz: 103.5e6
start_hz: 87.5e6
end_hz: 108.0e6
priority: 1.35
zone: decode
signal_priorities: ["wfm", "rds", "broadcast"]
@@ -240,6 +240,7 @@ recorder:
deemphasis_us: 50
extraction_fir_taps: 101
extraction_bw_mult: 1.35
debug_live_audio: false
decoder:
ft8_cmd: C:/WSJT/wsjtx-2.7.0-rc6/bin/jt9.exe -8 {audio}
wspr_cmd: C:/WSJT/wsjtx-2.7.0-rc6/bin/wsprd.exe {audio}


+ 1
- 0
internal/config/config.go Dosyayı Görüntüle

@@ -72,6 +72,7 @@ type RecorderConfig struct {
DeemphasisUs float64 `yaml:"deemphasis_us" json:"deemphasis_us"` // De-emphasis time constant in µs. 50=Europe, 75=US/Japan, 0=disabled. Default: 50
ExtractionTaps int `yaml:"extraction_fir_taps" json:"extraction_fir_taps"` // FIR tap count for extraction filter. Default: 101, max 301
ExtractionBwMult float64 `yaml:"extraction_bw_mult" json:"extraction_bw_mult"` // BW multiplier for extraction. Default: 1.2 (20% wider than detected)
DebugLiveAudio bool `yaml:"debug_live_audio" json:"debug_live_audio"`
}

type DecoderConfig struct {


+ 7
- 2
internal/recorder/streamer.go Dosyayı Görüntüle

@@ -251,9 +251,12 @@ func (st *Streamer) FeedSnippets(items []streamFeedItem) {
recEnabled := st.policy.Enabled && (st.policy.RecordAudio || st.policy.RecordIQ)
hasListeners := st.hasListenersLocked()
pending := len(st.pendingListens)
debugLiveAudio := st.policy.DebugLiveAudio
st.mu.Unlock()

log.Printf("LIVEAUDIO STREAM: feedSnippets items=%d recEnabled=%v hasListeners=%v pending=%d", len(items), recEnabled, hasListeners, pending)
if debugLiveAudio {
log.Printf("LIVEAUDIO STREAM: feedSnippets items=%d recEnabled=%v hasListeners=%v pending=%d", len(items), recEnabled, hasListeners, pending)
}
if (!recEnabled && !hasListeners) || len(items) == 0 {
return
}
@@ -300,7 +303,9 @@ func (st *Streamer) processFeed(msg streamFeedMsg) {
className = string(sig.Class.ModType)
demodName, _ = resolveDemod(sig)
}
log.Printf("LIVEAUDIO STREAM: signal id=%d center=%.3fMHz bw=%.0f snr=%.1f class=%s demod=%s needsRecord=%v needsListen=%v", sig.ID, sig.CenterHz/1e6, sig.BWHz, sig.SNRDb, className, demodName, needsRecording, needsListen)
if st.policy.DebugLiveAudio {
log.Printf("LIVEAUDIO STREAM: signal id=%d center=%.3fMHz bw=%.0f snr=%.1f class=%s demod=%s needsRecord=%v needsListen=%v", sig.ID, sig.CenterHz/1e6, sig.BWHz, sig.SNRDb, className, demodName, needsRecording, needsListen)
}

if !needsRecording && !needsListen {
continue


Yükleniyor…
İptal
Kaydet