Ошибка при попытке записать аудио с OpenSL ES - PullRequest
2 голосов
/ 23 мая 2011

Я получаю сообщение об ошибке при запуске приложения, в котором используется API OpenSL ES для Android. Когда я запускаю приложение, я получаю следующую ошибку:

05-23 16:18:19.355: ERROR/AudioHardwareALSA(84): ALSALib device/samsung/GT-I9000/alsa-lib/src/pcm/pcm.c:7244:(snd_pcm_recover) overrun occured.

Однако я не смог найти причину. Может быть, это отладочное сообщение как-то связано с этим?

05-23 16:18:19.339: DEBUG/dalvikvm(1409): JIT unchain all for threadid=11

Я подозреваю, что первое вызвано вторым. Но как я могу предотвратить это тогда? Я также вижу несколько отладочных сообщений GC_EXPLICIT и GC_CONCURRENT в моих журналах.

В любом случае, я использую OpenSL ES для записи и воспроизведения аудиоданных. Данные отправляются и / или принимаются через Wi-Fi через уровень Java. Но для того, чтобы это происходило свободно, я не хочу, чтобы GC приходил и вмешивался ... Есть ли способ помешать ВМ ограничить использование GC?


Редактировать

Я обнаружил, что JIT unchain all for threadid=11 не проблема. Я запустил приложение на новом чистом телефоне, и сначала ошибка не отображается, но сообщение DEBUG по-прежнему отображается. Это не имеет никакого влияния на производительность тогда. Однако через несколько дней ошибка начинает проявляться, и я получаю небольшие изменения в моих аудиоданных.

Я попытался увеличить количество буферов, выделенных моему рекордеру, которое теперь равно 4, но это тоже не помогает. Я просмотрел исходный код pcm.c, но это больше не помогает мне в этой проблеме. У кого-нибудь есть идеи по этому вопросу?

1 Ответ

1 голос
/ 03 июня 2011

Кажется, у меня была другая проблема, которая вызвала эту проблему.Кажется, у меня был другой поток, потребляющий много циклов из-за плохого предложения кода.Это заставило поток пропустить большую часть кода и фактически ничего не делать.Когда поток занялся ожиданием, звук отключился, и я получил ошибки, упомянутые выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...