|
|
|
@ -25,6 +25,35 @@ |
|
|
|
|
#include "internal.h" |
|
|
|
|
#include "audio_data.h" |
|
|
|
|
|
|
|
|
|
struct ResampleContext { |
|
|
|
|
AVAudioResampleContext *avr; |
|
|
|
|
AudioData *buffer; |
|
|
|
|
uint8_t *filter_bank; |
|
|
|
|
int filter_length; |
|
|
|
|
int ideal_dst_incr; |
|
|
|
|
int dst_incr; |
|
|
|
|
unsigned int index; |
|
|
|
|
int frac; |
|
|
|
|
int src_incr; |
|
|
|
|
int compensation_distance; |
|
|
|
|
int phase_shift; |
|
|
|
|
int phase_mask; |
|
|
|
|
int linear; |
|
|
|
|
enum AVResampleFilterType filter_type; |
|
|
|
|
int kaiser_beta; |
|
|
|
|
void (*set_filter)(void *filter, double *tab, int phase, int tap_count); |
|
|
|
|
void (*resample_one)(struct ResampleContext *c, void *dst0, |
|
|
|
|
int dst_index, const void *src0, |
|
|
|
|
unsigned int index, int frac); |
|
|
|
|
void (*resample_nearest)(void *dst0, int dst_index, |
|
|
|
|
const void *src0, unsigned int index); |
|
|
|
|
int padding_size; |
|
|
|
|
int initial_padding_filled; |
|
|
|
|
int initial_padding_samples; |
|
|
|
|
int final_padding_filled; |
|
|
|
|
int final_padding_samples; |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Allocate and initialize a ResampleContext. |
|
|
|
|
* |
|
|
|
|