mirror of
https://github.com/cookiengineer/audacity
synced 2025-04-30 15:49:41 +02:00
Applied Clayton's patch to fix http://bugzilla.audacityteam.org/show_bug.cgi?id=482 (P2).
Also fixed some data type conversion compile warnings in sms.cpp.
This commit is contained in:
parent
67d41f1144
commit
e45c780953
@ -66,22 +66,22 @@ long GrainBuf :: write(audio *buf2, long n)
|
||||
nToCopy = min((n-bufReadPos),N2-iBufWritePos);
|
||||
if(nToCopy+iBufWritePos == N2) {
|
||||
if(buf2) {
|
||||
memcpy(iBuf+iBufWritePos, buf2+bufReadPos, nToCopy*sizeof(audio));
|
||||
memmove(iBuf+iBufWritePos, buf2+bufReadPos, nToCopy*sizeof(audio));
|
||||
} else {
|
||||
memset(iBuf+iBufWritePos, 0, nToCopy*sizeof(audio));
|
||||
}
|
||||
grain *g = grainAllocator.create();
|
||||
memcpy(g->x+xOffset,iBuf,N2*sizeof(audio));
|
||||
memmove(g->x+xOffset,iBuf,N2*sizeof(audio));
|
||||
write(g);
|
||||
ng++;
|
||||
memcpy(iBuf,iBuf+h,overlap*sizeof(audio));
|
||||
memmove(iBuf,iBuf+h,overlap*sizeof(audio));
|
||||
iBufWritePos = overlap;
|
||||
bufReadPos += nToCopy;
|
||||
} else break;
|
||||
}
|
||||
nToCopy = min((n-bufReadPos),N2-iBufWritePos);
|
||||
if(buf2) {
|
||||
memcpy(iBuf+iBufWritePos, buf2+bufReadPos, nToCopy*sizeof(audio));
|
||||
memmove(iBuf+iBufWritePos, buf2+bufReadPos, nToCopy*sizeof(audio));
|
||||
} else {
|
||||
memset(iBuf+iBufWritePos, 0, nToCopy*sizeof(audio));
|
||||
}
|
||||
@ -98,7 +98,7 @@ void GrainBuf :: advance(long n)
|
||||
}
|
||||
readPos += n;
|
||||
if(readPos >= length) {
|
||||
memcpy(buf,buf+readPos,(writePos-readPos)*sizeof(grain*));
|
||||
memmove(buf,buf+readPos,(writePos-readPos)*sizeof(grain*));
|
||||
writePos = writePos - readPos;
|
||||
readPos = 0;
|
||||
}
|
||||
@ -119,7 +119,7 @@ void GrainBuf :: write(grain *g)
|
||||
if(writePos >= length<<1) {
|
||||
length <<= 1;
|
||||
grain **newBuf = (grain**)calloc((length<<1),sizeof(grain*));
|
||||
memcpy(newBuf,buf+readPos,(writePos-readPos)*sizeof(grain*));
|
||||
memmove(newBuf,buf+readPos,(writePos-readPos)*sizeof(grain*));
|
||||
free(buf);
|
||||
buf = newBuf;
|
||||
writePos -= readPos;
|
||||
|
@ -59,7 +59,7 @@ long RingBuffer<T> :: write(T a)
|
||||
if(writePos >= 2*length) {
|
||||
length *= 2;
|
||||
T *newBuf = (T*) calloc(2*length,sizeof(T));
|
||||
memcpy(newBuf,buf+readPos,(writePos-readPos)*sizeof(T));
|
||||
memmove(newBuf,buf+readPos,(writePos-readPos)*sizeof(T));
|
||||
free(buf);
|
||||
buf = newBuf;
|
||||
writePos -= readPos;
|
||||
@ -92,7 +92,7 @@ void RingBuffer<T> :: advance(long n)
|
||||
{
|
||||
readPos += n;
|
||||
if(readPos >= length) {
|
||||
memcpy(buf,buf+readPos,(writePos-readPos)*sizeof(T));
|
||||
memmove(buf,buf+readPos,(writePos-readPos)*sizeof(T));
|
||||
writePos = writePos - readPos;
|
||||
readPos = 0;
|
||||
}
|
||||
@ -161,7 +161,7 @@ template<class T>
|
||||
void ArrayRingBuffer<T> :: write(T *in, long n)
|
||||
{
|
||||
grow(n);
|
||||
if(in) memcpy(buf+writePos,in,n*sizeof(T));
|
||||
if(in) memmove(buf+writePos,in,n*sizeof(T));
|
||||
writePos += n;
|
||||
}
|
||||
|
||||
@ -172,7 +172,7 @@ void ArrayRingBuffer<T> :: grow(long n)
|
||||
while(pos >= 2*length) {
|
||||
length *= 2;
|
||||
T *newBuf = (T*)calloc(2*length,sizeof(T));
|
||||
memcpy(newBuf,buf+readPos,(length-readPos)*sizeof(T));
|
||||
memmove(newBuf,buf+readPos,(length-readPos)*sizeof(T));
|
||||
free(buf);
|
||||
buf = newBuf;
|
||||
writePos -= readPos;
|
||||
@ -185,7 +185,7 @@ template<class T>
|
||||
void ArrayRingBuffer<T> :: read(T *outBuf, long n)
|
||||
{
|
||||
n = max(0L,min(n,nReadable()));
|
||||
memcpy(outBuf,buf+readPos,n*sizeof(T));
|
||||
memmove(outBuf,buf+readPos,n*sizeof(T));
|
||||
advance(n);
|
||||
}
|
||||
|
||||
@ -202,7 +202,7 @@ void ArrayRingBuffer<T> :: advance(long n) {
|
||||
if(readPos >= length) {
|
||||
long endPos;
|
||||
endPos = writePos+N;
|
||||
memcpy(buf,buf+readPos,(endPos-readPos)*sizeof(T));
|
||||
memmove(buf,buf+readPos,(endPos-readPos)*sizeof(T));
|
||||
memset(buf+readPos,0,((length<<1)-readPos)*sizeof(T));
|
||||
writePos -= readPos;
|
||||
readPos = 0;
|
||||
|
@ -1548,7 +1548,7 @@ void SMS :: add(grain *g0, grain *g1, grain *g2, int c)
|
||||
}
|
||||
slice->top = p;
|
||||
prev = p;
|
||||
p->xtn2 = maxK;
|
||||
p->xtn2 = (float)maxK;
|
||||
bTroughN1 = true;
|
||||
bTroughN2 = true;
|
||||
p->xtp2 = xt2;
|
||||
@ -1594,10 +1594,10 @@ void SMS :: add(grain *g0, grain *g1, grain *g2, int c)
|
||||
*/
|
||||
}
|
||||
if(bTroughN2) {
|
||||
prev->xtn2 = kEnd;
|
||||
prev->xtn2 = (float)kEnd;
|
||||
}
|
||||
if(!bX1 && !hi) {
|
||||
x1 = kEnd;
|
||||
x1 = (float)kEnd;
|
||||
y1 = mag2[kEnd];
|
||||
bX1 = true;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user