DSOUND: buffer underrun & sound chunks left out (RESEND)
Jerry Ji
JerryJz at hotmail.com
Mon Mar 17 06:15:45 CST 2003
Ove Kaaven wrote:
> man, 2003-03-17 kl. 10:06 skrev Jerry Ji:
>
>>This patch fix two problem:
>>1. the improper play position return by DSOUND_PrimaryGetPosition -
>>beffer underrun,
>
>
> I guess this should be considered a bug in wineoss (or maybe your kernel
> drivers), but it's not a dsound bug and should not be fixed by reducing
> the readout precision of drivers that actually work properly. I don't
> think your buffer.c patch is very correct either, it would cause
> spurious noise under some circumstances.
>
Actually, it happend when I use winarts, wineoss has already supported
IDsDriverBuffer, which works fine. As I said, DSOUND_PerformMix and
IDirectSoundBufferImpl_GetCurrentPosition use their own code to get the
primary play position. I don't know why they don't call
DSOUND_PrimaryGetPosition, have they already experienced the same
problem? Beside that, my system is RadHat 8.0, all packages were
installed from the compact discs except alsa-driver0.9.0rc7, none of
them was updated.
>
>>2. and the notify mechanics we used - sound data skipped.
>>
>>Please refer to the comment for the first problem.
>>
>>DSOUND_CheckEvent(IDirectSoundBufferImpl *dsb, int len) original use
>>current play position and the count of data TO BE played to check if a
>>notify should be generated. That's to say, an application may be
>>notified before the data at the desired offset really played. Since the
>>application got the notify that the data in it's demand region is
>>useless (played), it might call IDirectSoundBufferImpl_Lock to lock this
>>region, which contains useful data, IDirectSoundBufferImpl_Lock will
>>handle the conflict by cancelling the region by default.
>
>
> Here's my fix for the problem in WineX, and it's supposed to be able to
> handle the OFFSETSTOP case. I think it should apply to Wine without too
> much trouble.
>
I'm glad to know you have a better patch. Should wine also accept the
patches that accepted by WineX? If I had gotten your patch earlier,
maybe I can save some time.
> Log:
> Ove Kaaven <ovek at transgaming.com>
> Somewhat more reliable dsound position notifications.
>
> Index: mixer.c
> ===================================================================
> RCS file: /cvsroot/winex/wine/dlls/dsound/mixer.c,v
> retrieving revision 1.8
> retrieving revision 1.10
> diff -u -r1.8 -r1.10
> --- mixer.c 1 Oct 2002 13:51:32 -0000 1.8
> +++ mixer.c 14 Feb 2003 22:04:28 -0000 1.10
...
More information about the wine-patches
mailing list