rtpjitterbuffer : changing 'latency' property on the fly doesn't work

classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

rtpjitterbuffer : changing 'latency' property on the fly doesn't work

Thomas DEBESSE
Hi, I use Gstreamer 1.0 to receive and decode Opus stream from RTP/UDP.

To do this I use a 'rtpjitterbuffer' plugin between 'udpsrc' and
'rtpopusdepay'. My pipeline looks like this :

udpsrc uri='udp://hostname:port' caps='-some-long-caps-' !
rtpjitterbuffer name=jbuf latency=70 drop-on-latency=True !
rtpopusdepay ! opusdec ! …

If I do (using python3) :
jbuf.get_property('latency')
I get 70, and audio stream is ~70ms late

If I do :
jbuf.set_property('latency', 700)
jbuf.get_property('latency')
I get 700, value seems set correctly… But in fact nothing happens :
audio stream is always ~70ms late, and if I create disturbance on the
network, rtpjitterbuffer seems to drop when packet are 70ms late, not
700ms late !

For comparison, when I change another property on another plugins
('freq' fort 'audiotestsrc', 'bitrate' for 'opusenc'…), change occurs
immediately.

Also, I have tried to restart the plugin doing something like this :
pipeline.set_state(Gst.State.NULL)
pipeline.set_state(Gst.State.PLAYING)

The pipeline does'nt restart correctly and I get this (GST_DEBUG=3) :
0:43:56.642353180  7732  0x9ef70a0 WARN                     bin
gstbin.c:2488:gst_bin_do_latency_func:<pipeline2> failed to query
latency
<enum GST_STATE_CHANGE_ASYNC of type StateChangeReturn>
>>> 0:43:56.666258378  7732  0x9ded460 WARN      gstrtpjitterbuffer gstrtpjitterbuffer.c:2114:gst_rtp_jitter_buffer_sink_query:<jbuf:sink> unhandled serialized query

** (python3:7732): CRITICAL **: gst_audio_decoder_finish_frame:
assertion `buf == NULL || GST_AUDIO_INFO_IS_VALID (&ctx->info)' failed
0:43:57.468472281  7732  0x9ded460 WARN                 basesrc
gstbasesrc.c:2791:gst_base_src_loop:<src> error: Erreur interne de
flux de données.
0:43:57.468568945  7732  0x9ded460 WARN                 basesrc
gstbasesrc.c:2791:gst_base_src_loop:<src> error: streaming task
paused, reason error (-5)

So, rtpjitterbuffer seems to uses latency property only at startup,
and does not support the changes on the fly.

I use Debian (squeeze/sid), and "gst-inspect-1.0 rtpjitterbuffer" said me :
 Version:              1.0.4
  Source release date:  2012-12-18

Is this normal? Is this a bug? How can I change rtpjitterbuffer on the fly ?
Thank you in advance for your answers

--
Thomas DEBESSE
RCF Méditerrannée
_______________________________________________
gstreamer-devel mailing list
[hidden email]
http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

difference between rtpbin latency and jitterbuffer latency

gagankumarnigam
Hi all,

1. Can somebody tell me what is the difference between rtpbin latency and jitterbufer latency.
2. Can we use both of them togather like: my pipeline for receiving videos is

jitterbuffer = gst_element_factory_make ("gstrtpjitterbuffer","jitterbuffer");
g_object_set(G_OBJECT (jitterbuffer), "latency",100, NULL);

gst_bin_add_many (GST_BIN(pipeline),jitterbuffer,videodepay,h264parse,videodec,videoqueue,videoconv,
videosink,NULL);  

rtpbin = gst_element_factory_make ("gstrtpbin", "rtpbin");  
g_object_set (G_OBJECT (rtpbin),"latency",100,NULL);  
Reply | Threaded
Open this post in threaded view
|

Re: difference between rtpbin latency and jitterbuffer latency

Sebastian Dröge-3
On Do, 2016-03-24 at 19:20 -0700, gagankumarnigam wrote:
> Hi all,
>
> 1. Can somebody tell me what is the difference between rtpbin latency and
> jitterbufer latency.
> 2. Can we use both of them togather like: my pipeline for receiving videos
> is

There is no difference between the two. rtpbin's latency is just
proxied to the properties on the rtpjitterbuffer(s).

--
Sebastian Dröge, Centricular Ltd · http://www.centricular.com


_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel

signature.asc (968 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: difference between rtpbin latency and jitterbuffer latency

Nicolas Dufresne-4
In reply to this post by gagankumarnigam
Le jeudi 24 mars 2016 à 19:20 -0700, gagankumarnigam a écrit :
> 1. Can somebody tell me what is the difference between rtpbin latency
> and
> jitterbufer latency.
> 2. Can we use both of them togather like: my pipeline for receiving
> videos
> is

rtpbin simply propagate that property to it's jitterbuffer.

Nicolas
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel

signature.asc (188 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Not able to play Mpeg2 video

gagankumarnigam
Hi Nicolos,
i am having another problem not able to solve it.

I am having UAV video (mpeg2 video) which is in USB drive(normal pen drive for storing data). This USB drive is connected to my DVD player
from which i am taking video feed (out via RSA cable) to my laptop via analog port. And i am using the pipeline which is given below:

gst-launch v4l2src device=/dev/video0 ! ffenc_mpeg2video ! ffmpegcolorspace ! xvimagesink but this can't play the video or not getting any output nor any error printed on terminal.
All relative codec are installed.
However same procedure is used for other formats like AVI i am getting video on my laptop.

Can you please help me to find out what is the problem?


Thanx