2017-12-08 24 views
0

에 대한 callbackm 렌더링 ... 내가 일을하는 아이폰 OS의 RemoteIO 오디오 장치를 사용하고시간 AudioOutputUnitStart (사이의 차이)와이 타이밍에 대한 꽤 "특징점"질문 RemoteIO

. AudioOutputUnitStart()를 호출 한 후에 유닛이 "on"으로 설정되면 렌더링 콜백이 다운 스트림 유닛에 의해 꺼내 져야합니다. 내가 맞춰 허용 :

가능성 1 : 콜백 렌더링 다음이) 바로 AudioOutputUnitStart (실행 후 발생, 그것은

가능성이 간다 : 시스템 자체 렌더링 콜백 리듬을 가지고있다. AudioOutputUnitStart()를 호출 한 후 다음 렌더링 콜백은 시스템의 "다음"틱 중 하나를 포착 한 다음 거기에서 시작합니다.

1 또는 2? 아니면 3이야? 미리 감사드립니다!

답변

1

오디오 대기 시간은 특정 장치 모델, 오디오 세션 및 옵션, 요청 된 샘플 속도 및 버퍼 크기, 다른 오디오 (배경 또는 최근 마감 된 응용 프로그램)가 최근에 재생되었거나 녹화 된 시간에 따라 달라질 수 있습니다. 체계. 내부 오디오 증폭기 회로 (등)의 전원을 켜야하는지 또는 이미 켜져 있는지 여부가 가장 큰 차이를 만들 수 있습니다. 특정 샘플 속도를 요청하면 OS 리샘플링 및 믹서 코드에 잠재적으로 필요한 버퍼링으로 인해 추가 시간이 발생할 수도 있습니다.

가능성이 높습니다 (2) 또는 (3).

RemoteIO를 사용할 때 대기 시간을 최소화하는 가장 좋은 방법은 오디오 세션 설정에서 매우 짧은 버퍼 (1 ~ 6mS)를 요청하고, 오디오 세션 및 오디오 유닛을 미리 시작하는 것입니다 (앱 시작, 등), 사운드가 필요할 때까지 콜백 버퍼를 0으로 채 웁니다 (또는 녹음 된 콜백 데이터를 삭제합니다).