mirror of
https://github.com/zakk4223/CocoaSplit.git
synced 2026-05-15 14:15:50 -06:00
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:
parent
387972bc12
commit
a1414f249f
3 changed files with 17 additions and 6 deletions
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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));
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue