Downmixer no longer does audio unit uniit/reinit on input format change; base node class handles that now.

When a PCMPlayer input is disconnected, stop the pending buffer timer from firing and drain the pending queue.
This commit is contained in:
Zakk 2020-03-01 23:16:27 -05:00
parent 387972bc12
commit a1414f249f
3 changed files with 17 additions and 6 deletions

View file

@ -193,11 +193,7 @@
{
bool retVal;
NSDictionary *saveData = [self saveDataForPrivateRestore];
AudioUnitUninitialize(self.audioUnit);
retVal = [super setInputStreamFormat:format bus:bus];
[self willInitializeNode];
AudioUnitInitialize(self.audioUnit);
[self didInitializeNode];
[self restoreDataFromPrivateRestore:saveData];
return retVal;
}

View file

@ -304,7 +304,7 @@ UInt32 inNumberFrames,
-(bool)setInputStreamFormat:(AVAudioFormat *)format bus:(UInt32)bus
{
AudioUnitUninitialize(self.audioUnit);
//AudioUnitUninitialize(self.audioUnit);
OSStatus err = AudioUnitSetProperty(self.audioUnit, kAudioUnitProperty_StreamFormat, kAudioUnitScope_Input, bus, format.streamDescription, sizeof(AudioStreamBasicDescription));
@ -324,7 +324,7 @@ UInt32 inNumberFrames,
-(bool)setOutputStreamFormat:(AVAudioFormat *)format bus:(UInt32)bus
{
AudioUnitUninitialize(self.audioUnit);
//AudioUnitUninitialize(self.audioUnit);
OSStatus err = AudioUnitSetProperty(self.audioUnit, kAudioUnitProperty_StreamFormat, kAudioUnitScope_Output, bus, format.streamDescription, sizeof(AudioStreamBasicDescription));

View file

@ -207,6 +207,21 @@
[self.pauseBuffer removeAllObjects];
}
-(void)drainPendingBuffers
{
@synchronized (self) {
[_pendingBuffers removeAllObjects];
}
}
-(void)didRemoveInput
{
if (_pendingTimer)
{
dispatch_source_cancel(_pendingTimer);
}
[self drainPendingBuffers];
}
-(void)dealloc
{