AudioHardwareALSA ошибки с Android AudioRecord - PullRequest
1 голос
/ 20 декабря 2010

Я запускаю простое приложение AudioRecord, которое я пишу, и оно начинается с нескольких из них:

12-19 17:05:57.393: WARN/ResourceType(2233): Resources don't contain package for resource number 0x7f0800f4

, а затем это:

12-19 17:05:57.863: ERROR/AudioHardwareALSA(2182): AudioStreamInALSA::AudioStreamInALSA mMode=-1
12-19 17:05:57.863: ERROR/AudioHardwareALSA(2182): AudioStreamInALSA - input   - format = 1, channels = 16, rate = 44100
12-19 17:05:57.863: ERROR/AudioHardwareALSA(2182): AudioStreamInALSA - default - format = 1, channels = 16, rate = 44100
12-19 17:05:57.863: ERROR/AudioHardwareALSA(2182): AudioStreamInALSA - mDefaults->sampleRate = 44100
12-19 17:05:57.963: ERROR/AudioFlinger(2182): readInputParameters mInputBytes 8320, mFrameSize 2 mSampleRate 44100 mChannelCount(1)
12-19 17:05:57.963: ERROR/(2182): AFCCreateReSampler: avAFCInfo->bUsed[0] inSampleRate[44100] outSampleRate[44100] nChannel[1] outbitDepth[16]
12-19 17:05:58.278: WARN/AudioFlinger(2182): RecordThread: buffer overflow
12-19 17:05:58.328: WARN/IInputConnectionWrapper(6726): showStatusIcon on inactive InputConnection
12-19 17:06:05.598: ERROR/ALSALib(2182): external/alsa-lib/src/pcm/pcm.c:7231:(snd_pcm_recover) overrun occured

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

1 Ответ

1 голос
/ 24 апреля 2011

Посмотрите на ошибку "произошло переполнение".Прочитайте это:

http://lxr.post -tech.com / source / external / alsa-lib / src / pcm / pcm.c и в пояснении, которое он объяснил:

266 Эта ошибка означает xrun (переполнение для воспроизведения или переполнение для захвата).267 Подавление может произойти, когда приложение не подает новые сэмплы 268 вовремя в alsa-lib (из-за использования ЦП).Переполнение может произойти, когда приложение не берет новые захваченные сэмплы вовремя из alsa-lib.270

так что это просто означает, что поток захвата слишком занят выполнением других задач - это правильно?Возможно, вам следует создать поток, предназначенный для захвата аудиопотока?

Но читая это:

http://programming -android.labs.oreilly.com / ch14.html

это также может быть связано с недостаточным буфером, выделенным для захвата.Это правильно?

...