[mythtv] [PATCH] vsync reimplementation
John Patrick Poet
john at BlueSkyTours.com
Thu Jul 8 22:39:53 EDT 2004
Doug Larrick wrote:
> The attached files reimplement vsync.c's functionality in C++, moving
> all responsibility for frame synchronization to the new classes.
> NuppelVideoPlayer is still responsible for audio-video sync.
> I am sending in this version in hopes people will try it, look at the
> code, and give me feedback. I have done a bunch of testing, but this
> is a lot of new code and I'm sure there are problems remaining.
> In particular, I have no way to test DRM or nVidia polling sync
> methods. I'm also curious to see how it performs with non-nVidia TV
> out: most should pick up the new /dev/rtc timer, which is probably an
> Major changes:
> * New class hierarchy implementing various hardware or timer-based
> video sync methods; the best available method is chosen automatically.
> * Available video sync methods: DRM, nVidia polling, SGI OpenGL, RTC,
> USleep with busy wait, and USleep. See the code for details.
> * Surgery to NuppelVideoPlayer to accomplish the split
> * Elimination of user settings "Jitter Reduction" and "Experimental
> A/V Sync" (or "Video Card based A/V Sync") since the settings don't
> make sense in the new framework. The only controversy is that anyone
> who can't use /dev/rtc will now be using the old Jitter Reduction
> method with no chance to turn it off.
> * A/V sync is now accomplished using either audio (using the ExAVSync
> code) or video (VTAVSync) as a timebase. OldAVSync is gone.
> * Tweaks to VTAVSync so it's useable on HDTV recordings
> * Better fix for OpenGL video sync crashes on 2.6 kernels
> * Preliminary hooks to allow displaying each field of an interlaced
> video sequentially. Daniel, look for comments starting with "DTK".
> The patch touches NuppelVideoPlayer.cpp & h, globalsettings.cpp, and
> tv_play.cpp (the last for the OpenGL fix).
> vsync.cpp is a new file for libs/libmythtv. vsync.c needs to be
> removed before the build will succeed.
> vsync.h should entirely replace the existing one in libs/libmythtv.
Tried this out. Seems to work very well.
I compiled with OpenGL enabled. Durring playback it detected SGI OpenGL
and used it. Playback looked good.
Recompiled with OpenGL disabled. Durring playback it reported that was
using RTC. Playback also looked good.
To be honest, I really could not tell a difference between it using
OpenGL and RTC.
No problems, no crashes.
More information about the mythtv-dev