00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef _AUDIO_HXX
00023 #define _AUDIO_HXX
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033 #include "DynamicType.hxx"
00034 #include "Array.hxx"
00035 #include "ProcessingData.hxx"
00036 #include "ProcessingDataConfig.hxx"
00037 #include "DataTypes.hxx"
00038
00039 namespace CLAM {
00040
00041
00047 class Audio: public ProcessingData {
00048 public:
00049 DYNAMIC_TYPE_USING_INTERFACE (Audio, 3, ProcessingData);
00050
00052 DYN_ATTRIBUTE (0, public, TData, SampleRate);
00054 DYN_ATTRIBUTE (1, public, TTime, BeginTime);
00056 DYN_ATTRIBUTE (2, public, DataArray, Buffer);
00057
00058 protected:
00059
00060 void DefaultInit();
00061
00062 public:
00063
00064
00066 int GetSize() const {return GetBuffer().Size();}
00067
00070 TTime GetEndTime() const {return GetBeginTime()+GetTimeFromIndex(GetSize());}
00071
00074 TTime GetDuration() const {return GetTimeFromIndex(GetSize());}
00075
00081 void SetSize(int s);
00082
00086 void SetEndTime(TTime time);
00087
00094 void ResizeToEndTime(TTime time);
00095
00099 void SetDuration(TTime duration);
00100
00108 void ResizeToDuration(TTime duration);
00109
00116 void GetAudioChunk(TTime beginTime, TTime endTime,Audio& chunk,bool configureChunk=true) const;
00117
00124 void GetAudioChunk(TIndex beginIndex,TIndex endIndex,Audio& chunk, bool configureChunk=true) const;
00125
00134 void GetAudioSlice(TTime beginTime, TTime endTime,Audio& slice,bool configureSlice=true) const;
00135
00136
00144 void GetAudioSlice( TIndex beginIndex, TIndex endIndex, Audio& slice, bool configureSlice=true) const;
00145
00150 void SetAudioChunk(TTime beginTime,const Audio& chunk);
00151
00156 void SetAudioChunk(TIndex beginIndex,const Audio& chunk);
00157
00158 private:
00163 TTime GetTimeFromIndex(TIndex index) const;
00164
00169 TIndex GetIndexFromTime(TTime time) const;
00170 };
00171 };
00172
00173 #endif
00174