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

Sound Lib

Sound Lib
C/C++Windowsゲーム用音声再生ライブラリ
Mp3Audio.h
1 //----------------------------------------------------------
2 // <filename>Mp3Audio.h</filename>
3 // <author>Masami Sugao</author>
4 // <date>2018/07/16</date>
5 //----------------------------------------------------------
6 #ifndef MP3_AUDIO_H
7 #define MP3_AUDIO_H
8 
9 #include "IAudio.h"
10 #include <mmreg.h>
11 #include <msacm.h>
12 
13 
14 namespace SoundLib {
15 namespace Audio {
19 class Mp3Audio : public IAudio {
20 public:
21  /* Constructor / Destructor ------------------------------------------------------------------------- */
25  Mp3Audio();
26 
31  Mp3Audio(Mp3Audio&& obj) = default;
32 
36  ~Mp3Audio();
37 
38  /* Getters / Setters -------------------------------------------------------------------------------- */
43  const WAVEFORMATEX* GetWaveFormatEx() const;
44 
49  std::string GetFormatName() const;
50 
55  int GetChannelCount() const;
56 
61  int GetSamplingRate() const;
62 
67  int GetBitsPerSample() const;
68 
78  bool HasReadToEnd() const;
79 
80  /* Operator Overloads ------------------------------------------------------------------------------- */
86  Mp3Audio& operator=(Mp3Audio&& obj) = default;
87 
88  /* Functions ---------------------------------------------------------------------------------------- */
94  bool Load(std::string filePath);
95 
102  long Read(BYTE* pBuffer, long bufSize);
103 
107  void Reset();
108 
109 private:
110  /* Variables ---------------------------------------------------------------------------------------- */
111  HANDLE hFile;
112  DWORD offset; // MP3データの位置
113  DWORD mp3DataSize; // MP3データのサイズ
114  int channelCount;
115  int bitsPerSample;
116  WORD sampleRate;
117  WAVEFORMATEX waveFormatEx;
118  ACMSTREAMHEADER ash;
119  HACMSTREAM has;
120  bool hasReadToEnd;
121 
122  /* Constructor / Destructor ------------------------------------------------------------------------- */
123  Mp3Audio(const Mp3Audio&) = delete;
124 
125  /* Operator Overloads ------------------------------------------------------------------------------- */
126  Mp3Audio& operator=(const Mp3Audio&) = delete;
127 
128  /* Functions ---------------------------------------------------------------------------------------- */
129  DWORD GetDataSize();
130  WORD GetBitRate(BYTE* pHeader, int version) const;
131  WORD GetSampleRate(BYTE* pHeader, int version) const;
132 };
133 
134 }
135 }
136 #endif
bool HasReadToEnd() const
ファイル末尾まで読み込みが終わったかどうかを示す値をを取得する。
Definition: Mp3Audio.cpp:85
int GetSamplingRate() const
デコード前のサンプリングレートを取得する。
Definition: Mp3Audio.cpp:77
mp3ファイルデコードクラス
Definition: Mp3Audio.h:19
void Reset()
ファイルポインタを音声データの先頭に戻す。
Definition: Mp3Audio.cpp:209
オーディオファイルデコードクラス用インターフェース
Definition: IAudio.h:21
Mp3Audio()
コンストラクタ
Definition: Mp3Audio.cpp:36
int GetChannelCount() const
デコード前のチャンネル数を取得する。
Definition: Mp3Audio.cpp:73
Definition: CompressedAudio.cpp:13
std::string GetFormatName() const
ファイルフォーマットを示す文字列を取得する。
Definition: Mp3Audio.cpp:69
bool Load(std::string filePath)
ファイルを解析し、デコード準備を行う。
Definition: Mp3Audio.cpp:91
const WAVEFORMATEX * GetWaveFormatEx() const
PCMの情報を格納したオブジェクト
Definition: Mp3Audio.cpp:65
int GetBitsPerSample() const
デコード前のビットレートを取得する。
Definition: Mp3Audio.cpp:81
Mp3Audio & operator=(Mp3Audio &&obj)=default
ムーブ代入演算子のオーバーロード
long Read(BYTE *pBuffer, long bufSize)
ファイルを順次読み込み、デコードした値を格納する。
Definition: Mp3Audio.cpp:179
~Mp3Audio()
デストラクタ
Definition: Mp3Audio.cpp:40
構築:   doxygen 1.8.14