Dynamic Caps changes with appsrc

bob_jam11 bob_jam11 at hotmail.com
Tue Feb 2 11:37:27 CET 2016


Hi,

I am attempting to handle frame dimension changes in my pipeline. 

My pipeline is as follows:

appssrc -> queue -> videoscale -> capsfilter -> videorate -> videoconv ->
queue -> x264enc -> queue -> splitmuxsink

I was following the discussion and subsequent bug report here: 
http://gstreamer-devel.966125.n4.nabble.com/How-to-change-appsrc-caps-dynamically-td4666759.html
<http://gstreamer-devel.966125.n4.nabble.com/How-to-change-appsrc-caps-dynamically-td4666759.html>  

I am changing the caps if the dimensions have changed in the need-data
callback then pushing the buffer e.g.

gst_app_src_set_caps(appVideoSrc, newCaps);
gst_app_src_push_buffer(appVideoSrc, buffer);

I get the following error and the pipeline freezes and stops processing
frames.

 videopool
gstvideopool.c:216:video_buffer_pool_set_config:<videobufferpool0> no caps
in config

If I push the buffer before I change the caps then I see the error described
in the bug report above "gst_video_frame_map_id: invalid buffer size" which
makes sense since the expected buffer size will have changed without any
renegotiation of the caps.

I couldn't see any other guidance on dynamically changing caps in the
documentation. Should I be blocking the appsrc and flushing the pipeline
before resuming with the new caps?

Any help is appreciated




--
View this message in context: http://gstreamer-devel.966125.n4.nabble.com/Dynamic-Caps-changes-with-appsrc-tp4675598.html
Sent from the GStreamer-devel mailing list archive at Nabble.com.


More information about the gstreamer-devel mailing list