[Armadillo:09149] Re: Armadillo800EVA での音声ストリーミング再生がすぐに止まります

Yasuhisa Nakamura email@hidden
2013年 8月 29日 (木) 14:03:51 JST


中村です。

ハードウェアもドライバも違うので役に立つかどうかわかりませんが・・・
Armadillo-4x0のUSBオーディオで音飛び(音切れ?)が発生したとき、
ALSA設定(confファイル)でperiod_sizeとbuffer_size を調整したら、
問題が解消しました。
aplayのオプションでも同じと思いますが、そのときはaplayは使って
いなかったので、confファイルでの調整でした。

-- 
なかむら


2013年 8月 29日(木)12:56 に nakai さんは書きました:
> nakaiです。
>
>> ●問題
>> parec --device="bt device name" | aplay -f cd -V mono
>
> 状況から推測すると、パイプした場合にデータが間に合っていない(underrun)ようですね。
> パイプのところを数フレーム分バッファリングできれば解決しそうな感じだと思います。
>
> aplayの下記のオプションなどを利用すると状況は変わりますか?
>
> -B, --buffer-time=#     buffer duration is # microseconds
>     --buffer-size=#     buffer duration is # frames
>
>
> (2013年08月28日 22:32), Takeshi Inoue wrote:
>> 井上と申します。
>>
>> Armadillo800EVAにUSB Bluetoothドングルを指し、
>> Android携帯の音楽を、BluetoothのA2DPにてArmadilloを
>> 経由して再生させようとしていますが、音がすぐ途切れます。
>>
>> どうも、fsi-wm8978のサウンドドライバに問題がある可能性が
>> あるのではと考えています。
>>
>> ●確認できていること
>>
>> カーネルはat2 (+マルチメディア評価パッケージ)ベースで
>> Bluetooth周りを有効にし、
>>
>> 1) hciconfig で、Bluetooth USBドングルの認識を確認
>> 2) bluetooth-agentを起動してAndorid携帯(Galaxy Nexus)とのペアリングを確認
>>
>> また、pulseaudioを使用し
>> 3) parec --device="bluetooth device name" > audio.dat
>>  で、Android携帯側のミュージックプレイヤーで再生した音声をファイルに録音
>> 4) aplay -f cd -V mono audio.dat にて、上記録音データのArmadilloでの再生を確認
>> (30秒程度録音して確認)
>>
>>  以上より、単体レベルでの動作は確認できています。
>>
>> ●問題
>>
>> 上記3)4)をパイプでつなげて
>> parec --device="bt device name" | aplay -f cd -V mono
>> を実行すると、1〜2秒で再生が停止し、しばらくして
>> aplay: pcm_write:1609: write error: Input/output error
>> のエラーが出ます。
>>
>> ●確認したこと
>>
>> a) alsa-utilsのaplay.cを修正し、libalsaのsnd_pcm_writei()を呼び出している部分に
>>  printfを仕込んで動作を確認したところ、
>>
>>  耳に聞こえるレベルでの音声停止が発生
>>  -> snd_pcm_writei()で2KB単位の音声データ書き込みはその後も数回正常終了
>>  -> snd_pcm_writei()がブロックされる
>>     -> 数秒して-5 (-EIO)が返される。
>>
>>  という状況でした。EIOを返すまではsnd_pcm_writei()は全て正常終了です。
>>
>> b) また、aplayに-Nオプションを追加して、non blocking modeでも
>>  試してみましたが、この場合はEIOの代わりにEAGAINが返され続ける状況です。
>>
>> c) parec --device="bt device name" | aplay -f cd -V mono -r 24000
>>  と、aplayの再生レートだけを試しに無理やり半分にしてみたのですが
>>  (もちろん)再生速度は半分になるものの途中で止まらず再生が続きます。
>>
>> d) aplayで再生に指定するデバイスを、HDMI側にしてみたところ
>>  止まらずに再生できています(ただし、当方の環境では、モニタ側が
>>  HDMI信号を認識せず、実際に音が出るかは確認できていません。
>>  aplayの-V monoオプションで再生レベルをリアルタイム表示させて
>>  動作確認しています)。
>>  また、再生デバイスをnullデバイスにした場合も正常です。
>>
>> c)alsa周りのソースを目視でちょっとだけ追ってみましたが、
>>  sound/core/pcm_lib.c: snd_pcm_lib_write1()中の
>>  snd_pcm_playback_avail()でバッファ空きを待っているのが
>>     タイムアウトすると、a)で見られたようにEIOのエラーコードを返すようです。
>>
>> 以上から、fsi-wm8978のサウンドドライバに何らかの問題
>> (上記 cから考えると、underrunが起きた場合の処理?)がある
>>  可能性を考えていますがいかがでしょうか。
>> _______________________________________________
>> armadillo mailing list
>> email@hidden
>> http://lists.atmark-techno.com/cgi-bin/mailman/listinfo/armadillo
>>
>
> _______________________________________________
> armadillo mailing list
> email@hidden
> http://lists.atmark-techno.com/cgi-bin/mailman/listinfo/armadillo
>
>




armadillo メーリングリストの案内