[mythtv-commits] Re: Ticket #827: XvMC and general FF-REW >3x problem

MythTV mythtv at cvs.mythtv.org
Thu Dec 22 09:33:29 EST 2005


#827: XvMC and general FF-REW >3x problem
----------------------------------+-----------------------------------------
 Reporter:  marco.coli at hi-cad.it  |        Owner:  danielk
     Type:  defect                |       Status:  closed 
 Priority:  minor                 |    Milestone:  0.19   
Component:  mythtv                |      Version:  head   
 Severity:  medium                |   Resolution:  fixed  
----------------------------------+-----------------------------------------
Changes (by danielk):

  * resolution:  => fixed
  * status:  new => closed

Comment:

 (In [8350]) Fixes #827. This fixes two major problems with FF/REW > 3x,
 and some minor problems.

 The two major problems had to do with not throwing away some cached
 data after a seek, and leaving frames in limbo.

 The first resulted in ffmpeg/libmpeg2 decoding errors; which we generally
 recovered from, but left a lot of junk in the debugging output and
 slowed down the decoding. This was fixed by decoupling freeing bogus
 data and freeing frames (the bogus data was being freed after a regular
 seek.) Basically a new param 'discardFrames' has been added to
 SeekReset().

 The second major problem left a frame in limbo after each seek, this
 caused major problems for XvMC and some less serious problems for XVideo
 output. This was fixed by adding a new method to VideoBuffers,
 DeLimboFrame() which is called when av_release_frame releases a frame,
 which is now called after a SeekReset for partially decoded frame.
 This frame leaves frames we've already put in 'U'sed alone, but moves
 'L'imboed frames to 'A'vailable.

 This fix does not fix libmpeg2 leaking frames, only ffmpeg; I don't quite
 understand how libmpeg2 is supposed to be freeing frames. The lack of this
 call in the proper place may be the reason why preview screen grabs don't
 work with libmpeg2. libmpeg2 appears to still basically work with
 FF/REW > 3x, but doesn't fully decode the frames and pauses whenever the
 limbo frames add up too much, but they eventually get purged.

 There were also some minor problems with non-exact seeking sometimes
 jumping backward in FF mode, and with frame-by-frame seeking grabbing
 frames and actually decoding the video when it didn't have to. These
 are also fixed by this commit. And 'Normal' and 'FFREW' GetFrame has
 been seperated in the NVP for better readability, and simpler logic.

-- 
Ticket URL: <http://cvs.mythtv.org/trac/ticket/827>
MythTV <http://www.mythtv.org/>
MythTV


More information about the mythtv-commits mailing list