[mythtv-commits] Ticket #9719: Cutlist editing doesn't update displayed video frame with yadif/greedyhighmotion filters when seeking new stream positions

MythTV noreply at mythtv.org
Sat Apr 9 20:47:39 UTC 2011


#9719: Cutlist editing doesn't update displayed video frame with
yadif/greedyhighmotion filters when seeking new stream positions
----------------------------------------------+------------------------
     Reporter:  mpc_mythtv@…                  |      Owner:  markk
         Type:  Bug Report - General          |     Status:  new
     Priority:  minor                         |  Milestone:  unknown
    Component:  MythTV - Video/OSD Rendering  |    Version:  0.24-fixes
     Severity:  medium                        |   Keywords:
Ticket locked:  0                             |
----------------------------------------------+------------------------
 Hi Myth-Experts!

 The displayed video frame is not updated when using Yadif/GreedyHighMotion
 filters, except at aspect ratio changes.  The displayed frame updates
 correctly with no filter, kernel or linear blend.

 At aspect-ratio changes, the updated from is from before the aspect
 change.

 I'd hazard a guess that this is due to the multi-frame-processing nature
 of yadif/greedyhighmotion not having sufficient frames available to return
 a valid deinterlaced frame.


 On my setup, yadif looks noticeably better for sport playback, but it
 makes exact advert cutting pretty painful - it is a relatively deep part
 of the setup options to toggle yadif-none.


 This isn't a new phenomenon with 0.24.  I think it has been present since
 at least 0.22 (binary distributions from sniderpad and others)

 Setup:

 Locally built 0.24-fixes as of 9/April, OSX 10.6.7, MacMini, Intel GMA
 950, QT&OpenGL, UK-Freeview recording in standard definition.


 Other information:

 I made a small mod to filter_yadif.c (replacing HAVE_MMX with
 HAVE_MMX_DISABLED) to allow it to compile without MMX as this fails on OSX
 due to register pressure, but same non-updating behaviour is seen with the
 stock GreedyHighMotion filter.


 From the '-v most' logging around the cutlist left-right seeks:

 {{{
 Works (KernelDeInt)

 2011-04-09 21:13:49.304 AFD: DoFastForward(1752 (1728), do discard frames)
 2011-04-09 21:13:49.305 Dec: DoFastForward(1752 (1728), do discard frames)
 2011-04-09 21:13:49.305 Dec: FindPosition(1752, search not adjusted) -->
 [145:1752(22063118)]
 2011-04-09 21:13:49.305 RingBuf(/mnt/d5/tv/1004_20110408205500.mpg):
 Seek(22063118,SEEK_SET,unlocked)
 2011-04-09 21:13:49.305 RingBuf(/mnt/d5/tv/1004_20110408205500.mpg):
 Seek(): rbrpos: 0 rbwpos: 0
                         readpos: 21827598 internalreadpos: 21729294
 2011-04-09 21:13:49.305 RingBuf(/mnt/d5/tv/1004_20110408205500.mpg):
 ResetReadAhead(internalreadpos = 21729294->22063118)
 2011-04-09 21:13:49.305 RingBuf(/mnt/d5/tv/1004_20110408205500.mpg):
 CalcReadAheadThresh(15192 Kb)
                          -> threshhold(512 KB) min read(32 KB) blk
 size(960 KB)
 2011-04-09 21:13:49.305 AFD: SeekReset(1752, 0, do flush, do discard)
 2011-04-09 21:13:49.305 AFD: SeekReset() flushing
 2011-04-09 21:13:49.306 VideoBuffers::DiscardFrames(1):
 AAAAAAAAAAAAAAAAUAAAAAAAAAAAAAA
 2011-04-09 21:13:49.306 VideoBuffers::DiscardFrames():
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -- done()
 2011-04-09 21:13:49.306 VideoBuffers::DiscardFrames(1):
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -- done
 2011-04-09 21:13:49.307 Player(5): ClearAfterSeek(0)


 Fails (GreedyHDeint)

 2011-04-09 21:16:00.716 AFD: DoFastForward(2066 (2042), do discard frames)
 2011-04-09 21:16:00.716 Dec: DoFastForward(2066 (2042), do discard frames)
 2011-04-09 21:16:00.716 Dec: FindPosition(2066, search not adjusted) -->
                         [171:2064(26357774),172:2076(26490894)]
 2011-04-09 21:16:00.716 RingBuf(/mnt/d5/tv/1004_20110408205500.mpg):
 Seek(26357774,SEEK_SET,unlocked)
 2011-04-09 21:16:00.716 RingBuf(/mnt/d5/tv/1004_20110408205500.mpg):
 Seek(): rbrpos: 0 rbwpos: 0
                         readpos: 26161166 internalreadpos: 26030094
 2011-04-09 21:16:00.717 RingBuf(/mnt/d5/tv/1004_20110408205500.mpg):
 ResetReadAhead(internalreadpos = 26030094->26357774)
 2011-04-09 21:16:00.717 RingBuf(/mnt/d5/tv/1004_20110408205500.mpg):
 CalcReadAheadThresh(15192 Kb)
                          -> threshhold(512 KB) min read(32 KB) blk
 size(992 KB)
 2011-04-09 21:16:00.717 AFD: SeekReset(2064, 2, do flush, do discard)
 2011-04-09 21:16:00.717 AFD: SeekReset() flushing
 2011-04-09 21:16:00.717 VideoBuffers::DiscardFrames(1):
 AAAAAAAAAAUAAAAAAAAAAAAAAAAAAAA
 2011-04-09 21:16:00.717 VideoBuffers::DiscardFrames():
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -- done()
 2011-04-09 21:16:00.717 VideoBuffers::DiscardFrames(1):
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -- done
 2011-04-09 21:16:00.729 Player(6): ClearAfterSeek(0)
 }}}

 As it has been around a while, I guess it isn't so easy to fix, but I
 couldn't find an earlier ticket about this.  A minor niggle in a great
 program I've been using for many years now.

 Thanks a lot for reading this far!

 Cheers,

 Mark

-- 
Ticket URL: <http://code.mythtv.org/trac/ticket/9719>
MythTV <http://code.mythtv.org/trac>
MythTV Media Center


More information about the mythtv-commits mailing list