[Bug 30071] New: Need a CreateTimerQueueTimer that is stable over time

wine-bugs at winehq.org wine-bugs at winehq.org
Sun Mar 4 01:09:50 CST 2012


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

             Bug #: 30071
           Summary: Need a CreateTimerQueueTimer that is stable over time
           Product: Wine
           Version: 1.3.25
          Platform: x86
        OS/Version: Linux
            Status: NEW
          Severity: major
          Priority: P2
         Component: ntdll
        AssignedTo: wine-bugs at winehq.org
        ReportedBy: hoehle at users.sourceforge.net
    Classification: Unclassified


Andrew Eikum's quick test in
http://www.winehq.org/pipermail/wine-devel/2012-February/094457.html
suggests that CreateTimerQueueTimer stabilizes itself over time on *average*. 
For instance, when asked for a 12ms period, it will trigger 5 times within 60ms
even though it is unable to trigger every 12ms. The deltas are:
20, 10, 10, 10, 10, 20, 10, 10, 10, 10, ...

This is an essential property that it would share with winmm timers.

Both winealsa and wineoss today crucially depend on this property.  The XAudio2
algorithm described in bug #28723 either writes one or zero period worth of
data per callback.  Hence it requires callbacks to agree with frame consumption
by the audio device.  If too late, XAudio2 will not catch up by writing 2
periods.

What currently happens is irregular crackling due to occasional underruns
because callbacks are further and further delayed and the audio buffers slowly
empties.  Compare timestamps from apps using winmm with mmdevapi:
winmm mmdevapi
x.304 x.304
x.315 x.315
x.324 x.326
x.334 x.336
x.346 x.348
x.354 x.359
winmm corrects itself and manages to trigger all 10ms events on the same
millisecond as the initial one: x.xx4.

CTQT accumulates delays because as its core, queue_timer_expire uses:
 [t->expire =] queue_current_time() + t->period;

I've separated this issue from bug #28723 because the root cause is not an
audio component and because several other bugs mention CreateTimerQueue, e.g.
bug #29585.

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