00001 #ifndef AUDIOUTIL_H
00002 #define AUDIOUTIL_H
00003
00004 #include <sndfile.h>
00005
00006 #include <stdio.h>
00007 #include <stdlib.h>
00008 #include <math.h>
00009
00010 #include <string>
00011 #include <vector>
00012
00013
00014
00015
00016
00017
00018 #define MAX_CHANNELS 2
00019
00020 using namespace std;
00021
00022
00023
00024
00025
00026
00027 class AudioUtil
00028 {
00029
00030 public:
00031 AudioUtil();
00032 AudioUtil(string filePath);
00033 ~AudioUtil();
00034 bool setFile(string filePath);
00035 int getNumChannels();
00036 int getSampleRate();
00037 int getTotalFrames();
00038 vector<double> calculateNormalizedPeaks();
00039 vector<double> grabFrame(int frameIndex);
00040 vector<double> peakForRegion(int region_start_frame, int region_end_frame);
00041 vector<double> getAllFrames();
00042 enum FileHandlingMode {FULL_CACHE, DISK_MODE};
00043 FileHandlingMode getFileHandlingMode();
00044 void setFileHandlingMode(FileHandlingMode mode);
00045
00046 private:
00047 double data [MAX_CHANNELS];
00048 FileHandlingMode fileHandlingMode;
00049 string srcFilePath;
00050 SNDFILE *sndFile;
00051 SF_INFO *sfinfo;
00052 bool sndFileNotEmpty;
00053 vector<double> peaks;
00054 vector<double> regionPeak;
00055 vector<double> fileCache;
00056 int readcount;
00057 vector<double> dataVector;
00058 void populateCache();
00059
00060 };
00061
00062 #endif // AUDIOUTIL_H