나는 AUSampler & AURemoteIO 단위를 사용하여 사용자 정의 메모를 재생하는 음악 제작 응용 프로그램을 보유하고 있습니다. 일부 사용 후에 샘플러의 AudioUnitRender에 대한 호출이 결코 반환되지 않고 오디오 스레드가 매달리고 오디오 출력이 꺼지는 문제가 있습니다. 오디오 스레드가 지속적으로 장치 콘솔 (안 디버거 출력)에 오류 메시지를 뱉어 같이 CPU 사용량 또한,이 시점에서 쏘고 :이 메시지는 AUSampler 내부 _os_log_impl
에 의해 기록되고AudioUnitRender가 AUSampler에 걸림
May 11 11:45:12 <device name> mediaserverd(CoreAudio)[2296] <Notice>: HALS_IOContext.cpp:1496:IOWorkLoop_HandleOverload: HALS_IOContext::IOWorkLoop_HandleOverload: Overload on context 96 current time: 11788974 deadline: 11788958
렌더링 (구체적으로 VoiceEnvelope::GetRunFrameCount
).
왜 이런 일이 일어날 수 있으며 어떻게 피할 수 있습니까?
remotei의 입력 콜백 내에서 audiounitrender를 호출 하시겠습니까? 그렇다면 코드 일부를 보여줄 수 있습니다. 또한 콜백을 사용하거나 audiounitrender를 수동으로 호출 할 필요가없는 경우 audiounit 연결을 만드는 것을 고려하십시오. – dave234
remoteIO 오디오 장치의 렌더링 콜백에서 호출 중입니다. 실제로 콜백 설정 및 렌더링을 처리하는 라이브러리 인 [The Amazing Audio Engine 2] (https://git.io/v9yQx)를 사용하고 있지만 [AudioUnitRender]에 대한 호출은 [line 163]에 있습니다 (https://github.com/TheAmazingAudioEngine/TheAmazingAudioEngine2/blob/master/TheAmazingAudioEngine/Modules/AudioUnitModule.m#L163) – Jayson