Remove OSS configuration from pyrtaudio.
[rtaudio-cdist.git] / RtAudio.cpp
index 65ed83072e31a65d28f20d841a6ba94a53839eea..f4bff00b0ae9d187d54f7e055d02ba466e88b48b 100644 (file)
@@ -3869,129 +3869,132 @@ void convertBufferWasapi( char* outBuffer,
                           unsigned int& outSampleCount,\r
                           const RtAudioFormat& format )\r
 {\r
-    // calculate the new outSampleCount and relative sampleStep\r
-    float sampleRatio = ( float ) outSampleRate / inSampleRate;\r
-    float sampleRatioInv = ( float ) 1 / sampleRatio;\r
-    float sampleStep = 1.0f / sampleRatio;\r
-    float inSampleFraction = 0.0f;\r
+  // calculate the new outSampleCount and relative sampleStep\r
+  float sampleRatio = ( float ) outSampleRate / inSampleRate;\r
+  float sampleRatioInv = ( float ) 1 / sampleRatio;\r
+  float sampleStep = 1.0f / sampleRatio;\r
+  float inSampleFraction = 0.0f;\r
 \r
-    outSampleCount = ( unsigned int ) roundf( inSampleCount * sampleRatio );\r
+  outSampleCount = ( unsigned int ) roundf( inSampleCount * sampleRatio );\r
 \r
-    // if inSampleRate is a multiple of outSampleRate (or vice versa) there's no need to interpolate\r
-    if (floor( sampleRatio ) == sampleRatio || floor( sampleRatioInv ) == sampleRatioInv)\r
+  // if inSampleRate is a multiple of outSampleRate (or vice versa) there's no need to interpolate\r
+  if ( floor( sampleRatio ) == sampleRatio || floor( sampleRatioInv ) == sampleRatioInv )\r
+  {\r
+    // frame-by-frame, copy each relative input sample into it's corresponding output sample\r
+    for ( unsigned int outSample = 0; outSample < outSampleCount; outSample++ )\r
     {\r
-        // frame-by-frame, copy each relative input sample into it's corresponding output sample\r
-        for (unsigned int outSample = 0; outSample < outSampleCount; outSample++)\r
-        {\r
-            unsigned int inSample = ( unsigned int ) inSampleFraction;\r
-\r
-            switch (format)\r
-            {\r
-            case RTAUDIO_SINT8:\r
-                memcpy( &(( char* ) outBuffer)[outSample * channelCount], &(( char* ) inBuffer)[inSample * channelCount], channelCount * sizeof( char ) );\r
-                break;\r
-            case RTAUDIO_SINT16:\r
-                memcpy( &(( short* ) outBuffer)[outSample * channelCount], &(( short* ) inBuffer)[inSample * channelCount], channelCount * sizeof( short ) );\r
-                break;\r
-            case RTAUDIO_SINT24:\r
-                memcpy( &(( S24* ) outBuffer)[outSample * channelCount], &(( S24* ) inBuffer)[inSample * channelCount], channelCount * sizeof( S24 ) );\r
-                break;\r
-            case RTAUDIO_SINT32:\r
-                memcpy( &(( int* ) outBuffer)[outSample * channelCount], &(( int* ) inBuffer)[inSample * channelCount], channelCount * sizeof( int ) );\r
-                break;\r
-            case RTAUDIO_FLOAT32:\r
-                memcpy( &(( float* ) outBuffer)[outSample * channelCount], &(( float* ) inBuffer)[inSample * channelCount], channelCount * sizeof( float ) );\r
-                break;\r
-            case RTAUDIO_FLOAT64:\r
-                memcpy( &(( double* ) outBuffer)[outSample * channelCount], &(( double* ) inBuffer)[inSample * channelCount], channelCount * sizeof( double ) );\r
-                break;\r
-            }\r
+      unsigned int inSample = ( unsigned int ) inSampleFraction;\r
 \r
-            // jump to next in sample\r
-            inSampleFraction += sampleStep;\r
-        }\r
+      switch ( format )\r
+      {\r
+        case RTAUDIO_SINT8:\r
+          memcpy( &( ( char* ) outBuffer )[ outSample * channelCount ], &( ( char* ) inBuffer )[ inSample * channelCount ], channelCount * sizeof( char ) );\r
+          break;\r
+        case RTAUDIO_SINT16:\r
+          memcpy( &( ( short* ) outBuffer )[ outSample * channelCount ], &( ( short* ) inBuffer )[ inSample * channelCount ], channelCount * sizeof( short ) );\r
+          break;\r
+        case RTAUDIO_SINT24:\r
+          memcpy( &( ( S24* ) outBuffer )[ outSample * channelCount ], &( ( S24* ) inBuffer )[ inSample * channelCount ], channelCount * sizeof( S24 ) );\r
+          break;\r
+        case RTAUDIO_SINT32:\r
+          memcpy( &( ( int* ) outBuffer )[ outSample * channelCount ], &( ( int* ) inBuffer )[ inSample * channelCount ], channelCount * sizeof( int ) );\r
+          break;\r
+        case RTAUDIO_FLOAT32:\r
+          memcpy( &( ( float* ) outBuffer )[ outSample * channelCount ], &( ( float* ) inBuffer )[ inSample * channelCount ], channelCount * sizeof( float ) );\r
+          break;\r
+        case RTAUDIO_FLOAT64:\r
+          memcpy( &( ( double* ) outBuffer )[ outSample * channelCount ], &( ( double* ) inBuffer )[ inSample * channelCount ], channelCount * sizeof( double ) );\r
+          break;\r
+      }\r
+\r
+      // jump to next in sample\r
+      inSampleFraction += sampleStep;\r
     }\r
-    else // else interpolate\r
+  }\r
+  else // else interpolate\r
+  {\r
+    // frame-by-frame, copy each relative input sample into it's corresponding output sample\r
+    for ( unsigned int outSample = 0; outSample < outSampleCount; outSample++ )\r
     {\r
-        // frame-by-frame, copy each relative input sample into it's corresponding output sample\r
-        for (unsigned int outSample = 0; outSample < outSampleCount; outSample++)\r
-        {\r
-            unsigned int inSample = ( unsigned int ) inSampleFraction;\r
-\r
-            switch (format)\r
-            {\r
-            case RTAUDIO_SINT8:\r
-            {\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 - floor( inSampleFraction ));\r
-                    (( char* ) outBuffer)[(outSample * channelCount) + channel] = fromSample + ( char ) sampleDiff;\r
-                }\r
-                break;\r
-            }\r
-            case RTAUDIO_SINT16:\r
-            {\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 - floor( inSampleFraction ));\r
-                    (( short* ) outBuffer)[(outSample * channelCount) + channel] = fromSample + ( short ) sampleDiff;\r
-                }\r
-                break;\r
-            }\r
-            case RTAUDIO_SINT24:\r
-            {\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 - floor( inSampleFraction ));\r
-                    (( S24* ) outBuffer)[(outSample * channelCount) + channel] = fromSample + ( int ) sampleDiff;\r
-                }\r
-                break;\r
-            }\r
-            case RTAUDIO_SINT32:\r
-            {\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 - floor( inSampleFraction ));\r
-                    (( int* ) outBuffer)[(outSample * channelCount) + channel] = fromSample + ( int ) sampleDiff;\r
-                }\r
-                break;\r
-            }\r
-            case RTAUDIO_FLOAT32:\r
-            {\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 - floor( inSampleFraction ));\r
-                    (( float* ) outBuffer)[(outSample * channelCount) + channel] = fromSample + sampleDiff;\r
-                }\r
-                break;\r
-            }\r
-            case RTAUDIO_FLOAT64:\r
-            {\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 - floor( inSampleFraction ));\r
-                    (( double* ) outBuffer)[(outSample * channelCount) + channel] = fromSample + sampleDiff;\r
-                }\r
-                break;\r
-            }\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
-            // jump to next in sample\r
-            inSampleFraction += sampleStep;\r
+      switch ( format )\r
+      {\r
+        case RTAUDIO_SINT8:\r
+        {\r
+          for ( unsigned int channel = 0; channel < channelCount; channel++ )\r
+          {\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
+        case RTAUDIO_SINT16:\r
+        {\r
+          for ( unsigned int channel = 0; channel < channelCount; channel++ )\r
+          {\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
+        case RTAUDIO_SINT24:\r
+        {\r
+          for ( unsigned int channel = 0; channel < channelCount; channel++ )\r
+          {\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
+        case RTAUDIO_SINT32:\r
+        {\r
+          for ( unsigned int channel = 0; channel < channelCount; channel++ )\r
+          {\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
+        case RTAUDIO_FLOAT32:\r
+        {\r
+          for ( unsigned int channel = 0; channel < channelCount; channel++ )\r
+          {\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
+        case RTAUDIO_FLOAT64:\r
+        {\r
+          for ( unsigned int channel = 0; channel < channelCount; channel++ )\r
+          {\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
+      }\r
+\r
+      // jump to next in sample\r
+      inSampleFraction += sampleStep;\r
     }\r
+  }\r
 }\r
 \r
 //-----------------------------------------------------------------------------\r