Audio Effects Framework
AudioFileIf.h
Go to the documentation of this file.
1 #if !defined(__AudioFileIf_hdr__)
2 #define __AudioFileIf_hdr__
3 
4 #include <string>
5 #include <fstream>
6 #include <algorithm>
7 #include "ErrorDef.h"
8 
12 {
13 public:
15  {
16  kFileRead = 0x1L,
17  kFileWrite = 0x2L,
18 
20  };
22  {
27 
29  };
31  {
35 
37  };
38  struct FileSpec_t
39  {
44  };
45 
50  static Error_t create (CAudioFileIf*& pCInstance);
55  static Error_t destroy (CAudioFileIf*& pCInstance);
60  virtual Error_t reset (bool bFreeMemory = false);
61 
68  virtual Error_t openFile (std::string cAudioFileName, FileIoType_t eIoType, FileSpec_t const *psFileSpec = 0) = 0;
72  virtual Error_t closeFile () = 0;
73 
79  virtual Error_t readData (float **ppfAudioData, long long int &iNumFrames);
80 
86  virtual Error_t writeData (float **ppfAudioData, long long int iNumFrames);
87 
92  Error_t getFileSpec (FileSpec_t &sFileSpec);
93 
98  virtual Error_t setPosition (long long iFrame = 0);
103  Error_t setPosition (double dTimeInS = .0);
104 
109  Error_t setClippingEnabled (bool bIsEnabled = true);
113  bool isClippingEnabled () {return m_bWithClipping;};
114 
119  Error_t getPosition (long long &iFrame);
124  Error_t getPosition (double &dTimeInS);
129  Error_t getLength (long long &iLengthInFrames) ;
134  Error_t getLength (double &dLengthInSeconds) ;
135 
139  virtual bool isEof () = 0;
143  virtual bool isOpen () = 0;
147  virtual bool isInitialized ();
148 
149 protected:
150 
151  CAudioFileIf ();
152  virtual ~CAudioFileIf ();
153  virtual Error_t freeMemory ();
154  virtual Error_t allocMemory ();
155 
156  Error_t setInitialized (bool bInitialized = true);
157  Error_t setIoType (FileIoType_t eIoType);
158  FileIoType_t getIoType () const;
159  Error_t setFileSpec (const FileSpec_t *pFileSpec);
160  int getNumChannels () const;
161  long long convFrames2Bytes (long long iNumFrames);
162  long long convBytes2Frames (long long iNumFrames);
163  Error_t setNumBytesPerSample (int iNumBytes);
164  int getNumBytesPerSample () const;
165  int getNumBitsPerSample () const {return (m_iNumBytesPerSample<<3);}
166 
167  float clip2Range(float fSample2Clip, float fMin, float fMax)
168  {
169  fSample2Clip = std::min (fSample2Clip, fMax);
170  fSample2Clip = std::max (fSample2Clip, fMin);
171  return fSample2Clip;
172  }
173 
174  static const long long int m_kiDefBlockLength;
175 
176 private:
177  CAudioFileIf(const CAudioFileIf& that);
178  virtual Error_t initDefaults ();
179 
180  virtual long long int readDataIntern (float **ppfAudioData, long long int iLength) = 0;
181  virtual long long int writeDataIntern (float **ppfAudioData, long long int iLength) = 0;
182  virtual long long getLengthIntern() = 0;
183  virtual long long getPositionIntern() = 0;
184  virtual Error_t setPositionIntern( long long iFrame ) = 0;
185 
186  FileSpec_t m_CurrFileSpec;
187  FileIoType_t m_eIoType;
188 
189  bool m_bWithClipping;
190  bool m_bIsInitialized;
191  int m_iNumBytesPerSample;
192 
193 };
194 
195 #endif // #if !defined(__AudioFileIf_hdr__)
CAudioFileIf::FileSpec_t::eBitStreamType
BitStream_t eBitStreamType
word length and sample type
Definition: AudioFileIf.h:41
CAudioFileIf::reset
virtual Error_t reset(bool bFreeMemory=false)
Definition: AudioFileIf.cpp:50
CAudioFileIf::writeData
virtual Error_t writeData(float **ppfAudioData, long long int iNumFrames)
Definition: AudioFileIf.cpp:119
CAudioFileIf::setInitialized
Error_t setInitialized(bool bInitialized=true)
Definition: AudioFileIf.cpp:261
CAudioFileIf::kFileWrite
@ kFileWrite
open file for writing
Definition: AudioFileIf.h:17
CAudioFileIf::kFileFormatWav
@ kFileFormatWav
file is wav riff format (not available without sndlib)
Definition: AudioFileIf.h:24
CAudioFileIf::kFileFormatUnknown
@ kFileFormatUnknown
file format is unknown
Definition: AudioFileIf.h:26
CAudioFileIf::m_kiDefBlockLength
static const long long int m_kiDefBlockLength
buffer length for read and write operations
Definition: AudioFileIf.h:174
CAudioFileIf::isClippingEnabled
bool isClippingEnabled()
Definition: AudioFileIf.h:113
CAudioFileIf::convFrames2Bytes
long long convFrames2Bytes(long long iNumFrames)
Definition: AudioFileIf.cpp:142
CAudioFileIf::BitStream_t
BitStream_t
Definition: AudioFileIf.h:31
CAudioFileIf::create
static Error_t create(CAudioFileIf *&pCInstance)
Definition: AudioFileIf.cpp:15
CAudioFileIf::kFileFormatRaw
@ kFileFormatRaw
file is raw pcm format
Definition: AudioFileIf.h:23
CAudioFileIf::convBytes2Frames
long long convBytes2Frames(long long iNumFrames)
Definition: AudioFileIf.cpp:147
CAudioFileIf::~CAudioFileIf
virtual ~CAudioFileIf()
Definition: AudioFileIf.cpp:46
CAudioFileIf::destroy
static Error_t destroy(CAudioFileIf *&pCInstance)
Definition: AudioFileIf.cpp:29
CAudioFileIf::setPosition
virtual Error_t setPosition(long long iFrame=0)
Definition: AudioFileIf.cpp:165
CAudioFileIf::FileIoType_t
FileIoType_t
Definition: AudioFileIf.h:15
CAudioFileIf::getNumChannels
int getNumChannels() const
Definition: AudioFileIf.cpp:285
CAudioFileIf::FileSpec_t
Definition: AudioFileIf.h:39
CAudioFileIf::getNumBitsPerSample
int getNumBitsPerSample() const
Definition: AudioFileIf.h:165
CAudioFileIf::FileFormat_t
FileFormat_t
Definition: AudioFileIf.h:22
CAudioFileIf::setFileSpec
Error_t setFileSpec(const FileSpec_t *pFileSpec)
Definition: AudioFileIf.cpp:279
CAudioFileIf::allocMemory
virtual Error_t allocMemory()
Definition: AudioFileIf.cpp:75
CAudioFileIf::kFileRead
@ kFileRead
open file for reading
Definition: AudioFileIf.h:16
CAudioFileIf::getFileSpec
Error_t getFileSpec(FileSpec_t &sFileSpec)
Definition: AudioFileIf.cpp:152
CAudioFileIf::setIoType
Error_t setIoType(FileIoType_t eIoType)
Definition: AudioFileIf.cpp:268
CAudioFileIf::getNumBytesPerSample
int getNumBytesPerSample() const
Definition: AudioFileIf.cpp:297
CAudioFileIf::kNumWordLengths
@ kNumWordLengths
Definition: AudioFileIf.h:36
CAudioFileIf::freeMemory
virtual Error_t freeMemory()
Definition: AudioFileIf.cpp:70
CAudioFileIf::getPosition
Error_t getPosition(long long &iFrame)
Definition: AudioFileIf.cpp:206
CAudioFileIf
open, read, and write audio files
Definition: AudioFileIf.h:12
CAudioFileIf::FileSpec_t::eFormat
FileFormat_t eFormat
file format (wav, aiff, raw)
Definition: AudioFileIf.h:40
CAudioFileIf::getIoType
FileIoType_t getIoType() const
Definition: AudioFileIf.cpp:274
CAudioFileIf::isEof
virtual bool isEof()=0
CAudioFileIf::kFileBitStreamInt16
@ kFileBitStreamInt16
a sample is two byte (int16)
Definition: AudioFileIf.h:32
CAudioFileIf::kNumFileFormats
@ kNumFileFormats
Definition: AudioFileIf.h:28
CAudioFileIf::readData
virtual Error_t readData(float **ppfAudioData, long long int &iNumFrames)
Definition: AudioFileIf.cpp:97
CAudioFileIf::isInitialized
virtual bool isInitialized()
Definition: AudioFileIf.cpp:256
CAudioFileIf::openFile
virtual Error_t openFile(std::string cAudioFileName, FileIoType_t eIoType, FileSpec_t const *psFileSpec=0)=0
CAudioFileIf::clip2Range
float clip2Range(float fSample2Clip, float fMin, float fMax)
Definition: AudioFileIf.h:167
CAudioFileIf::setClippingEnabled
Error_t setClippingEnabled(bool bIsEnabled=true)
Definition: AudioFileIf.cpp:159
CAudioFileIf::FileSpec_t::fSampleRateInHz
float fSampleRateInHz
sample rate in Hz
Definition: AudioFileIf.h:43
CAudioFileIf::kFileFormatAiff
@ kFileFormatAiff
file is aiff format (not available without sndlib)
Definition: AudioFileIf.h:25
CAudioFileIf::kFileBitStreamFloat32
@ kFileBitStreamFloat32
a sample is four byte (float32) (not available without sndlib)
Definition: AudioFileIf.h:33
CAudioFileIf::FileSpec_t::iNumChannels
int iNumChannels
number of audio channels
Definition: AudioFileIf.h:42
CAudioFileIf::CAudioFileIf
CAudioFileIf()
Definition: AudioFileIf.cpp:37
CAudioFileIf::closeFile
virtual Error_t closeFile()=0
CAudioFileIf::kFileBitStreamUnknown
@ kFileBitStreamUnknown
word length is unknown
Definition: AudioFileIf.h:34
CAudioFileIf::kNumFileOpenTypes
@ kNumFileOpenTypes
Definition: AudioFileIf.h:19
CAudioFileIf::setNumBytesPerSample
Error_t setNumBytesPerSample(int iNumBytes)
Definition: AudioFileIf.cpp:290
CAudioFileIf::getLength
Error_t getLength(long long &iLengthInFrames)
Definition: AudioFileIf.cpp:189
CAudioFileIf::isOpen
virtual bool isOpen()=0