17#define LINEAR_MAGIC_MARKER MAKE_MAGIC ('l', 'i', 'n', 'e', 'a', 'r')
27 float last_value [1] ;
36 double src_ratio, input_index, rem ;
39 if (
data->input_frames <= 0)
49 for (ch = 0 ; ch < priv->
channels ; ch++)
66 while (input_index < 1.0 && priv->out_gen < priv->
out_count)
74 for (ch = 0 ; ch < priv->
channels ; ch++)
81 input_index += 1.0 / src_ratio ;
95 {
printf (
"Whoops!!!! in_used : %ld channels : %d input_index : %f\n", priv->
in_used, priv->
channels, input_index) ;
99 for (ch = 0 ; ch < priv->
channels ; ch++)
106 input_index += 1.0 / src_ratio ;
121 for (ch = 0 ; ch < priv->
channels ; ch++)
140 return "Linear Interpolator" ;
149 return "Linear interpolator, very fast, poor quality." ;
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
_Check_return_ _CRT_JIT_INTRINSIC double __cdecl fabs(_In_ double x)
_Check_return_ __CRT_INLINE long lrint(_In_ double x)
static float(__cdecl *square_half_float)(float x
static UINT UINT * out_count
static int is_bad_src_ratio(double ratio)
static double fmod_one(double x)
@ SRC_ERR_BAD_INTERNAL_STATE
#define SRC_MIN_RATIO_DIFF
#define LINEAR_MAGIC_MARKER
static int linear_vari_process(SRC_PRIVATE *psrc, SRC_DATA *data)
int linear_set_converter(SRC_PRIVATE *psrc, int src_enum)
const char * linear_get_name(int src_enum)
static void linear_reset(SRC_PRIVATE *psrc)
const char * linear_get_description(int src_enum)
int(* const_process)(struct SRC_PRIVATE_tag *psrc, SRC_DATA *data)
int(* vari_process)(struct SRC_PRIVATE_tag *psrc, SRC_DATA *data)
void(* reset)(struct SRC_PRIVATE_tag *psrc)
ActualNumberDriverObjects * sizeof(PDRIVER_OBJECT)) PDRIVER_OBJECT *DriverObjectList