2017-11-13 18:15:09 +00:00
|
|
|
#include "../libfilter/iir_filter.h"
|
2016-03-01 17:40:38 +00:00
|
|
|
|
|
|
|
typedef struct samplerate {
|
2016-04-17 13:17:38 +00:00
|
|
|
double factor;
|
2022-12-15 08:53:38 +00:00
|
|
|
double filter_cutoff;
|
2016-03-01 17:40:38 +00:00
|
|
|
struct {
|
2017-05-13 14:04:00 +00:00
|
|
|
iir_filter_t lp;
|
2017-02-05 12:16:39 +00:00
|
|
|
sample_t last_sample;
|
2016-04-24 05:09:25 +00:00
|
|
|
double in_index;
|
2016-03-01 17:40:38 +00:00
|
|
|
} down;
|
|
|
|
struct {
|
2017-05-13 14:04:00 +00:00
|
|
|
iir_filter_t lp;
|
2022-08-20 15:28:05 +00:00
|
|
|
sample_t current_sample;
|
2017-02-05 12:16:39 +00:00
|
|
|
sample_t last_sample;
|
2016-04-24 05:09:25 +00:00
|
|
|
double in_index;
|
2016-03-01 17:40:38 +00:00
|
|
|
} up;
|
|
|
|
} samplerate_t;
|
|
|
|
|
2017-05-13 14:04:00 +00:00
|
|
|
int init_samplerate(samplerate_t *state, double low_samplerate, double high_samplerate, double filter_cutoff);
|
2017-01-27 15:57:34 +00:00
|
|
|
int samplerate_downsample(samplerate_t *state, sample_t *samples, int input_num);
|
2022-07-31 05:55:14 +00:00
|
|
|
int samplerate_upsample_input_num(samplerate_t *state, int output_num);
|
|
|
|
int samplerate_upsample_output_num(samplerate_t *state, int input_num);
|
|
|
|
void samplerate_upsample(samplerate_t *state, sample_t *input, int input_num, sample_t *output, int output_num);
|