00001 #ifndef __IAudioFileFormat__ 00002 #define __IAudioFileFormat__ 00003 00004 #include <Collections/CollectionTypedef.h> 00005 #include <Basics/CSystemString.hpp> 00006 #include <IO/CFileStream.hpp> 00007 #include "TAudioBuffer.hpp" 00008 using Exponent::Audio::TAudioBuffer; 00009 using Exponent::IO::CFileStream; 00010 using Exponent::Basics::CSystemString; 00011 using Exponent::Collections::TStringCountedPointerArray; 00012 00013 // =========================================================================== 00014 00015 namespace Exponent 00016 { 00017 namespace Audio 00018 { 00019 00020 // =========================================================================== 00021 00109 template<typename TypeName> interface IAudioFileFormat 00110 { 00111 public: 00112 00113 // =========================================================================== 00114 00119 struct SAudioFileFormat 00120 { 00121 unsigned long m_sampleRate; 00122 unsigned long m_numberOfChannels; 00123 unsigned long m_numberOfSamples; 00124 unsigned long m_bitDepth; 00125 }; 00126 00127 // =========================================================================== 00128 00133 enum EBitDepth 00134 { 00135 e_eightBit = 8, 00136 e_sixteenBit = 16, 00137 e_twentyFourBit = 24, 00138 }; 00139 00140 // =========================================================================== 00141 00145 IAudioFileFormat() { } 00146 00150 virtual ~IAudioFileFormat() { } 00151 00152 // =========================================================================== 00153 00160 virtual bool openFile(CFileStream::EStreamMode mode, const CSystemString &filename) = 0; 00161 00166 virtual bool closeFile() = 0; 00167 00168 // =========================================================================== 00169 00174 virtual void getFileExtension(TStringCountedPointerArray &array) const = 0; 00175 00181 virtual bool isValidFormat(const CSystemString &filename) const = 0; 00182 00183 // =========================================================================== 00184 00190 virtual bool readHeader(SAudioFileFormat &format) = 0; 00191 00197 virtual bool readData(TAudioBuffer< TypeName > &data) = 0; 00198 00199 // =========================================================================== 00200 00206 virtual bool writeHeader(const SAudioFileFormat &format) = 0; 00207 00213 virtual bool writeData(const TAudioBuffer< TypeName > &data) = 0; 00214 00215 // =========================================================================== 00216 }; 00217 } 00218 } 00219 #endif // End of IAudioFileFormat.hpp