2009-12-28 1 views
1

나는 이것을 분석하려고 밤새도록 노력해 왔습니다. 내 코드는 기본적으로 Apple의 예제 here과 동일합니다. 그러나 장치는 대기열에있는 첫 번째 버퍼 만 재생합니다 (앱이 시작될 때 첫 번째 버퍼의 내용을 듣습니다). 그 후에는 아무 소리도 장치에서 나오지 않습니다. AQS가 계속 내 AudioQueueOutputCallback 기능을 계속 실행하기 때문에 재생은 여전히 ​​실행 중입니다. 또한 AQS를 호출 할 때마다 0이 반환되므로 아무 것도 실패하지 않습니다.iPhone의 오디오 큐 서비스는 첫 번째 대기열에 담긴 버퍼 만 재생하나요?

내 콜백 함수에서 AudioQueueEnqueueBuffer을 호출하는 한 후속 버퍼를 재생할 수 있습니다. 소켓에서 채취 된 데이터와 AudioFileStreamParseBytes에있는 AudioFileStream_PacketsProc 콜백 내에서만 버퍼를 채우고 큐에 넣을 수 있기 때문에이 방법은 작동하지 않습니다.

누구든지이 문제가 있습니까?

나는 AQ는 항상 전진 몰랐어요 ...

감사합니다, 앤드류

답변

0

이 경우 다른 사람이이 문제에 알아 냈 ... 나에게 AQS 버그처럼 보인다 제 시간에. UDP 데이터 스트림에서 오디오 데이터를 사용하고 있기 때문에 손실 된 패킷 때문에 AQ보다 느리게 떨어질 것입니다.

AQ가 "지금 당장"버퍼를 재생하도록 알려주지 못했습니다. 내 해결 방법은 방금 누락 된 패킷을 감지 할 때 AQ를 다시 설정하는 것입니다. 이상적은 아니지만 지금은 효과가 있습니다.

앤드류

+2

나는 비슷한 문제가있어, 좀 더 통찰력을 제공해 줄 수 있습니까? – Amitg2k12