Deinterlace plugin working backwards ?

classic Classic list List threaded Threaded
7 messages Options
Reply | Threaded
Open this post in threaded view
|

Deinterlace plugin working backwards ?

Rob Heig
Hello,
I'm trying to deinterlace an interlaced raw video, but despite having spent 2 days on this I am still stuck. The interesting thing is that, by looking at the output of gst-launch, I see weird results:

gst-launch-1.0 -v filesrc location=vvvv.raw ! videoparse width=768 height=288 format=4 framerate=50/1 interlaced=true ! videoconvert ! deinterlace ! autovideosink

Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
/GstPipeline:pipeline0/GstVideoParse:videoparse0/GstRawVideoParse:inner_rawvideoparse.GstPad:src: caps = video/x-raw, format=(string)YUY2, width=(int)768, height=(int)288, interlace-mode=(string)interleaved, pixel-aspect-ratio=(fraction)1/1, chroma-site=(string)jpeg, colorimetry=(string)bt601, framerate=(fraction)50/1
/GstPipeline:pipeline0/GstVideoParse:videoparse0.GstGhostPad:src: caps = video/x-raw, format=(string)YUY2, width=(int)768, height=(int)288, interlace-mode=(string)interleaved, pixel-aspect-ratio=(fraction)1/1, chroma-site=(string)jpeg, colorimetry=(string)bt601, framerate=(fraction)50/1
/GstPipeline:pipeline0/GstVideoConvert:videoconvert0.GstPad:src: caps = video/x-raw, width=(int)768, height=(int)288, interlace-mode=(string)interleaved, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)50/1, format=(string)YV12
/GstPipeline:pipeline0/GstDeinterlace:deinterlace0.GstPad:src: caps = video/x-raw, width=(int)768, height=(int)288, interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)100/1, format=(string)YV12
/GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0.GstGhostPad:sink.GstProxyPad:proxypad2: caps = video/x-raw, width=(int)768, height=(int)288, interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)100/1, format=(string)YV12
/GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstXvImageSink:autovideosink0-actual-sink-xvimage.GstPad:sink: caps = video/x-raw, width=(int)768, height=(int)288, interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)100/1, format=(string)YV12
/GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0.GstGhostPad:sink: caps = video/x-raw, width=(int)768, height=(int)288, interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)100/1, format=(string)YV12
/GstPipeline:pipeline0/GstDeinterlace:deinterlace0.GstPad:sink: caps = video/x-raw, width=(int)768, height=(int)288, interlace-mode=(string)interleaved, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)50/1, format=(string)YV12
/GstPipeline:pipeline0/GstVideoConvert:videoconvert0.GstPad:sink: caps = video/x-raw, format=(string)YUY2, width=(int)768, height=(int)288, interlace-mode=(string)interleaved, pixel-aspect-ratio=(fraction)1/1, chroma-site=(string)jpeg, colorimetry=(string)bt601, framerate=(fraction)50/1
/GstPipeline:pipeline0/GstVideoParse:videoparse0.GstGhostPad:src.GstProxyPad:proxypad1: caps = video/x-raw, format=(string)YUY2, width=(int)768, height=(int)288, interlace-mode=(string)interleaved, pixel-aspect-ratio=(fraction)1/1, chroma-site=(string)jpeg, colorimetry=(string)bt601, framerate=(fraction)50/1
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
ERROR: from element /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstXvImageSink:autovideosink0-actual-sink-xvimage: Output window was closed
Additional debug info:
xvimagesink.c(555): gst_xv_image_sink_handle_xevents (): /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstXvImageSink:autovideosink0-actual-sink-xvimage
Execution ended after 0:00:02.956028008
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
Setting pipeline to NULL ...
Freeing pipeline ...

I would naively expect the deinterlace plugin to take a 50 Hz, 720x288 interlaced video and give as output a 25 Hz, 720x576 one.
Instead, the resolution stays the same, while the frame rate doubles.... ????
I have tested this on gstreamer 1.45 and gstreamer 1.6.
Am I missing anything?
Thanks in advance for all suggestions!
Best,
Rob


_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Deinterlace plugin working backwards ?

Tony Houghton
It seems more conventional to refer to the total frame height rather than the height of each field, so have you tried using "height=576" instead?

On Wed, 28 Oct 2020 at 11:00, Rob Heig <[hidden email]> wrote:
Hello,
I'm trying to deinterlace an interlaced raw video, but despite having spent 2 days on this I am still stuck. The interesting thing is that, by looking at the output of gst-launch, I see weird results:

gst-launch-1.0 -v filesrc location=vvvv.raw ! videoparse width=768 height=288 format=4 framerate=50/1 interlaced=true ! videoconvert ! deinterlace ! autovideosink

Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
/GstPipeline:pipeline0/GstVideoParse:videoparse0/GstRawVideoParse:inner_rawvideoparse.GstPad:src: caps = video/x-raw, format=(string)YUY2, width=(int)768, height=(int)288, interlace-mode=(string)interleaved, pixel-aspect-ratio=(fraction)1/1, chroma-site=(string)jpeg, colorimetry=(string)bt601, framerate=(fraction)50/1
/GstPipeline:pipeline0/GstVideoParse:videoparse0.GstGhostPad:src: caps = video/x-raw, format=(string)YUY2, width=(int)768, height=(int)288, interlace-mode=(string)interleaved, pixel-aspect-ratio=(fraction)1/1, chroma-site=(string)jpeg, colorimetry=(string)bt601, framerate=(fraction)50/1
/GstPipeline:pipeline0/GstVideoConvert:videoconvert0.GstPad:src: caps = video/x-raw, width=(int)768, height=(int)288, interlace-mode=(string)interleaved, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)50/1, format=(string)YV12
/GstPipeline:pipeline0/GstDeinterlace:deinterlace0.GstPad:src: caps = video/x-raw, width=(int)768, height=(int)288, interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)100/1, format=(string)YV12
/GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0.GstGhostPad:sink.GstProxyPad:proxypad2: caps = video/x-raw, width=(int)768, height=(int)288, interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)100/1, format=(string)YV12
/GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstXvImageSink:autovideosink0-actual-sink-xvimage.GstPad:sink: caps = video/x-raw, width=(int)768, height=(int)288, interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)100/1, format=(string)YV12
/GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0.GstGhostPad:sink: caps = video/x-raw, width=(int)768, height=(int)288, interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)100/1, format=(string)YV12
/GstPipeline:pipeline0/GstDeinterlace:deinterlace0.GstPad:sink: caps = video/x-raw, width=(int)768, height=(int)288, interlace-mode=(string)interleaved, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)50/1, format=(string)YV12
/GstPipeline:pipeline0/GstVideoConvert:videoconvert0.GstPad:sink: caps = video/x-raw, format=(string)YUY2, width=(int)768, height=(int)288, interlace-mode=(string)interleaved, pixel-aspect-ratio=(fraction)1/1, chroma-site=(string)jpeg, colorimetry=(string)bt601, framerate=(fraction)50/1
/GstPipeline:pipeline0/GstVideoParse:videoparse0.GstGhostPad:src.GstProxyPad:proxypad1: caps = video/x-raw, format=(string)YUY2, width=(int)768, height=(int)288, interlace-mode=(string)interleaved, pixel-aspect-ratio=(fraction)1/1, chroma-site=(string)jpeg, colorimetry=(string)bt601, framerate=(fraction)50/1
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
ERROR: from element /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstXvImageSink:autovideosink0-actual-sink-xvimage: Output window was closed
Additional debug info:
xvimagesink.c(555): gst_xv_image_sink_handle_xevents (): /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstXvImageSink:autovideosink0-actual-sink-xvimage
Execution ended after 0:00:02.956028008
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
Setting pipeline to NULL ...
Freeing pipeline ...

I would naively expect the deinterlace plugin to take a 50 Hz, 720x288 interlaced video and give as output a 25 Hz, 720x576 one.
Instead, the resolution stays the same, while the frame rate doubles.... ????
I have tested this on gstreamer 1.45 and gstreamer 1.6.
Am I missing anything?
Thanks in advance for all suggestions!
Best,
Rob

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel


--
TH


_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Deinterlace plugin working backwards ?

Rob Heig
Thanks for your reply! Yes I've did that, what I get is that window that gets displayed has two frames one on top of the other, still doubling the frame rate:

gst-launch-1.0 -v filesrc location=vvvv.raw ! videoparse width=768 height=576 format=4 framerate=50/1 interlaced=true ! videoconvert ! deinterlace ! autovideosink

Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
/GstPipeline:pipeline0/GstVideoParse:videoparse0/GstRawVideoParse:inner_rawvideoparse.GstPad:src: caps = video/x-raw, format=(string)YUY2, width=(int)768, height=(int)576, interlace-mode=(string)interleaved, pixel-aspect-ratio=(fraction)1/1, chroma-site=(string)jpeg, colorimetry=(string)bt601, framerate=(fraction)50/1
/GstPipeline:pipeline0/GstVideoParse:videoparse0.GstGhostPad:src: caps = video/x-raw, format=(string)YUY2, width=(int)768, height=(int)576, interlace-mode=(string)interleaved, pixel-aspect-ratio=(fraction)1/1, chroma-site=(string)jpeg, colorimetry=(string)bt601, framerate=(fraction)50/1
/GstPipeline:pipeline0/GstVideoConvert:videoconvert0.GstPad:src: caps = video/x-raw, width=(int)768, height=(int)576, interlace-mode=(string)interleaved, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)50/1, format=(string)YV12
/GstPipeline:pipeline0/GstDeinterlace:deinterlace0.GstPad:src: caps = video/x-raw, width=(int)768, height=(int)576, interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)100/1, format=(string)YV12
/GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0.GstGhostPad:sink.GstProxyPad:proxypad2: caps = video/x-raw, width=(int)768, height=(int)576, interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)100/1, format=(string)YV12
/GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstXvImageSink:autovideosink0-actual-sink-xvimage.GstPad:sink: caps = video/x-raw, width=(int)768, height=(int)576, interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)100/1, format=(string)YV12
/GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0.GstGhostPad:sink: caps = video/x-raw, width=(int)768, height=(int)576, interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)100/1, format=(string)YV12
/GstPipeline:pipeline0/GstDeinterlace:deinterlace0.GstPad:sink: caps = video/x-raw, width=(int)768, height=(int)576, interlace-mode=(string)interleaved, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)50/1, format=(string)YV12
/GstPipeline:pipeline0/GstVideoConvert:videoconvert0.GstPad:sink: caps = video/x-raw, format=(string)YUY2, width=(int)768, height=(int)576, interlace-mode=(string)interleaved, pixel-aspect-ratio=(fraction)1/1, chroma-site=(string)jpeg, colorimetry=(string)bt601, framerate=(fraction)50/1
/GstPipeline:pipeline0/GstVideoParse:videoparse0.GstGhostPad:src.GstProxyPad:proxypad1: caps = video/x-raw, format=(string)YUY2, width=(int)768, height=(int)576, interlace-mode=(string)interleaved, pixel-aspect-ratio=(fraction)1/1, chroma-site=(string)jpeg, colorimetry=(string)bt601, framerate=(fraction)50/1
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
Got EOS from element "pipeline0".
Execution ended after 0:00:03.000241651
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
Setting pipeline to NULL ...
Freeing pipeline ...

On Wed, 28 Oct 2020 at 12:11, Tony Houghton <[hidden email]> wrote:
It seems more conventional to refer to the total frame height rather than the height of each field, so have you tried using "height=576" instead?

On Wed, 28 Oct 2020 at 11:00, Rob Heig <[hidden email]> wrote:
Hello,
I'm trying to deinterlace an interlaced raw video, but despite having spent 2 days on this I am still stuck. The interesting thing is that, by looking at the output of gst-launch, I see weird results:

gst-launch-1.0 -v filesrc location=vvvv.raw ! videoparse width=768 height=288 format=4 framerate=50/1 interlaced=true ! videoconvert ! deinterlace ! autovideosink

Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
/GstPipeline:pipeline0/GstVideoParse:videoparse0/GstRawVideoParse:inner_rawvideoparse.GstPad:src: caps = video/x-raw, format=(string)YUY2, width=(int)768, height=(int)288, interlace-mode=(string)interleaved, pixel-aspect-ratio=(fraction)1/1, chroma-site=(string)jpeg, colorimetry=(string)bt601, framerate=(fraction)50/1
/GstPipeline:pipeline0/GstVideoParse:videoparse0.GstGhostPad:src: caps = video/x-raw, format=(string)YUY2, width=(int)768, height=(int)288, interlace-mode=(string)interleaved, pixel-aspect-ratio=(fraction)1/1, chroma-site=(string)jpeg, colorimetry=(string)bt601, framerate=(fraction)50/1
/GstPipeline:pipeline0/GstVideoConvert:videoconvert0.GstPad:src: caps = video/x-raw, width=(int)768, height=(int)288, interlace-mode=(string)interleaved, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)50/1, format=(string)YV12
/GstPipeline:pipeline0/GstDeinterlace:deinterlace0.GstPad:src: caps = video/x-raw, width=(int)768, height=(int)288, interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)100/1, format=(string)YV12
/GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0.GstGhostPad:sink.GstProxyPad:proxypad2: caps = video/x-raw, width=(int)768, height=(int)288, interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)100/1, format=(string)YV12
/GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstXvImageSink:autovideosink0-actual-sink-xvimage.GstPad:sink: caps = video/x-raw, width=(int)768, height=(int)288, interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)100/1, format=(string)YV12
/GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0.GstGhostPad:sink: caps = video/x-raw, width=(int)768, height=(int)288, interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)100/1, format=(string)YV12
/GstPipeline:pipeline0/GstDeinterlace:deinterlace0.GstPad:sink: caps = video/x-raw, width=(int)768, height=(int)288, interlace-mode=(string)interleaved, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)50/1, format=(string)YV12
/GstPipeline:pipeline0/GstVideoConvert:videoconvert0.GstPad:sink: caps = video/x-raw, format=(string)YUY2, width=(int)768, height=(int)288, interlace-mode=(string)interleaved, pixel-aspect-ratio=(fraction)1/1, chroma-site=(string)jpeg, colorimetry=(string)bt601, framerate=(fraction)50/1
/GstPipeline:pipeline0/GstVideoParse:videoparse0.GstGhostPad:src.GstProxyPad:proxypad1: caps = video/x-raw, format=(string)YUY2, width=(int)768, height=(int)288, interlace-mode=(string)interleaved, pixel-aspect-ratio=(fraction)1/1, chroma-site=(string)jpeg, colorimetry=(string)bt601, framerate=(fraction)50/1
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
ERROR: from element /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstXvImageSink:autovideosink0-actual-sink-xvimage: Output window was closed
Additional debug info:
xvimagesink.c(555): gst_xv_image_sink_handle_xevents (): /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstXvImageSink:autovideosink0-actual-sink-xvimage
Execution ended after 0:00:02.956028008
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
Setting pipeline to NULL ...
Freeing pipeline ...

I would naively expect the deinterlace plugin to take a 50 Hz, 720x288 interlaced video and give as output a 25 Hz, 720x576 one.
Instead, the resolution stays the same, while the frame rate doubles.... ????
I have tested this on gstreamer 1.45 and gstreamer 1.6.
Am I missing anything?
Thanks in advance for all suggestions!
Best,
Rob

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel


--
TH

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Deinterlace plugin working backwards ?

Tony Houghton
Have you also tried framerate=25/1?

On Wed, 28 Oct 2020 at 11:37, Rob Heig <[hidden email]> wrote:
Thanks for your reply! Yes I've did that, what I get is that window that gets displayed has two frames one on top of the other, still doubling the frame rate:

gst-launch-1.0 -v filesrc location=vvvv.raw ! videoparse width=768 height=576 format=4 framerate=50/1 interlaced=true ! videoconvert ! deinterlace ! autovideosink

Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
/GstPipeline:pipeline0/GstVideoParse:videoparse0/GstRawVideoParse:inner_rawvideoparse.GstPad:src: caps = video/x-raw, format=(string)YUY2, width=(int)768, height=(int)576, interlace-mode=(string)interleaved, pixel-aspect-ratio=(fraction)1/1, chroma-site=(string)jpeg, colorimetry=(string)bt601, framerate=(fraction)50/1
/GstPipeline:pipeline0/GstVideoParse:videoparse0.GstGhostPad:src: caps = video/x-raw, format=(string)YUY2, width=(int)768, height=(int)576, interlace-mode=(string)interleaved, pixel-aspect-ratio=(fraction)1/1, chroma-site=(string)jpeg, colorimetry=(string)bt601, framerate=(fraction)50/1
/GstPipeline:pipeline0/GstVideoConvert:videoconvert0.GstPad:src: caps = video/x-raw, width=(int)768, height=(int)576, interlace-mode=(string)interleaved, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)50/1, format=(string)YV12
/GstPipeline:pipeline0/GstDeinterlace:deinterlace0.GstPad:src: caps = video/x-raw, width=(int)768, height=(int)576, interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)100/1, format=(string)YV12
/GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0.GstGhostPad:sink.GstProxyPad:proxypad2: caps = video/x-raw, width=(int)768, height=(int)576, interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)100/1, format=(string)YV12
/GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstXvImageSink:autovideosink0-actual-sink-xvimage.GstPad:sink: caps = video/x-raw, width=(int)768, height=(int)576, interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)100/1, format=(string)YV12
/GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0.GstGhostPad:sink: caps = video/x-raw, width=(int)768, height=(int)576, interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)100/1, format=(string)YV12
/GstPipeline:pipeline0/GstDeinterlace:deinterlace0.GstPad:sink: caps = video/x-raw, width=(int)768, height=(int)576, interlace-mode=(string)interleaved, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)50/1, format=(string)YV12
/GstPipeline:pipeline0/GstVideoConvert:videoconvert0.GstPad:sink: caps = video/x-raw, format=(string)YUY2, width=(int)768, height=(int)576, interlace-mode=(string)interleaved, pixel-aspect-ratio=(fraction)1/1, chroma-site=(string)jpeg, colorimetry=(string)bt601, framerate=(fraction)50/1
/GstPipeline:pipeline0/GstVideoParse:videoparse0.GstGhostPad:src.GstProxyPad:proxypad1: caps = video/x-raw, format=(string)YUY2, width=(int)768, height=(int)576, interlace-mode=(string)interleaved, pixel-aspect-ratio=(fraction)1/1, chroma-site=(string)jpeg, colorimetry=(string)bt601, framerate=(fraction)50/1
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
Got EOS from element "pipeline0".
Execution ended after 0:00:03.000241651
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
Setting pipeline to NULL ...
Freeing pipeline ...

On Wed, 28 Oct 2020 at 12:11, Tony Houghton <[hidden email]> wrote:
It seems more conventional to refer to the total frame height rather than the height of each field, so have you tried using "height=576" instead?

On Wed, 28 Oct 2020 at 11:00, Rob Heig <[hidden email]> wrote:
Hello,
I'm trying to deinterlace an interlaced raw video, but despite having spent 2 days on this I am still stuck. The interesting thing is that, by looking at the output of gst-launch, I see weird results:

gst-launch-1.0 -v filesrc location=vvvv.raw ! videoparse width=768 height=288 format=4 framerate=50/1 interlaced=true ! videoconvert ! deinterlace ! autovideosink

Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
/GstPipeline:pipeline0/GstVideoParse:videoparse0/GstRawVideoParse:inner_rawvideoparse.GstPad:src: caps = video/x-raw, format=(string)YUY2, width=(int)768, height=(int)288, interlace-mode=(string)interleaved, pixel-aspect-ratio=(fraction)1/1, chroma-site=(string)jpeg, colorimetry=(string)bt601, framerate=(fraction)50/1
/GstPipeline:pipeline0/GstVideoParse:videoparse0.GstGhostPad:src: caps = video/x-raw, format=(string)YUY2, width=(int)768, height=(int)288, interlace-mode=(string)interleaved, pixel-aspect-ratio=(fraction)1/1, chroma-site=(string)jpeg, colorimetry=(string)bt601, framerate=(fraction)50/1
/GstPipeline:pipeline0/GstVideoConvert:videoconvert0.GstPad:src: caps = video/x-raw, width=(int)768, height=(int)288, interlace-mode=(string)interleaved, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)50/1, format=(string)YV12
/GstPipeline:pipeline0/GstDeinterlace:deinterlace0.GstPad:src: caps = video/x-raw, width=(int)768, height=(int)288, interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)100/1, format=(string)YV12
/GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0.GstGhostPad:sink.GstProxyPad:proxypad2: caps = video/x-raw, width=(int)768, height=(int)288, interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)100/1, format=(string)YV12
/GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstXvImageSink:autovideosink0-actual-sink-xvimage.GstPad:sink: caps = video/x-raw, width=(int)768, height=(int)288, interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)100/1, format=(string)YV12
/GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0.GstGhostPad:sink: caps = video/x-raw, width=(int)768, height=(int)288, interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)100/1, format=(string)YV12
/GstPipeline:pipeline0/GstDeinterlace:deinterlace0.GstPad:sink: caps = video/x-raw, width=(int)768, height=(int)288, interlace-mode=(string)interleaved, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)50/1, format=(string)YV12
/GstPipeline:pipeline0/GstVideoConvert:videoconvert0.GstPad:sink: caps = video/x-raw, format=(string)YUY2, width=(int)768, height=(int)288, interlace-mode=(string)interleaved, pixel-aspect-ratio=(fraction)1/1, chroma-site=(string)jpeg, colorimetry=(string)bt601, framerate=(fraction)50/1
/GstPipeline:pipeline0/GstVideoParse:videoparse0.GstGhostPad:src.GstProxyPad:proxypad1: caps = video/x-raw, format=(string)YUY2, width=(int)768, height=(int)288, interlace-mode=(string)interleaved, pixel-aspect-ratio=(fraction)1/1, chroma-site=(string)jpeg, colorimetry=(string)bt601, framerate=(fraction)50/1
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
ERROR: from element /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstXvImageSink:autovideosink0-actual-sink-xvimage: Output window was closed
Additional debug info:
xvimagesink.c(555): gst_xv_image_sink_handle_xevents (): /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstXvImageSink:autovideosink0-actual-sink-xvimage
Execution ended after 0:00:02.956028008
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
Setting pipeline to NULL ...
Freeing pipeline ...

I would naively expect the deinterlace plugin to take a 50 Hz, 720x288 interlaced video and give as output a 25 Hz, 720x576 one.
Instead, the resolution stays the same, while the frame rate doubles.... ????
I have tested this on gstreamer 1.45 and gstreamer 1.6.
Am I missing anything?
Thanks in advance for all suggestions!
Best,
Rob

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel


--
TH

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel


--
TH


_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Deinterlace plugin working backwards ?

Rob Heig
Yes, sure, the same as above but it says that the input file is at 25 Hz and the output of deinterlace is at 50 Hz :(

On Wed, 28 Oct 2020 at 12:51, Tony Houghton <[hidden email]> wrote:
Have you also tried framerate=25/1?

On Wed, 28 Oct 2020 at 11:37, Rob Heig <[hidden email]> wrote:
Thanks for your reply! Yes I've did that, what I get is that window that gets displayed has two frames one on top of the other, still doubling the frame rate:

gst-launch-1.0 -v filesrc location=vvvv.raw ! videoparse width=768 height=576 format=4 framerate=50/1 interlaced=true ! videoconvert ! deinterlace ! autovideosink

Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
/GstPipeline:pipeline0/GstVideoParse:videoparse0/GstRawVideoParse:inner_rawvideoparse.GstPad:src: caps = video/x-raw, format=(string)YUY2, width=(int)768, height=(int)576, interlace-mode=(string)interleaved, pixel-aspect-ratio=(fraction)1/1, chroma-site=(string)jpeg, colorimetry=(string)bt601, framerate=(fraction)50/1
/GstPipeline:pipeline0/GstVideoParse:videoparse0.GstGhostPad:src: caps = video/x-raw, format=(string)YUY2, width=(int)768, height=(int)576, interlace-mode=(string)interleaved, pixel-aspect-ratio=(fraction)1/1, chroma-site=(string)jpeg, colorimetry=(string)bt601, framerate=(fraction)50/1
/GstPipeline:pipeline0/GstVideoConvert:videoconvert0.GstPad:src: caps = video/x-raw, width=(int)768, height=(int)576, interlace-mode=(string)interleaved, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)50/1, format=(string)YV12
/GstPipeline:pipeline0/GstDeinterlace:deinterlace0.GstPad:src: caps = video/x-raw, width=(int)768, height=(int)576, interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)100/1, format=(string)YV12
/GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0.GstGhostPad:sink.GstProxyPad:proxypad2: caps = video/x-raw, width=(int)768, height=(int)576, interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)100/1, format=(string)YV12
/GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstXvImageSink:autovideosink0-actual-sink-xvimage.GstPad:sink: caps = video/x-raw, width=(int)768, height=(int)576, interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)100/1, format=(string)YV12
/GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0.GstGhostPad:sink: caps = video/x-raw, width=(int)768, height=(int)576, interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)100/1, format=(string)YV12
/GstPipeline:pipeline0/GstDeinterlace:deinterlace0.GstPad:sink: caps = video/x-raw, width=(int)768, height=(int)576, interlace-mode=(string)interleaved, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)50/1, format=(string)YV12
/GstPipeline:pipeline0/GstVideoConvert:videoconvert0.GstPad:sink: caps = video/x-raw, format=(string)YUY2, width=(int)768, height=(int)576, interlace-mode=(string)interleaved, pixel-aspect-ratio=(fraction)1/1, chroma-site=(string)jpeg, colorimetry=(string)bt601, framerate=(fraction)50/1
/GstPipeline:pipeline0/GstVideoParse:videoparse0.GstGhostPad:src.GstProxyPad:proxypad1: caps = video/x-raw, format=(string)YUY2, width=(int)768, height=(int)576, interlace-mode=(string)interleaved, pixel-aspect-ratio=(fraction)1/1, chroma-site=(string)jpeg, colorimetry=(string)bt601, framerate=(fraction)50/1
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
Got EOS from element "pipeline0".
Execution ended after 0:00:03.000241651
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
Setting pipeline to NULL ...
Freeing pipeline ...

On Wed, 28 Oct 2020 at 12:11, Tony Houghton <[hidden email]> wrote:
It seems more conventional to refer to the total frame height rather than the height of each field, so have you tried using "height=576" instead?

On Wed, 28 Oct 2020 at 11:00, Rob Heig <[hidden email]> wrote:
Hello,
I'm trying to deinterlace an interlaced raw video, but despite having spent 2 days on this I am still stuck. The interesting thing is that, by looking at the output of gst-launch, I see weird results:

gst-launch-1.0 -v filesrc location=vvvv.raw ! videoparse width=768 height=288 format=4 framerate=50/1 interlaced=true ! videoconvert ! deinterlace ! autovideosink

Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
/GstPipeline:pipeline0/GstVideoParse:videoparse0/GstRawVideoParse:inner_rawvideoparse.GstPad:src: caps = video/x-raw, format=(string)YUY2, width=(int)768, height=(int)288, interlace-mode=(string)interleaved, pixel-aspect-ratio=(fraction)1/1, chroma-site=(string)jpeg, colorimetry=(string)bt601, framerate=(fraction)50/1
/GstPipeline:pipeline0/GstVideoParse:videoparse0.GstGhostPad:src: caps = video/x-raw, format=(string)YUY2, width=(int)768, height=(int)288, interlace-mode=(string)interleaved, pixel-aspect-ratio=(fraction)1/1, chroma-site=(string)jpeg, colorimetry=(string)bt601, framerate=(fraction)50/1
/GstPipeline:pipeline0/GstVideoConvert:videoconvert0.GstPad:src: caps = video/x-raw, width=(int)768, height=(int)288, interlace-mode=(string)interleaved, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)50/1, format=(string)YV12
/GstPipeline:pipeline0/GstDeinterlace:deinterlace0.GstPad:src: caps = video/x-raw, width=(int)768, height=(int)288, interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)100/1, format=(string)YV12
/GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0.GstGhostPad:sink.GstProxyPad:proxypad2: caps = video/x-raw, width=(int)768, height=(int)288, interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)100/1, format=(string)YV12
/GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstXvImageSink:autovideosink0-actual-sink-xvimage.GstPad:sink: caps = video/x-raw, width=(int)768, height=(int)288, interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)100/1, format=(string)YV12
/GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0.GstGhostPad:sink: caps = video/x-raw, width=(int)768, height=(int)288, interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)100/1, format=(string)YV12
/GstPipeline:pipeline0/GstDeinterlace:deinterlace0.GstPad:sink: caps = video/x-raw, width=(int)768, height=(int)288, interlace-mode=(string)interleaved, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)50/1, format=(string)YV12
/GstPipeline:pipeline0/GstVideoConvert:videoconvert0.GstPad:sink: caps = video/x-raw, format=(string)YUY2, width=(int)768, height=(int)288, interlace-mode=(string)interleaved, pixel-aspect-ratio=(fraction)1/1, chroma-site=(string)jpeg, colorimetry=(string)bt601, framerate=(fraction)50/1
/GstPipeline:pipeline0/GstVideoParse:videoparse0.GstGhostPad:src.GstProxyPad:proxypad1: caps = video/x-raw, format=(string)YUY2, width=(int)768, height=(int)288, interlace-mode=(string)interleaved, pixel-aspect-ratio=(fraction)1/1, chroma-site=(string)jpeg, colorimetry=(string)bt601, framerate=(fraction)50/1
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
ERROR: from element /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstXvImageSink:autovideosink0-actual-sink-xvimage: Output window was closed
Additional debug info:
xvimagesink.c(555): gst_xv_image_sink_handle_xevents (): /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstXvImageSink:autovideosink0-actual-sink-xvimage
Execution ended after 0:00:02.956028008
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
Setting pipeline to NULL ...
Freeing pipeline ...

I would naively expect the deinterlace plugin to take a 50 Hz, 720x288 interlaced video and give as output a 25 Hz, 720x576 one.
Instead, the resolution stays the same, while the frame rate doubles.... ????
I have tested this on gstreamer 1.45 and gstreamer 1.6.
Am I missing anything?
Thanks in advance for all suggestions!
Best,
Rob

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel


--
TH

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel


--
TH

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Deinterlace plugin working backwards ?

Nicolas Dufresne-5
Le mercredi 28 octobre 2020 à 12:54 +0100, Rob Heig a écrit :

> Yes, sure, the same as above but it says that the input file is at 25
> Hz and the output of deinterlace is at 50 Hz :(
> On Wed, 28 Oct 2020 at 12:51, Tony Houghton <[hidden email]> wrote:
> > Have you also tried framerate=25/1?
> >
> > On Wed, 28 Oct 2020 at 11:37, Rob Heig <[hidden email]> wrote:
> > > Thanks for your reply! Yes I've did that, what I get is that
> > > window that gets displayed has two frames one on top of the
> > > other, still doubling the frame rate:
> > >
> > > gst-launch-1.0 -v filesrc location=vvvv.raw ! videoparse
> > > width=768 height=576 format=4 framerate=50/1 interlaced=true !
> > > videoconvert ! deinterlace ! autovideosink

Appparently videoparse (same for rawvideoparse, it's replacement), only
gives you a boolean for interlacing. While in practice, GStreamer caps
uses an enum, interlace-mode={progressive, interleaved, alternate}.

The last is only supported in 1.18+ and that method seems to be what
you have in your raw video data according to the field height hack you
have done.

Progressive content is not interlaved. The most common way to store
interlaced content is "interleaved", what is being assumed by
rawvideoparse. In this mode, top and bottom fields are stored in the
same buffer with full height, you'd have top fields line on even lines,
and bottom field lines on odds lines (you have to set the field-order=
in the caps if you have bottom field first).

What you seem to have instead of alternate interlaced. In this case,
each fields is passed as an half height image, alternating between
images. This was added recently in gstreamer under a caps setter.
Perhaps the author forgot to update and test with rawvideoparse, but I
would try using upstream caps filter to communicate the settings
properly to the parser (by enabling use-sink-caps property).

  ... ! video/x-raw\(format:Interlaced\),interlace-mode=alternate,format=YUY2,width=768,height=576 ! rawvideoparse use-sink-caps=1 ! ...

Ideally we could deprecate the bookean property and add a new property
"interlace-mode" with the enum inside rawvideoparse. I'm not totally
sure that this caps filter method will actually work. If not, please
open an issue against gst-plugins-good.

> > >
> > > Setting pipeline to PAUSED ...
> > > Pipeline is PREROLLING ...
> > > /GstPipeline:pipeline0/GstVideoParse:videoparse0/GstRawVideoParse
> > > :inner_rawvideoparse.GstPad:src: caps = video/x-raw,
> > > format=(string)YUY2, width=(int)768, height=(int)576, interlace-
> > > mode=(string)interleaved, pixel-aspect-ratio=(fraction)1/1,
> > > chroma-site=(string)jpeg, colorimetry=(string)bt601,
> > > framerate=(fraction)50/1
> > > /GstPipeline:pipeline0/GstVideoParse:videoparse0.GstGhostPad:src:
> > > caps = video/x-raw, format=(string)YUY2, width=(int)768,
> > > height=(int)576, interlace-mode=(string)interleaved, pixel-
> > > aspect-ratio=(fraction)1/1, chroma-site=(string)jpeg,
> > > colorimetry=(string)bt601, framerate=(fraction)50/1
> > > /GstPipeline:pipeline0/GstVideoConvert:videoconvert0.GstPad:src:
> > > caps = video/x-raw, width=(int)768, height=(int)576, interlace-
> > > mode=(string)interleaved, pixel-aspect-ratio=(fraction)1/1,
> > > framerate=(fraction)50/1, format=(string)YV12
> > > /GstPipeline:pipeline0/GstDeinterlace:deinterlace0.GstPad:src:
> > > caps = video/x-raw, width=(int)768, height=(int)576, interlace-
> > > mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1,
> > > framerate=(fraction)100/1, format=(string)YV12
> > > /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0.GstGhostPa
> > > d:sink.GstProxyPad:proxypad2: caps = video/x-raw, width=(int)768,
> > > height=(int)576, interlace-mode=(string)progressive, pixel-
> > > aspect-ratio=(fraction)1/1, framerate=(fraction)100/1,
> > > format=(string)YV12
> > > /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstXvImage
> > > Sink:autovideosink0-actual-sink-xvimage.GstPad:sink: caps =
> > > video/x-raw, width=(int)768, height=(int)576, interlace-
> > > mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1,
> > > framerate=(fraction)100/1, format=(string)YV12
> > > /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0.GstGhostPa
> > > d:sink: caps = video/x-raw, width=(int)768, height=(int)576,
> > > interlace-mode=(string)progressive, pixel-aspect-
> > > ratio=(fraction)1/1, framerate=(fraction)100/1,
> > > format=(string)YV12
> > > /GstPipeline:pipeline0/GstDeinterlace:deinterlace0.GstPad:sink:
> > > caps = video/x-raw, width=(int)768, height=(int)576, interlace-
> > > mode=(string)interleaved, pixel-aspect-ratio=(fraction)1/1,
> > > framerate=(fraction)50/1, format=(string)YV12
> > > /GstPipeline:pipeline0/GstVideoConvert:videoconvert0.GstPad:sink:
> > > caps = video/x-raw, format=(string)YUY2, width=(int)768,
> > > height=(int)576, interlace-mode=(string)interleaved, pixel-
> > > aspect-ratio=(fraction)1/1, chroma-site=(string)jpeg,
> > > colorimetry=(string)bt601, framerate=(fraction)50/1
> > > /GstPipeline:pipeline0/GstVideoParse:videoparse0.GstGhostPad:src.
> > > GstProxyPad:proxypad1: caps = video/x-raw, format=(string)YUY2,
> > > width=(int)768, height=(int)576, interlace-
> > > mode=(string)interleaved, pixel-aspect-ratio=(fraction)1/1,
> > > chroma-site=(string)jpeg, colorimetry=(string)bt601,
> > > framerate=(fraction)50/1
> > > Pipeline is PREROLLED ...
> > > Setting pipeline to PLAYING ...
> > > New clock: GstSystemClock
> > > Got EOS from element "pipeline0".
> > > Execution ended after 0:00:03.000241651
> > > Setting pipeline to PAUSED ...
> > > Setting pipeline to READY ...
> > > Setting pipeline to NULL ...
> > > Freeing pipeline ...
> > >
> > > On Wed, 28 Oct 2020 at 12:11, Tony Houghton <[hidden email]>
> > > wrote:
> > > > It seems more conventional to refer to the total frame height
> > > > rather than the height of each field, so have you tried using
> > > > "height=576" instead?
> > > >
> > > > On Wed, 28 Oct 2020 at 11:00, Rob Heig <[hidden email]>
> > > > wrote:
> > > > > Hello,
> > > > > I'm trying to deinterlace an interlaced raw video, but
> > > > > despite having spent 2 days on this I am still stuck. The
> > > > > interesting thing is that, by looking at the output of gst-
> > > > > launch, I see weird results:
> > > > >
> > > > > gst-launch-1.0 -v filesrc location=vvvv.raw ! videoparse
> > > > > width=768 height=288 format=4 framerate=50/1 interlaced=true
> > > > > ! videoconvert ! deinterlace ! autovideosink
> > > > >
> > > > > Setting pipeline to PAUSED ...
> > > > > Pipeline is PREROLLING ...
> > > > > /GstPipeline:pipeline0/GstVideoParse:videoparse0/GstRawVideoP
> > > > > arse:inner_rawvideoparse.GstPad:src: caps = video/x-raw,
> > > > > format=(string)YUY2, width=(int)768, height=(int)288,
> > > > > interlace-mode=(string)interleaved, pixel-aspect-
> > > > > ratio=(fraction)1/1, chroma-site=(string)jpeg,
> > > > > colorimetry=(string)bt601, framerate=(fraction)50/1
> > > > > /GstPipeline:pipeline0/GstVideoParse:videoparse0.GstGhostPad:
> > > > > src: caps = video/x-raw, format=(string)YUY2, width=(int)768,
> > > > > height=(int)288, interlace-mode=(string)interleaved, pixel-
> > > > > aspect-ratio=(fraction)1/1, chroma-site=(string)jpeg,
> > > > > colorimetry=(string)bt601, framerate=(fraction)50/1
> > > > > /GstPipeline:pipeline0/GstVideoConvert:videoconvert0.GstPad:s
> > > > > rc: caps = video/x-raw, width=(int)768, height=(int)288,
> > > > > interlace-mode=(string)interleaved, pixel-aspect-
> > > > > ratio=(fraction)1/1, framerate=(fraction)50/1,
> > > > > format=(string)YV12
> > > > > /GstPipeline:pipeline0/GstDeinterlace:deinterlace0.GstPad:src
> > > > > : caps = video/x-raw, width=(int)768, height=(int)288,
> > > > > interlace-mode=(string)progressive, pixel-aspect-
> > > > > ratio=(fraction)1/1, framerate=(fraction)100/1,
> > > > > format=(string)YV12
> > > > > /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0.GstGho
> > > > > stPad:sink.GstProxyPad:proxypad2: caps = video/x-raw,
> > > > > width=(int)768, height=(int)288, interlace-
> > > > > mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1,
> > > > > framerate=(fraction)100/1, format=(string)YV12
> > > > > /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstXvI
> > > > > mageSink:autovideosink0-actual-sink-xvimage.GstPad:sink: caps
> > > > > = video/x-raw, width=(int)768, height=(int)288, interlace-
> > > > > mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1,
> > > > > framerate=(fraction)100/1, format=(string)YV12
> > > > > /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0.GstGho
> > > > > stPad:sink: caps = video/x-raw, width=(int)768,
> > > > > height=(int)288, interlace-mode=(string)progressive, pixel-
> > > > > aspect-ratio=(fraction)1/1, framerate=(fraction)100/1,
> > > > > format=(string)YV12
> > > > > /GstPipeline:pipeline0/GstDeinterlace:deinterlace0.GstPad:sin
> > > > > k: caps = video/x-raw, width=(int)768, height=(int)288,
> > > > > interlace-mode=(string)interleaved, pixel-aspect-
> > > > > ratio=(fraction)1/1, framerate=(fraction)50/1,
> > > > > format=(string)YV12
> > > > > /GstPipeline:pipeline0/GstVideoConvert:videoconvert0.GstPad:s
> > > > > ink: caps = video/x-raw, format=(string)YUY2, width=(int)768,
> > > > > height=(int)288, interlace-mode=(string)interleaved, pixel-
> > > > > aspect-ratio=(fraction)1/1, chroma-site=(string)jpeg,
> > > > > colorimetry=(string)bt601, framerate=(fraction)50/1
> > > > > /GstPipeline:pipeline0/GstVideoParse:videoparse0.GstGhostPad:
> > > > > src.GstProxyPad:proxypad1: caps = video/x-raw,
> > > > > format=(string)YUY2, width=(int)768, height=(int)288,
> > > > > interlace-mode=(string)interleaved, pixel-aspect-
> > > > > ratio=(fraction)1/1, chroma-site=(string)jpeg,
> > > > > colorimetry=(string)bt601, framerate=(fraction)50/1
> > > > > Pipeline is PREROLLED ...
> > > > > Setting pipeline to PLAYING ...
> > > > > New clock: GstSystemClock
> > > > > ERROR: from element
> > > > > /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstXvI
> > > > > mageSink:autovideosink0-actual-sink-xvimage: Output window
> > > > > was closed
> > > > > Additional debug info:
> > > > > xvimagesink.c(555): gst_xv_image_sink_handle_xevents ():
> > > > > /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstXvI
> > > > > mageSink:autovideosink0-actual-sink-xvimage
> > > > > Execution ended after 0:00:02.956028008
> > > > > Setting pipeline to PAUSED ...
> > > > > Setting pipeline to READY ...
> > > > > Setting pipeline to NULL ...
> > > > > Freeing pipeline ...
> > > > >
> > > > > I would naively expect the deinterlace plugin to take a 50
> > > > > Hz, 720x288 interlaced video and give as output a 25 Hz,
> > > > > 720x576 one.
> > > > > Instead, the resolution stays the same, while the frame rate
> > > > > doubles.... ????
> > > > > I have tested this on gstreamer 1.45 and gstreamer 1.6.
> > > > > Am I missing anything?
> > > > > Thanks in advance for all suggestions!
> > > > > Best,
> > > > > Rob
> > > > >
> > > > > _______________________________________________
> > > > > gstreamer-devel mailing list
> > > > > [hidden email]
> > > > >  
> > > > > https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
> > > >
> > > >
> > > > --
> > > > TH
> > > > _______________________________________________
> > > > gstreamer-devel mailing list
> > > > [hidden email]
> > > > https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
> > > _______________________________________________
> > > gstreamer-devel mailing list
> > > [hidden email]
> > > https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
> >
> >
> > _______________________________________________
> > gstreamer-devel mailing list
> > [hidden email]
> > https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel


_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Deinterlace plugin working backwards ?

Rob Heig
Thanks a lot Nicolas for your detailed analysis !!
Unfortunately moving to Gst 1.18+ is not an option for me (custom NVIDIA-based board with the usual lot of NVIDIA-proprietary stuff), therefore I guess I have to give up and move to something else :(
Thanks again and have a nice day!
Rob

On Wed, 28 Oct 2020 at 15:50, Nicolas Dufresne <[hidden email]> wrote:
Le mercredi 28 octobre 2020 à 12:54 +0100, Rob Heig a écrit :
> Yes, sure, the same as above but it says that the input file is at 25
> Hz and the output of deinterlace is at 50 Hz :(
> On Wed, 28 Oct 2020 at 12:51, Tony Houghton <[hidden email]> wrote:
> > Have you also tried framerate=25/1?
> >
> > On Wed, 28 Oct 2020 at 11:37, Rob Heig <[hidden email]> wrote:
> > > Thanks for your reply! Yes I've did that, what I get is that
> > > window that gets displayed has two frames one on top of the
> > > other, still doubling the frame rate:
> > >
> > > gst-launch-1.0 -v filesrc location=vvvv.raw ! videoparse
> > > width=768 height=576 format=4 framerate=50/1 interlaced=true !
> > > videoconvert ! deinterlace ! autovideosink

Appparently videoparse (same for rawvideoparse, it's replacement), only
gives you a boolean for interlacing. While in practice, GStreamer caps
uses an enum, interlace-mode={progressive, interleaved, alternate}.

The last is only supported in 1.18+ and that method seems to be what
you have in your raw video data according to the field height hack you
have done.

Progressive content is not interlaved. The most common way to store
interlaced content is "interleaved", what is being assumed by
rawvideoparse. In this mode, top and bottom fields are stored in the
same buffer with full height, you'd have top fields line on even lines,
and bottom field lines on odds lines (you have to set the field-order=
in the caps if you have bottom field first).

What you seem to have instead of alternate interlaced. In this case,
each fields is passed as an half height image, alternating between
images. This was added recently in gstreamer under a caps setter.
Perhaps the author forgot to update and test with rawvideoparse, but I
would try using upstream caps filter to communicate the settings
properly to the parser (by enabling use-sink-caps property).

  ... ! video/x-raw\(format:Interlaced\),interlace-mode=alternate,format=YUY2,width=768,height=576 ! rawvideoparse use-sink-caps=1 ! ...

Ideally we could deprecate the bookean property and add a new property
"interlace-mode" with the enum inside rawvideoparse. I'm not totally
sure that this caps filter method will actually work. If not, please
open an issue against gst-plugins-good.

> > >
> > > Setting pipeline to PAUSED ...
> > > Pipeline is PREROLLING ...
> > > /GstPipeline:pipeline0/GstVideoParse:videoparse0/GstRawVideoParse
> > > :inner_rawvideoparse.GstPad:src: caps = video/x-raw,
> > > format=(string)YUY2, width=(int)768, height=(int)576, interlace-
> > > mode=(string)interleaved, pixel-aspect-ratio=(fraction)1/1,
> > > chroma-site=(string)jpeg, colorimetry=(string)bt601,
> > > framerate=(fraction)50/1
> > > /GstPipeline:pipeline0/GstVideoParse:videoparse0.GstGhostPad:src:
> > > caps = video/x-raw, format=(string)YUY2, width=(int)768,
> > > height=(int)576, interlace-mode=(string)interleaved, pixel-
> > > aspect-ratio=(fraction)1/1, chroma-site=(string)jpeg,
> > > colorimetry=(string)bt601, framerate=(fraction)50/1
> > > /GstPipeline:pipeline0/GstVideoConvert:videoconvert0.GstPad:src:
> > > caps = video/x-raw, width=(int)768, height=(int)576, interlace-
> > > mode=(string)interleaved, pixel-aspect-ratio=(fraction)1/1,
> > > framerate=(fraction)50/1, format=(string)YV12
> > > /GstPipeline:pipeline0/GstDeinterlace:deinterlace0.GstPad:src:
> > > caps = video/x-raw, width=(int)768, height=(int)576, interlace-
> > > mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1,
> > > framerate=(fraction)100/1, format=(string)YV12
> > > /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0.GstGhostPa
> > > d:sink.GstProxyPad:proxypad2: caps = video/x-raw, width=(int)768,
> > > height=(int)576, interlace-mode=(string)progressive, pixel-
> > > aspect-ratio=(fraction)1/1, framerate=(fraction)100/1,
> > > format=(string)YV12
> > > /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstXvImage
> > > Sink:autovideosink0-actual-sink-xvimage.GstPad:sink: caps =
> > > video/x-raw, width=(int)768, height=(int)576, interlace-
> > > mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1,
> > > framerate=(fraction)100/1, format=(string)YV12
> > > /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0.GstGhostPa
> > > d:sink: caps = video/x-raw, width=(int)768, height=(int)576,
> > > interlace-mode=(string)progressive, pixel-aspect-
> > > ratio=(fraction)1/1, framerate=(fraction)100/1,
> > > format=(string)YV12
> > > /GstPipeline:pipeline0/GstDeinterlace:deinterlace0.GstPad:sink:
> > > caps = video/x-raw, width=(int)768, height=(int)576, interlace-
> > > mode=(string)interleaved, pixel-aspect-ratio=(fraction)1/1,
> > > framerate=(fraction)50/1, format=(string)YV12
> > > /GstPipeline:pipeline0/GstVideoConvert:videoconvert0.GstPad:sink:
> > > caps = video/x-raw, format=(string)YUY2, width=(int)768,
> > > height=(int)576, interlace-mode=(string)interleaved, pixel-
> > > aspect-ratio=(fraction)1/1, chroma-site=(string)jpeg,
> > > colorimetry=(string)bt601, framerate=(fraction)50/1
> > > /GstPipeline:pipeline0/GstVideoParse:videoparse0.GstGhostPad:src.
> > > GstProxyPad:proxypad1: caps = video/x-raw, format=(string)YUY2,
> > > width=(int)768, height=(int)576, interlace-
> > > mode=(string)interleaved, pixel-aspect-ratio=(fraction)1/1,
> > > chroma-site=(string)jpeg, colorimetry=(string)bt601,
> > > framerate=(fraction)50/1
> > > Pipeline is PREROLLED ...
> > > Setting pipeline to PLAYING ...
> > > New clock: GstSystemClock
> > > Got EOS from element "pipeline0".
> > > Execution ended after 0:00:03.000241651
> > > Setting pipeline to PAUSED ...
> > > Setting pipeline to READY ...
> > > Setting pipeline to NULL ...
> > > Freeing pipeline ...
> > >
> > > On Wed, 28 Oct 2020 at 12:11, Tony Houghton <[hidden email]>
> > > wrote:
> > > > It seems more conventional to refer to the total frame height
> > > > rather than the height of each field, so have you tried using
> > > > "height=576" instead?
> > > >
> > > > On Wed, 28 Oct 2020 at 11:00, Rob Heig <[hidden email]>
> > > > wrote:
> > > > > Hello,
> > > > > I'm trying to deinterlace an interlaced raw video, but
> > > > > despite having spent 2 days on this I am still stuck. The
> > > > > interesting thing is that, by looking at the output of gst-
> > > > > launch, I see weird results:
> > > > >
> > > > > gst-launch-1.0 -v filesrc location=vvvv.raw ! videoparse
> > > > > width=768 height=288 format=4 framerate=50/1 interlaced=true
> > > > > ! videoconvert ! deinterlace ! autovideosink
> > > > >
> > > > > Setting pipeline to PAUSED ...
> > > > > Pipeline is PREROLLING ...
> > > > > /GstPipeline:pipeline0/GstVideoParse:videoparse0/GstRawVideoP
> > > > > arse:inner_rawvideoparse.GstPad:src: caps = video/x-raw,
> > > > > format=(string)YUY2, width=(int)768, height=(int)288,
> > > > > interlace-mode=(string)interleaved, pixel-aspect-
> > > > > ratio=(fraction)1/1, chroma-site=(string)jpeg,
> > > > > colorimetry=(string)bt601, framerate=(fraction)50/1
> > > > > /GstPipeline:pipeline0/GstVideoParse:videoparse0.GstGhostPad:
> > > > > src: caps = video/x-raw, format=(string)YUY2, width=(int)768,
> > > > > height=(int)288, interlace-mode=(string)interleaved, pixel-
> > > > > aspect-ratio=(fraction)1/1, chroma-site=(string)jpeg,
> > > > > colorimetry=(string)bt601, framerate=(fraction)50/1
> > > > > /GstPipeline:pipeline0/GstVideoConvert:videoconvert0.GstPad:s
> > > > > rc: caps = video/x-raw, width=(int)768, height=(int)288,
> > > > > interlace-mode=(string)interleaved, pixel-aspect-
> > > > > ratio=(fraction)1/1, framerate=(fraction)50/1,
> > > > > format=(string)YV12
> > > > > /GstPipeline:pipeline0/GstDeinterlace:deinterlace0.GstPad:src
> > > > > : caps = video/x-raw, width=(int)768, height=(int)288,
> > > > > interlace-mode=(string)progressive, pixel-aspect-
> > > > > ratio=(fraction)1/1, framerate=(fraction)100/1,
> > > > > format=(string)YV12
> > > > > /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0.GstGho
> > > > > stPad:sink.GstProxyPad:proxypad2: caps = video/x-raw,
> > > > > width=(int)768, height=(int)288, interlace-
> > > > > mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1,
> > > > > framerate=(fraction)100/1, format=(string)YV12
> > > > > /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstXvI
> > > > > mageSink:autovideosink0-actual-sink-xvimage.GstPad:sink: caps
> > > > > = video/x-raw, width=(int)768, height=(int)288, interlace-
> > > > > mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1,
> > > > > framerate=(fraction)100/1, format=(string)YV12
> > > > > /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0.GstGho
> > > > > stPad:sink: caps = video/x-raw, width=(int)768,
> > > > > height=(int)288, interlace-mode=(string)progressive, pixel-
> > > > > aspect-ratio=(fraction)1/1, framerate=(fraction)100/1,
> > > > > format=(string)YV12
> > > > > /GstPipeline:pipeline0/GstDeinterlace:deinterlace0.GstPad:sin
> > > > > k: caps = video/x-raw, width=(int)768, height=(int)288,
> > > > > interlace-mode=(string)interleaved, pixel-aspect-
> > > > > ratio=(fraction)1/1, framerate=(fraction)50/1,
> > > > > format=(string)YV12
> > > > > /GstPipeline:pipeline0/GstVideoConvert:videoconvert0.GstPad:s
> > > > > ink: caps = video/x-raw, format=(string)YUY2, width=(int)768,
> > > > > height=(int)288, interlace-mode=(string)interleaved, pixel-
> > > > > aspect-ratio=(fraction)1/1, chroma-site=(string)jpeg,
> > > > > colorimetry=(string)bt601, framerate=(fraction)50/1
> > > > > /GstPipeline:pipeline0/GstVideoParse:videoparse0.GstGhostPad:
> > > > > src.GstProxyPad:proxypad1: caps = video/x-raw,
> > > > > format=(string)YUY2, width=(int)768, height=(int)288,
> > > > > interlace-mode=(string)interleaved, pixel-aspect-
> > > > > ratio=(fraction)1/1, chroma-site=(string)jpeg,
> > > > > colorimetry=(string)bt601, framerate=(fraction)50/1
> > > > > Pipeline is PREROLLED ...
> > > > > Setting pipeline to PLAYING ...
> > > > > New clock: GstSystemClock
> > > > > ERROR: from element
> > > > > /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstXvI
> > > > > mageSink:autovideosink0-actual-sink-xvimage: Output window
> > > > > was closed
> > > > > Additional debug info:
> > > > > xvimagesink.c(555): gst_xv_image_sink_handle_xevents ():
> > > > > /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstXvI
> > > > > mageSink:autovideosink0-actual-sink-xvimage
> > > > > Execution ended after 0:00:02.956028008
> > > > > Setting pipeline to PAUSED ...
> > > > > Setting pipeline to READY ...
> > > > > Setting pipeline to NULL ...
> > > > > Freeing pipeline ...
> > > > >
> > > > > I would naively expect the deinterlace plugin to take a 50
> > > > > Hz, 720x288 interlaced video and give as output a 25 Hz,
> > > > > 720x576 one.
> > > > > Instead, the resolution stays the same, while the frame rate
> > > > > doubles.... ????
> > > > > I have tested this on gstreamer 1.45 and gstreamer 1.6.
> > > > > Am I missing anything?
> > > > > Thanks in advance for all suggestions!
> > > > > Best,
> > > > > Rob
> > > > >
> > > > > _______________________________________________
> > > > > gstreamer-devel mailing list
> > > > > [hidden email]
> > > > > 
> > > > > https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
> > > >
> > > >
> > > > --
> > > > TH
> > > > _______________________________________________
> > > > gstreamer-devel mailing list
> > > > [hidden email]
> > > > https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
> > > _______________________________________________
> > > gstreamer-devel mailing list
> > > [hidden email]
> > > https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
> >
> >
> > _______________________________________________
> > gstreamer-devel mailing list
> > [hidden email]
> > https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel


_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel