2 // Copyright (C) 2006 Matthias Braun <matze@braunis.de>
4 // This program is free software: you can redistribute it and/or modify
5 // it under the terms of the GNU General Public License as published by
6 // the Free Software Foundation, either version 3 of the License, or
7 // (at your option) any later version.
9 // This program is distributed in the hope that it will be useful,
10 // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 // GNU General Public License for more details.
14 // You should have received a copy of the GNU General Public License
15 // along with this program. If not, see <http://www.gnu.org/licenses/>.
17 #ifndef HEADER_SUPERTUX_AUDIO_OGG_SOUND_FILE_HPP
18 #define HEADER_SUPERTUX_AUDIO_OGG_SOUND_FILE_HPP
21 #include <vorbis/vorbisfile.h>
23 #include "audio/sound_file.hpp"
25 class OggSoundFile : public SoundFile
28 OggSoundFile(PHYSFS_file* file, double loop_begin, double loop_at);
31 size_t read(void* buffer, size_t buffer_size);
35 static size_t cb_read(void* ptr, size_t size, size_t nmemb, void* source);
36 static int cb_seek(void* source, ogg_int64_t offset, int whence);
37 static int cb_close(void* source);
38 static long cb_tell(void* source);
41 OggVorbis_File vorbis_file;
42 ogg_int64_t loop_begin;
44 size_t normal_buffer_loop;
47 OggSoundFile(const OggSoundFile&);
48 OggSoundFile& operator=(const OggSoundFile&);