Fix a signed-unsigned comparison.
[rtaudio-cdist.git] / RtAudio.cpp
index 308a24471919d03e3e0a80842568e386da2d2087..603da0a163699d25b77512d19f505292e5d8d69d 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
@@ -8780,8 +8783,10 @@ RtAudio::DeviceInfo RtApiOss :: getDeviceInfo( unsigned int device )
     info.nativeFormats |= RTAUDIO_SINT8;\r
   if ( mask & AFMT_S32_LE || mask & AFMT_S32_BE )\r
     info.nativeFormats |= RTAUDIO_SINT32;\r
+#ifdef AFMT_FLOAT
   if ( mask & AFMT_FLOAT )\r
     info.nativeFormats |= RTAUDIO_FLOAT32;\r
+#endif
   if ( mask & AFMT_S24_LE || mask & AFMT_S24_BE )\r
     info.nativeFormats |= RTAUDIO_SINT24;\r
 \r
@@ -9108,7 +9113,7 @@ bool RtApiOss :: probeDeviceOpen( unsigned int device, StreamMode mode, unsigned
   }\r
 \r
   // Verify the sample rate setup worked.\r
-  if ( abs( srate - sampleRate ) > 100 ) {\r
+  if ( abs( srate - (int)sampleRate ) > 100 ) {
     close( fd );\r
     errorStream_ << "RtApiOss::probeDeviceOpen: device (" << ainfo.name << ") does not support sample rate (" << sampleRate << ").";\r
     errorText_ = errorStream_.str();\r