27 #include <samplerate.h> 34 D(
Quality quality,
int channels,
int chunkSize);
37 int resample(
float **in,
float **out,
38 int incount,
float ratio,
42 int incount,
float ratio,
65 m_src = src_new(quality ==
Best ? SRC_SINC_BEST_QUALITY :
66 quality ==
Fastest ? SRC_LINEAR :
94 int incount,
float ratio,
97 if (m_channels == 1) {
101 int outcount = lrintf(ceilf(incount * ratio));
103 if (incount * m_channels > m_iinsize) {
104 m_iinsize = incount * m_channels;
105 m_iin = (
float *)realloc(m_iin, m_iinsize *
sizeof(
float));
107 if (outcount * m_channels > m_ioutsize) {
108 m_ioutsize = outcount * m_channels;
109 m_iout = (
float *)realloc(m_iout, m_ioutsize *
sizeof(
float));
111 for (
int i = 0; i < incount; ++i) {
112 for (
int c = 0; c < m_channels; ++c) {
113 m_iin[i * m_channels + c] = in[c][i];
119 for (
int i = 0; i < gen; ++i) {
120 for (
int c = 0; c < m_channels; ++c) {
121 out[c][i] = m_iout[i * m_channels + c];
130 int incount,
float ratio,
135 int outcount = lrintf(ceilf(incount * ratio));
139 data.input_frames = incount;
140 data.output_frames = outcount;
141 data.src_ratio = ratio;
142 data.end_of_input = (
final ? 1 : 0);
144 int err = src_process(m_src, &data);
147 cerr <<
"Resampler: ERROR: src_process returned error: " <<
148 src_strerror(err) << endl;
152 if (data.input_frames_used != (
int)incount) {
153 cerr <<
"Resampler: NOTE: input_frames_used == " << data.input_frames_used <<
" (while incount = " << incount <<
")" << endl;
156 return data.output_frames_gen;
167 m_d =
new D(quality, channels, chunkSize);
177 int incount,
float ratio,
180 return m_d->
resample(in, out, incount, ratio,
final);
185 int incount,
float ratio,
int resampleInterleaved(float *in, float *out, int incount, float ratio, bool final)
int resampleInterleaved(float *in, float *out, int incount, float ratio, bool final=false)
int resample(float **in, float **out, int incount, float ratio, bool final)
Resampler(Quality quality, int channels, int chunkSize=0)
int resample(float **in, float **out, int incount, float ratio, bool final=false)
D(Quality quality, int channels, int chunkSize)