quartz: Fix converting between the media time and REFTIME

Erich Hoover ehoover at mines.edu
Wed Sep 14 11:28:33 CDT 2011


On Wed, Sep 14, 2011 at 9:07 AM, <Joerg-Cyril.Hoehle at t-systems.com> wrote:

> I've never tried to understand quartz, but I'd like to know whether quartz
> expects particular behaviour from the underlying winmm or mmdevapi
> time/position/length functions.
>

At least for what I've been dealing with so far quartz uses dsound for
handling the underlying buffers.  So, I would imagine if you've solved the
quirks for dsound then you've likely handled quartz as well.

For instance, quartz says its clocks are monotically increasing, whereas no
> such requirement is documented (or at least known to me) for the audio
> stream
> positions. This may seem obvious, but then I came across some mailing list
> where
> people reported a sudden backward change in stream position when
> pluggin/unplugging
> earphones or the like.
>

There are a few different ways to *return* time in quartz, but it appears
that everything comes down to the reference clock eventually.  Have you
looked at REFERENCE_TIME and
IReferenceClock?.<http://msdn.microsoft.com/en-us/library/dd377507%28v=vs.85%29.aspx>

Is quartz very decoupled from the underlying audio information?
>

>From my exploration it appears to be, but I'm not an expert yet.  In the
patch you're replying to I just corrected the time conversion between
IMediaSeeking (which uses REFERENCE_TIME, LONGLONG measured in 100ns) and
IMediaPosition (which uses REFTIME, double measured in seconds).  I am
trying to look into the time handling further though, as the background
music stutters horribly in Fallout 3 (though it works great in Fallout New
Vegas).

Who stops the clock (if at all) while the stream is paused?
>

At least in Wine the reference clock is not stopped when a stream is
paused.  When pausing the clock is retrieved and stored (MediaControl_Pause)
and then on resume it is retrieved again and adjusted to create a new start
time (MediaControl_Run).  From the reading I've done I don't think there is
a way to stop the reference clock, aside from writing and using your own
custom clock.

I hope that helps somewhat.  I'm not sure exactly what you're trying to do
wrt. testing quartz, but if there's some way I can help then please let me
know.

Erich Hoover
ehoover at mines.edu
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.winehq.org/pipermail/wine-devel/attachments/20110914/069c9914/attachment.html>


More information about the wine-devel mailing list