« 2016年6月 | トップページ | 2016年8月 »

2016年7月

2016年7月11日 (月)

Ver.1.5.6-RC1 リリース

Qt5.7.0でのテストが主目的です。

以下からダウンロードできます。(Windows/Linux(x64)/Mac版)

https://github.com/funfun-dc5/qtbrynhildr/releases


主な変更は以下です。

[その他変更]
・Qt5.7.0でビルドするように変更(Linux(x86)版以外)

(*) Linux(x64)では Qt5.7.0 のインストールが必要です。

-----------------------------------------------------------------------------------
[SHA256SUM]
-----------------------------------------------------------------------------------
3a47416e2c15c6c01ebb04d62b91c13ec4fbbf1b7e9b022c5ca52d9c6e59f4e4 *QtBrynhildr-linux_x64-v156-rc1.run

3df8f27fcf3b67b3e72a069805f1404bbbc7dce057f930f14511981b5aaf2fce *QtBrynhildr-macosx_x64-v156-rc1.dmg

858e205681a4e7be8f4f09b643dfa007385d9f325d77ff7a669ed695c40cfe2c *QtBrynhildr-windows-v156-rc1.exe

2016年7月 9日 (土)

Brynhildr 2.0.7 がリリースされました

Lokasenna プラグインに対応した Brynhildr 2.0.7 がリリースされました。

Brynhildr「2.0.7」リリース

Lokasenna をダウンロードして、含まれる lokasenna.dll を brynhildr\plugins 下に配置すれば Lokasenna が有効になります。

Lokasenna「0.1.3」リリース(2016/7/9時点の最新)

私の環境だと60FPS近くの性能が出ています。

ただし、Lokasenna の機能は Windows8 以降のみで有効だそうなのでそこは注意が必要ですね。

CELTライブラリをビルドする その3

コピーしたヘッダーファイル・ライブラリファイルをインクルード・リンクできるように.proファイルに以下を追加しました。

# for CELT
INCLUDEPATH += ../libs
LIBS += -L../libs -lcelt0

CELTを正式に組み込む場合はもう少しやり方を考えたほうがよさそうですが、とりあえずこれでテストはできそうです。

CELTライブラリ関数を呼び出せるかを確かめるために、main.cpp に確認用コードを追加しました。

まずはヘッダーファイルのインクルード。

#if 1 // for TEST
// for CELT
#include "celt.h"
#endif
main関数の先頭に以下のように書きました。
#if 1 // for TEST
  int error;
  CELTMode *mode = celt_mode_create(44100, 256, &error);
  cout << "celt_mode_create : error = " << error << endl << flush;
  celt_int32 skip = 0;
  if (mode != 0){
	celt_mode_info(mode, CELT_GET_LOOKAHEAD, &skip);
	cout << "skip = " << skip << endl << flush;
	celt_mode_destroy(mode);
  }
  else {
	cout << "Ouch: mode = 0" << endl << flush;
  }
#endif // for TEST
44.1kHz用のモードを作成して、すぐ削除するだけの処理です。qmake を実行し、.pro の変更を反映させビルドすると正常にビルドは完了しました。CELTライブラリのリンクには成功したようです。

早速実行すると、

"Ouch: mode = 0"

と出ました…(;ω;)

2016年7月 8日 (金)

CELTライブラリをビルドする その2

通常出来上がったCELTライブラリ関連ファイルは

make install

すれば/usr/local下にインストールされるのでしょうが、MinGWを使うように設定したのですんなりとは行きません。

今回はQt Brynhildr のためだけに必要なものなので必要なファイルだけを手動でコピーします。まず、

make -n install

でインストール実行時にどのような処理が行われるかを確認します。

どうやら、libcelt下にある3つのヘッダーファイル(celt.h/celt_types.h/celt_header.h)とibcelt/.libs下に出来ているlibcelt0.aをコピーしてしまえば良さそうです。

というわけで、テスト用にsrcと同じレベルにlibsというディレクトリを作って、そこに上記4つのファイルをコピーしました。


cd libcelt
cp celt.h celt_types.h celt_header.h .libs/libcelt0.a ~/Src/qtbrynhildr/libs


あとlibcelt/libcelt0.laを確認すると

# Libraries that this one depends upon.
dependency_libs=' -lwinmm'

とあるのでリンク時に"-lwinmm"を付ける必要がありそうです。が、qtbrynhildr.proを確認するとすでに"-lwinmm"は設定しているので追加の設定は必要ありませんでした。

2016年7月 7日 (木)

CELTライブラリをビルドする その1

CELTライブラリの使い方の概要はつかめたような気がするので、実際にライブラリを Qt Brynhildr で使えるようにしたいと思います。

ビルド時に静的にCELTライブラリをリンクしてQt Brynhildr の実行ファイル内に取り込んでしまいたいので、まずはCELTライブラリのスタティック版ライブラリファイルを作る必要がありますね。

READMEを読むと

./configure
make

で出来ると書いてあります。が、これってUnix環境の場合ですよね。

configureスクリプトを使うためにはUnix環境が必要なので今回はCygwin(x64)環境でビルドすることにしました。ただし、Windows版 Qt BrynhildrはQt5に同梱されているMinGWに含まれるツール(C++コンパイラなど)を使って作っているので、CELTライブラリも同じMinGWで作る必要があります。

というわけで、Qt5に含まれるビルドツール(g++など)を使うように、PATH の先頭に

Qt5.x.x/Tools/mingw???_32/bin

を追加しました。

この状態で、./configure を実行しました。「テスト用コマンドを作るためにliboggの開発パッケージが必要だよ」と最後に表示されますが、とりあえず放置します。

config.log を確認するとQt5に同梱されているMinGWを見つけてくれているようですので、そのままmakeを実行しました。

しばらく待つとlibcelt/.libs の下に libcelt0.a が出来上がりました。 …がこのライブラリファイルは実際には使えず、再ビルドすることになります(;ω;)

2016年7月 3日 (日)

パブリックモード 7

パブリックモード 6 についてはIchiGekiさんから近日(そのうち?)公開予定とお聞きしていますが、さらにパブリックモード 7 の情報を頂きまして情報開示の許可を頂いたので記事にしてみました。

現在公開されているパブリックモード(モード5,6)ではデスクトップ転送はMotionJPEG、サウンドデータ転送はPCMに制限されていますが、モード 7 ではデスクトップ転送のVP8での転送、CELTによるサウンドデータ転送が可能となるそうです。

CELTだと音質は少し低下しますが、データ量が最大で10分の1程度になることもあるとか。

パブリックモード 7 に対応するサンプルソースコードもいずれ公開されるそうですが、テスト的にCELT対応してみようかと思います。

まとめるとこんな感じです。

Mode 5:MotionJPEG/PCM

Mode 6:Mode 5 + ファイル転送/クリップボード共有

Mode 7:Mode 6 + VP8/CELT

--------------------------------------------------------------------------------
[CELT]
--------------------------------------------------------------------------------

早速CELTのホームページを見てみました。

The CELT ultra-low delay audio codec

ホームページのトップには以下のようにあります。

—The CELT codec has been merged into the IETF Opus codec and is now obsolete—

2011年8月にCELT自体の開発は終了。CELTとSILKを併用する形でOpusとしてIETFで標準化、作業も2012年9月に終了 (RFC 6716として公開)したそうです。

CELT部分のみが対応できればいいので今回はCELTの最終公式リリースを利用します。

celt-0.11.1.tar.gz

CELTの概要がREADMEにまとめられているので目を通します。とりあえず、libceltの使い方を勉強するにはlibceltディレクトリ下にできるtestceltというコマンドを参考にすれば良さそうです。ソースコードはtestcelt.cです。

このコマンドは以下の様な処理を行うようです。

PCMデータ -> (CELTエンコード処理 )-> CELTのデータ -> (CELTデコード処理) -> (CELTを経由した)PCMデータ

BrynhildrクライアントはCELTデコード処理以降を行えばよいのですよね、多分。

流れとしては大体こんな感じでしょうか。

------------------------------------------------------------
[初期化処理:サーバ接続時]
------------------------------------------------------------
(1) celt_mode_create()でモード情報を生成

celt_mode_info()で必要な情報を取得しておく

(2) celt_decoder_create_custom()でデコーダを生成

------------------------------------------------------------
[サウンド再生:サーバ接続中]
------------------------------------------------------------
(3) celt_decode()でデコードし、取得したPCMデータをサウンドバッファへ転送

------------------------------------------------------------
[終了処理:サーバ切断時]
------------------------------------------------------------
(4) celt_decoder_destroy()でデコーダを削除

(5) celt_mode_destroy()でモード情報を削除

« 2016年6月 | トップページ | 2016年8月 »

無料ブログはココログ
2017年7月
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31