Typefind block - lost frames detected

Hoel Vasseur hoel.vasseur at openwide.fr
Thu Apr 14 16:24:27 UTC 2016


Hi everybody, 

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?

cheers,

Hoël


More information about the gstreamer-devel mailing list