Remove OSS configuration from pyrtaudio.
[rtaudio-cdist.git] / RtAudio.cpp
index 308a24471919d03e3e0a80842568e386da2d2087..f4bff00b0ae9d187d54f7e055d02ba466e88b48b 100644 (file)
@@ -3917,6 +3917,9 @@ void convertBufferWasapi( char* outBuffer,
     for ( unsigned int outSample = 0; outSample < outSampleCount; outSample++ )\r
     {\r
       unsigned int inSample = ( unsigned int ) inSampleFraction;\r
+      float inSampleDec = inSampleFraction - inSample;\r
+      unsigned int frameInSample = inSample * channelCount;\r
+      unsigned int frameOutSample = outSample * channelCount;\r
 \r
       switch ( format )\r
       {\r
@@ -3924,10 +3927,10 @@ void convertBufferWasapi( char* outBuffer,
         {\r
           for ( unsigned int channel = 0; channel < channelCount; channel++ )\r
           {\r
-            char fromSample = ( ( char* ) inBuffer )[ ( inSample * channelCount ) + channel ];\r
-            char toSample = ( ( char* ) inBuffer )[ ( ( inSample + 1 ) * channelCount ) + channel ];\r
-            float sampleDiff = ( toSample - fromSample ) * ( inSampleFraction - inSample );\r
-            ( ( char* ) outBuffer )[ ( outSample * channelCount ) + channel ] = fromSample + ( char ) sampleDiff;\r
+            char fromSample = ( ( char* ) inBuffer )[ frameInSample + channel ];\r
+            char toSample = ( ( char* ) inBuffer )[ frameInSample + channelCount + channel ];\r
+            char sampleDiff = ( char ) ( ( toSample - fromSample ) * inSampleDec );\r
+            ( ( char* ) outBuffer )[ frameOutSample + channel ] = fromSample + sampleDiff;\r
           }\r
           break;\r
         }\r
@@ -3935,10 +3938,10 @@ void convertBufferWasapi( char* outBuffer,
         {\r
           for ( unsigned int channel = 0; channel < channelCount; channel++ )\r
           {\r
-            short fromSample = ( ( short* ) inBuffer )[ ( inSample * channelCount ) + channel ];\r
-            short toSample = ( ( short* ) inBuffer )[ ( ( inSample + 1 ) * channelCount ) + channel ];\r
-            float sampleDiff = ( toSample - fromSample ) * ( inSampleFraction - inSample );\r
-            ( ( short* ) outBuffer )[ ( outSample * channelCount ) + channel ] = fromSample + ( short ) sampleDiff;\r
+            short fromSample = ( ( short* ) inBuffer )[ frameInSample + channel ];\r
+            short toSample = ( ( short* ) inBuffer )[ frameInSample + channelCount + channel ];\r
+            short sampleDiff = ( short ) ( ( toSample - fromSample ) * inSampleDec );\r
+            ( ( short* ) outBuffer )[ frameOutSample + channel ] = fromSample + sampleDiff;\r
           }\r
           break;\r
         }\r
@@ -3946,10 +3949,10 @@ void convertBufferWasapi( char* outBuffer,
         {\r
           for ( unsigned int channel = 0; channel < channelCount; channel++ )\r
           {\r
-            int fromSample = ( ( S24* ) inBuffer )[ ( inSample * channelCount ) + channel ].asInt();\r
-            int toSample = ( ( S24* ) inBuffer )[ ( ( inSample + 1 ) * channelCount ) + channel ].asInt();\r
-            float sampleDiff = ( toSample - fromSample ) * ( inSampleFraction - inSample );\r
-            ( ( S24* ) outBuffer )[ ( outSample * channelCount ) + channel ] = fromSample + ( int ) sampleDiff;\r
+            int fromSample = ( ( S24* ) inBuffer )[ frameInSample + channel ].asInt();\r
+            int toSample = ( ( S24* ) inBuffer )[ frameInSample + channelCount + channel ].asInt();\r
+            int sampleDiff = ( int ) ( ( toSample - fromSample ) * inSampleDec );\r
+            ( ( S24* ) outBuffer )[ frameOutSample + channel ] = fromSample + sampleDiff;\r
           }\r
           break;\r
         }\r
@@ -3957,10 +3960,10 @@ void convertBufferWasapi( char* outBuffer,
         {\r
           for ( unsigned int channel = 0; channel < channelCount; channel++ )\r
           {\r
-            int fromSample = ( ( int* ) inBuffer )[ ( inSample * channelCount ) + channel ];\r
-            int toSample = ( ( int* ) inBuffer )[ ( ( inSample + 1 ) * channelCount ) + channel ];\r
-            float sampleDiff = ( toSample - fromSample ) * ( inSampleFraction - inSample );\r
-            ( ( int* ) outBuffer )[ ( outSample * channelCount ) + channel ] = fromSample + ( int ) sampleDiff;\r
+            int fromSample = ( ( int* ) inBuffer )[ frameInSample + channel ];\r
+            int toSample = ( ( int* ) inBuffer )[ frameInSample + channelCount + channel ];\r
+            int sampleDiff = ( int ) ( ( toSample - fromSample ) * inSampleDec );\r
+            ( ( int* ) outBuffer )[ frameOutSample + channel ] = fromSample + sampleDiff;\r
           }\r
           break;\r
         }\r
@@ -3968,10 +3971,10 @@ void convertBufferWasapi( char* outBuffer,
         {\r
           for ( unsigned int channel = 0; channel < channelCount; channel++ )\r
           {\r
-            float fromSample = ( ( float* ) inBuffer )[ ( inSample * channelCount ) + channel ];\r
-            float toSample = ( ( float* ) inBuffer )[ ( ( inSample + 1 ) * channelCount ) + channel ];\r
-            float sampleDiff = ( toSample - fromSample ) * ( inSampleFraction - inSample );\r
-            ( ( float* ) outBuffer )[ ( outSample * channelCount ) + channel ] = fromSample + sampleDiff;\r
+            float fromSample = ( ( float* ) inBuffer )[ frameInSample + channel ];\r
+            float toSample = ( ( float* ) inBuffer )[ frameInSample + channelCount + channel ];\r
+            float sampleDiff = ( toSample - fromSample ) * inSampleDec;\r
+            ( ( float* ) outBuffer )[ frameOutSample + channel ] = fromSample + sampleDiff;\r
           }\r
           break;\r
         }\r
@@ -3979,10 +3982,10 @@ void convertBufferWasapi( char* outBuffer,
         {\r
           for ( unsigned int channel = 0; channel < channelCount; channel++ )\r
           {\r
-            double fromSample = ( ( double* ) inBuffer )[ ( inSample * channelCount ) + channel ];\r
-            double toSample = ( ( double* ) inBuffer )[ ( ( inSample + 1 ) * channelCount ) + channel ];\r
-            double sampleDiff = ( toSample - fromSample ) * ( inSampleFraction - inSample );\r
-            ( ( double* ) outBuffer )[ ( outSample * channelCount ) + channel ] = fromSample + sampleDiff;\r
+            double fromSample = ( ( double* ) inBuffer )[ frameInSample + channel ];\r
+            double toSample = ( ( double* ) inBuffer )[ frameInSample + channelCount + channel ];\r
+            double sampleDiff = ( toSample - fromSample ) * inSampleDec;\r
+            ( ( double* ) outBuffer )[ frameOutSample + channel ] = fromSample + sampleDiff;\r
           }\r
           break;\r
         }\r