Discussion:
About the Appsrc example appsrc-stream
Claire Mantel
2018-12-06 10:27:36 UTC
Permalink
Hello,

We're building a Gstreamer application with the following pipeline:
Appsrc --> videconvert --> xvimagsink

Appsrc will in the end be a image buffer updated at 10Hz but for now we're just reading png images and putting them in a buffer that we want to push to appsrc.

We looked into this example
https://cgit.freedesktop.org/gstreamer/gst-plugins-base/tree/tests/examples/app/appsrc-stream.c

And have a couple of questions.

- What is the difference between using the function gst_app_src_push_buffer() or emitting the signal g_signal_emit_by_name (app->appsrc, "push-buffer", buffer, &ret); (l105 in the example)

- The example uses the signal "need-data" coupled to the callback start_feed, but it's using the push mode of appsrc, which is confusing since it sounds more like a pull than a push.

Thanks in advance for the help!
Claire
Nicolas Dufresne
2018-12-06 18:52:26 UTC
Permalink
Post by Claire Mantel
Hello,
Appsrc à videconvert
à xvimagsink
Appsrc will in the end be a image buffer updated at 10Hz but for now we’re just reading png images and putting them in a buffer that we want to push to appsrc.
We looked into this example
https://cgit.freedesktop.org/gstreamer/gst-plugins-base/tree/tests/examples/app/appsrc-stream.c
And have a couple of questions.
-
What is the difference between using the function
gst_app_src_push_buffer() or emitting the signal g_signal_emit_by_name (app->appsrc, "push-buffer", buffer, &ret); (l105 in the example)
gst_app_src_push_buffer() requires to link your application to the libgstapp library. On the other side, the buffer is passed in "transfer-full" manner (giving away your ref) which is more efficient and ensure the buffers can be written/owned by GStreamer without copies.
Post by Claire Mantel
-
The example uses the signal “need-data” coupled to the callback start_feed, but it’s using the push mode of appsrc, which is confusing since it sounds more like a pull than
a push.
need-data signal indicated that the appsrc internal queue is no longer full. Though, it's not a pull API since you don't return a buffer in that callback. Push function simply place a buffer in the queue, unless the queue is full (it is unlimited by default, so it's never full unless configured).
Post by Claire Mantel
Thanks in advance for the help!
Claire
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Loading...