Filter plug-ins must implement and export the functions defined in filter_plug.h. The interface for the filter plug-in is simple compared to the other types of plug-ins.
ULONG DLLENTRY filter_init ( void **f, FILTER_PARAMS *params ) BOOL DLLENTRY filter_uninit( void *f )
Init function is called when filter plug-in is about to be used. Multiple filter plug-ins are chained, so the pointers to output_play_samples() and it's parameter "a", might belong to another filter plug-in and not necessarily to the active output plug-in.
int DLLENTRY filter_play_samples( void *f, FORMAT_INFO *format, char *buf, int len, int posmarker )
This function is called by the decoder or a previous in chain filter plug-in to filter samples. Note that this function's prototype is identical to output_play_samples. This makes it possible to chain filter plug-ins.
Once you have modified the data in satisfactory way, call the output_play_samples() function with it's parameter "a" received from the init function, and use it with the modified samples of your filter plug-in.