Can no longer link gtksink within my pipeline?

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

Can no longer link gtksink within my pipeline?

pisymbol .
I am trying to display live video to the screen using gtksink. On Ubuntu 16.04 this worked. But when I move gstreamer to 1.14 or higher it fails.

Pipeline:

nvarguscamerasrc maxperf=true sensor-id=0 ! video/x-raw(memory:NVMM), width=(int)3840, height=(int)2160, framerate=(fraction)30/1 ! nvvidconv ! video/x-raw(memory:NVMM), width=(int)3840, height=(int)2160, format=(string)I420 ! videoconvert name=videoconvert

I am trying to link videoconvert to gtksink. I do so using a ghostpad like this:

self.playerBin = Gst.parse_bin_from_description(pipeline, False)
self.vc = self.playerBin.get_by_name("videoconvert")

self.playerPipeline = Gst.Pipeline()
gtksink = Gst.ElementFactory.make('gtksink', None)
gtksink.set_property("sync", False)
self.ghostpad = Gst.GhostPad.new("sink", self.vc.get_static_pad('src'))
self.playerBin.add_pad(self.ghostpad)
self.playerPipeline.add(gtksink)
self.playerPipeline.add(self.playerBin)
self.playerPipeline.link(gtksink) <---- this fails
self.pack_start(gtksink.props.widget, True, True, 0)
... some bus stuff ...

But this now fails with "No valid pad found to link gtksink0' etc. What changed to cause this breakage? Again, this used to work. Am I doing it wrong?

-aps

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

Re: Can no longer link gtksink within my pipeline?

pisymbol .


On Tue, Oct 1, 2019 at 3:30 PM pisymbol . <[hidden email]> wrote:
I am trying to display live video to the screen using gtksink. On Ubuntu 16.04 this worked. But when I move gstreamer to 1.14 or higher it fails.

Pipeline:

nvarguscamerasrc maxperf=true sensor-id=0 ! video/x-raw(memory:NVMM), width=(int)3840, height=(int)2160, framerate=(fraction)30/1 ! nvvidconv ! video/x-raw(memory:NVMM), width=(int)3840, height=(int)2160, format=(string)I420 ! videoconvert name=videoconvert

I am trying to link videoconvert to gtksink. I do so using a ghostpad like this:

self.playerBin = Gst.parse_bin_from_description(pipeline, False)
self.vc = self.playerBin.get_by_name("videoconvert")

self.playerPipeline = Gst.Pipeline()
gtksink = Gst.ElementFactory.make('gtksink', None)
gtksink.set_property("sync", False)
self.ghostpad = Gst.GhostPad.new("sink", self.vc.get_static_pad('src'))
self.playerBin.add_pad(self.ghostpad)
self.playerPipeline.add(gtksink)
self.playerPipeline.add(self.playerBin)
self.playerPipeline.link(gtksink) <---- this fails
self.pack_start(gtksink.props.widget, True, True, 0)
... some bus stuff ...

But this now fails with "No valid pad found to link gtksink0' etc. What changed to cause this breakage? Again, this used to work. Am I doing it wrong?


Not that this works via gst-launch-1.0:

gst-launch-1.0 nvarguscamerasrc maxperf=true sensor-id=0 ! 'video/x-raw(memory:NVMM), width=(int)3840, height=(int)2160, framerate=(fraction)30/1' ! nvvidconv ! gtksink

And that pops up a video! I've tried shorting my pipeline to the above and linking nvvidconv to gtksink but dice. Both nvvidconv and gtksink do BGRx so they should be compatible, right?

-aps

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

Re: Can no longer link gtksink within my pipeline?

Nicolas Dufresne-5
In reply to this post by pisymbol .


Le mar. 1 oct. 2019 15 h 40, pisymbol . <[hidden email]> a écrit :
I am trying to display live video to the screen using gtksink. On Ubuntu 16.04 this worked. But when I move gstreamer to 1.14 or higher it fails.

Pipeline:

nvarguscamerasrc maxperf=true sensor-id=0 ! video/x-raw(memory:NVMM), width=(int)3840, height=(int)2160, framerate=(fraction)30/1 ! nvvidconv ! video/x-raw(memory:NVMM), width=(int)3840, height=(int)2160, format=(string)I420 ! videoconvert name=videoconvert

The caps filter after nvvidconv cannot have the NVMM caps feature, since videoconvert does not support it. This should fail regardless of the GST version, you probably added that when porting.


I am trying to link videoconvert to gtksink. I do so using a ghostpad like this:

self.playerBin = Gst.parse_bin_from_description(pipeline, False)
self.vc = self.playerBin.get_by_name("videoconvert")

self.playerPipeline = Gst.Pipeline()
gtksink = Gst.ElementFactory.make('gtksink', None)
gtksink.set_property("sync", False)
self.ghostpad = Gst.GhostPad.new("sink", self.vc.get_static_pad('src'))
self.playerBin.add_pad(self.ghostpad)
self.playerPipeline.add(gtksink)
self.playerPipeline.add(self.playerBin)
self.playerPipeline.link(gtksink) <---- this fails
self.pack_start(gtksink.props.widget, True, True, 0)
... some bus stuff ...

But this now fails with "No valid pad found to link gtksink0' etc. What changed to cause this breakage? Again, this used to work. Am I doing it wrong?

-aps
_______________________________________________
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: Can no longer link gtksink within my pipeline?

pisymbol .


On Wed, Oct 2, 2019 at 9:56 AM Nicolas Dufresne <[hidden email]> wrote:


Le mar. 1 oct. 2019 15 h 40, pisymbol . <[hidden email]> a écrit :
I am trying to display live video to the screen using gtksink. On Ubuntu 16.04 this worked. But when I move gstreamer to 1.14 or higher it fails.

Pipeline:

nvarguscamerasrc maxperf=true sensor-id=0 ! video/x-raw(memory:NVMM), width=(int)3840, height=(int)2160, framerate=(fraction)30/1 ! nvvidconv ! video/x-raw(memory:NVMM), width=(int)3840, height=(int)2160, format=(string)I420 ! videoconvert name=videoconvert

The caps filter after nvvidconv cannot have the NVMM caps feature, since videoconvert does not support it. This should fail regardless of the GST version, you probably added that when porting.

Thanks! That was a typo it seems.  I still can't link the ghost pad even if I take off the memory option.. Why? This used to work just fine.

-aps

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

Re: Can no longer link gtksink within my pipeline?

pisymbol .

On Wed, Oct 2, 2019 at 11:42 AM pisymbol . <[hidden email]> wrote:


On Wed, Oct 2, 2019 at 9:56 AM Nicolas Dufresne <[hidden email]> wrote:


Le mar. 1 oct. 2019 15 h 40, pisymbol . <[hidden email]> a écrit :
I am trying to display live video to the screen using gtksink. On Ubuntu 16.04 this worked. But when I move gstreamer to 1.14 or higher it fails.

Pipeline:

nvarguscamerasrc maxperf=true sensor-id=0 ! video/x-raw(memory:NVMM), width=(int)3840, height=(int)2160, framerate=(fraction)30/1 ! nvvidconv ! video/x-raw(memory:NVMM), width=(int)3840, height=(int)2160, format=(string)I420 ! videoconvert name=videoconvert

The caps filter after nvvidconv cannot have the NVMM caps feature, since videoconvert does not support it. This should fail regardless of the GST version, you probably added that when porting.

Thanks! That was a typo it seems.  I still can't link the ghost pad even if I take off the memory option.. Why? This used to work just fine.

I'd even tried:

.. !  nvvidconv ! video/x-raw, width=(int)3840, height=(int)2160, format=(string)I420 ! videoconvert name=videoconvert

Why can't gtksink work with videoconvert in this case? This seems like either a bug or some kind of API change???

-aps




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

Re: Can no longer link gtksink within my pipeline?

pisymbol .


On Wed, Oct 2, 2019 at 1:44 PM pisymbol . <[hidden email]> wrote:

On Wed, Oct 2, 2019 at 11:42 AM pisymbol . <[hidden email]> wrote:


On Wed, Oct 2, 2019 at 9:56 AM Nicolas Dufresne <[hidden email]> wrote:


Le mar. 1 oct. 2019 15 h 40, pisymbol . <[hidden email]> a écrit :
I am trying to display live video to the screen using gtksink. On Ubuntu 16.04 this worked. But when I move gstreamer to 1.14 or higher it fails.

Pipeline:

nvarguscamerasrc maxperf=true sensor-id=0 ! video/x-raw(memory:NVMM), width=(int)3840, height=(int)2160, framerate=(fraction)30/1 ! nvvidconv ! video/x-raw(memory:NVMM), width=(int)3840, height=(int)2160, format=(string)I420 ! videoconvert name=videoconvert

The caps filter after nvvidconv cannot have the NVMM caps feature, since videoconvert does not support it. This should fail regardless of the GST version, you probably added that when porting.

Thanks! That was a typo it seems.  I still can't link the ghost pad even if I take off the memory option.. Why? This used to work just fine.

I'd even tried:

.. !  nvvidconv ! video/x-raw, width=(int)3840, height=(int)2160, format=(string)I420 ! videoconvert name=videoconvert

Why can't gtksink work with videoconvert in this case? This seems like either a bug or some kind of API change???

Alright, I see the issue. Nevermind. The ghost pad needs to be linked at the bin level not pipeline. Whoops!

-aps

-aps




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

Re: Can no longer link gtksink within my pipeline?

Nicolas Dufresne-5


Le mer. 2 oct. 2019 14 h 10, pisymbol . <[hidden email]> a écrit :


On Wed, Oct 2, 2019 at 1:44 PM pisymbol . <[hidden email]> wrote:

On Wed, Oct 2, 2019 at 11:42 AM pisymbol . <[hidden email]> wrote:


On Wed, Oct 2, 2019 at 9:56 AM Nicolas Dufresne <[hidden email]> wrote:


Le mar. 1 oct. 2019 15 h 40, pisymbol . <[hidden email]> a écrit :
I am trying to display live video to the screen using gtksink. On Ubuntu 16.04 this worked. But when I move gstreamer to 1.14 or higher it fails.

Pipeline:

nvarguscamerasrc maxperf=true sensor-id=0 ! video/x-raw(memory:NVMM), width=(int)3840, height=(int)2160, framerate=(fraction)30/1 ! nvvidconv ! video/x-raw(memory:NVMM), width=(int)3840, height=(int)2160, format=(string)I420 ! videoconvert name=videoconvert

The caps filter after nvvidconv cannot have the NVMM caps feature, since videoconvert does not support it. This should fail regardless of the GST version, you probably added that when porting.

Thanks! That was a typo it seems.  I still can't link the ghost pad even if I take off the memory option.. Why? This used to work just fine.

I'd even tried:

.. !  nvvidconv ! video/x-raw, width=(int)3840, height=(int)2160, format=(string)I420 ! videoconvert name=videoconvert

Why can't gtksink work with videoconvert in this case? This seems like either a bug or some kind of API change???

Alright, I see the issue. Nevermind. The ghost pad needs to be linked at the bin level not pipeline. Whoops!

Ok, that explain. The pad_link func return an enum, was probably returning wrong hierarchy or something.


-aps

-aps



_______________________________________________
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: Can no longer link gtksink within my pipeline?

pisymbol .


On Wed, Oct 2, 2019 at 7:35 PM Nicolas Dufresne <[hidden email]> wrote:


Le mer. 2 oct. 2019 14 h 10, pisymbol . <[hidden email]> a écrit :


On Wed, Oct 2, 2019 at 1:44 PM pisymbol . <[hidden email]> wrote:

On Wed, Oct 2, 2019 at 11:42 AM pisymbol . <[hidden email]> wrote:


On Wed, Oct 2, 2019 at 9:56 AM Nicolas Dufresne <[hidden email]> wrote:


Le mar. 1 oct. 2019 15 h 40, pisymbol . <[hidden email]> a écrit :
I am trying to display live video to the screen using gtksink. On Ubuntu 16.04 this worked. But when I move gstreamer to 1.14 or higher it fails.

Pipeline:

nvarguscamerasrc maxperf=true sensor-id=0 ! video/x-raw(memory:NVMM), width=(int)3840, height=(int)2160, framerate=(fraction)30/1 ! nvvidconv ! video/x-raw(memory:NVMM), width=(int)3840, height=(int)2160, format=(string)I420 ! videoconvert name=videoconvert

The caps filter after nvvidconv cannot have the NVMM caps feature, since videoconvert does not support it. This should fail regardless of the GST version, you probably added that when porting.

Thanks! That was a typo it seems.  I still can't link the ghost pad even if I take off the memory option.. Why? This used to work just fine.

I'd even tried:

.. !  nvvidconv ! video/x-raw, width=(int)3840, height=(int)2160, format=(string)I420 ! videoconvert name=videoconvert

Why can't gtksink work with videoconvert in this case? This seems like either a bug or some kind of API change???

Alright, I see the issue. Nevermind. The ghost pad needs to be linked at the bin level not pipeline. Whoops!

Ok, that explain. The pad_link func return an enum, was probably returning wrong hierarchy or something.



I'm sorry for the noise honestly! The error message was right but not really helpful at diagnosing the problem. I had to step back and look at my graph to really understand what the heck was going on here! Thanks Nicolas as always for the support!

-aps

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