続簡易バージョン

id:y-hamigaki:20060226 の続きです。
vorbis_file_source(旧称:vorbis_file)にformat()メンバを追加、pcm_sinkのバッファサイズはフォーマットから自動計算できるようにしました。
結果、oggファイルの再生はこうなりました。

#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;

int main()
{
    audio::vorbis_file_source vf("doremi.ogg");
    io::copy(vf, audio::pcm_sink(vf.format()));
}

WAVEファイルなら、

#include <hamigaki/audio/pcm_device.hpp>
#include <hamigaki/audio/wave_file.hpp>
#include <boost/iostreams/copy.hpp>

namespace audio = hamigaki::audio;
namespace io = boost::iostreams;

int main()
{
    audio::wave_file_source vf("doremi.wav");
    io::copy(vf, audio::pcm_sink(vf.format()));
}

ですから、これで使用方法も統一できました。
(wave_sourceはsine_wave_sourceと名前が似ていたのでwave_file_sourceに変更しています。)
このレベルならチュートリアルの最初の例として使えそうです。

今日の成果物