#pragma once

#include <Thread.h>

namespace GSL
{
    class GSLSoundV : protected Framework::Thread
    {
    public:
        virtual ~GSLSoundV()
        {}
        virtual void playSound() = 0;
        virtual void setPause( bool p ) = 0;
        virtual void stopSound() = 0;
        virtual void warteAufSound( int zeit ) = 0;
        // Lautstärke: 0 - 0xFFFF
        virtual void setVolume( unsigned int links, unsigned int rechts ) = 0;
        // zum Speichern
        virtual void open() = 0;
        virtual int getDaten( char *buffer, int len ) = 0;
        virtual void close() = 0;
        virtual bool istMono() const = 0;
        virtual int getSampleRate() const = 0;
        virtual __int64 getDatLength() const = 0;
        // Reference Counting
        virtual GSLSoundV *getThis() = 0;
        virtual GSLSoundV *release() = 0;
    };
}