2017-04-21 7 views
1

RemoteIO 콜백이 버퍼 크기를 변경하는시기를 결정해야합니다. iOS 7까지 우리는 AudioSessionAddPropertyListener을 사용하여 세션 속성 수신기를 추가 한 다음 kAudioSessionProperty_PreferredHardwareIOBufferDuration 속성을 추가 할 수있었습니다. 이것은 현재 사용되지 않습니다. 교체가 있습니까? AVAudioSession은 KVO 규격을 따르지 만, IOBufferDuration 또는 preferredIOBufferDuration 속성에는 적합하지 않습니다.IOBufferDuration 용으로 AudioSessionAddPropertyListener가 사용되지 않음

대체품은 무엇입니까?

답변

2

버퍼 지속 시간은 알려진 샘플 속도에서 frameCount (콜백 버퍼의 샘플 수에 비례) 형태로 RemoteIO 콜백에 제공됩니다. 다른 모든 알림은이 콜백 정보와 비동기적일 수 있으므로 실제 변경 (UI 기본 실행 루프가 아닌 오디오 스레드에서 발생)과 비교하여 잘못된 시간에 수신 될 수 있습니다.

그러나 오디오 콜백은 버퍼 지속 기간 업데이트 후에 다른 폴링 스레드 또는 소비자 스레드에서 찾을 수있는 일부 표시 상태 (전역 또는 매개 변수 구조체)를 변경할 수 있습니다.

+0

메모리 할당 상황에 불행하지만 버퍼 크기가 증가하면 슬라이스가 사용됩니다. – yano

+1

최근 iOS 장치에서 사용할 수있는 메모리와 비교할 때 실시간 오디오의 메모리 요구량은 일반적으로 최적화 할 가치가 없습니다. 거대한 (대부분 비어있는) 원형 오디오 버퍼는 일반적인 솔루션이며 슬라이싱이 필요 없습니다. – hotpaw2