                      LAME 3.xx   
               LAME Ain't an MP3 Encoder
                 http://www.mp3dev.org
	             March 2001

Originally developed by Mike Cheng (www.uq.net.au/~zzmcheng).  Now 
maintained by Mark Taylor (www.mp3dev.org).

This code is distributed under the GNU LESSER PUBLIC LICENSE
(LGPL, see www.gnu.org) with the following modification:

1. If you determine that distribution of LAME requires a patent license,
   and you obtain a patent license, you may distribute LAME even though
   redistribution of LAME may also require a patent license.  

2. You agree not to enforce any patent claims for any aspect of
   MPEG audio compression, or any other techniques contained in 
   the LAME source code. 


============================================================================

see the file "INSTALL" for installation (compiling) instructions.  
see the file "USAGE" for the most up-to-date guide to the command line options.
see the file "LICENSE" for details on how to use LAME in non-GPL programs.
see the file "HACKING" if you are interested in working on LAME
see the file "API" for details of the LAME encoding library API

There is HTML documentation and a man page in the doc directory.

============================================================================

LAME uses the MPGLIB decoding engine, from the MPG123 package, written
by: Michael Hipp (www.mpg123.de) MPGLIB is released under the GPL.

Copyrights (c) 1999-1007 by The LAME Project
Copyrights (c) 1999,2000,2001 by Mark Taylor
Copyrights (c) 1999,2000,2001 by Mark Taylor
Copyrights (c) 1998 by Michael Cheng
Copyrights (c) 1995,1996,1997 by Michael Hipp: mpglib

As well as additional copyrights as documented in the source code.  

