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

Sound Lib

Sound Lib
C/C++Windowsゲーム用音声再生ライブラリ
CompressedAudio.h
1 //----------------------------------------------------------
2 // <filename>CompressedAudio.h</filename>
3 // <author>Masami Sugao</author>
4 // <date>2018/07/16</date>
5 //----------------------------------------------------------
6 #ifndef COMPRESSED_AUDIO_H
7 #define COMPRESSED_AUDIO_H
8 
9 #include "IAudio.h"
10 extern "C" {
11 #include <libavformat/avformat.h>
12 #include <libavcodec/avcodec.h>
13 #include <libswresample/swresample.h>
14 }
15 
16 namespace SoundLib {
17 namespace Audio {
18 
22 class CompressedAudio : public IAudio {
23 public:
24  /* Constructor / Destructor ------------------------------------------------------------------------- */
29 
34  CompressedAudio(CompressedAudio&& obj) = default;
35 
40 
41  /* Getters / Setters -------------------------------------------------------------------------------- */
46  const WAVEFORMATEX* GetWaveFormatEx() const;
47 
52  std::string GetFormatName() const;
53 
58  int GetChannelCount() const;
59 
64  int GetSamplingRate() const;
65 
70  int GetBitsPerSample() const;
71 
81  bool HasReadToEnd() const;
82 
83  /* Operator Overloads ------------------------------------------------------------------------------- */
89  CompressedAudio& operator=(CompressedAudio&& obj) = default;
90 
91  /* Functions ---------------------------------------------------------------------------------------- */
97  bool Load(std::string filePath);
98 
105  long Read(BYTE* pBuffer, long bufSize);
106 
110  void Reset();
111 
112 private:
113  AVFormatContext* pFormatContext;
114  AVStream* pAudioStream;
115  AVCodec* pCodec;
116  AVCodecContext* pCodecContext;
117  SwrContext* pSwr;
118  WAVEFORMATEX waveFormatEx;
119  AVPacket* pPacket;
120  AVFrame* pFrame;
121  bool hasReadToEnd;
122  BYTE* pRemainingConvertedBuf;
123  int remainingConvertedBufSize;
124 
125  /* Constructor / Destructor ------------------------------------------------------------------------- */
126  CompressedAudio(const CompressedAudio&) = delete;
127 
128  /* Operator Overloads ------------------------------------------------------------------------------- */
129  CompressedAudio& operator=(const CompressedAudio&) = delete;
130 
131  /* Functions ---------------------------------------------------------------------------------------- */
132  bool CreateCodecContext();
133  long ConvertPcmFormat(BYTE* pBuffer, long bufSize);
134 };
135 
136 }
137 }
138 #endif
int GetChannelCount() const
デコード前のチャンネル数を取得する。
Definition: CompressedAudio.cpp:50
std::string GetFormatName() const
ファイルフォーマットを示す文字列を取得する。
Definition: CompressedAudio.cpp:46
const WAVEFORMATEX * GetWaveFormatEx() const
PCMの情報を格納したオブジェクト
Definition: CompressedAudio.cpp:42
void Reset()
ファイルポインタを音声データの先頭に戻す。
Definition: CompressedAudio.cpp:208
~CompressedAudio()
デストラクタ
Definition: CompressedAudio.cpp:27
bool HasReadToEnd() const
ファイル末尾まで読み込みが終わったかどうかを示す値をを取得する。
Definition: CompressedAudio.cpp:62
int GetSamplingRate() const
デコード前のサンプリングレートを取得する。
Definition: CompressedAudio.cpp:54
int GetBitsPerSample() const
デコード前のビットレートを取得する。
Definition: CompressedAudio.cpp:58
long Read(BYTE *pBuffer, long bufSize)
ファイルを順次読み込み、デコードした値を格納する。
Definition: CompressedAudio.cpp:141
オーディオファイルデコードクラス用インターフェース
Definition: IAudio.h:21
CompressedAudio()
コンストラクタ
Definition: CompressedAudio.cpp:16
音声圧縮ファイルデコードクラス
Definition: CompressedAudio.h:22
Definition: CompressedAudio.cpp:13
bool Load(std::string filePath)
ファイルを解析し、デコード準備を行う。
Definition: CompressedAudio.cpp:68
CompressedAudio & operator=(CompressedAudio &&obj)=default
ムーブ代入演算子のオーバーロード
構築:   doxygen 1.8.14