shithub: libsamplerate

Download patch

ref: 7f461a3cdc62393c84bbad03e7514e597fb89689
parent: 183610fcad977f4fead56178cf731a2e1c581e65
author: evpobr <evpobr@gmail.com>
date: Sun Oct 25 07:17:59 EDT 2020

Refactor SRC_STATE

Rename SRC_PRIVATE_tag to SRC_STATE_tag, now SRC_STATE is typedef of
exsiting struct.

--- a/src/common.h
+++ b/src/common.h
@@ -98,7 +98,7 @@
 	SRC_ERR_MAX_ERROR
 } ;
 
-typedef struct SRC_PRIVATE_tag
+struct SRC_STATE_tag
 {	double	last_ratio, last_position ;
 
 	int		error ;
@@ -111,16 +111,16 @@
 	void	*private_data ;
 
 	/* Varispeed process function. */
-	int		(*vari_process) (struct SRC_PRIVATE_tag *psrc, SRC_DATA *data) ;
+	int		(*vari_process) (SRC_STATE *state, SRC_DATA *data) ;
 
 	/* Constant speed process function. */
-	int		(*const_process) (struct SRC_PRIVATE_tag *psrc, SRC_DATA *data) ;
+	int		(*const_process) (SRC_STATE *state, SRC_DATA *data) ;
 
 	/* State reset. */
-	void	(*reset) (struct SRC_PRIVATE_tag *psrc) ;
+	void	(*reset) (SRC_STATE *state) ;
 
 	/* State clone. */
-	int		(*copy) (struct SRC_PRIVATE_tag *from, struct SRC_PRIVATE_tag *to) ;
+	int		(*copy) (SRC_STATE *from, SRC_STATE *to) ;
 
 	/* Data specific to SRC_MODE_CALLBACK. */
 	src_callback_t	callback_func ;
@@ -127,25 +127,25 @@
 	void			*user_callback_data ;
 	long			saved_frames ;
 	const float		*saved_data ;
-} SRC_PRIVATE ;
+} ;
 
 /* In src_sinc.c */
 const char* sinc_get_name (int src_enum) ;
 const char* sinc_get_description (int src_enum) ;
 
-int sinc_set_converter (SRC_PRIVATE *psrc, int src_enum) ;
+int sinc_set_converter (SRC_STATE *state, int src_enum) ;
 
 /* In src_linear.c */
 const char* linear_get_name (int src_enum) ;
 const char* linear_get_description (int src_enum) ;
 
-int linear_set_converter (SRC_PRIVATE *psrc, int src_enum) ;
+int linear_set_converter (SRC_STATE *state, int src_enum) ;
 
 /* In src_zoh.c */
 const char* zoh_get_name (int src_enum) ;
 const char* zoh_get_description (int src_enum) ;
 
-int zoh_set_converter (SRC_PRIVATE *psrc, int src_enum) ;
+int zoh_set_converter (SRC_STATE *state, int src_enum) ;
 
 /*----------------------------------------------------------
 **	Common static inline functions.
--- a/src/samplerate.c
+++ b/src/samplerate.c
@@ -16,13 +16,12 @@
 #include	"samplerate.h"
 #include	"common.h"
 
-static int psrc_set_converter (SRC_PRIVATE	*psrc, int converter_type) ;
+static int psrc_set_converter (SRC_STATE *state, int converter_type) ;
 
 
 SRC_STATE *
 src_new (int converter_type, int channels, int *error)
-{	SRC_PRIVATE	*psrc ;
-
+{
 	if (error)
 		*error = SRC_ERR_NO_ERROR ;
 
@@ -32,58 +31,59 @@
 		return NULL ;
 		} ;
 
-	if ((psrc = ZERO_ALLOC (SRC_PRIVATE, sizeof (*psrc))) == NULL)
+	SRC_STATE *state = ZERO_ALLOC (SRC_STATE, sizeof (SRC_STATE)) ;
+	if (state == NULL)
 	{	if (error)
 			*error = SRC_ERR_MALLOC_FAILED ;
 		return NULL ;
 		} ;
 
-	psrc->channels = channels ;
-	psrc->mode = SRC_MODE_PROCESS ;
+	state->channels = channels ;
+	state->mode = SRC_MODE_PROCESS ;
 
-	if (psrc_set_converter (psrc, converter_type) != SRC_ERR_NO_ERROR)
+	if (psrc_set_converter (state, converter_type) != SRC_ERR_NO_ERROR)
 	{	if (error)
 			*error = SRC_ERR_BAD_CONVERTER ;
-		free (psrc) ;
-		psrc = NULL ;
+		free (state) ;
+		state = NULL ;
 		} ;
 
-	src_reset ((SRC_STATE*) psrc) ;
+	src_reset (state) ;
 
-	return (SRC_STATE*) psrc ;
+	return state ;
 } /* src_new */
 
 SRC_STATE*
 src_clone (SRC_STATE* orig, int *error)
 {
-	SRC_PRIVATE	*psrc ;
+	SRC_STATE *state ;
 	int copy_error ;
 
 	if (error)
 		*error = SRC_ERR_NO_ERROR ;
 
-	if ((psrc = ZERO_ALLOC (SRC_PRIVATE, sizeof (*psrc))) == NULL)
+	if ((state = ZERO_ALLOC (SRC_STATE, sizeof (SRC_STATE))) ==  NULL)
 	{	if (error)
 			*error = SRC_ERR_MALLOC_FAILED ;
 		return NULL ;
 		} ;
 
-	SRC_PRIVATE *orig_priv = (SRC_PRIVATE*) orig ;
-	memcpy (psrc, orig_priv, sizeof (SRC_PRIVATE)) ;
+	SRC_STATE *orig_state = orig ;
+	memcpy (state, orig_state, sizeof (SRC_STATE)) ;
 
-	if ((copy_error = orig_priv->copy (orig_priv, psrc)) != SRC_ERR_NO_ERROR)
+	if ((copy_error = orig_state->copy (orig_state, state)) != SRC_ERR_NO_ERROR)
 	{	if (error)
 			*error = copy_error ;
-		free (psrc) ;
-		psrc = NULL ;
+		free (state) ;
+		state = NULL ;
 		} ;
 
-	return (SRC_STATE*) psrc ;
+	return state ;
 }
 
 SRC_STATE*
 src_callback_new (src_callback_t func, int converter_type, int channels, int *error, void* cb_data)
-{	SRC_STATE	*src_state ;
+{	SRC_STATE	*state ;
 
 	if (func == NULL)
 	{	if (error)
@@ -94,28 +94,26 @@
 	if (error != NULL)
 		*error = 0 ;
 
-	if ((src_state = src_new (converter_type, channels, error)) == NULL)
+	if ((state = src_new (converter_type, channels, error)) == NULL)
 		return NULL ;
 
-	src_reset (src_state) ;
+	src_reset (state) ;
 
-	((SRC_PRIVATE*) src_state)->mode = SRC_MODE_CALLBACK ;
-	((SRC_PRIVATE*) src_state)->callback_func = func ;
-	((SRC_PRIVATE*) src_state)->user_callback_data = cb_data ;
+	state->mode = SRC_MODE_CALLBACK ;
+	state->callback_func = func ;
+	state->user_callback_data = cb_data ;
 
-	return src_state ;
+	return state ;
 } /* src_callback_new */
 
 SRC_STATE *
 src_delete (SRC_STATE *state)
-{	SRC_PRIVATE *psrc ;
-
-	psrc = (SRC_PRIVATE*) state ;
-	if (psrc)
-	{	if (psrc->private_data)
-			free (psrc->private_data) ;
-		memset (psrc, 0, sizeof (SRC_PRIVATE)) ;
-		free (psrc) ;
+{
+	if (state)
+	{	if (state->private_data)
+			free (state->private_data) ;
+		memset (state, 0, sizeof (SRC_STATE)) ;
+		free (state) ;
 		} ;
 
 	return NULL ;
@@ -123,17 +121,15 @@
 
 int
 src_process (SRC_STATE *state, SRC_DATA *data)
-{	SRC_PRIVATE *psrc ;
+{
 	int error ;
 
-	psrc = (SRC_PRIVATE*) state ;
-
-	if (psrc == NULL)
+	if (state == NULL)
 		return SRC_ERR_BAD_STATE ;
-	if (psrc->vari_process == NULL || psrc->const_process == NULL)
+	if (state->vari_process == NULL || state->const_process == NULL)
 		return SRC_ERR_BAD_PROC_PTR ;
 
-	if (psrc->mode != SRC_MODE_PROCESS)
+	if (state->mode != SRC_MODE_PROCESS)
 		return SRC_ERR_BAD_MODE ;
 
 	/* Check for valid SRC_DATA first. */
@@ -155,13 +151,13 @@
 		data->output_frames = 0 ;
 
 	if (data->data_in < data->data_out)
-	{	if (data->data_in + data->input_frames * psrc->channels > data->data_out)
+	{	if (data->data_in + data->input_frames * state->channels > data->data_out)
 		{	/*-printf ("\n\ndata_in: %p    data_out: %p\n",
 				(void*) (data->data_in + data->input_frames * psrc->channels), (void*) data->data_out) ;-*/
 			return SRC_ERR_DATA_OVERLAP ;
 			} ;
 		}
-	else if (data->data_out + data->output_frames * psrc->channels > data->data_in)
+	else if (data->data_out + data->output_frames * state->channels > data->data_in)
 	{	/*-printf ("\n\ndata_in : %p   ouput frames: %ld    data_out: %p\n", (void*) data->data_in, data->output_frames, (void*) data->data_out) ;
 
 		printf ("data_out: %p (%p)    data_in: %p\n", (void*) data->data_out,
@@ -174,14 +170,14 @@
 	data->output_frames_gen = 0 ;
 
 	/* Special case for when last_ratio has not been set. */
-	if (psrc->last_ratio < (1.0 / SRC_MAX_RATIO))
-		psrc->last_ratio = data->src_ratio ;
+	if (state->last_ratio < (1.0 / SRC_MAX_RATIO))
+		state->last_ratio = data->src_ratio ;
 
 	/* Now process. */
-	if (fabs (psrc->last_ratio - data->src_ratio) < 1e-15)
-		error = psrc->const_process (psrc, data) ;
+	if (fabs (state->last_ratio - data->src_ratio) < 1e-15)
+		error = state->const_process (state, data) ;
 	else
-		error = psrc->vari_process (psrc, data) ;
+		error = state->vari_process (state, data) ;
 
 	return error ;
 } /* src_process */
@@ -188,7 +184,7 @@
 
 long
 src_callback_read (SRC_STATE *state, double src_ratio, long frames, float *data)
-{	SRC_PRIVATE	*psrc ;
+{
 	SRC_DATA	src_data ;
 
 	long	output_frames_gen ;
@@ -200,15 +196,13 @@
 	if (frames <= 0)
 		return 0 ;
 
-	psrc = (SRC_PRIVATE*) state ;
-
-	if (psrc->mode != SRC_MODE_CALLBACK)
-	{	psrc->error = SRC_ERR_BAD_MODE ;
+	if (state->mode != SRC_MODE_CALLBACK)
+	{	state->error = SRC_ERR_BAD_MODE ;
 		return 0 ;
 		} ;
 
-	if (psrc->callback_func == NULL)
-	{	psrc->error = SRC_ERR_NULL_CALLBACK ;
+	if (state->callback_func == NULL)
+	{	state->error = SRC_ERR_NULL_CALLBACK ;
 		return 0 ;
 		} ;
 
@@ -216,7 +210,7 @@
 
 	/* Check src_ratio is in range. */
 	if (is_bad_src_ratio (src_ratio))
-	{	psrc->error = SRC_ERR_BAD_SRC_RATIO ;
+	{	state->error = SRC_ERR_BAD_SRC_RATIO ;
 		return 0 ;
 		} ;
 
@@ -225,8 +219,8 @@
 	src_data.data_out = data ;
 	src_data.output_frames = frames ;
 
-	src_data.data_in = psrc->saved_data ;
-	src_data.input_frames = psrc->saved_frames ;
+	src_data.data_in = state->saved_data ;
+	src_data.input_frames = state->saved_frames ;
 
 	output_frames_gen = 0 ;
 	while (output_frames_gen < frames)
@@ -238,7 +232,7 @@
 		if (src_data.input_frames == 0)
 		{	float *ptr = dummy ;
 
-			src_data.input_frames = psrc->callback_func (psrc->user_callback_data, &ptr) ;
+			src_data.input_frames = state->callback_func (state->user_callback_data, &ptr) ;
 			src_data.data_in = ptr ;
 
 			if (src_data.input_frames == 0)
@@ -250,17 +244,17 @@
 		** to SRC_MODE_PROCESS first and when we return set it back to
 		** SRC_MODE_CALLBACK.
 		*/
-		psrc->mode = SRC_MODE_PROCESS ;
+		state->mode = SRC_MODE_PROCESS ;
 		error = src_process (state, &src_data) ;
-		psrc->mode = SRC_MODE_CALLBACK ;
+		state->mode = SRC_MODE_CALLBACK ;
 
 		if (error != 0)
 			break ;
 
-		src_data.data_in += src_data.input_frames_used * psrc->channels ;
+		src_data.data_in += src_data.input_frames_used * state->channels ;
 		src_data.input_frames -= src_data.input_frames_used ;
 
-		src_data.data_out += src_data.output_frames_gen * psrc->channels ;
+		src_data.data_out += src_data.output_frames_gen * state->channels ;
 		src_data.output_frames -= src_data.output_frames_gen ;
 
 		output_frames_gen += src_data.output_frames_gen ;
@@ -269,11 +263,11 @@
 			break ;
 		} ;
 
-	psrc->saved_data = src_data.data_in ;
-	psrc->saved_frames = src_data.input_frames ;
+	state->saved_data = src_data.data_in ;
+	state->saved_frames = src_data.input_frames ;
 
 	if (error != 0)
-	{	psrc->error = error ;
+	{	state->error = error ;
 		return 0 ;
 		} ;
 
@@ -285,19 +279,16 @@
 
 int
 src_set_ratio (SRC_STATE *state, double new_ratio)
-{	SRC_PRIVATE *psrc ;
-
-	psrc = (SRC_PRIVATE*) state ;
-
-	if (psrc == NULL)
+{
+	if (state == NULL)
 		return SRC_ERR_BAD_STATE ;
-	if (psrc->vari_process == NULL || psrc->const_process == NULL)
+	if (state->vari_process == NULL || state->const_process == NULL)
 		return SRC_ERR_BAD_PROC_PTR ;
 
 	if (is_bad_src_ratio (new_ratio))
 		return SRC_ERR_BAD_SRC_RATIO ;
 
-	psrc->last_ratio = new_ratio ;
+	state->last_ratio = new_ratio ;
 
 	return SRC_ERR_NO_ERROR ;
 } /* src_set_ratio */
@@ -304,35 +295,31 @@
 
 int
 src_get_channels (SRC_STATE *state)
-{	SRC_PRIVATE *psrc ;
-
-	psrc = (SRC_PRIVATE*) state ;
-
-	if (psrc == NULL)
+{
+	if (state == NULL)
 		return -SRC_ERR_BAD_STATE ;
-	if (psrc->vari_process == NULL || psrc->const_process == NULL)
+	if (state->vari_process == NULL || state->const_process == NULL)
 		return -SRC_ERR_BAD_PROC_PTR ;
 
-	return psrc->channels ;
+	return state->channels ;
 } /* src_get_channels */
 
 int
 src_reset (SRC_STATE *state)
-{	SRC_PRIVATE *psrc ;
-
-	if ((psrc = (SRC_PRIVATE*) state) == NULL)
+{
+	if (state == NULL)
 		return SRC_ERR_BAD_STATE ;
 
-	if (psrc->reset != NULL)
-		psrc->reset (psrc) ;
+	if (state->reset != NULL)
+		state->reset (state) ;
 
-	psrc->last_position = 0.0 ;
-	psrc->last_ratio = 0.0 ;
+	state->last_position = 0.0 ;
+	state->last_ratio = 0.0 ;
 
-	psrc->saved_data = NULL ;
-	psrc->saved_frames = 0 ;
+	state->saved_data = NULL ;
+	state->saved_frames = 0 ;
 
-	psrc->error = SRC_ERR_NO_ERROR ;
+	state->error = SRC_ERR_NO_ERROR ;
 
 	return SRC_ERR_NO_ERROR ;
 } /* src_reset */
@@ -394,7 +381,7 @@
 int
 src_error (SRC_STATE *state)
 {	if (state)
-		return ((SRC_PRIVATE*) state)->error ;
+		return state->error ;
 	return SRC_ERR_NO_ERROR ;
 } /* src_error */
 
@@ -547,15 +534,15 @@
 */
 
 static int
-psrc_set_converter (SRC_PRIVATE	*psrc, int converter_type)
+psrc_set_converter (SRC_STATE	*state, int converter_type)
 {
-	if (sinc_set_converter (psrc, converter_type) == SRC_ERR_NO_ERROR)
+	if (sinc_set_converter (state, converter_type) == SRC_ERR_NO_ERROR)
 		return SRC_ERR_NO_ERROR ;
 
-	if (zoh_set_converter (psrc, converter_type) == SRC_ERR_NO_ERROR)
+	if (zoh_set_converter (state, converter_type) == SRC_ERR_NO_ERROR)
 		return SRC_ERR_NO_ERROR ;
 
-	if (linear_set_converter (psrc, converter_type) == SRC_ERR_NO_ERROR)
+	if (linear_set_converter (state, converter_type) == SRC_ERR_NO_ERROR)
 		return SRC_ERR_NO_ERROR ;
 
 	return SRC_ERR_BAD_CONVERTER ;
--- a/src/src_linear.c
+++ b/src/src_linear.c
@@ -14,9 +14,9 @@
 #include "src_config.h"
 #include "common.h"
 
-static int linear_vari_process (SRC_PRIVATE *psrc, SRC_DATA *data) ;
-static void linear_reset (SRC_PRIVATE *psrc) ;
-static int linear_copy (SRC_PRIVATE *from, SRC_PRIVATE *to) ;
+static int linear_vari_process (SRC_STATE *state, SRC_DATA *data) ;
+static void linear_reset (SRC_STATE *state) ;
+static int linear_copy (SRC_STATE *from, SRC_STATE *to) ;
 
 /*========================================================================================
 */
@@ -38,7 +38,7 @@
 */
 
 static int
-linear_vari_process (SRC_PRIVATE *psrc, SRC_DATA *data)
+linear_vari_process (SRC_STATE *state, SRC_DATA *data)
 {	LINEAR_DATA *priv ;
 	double		src_ratio, input_index, rem ;
 	int			ch ;
@@ -46,10 +46,10 @@
 	if (data->input_frames <= 0)
 		return SRC_ERR_NO_ERROR ;
 
-	if (psrc->private_data == NULL)
+	if (state->private_data == NULL)
 		return SRC_ERR_NO_PRIVATE ;
 
-	priv = (LINEAR_DATA*) psrc->private_data ;
+	priv = (LINEAR_DATA*) state->private_data ;
 
 	if (priv->reset)
 	{	/* If we have just been reset, set the last_value data. */
@@ -62,12 +62,12 @@
 	priv->out_count = data->output_frames * priv->channels ;
 	priv->in_used = priv->out_gen = 0 ;
 
-	src_ratio = psrc->last_ratio ;
+	src_ratio = state->last_ratio ;
 
 	if (is_bad_src_ratio (src_ratio))
 		return SRC_ERR_BAD_INTERNAL_STATE ;
 
-	input_index = psrc->last_position ;
+	input_index = state->last_position ;
 
 	/* Calculate samples before first sample in input array. */
 	while (input_index < 1.0 && priv->out_gen < priv->out_count)
@@ -75,8 +75,8 @@
 		if (priv->in_used + priv->channels * (1.0 + input_index) >= priv->in_count)
 			break ;
 
-		if (priv->out_count > 0 && fabs (psrc->last_ratio - data->src_ratio) > SRC_MIN_RATIO_DIFF)
-			src_ratio = psrc->last_ratio + priv->out_gen * (data->src_ratio - psrc->last_ratio) / priv->out_count ;
+		if (priv->out_count > 0 && fabs (state->last_ratio - data->src_ratio) > SRC_MIN_RATIO_DIFF)
+			src_ratio = state->last_ratio + priv->out_gen * (data->src_ratio - state->last_ratio) / priv->out_count ;
 
 		for (ch = 0 ; ch < priv->channels ; ch++)
 		{	data->data_out [priv->out_gen] = (float) (priv->last_value [ch] + input_index *
@@ -95,8 +95,8 @@
 	/* Main processing loop. */
 	while (priv->out_gen < priv->out_count && priv->in_used + priv->channels * input_index < priv->in_count)
 	{
-		if (priv->out_count > 0 && fabs (psrc->last_ratio - data->src_ratio) > SRC_MIN_RATIO_DIFF)
-			src_ratio = psrc->last_ratio + priv->out_gen * (data->src_ratio - psrc->last_ratio) / priv->out_count ;
+		if (priv->out_count > 0 && fabs (state->last_ratio - data->src_ratio) > SRC_MIN_RATIO_DIFF)
+			src_ratio = state->last_ratio + priv->out_gen * (data->src_ratio - state->last_ratio) / priv->out_count ;
 
 		if (SRC_DEBUG && priv->in_used < priv->channels && input_index < 1.0)
 		{	printf ("Whoops!!!!   in_used : %ld     channels : %d     input_index : %f\n", priv->in_used, priv->channels, input_index) ;
@@ -122,7 +122,7 @@
 		priv->in_used = priv->in_count ;
 		} ;
 
-	psrc->last_position = input_index ;
+	state->last_position = input_index ;
 
 	if (priv->in_used > 0)
 		for (ch = 0 ; ch < priv->channels ; ch++)
@@ -129,7 +129,7 @@
 			priv->last_value [ch] = data->data_in [priv->in_used - priv->channels + ch] ;
 
 	/* Save current ratio rather then target ratio. */
-	psrc->last_ratio = src_ratio ;
+	state->last_ratio = src_ratio ;
 
 	data->input_frames_used = priv->in_used / priv->channels ;
 	data->output_frames_gen = priv->out_gen / priv->channels ;
@@ -159,20 +159,20 @@
 } /* linear_get_descrition */
 
 int
-linear_set_converter (SRC_PRIVATE *psrc, int src_enum)
+linear_set_converter (SRC_STATE *state, int src_enum)
 {	LINEAR_DATA *priv = NULL ;
 
 	if (src_enum != SRC_LINEAR)
 		return SRC_ERR_BAD_CONVERTER ;
 
-	if (psrc->private_data != NULL)
-	{	free (psrc->private_data) ;
-		psrc->private_data = NULL ;
+	if (state->private_data != NULL)
+	{	free (state->private_data) ;
+		state->private_data = NULL ;
 		} ;
 
-	if (psrc->private_data == NULL)
-	{	priv = ZERO_ALLOC (LINEAR_DATA, sizeof (*priv) + psrc->channels * sizeof (float)) ;
-		psrc->private_data = priv ;
+	if (state->private_data == NULL)
+	{	priv = ZERO_ALLOC (LINEAR_DATA, sizeof (*priv) + state->channels * sizeof (float)) ;
+		state->private_data = priv ;
 		} ;
 
 	if (priv == NULL)
@@ -179,14 +179,14 @@
 		return SRC_ERR_MALLOC_FAILED ;
 
 	priv->linear_magic_marker = LINEAR_MAGIC_MARKER ;
-	priv->channels = psrc->channels ;
+	priv->channels = state->channels ;
 
-	psrc->const_process = linear_vari_process ;
-	psrc->vari_process = linear_vari_process ;
-	psrc->reset = linear_reset ;
-	psrc->copy = linear_copy ;
+	state->const_process = linear_vari_process ;
+	state->vari_process = linear_vari_process ;
+	state->reset = linear_reset ;
+	state->copy = linear_copy ;
 
-	linear_reset (psrc) ;
+	linear_reset (state) ;
 
 	return SRC_ERR_NO_ERROR ;
 } /* linear_set_converter */
@@ -195,14 +195,14 @@
 */
 
 static void
-linear_reset (SRC_PRIVATE *psrc)
+linear_reset (SRC_STATE *state)
 {	LINEAR_DATA *priv = NULL ;
 
-	priv = (LINEAR_DATA*) psrc->private_data ;
+	priv = (LINEAR_DATA*) state->private_data ;
 	if (priv == NULL)
 		return ;
 
-	priv->channels = psrc->channels ;
+	priv->channels = state->channels ;
 	priv->reset = 1 ;
 	memset (priv->last_value, 0, sizeof (priv->last_value [0]) * priv->channels) ;
 
@@ -210,7 +210,7 @@
 } /* linear_reset */
 
 static int
-linear_copy (SRC_PRIVATE *from, SRC_PRIVATE *to)
+linear_copy (SRC_STATE *from, SRC_STATE *to)
 {
 	if (from->private_data == NULL)
 		return SRC_ERR_NO_PRIVATE ;
--- a/src/src_sinc.c
+++ b/src/src_sinc.c
@@ -58,16 +58,16 @@
 	float	buffer [] ;
 } SINC_FILTER ;
 
-static int sinc_multichan_vari_process (SRC_PRIVATE *psrc, SRC_DATA *data) ;
-static int sinc_hex_vari_process (SRC_PRIVATE *psrc, SRC_DATA *data) ;
-static int sinc_quad_vari_process (SRC_PRIVATE *psrc, SRC_DATA *data) ;
-static int sinc_stereo_vari_process (SRC_PRIVATE *psrc, SRC_DATA *data) ;
-static int sinc_mono_vari_process (SRC_PRIVATE *psrc, SRC_DATA *data) ;
+static int sinc_multichan_vari_process (SRC_STATE *state, SRC_DATA *data) ;
+static int sinc_hex_vari_process (SRC_STATE *state, SRC_DATA *data) ;
+static int sinc_quad_vari_process (SRC_STATE *state, SRC_DATA *data) ;
+static int sinc_stereo_vari_process (SRC_STATE *state, SRC_DATA *data) ;
+static int sinc_mono_vari_process (SRC_STATE *state, SRC_DATA *data) ;
 
 static int prepare_data (SINC_FILTER *filter, SRC_DATA *data, int half_filter_chan_len) WARN_UNUSED ;
 
-static void sinc_reset (SRC_PRIVATE *psrc) ;
-static int sinc_copy (SRC_PRIVATE *from, SRC_PRIVATE *to) ;
+static void sinc_reset (SRC_STATE *state) ;
+static int sinc_copy (SRC_STATE *from, SRC_STATE *to) ;
 
 static inline increment_t
 double_to_fp (double x)
@@ -143,7 +143,7 @@
 } /* sinc_get_descrition */
 
 int
-sinc_set_converter (SRC_PRIVATE *psrc, int src_enum)
+sinc_set_converter (SRC_STATE *state, int src_enum)
 {	SINC_FILTER *filter, temp_filter ;
 	increment_t count ;
 	uint32_t bits ;
@@ -152,43 +152,43 @@
 	if (SHIFT_BITS >= sizeof (increment_t) * 8 - 1)
 		return SRC_ERR_SHIFT_BITS ;
 
-	if (psrc->private_data != NULL)
-	{	free (psrc->private_data) ;
-		psrc->private_data = NULL ;
+	if (state->private_data != NULL)
+	{	free (state->private_data) ;
+		state->private_data = NULL ;
 		} ;
 
 	memset (&temp_filter, 0, sizeof (temp_filter)) ;
 
 	temp_filter.sinc_magic_marker = SINC_MAGIC_MARKER ;
-	temp_filter.channels = psrc->channels ;
+	temp_filter.channels = state->channels ;
 
-	if (psrc->channels > ARRAY_LEN (temp_filter.left_calc))
+	if (state->channels > ARRAY_LEN (temp_filter.left_calc))
 		return SRC_ERR_BAD_CHANNEL_COUNT ;
-	else if (psrc->channels == 1)
-	{	psrc->const_process = sinc_mono_vari_process ;
-		psrc->vari_process = sinc_mono_vari_process ;
+	else if (state->channels == 1)
+	{	state->const_process = sinc_mono_vari_process ;
+		state->vari_process = sinc_mono_vari_process ;
 		}
 	else
-	if (psrc->channels == 2)
-	{	psrc->const_process = sinc_stereo_vari_process ;
-		psrc->vari_process = sinc_stereo_vari_process ;
+	if (state->channels == 2)
+	{	state->const_process = sinc_stereo_vari_process ;
+		state->vari_process = sinc_stereo_vari_process ;
 		}
 	else
-	if (psrc->channels == 4)
-	{	psrc->const_process = sinc_quad_vari_process ;
-		psrc->vari_process = sinc_quad_vari_process ;
+	if (state->channels == 4)
+	{	state->const_process = sinc_quad_vari_process ;
+		state->vari_process = sinc_quad_vari_process ;
 		}
 	else
-	if (psrc->channels == 6)
-	{	psrc->const_process = sinc_hex_vari_process ;
-		psrc->vari_process = sinc_hex_vari_process ;
+	if (state->channels == 6)
+	{	state->const_process = sinc_hex_vari_process ;
+		state->vari_process = sinc_hex_vari_process ;
 		}
 	else
-	{	psrc->const_process = sinc_multichan_vari_process ;
-		psrc->vari_process = sinc_multichan_vari_process ;
+	{	state->const_process = sinc_multichan_vari_process ;
+		state->vari_process = sinc_multichan_vari_process ;
 		} ;
-	psrc->reset = sinc_reset ;
-	psrc->copy = sinc_copy ;
+	state->reset = sinc_reset ;
+	state->copy = sinc_copy ;
 
 	switch (src_enum)
 	{	case SRC_SINC_FASTEST :
@@ -229,9 +229,9 @@
 	*filter = temp_filter ;
 	memset (&temp_filter, 0xEE, sizeof (temp_filter)) ;
 
-	psrc->private_data = filter ;
+	state->private_data = filter ;
 
-	sinc_reset (psrc) ;
+	sinc_reset (state) ;
 
 	count = filter->coeff_half_len ;
 	for (bits = 0 ; (MAKE_INCREMENT_T (1) << bits) < count ; bits++)
@@ -244,10 +244,10 @@
 } /* sinc_set_converter */
 
 static void
-sinc_reset (SRC_PRIVATE *psrc)
+sinc_reset (SRC_STATE *state)
 {	SINC_FILTER *filter ;
 
-	filter = (SINC_FILTER*) psrc->private_data ;
+	filter = (SINC_FILTER*) state->private_data ;
 	if (filter == NULL)
 		return ;
 
@@ -263,7 +263,7 @@
 } /* sinc_reset */
 
 static int
-sinc_copy (SRC_PRIVATE *from, SRC_PRIVATE *to)
+sinc_copy (SRC_STATE *from, SRC_STATE *to)
 {
 	if (from->private_data == NULL)
 		return SRC_ERR_NO_PRIVATE ;
@@ -346,16 +346,16 @@
 } /* calc_output_single */
 
 static int
-sinc_mono_vari_process (SRC_PRIVATE *psrc, SRC_DATA *data)
+sinc_mono_vari_process (SRC_STATE *state, SRC_DATA *data)
 {	SINC_FILTER *filter ;
 	double		input_index, src_ratio, count, float_increment, terminate, rem ;
 	increment_t	increment, start_filter_index ;
 	int			half_filter_chan_len, samples_in_hand ;
 
-	if (psrc->private_data == NULL)
+	if (state->private_data == NULL)
 		return SRC_ERR_NO_PRIVATE ;
 
-	filter = (SINC_FILTER*) psrc->private_data ;
+	filter = (SINC_FILTER*) state->private_data ;
 
 	/* If there is not a problem, this will be optimised out. */
 	if (sizeof (filter->buffer [0]) != sizeof (data->data_in [0]))
@@ -365,7 +365,7 @@
 	filter->out_count = data->output_frames * filter->channels ;
 	filter->in_used = filter->out_gen = 0 ;
 
-	src_ratio = psrc->last_ratio ;
+	src_ratio = state->last_ratio ;
 
 	if (is_bad_src_ratio (src_ratio))
 		return SRC_ERR_BAD_INTERNAL_STATE ;
@@ -372,13 +372,13 @@
 
 	/* Check the sample rate ratio wrt the buffer len. */
 	count = (filter->coeff_half_len + 2.0) / filter->index_inc ;
-	if (MIN (psrc->last_ratio, data->src_ratio) < 1.0)
-		count /= MIN (psrc->last_ratio, data->src_ratio) ;
+	if (MIN (state->last_ratio, data->src_ratio) < 1.0)
+		count /= MIN (state->last_ratio, data->src_ratio) ;
 
 	/* Maximum coefficientson either side of center point. */
 	half_filter_chan_len = filter->channels * (int) (lrint (count) + 1) ;
 
-	input_index = psrc->last_position ;
+	input_index = state->last_position ;
 
 	rem = fmod_one (input_index) ;
 	filter->b_current = (filter->b_current + filter->channels * lrint (input_index - rem)) % filter->b_len ;
@@ -393,8 +393,8 @@
 		samples_in_hand = (filter->b_end - filter->b_current + filter->b_len) % filter->b_len ;
 
 		if (samples_in_hand <= half_filter_chan_len)
-		{	if ((psrc->error = prepare_data (filter, data, half_filter_chan_len)) != 0)
-				return psrc->error ;
+		{	if ((state->error = prepare_data (filter, data, half_filter_chan_len)) != 0)
+				return state->error ;
 
 			samples_in_hand = (filter->b_end - filter->b_current + filter->b_len) % filter->b_len ;
 			if (samples_in_hand <= half_filter_chan_len)
@@ -407,8 +407,8 @@
 				break ;
 			} ;
 
-		if (filter->out_count > 0 && fabs (psrc->last_ratio - data->src_ratio) > 1e-10)
-			src_ratio = psrc->last_ratio + filter->out_gen * (data->src_ratio - psrc->last_ratio) / filter->out_count ;
+		if (filter->out_count > 0 && fabs (state->last_ratio - data->src_ratio) > 1e-10)
+			src_ratio = state->last_ratio + filter->out_gen * (data->src_ratio - state->last_ratio) / filter->out_count ;
 
 		float_increment = filter->index_inc * (src_ratio < 1.0 ? src_ratio : 1.0) ;
 		increment = double_to_fp (float_increment) ;
@@ -427,10 +427,10 @@
 		input_index = rem ;
 		} ;
 
-	psrc->last_position = input_index ;
+	state->last_position = input_index ;
 
 	/* Save current ratio rather then target ratio. */
-	psrc->last_ratio = src_ratio ;
+	state->last_ratio = src_ratio ;
 
 	data->input_frames_used = filter->in_used / filter->channels ;
 	data->output_frames_gen = filter->out_gen / filter->channels ;
@@ -502,16 +502,16 @@
 } /* calc_output_stereo */
 
 static int
-sinc_stereo_vari_process (SRC_PRIVATE *psrc, SRC_DATA *data)
+sinc_stereo_vari_process (SRC_STATE *state, SRC_DATA *data)
 {	SINC_FILTER *filter ;
 	double		input_index, src_ratio, count, float_increment, terminate, rem ;
 	increment_t	increment, start_filter_index ;
 	int			half_filter_chan_len, samples_in_hand ;
 
-	if (psrc->private_data == NULL)
+	if (state->private_data == NULL)
 		return SRC_ERR_NO_PRIVATE ;
 
-	filter = (SINC_FILTER*) psrc->private_data ;
+	filter = (SINC_FILTER*) state->private_data ;
 
 	/* If there is not a problem, this will be optimised out. */
 	if (sizeof (filter->buffer [0]) != sizeof (data->data_in [0]))
@@ -521,7 +521,7 @@
 	filter->out_count = data->output_frames * filter->channels ;
 	filter->in_used = filter->out_gen = 0 ;
 
-	src_ratio = psrc->last_ratio ;
+	src_ratio = state->last_ratio ;
 
 	if (is_bad_src_ratio (src_ratio))
 		return SRC_ERR_BAD_INTERNAL_STATE ;
@@ -528,13 +528,13 @@
 
 	/* Check the sample rate ratio wrt the buffer len. */
 	count = (filter->coeff_half_len + 2.0) / filter->index_inc ;
-	if (MIN (psrc->last_ratio, data->src_ratio) < 1.0)
-		count /= MIN (psrc->last_ratio, data->src_ratio) ;
+	if (MIN (state->last_ratio, data->src_ratio) < 1.0)
+		count /= MIN (state->last_ratio, data->src_ratio) ;
 
 	/* Maximum coefficientson either side of center point. */
 	half_filter_chan_len = filter->channels * (int) (lrint (count) + 1) ;
 
-	input_index = psrc->last_position ;
+	input_index = state->last_position ;
 
 	rem = fmod_one (input_index) ;
 	filter->b_current = (filter->b_current + filter->channels * lrint (input_index - rem)) % filter->b_len ;
@@ -549,8 +549,8 @@
 		samples_in_hand = (filter->b_end - filter->b_current + filter->b_len) % filter->b_len ;
 
 		if (samples_in_hand <= half_filter_chan_len)
-		{	if ((psrc->error = prepare_data (filter, data, half_filter_chan_len)) != 0)
-				return psrc->error ;
+		{	if ((state->error = prepare_data (filter, data, half_filter_chan_len)) != 0)
+				return state->error ;
 
 			samples_in_hand = (filter->b_end - filter->b_current + filter->b_len) % filter->b_len ;
 			if (samples_in_hand <= half_filter_chan_len)
@@ -563,8 +563,8 @@
 				break ;
 			} ;
 
-		if (filter->out_count > 0 && fabs (psrc->last_ratio - data->src_ratio) > 1e-10)
-			src_ratio = psrc->last_ratio + filter->out_gen * (data->src_ratio - psrc->last_ratio) / filter->out_count ;
+		if (filter->out_count > 0 && fabs (state->last_ratio - data->src_ratio) > 1e-10)
+			src_ratio = state->last_ratio + filter->out_gen * (data->src_ratio - state->last_ratio) / filter->out_count ;
 
 		float_increment = filter->index_inc * (src_ratio < 1.0 ? src_ratio : 1.0) ;
 		increment = double_to_fp (float_increment) ;
@@ -582,10 +582,10 @@
 		input_index = rem ;
 		} ;
 
-	psrc->last_position = input_index ;
+	state->last_position = input_index ;
 
 	/* Save current ratio rather then target ratio. */
-	psrc->last_ratio = src_ratio ;
+	state->last_ratio = src_ratio ;
 
 	data->input_frames_used = filter->in_used / filter->channels ;
 	data->output_frames_gen = filter->out_gen / filter->channels ;
@@ -658,16 +658,16 @@
 } /* calc_output_quad */
 
 static int
-sinc_quad_vari_process (SRC_PRIVATE *psrc, SRC_DATA *data)
+sinc_quad_vari_process (SRC_STATE *state, SRC_DATA *data)
 {	SINC_FILTER *filter ;
 	double		input_index, src_ratio, count, float_increment, terminate, rem ;
 	increment_t	increment, start_filter_index ;
 	int			half_filter_chan_len, samples_in_hand ;
 
-	if (psrc->private_data == NULL)
+	if (state->private_data == NULL)
 		return SRC_ERR_NO_PRIVATE ;
 
-	filter = (SINC_FILTER*) psrc->private_data ;
+	filter = (SINC_FILTER*) state->private_data ;
 
 	/* If there is not a problem, this will be optimised out. */
 	if (sizeof (filter->buffer [0]) != sizeof (data->data_in [0]))
@@ -677,7 +677,7 @@
 	filter->out_count = data->output_frames * filter->channels ;
 	filter->in_used = filter->out_gen = 0 ;
 
-	src_ratio = psrc->last_ratio ;
+	src_ratio = state->last_ratio ;
 
 	if (is_bad_src_ratio (src_ratio))
 		return SRC_ERR_BAD_INTERNAL_STATE ;
@@ -684,13 +684,13 @@
 
 	/* Check the sample rate ratio wrt the buffer len. */
 	count = (filter->coeff_half_len + 2.0) / filter->index_inc ;
-	if (MIN (psrc->last_ratio, data->src_ratio) < 1.0)
-		count /= MIN (psrc->last_ratio, data->src_ratio) ;
+	if (MIN (state->last_ratio, data->src_ratio) < 1.0)
+		count /= MIN (state->last_ratio, data->src_ratio) ;
 
 	/* Maximum coefficientson either side of center point. */
 	half_filter_chan_len = filter->channels * (int) (lrint (count) + 1) ;
 
-	input_index = psrc->last_position ;
+	input_index = state->last_position ;
 
 	rem = fmod_one (input_index) ;
 	filter->b_current = (filter->b_current + filter->channels * lrint (input_index - rem)) % filter->b_len ;
@@ -705,8 +705,8 @@
 		samples_in_hand = (filter->b_end - filter->b_current + filter->b_len) % filter->b_len ;
 
 		if (samples_in_hand <= half_filter_chan_len)
-		{	if ((psrc->error = prepare_data (filter, data, half_filter_chan_len)) != 0)
-				return psrc->error ;
+		{	if ((state->error = prepare_data (filter, data, half_filter_chan_len)) != 0)
+				return state->error ;
 
 			samples_in_hand = (filter->b_end - filter->b_current + filter->b_len) % filter->b_len ;
 			if (samples_in_hand <= half_filter_chan_len)
@@ -719,8 +719,8 @@
 				break ;
 			} ;
 
-		if (filter->out_count > 0 && fabs (psrc->last_ratio - data->src_ratio) > 1e-10)
-			src_ratio = psrc->last_ratio + filter->out_gen * (data->src_ratio - psrc->last_ratio) / filter->out_count ;
+		if (filter->out_count > 0 && fabs (state->last_ratio - data->src_ratio) > 1e-10)
+			src_ratio = state->last_ratio + filter->out_gen * (data->src_ratio - state->last_ratio) / filter->out_count ;
 
 		float_increment = filter->index_inc * (src_ratio < 1.0 ? src_ratio : 1.0) ;
 		increment = double_to_fp (float_increment) ;
@@ -738,10 +738,10 @@
 		input_index = rem ;
 		} ;
 
-	psrc->last_position = input_index ;
+	state->last_position = input_index ;
 
 	/* Save current ratio rather then target ratio. */
-	psrc->last_ratio = src_ratio ;
+	state->last_ratio = src_ratio ;
 
 	data->input_frames_used = filter->in_used / filter->channels ;
 	data->output_frames_gen = filter->out_gen / filter->channels ;
@@ -813,16 +813,16 @@
 } /* calc_output_hex */
 
 static int
-sinc_hex_vari_process (SRC_PRIVATE *psrc, SRC_DATA *data)
+sinc_hex_vari_process (SRC_STATE *state, SRC_DATA *data)
 {	SINC_FILTER *filter ;
 	double		input_index, src_ratio, count, float_increment, terminate, rem ;
 	increment_t	increment, start_filter_index ;
 	int			half_filter_chan_len, samples_in_hand ;
 
-	if (psrc->private_data == NULL)
+	if (state->private_data == NULL)
 		return SRC_ERR_NO_PRIVATE ;
 
-	filter = (SINC_FILTER*) psrc->private_data ;
+	filter = (SINC_FILTER*) state->private_data ;
 
 	/* If there is not a problem, this will be optimised out. */
 	if (sizeof (filter->buffer [0]) != sizeof (data->data_in [0]))
@@ -832,7 +832,7 @@
 	filter->out_count = data->output_frames * filter->channels ;
 	filter->in_used = filter->out_gen = 0 ;
 
-	src_ratio = psrc->last_ratio ;
+	src_ratio = state->last_ratio ;
 
 	if (is_bad_src_ratio (src_ratio))
 		return SRC_ERR_BAD_INTERNAL_STATE ;
@@ -839,13 +839,13 @@
 
 	/* Check the sample rate ratio wrt the buffer len. */
 	count = (filter->coeff_half_len + 2.0) / filter->index_inc ;
-	if (MIN (psrc->last_ratio, data->src_ratio) < 1.0)
-		count /= MIN (psrc->last_ratio, data->src_ratio) ;
+	if (MIN (state->last_ratio, data->src_ratio) < 1.0)
+		count /= MIN (state->last_ratio, data->src_ratio) ;
 
 	/* Maximum coefficientson either side of center point. */
 	half_filter_chan_len = filter->channels * (int) (lrint (count) + 1) ;
 
-	input_index = psrc->last_position ;
+	input_index = state->last_position ;
 
 	rem = fmod_one (input_index) ;
 	filter->b_current = (filter->b_current + filter->channels * lrint (input_index - rem)) % filter->b_len ;
@@ -860,8 +860,8 @@
 		samples_in_hand = (filter->b_end - filter->b_current + filter->b_len) % filter->b_len ;
 
 		if (samples_in_hand <= half_filter_chan_len)
-		{	if ((psrc->error = prepare_data (filter, data, half_filter_chan_len)) != 0)
-				return psrc->error ;
+		{	if ((state->error = prepare_data (filter, data, half_filter_chan_len)) != 0)
+				return state->error ;
 
 			samples_in_hand = (filter->b_end - filter->b_current + filter->b_len) % filter->b_len ;
 			if (samples_in_hand <= half_filter_chan_len)
@@ -874,8 +874,8 @@
 				break ;
 			} ;
 
-		if (filter->out_count > 0 && fabs (psrc->last_ratio - data->src_ratio) > 1e-10)
-			src_ratio = psrc->last_ratio + filter->out_gen * (data->src_ratio - psrc->last_ratio) / filter->out_count ;
+		if (filter->out_count > 0 && fabs (state->last_ratio - data->src_ratio) > 1e-10)
+			src_ratio = state->last_ratio + filter->out_gen * (data->src_ratio - state->last_ratio) / filter->out_count ;
 
 		float_increment = filter->index_inc * (src_ratio < 1.0 ? src_ratio : 1.0) ;
 		increment = double_to_fp (float_increment) ;
@@ -893,10 +893,10 @@
 		input_index = rem ;
 		} ;
 
-	psrc->last_position = input_index ;
+	state->last_position = input_index ;
 
 	/* Save current ratio rather then target ratio. */
-	psrc->last_ratio = src_ratio ;
+	state->last_ratio = src_ratio ;
 
 	data->input_frames_used = filter->in_used / filter->channels ;
 	data->output_frames_gen = filter->out_gen / filter->channels ;
@@ -978,16 +978,16 @@
 } /* calc_output_multi */
 
 static int
-sinc_multichan_vari_process (SRC_PRIVATE *psrc, SRC_DATA *data)
+sinc_multichan_vari_process (SRC_STATE *state, SRC_DATA *data)
 {	SINC_FILTER *filter ;
 	double		input_index, src_ratio, count, float_increment, terminate, rem ;
 	increment_t	increment, start_filter_index ;
 	int			half_filter_chan_len, samples_in_hand ;
 
-	if (psrc->private_data == NULL)
+	if (state->private_data == NULL)
 		return SRC_ERR_NO_PRIVATE ;
 
-	filter = (SINC_FILTER*) psrc->private_data ;
+	filter = (SINC_FILTER*) state->private_data ;
 
 	/* If there is not a problem, this will be optimised out. */
 	if (sizeof (filter->buffer [0]) != sizeof (data->data_in [0]))
@@ -997,7 +997,7 @@
 	filter->out_count = data->output_frames * filter->channels ;
 	filter->in_used = filter->out_gen = 0 ;
 
-	src_ratio = psrc->last_ratio ;
+	src_ratio = state->last_ratio ;
 
 	if (is_bad_src_ratio (src_ratio))
 		return SRC_ERR_BAD_INTERNAL_STATE ;
@@ -1004,13 +1004,13 @@
 
 	/* Check the sample rate ratio wrt the buffer len. */
 	count = (filter->coeff_half_len + 2.0) / filter->index_inc ;
-	if (MIN (psrc->last_ratio, data->src_ratio) < 1.0)
-		count /= MIN (psrc->last_ratio, data->src_ratio) ;
+	if (MIN (state->last_ratio, data->src_ratio) < 1.0)
+		count /= MIN (state->last_ratio, data->src_ratio) ;
 
 	/* Maximum coefficientson either side of center point. */
 	half_filter_chan_len = filter->channels * (int) (lrint (count) + 1) ;
 
-	input_index = psrc->last_position ;
+	input_index = state->last_position ;
 
 	rem = fmod_one (input_index) ;
 	filter->b_current = (filter->b_current + filter->channels * lrint (input_index - rem)) % filter->b_len ;
@@ -1025,8 +1025,8 @@
 		samples_in_hand = (filter->b_end - filter->b_current + filter->b_len) % filter->b_len ;
 
 		if (samples_in_hand <= half_filter_chan_len)
-		{	if ((psrc->error = prepare_data (filter, data, half_filter_chan_len)) != 0)
-				return psrc->error ;
+		{	if ((state->error = prepare_data (filter, data, half_filter_chan_len)) != 0)
+				return state->error ;
 
 			samples_in_hand = (filter->b_end - filter->b_current + filter->b_len) % filter->b_len ;
 			if (samples_in_hand <= half_filter_chan_len)
@@ -1039,8 +1039,8 @@
 				break ;
 			} ;
 
-		if (filter->out_count > 0 && fabs (psrc->last_ratio - data->src_ratio) > 1e-10)
-			src_ratio = psrc->last_ratio + filter->out_gen * (data->src_ratio - psrc->last_ratio) / filter->out_count ;
+		if (filter->out_count > 0 && fabs (state->last_ratio - data->src_ratio) > 1e-10)
+			src_ratio = state->last_ratio + filter->out_gen * (data->src_ratio - state->last_ratio) / filter->out_count ;
 
 		float_increment = filter->index_inc * (src_ratio < 1.0 ? src_ratio : 1.0) ;
 		increment = double_to_fp (float_increment) ;
@@ -1048,7 +1048,7 @@
 		start_filter_index = double_to_fp (input_index * float_increment) ;
 
 		calc_output_multi (filter, increment, start_filter_index, filter->channels, float_increment / filter->index_inc, data->data_out + filter->out_gen) ;
-		filter->out_gen += psrc->channels ;
+		filter->out_gen += state->channels ;
 
 		/* Figure out the next index. */
 		input_index += 1.0 / src_ratio ;
@@ -1058,10 +1058,10 @@
 		input_index = rem ;
 		} ;
 
-	psrc->last_position = input_index ;
+	state->last_position = input_index ;
 
 	/* Save current ratio rather then target ratio. */
-	psrc->last_ratio = src_ratio ;
+	state->last_ratio = src_ratio ;
 
 	data->input_frames_used = filter->in_used / filter->channels ;
 	data->output_frames_gen = filter->out_gen / filter->channels ;
--- a/src/src_zoh.c
+++ b/src/src_zoh.c
@@ -14,9 +14,9 @@
 #include "src_config.h"
 #include "common.h"
 
-static int zoh_vari_process (SRC_PRIVATE *psrc, SRC_DATA *data) ;
-static void zoh_reset (SRC_PRIVATE *psrc) ;
-static int zoh_copy (SRC_PRIVATE *from, SRC_PRIVATE *to) ;
+static int zoh_vari_process (SRC_STATE *state, SRC_DATA *data) ;
+static void zoh_reset (SRC_STATE *state) ;
+static int zoh_copy (SRC_STATE *from, SRC_STATE *to) ;
 
 /*========================================================================================
 */
@@ -36,7 +36,7 @@
 */
 
 static int
-zoh_vari_process (SRC_PRIVATE *psrc, SRC_DATA *data)
+zoh_vari_process (SRC_STATE *state, SRC_DATA *data)
 {	ZOH_DATA 	*priv ;
 	double		src_ratio, input_index, rem ;
 	int			ch ;
@@ -44,10 +44,10 @@
 	if (data->input_frames <= 0)
 		return SRC_ERR_NO_ERROR ;
 
-	if (psrc->private_data == NULL)
+	if (state->private_data == NULL)
 		return SRC_ERR_NO_PRIVATE ;
 
-	priv = (ZOH_DATA*) psrc->private_data ;
+	priv = (ZOH_DATA*) state->private_data ;
 
 	if (priv->reset)
 	{	/* If we have just been reset, set the last_value data. */
@@ -60,12 +60,12 @@
 	priv->out_count = data->output_frames * priv->channels ;
 	priv->in_used = priv->out_gen = 0 ;
 
-	src_ratio = psrc->last_ratio ;
+	src_ratio = state->last_ratio ;
 
 	if (is_bad_src_ratio (src_ratio))
 		return SRC_ERR_BAD_INTERNAL_STATE ;
 
-	input_index = psrc->last_position ;
+	input_index = state->last_position ;
 
 	/* Calculate samples before first sample in input array. */
 	while (input_index < 1.0 && priv->out_gen < priv->out_count)
@@ -73,8 +73,8 @@
 		if (priv->in_used + priv->channels * input_index >= priv->in_count)
 			break ;
 
-		if (priv->out_count > 0 && fabs (psrc->last_ratio - data->src_ratio) > SRC_MIN_RATIO_DIFF)
-			src_ratio = psrc->last_ratio + priv->out_gen * (data->src_ratio - psrc->last_ratio) / priv->out_count ;
+		if (priv->out_count > 0 && fabs (state->last_ratio - data->src_ratio) > SRC_MIN_RATIO_DIFF)
+			src_ratio = state->last_ratio + priv->out_gen * (data->src_ratio - state->last_ratio) / priv->out_count ;
 
 		for (ch = 0 ; ch < priv->channels ; ch++)
 		{	data->data_out [priv->out_gen] = priv->last_value [ch] ;
@@ -92,8 +92,8 @@
 	/* Main processing loop. */
 	while (priv->out_gen < priv->out_count && priv->in_used + priv->channels * input_index <= priv->in_count)
 	{
-		if (priv->out_count > 0 && fabs (psrc->last_ratio - data->src_ratio) > SRC_MIN_RATIO_DIFF)
-			src_ratio = psrc->last_ratio + priv->out_gen * (data->src_ratio - psrc->last_ratio) / priv->out_count ;
+		if (priv->out_count > 0 && fabs (state->last_ratio - data->src_ratio) > SRC_MIN_RATIO_DIFF)
+			src_ratio = state->last_ratio + priv->out_gen * (data->src_ratio - state->last_ratio) / priv->out_count ;
 
 		for (ch = 0 ; ch < priv->channels ; ch++)
 		{	data->data_out [priv->out_gen] = data->data_in [priv->in_used - priv->channels + ch] ;
@@ -113,7 +113,7 @@
 		priv->in_used = priv->in_count ;
 		} ;
 
-	psrc->last_position = input_index ;
+	state->last_position = input_index ;
 
 	if (priv->in_used > 0)
 		for (ch = 0 ; ch < priv->channels ; ch++)
@@ -120,7 +120,7 @@
 			priv->last_value [ch] = data->data_in [priv->in_used - priv->channels + ch] ;
 
 	/* Save current ratio rather then target ratio. */
-	psrc->last_ratio = src_ratio ;
+	state->last_ratio = src_ratio ;
 
 	data->input_frames_used = priv->in_used / priv->channels ;
 	data->output_frames_gen = priv->out_gen / priv->channels ;
@@ -150,20 +150,20 @@
 } /* zoh_get_descrition */
 
 int
-zoh_set_converter (SRC_PRIVATE *psrc, int src_enum)
+zoh_set_converter (SRC_STATE *state, int src_enum)
 {	ZOH_DATA *priv = NULL ;
 
 	if (src_enum != SRC_ZERO_ORDER_HOLD)
 		return SRC_ERR_BAD_CONVERTER ;
 
-	if (psrc->private_data != NULL)
-	{	free (psrc->private_data) ;
-		psrc->private_data = NULL ;
+	if (state->private_data != NULL)
+	{	free (state->private_data) ;
+		state->private_data = NULL ;
 		} ;
 
-	if (psrc->private_data == NULL)
-	{	priv = ZERO_ALLOC (ZOH_DATA, sizeof (*priv) + psrc->channels * sizeof (float)) ;
-		psrc->private_data = priv ;
+	if (state->private_data == NULL)
+	{	priv = ZERO_ALLOC (ZOH_DATA, sizeof (*priv) + state->channels * sizeof (float)) ;
+		state->private_data = priv ;
 		} ;
 
 	if (priv == NULL)
@@ -170,14 +170,14 @@
 		return SRC_ERR_MALLOC_FAILED ;
 
 	priv->zoh_magic_marker = ZOH_MAGIC_MARKER ;
-	priv->channels = psrc->channels ;
+	priv->channels = state->channels ;
 
-	psrc->const_process = zoh_vari_process ;
-	psrc->vari_process = zoh_vari_process ;
-	psrc->reset = zoh_reset ;
-	psrc->copy = zoh_copy ;
+	state->const_process = zoh_vari_process ;
+	state->vari_process = zoh_vari_process ;
+	state->reset = zoh_reset ;
+	state->copy = zoh_copy ;
 
-	zoh_reset (psrc) ;
+	zoh_reset (state) ;
 
 	return SRC_ERR_NO_ERROR ;
 } /* zoh_set_converter */
@@ -186,14 +186,14 @@
 */
 
 static void
-zoh_reset (SRC_PRIVATE *psrc)
+zoh_reset (SRC_STATE *state)
 {	ZOH_DATA *priv ;
 
-	priv = (ZOH_DATA*) psrc->private_data ;
+	priv = (ZOH_DATA*) state->private_data ;
 	if (priv == NULL)
 		return ;
 
-	priv->channels = psrc->channels ;
+	priv->channels = state->channels ;
 	priv->reset = 1 ;
 	memset (priv->last_value, 0, sizeof (priv->last_value [0]) * priv->channels) ;
 
@@ -201,7 +201,7 @@
 } /* zoh_reset */
 
 static int
-zoh_copy (SRC_PRIVATE *from, SRC_PRIVATE *to)
+zoh_copy (SRC_STATE *from, SRC_STATE *to)
 {
 	if (from->private_data == NULL)
 		return SRC_ERR_NO_PRIVATE ;