view src/libsamplerate-0.1.9/doc/api_full.html @ 83:ae30d91d2ffe

Replace these with versions built using an older toolset (so as to avoid ABI compatibilities when linking on Ubuntu 14.04 for packaging purposes)
author Chris Cannam
date Fri, 07 Feb 2020 11:51:13 +0000
parents 481f5f8c5634
children
line wrap: on
line source
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>

<HEAD>
	<TITLE>
	Secret Rabbit Code (aka libsamplerate)
	</TITLE>
	<META NAME="Author"      CONTENT="Erik de Castro Lopo (erikd AT mega-nerd DOT com)">
    <META NAME="Version"     CONTENT="libsamplerate-0.1.8">
	<META NAME="Description" CONTENT="The Secret Rabbit Code Home Page">
	<META NAME="Keywords"    CONTENT="libsamplerate sound resample audio dsp Linux">
	<LINK REL=StyleSheet HREF="SRC.css" TYPE="text/css" MEDIA="all">
</HEAD>

<BODY TEXT="#FFFFFF" BGCOLOR="#000000" LINK="#FB1465" VLINK="#FB1465" ALINK="#FB1465">
<!-- pepper -->
<CENTER>
	<IMG SRC="SRC.png" HEIGHT=100 WIDTH=760 ALT="SRC.png">
</CENTER>
<!-- pepper -->
<BR>
<!-- pepper -->
<TABLE ALIGN="center" WIDTH="98%">
<TR>
<TD VALIGN="top">
<BR>
<DIV CLASS="nav">
	<BR>
	<A HREF="index.html">Home</A><BR>
	<BR>
	<A HREF="api_simple.html">Simple API</A><BR>
	<A HREF="api_full.html">Full API</A><BR>
	<A HREF="api_callback.html">Callback API</A><BR>
	<A HREF="api_misc.html">Miscellaneous</A><BR>
	<A HREF="api_misc.html#ErrorReporting">Error Handling</A><BR>
<BR>
<DIV CLASS="block">
Author :<BR>Erik de Castro Lopo
<!-- pepper -->
<BR><BR>
<!-- pepper -->

</DIV>
	<IMG SRC=
	"/cgi-bin/Count.cgi?ft=6|frgb=55;55;55|tr=0|md=6|dd=B|st=1|sh=1|df=src_api.dat" 
	HEIGHT=30 WIDTH=100 ALT="counter.gif">
</DIV>

</TD>
<!-- pepper -->
<!-- ######################################################################## -->
<!-- pepper -->
<TD VALIGN="top">
<DIV CLASS="block">

<H1><B>Full API</B></H1>
<P>
The full API consists of the following functions :
</P>
<PRE>
      SRC_STATE* <A HREF="#Init">src_new</A> (int converter_type, int channels, int *error) ;
      SRC_STATE* <A HREF="#CleanUp">src_delete</A> (SRC_STATE *state) ;

      int <A HREF="#Process">src_process</A> (SRC_STATE *state, SRC_DATA *data) ;
      int <A HREF="#Reset">src_reset</A> (SRC_STATE *state) ;
      int <A HREF="#SetRatio">src_set_ratio</A> (SRC_STATE *state, double new_ratio) ;
</PRE>

<A NAME="Init"></A>
<H3><BR>Initialisation</H3>
<PRE>
      SRC_STATE* src_new (int converter_type, int channels, int *error) ;
</PRE>
<P>
The <B>src_new</B> function returns an anonymous pointer to a sample rate 
converter object, src_state. 
If an error occurs the function returns a NULL pointer and fills in the
error value pointed to by the <B>error</B> pointer supplied by the caller.
The converter must be one of the supplied converter types documented
<A HREF="api_misc.html#Converters">here</A>.
</P>

<A NAME="CleanUp"></A>
<H3><BR>Cleanup</H3>
<PRE>
      SRC_STATE* src_delete (SRC_STATE *state) ;
</PRE>
<P>
The <B>src_delete</B> function frees up all memory allocated for the given sample
rate converter object and returns a NULL pointer.
The caller is responsible for freeing any memory passed to the sample rate converter
via the pointer to the <B>SRC_DATA</B> struct.
</P>

<A NAME="Process"></A>
<H3><BR>Process</H3>
<PRE>
      int src_process (SRC_STATE *state, SRC_DATA *data) ;
</PRE>
<P>
The <B>src_process</B> function processes the data provided by the caller
in an <B>SRC_DATA</B> struct using the sample rate converter object specified
by the <B>SRC_STATE</B> pointer.
When operating on streaming data, this function can be called over and over again,
with each new call providing new input data and returning new output data.
</P>

<P>
The <B>SRC_DATA</B> struct passed as the second parameter to the <B>src_process</B> 
function has the following fields:
</P>
<PRE>
      typedef struct
      {   float  *data_in, *data_out ;

          long   input_frames, output_frames ;
          long   input_frames_used, output_frames_gen ;

          int    end_of_input ;

          double src_ratio ;
      } SRC_DATA ;
</PRE>
<P>
The fields of this struct which must be filled in by the caller are:
</P>
<PRE>
      data_in       : A pointer to the input data samples.
      input_frames  : The number of frames of data pointed to by data_in.
      data_out      : A pointer to the output data samples.
      output_frames : Maximum number of frames pointer to by data_out.
      src_ratio     : Equal to output_sample_rate / input_sample_rate.
      end_of_input  : Equal to 0 if more input data is available and 1 
                      otherwise.
</PRE>
<P>
Note that the data_in and data_out arrays may not overlap. If they do, the 
library will return an error code.
</P>
<P>
When the <B>src_process</B> function returns <B>output_frames_gen</B> will be 
set to the number of output frames generated and <B>input_frames_used</B> will 
be set to the number of input frames consumed to generate the provided number of 
output frames.
</P>

<P>
The <B>src_process</B> function returns non-zero if an error occurs.
The non-zero error return value can be decoded into a text string using the function
documented <A HREF="api_misc.html#ErrorReporting">here</A>.
</P>

<A NAME="Reset"></A>
<H3><BR>Reset</H3>
<PRE>
      int src_reset (SRC_STATE *state) ;
</PRE>
<P>
The <B>src_reset</B> function resets the internal state of the sample rate 
converter object to the same state it had immediately after its creation using
<B>src_new</B>.
This should be called whenever a sample rate converter is to be used on two 
separate, unrelated pieces of audio.
</P>

<A NAME="SetRatio"></A>
<H3><BR>Set Ratio</H3>
<PRE>
      int src_set_ratio (SRC_STATE *state, double new_ratio) ;
</PRE>

<p>
When using the <B>src_process</B> or <B>src_callback_process</B> APIs and 
updating the <B>src_ratio</B> field of the <B>SRC_STATE</B> struct, the library
will try to smoothly transition between the conversion ratio of the last call
and the conversion ratio of the current call.
<p/>

<P>
If the user want to bypass this smooth transition and achieve a step response in
the conversion ratio, the <B>src_set_ratio</B> function can be used to set the
starting conversion ratio of the next call to <B>src_process</B> or
<B>src_callback_process</B>.
<p/>

<P>
This function returns non-zero on error and the error return value can be
decoded into a text string using the function documented 
<A HREF="api_misc.html#ErrorReporting">here</A>.</P>

<!-- <A HREF="mailto:aldel@mega-nerd.com">For the spam bots</A> -->

</DIV>
</TD></TR>
</TABLE>

</BODY>
</HTML>