/* FilterArray.h */

#ifndef Included_FilterArray_h
#define Included_FilterArray_h

/* FilterArray module depends on */
/* MiscInfo.h */
/* Audit */
/* Debug */
/* Definitions */
/* Memory */
/* FixedPoint */
/* FilterSpec */
/* FilterFirstOrderLowpass */
/* FilterFirstOrderHighpass */
/* FilterSecondOrderReson */
/* FilterSecondOrderZero */
/* FilterButterworthLowpass */
/* FilterButterworthHighpass */
/* FilterButterworthBandpass */
/* FilterButterworthBandreject */
/* FilterNull */
/* FilterParametricEqualizer */
/* FilterResonantLowpass */

#include "FixedPoint.h"

struct FilterArrayRec;
typedef struct FilterArrayRec FilterArrayRec;

/* forwards */
struct FilterSpecRec;

/* flush cached filter array records */
void							FlushCachedFilterArrayStuff(void);

/* create a new parallel filter processor */
FilterArrayRec*		NewFilterArrayProcessor(struct FilterSpecRec* Template,
										long FramesPerSecond, MyBoolean StereoFlag);

/* dispose of the filter processor */
void							DisposeFilterArrayProcessor(FilterArrayRec* Filters);

/* update filter state with accent information */
void							UpdateFilterArrayState(FilterArrayRec* Filters, float Accent1,
										float Accent2, float Accent3, float Accent4);

/* apply filter processing to some stuff */
void							ApplyFilterArray(largefixedsigned* Data, long NumFrames,
										FilterArrayRec* Filters);

#endif
