From 2028628e828be6369168a4263ff47548330d99f4 Mon Sep 17 00:00:00 2001 From: Leland Lucius Date: Tue, 26 May 2015 00:22:35 -0500 Subject: [PATCH] Only set input parms when inputs are available...ditto output --- src/effects/audiounits/AudioUnitEffect.cpp | 109 +++++++++++---------- 1 file changed, 58 insertions(+), 51 deletions(-) diff --git a/src/effects/audiounits/AudioUnitEffect.cpp b/src/effects/audiounits/AudioUnitEffect.cpp index 186fac78f..bd8da741a 100644 --- a/src/effects/audiounits/AudioUnitEffect.cpp +++ b/src/effects/audiounits/AudioUnitEffect.cpp @@ -971,7 +971,6 @@ wxString AudioUnitEffect::GetFamily() bool AudioUnitEffect::IsInteractive() { -printf("isinter %d\n", mInteractive); return mInteractive; } @@ -2280,42 +2279,6 @@ bool AudioUnitEffect::SetRateAndChannels() { ComponentResult auResult; - auResult = AudioUnitSetProperty(mUnit, - kAudioUnitProperty_SampleRate, - kAudioUnitScope_Global, - 0, - &mSampleRate, - sizeof(Float64)); - if (auResult != 0) - { - printf("Didn't accept sample rate\n"); - return false; - } - - auResult = AudioUnitSetProperty(mUnit, - kAudioUnitProperty_SampleRate, - kAudioUnitScope_Input, - 0, - &mSampleRate, - sizeof(Float64)); - if (auResult != 0) - { - printf("Didn't accept sample rate\n"); - return false; - } - - auResult = AudioUnitSetProperty(mUnit, - kAudioUnitProperty_SampleRate, - kAudioUnitScope_Output, - 0, - &mSampleRate, - sizeof(Float64)); - if (auResult != 0) - { - printf("Didn't accept sample rate\n"); - return false; - } - AudioStreamBasicDescription streamFormat = {0}; streamFormat.mSampleRate = mSampleRate; @@ -2329,27 +2292,71 @@ bool AudioUnitEffect::SetRateAndChannels() streamFormat.mBytesPerPacket = sizeof(float); auResult = AudioUnitSetProperty(mUnit, - kAudioUnitProperty_StreamFormat, - kAudioUnitScope_Input, + kAudioUnitProperty_SampleRate, + kAudioUnitScope_Global, 0, - &streamFormat, - sizeof(AudioStreamBasicDescription)); + &mSampleRate, + sizeof(Float64)); if (auResult != 0) { + printf("%ls Didn't accept sample rate on global\n", GetName().c_str()); return false; } - streamFormat.mChannelsPerFrame = mAudioOuts; - auResult = AudioUnitSetProperty(mUnit, - kAudioUnitProperty_StreamFormat, - kAudioUnitScope_Output, - 0, - &streamFormat, - sizeof(AudioStreamBasicDescription)); - - if (auResult != 0) + if (mAudioIns > 0) { - return false; + auResult = AudioUnitSetProperty(mUnit, + kAudioUnitProperty_SampleRate, + kAudioUnitScope_Input, + 0, + &mSampleRate, + sizeof(Float64)); + if (auResult != 0) + { + printf("%ls Didn't accept sample rate on input\n", GetName().c_str()); + return false; + } + + auResult = AudioUnitSetProperty(mUnit, + kAudioUnitProperty_StreamFormat, + kAudioUnitScope_Input, + 0, + &streamFormat, + sizeof(AudioStreamBasicDescription)); + if (auResult != 0) + { + printf("%ls didn't accept stream format on input\n", GetName().c_str()); + return false; + } + } + + if (mAudioOuts > 0) + { + auResult = AudioUnitSetProperty(mUnit, + kAudioUnitProperty_SampleRate, + kAudioUnitScope_Output, + 0, + &mSampleRate, + sizeof(Float64)); + if (auResult != 0) + { + printf("%ls Didn't accept sample rate on output\n", GetName().c_str()); + return false; + } + + streamFormat.mChannelsPerFrame = mAudioOuts; + auResult = AudioUnitSetProperty(mUnit, + kAudioUnitProperty_StreamFormat, + kAudioUnitScope_Output, + 0, + &streamFormat, + sizeof(AudioStreamBasicDescription)); + + if (auResult != 0) + { + printf("%ls didn't accept stream format on output\n", GetName().c_str()); + return false; + } } return true;