Callback API
The callback API consists of the following functions :
typedef long (*src_callback_t) (void *cb_data, float **data) ;
SRC_STATE* src_callback_new (src_callback_t func,
int converter_type, int channels,
int *error, void* cb_data) ;
SRC_STATE* src_delete (SRC_STATE *state) ;
long src_callback_read (SRC_STATE *state, double src_ratio,
long frames, float *data) ;
int src_reset (SRC_STATE *state) ;
int src_set_ratio (SRC_STATE *state, double new_ratio) ;
An example of the use of the callback based API can be found in the
varispeed-play program in the examples/ directory of the
source code tarball.
Initialisation
SRC_STATE* src_callback_new (src_callback_t func,
int converter_type, int channels,
int *error, void* cb_data) ;
The src_callback_new function returns an anonymous pointer to a
sample rate converter callback object, src_state.
This is the same type of object as that returned by
src_new, but with different internal state.
Although these are the same object type, they cannot be used interchangeably.
If an error occurs the function returns a NULL pointer and fills in the
error value pointed to by the error pointer supplied by the caller.
When the caller
The func parameter is a user supplied function which must match the
src_callback_t type while cb_data is a pointer to data which
be passed as the first parameter to the user supplied callback function.
The converter must be one of the supplied converter types documented
here.
Callback Read
long src_callback_read (SRC_STATE *state, double src_ratio,
long frames, float *data) ;
The src_callback_read function is passed the SRC_STATE pointer
returned by src_callback_new, the coversion ratio (output_sample_rate
/ input_sample_rate), the maximum number of output frames to generate and a
pointer to a buffer in which to place the output data.
The src_callback_read function returns the number of frames generated
or zero if an error occurs or it runs out of input (ie the user supplied
callback function returns zero and there is no more data buffered internally).
If an error has occurred, the function
src_error will return non-zero.