123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348 |
- #if !defined soxr_included
- #define soxr_included
- #if defined __cplusplus
- #include <cstddef>
- extern "C" {
- #else
- #include <stddef.h>
- #endif
- #if defined SOXR_DLL
- #if defined soxr_EXPORTS
- #define SOXR __declspec(dllexport)
- #else
- #define SOXR __declspec(dllimport)
- #endif
- #elif defined SOXR_VISIBILITY && defined __GNUC__ && (__GNUC__ > 4 || __GNUC__ == 4 && __GNUC_MINOR__ >= 1)
- #define SOXR __attribute__ ((visibility("default")))
- #else
- #define SOXR
- #endif
- typedef struct soxr_io_spec soxr_io_spec_t;
- typedef struct soxr_quality_spec soxr_quality_spec_t;
- typedef struct soxr_runtime_spec soxr_runtime_spec_t;
- #define SOXR_VERSION(x,y,z) (((x)<<16)|((y)<<8)|(z))
- #define SOXR_THIS_VERSION SOXR_VERSION(0,1,2)
- #define SOXR_THIS_VERSION_STR "0.1.2"
- typedef struct soxr * soxr_t;
- typedef char const * soxr_error_t;
- typedef void * soxr_buf_t;
- typedef void const * soxr_cbuf_t;
- typedef soxr_buf_t const * soxr_bufs_t;
- typedef soxr_cbuf_t const * soxr_cbufs_t;
- typedef void const * soxr_in_t;
- typedef void * soxr_out_t;
- SOXR char const * soxr_version(void);
- #define soxr_strerror(e) \
- ((e)?(e):"no error")
- SOXR soxr_t soxr_create(
- double input_rate,
- double output_rate,
- unsigned num_channels,
-
- soxr_error_t *,
- soxr_io_spec_t const *,
- soxr_quality_spec_t const *,
- soxr_runtime_spec_t const *);
- SOXR soxr_error_t soxr_process(
- soxr_t resampler,
-
- soxr_in_t in,
- size_t ilen,
- size_t * idone,
-
- soxr_out_t out,
- size_t olen,
- size_t * odone);
- typedef size_t
- (* soxr_input_fn_t)(
- void * input_fn_state,
- soxr_in_t * data,
- size_t requested_len);
- SOXR soxr_error_t soxr_set_input_fn(
- soxr_t resampler,
- soxr_input_fn_t,
- void * input_fn_state,
- size_t max_ilen);
- SOXR size_t soxr_output(
- soxr_t resampler,
- soxr_out_t data,
- size_t olen);
- SOXR soxr_error_t soxr_error(soxr_t);
- SOXR size_t * soxr_num_clips(soxr_t);
- SOXR double soxr_delay(soxr_t);
- SOXR char const * soxr_engine(soxr_t p);
- SOXR soxr_error_t soxr_clear(soxr_t);
- SOXR void soxr_delete(soxr_t);
- SOXR soxr_error_t soxr_oneshot(
- double input_rate,
- double output_rate,
- unsigned num_channels,
- soxr_in_t in , size_t ilen, size_t * idone,
- soxr_out_t out, size_t olen, size_t * odone,
- soxr_io_spec_t const *,
- soxr_quality_spec_t const *,
- soxr_runtime_spec_t const *);
- SOXR soxr_error_t soxr_set_io_ratio(soxr_t, double io_ratio, size_t slew_len);
- typedef enum {
-
- SOXR_FLOAT32, SOXR_FLOAT64, SOXR_INT32, SOXR_INT16, SOXR_SPLIT = 4,
-
- SOXR_FLOAT32_I = SOXR_FLOAT32, SOXR_FLOAT64_I, SOXR_INT32_I, SOXR_INT16_I,
-
- SOXR_FLOAT32_S = SOXR_SPLIT , SOXR_FLOAT64_S, SOXR_INT32_S, SOXR_INT16_S
- } soxr_datatype_t;
- #define soxr_datatype_size(x) \
- ((unsigned char *)"\4\10\4\2")[(x)&3]
- struct soxr_io_spec {
- soxr_datatype_t itype;
- soxr_datatype_t otype;
- double scale;
- void * e;
- unsigned long flags;
- };
- #define SOXR_TPDF 0
- #define SOXR_NO_DITHER 8u
- struct soxr_quality_spec {
- double precision;
- double phase_response;
- double passband_end;
- double stopband_begin;
- void * e;
- unsigned long flags;
- };
- #define SOXR_ROLLOFF_SMALL 0u
- #define SOXR_ROLLOFF_MEDIUM 1u
- #define SOXR_ROLLOFF_NONE 2u
- #define SOXR_MAINTAIN_3DB_PT 4u
- #define SOXR_HI_PREC_CLOCK 8u
- #define SOXR_DOUBLE_PRECISION 16u
- #define SOXR_VR 32u
- struct soxr_runtime_spec {
- unsigned log2_min_dft_size;
- unsigned log2_large_dft_size;
- unsigned coef_size_kbytes;
- unsigned num_threads;
- void * e;
- unsigned long flags;
- };
-
- #define SOXR_COEF_INTERP_AUTO 0u
- #define SOXR_COEF_INTERP_LOW 2u
- #define SOXR_COEF_INTERP_HIGH 3u
- #define SOXR_STRICT_BUFFERING 4u
- #define SOXR_NOSMALLINTOPT 8u
- SOXR soxr_quality_spec_t soxr_quality_spec(
- unsigned long recipe,
- unsigned long flags);
-
- #define SOXR_QQ 0
- #define SOXR_LQ 1
- #define SOXR_MQ 2
- #define SOXR_HQ SOXR_20_BITQ
- #define SOXR_VHQ SOXR_28_BITQ
- #define SOXR_16_BITQ 3
- #define SOXR_20_BITQ 4
- #define SOXR_24_BITQ 5
- #define SOXR_28_BITQ 6
- #define SOXR_32_BITQ 7
-
- #define SOXR_LSR0Q 8
- #define SOXR_LSR1Q 9
- #define SOXR_LSR2Q 10
- #define SOXR_LINEAR_PHASE 0x00
- #define SOXR_INTERMEDIATE_PHASE 0x10
- #define SOXR_MINIMUM_PHASE 0x30
- #define SOXR_STEEP_FILTER 0x40
- #define SOXR_ALLOW_ALIASING 0x80
- SOXR soxr_runtime_spec_t soxr_runtime_spec(
- unsigned num_threads);
- SOXR soxr_io_spec_t soxr_io_spec(
- soxr_datatype_t itype,
- soxr_datatype_t otype);
- SOXR soxr_error_t soxr_set_error(soxr_t, soxr_error_t);
- SOXR soxr_error_t soxr_set_num_channels(soxr_t, unsigned);
- #undef SOXR
- #if defined __cplusplus
- }
- #endif
- #endif
|