On 02/07/2014 11:26 PM, André Garnier Coutinho wrote:
> Hi Guys!
>
> I was doing some tests to learn how to use zita resampler and I got an
> unexpected output. All the last positions of my output vector were 0 and I
> don't know why.
>
[..]
> Does anyone know what I am doing wrong?
Fons may have a detailed explanation. In code where I use zita-resampler
I do initially feed it with a cycle of zeroes.
Doing the same fixes the behaviour in your code.
see also <zita-resampler-src>/apps/zresample.cc
it also has a // Insert zero samples at start.
> I'm attaching my code.
I'm attaching a quick diff :)
Cheers!
robin
PS. over.setup(..., 16) is rather poor quality.
--- a/main.cpp 2014-02-07 23:38:34.479692524 +0100
+++ b/main.cpp 2014-02-07 23:47:45.346424129 +0100
@@ -34,8 +34,22 @@
cout << "buffer[" << i << "] = " << buffer[i] << endl;
}
+
Resampler over;
over.setup(samplerate, n_over*samplerate, 1, 16);
+
+ /* initialize resampler */
+#define RSZ_INIT_SIZE (n_samples)
+ float *zeroes = (float*) calloc(RSZ_INIT_SIZE, sizeof(float));
+ float *scratch = (float*) calloc(n_over * RSZ_INIT_SIZE, sizeof(float));
+ over.inp_count = RSZ_INIT_SIZE;
+ over.inp_data = zeroes;
+ over.out_count = RSZ_INIT_SIZE * n_over;
+ over.out_data = scratch;
+ over.process ();
+ free(zeroes);
+ free(scratch);
+
over.inp_count = n_samples;
over.out_count = n_samples*n_over;
over.inp_data = buffer;
_______________________________________________
Linux-audio-dev mailing list
[email protected]
http://lists.linuxaudio.org/listinfo/linux-audio-dev