• Zebediah Figura's avatar
    quartz/dsoundrender: Delegate IReferenceClock to the system clock. · 63a6b308
    Zebediah Figura authored
    For several reasons.
    
    Firstly, the reference clock should still function when the filter is not
    running.
    
    Secondly, IDirectSoundBuffer::GetPositions() in practice returns very coarse
    positions, both on Windows and on Wine. On my hardware, the resolution is
    about 10ms, which, while suitable for the DirectSound renderer and probably
    also any video renderers, is nevertheless actually coarser than
    GetTickCount().
    
    Thirdly, testing supports that the native DirectSound renderer returns a
    timestamp from IReferenceClock::GetTime() that is more accurate than
    IDirectSoundBuffer::GetPositions(). In fact, after dumping a large number of
    different clock sources, I came to the conclusion that it is probably using
    timeGetTime() as a source. On Wine that's identical to GetTickCount(), so we
    may as well just delegate directly to the system clock.
    Signed-off-by: 's avatarZebediah Figura <z.figura12@gmail.com>
    Signed-off-by: 's avatarAlexandre Julliard <julliard@winehq.org>
    63a6b308
dsoundrender.c 28 KB