Undefined reference to pixbuf

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

Undefined reference to pixbuf

DanteDom
This post was updated on .
Hello.

I am trying to form a pipeline in an android application I am making.

At the moment, the pipeline is designed to simply take a jpeg image of a
given tcpclientsrc connection I have. This is an example of the pipeline:

"tcpclientsrc host=0.0.0.0 port=1000 num-buffers=1 ! jpegenc ! decodebin !
autovideosink sync=false ! filesink location=screenshot.jpeg"

The address and port in this example are replaced, however when I run this
pipeline. I get the following error:
*gst/parse/grammar.y:774:gst_parse_perform_link could not link autovideosink
to filesink*

My understanding is I cannot convert the video feed into a file format like
this? is there anything I can add to my pipeline in order to get this
working when I eventually add a tee?



--
Sent from: http://gstreamer-devel.966125.n4.nabble.com/
_______________________________________________
gstreamer-devel mailing list
gstreamer-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Could not link autovideosink to filesink

Gary Metalle
Hi

Well you certainly need to get rid of that autovideosink for a start because it doesn't make sense to send a decoded JPEG image to a video sink.

The video sink only has a sink pad as well so you can't connect anything else after that (likewise with the filesink).

The decodebin shouldn't be there either because you've just encoded the jpeg image with jpegenc so why try to decode it after? Or did you want to display it as well as save it to disk?

It might be easier for you play with this stuff on a host machine such as Windows or Linux to better understand things.

The following pipeline will create a jpeg snapshot from a video test source which is easier to play with rather than the tcpclientsrc (for the sake of understanding). You can try the tcpclientsrc after to make the pipeline more complicated:

gst-launch-1.0 videotestsrc num-buffers=1 ! jpegenc ! filesink location=screenshot.jpeg

Gary
________________________________________
From: gstreamer-devel <[hidden email]> on behalf of DanteDom <[hidden email]>
Sent: 24 October 2020 02:35
To: [hidden email]
Subject: Could not link autovideosink to filesink

Hello.

I am trying to form a pipeline in an android application I am making.

At the moment, the pipeline is designed to simply take a jpeg image of a
given tcpclientsrc connection I have. This is an example of the pipeline:

"tcpclientsrc host=0.0.0.0 port=1000 num-buffers=1 ! jpegenc ! decodebin !
autovideosink sync=false ! filesink location=screenshot.jpeg"

The address and port in this example are replaced, however when I run this
pipeline. I get the following error:
*gst/parse/grammar.y:774:gst_parse_perform_link could not link autovideosink
to filesink*

My understanding is I cannot convert the video feed into a file format like
this? is there anything I can add to my pipeline in order to get this
working when I eventually add a tee?



--
Sent from: http://gstreamer-devel.966125.n4.nabble.com/
_______________________________________________
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: Could not link autovideosink to filesink

DanteDom
Hey thanks for your help. I am very new so I appreciate the help.


Before asking for help I tried numerous different pipelines, one of which
was what you suggested below. With my Tcpclientsrc and one with videotestsrc
to see what would happen.


I get an error when I utilized "videotestsrc num-buffers=1 ! jpegenc !
filesink location=screenshot.jpeg"

"app_function Could not retrieve video sink"

I should mention that am utilizing a modified version of a Gstreamer
tutorial:  It can be found here.
<https://gstreamer.freedesktop.org/documentation/tutorials/android/video.html?gi-language=c>  

When I attempt to add autovideosink, The error I get is:

"gst_parse_perform_link could not link autovideosink to filesink"

I have tried so many different combinations and potential solutions that I
am beginning to believe I need to modify the original code in some form
further?



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

Re: Could not link autovideosink to filesink

Matthew Waters


On 25/10/20 5:52 pm, DanteDom wrote:

> Hey thanks for your help. I am very new so I appreciate the help.
>
>
> Before asking for help I tried numerous different pipelines, one of which
> was what you suggested below. With my Tcpclientsrc and one with videotestsrc
> to see what would happen.
>
>
> I get an error when I utilized "videotestsrc num-buffers=1 ! jpegenc !
> filesink location=screenshot.jpeg"
>
> "app_function Could not retrieve video sink"
You would need to base your code on either android-tutorial-1 or -2 to
not have the video sink handling code that throws this error (or remove
the video sink handling code from your existing code).

Cheers
-Matt

> I should mention that am utilizing a modified version of a Gstreamer
> tutorial:  It can be found here.
> <https://gstreamer.freedesktop.org/documentation/tutorials/android/video.html?gi-language=c>
>
> When I attempt to add autovideosink, The error I get is:
>
> "gst_parse_perform_link could not link autovideosink to filesink"
>
> I have tried so many different combinations and potential solutions that I
> am beginning to believe I need to modify the original code in some form
> further?

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

OpenPGP_signature (505 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: Could not link autovideosink to filesink

DanteDom
Hello again.

I took your advice. Removing the code responsible for video sink handling,
and subsequently testing the pipeline with: videotestsrc num-buffers=1 !
jpegenc !filesink location=screenshot.jpeg". Did in fact produce a
screenshot of the videotestsrc.

I feel like I am very close to solving my problem and I thank both of you
for letting me understand this all better. However one issue remains in my
modification of that tutorial3.c file.

I created a function to handle a pipeline for livevideo screenshots.
Independent of the other pipeline which simply displays the videofeed. (I
dabbled in tees & queues but I need these to function under specific
circumstances).

I based this function "snapshot_function". On this reference from GStreamer
Here
<https://github.com/GStreamer/gst-plugins-base/blob/master/tests/examples/snapshot/snapshot.c>
.

However I modified it a bit:



The following is my includes for this file too:


*However I get this error:*



I do not understand this error? I have referenced everything correctly but
this error remains.



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

Re: Could not link autovideosink to filesink

DanteDom
Ah, I have solved this error.

I had to implement pixbuf in my CMakeList, NDK. Referencing it as an
external library.



--
Sent from: http://gstreamer-devel.966125.n4.nabble.com/
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel