Typefind block - lost frames detected
hoel.vasseur at openwide.fr
Thu Apr 14 16:24:27 UTC 2016
I am struggling for days on this. I have a an application in which I received a stream for UDP thanks to udpsrc. Streams received can have different codecs (RAW, J2K, MPEG4). I am decoding it if necessary. This pipeline is sink into an appsink element. So it looks like :
udpsrc ! rtpdepayloader [rtpvrawdepay, rtpj2kdepay or rtpmp4vdepay] ! (decoder) ! appsink
On a different pipeline I retrieve this first stream through the appsrc element. There I would be able to encode it to a different format and sink to to another IP address thanks to udpsink. So it would look something like:
appsrc ! encoder ! rtppayloader ! udpsrc
But would like to perform a typefind after the encoder:
appsrc ! encoder ! typefind ! rtppayloader ! udpsrc
The elements appsink and appsrc are synchronize over time: each time a sample arrived on appsink it is push to appsrc using a call back.
So that I can choose the right payloader. However, the application blocked on the execution of the typefind, and I checked the logs and saw that there a problem with keyframes lost (obtained with GSt_DEBUG=3):
WARN v4l2src gstv4l2src.c:829:gst_v4l2src_create:<v4l2src0> lost frames detected: count = 10 - ts: 0:00:00.948148955
So I tried to add queue before and after encoders, but it does not work.
Does any one have an idea on how I could not to lost keyframes?
More information about the gstreamer-devel