[Bug 28723] Sound stutter in Rage when emulated windows version is set to "Windows 7" (XAudio2 -> mmdevapi sound output path)

wine-bugs at winehq.org wine-bugs at winehq.org
Wed Dec 7 04:19:28 CST 2011


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

--- Comment #72 from Jörg Höhle <hoehle at users.sourceforge.net> 2011-12-07 04:19:28 CST ---
Created attachment 37844
  --> http://bugs.winehq.org/attachment.cgi?id=37844
GetPosition with snd_pcm_delay

I spent days fighting an old PulseAudio trying to figure a repeatable way to
have avail_update or snd_pcm_delay produce reasonable values after underrun
recovery.  No deal.

Here's a version of GetPosition that exhibits the following properties:
- monotonically increasing (not documented, but I read in dlls/
  Quartz' GetPosition has such a requirement);
- protection against garbage delay data;
- never using ALSA padding, because that can't be relied upon
  in PulseAudio after an underrun;
- works perfectly with dmix, reasonably well with old Pulseaudio --
  don't dump old Linux distributions!
- after IAC_Stop, freeze to sum_written - mmdevapi_padding, comment #65.

The latter causes 2 of my tests to fail ("position X too far after only 100ms")
for as long as Wine forwards a lot of audio down to ALSA, whereas native feeds
10ms at a time.

Before submitting, all I plan to change is to move TRACE after LeaveCS.
I've not yet tested whether it passes tests on top of current git.  So far, I
used it with patches from comment #54.  It would be nice if it could be
independent, though ("with GP fixed, let's tackle GCP").


Regarding set_hw_params_period_*, I'm leaning towards this patch:
if(duration <= 80ms) /* app shows it wants tight timing */
  set_hw_params_period_time max(20ms); /* abort on error not shown */
set_hw_params_period_time_near(10ms);
2 calls because _near won't prevent using 100ms if the device doesn't support
smaller periods.  _max will ensure it fails.

-- 
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