upgrade to JUCE 5.4.3. Remove (probably) unused JUCE modules. Remove VST2 target (it's been end-of-life'd by Steinberg and by JUCE)

This commit is contained in:
Alex Birch
2019-06-22 20:41:38 +01:00
parent d22c2cd4fa
commit 9ee566b251
1140 changed files with 67534 additions and 105952 deletions

View File

@ -235,6 +235,7 @@ private:
SharedResourcePointer<AudioSessionHolder> sessionHolder;
JUCE_DECLARE_WEAK_REFERENCEABLE (iOSAudioIODeviceType)
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (iOSAudioIODeviceType)
};
@ -242,7 +243,7 @@ private:
struct iOSAudioIODevice::Pimpl : public AudioPlayHead,
public AsyncUpdater
{
Pimpl (iOSAudioIODeviceType& ioDeviceType, iOSAudioIODevice& ioDevice)
Pimpl (iOSAudioIODeviceType* ioDeviceType, iOSAudioIODevice& ioDevice)
: deviceType (ioDeviceType),
owner (ioDevice)
{
@ -255,9 +256,8 @@ struct iOSAudioIODevice::Pimpl : public AudioPlayHead,
setAudioSessionActive (true);
updateHardwareInfo();
setAudioSessionActive (false);
channelData.reconfigure ({}, {});
setAudioSessionActive (false);
sessionHolder->activeDevices.add (this);
}
@ -278,7 +278,9 @@ struct iOSAudioIODevice::Pimpl : public AudioPlayHead,
#endif
if (category == AVAudioSessionCategoryPlayAndRecord)
options |= (AVAudioSessionCategoryOptionDefaultToSpeaker | AVAudioSessionCategoryOptionAllowBluetooth);
options |= (AVAudioSessionCategoryOptionDefaultToSpeaker
| AVAudioSessionCategoryOptionAllowBluetooth
| AVAudioSessionCategoryOptionAllowBluetoothA2DP);
JUCE_NSERROR_CHECK ([[AVAudioSession sharedInstance] setCategory: category
withOptions: options
@ -405,9 +407,9 @@ struct iOSAudioIODevice::Pimpl : public AudioPlayHead,
JUCE_IOS_AUDIO_LOG ("Sample rate after detecting available sample rates: " << sampleRate);
}
void updateHardwareInfo()
void updateHardwareInfo (bool forceUpdate = false)
{
if (! hardwareInfoNeedsUpdating.compareAndSetBool (false, true))
if (! forceUpdate && ! hardwareInfoNeedsUpdating.compareAndSetBool (false, true))
return;
JUCE_IOS_AUDIO_LOG ("Updating hardware info");
@ -415,7 +417,8 @@ struct iOSAudioIODevice::Pimpl : public AudioPlayHead,
updateAvailableSampleRates();
updateAvailableBufferSizes();
deviceType.callDeviceChangeListeners();
if (deviceType != nullptr)
deviceType->callDeviceChangeListeners();
}
void setTargetSampleRateAndBufferSize()
@ -451,13 +454,12 @@ struct iOSAudioIODevice::Pimpl : public AudioPlayHead,
<< ", targetSampleRate: " << targetSampleRate
<< ", targetBufferSize: " << targetBufferSize);
channelData.reconfigure (requestedInputChannels, requestedOutputChannels);
setAudioSessionCategory (channelData.areInputChannelsAvailable() ? AVAudioSessionCategoryPlayAndRecord : AVAudioSessionCategoryPlayback);
setAudioSessionActive (true);
setAudioSessionCategory (requestedInputChannels > 0 ? AVAudioSessionCategoryPlayAndRecord
: AVAudioSessionCategoryPlayback);
channelData.reconfigure (requestedInputChannels, requestedOutputChannels);
updateHardwareInfo (true);
setTargetSampleRateAndBufferSize();
fixAudioRouteIfSetToReceiver();
isRunning = true;
@ -486,11 +488,11 @@ struct iOSAudioIODevice::Pimpl : public AudioPlayHead,
{
isRunning = false;
if (audioUnit != 0)
if (audioUnit != nullptr)
{
AudioOutputUnitStart (audioUnit);
AudioComponentInstanceDispose (audioUnit);
audioUnit = 0;
audioUnit = nullptr;
}
setAudioSessionActive (false);
@ -819,6 +821,9 @@ struct iOSAudioIODevice::Pimpl : public AudioPlayHead,
{
AudioOutputUnitStop (audioUnit);
setAudioSessionActive (false);
if (callback != nullptr)
callback->audioDeviceStopped();
}
}
}
@ -836,9 +841,7 @@ struct iOSAudioIODevice::Pimpl : public AudioPlayHead,
if (useInput)
err = AudioUnitRender (audioUnit, flags, time, 1, numFrames, data);
const int numChannels = jmax (channelData.inputs->numHardwareChannels,
channelData.outputs->numHardwareChannels);
const UInt32 totalDataSize = sizeof (short) * (uint32) numChannels * numFrames;
const auto channelDataSize = sizeof (float) * numFrames;
const ScopedTryLock stl (callbackLock);
@ -847,49 +850,40 @@ struct iOSAudioIODevice::Pimpl : public AudioPlayHead,
if ((int) numFrames > channelData.getFloatBufferSize())
channelData.setFloatBufferSize ((int) numFrames);
float** inputData = channelData.audioData.getArrayOfWritePointers();
float** outputData = inputData + channelData.inputs->numActiveChannels;
float** const inputData = channelData.audioData.getArrayOfWritePointers();
float** const outputData = inputData + channelData.inputs->numActiveChannels;
if (useInput)
{
const auto* inputShortData = (short*) data->mBuffers[0].mData;
for (UInt32 i = 0; i < numFrames; ++i)
for (int c = 0; c < channelData.inputs->numActiveChannels; ++c)
{
for (int channel = 0; channel < channelData.inputs->numActiveChannels; ++channel)
inputData[channel][i] = *(inputShortData + channelData.inputs->activeChannelIndicies[channel]) * (1.0f / 32768.0f);
inputShortData += numChannels;
auto channelIndex = channelData.inputs->activeChannelIndices[c];
memcpy (inputData[c], (float*) data->mBuffers[channelIndex].mData, channelDataSize);
}
}
else
{
for (int i = 0; i < channelData.inputs->numActiveChannels; ++i)
zeromem (inputData, sizeof (float) * numFrames);
for (int c = 0; c < channelData.inputs->numActiveChannels; ++c)
zeromem (inputData[c], channelDataSize);
}
callback->audioDeviceIOCallback ((const float**) inputData, channelData.inputs ->numActiveChannels,
outputData, channelData.outputs->numActiveChannels,
(int) numFrames);
auto* outputShortData = (short*) data->mBuffers[0].mData;
zeromem (outputShortData, totalDataSize);
if (channelData.outputs->numActiveChannels > 0)
for (int c = 0; c < channelData.outputs->numActiveChannels; ++c)
{
for (UInt32 i = 0; i < numFrames; ++i)
{
for (int channel = 0; channel < channelData.outputs->numActiveChannels; ++channel)
*(outputShortData + channelData.outputs->activeChannelIndicies[channel]) = (short) (outputData[channel][i] * 32767.0f);
outputShortData += numChannels;
}
auto channelIndex = channelData.outputs->activeChannelIndices[c];
memcpy (data->mBuffers[channelIndex].mData, outputData[c], channelDataSize);
}
for (auto c : channelData.outputs->inactiveChannelIndices)
zeromem (data->mBuffers[c].mData, channelDataSize);
}
else
{
zeromem (data->mBuffers[0].mData, totalDataSize);
for (uint32 c = 0; c < data->mNumberBuffers; ++c)
zeromem (data->mBuffers[c].mData, channelDataSize);
}
return err;
@ -927,10 +921,10 @@ struct iOSAudioIODevice::Pimpl : public AudioPlayHead,
{
JUCE_IOS_AUDIO_LOG ("Creating the audio unit");
if (audioUnit != 0)
if (audioUnit != nullptr)
{
AudioComponentInstanceDispose (audioUnit);
audioUnit = 0;
audioUnit = nullptr;
}
AudioComponentDescription desc;
@ -940,10 +934,10 @@ struct iOSAudioIODevice::Pimpl : public AudioPlayHead,
desc.componentFlags = 0;
desc.componentFlagsMask = 0;
AudioComponent comp = AudioComponentFindNext (0, &desc);
AudioComponent comp = AudioComponentFindNext (nullptr, &desc);
AudioComponentInstanceNew (comp, &audioUnit);
if (audioUnit == 0)
if (audioUnit == nullptr)
return false;
#if JucePlugin_Enable_IAA
@ -1001,11 +995,11 @@ struct iOSAudioIODevice::Pimpl : public AudioPlayHead,
zerostruct (format);
format.mSampleRate = sampleRate;
format.mFormatID = kAudioFormatLinearPCM;
format.mFormatFlags = kLinearPCMFormatFlagIsSignedInteger | kLinearPCMFormatFlagIsPacked | kAudioFormatFlagsNativeEndian;
format.mBitsPerChannel = 8 * sizeof (short);
format.mFormatFlags = kAudioFormatFlagIsFloat | kAudioFormatFlagIsNonInterleaved | kAudioFormatFlagsNativeEndian | kLinearPCMFormatFlagIsPacked;
format.mBitsPerChannel = 8 * sizeof (float);
format.mFramesPerPacket = 1;
format.mChannelsPerFrame = (UInt32) jmax (channelData.inputs->numHardwareChannels, channelData.outputs->numHardwareChannels);
format.mBytesPerFrame = format.mBytesPerPacket = format.mChannelsPerFrame * sizeof (short);
format.mBytesPerFrame = format.mBytesPerPacket = sizeof (float);
AudioUnitSetProperty (audioUnit, kAudioUnitProperty_StreamFormat, kAudioUnitScope_Input, 0, &format, sizeof (format));
AudioUnitSetProperty (audioUnit, kAudioUnitProperty_StreamFormat, kAudioUnitScope_Output, 1, &format, sizeof (format));
@ -1082,10 +1076,10 @@ struct iOSAudioIODevice::Pimpl : public AudioPlayHead,
if (isRunning)
{
if (audioUnit != 0)
if (audioUnit != nullptr)
{
AudioComponentInstanceDispose (audioUnit);
audioUnit = 0;
audioUnit = nullptr;
if (callback != nullptr)
callback->audioDeviceStopped();
@ -1095,7 +1089,7 @@ struct iOSAudioIODevice::Pimpl : public AudioPlayHead,
createAudioUnit();
if (audioUnit != 0)
if (audioUnit != nullptr)
{
isRunning = true;
@ -1172,7 +1166,8 @@ struct iOSAudioIODevice::Pimpl : public AudioPlayHead,
areChannelsAccessible ((! isInput) || [AVAudioSession sharedInstance].isInputAvailable),
activeChannels (limitRequiredChannelsToHardware (numHardwareChannels, requiredChannels)),
numActiveChannels (activeChannels.countNumberOfSetBits()),
activeChannelIndicies (getActiveChannelIndicies (activeChannels))
activeChannelIndices (getActiveChannelIndices (activeChannels)),
inactiveChannelIndices (getInactiveChannelIndices (activeChannelIndices, numHardwareChannels))
{
#if JUCE_IOS_AUDIO_LOGGING
{
@ -1187,7 +1182,12 @@ struct iOSAudioIODevice::Pimpl : public AudioPlayHead,
info << ", Are channels available: " << (areChannelsAccessible ? "yes" : "no")
<< ", Active channel indices:";
for (auto i : activeChannelIndicies)
for (auto i : activeChannelIndices)
info << " " << i;
info << ", Inactive channel indices:";
for (auto i : inactiveChannelIndices)
info << " " << i;
JUCE_IOS_AUDIO_LOG ((isInput ? "Input" : "Output") << " channel configuration: {" << info << "}");
@ -1202,7 +1202,7 @@ struct iOSAudioIODevice::Pimpl : public AudioPlayHead,
const BigInteger activeChannels;
const int numActiveChannels;
const Array<int> activeChannelIndicies;
const Array<int> activeChannelIndices, inactiveChannelIndices;
private:
static StringArray getHardwareChannelNames (const bool isInput)
@ -1234,7 +1234,7 @@ struct iOSAudioIODevice::Pimpl : public AudioPlayHead,
return requiredChannels;
}
static Array<int> getActiveChannelIndicies (const BigInteger activeChannelsToIndex)
static Array<int> getActiveChannelIndices (const BigInteger activeChannelsToIndex)
{
Array<int> result;
@ -1248,6 +1248,21 @@ struct iOSAudioIODevice::Pimpl : public AudioPlayHead,
return result;
}
static Array<int> getInactiveChannelIndices (const Array<int>& activeIndices, int numChannels)
{
Array<int> result;
auto nextActiveChannel = activeIndices.begin();
for (int i = 0; i < numChannels; ++i)
if (nextActiveChannel != activeIndices.end() && i == *nextActiveChannel)
++nextActiveChannel;
else
result.add (i);
return result;
}
};
void reconfigure (const BigInteger requiredInputChannels,
@ -1307,7 +1322,7 @@ struct iOSAudioIODevice::Pimpl : public AudioPlayHead,
MidiMessageCollector* messageCollector = nullptr;
iOSAudioIODeviceType& deviceType;
WeakReference<iOSAudioIODeviceType> deviceType;
iOSAudioIODevice& owner;
CriticalSection callbackLock;
@ -1327,7 +1342,7 @@ struct iOSAudioIODevice::Pimpl : public AudioPlayHead,
};
//==============================================================================
iOSAudioIODevice::iOSAudioIODevice (iOSAudioIODeviceType& ioDeviceType, const String&, const String&)
iOSAudioIODevice::iOSAudioIODevice (iOSAudioIODeviceType* ioDeviceType, const String&, const String&)
: AudioIODevice (iOSAudioDeviceName, iOSAudioDeviceName),
pimpl (new Pimpl (ioDeviceType, *this))
{
@ -1401,7 +1416,7 @@ bool iOSAudioIODeviceType::hasSeparateInputsAndOutputs() const { retu
AudioIODevice* iOSAudioIODeviceType::createDevice (const String& outputDeviceName, const String& inputDeviceName)
{
return new iOSAudioIODevice (*this, outputDeviceName, inputDeviceName);
return new iOSAudioIODevice (this, outputDeviceName, inputDeviceName);
}
void iOSAudioIODeviceType::handleRouteChange (AVAudioSessionRouteChangeReason)