
        GOGO-no-coda ver. 2.36
                                                updated Aug. 11, 2000
 * ABSTRACT

  This software is a mp3 encoder based on LAME3.29 ( including a part of
  LAME3.5x ), which is optimized by PEN@MarineCat, Keiichi SAKAI, URURI,
  kei and shigeo,
  modified by Noisyu for BeOS Intel,
  modified by Samuel Audet for OS/2.

  GOGO can encode about TWICE as fast as original LAME can on K6-2 315MHz,
  and its quality is the about same as (old) LAME's.

  GOGO makes use of MMX, (Enhanced) 3D Now! and SSE if your system supports
  these units.

  Remark: Linux and FreeBSD don't support SSE formally.

 * CONTENTS

   *(1) NEWS
   *(2) HOW TO USE
   *(3) EXAMPLES
   *(4) HOW TO MAKE
   *(5) NEWER VERSIONS
   *(6) LICENSE
   *(7) NAMING
   *(8) FAQ
   *(9) APPENDIX
 
 (1) NEWS

   optimize for SSE + SMP on Linux and Windows.
   decrease pre-echo in low-bitrate encoding.
   support messages in Japanese SJIS/EUC, English, German and Spanish.

      * new options

  -lang {sjis,eucjp,eng,ger,esp}
        print messages in Japanese SJIS/EUC, English, German and
        Spanish.
        On Linux/BSD, gogo checks LC_MESSAGES, LC_ALL, LANG.

      * Thanks Ralf. Demmer for translating messages into German. *
      * Thanks Vicente Aguilar ( into Spanish ) *
      * Thanks Ralf. Schmitz ( for German Windows-GUI ) *
      * Thanks to sava ( makfiles for djgpp, OS/2 etc ) *

  -vb min max  ( Don't insert comma in between min and max )
        Specify minimum and maximum bitrate in VBR-encoding.

  The following options are for advanced using.
      para1 and para2 is smaller numbers than 100.
      Don't insert comma in between para1 and para2.

  -lpf para1 para2   get low-pass filter adjusted
  -th  para1 para2   threshold to change stereo with M/S stereo

 (2) HOW TO USE

  gogo [options] input.wav [output.mp3]

  input.wav  : input wave file
               if input.wav is `stdin' then GOGO reads from stdin.
  output.mp3 : output mp3 file
               if you omit this, `input.mp3' is used.

  options:

  -b kbps    : bitrate[kbps] 128(default)
             32,40,48,56,64,80,96,112,128,160,192,224,256,320 if 32/44.1/48kHz
             8,16,24,32,40,48,56,64,80,96,112,128,144,160 if 16/22.05/24kHz

  -m {m,s,j} : output mode select
           m : monaural     automatically selected if wav is monaural.
           s : stereo
           j : joint-stereo (default if wav is stereo)

  -nopsy     : disable psycho-acoustics
               You can't this option with VBR

  -v {0,1,..,9}
             : You may use this with -vb option, say,
               % gogo test.wav  -v 6 -vb 80 160

  -cpu num   : number of CPU for MT

  -d kHz     : output mp3 sampling frequency

  -emp {n,c,5} : de-empahsis
  -lpf {on,off} : 16kHz filter
               (dflt: use if bitrate <= 128kbps; not use if >= 160kbps)
               You should not this option.

  -test      : benchmark mode

  -silent    : don't print progress report

  -off {mmx,3dn,sse,kni}
             : disable MMX, 3D Now!, SSE(KNI)

  -debug     : print information of CPU.

  following options for BeOS MT.
  
  -priority num   : encode thread priority (dflt: 10 Normal Priority)
  -readthread num : read thread priority (dflt: no use readthread)

  following options for RAW-PCM.

  -offset byte : skip header size.
  -mono      : supporse mono-PCM. (dflt stereo)
  -8bit      : supporse 8bit-PCM. (dflt 16bit)
  -bswap     : low, high byte swapping for 16bit-PCM.
  -s kHz     : input wav sampling frequency. (dflt 44.1kHz)

  -delete   : delete wav-file after encoding
  -i        : verify and overwrite
  -o path   : output mp3-file into path
  -riff {wave, rmp} : wrapping format wave:RIFF/WAVE rmp:RIFF/RMP

 (3) EXAMPLES

  % gogo sample.wav
             : joint-stereo 128kbps  output file is sample.mp3.

  % gogo sample.wav -m s -b 160 -nopsy
             : stereo 160kpbs disable psycho-acoustics

  % cat sample.wav|gogo stdin a.mp3 -b 160
             : joint-stereo 160kbps stdin-mode

  % gogo sample.raw -offset 0
             : input PCM is no header, stereo 16bit 44.1kHz.

 (4) HOW TO MAKE

  You need NASM-0.98 (http://www.web-sites.co.uk/nasm/).
  This source includes Japanese characters in comments,
  so please delete or translate them.
  
  NO_KANJI is disused. cf. -lang option
  Otherwise we define JAPANESE_SPC in common.h.
  This is for dealing with path including Japanese,
  but undefine it if you want.

  Set USE_E3DN=yes if you want to use enhanced 3D Now! for Athlon.
  ( See Appendix )
  But if so, you must patch NASM to assemble those mnemonics, or get
  http://www.kurims.kyoto-u.ac.jp/~shigeo/soft/3dnow18.lzh
  and
  %mkdir mmx;cd mmx;lha x 3dnow18.lzh;gcc -DONLY_E3DN *.c
  %mmx/a.out mdct3dn.nas
  %mv -f mdct3dn.asm mdct3dn.nas
  , and so on.

  For Linux, FreeBSD 3.x, OpenBSD, NetBSD

  % make
  If you want RPM, then type
  % rpm -ta --clean gogo235.tgz

  For Linux with libc6, FreeBSD-4.0R with linuxthreads or BeOS

  USE_MT=yes

  For FreeBSD 2.x
  read Makefile and change ASFLAGS.

  For Windows32 console

  copy win\*.* .
  set up as follow at custom-build-window for *.nas or open gogo.dsw (VC++6.0)

  [command] nasm -f win32 -DWIN32 $(InputName).nas
  [output]  $(InputName).obj

  If you use Borland C++, then read Makefile and change ASFLAGS.
  Miquel made gogo_dll.bpr for gogo2.23, but it can't be applied to gogo2.24,
  so I don't include it, sorry.

  For BeOS

  % cd BeOS
  % MakeGOGO.sh
   To install, drag `gogo' into the link-folder provided.

  For OS/2 ( Mulithread is not supported )

  make -f makefile.os2

 (5) NEWER VERSIONS

      http://homepage1.nifty.com/herumi/gogo_e.html
      But we will stop developping gogo except fixing bugs.

 (6) LICENSE

  Copyright (C) 1999 PEN@MarineCat, shigeo
          Special Thanks to Keiichi SAKAI, URURI, Noisyu and Kei

   The patent laws about the ISO demonstration source are not applied
  in Japan now (99/11/11), so we release gogo with binary.
  But we will stop to do so according to circumstances. 

   Gogo-no-coda is based on LAME 3.29 beta and distributed under the
  LGPL. The modifications are distributed under the LGPL.


   You can use gogo in your commercial program under the restrictions
  of the LGPL.
  You can include a compiled version of gogo library (Ex. gogo.dll)
  with a commercial program.
  In your program, you can't include any source code from gogo, with
  the exception of files whose only purpose is to describe the library
  interface (such as musenc.h, musui.c). 
  Any modifications of gogo must be released under the LGPL. 
  You must give prominent notice that your program is:
    A. using gogo including version
    B. gogo is under the LGPL
    C. provide a copy of the LGPL
    D. provide a copy of gogo source, or a pointer where the gogo
       source can be obtained

 (7) NAMMING

  `GOGO-no-coder' is a parody of `GOGO no cotya da', which means afternoon
  tea in Japan. Please feel free :-P.

 (8) FAQ
  Q. I can't make gogo bacause of the error messages about pswapd.
  A.  Your NASM doesn't support Enhanced 3D Now!.
     Change E3DN=-DUSE_E3DN into #E3DN=-DUSE_E3DN in Makefile.
     See APPENDIX, too.

  Q. Can My system use (E)3D Now!/SSE/SMP?
  A.  You can see the answer if you use gogo with -debug option.
     3D Now! is available to WinChip2, K6-2, K6-III and Athlon on any OS.
     Enhanced 3D Now! is available to Athlon.
     SSE is available to PIII on WinNT/2000, Be and patched Linux.
     SMP is available on WinNT/2000, Linux, Be, Solaris and OS/2.

  Q. I want to encode many wave-files together.
  A.  for example, on tcsh,
     % foreach i (*.wav)
     % gogo $i
     % end

  Q. Why don't you follow the latest LAME?
  A.  It is impossible because gogo has been already quit different
     from LAME.
     Please use LAME if you want high-quality sound.

  Q. SMP performance is wrong in using stdin or Windows.
  A. On Windows, we program it against our will to support DLL.
     On Linux, you should use cdda2wav but cdparanoia because cdparanoia
     can't read and write simultaneously.

 (9) APPENDIX ( How to make NASM supporting Enhanced 3D Now! )

  Append the following source to insns.dat and make, and you get NASM which
  can assemble Enhanced 3D Now!.
  At own your RISK, get http://homepage1.nifty.com/herumi/soft/nasm098-e3dn.lzh
  for Windows. (NO WARRANTY!)

--- x8 --- x8 --- x8 --- x8 --- x8 --- x8 --- x8 --- x8 --- x8 --- x8 --- x8 --- x8 ---
PI2FD     mmxreg,mem          \301\2\x0F\x0F\110\01\x0D     PENT,3DNOW,SM
PI2FD     mmxreg,mmxreg       \2\x0F\x0F\110\01\x0D         PENT,3DNOW
PFNACC    mmxreg,mem          \301\2\x0F\x0F\110\01\x8A     PENT,3DNOW,SM
PFNACC    mmxreg,mmxreg       \2\x0F\x0F\110\01\x8A         PENT,3DNOW
PFPNACC   mmxreg,mem          \301\2\x0F\x0F\110\01\x8E     PENT,3DNOW,SM
PFPNACC   mmxreg,mmxreg       \2\x0F\x0F\110\01\x8E         PENT,3DNOW
PI2FW     mmxreg,mem          \301\2\x0F\x0F\110\01\x0C     PENT,3DNOW,SM
PI2FW     mmxreg,mmxreg       \2\x0F\x0F\110\01\x0C         PENT,3DNOW
PF2IW     mmxreg,mem          \301\2\x0F\x0F\110\01\x1C     PENT,3DNOW,SM
PF2IW     mmxreg,mmxreg       \2\x0F\x0F\110\01\x1C         PENT,3DNOW
PSWAPD    mmxreg,mem          \301\2\x0F\x0F\110\01\xBB     PENT,3DNOW,SM
PSWAPD    mmxreg,mmxreg       \2\x0F\x0F\110\01\xBB         PENT,3DNOW,SM
FFREEP    fpureg              \1\xDF\10\xC0                 PENT,3DNOW,FPU
--- x8 --- x8 --- x8 --- x8 --- x8 --- x8 --- x8 --- x8 --- x8 --- x8 --- x8 --- x8 ---


  shigeo@kurims.kyoto-u.ac.jp, http://homepage1.nifty.com/herumi/gogo_e.html
