OSStatus AUEffectBase::SetProperty()

in Source/AUEffectBase.cpp [153:182]


OSStatus AUEffectBase::SetProperty(AudioUnitPropertyID inID, AudioUnitScope inScope,
	AudioUnitElement inElement, const void* inData, UInt32 inDataSize)
{
	if (inScope == kAudioUnitScope_Global) {
		switch (inID) {
		case kAudioUnitProperty_BypassEffect: {
			if (inDataSize < sizeof(UInt32)) {
				return kAudioUnitErr_InvalidPropertyValue;
			}

			const bool tempNewSetting = *static_cast<const UInt32*>(inData) != 0;
			// we're changing the state of bypass
			if (tempNewSetting != IsBypassEffect()) {
				if (!tempNewSetting && IsBypassEffect() &&
					IsInitialized()) { // turning bypass off and we're initialized
					Reset(0, 0);
				}
				SetBypassEffect(tempNewSetting);
			}
			return noErr;
		}
		case kAudioUnitProperty_InPlaceProcessing:
			mProcessesInPlace = *static_cast<const UInt32*>(inData) != 0;
			return noErr;
		default:
			break;
		}
	}
	return AUBase::SetProperty(inID, inScope, inElement, inData, inDataSize);
}