Sha256: 6dca5f97db36ae0b339be85f1b6f0b4208c86b2771823137c73ba7a926342991

Contents?: true

Size: 1.22 KB

Versions: 22

Compression:

Stored size: 1.22 KB

Contents

#ifndef GOSUIMPL_AUDIO_AUDIOFILE_HPP
#define GOSUIMPL_AUDIO_AUDIOFILE_HPP

#include <boost/noncopyable.hpp>
#include <vector>
#import <OpenAL/al.h>

namespace Gosu
{
    class AudioFile : boost::noncopyable
    {
        std::vector<char> decodedData_;
        
    public:
        virtual ~AudioFile() {}
        virtual ALenum format() const = 0;
        virtual ALuint sampleRate() const = 0;
        virtual std::size_t readData(void* dest, std::size_t length) = 0;
        virtual void rewind() = 0;
        
        const std::vector<char>& decodedData()
        {
            static const unsigned INCREMENT = 512*1024;
            
            if (!decodedData_.empty())
                return decodedData_;
            
            for (;;)
            {
                decodedData_.resize(decodedData_.size() + INCREMENT);
                int readBytes = readData(&decodedData_[decodedData_.size() - INCREMENT],
                                    INCREMENT);
                if (readBytes < INCREMENT)
                {
                    decodedData_.resize(decodedData_.size() - INCREMENT + readBytes);
                    break;
                }
            }
            
            return decodedData_;
        }
    };
}

#endif

Version data entries

22 entries across 22 versions & 1 rubygems

Version Path
gosu-0.7.33 GosuImpl/Audio/AudioFile.hpp
gosu-0.7.32 GosuImpl/Audio/AudioFile.hpp
gosu-0.7.31 GosuImpl/Audio/AudioFile.hpp
gosu-0.7.30 GosuImpl/Audio/AudioFile.hpp
gosu-0.7.29 GosuImpl/Audio/AudioFile.hpp
gosu-0.7.28 GosuImpl/Audio/AudioFile.hpp
gosu-0.7.27.1 GosuImpl/Audio/AudioFile.hpp
gosu-0.7.27 GosuImpl/Audio/AudioFile.hpp
gosu-0.7.26.1 GosuImpl/Audio/AudioFile.hpp
gosu-0.7.26 GosuImpl/Audio/AudioFile.hpp
gosu-0.7.25 GosuImpl/Audio/AudioFile.hpp
gosu-0.7.24 GosuImpl/Audio/AudioFile.hpp
gosu-0.7.23 GosuImpl/Audio/AudioFile.hpp
gosu-0.7.22 GosuImpl/Audio/AudioFile.hpp
gosu-0.7.21 GosuImpl/Audio/AudioFile.hpp
gosu-0.7.20 GosuImpl/Audio/AudioFile.hpp
gosu-0.7.19 GosuImpl/Audio/AudioFile.hpp
gosu-0.7.18 GosuImpl/Audio/AudioFile.hpp
gosu-0.7.17 GosuImpl/Audio/AudioFile.hpp
gosu-0.7.16 GosuImpl/Audio/AudioFile.hpp