==================================================================== RGL Codec (Version 1.0.0) README ==================================================================== Ramalho G.711 Lossless Codec Library Release 1.0.0 March 10, 2003 ==================================================================== LICENSE AND COPYRIGHT ==================================================================== For information about licensing, please see the LICENSE file in this directory, or http://www.vovida.org/license.html. ==================================================================== INTRODUCTION ==================================================================== The RGL codec (short for Ramalho G.711 Lossless compression) obtains significant lossless compression of speech/audio packet payloads encoded with ITU-T Recommendation G.711 PCM (mu-law or A-law, IETF RTP payload types PCMA or PCMU) with trivial complexity (0.3 MIPS for encode/decode pair) and virtually no delay. This codec has been designed because there is a desire, and sometimes an absolute need, in many VoIP applications to send voice samples over IP networks to end systems in the identical PCM format used in the PSTN/GSTN. For this application, one can use the RGL codec to perform lossless compression between the "G.711 endpoints". Although the RGL codec provides average compression for voice/audio G.711 frames, a given RGL frame could actually be larger than the original G.711 frame by one byte (an "overhead byte") owing to the inability of the RGL codec to obtain compression. To help mitigate this expansion, a RTP payload header format is being proposed that does not require sending the "overhead byte" for the expected most common G.711 frame size (10 msec, 80 byte G.711 frame) when expansion would otherwise occur. For the current status of the RGL payload header format see www.ietf.org. The RGL_Compress and RGL_Decompress functions that implement the codec are written in standard C and thus should be readily portable to virtually DSP or general computing platform without special treatment. Sizes of all buffers and variables needed to be passed to and from these functions are fully outlined in the comment sections found at the beginning of these functions. NOTE: 1 - The RGL_Compress function which *is* the *RGL encoder* can be found inside the "rgl_encode_v1.c" program. 2 - The RGL_Decompress function which *is* the *RGL decoder* can be found inside the "rgl_decode_v1.c" program. Four utility programs have been provided to demonstrate the RGL codec: rgl_write_v1.c - Creates artificial G.711 writes to "G711" files. rgl_encode_v1.c - Compresses "G.711 files" to "RGL format" files. rgl_decode_v1.c - Decompresses "RGL format" files back to "G711" files. rgl_comp.c - Compares "rgl_write_v1" input to "rgl_decompress_v1" output. The version of this release is 1.0.0. ==================================================================== NEW FEATURES AND FUNCTIONS IN THIS RELEASE ==================================================================== * The reason the RGL codec was revised to Version 1.0.0 was to accommodate a simple RTP payload format for it. The newly proposed RTP payload format is described in draft-ietf-ramalho-rgl-rtpformat-01.txt. The modification made to the version 0.1.0 RGL codec to accommodate the proposed payload formats was made in a manner that is backwardly compatible with earlier version RGL decoders (i.e. a version 0.1.0 decoder can successfully decode all possible version 1.0.0 encoder output frames). See RGL documentation for specifics on how this was accomplished. ==================================================================== BUG FIXES ==================================================================== * No bug fixes. No bugs found in previous version. ==================================================================== KNOWN LIMITATIONS ==================================================================== There are no known limitiations at this time. ==================================================================== GETTING STARTED ==================================================================== PLATFORM SUPPORTED -------------------------------------------------------------------- Any standard C environment. COMPILE INSTRUCTIONS -------------------------------------------------------------------- Simply compile the programs as console applications. As function prototypes are declared early in rgl_encode_v1.c and rgl_decode_v1.c for RGL_Compress and RGL_Decompress functions, respectively, no header files are required. The math library must be linked for rgl_write.c, as the "sin(x)" function is used. ==================================================================== SOURCE CODE INFORMATION ==================================================================== See comments at beginning of source code. ==================================================================== DIRECTORY STRUCTURE ==================================================================== This directory includes the Vovida implementation of the RGL Codec. ==================================================================== CONTRIBUTORS ==================================================================== This software consists of voluntary contributions made by Vovida Networks, Inc., Cisco Systems, Inc., and many individuals. Michael A. Ramalho - mramalho@cisco.com ==================================================================== CONTACT INFORMATION AND WEBSITE ==================================================================== We welcome your feedback, suggestions and contributions. Contact us via email if you have questions, feedback, code submissions, and bug reports. For general inquiries - info@vovida.org We have mailing lists for the VOCAL applications and proctocol stacks: VOCAL - vocal@vovida.org COPS - cops@vovida.org MGCP - mgcp@vovida.org RADIUS - radius@vovida.org RTP - rtp@vovida.org SIP - sip@vovida.org TRIP - trip@vovida.org RGL - rgl@vovida.org You can subscribe to the mailing lists on www.vovida.org. You can submit bug, patches, software contributions, and feature requests using Bugzilla. Access Bugzilla from www.vovida.org. ====================================================================