gst_event_new_eos gives NO GST_MESSAGE_EOS but instead warnings not and packet 13548 too late as #46078 was already popped

Tim Müller tim at centricular.com
Thu Apr 2 02:57:29 PDT 2015


On Thu, 2015-04-02 at 08:50 +0000, Marc Lievens wrote:

Hi Marc,

> With the used pipeline ( gstreamer V1.4.5) the video is saved to file
> and the onvif data is seen.
> 
>  
> 
> rtspsrclocation=rtspUrl name=rtspsrc rtspsrc.
> 
> ! queue name=videoqueue ! rtph264depay! h264parse! matroskamux !
> filesink rtspsrc.
> 
> ! queue name=onvifqueue ! application/x-rtp, media=application !
> fakesink 
> 
>  
> 
> But when I send a eos  as (bool reply true) 
> 
>  
> 
> gst_element_send_event(matroskamux, gst_event_new_eos());
> 
>  
> 
> or as 
> 
>  
> 
> pad = gst_element_get_static_pad(matroskamux, "video_0");
> 
> gst_pad_send_event(pad, gst_event_new_eos());
> 
>  
> 
> , then the GST_MESSAGE_EOS is never arrived and after a while the next
> warning are  continues logged.
> 
>  
> 
> warning
> rtpjitterbuffer.c2351:gst_rtp_jitterbuffer_chain:<rtpjitterbuffer0>
> packet 13548 too late as #46078 was already popped, dropping 7632
> 
>  
> 
> When I use only the Video channel then everything seems to work fine.
> The eos is send and processed on GST_MESSAGE_EOS

Usually bins (and the toplevel pipeline) will 'aggregate' EOS messages,
meaning they will not pass them on to the higher level or the
application until *all* sinks in the bin/pipeline have posted an EOS
message.

In your case, I suspect the EOS goes through to the filesink, but the
fakesink never posts one, so the pipeline doesn't forward the EOS to the
application.

Two options:

 - send the EOS event on rtspsrc (via gst_element_send_event)

 - set message-forward=true on the pipeline [1]

Cheers 
 -Tim

[1] see the bus message handler in
http://people.freedesktop.org/~tpm/code/test-backlog-recording-h264.c
for an example how to handle the EOS then.



-- 
Tim Müller, Centricular Ltd - http://www.centricular.com



More information about the gstreamer-devel mailing list