From 3e3bc0aaed8e979f4e14708b6b450fce0d631b28 Mon Sep 17 00:00:00 2001 From: Jan Svabenik Date: Thu, 19 Mar 2026 08:41:19 +0100 Subject: [PATCH] feat: activate validated GPU pipeline stages --- internal/demod/gpudemod/build/kernels.obj | Bin 81894 -> 81894 bytes internal/demod/gpudemod/gpudemod.go | 19 +++++++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/internal/demod/gpudemod/build/kernels.obj b/internal/demod/gpudemod/build/kernels.obj index 22daf7a2f23fc935da5716db02e05cdd48dac60f..3c8f2fdc1719f91cb02d4e5ebe7f20a52d3cb105 100644 GIT binary patch delta 20 ccmaF%pXJ$q7PgeO=M1eY8rin8F+Q*d0Bws2IRF3v delta 20 ccmaF%pXJ$q7PgeO=L}z#H?nPIV|-u_0C8#wrvLx| diff --git a/internal/demod/gpudemod/gpudemod.go b/internal/demod/gpudemod/gpudemod.go index 6703784..506ad93 100644 --- a/internal/demod/gpudemod/gpudemod.go +++ b/internal/demod/gpudemod/gpudemod.go @@ -289,24 +289,43 @@ func (e *Engine) Demod(iq []complex64, offsetHz float64, bw float64, mode DemodT e.lastDecimUsedGPU = false inputRate := e.sampleRate / decim + e.lastDemodUsedGPU = false switch mode { case DemodNFM: if gpuAudio, ok := e.tryCUDAFMDiscrim(dec); ok { + e.lastDemodUsedGPU = true return gpuAudio, inputRate, nil } return demod.NFM{}.Demod(dec, inputRate), inputRate, nil case DemodWFM: if gpuAudio, ok := e.tryCUDAFMDiscrim(dec); ok { + e.lastDemodUsedGPU = true return gpuAudio, inputRate, nil } return demod.WFM{}.Demod(dec, inputRate), inputRate, nil case DemodAM: + if gpuAudio, ok := e.tryCUDAAMEnvelope(dec); ok { + e.lastDemodUsedGPU = true + return gpuAudio, inputRate, nil + } return demod.AM{}.Demod(dec, inputRate), inputRate, nil case DemodUSB: + if gpuAudio, ok := e.tryCUDASSBProduct(dec, 700.0); ok { + e.lastDemodUsedGPU = true + return gpuAudio, inputRate, nil + } return demod.USB{}.Demod(dec, inputRate), inputRate, nil case DemodLSB: + if gpuAudio, ok := e.tryCUDASSBProduct(dec, -700.0); ok { + e.lastDemodUsedGPU = true + return gpuAudio, inputRate, nil + } return demod.LSB{}.Demod(dec, inputRate), inputRate, nil case DemodCW: + if gpuAudio, ok := e.tryCUDASSBProduct(dec, 700.0); ok { + e.lastDemodUsedGPU = true + return gpuAudio, inputRate, nil + } return demod.CW{}.Demod(dec, inputRate), inputRate, nil default: return nil, 0, errors.New("unsupported demod type")