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 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 |
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:
TH _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
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:
_______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
Have you also tried framerate=25/1? On Wed, 28 Oct 2020 at 11:37, Rob Heig <[hidden email]> wrote:
TH _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
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:
_______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
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 |
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 : _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
Free forum by Nabble | Edit this page |