OSDN Git Service

[Feature] Windows版の効果音再生waveOut APIへ移行
[hengbandforosx/hengbandosx.git] / src / main-win / wav-reader.h
1 #pragma once
2 /*!
3  * @file wav-reader.h
4  * @brief Windows版固有実装(WAVファイル読込)ヘッダ
5  */
6
7 #include <memory>
8
9 #include <windows.h>
10 #include <mmsystem.h>
11
12 /*!
13  * WAVファイルの読み込み
14  */
15 class wav_reader {
16 public:
17     wav_reader()
18         : hmmio(NULL)
19     {
20     }
21     ~wav_reader()
22     {
23         close();
24     }
25
26     /*!
27      * WAVファイルを開く
28      * 
29      * @param filename
30      * @retval true 正常に処理された
31      * @retval false 処理エラー
32      */
33     bool open(char *filename);
34     /*!
35      * PCMデータ取得
36      * @details 呼び出し元でdelete[]すること
37      * @return PCMデータ
38      */
39     BYTE* read_data();
40     const WAVEFORMATEX *get_waveformat()
41     {
42         return &waveformatex;
43     }
44     const MMCKINFO *get_data_chunk()
45     {
46         return &data_chunk;
47     }
48     void close();
49
50 protected:
51     HMMIO hmmio;
52     MMCKINFO riff_chunk{};
53     MMCKINFO fmt_chunk{};
54     WAVEFORMATEX waveformatex{};
55     MMCKINFO data_chunk{};
56     std::unique_ptr<BYTE[]> buffer;
57 };