00001 // Copyright (c) 2008-2010 Raynaldo (Wildicv) Rivera, Joshua (Dark_Kilauea) Jones 00002 // This file is part of the "cAudio Engine" 00003 // For conditions of distribution and use, see copyright notice in cAudio.h 00004 00005 #ifndef IAUDIODECODER_H 00006 #define IAUDIODECODER_H 00007 00008 #include "IRefCounted.h" 00009 #include "IDataSource.h" 00010 #include "EAudioFormats.h" 00011 00012 namespace cAudio 00013 { 00015 class IAudioDecoder : public IRefCounted 00016 { 00017 public: 00019 00020 IAudioDecoder(IDataSource* stream) : Stream(stream) { if(Stream) Stream->grab(); } 00021 virtual ~IAudioDecoder() { if(Stream) Stream->drop(); } 00022 00024 virtual AudioFormats getFormat() = 0; 00025 00027 virtual int getFrequency() = 0; 00028 00030 virtual bool isSeekingSupported() = 0; 00031 00033 virtual bool isValid() = 0; 00034 00036 00040 virtual int readAudioData(void* output, int amount) = 0; 00041 00043 00047 virtual bool setPosition(int position, bool relative) = 0; 00048 00050 00054 virtual bool seek(float seconds, bool relative) = 0; 00055 00057 virtual float getTotalTime() = 0; 00058 00060 virtual int getTotalSize() = 0; 00061 00063 virtual int getCompressedSize() = 0; 00064 00066 virtual float getCurrentTime() = 0; 00067 00069 virtual int getCurrentPosition() = 0; 00070 00072 virtual int getCurrentCompressedPosition() = 0; 00073 protected: 00075 IDataSource* Stream; 00076 }; 00077 }; 00078 00079 #endif
1.6.2