[mythtv] high cpu load for xorg with 50fps playback

Mark Kendall mark.kendall at gmail.com
Fri Apr 27 19:09:02 UTC 2007


On 4/27/07, Markus Schulz <msc at antzsystem.de> wrote:
> Am Freitag, 27. April 2007 schrieb Mark Kendall:
>
> in my opinion the videoout should have nothing todo with deinterlacing
> or similar (only if deinterlacers and postprocessing was written as
> opengl fragment shader, but then it should be also only an extension
> for videoout).
> For my full-framerate no modify on videoout code was needed. Videoout
> should only displays a frame at a given rate and the player calls at
> the wanted rate and hands over the frame data. I don't like the current
> bobdeint implementation, two many special cases inside videoplayer
> _and_ videout module. I know that bobdeint was a little special
> compared to other deinterlacers, but should be possible to implement
> without this many special cases.

Yes - I agree, but don't forget that the bob implementation is
fast/efficient - ie. we only apply the filter once for both fields.

Given that we have both bobdeint and opengl deinterlacers (in
mythtv-vid) that do require some interaction between the player and
the video displayer, we're going to need both methods.

> And no, doubling framerate or not is nothing what can be detected from
> deinterlacer. You can use kernel-deint (and all other except bob) with
> 25fps and 50fps. For 50fps you need only build the intermediate (bottom
> field from last and top from current) frame for some of them (greedyh
> and greedy2frame dont need an intermediate frame cause he need the
> complete previous frame as history).

But none of these filters (as written) will give you a different
output at 50fps. You need frame doubling versions - at which point the
deinterlacing options become kernel or kernel 2* etc. (It's been a
long and painful week - I could well be wrong, if kerneldeint etc are
'field' aware...)

>
> i need a clean frame in second call, the osd makes them dirty. It's
> different than current bobdeint, cause we need to call the deinterlacer
> filter at 50fps not only at 25fps and drawing twice.
> GreedyH uses the previous (really previous not the same on second call)
> for his adaptive algorithmus. Hence i must buffer it inside the filter
> code. The complete runloop of the player must run at 50fps for greedyh
> (and other adaptive deinterlacers).

I appreciate that the filter is running at 50fps but it isn't getting
any new data on the second call. What I'm suggesting is that the
filter should be handling all of its buffering internally and
detecting that it just got sent the same frame (same number)

> > Do you know how the filter actually deinterlaces?
>
> Regarding quality? In my opinion one of the best available inside
> xine-lib. Jack Perveiler is working on another deinterlacer filter from
> DSCaler (greedy2frame). The code is similar to greedyh but needs a more
> complex frame history (up to 5 fields instead of 4 fields for greedyh).

Sorry - should have been clearer. I was trying to understand the
algorithm used to detect and remove the interlacing artefacts.

Regards

Mark


More information about the mythtv-dev mailing list