Elements in rtspsrc pipeline

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

Elements in rtspsrc pipeline

Stewart Hardwick
Hi Folks

I'm seeing a level of packet loss sufficient to cause macroblocking when I play a stream from an RTSP server.
If I turn on debug for the jitterbuffer, I see warnings about packet loss coincident with the macroblocking. I have
experimented with a minimal pipeline consisting of rtspsrc ! fakesink and I still see packet loss.

I'm trying to figure out what elements are created by rtspsrc and how they are connected, in order to track down
in which element the packets may be being lost.

I took a look at the README in the gstrtspsrc folder and that talks about creating an rtpdec element, however I think that
may be a bit out of date.

Can anyone help me with a block diagram of which elements make up an rtspsrc and how they are connected, assuming the
simplest case?

Thanks
Stewart

------------------------------------------------------------------------------
Protect Your Site and Customers from Malware Attacks
Learn about various malware tactics and how to avoid them. Understand
malware threats, the impact they can have on your business, and how you
can protect your company and customers by using code signing.
http://p.sf.net/sfu/oracle-sfdevnl
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Elements in rtspsrc pipeline

wl2776
Administrator
Stewart Hardwick wrote
Can anyone help me with a block diagram of which elements make up an rtspsrc
and how they are connected, assuming the
simplest case?
Something like this: http://dl.dropbox.com/u/11507187/player-rtsp-success.png

Try writing a simple program, which would create a pipeline, set it to play, then call
GST_DEBUG_BIN_TO_DOT_FILE_WITH_TS(GST_BIN(pipeline), GST_DEBUG_GRAPH_SHOW_ALL, filename);
macro.

Set environment variable
GST_DEBUG_DUMP_DOT_DIR
 to some path before running this program.
Reply | Threaded
Open this post in threaded view
|

Re: Elements in rtspsrc pipeline

Wim Taymans
Also a good trick is to increase the default kernel UDP buffer size.
The next version of rtspsrc
will by default set the size much bigger, which helps a lot.

Wim

On Wed, Jan 19, 2011 at 11:56 AM, wl2776 <[hidden email]> wrote:

>
>
> Stewart Hardwick wrote:
>>
>> Can anyone help me with a block diagram of which elements make up an
>> rtspsrc
>> and how they are connected, assuming the
>> simplest case?
>>
>
> Something like this:
> http://dl.dropbox.com/u/11507187/player-rtsp-success.png
>
> Try writing a simple program, which would create a pipeline, set it to play,
> then call
> GST_DEBUG_BIN_TO_DOT_FILE_WITH_TS(GST_BIN(pipeline),
> GST_DEBUG_GRAPH_SHOW_ALL, filename);
> macro.
>
> Set environment variable GST_DEBUG_DUMP_DOT_DIR to some path before running
> this program.
>
> --
> View this message in context: http://gstreamer-devel.966125.n4.nabble.com/Elements-in-rtspsrc-pipeline-tp3224990p3225021.html
> Sent from the GStreamer-devel mailing list archive at Nabble.com.
>
> ------------------------------------------------------------------------------
> Protect Your Site and Customers from Malware Attacks
> Learn about various malware tactics and how to avoid them. Understand
> malware threats, the impact they can have on your business, and how you
> can protect your company and customers by using code signing.
> http://p.sf.net/sfu/oracle-sfdevnl
> _______________________________________________
> gstreamer-devel mailing list
> [hidden email]
> https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
>

------------------------------------------------------------------------------
Protect Your Site and Customers from Malware Attacks
Learn about various malware tactics and how to avoid them. Understand
malware threats, the impact they can have on your business, and how you
can protect your company and customers by using code signing.
http://p.sf.net/sfu/oracle-sfdevnl
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Elements in rtspsrc pipeline

Stewart Hardwick
In reply to this post by Stewart Hardwick
> Something like this:
> http://dl.dropbox.com/u/11507187/player-rtsp-success.png

Thanks, that's just what I had in mind

Cheers
Stewart

------------------------------------------------------------------------------
Protect Your Site and Customers from Malware Attacks
Learn about various malware tactics and how to avoid them. Understand
malware threats, the impact they can have on your business, and how you
can protect your company and customers by using code signing.
http://p.sf.net/sfu/oracle-sfdevnl
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Elements in rtspsrc pipeline

Stewart Hardwick
> Also a good trick is to increase the default kernel UDP buffer size.
> The next version of rtspsrc
> will by default set the size much bigger, which helps a lot.

I took a look at the latest plugins_good rtspsrc, and modified mine to
add

g_object_set (G_OBJECT (stream->udpsrc[0]), "buffer-size",
        (100 * 1024), NULL);

in gst_rtspsrc_stream_configure_udp. However, the debug from
udpsrc still shows a buffer size of 50K (note confusing factor of 2
due to kernel overhead):

udpsrc gstudpsrc.c:784:gst_udpsrc_start:<udpsrc0> allocating socket
for 0.0.0.0:0
udpsrc gstudpsrc.c:795:gst_udpsrc_start:<udpsrc0> got socket 37
udpsrc gstudpsrc.c:797:gst_udpsrc_start:<udpsrc0> setting reuse 0
udpsrc gstudpsrc.c:804:gst_udpsrc_start:<udpsrc0> binding on port 0
udpsrc gstudpsrc.c:873:gst_udpsrc_start:<udpsrc0> have udp buffer of
106496 bytes
udpsrc gstudpsrc.c:906:gst_udpsrc_start:<udpsrc0> bound, on port 32836
udpsrc gstudpsrc.c:909:gst_udpsrc_start:<udpsrc0> notifying port 32836

I was expecting to see "setting udp buffer of 102400 bytes" somewhere.
Looking at the
udpsrc code, in gst_udpsrc_start it looks like src->buffer_size must
be zero. Possibly the
call in rtspsrc is being made after gst_udpsrc_start has run and set
the buffer size?

Cheers
Stewart

------------------------------------------------------------------------------
Protect Your Site and Customers from Malware Attacks
Learn about various malware tactics and how to avoid them. Understand
malware threats, the impact they can have on your business, and how you
can protect your company and customers by using code signing.
http://p.sf.net/sfu/oracle-sfdevnl
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel