From 693606b9694e1ee6eea1a032096d9699810bf306 Mon Sep 17 00:00:00 2001 From: bruceperens Date: Fri, 30 May 2014 15:22:47 +0000 Subject: [PATCH] Figure out SOXR configuration. git-svn-id: https://svn.code.sf.net/p/freetel/code@1618 01035d8c-6547-0410-b346-abe4f91aad63 --- freedv-server/source/interpolate.cpp | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/freedv-server/source/interpolate.cpp b/freedv-server/source/interpolate.cpp index ff10a157..0c10128f 100644 --- a/freedv-server/source/interpolate.cpp +++ b/freedv-server/source/interpolate.cpp @@ -12,7 +12,13 @@ namespace FreeDV { std::size_t in_length, std::size_t out_length) { - std::size_t out_done = 0; + std::size_t in_done = 0; + std::size_t out_done = 0; + const unsigned int number_of_channels = 1; + const soxr_io_spec_t io_spec = soxr_io_spec(SOXR_INT16_S, SOXR_INT16_S); + const soxr_quality_spec_t quality_spec = soxr_quality_spec( + SOXR_QQ, SOXR_NO_DITHER); + const soxr_runtime_spec_t runtime_spec = soxr_runtime_spec(1); /// The "Gibbs effect" may be seen because I don't save data from the /// previous block. Fix this by making the resampler a class, @@ -21,16 +27,16 @@ namespace FreeDV { const soxr_error_t error = soxr_oneshot( in_rate, out_rate, - 1, // Number of channels. + number_of_channels, // Number of channels. in, in_length, - NULL, + &in_done, out, out_length, &out_done, - NULL, - NULL, - NULL); + io_spec, + quality_spec, + runtime_spec); } }; #endif -- 2.25.1