MCPcopy Create free account
hub / github.com/aethersdr/AetherSDR / process

Method process

src/core/Resampler.cpp:19–49  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

17Resampler::~Resampler() = default;
18
19QByteArray Resampler::process(const float* in, int numSamples)
20{
21 if (numSamples <= 0) return {};
22
23 // r8b does not bounds-check against aMaxInLen; exceeding it silently
24 // overflows internal filter buffers. Chunk so each call stays within limit.
25 if (numSamples > m_maxBlockSamples) {
26 QByteArray result;
27 for (int offset = 0; offset < numSamples; offset += m_maxBlockSamples)
28 result.append(process(in + offset, std::min(numSamples - offset, m_maxBlockSamples)));
29 return result;
30 }
31
32 // Convert float32 → double
33 m_inBuf.resize(numSamples);
34 for (int i = 0; i < numSamples; ++i)
35 m_inBuf[i] = static_cast<double>(in[i]);
36
37 // Resample
38 double* outPtr = nullptr;
39 int outLen = m_resampler->process(m_inBuf.data(), numSamples, outPtr);
40
41 if (outLen <= 0 || !outPtr) return {};
42
43 // Convert double → float32
44 QByteArray result(outLen * static_cast<int>(sizeof(float)), Qt::Uninitialized);
45 auto* dst = reinterpret_cast<float*>(result.data());
46 for (int i = 0; i < outLen; ++i)
47 dst[i] = static_cast<float>(outPtr[i]);
48 return result;
49}
50
51QByteArray Resampler::processStereoToMono(const float* stereoIn, int numStereoFrames)
52{

Callers 4

processStereoToMonoMethod · 0.45
processMonoToStereoMethod · 0.45
processStereoToStereoMethod · 0.45
prewarmMethod · 0.45

Calls 1

dataMethod · 0.45

Tested by

no test coverage detected