1 /******************************************************************************
2  *
3  * Project:  OpenCPN
4  *
5  ***************************************************************************
6  *   Copyright (C) 2013 by David S. Register                               *
7  *                                                                         *
8  *   This program is free software; you can redistribute it and/or modify  *
9  *   it under the terms of the GNU General Public License as published by  *
10  *   the Free Software Foundation; either version 2 of the License, or     *
11  *   (at your option) any later version.                                   *
12  *                                                                         *
13  *   This program is distributed in the hope that it will be useful,       *
14  *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
15  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
16  *   GNU General Public License for more details.                          *
17  *                                                                         *
18  *   You should have received a copy of the GNU General Public License     *
19  *   along with this program; if not, write to the                         *
20  *   Free Software Foundation, Inc.,                                       *
21  *   51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,  USA.         *
22  ***************************************************************************
23  */
24 
25 #ifndef SNDFILE_SOUND_LOADER_H
26 #define SNDFILE_SOUND_LOADER_H
27 
28 #include <sndfile.h>
29 
30 #include "SoundFileLoader.h"
31 
32 /**
33  * The original sound file loader supports WAV files only, the same format
34  * as supported by the wxSound widget.
35  */
36 class SndfileSoundLoader: public AbstractSoundLoader
37 {
38 
39     public:
40 
SndfileSoundLoader()41         SndfileSoundLoader() {};
42 
43         virtual ~SndfileSoundLoader();
44 
45         virtual bool Load(const char* path);
46 
47         virtual bool Reset();
48 
49         virtual size_t Get(void* samples, size_t length);
50 
GetBytesPerSample()51         unsigned GetBytesPerSample() const { return 2 * m_sfinfo.channels; };
52 
53         unsigned GetChannelCount() const;
54 
55         unsigned GetSamplingRate() const;
56 
57     protected:
58         SNDFILE* m_sndfile;
59         SF_INFO m_sfinfo;
60 };
61 
62 
63 #endif // SNDFILE_SOUND_LOADER_H
64