<div dir="ltr"><div>I have a dump of RTP traffic (a single ssrc stream) and I would like to decode it with gstreamer.</div><div>What I am trying works, but it fails if there are jumps in the timestamps because there is silence in between (no packets sent during the silence). The result is an audio without the right silence.<br></div><div>Note that the RTP timestamp advances correctly, so one knows how much time passed before the jump and after it.<br></div><div>Thus, I was trying "rtpjitterbuffer mode=0" however, when I use mode=0, I get the following:</div><div>....<br></div><div>INFO rtpjitterbuffer gstrtpjitterbuffer.c:2559:calculate_expected:<rtpjitterbuffer0> lost packets (1, #23086->#23086) duration too large 0:00:00.800000000 > 0:00:00.200000000, consider 0 lost (0:00:00.200000000)<br>INFO rtpjitterbuffer gstrtpjitterbuffer.c:2559:calculate_expected:<rtpjitterbuffer0> lost packets (2, #23112->#23113) duration too large 0:00:00.740000000 > 0:00:00.200000000, consider 1 lost (0:00:00.293333332)</div><div>...<br></div><div>INFO basesrc gstbasesrc.c:2839:gst_base_src_loop:<rtpfilesrc0> pausing after gst_base_src_get_range() = eos<br>INFO task gsttask.c:316:gst_task_func:<rtpfilesrc0:src> Task going to paused</div><div><br></div><div>and at this point it remains blocked.</div><div><br></div><div>This is the pipeline I am using: <br></div><div><br></div><div> gst-launch-1.0 rtpfilesrc location=/tmp/input.rtp ! "application/x-rtp,
media=(string)audio, clock-rate=(int)8000, encoding-name=(string)PCMA" !
rtpjitterbuffer mode=0 max-rtcp-rtp-time-diff=-1 ! decodebin ! wavenc !
filesink location=/tmp/out.wav</div><div><br></div><div>Rtpfilesrc is a plugin I have written that reads an RTP dump and becomes a source of UDP packets. I used PushSrc as the base class and have overridden "fill".</div><div> In init() I am using the following configuration:</div><div> gst_base_src_set_live (GST_BASE_SRC (rtpfilesrc), TRUE);<br> gst_base_src_set_format (GST_BASE_SRC (rtpfilesrc), GST_FORMAT_TIME);<br> // do not make rtpfilesrc set timestamps on outgoing buffers based on the running_time when they were captured<br> gst_base_src_set_do_timestamp (GST_BASE_SRC (rtpfilesrc), FALSE);</div><div><br></div><div>What should I do? <br></div><div><br></div><div>Thank you in advance.<br></div></div>