[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