mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-11-03 09:01:54 -05:00
audioconvert: add simple and faster resampler
Add a sinc based resampler that, unlike speex, avoids memcpy and works directly on the source data. It also allows for ssse3 optimizations and aligned loads. It will later switch to table interpolation when doing variable rate.
This commit is contained in:
parent
f29d14fcc8
commit
9c8913437b
10 changed files with 720 additions and 7 deletions
|
|
@ -30,12 +30,13 @@ struct resample {
|
|||
uint32_t i_rate;
|
||||
uint32_t o_rate;
|
||||
|
||||
void (*free) (struct resample *r);
|
||||
void (*update_rate) (struct resample *r, double rate);
|
||||
void (*process) (struct resample *r,
|
||||
const void * SPA_RESTRICT src[], uint32_t *in_len,
|
||||
void * SPA_RESTRICT dst[], uint32_t *out_len);
|
||||
void (*reset) (struct resample *r);
|
||||
void (*free) (struct resample *r);
|
||||
void (*update_rate) (struct resample *r, double rate);
|
||||
void (*process) (struct resample *r,
|
||||
const void * SPA_RESTRICT src[], uint32_t *in_len,
|
||||
void * SPA_RESTRICT dst[], uint32_t *out_len);
|
||||
void (*reset) (struct resample *r);
|
||||
uint32_t (*delay) (struct resample *r);
|
||||
void *data;
|
||||
};
|
||||
|
||||
|
|
@ -43,3 +44,4 @@ struct resample {
|
|||
#define resample_update_rate(r,...) (r)->update_rate(r,__VA_ARGS__)
|
||||
#define resample_process(r,...) (r)->process(r,__VA_ARGS__)
|
||||
#define resample_reset(r) (r)->reset(r)
|
||||
#define resample_delay(r) (r)->delay(r)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue