From dc20fccbbec601cca84adb248d0c9550471990fc Mon Sep 17 00:00:00 2001 From: Marcus Tomlinson Date: Sat, 22 Apr 2017 19:12:22 +0200 Subject: –Added interpolation to WASAPI's sample rate converter MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- RtAudio.cpp | 147 +++++++++++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 116 insertions(+), 31 deletions(-) (limited to 'RtAudio.cpp') diff --git a/RtAudio.cpp b/RtAudio.cpp index 882fa0e..cdb98d7 100644 --- a/RtAudio.cpp +++ b/RtAudio.cpp @@ -1,4 +1,4 @@ -/************************************************************************/ +/************************************************************************/ /*! \class RtAudio \brief Realtime audio i/o C++ classes. @@ -3859,8 +3859,7 @@ private: // In order to satisfy WASAPI's buffer requirements, we need a means of converting sample rate // between HW and the user. The convertBufferWasapi function is used to perform this conversion // between HwIn->UserIn and UserOut->HwOut during the stream callback loop. -// This sample rate converter favors speed over quality, and works best with conversions between -// one rate and its multiple. +// This sample rate converter works best with conversions between one rate and its multiple. void convertBufferWasapi( char* outBuffer, const char* inBuffer, const unsigned int& channelCount, @@ -3872,40 +3871,126 @@ void convertBufferWasapi( char* outBuffer, { // calculate the new outSampleCount and relative sampleStep float sampleRatio = ( float ) outSampleRate / inSampleRate; + float sampleRatioInv = ( float ) 1 / sampleRatio; float sampleStep = 1.0f / sampleRatio; float inSampleFraction = 0.0f; outSampleCount = ( unsigned int ) roundf( inSampleCount * sampleRatio ); - // frame-by-frame, copy each relative input sample into it's corresponding output sample - for ( unsigned int outSample = 0; outSample < outSampleCount; outSample++ ) + // if inSampleRate is a multiple of outSampleRate (or vice versa) there's no need to interpolate + if (floor(sampleRatio) == sampleRatio || floor(sampleRatioInv) == sampleRatioInv) { - unsigned int inSample = ( unsigned int ) inSampleFraction; - - switch ( format ) - { - case RTAUDIO_SINT8: - memcpy( &( ( char* ) outBuffer )[ outSample * channelCount ], &( ( char* ) inBuffer )[ inSample * channelCount ], channelCount * sizeof( char ) ); - break; - case RTAUDIO_SINT16: - memcpy( &( ( short* ) outBuffer )[ outSample * channelCount ], &( ( short* ) inBuffer )[ inSample * channelCount ], channelCount * sizeof( short ) ); - break; - case RTAUDIO_SINT24: - memcpy( &( ( S24* ) outBuffer )[ outSample * channelCount ], &( ( S24* ) inBuffer )[ inSample * channelCount ], channelCount * sizeof( S24 ) ); - break; - case RTAUDIO_SINT32: - memcpy( &( ( int* ) outBuffer )[ outSample * channelCount ], &( ( int* ) inBuffer )[ inSample * channelCount ], channelCount * sizeof( int ) ); - break; - case RTAUDIO_FLOAT32: - memcpy( &( ( float* ) outBuffer )[ outSample * channelCount ], &( ( float* ) inBuffer )[ inSample * channelCount ], channelCount * sizeof( float ) ); - break; - case RTAUDIO_FLOAT64: - memcpy( &( ( double* ) outBuffer )[ outSample * channelCount ], &( ( double* ) inBuffer )[ inSample * channelCount ], channelCount * sizeof( double ) ); - break; - } - - // jump to next in sample - inSampleFraction += sampleStep; + // frame-by-frame, copy each relative input sample into it's corresponding output sample + for (unsigned int outSample = 0; outSample < outSampleCount; outSample++) + { + unsigned int inSample = (unsigned int)inSampleFraction; + + switch (format) + { + case RTAUDIO_SINT8: + memcpy(&((char*)outBuffer)[outSample * channelCount], &((char*)inBuffer)[inSample * channelCount], channelCount * sizeof(char)); + break; + case RTAUDIO_SINT16: + memcpy(&((short*)outBuffer)[outSample * channelCount], &((short*)inBuffer)[inSample * channelCount], channelCount * sizeof(short)); + break; + case RTAUDIO_SINT24: + memcpy(&((S24*)outBuffer)[outSample * channelCount], &((S24*)inBuffer)[inSample * channelCount], channelCount * sizeof(S24)); + break; + case RTAUDIO_SINT32: + memcpy(&((int*)outBuffer)[outSample * channelCount], &((int*)inBuffer)[inSample * channelCount], channelCount * sizeof(int)); + break; + case RTAUDIO_FLOAT32: + memcpy(&((float*)outBuffer)[outSample * channelCount], &((float*)inBuffer)[inSample * channelCount], channelCount * sizeof(float)); + break; + case RTAUDIO_FLOAT64: + memcpy(&((double*)outBuffer)[outSample * channelCount], &((double*)inBuffer)[inSample * channelCount], channelCount * sizeof(double)); + break; + } + + // jump to next in sample + inSampleFraction += sampleStep; + } + } + else // else interpolate + { + // frame-by-frame, copy each relative input sample into it's corresponding output sample + for (unsigned int outSample = 0; outSample < outSampleCount; outSample++) + { + unsigned int inSample = (unsigned int)inSampleFraction; + + switch (format) + { + case RTAUDIO_SINT8: + { + for (unsigned int channel = 0; channel < channelCount; channel++) + { + char fromSample = ((char*)inBuffer)[(inSample * channelCount) + channel]; + char toSample = ((char*)inBuffer)[((inSample + 1) * channelCount) + channel]; + float sampleDiff = (toSample - fromSample) * (inSampleFraction - floor(inSampleFraction)); + ((char*)outBuffer)[(outSample * channelCount) + channel] = fromSample + (char)sampleDiff; + } + break; + } + case RTAUDIO_SINT16: + { + for (unsigned int channel = 0; channel < channelCount; channel++) + { + short fromSample = ((short*)inBuffer)[(inSample * channelCount) + channel]; + short toSample = ((short*)inBuffer)[((inSample + 1) * channelCount) + channel]; + float sampleDiff = (toSample - fromSample) * (inSampleFraction - floor(inSampleFraction)); + ((short*)outBuffer)[(outSample * channelCount) + channel] = fromSample + (short)sampleDiff; + } + break; + } + case RTAUDIO_SINT24: + { + for (unsigned int channel = 0; channel < channelCount; channel++) + { + int fromSample = ((S24*)inBuffer)[(inSample * channelCount) + channel].asInt(); + int toSample = ((S24*)inBuffer)[((inSample + 1) * channelCount) + channel].asInt(); + float sampleDiff = (toSample - fromSample) * (inSampleFraction - floor(inSampleFraction)); + ((S24*)outBuffer)[(outSample * channelCount) + channel] = fromSample + (int)sampleDiff; + } + break; + } + case RTAUDIO_SINT32: + { + for (unsigned int channel = 0; channel < channelCount; channel++) + { + int fromSample = ((int*)inBuffer)[(inSample * channelCount) + channel]; + int toSample = ((int*)inBuffer)[((inSample + 1) * channelCount) + channel]; + float sampleDiff = (toSample - fromSample) * (inSampleFraction - floor(inSampleFraction)); + ((int*)outBuffer)[(outSample * channelCount) + channel] = fromSample + (int)sampleDiff; + } + break; + } + case RTAUDIO_FLOAT32: + { + for (unsigned int channel = 0; channel < channelCount; channel++) + { + float fromSample = ((float*)inBuffer)[(inSample * channelCount) + channel]; + float toSample = ((float*)inBuffer)[((inSample + 1) * channelCount) + channel]; + float sampleDiff = (toSample - fromSample) * (inSampleFraction - floor(inSampleFraction)); + ((float*)outBuffer)[(outSample * channelCount) + channel] = fromSample + sampleDiff; + } + break; + } + case RTAUDIO_FLOAT64: + { + for (unsigned int channel = 0; channel < channelCount; channel++) + { + double fromSample = ((double*)inBuffer)[(inSample * channelCount) + channel]; + double toSample = ((double*)inBuffer)[((inSample + 1) * channelCount) + channel]; + double sampleDiff = (toSample - fromSample) * (inSampleFraction - floor(inSampleFraction)); + ((double*)outBuffer)[(outSample * channelCount) + channel] = fromSample + sampleDiff; + } + break; + } + } + + // jump to next in sample + inSampleFraction += sampleStep; + } } } -- cgit v1.2.3 From 706a281ea84117da2e1afb32e82ed824fc787268 Mon Sep 17 00:00:00 2001 From: Marcus Tomlinson Date: Sat, 22 Apr 2017 19:14:49 +0200 Subject: –Tabs -> Spaces MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- RtAudio.cpp | 264 ++++++++++++++++++++++++++++++------------------------------ 1 file changed, 132 insertions(+), 132 deletions(-) (limited to 'RtAudio.cpp') diff --git a/RtAudio.cpp b/RtAudio.cpp index cdb98d7..9ebe49d 100644 --- a/RtAudio.cpp +++ b/RtAudio.cpp @@ -3860,138 +3860,138 @@ private: // between HW and the user. The convertBufferWasapi function is used to perform this conversion // between HwIn->UserIn and UserOut->HwOut during the stream callback loop. // This sample rate converter works best with conversions between one rate and its multiple. -void convertBufferWasapi( char* outBuffer, - const char* inBuffer, - const unsigned int& channelCount, - const unsigned int& inSampleRate, - const unsigned int& outSampleRate, - const unsigned int& inSampleCount, - unsigned int& outSampleCount, - const RtAudioFormat& format ) -{ - // calculate the new outSampleCount and relative sampleStep - float sampleRatio = ( float ) outSampleRate / inSampleRate; - float sampleRatioInv = ( float ) 1 / sampleRatio; - float sampleStep = 1.0f / sampleRatio; - float inSampleFraction = 0.0f; - - outSampleCount = ( unsigned int ) roundf( inSampleCount * sampleRatio ); - - // if inSampleRate is a multiple of outSampleRate (or vice versa) there's no need to interpolate - if (floor(sampleRatio) == sampleRatio || floor(sampleRatioInv) == sampleRatioInv) - { - // frame-by-frame, copy each relative input sample into it's corresponding output sample - for (unsigned int outSample = 0; outSample < outSampleCount; outSample++) - { - unsigned int inSample = (unsigned int)inSampleFraction; - - switch (format) - { - case RTAUDIO_SINT8: - memcpy(&((char*)outBuffer)[outSample * channelCount], &((char*)inBuffer)[inSample * channelCount], channelCount * sizeof(char)); - break; - case RTAUDIO_SINT16: - memcpy(&((short*)outBuffer)[outSample * channelCount], &((short*)inBuffer)[inSample * channelCount], channelCount * sizeof(short)); - break; - case RTAUDIO_SINT24: - memcpy(&((S24*)outBuffer)[outSample * channelCount], &((S24*)inBuffer)[inSample * channelCount], channelCount * sizeof(S24)); - break; - case RTAUDIO_SINT32: - memcpy(&((int*)outBuffer)[outSample * channelCount], &((int*)inBuffer)[inSample * channelCount], channelCount * sizeof(int)); - break; - case RTAUDIO_FLOAT32: - memcpy(&((float*)outBuffer)[outSample * channelCount], &((float*)inBuffer)[inSample * channelCount], channelCount * sizeof(float)); - break; - case RTAUDIO_FLOAT64: - memcpy(&((double*)outBuffer)[outSample * channelCount], &((double*)inBuffer)[inSample * channelCount], channelCount * sizeof(double)); - break; - } - - // jump to next in sample - inSampleFraction += sampleStep; - } - } - else // else interpolate - { - // frame-by-frame, copy each relative input sample into it's corresponding output sample - for (unsigned int outSample = 0; outSample < outSampleCount; outSample++) - { - unsigned int inSample = (unsigned int)inSampleFraction; - - switch (format) - { - case RTAUDIO_SINT8: - { - for (unsigned int channel = 0; channel < channelCount; channel++) - { - char fromSample = ((char*)inBuffer)[(inSample * channelCount) + channel]; - char toSample = ((char*)inBuffer)[((inSample + 1) * channelCount) + channel]; - float sampleDiff = (toSample - fromSample) * (inSampleFraction - floor(inSampleFraction)); - ((char*)outBuffer)[(outSample * channelCount) + channel] = fromSample + (char)sampleDiff; - } - break; - } - case RTAUDIO_SINT16: - { - for (unsigned int channel = 0; channel < channelCount; channel++) - { - short fromSample = ((short*)inBuffer)[(inSample * channelCount) + channel]; - short toSample = ((short*)inBuffer)[((inSample + 1) * channelCount) + channel]; - float sampleDiff = (toSample - fromSample) * (inSampleFraction - floor(inSampleFraction)); - ((short*)outBuffer)[(outSample * channelCount) + channel] = fromSample + (short)sampleDiff; - } - break; - } - case RTAUDIO_SINT24: - { - for (unsigned int channel = 0; channel < channelCount; channel++) - { - int fromSample = ((S24*)inBuffer)[(inSample * channelCount) + channel].asInt(); - int toSample = ((S24*)inBuffer)[((inSample + 1) * channelCount) + channel].asInt(); - float sampleDiff = (toSample - fromSample) * (inSampleFraction - floor(inSampleFraction)); - ((S24*)outBuffer)[(outSample * channelCount) + channel] = fromSample + (int)sampleDiff; - } - break; - } - case RTAUDIO_SINT32: - { - for (unsigned int channel = 0; channel < channelCount; channel++) - { - int fromSample = ((int*)inBuffer)[(inSample * channelCount) + channel]; - int toSample = ((int*)inBuffer)[((inSample + 1) * channelCount) + channel]; - float sampleDiff = (toSample - fromSample) * (inSampleFraction - floor(inSampleFraction)); - ((int*)outBuffer)[(outSample * channelCount) + channel] = fromSample + (int)sampleDiff; - } - break; - } - case RTAUDIO_FLOAT32: - { - for (unsigned int channel = 0; channel < channelCount; channel++) - { - float fromSample = ((float*)inBuffer)[(inSample * channelCount) + channel]; - float toSample = ((float*)inBuffer)[((inSample + 1) * channelCount) + channel]; - float sampleDiff = (toSample - fromSample) * (inSampleFraction - floor(inSampleFraction)); - ((float*)outBuffer)[(outSample * channelCount) + channel] = fromSample + sampleDiff; - } - break; - } - case RTAUDIO_FLOAT64: - { - for (unsigned int channel = 0; channel < channelCount; channel++) - { - double fromSample = ((double*)inBuffer)[(inSample * channelCount) + channel]; - double toSample = ((double*)inBuffer)[((inSample + 1) * channelCount) + channel]; - double sampleDiff = (toSample - fromSample) * (inSampleFraction - floor(inSampleFraction)); - ((double*)outBuffer)[(outSample * channelCount) + channel] = fromSample + sampleDiff; - } - break; - } - } - - // jump to next in sample - inSampleFraction += sampleStep; - } - } +void convertBufferWasapi(char* outBuffer, + const char* inBuffer, + const unsigned int& channelCount, + const unsigned int& inSampleRate, + const unsigned int& outSampleRate, + const unsigned int& inSampleCount, + unsigned int& outSampleCount, + const RtAudioFormat& format) +{ + // calculate the new outSampleCount and relative sampleStep + float sampleRatio = (float)outSampleRate / inSampleRate; + float sampleRatioInv = (float)1 / sampleRatio; + float sampleStep = 1.0f / sampleRatio; + float inSampleFraction = 0.0f; + + outSampleCount = (unsigned int)roundf(inSampleCount * sampleRatio); + + // if inSampleRate is a multiple of outSampleRate (or vice versa) there's no need to interpolate + if (floor(sampleRatio) == sampleRatio || floor(sampleRatioInv) == sampleRatioInv) + { + // frame-by-frame, copy each relative input sample into it's corresponding output sample + for (unsigned int outSample = 0; outSample < outSampleCount; outSample++) + { + unsigned int inSample = (unsigned int)inSampleFraction; + + switch (format) + { + case RTAUDIO_SINT8: + memcpy(&((char*)outBuffer)[outSample * channelCount], &((char*)inBuffer)[inSample * channelCount], channelCount * sizeof(char)); + break; + case RTAUDIO_SINT16: + memcpy(&((short*)outBuffer)[outSample * channelCount], &((short*)inBuffer)[inSample * channelCount], channelCount * sizeof(short)); + break; + case RTAUDIO_SINT24: + memcpy(&((S24*)outBuffer)[outSample * channelCount], &((S24*)inBuffer)[inSample * channelCount], channelCount * sizeof(S24)); + break; + case RTAUDIO_SINT32: + memcpy(&((int*)outBuffer)[outSample * channelCount], &((int*)inBuffer)[inSample * channelCount], channelCount * sizeof(int)); + break; + case RTAUDIO_FLOAT32: + memcpy(&((float*)outBuffer)[outSample * channelCount], &((float*)inBuffer)[inSample * channelCount], channelCount * sizeof(float)); + break; + case RTAUDIO_FLOAT64: + memcpy(&((double*)outBuffer)[outSample * channelCount], &((double*)inBuffer)[inSample * channelCount], channelCount * sizeof(double)); + break; + } + + // jump to next in sample + inSampleFraction += sampleStep; + } + } + else // else interpolate + { + // frame-by-frame, copy each relative input sample into it's corresponding output sample + for (unsigned int outSample = 0; outSample < outSampleCount; outSample++) + { + unsigned int inSample = (unsigned int)inSampleFraction; + + switch (format) + { + case RTAUDIO_SINT8: + { + for (unsigned int channel = 0; channel < channelCount; channel++) + { + char fromSample = ((char*)inBuffer)[(inSample * channelCount) + channel]; + char toSample = ((char*)inBuffer)[((inSample + 1) * channelCount) + channel]; + float sampleDiff = (toSample - fromSample) * (inSampleFraction - floor(inSampleFraction)); + ((char*)outBuffer)[(outSample * channelCount) + channel] = fromSample + (char)sampleDiff; + } + break; + } + case RTAUDIO_SINT16: + { + for (unsigned int channel = 0; channel < channelCount; channel++) + { + short fromSample = ((short*)inBuffer)[(inSample * channelCount) + channel]; + short toSample = ((short*)inBuffer)[((inSample + 1) * channelCount) + channel]; + float sampleDiff = (toSample - fromSample) * (inSampleFraction - floor(inSampleFraction)); + ((short*)outBuffer)[(outSample * channelCount) + channel] = fromSample + (short)sampleDiff; + } + break; + } + case RTAUDIO_SINT24: + { + for (unsigned int channel = 0; channel < channelCount; channel++) + { + int fromSample = ((S24*)inBuffer)[(inSample * channelCount) + channel].asInt(); + int toSample = ((S24*)inBuffer)[((inSample + 1) * channelCount) + channel].asInt(); + float sampleDiff = (toSample - fromSample) * (inSampleFraction - floor(inSampleFraction)); + ((S24*)outBuffer)[(outSample * channelCount) + channel] = fromSample + (int)sampleDiff; + } + break; + } + case RTAUDIO_SINT32: + { + for (unsigned int channel = 0; channel < channelCount; channel++) + { + int fromSample = ((int*)inBuffer)[(inSample * channelCount) + channel]; + int toSample = ((int*)inBuffer)[((inSample + 1) * channelCount) + channel]; + float sampleDiff = (toSample - fromSample) * (inSampleFraction - floor(inSampleFraction)); + ((int*)outBuffer)[(outSample * channelCount) + channel] = fromSample + (int)sampleDiff; + } + break; + } + case RTAUDIO_FLOAT32: + { + for (unsigned int channel = 0; channel < channelCount; channel++) + { + float fromSample = ((float*)inBuffer)[(inSample * channelCount) + channel]; + float toSample = ((float*)inBuffer)[((inSample + 1) * channelCount) + channel]; + float sampleDiff = (toSample - fromSample) * (inSampleFraction - floor(inSampleFraction)); + ((float*)outBuffer)[(outSample * channelCount) + channel] = fromSample + sampleDiff; + } + break; + } + case RTAUDIO_FLOAT64: + { + for (unsigned int channel = 0; channel < channelCount; channel++) + { + double fromSample = ((double*)inBuffer)[(inSample * channelCount) + channel]; + double toSample = ((double*)inBuffer)[((inSample + 1) * channelCount) + channel]; + double sampleDiff = (toSample - fromSample) * (inSampleFraction - floor(inSampleFraction)); + ((double*)outBuffer)[(outSample * channelCount) + channel] = fromSample + sampleDiff; + } + break; + } + } + + // jump to next in sample + inSampleFraction += sampleStep; + } + } } //----------------------------------------------------------------------------- -- cgit v1.2.3 From c0b2663f7dd1a24fc5759399ea2c806f5f3833a3 Mon Sep 17 00:00:00 2001 From: Marcus Tomlinson Date: Sat, 22 Apr 2017 19:22:42 +0200 Subject: –Fix formatting MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- RtAudio.cpp | 88 ++++++++++++++++++++++++++++++------------------------------- 1 file changed, 44 insertions(+), 44 deletions(-) (limited to 'RtAudio.cpp') diff --git a/RtAudio.cpp b/RtAudio.cpp index 9ebe49d..65ed830 100644 --- a/RtAudio.cpp +++ b/RtAudio.cpp @@ -3860,50 +3860,50 @@ private: // between HW and the user. The convertBufferWasapi function is used to perform this conversion // between HwIn->UserIn and UserOut->HwOut during the stream callback loop. // This sample rate converter works best with conversions between one rate and its multiple. -void convertBufferWasapi(char* outBuffer, - const char* inBuffer, - const unsigned int& channelCount, - const unsigned int& inSampleRate, - const unsigned int& outSampleRate, - const unsigned int& inSampleCount, - unsigned int& outSampleCount, - const RtAudioFormat& format) +void convertBufferWasapi( char* outBuffer, + const char* inBuffer, + const unsigned int& channelCount, + const unsigned int& inSampleRate, + const unsigned int& outSampleRate, + const unsigned int& inSampleCount, + unsigned int& outSampleCount, + const RtAudioFormat& format ) { // calculate the new outSampleCount and relative sampleStep - float sampleRatio = (float)outSampleRate / inSampleRate; - float sampleRatioInv = (float)1 / sampleRatio; + float sampleRatio = ( float ) outSampleRate / inSampleRate; + float sampleRatioInv = ( float ) 1 / sampleRatio; float sampleStep = 1.0f / sampleRatio; float inSampleFraction = 0.0f; - outSampleCount = (unsigned int)roundf(inSampleCount * sampleRatio); + outSampleCount = ( unsigned int ) roundf( inSampleCount * sampleRatio ); // if inSampleRate is a multiple of outSampleRate (or vice versa) there's no need to interpolate - if (floor(sampleRatio) == sampleRatio || floor(sampleRatioInv) == sampleRatioInv) + if (floor( sampleRatio ) == sampleRatio || floor( sampleRatioInv ) == sampleRatioInv) { // frame-by-frame, copy each relative input sample into it's corresponding output sample for (unsigned int outSample = 0; outSample < outSampleCount; outSample++) { - unsigned int inSample = (unsigned int)inSampleFraction; + unsigned int inSample = ( unsigned int ) inSampleFraction; switch (format) { case RTAUDIO_SINT8: - memcpy(&((char*)outBuffer)[outSample * channelCount], &((char*)inBuffer)[inSample * channelCount], channelCount * sizeof(char)); + memcpy( &(( char* ) outBuffer)[outSample * channelCount], &(( char* ) inBuffer)[inSample * channelCount], channelCount * sizeof( char ) ); break; case RTAUDIO_SINT16: - memcpy(&((short*)outBuffer)[outSample * channelCount], &((short*)inBuffer)[inSample * channelCount], channelCount * sizeof(short)); + memcpy( &(( short* ) outBuffer)[outSample * channelCount], &(( short* ) inBuffer)[inSample * channelCount], channelCount * sizeof( short ) ); break; case RTAUDIO_SINT24: - memcpy(&((S24*)outBuffer)[outSample * channelCount], &((S24*)inBuffer)[inSample * channelCount], channelCount * sizeof(S24)); + memcpy( &(( S24* ) outBuffer)[outSample * channelCount], &(( S24* ) inBuffer)[inSample * channelCount], channelCount * sizeof( S24 ) ); break; case RTAUDIO_SINT32: - memcpy(&((int*)outBuffer)[outSample * channelCount], &((int*)inBuffer)[inSample * channelCount], channelCount * sizeof(int)); + memcpy( &(( int* ) outBuffer)[outSample * channelCount], &(( int* ) inBuffer)[inSample * channelCount], channelCount * sizeof( int ) ); break; case RTAUDIO_FLOAT32: - memcpy(&((float*)outBuffer)[outSample * channelCount], &((float*)inBuffer)[inSample * channelCount], channelCount * sizeof(float)); + memcpy( &(( float* ) outBuffer)[outSample * channelCount], &(( float* ) inBuffer)[inSample * channelCount], channelCount * sizeof( float ) ); break; case RTAUDIO_FLOAT64: - memcpy(&((double*)outBuffer)[outSample * channelCount], &((double*)inBuffer)[inSample * channelCount], channelCount * sizeof(double)); + memcpy( &(( double* ) outBuffer)[outSample * channelCount], &(( double* ) inBuffer)[inSample * channelCount], channelCount * sizeof( double ) ); break; } @@ -3916,7 +3916,7 @@ void convertBufferWasapi(char* outBuffer, // frame-by-frame, copy each relative input sample into it's corresponding output sample for (unsigned int outSample = 0; outSample < outSampleCount; outSample++) { - unsigned int inSample = (unsigned int)inSampleFraction; + unsigned int inSample = ( unsigned int ) inSampleFraction; switch (format) { @@ -3924,10 +3924,10 @@ void convertBufferWasapi(char* outBuffer, { for (unsigned int channel = 0; channel < channelCount; channel++) { - char fromSample = ((char*)inBuffer)[(inSample * channelCount) + channel]; - char toSample = ((char*)inBuffer)[((inSample + 1) * channelCount) + channel]; - float sampleDiff = (toSample - fromSample) * (inSampleFraction - floor(inSampleFraction)); - ((char*)outBuffer)[(outSample * channelCount) + channel] = fromSample + (char)sampleDiff; + char fromSample = (( char* ) inBuffer)[(inSample * channelCount) + channel]; + char toSample = (( char* ) inBuffer)[((inSample + 1) * channelCount) + channel]; + float sampleDiff = (toSample - fromSample) * (inSampleFraction - floor( inSampleFraction )); + (( char* ) outBuffer)[(outSample * channelCount) + channel] = fromSample + ( char ) sampleDiff; } break; } @@ -3935,10 +3935,10 @@ void convertBufferWasapi(char* outBuffer, { for (unsigned int channel = 0; channel < channelCount; channel++) { - short fromSample = ((short*)inBuffer)[(inSample * channelCount) + channel]; - short toSample = ((short*)inBuffer)[((inSample + 1) * channelCount) + channel]; - float sampleDiff = (toSample - fromSample) * (inSampleFraction - floor(inSampleFraction)); - ((short*)outBuffer)[(outSample * channelCount) + channel] = fromSample + (short)sampleDiff; + short fromSample = (( short* ) inBuffer)[(inSample * channelCount) + channel]; + short toSample = (( short* ) inBuffer)[((inSample + 1) * channelCount) + channel]; + float sampleDiff = (toSample - fromSample) * (inSampleFraction - floor( inSampleFraction )); + (( short* ) outBuffer)[(outSample * channelCount) + channel] = fromSample + ( short ) sampleDiff; } break; } @@ -3946,10 +3946,10 @@ void convertBufferWasapi(char* outBuffer, { for (unsigned int channel = 0; channel < channelCount; channel++) { - int fromSample = ((S24*)inBuffer)[(inSample * channelCount) + channel].asInt(); - int toSample = ((S24*)inBuffer)[((inSample + 1) * channelCount) + channel].asInt(); - float sampleDiff = (toSample - fromSample) * (inSampleFraction - floor(inSampleFraction)); - ((S24*)outBuffer)[(outSample * channelCount) + channel] = fromSample + (int)sampleDiff; + int fromSample = (( S24* ) inBuffer)[(inSample * channelCount) + channel].asInt(); + int toSample = (( S24* ) inBuffer)[((inSample + 1) * channelCount) + channel].asInt(); + float sampleDiff = (toSample - fromSample) * (inSampleFraction - floor( inSampleFraction )); + (( S24* ) outBuffer)[(outSample * channelCount) + channel] = fromSample + ( int ) sampleDiff; } break; } @@ -3957,10 +3957,10 @@ void convertBufferWasapi(char* outBuffer, { for (unsigned int channel = 0; channel < channelCount; channel++) { - int fromSample = ((int*)inBuffer)[(inSample * channelCount) + channel]; - int toSample = ((int*)inBuffer)[((inSample + 1) * channelCount) + channel]; - float sampleDiff = (toSample - fromSample) * (inSampleFraction - floor(inSampleFraction)); - ((int*)outBuffer)[(outSample * channelCount) + channel] = fromSample + (int)sampleDiff; + int fromSample = (( int* ) inBuffer)[(inSample * channelCount) + channel]; + int toSample = (( int* ) inBuffer)[((inSample + 1) * channelCount) + channel]; + float sampleDiff = (toSample - fromSample) * (inSampleFraction - floor( inSampleFraction )); + (( int* ) outBuffer)[(outSample * channelCount) + channel] = fromSample + ( int ) sampleDiff; } break; } @@ -3968,10 +3968,10 @@ void convertBufferWasapi(char* outBuffer, { for (unsigned int channel = 0; channel < channelCount; channel++) { - float fromSample = ((float*)inBuffer)[(inSample * channelCount) + channel]; - float toSample = ((float*)inBuffer)[((inSample + 1) * channelCount) + channel]; - float sampleDiff = (toSample - fromSample) * (inSampleFraction - floor(inSampleFraction)); - ((float*)outBuffer)[(outSample * channelCount) + channel] = fromSample + sampleDiff; + float fromSample = (( float* ) inBuffer)[(inSample * channelCount) + channel]; + float toSample = (( float* ) inBuffer)[((inSample + 1) * channelCount) + channel]; + float sampleDiff = (toSample - fromSample) * (inSampleFraction - floor( inSampleFraction )); + (( float* ) outBuffer)[(outSample * channelCount) + channel] = fromSample + sampleDiff; } break; } @@ -3979,10 +3979,10 @@ void convertBufferWasapi(char* outBuffer, { for (unsigned int channel = 0; channel < channelCount; channel++) { - double fromSample = ((double*)inBuffer)[(inSample * channelCount) + channel]; - double toSample = ((double*)inBuffer)[((inSample + 1) * channelCount) + channel]; - double sampleDiff = (toSample - fromSample) * (inSampleFraction - floor(inSampleFraction)); - ((double*)outBuffer)[(outSample * channelCount) + channel] = fromSample + sampleDiff; + double fromSample = (( double* ) inBuffer)[(inSample * channelCount) + channel]; + double toSample = (( double* ) inBuffer)[((inSample + 1) * channelCount) + channel]; + double sampleDiff = (toSample - fromSample) * (inSampleFraction - floor( inSampleFraction )); + (( double* ) outBuffer)[(outSample * channelCount) + channel] = fromSample + sampleDiff; } break; } -- cgit v1.2.3 From 47585b1a05f3fd37cc491fcc432b68582417ffad Mon Sep 17 00:00:00 2001 From: Marcus Tomlinson Date: Sat, 22 Apr 2017 19:24:22 +0200 Subject: –Fix formatting MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- RtAudio.cpp | 228 ++++++++++++++++++++++++++++++------------------------------ 1 file changed, 114 insertions(+), 114 deletions(-) (limited to 'RtAudio.cpp') diff --git a/RtAudio.cpp b/RtAudio.cpp index 65ed830..95cf910 100644 --- a/RtAudio.cpp +++ b/RtAudio.cpp @@ -3869,129 +3869,129 @@ void convertBufferWasapi( char* outBuffer, unsigned int& outSampleCount, const RtAudioFormat& format ) { - // calculate the new outSampleCount and relative sampleStep - float sampleRatio = ( float ) outSampleRate / inSampleRate; - float sampleRatioInv = ( float ) 1 / sampleRatio; - float sampleStep = 1.0f / sampleRatio; - float inSampleFraction = 0.0f; + // calculate the new outSampleCount and relative sampleStep + float sampleRatio = ( float ) outSampleRate / inSampleRate; + float sampleRatioInv = ( float ) 1 / sampleRatio; + float sampleStep = 1.0f / sampleRatio; + float inSampleFraction = 0.0f; - outSampleCount = ( unsigned int ) roundf( inSampleCount * sampleRatio ); + outSampleCount = ( unsigned int ) roundf( inSampleCount * sampleRatio ); - // if inSampleRate is a multiple of outSampleRate (or vice versa) there's no need to interpolate - if (floor( sampleRatio ) == sampleRatio || floor( sampleRatioInv ) == sampleRatioInv) + // if inSampleRate is a multiple of outSampleRate (or vice versa) there's no need to interpolate + if (floor( sampleRatio ) == sampleRatio || floor( sampleRatioInv ) == sampleRatioInv) + { + // frame-by-frame, copy each relative input sample into it's corresponding output sample + for (unsigned int outSample = 0; outSample < outSampleCount; outSample++) { - // frame-by-frame, copy each relative input sample into it's corresponding output sample - for (unsigned int outSample = 0; outSample < outSampleCount; outSample++) - { - unsigned int inSample = ( unsigned int ) inSampleFraction; - - switch (format) - { - case RTAUDIO_SINT8: - memcpy( &(( char* ) outBuffer)[outSample * channelCount], &(( char* ) inBuffer)[inSample * channelCount], channelCount * sizeof( char ) ); - break; - case RTAUDIO_SINT16: - memcpy( &(( short* ) outBuffer)[outSample * channelCount], &(( short* ) inBuffer)[inSample * channelCount], channelCount * sizeof( short ) ); - break; - case RTAUDIO_SINT24: - memcpy( &(( S24* ) outBuffer)[outSample * channelCount], &(( S24* ) inBuffer)[inSample * channelCount], channelCount * sizeof( S24 ) ); - break; - case RTAUDIO_SINT32: - memcpy( &(( int* ) outBuffer)[outSample * channelCount], &(( int* ) inBuffer)[inSample * channelCount], channelCount * sizeof( int ) ); - break; - case RTAUDIO_FLOAT32: - memcpy( &(( float* ) outBuffer)[outSample * channelCount], &(( float* ) inBuffer)[inSample * channelCount], channelCount * sizeof( float ) ); - break; - case RTAUDIO_FLOAT64: - memcpy( &(( double* ) outBuffer)[outSample * channelCount], &(( double* ) inBuffer)[inSample * channelCount], channelCount * sizeof( double ) ); - break; - } + unsigned int inSample = ( unsigned int ) inSampleFraction; - // jump to next in sample - inSampleFraction += sampleStep; - } + switch (format) + { + case RTAUDIO_SINT8: + memcpy( &(( char* ) outBuffer)[outSample * channelCount], &(( char* ) inBuffer)[inSample * channelCount], channelCount * sizeof( char ) ); + break; + case RTAUDIO_SINT16: + memcpy( &(( short* ) outBuffer)[outSample * channelCount], &(( short* ) inBuffer)[inSample * channelCount], channelCount * sizeof( short ) ); + break; + case RTAUDIO_SINT24: + memcpy( &(( S24* ) outBuffer)[outSample * channelCount], &(( S24* ) inBuffer)[inSample * channelCount], channelCount * sizeof( S24 ) ); + break; + case RTAUDIO_SINT32: + memcpy( &(( int* ) outBuffer)[outSample * channelCount], &(( int* ) inBuffer)[inSample * channelCount], channelCount * sizeof( int ) ); + break; + case RTAUDIO_FLOAT32: + memcpy( &(( float* ) outBuffer)[outSample * channelCount], &(( float* ) inBuffer)[inSample * channelCount], channelCount * sizeof( float ) ); + break; + case RTAUDIO_FLOAT64: + memcpy( &(( double* ) outBuffer)[outSample * channelCount], &(( double* ) inBuffer)[inSample * channelCount], channelCount * sizeof( double ) ); + break; + } + + // jump to next in sample + inSampleFraction += sampleStep; } - else // else interpolate + } + else // else interpolate + { + // frame-by-frame, copy each relative input sample into it's corresponding output sample + for (unsigned int outSample = 0; outSample < outSampleCount; outSample++) { - // frame-by-frame, copy each relative input sample into it's corresponding output sample - for (unsigned int outSample = 0; outSample < outSampleCount; outSample++) - { - unsigned int inSample = ( unsigned int ) inSampleFraction; - - switch (format) - { - case RTAUDIO_SINT8: - { - for (unsigned int channel = 0; channel < channelCount; channel++) - { - char fromSample = (( char* ) inBuffer)[(inSample * channelCount) + channel]; - char toSample = (( char* ) inBuffer)[((inSample + 1) * channelCount) + channel]; - float sampleDiff = (toSample - fromSample) * (inSampleFraction - floor( inSampleFraction )); - (( char* ) outBuffer)[(outSample * channelCount) + channel] = fromSample + ( char ) sampleDiff; - } - break; - } - case RTAUDIO_SINT16: - { - for (unsigned int channel = 0; channel < channelCount; channel++) - { - short fromSample = (( short* ) inBuffer)[(inSample * channelCount) + channel]; - short toSample = (( short* ) inBuffer)[((inSample + 1) * channelCount) + channel]; - float sampleDiff = (toSample - fromSample) * (inSampleFraction - floor( inSampleFraction )); - (( short* ) outBuffer)[(outSample * channelCount) + channel] = fromSample + ( short ) sampleDiff; - } - break; - } - case RTAUDIO_SINT24: - { - for (unsigned int channel = 0; channel < channelCount; channel++) - { - int fromSample = (( S24* ) inBuffer)[(inSample * channelCount) + channel].asInt(); - int toSample = (( S24* ) inBuffer)[((inSample + 1) * channelCount) + channel].asInt(); - float sampleDiff = (toSample - fromSample) * (inSampleFraction - floor( inSampleFraction )); - (( S24* ) outBuffer)[(outSample * channelCount) + channel] = fromSample + ( int ) sampleDiff; - } - break; - } - case RTAUDIO_SINT32: - { - for (unsigned int channel = 0; channel < channelCount; channel++) - { - int fromSample = (( int* ) inBuffer)[(inSample * channelCount) + channel]; - int toSample = (( int* ) inBuffer)[((inSample + 1) * channelCount) + channel]; - float sampleDiff = (toSample - fromSample) * (inSampleFraction - floor( inSampleFraction )); - (( int* ) outBuffer)[(outSample * channelCount) + channel] = fromSample + ( int ) sampleDiff; - } - break; - } - case RTAUDIO_FLOAT32: - { - for (unsigned int channel = 0; channel < channelCount; channel++) - { - float fromSample = (( float* ) inBuffer)[(inSample * channelCount) + channel]; - float toSample = (( float* ) inBuffer)[((inSample + 1) * channelCount) + channel]; - float sampleDiff = (toSample - fromSample) * (inSampleFraction - floor( inSampleFraction )); - (( float* ) outBuffer)[(outSample * channelCount) + channel] = fromSample + sampleDiff; - } - break; - } - case RTAUDIO_FLOAT64: - { - for (unsigned int channel = 0; channel < channelCount; channel++) - { - double fromSample = (( double* ) inBuffer)[(inSample * channelCount) + channel]; - double toSample = (( double* ) inBuffer)[((inSample + 1) * channelCount) + channel]; - double sampleDiff = (toSample - fromSample) * (inSampleFraction - floor( inSampleFraction )); - (( double* ) outBuffer)[(outSample * channelCount) + channel] = fromSample + sampleDiff; - } - break; - } - } + unsigned int inSample = ( unsigned int ) inSampleFraction; - // jump to next in sample - inSampleFraction += sampleStep; + switch (format) + { + case RTAUDIO_SINT8: + { + for (unsigned int channel = 0; channel < channelCount; channel++) + { + char fromSample = (( char* ) inBuffer)[(inSample * channelCount) + channel]; + char toSample = (( char* ) inBuffer)[((inSample + 1) * channelCount) + channel]; + float sampleDiff = (toSample - fromSample) * (inSampleFraction - floor( inSampleFraction )); + (( char* ) outBuffer)[(outSample * channelCount) + channel] = fromSample + ( char ) sampleDiff; + } + break; + } + case RTAUDIO_SINT16: + { + for (unsigned int channel = 0; channel < channelCount; channel++) + { + short fromSample = (( short* ) inBuffer)[(inSample * channelCount) + channel]; + short toSample = (( short* ) inBuffer)[((inSample + 1) * channelCount) + channel]; + float sampleDiff = (toSample - fromSample) * (inSampleFraction - floor( inSampleFraction )); + (( short* ) outBuffer)[(outSample * channelCount) + channel] = fromSample + ( short ) sampleDiff; + } + break; + } + case RTAUDIO_SINT24: + { + for (unsigned int channel = 0; channel < channelCount; channel++) + { + int fromSample = (( S24* ) inBuffer)[(inSample * channelCount) + channel].asInt(); + int toSample = (( S24* ) inBuffer)[((inSample + 1) * channelCount) + channel].asInt(); + float sampleDiff = (toSample - fromSample) * (inSampleFraction - floor( inSampleFraction )); + (( S24* ) outBuffer)[(outSample * channelCount) + channel] = fromSample + ( int ) sampleDiff; + } + break; + } + case RTAUDIO_SINT32: + { + for (unsigned int channel = 0; channel < channelCount; channel++) + { + int fromSample = (( int* ) inBuffer)[(inSample * channelCount) + channel]; + int toSample = (( int* ) inBuffer)[((inSample + 1) * channelCount) + channel]; + float sampleDiff = (toSample - fromSample) * (inSampleFraction - floor( inSampleFraction )); + (( int* ) outBuffer)[(outSample * channelCount) + channel] = fromSample + ( int ) sampleDiff; } + break; + } + case RTAUDIO_FLOAT32: + { + for (unsigned int channel = 0; channel < channelCount; channel++) + { + float fromSample = (( float* ) inBuffer)[(inSample * channelCount) + channel]; + float toSample = (( float* ) inBuffer)[((inSample + 1) * channelCount) + channel]; + float sampleDiff = (toSample - fromSample) * (inSampleFraction - floor( inSampleFraction )); + (( float* ) outBuffer)[(outSample * channelCount) + channel] = fromSample + sampleDiff; + } + break; + } + case RTAUDIO_FLOAT64: + { + for (unsigned int channel = 0; channel < channelCount; channel++) + { + double fromSample = (( double* ) inBuffer)[(inSample * channelCount) + channel]; + double toSample = (( double* ) inBuffer)[((inSample + 1) * channelCount) + channel]; + double sampleDiff = (toSample - fromSample) * (inSampleFraction - floor( inSampleFraction )); + (( double* ) outBuffer)[(outSample * channelCount) + channel] = fromSample + sampleDiff; + } + break; + } + } + + // jump to next in sample + inSampleFraction += sampleStep; } + } } //----------------------------------------------------------------------------- -- cgit v1.2.3 From ef482c9dd846a3eab87fa42735b85ed3e04a7519 Mon Sep 17 00:00:00 2001 From: Marcus Tomlinson Date: Sat, 22 Apr 2017 19:26:44 +0200 Subject: –Fix formatting MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- RtAudio.cpp | 82 ++++++++++++++++++++++++++++++------------------------------- 1 file changed, 41 insertions(+), 41 deletions(-) (limited to 'RtAudio.cpp') diff --git a/RtAudio.cpp b/RtAudio.cpp index 95cf910..a5439a2 100644 --- a/RtAudio.cpp +++ b/RtAudio.cpp @@ -3878,32 +3878,32 @@ void convertBufferWasapi( char* outBuffer, outSampleCount = ( unsigned int ) roundf( inSampleCount * sampleRatio ); // if inSampleRate is a multiple of outSampleRate (or vice versa) there's no need to interpolate - if (floor( sampleRatio ) == sampleRatio || floor( sampleRatioInv ) == sampleRatioInv) + if ( floor( sampleRatio ) == sampleRatio || floor( sampleRatioInv ) == sampleRatioInv ) { // frame-by-frame, copy each relative input sample into it's corresponding output sample - for (unsigned int outSample = 0; outSample < outSampleCount; outSample++) + for ( unsigned int outSample = 0; outSample < outSampleCount; outSample++ ) { unsigned int inSample = ( unsigned int ) inSampleFraction; - switch (format) + switch ( format ) { case RTAUDIO_SINT8: - memcpy( &(( char* ) outBuffer)[outSample * channelCount], &(( char* ) inBuffer)[inSample * channelCount], channelCount * sizeof( char ) ); + memcpy( &( ( char* ) outBuffer )[ outSample * channelCount ], &( ( char* ) inBuffer )[ inSample * channelCount ], channelCount * sizeof( char ) ); break; case RTAUDIO_SINT16: - memcpy( &(( short* ) outBuffer)[outSample * channelCount], &(( short* ) inBuffer)[inSample * channelCount], channelCount * sizeof( short ) ); + memcpy( &( ( short* ) outBuffer )[ outSample * channelCount ], &( ( short* ) inBuffer )[ inSample * channelCount ], channelCount * sizeof( short ) ); break; case RTAUDIO_SINT24: - memcpy( &(( S24* ) outBuffer)[outSample * channelCount], &(( S24* ) inBuffer)[inSample * channelCount], channelCount * sizeof( S24 ) ); + memcpy( &( ( S24* ) outBuffer )[ outSample * channelCount ], &( ( S24* ) inBuffer )[ inSample * channelCount ], channelCount * sizeof( S24 ) ); break; case RTAUDIO_SINT32: - memcpy( &(( int* ) outBuffer)[outSample * channelCount], &(( int* ) inBuffer)[inSample * channelCount], channelCount * sizeof( int ) ); + memcpy( &( ( int* ) outBuffer )[ outSample * channelCount ], &( ( int* ) inBuffer )[ inSample * channelCount ], channelCount * sizeof( int ) ); break; case RTAUDIO_FLOAT32: - memcpy( &(( float* ) outBuffer)[outSample * channelCount], &(( float* ) inBuffer)[inSample * channelCount], channelCount * sizeof( float ) ); + memcpy( &( ( float* ) outBuffer )[ outSample * channelCount ], &( ( float* ) inBuffer )[ inSample * channelCount ], channelCount * sizeof( float ) ); break; case RTAUDIO_FLOAT64: - memcpy( &(( double* ) outBuffer)[outSample * channelCount], &(( double* ) inBuffer)[inSample * channelCount], channelCount * sizeof( double ) ); + memcpy( &( ( double* ) outBuffer )[ outSample * channelCount ], &( ( double* ) inBuffer )[ inSample * channelCount ], channelCount * sizeof( double ) ); break; } @@ -3914,75 +3914,75 @@ void convertBufferWasapi( char* outBuffer, else // else interpolate { // frame-by-frame, copy each relative input sample into it's corresponding output sample - for (unsigned int outSample = 0; outSample < outSampleCount; outSample++) + for ( unsigned int outSample = 0; outSample < outSampleCount; outSample++ ) { unsigned int inSample = ( unsigned int ) inSampleFraction; - switch (format) + switch ( format ) { case RTAUDIO_SINT8: { - for (unsigned int channel = 0; channel < channelCount; channel++) + for ( unsigned int channel = 0; channel < channelCount; channel++ ) { - char fromSample = (( char* ) inBuffer)[(inSample * channelCount) + channel]; - char toSample = (( char* ) inBuffer)[((inSample + 1) * channelCount) + channel]; - float sampleDiff = (toSample - fromSample) * (inSampleFraction - floor( inSampleFraction )); - (( char* ) outBuffer)[(outSample * channelCount) + channel] = fromSample + ( char ) sampleDiff; + char fromSample = ( ( char* ) inBuffer )[ ( inSample * channelCount ) + channel ]; + char toSample = ( ( char* ) inBuffer )[ ( ( inSample + 1 ) * channelCount ) + channel ]; + float sampleDiff = ( toSample - fromSample ) * ( inSampleFraction - floor( inSampleFraction ) ); + ( ( char* ) outBuffer )[ ( outSample * channelCount ) + channel ] = fromSample + ( char ) sampleDiff; } break; } case RTAUDIO_SINT16: { - for (unsigned int channel = 0; channel < channelCount; channel++) + for ( unsigned int channel = 0; channel < channelCount; channel++ ) { - short fromSample = (( short* ) inBuffer)[(inSample * channelCount) + channel]; - short toSample = (( short* ) inBuffer)[((inSample + 1) * channelCount) + channel]; - float sampleDiff = (toSample - fromSample) * (inSampleFraction - floor( inSampleFraction )); - (( short* ) outBuffer)[(outSample * channelCount) + channel] = fromSample + ( short ) sampleDiff; + short fromSample = ( ( short* ) inBuffer )[ ( inSample * channelCount ) + channel ]; + short toSample = ( ( short* ) inBuffer )[ ( ( inSample + 1 ) * channelCount ) + channel ]; + float sampleDiff = ( toSample - fromSample ) * ( inSampleFraction - floor( inSampleFraction ) ); + ( ( short* ) outBuffer )[ ( outSample * channelCount ) + channel ] = fromSample + ( short ) sampleDiff; } break; } case RTAUDIO_SINT24: { - for (unsigned int channel = 0; channel < channelCount; channel++) + for ( unsigned int channel = 0; channel < channelCount; channel++ ) { - int fromSample = (( S24* ) inBuffer)[(inSample * channelCount) + channel].asInt(); - int toSample = (( S24* ) inBuffer)[((inSample + 1) * channelCount) + channel].asInt(); - float sampleDiff = (toSample - fromSample) * (inSampleFraction - floor( inSampleFraction )); - (( S24* ) outBuffer)[(outSample * channelCount) + channel] = fromSample + ( int ) sampleDiff; + int fromSample = ( ( S24* ) inBuffer )[ ( inSample * channelCount ) + channel ].asInt(); + int toSample = ( ( S24* ) inBuffer )[ ( ( inSample + 1 ) * channelCount ) + channel ].asInt(); + float sampleDiff = ( toSample - fromSample ) * ( inSampleFraction - floor( inSampleFraction ) ); + ( ( S24* ) outBuffer )[ ( outSample * channelCount ) + channel ] = fromSample + ( int ) sampleDiff; } break; } case RTAUDIO_SINT32: { - for (unsigned int channel = 0; channel < channelCount; channel++) + for ( unsigned int channel = 0; channel < channelCount; channel++ ) { - int fromSample = (( int* ) inBuffer)[(inSample * channelCount) + channel]; - int toSample = (( int* ) inBuffer)[((inSample + 1) * channelCount) + channel]; - float sampleDiff = (toSample - fromSample) * (inSampleFraction - floor( inSampleFraction )); - (( int* ) outBuffer)[(outSample * channelCount) + channel] = fromSample + ( int ) sampleDiff; + int fromSample = ( ( int* ) inBuffer )[ ( inSample * channelCount ) + channel ]; + int toSample = ( ( int* ) inBuffer )[ ( ( inSample + 1 ) * channelCount ) + channel ]; + float sampleDiff = ( toSample - fromSample ) * ( inSampleFraction - floor( inSampleFraction ) ); + ( ( int* ) outBuffer )[ ( outSample * channelCount ) + channel ] = fromSample + ( int ) sampleDiff; } break; } case RTAUDIO_FLOAT32: { - for (unsigned int channel = 0; channel < channelCount; channel++) + for ( unsigned int channel = 0; channel < channelCount; channel++ ) { - float fromSample = (( float* ) inBuffer)[(inSample * channelCount) + channel]; - float toSample = (( float* ) inBuffer)[((inSample + 1) * channelCount) + channel]; - float sampleDiff = (toSample - fromSample) * (inSampleFraction - floor( inSampleFraction )); - (( float* ) outBuffer)[(outSample * channelCount) + channel] = fromSample + sampleDiff; + float fromSample = ( ( float* ) inBuffer )[ ( inSample * channelCount ) + channel ]; + float toSample = ( ( float* ) inBuffer )[ ( ( inSample + 1 ) * channelCount ) + channel ]; + float sampleDiff = ( toSample - fromSample ) * ( inSampleFraction - floor( inSampleFraction ) ); + ( ( float* ) outBuffer )[ ( outSample * channelCount ) + channel ] = fromSample + sampleDiff; } break; } case RTAUDIO_FLOAT64: { - for (unsigned int channel = 0; channel < channelCount; channel++) + for ( unsigned int channel = 0; channel < channelCount; channel++ ) { - double fromSample = (( double* ) inBuffer)[(inSample * channelCount) + channel]; - double toSample = (( double* ) inBuffer)[((inSample + 1) * channelCount) + channel]; - double sampleDiff = (toSample - fromSample) * (inSampleFraction - floor( inSampleFraction )); - (( double* ) outBuffer)[(outSample * channelCount) + channel] = fromSample + sampleDiff; + double fromSample = ( ( double* ) inBuffer )[ ( inSample * channelCount ) + channel ]; + double toSample = ( ( double* ) inBuffer )[ ( ( inSample + 1 ) * channelCount ) + channel ]; + double sampleDiff = ( toSample - fromSample ) * ( inSampleFraction - floor( inSampleFraction ) ); + ( ( double* ) outBuffer )[ ( outSample * channelCount ) + channel ] = fromSample + sampleDiff; } break; } -- cgit v1.2.3 From 1a1b19da942ce4b4332d2603136858313be68279 Mon Sep 17 00:00:00 2001 From: Marcus Tomlinson Date: Sat, 22 Apr 2017 19:30:28 +0200 Subject: –Fix formatting MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- RtAudio.cpp | 144 ++++++++++++++++++++++++++++++------------------------------ 1 file changed, 72 insertions(+), 72 deletions(-) (limited to 'RtAudio.cpp') diff --git a/RtAudio.cpp b/RtAudio.cpp index a5439a2..41b6b6a 100644 --- a/RtAudio.cpp +++ b/RtAudio.cpp @@ -3887,24 +3887,24 @@ void convertBufferWasapi( char* outBuffer, switch ( format ) { - case RTAUDIO_SINT8: - memcpy( &( ( char* ) outBuffer )[ outSample * channelCount ], &( ( char* ) inBuffer )[ inSample * channelCount ], channelCount * sizeof( char ) ); - break; - case RTAUDIO_SINT16: - memcpy( &( ( short* ) outBuffer )[ outSample * channelCount ], &( ( short* ) inBuffer )[ inSample * channelCount ], channelCount * sizeof( short ) ); - break; - case RTAUDIO_SINT24: - memcpy( &( ( S24* ) outBuffer )[ outSample * channelCount ], &( ( S24* ) inBuffer )[ inSample * channelCount ], channelCount * sizeof( S24 ) ); - break; - case RTAUDIO_SINT32: - memcpy( &( ( int* ) outBuffer )[ outSample * channelCount ], &( ( int* ) inBuffer )[ inSample * channelCount ], channelCount * sizeof( int ) ); - break; - case RTAUDIO_FLOAT32: - memcpy( &( ( float* ) outBuffer )[ outSample * channelCount ], &( ( float* ) inBuffer )[ inSample * channelCount ], channelCount * sizeof( float ) ); - break; - case RTAUDIO_FLOAT64: - memcpy( &( ( double* ) outBuffer )[ outSample * channelCount ], &( ( double* ) inBuffer )[ inSample * channelCount ], channelCount * sizeof( double ) ); - break; + case RTAUDIO_SINT8: + memcpy( &( ( char* ) outBuffer )[ outSample * channelCount ], &( ( char* ) inBuffer )[ inSample * channelCount ], channelCount * sizeof( char ) ); + break; + case RTAUDIO_SINT16: + memcpy( &( ( short* ) outBuffer )[ outSample * channelCount ], &( ( short* ) inBuffer )[ inSample * channelCount ], channelCount * sizeof( short ) ); + break; + case RTAUDIO_SINT24: + memcpy( &( ( S24* ) outBuffer )[ outSample * channelCount ], &( ( S24* ) inBuffer )[ inSample * channelCount ], channelCount * sizeof( S24 ) ); + break; + case RTAUDIO_SINT32: + memcpy( &( ( int* ) outBuffer )[ outSample * channelCount ], &( ( int* ) inBuffer )[ inSample * channelCount ], channelCount * sizeof( int ) ); + break; + case RTAUDIO_FLOAT32: + memcpy( &( ( float* ) outBuffer )[ outSample * channelCount ], &( ( float* ) inBuffer )[ inSample * channelCount ], channelCount * sizeof( float ) ); + break; + case RTAUDIO_FLOAT64: + memcpy( &( ( double* ) outBuffer )[ outSample * channelCount ], &( ( double* ) inBuffer )[ inSample * channelCount ], channelCount * sizeof( double ) ); + break; } // jump to next in sample @@ -3920,72 +3920,72 @@ void convertBufferWasapi( char* outBuffer, switch ( format ) { - case RTAUDIO_SINT8: - { - for ( unsigned int channel = 0; channel < channelCount; channel++ ) + case RTAUDIO_SINT8: { - char fromSample = ( ( char* ) inBuffer )[ ( inSample * channelCount ) + channel ]; - char toSample = ( ( char* ) inBuffer )[ ( ( inSample + 1 ) * channelCount ) + channel ]; - float sampleDiff = ( toSample - fromSample ) * ( inSampleFraction - floor( inSampleFraction ) ); - ( ( char* ) outBuffer )[ ( outSample * channelCount ) + channel ] = fromSample + ( char ) sampleDiff; + for ( unsigned int channel = 0; channel < channelCount; channel++ ) + { + char fromSample = ( ( char* ) inBuffer )[ ( inSample * channelCount ) + channel ]; + char toSample = ( ( char* ) inBuffer )[ ( ( inSample + 1 ) * channelCount ) + channel ]; + float sampleDiff = ( toSample - fromSample ) * ( inSampleFraction - floor( inSampleFraction ) ); + ( ( char* ) outBuffer )[ ( outSample * channelCount ) + channel ] = fromSample + ( char ) sampleDiff; + } + break; } - break; - } - case RTAUDIO_SINT16: - { - for ( unsigned int channel = 0; channel < channelCount; channel++ ) + case RTAUDIO_SINT16: { - short fromSample = ( ( short* ) inBuffer )[ ( inSample * channelCount ) + channel ]; - short toSample = ( ( short* ) inBuffer )[ ( ( inSample + 1 ) * channelCount ) + channel ]; - float sampleDiff = ( toSample - fromSample ) * ( inSampleFraction - floor( inSampleFraction ) ); - ( ( short* ) outBuffer )[ ( outSample * channelCount ) + channel ] = fromSample + ( short ) sampleDiff; + for ( unsigned int channel = 0; channel < channelCount; channel++ ) + { + short fromSample = ( ( short* ) inBuffer )[ ( inSample * channelCount ) + channel ]; + short toSample = ( ( short* ) inBuffer )[ ( ( inSample + 1 ) * channelCount ) + channel ]; + float sampleDiff = ( toSample - fromSample ) * ( inSampleFraction - floor( inSampleFraction ) ); + ( ( short* ) outBuffer )[ ( outSample * channelCount ) + channel ] = fromSample + ( short ) sampleDiff; + } + break; } - break; - } - case RTAUDIO_SINT24: - { - for ( unsigned int channel = 0; channel < channelCount; channel++ ) + case RTAUDIO_SINT24: { - int fromSample = ( ( S24* ) inBuffer )[ ( inSample * channelCount ) + channel ].asInt(); - int toSample = ( ( S24* ) inBuffer )[ ( ( inSample + 1 ) * channelCount ) + channel ].asInt(); - float sampleDiff = ( toSample - fromSample ) * ( inSampleFraction - floor( inSampleFraction ) ); - ( ( S24* ) outBuffer )[ ( outSample * channelCount ) + channel ] = fromSample + ( int ) sampleDiff; + for ( unsigned int channel = 0; channel < channelCount; channel++ ) + { + int fromSample = ( ( S24* ) inBuffer )[ ( inSample * channelCount ) + channel ].asInt(); + int toSample = ( ( S24* ) inBuffer )[ ( ( inSample + 1 ) * channelCount ) + channel ].asInt(); + float sampleDiff = ( toSample - fromSample ) * ( inSampleFraction - floor( inSampleFraction ) ); + ( ( S24* ) outBuffer )[ ( outSample * channelCount ) + channel ] = fromSample + ( int ) sampleDiff; + } + break; } - break; - } - case RTAUDIO_SINT32: - { - for ( unsigned int channel = 0; channel < channelCount; channel++ ) + case RTAUDIO_SINT32: { - int fromSample = ( ( int* ) inBuffer )[ ( inSample * channelCount ) + channel ]; - int toSample = ( ( int* ) inBuffer )[ ( ( inSample + 1 ) * channelCount ) + channel ]; - float sampleDiff = ( toSample - fromSample ) * ( inSampleFraction - floor( inSampleFraction ) ); - ( ( int* ) outBuffer )[ ( outSample * channelCount ) + channel ] = fromSample + ( int ) sampleDiff; + for ( unsigned int channel = 0; channel < channelCount; channel++ ) + { + int fromSample = ( ( int* ) inBuffer )[ ( inSample * channelCount ) + channel ]; + int toSample = ( ( int* ) inBuffer )[ ( ( inSample + 1 ) * channelCount ) + channel ]; + float sampleDiff = ( toSample - fromSample ) * ( inSampleFraction - floor( inSampleFraction ) ); + ( ( int* ) outBuffer )[ ( outSample * channelCount ) + channel ] = fromSample + ( int ) sampleDiff; + } + break; } - break; - } - case RTAUDIO_FLOAT32: - { - for ( unsigned int channel = 0; channel < channelCount; channel++ ) + case RTAUDIO_FLOAT32: { - float fromSample = ( ( float* ) inBuffer )[ ( inSample * channelCount ) + channel ]; - float toSample = ( ( float* ) inBuffer )[ ( ( inSample + 1 ) * channelCount ) + channel ]; - float sampleDiff = ( toSample - fromSample ) * ( inSampleFraction - floor( inSampleFraction ) ); - ( ( float* ) outBuffer )[ ( outSample * channelCount ) + channel ] = fromSample + sampleDiff; + for ( unsigned int channel = 0; channel < channelCount; channel++ ) + { + float fromSample = ( ( float* ) inBuffer )[ ( inSample * channelCount ) + channel ]; + float toSample = ( ( float* ) inBuffer )[ ( ( inSample + 1 ) * channelCount ) + channel ]; + float sampleDiff = ( toSample - fromSample ) * ( inSampleFraction - floor( inSampleFraction ) ); + ( ( float* ) outBuffer )[ ( outSample * channelCount ) + channel ] = fromSample + sampleDiff; + } + break; } - break; - } - case RTAUDIO_FLOAT64: - { - for ( unsigned int channel = 0; channel < channelCount; channel++ ) + case RTAUDIO_FLOAT64: { - double fromSample = ( ( double* ) inBuffer )[ ( inSample * channelCount ) + channel ]; - double toSample = ( ( double* ) inBuffer )[ ( ( inSample + 1 ) * channelCount ) + channel ]; - double sampleDiff = ( toSample - fromSample ) * ( inSampleFraction - floor( inSampleFraction ) ); - ( ( double* ) outBuffer )[ ( outSample * channelCount ) + channel ] = fromSample + sampleDiff; + for ( unsigned int channel = 0; channel < channelCount; channel++ ) + { + double fromSample = ( ( double* ) inBuffer )[ ( inSample * channelCount ) + channel ]; + double toSample = ( ( double* ) inBuffer )[ ( ( inSample + 1 ) * channelCount ) + channel ]; + double sampleDiff = ( toSample - fromSample ) * ( inSampleFraction - floor( inSampleFraction ) ); + ( ( double* ) outBuffer )[ ( outSample * channelCount ) + channel ] = fromSample + sampleDiff; + } + break; } - break; - } } // jump to next in sample -- cgit v1.2.3 From d693899f98607f7c8fac57da233be69a585e65a0 Mon Sep 17 00:00:00 2001 From: Marcus Tomlinson Date: Sat, 22 Apr 2017 19:37:45 +0200 Subject: –Slight simplification MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- RtAudio.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'RtAudio.cpp') diff --git a/RtAudio.cpp b/RtAudio.cpp index 41b6b6a..308a244 100644 --- a/RtAudio.cpp +++ b/RtAudio.cpp @@ -3926,7 +3926,7 @@ void convertBufferWasapi( char* outBuffer, { char fromSample = ( ( char* ) inBuffer )[ ( inSample * channelCount ) + channel ]; char toSample = ( ( char* ) inBuffer )[ ( ( inSample + 1 ) * channelCount ) + channel ]; - float sampleDiff = ( toSample - fromSample ) * ( inSampleFraction - floor( inSampleFraction ) ); + float sampleDiff = ( toSample - fromSample ) * ( inSampleFraction - inSample ); ( ( char* ) outBuffer )[ ( outSample * channelCount ) + channel ] = fromSample + ( char ) sampleDiff; } break; @@ -3937,7 +3937,7 @@ void convertBufferWasapi( char* outBuffer, { short fromSample = ( ( short* ) inBuffer )[ ( inSample * channelCount ) + channel ]; short toSample = ( ( short* ) inBuffer )[ ( ( inSample + 1 ) * channelCount ) + channel ]; - float sampleDiff = ( toSample - fromSample ) * ( inSampleFraction - floor( inSampleFraction ) ); + float sampleDiff = ( toSample - fromSample ) * ( inSampleFraction - inSample ); ( ( short* ) outBuffer )[ ( outSample * channelCount ) + channel ] = fromSample + ( short ) sampleDiff; } break; @@ -3948,7 +3948,7 @@ void convertBufferWasapi( char* outBuffer, { int fromSample = ( ( S24* ) inBuffer )[ ( inSample * channelCount ) + channel ].asInt(); int toSample = ( ( S24* ) inBuffer )[ ( ( inSample + 1 ) * channelCount ) + channel ].asInt(); - float sampleDiff = ( toSample - fromSample ) * ( inSampleFraction - floor( inSampleFraction ) ); + float sampleDiff = ( toSample - fromSample ) * ( inSampleFraction - inSample ); ( ( S24* ) outBuffer )[ ( outSample * channelCount ) + channel ] = fromSample + ( int ) sampleDiff; } break; @@ -3959,7 +3959,7 @@ void convertBufferWasapi( char* outBuffer, { int fromSample = ( ( int* ) inBuffer )[ ( inSample * channelCount ) + channel ]; int toSample = ( ( int* ) inBuffer )[ ( ( inSample + 1 ) * channelCount ) + channel ]; - float sampleDiff = ( toSample - fromSample ) * ( inSampleFraction - floor( inSampleFraction ) ); + float sampleDiff = ( toSample - fromSample ) * ( inSampleFraction - inSample ); ( ( int* ) outBuffer )[ ( outSample * channelCount ) + channel ] = fromSample + ( int ) sampleDiff; } break; @@ -3970,7 +3970,7 @@ void convertBufferWasapi( char* outBuffer, { float fromSample = ( ( float* ) inBuffer )[ ( inSample * channelCount ) + channel ]; float toSample = ( ( float* ) inBuffer )[ ( ( inSample + 1 ) * channelCount ) + channel ]; - float sampleDiff = ( toSample - fromSample ) * ( inSampleFraction - floor( inSampleFraction ) ); + float sampleDiff = ( toSample - fromSample ) * ( inSampleFraction - inSample ); ( ( float* ) outBuffer )[ ( outSample * channelCount ) + channel ] = fromSample + sampleDiff; } break; @@ -3981,7 +3981,7 @@ void convertBufferWasapi( char* outBuffer, { double fromSample = ( ( double* ) inBuffer )[ ( inSample * channelCount ) + channel ]; double toSample = ( ( double* ) inBuffer )[ ( ( inSample + 1 ) * channelCount ) + channel ]; - double sampleDiff = ( toSample - fromSample ) * ( inSampleFraction - floor( inSampleFraction ) ); + double sampleDiff = ( toSample - fromSample ) * ( inSampleFraction - inSample ); ( ( double* ) outBuffer )[ ( outSample * channelCount ) + channel ] = fromSample + sampleDiff; } break; -- cgit v1.2.3 From d3b158f40fc0f2594123a6de2302ebae8f41490e Mon Sep 17 00:00:00 2001 From: Marcus Tomlinson Date: Sat, 22 Apr 2017 20:32:42 +0200 Subject: Some optimisation --- RtAudio.cpp | 57 +++++++++++++++++++++++++++++++++------------------------ 1 file changed, 33 insertions(+), 24 deletions(-) (limited to 'RtAudio.cpp') diff --git a/RtAudio.cpp b/RtAudio.cpp index 308a244..5ab4c78 100644 --- a/RtAudio.cpp +++ b/RtAudio.cpp @@ -3917,72 +3917,81 @@ void convertBufferWasapi( char* outBuffer, for ( unsigned int outSample = 0; outSample < outSampleCount; outSample++ ) { unsigned int inSample = ( unsigned int ) inSampleFraction; + float inSampleDec = inSampleFraction - inSample; + unsigned int frameInSample = inSample * channelCount; + unsigned int frameOutSample = outSample * channelCount; switch ( format ) { case RTAUDIO_SINT8: { + char* convInBuffer = ( char* ) inBuffer; for ( unsigned int channel = 0; channel < channelCount; channel++ ) { - char fromSample = ( ( char* ) inBuffer )[ ( inSample * channelCount ) + channel ]; - char toSample = ( ( char* ) inBuffer )[ ( ( inSample + 1 ) * channelCount ) + channel ]; - float sampleDiff = ( toSample - fromSample ) * ( inSampleFraction - inSample ); - ( ( char* ) outBuffer )[ ( outSample * channelCount ) + channel ] = fromSample + ( char ) sampleDiff; + char fromSample = convInBuffer[ frameInSample + channel ]; + char toSample = convInBuffer[ frameInSample + channelCount + channel ]; + char sampleDiff = ( char ) ( ( toSample - fromSample ) * inSampleDec ); + ( ( char* ) outBuffer )[ frameOutSample + channel ] = fromSample + sampleDiff; } break; } case RTAUDIO_SINT16: { + short* convInBuffer = ( short* ) inBuffer; for ( unsigned int channel = 0; channel < channelCount; channel++ ) { - short fromSample = ( ( short* ) inBuffer )[ ( inSample * channelCount ) + channel ]; - short toSample = ( ( short* ) inBuffer )[ ( ( inSample + 1 ) * channelCount ) + channel ]; - float sampleDiff = ( toSample - fromSample ) * ( inSampleFraction - inSample ); - ( ( short* ) outBuffer )[ ( outSample * channelCount ) + channel ] = fromSample + ( short ) sampleDiff; + short fromSample = convInBuffer[ frameInSample + channel ]; + short toSample = convInBuffer[ frameInSample + channelCount + channel ]; + short sampleDiff = ( short ) ( ( toSample - fromSample ) * inSampleDec ); + ( ( short* ) outBuffer )[ frameOutSample + channel ] = fromSample + sampleDiff; } break; } case RTAUDIO_SINT24: { + S24* convInBuffer = ( S24* ) inBuffer; for ( unsigned int channel = 0; channel < channelCount; channel++ ) { - int fromSample = ( ( S24* ) inBuffer )[ ( inSample * channelCount ) + channel ].asInt(); - int toSample = ( ( S24* ) inBuffer )[ ( ( inSample + 1 ) * channelCount ) + channel ].asInt(); - float sampleDiff = ( toSample - fromSample ) * ( inSampleFraction - inSample ); - ( ( S24* ) outBuffer )[ ( outSample * channelCount ) + channel ] = fromSample + ( int ) sampleDiff; + int fromSample = convInBuffer[ frameInSample + channel ].asInt(); + int toSample = convInBuffer[ frameInSample + channelCount + channel ].asInt(); + int sampleDiff = ( int ) ( ( toSample - fromSample ) * inSampleDec ); + ( ( S24* ) outBuffer )[ frameOutSample + channel ] = fromSample + sampleDiff; } break; } case RTAUDIO_SINT32: { + int* convInBuffer = ( int* ) inBuffer; for ( unsigned int channel = 0; channel < channelCount; channel++ ) { - int fromSample = ( ( int* ) inBuffer )[ ( inSample * channelCount ) + channel ]; - int toSample = ( ( int* ) inBuffer )[ ( ( inSample + 1 ) * channelCount ) + channel ]; - float sampleDiff = ( toSample - fromSample ) * ( inSampleFraction - inSample ); - ( ( int* ) outBuffer )[ ( outSample * channelCount ) + channel ] = fromSample + ( int ) sampleDiff; + int fromSample = convInBuffer[ frameInSample + channel ]; + int toSample = convInBuffer[ frameInSample + channelCount + channel ]; + int sampleDiff = ( int ) ( ( toSample - fromSample ) * inSampleDec ); + ( ( int* ) outBuffer )[ frameOutSample + channel ] = fromSample + sampleDiff; } break; } case RTAUDIO_FLOAT32: { + float* convInBuffer = ( float* ) inBuffer; for ( unsigned int channel = 0; channel < channelCount; channel++ ) { - float fromSample = ( ( float* ) inBuffer )[ ( inSample * channelCount ) + channel ]; - float toSample = ( ( float* ) inBuffer )[ ( ( inSample + 1 ) * channelCount ) + channel ]; - float sampleDiff = ( toSample - fromSample ) * ( inSampleFraction - inSample ); - ( ( float* ) outBuffer )[ ( outSample * channelCount ) + channel ] = fromSample + sampleDiff; + float fromSample = convInBuffer[ frameInSample + channel ]; + float toSample = convInBuffer[ frameInSample + channelCount + channel ]; + float sampleDiff = ( toSample - fromSample ) * inSampleDec; + ( ( float* ) outBuffer )[ frameOutSample + channel ] = fromSample + sampleDiff; } break; } case RTAUDIO_FLOAT64: { + double* convInBuffer = ( double* ) inBuffer; for ( unsigned int channel = 0; channel < channelCount; channel++ ) { - double fromSample = ( ( double* ) inBuffer )[ ( inSample * channelCount ) + channel ]; - double toSample = ( ( double* ) inBuffer )[ ( ( inSample + 1 ) * channelCount ) + channel ]; - double sampleDiff = ( toSample - fromSample ) * ( inSampleFraction - inSample ); - ( ( double* ) outBuffer )[ ( outSample * channelCount ) + channel ] = fromSample + sampleDiff; + double fromSample = convInBuffer[ frameInSample + channel ]; + double toSample = convInBuffer[ frameInSample + channelCount + channel ]; + double sampleDiff = ( toSample - fromSample ) * inSampleDec; + ( ( double* ) outBuffer )[ frameOutSample + channel ] = fromSample + sampleDiff; } break; } -- cgit v1.2.3 From bdce0374980919c657de8930ae0a83deb3b1d318 Mon Sep 17 00:00:00 2001 From: Marcus Tomlinson Date: Sat, 22 Apr 2017 22:00:18 +0200 Subject: Simplify --- RtAudio.cpp | 30 ++++++++++++------------------ 1 file changed, 12 insertions(+), 18 deletions(-) (limited to 'RtAudio.cpp') diff --git a/RtAudio.cpp b/RtAudio.cpp index 5ab4c78..f4bff00 100644 --- a/RtAudio.cpp +++ b/RtAudio.cpp @@ -3925,11 +3925,10 @@ void convertBufferWasapi( char* outBuffer, { case RTAUDIO_SINT8: { - char* convInBuffer = ( char* ) inBuffer; for ( unsigned int channel = 0; channel < channelCount; channel++ ) { - char fromSample = convInBuffer[ frameInSample + channel ]; - char toSample = convInBuffer[ frameInSample + channelCount + channel ]; + char fromSample = ( ( char* ) inBuffer )[ frameInSample + channel ]; + char toSample = ( ( char* ) inBuffer )[ frameInSample + channelCount + channel ]; char sampleDiff = ( char ) ( ( toSample - fromSample ) * inSampleDec ); ( ( char* ) outBuffer )[ frameOutSample + channel ] = fromSample + sampleDiff; } @@ -3937,11 +3936,10 @@ void convertBufferWasapi( char* outBuffer, } case RTAUDIO_SINT16: { - short* convInBuffer = ( short* ) inBuffer; for ( unsigned int channel = 0; channel < channelCount; channel++ ) { - short fromSample = convInBuffer[ frameInSample + channel ]; - short toSample = convInBuffer[ frameInSample + channelCount + channel ]; + short fromSample = ( ( short* ) inBuffer )[ frameInSample + channel ]; + short toSample = ( ( short* ) inBuffer )[ frameInSample + channelCount + channel ]; short sampleDiff = ( short ) ( ( toSample - fromSample ) * inSampleDec ); ( ( short* ) outBuffer )[ frameOutSample + channel ] = fromSample + sampleDiff; } @@ -3949,11 +3947,10 @@ void convertBufferWasapi( char* outBuffer, } case RTAUDIO_SINT24: { - S24* convInBuffer = ( S24* ) inBuffer; for ( unsigned int channel = 0; channel < channelCount; channel++ ) { - int fromSample = convInBuffer[ frameInSample + channel ].asInt(); - int toSample = convInBuffer[ frameInSample + channelCount + channel ].asInt(); + int fromSample = ( ( S24* ) inBuffer )[ frameInSample + channel ].asInt(); + int toSample = ( ( S24* ) inBuffer )[ frameInSample + channelCount + channel ].asInt(); int sampleDiff = ( int ) ( ( toSample - fromSample ) * inSampleDec ); ( ( S24* ) outBuffer )[ frameOutSample + channel ] = fromSample + sampleDiff; } @@ -3961,11 +3958,10 @@ void convertBufferWasapi( char* outBuffer, } case RTAUDIO_SINT32: { - int* convInBuffer = ( int* ) inBuffer; for ( unsigned int channel = 0; channel < channelCount; channel++ ) { - int fromSample = convInBuffer[ frameInSample + channel ]; - int toSample = convInBuffer[ frameInSample + channelCount + channel ]; + int fromSample = ( ( int* ) inBuffer )[ frameInSample + channel ]; + int toSample = ( ( int* ) inBuffer )[ frameInSample + channelCount + channel ]; int sampleDiff = ( int ) ( ( toSample - fromSample ) * inSampleDec ); ( ( int* ) outBuffer )[ frameOutSample + channel ] = fromSample + sampleDiff; } @@ -3973,11 +3969,10 @@ void convertBufferWasapi( char* outBuffer, } case RTAUDIO_FLOAT32: { - float* convInBuffer = ( float* ) inBuffer; for ( unsigned int channel = 0; channel < channelCount; channel++ ) { - float fromSample = convInBuffer[ frameInSample + channel ]; - float toSample = convInBuffer[ frameInSample + channelCount + channel ]; + float fromSample = ( ( float* ) inBuffer )[ frameInSample + channel ]; + float toSample = ( ( float* ) inBuffer )[ frameInSample + channelCount + channel ]; float sampleDiff = ( toSample - fromSample ) * inSampleDec; ( ( float* ) outBuffer )[ frameOutSample + channel ] = fromSample + sampleDiff; } @@ -3985,11 +3980,10 @@ void convertBufferWasapi( char* outBuffer, } case RTAUDIO_FLOAT64: { - double* convInBuffer = ( double* ) inBuffer; for ( unsigned int channel = 0; channel < channelCount; channel++ ) { - double fromSample = convInBuffer[ frameInSample + channel ]; - double toSample = convInBuffer[ frameInSample + channelCount + channel ]; + double fromSample = ( ( double* ) inBuffer )[ frameInSample + channel ]; + double toSample = ( ( double* ) inBuffer )[ frameInSample + channelCount + channel ]; double sampleDiff = ( toSample - fromSample ) * inSampleDec; ( ( double* ) outBuffer )[ frameOutSample + channel ] = fromSample + sampleDiff; } -- cgit v1.2.3