← Back to team overview

rohc team mailing list archive

Re: [gst-devel] Header compression plugin

 

Hi,

I am interested in helping develop and test a rohc gstreamer plugin. I
am new in both the gstreamer and rohc communities and I 'd appreciate
any comments for the following approach. I think this would involve
implementing 2 new gstelements:

- rohccomp: accepts a packet stream and performs the packet
compression. The input stream would be either in pcap format or
accepted from a virtual interface (tun). Perhaps there are other input
possibilities that I am not aware of.
- rohcdecomp: accepts a compressed packet, decompresses and passes it on.

Some gstreamer properties of both elements would include the rohc
profile chosen and the input format chosen (pcap or reading from a tun
interface)

These 2 gstreamer elements would allow for similar functionality as
the applications test/test.c and apps/tunnel/tunnel.c (from the rohc
source code tree) to be implemented in a gst-launch command line
pipeline.

The pcap input file handling could be similar in principle to the
pcapparse plugin in gst-plugins-bad. E.g to implement
compression/decompression.of pcap packets and pass this rohc flow
through udp we could use these pipelines:

sender / compressor:
gst-launch filesrc location="packets.pcap" ! rohccomp ! udpsink
receiver / decompressor:
gst-launch udpsrc ! rohcdecomp ! filesink location = "packets_otherside.txt"

Rohc_decomp would output raw packets for now, though pcap-output
should be possible in theory.

Reading from a tun/tap interface (e.g. file /dev/net/tun) happens with
a regular unix socket. Is there a gstreamer element that already
implements opening and reading from an arbitrary file? If not, could
this be implemented inside the rohc elements as a mode of input, or
maybe as a separate element?
I am basically asking if elements similar to socketsrc, socketsink in
the following example exist or if it makes sense to have them:

sender / compressor (assuming someone is sending packets to tun0)
gst-launch socketsrc location="/dev/net/tun0" ! rohccomp ! udpsink
receiver / decompressor (assuming someone is reading packets from tun1)
gst-launch udpsrc ! rohcdecomp ! socketsink location = "/dev/net/tun1"

Are there currently other ways in which the rohc library can be used?

The above discussion only deals with UDP packets for now - if there
would be added complexity / issues when using rtp please share.
Does the above description look sufficient? Please feel free to make
other suggestions or comments.
Also let me know if someone else is already working on this off-lists
so that development efforts are not duplicated.
thanks,

- Vasilis


On Mon, Jan 18, 2010 at 8:18 AM, Nicolas Hennion
<nicolashennion@xxxxxxxxx> wrote:
> Hi all,
> it will be very nice to implement the ROHC (RObust Header Compression, RFC
> 3095) in a standalone plugin.
> IP, UDP and UDP header will be compressed from 40 octets to 3-5 ! A nice
> optimization for audio and video streaming.
> You can find more informations about the ROHC and its open-source
> librairy: https://launchpad.net/rohc/
> The API documentation for compressor and decompressor are available here:
> - http://www.tech.viveris.com/docs/rohc/group__rohc__comp.html
> - http://www.tech.viveris.com/docs/rohc/group__rohc__decomp.html
> Any developper interrested ?
>
>
> ----
> Le sage ne dit pas ce qu'il sait, le sot ne sait pas ce qu'il dit.
> ----
>
> ------------------------------------------------------------------------------
> Throughout its 18-year history, RSA Conference consistently attracts the
> world's best and brightest in the field, creating opportunities for
> Conference
> attendees to learn about information security's most important issues
> through
> interactions with peers, luminaries and emerging and established companies.
> http://p.sf.net/sfu/rsaconf-dev2dev
> _______________________________________________
> gstreamer-devel mailing list
> gstreamer-devel@xxxxxxxxxxxxxxxxxxxxx
> https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
>
>