2010-03-26 3 views
1

AudioQueueServices를 사용하여 연속적인 데이터 스트림을 녹음하고 있습니다. 버퍼가 데이터로 채워지는 경우에만 콜백이 호출된다는 것을 알고 있습니다. 실제로 첫 번째 콜백에는 전체 버퍼가 있고 두 번째 콜백은 3/4, 세 번째 콜백은 꽉 차고 네 번째 콜백은 3/4입니다. 이 버퍼는 8000 패킷 (8khz 오디오 녹음)입니다. 그래서 매번 콜백에 1 초의 오디오를 돌려 주어야합니다. 오디오 큐 버퍼 크기가 올바른지 확인했으며 동작에 의해 다소 확인되었습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까? 다른 RunLoop으로 AudioQueueNewInput에서 뭔가를해야합니까? 내가 시도했지만 이것이 내가 디버거에서 실행하면, 그건 그렇고 ...오디오 녹음 중에 AudioQueueServices 콜백에서 예기치 않은 동작이 발생했습니다.

을 변화를 보이지 않았다 각 콜백 8000 개 샘플 전체 - 저이는 스레딩/타이밍 것은 생각하기 .

답변

0

분명히 다른 사람들과 토론하고 응답이 없으므로 부적절하게 문서화 된 경우에도이 동작은 설계된대로 (또는 고장 났지만 확정되지 않을 가능성이 있음) 분명합니다. 해결 방법은 필요한 경우 콜백에 샘플을 적절히 버퍼링하고 버퍼가 가득차는 것을 기대하지 않는 것입니다. 파일에 데이터를 쓰는 것만으로는 문제가되지 않지만 콜백에서 일정 크기의 오디오 데이터 블록을 사용할 것으로 예상되는 경우이 일관성을 직접 확인해야합니다.

관련 문제