[Bug 14717] resampled sound is horrible

wine-bugs at winehq.org wine-bugs at winehq.org
Sat Jan 1 10:57:22 CST 2011


http://bugs.winehq.org/show_bug.cgi?id=14717

--- Comment #104 from Krzysztof Nikiel <zzdz2 at yahoo.pl> 2011-01-01 10:57:22 CST ---
(In reply to comment #96)
> In the downsampling case your patch causes foobar2000 to eat 100% CPU. stutter
> (e.g., it says "wr-wr-ro-ro-ong-ong-n" instead of "wrong") and move the
> position slider back and forth on quality settings other than 0 or 1. And on
> these quality settings, the transition frequency is severely miscalculated
> (according to my test with playing white noise wav file in foobar2000 and
> recording wine output digitally, it is around 2 kHz at quality 1 and around 3
> kHz at quality 0).

This should help:


diff --git a/dlls/dsound/resample.c b/dlls/dsound/resample.c
index e8bc2ad..7486d78 100644
--- a/dlls/dsound/resample.c
+++ b/dlls/dsound/resample.c
@@ -346,9 +346,8 @@ void DSOUND_RecalcFormat(IDirectSoundBufferImpl * dsb)

   dsb->inpos = dsb->infrac = 0; /* reset resampler pointer */

-  if (dsb->freq < dsb->outfreq)
-    dsb->firstep = g_fir[dsb->quality]->step;
-  else if (dsb->freq > dsb->outfreq)
+  dsb->firstep = g_fir[dsb->quality]->step;
+  if (dsb->outfreq < dsb->freq)
   {
     /* move transition band below output nuquist */
     dsb->firstep = (9 * dsb->firstep * dsb->outfreq) / (10 * dsb->freq);
@@ -360,7 +359,7 @@ void DSOUND_RecalcFormat(IDirectSoundBufferImpl * dsb)
     if (dsb->firstep < 1)
       dsb->firstep = 1;
   }
-  else
+  else if (dsb->freq == dsb->outfreq)
     dsb->firstep = 1;

   TRACE("resample quality: %d\n", dsb->quality);

-- 
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
Do not reply to this email, post in Bugzilla using the
above URL to reply.
------- You are receiving this mail because: -------
You are watching all bug changes.



More information about the wine-bugs mailing list