41 lines
938 B
Objective-C
41 lines
938 B
Objective-C
//
|
|
// BadSampleCleaner.m
|
|
// CogAudio Framework
|
|
//
|
|
// Created by Christopher Snowhill on 2/15/22.
|
|
//
|
|
|
|
#ifdef _DEBUG
|
|
#import "BadSampleCleaner.h"
|
|
|
|
#import "Logging.h"
|
|
|
|
@implementation BadSampleCleaner
|
|
|
|
+ (void)cleanSamples:(float *)buffer amount:(NSUInteger)amount location:(NSString *)location {
|
|
BOOL hadNaN = NO;
|
|
BOOL hadINF = NO;
|
|
BOOL hadHUGE = NO;
|
|
|
|
for(NSUInteger i = 0; i < amount; ++i) {
|
|
float sample = buffer[i];
|
|
BOOL isNaN = isnan(sample);
|
|
BOOL isINF = isinf(sample);
|
|
BOOL isHUGE = (fabs(sample) > 2.0);
|
|
hadNaN = hadNaN || isNaN;
|
|
hadINF = hadINF || isINF;
|
|
hadHUGE = hadHUGE || isHUGE;
|
|
if(isNaN || isINF || isHUGE) {
|
|
memset(&buffer[i], 0, sizeof(buffer[i]));
|
|
memset(&sample, 0, sizeof(sample));
|
|
}
|
|
}
|
|
if(hadNaN || hadINF || hadHUGE) {
|
|
DLog(@"Sample block at %@ had NaN: %@, INF: %@, HUGE: %@", location, hadNaN ? @"yes" : @"no", hadINF ? @"yes" : @"no", hadHUGE ? @"yes" : @"no");
|
|
}
|
|
}
|
|
|
|
@end
|
|
|
|
#endif
|