Opened 13 years ago
Closed 13 years ago
Last modified 13 years ago
#9719 closed Bug Report - General (Works for me)
Cutlist editing doesn't update displayed video frame with yadif/greedyhighmotion filters when seeking new stream positions
Reported by: | Owned by: | markk | |
---|---|---|---|
Priority: | minor | Milestone: | unknown |
Component: | MythTV - Video/OSD Rendering | Version: | 0.24-fixes |
Severity: | medium | Keywords: | |
Cc: | Ticket locked: | no |
Description
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
Change History (5)
comment:1 Changed 13 years ago by
comment:2 Changed 13 years ago by
I have also seen this, but only with the GreedyHighMotion? filter. Yadif works well for me. I think you are right about the additional frame needed by the filter. When jumping around in the timeline for the cutlist editor, you catch a momentary glimpse of the correct underlying frame followed by a static frame that never changes, making editing completely impossible.
I find GreedyHighMotion? to be a much better quality delinterlacer than Yadif (especially for mouth and lip motion), and would prefer to use it if it was fixed in the editor.
Gav
comment:3 Changed 13 years ago by
Status: | new → infoneeded_new |
---|
I can't reproduce this in master when either editing or pausing and skipping. Can anyone running master confirm/deny?
comment:4 Changed 13 years ago by
Resolution: | → Works for me |
---|---|
Status: | infoneeded_new → closed |
No response to request for info.
comment:5 Changed 13 years ago by
I get what is described by the OP, but have no deinterlacing selected.
Forgot to mention - this also happens when jumping forward/backward when the stream is paused.
Cheers,
Mark