90 likes | 206 Views
2002 spring Term Project 音楽 data stream 周辺. KMSF B2 ’ 幸田 acky 拓耶. 今回の製作物. オーディオデータ転送システム CD からのリッピングおよびソケットへの書き込みを行うライブラリ ソケットからの受信およびサウンドデバイスへの書き込み、ボリュームコントロールを行うライブラリ それらのテスト用アプリケーション. 今回のシステム図. GUI. リモコン役 PC. ① 君は誰?. ① 君は誰?. ② 俺 Speaker. ② 俺 CD Player. 制御系やりとり. ③ 再生してくれる?.
E N D
2002 spring Term Project音楽data stream 周辺 KMSF B2’幸田 acky 拓耶
今回の製作物 • オーディオデータ転送システム • CDからのリッピングおよびソケットへの書き込みを行うライブラリ • ソケットからの受信およびサウンドデバイスへの書き込み、ボリュームコントロールを行うライブラリ • それらのテスト用アプリケーション
今回のシステム図 GUI リモコン役PC ①君は誰? ①君は誰? ②俺Speaker ②俺CD Player 制御系やりとり ③再生してくれる? ④音楽データ Speaker (Amp.) CD Player acky 音声系やりとり CDプレーヤ役PC スピーカ役PC
プロトコル上の工夫 • TCPを利用しているがパケット風の通信(ヘッダ+データの繰り返し)にして音声再生中の周波数の変更などに即座に対応できるようにした。
実装上の工夫 • コントロール系を別の人間(sunsaku)が開発しているためライブラリ形式にした。 • 音声転送作業がコントロール系の作業に影響しないように別スレッドにしたので、全ての関数が非ブロッキングにできている。 • ビットレートを変えらるようにしてQoSのための布石とした。
仕様 • ビットレートは3種類 • 1411.2kbps (PCM 44.1kHz 16bit Stereo) • 705.6kbps (PCM 22.05kHz 16bit Stereo) • 352.8kbps (PCM 11.025kHz 16bit Stereo) • FreeBSD4.2以降で動作
今回の構成 • libcd.so • CDからのリッピングとソケットへの出力を行うライブラリ • libspk.so • ソケットからの入力と/dev/dspへの出力、/dev/mixerの制御を行うライブラリ • cdtest • libcd.soのテストのためのshell形式のプログラム • spktest • Libspk.soのテストのためのshell形式のプログラム
ライブラリの機能 ~libcd.so~ • int cdplay(in_addr_t) • 指定されたアドレスへ再生開始 • int cdstop(void) • 停止 • int cdsetrate(int) • ビットレート変更 • int cdgetstatus(*struct status) • 現在のドライブの状態、ビットレートなどを取得 • int cdpointrel (int) • 相対値による曲番指定 • int cdpointabs(int) • 絶対値による曲番指定 • int cdeject(void) • CD取り出し
ライブラリの機能 ~libspk.so~ • int spkvolrel(int) • 相対値による音量指定 • int spkvolabs(int) • 絶対値による音量指定