音がでないなぁ その3
バッファアンダーランでございます。#久しぶりにソースコードを眺めました
Nokiaのエンジニアさんが回答しています。
http://comments.gmane.org/gmane.comp.lib.qt.general/32710
20ms~40msのタイマーを使って、定期的に再生用バッファを満たすようにすればよい、とのことらしいです。
ネットワーク経由で、細々とPCMデータが送られてくるので、それをバッファリングしておき、タイマーで定期的に起動した関数内部で再生用のバッファの空きを調べて、チャンク単位で書き込んでください、と。
FPSが気になっていましたが、これはサーバに依存するので、そんなに改善できるわけではなさそうですね。
ログでは 8 FPS…大体 10 FPS前後っぽいです。無線LAN 回線速度70Mbpsくらいの場合ですが。
[現在のログ出力]
Boot : QDateTime("2014-04-08 13:32:40.073 JST Qt::LocalTime")
Assertion SUCCESS : brynhildr.cpp : LINE : 212
[control] Connected for control.
[graphics] Connected for graphics.
[sound] Connected for sound.
[sound] sample rate -> 48000
[sound] stop : IdleState
[sound] start
[sound] output: bytesFree(): 38400
[sound] output: periodSize(): 7680
[sound] output: recievedSize: 5632
[sound] output: totalRecievedSize: 5632
[sound] stop : ActiveState
[sound] stop : IdleState
[sound] sample rate -> 48000
[sound] output: bytesFree(): 38400
[sound] output: periodSize(): 7680
[sound] output: recievedSize: 5632
[sound] output: totalRecievedSize: 5632
[sound] stop : ActiveState
[sound] stop : IdleState
[sound] sample rate -> 48000
[sound] output: bytesFree(): 38400
[sound] output: periodSize(): 7680
[sound] output: recievedSize: 5888
[sound] output: totalRecievedSize: 5888
[sound] stop : ActiveState
:
:
[sound] output: bytesFree(): 23040
[sound] output: periodSize(): 7680
[sound] output: recievedSize: 7680
[sound] output: totalRecievedSize: 7680
[control] close().
[control] closeConnectionByServer_control().
[graphics] close().
[graphics] closeConnectionByServer_graphics().
[sound] close().
[sound] : closeConnectionByServer_sound().
Shutdown : QDateTime("2014-04-08 13:32:50.485 JST Qt::LocalTime")
Total Frame Counter : 80
FPS : 8 fps
« 音がでないなぁ その2 | トップページ | 音が…まず、タイマーを追加 »
コメント