오디오 큐를 채우기 위해 3 개의 audioQueueBufferRef가 있으며 데이터가 충분히 빠를 때 모든 것이 훌륭하게 작동합니다. 그러나 때로는 outputCallback이 더 이상 데이터가 없을 때 버퍼를 채우라고 요청합니다. 이 경우 나는 뭔가를 대기열에 넣지 않으며 콜백은 더 이상 호출되지 않습니다. (정상?)스트림 지연으로 인해 AudioQueueBufferRef가 비어 있습니다.
이 후 2 버퍼와 나중에 (다른 지연 후) 1 버퍼를 실행하고 마지막으로 아무런 결과도없는 콜백이 버퍼에 없습니다.
빈 audioQueueBufferRef를 배열에 저장하고 데이터를 채울 때 호출하려고합니다. 그러나 데이터가 충분히 빠르지 않기 때문에 버퍼는 남아있는 데이터의 양을 "먹고"소리는 느려집니다.
채우기 위해 데이터가 부족할 때 가장 좋은 방법은 무엇입니까?
내가 가진 가장 좋은 점은 콜백없이 버퍼가 죽어 버려서 모든 버퍼가 비어있을 때까지 나머지 버퍼가 작업을하도록하는 것입니다. 이 후 audioQueue 중지 일부 데이터를 저장하고 다시 재생하십시오. AudioqueueStop()을 호출해야합니다. 왜냐하면 모든 버퍼가 비어서 다시 채울 때 소리가 들리지 않기 때문입니다. 이게 정상인가?
일반적으로 좋은 방법인가요? 더 좋은 방법이 있습니까? 그리고 내 모든 audioqueueBufferRef가 콜백 실행없이 죽었다는 것을 감지하는 콜백이 있습니까? 2.