« OpenSSLの教訓を | トップページ | Qt 5.3 がリリースされました »

2014年5月19日 (月)

PCMデータのスループットが気になる…

Brynhildrでも指摘がある(Siegfriedでは改善済みらしい)のですが、通信帯域が狭い時に生のPCMデータはかなり重いようです。安定した有線LANならほぼ問題ないと思われますが、品質の悪い無線LANになるとプチノイズが乗る可能性があります。

素のWindowsアプリケーションならまだ軽いのですが、Qt5になるとスループットが低く、低速無線LANだとぎりぎりっぽいです。画質を程々にしないと音が間に合いません。なんか改善できるのか調べてはみますが…

プラグインコーディックを利用してCompressed Audio(MP3とか)にしたいんですが、その場合サーバ側(機能?)も作らないとなりません…大事(おおごと)になります(@Д@;

Brynhildrクライアント互換にして、サーバも別途作るか…。風呂敷広げすぎだな…

とりあえず、キャプチャしました。バージョンが"0.02"になった記念で。

キャプチャソフトをoCamにすると動画にマークが入らない(フリーソフトなので)ので、いいです。基本的な使い方はBandicamと変わりません。F2キーで録画終了することだけ覚えていれば大体O.K.です。YouTubeへのアップロードも問題なしです。

Qt Brynhildr(仮称)の動作テスト [キャプチャ動画]

Windows 8.1 update 上での数時間のストレステストでは問題なし(落ちない、大きなメモリリークはなさそう)です。
Ubuntu 14.04 LTSはこれから…

VMwareで確認しましたが、画像データを同期せずに全速で表示しているので、PCMデータが置いてけぼりをくってるようです( ^ω^ )

実機で試そう…と思ったら、最新stableカーネル(3.14.4)が不安定(´・ω・`)ショボーン
マシンが古いから、かも。

実機で試すと、さらに音声が置いてけぼりでございます。同期しないと…ダメだこりゃ。
そして終了時は”コアダンプ”(^-^;

#お、助かった、実機だとgdbで止まる…。VMwareだと捕捉できません…

スタックフレームを見ると…ぐわっ、PCMデータ書き込み用のタイマーの停止を忘れてたようです…(´・ω・`)
解放済みのリングバッファにアクセスしようとしたので、コアダンプでございました、恥ずかしい。

(追記)
20分後、原因が判明しました。2つ原因がありました。

1,PCMデータ書き込み用のタイマーを止めていなかった

2,デストラクタ中のインスタンスのdeleteの順番がマズイ場所があった

QAudioDeviceインスタンスのdeleteの前に、QIODeviceインスタンスを開放しなければなりません。
厳密には、QIODeviceの開放時にQAudioDeviceの開放が行われるようです。
よってQAudioOutputのdeleteだけでよいと。

最後のコアダンプ箇所の特定は結局

cout << "Here1" << endl << flush;

をソースに入れて、いわゆるprintfデバッグを行いました。
コアダンプデバッグ終了…ι(´Д`υ)アセアセ

これでWindowsとUbuntuの動作差分はなくなりました。
画像とサウンド出力の同期をどうにかしないと…

« OpenSSLの教訓を | トップページ | Qt 5.3 がリリースされました »

コメント

コメントを書く

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

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

トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/2011805/56248230

この記事へのトラックバック一覧です: PCMデータのスループットが気になる…:

« OpenSSLの教訓を | トップページ | Qt 5.3 がリリースされました »