From ad8f17a1425b2cf11de348d8daa250dbb4d8111b Mon Sep 17 00:00:00 2001 From: Ken Cooke Date: Fri, 1 Jul 2016 19:29:43 -0700 Subject: [PATCH] Add support for deinterleaved float-point audio (native format) --- libraries/audio/src/AudioSRC.cpp | 6 +++--- libraries/audio/src/AudioSRC.h | 8 ++++++-- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/libraries/audio/src/AudioSRC.cpp b/libraries/audio/src/AudioSRC.cpp index 688e36c777..185ad948e7 100644 --- a/libraries/audio/src/AudioSRC.cpp +++ b/libraries/audio/src/AudioSRC.cpp @@ -824,7 +824,7 @@ void AudioSRC::convertOutputToFloat(float** inputs, float* output, int numFrames #endif -int AudioSRC::processFloat(float** inputs, float** outputs, int inputFrames) { +int AudioSRC::render(float** inputs, float** outputs, int inputFrames) { int outputFrames = 0; int nh = std::min(_numHistory, inputFrames); // number of frames from history buffer @@ -955,7 +955,7 @@ int AudioSRC::render(const int16_t* input, int16_t* output, int inputFrames) { convertInputFromInt16(input, _inputs, ni); - int no = processFloat(_inputs, _outputs, ni); + int no = render(_inputs, _outputs, ni); assert(no <= SRC_BLOCK); convertOutputToInt16(_outputs, output, no); @@ -981,7 +981,7 @@ int AudioSRC::render(const float* input, float* output, int inputFrames) { convertInputFromFloat(input, _inputs, ni); - int no = processFloat(_inputs, _outputs, ni); + int no = render(_inputs, _outputs, ni); assert(no <= SRC_BLOCK); convertOutputToFloat(_outputs, output, no); diff --git a/libraries/audio/src/AudioSRC.h b/libraries/audio/src/AudioSRC.h index 409507f68e..e8c8f4370f 100644 --- a/libraries/audio/src/AudioSRC.h +++ b/libraries/audio/src/AudioSRC.h @@ -34,7 +34,13 @@ public: AudioSRC(int inputSampleRate, int outputSampleRate, int numChannels); ~AudioSRC(); + // deinterleaved float input/output (native format) + int render(float** inputs, float** outputs, int inputFrames); + + // interleaved int16_t input/output int render(const int16_t* input, int16_t* output, int inputFrames); + + // interleaved float input/output int render(const float* input, float* output, int inputFrames); int getMinOutput(int inputFrames); @@ -81,8 +87,6 @@ private: void convertInputFromFloat(const float* input, float** outputs, int numFrames); void convertOutputToFloat(float** inputs, float* output, int numFrames); - - int processFloat(float** inputs, float** outputs, int inputFrames); }; #endif // AudioSRC_h