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

Method processStereoToStereo

src/core/Resampler.cpp:114–143  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

112}
113
114QByteArray Resampler::processStereoToStereo(const float* stereoIn, int numStereoFrames)
115{
116 if (numStereoFrames <= 0) return {};
117
118 if (numStereoFrames > m_maxBlockSamples) {
119 QByteArray result;
120 for (int offset = 0; offset < numStereoFrames; offset += m_maxBlockSamples)
121 result.append(processStereoToStereo(stereoIn + offset * 2, std::min(numStereoFrames - offset, m_maxBlockSamples)));
122 return result;
123 }
124
125 // Downmix stereo → mono, resample, duplicate back to stereo
126 m_inBuf.resize(numStereoFrames);
127 for (int i = 0; i < numStereoFrames; ++i)
128 m_inBuf[i] = (stereoIn[2 * i] + stereoIn[2 * i + 1]) * 0.5;
129
130 double* outPtr = nullptr;
131 int outLen = m_resampler->process(m_inBuf.data(), numStereoFrames, outPtr);
132
133 if (outLen <= 0 || !outPtr) return {};
134
135 QByteArray result(outLen * 2 * static_cast<int>(sizeof(float)), Qt::Uninitialized);
136 auto* dst = reinterpret_cast<float*>(result.data());
137 for (int i = 0; i < outLen; ++i) {
138 float s = static_cast<float>(outPtr[i]);
139 dst[2 * i] = s;
140 dst[2 * i + 1] = s;
141 }
142 return result;
143}
144
145void Resampler::prewarm()
146{

Callers 4

onBinaryMessageMethod · 0.80
onRxAudioReadyMethod · 0.80
onDaxAudioReadyMethod · 0.80
feedDecodedSpeechMethod · 0.80

Calls 2

processMethod · 0.45
dataMethod · 0.45

Tested by

no test coverage detected