mirror of
https://github.com/cookiengineer/audacity
synced 2025-09-18 17:10:55 +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);
|
nToCopy = min((n-bufReadPos),N2-iBufWritePos);
|
||||||
if(nToCopy+iBufWritePos == N2) {
|
if(nToCopy+iBufWritePos == N2) {
|
||||||
if(buf2) {
|
if(buf2) {
|
||||||
memcpy(iBuf+iBufWritePos, buf2+bufReadPos, nToCopy*sizeof(audio));
|
memmove(iBuf+iBufWritePos, buf2+bufReadPos, nToCopy*sizeof(audio));
|
||||||
} else {
|
} else {
|
||||||
memset(iBuf+iBufWritePos, 0, nToCopy*sizeof(audio));
|
memset(iBuf+iBufWritePos, 0, nToCopy*sizeof(audio));
|
||||||
}
|
}
|
||||||
grain *g = grainAllocator.create();
|
grain *g = grainAllocator.create();
|
||||||
memcpy(g->x+xOffset,iBuf,N2*sizeof(audio));
|
memmove(g->x+xOffset,iBuf,N2*sizeof(audio));
|
||||||
write(g);
|
write(g);
|
||||||
ng++;
|
ng++;
|
||||||
memcpy(iBuf,iBuf+h,overlap*sizeof(audio));
|
memmove(iBuf,iBuf+h,overlap*sizeof(audio));
|
||||||
iBufWritePos = overlap;
|
iBufWritePos = overlap;
|
||||||
bufReadPos += nToCopy;
|
bufReadPos += nToCopy;
|
||||||
} else break;
|
} else break;
|
||||||
}
|
}
|
||||||
nToCopy = min((n-bufReadPos),N2-iBufWritePos);
|
nToCopy = min((n-bufReadPos),N2-iBufWritePos);
|
||||||
if(buf2) {
|
if(buf2) {
|
||||||
memcpy(iBuf+iBufWritePos, buf2+bufReadPos, nToCopy*sizeof(audio));
|
memmove(iBuf+iBufWritePos, buf2+bufReadPos, nToCopy*sizeof(audio));
|
||||||
} else {
|
} else {
|
||||||
memset(iBuf+iBufWritePos, 0, nToCopy*sizeof(audio));
|
memset(iBuf+iBufWritePos, 0, nToCopy*sizeof(audio));
|
||||||
}
|
}
|
||||||
@ -98,7 +98,7 @@ void GrainBuf :: advance(long n)
|
|||||||
}
|
}
|
||||||
readPos += n;
|
readPos += n;
|
||||||
if(readPos >= length) {
|
if(readPos >= length) {
|
||||||
memcpy(buf,buf+readPos,(writePos-readPos)*sizeof(grain*));
|
memmove(buf,buf+readPos,(writePos-readPos)*sizeof(grain*));
|
||||||
writePos = writePos - readPos;
|
writePos = writePos - readPos;
|
||||||
readPos = 0;
|
readPos = 0;
|
||||||
}
|
}
|
||||||
@ -119,7 +119,7 @@ void GrainBuf :: write(grain *g)
|
|||||||
if(writePos >= length<<1) {
|
if(writePos >= length<<1) {
|
||||||
length <<= 1;
|
length <<= 1;
|
||||||
grain **newBuf = (grain**)calloc((length<<1),sizeof(grain*));
|
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);
|
free(buf);
|
||||||
buf = newBuf;
|
buf = newBuf;
|
||||||
writePos -= readPos;
|
writePos -= readPos;
|
||||||
|
@ -59,7 +59,7 @@ long RingBuffer<T> :: write(T a)
|
|||||||
if(writePos >= 2*length) {
|
if(writePos >= 2*length) {
|
||||||
length *= 2;
|
length *= 2;
|
||||||
T *newBuf = (T*) calloc(2*length,sizeof(T));
|
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);
|
free(buf);
|
||||||
buf = newBuf;
|
buf = newBuf;
|
||||||
writePos -= readPos;
|
writePos -= readPos;
|
||||||
@ -92,7 +92,7 @@ void RingBuffer<T> :: advance(long n)
|
|||||||
{
|
{
|
||||||
readPos += n;
|
readPos += n;
|
||||||
if(readPos >= length) {
|
if(readPos >= length) {
|
||||||
memcpy(buf,buf+readPos,(writePos-readPos)*sizeof(T));
|
memmove(buf,buf+readPos,(writePos-readPos)*sizeof(T));
|
||||||
writePos = writePos - readPos;
|
writePos = writePos - readPos;
|
||||||
readPos = 0;
|
readPos = 0;
|
||||||
}
|
}
|
||||||
@ -161,7 +161,7 @@ template<class T>
|
|||||||
void ArrayRingBuffer<T> :: write(T *in, long n)
|
void ArrayRingBuffer<T> :: write(T *in, long n)
|
||||||
{
|
{
|
||||||
grow(n);
|
grow(n);
|
||||||
if(in) memcpy(buf+writePos,in,n*sizeof(T));
|
if(in) memmove(buf+writePos,in,n*sizeof(T));
|
||||||
writePos += n;
|
writePos += n;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -172,7 +172,7 @@ void ArrayRingBuffer<T> :: grow(long n)
|
|||||||
while(pos >= 2*length) {
|
while(pos >= 2*length) {
|
||||||
length *= 2;
|
length *= 2;
|
||||||
T *newBuf = (T*)calloc(2*length,sizeof(T));
|
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);
|
free(buf);
|
||||||
buf = newBuf;
|
buf = newBuf;
|
||||||
writePos -= readPos;
|
writePos -= readPos;
|
||||||
@ -185,7 +185,7 @@ template<class T>
|
|||||||
void ArrayRingBuffer<T> :: read(T *outBuf, long n)
|
void ArrayRingBuffer<T> :: read(T *outBuf, long n)
|
||||||
{
|
{
|
||||||
n = max(0L,min(n,nReadable()));
|
n = max(0L,min(n,nReadable()));
|
||||||
memcpy(outBuf,buf+readPos,n*sizeof(T));
|
memmove(outBuf,buf+readPos,n*sizeof(T));
|
||||||
advance(n);
|
advance(n);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -202,7 +202,7 @@ void ArrayRingBuffer<T> :: advance(long n) {
|
|||||||
if(readPos >= length) {
|
if(readPos >= length) {
|
||||||
long endPos;
|
long endPos;
|
||||||
endPos = writePos+N;
|
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));
|
memset(buf+readPos,0,((length<<1)-readPos)*sizeof(T));
|
||||||
writePos -= readPos;
|
writePos -= readPos;
|
||||||
readPos = 0;
|
readPos = 0;
|
||||||
|
@ -1548,7 +1548,7 @@ void SMS :: add(grain *g0, grain *g1, grain *g2, int c)
|
|||||||
}
|
}
|
||||||
slice->top = p;
|
slice->top = p;
|
||||||
prev = p;
|
prev = p;
|
||||||
p->xtn2 = maxK;
|
p->xtn2 = (float)maxK;
|
||||||
bTroughN1 = true;
|
bTroughN1 = true;
|
||||||
bTroughN2 = true;
|
bTroughN2 = true;
|
||||||
p->xtp2 = xt2;
|
p->xtp2 = xt2;
|
||||||
@ -1594,10 +1594,10 @@ void SMS :: add(grain *g0, grain *g1, grain *g2, int c)
|
|||||||
*/
|
*/
|
||||||
}
|
}
|
||||||
if(bTroughN2) {
|
if(bTroughN2) {
|
||||||
prev->xtn2 = kEnd;
|
prev->xtn2 = (float)kEnd;
|
||||||
}
|
}
|
||||||
if(!bX1 && !hi) {
|
if(!bX1 && !hi) {
|
||||||
x1 = kEnd;
|
x1 = (float)kEnd;
|
||||||
y1 = mag2[kEnd];
|
y1 = mag2[kEnd];
|
||||||
bX1 = true;
|
bX1 = true;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user