Sound Lib: SoundLib/AudioHandler.h ソースファイル

Sound Lib

Sound Lib
C/C++Windowsゲーム用音声再生ライブラリ
AudioHandler.h
1 //----------------------------------------------------------
2 // <filename>AudioHandler.h</filename>
3 // <author>Masami Sugao</author>
4 // <date>2018/07/16</date>
5 //----------------------------------------------------------
6 #ifndef AUDIO_HANDLER_H
7 #define AUDIO_HANDLER_H
8 
9 #include <windows.h>
10 #include <mmsystem.h>
11 #include <mmreg.h>
12 #include <xaudio2.h>
13 #include "IVoiceCallbackDelegate.h"
14 #include "Audio/IAudio.h"
15 #include "VoiceCallback.h"
16 #include "IAudioHandlerDelegate.h"
17 
18 
19 namespace SoundLib {
20 /* Enums -------------------------------------------------------------------------------------------- */
24 enum PlayingStatus {
26  Stopped,
28  Playing,
30  Pausing
31 };
32 
36 template <typename T>
38 public:
39  /* Constants ---------------------------------------------------------------------------------------- */
41  static const int MAX_FREQENCY_RATIO = 4;
42 
43  /* Constructor / Destructor ------------------------------------------------------------------------- */
49  AudioHandler(std::basic_string<T> name, Audio::IAudio* pAudio);
50 
55  AudioHandler(AudioHandler<T>&& obj) = default;
56 
60  ~AudioHandler();
61 
62  /* Getters / Setters -------------------------------------------------------------------------------- */
67  PlayingStatus GetStatus() const;
68 
73  float GetVolume() const;
74 
80  bool SetVolume(float volume);
81 
92  float GetFrequencyRatio() const;
93 
108  bool SetFrequencyRatio(float ratio);
109 
110  /* Operator Overloads ------------------------------------------------------------------------------- */
116  AudioHandler<T>& operator=(AudioHandler<T>&& obj) = default;
117 
118  /* Functions ---------------------------------------------------------------------------------------- */
124  bool Prepare(IXAudio2& rXAudio2);
125 
130  void Start(bool isLoopPlayback);
131 
137  void Start(IAudioHandlerDelegate<T>* pDelegate);
138 
144  void Start(void(*onPlayedToEndCallback)(const T* pName));
145 
149  void Stop();
150 
154  void Pause();
155 
159  void Resume();
160 
164  void BufferEndCallback();
165 
166 private:
167  /* Constants ---------------------------------------------------------------------------------------- */
168  static const int BUF_COUNT = 2;
169 
170  /* Variables ---------------------------------------------------------------------------------------- */
171  std::basic_string<T> name;
172  Audio::IAudio* pAudio;
173  IXAudio2SourceVoice* pVoice;
174  VoiceCallback* pVoiceCallback;
175  XAUDIO2_BUFFER xAudioBuffer;
176  BYTE** pReadBuffers;
177  int bufferSize;
178  int currentBufNum;
179  bool isLoopPlayback;
180  IAudioHandlerDelegate<T>* pDelegate;
181  void(*onPlayedToEndCallback)(const T* pName);
182  PlayingStatus status;
183 
184  /* Constructor / Destructor ------------------------------------------------------------------------- */
185  AudioHandler(const AudioHandler<T>&) = delete;
186 
187  /* Operator Overloads ------------------------------------------------------------------------------- */
188  AudioHandler<T>& operator=(const AudioHandler<T>&) = delete;
189 
190  /* Functions ---------------------------------------------------------------------------------------- */
191  void Push();
192  void Start();
193  void Stop(bool clearsCallback);
194 };
195 }
196 
197 #endif
AudioHandlerのコールバック定義用インターフェース
Definition: IAudioHandlerDelegate.h:16
IXAudio2VoiceCallback実装クラス
Definition: VoiceCallback.h:17
void Start(bool isLoopPlayback)
ファイルの先頭から再生を行う。
Definition: AudioHandler.cpp:97
VoiceCallbackのコールバック定義用インターフェース
Definition: IVoiceCallbackDelegate.h:14
~AudioHandler()
デストラクタ
Definition: AudioHandler.cpp:27
void Pause()
再生を一時停止する。
Definition: AudioHandler.cpp:139
bool Prepare(IXAudio2 &rXAudio2)
XAudio2のソースボイスを生成する。
Definition: AudioHandler.cpp:87
void Stop()
再生を停止する。
Definition: AudioHandler.cpp:132
AudioHandler< T > & operator=(AudioHandler< T > &&obj)=default
ムーブ代入演算子のオーバーロード
オーディオファイルデコードクラス用インターフェース
Definition: IAudio.h:21
void Resume()
一時停止中の音声を続きから再生する。
Definition: AudioHandler.cpp:147
void BufferEndCallback()
XAusio2再生用バッファが空になったタイミングで呼び出されるコールバック関数。
Definition: AudioHandler.cpp:155
Definition: CompressedAudio.cpp:13
static const int MAX_FREQENCY_RATIO
///
Definition: AudioHandler.h:41
float GetVolume() const
ボリュームを取得する。
Definition: AudioHandler.cpp:52
PlayingStatus GetStatus() const
再生状況を示すステータスを取得する。
Definition: AudioHandler.cpp:47
float GetFrequencyRatio() const
再生速度とピッチの変化率を取得する。
Definition: AudioHandler.cpp:69
オーディオデータ操作クラス
Definition: AudioHandler.h:37
AudioHandler(std::basic_string< T > name, Audio::IAudio *pAudio)
コンストラクタ
Definition: AudioHandler.cpp:14
bool SetVolume(float volume)
ボリュームを設定する。
Definition: AudioHandler.cpp:59
bool SetFrequencyRatio(float ratio)
再生速度とピッチの変化率を設定する。
Definition: AudioHandler.cpp:76
構築:   doxygen 1.8.14