55 CLAM_WARNING(
false,
"Audio::SetEndTime is about to be deprecated. Please use Audio::ResizeToEndTime instead");
61 const int newsizeRound =
Round((time-GetBeginTime())/1000.0*GetSampleRate());
67 CLAM_ASSERT(HasBuffer(),
"Audio::SetSize(int) needs a buffer (HasBuffer()==1)");
68 CLAM_ASSERT(newSize>=0,
"Audio::SetSize(): Negative size specified");
70 if (newSize==oldSize)
return;
71 int physicalSize = GetBuffer().AllocatedSize();
72 if (newSize>physicalSize)
73 GetBuffer().Resize(newSize);
74 GetBuffer().SetSize(newSize);
75 if(newSize<=oldSize)
return;
76 memset(GetBuffer().GetPtr()+oldSize,0,(newSize-oldSize)*
sizeof(
TData));
81 CLAM_WARNING(
false,
"Audio::SetDuration is about to be deprecated. Please use Audio::ResizeToDuration instead");
87 SetSize(GetIndexFromTime(duration));
92 return (
TTime)((
TTime)index / GetSampleRate()*1000.0 );
97 return Round(time*((
TData)GetSampleRate()/1000.0));
102 GetAudioChunk(GetIndexFromTime(beginTime),GetIndexFromTime(endTime),chunk, configureChunk);
107 GetAudioSlice(GetIndexFromTime(beginTime),GetIndexFromTime(endTime),slice, configureSlice);
114 CLAM_ASSERT( beginIndex >=0,
"Negative indexes are not allowed for audio slices" );
118 TIndex size=endIndex-beginIndex;
121 tmpArray.
SetPtr( GetBuffer().GetPtr() + beginIndex );
123 slice.SetBuffer( tmpArray );
127 slice.SetBeginTime(GetTimeFromIndex(beginIndex));
128 slice.SetSampleRate( GetSampleRate() );
129 slice.GetBuffer().
SetSize(size);
131 CLAM_ASSERT(HasBuffer(),
"Audio::GetAudioChunk: Buffer not initialized");
140 "Audio::GetAudioChunk: Incorrect index boundaries for audio chunk");
141 TSize nBytesToCopy,offset=0;
144 TIndex size=endIndex-beginIndex;
145 if(configureChunk) chunk.
SetSize(size);
147 memset(chunk.GetBuffer().GetPtr(),0,size*
sizeof(
TData));
151 chunk.SetBeginTime(GetTimeFromIndex(beginIndex));
155 chunk.SetSampleRate( GetSampleRate() );
156 TIndex size=endIndex-beginIndex;
158 chunk.SetSampleRate( GetSampleRate() );
159 chunk.SetBeginTime( GetTimeFromIndex(beginIndex) );
163 CLAM_ASSERT(HasBuffer(),
"Audio::GetAudioChunk: Buffer not initialized");
173 memset(chunk.GetBuffer().GetPtr(),0,offset*
sizeof(
TData));
178 memset(chunk.GetBuffer().GetPtr()+
GetSize()-beginIndex ,0,ending*
sizeof(
TData));
183 nBytesToCopy=(endIndex-beginIndex)*
sizeof(
TData);
188 &&
int(nBytesToCopy+beginIndex*
sizeof(
TData))<=GetBuffer().SizeInBytes(),
191 memcpy(chunk.GetBuffer().GetPtr()+offset,GetBuffer().GetPtr()+beginIndex,nBytesToCopy);
202 TSize nBytesToCopy,offset=0;
209 CLAM_ASSERT(chunk.HasBuffer()&&HasBuffer(),
"Audio::SetAudioChunk: one of the buffers is not initialized") ;
210 nBytesToCopy=(endIndex-beginIndex)*
sizeof(
TData);
211 memcpy(GetBuffer().GetPtr()+beginIndex,chunk.GetBuffer().GetPtr()+offset,nBytesToCopy);