mirror of
https://github.com/juce-framework/JUCE.git
synced 2026-01-10 23:44:24 +00:00
Oboe: Avoid allocating on each audio callback
This commit is contained in:
parent
cb54044c1c
commit
76589ee800
1 changed files with 7 additions and 6 deletions
|
|
@ -797,8 +797,9 @@ private:
|
|||
jassert (stream->getDirection() == oboe::Direction::Output && stream == outputStream->getNativeStream());
|
||||
|
||||
// Read input from Oboe
|
||||
inputStreamSampleBuffer.clear();
|
||||
inputStreamNativeBuffer.calloc (static_cast<size_t> (numInputChannels * bufferSize));
|
||||
const auto expandedBufferSize = jmax (inputStreamNativeBuffer.size(),
|
||||
static_cast<size_t> (numInputChannels * jmax (bufferSize, numFrames)));
|
||||
inputStreamNativeBuffer.resize (expandedBufferSize);
|
||||
|
||||
if (inputStream != nullptr)
|
||||
{
|
||||
|
|
@ -811,17 +812,17 @@ private:
|
|||
return oboe::DataCallbackResult::Continue;
|
||||
}
|
||||
|
||||
auto result = inputStream->getNativeStream()->read (inputStreamNativeBuffer.getData(), numFrames, 0);
|
||||
auto result = inputStream->getNativeStream()->read (inputStreamNativeBuffer.data(), numFrames, 0);
|
||||
|
||||
if (result)
|
||||
{
|
||||
auto referringDirectlyToOboeData = OboeAudioIODeviceBufferHelpers<SampleType>
|
||||
::referAudioBufferDirectlyToOboeIfPossible (inputStreamNativeBuffer.get(),
|
||||
::referAudioBufferDirectlyToOboeIfPossible (inputStreamNativeBuffer.data(),
|
||||
inputStreamSampleBuffer,
|
||||
result.value());
|
||||
|
||||
if (! referringDirectlyToOboeData)
|
||||
OboeAudioIODeviceBufferHelpers<SampleType>::convertFromOboe (inputStreamNativeBuffer.get(), inputStreamSampleBuffer, result.value());
|
||||
OboeAudioIODeviceBufferHelpers<SampleType>::convertFromOboe (inputStreamNativeBuffer.data(), inputStreamSampleBuffer, result.value());
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -970,7 +971,7 @@ private:
|
|||
}
|
||||
}
|
||||
|
||||
HeapBlock<SampleType> inputStreamNativeBuffer;
|
||||
std::vector<SampleType> inputStreamNativeBuffer;
|
||||
AudioBuffer<float> inputStreamSampleBuffer,
|
||||
outputStreamSampleBuffer;
|
||||
Atomic<int> audioCallbackGuard { 0 },
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue