[mythtv-commits] Re: Ticket #868: [8350] breaks mpeg2 decoding
during frame advance
MythTV
mythtv at cvs.mythtv.org
Sat Dec 31 15:26:13 EST 2005
#868: [8350] breaks mpeg2 decoding during frame advance
--------------------------------+-------------------------------------------
Reporter: bjm <bjm at lvcm.com> | Owner: danielk
Type: defect | Status: assigned
Priority: major | Milestone: 0.19
Component: mythtv | Version: head
Severity: medium | Resolution:
--------------------------------+-------------------------------------------
Comment (by danielk):
(In [8448]) References #868. Makes most DiscardFrames() calls safe.
The old VideoBuffers::DiscardFrames() could only be called safely if the
next frame decoded was a keyframe. This adds a parameter to the function
'next_frame_keyframe' if this is false only frames not in limbo are
discarded and the list of frames in use by the decoder is not cleared. If
'next_frame_keyframe' is true the old DiscardFrames() is used.
There are only three remaining places where DiscardFrames() is called
unsafely, one is when the prebuffer wait has timed out 100 times, and the
other is when GetNextFreeFrame() is called with 'allow_unsafe' set to true
and there are no frames available for decoding onto. Both of these are
designed to prevent deadlock in some pretty dreadful error states so I
think it is best to leave these as is. The final case is with XvMC, this
is needed just because there are not enough frames available in the nVidia
XvMC implementation to handle all seek in all cases. I would recomend not
attempting to edit recordings with XvMC enabled anyway.
What this commit means in practice is fewer 'timed out' messages and fewer
'GetNextFreeFrames() returned busy frame, discarding' messages. Which
means some seeks will be a little faster, and those bits of code where
DiscardFrames() needs to be called unsafely is reduced. This in turn means
you'll be less likely to see distorted frames after a seek.
--
Ticket URL: <http://cvs.mythtv.org/trac/ticket/868>
MythTV <http://www.mythtv.org/>
MythTV
More information about the mythtv-commits
mailing list