[prev in list] [next in list] [prev in thread] [next in thread] 

List:       gstreamer-devel
Subject:    Re: Deinterlace plugin working backwards ?
From:       Rob Heig <robhhh6 () gmail ! com>
Date:       2020-10-29 7:16:39
Message-ID: CAMpo1V+HnTuLtA4Rxuv2XwKBamu1tRN9ytYk2JJRsOQiPTzsbg () mail ! gmail ! com
[Download RAW message or body]

[Attachment #2 (multipart/alternative)]


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 <nicolas@ndufresne.ca> 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 <h@realh.co.uk> wrote:
> > > Have you also tried framerate=25/1?
> > >
> > > On Wed, 28 Oct 2020 at 11:37, Rob Heig <robhhh6@gmail.com> 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 <h@realh.co.uk>
> > > > 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 <robhhh6@gmail.com>
> > > > > 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
> > > > > > gstreamer-devel@lists.freedesktop.org
> > > > > >
> > > > > > https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
> > > > >
> > > > >
> > > > > --
> > > > > TH
> > > > > _______________________________________________
> > > > > gstreamer-devel mailing list
> > > > > gstreamer-devel@lists.freedesktop.org
> > > > > https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
> > > > _______________________________________________
> > > > gstreamer-devel mailing list
> > > > gstreamer-devel@lists.freedesktop.org
> > > > https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
> > >
> > >
> > > _______________________________________________
> > > gstreamer-devel mailing list
> > > gstreamer-devel@lists.freedesktop.org
> > > https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
>
>
> _______________________________________________
> gstreamer-devel mailing list
> gstreamer-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
>

[Attachment #5 (text/html)]

<div dir="ltr"><div>Thanks a lot Nicolas for your detailed analysis \
!!</div><div>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 :(</div><div>Thanks again and have a \
nice day!<br></div><div>Rob<br></div></div><br><div class="gmail_quote"><div \
dir="ltr" class="gmail_attr">On Wed, 28 Oct 2020 at 15:50, Nicolas Dufresne &lt;<a \
href="mailto:nicolas@ndufresne.ca">nicolas@ndufresne.ca</a>&gt; \
wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px \
0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Le mercredi 28 octobre \
2020 à 12:54 +0100, Rob Heig a écrit  :<br> &gt; Yes, sure, the same as above but \
it says that the input file is at 25<br> &gt; Hz and the output of deinterlace is at \
50 Hz :(<br> &gt; On Wed, 28 Oct 2020 at 12:51, Tony Houghton &lt;<a \
href="mailto:h@realh.co.uk" target="_blank">h@realh.co.uk</a>&gt; wrote:<br> &gt; \
&gt; Have you also tried framerate=25/1?<br> &gt; &gt; <br>
&gt; &gt; On Wed, 28 Oct 2020 at 11:37, Rob Heig &lt;<a \
href="mailto:robhhh6@gmail.com" target="_blank">robhhh6@gmail.com</a>&gt; wrote:<br> \
&gt; &gt; &gt; Thanks for your reply! Yes I&#39;ve did that, what I get is that<br> \
&gt; &gt; &gt; window that gets displayed has two frames one on top of the<br> &gt; \
&gt; &gt; other, still doubling the frame rate:<br> &gt; &gt; &gt; <br>
&gt; &gt; &gt; gst-launch-1.0 -v filesrc location=vvvv.raw ! videoparse<br>
&gt; &gt; &gt; width=768 height=576 format=4 framerate=50/1 interlaced=true !<br>
&gt; &gt; &gt; videoconvert ! deinterlace ! autovideosink<br>
<br>
Appparently videoparse (same for rawvideoparse, it&#39;s replacement), only<br>
gives you a boolean for interlacing. While in practice, GStreamer caps<br>
uses an enum, interlace-mode={progressive, interleaved, alternate}.<br>
<br>
The last is only supported in 1.18+ and that method seems to be what<br>
you have in your raw video data according to the field height hack you<br>
have done.<br>
<br>
Progressive content is not interlaved. The most common way to store<br>
interlaced content is &quot;interleaved&quot;, what is being assumed by<br>
rawvideoparse. In this mode, top and bottom fields are stored in the<br>
same buffer with full height, you&#39;d have top fields line on even lines,<br>
and bottom field lines on odds lines (you have to set the field-order=<br>
in the caps if you have bottom field first).<br>
<br>
What you seem to have instead of alternate interlaced. In this case,<br>
each fields is passed as an half height image, alternating between<br>
images. This was added recently in gstreamer under a caps setter.<br>
Perhaps the author forgot to update and test with rawvideoparse, but I<br>
would try using upstream caps filter to communicate the settings<br>
properly to the parser (by enabling use-sink-caps property).<br>
<br>
   ... ! video/x-raw\(format:Interlaced\),interlace-mode=alternate,format=YUY2,width=768,height=576 \
! rawvideoparse use-sink-caps=1 ! ...<br> <br>
Ideally we could deprecate the bookean property and add a new property<br>
&quot;interlace-mode&quot; with the enum inside rawvideoparse. I&#39;m not \
totally<br> sure that this caps filter method will actually work. If not, please<br>
open an issue against gst-plugins-good.<br>
<br>
&gt; &gt; &gt; <br>
&gt; &gt; &gt; Setting pipeline to PAUSED ...<br>
&gt; &gt; &gt; Pipeline is PREROLLING ...<br>
&gt; &gt; &gt; /GstPipeline:pipeline0/GstVideoParse:videoparse0/GstRawVideoParse<br>
&gt; &gt; &gt; :inner_rawvideoparse.GstPad:src: caps = video/x-raw,<br>
&gt; &gt; &gt; format=(string)YUY2, width=(int)768, height=(int)576, interlace-<br>
&gt; &gt; &gt; mode=(string)interleaved, pixel-aspect-ratio=(fraction)1/1,<br>
&gt; &gt; &gt; chroma-site=(string)jpeg, colorimetry=(string)bt601,<br>
&gt; &gt; &gt; framerate=(fraction)50/1<br>
&gt; &gt; &gt; /GstPipeline:pipeline0/GstVideoParse:videoparse0.GstGhostPad:src:<br>
&gt; &gt; &gt; caps = video/x-raw, format=(string)YUY2, width=(int)768,<br>
&gt; &gt; &gt; height=(int)576, interlace-mode=(string)interleaved, pixel-<br>
&gt; &gt; &gt; aspect-ratio=(fraction)1/1, chroma-site=(string)jpeg,<br>
&gt; &gt; &gt; colorimetry=(string)bt601, framerate=(fraction)50/1<br>
&gt; &gt; &gt; /GstPipeline:pipeline0/GstVideoConvert:videoconvert0.GstPad:src:<br>
&gt; &gt; &gt; caps = video/x-raw, width=(int)768, height=(int)576, interlace-<br>
&gt; &gt; &gt; mode=(string)interleaved, pixel-aspect-ratio=(fraction)1/1,<br>
&gt; &gt; &gt; framerate=(fraction)50/1, format=(string)YV12<br>
&gt; &gt; &gt; /GstPipeline:pipeline0/GstDeinterlace:deinterlace0.GstPad:src:<br>
&gt; &gt; &gt; caps = video/x-raw, width=(int)768, height=(int)576, interlace-<br>
&gt; &gt; &gt; mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1,<br>
&gt; &gt; &gt; framerate=(fraction)100/1, format=(string)YV12<br>
&gt; &gt; &gt; /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0.GstGhostPa<br>
&gt; &gt; &gt; d:sink.GstProxyPad:proxypad2: caps = video/x-raw, width=(int)768,<br>
&gt; &gt; &gt; height=(int)576, interlace-mode=(string)progressive, pixel-<br>
&gt; &gt; &gt; aspect-ratio=(fraction)1/1, framerate=(fraction)100/1,<br>
&gt; &gt; &gt; format=(string)YV12<br>
&gt; &gt; &gt; /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstXvImage<br>
&gt; &gt; &gt; Sink:autovideosink0-actual-sink-xvimage.GstPad:sink: caps =<br>
&gt; &gt; &gt; video/x-raw, width=(int)768, height=(int)576, interlace-<br>
&gt; &gt; &gt; mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1,<br>
&gt; &gt; &gt; framerate=(fraction)100/1, format=(string)YV12<br>
&gt; &gt; &gt; /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0.GstGhostPa<br>
&gt; &gt; &gt; d:sink: caps = video/x-raw, width=(int)768, height=(int)576,<br>
&gt; &gt; &gt; interlace-mode=(string)progressive, pixel-aspect-<br>
&gt; &gt; &gt; ratio=(fraction)1/1, framerate=(fraction)100/1,<br>
&gt; &gt; &gt; format=(string)YV12<br>
&gt; &gt; &gt; /GstPipeline:pipeline0/GstDeinterlace:deinterlace0.GstPad:sink:<br>
&gt; &gt; &gt; caps = video/x-raw, width=(int)768, height=(int)576, interlace-<br>
&gt; &gt; &gt; mode=(string)interleaved, pixel-aspect-ratio=(fraction)1/1,<br>
&gt; &gt; &gt; framerate=(fraction)50/1, format=(string)YV12<br>
&gt; &gt; &gt; /GstPipeline:pipeline0/GstVideoConvert:videoconvert0.GstPad:sink:<br>
&gt; &gt; &gt; caps = video/x-raw, format=(string)YUY2, width=(int)768,<br>
&gt; &gt; &gt; height=(int)576, interlace-mode=(string)interleaved, pixel-<br>
&gt; &gt; &gt; aspect-ratio=(fraction)1/1, chroma-site=(string)jpeg,<br>
&gt; &gt; &gt; colorimetry=(string)bt601, framerate=(fraction)50/1<br>
&gt; &gt; &gt; /GstPipeline:pipeline0/GstVideoParse:videoparse0.GstGhostPad:src.<br>
&gt; &gt; &gt; GstProxyPad:proxypad1: caps = video/x-raw, format=(string)YUY2,<br>
&gt; &gt; &gt; width=(int)768, height=(int)576, interlace-<br>
&gt; &gt; &gt; mode=(string)interleaved, pixel-aspect-ratio=(fraction)1/1,<br>
&gt; &gt; &gt; chroma-site=(string)jpeg, colorimetry=(string)bt601,<br>
&gt; &gt; &gt; framerate=(fraction)50/1<br>
&gt; &gt; &gt; Pipeline is PREROLLED ...<br>
&gt; &gt; &gt; Setting pipeline to PLAYING ...<br>
&gt; &gt; &gt; New clock: GstSystemClock<br>
&gt; &gt; &gt; Got EOS from element &quot;pipeline0&quot;.<br>
&gt; &gt; &gt; Execution ended after 0:00:03.000241651<br>
&gt; &gt; &gt; Setting pipeline to PAUSED ...<br>
&gt; &gt; &gt; Setting pipeline to READY ...<br>
&gt; &gt; &gt; Setting pipeline to NULL ...<br>
&gt; &gt; &gt; Freeing pipeline ...<br>
&gt; &gt; &gt; <br>
&gt; &gt; &gt; On Wed, 28 Oct 2020 at 12:11, Tony Houghton &lt;<a \
href="mailto:h@realh.co.uk" target="_blank">h@realh.co.uk</a>&gt;<br> &gt; &gt; &gt; \
wrote:<br> &gt; &gt; &gt; &gt; It seems more conventional to refer to the total frame \
height<br> &gt; &gt; &gt; &gt; rather than the height of each field, so have you \
tried using<br> &gt; &gt; &gt; &gt; &quot;height=576&quot; instead?<br>
&gt; &gt; &gt; &gt; <br>
&gt; &gt; &gt; &gt; On Wed, 28 Oct 2020 at 11:00, Rob Heig &lt;<a \
href="mailto:robhhh6@gmail.com" target="_blank">robhhh6@gmail.com</a>&gt;<br> &gt; \
&gt; &gt; &gt; wrote:<br> &gt; &gt; &gt; &gt; &gt; Hello,<br>
&gt; &gt; &gt; &gt; &gt; I&#39;m trying to deinterlace an interlaced raw video, \
but<br> &gt; &gt; &gt; &gt; &gt; despite having spent 2 days on this I am still \
stuck. The<br> &gt; &gt; &gt; &gt; &gt; interesting thing is that, by looking at the \
output of gst-<br> &gt; &gt; &gt; &gt; &gt; launch, I see weird results:<br>
&gt; &gt; &gt; &gt; &gt; <br>
&gt; &gt; &gt; &gt; &gt; gst-launch-1.0 -v filesrc location=vvvv.raw ! videoparse<br>
&gt; &gt; &gt; &gt; &gt; width=768 height=288 format=4 framerate=50/1 \
interlaced=true<br> &gt; &gt; &gt; &gt; &gt; ! videoconvert ! deinterlace ! \
autovideosink<br> &gt; &gt; &gt; &gt; &gt; <br>
&gt; &gt; &gt; &gt; &gt; Setting pipeline to PAUSED ...<br>
&gt; &gt; &gt; &gt; &gt; Pipeline is PREROLLING ...<br>
&gt; &gt; &gt; &gt; &gt; \
/GstPipeline:pipeline0/GstVideoParse:videoparse0/GstRawVideoP<br> &gt; &gt; &gt; &gt; \
&gt; arse:inner_rawvideoparse.GstPad:src: caps = video/x-raw,<br> &gt; &gt; &gt; &gt; \
&gt; format=(string)YUY2, width=(int)768, height=(int)288,<br> &gt; &gt; &gt; &gt; \
&gt; interlace-mode=(string)interleaved, pixel-aspect-<br> &gt; &gt; &gt; &gt; &gt; \
ratio=(fraction)1/1, chroma-site=(string)jpeg,<br> &gt; &gt; &gt; &gt; &gt; \
colorimetry=(string)bt601, framerate=(fraction)50/1<br> &gt; &gt; &gt; &gt; &gt; \
/GstPipeline:pipeline0/GstVideoParse:videoparse0.GstGhostPad:<br> &gt; &gt; &gt; &gt; \
&gt; src: caps = video/x-raw, format=(string)YUY2, width=(int)768,<br> &gt; &gt; &gt; \
&gt; &gt; height=(int)288, interlace-mode=(string)interleaved, pixel-<br> &gt; &gt; \
&gt; &gt; &gt; aspect-ratio=(fraction)1/1, chroma-site=(string)jpeg,<br> &gt; &gt; \
&gt; &gt; &gt; colorimetry=(string)bt601, framerate=(fraction)50/1<br> &gt; &gt; &gt; \
&gt; &gt; /GstPipeline:pipeline0/GstVideoConvert:videoconvert0.GstPad:s<br> &gt; &gt; \
&gt; &gt; &gt; rc: caps = video/x-raw, width=(int)768, height=(int)288,<br> &gt; &gt; \
&gt; &gt; &gt; interlace-mode=(string)interleaved, pixel-aspect-<br> &gt; &gt; &gt; \
&gt; &gt; ratio=(fraction)1/1, framerate=(fraction)50/1,<br> &gt; &gt; &gt; &gt; &gt; \
format=(string)YV12<br> &gt; &gt; &gt; &gt; &gt; \
/GstPipeline:pipeline0/GstDeinterlace:deinterlace0.GstPad:src<br> &gt; &gt; &gt; &gt; \
&gt; : caps = video/x-raw, width=(int)768, height=(int)288,<br> &gt; &gt; &gt; &gt; \
&gt; interlace-mode=(string)progressive, pixel-aspect-<br> &gt; &gt; &gt; &gt; &gt; \
ratio=(fraction)1/1, framerate=(fraction)100/1,<br> &gt; &gt; &gt; &gt; &gt; \
format=(string)YV12<br> &gt; &gt; &gt; &gt; &gt; \
/GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0.GstGho<br> &gt; &gt; &gt; &gt; \
&gt; stPad:sink.GstProxyPad:proxypad2: caps = video/x-raw,<br> &gt; &gt; &gt; &gt; \
&gt; width=(int)768, height=(int)288, interlace-<br> &gt; &gt; &gt; &gt; &gt; \
mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1,<br> &gt; &gt; &gt; &gt; \
&gt; framerate=(fraction)100/1, format=(string)YV12<br> &gt; &gt; &gt; &gt; &gt; \
/GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstXvI<br> &gt; &gt; &gt; &gt; \
&gt; mageSink:autovideosink0-actual-sink-xvimage.GstPad:sink: caps<br> &gt; &gt; &gt; \
&gt; &gt; = video/x-raw, width=(int)768, height=(int)288, interlace-<br> &gt; &gt; \
&gt; &gt; &gt; mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1,<br> &gt; \
&gt; &gt; &gt; &gt; framerate=(fraction)100/1, format=(string)YV12<br> &gt; &gt; &gt; \
&gt; &gt; /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0.GstGho<br> &gt; &gt; \
&gt; &gt; &gt; stPad:sink: caps = video/x-raw, width=(int)768,<br> &gt; &gt; &gt; \
&gt; &gt; height=(int)288, interlace-mode=(string)progressive, pixel-<br> &gt; &gt; \
&gt; &gt; &gt; aspect-ratio=(fraction)1/1, framerate=(fraction)100/1,<br> &gt; &gt; \
&gt; &gt; &gt; format=(string)YV12<br> &gt; &gt; &gt; &gt; &gt; \
/GstPipeline:pipeline0/GstDeinterlace:deinterlace0.GstPad:sin<br> &gt; &gt; &gt; &gt; \
&gt; k: caps = video/x-raw, width=(int)768, height=(int)288,<br> &gt; &gt; &gt; &gt; \
&gt; interlace-mode=(string)interleaved, pixel-aspect-<br> &gt; &gt; &gt; &gt; &gt; \
ratio=(fraction)1/1, framerate=(fraction)50/1,<br> &gt; &gt; &gt; &gt; &gt; \
format=(string)YV12<br> &gt; &gt; &gt; &gt; &gt; \
/GstPipeline:pipeline0/GstVideoConvert:videoconvert0.GstPad:s<br> &gt; &gt; &gt; &gt; \
&gt; ink: caps = video/x-raw, format=(string)YUY2, width=(int)768,<br> &gt; &gt; &gt; \
&gt; &gt; height=(int)288, interlace-mode=(string)interleaved, pixel-<br> &gt; &gt; \
&gt; &gt; &gt; aspect-ratio=(fraction)1/1, chroma-site=(string)jpeg,<br> &gt; &gt; \
&gt; &gt; &gt; colorimetry=(string)bt601, framerate=(fraction)50/1<br> &gt; &gt; &gt; \
&gt; &gt; /GstPipeline:pipeline0/GstVideoParse:videoparse0.GstGhostPad:<br> &gt; &gt; \
&gt; &gt; &gt; src.GstProxyPad:proxypad1: caps = video/x-raw,<br> &gt; &gt; &gt; &gt; \
&gt; format=(string)YUY2, width=(int)768, height=(int)288,<br> &gt; &gt; &gt; &gt; \
&gt; interlace-mode=(string)interleaved, pixel-aspect-<br> &gt; &gt; &gt; &gt; &gt; \
ratio=(fraction)1/1, chroma-site=(string)jpeg,<br> &gt; &gt; &gt; &gt; &gt; \
colorimetry=(string)bt601, framerate=(fraction)50/1<br> &gt; &gt; &gt; &gt; &gt; \
Pipeline is PREROLLED ...<br> &gt; &gt; &gt; &gt; &gt; Setting pipeline to PLAYING \
...<br> &gt; &gt; &gt; &gt; &gt; New clock: GstSystemClock<br>
&gt; &gt; &gt; &gt; &gt; ERROR: from element<br>
&gt; &gt; &gt; &gt; &gt; \
/GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstXvI<br> &gt; &gt; &gt; &gt; \
&gt; mageSink:autovideosink0-actual-sink-xvimage: Output window<br> &gt; &gt; &gt; \
&gt; &gt; was closed<br> &gt; &gt; &gt; &gt; &gt; Additional debug info:<br>
&gt; &gt; &gt; &gt; &gt; xvimagesink.c(555): gst_xv_image_sink_handle_xevents ():<br>
&gt; &gt; &gt; &gt; &gt; \
/GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstXvI<br> &gt; &gt; &gt; &gt; \
&gt; mageSink:autovideosink0-actual-sink-xvimage<br> &gt; &gt; &gt; &gt; &gt; \
Execution ended after 0:00:02.956028008<br> &gt; &gt; &gt; &gt; &gt; Setting pipeline \
to PAUSED ...<br> &gt; &gt; &gt; &gt; &gt; Setting pipeline to READY ...<br>
&gt; &gt; &gt; &gt; &gt; Setting pipeline to NULL ...<br>
&gt; &gt; &gt; &gt; &gt; Freeing pipeline ...<br>
&gt; &gt; &gt; &gt; &gt; <br>
&gt; &gt; &gt; &gt; &gt; I would naively expect the deinterlace plugin to take a \
50<br> &gt; &gt; &gt; &gt; &gt; Hz, 720x288 interlaced video and give as output a 25 \
Hz,<br> &gt; &gt; &gt; &gt; &gt; 720x576 one.<br>
&gt; &gt; &gt; &gt; &gt; Instead, the resolution stays the same, while the frame \
rate<br> &gt; &gt; &gt; &gt; &gt; doubles.... ????<br>
&gt; &gt; &gt; &gt; &gt; I have tested this on gstreamer 1.45 and gstreamer 1.6.<br>
&gt; &gt; &gt; &gt; &gt; Am I missing anything?<br>
&gt; &gt; &gt; &gt; &gt; Thanks in advance for all suggestions!<br>
&gt; &gt; &gt; &gt; &gt; Best,<br>
&gt; &gt; &gt; &gt; &gt; Rob<br>
&gt; &gt; &gt; &gt; &gt; <br>
&gt; &gt; &gt; &gt; &gt; _______________________________________________<br>
&gt; &gt; &gt; &gt; &gt; gstreamer-devel mailing list<br>
&gt; &gt; &gt; &gt; &gt; <a href="mailto:gstreamer-devel@lists.freedesktop.org" \
target="_blank">gstreamer-devel@lists.freedesktop.org</a><br> &gt; &gt; &gt; &gt; \
&gt;   <br> &gt; &gt; &gt; &gt; &gt; <a \
href="https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel" \
rel="noreferrer" target="_blank">https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel</a><br>
 &gt; &gt; &gt; &gt; <br>
&gt; &gt; &gt; &gt; <br>
&gt; &gt; &gt; &gt; -- <br>
&gt; &gt; &gt; &gt; TH<br>
&gt; &gt; &gt; &gt; _______________________________________________<br>
&gt; &gt; &gt; &gt; gstreamer-devel mailing list<br>
&gt; &gt; &gt; &gt; <a href="mailto:gstreamer-devel@lists.freedesktop.org" \
target="_blank">gstreamer-devel@lists.freedesktop.org</a><br> &gt; &gt; &gt; &gt; <a \
href="https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel" \
rel="noreferrer" target="_blank">https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel</a><br>
 &gt; &gt; &gt; _______________________________________________<br>
&gt; &gt; &gt; gstreamer-devel mailing list<br>
&gt; &gt; &gt; <a href="mailto:gstreamer-devel@lists.freedesktop.org" \
target="_blank">gstreamer-devel@lists.freedesktop.org</a><br> &gt; &gt; &gt; <a \
href="https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel" \
rel="noreferrer" target="_blank">https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel</a><br>
 &gt; &gt; <br>
&gt; &gt; <br>
&gt; &gt; _______________________________________________<br>
&gt; &gt; gstreamer-devel mailing list<br>
&gt; &gt; <a href="mailto:gstreamer-devel@lists.freedesktop.org" \
target="_blank">gstreamer-devel@lists.freedesktop.org</a><br> &gt; &gt; <a \
href="https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel" \
rel="noreferrer" target="_blank">https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel</a><br>
 <br>
<br>
_______________________________________________<br>
gstreamer-devel mailing list<br>
<a href="mailto:gstreamer-devel@lists.freedesktop.org" \
target="_blank">gstreamer-devel@lists.freedesktop.org</a><br> <a \
href="https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel" \
rel="noreferrer" target="_blank">https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel</a><br>
 </blockquote></div>



_______________________________________________
gstreamer-devel mailing list
gstreamer-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic