[mythtv] Video Output patch v13
danielk at cat.nyu.edu
Thu Apr 21 17:57:21 UTC 2005
On Wed, 2005-04-20 at 13:38 -0400, Daniel Kristjansson wrote:
This is an update on the Xv/XvMC patch.
The patch is here:
> On Tue, 2005-04-19 at 22:46 -0400, Daniel Kristjansson wrote:
> I believe I have fixed the OSD problem in HDTV. By that I mean there
> are no lockups and frames don't seem to get lost. Basically, I've
> made DiscardFrames more aggressive by Syncing all displayed frames,
> while making at the same time it less aggressive by using the
> VideoOutputXv::DiscardFrame() to discard frames, which ensures
> that any frames for which an OSD blend frame is showing does not
> get discarded.
It looks like I may have been too aggressive in DiscardFrame(),
I've made it a little more less so in this patch.
I've also added some complexity to UpdatePauseFrame(). Now, if
a new frame has been decoded since pause began we use it. This
lets us see a frame if we skip after pressing pause. Also it
now reuses pause frame whenever possible, and discards old pause
frames in UpdatePauseFrame(). Normally pause frames are discarded
in the first non-pause frame Show(), but if the user skipped
after pausing or skipped 7 times in a row without letting the
video play once past the pause frame, then the XvMC buffers
completely filled with pause frames.
I've also added more locks around X11 calls, and I've reworked
SyncFrame to use XvMCFlushSurface(), followed by a series of
XvMCGetSurfaceStatus() calls. This isn't as clean as just using
XvMCSyncSurface(), but allows us to us an X11 lock around the
calls without killing performance.
Finally, I've made the debugging output in VideoBuffers's
AddInheritence() method more useful. This is because some people
are seeing warnings coming from this method before a system
Hopefully, the locking around more X11 calls will help with the
system dead-lock problem.
More information about the mythtv-dev