fixed strict aliasing violation
git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@1659 0778d3d1-df1d-0410-868b-ea421aaaa00d
This commit is contained in:
@@ -33,7 +33,7 @@ inline float allpass::process(float input)
|
||||
float bufout;
|
||||
|
||||
bufout = buffer[bufidx];
|
||||
undenormalise(bufout);
|
||||
undenormalise(&bufout);
|
||||
|
||||
output = -input + bufout;
|
||||
buffer[bufidx] = input + (bufout*feedback);
|
||||
|
||||
@@ -38,10 +38,10 @@ inline float comb::process(float input)
|
||||
float output;
|
||||
|
||||
output = buffer[bufidx];
|
||||
undenormalise(output);
|
||||
undenormalise(&output);
|
||||
|
||||
filterstore = (output*damp2) + (filterstore*damp1);
|
||||
undenormalise(filterstore);
|
||||
undenormalise(&filterstore);
|
||||
|
||||
buffer[bufidx] = input + (filterstore*feedback);
|
||||
|
||||
|
||||
@@ -8,7 +8,12 @@
|
||||
#ifndef _denormals_
|
||||
#define _denormals_
|
||||
|
||||
#define undenormalise(sample) if(((*(unsigned int*)&sample)&0x7f800000)==0) sample=0.0f
|
||||
/*#define undenormalise(sample) if(((*(unsigned int*)&sample)&0x7f800000)==0) sample=0.0f*/
|
||||
static void inline undenormalise(float *sample)
|
||||
{
|
||||
if (((*(unsigned int*)sample) & 0x7f800000) == 0)
|
||||
*sample = 0.0f;
|
||||
}
|
||||
|
||||
#endif//_denormals_
|
||||
|
||||
|
||||
Reference in New Issue
Block a user