« 音が出るまで、のこと 最後 その2 | トップページ | 進捗記録 2014.4.26 »

2014年4月26日 (土)

音が出るまで、のこと 最後 その3

ログを少し詳細に出しました。再生バッファへの書き込み間隔は60msです。

Boot :  QDateTime("2014-04-26 10:22:32.926 JST Qt::LocalTime") 
Assertion SUCCESS : brynhildr.cpp : LINE : 253
[control] Connected for control.
[graphics] Connected for graphics.
[sound] Connected for sound.
[sound] stop : IdleState
[timerExpired()] output: bytesFree(): 38400
[timerExpired()] output: periodSize(): 7680
[timerExpired()] : chunk (5)
[sound Buffer] get(int len) : size = 11520 : len = 7680
[sound] stop : ActiveState
[timerExpired()] : chunk (4)
[sound Buffer] get(int len) : size = 3840 : len = 7680
[timerExpired()] output: bytesFree(): 23040
[timerExpired()] output: periodSize(): 7680
[timerExpired()] : chunk (3)
[sound Buffer] get(int len) : size = 7680 : len = 7680
[sound] stop : IdleState
[timerExpired()] output: bytesFree(): 38400
[timerExpired()] output: periodSize(): 7680
[timerExpired()] : chunk (5)
[sound Buffer] get(int len) : size = 13312 : len = 7680
[sound] stop : ActiveState
[timerExpired()] : chunk (4)
[sound Buffer] get(int len) : size = 5632 : len = 7680
[timerExpired()] output: bytesFree(): 30720
[timerExpired()] output: periodSize(): 7680
[timerExpired()] : chunk (4)
[sound Buffer] get(int len) : size = 11520 : len = 7680
[timerExpired()] : chunk (3)
[sound Buffer] get(int len) : size = 3840 : len = 7680
[timerExpired()] output: bytesFree(): 23040
[timerExpired()] output: periodSize(): 7680
[timerExpired()] : chunk (3)
[sound Buffer] get(int len) : size = 15360 : len = 7680
[timerExpired()] : chunk (2)

bytesFree()とあるのが、書き込み時の再生バッファの空きサイズです。再生バッファ自体のサイズは38400バイトのようです。"bytesFree"でログをgrepしてみます。

$ grep bytesFree log_60.txt
[timerExpired()] output: bytesFree(): 38400
[timerExpired()] output: bytesFree(): 23040
[timerExpired()] output: bytesFree(): 38400
[timerExpired()] output: bytesFree(): 30720
[timerExpired()] output: bytesFree(): 23040
[timerExpired()] output: bytesFree(): 23040
[timerExpired()] output: bytesFree(): 30720
[timerExpired()] output: bytesFree(): 38400
[timerExpired()] output: bytesFree(): 15360
[timerExpired()] output: bytesFree(): 23040
[timerExpired()] output: bytesFree(): 38400
[timerExpired()] output: bytesFree(): 23040
[timerExpired()] output: bytesFree(): 38400
[timerExpired()] output: bytesFree(): 15360
[timerExpired()] output: bytesFree(): 38400
[timerExpired()] output: bytesFree(): 30720
[timerExpired()] output: bytesFree(): 23040
[timerExpired()] output: bytesFree(): 38400

再生バッファがあまり効率よく埋められていないようです。空きサイズが38400バイトということはバッファが空だった(で、再生がストップしていた)ことを示します。

ここでQtのサンプルソースaudiooutput.cppを思い出しました。PullモードとPushモード…

現状の実装はサンプルソースでいうところの、定期的に自発的にデータを転送するPushモードです。Pullモードは、必要になった場合にデータがPullされるモードのようです。自発的にバッファを効率よく書き込むには通信速度、CPUの処理速度などを考慮する必要があり、難しそうです。それなら必要になった時点でPullしてもらうほうがいいのではないでしょうか?

« 音が出るまで、のこと 最後 その2 | トップページ | 進捗記録 2014.4.26 »

コメント

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

トラックバック


この記事へのトラックバック一覧です: 音が出るまで、のこと 最後 その3:

« 音が出るまで、のこと 最後 その2 | トップページ | 進捗記録 2014.4.26 »