パブリックモード 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の概要が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()でモード情報を削除
« Ver.1.5.5 リリース | トップページ | CELTライブラリをビルドする その1 »
コメント