MCPcopy Create free account
hub / github.com/LabSound/LabSound / getByteTimeDomainData

Method getByteTimeDomainData

src/core/RealtimeAnalyser.cpp:302–336  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

300// LabSound end
301
302void RealtimeAnalyser::getByteTimeDomainData(std::vector<uint8_t> & destinationArray)
303{
304 if (!destinationArray.size())
305 return;
306
307 size_t fftSize = this->fftSize();
308 size_t len = min(fftSize, destinationArray.size());
309 if (len > 0)
310 {
311 bool isInputBufferGood = m_inputBuffer.size() == InputBufferSize && m_inputBuffer.size() > fftSize;
312 ASSERT(isInputBufferGood);
313 if (!isInputBufferGood)
314 return;
315
316 float * inputBuffer = m_inputBuffer.data();
317 size_t writeIndex = m_writeIndex;
318
319 for (size_t i = 0; i < len; ++i)
320 {
321 // Buffer access is protected due to modulo operation.
322 float value = inputBuffer[(i + writeIndex - fftSize + InputBufferSize) % InputBufferSize];
323
324 // Scale from nominal -1 -> +1 to unsigned byte.
325 double scaledValue = AudioNode::ProcessingSizeInFrames * (value + 1);
326
327 // Clip to valid range.
328 if (scaledValue < 0)
329 scaledValue = 0;
330 if (scaledValue > UCHAR_MAX)
331 scaledValue = UCHAR_MAX;
332
333 destinationArray[i] = static_cast<unsigned char>(scaledValue);
334 }
335 }
336}
337
338} // namespace lab

Callers

nothing calls this directly

Calls 3

fftSizeMethod · 0.95
sizeMethod · 0.80
dataMethod · 0.45

Tested by

no test coverage detected