[gst-devel] rtp plugin

burgerman at users.sourceforge.net burgerman at users.sourceforge.net
Thu Jun 30 04:42:05 CEST 2005


Hi,

About your first email, I am currently integrating full RTP support into gstreamer 0.9. I stopped doing it for 0.8, there are only remnants of my work left in 0.8, but RTP will be fully functional in 0.9.

> In my understanding, rtp is general protocol and codec independent. So I
> wonder why to write different plugin for different media format, for
> example, rmpeg12audiodec and rmpeg12audioenc for mpeg, rmp3adudec and
> rmp3aduenc for mp3.  
Each different codec in RTP has his own payload type. Each codec divides the stream into smaller packets and encapsulates those in RTP packets (with RTP headers) and they get sent on UDP. The reason each codec has his own "payloader" is because each codec has his own way of dividing the stream into smaller packets, using certain markers for different purposes each. So the "payloader"/"depayloader" cannot possibly be the same for all codecs. This is what rlive is, it's mostly a payloader/depayloader, but it also has support for adding full RTP headers to the payloaded stream, thus you simply have to send over udpsink. The problem is RTP is much more complicated than that, and this leaves out alot (specially RTCP support). Nonetheless it does work.

> Is there any special reason (performance, efficiency  or any other
> requirements specific to media format )to choose such method? why cannot
> implement rtp plugin in the manner similar to udp plugin, i.e. rtpsrc and
> rtpsink? 
In gstreamer 0.8, this already exists (check http://cvs.sourceforge.net/viewcvs.py/farsight/gst-plugins/ext/jrtp/).
You have a source and sink. I don't remember how those eventually worked, but you can check the r263enc plugin in that same CVS to see how it communicates information to the sink (i think it uses signals).
 
> If these plugin are rtp plugins, which rtp library do they depend on? I
> download code from CVS:
The RTP uses a lib called jrtplib.

If you can use gstreamer 0.9 for your project it would be much better. If not you can just mess around with rlive and jrtp plugins, they should be more than enough to have very basic RTP support without RTCP or multisessions.
If you want to use 0.9, let me know and i'll post some more information. I'll be comiting a few patches to gst in the next day or two to have initial RTP support using the new stuff.

Laterz
Burger




More information about the gstreamer-devel mailing list