From 285c957718dd81e074dab2eb5a367d33e0d8a97a Mon Sep 17 00:00:00 2001 From: f4exb Date: Wed, 4 Mar 2026 20:55:35 +0100 Subject: [PATCH] FT4 decoder: use FFT (1) --- ft8/ft4.cpp | 128 ++++++++--- sdrbench/CMakeLists.txt | 1 + sdrbench/mainbench.cpp | 2 + sdrbench/mainbench.h | 1 + sdrbench/parserbench.cpp | 4 +- sdrbench/parserbench.h | 1 + sdrbench/samples/ft8/20260304_180052.wav | Bin 0 -> 180216 bytes sdrbench/test_ft4.cpp | 273 +++++++++++++++++++++++ 8 files changed, 372 insertions(+), 38 deletions(-) create mode 100644 sdrbench/samples/ft8/20260304_180052.wav create mode 100644 sdrbench/test_ft4.cpp diff --git a/ft8/ft4.cpp b/ft8/ft4.cpp index 5879236c9..ecd70568f 100644 --- a/ft8/ft4.cpp +++ b/ft8/ft4.cpp @@ -11,6 +11,7 @@ #include #include "ft4.h" +#include "fft.h" #include "libldpc.h" #include "osd.h" @@ -37,8 +38,9 @@ const std::array kFT4Rvec = {{ struct FT4Candidate { + int frameIndex; int start; - float tone0; + int toneBin; float sync; float noise; float score; @@ -71,33 +73,12 @@ public: } private: - float goertzelPower(int sampleStart, int sampleCount, float frequency) const + static float binPower(const FFTEngine::ffts_t& bins, int symbolIndex, int toneBin) { - const float omega = 2.0f * static_cast(M_PI) * frequency / m_rate; - const float coeff = 2.0f * std::cos(omega); - float q0 = 0.0f; - float q1 = 0.0f; - float q2 = 0.0f; - - for (int i = 0; i < sampleCount; i++) - { - q0 = coeff * q1 - q2 + m_samples[sampleStart + i]; - q2 = q1; - q1 = q0; - } - - return q1 * q1 + q2 * q2 - coeff * q1 * q2; + return std::abs(bins[symbolIndex][toneBin]); } - float symbolTonePower(int start, int symbolIndex, float tone0, int tone) const - { - const int symbolStart = start + symbolIndex * kFT4SymbolSamples; - const float toneSpacing = static_cast(m_rate) / static_cast(kFT4SymbolSamples); - const float frequency = tone0 + tone * toneSpacing; - return goertzelPower(symbolStart, kFT4SymbolSamples, frequency); - } - - void collectSyncMetrics(int start, float tone0, float& sync, float& noise) const + void collectSyncMetrics(const FFTEngine::ffts_t& bins, int toneBin, float& sync, float& noise) const { sync = 0.0f; noise = 0.0f; @@ -113,7 +94,7 @@ private: for (int tone = 0; tone < 4; tone++) { - const float power = symbolTonePower(start, symbolIndex, tone0, tone); + const float power = binPower(bins, symbolIndex, toneBin + tone); if (tone == expectedTone) { sync += power; @@ -125,7 +106,34 @@ private: } } - void buildBitMetrics(int start, float tone0, std::array& bitMetrics) const + int refineToneBin(const FFTEngine::ffts_t& bins, int toneBin) const + { + float bestSync = -1.0f; + int bestToneBin = toneBin; + + for (int delta = -1; delta <= 1; delta++) + { + int candidateToneBin = toneBin + delta; + + if (candidateToneBin < 0) { + continue; + } + + float sync = 0.0f; + float noise = 0.0f; + collectSyncMetrics(bins, candidateToneBin, sync, noise); + + if (sync > bestSync) + { + bestSync = sync; + bestToneBin = candidateToneBin; + } + } + + return bestToneBin; + } + + void buildBitMetrics(const FFTEngine::ffts_t& bins, int toneBin, std::array& bitMetrics) const { int bitIndex = 0; @@ -143,7 +151,7 @@ private: std::array tonePower; for (int tone = 0; tone < 4; tone++) { - tonePower[tone] = symbolTonePower(start, symbolIndex, tone0, tone); + tonePower[tone] = binPower(bins, symbolIndex, toneBin + tone); } const float b0Zero = std::max(tonePower[0], tonePower[1]); @@ -156,6 +164,11 @@ private: } } + FFTEngine::ffts_t makeFrameBins(int start) + { + return m_fftEngine.ffts(m_samples, start, kFT4SymbolSamples); + } + void decode() { if (m_samples.size() < kFT4FrameSamples) { @@ -163,10 +176,9 @@ private: } const int maxStart = static_cast(m_samples.size()) - kFT4FrameSamples; - const float toneSpacing = static_cast(m_rate) / static_cast(kFT4SymbolSamples); - const float maxTone0 = m_maxHz - 3.0f * toneSpacing; + const float binSpacing = static_cast(m_rate) / static_cast(kFT4SymbolSamples); - if (maxTone0 <= m_minHz) { + if (m_maxHz <= m_minHz) { return; } @@ -193,17 +205,55 @@ private: addStartCandidate(std::min(maxStart, nominalStart + 2 * kFT4SymbolSamples)); addStartCandidate(maxStart); - std::vector candidates; + struct FT4Frame + { + int start; + FFTEngine::ffts_t bins; + }; + + std::vector frames; + frames.reserve(startCandidates.size()); for (int start : startCandidates) { - for (float tone0 = m_minHz; tone0 <= maxTone0; tone0 += toneSpacing) + FFTEngine::ffts_t bins = makeFrameBins(start); + + if (bins.size() < kFT4TotalSymbols) { + continue; + } + + if (bins[0].size() < 8) { + continue; + } + + frames.push_back(FT4Frame{start, std::move(bins)}); + } + + if (frames.empty()) { + return; + } + + const int minToneBin = std::max(0, static_cast(std::ceil(m_minHz / binSpacing))); + const int maxToneBinByHz = static_cast(std::floor(m_maxHz / binSpacing)) - 3; + + if (maxToneBinByHz < minToneBin) { + return; + } + + std::vector candidates; + + for (int frameIndex = 0; frameIndex < static_cast(frames.size()); frameIndex++) + { + const FT4Frame& frame = frames[frameIndex]; + const int maxToneBin = std::min(maxToneBinByHz, static_cast(frame.bins[0].size()) - 4); + + for (int toneBin = minToneBin; toneBin <= maxToneBin; toneBin++) { float sync = 0.0f; float noise = 0.0f; - collectSyncMetrics(start, tone0, sync, noise); + collectSyncMetrics(frame.bins, toneBin, sync, noise); const float score = sync - 1.25f * (noise / 3.0f); - candidates.push_back(FT4Candidate{start, tone0, sync, noise, score}); + candidates.push_back(FT4Candidate{frameIndex, frame.start, toneBin, sync, noise, score}); } } @@ -221,8 +271,10 @@ private: for (int candidateIndex = 0; candidateIndex < maxDecodeCandidates; candidateIndex++) { const FT4Candidate& candidate = candidates[candidateIndex]; + const FT4Frame& frame = frames[candidate.frameIndex]; + const int refinedToneBin = refineToneBin(frame.bins, candidate.toneBin); std::array llr; - buildBitMetrics(candidate.start, candidate.tone0, llr); + buildBitMetrics(frame.bins, refinedToneBin, llr); int plain[174]; int ldpcOk = 0; @@ -270,7 +322,8 @@ private: const float snrLinear = (candidate.sync + 1.0e-9f) / ((candidate.noise / 3.0f) + 1.0e-9f); const float snr = 10.0f * std::log10(snrLinear) - 12.0f; const float off = static_cast(m_start) / m_rate + static_cast(candidate.start) / m_rate; - m_cb->hcb(a91, candidate.tone0, off, "FT4-EXP", snr, 0, ldpcOk); + const float tone0 = refinedToneBin * binSpacing; + m_cb->hcb(a91, tone0, off, "FT4-EXP", snr, 0, ldpcOk); } } @@ -281,6 +334,7 @@ private: int m_rate; CallbackInterface *m_cb; FT4Params m_params; + FFTEngine m_fftEngine; }; } // namespace diff --git a/sdrbench/CMakeLists.txt b/sdrbench/CMakeLists.txt index 35d3ae141..eb21d3eee 100644 --- a/sdrbench/CMakeLists.txt +++ b/sdrbench/CMakeLists.txt @@ -9,6 +9,7 @@ set(sdrbench_SOURCES parserbench.cpp test_golay2312.cpp test_ft8.cpp + test_ft4.cpp test_callsign.cpp test_ft8protocols.cpp test_fftrrc.cpp diff --git a/sdrbench/mainbench.cpp b/sdrbench/mainbench.cpp index e2cf5fbb1..a989d5344 100644 --- a/sdrbench/mainbench.cpp +++ b/sdrbench/mainbench.cpp @@ -69,6 +69,8 @@ void MainBench::run() testGolay2312(); } else if (m_parser.getTestType() == ParserBench::TestFT8) { testFT8(m_parser.getFileName(), m_parser.getArgsStr()); + } else if (m_parser.getTestType() == ParserBench::TestFT4) { + testFT4(m_parser.getFileName(), m_parser.getArgsStr()); } else if (m_parser.getTestType() == ParserBench::TestCallsign) { testCallsign(m_parser.getArgsStr()); } else if (m_parser.getTestType() == ParserBench::TestFT8Protocols) { diff --git a/sdrbench/mainbench.h b/sdrbench/mainbench.h index 5f91c88f8..6d125bfaa 100644 --- a/sdrbench/mainbench.h +++ b/sdrbench/mainbench.h @@ -59,6 +59,7 @@ private: void testGolay2312(); void testFFTRRCFilter(); void testFIRRRCFilter(); + void testFT4(const QString& wavFile, const QString& argsStr); //!< use with sdrbench/samples/ft4/20260304_180052.wav in -f option void testFT8(const QString& wavFile, const QString& argsStr); //!< use with sdrbench/samples/ft8/230105_091630.wav in -f option void testFT8Protocols(const QString& argsStr); void testCallsign(const QString& argsStr); diff --git a/sdrbench/parserbench.cpp b/sdrbench/parserbench.cpp index 1942d40d9..378c80851 100644 --- a/sdrbench/parserbench.cpp +++ b/sdrbench/parserbench.cpp @@ -24,7 +24,7 @@ ParserBench::ParserBench() : m_testOption(QStringList() << "t" << "test", - "Test type: decimateii, decimatefi, decimateff, decimateif, decimateinfii, decimatesupii, ambe, golay2312, ft8, ft8protocols, callsign, fftrrcfilter, firrrcfilter.", + "Test type: decimateii, decimatefi, decimateff, decimateif, decimateinfii, decimatesupii, ambe, golay2312, ft8, ft4, ft8protocols, callsign, fftrrcfilter, firrrcfilter.", "test", "decimateii"), m_nbSamplesOption(QStringList() << "n" << "nb-samples", @@ -147,6 +147,8 @@ ParserBench::TestType ParserBench::getTestType() const return TestGolay2312; } else if (m_testStr == "ft8") { return TestFT8; + } else if (m_testStr == "ft4") { + return TestFT4; } else if (m_testStr == "callsign") { return TestCallsign; } else if (m_testStr == "ft8protocols") { diff --git a/sdrbench/parserbench.h b/sdrbench/parserbench.h index dc0e092f2..af1a385ec 100644 --- a/sdrbench/parserbench.h +++ b/sdrbench/parserbench.h @@ -39,6 +39,7 @@ public: TestDecimatorsSupII, TestGolay2312, TestFT8, + TestFT4, TestCallsign, TestFT8Protocols, TestFFTRRCFilter, diff --git a/sdrbench/samples/ft8/20260304_180052.wav b/sdrbench/samples/ft8/20260304_180052.wav new file mode 100644 index 0000000000000000000000000000000000000000..6e7bed995054359bee6d84dbb8214f0a312daa4d GIT binary patch literal 180216 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

U8Lz0EarGnLF{w?vG}| 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 literal 0 HcmV?d00001 diff --git a/sdrbench/test_ft4.cpp b/sdrbench/test_ft4.cpp new file mode 100644 index 000000000..a8f731a2f --- /dev/null +++ b/sdrbench/test_ft4.cpp @@ -0,0 +1,273 @@ +/////////////////////////////////////////////////////////////////////////////////// +// Copyright (C) 2023 Daniele Forsi // +// Copyright (C) 2026 Edouard Griffiths, F4EXB // +// // +// This program is free software; you can redistribute it and/or modify // +// it under the terms of the GNU General Public License as published by // +// the Free Software Foundation as version 3 of the License, or // +// (at your option) any later version. // +// // +// This program is distributed in the hope that it will be useful, // +// but WITHOUT ANY WARRANTY; without even the implied warranty of // +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // +// GNU General Public License V3 for more details. // +// // +// You should have received a copy of the GNU General Public License // +// along with this program. If not, see . // +/////////////////////////////////////////////////////////////////////////////////// + +#include +#include + +#include "mainbench.h" +#include "dsp/wavfilerecord.h" + +#include + +#ifndef HAS_FT8 +void MainBench::testFT4(const QString& wavFile, const QString& argsStr) +{ + (void) wavFile; + (void) argsStr; + qWarning("MainBench::testFT8: this version has no FT8 support"); +} +#else + +#include "ft8/ft4.h" +#include "ft8/packing.h" + +class TestFT4Callback : public FT8::CallbackInterface +{ +public: + virtual int hcb( + int *a91, + float hz0, + float off, + const char *comment, + float snr, + int pass, + int correct_bits + ); + virtual QString get_name(); + const std::map& getMsgMap() { + return cycle_already; + } +private: + QMutex cycle_mu; + std::map cycle_already; + FT8::Packing packing; +}; + + +int TestFT4Callback::hcb( + int *a91, + float hz0, + float off, + const char *comment, + float snr, + int pass, + int correct_bits +) +{ + std::string call1; + std::string call2; + std::string loc; + std::string type; + std::string msg = packing.unpack(a91, call1, call2, loc, type); + + cycle_mu.lock(); + + if (cycle_already.count(msg) > 0) + { + // already decoded this message on this cycle + cycle_mu.unlock(); + return 1; // 1 => already seen, don't subtract. + } + + cycle_already[msg] = true; + + cycle_mu.unlock(); + + qDebug("TestFT8Callback::hcb: %3s %d %3d %3d %5.2f %6.1f %s [%s:%s:%s] (%s)", + type.c_str(), + pass, + (int)snr, + correct_bits, + off - 0.5, + hz0, + msg.c_str(), + call1.c_str(), + call2.c_str(), + loc.c_str(), + comment + ); + fflush(stdout); + + return 2; // 2 => new decode, do subtract. +} + +QString TestFT4Callback::get_name() +{ + return "test"; +} + +void MainBench::testFT4(const QString& wavFile, const QString& argsStr) +{ + int nthreads = 8; // number of threads (default) + double budget = 2.5; // compute for this many seconds per cycle (default) + // 3,0.5 combinaion may be enough + + QStringList argElements = argsStr.split(','); // comma separated list of arguments + + for (int i = 0; i < argElements.size(); i++) + { + const QString& argStr = argElements.at(i); + bool ok; + + if (i == 0) // first is the number of threads (integer) + { + int nthreads_x = argStr.toInt(&ok); + + if (ok) { + nthreads = nthreads_x; + } + } + + if (i == 1) // second is the time budget in seconds (double) + { + double budget_x = argStr.toDouble(&ok); + + if (ok) { + budget = budget_x; + } + } + } + + qDebug("MainBench::testFT4: start nthreads: %d budget: %fs", nthreads, budget); + int hints[2] = { 2, 0 }; // CQ + TestFT4Callback testft4Callback; + + std::ifstream wfile; + +#ifdef Q_OS_WIN + wfile.open(wavFile.toStdWString().c_str(), std::ios::binary | std::ios::ate); +#else + wfile.open(wavFile.toStdString().c_str(), std::ios::binary | std::ios::ate); +#endif + WavFileRecord::Header header; + wfile.seekg(0, std::ios_base::beg); + bool headerOK = WavFileRecord::readHeader(wfile, header, false); + + if (!headerOK) + { + qDebug("MainBench::testFT4: test file is not a wave file"); + return; + } + + if (header.m_sampleRate != 12000) + { + qDebug("MainBench::testFT4: wave file sample rate is not 12000 S/s"); + return; + } + + if (header.m_bitsPerSample != 16) + { + qDebug("MainBench::testFT4: sample size is not 16 bits"); + return; + } + + if (header.m_audioFormat != 1) + { + qDebug("MainBench::testFT4: wav file format is not PCM"); + return; + } + + if (header.m_dataHeader.m_size != 180000) + { + qDebug("MainBench::testFT4: wave file size is not 7.5s at 12000 S/s"); + return; + } + + const int bufsize = 1000; + int16_t buffer[bufsize]; + std::vector samples; + uint32_t remainder = header.m_dataHeader.m_size; + + while (remainder != 0) + { + wfile.read((char *) buffer, bufsize*2); + + for (int i = 0; i < bufsize; i++) { + samples.push_back(buffer[i] / 32768.0f); + } + + remainder -= bufsize*2; + } + + wfile.close(); + + FT8::FT4Decoder decoder; + decoder.getParams().nthreads = nthreads; + decoder.getParams().use_osd = 0; + + decoder.entry( + samples.data(), + samples.size(), + 0.5 * header.m_sampleRate, + header.m_sampleRate, + 150, + 3600, // 2900, + hints, + hints, + budget, + budget, + &testft4Callback, + 0, + (struct FT8::cdecode *) nullptr + ); + + decoder.wait(budget + 1.0); // add one second to budget to force quit threads + const std::map& msgMap = testft4Callback.getMsgMap(); + qDebug("MainBench::testFT4: done %lu decodes", msgMap.size()); + qDebug("MainBench::testFT4: messages:"); + for (const auto &msg : msgMap) + { + qDebug("MainBench::testFT4: %s", qPrintable(QString::fromStdString(msg.first))); + } + + // if (msgMap.size() != 15) + // { + // qDebug("MainBench::testFT4: failed: invalid size: %lu expected 15", msgMap.size()); + // return; + // } + + QStringList messages = { + "CQ DF5SF JN39", + "CQ DL1SVA JO64", + "CQ DL7CO JO42", + "CQ F4BAL JO10", + "CQ LA1XJA JO49", + "CQ ON7VG JO21", + "CQ OZ1BJF JO55", + "CQ S51TA JN75", + "HA3PT SQ8AA -18", + "JA2KFQ EI4KF -17", + "LY3PW DF2FE R-13", + "N9GQA DG9NAY JN58", + "OK1HEH OH8NW 73 ", + "UN6T EA1FQ IN53", + "W5SUM G8OO -18" + }; + + for (const auto &msg : messages) + { + if (msgMap.count(msg.toStdString()) != 1) + { + qDebug("MainBench::testFT4: failed: key: %s", qPrintable(msg)); + return; + } + } + + qDebug("MainBench::testFT4: success"); +} +#endif