deinterlace: Do passthrough in auto mode if downstream only supports interlaced
authorVivia Nikolaidou <vivia@toolsonair.com>
Tue, 26 Jan 2016 16:39:20 +0000 (17:39 +0100)
committerSebastian Dröge <sebastian@centricular.com>
Wed, 27 Jan 2016 15:45:29 +0000 (16:45 +0100)
commitbd27a1f30b4458f2edee53c76dd07fb35904b61d
tree52be7a836b5191d2476c7b5384f57f2af91f5165
parent46735f8de94d7e5a21a37fef003196bff5755fe5
deinterlace: Do passthrough in auto mode if downstream only supports interlaced

If the following conditions are met:
1) upstream and downstream caps are compatible
2) upstream is interlaced
3) downstream doesn't support progressive mode
then deinterlace will just do passthrough instead of failing to link.

This is done with the following scenario in mind:

videotestsrc ! "video/x-raw,interlace-mode=interleaved" ! deinterlace
name=dein_src ! tee name=t ! queue ! deinterlace name=dein_file ! filesink t. !
queue ! deinterlace name=dein_desktop ! autovideosink
In this case, dein_src will do the deinterlacing. However,

videotestsrc ! "video/x-raw,interlace-mode=interleaved" ! deinterlace
name=dein_src ! tee name=t ! queue ! deinterlace name=dein_file ! filesink t. !
queue ! deinterlace name=dein_desktop ! autovideosink t. ! queue !
"video/x-raw,interlace-mode=interleaved" ! fakesink

In this case, caps auto-negotiation will make dein_file and dein_desktop do
the deinterlacing, while dein_src will be passthrough.

https://bugzilla.gnome.org/show_bug.cgi?id=760995
gst/deinterlace/gstdeinterlace.c