« Android用にQt Brynhildr (仮称) をビルドする その2 | トップページ | PCMデータが足りません »

2014年7月 9日 (水)

画像データもバッファリングする その3

JPEGファイルデータをバッファリングするクラスはPCMデータをバッファリングするのと少し構造が違うのでデバッグに少し手間取りましたが、なんとか正常にバッファリングできるようになりました。

Brynhildrサーバさんは音が出ていない時はPCMデータを送らない、具体的にはデータサイズが0として返事をするので、その場合は同期を取る必要はなさそうなので即座に画像再生を開始するようにしました。音が出ている場合は、サウンド出力を開始できるタイミングまでJPEGデータを貯めこんで、サウンド出力を開始するタイミングに合わせて、画像再生を開始します。

JPEGファイルデータをバッファリングするGraphicsBufferクラスにデバッグログを入れて確認しました。
#もちろんデスクトップ画像そのものも確認はしましたが。

"buffer data size :"と出ているのが、バッファにデータが追加された直後のトータルバッファ使用量です。
"release()"と出ているのが画像出力が終わったのでリリースしたデータバッファのサイズです。

最初はJPEGファイルデータを貯めこんで、しばらくしたら画像を再生して、その後不要になったデータをリリースしています。

現在のテスト環境だと大体2.2MBくらいでバッファリングしたデータサイズは安定しているようです。現在は念のため10MB確保しています。

$ ./release/qtbrynhildr.exe
buffer data size : 38910
buffer data size : 77820
buffer data size : 136323
buffer data size : 194826
buffer data size : 271743
buffer data size : 348660
buffer data size : 425577
buffer data size : 502494
buffer data size : 579411
buffer data size : 656328
buffer data size : 733245
buffer data size : 810162
buffer data size : 887079
buffer data size : 963996
buffer data size : 1040913
buffer data size : 1117830
buffer data size : 1194747
buffer data size : 1271664
buffer data size : 1348581
buffer data size : 1425498
buffer data size : 1502415
buffer data size : 1579369
buffer data size : 1656323
buffer data size : 1733277
buffer data size : 1810231
buffer data size : 1887185
buffer data size : 1964139
buffer data size : 2041093
buffer data size : 2118047
buffer data size : 2195001
release() : 38910
buffer data size : 2233045
release() : 38910
buffer data size : 2271089
release() : 58503
buffer data size : 2289540
release() : 58503
buffer data size : 2307991
release() : 76917
buffer data size : 2308028
release() : 76917
buffer data size : 2308065
release() : 76917
buffer data size : 2308102
release() : 76917
buffer data size : 2308139
release() : 76917
buffer data size : 2308176
release() : 76917
buffer data size : 2308213
release() : 76917
buffer data size : 2308250
release() : 76917
buffer data size : 2308287
release() : 76917
buffer data size : 2308320
release() : 76917
buffer data size : 2308353
release() : 76917
buffer data size : 2308386
release() : 76917
buffer data size : 2308419
release() : 76917
buffer data size : 2308452
release() : 76917
buffer data size : 2308485
release() : 76917
buffer data size : 2308518
release() : 76917
buffer data size : 2308551
release() : 76917
buffer data size : 2308584
release() : 76954
buffer data size : 2308580
release() : 76954
buffer data size : 2308582
release() : 76954
buffer data size : 2308584
release() : 76954
buffer data size : 2308586
release() : 76954
buffer data size : 2308588
release() : 76954
buffer data size : 2308590
release() : 76954
buffer data size : 2308592
release() : 76954
buffer data size : 2308594
release() : 76954
buffer data size : 2308596
release() : 76954
buffer data size : 2308598
release() : 76954
buffer data size : 2308600
release() : 76954
buffer data size : 2308602
release() : 76954
buffer data size : 2308604

windows版では、バッファリングする前の実装でもほぼサウンド再生の遅延は起こりませんが、より正確になると思われます。

« Android用にQt Brynhildr (仮称) をビルドする その2 | トップページ | PCMデータが足りません »

コメント

コメントを書く

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

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

トラックバック


この記事へのトラックバック一覧です: 画像データもバッファリングする その3:

« Android用にQt Brynhildr (仮称) をビルドする その2 | トップページ | PCMデータが足りません »