#import <Foundation/Foundation.h>
#pragma mark Audio Unit / Audio Session Debugging
extern NSString *AVStatusCodeAsString(OSStatus status);
extern NSString *AUStatusCodeAsString(OSStatus status);
#define AU_LOG(nslog_string, ...) do {\
NSLog((@"%s[%d] " nslog_string), __func__, __LINE__, ##__VA_ARGS__);\
} while (0)
#if defined(AU_DEBUG_VERBOSE)
#define AU_LOGV(nslog_string, ...) AU_LOG(nslog_string, ##__VA_ARGS__)
#else
#define AU_LOGV(nslog_string, ...)
#endif
#define AU_LOG_IF_ERROR(value, nslog_string, ...) do {\
if (value) {\
NSLog((@"*** ERROR *** %s[%d] " nslog_string), __func__, __LINE__, ##__VA_ARGS__);\
}\
} while (0)
#define AU_RETURN_IF_ERROR(status) do {\
if (status) {\
NSLog(@"*** ERROR *** %s[%d] status code = %@", __func__, __LINE__, AUStatusCodeAsString(status));\
return;\
}\
} while (0)
#define AU_RETURN_FALSE_IF_ERROR(status) do {\
if (status) {\
NSLog(@"*** ERROR *** %s[%d] status code = %@", __func__, __LINE__, AUStatusCodeAsString(status));\
return false;\
}\
} while (0)
#define AU_DISPOSE_IF_ERROR(status, audioUnit) do {\
if (status) {\
AudioComponentInstanceDispose(audioUnit);\
NSLog(@"*** ERROR *** %s[%d] status code = %@", __func__, __LINE__, AUStatusCodeAsString(status));\
return;\
}\
} while (0)
#define AU_DISPOSE_FALSE_IF_ERROR(status, audioUnit) do {\
if (status) {\
AudioComponentInstanceDispose(audioUnit);\
NSLog(@"*** ERROR *** %s[%d] status code = %@", __func__, __LINE__, AUStatusCodeAsString(status));\
return false;\
}\
} while (0)
#pragma mark Math Helpers
extern BOOL floatsAreEqual(Float64 f1, Float64 f2);
extern int log2int(int x);