XAudio実装1

メモリ読み込みした OggVorbis ファイルをストリーミングで再生しようとすると、思ったよりはめんどくさいかもかも。
ただ単に OggVorbis の管理クラスから書き直してるから時間がかかってるだけな気もしますがー。


↓メモ。相変わらず備忘録用なので詳細とかコードは無し。
1. メモリ内の OggVorbis データ管理クラスを作成する


2. IXAudio2VoiceCallback に関数を登録する
IXAudio2VoiceCallback ではバッファー処理終了時とか、エラー発生時とかに呼び出されるコールバック関数を設定できる。
とりあえず、IXAudio2VoiceCallback を継承したクラスを作ってやって、STDMETHOD_ マクロで OnHogehoge 関数たちを登録してやれば良い。
ストリーム再生だけしたい場合は、OnStreamEnd 内のみ処理書いてやって他は空っぽで問題ない。
OnStreamEnd に登録する関数は、3 のクラスで保持する再生用ストリームバッファに 1 のクラスの OggVorbis データを読み込んで格納してやる感じでOK。


3. XAudio 管理クラスを作成する
ロードとか再生とか停止とかその辺を実装する。


4. エフェクトクラスを作成する
未実装。
SampleAPOBase.h を使うと楽らしいが、とりあえず内容の理解からで……。


色々触ってみて、メモリからストリーム再生する場合の体系だった資料がwebには
あんま落っこちてない(サンプルは落ちてるけど、解説はあんまない)ので、
取っ掛かりに苦労する人が多そうだなぁ、と感じた。
じゃあ自分が書けよ、と思わないでもないので、完成して気が向いたら書くかもしれないです。