1

私が書いている単純な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

これはどういう意味ですか?必要に応じてソース コードを投稿できますが、これらのエラーが何を参照している可能性があるか、およびそのような状況でバッファ オーバーフローが発生する理由についての基本的な回答を探しています。ありがとう。

4

1 に答える 1

1

「オーバーランが発生しました」というエラーを見てください。これを読む:

http://lxr.post-tech.com/source/external/alsa-lib/src/pcm/pcm.cおよびコメント内で説明されています。

266 このエラーは、xrun (再生のアンダーランまたはキャプチャのオーバーラン) を意味します。267 アンダーランは、アプリケーションが alsa-lib に間に合うように新しいサンプルをフィードしない場合に発生する可能性があります (CPU 使用率が原因で)。オーバーランは、アプリケーションが alsa-lib から時間内に新しいキャプチャ サンプルを取得しない場合に発生する可能性があります。270

つまり、キャプチャ スレッドが他の処理でビジー状態になっていることを意味します。これは正しいですか? おそらく、オーディオ ストリームのキャプチャ専用のスレッドを作成する必要がありますか?

しかし、これを読んで:

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

また、キャプチャに割り当てられたバッファが不十分であることが原因である可能性もあります。あれは正しいですか?

于 2011-04-24T14:15:23.733 に答える