问题描述
音频单元子类型是kAudioUnitSubType_VoiceProcessingIO, 并使用 kAudioOutputUnitProperty_CurrentDevice 设置音频单元的设备 ID
Osstatus result = AudioOutputUnitStop(audio_unit);
result = AudioUnitUninitialize(audio_unit);
result = AudioComponentInstancedispose(audio_unit);
线程跟踪:
3 ExceptionHandling 0x00007fff3c64ef31 -[NSExceptionHandler _handleException:mask:] + 364
4 ExceptionHandling 0x00007fff3c64ecac NSExceptionHandleruncaughtSignalHandler + 35
5 libsystem_platform.dylib 0x00007fff204d3d7d _sigtramp + 29
6 CoreFoundation 0x00007fff2050f381 CFStringGetLength + 11
7 CoreFoundation 0x00007fff205225c7 CFStringCompare + 24
8 CoreAudio 0x00007fff221e83f5 _ZN9HALDevice4DuckEfPK14AudioTimeStampf + 921
9 CoreAudio 0x00007fff21d3ed48 AudioDeviceDuck + 843
10 AudioDSP 0x00000001390d7d4a _Z14DuckOtherAudiojff + 51
11 AudioDSP 0x0000000139213e06 _ZN16AUVoiceProcessor22DestroyAggregateDeviceEv + 974
12 AudioDSP 0x0000000139215459 _ZN16AUVoiceProcessorD2Ev + 417
13 AudioDSP 0x00000001392efdec _ZN13ComponentBase8AP_CloseEPv + 30
14 AudioToolboxcore 0x00007fff219e4b6a AudioComponentInstancedispose + 55
解决方法
您正在处理音频实例,然后再停止。
请注意,AudioOutputUnitStop 可能不会立即停止音频单元,因为音频线程是异步运行的。如果您在停止音频单元后延迟半秒,那么其他线程可能会在那时停止,然后您可以更安全地处理其资源。