Skip to content

開発日記 vol.23

Masami Sugao edited this page Aug 9, 2018 · 3 revisions

C言語ラッパー追加

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めちゃくちゃ苦労したけど…。