[mythtv-users] Re: very serious A/V sync issues

Robson Braga Araujo robson at akwan.com.br
Mon Mar 7 16:53:27 UTC 2005


On Mon, Mar 07, 2005 at 08:49:05AM -0500, Matt Vollmar wrote:
> Sounds to me like the opengl_vsync issue.  You need to recompile Myth 
> without opengl_vsync set.  I don't think anyone has found a different 
> work-around.  I did this and everything was peachy.  It's worth a try, 
> anyway.  Search for it on the list if you aren't sure what this means.

Hi,

Regarding this issue, I posted the following mail in mythtv-dev:
http://www.gossamer-threads.com/lists/mythtv/dev/116337

I got no answers. Since this seems to be a more active community, I'm
hopping someone can comment on it. If you don't feel like opening a
web browser, the message follows.

------

Re: Playback problems with mythtv 0.17  [In reply to]
On Fri, Mar 04, 2005 at 08:50:57PM -0300, Robson Braga Araujo wrote:
> Hello,
>
> I'm having playback problems since I upgraded from 0.16 to 0.17. The
> video plays too fast, gets ahead of the audio and generates tons of
> prebuffering pause messages. I tried the latest cvs version, but no
> luck. This happens if I'm watching live TV or any prerecorded show (no
> prebuffering pauses here, obviously).
>
> I have a PVR-250. I tested with the drivers 0.1.9 and 0.3.2f. I'm also
> using a SB Live! and a nvidia GeForce2 MX/MX 400 with the latest
> drivers.
>
> I ran 0.16 (which plays fine) and 0.17 with -v all and generated too log
> files for comparison. They are here:
>
> http://valfenda.cjb.net/~robson/log.0.16
> http://valfenda.cjb.net/~robson/log.0.17
>
> Do you need any more information?
> Thanks for any help.

After a good saturday trying different CVS versions to see when the bug
appeared, I discovered that it is in the method
OpenGLVideoSync::WaitForFrame in libs/libmythtv/vsync.cpp.

If I use another sync method like RTCVideoSync or BusyWaitVideoSync
everything works fine.

The change that introduced the bug appeared between 2004-09-25 and
2004-09-26. The OpenGLVideoSync::WaitForFrame used to have a loop that
did not exit until m_delay was less than or equal 0. It was substituted
by two ifs that I'm guessing should do the same thing but they don't.

I tried reverting the OpenGLVideoSync::WaitForFrame method to the old
version in the current CVS and now everything is working. The attached
patch changes the first if for a while and gets rid of the second if
because it would never be entered this way.

Is it the right way to do it?

-- 
[]s,
Robson Braga Araujo
Ciencia da Computacao - UFMG      http://www.dcc.ufmg.br/
Akwan Information Technologies    http://www.akwan.com.br/

   Hobbes : Well, you still have afternoons and weekends 
   Calvin : That's when I watch TV.


More information about the mythtv-users mailing list