-
Notifications
You must be signed in to change notification settings - Fork 1
開発日記 vol.23
Masami Sugao edited this page Aug 9, 2018
·
3 revisions
SoundLibを使用する人がC++の知識が全くなくても使えるように、C言語の文法で呼び出せるラッパーメソッドを作った。
ここで問題になるのが文字コード問題。
C言語だとテンプレートクラスはないから、利用側とのインターフェースになるメソッドは全てchar
版とwchar_t
版を作る必要がある。
数が多いから凄く見にくい。
動作確認用プラグラムもC++版とC言語版を呼び分けるようにしたら、#ifdef
だらけでやっぱり見にくい。
何かすっきりさせる方法はないのだろうか。
元々このライブラリを作ることになった経緯は、既にあるライブラリに以下の難点があるからだった。
- WAVのみの対応なので、格納する音声ファイルのサイズが大きくなる。
- 音声データを最初に全部読み込んで保持しておくので、メモリ使用量が多く、読み込みにも時間がかかる。
結果としてストリーミング再生で様々な圧縮形式に対応したライブラリができあがったんだけど、これには以下の難点がある。
- ffmpegを含んでいるためlibのサイズがでか過ぎる。
- ffmpegのメモリ使用量が多い。
なんだかこれって本末転倒では…?
mp3のデコードはffmpegを使わなくてもできるので、現在のものからffmpegを抜いたLIGHT版を作ることにした。
LIGHT版を作ったら
- libのサイズ150MB→5MB
- メモリ使用量27MB→3MB
まで軽くなった。
もうLIGHT版でよいような気がする。
ffmpegめちゃくちゃ苦労したけど…。