Confused about GST_PAD_SET_PROXY_CAPS and negotiation
Guillaume POIRIER
poirierg at gmail.com
Fri Jan 23 08:46:41 PST 2015
Hello everyone,
First of all, thanks for this great piece of software!
I'm trying to implement a video filter in GStreamer that would take
RGB as input (sink) and would output ARGB64 (src).
I naively thought that since my src and sink only support a fixed
format, I didn't need to perform any negotiation... is that right?
Since my code didn't do what I wanted, I tried to add negotiation by
calling gst_event_new_caps() + gst_pad_send_event() on my sink and src
pads... but this didn't seem to work (gst_pad_send_event() returned
FALSE each time). How come? Who should have handled these events? Not
me I presume?
Then, just calling GST_PAD_SET_PROXY_CAPS() on each of my pads did
allow me to get a pipeline that seemed to have negotiated a format,
... but the verbose output of gst-launch-1.0 does not show that my src
pad has been seen as ARGB64. When I look at the documentation of
GST_PAD_SET_PROXY_CAPS() states 'Set this if the element always
outputs data in the exact same format as it receives as input."
My question is: what is the simplest way to have a filter take fixed
format in input, what do I need to do negotiation-wise (if any)?
Here is my pipeline:
gst-launch-1.0 --gst-debug=3 -vv
--gst-plugin-path=/local/poirierg/gst-template/gst-plugin/src/my_build/
filesrc location=/local/poirierg/mpc_spaceship.png ! pngdec !
videoconvert ! myfilter ! videoconvert ! imagefreeze ! autovideosink
I hope you guys can help me, be it by a simple RTFM with the right
page pointed to :-)
Regards,
Guillaume
More information about the gstreamer-devel
mailing list