簡易バージョン
vorbis_fileとwave_sourceを、それぞれbasic_vorbis_fileとbasic_wave_sourceに変更しました。vorbis_fileとwave_sourceはSourceにfile_sourceを指定した簡易バージョンになっています。これでちょっぴりコードが短くなりました。
#include <hamigaki/audio/pcm_device.hpp> #include <hamigaki/audio/vorbis_file.hpp> #include <boost/iostreams/copy.hpp> namespace audio = hamigaki::audio; namespace io = boost::iostreams; audio::vorbis_file vf("doremi.ogg"); // ファイル名だけ指定すればOK const audio::vorbis_info& info = vf.info(); audio::pcm_format fmt; fmt.rate = info.rate; fmt.bits = 16; fmt.channels = info.channels; io::copy(vf, audio::pcm_sink(fmt, 4096));
まだ、フォーマット受け渡しの問題は残っています。
今日の成果物
昨日のバージョンはかなり駄目なバグが入っていました。
// サンプルサイズの計算部分 #if バグ sample_size_(f.channels * (f.bits + 7) / 8) #else sample_size_(f.channels * ((f.bits + 7) / 8)) #endif
そろそろちゃんとしたテストを組み込まないとまずいですねぇ。