Something went wrong. Try again.
Reactos
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161/*** Copyright (c) 2002-2016, Erik de Castro Lopo <erikd@mega-nerd.com>** All rights reserved.**** This code is released under 2-clause BSD license. Please see the** file at : https://github.com/erikd/libsamplerate/blob/master/COPYING*/
#ifndef COMMON_H_INCLUDED#define COMMON_H_INCLUDED
#ifdef HAVE_STDINT_H#include <stdint.h>#elif (SIZEOF_INT == 4)typedef int int32_t ;#elif (SIZEOF_LONG == 4)typedef long int32_t ;#endif
#define SRC_MAX_RATIO 256#define SRC_MAX_RATIO_STR "256"
#define SRC_MIN_RATIO_DIFF (1e-20)
#define MAX(a,b) (((a) > (b)) ? (a) : (b))#define MIN(a,b) (((a) < (b)) ? (a) : (b))
#define ARRAY_LEN(x) ((int) (sizeof (x) / sizeof ((x) [0])))#define OFFSETOF(type,member) ((int) (&((type*) 0)->member))
#define MAKE_MAGIC(a,b,c,d,e,f) ((a) + ((b) << 4) + ((c) << 8) + ((d) << 12) + ((e) << 16) + ((f) << 20))
/*** Inspiration : http://sourcefrog.net/weblog/software/languages/C/unused.html*/#ifdef UNUSED#elif defined (__GNUC__)# define UNUSED(x) UNUSED_ ## x __attribute__ ((unused))#elif defined (__LCLINT__)# define UNUSED(x) /*@unused@*/ x#else# define UNUSED(x) x#endif
#ifdef __GNUC__# define WARN_UNUSED __attribute__ ((warn_unused_result))#else# define WARN_UNUSED#endif
#include "samplerate.h"
enum{ SRC_FALSE = 0, SRC_TRUE = 1,
SRC_MODE_PROCESS = 555, SRC_MODE_CALLBACK = 556} ;
enum{ SRC_ERR_NO_ERROR = 0,
SRC_ERR_MALLOC_FAILED, SRC_ERR_BAD_STATE, SRC_ERR_BAD_DATA, SRC_ERR_BAD_DATA_PTR, SRC_ERR_NO_PRIVATE, SRC_ERR_BAD_SRC_RATIO, SRC_ERR_BAD_PROC_PTR, SRC_ERR_SHIFT_BITS, SRC_ERR_FILTER_LEN, SRC_ERR_BAD_CONVERTER, SRC_ERR_BAD_CHANNEL_COUNT, SRC_ERR_SINC_BAD_BUFFER_LEN, SRC_ERR_SIZE_INCOMPATIBILITY, SRC_ERR_BAD_PRIV_PTR, SRC_ERR_BAD_SINC_STATE, SRC_ERR_DATA_OVERLAP, SRC_ERR_BAD_CALLBACK, SRC_ERR_BAD_MODE, SRC_ERR_NULL_CALLBACK, SRC_ERR_NO_VARIABLE_RATIO, SRC_ERR_SINC_PREPARE_DATA_BAD_LEN, SRC_ERR_BAD_INTERNAL_STATE,
/* This must be the last error number. */ SRC_ERR_MAX_ERROR} ;
typedef struct SRC_PRIVATE_tag{ double last_ratio, last_position ;
int error ; int channels ;
/* SRC_MODE_PROCESS or SRC_MODE_CALLBACK */ int mode ;
/* Pointer to data to converter specific data. */ void *private_data ;
/* Varispeed process function. */ int (*vari_process) (struct SRC_PRIVATE_tag *psrc, SRC_DATA *data) ;
/* Constant speed process function. */ int (*const_process) (struct SRC_PRIVATE_tag *psrc, SRC_DATA *data) ;
/* State reset. */ void (*reset) (struct SRC_PRIVATE_tag *psrc) ;
/* Data specific to SRC_MODE_CALLBACK. */ src_callback_t callback_func ; 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) ;
/* 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) ;
/* 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) ;
/*----------------------------------------------------------** Common static inline functions.*/
static inline doublefmod_one (double x){ double res ;
res = x - lrint (x) ; if (res < 0.0) return res + 1.0 ;
return res ;} /* fmod_one */
static inline intis_bad_src_ratio (double ratio){ return (ratio < (1.0 / SRC_MAX_RATIO) || ratio > (1.0 * SRC_MAX_RATIO)) ;} /* is_bad_src_ratio */
#endif /* COMMON_H_INCLUDED */