mirror of
https://github.com/overte-org/overte.git
synced 2025-04-25 17:35:45 +02:00
Add support for deinterleaved float-point audio (native format)
This commit is contained in:
parent
d3c006b5da
commit
ad8f17a142
2 changed files with 9 additions and 5 deletions
|
@ -824,7 +824,7 @@ void AudioSRC::convertOutputToFloat(float** inputs, float* output, int numFrames
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
int AudioSRC::processFloat(float** inputs, float** outputs, int inputFrames) {
|
int AudioSRC::render(float** inputs, float** outputs, int inputFrames) {
|
||||||
int outputFrames = 0;
|
int outputFrames = 0;
|
||||||
|
|
||||||
int nh = std::min(_numHistory, inputFrames); // number of frames from history buffer
|
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);
|
convertInputFromInt16(input, _inputs, ni);
|
||||||
|
|
||||||
int no = processFloat(_inputs, _outputs, ni);
|
int no = render(_inputs, _outputs, ni);
|
||||||
assert(no <= SRC_BLOCK);
|
assert(no <= SRC_BLOCK);
|
||||||
|
|
||||||
convertOutputToInt16(_outputs, output, no);
|
convertOutputToInt16(_outputs, output, no);
|
||||||
|
@ -981,7 +981,7 @@ int AudioSRC::render(const float* input, float* output, int inputFrames) {
|
||||||
|
|
||||||
convertInputFromFloat(input, _inputs, ni);
|
convertInputFromFloat(input, _inputs, ni);
|
||||||
|
|
||||||
int no = processFloat(_inputs, _outputs, ni);
|
int no = render(_inputs, _outputs, ni);
|
||||||
assert(no <= SRC_BLOCK);
|
assert(no <= SRC_BLOCK);
|
||||||
|
|
||||||
convertOutputToFloat(_outputs, output, no);
|
convertOutputToFloat(_outputs, output, no);
|
||||||
|
|
|
@ -34,7 +34,13 @@ public:
|
||||||
AudioSRC(int inputSampleRate, int outputSampleRate, int numChannels);
|
AudioSRC(int inputSampleRate, int outputSampleRate, int numChannels);
|
||||||
~AudioSRC();
|
~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);
|
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 render(const float* input, float* output, int inputFrames);
|
||||||
|
|
||||||
int getMinOutput(int inputFrames);
|
int getMinOutput(int inputFrames);
|
||||||
|
@ -81,8 +87,6 @@ private:
|
||||||
|
|
||||||
void convertInputFromFloat(const float* input, float** outputs, int numFrames);
|
void convertInputFromFloat(const float* input, float** outputs, int numFrames);
|
||||||
void convertOutputToFloat(float** inputs, float* output, int numFrames);
|
void convertOutputToFloat(float** inputs, float* output, int numFrames);
|
||||||
|
|
||||||
int processFloat(float** inputs, float** outputs, int inputFrames);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // AudioSRC_h
|
#endif // AudioSRC_h
|
||||||
|
|
Loading…
Reference in a new issue