Hi!

I wrote a simple mp3 multicast streamer, first for fun, then for
university. poc is composed of a few different programs:

Servers:
   - poc-http for unicast HTTP streaming
   - poc-2250 for multicast RTP streaming (using RFC 2250)
   - poc-3119 for multicast RTP streaming (using RFC 3119)
   - poc-fec for MP3 streaming with FEC

Clients:
   - pob-2250, pob-2250-rb for RTP (RFC 2250) streaming
   - pob-3119, pob-3119-rb for RTP (RFC 3119) streaming
   - pob-fec for FEC streaming

All programs are to be used on the command line. The servers stream the
mp3s given on the command line, or can accept input from stdin (so a
DJing script or streaming real-time data is no problem).

poc-http is a simple HTTP streamer, but supports VBR streaming.

poc-2250 and poc-3119 stream over RTP (described in RFC 1889). RFC 2250
describes how raw mp3 frames are to be sent as packet payload, which can
lead to problems when packets are lost as the bit reservoir of
subsequent frames is lost too. RFC 3119 fixes this problem by sending
MP3 ADUs as packet payloads. Packet loss does not destroy the bit
reservoir of subsequent frames, and empty dummy frames are inserted to
hold the bit reservoir.

poc-fec uses a homebrown protocol. It groups mp3 ADUs into FEC groups
and encodes them redundantly using a FEC method by Luigi Rizzo. For
example, 20 ADUs can be encoded to 25 packets, and only 20 received
packets permits the decoding to the original 20 ADUs. Also, the source
ADUs are included in the 25 encoded packets, so that in case of major
packet loss, source data can be recovered even if the received FEC group
is not complete. The FEC streaming programs do not support auto-adaptive
FEC yet (that is, the clients report the server how well they can
receive data so the server can adapt FEC appropriately).

All programs have a very crude error handling (using asserts, etc...),
but they seem to work well enough (at least for me :).

I also included RSA signing of RTP packets, but there may still be the
possibility to attack a MP3 stream using packet resending (have to check
that, though).

The software should work on any POSIX platform, but I didn't write a
very user-friendly and portable Makefile, so you may have to fix it
yourself. Also note that you need a C99 compliant compiler (like
gcc-3.0).

The URL is: http://www.bl0rg.net/software/poc/

Regards, Manuel

-- 
Bruise... Pristine... Serene! We were born to loose!
-- Placebo

_______________________________________________
mp3encoder mailing list
[EMAIL PROTECTED]
http://minnie.tuhs.org/mailman/listinfo/mp3encoder

Reply via email to