Browse Source

Fix stupid bug on AUDIO_IsIntegerConversion() macro

louyihua 8 years ago
parent
commit
c862af68a2
2 changed files with 25 additions and 25 deletions
  1. 24 24
      sound.c
  2. 1 1
      sound.h

+ 24 - 24
sound.c

@@ -956,8 +956,8 @@ AUDIO_PlaySound(
    if (wavespec.freq != gSndPlayer.spec.freq)
    {
 	   /* Resampler is needed */
-	   if (AUDIO_IsIntegerConversion(wavespec.freq))
-	   {
+	   //if (!AUDIO_IsIntegerConversion(wavespec.freq))
+	   //{
 		   resampler_set_quality(gSndPlayer.WavePlayer.resampler, AUDIO_IsIntegerConversion(wavespec.freq) ? RESAMPLER_QUALITY_MIN : gConfig.iResampleQuality);
 		   resampler_set_rate(gSndPlayer.WavePlayer.resampler, (double)wavespec.freq / (double)gSndPlayer.spec.freq);
 		   len = (int)ceil(wavespec.size * (double)gSndPlayer.spec.freq / (double)wavespec.freq) * (SDL_AUDIO_BITSIZE(AUDIO_S16SYS) / SDL_AUDIO_BITSIZE(wavespec.format));
@@ -977,28 +977,28 @@ AUDIO_PlaySound(
 			   free(buf);
 			   return;
 		   }
-	   }
-	   else
-	   {
-		   SDL_BuildAudioCVT(&wavecvt, wavespec.format, wavespec.channels, wavespec.freq, wavespec.format, wavespec.channels, gSndPlayer.spec.freq);
-		   if (wavecvt.len_mult > 1)
-		   {
-			   wavecvt.buf = (LPBYTE)malloc(wavespec.size * wavecvt.len_mult);
-			   memcpy(wavecvt.buf, bufsrc, wavespec.size);
-		   }
-		   else
-			   wavecvt.buf = bufsrc;
-		   wavecvt.len = wavespec.size;
-		   SDL_ConvertAudio(&wavecvt);
-		   if (wavecvt.len_mult > 1)
-		   {
-			   free(buf);
-			   buf = wavecvt.buf;
-		   }
-		   bufdec = wavecvt.buf;
-		   len = (int)(wavespec.size * wavecvt.len_ratio);
-		   wavespec.freq = gSndPlayer.spec.freq;
-	   }
+	   //}
+	   //else
+	   //{
+		  // SDL_BuildAudioCVT(&wavecvt, wavespec.format, wavespec.channels, wavespec.freq, wavespec.format, wavespec.channels, gSndPlayer.spec.freq);
+		  // if (wavecvt.len_mult > 1)
+		  // {
+			 //  wavecvt.buf = (LPBYTE)malloc(wavespec.size * wavecvt.len_mult);
+			 //  memcpy(wavecvt.buf, bufsrc, wavespec.size);
+		  // }
+		  // else
+			 //  wavecvt.buf = bufsrc;
+		  // wavecvt.len = wavespec.size;
+		  // SDL_ConvertAudio(&wavecvt);
+		  // if (wavecvt.len_mult > 1)
+		  // {
+			 //  free(buf);
+			 //  buf = wavecvt.buf;
+		  // }
+		  // bufdec = wavecvt.buf;
+		  // len = (int)(wavespec.size * wavecvt.len_ratio);
+		  // wavespec.freq = gSndPlayer.spec.freq;
+	   //}
    }
    else
    {

+ 1 - 1
sound.h

@@ -98,7 +98,7 @@ SOUND_Reload(
 );
 #endif
 
-#define AUDIO_IsIntegerConversion(a) ((((a) % gConfig.iSampleRate) | (gConfig.iSampleRate % (a))) == 0)
+#define AUDIO_IsIntegerConversion(a) (((a) % gConfig.iSampleRate) == 0 || (gConfig.iSampleRate % (a)) == 0)
 
 #ifdef __cplusplus
 }