나는 Android apps
중 하나에 openSL
ES를 사용하고 있습니다. 앱이 포 그라운드에있을 때 콜백은 꽤 규칙적입니다. 마이크 콜백은 약 10ms마다 호출되므로 스피커 콜백도 있습니다. 그러나 배경에 앱을 넣고 브라우저 (또는 그 문제에 대한 다른 앱)를 열면 브라우저를 열 때 (또는 탐색 할 때) 콜백의 "폭풍"이 발생한다는 것을 알 수 있습니다. 그 문제를 해결할 방법이 있습니까? 그리고 그것은 왜 일어날까요? openSL은 콜백을 실행할 수없는 시간 동안 보상을합니까? (그것이 따라 잡으려고 노력하고있는 것처럼).openSL ES Android : 불규칙한 오디오 콜백
내 소스 코드 C
에 있고 나는 AudioTrack
및 AudioRecorder
의 스레드 우선 순위를 높이기 위해 노력했다 Jelly Bean 4.3.
에있어, 그리고 도움이 보인다,하지만 난 그에게 방법 확실하지 않다 가기.
추가 질문
그래서 당신도 증가 스레드 우선 순위는 콜백의 버스트를 얻을 수 있고 당신이 그 폐기해야한다는 말을하는지?
어떻게 좋은 해결책입니까? 마이크 패킷을 버리거나 스피커 패킷의 소스를 뽑을 것입니다. 맞습니까? 마이크 패킷을 드롭하지 않으면 마이크 패킷의 수신기가 마이크 패킷 버스트를 과도한 지터로 해석합니다. 맞습니까?
더 중요하게는 : AudioTrack 및 AudioRecorder의 스레드 우선 순위를 수동으로 늘리고 sched 방침을 라운드 로빈으로 변경했습니다. BusyBox (스레드 우선 순위/sched 정책 변경을위한 명령 줄 유틸리티와 함께 제공됨)의 루트 액세스와 설치가 모두 필요했습니다. C에서 프로그래밍 방식으로이 작업을 수행하는 방법은 무엇입니까? 나는 개별 스레드 우선 순위가 증가하고 내 앱 (프로세스)의 우선 순위가 아니라는 것을 확인하고 싶다.
부재 중 콜백이 * 지연 * 된 경우? 아니면 당신이 기대하는 것보다 더? – marko
나는 부재 중 콜백이 지연되면서 폭풍이 몰아 치고있다. – user1884325
앱을 백그라운드로 가져 가면 오디오가 끊기거나 끊기는 현상이 발생 했습니까? – rmigneco