The assignment is due Sunday, July 4, 11.59 pm EDT. Submission Guidelines
You can also see it enlarged below, as a PNG image:
You can convert between the various P*M image formats, such as PPM (for color pixels), PGM (for grayscale) and PBM (for black-and-white bitmap files) using the pbmplus or netpbm tools installed on almost any Unix system. (CUNIX apparently used netpbm.)
You only need to support the transmission of 8,000 Hz-sampled mu-law audio. No audio packets are sent during silence. The static payload type, listed in RFC 3551, is 0.
Your program should deal gracefully with silence suppression. For now, your program should simply play packets within each talkspurt with the appropriate timing and delay the playout of the initial packet in a talkspurt by a setable amount of time. The time delay is set by the 'delay' command in your user interface, measured in seconds and expressed as a floating point number. For example, delay 0.02 would delay playout by 20 ms. The playout delay will be made adaptive in the next assignment.
The application data unit is left up to you, with 160 samples (20 ms) a typical value. However, your receiver should not depend on this particular packet size.
Packets other than the first packet are inserted into your ring buffer according to the timestamp contained in the packet. Thus, your code should be able to deal with missing and re-ordered packets. Additional technical background can be found in technical report.
Two test audio files recorded using the RTP tools. You can then use these tools to generate a packet stream to test your implementation, but you should also test your implementation by sending audio between two copies of your implementation.
Use rtpdump to make sure that your RTP implementation conforms to the specification and include the results in your sample output.
The program should still support multicast and IPv6.
Please include in your README file brief descriptions (algorithms, program flows etc.) of how your implementation satisfies the programming requirements.
Please see the notes in HW 4 for additional information on audio programming in Java and C.
The application can be written in C(++) or Java. You may choose either Linux, Solaris or Windows (XP). The programming style guidelines apply. You should omit the Columbia copyright, since assignments belong to the author, not the university.