[mythtv] Deinterlacer settings

Piotr Oniszczuk piotr.oniszczuk at gmail.com
Sun Feb 17 10:09:31 UTC 2019


> Wiadomość napisana przez Mark Kendall <mark.kendall at gmail.com> w dniu 16.02.2019, o godz. 11:26:
> 
> I'd like to propose a change to how deinterlacers are configured as
> the current setup has become unwieldy to the extent that it is almost
> unmaintainable.
> 
> Proposal:
> 
> - remove existing specific, named deinterlacer selections for main and fallback.
> 
> - replace with something along the lines of:
> - new settings:
>        "Deinterlacer quality (normal)": None, Fast, Medium, High, Advanced
>                "Prefer GPU deinterlacers": Yes/No
>                "Prefer GPU driver deinterlacers": Yes/No
>        "Deinterlacer quality (double rate):" None, Fast, Medium, High, Advanced
>                "Prefer GPU deinterlacers": Yes/No
>                "Prefer GPU driver deinterlacers": Yes/No
> 
> I believe that gives the same flexiblity as the current settings
> without tying the code to specific named deinterlacers. Remember these
> are per profile settings.
> 
> Selecting 'Prefer GPU deinterlacers' would obviously select shader
> based deints over CPU based and 'GPU driver deinterlacers' would
> prefer VDPAU/VAAPI etc over all others. The code can then make some
> informed decisions on what deinterlacer to use and at what stage in
> the decode to presentation process, as well as falling back where
> needed.
> 
> With this setup, under the hood, the deinterlacer selections for Fast,
> Medium, High and Advanced would look something like:
> 
> CPU - Onefield, LInear blend, Kernel, Yadif
> OpenGL/D3D - onefield, linear blend, kernel, new motion adaptive shader
> VAAPI - Bob, Weave, Motion adaptive, Motion compensated
> VDPAU - Bob, Temporal, Spatial, ???
> OpenMax - linedouble, fast, advanced, ??
> 
> Where onefield and bob are interchangeable as 1x and 2x versions.
> 
> Background
> 
> We now have a range of deinterlacer options, not just in terms of
> CPU/GPU/driver based but also in terms of at what stage deinterlacing
> occurs.
> 
> As an example, with VAAPI decode only (VAAPI2), deinterlacing could
> occur in the decoder using either CPU or VAAPI based deinterlacers or
> at playback using the CPU or GLSL shaders (you could even use VAAPI
> again at this stage). With the new VAAPI zero copy code in the render
> branch, the current setup cannot cope with a VAAPI profile that
> expects to use VAAPI deinterlacer names but OpenGLVideo is actually
> presented with raw video frames that (currently) need to pass through
> the GLSL shaders.
> 
> The current code is inflexible - especially with its use of strings to
> explicitly identify each deinterlacer - and has started to break. A
> much simpler and more flexible approach would be to use a simple
> flag/enum that encapsulates the user preferences.
> 
> Thoughts welcome!
> 
> Regards
> Mark
> _______________________________________________
> mythtv-dev mailing list
> mythtv-dev at mythtv.org
> http://lists.mythtv.org/mailman/listinfo/mythtv-dev
> http://wiki.mythtv.org/Mailing_List_etiquette
> MythTV Forums: https://forum.mythtv.org

Mark,

I want to speak from user perspective.
I really like changes direction You propose.

IMHO any change like „yadiff 2xHW” to „high quality, CPU intensive” is always welcomed as user might be not learned what „yadiff” is - but „high quality CPU intensive” will be quickly understood. This will make app feeling like user friendly.

Also I think it will be somehow good to include trade-off in options name.
I mean something like this:
 
from
"Deinterlacer quality (normal)": None, Fast, Medium, High, Advanced

to
"Deinterlacer quality (normal)": None, LowQuality, MediumQuality, HighQuality, Custom

and in hint/help text: 
"LowQuality offers least CPU/GPU load; MediumQuality offers trade-off between CPU/GPU load and deinterlacing quality; HighQuality offers best deinterlacing quality without any compromise on CPU/GPU load; Custom allows to select where major deinterlace load is allocated: CPU or GPU?"

Also maybe „normal” should be changed to „single rate”?
(as alternate is "double rate”)

And maybe „[single]double rate” to

„1x frame rate” and „2x frame rate”?

br





More information about the mythtv-dev mailing list