Add support for deinterleaved float-point audio (native format)

This commit is contained in:
Ken Cooke 2016-07-01 19:29:43 -07:00
parent d3c006b5da
commit ad8f17a142
2 changed files with 9 additions and 5 deletions

View file

@ -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);

View file

@ -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