shithub: aacenc

Download patch

ref: 8757a20d2b93d63236b8e7bb85df85596b75b238
parent: c3b6713ce9add1b13fa50d464eb8bf58e5accb33
author: menno <menno>
date: Thu Oct 11 05:53:44 EDT 2001

Structure changes to the CVS tree

diff: cannot open a/cooledit//null: file does not exist: 'a/cooledit//null' diff: cannot open b/plugins/cooledit//null: file does not exist: 'b/plugins/cooledit//null' diff: cannot open b/plugins/winamp//null: file does not exist: 'b/plugins/winamp//null' diff: cannot open b/plugins//null: file does not exist: 'b/plugins//null' diff: cannot open a/winamp//null: file does not exist: 'a/winamp//null'
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,95 +1,487 @@
+2001-10-07  menno
+	* common/libsndfile/src/common.h:
+	* common/libsndfile/src/sndfile.h:
+	* common/libsndfile/src/wav.h:
+	* lcc/Makefile:
+		Made faac build on free LCC compiler
+
+2001-09-28  menno
+	* libfaac/aacquant.c:
+	* libfaac/psych.c:
+		Small bugfixes
+
+2001-09-21  eraser
+	* include/faac.h:
+		in previous header version was set to 1.5, fixed, now version 1
+		9 as before.
+
+	* libfaac/psych.c:
+		added stdio.h in debug configuration, i dont like compiliers warning
+
+	* include/faac.h:
+	* libfaac/bitstream.c:
+	* libfaac/frame.c:
+	* libfaac/frame.h:
+		added raw output format support
+
+2001-09-09  menno
+	* libfaac/frame.c:
+	* libfaac/frame.h:
+	* libfaac/psych.c:
+	* libfaac/psych.h:
+		Stepped back to a MPEG type psychoacoustic model
+
+2001-09-07  menno
+	* include/faac.h:
+	* libfaac/frame.c:
+	* libfaac/frame.h:
+		Added creating of DecoderSpecificInfo
+
+2001-09-04  menno
+	* README:
+	* libfaac/backpred.c:
+	* libfaac/bitstream.c:
+	* libfaac/bitstream.h:
+	* libfaac/channels.c:
+	* libfaac/filtbank.c:
+	* libfaac/huffman.c:
+	* libfaac/huffman.h:
+	* libfaac/joint.c:
+	* libfaac/ltp.c:
+	* libfaac/tns.c:
+	* libfaac/tns.h:
+		Made FAAC legal :-)
+
 2001-08-03  menno
+	* cooledit/Config.c:
+	* cooledit/FAAD.DSP:
+	* cooledit/FAAD.rc:
+	* cooledit/Readme.txt:
+	* cooledit/aacinfo.c:
+	* cooledit/aacinfo.h:
+	* cooledit/bitmap1.bmp:
+	* cooledit/faac.c:
+	* cooledit/faad.c:
+	* cooledit/main.c:
+	* cooledit/resource.h:
+	* winamp/.cvsignore:
+	* winamp/AACINFO.C:
+	* winamp/AACINFO.H:
+	* winamp/Config.c:
+	* winamp/FAAC.H:
+	* winamp/FAAC.rc:
+	* winamp/FILTERS.H:
+	* winamp/Logo.bmp:
+	* winamp/OUT.H:
+	* winamp/Open.bmp:
+	* winamp/Out_faac.c:
+	* winamp/RESOURCE.H:
+	* winamp/ReadMe.txt:
+	* winamp/out_FAAC.dsp:
+	* winamp/out_FAAC.dsw:
 		Updated cooledit plugin
 		New winamp output plugin
 
 2001-07-12  menno
+	* cooledit/FAAD.rc:
+	* cooledit/Readme.txt:
+	* cooledit/aacinfo.c:
+	* cooledit/aacinfo.h:
+	* cooledit/faac.c:
+	* cooledit/faad.c:
+	* cooledit/faad.def:
+	* cooledit/main.c:
+	* cooledit/resource.h:
 		Major bugfixes to Cooledit filter
 		encoding now works
 
+	* libfaac/.cvsignore:
+	* libfaac/libfaac.def:
+	* libfaac/libfaac_dll.dsp:
+	* libfaac/libfaac_dll.dsw:
 		Added DLL project file for FAAC
 
 2001-07-08  menno
+	* libfaac/frame.c:
 		Small config bugfix
 
+	* cooledit/FAAD.DSP:
+	* cooledit/faacflt.dsp:
+	* cooledit/faacflt.dsw:
+	* cooledit/faad.def:
+	* cooledit/faad.dsw:
 		Fixed CoolEdit filter
 
+	* cooledit/FAAD.DSP:
 		Correct processor used
 
 2001-07-02  menno
+	* cooledit/faac.c:
+	* cooledit/faac.h:
+	* cooledit/faacflt.dsp:
+	* cooledit/faad.c:
+	* cooledit/faad.h:
 		Fixes for compiling CoolEdit filter
 
+	* cooledit/.cvsignore:
+	* cooledit/FAAD.rc:
+	* cooledit/Logo.bmp:
+	* cooledit/aacinfo.c:
+	* cooledit/aacinfo.h:
+	* cooledit/faac.c:
+	* cooledit/faac.h:
+	* cooledit/faacflt.dsp:
+	* cooledit/faacflt.dsw:
+	* cooledit/faad.c:
+	* cooledit/faad.h:
+	* cooledit/filters.h:
+	* cooledit/main.c:
+	* cooledit/resource.h:
 		Added CoolEdit filter
 
 2001-06-27  menno
+	* bootstrap:
+	* bootstrap:
 		Unix compile fix
 
 2001-06-25  menno
+	* frontend/main.c:
 		Fixed compilation problem
 
+	* README:
 		Compilation help
 
 2001-06-09  menno
+	* include/faac.h:
 		version number changed
 
+	* frontend/faac.dsp:
+	* frontend/main.c:
+	* frontend/usage.txt:
 		Big changes to command line encoder, now using getopt
 		NOTE: Options have changed, read usage.txt
 
+	* common/getopt/COPYING:
+	* common/getopt/getopt.c:
+	* common/getopt/getopt.h:
 		Added getopt
 
+	* TODO:
 		Another todo done ;-)
 
 2001-06-08  menno
+	* TODO:
+	* frontend/main.c:
+	* frontend/maingui.c:
+	* frontend/resource.h:
+	* include/faac.h:
+	* libfaac/aacquant.c:
+	* libfaac/aacquant.h:
+	* libfaac/backpred.c:
+	* libfaac/backpred.h:
+	* libfaac/bitstream.c:
+	* libfaac/bitstream.h:
+	* libfaac/channels.c:
+	* libfaac/channels.h:
+	* libfaac/coder.h:
+	* libfaac/fft.c:
+	* libfaac/filtbank.c:
+	* libfaac/filtbank.h:
+	* libfaac/frame.c:
+	* libfaac/frame.h:
+	* libfaac/huffman.c:
+	* libfaac/huffman.h:
+	* libfaac/hufftab.h:
+	* libfaac/joint.c:
+	* libfaac/joint.h:
+	* libfaac/ltp.c:
+	* libfaac/ltp.h:
+	* libfaac/psych.c:
+	* libfaac/psych.h:
+	* libfaac/tns.c:
+	* libfaac/tns.h:
+	* libfaac/util.c:
+	* todo.txt:
 		File renamed
 
+	* README:
 		Added README
 
+	* bootstrap:
 		Fixed linux compilation
 
 2001-06-06  menno
+	* include/faac.h:
+	* libfaac/bitstream.c:
+	* libfaac/bitstream.h:
 		(I hope I have) fixed MPEG4 compatibility once and for all ;-)
 
+	* include/faac.h:
 		version number upgraded
 
 2001-05-31  menno
+	* frontend/main.c:
 		Bugfix for linux
 
 2001-05-30  menno
+	* COPYING:
+	* frontend/faacgui.dsp:
+	* frontend/main.c:
+	* frontend/maingui.c:
+	* include/faac.h:
+	* libfaac/aacquant.c:
+	* libfaac/aacquant.h:
+	* libfaac/backpred.c:
+	* libfaac/backpred.h:
+	* libfaac/bitstream.c:
+	* libfaac/bitstream.h:
+	* libfaac/channels.c:
+	* libfaac/channels.h:
+	* libfaac/coder.h:
+	* libfaac/fft.c:
+	* libfaac/fft.h:
+	* libfaac/filtbank.c:
+	* libfaac/filtbank.h:
+	* libfaac/frame.c:
+	* libfaac/frame.h:
+	* libfaac/huffman.c:
+	* libfaac/huffman.h:
+	* libfaac/hufftab.h:
+	* libfaac/joint.c:
+	* libfaac/joint.h:
+	* libfaac/ltp.c:
+	* libfaac/ltp.h:
+	* libfaac/psych.h:
+	* libfaac/tns.c:
+	* libfaac/tns.h:
+	* libfaac/util.c:
+	* libfaac/util.h:
 		Changed license from GPL to LPGL
 
+	* include/faac.h:
 		Higher release version
 
+	* AUTHORS:
+	* NEWS:
+	* bootstrap:
+	* configure.in:
 		Fixed linux compilation
 
 2001-05-29  menno
+	* libfaac/bitstream.c:
 		Fixed bit counting, file length calculation works again
 
 2001-05-28  menno
+	* frontend/main.c:
+	* include/faac.h:
+	* libfaac/backpred.h:
+	* libfaac/frame.c:
 		Small bugfix in backward predictor
 
+	* libfaac/bitstream.c:
+	* libfaac/bitstream.h:
 		Changes for ISO MPEG4 compatibility (sorry :(( )
 		Old MPEG4 files with ADTS header will not be playable anymore
 
 2001-05-18  menno
+	* libfaac/backpred.c:
+	* libfaac/backpred.h:
+	* libfaac/coder.h:
+	* libfaac/util.c:
+	* libfaac/util.h:
+	* todo.txt:
 		Cleaned up backward prediction code
 
+	* docs/libfaac.pdf:
+	* include/faac.h:
 		Added encoder library interface documentation
 
 2001-05-11  oxygene2000
+	* Makefile:
+	* Makefile.am:
+	* bootstrap:
+	* configure.in:
+	* frontend/Makefile:
+	* frontend/Makefile.am:
+	* libfaac/Makefile:
+	* libfaac/Makefile.am:
 		- new makefile for unix-like systems (should also work with cygwin)
 		  based on autoconf/-make and libtool
 
 2001-05-09  menno
+	* faac_wingui.nsi:
 		Fixed NSIS install script to avoid warnings
 
+	* common/libsndfile/AUTHORS:
+	* common/libsndfile/COPYING:
+	* common/libsndfile/ChangeLog:
+	* common/libsndfile/INSTALL:
+	* common/libsndfile/MacOS/MacOS-readme.txt:
+	* common/libsndfile/MacOS/Makefile.am:
+	* common/libsndfile/MacOS/Makefile.in:
+	* common/libsndfile/MacOS/config.h:
+	* common/libsndfile/Makefile.am:
+	* common/libsndfile/Makefile.in:
+	* common/libsndfile/NEWS:
+	* common/libsndfile/README:
+	* common/libsndfile/TODO:
+	* common/libsndfile/Win32/Makefile.am:
+	* common/libsndfile/Win32/Makefile.in:
+	* common/libsndfile/Win32/README-Win32.txt:
+	* common/libsndfile/Win32/README-Win32.txt.old:
+	* common/libsndfile/Win32/config.h:
+	* common/libsndfile/Win32/libsndfile.dsp:
+	* common/libsndfile/Win32/libsndfile.dsw:
+	* common/libsndfile/Win32/unistd.h:
+	* common/libsndfile/acconfig.h:
+	* common/libsndfile/aclocal.m4:
+	* common/libsndfile/config.guess:
+	* common/libsndfile/config.sub:
+	* common/libsndfile/configure:
+	* common/libsndfile/configure.in:
+	* common/libsndfile/doc/ChangeLog:
+	* common/libsndfile/doc/Makefile.am:
+	* common/libsndfile/doc/Makefile.in:
+	* common/libsndfile/doc/NEWS:
+	* common/libsndfile/doc/api.html:
+	* common/libsndfile/doc/bugs.html:
+	* common/libsndfile/doc/index.html:
+	* common/libsndfile/doc/libsndfile.jpg:
+	* common/libsndfile/doc/sfinfo.html:
+	* common/libsndfile/examples/Makefile.am:
+	* common/libsndfile/examples/Makefile.in:
+	* common/libsndfile/examples/make_sine.c:
+	* common/libsndfile/examples/sfconvert.c:
+	* common/libsndfile/examples/sfhexdump.c:
+	* common/libsndfile/examples/sfinfo.c:
+	* common/libsndfile/examples/sndfile2oct.c:
+	* common/libsndfile/examples/wav32_aiff24.c:
+	* common/libsndfile/install-sh:
+	* common/libsndfile/libsndfile.spec:
+	* common/libsndfile/libsndfile.spec.in:
+	* common/libsndfile/ltconfig:
+	* common/libsndfile/ltmain.sh:
+	* common/libsndfile/m4/Makefile.am:
+	* common/libsndfile/m4/Makefile.in:
+	* common/libsndfile/missing:
+	* common/libsndfile/mkinstalldirs:
+	* common/libsndfile/reconf:
+	* common/libsndfile/src/G72x/ChangeLog:
+	* common/libsndfile/src/G72x/Makefile.am:
+	* common/libsndfile/src/G72x/Makefile.in:
+	* common/libsndfile/src/G72x/README:
+	* common/libsndfile/src/G72x/README.original:
+	* common/libsndfile/src/G72x/g721.c:
+	* common/libsndfile/src/G72x/g723_16.c:
+	* common/libsndfile/src/G72x/g723_24.c:
+	* common/libsndfile/src/G72x/g723_40.c:
+	* common/libsndfile/src/G72x/g72x.c:
+	* common/libsndfile/src/G72x/g72x.h:
+	* common/libsndfile/src/G72x/private.h:
+	* common/libsndfile/src/GSM610/COPYRIGHT:
+	* common/libsndfile/src/GSM610/ChangeLog:
+	* common/libsndfile/src/GSM610/Makefile.am:
+	* common/libsndfile/src/GSM610/Makefile.in:
+	* common/libsndfile/src/GSM610/README:
+	* common/libsndfile/src/GSM610/add.c:
+	* common/libsndfile/src/GSM610/code.c:
+	* common/libsndfile/src/GSM610/config.h:
+	* common/libsndfile/src/GSM610/decode.c:
+	* common/libsndfile/src/GSM610/gsm.h:
+	* common/libsndfile/src/GSM610/gsm_create.c:
+	* common/libsndfile/src/GSM610/gsm_decode.c:
+	* common/libsndfile/src/GSM610/gsm_destroy.c:
+	* common/libsndfile/src/GSM610/gsm_encode.c:
+	* common/libsndfile/src/GSM610/gsm_option.c:
+	* common/libsndfile/src/GSM610/long_term.c:
+	* common/libsndfile/src/GSM610/lpc.c:
+	* common/libsndfile/src/GSM610/preprocess.c:
+	* common/libsndfile/src/GSM610/private.h:
+	* common/libsndfile/src/GSM610/proto.h:
+	* common/libsndfile/src/GSM610/rpe.c:
+	* common/libsndfile/src/GSM610/short_term.c:
+	* common/libsndfile/src/GSM610/table.c:
+	* common/libsndfile/src/GSM610/unproto.h:
+	* common/libsndfile/src/Makefile.am:
+	* common/libsndfile/src/Makefile.in:
+	* common/libsndfile/src/aiff.c:
+	* common/libsndfile/src/alaw.c:
+	* common/libsndfile/src/alaw.h:
+	* common/libsndfile/src/au.c:
+	* common/libsndfile/src/au.h:
+	* common/libsndfile/src/au_g72x.c:
+	* common/libsndfile/src/common.c:
+	* common/libsndfile/src/common.h:
+	* common/libsndfile/src/config.h.in:
+	* common/libsndfile/src/newpcm.c:
+	* common/libsndfile/src/paf.c:
+	* common/libsndfile/src/pcm.c:
+	* common/libsndfile/src/pcm.h:
+	* common/libsndfile/src/raw.c:
+	* common/libsndfile/src/sfendian.h:
+	* common/libsndfile/src/sndfile.c:
+	* common/libsndfile/src/sndfile.h:
+	* common/libsndfile/src/stamp-h.in:
+	* common/libsndfile/src/svx.c:
+	* common/libsndfile/src/ulaw.c:
+	* common/libsndfile/src/ulaw.h:
+	* common/libsndfile/src/wav.c:
+	* common/libsndfile/src/wav.h:
+	* common/libsndfile/src/wav_float.c:
+	* common/libsndfile/src/wav_gsm610.c:
+	* common/libsndfile/src/wav_ima_adpcm.c:
+	* common/libsndfile/src/wav_ms_adpcm.c:
+	* common/libsndfile/tests/Makefile.am:
+	* common/libsndfile/tests/Makefile.in:
+	* common/libsndfile/tests/alaw_test.c:
+	* common/libsndfile/tests/double_test.c:
+	* common/libsndfile/tests/error_test.c:
+	* common/libsndfile/tests/lossy_comp_test.c:
+	* common/libsndfile/tests/read_seek_test.c:
+	* common/libsndfile/tests/sftest.c:
+	* common/libsndfile/tests/sfversion.c:
+	* common/libsndfile/tests/ulaw_test.c:
+	* common/libsndfile/tests/write_read_test.c:
+	* frontend/faac.dsp:
+	* frontend/faac.dsw:
+	* frontend/faacgui.dsp:
+	* frontend/faacgui.dsw:
+	* wingui/faac_wingui.dsp:
+	* wingui/faac_wingui.dsw:
 		Added libsndfile to the CVS tree, making compilation a lot easier
 
 2001-05-08  menno
+	* frontend/faac.dsp:
+	* frontend/faacgui.dsp:
+	* frontend/faacgui.rc:
+	* frontend/main.c:
+	* frontend/maingui.c:
+	* frontend/resource.h:
 		Better support for main profile in frontends
 
 2001-05-02  menno
+	* frontend/main.c:
+	* libfaac/backpred.c:
+	* libfaac/backpred.h:
+	* libfaac/bitstream.c:
+	* libfaac/bitstream.h:
+	* libfaac/coder.h:
+	* libfaac/frame.c:
+	* libfaac/libfaac.dsp:
+	* todo.txt:
 		Added support for MAIN AAC object type
 
 2001-04-29  flyingfox
+	* wingui/EncoderJob.cpp:
+	* wingui/EncoderJob.h:
+	* wingui/EncoderJobProcessingManager.cpp:
+	* wingui/EncoderJobProcessingManager.h:
+	* wingui/EncoderQualityPageDialog.cpp:
+	* wingui/EncoderQualityPageDialog.h:
+	* wingui/EncoderQualityPropertyPageContents.cpp:
+	* wingui/EncoderQualityPropertyPageContents.h:
+	* wingui/faac_wingui.rc:
+	* wingui/resource.h:
 		- disabled job list persistence (file format incompatibility)
 		- disabled job list multiple selection (property merging is not working properly anyway)
 		- added MPEG version support
@@ -97,139 +489,470 @@
 		- disabled LTP under MPEG version 2 (if LTP selected it will go back to LC)
 
 2001-04-27  flyingfox
+	* wingui/faac_wingui.dsp:
 		fixed debug build
 
+	* wingui/EncoderJobProcessingManager.cpp:
 		fixed compile error
 
 2001-04-19  menno
+	* frontend/faacgui.rc:
+	* frontend/main.c:
+	* frontend/maingui.c:
+	* frontend/resource.h:
+	* include/faac.h:
+	* libfaac/bitstream.c:
+	* libfaac/bitstream.h:
+	* libfaac/frame.c:
+	* libfaac/frame.h:
+	* libfaac/tns.c:
 		Changes in MPEG4 file format, mainly comments for clarification
 
 2001-04-11  menno
+	* frontend/faacgui.rc:
+	* frontend/main.c:
+	* frontend/maingui.c:
+	* include/faac.h:
+	* libfaac/bitstream.c:
+	* libfaac/bitstream.h:
+	* libfaac/coder.h:
+	* libfaac/frame.c:
+	* libfaac/frame.h:
+	* libfaac/ltp.c:
+	* libfaac/tns.c:
+	* wingui/EncoderJobProcessingManager.cpp:
+	* wingui/faac_wingui.rc:
 		Fixed MPEG4 object type problem
 
 2001-04-10  menno
+	* libfaac/tns.c:
 		Fixed another MPEG4/2 issue TNS order
 
+	* wingui/EncoderGeneralPageDialog.cpp:
+	* wingui/EncoderGeneralPageDialog.h:
+	* wingui/EncoderJob.cpp:
+	* wingui/EncoderJob.h:
+	* wingui/EncoderJobProcessingManager.cpp:
+	* wingui/EncoderJobProcessingManager.h:
+	* wingui/Job.cpp:
+	* wingui/Job.h:
+	* wingui/JobListUpdatable.h:
+	* wingui/PageCheckboxCtrlContent.cpp:
+	* wingui/PageCheckboxCtrlContent.h:
+	* wingui/PageComboBoxCtrlContent.cpp:
+	* wingui/PageComboBoxCtrlContent.h:
+	* wingui/PageEditCtrlContent.cpp:
+	* wingui/PageEditCtrlContent.h:
+	* wingui/PageRadioGroupCtrlContent.h:
+	* wingui/RecursiveDirectoryTraverser.cpp:
+	* wingui/RecursiveDirectoryTraverser.h:
+	* wingui/WindowUtil.cpp:
+	* wingui/WindowUtil.h:
+	* wingui/faac_wingui.dsp:
+	* wingui/faac_wingui.rc:
+	* wingui/faac_winguiDlg.cpp:
+	* wingui/faac_winguiDlg.h:
+	* wingui/resource.h:
 		Big update of GUI
 
 2001-04-03  menno
+	* libfaac/bitstream.c:
 		ADTS layer fixed for MPEG-4
 
+	* libfaac/bitstream.c:
 		Finally correct MPEG4 ADTS headers
 
+	* libfaac/bitstream.c:
 		Re: ADTS layer fixed for MPEG-4
 
 2001-04-01  xfhobbes
+	* wingui/AskCreateDirectoryDialog.cpp:
+	* wingui/AskCreateDirectoryDialog.h:
+	* wingui/JobProcessingDynamicUserInputInfo.cpp:
+	* wingui/JobProcessingDynamicUserInputInfo.h:
 		added general user input tracking during job list processing and
 		question for target directory creation where appropriate
 
+	* wingui/AbstractJob.cpp:
+	* wingui/AbstractJob.h:
 		improved progress counter; added general user input tracking
 		during job list processing; added column in the job list ctrl
 		to display the outcome of job processing
 
 2001-03-19  menno
+	* libfaac/frame.c:
 		Table data fix for 8kHz
 
+	* frontend/main.c:
+	* libfaac/bitstream.c:
 		Correct encoding of files other than 2 channel now
 
 2001-03-18  xfhobbes
+	* wingui/.cvsignore:
+	* wingui/AbstractJob.cpp:
+	* wingui/AbstractJob.h:
+	* wingui/EncoderGeneralPageDialog.cpp:
+	* wingui/EncoderJob.cpp:
+	* wingui/EncoderJob.h:
+	* wingui/EncoderJobProcessingManager.cpp:
+	* wingui/EncoderJobProcessingManager.h:
+	* wingui/FloatingPropertyDialog.cpp:
+	* wingui/FloatingPropertyDialog.h:
+	* wingui/Job.cpp:
+	* wingui/Listobj.cpp:
+	* wingui/ProcessJobStatusDialog.cpp:
+	* wingui/ProcessJobStatusDialog.h:
+	* wingui/ProcessJobStatusDialog2.cpp:
+	* wingui/ProcessJobStatusDialog2.h:
+	* wingui/ProcessingStatusDialogInfoFeedbackCallbackInterface.h:
+	* wingui/RecursiveDirectoryTraverser.cpp:
+	* wingui/RecursiveDirectoryTraverser.h:
+	* wingui/TItemList.h:
+	* wingui/faac_wingui.clw:
+	* wingui/faac_wingui.cpp:
+	* wingui/faac_wingui.dsp:
+	* wingui/faac_wingui.h:
+	* wingui/faac_wingui.rc:
+	* wingui/faac_winguiDlg.cpp:
+	* wingui/faac_winguiDlg.h:
+	* wingui/resource.h:
 		Major update: roughly consolidated filter job functionality, 
 		added shell open support and several other things, cleaned up
 		scc files and ignore list
 
+	* wingui/faac_winguiDlg.cpp:
 		Moved beep after completed processing from individual beep for
 		every job to a global one per processing command.
 
+	* wingui/EncoderJobProcessingManager.cpp:
+	* wingui/EncoderJobProcessingManager.h:
 		Rewrote DoProcessing() method to comply to rules of Hungarian
 		Notation and to common C++ code styles.
 
 2001-03-18  menno
+	* faac_wingui.nsi:
 		Changed NSIS installation script
 		now it supports opening of .jbl (joblist) files automatically
 
+	* faac_wingui.nsi:
 		Added NSIS (www.nullsoft.com) installation script
 
 2001-03-17  menno
+	* libfaac/bitstream.c:
+	* wingui/faac_wingui.clw:
 		Added MPEG2 AAC support (compile with MPEG2AAC defined)
 		make sure you don't use LTP when using MPEG2 AAC, because it is not supported in MPEG2 AAC
 
 2001-03-15  menno
+	* wingui/Listobj.cpp:
 		Small bugfix
 
 2001-03-14  menno
+	* wingui/.cvsignore:
+	* wingui/AbstractJob.cpp:
+	* wingui/AbstractJob.h:
+	* wingui/AbstractPageCtrlContent.cpp:
+	* wingui/AbstractPageCtrlContent.h:
+	* wingui/AbstractPropertyPageContents.cpp:
+	* wingui/AbstractPropertyPageContents.h:
+	* wingui/ConcreteJobBase.cpp:
+	* wingui/ConcreteJobBase.h:
+	* wingui/EncoderGeneralPageDialog.cpp:
+	* wingui/EncoderGeneralPageDialog.h:
+	* wingui/EncoderGeneralPropertyPageContents.cpp:
+	* wingui/EncoderGeneralPropertyPageContents.h:
+	* wingui/EncoderId3PageDialog.cpp:
+	* wingui/EncoderId3PageDialog.h:
+	* wingui/EncoderId3PropertyPageContents.cpp:
+	* wingui/EncoderId3PropertyPageContents.h:
+	* wingui/EncoderJob.cpp:
+	* wingui/EncoderJob.h:
+	* wingui/EncoderJobProcessingManager.cpp:
+	* wingui/EncoderJobProcessingManager.h:
+	* wingui/EncoderQualityPageDialog.cpp:
+	* wingui/EncoderQualityPageDialog.h:
+	* wingui/EncoderQualityPropertyPageContents.cpp:
+	* wingui/EncoderQualityPropertyPageContents.h:
+	* wingui/FaacWinguiProgramSettings.cpp:
+	* wingui/FaacWinguiProgramSettings.h:
+	* wingui/FileListQueryManager.cpp:
+	* wingui/FileListQueryManager.h:
+	* wingui/FileMaskAssembler.cpp:
+	* wingui/FileMaskAssembler.h:
+	* wingui/FilePathCalc.cpp:
+	* wingui/FilePathCalc.h:
+	* wingui/FileSerializable.cpp:
+	* wingui/FileSerializable.h:
+	* wingui/FileSerializableJobList.cpp:
+	* wingui/FileSerializableJobList.h:
+	* wingui/FloatingPropertyDialog.cpp:
+	* wingui/FloatingPropertyDialog.h:
+	* wingui/FolderDialog.cpp:
+	* wingui/FolderDialog.h:
+	* wingui/Id3TagInfo.cpp:
+	* wingui/Id3TagInfo.h:
+	* wingui/Job.cpp:
+	* wingui/Job.h:
+	* wingui/JobList.cpp:
+	* wingui/JobList.h:
+	* wingui/JobListCtrlDescribable.cpp:
+	* wingui/JobListCtrlDescribable.h:
+	* wingui/JobListUpdatable.cpp:
+	* wingui/JobListUpdatable.h:
+	* wingui/JobListsToConfigureSaver.cpp:
+	* wingui/JobListsToConfigureSaver.h:
+	* wingui/ListCtrlStateSaver.cpp:
+	* wingui/ListCtrlStateSaver.h:
+	* wingui/Listobj.cpp:
+	* wingui/PageCheckboxCtrlContent.cpp:
+	* wingui/PageCheckboxCtrlContent.h:
+	* wingui/PageComboBoxCtrlContent.cpp:
+	* wingui/PageComboBoxCtrlContent.h:
+	* wingui/PageEditCtrlContent.cpp:
+	* wingui/PageEditCtrlContent.h:
+	* wingui/PageRadioGroupCtrlContent.cpp:
+	* wingui/PageRadioGroupCtrlContent.h:
+	* wingui/ProcessJobStatusDialog.cpp:
+	* wingui/ProcessJobStatusDialog.h:
+	* wingui/ProcessJobStatusDialog2.cpp:
+	* wingui/ProcessJobStatusDialog2.h:
+	* wingui/ProcessingStartStopPauseInteractable.cpp:
+	* wingui/ProcessingStartStopPauseInteractable.h:
+	* wingui/ProcessingStatusDialogInfoFeedbackCallbackInterface.cpp:
+	* wingui/ProcessingStatusDialogInfoFeedbackCallbackInterface.h:
+	* wingui/PropertiesDummyParentDialog.cpp:
+	* wingui/PropertiesDummyParentDialog.h:
+	* wingui/PropertiesTabParentDialog.cpp:
+	* wingui/PropertiesTabParentDialog.h:
+	* wingui/ReadMe.txt:
+	* wingui/RecursiveDirectoryTraverser.cpp:
+	* wingui/RecursiveDirectoryTraverser.h:
+	* wingui/SourceTargetFilePair.cpp:
+	* wingui/SourceTargetFilePair.h:
+	* wingui/StdAfx.cpp:
+	* wingui/StdAfx.h:
+	* wingui/SupportedPropertyPagesData.cpp:
+	* wingui/SupportedPropertyPagesData.h:
+	* wingui/TItemList.cpp:
+	* wingui/TItemList.h:
+	* wingui/WindowUtil.cpp:
+	* wingui/WindowUtil.h:
+	* wingui/faac_wingui.clw:
+	* wingui/faac_wingui.cpp:
+	* wingui/faac_wingui.dsp:
+	* wingui/faac_wingui.dsw:
+	* wingui/faac_wingui.h:
+	* wingui/faac_wingui.rc:
+	* wingui/faac_winguiDlg.cpp:
+	* wingui/faac_winguiDlg.h:
+	* wingui/listobj.h:
+	* wingui/res/faac_wingui.ico:
+	* wingui/res/faac_wingui.rc2:
+	* wingui/res/toolbarm.bmp:
+	* wingui/resource.h:
 		New GUI application
 
 2001-03-13  menno
+	* frontend/.cvsignore:
+	* libfaac/.cvsignore:
 		Updated .cvsignore
 
 2001-03-12  menno
+	* frontend/faac.dsp:
+	* frontend/faacgui.dsp:
+	* frontend/maingui.c:
+	* libfaac/aacquant.c:
+	* libfaac/bitstream.c:
+	* libfaac/fft.c:
+	* libfaac/filtbank.c:
+	* libfaac/frame.c:
+	* libfaac/huffman.c:
+	* libfaac/libfaac.dsp:
+	* libfaac/ltp.c:
+	* libfaac/psych.c:
+	* libfaac/tns.c:
+	* libfaac/util.h:
 		cleanup
 
+	* frontend/main.c:
+	* frontend/maingui.c:
+	* include/faac.h:
+	* libfaac/frame.c:
+	* libfaac/frame.h:
 		Small change in API
 
 2001-03-06  menno
+	* libfaac/aacquant.c:
+	* libfaac/frame.c:
+	* libfaac/frame.h:
+	* libfaac/joint.c:
+	* libfaac/joint.h:
+	* libfaac/psych.c:
 		Fix in reconstruction of spectrum before LTP buffer update
 
+	* frontend/faac.dsp:
+	* frontend/faacgui.dsp:
+	* frontend/faacgui.rc:
+	* frontend/main.c:
+	* frontend/maingui.c:
+	* frontend/resource.h:
+	* libfaac/psych.c:
 		-added profile selection
 		-some cleanup
 
 2001-03-05  menno
+	* frontend/faac.dsp:
+	* frontend/faacgui.rc:
+	* frontend/main.c:
+	* frontend/maingui.c:
+	* frontend/resource.h:
+	* include/faac.h:
+	* libfaac/aacquant.c:
+	* libfaac/aacquant.h:
+	* libfaac/bitstream.c:
+	* libfaac/coder.h:
+	* libfaac/filtbank.c:
+	* libfaac/filtbank.h:
+	* libfaac/frame.c:
+	* libfaac/frame.c:
+	* libfaac/frame.h:
+	* libfaac/libfaac.dsp:
+	* libfaac/ltp.c:
+	* libfaac/ltp.h:
+	* todo.txt:
 		Added LTP
 		Needs some more refinement, but it works
 
+	* frontend/faac.dsp:
+	* frontend/maingui.c:
+	* frontend/usage.txt:
+	* libfaac/ltp.c:
 		LTP speedup
 
 2001-03-05  oxygene
+	* libfaac/Makefile:
 		Updated for LTP
 
+	* libfaac/tns.c:
 		Included math.h for math functions in linux.
 
 2001-03-02  menno
+	* frontend/main.c:
 		unix fix
 
 2001-03-01  menno
+	* frontend/main.c:
 		unix fix
 
 2001-03-01  oxygene
+	* frontend/Makefile:
+	* libfaac/Makefile:
 		Added support for TNS, fixed a typo
 
+	* Makefile:
+	* frontend/Makefile:
+	* libfaac/Makefile:
 		Install and uninstall target added. Small change
 
 2001-02-28  menno
+	* include/faac.h:
+	* libfaac/aacquant.c:
+	* libfaac/bitstream.c:
+	* libfaac/bitstream.h:
+	* libfaac/channels.c:
+	* libfaac/channels.h:
+	* libfaac/coder.h:
+	* libfaac/filtbank.c:
+	* libfaac/filtbank.h:
+	* libfaac/frame.c:
+	* libfaac/frame.h:
+	* libfaac/joint.c:
+	* libfaac/libfaac.dsp:
+	* libfaac/psych.c:
+	* libfaac/psych.h:
+	* libfaac/tns.c:
+	* libfaac/tns.h:
+	* libfaac/util.c:
+	* libfaac/util.h:
 		- added TNS support
 		- some other cleanups
 
+	* frontend/faacgui.rc:
+	* frontend/main.c:
+	* frontend/maingui.c:
+	* frontend/resource.h:
 		Support for TNS in frontends
 
 2001-02-26  oxygene
+	* libfaac/channels.h:
 		Added min() function for unix
 
+	* libfaac/psych.h:
 		Added min() and max() functions for unix
 
+	* libfaac/util.c:
 		Included math.h to make unix compiler happy
 
+	* frontend/main.c:
 		Added min() function for unix.
 
 2001-02-25  menno
+	* frontend/faacgui.dsp:
+	* frontend/maingui.c:
+	* libfaac/filtbank.c:
+	* libfaac/filtbank.h:
+	* libfaac/kbd_win.h:
 		Added calculation of KBD window
 
 2001-02-12  menno
+	* frontend/faac.dsp:
+	* frontend/faacgui.dsp:
+	* frontend/maingui.c:
+	* frontend/resource.h:
+	* libfaac/frame.c:
+	* libfaac/psych.c:
+	* libfaac/psych.h:
+	* libfaac/util.c:
+	* libfaac/util.h:
 		Different MS switching model
 
 2001-02-10  menno
+	* libfaac/frame.c:
+	* libfaac/util.c:
+	* libfaac/util.h:
 		- Fixed scalefactor bandwidths (Thanks again to Ivan)
 		- Better checking of configuration
 
 2001-02-09  menno
+	* libfaac/frame.c:
 		Scalefactor bandwidth update (Thanks to Ivan)
 
 2001-02-08  menno
+	* libfaac/frame.c:
 		Fixed scalefactorband data (thanks to Ivan)
 
 2001-02-05  menno
+	* frontend/main.c:
 		changed LINUX -> __unix__
 
 2001-02-04  oxygene2000
+	* Makefile:
+	* frontend/.cvsignore:
+	* frontend/Makefile:
+	* frontend/main.c:
+	* libfaac/.cvsignore:
+	* libfaac/Makefile:
+	* libfaac/aacquant.c:
+	* libfaac/bitstream.c:
+	* libfaac/channels.h:
+	* libfaac/coder.h:
+	* libfaac/fft.c:
+	* libfaac/filtbank.h:
+	* libfaac/frame.h:
+	* libfaac/huffman.c:
+	* libfaac/psych.c:
+	* libfaac/psych.h:
+	* libfaac/util.c:
 		- new Makefiles
 		- .cvsignore for a cleaner cvs-output
 		- // xyz -> /* xyz */ for ansi-c compliance
@@ -236,190 +959,494 @@
 		- minor fixes to work on linux
 
 2001-02-01  menno
+	* libfaac/frame.c:
+	* libfaac/psych.c:
 		Fixed memory leakage
 
 2001-01-31  menno
+	* libfaac/frame.c:
+	* libfaac/libfaac.dsp:
+	* libfaac/psych.c:
+	* libfaac/psych.h:
 		Completely new psychoacoustic model
 
 2001-01-25  menno
+	* frontend/maingui.c:
 		Encoding now done in a thread. Plus some other small changes.
 
+	* frontend/maingui.c:
 		Small changes
 
 2001-01-24  menno
+	* frontend/faacgui.rc:
+	* frontend/maingui.c:
+	* frontend/resource.h:
 		Minor changes to GUI
 
 2001-01-23  menno
+	* libfaac/joint.c:
+	* libfaac/joint.h:
 		Fix to remove compiler warnings
 
+	* frontend/faacgui.dsp:
+	* frontend/faacgui.dsw:
+	* frontend/faacgui.rc:
+	* frontend/maingui.c:
+	* frontend/resource.h:
+	* todo.txt:
 		Added graphical user interface
 
+	* libfaac/bitstream.c:
+	* libfaac/bitstream.h:
+	* libfaac/frame.c:
+	* libfaac/frame.h:
+	* todo.txt:
 		ADTS headers supported
 
 2001-01-19  menno
+	* libfaac/psych.c:
 		Changed ATH formula
 
+	* libfaac/aacquant.c:
+	* libfaac/huffman.c:
+	* libfaac/huffman.h:
 		Speedup in huffman coder
 
 2001-01-17  menno
+	* frontend/main.c:
+	* frontend/usage.txt:
+	* include/faac.h:
+	* libfaac/filtbank.c:
+	* libfaac/filtbank.h:
+	* libfaac/frame.c:
+	* libfaac/frame.h:
+	* todo.txt:
 		Added frequency cut off filter
 
 2000-12-04  menno
+	* faac.c:
 		Changed usage message a bit
 
 2000-11-10  menno
+	* enc_tf.c:
+	* psych.c:
+	* quant.c:
+	* quant.h:
 		Bugfix in psychoacoustics and window shape switching changed
 
 2000-11-07  menno
+	* enc_tf.c:
+	* quant.c:
+	* quant.h:
 		Quantizer update. No more quantizer crashes
 
 2000-11-01  menno
+	* aac_se_enc.c:
+	* enc_tf.c:
+	* ltp_enc.c:
+	* ltp_enc.h:
+	* mc_enc.c:
+	* mc_enc.h:
+	* ms.c:
+	* ms.h:
+	* psych.c:
+	* psych.h:
+	* quant.c:
+	* quant.h:
+	* tns.c:
+	* tns.h:
 		Code reorganisation
 
 2000-10-31  menno
+	* enc_tf.c:
+	* interface.h:
+	* psych.c:
+	* psych.h:
+	* quant.h:
 		Cleanup: more sensible organisation
 
 2000-10-08  menno
+	* enc_tf.c:
+	* psych.c:
+	* psych.h:
 		Bugfixed and commented psychoacoustic module
 
+	* tables.h:
 		Removed unused file
 
 2000-10-06  menno
+	* Makefile:
+	* aac_se_enc.c:
+	* aac_se_enc.h:
+	* bitstream.c:
+	* enc_tf.c:
+	* faac.dsp:
+	* faac_dll.dsp:
+	* huffman.c:
+	* huffman.h:
+	* interface.h:
+	* ltp_enc.c:
+	* ltp_enc.h:
+	* nok_ltp_common.h:
+	* nok_ltp_common_internal.h:
+	* nok_ltp_enc.c:
+	* nok_ltp_enc.h:
+	* nok_pitch.c:
+	* nok_pitch.h:
+	* psych.c:
+	* pulse.c:
+	* quant.c:
+	* quant.h:
+	* tns.c:
+	* tns.h:
+	* transfo.c:
 		Code cleanup
 
 2000-10-05  menno
+	* aac_se_enc.c:
+	* aac_se_enc.h:
+	* aacenc.h:
+	* all.h:
+	* bitstream.c:
+	* block.h:
+	* enc.h:
+	* enc_tf.c:
+	* fastfft.h:
+	* huffman.c:
+	* huffman.h:
+	* interface.h:
+	* mc_enc.h:
+	* ms.h:
+	* nok_ltp_common.h:
+	* nok_ltp_enc.c:
+	* nok_ltp_enc.h:
+	* nok_pitch.c:
+	* psych.c:
+	* psych.h:
+	* quant.c:
+	* quant.h:
+	* tf_main.h:
+	* tns.c:
+	* tns.h:
+	* transfo.c:
+	* transfo.h:
 		Big code cleanup
 
+	* aac_se_enc.c:
+	* aac_se_enc.h:
+	* aacenc.h:
+	* all.h:
+	* bitstream.c:
+	* bitstream.h:
+	* block.h:
+	* enc.h:
+	* enc_tf.c:
+	* encoder.c:
+	* faac.c:
+	* fastfft.c:
+	* fastfft.h:
+	* huffman.c:
+	* huffman.h:
+	* hufftab5.h:
+	* interface.h:
+	* mc_enc.c:
+	* mc_enc.h:
+	* ms.c:
+	* ms.h:
+	* nok_ltp_common.h:
+	* nok_ltp_common_internal.h:
+	* nok_ltp_enc.c:
+	* nok_ltp_enc.h:
+	* nok_pitch.c:
+	* nok_pitch.h:
+	* psych.c:
+	* psych.h:
+	* pulse.c:
+	* pulse.h:
+	* quant.c:
+	* quant.h:
+	* shape_win.h:
+	* tf_main.h:
+	* tns.c:
+	* tns.h:
+	* transfo.c:
+	* transfo.h:
 		Copyright message cleanup. CVS keywords added
 
 2000-10-04  menno
+	* encoder.c:
 		Wrong bits per frame got calculated
 
+	* enc_tf.c:
+	* nok_ltp_enc.c:
+	* psych.c:
+	* rateconv.c:
 		LFE is now also working correctly
 
 2000-10-03  menno
+	* enc_tf.c:
+	* encoder.c:
+	* faac.c:
+	* nok_ltp_enc.c:
+	* psych.c:
+	* rateconv.c:
+	* tf_main.h:
 		Multichannel fixes. All working now, except LFE channels
 
 2000-10-01  menno
+	* enc_tf.c:
+	* psych.c:
 		Small fix in LFE frequency cut-off
 
+	* aacenc.h:
+	* enc_tf.c:
+	* encoder.c:
+	* faac.c:
+	* mc_enc.c:
+	* mc_enc.h:
+	* psych.c:
 		Encoder LFE fixup. Should be working now, but no way to test it
 		yet.
 
 2000-09-30  menno
+	* quant.c:
 		Some variable names changed (purely cosmetic)
 
 2000-09-28  menno
+	* encoder.c:
 		Release updates
 
 2000-09-25  menno
+	* psych.c:
 		Small changes
 
+	* enc_tf.c:
+	* quant.c:
 		Added VBR quantizer (but not working yet)
 
 2000-08-24  menno
+	* psych.c:
+	* quant.c:
 		Cleanup and small quality update
 
+	* psych.c:
+	* psych.h:
 		Fixed a bug in MS threshold calculation
 
 2000-08-23  menno
+	* encoder.c:
+	* psych.c:
 		Different bark formula
 
 2000-08-20  menno
+	* Makefile:
 		Fixed Makefile
 
 2000-08-11  menno
+	* enc_tf.c:
+	* ms.c:
+	* psych.c:
 		Bugfixes and multichannel updates
 
+	* psych.c:
 		removed some redundant code
 
 2000-08-10  menno
+	* faac.dsp:
+	* faac_dll.dsp:
+	* psych.h:
 		Cleanup
 
+	* ms.c:
+	* psych.c:
 		bugfix
 
+	* is.c:
+	* is.h:
 		removed IS
 
 2000-08-08  menno
+	* aacenc.h:
+	* all.h:
+	* enc_tf.c:
+	* encoder.c:
+	* faac.c:
+	* ms.c:
+	* ms.h:
+	* quant.c:
 		Removed IS. It is useless
 
+	* enc_tf.c:
+	* ms.c:
+	* ms.h:
+	* psych.c:
+	* psych.h:
 		Changed for multichannel support. And big cleanup
 
+	* mc_enc.c:
+	* mc_enc.h:
 		Changed for multichannel support
 
 2000-07-22  prkoat
+	* encoder.c:
+	* faac.c:
 		Support for SCE (mono files)
 
 2000-05-18  menno
+	* enc_tf.c:
+	* psych.c:
+	* psych.h:
 		Tuned short block switching
 
 2000-05-16  menno
+	* encoder.c:
 		First go at multichannel support (not working at all, yet)
 
 2000-04-05  oxygene2000
+	* pulse.h:
 		- Cosmetic change (gcc complains about missing newline at EOF)
 
+	* Makefile:
+	* huffman.h:
+	* psych.h:
 		- Made it compile with gcc/linux again
 
+	* faac.c:
 		 With -DLINUX faac shows the cpu-time needed to encode not real
 		time, therefore better measurement is possible
 
 2000-03-29  menno
+	* enc_tf.c:
+	* psych.c:
+	* quant.c:
 		Quality update
 
 2000-03-28  menno
+	* aac_qc.c:
+	* aac_qc.h:
+	* aac_se_enc.c:
+	* aac_se_enc.h:
+	* enc_tf.c:
+	* faac.dsp:
+	* faac_dll.dsp:
+	* huffman.c:
+	* huffman.h:
+	* is.h:
+	* ms.h:
+	* pulse.c:
+	* quant.c:
+	* quant.h:
 		Separated quantization and noiseless coding
 
+	* encoder.c:
+	* faac.c:
 		Made TNS default again
 
+	* huffman.c:
+	* huffman.h:
+	* quant.c:
+	* quant.h:
 		Moved a function
 
+	* quant.c:
 		Small change
 
 2000-03-23  lenox
+	* aac_se_enc.c:
+	* enc_tf.c:
 		restored gain control bits in the stream
 
 2000-03-22  lenox
+	* aacenc.h:
+	* encoder.c:
+	* faac.c:
 		added new parameters for 'block' mode
 
 2000-03-17  lenox
+	* aacenc.h:
+	* encoder.c:
+	* faac.c:
 		removed function faac_EncodeFinish()
 
 2000-03-13  lenox
+	* aacenc.h:
+	* encoder.c:
 		added support for block input (for DLL interface without input
 		files)
 
 2000-03-12  lenox
+	* aac_qc.c:
+	* aac_se_enc.c:
+	* enc_tf.c:
+	* encoder.c:
+	* faac.c:
 		removed gain control & changed win32 defines
 
 2000-03-02  lenox
+	* aac_qc.c:
 		new quantizer code for other than VC and BCB compilers
 
+	* aac_qc.c:
 		added gcc asm code
 
 2000-02-28  lenox
+	* aac_qc.c:
+	* aac_qc.h:
+	* aac_se_enc.c:
+	* aac_se_enc.h:
+	* enc_tf.c:
+	* is.c:
+	* is.h:
+	* ms.c:
+	* ms.h:
+	* nok_ltp_enc.c:
+	* nok_pitch.c:
+	* nok_pitch.h:
+	* psych.c:
+	* psych.h:
+	* tns.c:
 		huge cleanup (for unused parameters and vars)
 
+	* faac.c:
 		slightly changed arg parsing
 
+	* ms.c:
+	* transfo.c:
 		improved readability of the code
 
+	* block.h:
+	* enc_tf.c:
+	* nok_ltp_common.h:
+	* nok_ltp_enc.c:
+	* nok_ltp_enc.h:
+	* tns.c:
 		removed unused parameters
 
+	* aac_qc.c:
 		added BC asm compatibility
 
 2000-02-28  menno
+	* aac_se_enc.c:
 		Bugfix
 
 2000-02-27  menno
+	* aac_qc.c:
 		Changed short block quantization
 
 2000-02-24  menno
+	* psych.c:
 		Now using LAME's mid/side threshold calculation
 
 2000-02-24  thebard
+	* Makefile:
+	* psych.c:
 		Removed remainign thread and semephore code
 
+	* Makefile:
+	* all.h:
+	* profiling.txt:
+	* psych.c:
+	* psych.h:
 		After more compilation, there is not any function thats taking
 		more than 10% of the total time (see the profile graph) For fun
 		I added threads to psy6, but since its only 7 seconds, the
@@ -427,94 +1454,180 @@
 		will suck on non multiple cpu boxes, so I removed it.
 
 2000-02-23  lenox
+	* encoder.c:
+	* faac.c:
 		fixed wildcards processing
 
 2000-02-23  thebard
+	* Makefile:
+	* profiling.txt:
 		Now encoding faster than realtime with suggested compiler
 		options in Makefile. Still alot of room left for assembler and
 		or thread tweaking.
 
+	* psych.c:
+	* psych.h:
 		Alterations so that we can thread functions for multiple CPU's
 
+	* Makefile:
+	* profiling.txt:
 		Got run time down 100%. It looks like gcc is starving registers or causing
 		mosterous cache misses. More to come.
 
 2000-02-23  menno
+	* psych.c:
+	* tns.c:
 		Quality update
 
+	* Makefile:
+	* enc_tf.c:
+	* faac.dsp:
+	* faac_dll.dsp:
+	* winswitch.c:
+	* winswitch.h:
 		Removed winswitch.c
 
 2000-02-22  thebard
+	* profiling.txt:
 		Added the profiling text file.
 
+	* aac_qc.c:
+	* profiling.txt:
 		inlined output_bits, not that it matters much in performance...
 
+	* Makefile:
+	* nok_ltp_enc.c:
+	* profiling.txt:
 		Macroized double_to_int. Shaved off a few seconds (avoided all
 		the function call overhead)
 
+	* Makefile:
+	* faac.c:
 		Makefile changes for default compile and nots on options, Also
 		added an include so that faac.c links.
 
+	* faac.c:
 		Changes the ending return to an exit so we can profile.
 
+	* faac.c:
 		Timer now works correctly for unix.
 
 2000-02-22  menno
+	* enc_tf.c:
 		Made ADTS quality same as other files quality
 
 2000-02-19  lenox
+	* aacenc.h:
+	* encoder.c:
 		restructure
 
+	* Makefile:
+	* faac.c:
+	* faac.dsp:
+	* faac_dll.dsp:
 		added faac.c
 
 2000-02-19  oxygene
+	* Makefile:
 		Uninstall target added
 
 2000-02-18  lenox
+	* aac_qc.c:
+	* nok_ltp_enc.c:
+	* rateconv.c:
+	* rateconv.h:
 		cleanup
 
+	* aacenc.h:
+	* enc.h:
+	* enc_tf.c:
+	* encoder.c:
 		new interface functions
 
 2000-02-18  menno
+	* faac_dll.dsp:
 		Added libsndfile.lib
 
 2000-02-17  lenox
+	* enc_tf.c:
+	* encoder.c:
 		added support for all headers
 
 2000-02-17  menno
+	* aac_se_enc.c:
 		Removed some debug code
 
+	* aac_qc.c:
+	* aac_se_enc.c:
+	* enc_tf.c:
+	* nok_ltp_enc.c:
 		Bugfixes for bit counting
 
 2000-02-16  oxygene
+	* Makefile:
 		Install target added.
 
 2000-02-15  lenox
+	* aacenc.h:
+	* enc.h:
+	* enc_tf.c:
+	* encoder.c:
 		restructure (aacconfig eliminated)
 
+	* aacenc.h:
+	* encoder.c:
 		new parsing function
 
 2000-02-15  menno
+	* aacenc.h:
+	* encoder.c:
 		Made DLL compile
 
+	* aacenc.h:
 		Fixed DLL
 
+	* aac_qc.c:
+	* aac_qc.h:
+	* aac_se_enc.c:
+	* aac_se_enc.h:
+	* bitstream.c:
+	* bitstream.h:
+	* enc_tf.c:
+	* encoder.c:
 		Added ADTS header writing
 
 2000-02-14  lenox
+	* enc_tf.c:
+	* fastfft.c:
+	* psych.c:
+	* transfo.c:
+	* transfo.h:
 		new rft (reference to fftw removed, sorry :) )
 
+	* rdft.h:
+	* rdft_spectrum.c:
+	* rdft_spectrum2.c:
 		removed rdft due to new real fft
 
+	* Makefile:
+	* faac.dsp:
+	* faac_dll.dsp:
 		removed rdft stuff
 
 2000-02-09  lenox
+	* rdft.h:
 		fix to use without fttw
 
 2000-02-09  oxygene2000
+	* encoder.c:
+	* rdft.h:
+	* rdft_spectrum.c:
+	* rdft_spectrum2.c:
 		Added additional implementation of rdft using fftw (from rank 1 to rank
 		>20 in my profiler = a lot faster)
 
+	* rdft.h:
+	* rdft_spectrum2.c:
 		Added fixed fftw-stuff. Use rdft_spectrum2.c instead of rdft_spectrum.c
 		and set -DUSE_FFTW in Makefile to enable it..
 		Be sure that you have libfftw installed
@@ -521,294 +1634,569 @@
 		fftw_init() and fftw_destroy() have to be placed elsewhere
 		(should only be run once in the program -> speed)
 
+	* rdft_spectrum2.c:
 		Another mistake, argh!
 
+	* enc_tf.c:
+	* rdft_spectrum2.c:
 		Placed fftw_init/destroy where they have to be
 		Removed transfo.h as it isn't needed
 		Added rdft.h
 
 2000-02-09  menno
+	* encoder.c:
 		Restored small mistakes.
 
 2000-02-08  lenox
+	* enc_tf.c:
+	* fastfft.c:
+	* kbd_win.h:
+	* psych.c:
+	* shape_win.h:
+	* tf_main.h:
+	* transfo.c:
+	* transfo.h:
 		removed old FFT & some restucture
 
 2000-02-08  menno
+	* nok_pitch.c:
 		Made advantage of Oxygene2000's optimization, to use more
 		accurate delay estimation
 
+	* aac_qc.c:
 		Better quantization of short blocks
 
 2000-02-08  oxygene2000
+	* psych.c:
 		really small speed-up in psy_step6
 
+	* enc_tf.c:
 		Why calculating sqrt(2) if it is present as constant?
 
 2000-02-07  oxygene2000
+	* psych.c:
 		Another speedup by solving calculations into something more
 		simple but equivalent
 
+	* Makefile:
 		Fixed missing dependency rateconv.c
 
+	* nok_pitch.c:
 		Speeded up estimate_delay
 
+	* psych.c:
 		Commented out unused loop
 
+	* Makefile:
 		Made more variables to tune gcc
 
 2000-02-07  lenox
+	* encoder.c:
 		some cleanup
 
+	* dolby_def.h:
+	* dolby_win.h:
 		cleanup
 
+	* all.h:
+	* block.h:
+	* enc_tf.c:
+	* nok_ltp_enc.c:
+	* tf_main.h:
+	* transfo.c:
 		added support for different window shapes
 
+	* transfo.c:
 		bugfix
 
+	* rdft_spectrum.c:
 		fixed bug with atan2()
 
+	* kbd_win.h:
 		added kbd window tables
 
 2000-02-07  menno
+	* enc_tf.c:
+	* psych.c:
+	* psych.h:
 		Changed last changes back, they made no difference
 
+	* psych.c:
 		Bug fix
 
+	* psych.c:
 		Change in window switching parameters
 
+	* encoder.c:
 		Changed command line (TNS is now off by default)
 
+	* aac_qc.h:
+	* enc_tf.c:
 		One step closer to window shape switching
 
+	* enc_tf.c:
+	* psych.c:
+	* psych.h:
 		Bugs fixed in psych
 
+	* psych.c:
 		Same change to short blocks as oxy2000 made to long blocks
 
 2000-02-06  menno
+	* psych.c:
 		Quite some bug fixes
 
+	* aac_qc.c:
 		Speedup
 
 2000-02-05  menno
+	* aac_qc.c:
+	* psych.c:
 		Psych changed and pulse coding updated
 
+	* enc_tf.c:
+	* psych.c:
 		SMR values were one frame ahead of data. Big quality
 		improvement.
 
+	* enc_tf.c:
+	* psych.c:
 		Bugfixes
 
+	* ms.h:
 		Fixed lower bitrates (continued)
 
+	* aac_qc.c:
+	* tns.c:
 		More fixes
 
+	* aac_qc.c:
+	* enc_tf.c:
+	* is.h:
+	* ms.c:
 		Fixed lower bitrate encoding
 
 2000-02-04  menno
+	* Makefile:
+	* faac.dsp:
+	* faac_dll.dsp:
+	* psych.c:
+	* rdft_spectrum.c:
 		Psycho speedup
 
+	* psych.c:
 		Fixed mistake. This caused a very bad sound
 
+	* aac_qc.c:
+	* aac_qc.h:
 		Bugs fixed
 
+	* enc_tf.c:
+	* psych.c:
 		Window switching back to old
 
 2000-02-03  menno
+	* encoder.c:
 		Printing options to screen
 
+	* aac_qc.c:
 		bugfix for blocks with only 0's
 
 2000-02-02  menno
+	* bitstream.c:
+	* psych.c:
 		Bug fixes
 
+	* aac_qc.c:
+	* psych.c:
 		Serious bugfixes and speedups
 
+	* aac_qc.c:
 		Big quantizer change
 
 2000-01-31  lenox
+	* rateconv.c:
 		cleanup
 
+	* transfo.c:
 		bugfix & cleanup
 
 2000-01-31  menno
+	* enc_tf.c:
+	* psych.c:
 		Reduced psycho complexity (same result)
 
 2000-01-30  menno
+	* psych.c:
 		FFT change (cleanup)
 
 2000-01-29  lenox
+	* Makefile:
+	* faac.dsp:
+	* faac_dll.dsp:
 		removed imdct.c
 
+	* enc_tf.c:
+	* nok_ltp_enc.c:
+	* tf_main.h:
+	* transfo.c:
 		changed T/F transformation
 
 2000-01-27  menno
+	* Makefile:
+	* enc_tf.c:
+	* faac.dsp:
+	* faac_dll.dsp:
+	* winswitch.c:
+	* winswitch.h:
 		New block switching (sounds bad for now)
 
 2000-01-24  lenox
+	* enc_tf.c:
 		removed unneeded stuff for LTP off
 
 2000-01-24  menno
+	* enc_tf.c:
+	* ms.c:
 		Unneeded calls to functions removed
 
+	* encoder.c:
 		Command line parsing fixed
 
 2000-01-21  menno
+	* encoder.c:
 		Bug fix
 
+	* encoder.c:
 		Version upgraded
 
 2000-01-19  menno
+	* enc_tf.c:
+	* encoder.c:
 		LTP fixed and some other bugs.
 
 2000-01-18  menno
+	* psych.c:
 		Fixed encoding of some samplerates
 
+	* encoder.c:
 		Oops
 
+	* aacenc.h:
+	* enc_tf.c:
+	* encoder.c:
+	* imdct.c:
+	* tf_main.h:
 		Added frequency cut-off option (-c)
 
 2000-01-17  menno
+	* aac_qc.c:
+	* aacenc.h:
+	* enc_tf.c:
+	* encoder.c:
+	* faac.dsp:
+	* faac_dll.dsp:
+	* rateconv.c:
+	* rateconv.h:
 		Added sampling rate conversion (-s), buggy with some sample rates
 
 2000-01-14  menno
+	* aac_qc.c:
+	* aacenc.h:
+	* enc_tf.c:
+	* encoder.c:
 		First attempt at doing PNS (use -pns). Also every bitrate
 		higher than 16kbps is now supported in step of 1kbps
 
 2000-01-12  menno
+	* imdct.c:
 		Cleanup
 
 2000-01-10  menno
+	* enc_tf.c:
 		Small fix
 
+	* tf_main.h:
 		Added support for all sampling rates
 
+	* psych.c:
+	* psych.h:
 		All psycho values now calculated by formulas
 
+	* psych.c:
 		Full support of all sample rates, and some other fixes
 
 2000-01-09  lenox
+	* faac.dsp:
+	* faac_dll.dsp:
 		new dirs for output
 
 2000-01-09  menno
+	* enc_tf.c:
 		Bugfix
 
+	* enc_tf.c:
 		restored previous change
 
 2000-01-08  lenox
+	* enc_tf.c:
+	* fastfft.c:
+	* ms.c:
+	* nok_ltp_common_internal.h:
+	* nok_ltp_enc.c:
+	* nok_pitch.c:
+	* psych.c:
+	* tns.c:
+	* transfo.c:
 		some cleanup
 
 2000-01-07  lenox
+	* psych.c:
 		fixed bug in block switching (was since 1.16)
 
 2000-01-07  menno
+	* aacenc.h:
+	* enc_tf.c:
+	* encoder.c:
 		Added option to disable LTP (-nl)
 
 2000-01-06  menno
+	* psych.c:
+	* psych.h:
 		Cleanup
 
+	* nok_ltp_enc.c:
+	* nok_pitch.c:
 		Updated delay detection in LTP
 
+	* aac_qc.c:
+	* aac_qc.h:
+	* enc_tf.c:
 		Added support for PNS (but it is not used at the moment)
 
+	* aac_qc.c:
+	* psych.c:
 		Small quality fixes
 
+	* nok_pitch.c:
 		Divide by zero bugfix
 
+	* psych.c:
 		Mistake fixed
 
+	* aac_qc.c:
 		Fix
 
 2000-01-06  lenox
+	* fastfft.c:
+	* fastfft.h:
+	* psych.c:
+	* transfo.c:
+	* transfo.h:
 		new restructured mdct and fft
 
 2000-01-05  menno
+	* Makefile:
+	* aac_qc.h:
+	* aac_se_enc.c:
+	* aac_se_enc.h:
+	* all.h:
+	* enc_tf.c:
+	* faac.dsp:
+	* faac_dll.dsp:
+	* imdct.c:
+	* is.c:
+	* is.h:
+	* nok_ltp_common.h:
+	* nok_ltp_common_internal.h:
+	* nok_ltp_enc.c:
+	* nok_ltp_enc.h:
+	* nok_pitch.c:
+	* nok_pitch.h:
+	* psych.c:
+	* psych.h:
+	* tns.c:
+	* transfo.c:
+	* transfo.h:
 		Added Long Term Prediction (LTP), new decoder is needed for this
 
+	* enc_tf.c:
+	* psych.c:
 		Changed block switching
 
+	* aac_back_pred.c:
+	* aac_back_pred.h:
 		Removed backward prediction
 
 2000-01-03  lenox
+	* fastfft.c:
+	* psych.c:
+	* transfo.c:
+	* transfo.h:
 		Added 2048 FFT
 
 1999-12-30  menno
+	* psych.c:
+	* psych.h:
 		Structure cleanup
 
 1999-12-29  menno
+	* Makefile:
+	* enc_tf.c:
+	* faac.dsp:
+	* faac_dll.dsp:
+	* fft.c:
+	* psych.c:
+	* psych.h:
 		Restored old FFT due to some serious bugs
 
 1999-12-23  menno
+	* faac.dsp:
+	* faac_dll.dsp:
+	* fft.c:
+	* psych.c:
+	* psych.h:
 		New fft in psycho model (fast) and new unpredictabilty measure calculation
 
+	* psych.c:
 		Quick bugfix after latest update
 
+	* psych.c:
 		Quality fix, in MS protection ratio calculation
 
+	* enc_tf.c:
 		Removed the need for 4 channel buffers. Now there are 2
 
+	* psych.c:
 		Little fix
 
+	* enc_tf.c:
 		Fix in Mid/Side calculation
 
+	* Makefile:
 		Added fft.c
 
 1999-12-22  menno
+	* encoder.c:
 		Changed the DLL interface version.
 
+	* psych.c:
+	* psych.h:
 		Streamlined spreading function. Big speedup
 
 1999-12-20  menno
+	* ms.c:
 		Ooops, quick bugfix after latest changes gave an extra bug
 
+	* aac_qc.c:
 		Very big speedup
 
+	* tns.h:
 		Changed TNS switching
 
 1999-12-20  lenox
+	* aac_back_pred.c:
+	* aac_back_pred.h:
+	* enc.h:
+	* enc_tf.c:
+	* encoder.c:
+	* fastfft.c:
+	* fastfft.h:
+	* psych.c:
+	* tf_main.h:
+	* tns.c:
+	* tns.h:
+	* transfo.c:
+	* transfo.h:
 		some cleanup
 
 1999-12-19  menno
+	* aac_qc.c:
 		Bugfix preventing memory overflow
 
+	* ms.c:
 		Bugfix: MS first gave some distortion in the right channel. 
 		Because the Side channel was incorrectly formed.
 
+	* aacenc.h:
+	* encoder.c:
 		Changed InputBuffer into double instead of float (less
 		conversions)
 
+	* aacenc.h:
+	* enc_tf.c:
+	* encoder.c:
+	* ms.h:
+	* tns.c:
+	* tns.h:
 		Added some extra options
 
 1999-12-19  lenox
+	* fastfft.c:
+	* fastfft.h:
 		new FFT code
 
+	* Makefile:
+	* faac.dsp:
+	* faac_dll.dsp:
 		added fastfft.c
 
+	* transfo.c:
+	* transfo.h:
 		new FFT code & converted vars to double
 
+	* block.h:
 		removed reference to transfo.h
 
 1999-12-17  lenox
+	* Makefile:
 		removed util.c
 
 1999-12-16  menno
+	* enc_tf.c:
+	* ms.c:
+	* ms.h:
 		New and cleaner energy calculation in ms.c
 
+	* aac_back_pred.c:
+	* aac_qc.c:
+	* aac_se_enc.c:
+	* enc.h:
+	* enc_tf.c:
+	* imdct.c:
+	* psych.c:
+	* tns.c:
 		Serious bugfix in psych.c and removed all global statics, they
 		are just normal global variables now.
 
+	* psych.c:
+	* psych.h:
 		Code cleanup and one bugfix
 
+	* encoder.c:
 		Fixed bug with bitBuffer and better ADIF header writing
 
+	* encoder.c:
 		Fixed bug with calculating number of bytes from the number of
 		bits.
 
+	* enc_tf.c:
 		Put MSEnergy() after MSPreprocess(). Off course.
 
 1999-12-15  lenox
+	* faac.dsp:
+	* faac_dll.dsp:
 		Removed util.c
 
+	* transfo.c:
+	* transfo.h:
 		some speed optimization and restructure
 
 1999-12-13  menno
+	* enc_tf.c:
+	* imdct.c:
+	* psych.c:
+	* psych.h:
+	* tf_main.h:
 		some bugfixes
 
--- a/cooledit/.cvsignore
+++ /dev/null
@@ -1,13 +1,0 @@
-*.o
-*.so
-*.a
-*.ncb
-*.plg
-*.aps
-*.opt
-*.aac
-*.wav
-Release
-Debug
-ReleaseGUI
-DebugGUI
\ No newline at end of file
--- a/cooledit/Config.c
+++ /dev/null
@@ -1,42 +1,0 @@
-#include <windows.h>
-#include <stdio.h>
-
-
-static char app_name[] = "Freeware AAC encoder";
-static char INI_FILE[MAX_PATH];
-
-
-static void _r_s(char *name,char *data, int mlen)
-{
-char buf[2048];
- strcpy(buf,data);
- GetPrivateProfileString(app_name,name,buf,data,mlen,INI_FILE);
-}
-
-#define RS(x) (_r_s(#x,x,sizeof(x)))
-#define WS(x) (WritePrivateProfileString(app_name,#x,x,INI_FILE))
-
-
-void config_init()
-{
-	char *p=INI_FILE;
-	GetModuleFileName(NULL,INI_FILE,sizeof(INI_FILE));
-	while (*p) p++;
-	while (p >= INI_FILE && *p != '\\') p--;
-	strcpy(p+1,"plugins.ini");
-}
-
-void config_read(DWORD *dwOptions)
-{
-char Options[512];
- config_init();
- RS(Options);
- *dwOptions=atoi(Options);
-}
-
-void config_write(DWORD dwOptions)
-{
-char Options[512];
- sprintf(Options,"%lu",dwOptions);
- WS(Options);
-}
--- a/cooledit/FAAD.DSP
+++ /dev/null
@@ -1,148 +1,0 @@
-# Microsoft Developer Studio Project File - Name="FAAD" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
-
-CFG=FAAD - Win32 Release
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE 
-!MESSAGE NMAKE /f "FAAD.MAK".
-!MESSAGE 
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE 
-!MESSAGE NMAKE /f "FAAD.MAK" CFG="FAAD - Win32 Release"
-!MESSAGE 
-!MESSAGE Possible choices for configuration are:
-!MESSAGE 
-!MESSAGE "FAAD - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "FAAD - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE 
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=xicl6.exe
-MTL=midl.exe
-RSC=rc.exe
-
-!IF  "$(CFG)" == "FAAD - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir ".\Release"
-# PROP BASE Intermediate_Dir ".\Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir ".\Release"
-# PROP Intermediate_Dir ".\Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\include" /I "..\..\faad\include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
-# ADD BASE MTL /nologo /D "NDEBUG" /win32
-# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=xilink6.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:windows /dll /machine:I386
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:windows /dll /machine:I386 /nodefaultlib:"libc" /nodefaultlib:"libcd" /out:"Release\faac.flt"
-
-!ELSEIF  "$(CFG)" == "FAAD - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir ".\Debug"
-# PROP BASE Intermediate_Dir ".\Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir ".\Debug"
-# PROP Intermediate_Dir ".\Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c
-# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "..\include" /I "..\..\faad\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
-# ADD BASE MTL /nologo /D "_DEBUG" /win32
-# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=xilink6.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:windows /dll /debug /machine:I386
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:windows /dll /debug /machine:I386 /nodefaultlib:"libcd.dll" /out:"Debug\faac.flt"
-# SUBTRACT LINK32 /nodefaultlib
-
-!ENDIF 
-
-# Begin Target
-
-# Name "FAAD - Win32 Release"
-# Name "FAAD - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat;for;f90"
-# Begin Source File
-
-SOURCE=.\aacinfo.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\Config.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\FAAC.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\FAAD.C
-# End Source File
-# Begin Source File
-
-SOURCE=.\FAAD.def
-# End Source File
-# Begin Source File
-
-SOURCE=.\FAAD.rc
-# End Source File
-# Begin Source File
-
-SOURCE=.\Main.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl;fi;fd"
-# Begin Source File
-
-SOURCE=.\aacinfo.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\filters.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\RESOURCE.H
-# End Source File
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe"
-# Begin Source File
-
-SOURCE=.\Logo.bmp
-# End Source File
-# End Group
-# End Target
-# End Project
--- a/cooledit/FAAD.rc
+++ /dev/null
@@ -1,146 +1,0 @@
-//Microsoft Developer Studio generated resource script.
-//
-#include "resource.h"
-
-#define APSTUDIO_READONLY_SYMBOLS
-/////////////////////////////////////////////////////////////////////////////
-//
-// Generated from the TEXTINCLUDE 2 resource.
-//
-#include "afxres.h"
-
-/////////////////////////////////////////////////////////////////////////////
-#undef APSTUDIO_READONLY_SYMBOLS
-
-/////////////////////////////////////////////////////////////////////////////
-// English (U.S.) resources
-
-#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
-#ifdef _WIN32
-LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
-#pragma code_page(1252)
-#endif //_WIN32
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// Dialog
-//
-
-IDD_COMPRESSION DIALOG DISCARDABLE  0, 0, 176, 127
-STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
-CAPTION "AAC-MPEG4 options"
-FONT 8, "MS Sans Serif"
-BEGIN
-    CONTROL         "Automatic configuration",IDC_CHK_AUTOCFG,"Button",
-                    BS_AUTOCHECKBOX | WS_TABSTOP,4,4,90,10
-    CONTROL         "MPEG4",IDC_RADIO_MPEG4,"Button",BS_AUTORADIOBUTTON | 
-                    WS_GROUP,8,29,42,10
-    CONTROL         "MPEG2",IDC_RADIO_MPEG2,"Button",BS_AUTORADIOBUTTON,8,42,
-                    41,9
-    CONTROL         "Main",IDC_RADIO_MAIN,"Button",BS_AUTORADIOBUTTON | 
-                    WS_GROUP,12,73,31,10
-    CONTROL         "Low",IDC_RADIO_LOW,"Button",BS_AUTORADIOBUTTON,12,85,29,
-                    10
-    CONTROL         "SSR",IDC_RADIO_SSR,"Button",BS_AUTORADIOBUTTON | 
-                    WS_DISABLED,12,97,31,10
-    CONTROL         "LTP",IDC_RADIO_LTP,"Button",BS_AUTORADIOBUTTON,12,109,
-                    29,10
-    CONTROL         "Allow Mid/Side",IDC_ALLOWMIDSIDE,"Button",
-                    BS_AUTOCHECKBOX | WS_TABSTOP,59,21,63,10
-    CONTROL         "Use TNS",IDC_USETNS,"Button",BS_AUTOCHECKBOX | 
-                    WS_TABSTOP,59,33,45,10
-    CONTROL         "Use LFE channel",IDC_USELFE,"Button",BS_AUTOCHECKBOX | 
-                    WS_DISABLED | WS_TABSTOP,59,46,67,10
-    COMBOBOX        IDC_CB_BITRATE,124,68,48,30,CBS_DROPDOWNLIST | 
-                    WS_VSCROLL | WS_TABSTOP
-    COMBOBOX        IDC_CB_BANDWIDTH,124,85,48,30,CBS_DROPDOWN | WS_VSCROLL | 
-                    WS_TABSTOP
-    DEFPUSHBUTTON   "OK",IDOK,64,108,36,14
-    PUSHBUTTON      "Cancel",IDCANCEL,100,108,36,14
-    PUSHBUTTON      "About",IDC_BTN_ABOUT,136,108,36,14
-    GROUPBOX        "AAC type",IDC_STATIC,4,18,48,38
-    GROUPBOX        "Profile",IDC_STATIC,4,63,48,59
-    LTEXT           "Bitrate per channel",IDC_STATIC,59,73,60,8
-    LTEXT           "Bandwidth (0=full)",IDC_STATIC,59,89,57,8
-    CONTROL         104,IDC_IMG_LOGO,"Static",SS_BITMAP,136,4,36,23
-END
-
-
-#ifdef APSTUDIO_INVOKED
-/////////////////////////////////////////////////////////////////////////////
-//
-// TEXTINCLUDE
-//
-
-1 TEXTINCLUDE DISCARDABLE 
-BEGIN
-    "resource.h\0"
-END
-
-2 TEXTINCLUDE DISCARDABLE 
-BEGIN
-    "#include ""afxres.h""\r\n"
-    "\0"
-END
-
-3 TEXTINCLUDE DISCARDABLE 
-BEGIN
-    "\r\n"
-    "\0"
-END
-
-#endif    // APSTUDIO_INVOKED
-
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// DESIGNINFO
-//
-
-#ifdef APSTUDIO_INVOKED
-GUIDELINES DESIGNINFO DISCARDABLE 
-BEGIN
-    IDD_COMPRESSION, DIALOG
-    BEGIN
-        LEFTMARGIN, 4
-        RIGHTMARGIN, 172
-        TOPMARGIN, 4
-        BOTTOMMARGIN, 122
-    END
-END
-#endif    // APSTUDIO_INVOKED
-
-#endif    // English (U.S.) resources
-/////////////////////////////////////////////////////////////////////////////
-
-
-/////////////////////////////////////////////////////////////////////////////
-// Italian (Italy) resources
-
-#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ITA)
-#ifdef _WIN32
-LANGUAGE LANG_ITALIAN, SUBLANG_ITALIAN
-#pragma code_page(1252)
-#endif //_WIN32
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// Bitmap
-//
-
-IDB_LOGO                BITMAP  DISCARDABLE     "Logo.bmp"
-#endif    // Italian (Italy) resources
-/////////////////////////////////////////////////////////////////////////////
-
-
-
-#ifndef APSTUDIO_INVOKED
-/////////////////////////////////////////////////////////////////////////////
-//
-// Generated from the TEXTINCLUDE 3 resource.
-//
-
-
-/////////////////////////////////////////////////////////////////////////////
-#endif    // not APSTUDIO_INVOKED
-
binary files a/cooledit/Logo.bmp /dev/null differ
--- a/cooledit/Readme.txt
+++ /dev/null
@@ -1,6 +1,0 @@
-Set Active Configuration = FAAD - win32 Release,
-compile,
-copy FAAC.flt into CoolEdit folder
-delete flt.dat
-
-mail: kreel@interfree.it
--- a/cooledit/aacinfo.c
+++ /dev/null
@@ -1,249 +1,0 @@
-/*
- * FAAD - Freeware Advanced Audio Decoder
- * Copyright (C) 2001 Menno Bakker
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
-
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
- * $Id: aacinfo.c,v 1.3 2001/08/03 11:47:03 menno Exp $
- */
-
-#include <windows.h>
-#include "aacinfo.h"
-
-#define ADIF_MAX_SIZE 30 /* Should be enough */
-#define ADTS_MAX_SIZE 10 /* Should be enough */
-
-const int sample_rates[] = {96000,88200,64000,48000,44100,32000,24000,22050,16000,12000,11025,8000};
-
-static int read_ADIF_header(HANDLE file, faadAACInfo *info)
-{
-	unsigned long tmp;
-	int bitstream;
-	unsigned char buffer[ADIF_MAX_SIZE];
-	int skip_size = 0;
-	int sf_idx;
-
-	/* Get ADIF header data */
-	
-	info->headertype = 1;
-
-	ReadFile(file, buffer, ADIF_MAX_SIZE, &tmp, 0);
-
-	/* copyright string */	
-	if(buffer[4] & 128)
-		skip_size += 9; /* skip 9 bytes */
-
-	bitstream = buffer[4 + skip_size] & 16;
-	info->bitrate = ((unsigned int)(buffer[4 + skip_size] & 0x0F)<<19)|
-		((unsigned int)buffer[5 + skip_size]<<11)|
-		((unsigned int)buffer[6 + skip_size]<<3)|
-		((unsigned int)buffer[7 + skip_size] & 0xE0);
-
-	if (bitstream == 0) {
-		info->object_type = ((buffer[9 + skip_size]&0x01)<<1)|((buffer[10 + skip_size]&0x80)>>7);
-		sf_idx = (buffer[10 + skip_size]&0x78)>>3;
-		info->channels = ((buffer[10 + skip_size]&0x07)<<1)|((buffer[11 + skip_size]&0x80)>>7);
-	} else {
-		info->object_type = (buffer[7 + skip_size] & 0x18)>>3;
-		sf_idx = ((buffer[7 + skip_size] & 0x07)<<1)|((buffer[8 + skip_size] & 0x80)>>7);
-		info->channels = (buffer[8 + skip_size]&0x78)>>3;
-	}
-	info->sampling_rate = sample_rates[sf_idx];
-
-	return 0;
-}
-
-static int read_ADTS_header(HANDLE file, faadAACInfo *info, int *seek_table,
-							int tagsize)
-{
-	/* Get ADTS header data */
-	unsigned char buffer[ADTS_MAX_SIZE];
-	int frames, t_framelength = 0, frame_length, sr_idx, ID;
-	int second = 0, pos;
-	float frames_per_sec = 0;
-	unsigned long bytes;
-
-	info->headertype = 2;
-
-	/* Seek to the first frame */
-	SetFilePointer(file, tagsize, NULL, FILE_BEGIN);
-
-	/* Read all frames to ensure correct time and bitrate */
-	for(frames=0; /* */; frames++)
-	{
-		/* 12 bit SYNCWORD */
-		ReadFile(file, buffer, ADTS_MAX_SIZE, &bytes, 0);
-		if(bytes != ADTS_MAX_SIZE)
-		{
-			/* Bail out if no syncword found */
-			break;
-		}
-
-		if (!((buffer[0] == 0xFF)&&((buffer[1] & 0xF6) == 0xF0)))
-			break;
-
-		pos = SetFilePointer(file, 0, NULL, FILE_CURRENT) - ADTS_MAX_SIZE;
-
-		if(!frames)
-		{
-			/* fixed ADTS header is the same for every frame, so we read it only once */ 
-			/* Syncword found, proceed to read in the fixed ADTS header */ 
-			ID = buffer[1] & 0x08;
-			info->object_type = (buffer[2]&0xC0)>>6;
-			sr_idx = (buffer[2]&0x3C)>>2;
-			info->channels = ((buffer[2]&0x01)<<2)|((buffer[3]&0xC0)>>6);
-
-			frames_per_sec = sample_rates[sr_idx] / 1024.f;
-		}
-
-		/* ...and the variable ADTS header */
-		if (ID == 0) {
-			info->version = 4;
-			frame_length = (((unsigned int)buffer[4]) << 5) |
-				((unsigned int)buffer[5] >> 3);
-		} else { /* MPEG-2 */
-			info->version = 2;
-			frame_length = ((((unsigned int)buffer[3] & 0x3)) << 11)
-				| (((unsigned int)buffer[4]) << 3) | (buffer[5] >> 5);
-		}
-
-		t_framelength += frame_length;
-
-		if (frames > second*frames_per_sec)
-		{
-			seek_table[second] = pos;
-			second++;
-		}
-
-		SetFilePointer(file, frame_length - ADTS_MAX_SIZE, NULL, FILE_CURRENT);
-	}
-
-	info->sampling_rate = sample_rates[sr_idx];
-	info->bitrate = (int)(((t_framelength / frames) * (info->sampling_rate/1024.0)) +0.5)*8;
-	info->length = (int)((float)(frames/frames_per_sec))*1000;
-
-	return 0;
-}
-
-static int f_id3v2_tag(HANDLE file)
-{
-	unsigned char buffer[10];
-	unsigned long tmp;
-
-	ReadFile(file, buffer, 10, &tmp, 0);
-
-	if (StringComp(buffer, "ID3", 3) == 0) {
-		unsigned long tagsize;
-
-		/* high bit is not used */
-		tagsize = (buffer[6] << 21) | (buffer[7] << 14) |
-			(buffer[8] <<  7) | (buffer[9] <<  0);
-
-		tagsize += 10;
-
-		SetFilePointer(file, tagsize, NULL, FILE_BEGIN);
-
-		return tagsize;
-	} else {
-		SetFilePointer(file, 0, NULL, FILE_BEGIN);
-
-		return 0;
-	}
-}
-
-int get_AAC_format(char *filename, faadAACInfo *info, int *seek_table)
-{
-	unsigned int tagsize;
-	HANDLE file;
-	unsigned long file_len;
-	unsigned char adxx_id[5];
-	unsigned long tmp;
-
-	if(StringComp(filename, "http://", 7) == 0)
-	{
-		info->version = 2;
-		info->length = 0;
-		info->bitrate = 128000;
-		info->sampling_rate = 44100;
-		info->channels = 2;
-		info->headertype = 0;
-		info->object_type = 1;
-
-		return 0;
-	}
-
-	file = CreateFile(filename, GENERIC_READ,
-		FILE_SHARE_READ | FILE_SHARE_WRITE, 0,
-		OPEN_EXISTING, FILE_FLAG_SEQUENTIAL_SCAN, 0);
-	if (file == INVALID_HANDLE_VALUE)
-		return -1;
-
-	file_len = GetFileSize(file, NULL);
-
-	tagsize = f_id3v2_tag(file); /* Skip the tag, if it's there */
-	file_len -= tagsize;
-
-	ReadFile(file, adxx_id, 4, &tmp, 0);
-	SetFilePointer(file, tagsize, NULL, FILE_BEGIN);
-
-	adxx_id[5-1] = 0;
-
-	info->length = 0;
-
-	if(StringComp(adxx_id, "ADIF", 4) == 0)
-	{
-		read_ADIF_header(file, info);
-	}
-	else
-	{
-		if ((adxx_id[0] == 0xFF)&&((adxx_id[1] & 0xF6) == 0xF0))
-		{
-//			SetFilePointer(file, tagsize, NULL, FILE_BEGIN);
-			read_ADTS_header(file, info, seek_table, tagsize);
-		}
-		else
-		{
-			/* Unknown/headerless AAC file, assume format: */
-			info->version = 2;
-			info->bitrate = 128000;
-			info->sampling_rate = 44100;
-			info->channels = 2;
-			info->headertype = 0;
-			info->object_type = 1;
-		}
-	}
-
-	if (info->length == 0)
-		info->length = (int)((file_len/(((info->bitrate*8)/1024)*16))*1000);
-
-	CloseHandle(file);
-
-	return 0;
-}
-
-int StringComp(char const *str1, char const *str2, unsigned long len)
-{
-	signed int c1 = 0, c2 = 0;
-
-	while (len--) {
-		c1 = *str1++;
-		c2 = *str2++;
-
-		if (c1 == 0 || c1 != c2)
-			break;
-	}
-
-	return c1 - c2;
-}
--- a/cooledit/aacinfo.h
+++ /dev/null
@@ -1,39 +1,0 @@
-/*
- * FAAD - Freeware Advanced Audio Decoder
- * Copyright (C) 2001 Menno Bakker
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
-
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
- * $Id: aacinfo.h,v 1.3 2001/08/03 11:47:03 menno Exp $
- */
-
-typedef struct {
-	int version;
-	int channels;
-	int sampling_rate;
-	int bitrate;
-	int length;
-	int object_type;
-	int headertype;
-} faadAACInfo;
-
-
-int get_AAC_format(char *filename, faadAACInfo *info, int *seek_table);
-
-static int f_id3v2_tag(HANDLE file);
-static int read_ADIF_header(HANDLE file, faadAACInfo *info);
-static int read_ADTS_header(HANDLE file, faadAACInfo *info, int *seek_table,
-							int tagsize);
-int StringComp(char const *str1, char const *str2, unsigned long len);
binary files a/cooledit/bitmap1.bmp /dev/null differ
--- a/cooledit/faac.c
+++ /dev/null
@@ -1,517 +1,0 @@
-#include <windows.h>
-#include <stdio.h>  // FILE *
-#include "filters.h" //CoolEdit
-#include "resource.h"
-#include "faac.h"
-
-
-#define PI_VER "v1.0beta"
-
-
-extern void config_init();
-extern void config_read(DWORD *dwOptions);
-extern void config_write(DWORD dwOptions);
-
-
-typedef struct output_tag  // any special vars associated with output file
-{
- FILE  *fFile;         
- DWORD lSize;
- long  lSamprate;
- WORD  wBitsPerSample;
- WORD  wChannels;
-// DWORD dwDataOffset;
-// BOOL  bWrittenHeader;
- char  szNAME[256];
-
- faacEncHandle hEncoder;
- unsigned char *bitbuf;
- DWORD maxBytesOutput;
- long  samplesInput;
- BOOL  bStopEnc;
-} MYOUTPUT;
-
-
-
-__declspec(dllexport) BOOL FAR PASCAL DIALOGMsgProc(HWND hWndDlg, UINT Message, WPARAM wParam, LPARAM lParam)
-{
-DWORD dwOptions=(DWORD)lParam;
-
- switch(Message)
- {
-  case WM_INITDIALOG:
-	  {
-      char buf[10];
-
-       SendMessage(GetDlgItem(hWndDlg, IDC_CB_BITRATE), CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)"8");
-       SendMessage(GetDlgItem(hWndDlg, IDC_CB_BITRATE), CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)"18");
-       SendMessage(GetDlgItem(hWndDlg, IDC_CB_BITRATE), CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)"20");
-       SendMessage(GetDlgItem(hWndDlg, IDC_CB_BITRATE), CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)"24");
-       SendMessage(GetDlgItem(hWndDlg, IDC_CB_BITRATE), CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)"32");
-       SendMessage(GetDlgItem(hWndDlg, IDC_CB_BITRATE), CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)"40");
-       SendMessage(GetDlgItem(hWndDlg, IDC_CB_BITRATE), CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)"48");
-       SendMessage(GetDlgItem(hWndDlg, IDC_CB_BITRATE), CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)"56");
-       SendMessage(GetDlgItem(hWndDlg, IDC_CB_BITRATE), CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)"64");
-       SendMessage(GetDlgItem(hWndDlg, IDC_CB_BITRATE), CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)"96");
-       SendMessage(GetDlgItem(hWndDlg, IDC_CB_BITRATE), CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)"112");
-       SendMessage(GetDlgItem(hWndDlg, IDC_CB_BITRATE), CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)"128");
-       SendMessage(GetDlgItem(hWndDlg, IDC_CB_BITRATE), CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)"160");
-       SendMessage(GetDlgItem(hWndDlg, IDC_CB_BITRATE), CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)"192");
-       SendMessage(GetDlgItem(hWndDlg, IDC_CB_BITRATE), CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)"256");
-       SendMessage(GetDlgItem(hWndDlg, IDC_CB_BITRATE), CB_SETCURSEL, 8, 0);
-
-       SendMessage(GetDlgItem(hWndDlg, IDC_CB_BANDWIDTH), CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)"0");
-       SendMessage(GetDlgItem(hWndDlg, IDC_CB_BANDWIDTH), CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)"4000");
-       SendMessage(GetDlgItem(hWndDlg, IDC_CB_BANDWIDTH), CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)"8000");
-       SendMessage(GetDlgItem(hWndDlg, IDC_CB_BANDWIDTH), CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)"16000");
-       SendMessage(GetDlgItem(hWndDlg, IDC_CB_BANDWIDTH), CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)"22050");
-       SendMessage(GetDlgItem(hWndDlg, IDC_CB_BANDWIDTH), CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)"24000");
-       SendMessage(GetDlgItem(hWndDlg, IDC_CB_BANDWIDTH), CB_SETCURSEL, 0, 0);
-
-//       if(!((dwOptions>>23)&1))
-	   {
-        config_init();
-        config_read(&dwOptions);
-	   }
-
-	   if(dwOptions)
-	   {
-       char Enabled=!(dwOptions&1);
-		CheckDlgButton(hWndDlg,IDC_CHK_AUTOCFG, dwOptions&1);
-        EnableWindow(GetDlgItem(hWndDlg, IDC_RADIO_MPEG4), Enabled);
-        EnableWindow(GetDlgItem(hWndDlg, IDC_RADIO_MPEG2), Enabled);
-        EnableWindow(GetDlgItem(hWndDlg, IDC_RADIO_MAIN), Enabled);
-        EnableWindow(GetDlgItem(hWndDlg, IDC_RADIO_LOW), Enabled);
-        EnableWindow(GetDlgItem(hWndDlg, IDC_RADIO_SSR), Enabled);
-        EnableWindow(GetDlgItem(hWndDlg, IDC_RADIO_LTP), Enabled);
-        EnableWindow(GetDlgItem(hWndDlg, IDC_ALLOWMIDSIDE), Enabled);
-        EnableWindow(GetDlgItem(hWndDlg, IDC_USETNS), Enabled);
-//        EnableWindow(GetDlgItem(hWndDlg, IDC_USELFE), Enabled);
-        EnableWindow(GetDlgItem(hWndDlg, IDC_CB_BITRATE), Enabled);
-        EnableWindow(GetDlgItem(hWndDlg, IDC_CB_BANDWIDTH), Enabled);
-
-	    if(((dwOptions>>29)&7)==MPEG4)
-	     CheckDlgButton(hWndDlg,IDC_RADIO_MPEG4,TRUE);
-		else
-		 CheckDlgButton(hWndDlg,IDC_RADIO_MPEG2,TRUE);
-
-		switch((dwOptions>>27)&3)
-		{
-		 case 0:
-              CheckDlgButton(hWndDlg,IDC_RADIO_MAIN,TRUE);
-		      break;
-		 case 1:
-              CheckDlgButton(hWndDlg,IDC_RADIO_LOW,TRUE);
-		      break;
-		 case 2:
-              CheckDlgButton(hWndDlg,IDC_RADIO_SSR,TRUE);
-		      break;
-		  case 3:
-               CheckDlgButton(hWndDlg,IDC_RADIO_LTP,TRUE);
-		       break;
-		}
-
-		CheckDlgButton(hWndDlg, IDC_ALLOWMIDSIDE, (dwOptions>>26)&1);
-        CheckDlgButton(hWndDlg, IDC_USETNS, (dwOptions>>25)&1);
-        CheckDlgButton(hWndDlg, IDC_USELFE, (dwOptions>>24)&1);
-
-        SendMessage(GetDlgItem(hWndDlg, IDC_CB_BITRATE), CB_SETCURSEL, (dwOptions>>19)&31, 0);
-//        SendMessage(GetDlgItem(hWndDlg, IDC_CB_BANDWIDTH), CB_SETCURSEL, (dwOptions>>1)&0x0000ffff, 0);
-		sprintf(buf,"%lu",(dwOptions>>1)&0x0000ffff);
-        SetDlgItemText(hWndDlg, IDC_CB_BANDWIDTH, buf);
-		break;
-	   } // End dwOptions
-
-       CheckDlgButton(hWndDlg, IDC_ALLOWMIDSIDE, TRUE);
-       CheckDlgButton(hWndDlg, IDC_USETNS, TRUE);
-       CheckDlgButton(hWndDlg, IDC_USELFE, FALSE);
-
-	   switch((long)lParam)
-	   {
-	    case IDC_RADIO_MPEG4:
-			 CheckDlgButton(hWndDlg,IDC_RADIO_MPEG4,TRUE);
-			 break;
-		case IDC_RADIO_MPEG2:
-			 CheckDlgButton(hWndDlg,IDC_RADIO_MPEG2,TRUE);
-			 break;
-		case IDC_RADIO_MAIN:
-			 CheckDlgButton(hWndDlg,IDC_RADIO_MAIN,TRUE);
-			 break;
-		case IDC_RADIO_LOW:
-			 CheckDlgButton(hWndDlg,IDC_RADIO_LOW,TRUE);
-			 break;
-		case IDC_RADIO_SSR:
-			 CheckDlgButton(hWndDlg,IDC_RADIO_SSR,TRUE);
-			 break;
-		case IDC_RADIO_LTP:
-			 CheckDlgButton(hWndDlg,IDC_RADIO_LTP,TRUE);
-			 break;
-		case IDC_CHK_AUTOCFG:
-			 CheckDlgButton(hWndDlg,IDC_CHK_AUTOCFG, !IsDlgButtonChecked(hWndDlg,IDC_CHK_AUTOCFG));
-			 break;
-		default:
-			 CheckDlgButton(hWndDlg,IDC_RADIO_MPEG4,TRUE);
-			 CheckDlgButton(hWndDlg,IDC_RADIO_MAIN,TRUE);
-			 break;
-	   }         
-	  }
-       break; // End of WM_INITDIALOG                                 
-
-  case WM_CLOSE:
-       // Closing the Dialog behaves the same as Cancel               
-       PostMessage(hWndDlg, WM_COMMAND, IDCANCEL, 0L);
-       break; // End of WM_CLOSE                                      
-
-  case WM_COMMAND:
-	   switch(LOWORD(wParam))
-       {
-	   case IDC_CHK_AUTOCFG:
-		   {
-           char Enabled=!IsDlgButtonChecked(hWndDlg,IDC_CHK_AUTOCFG);
-      		EnableWindow(GetDlgItem(hWndDlg, IDC_RADIO_MPEG4), Enabled);
-      		EnableWindow(GetDlgItem(hWndDlg, IDC_RADIO_MPEG2), Enabled);
-      		EnableWindow(GetDlgItem(hWndDlg, IDC_RADIO_MAIN), Enabled);
-      		EnableWindow(GetDlgItem(hWndDlg, IDC_RADIO_LOW), Enabled);
-      		EnableWindow(GetDlgItem(hWndDlg, IDC_RADIO_SSR), Enabled);
-      		EnableWindow(GetDlgItem(hWndDlg, IDC_RADIO_LTP), Enabled);
-      		EnableWindow(GetDlgItem(hWndDlg, IDC_ALLOWMIDSIDE), Enabled);
-      		EnableWindow(GetDlgItem(hWndDlg, IDC_USETNS), Enabled);
-//      		EnableWindow(GetDlgItem(hWndDlg, IDC_USELFE), Enabled);
-      		EnableWindow(GetDlgItem(hWndDlg, IDC_CB_BITRATE), Enabled);
-      		EnableWindow(GetDlgItem(hWndDlg, IDC_CB_BANDWIDTH), Enabled);
-		   }
-           break;
-
-	   case IDOK:
-		   {
-		   DWORD retVal=0;
-           faacEncConfiguration faacEncCfg;
-              if(IsDlgButtonChecked(hWndDlg,IDC_RADIO_MPEG4))
-			  {
-               faacEncCfg.mpegVersion=MPEG4;
-			   retVal|=MPEG4<<29;
-			  }
-              if(IsDlgButtonChecked(hWndDlg,IDC_RADIO_MPEG2))
-			  {
-               faacEncCfg.mpegVersion=MPEG2;
-			   retVal|=MPEG2<<29;
-			  }
-              if(IsDlgButtonChecked(hWndDlg,IDC_RADIO_MAIN))
-			  {
-               faacEncCfg.aacObjectType=MAIN;
-			   retVal|=MAIN<<27;
-			  }
-              if(IsDlgButtonChecked(hWndDlg,IDC_RADIO_LOW))
-			  {
-               faacEncCfg.aacObjectType=LOW;
-			   retVal|=LOW<<27;
-			  }
-              if(IsDlgButtonChecked(hWndDlg,IDC_RADIO_SSR))
-			  {
-               faacEncCfg.aacObjectType=SSR;
-			   retVal|=SSR<<27;
-			  }
-              if(IsDlgButtonChecked(hWndDlg,IDC_RADIO_LTP))
-			  {
-               faacEncCfg.aacObjectType=LTP;
-			   retVal|=LTP<<27;
-			  }
-
-              faacEncCfg.allowMidside=IsDlgButtonChecked(hWndDlg, IDC_ALLOWMIDSIDE) == BST_CHECKED ? 1 : 0;
-              retVal|=faacEncCfg.allowMidside<<26;
-              faacEncCfg.useTns=IsDlgButtonChecked(hWndDlg, IDC_USETNS) == BST_CHECKED ? 1 : 0;
-              retVal|=faacEncCfg.useTns<<25;
-              faacEncCfg.useLfe=IsDlgButtonChecked(hWndDlg, IDC_USELFE) == BST_CHECKED ? 1 : 0;
-              retVal|=faacEncCfg.useLfe<<24;
-			  
-			  faacEncCfg.bitRate=GetDlgItemInt(hWndDlg, IDC_CB_BITRATE, 0, FALSE);
-			  retVal|=(SendMessage(GetDlgItem(hWndDlg, IDC_CB_BITRATE), CB_GETCURSEL, 0, 0)&31)<<19;
-              //retVal|=faacEncCfg.bitRate;
-			  faacEncCfg.bandWidth=GetDlgItemInt(hWndDlg, IDC_CB_BANDWIDTH, 0, FALSE);
-//			  retVal|=(SendMessage(GetDlgItem(hWndDlg, IDC_CB_BANDWIDTH), CB_GETCURSEL, 0, 0)&0x0000ffff)<<1;
-			  retVal|=(faacEncCfg.bandWidth&0x0000ffff)<<1;
-             
-			  if(IsDlgButtonChecked(hWndDlg,IDC_CHK_AUTOCFG))
-			   retVal|=1;
-
-              config_write(retVal);
-			  
-//			  retVal|=1<<23; // CFG has been written
-
-              EndDialog(hWndDlg, retVal);
-             }
-             break;
-
-        case IDCANCEL:
-             // Ignore data values entered into the controls        
-             // and dismiss the dialog window returning FALSE       
-             EndDialog(hWndDlg, FALSE);
-             break;
-
-		case IDC_BTN_ABOUT:
-           	 {
-		     char buf[256];
- 			  sprintf(buf,"AAC-MPEG4 encoder plug-in %s\nThis plugin uses FAAC encoder engine v%g\n\nCompiled on %s\n",
-				          PI_VER,
-		 	              FAACENC_VERSION,
-						  __DATE__
-						  );
-		      MessageBox(hWndDlg, buf, "About", MB_OK);
-             }
-             break;
-       }
-       break; // End of WM_COMMAND                                 
-  default: return FALSE;
- }
- return TRUE;
-} // End of DIALOGSMsgProc                                      
-
-__declspec(dllexport) DWORD FAR PASCAL FilterGetOptions(HWND hWnd, HINSTANCE hInst, long lSamprate, WORD wChannels, WORD wBitsPerSample, DWORD dwOptions) // return 0 if no options box
-{
-long nDialogReturn=0;
-FARPROC lpfnDIALOGMsgProc;
-	
- lpfnDIALOGMsgProc=GetProcAddress(hInst,(LPCSTR)MAKELONG(20,0));			
- nDialogReturn=(long)DialogBoxParam((HINSTANCE)hInst,(LPCSTR)MAKEINTRESOURCE(IDD_COMPRESSION), (HWND)hWnd, (DLGPROC)lpfnDIALOGMsgProc, dwOptions);
-
- return nDialogReturn;
-}
-
-__declspec(dllexport) DWORD FAR PASCAL FilterWriteFirstSpecialData(HANDLE hInput, 
-	SPECIALDATA * psp)
-{
- return 0;
-}
-
-__declspec(dllexport) DWORD FAR PASCAL FilterWriteNextSpecialData(HANDLE hInput, SPECIALDATA * psp)
-{	
- return 0;
-// only has 1 special data!  Otherwise we would use psp->hSpecialData
-// as either a counter to know which item to retrieve next, or as a
-// structure with other state information in it.
-}
-
-__declspec(dllexport) DWORD FAR PASCAL FilterWriteSpecialData(HANDLE hOutput,
-	LPCSTR szListType, LPCSTR szType, char * pData,DWORD dwSize)
-{
- return 0;
-}
-
-__declspec(dllexport) void FAR PASCAL CloseFilterOutput(HANDLE hOutput)
-{
- if(hOutput)
- {
- MYOUTPUT *mo;
-  mo=(MYOUTPUT *)GlobalLock(hOutput);
-
- if(mo->fFile)
- {
-  fclose(mo->fFile);
-  mo->fFile=0;
- }
-
- if(mo->hEncoder)
-  faacEncClose(mo->hEncoder);
-
- if(mo->bitbuf)
- {
-  free(mo->bitbuf);
-  mo->bitbuf=0;
- }
-
-  GlobalUnlock(hOutput);
-  GlobalFree(hOutput);
- }
-}              
-
-__declspec(dllexport) HANDLE FAR PASCAL OpenFilterOutput(LPSTR lpstrFilename,long lSamprate,WORD wBitsPerSample,WORD wChannels,long lSize, long far *lpChunkSize, DWORD dwOptions)
-{
-HANDLE        hOutput;
-faacEncHandle hEncoder;
-FILE          *outfile;
-unsigned char *bitbuf;
-DWORD         maxBytesOutput;
-long          samplesInput;
-int           bytesEncoded;
-
-//    if(!((dwOptions>>23)&1))
-	{
-     config_init();
-     config_read(&dwOptions);
-	}
-
-// open the aac output file 
-	if(!(outfile=fopen(lpstrFilename, "wb")))
-	{
-     MessageBox(0, "Can't create file", "FAAC interface", MB_OK);
-	 return 0;
-	}
-
-// open the encoder library
-	if(!(hEncoder=faacEncOpen(lSamprate, wChannels, &samplesInput, &maxBytesOutput)))
-	{
-	 MessageBox(0, "Can't init library", "FAAC interface", MB_OK);
-	 fclose(outfile);
-	 return 0;
-	}
-
-	if(!(bitbuf=(unsigned char*)malloc(maxBytesOutput*sizeof(unsigned char))))
-	{
-	 MessageBox(0, "Memory allocation error: output buffer", "FAAC interface", MB_OK);
-     faacEncClose(hEncoder);
-	 fclose(outfile);
-	 return 0;
-	}
-
-	*lpChunkSize=samplesInput*2;
-
-    hOutput=GlobalAlloc(GMEM_MOVEABLE|GMEM_SHARE,sizeof(MYOUTPUT));
-    if(hOutput)
-    {
-	MYOUTPUT *mo;
-	 mo=(MYOUTPUT *)GlobalLock(hOutput);
-	 mo->fFile=outfile;
-	 mo->lSize=lSize;
-	 mo->lSamprate=lSamprate;
-	 mo->wBitsPerSample=wBitsPerSample;
-	 mo->wChannels=wChannels;
-//	 mo->dwDataOffset=0; // ???
-//	 mo->bWrittenHeader=0;
-	 strcpy(mo->szNAME,lpstrFilename);
-
-	 mo->hEncoder=hEncoder;
-     mo->bitbuf=bitbuf;
-	 mo->maxBytesOutput=maxBytesOutput;
-	 mo->samplesInput=samplesInput;
-	 mo->bStopEnc=0;
-
-	 GlobalUnlock(hOutput);
-    }
-	else
-	{
-	 MessageBox(0, "hOutput=NULL", "FAAC interface", MB_OK);
-     faacEncClose(hEncoder);
-	 fclose(outfile);
-	 free(bitbuf);
-	 return 0;
-	}
-
-	if(dwOptions && !(dwOptions&1))
-	{
-    faacEncConfigurationPtr myFormat;
-     myFormat=faacEncGetCurrentConfiguration(hEncoder);
-
-     myFormat->mpegVersion=(dwOptions>>29)&7;
-	 myFormat->aacObjectType=(dwOptions>>27)&3;
-	 myFormat->allowMidside=(dwOptions>>26)&1;
-	 myFormat->useTns=(dwOptions>>25)&1;
-	 myFormat->useLfe=(dwOptions>>24)&1;
-	 switch((dwOptions>>1)&31)
-	 {
-	  case 0:
-           myFormat->bitRate=8000;
-		   break;
-	  case 1:
-           myFormat->bitRate=18000;
-		   break;
-	  case 2:
-           myFormat->bitRate=20000;
-		   break;
-	  case 3:
-           myFormat->bitRate=24000;
-		   break;
-	  case 4:
-           myFormat->bitRate=32000;
-		   break;
-	  case 5:
-           myFormat->bitRate=40000;
-		   break;
-	  case 6:
-           myFormat->bitRate=48000;
-		   break;
-	  case 7:
-           myFormat->bitRate=56000;
-		   break;
-	  case 8:
-           myFormat->bitRate=64000;
-		   break;
-	  case 9:
-           myFormat->bitRate=96000;
-		   break;
-	  case 10:
-           myFormat->bitRate=112000;
-		   break;
-	  case 11:
-           myFormat->bitRate=128000;
-		   break;
-	  case 12:
-           myFormat->bitRate=160000;
-		   break;
-	  case 13:
-           myFormat->bitRate=192000;
-		   break;
-	  case 14:
-           myFormat->bitRate=256000;
-		   break;
-	 }
-     myFormat->bandWidth=(dwOptions>>1)&0x0000ffff;
-     if(!myFormat->bandWidth)
-	  myFormat->bandWidth=lSamprate/2;
-
-	 if(!faacEncSetConfiguration(hEncoder, myFormat))
-	 {
-      MessageBox(0, "Unsupported parameters", "FAAC interface", MB_OK);
-      faacEncClose(hEncoder);
-	  fclose(outfile);
-	  free(bitbuf);
-      GlobalFree(hOutput);
-	  return 0;
-	 }
-	}
-
-// init flushing process
-    bytesEncoded=faacEncEncode(hEncoder, 0, 0, bitbuf, maxBytesOutput); // initializes the flushing process
-    if(bytesEncoded>0)
-	 fwrite(bitbuf, 1, bytesEncoded, outfile);
-
-    return hOutput;
-}
-
-__declspec(dllexport) DWORD FAR PASCAL WriteFilterOutput(HANDLE hOutput, unsigned char far *buf, long lBytes)
-{
-int bytesWritten;
-int bytesEncoded;
-
- if(hOutput)
- { 
- MYOUTPUT far *mo;
-  mo=(MYOUTPUT far *)GlobalLock(hOutput);
-
-  if(!mo->bStopEnc)
-  {
-// call the actual encoding routine
-   bytesEncoded=faacEncEncode(mo->hEncoder, (short *)buf, mo->samplesInput, mo->bitbuf, mo->maxBytesOutput);
-   if(bytesEncoded<1) // end of flushing process
-   {
-    if(bytesEncoded<0)
-     MessageBox(0, "faacEncEncode() failed", "FAAC interface", MB_OK);
-    mo->bStopEnc=1;
-    GlobalUnlock(hOutput);
-    return 0;
-   }
-// write bitstream to aac file 
-   bytesWritten=fwrite(mo->bitbuf, 1, bytesEncoded, mo->fFile);
-   if(bytesWritten!=bytesEncoded)
-   {
-    MessageBox(0, "bytesWritten and bytesEncoded are different", "FAAC interface", MB_OK);
-    mo->bStopEnc=1;
-    GlobalUnlock(hOutput);
-    return 0;
-   }
-
-   GlobalUnlock(hOutput);
-  }
- }
-
- return bytesWritten;
-}
--- a/cooledit/faad.c
+++ /dev/null
@@ -1,430 +1,0 @@
-#include <windows.h>
-#include <stdio.h>  // FILE *
-#include "filters.h" //CoolEdit
-#include "faad.h"
-#include "aacinfo.h"
-
-
-#define MAX_CHANNELS 2
-
-
-typedef struct input_tag // any special vars associated with input file
-{
- FILE  *fFile;
- DWORD lSize;    
- DWORD len_ms;
- WORD  wChannels;
- DWORD dwSamprate;
- WORD  wBitsPerSample;
- char  szName[256];
-
- faacDecHandle hDecoder;
- faadAACInfo   file_info;
- unsigned char *buffer;
- DWORD full_size; // size of decoded file needed to set the length of progress bar
- DWORD tagsize;
- DWORD bytes_read; // from file
- DWORD bytes_consumed; // by faadDecDecode
- DWORD bytes_into_buffer;
- DWORD bytes_Enc;
-//	   bytesDec; // Not used because I prefer decode until possible and not until file_info.lenght
-} MYINPUT;
-
-
-int id3v2_tag(unsigned char *buffer)
-{
- if(StringComp(buffer, "ID3", 3) == 0) 
- {
-unsigned long tagsize;
-
-/* high bit is not used */
-  tagsize=(buffer[6] << 21) | (buffer[7] << 14) |
-          (buffer[8] <<  7) | (buffer[9] <<  0);
-  tagsize += 10;
-  return tagsize;
- }
- else 
-  return 0;
-}
-
-__declspec(dllexport) BOOL FAR PASCAL FilterUnderstandsFormat(LPSTR filename)
-{
-WORD len;
- if((len=lstrlen(filename))>4 && 
-	(!strcmpi(filename+len-4,".aac") ||
-	 !strcmpi(filename+len-4,".mp4")))
-  return TRUE;
- return FALSE;
-}
-
-__declspec(dllexport) long FAR PASCAL FilterGetFileSize(HANDLE hInput)
-{
-DWORD full_size;
-
- if(hInput)  
- {
- MYINPUT *mi;
-  mi=(MYINPUT *)GlobalLock(hInput);
-  full_size=mi->full_size;
-
-  GlobalUnlock(hInput);
- }
-
- return full_size;
-}
-
-__declspec(dllexport) DWORD FAR PASCAL FilterOptions(HANDLE hInput)
-{
- return 0L;
-}	    
-
-__declspec(dllexport) DWORD FAR PASCAL FilterOptionsString(HANDLE hInput, LPSTR szString)
-{
-char buf[20];
-
- if(hInput)
- {
- MYINPUT *mi;
-  mi=(MYINPUT *)GlobalLock(hInput);
- 
-  lstrcpy(szString,"");
-
-  if(mi->file_info.version == 2)
-   lstrcat(szString,"MPEG2 - ");
-  else
-   lstrcat(szString,"MPEG4 - ");
- 
-  sprintf(buf,"%lu bps\n",mi->file_info.bitrate);
-  lstrcat(szString,buf);
- 
-  switch(mi->file_info.headertype)
-  {
-  case 0:
-       lstrcat(szString,"RAW\n");
-       return 0;
-  case 1:
-       lstrcat(szString,"ADIF\n");
-       break;
-  case 2:
-       lstrcat(szString,"ADTS\n");
-       break;
-  }
-
-  switch(mi->file_info.object_type)
-  {
-  case 0:
-       lstrcat(szString,"Main");
-       break;
-  case 1:
-       lstrcat(szString,"Low Complexity");
-       break;
-  case 2:
-       lstrcat(szString,"SSR (unsupported)");
-       break;
-  case 3:
-       lstrcat(szString,"Main LTP");
-       break;
-  }
-
-  GlobalUnlock(hInput);
- }
- return 1;
-}
-
-__declspec(dllexport) DWORD FAR PASCAL FilterGetFirstSpecialData(HANDLE hInput, 
-	SPECIALDATA * psp)
-{
-return 0L;
-}
-    
-__declspec(dllexport) DWORD FAR PASCAL FilterGetNextSpecialData(HANDLE hInput, SPECIALDATA * psp)
-{	return 0; // only has 1 special data!  Otherwise we would use psp->hSpecialData
-			  // as either a counter to know which item to retrieve next, or as a
-			  // structure with other state information in it.
-}
-
-__declspec(dllexport) void FAR PASCAL CloseFilterInput(HANDLE hInput)
-{
- if(hInput)
- {
- MYINPUT far *mi;
-  mi=(MYINPUT far *)GlobalLock(hInput);
-
-  if(mi->fFile)
-   fclose(mi->fFile);
-  
-  if(mi->buffer)
-   free(mi->buffer);
-
-  if(mi->hDecoder)
-   faacDecClose(mi->hDecoder);
-
-  GlobalUnlock(hInput);
-  GlobalFree(hInput);
- }
-}
-
-// return handle that will be passed in to close, and write routines
-__declspec(dllexport) HANDLE FAR PASCAL OpenFilterInput( LPSTR lpstrFilename,
-											long far *lSamprate,
-											WORD far *wBitsPerSample,
-											WORD far *wChannels,
-											HWND hWnd,
-											long far *lChunkSize)
-{
-HANDLE hInput;
-faacDecHandle hDecoder;
-DWORD  k,tmp;
-//int    shift;
-FILE   *infile;
-DWORD  samplerate, channels;
-DWORD  pos; // into the file. Needed to obtain length of file
-DWORD  read;
-int    *seek_table;
-//faadAACInfo file_info;
-unsigned char *buffer;
-long tagsize;
-
- if(!(infile=fopen(lpstrFilename,"rb")))
-  return 0;
-
- hInput=GlobalAlloc(GMEM_MOVEABLE|GMEM_SHARE|GMEM_ZEROINIT,sizeof(MYINPUT));
- if(!hInput)
- {
-  fclose(infile);
-  return 0;
- }
- else
- {   
- MYINPUT *mi;
-  mi=(MYINPUT *)GlobalLock(hInput);
-
-  mi->fFile=infile;
-  pos=ftell(infile);
-  fseek(infile, 0, SEEK_END);
-  mi->lSize=ftell(infile);
-  fseek(infile, pos, SEEK_SET);
-  if(!(buffer=(unsigned char*)malloc(768*MAX_CHANNELS)))
-  {
-   MessageBox(0, "Memory allocation error: buffer", "FAAD interface", MB_OK);
-   fclose(infile);
-   GlobalUnlock(hInput);
-   return 0;
-  }
-  mi->buffer=buffer;
-  memset(buffer, 0, 768*MAX_CHANNELS);
-
-  if(mi->lSize<768*MAX_CHANNELS)
-   tmp=mi->lSize;
-  else
-   tmp=768*MAX_CHANNELS;
-  read=fread(buffer, 1, tmp, infile);
-  if(read==tmp)
-  {
-   mi->bytes_read=read;
-   mi->bytes_into_buffer=read;
-  }
-  else
-  {
-   MessageBox(0, "fread", "FAAD interface", MB_OK);
-   fclose(mi->fFile);
-   free(mi->buffer);
-   GlobalUnlock(hInput);
-   return 0;
-  }
-
-  tagsize=id3v2_tag(buffer);
-  if(tagsize)
-  {
-   for (k=0; k<(768*MAX_CHANNELS - tagsize); k++)
-   buffer[k]=buffer[k + tagsize];
-
-   if(mi->bytes_read+tagsize<mi->lSize)
-	tmp=tagsize;
-   else
-    tmp=mi->lSize-mi->bytes_read;
-   read=fread(buffer+mi->bytes_into_buffer, 1, tmp, mi->fFile);
-   if(read==tmp)
-   {
-    mi->bytes_read+=read;
-    mi->bytes_into_buffer+=read;
-   }
-   else
-   {
-    MessageBox(0, "fread", "FAAD interface", MB_OK);
-    fclose(mi->fFile);
-    free(mi->buffer);
-    GlobalUnlock(hInput);
-    return 0;
-   }
-  }
-  mi->tagsize=tagsize;
-  mi->bytes_Enc=tagsize;
-//  mi->bytesDec=0;
-
-  hDecoder = faacDecOpen();
-  if(!hDecoder)
-  {
-   MessageBox(0, "Can't init library", "FAAD interface", MB_OK);
-   fclose(mi->fFile);
-   free(mi->buffer);
-   GlobalUnlock(hInput);
-   return 0;
-  }
-  mi->hDecoder=hDecoder;
-
-  if((mi->bytes_consumed=faacDecInit(hDecoder, buffer, &samplerate, &channels)) < 0)
-  {
-   MessageBox(hWnd, "Error retrieving information form input file", "FAAD interface", MB_OK);
-   fclose(mi->fFile);
-   free(mi->buffer);
-   faacDecClose(mi->hDecoder);
-   GlobalUnlock(hInput);
-   return 0;
-  }
-  mi->bytes_into_buffer-=mi->bytes_consumed;
-// if(mi->bytes_consumed>0) 
-// faacDecInit reports there is an header to skip
-// this operation will be done in ReadFilterInput
-
-  *lSamprate=samplerate;
-  *wBitsPerSample=16;
-  *wChannels=channels;
-  *lChunkSize=sizeof(short)*1024*channels;
-
-  mi->wChannels=channels;
-  mi->dwSamprate=samplerate;
-  mi->wBitsPerSample=*wBitsPerSample;
-  strcpy(mi->szName,lpstrFilename);
-
-  if(seek_table=(int*)LocalAlloc(LPTR, 10800*sizeof(int)))
-  {
-   get_AAC_format(mi->szName, &(mi->file_info), seek_table);
-   LocalFree(seek_table);
-  }
-  else
-   if(!mi->file_info.version)
-   {
-    fclose(mi->fFile);
-    free(mi->buffer);
-    faacDecClose(hDecoder);
-    GlobalUnlock(hInput);
-    return 0;
-   }
-
-  if(mi->file_info.object_type==2) // Unupported type SSR profile
-   {
-    fclose(mi->fFile);
-    free(mi->buffer);
-    faacDecClose(hDecoder);
-    GlobalUnlock(hInput);
-    return 0;
-   }
-
-  mi->len_ms=1000*(mi->lSize*8)/mi->file_info.bitrate;
-  if(mi->len_ms)
-   mi->full_size=(DWORD)(mi->len_ms*((float)mi->dwSamprate/1000)*mi->wChannels*(16/8));
-  else
-   mi->full_size=mi->lSize; // corrupted stream?
-/*
-  if(mi->file_info.length)
-   mi->full_size=(DWORD)(mi->file_info.length*((float)samplerate/1000)*channels*(16/8));
-  else
-   mi->full_size=mi->lSize; // corrupted stream?
-*/
-/*  {
-   fclose(mi->fFile);
-   free(mi->buffer);
-   faacDecClose(hDecoder);
-   GlobalUnlock(hInput);
-   return 0;
-  }*/
-
-  GlobalUnlock(hInput);
- }
-
- return hInput;
-}
-
-__declspec(dllexport) DWORD FAR PASCAL ReadFilterInput(HANDLE hInput, unsigned char far *bufout, long lBytes)
-{
-DWORD read,
-      tmp,
-	  bytesDec,
-	  k;
-int   result;
-unsigned char *buffer;
-
- if(hInput)
- {   
- MYINPUT *mi;
-  mi=(MYINPUT *)GlobalLock(hInput);
-
-  buffer=mi->buffer;
-
-  mi->bytes_Enc+=mi->bytes_consumed;
-  if(mi->bytes_Enc>=mi->lSize)
-  {
-//   MessageBox(0, "ReadFilterInput: mi->bytesEnc>mi->lSize", "FAAD interface", MB_OK);
-   GlobalUnlock(hInput);
-   return 0;
-  }
-
-  if(mi->bytes_consumed)
-  {
-/*   mi->bytesDec+=sizeof(short)*1024*mi->wChannels;
-   if(mi->bytesDec>mi->full_size+sizeof(short)*1024*mi->wChannels)
-   {
-//    MessageBox(0, "ReadFilterInput: mi->bytesDec>mi->full_size", "FAAD interface", MB_OK);
-    GlobalUnlock(hInput);
-    return 0;
-   }*/
-
-   for(k=0; k<mi->bytes_into_buffer; k++)
-    buffer[k]=buffer[k + mi->bytes_consumed];
-
-   if(mi->bytes_read<mi->lSize)
-   {
-    if(mi->bytes_read+mi->bytes_consumed<mi->lSize)
-	 tmp=mi->bytes_consumed;
-	else
-	 tmp=mi->lSize-mi->bytes_read;
-    read=fread(buffer+mi->bytes_into_buffer, 1, tmp, mi->fFile);
-    if(read==tmp)
-	{
-	 mi->bytes_read+=read;
-     mi->bytes_into_buffer+=read;
-	}
-   }
-   else
-    memset(buffer+mi->bytes_into_buffer, 0, mi->bytes_consumed);
-  }
-
-  if(!mi->bytes_into_buffer)
-  {
-//   MessageBox(0, "ReadFilterInput: buffer empty", "FAAD interface", MB_OK);
-   GlobalUnlock(hInput);
-   return 0;
-  }
-
-  result=faacDecDecode(mi->hDecoder, buffer, &(mi->bytes_consumed), (short*)bufout);
-  if(mi->bytes_into_buffer>mi->bytes_consumed)
-   mi->bytes_into_buffer-=mi->bytes_consumed;
-  else
-   mi->bytes_into_buffer=0;
-//  if(result>FAAD_OK_CHUPDATE)
-  if(result==FAAD_FATAL_ERROR)
-  {
-//   MessageBox(0, "ReadFilterInput: FAAD_FATAL_ERROR or FAAD_ERROR", "FAAD interface", MB_OK);
-//   MessageBox(0, "ReadFilterInput: FAAD_FATAL_ERROR", "FAAD interface", MB_OK);
-   GlobalUnlock(hInput);
-   return 0;
-  }
-
-  bytesDec=sizeof(short)*1024*mi->wChannels;
-
-  GlobalUnlock(hInput);
- }
-
- return bytesDec;
-}
--- a/cooledit/faad.def
+++ /dev/null
@@ -1,22 +1,0 @@
-LIBRARY   Cool32*FAAC
-
-HEAPSIZE  2048
-
-EXPORTS
-                QueryCoolFilter	   @2
-				OpenFilterOutput   @3
-				CloseFilterOutput  @4
-				WriteFilterOutput  @5
-				OpenFilterInput    @6
-				CloseFilterInput   @7
-				ReadFilterInput    @8
-                FilterUnderstandsFormat @9
-				FilterGetOptions		@14 
-				FilterOptions			@15
-				FilterGetFileSize		@16
-				FilterOptionsString		@17
-				DIALOGMsgProc 			@20
-			   	FilterGetFirstSpecialData	@31
-				FilterGetNextSpecialData	@32
-				FilterWriteSpecialData		@33
-
--- a/cooledit/faad.dsw
+++ /dev/null
@@ -1,59 +1,0 @@
-Microsoft Developer Studio Workspace File, Format Version 6.00
-# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
-
-###############################################################################
-
-Project: "FAAD"=.\FAAD.DSP - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-    Begin Project Dependency
-    Project_Dep_Name libfaad
-    End Project Dependency
-    Begin Project Dependency
-    Project_Dep_Name libfaac
-    End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "libfaac"=..\libfaac\libfaac.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "libfaad"=..\..\faad\libfaad\libfaad.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Global:
-
-Package=<5>
-{{{
-}}}
-
-Package=<3>
-{{{
-}}}
-
-###############################################################################
-
--- a/cooledit/filters.h
+++ /dev/null
@@ -1,121 +1,0 @@
-//////////////////////////////////////////////////////
-// GENERAL PURPOSE DEFS FOR CREATING CUSTOM FILTERS //
-//////////////////////////////////////////////////////
-
-
-typedef struct riffspecialdata_t
-{	HANDLE hSpecialData;	
-	HANDLE hData;			// Actual data handle
-	DWORD  dwSize;			// size of data in handle
-	DWORD  dwExtra;			// optional extra data (usually a count)
-	char   szListType[8];	// Parent list type (usually "WAVE" or "INFO", or "adtl")
-	char   szType[8];		// Usually a four character code for data, but can be up to 7 chars
-} SPECIALDATA;
-
-// "CUE " dwExtra=number of cues, each cue is 8 bytes		([4] name [4] sample offset)
-// "LTXT" dwExtra=number of items, each one is 8 bytes		([4] ltxt len [4] name [4] cue length [4] purpose [n] data)
-// "NOTE" dwExtra=number of strings, each one is n bytes	([4] name [n-4] length zero term)
-// "LABL" dwExtra=number of strings, each one is n bytes	([4] name [n-4] length zero term)
-// "PLST" dwExtra=number if items, each one is 16 bytes		([4] name [4] dwLen [4] dwLoops [4] dwMode)
-
-
-// For special data, .FLT must implement FilterGetFirstSpecialData and FilterGetNextSpecialData
-
-
-typedef DWORD           FOURCC;         // a four character code
-
-struct cue_type { DWORD dwName;
-				  DWORD dwPosition;
-				  FOURCC fccChunk;
-				  DWORD dwChunkStart;
-				  DWORD dwBlockStart;
-				  DWORD dwSampleOffset;
-				 };
-
-struct play_type {DWORD dwName;
-					 DWORD dwLength;
-					 DWORD dwLoops;
-					};
-
-
-typedef struct coolquery_tag
-	{char szName[24];
-	 char szCopyright[80];
-	 
-	 // rate table, bits are set for modes that can be handled
-	 WORD Quad32;  // Quads are 3-D encoded
-	 WORD Quad16;
-	 WORD Quad8;
-	 WORD Stereo8;    		// rates are from lowest bit:
-	 WORD Stereo12;   		// bit 0 set: 5500 (5512.5)
-	 WORD Stereo16;   		// bit 1 set: 11025 (11K)
-	 WORD Stereo24;   		// bit 2 set: 22050 (22K)
-	 WORD Stereo32;   		// bit 3 set: 32075 (32K, or 32000)
-	 WORD Mono8;      		// bit 4 set: 44100 (44K)
-	 WORD Mono12;	  		// bit 5 set: 48000 (48K)
-	 WORD Mono16;	  		// bit 6 set: 88200 (88K)   (future ultra-sonic rates?)
-	 WORD Mono24;	  		// bit 7 set: 96000 (96K)
-	 WORD Mono32;     		// bit 8 set: 132300 (132K)
-	 				  		// bit 9 set: 176400 (176K)
-	 DWORD dwFlags;
-	 char szExt[4];
-	 long lChunkSize;
-	 char szExt2[4];
-	 char szExt3[4];
-	 char szExt4[4];
-	} COOLQUERY;
-
-#define R_5500   1
-#define R_11025  2
-#define R_22050  4
-#define R_32075  8
-#define R_44100  16
-#define R_48000  32
-#define R_88200  64
-#define R_96000  128
-#define R_132300 256
-#define R_176400 512
-
-#define C_VALIDLIBRARY 1154
-
-#define QF_RATEADJUSTABLE		0x001   // if can handle non-standard sample rates
-										// if not, only rates in bit rate table understood
-#define QF_CANSAVE				0x002		  
-#define QF_CANLOAD				0x004
-#define QF_UNDERSTANDSALL		0x008   // will read ANYTHING, so it is the last resort if no other
-										// formats match
-#define QF_READSPECIALFIRST		0x010	// read special info before trying to read data
-#define QF_READSPECIALLAST		0x020	// read special info after reading data
-#define QF_WRITESPECIALFIRST	0x040	// when writing a file, special info is sent to DLL before data
-#define QF_WRITESPECIALLAST		0x080	// when writing, special info is sent to DLL after data
-#define QF_HASOPTIONSBOX		0x100	// set if options box implemented
-#define QF_NOASKFORCONVERT		0x200	// set to bypass asking for conversion if original in different rate, auto convert
-#define QF_NOHEADER				0x400	// set if this is a raw data format with no header
-#define QF_CANDO32BITFLOATS		0x800	// set if file format can handle 32-bit sample data for input
-#define QF_CANOPENVIRTUAL		0x1000	// Set if data is in Intel 8-bit or 16-bit sample format, or floats
-										// and the GetDataOffset() function is implemented
-
-// special types are read from and written to DLL in the order below
-/*
-// special types (particular to Windows waveforms)
-#define SP_IART  20
-#define SP_ICMT  21
-#define SP_ICOP  22
-#define SP_ICRD  23
-#define SP_IENG  24
-#define SP_IGNR  25
-#define SP_IKEY  26
-#define SP_IMED  27
-#define SP_INAM  28
-#define SP_ISFT  29
-#define SP_ISRC  30
-#define SP_ITCH  31
-#define SP_ISBJ  32
-#define SP_ISRF  33
-#define SP_DISP  34
-#define SP_CUE   40 // returns number of cues of size cue_type 
-#define SP_LTXT  41 // returns number of adtl texts of size 8 (4,id and 4,len)
-#define SP_NOTE  42 // returns LO=size, HI=number of strings (sz sz sz...)
-#define SP_LABL	 43 // returns LO=size, HI=number of strings (sz sz sz...)
-#define SP_PLST  44 // returns number of playlist entries size play_type 
-*/
\ No newline at end of file
--- a/cooledit/main.c
+++ /dev/null
@@ -1,84 +1,0 @@
-#include <windows.h>
-#include "filters.h" //CoolEdit
-
-
-
-BOOL WINAPI DllMain (HANDLE hModule, DWORD fdwReason, LPVOID lpReserved)
-{
-   switch (fdwReason)
-   {
-      case DLL_PROCESS_ATTACH:
-        /* Code from LibMain inserted here.  Return TRUE to keep the
-            DLL loaded or return FALSE to fail loading the DLL.
- 
-            You may have to modify the code in your original LibMain to
-            account for the fact that it may be called more than once.
-            You will get one DLL_PROCESS_ATTACH for each process that
-            loads the DLL. This is different from LibMain which gets
-            called only once when the DLL is loaded. The only time this
-            is critical is when you are using shared data sections.
-            If you are using shared data sections for statically
-            allocated data, you will need to be careful to initialize it
-            only once. Check your code carefully.
- 
-            Certain one-time initializations may now need to be done for
-            each process that attaches. You may also not need code from
-            your original LibMain because the operating system may now
-            be doing it for you.
-         */
-         break;
- 
-      case DLL_THREAD_ATTACH:
-         /* Called each time a thread is created in a process that has
-            already loaded (attached to) this DLL. Does not get called
-            for each thread that exists in the process before it loaded
-            the DLL.
- 
-            Do thread-specific initialization here.
-         */
-         break;
- 
-      case DLL_THREAD_DETACH:
-         /* Same as above, but called when a thread in the process
-            exits.
- 
-            Do thread-specific cleanup here.
-         */
-         break;
- 
-      case DLL_PROCESS_DETACH:
-         /* Code from _WEP inserted here.  This code may (like the
-            LibMain) not be necessary.  Check to make certain that the
-            operating system is not doing it for you.
-         */
-         break;
-   }
- 
-   /* The return value is only used for DLL_PROCESS_ATTACH; all other
-      conditions are ignored.  */
-   return TRUE;   // successful DLL_PROCESS_ATTACH
-}
-
-// Fill COOLQUERY structure with information regarding this file filter
-
-__declspec(dllexport) short FAR PASCAL QueryCoolFilter(COOLQUERY far * cq)
-{
-	lstrcpy(cq->szName,"MPEG4-AAC Format");		
-	lstrcpy(cq->szCopyright,"Freeware AAC-MPEG4 codec");
-	lstrcpy(cq->szExt,"AAC");
-	lstrcpy(cq->szExt2,"MP4"); 
-	cq->lChunkSize=16384; 
-	cq->dwFlags=QF_RATEADJUSTABLE|QF_CANLOAD|QF_CANSAVE|QF_HASOPTIONSBOX;
- 	cq->Stereo8=0xFF; // supports all rates ???
- 	cq->Stereo16=0xFF;
- 	cq->Stereo24=0xFF;
- 	cq->Stereo32=0xFF;
- 	cq->Mono8=0xFF;
- 	cq->Mono16=0xFF;
- 	cq->Mono24=0xFF;
- 	cq->Mono32=0xFF;
- 	cq->Quad32=0xFF;
- 	cq->Quad16=0xFF;
- 	cq->Quad8=0xFF;
- 	return C_VALIDLIBRARY;
-}
--- a/cooledit/resource.h
+++ /dev/null
@@ -1,40 +1,0 @@
-//{{NO_DEPENDENCIES}}
-// Microsoft Developer Studio generated include file.
-// Used by FAAD.rc
-//
-#define IDD_COMPRESSION                 101
-#define IDB_LOGO                        104
-#define IDC_RADIO1                      1000
-#define IDC_RADIO_MPEG4                 1000
-#define IDC_RADIO2                      1001
-#define IDC_RADIO_MPEG2                 1001
-#define IDC_RADIO4                      1002
-#define IDC_RADIO_LOW                   1002
-#define IDC_RADIO3                      1003
-#define IDC_RADIO_MAIN                  1003
-#define IDC_RADIO5                      1004
-#define IDC_RADIO_SSR                   1004
-#define IDC_RADIO6                      1005
-#define IDC_RADIO_LTP                   1005
-#define IDC_RADIO7                      1006
-#define IDC_RADIO8                      1007
-#define IDC_RADIO9                      1008
-#define IDC_ALLOWMIDSIDE                1011
-#define IDC_USETNS                      1012
-#define IDC_USELFE                      1013
-#define IDC_CB_BANDWIDTH                1015
-#define IDC_CB_BITRATE                  1017
-#define IDC_CHK_AUTOCFG                 1020
-#define IDC_BTN_ABOUT                   1021
-#define IDC_IMG_LOGO                    1022
-
-// Next default values for new objects
-// 
-#ifdef APSTUDIO_INVOKED
-#ifndef APSTUDIO_READONLY_SYMBOLS
-#define _APS_NEXT_RESOURCE_VALUE        106
-#define _APS_NEXT_COMMAND_VALUE         40001
-#define _APS_NEXT_CONTROL_VALUE         1025
-#define _APS_NEXT_SYMED_VALUE           101
-#endif
-#endif
--- /dev/null
+++ b/plugins/cooledit/.cvsignore
@@ -1,0 +1,13 @@
+*.o
+*.so
+*.a
+*.ncb
+*.plg
+*.aps
+*.opt
+*.aac
+*.wav
+Release
+Debug
+ReleaseGUI
+DebugGUI
\ No newline at end of file
--- /dev/null
+++ b/plugins/cooledit/Config.c
@@ -1,0 +1,42 @@
+#include <windows.h>
+#include <stdio.h>
+
+
+static char app_name[] = "Freeware AAC encoder";
+static char INI_FILE[MAX_PATH];
+
+
+static void _r_s(char *name,char *data, int mlen)
+{
+char buf[2048];
+ strcpy(buf,data);
+ GetPrivateProfileString(app_name,name,buf,data,mlen,INI_FILE);
+}
+
+#define RS(x) (_r_s(#x,x,sizeof(x)))
+#define WS(x) (WritePrivateProfileString(app_name,#x,x,INI_FILE))
+
+
+void config_init()
+{
+	char *p=INI_FILE;
+	GetModuleFileName(NULL,INI_FILE,sizeof(INI_FILE));
+	while (*p) p++;
+	while (p >= INI_FILE && *p != '\\') p--;
+	strcpy(p+1,"plugins.ini");
+}
+
+void config_read(DWORD *dwOptions)
+{
+char Options[512];
+ config_init();
+ RS(Options);
+ *dwOptions=atoi(Options);
+}
+
+void config_write(DWORD dwOptions)
+{
+char Options[512];
+ sprintf(Options,"%lu",dwOptions);
+ WS(Options);
+}
--- /dev/null
+++ b/plugins/cooledit/FAAD.DSP
@@ -1,0 +1,148 @@
+# Microsoft Developer Studio Project File - Name="FAAD" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
+
+CFG=FAAD - Win32 Release
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE 
+!MESSAGE NMAKE /f "FAAD.MAK".
+!MESSAGE 
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE 
+!MESSAGE NMAKE /f "FAAD.MAK" CFG="FAAD - Win32 Release"
+!MESSAGE 
+!MESSAGE Possible choices for configuration are:
+!MESSAGE 
+!MESSAGE "FAAD - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "FAAD - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE 
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=xicl6.exe
+MTL=midl.exe
+RSC=rc.exe
+
+!IF  "$(CFG)" == "FAAD - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir ".\Release"
+# PROP BASE Intermediate_Dir ".\Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir ".\Release"
+# PROP Intermediate_Dir ".\Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c
+# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\..\include" /I "..\..\..\faad\include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD BASE MTL /nologo /D "NDEBUG" /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=xilink6.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:windows /dll /machine:I386
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:windows /dll /machine:I386 /nodefaultlib:"libc" /nodefaultlib:"libcd" /out:"Release\faac.flt"
+
+!ELSEIF  "$(CFG)" == "FAAD - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir ".\Debug"
+# PROP BASE Intermediate_Dir ".\Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir ".\Debug"
+# PROP Intermediate_Dir ".\Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c
+# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "..\..\include" /I "..\..\..\faad\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD BASE MTL /nologo /D "_DEBUG" /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=xilink6.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:windows /dll /debug /machine:I386
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:windows /dll /debug /machine:I386 /nodefaultlib:"libcd.dll" /out:"Debug\faac.flt"
+# SUBTRACT LINK32 /nodefaultlib
+
+!ENDIF 
+
+# Begin Target
+
+# Name "FAAD - Win32 Release"
+# Name "FAAD - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat;for;f90"
+# Begin Source File
+
+SOURCE=.\aacinfo.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\Config.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\FAAC.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\FAAD.C
+# End Source File
+# Begin Source File
+
+SOURCE=.\FAAD.def
+# End Source File
+# Begin Source File
+
+SOURCE=.\FAAD.rc
+# End Source File
+# Begin Source File
+
+SOURCE=.\Main.c
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl;fi;fd"
+# Begin Source File
+
+SOURCE=.\aacinfo.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\filters.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\RESOURCE.H
+# End Source File
+# End Group
+# Begin Group "Resource Files"
+
+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe"
+# Begin Source File
+
+SOURCE=.\Logo.bmp
+# End Source File
+# End Group
+# End Target
+# End Project
--- /dev/null
+++ b/plugins/cooledit/FAAD.rc
@@ -1,0 +1,146 @@
+//Microsoft Developer Studio generated resource script.
+//
+#include "resource.h"
+
+#define APSTUDIO_READONLY_SYMBOLS
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 2 resource.
+//
+#include "afxres.h"
+
+/////////////////////////////////////////////////////////////////////////////
+#undef APSTUDIO_READONLY_SYMBOLS
+
+/////////////////////////////////////////////////////////////////////////////
+// English (U.S.) resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
+#ifdef _WIN32
+LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
+#pragma code_page(1252)
+#endif //_WIN32
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Dialog
+//
+
+IDD_COMPRESSION DIALOG DISCARDABLE  0, 0, 176, 127
+STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
+CAPTION "AAC-MPEG4 options"
+FONT 8, "MS Sans Serif"
+BEGIN
+    CONTROL         "Automatic configuration",IDC_CHK_AUTOCFG,"Button",
+                    BS_AUTOCHECKBOX | WS_TABSTOP,4,4,90,10
+    CONTROL         "MPEG4",IDC_RADIO_MPEG4,"Button",BS_AUTORADIOBUTTON | 
+                    WS_GROUP,8,29,42,10
+    CONTROL         "MPEG2",IDC_RADIO_MPEG2,"Button",BS_AUTORADIOBUTTON,8,42,
+                    41,9
+    CONTROL         "Main",IDC_RADIO_MAIN,"Button",BS_AUTORADIOBUTTON | 
+                    WS_GROUP,12,73,31,10
+    CONTROL         "Low",IDC_RADIO_LOW,"Button",BS_AUTORADIOBUTTON,12,85,29,
+                    10
+    CONTROL         "SSR",IDC_RADIO_SSR,"Button",BS_AUTORADIOBUTTON | 
+                    WS_DISABLED,12,97,31,10
+    CONTROL         "LTP",IDC_RADIO_LTP,"Button",BS_AUTORADIOBUTTON,12,109,
+                    29,10
+    CONTROL         "Allow Mid/Side",IDC_ALLOWMIDSIDE,"Button",
+                    BS_AUTOCHECKBOX | WS_TABSTOP,59,21,63,10
+    CONTROL         "Use TNS",IDC_USETNS,"Button",BS_AUTOCHECKBOX | 
+                    WS_TABSTOP,59,33,45,10
+    CONTROL         "Use LFE channel",IDC_USELFE,"Button",BS_AUTOCHECKBOX | 
+                    WS_DISABLED | WS_TABSTOP,59,46,67,10
+    COMBOBOX        IDC_CB_BITRATE,124,68,48,30,CBS_DROPDOWNLIST | 
+                    WS_VSCROLL | WS_TABSTOP
+    COMBOBOX        IDC_CB_BANDWIDTH,124,85,48,30,CBS_DROPDOWN | WS_VSCROLL | 
+                    WS_TABSTOP
+    DEFPUSHBUTTON   "OK",IDOK,64,108,36,14
+    PUSHBUTTON      "Cancel",IDCANCEL,100,108,36,14
+    PUSHBUTTON      "About",IDC_BTN_ABOUT,136,108,36,14
+    GROUPBOX        "AAC type",IDC_STATIC,4,18,48,38
+    GROUPBOX        "Profile",IDC_STATIC,4,63,48,59
+    LTEXT           "Bitrate per channel",IDC_STATIC,59,73,60,8
+    LTEXT           "Bandwidth (0=full)",IDC_STATIC,59,89,57,8
+    CONTROL         104,IDC_IMG_LOGO,"Static",SS_BITMAP,136,4,36,23
+END
+
+
+#ifdef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// TEXTINCLUDE
+//
+
+1 TEXTINCLUDE DISCARDABLE 
+BEGIN
+    "resource.h\0"
+END
+
+2 TEXTINCLUDE DISCARDABLE 
+BEGIN
+    "#include ""afxres.h""\r\n"
+    "\0"
+END
+
+3 TEXTINCLUDE DISCARDABLE 
+BEGIN
+    "\r\n"
+    "\0"
+END
+
+#endif    // APSTUDIO_INVOKED
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// DESIGNINFO
+//
+
+#ifdef APSTUDIO_INVOKED
+GUIDELINES DESIGNINFO DISCARDABLE 
+BEGIN
+    IDD_COMPRESSION, DIALOG
+    BEGIN
+        LEFTMARGIN, 4
+        RIGHTMARGIN, 172
+        TOPMARGIN, 4
+        BOTTOMMARGIN, 122
+    END
+END
+#endif    // APSTUDIO_INVOKED
+
+#endif    // English (U.S.) resources
+/////////////////////////////////////////////////////////////////////////////
+
+
+/////////////////////////////////////////////////////////////////////////////
+// Italian (Italy) resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ITA)
+#ifdef _WIN32
+LANGUAGE LANG_ITALIAN, SUBLANG_ITALIAN
+#pragma code_page(1252)
+#endif //_WIN32
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Bitmap
+//
+
+IDB_LOGO                BITMAP  DISCARDABLE     "Logo.bmp"
+#endif    // Italian (Italy) resources
+/////////////////////////////////////////////////////////////////////////////
+
+
+
+#ifndef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 3 resource.
+//
+
+
+/////////////////////////////////////////////////////////////////////////////
+#endif    // not APSTUDIO_INVOKED
+
binary files /dev/null b/plugins/cooledit/Logo.bmp differ
--- /dev/null
+++ b/plugins/cooledit/Readme.txt
@@ -1,0 +1,6 @@
+Set Active Configuration = FAAD - win32 Release,
+compile,
+copy FAAC.flt into CoolEdit folder
+delete flt.dat
+
+mail: kreel@interfree.it
--- /dev/null
+++ b/plugins/cooledit/aacinfo.c
@@ -1,0 +1,249 @@
+/*
+ * FAAD - Freeware Advanced Audio Decoder
+ * Copyright (C) 2001 Menno Bakker
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * $Id: aacinfo.c,v 1.1 2001/10/11 09:53:44 menno Exp $
+ */
+
+#include <windows.h>
+#include "aacinfo.h"
+
+#define ADIF_MAX_SIZE 30 /* Should be enough */
+#define ADTS_MAX_SIZE 10 /* Should be enough */
+
+const int sample_rates[] = {96000,88200,64000,48000,44100,32000,24000,22050,16000,12000,11025,8000};
+
+static int read_ADIF_header(HANDLE file, faadAACInfo *info)
+{
+	unsigned long tmp;
+	int bitstream;
+	unsigned char buffer[ADIF_MAX_SIZE];
+	int skip_size = 0;
+	int sf_idx;
+
+	/* Get ADIF header data */
+	
+	info->headertype = 1;
+
+	ReadFile(file, buffer, ADIF_MAX_SIZE, &tmp, 0);
+
+	/* copyright string */	
+	if(buffer[4] & 128)
+		skip_size += 9; /* skip 9 bytes */
+
+	bitstream = buffer[4 + skip_size] & 16;
+	info->bitrate = ((unsigned int)(buffer[4 + skip_size] & 0x0F)<<19)|
+		((unsigned int)buffer[5 + skip_size]<<11)|
+		((unsigned int)buffer[6 + skip_size]<<3)|
+		((unsigned int)buffer[7 + skip_size] & 0xE0);
+
+	if (bitstream == 0) {
+		info->object_type = ((buffer[9 + skip_size]&0x01)<<1)|((buffer[10 + skip_size]&0x80)>>7);
+		sf_idx = (buffer[10 + skip_size]&0x78)>>3;
+		info->channels = ((buffer[10 + skip_size]&0x07)<<1)|((buffer[11 + skip_size]&0x80)>>7);
+	} else {
+		info->object_type = (buffer[7 + skip_size] & 0x18)>>3;
+		sf_idx = ((buffer[7 + skip_size] & 0x07)<<1)|((buffer[8 + skip_size] & 0x80)>>7);
+		info->channels = (buffer[8 + skip_size]&0x78)>>3;
+	}
+	info->sampling_rate = sample_rates[sf_idx];
+
+	return 0;
+}
+
+static int read_ADTS_header(HANDLE file, faadAACInfo *info, int *seek_table,
+							int tagsize)
+{
+	/* Get ADTS header data */
+	unsigned char buffer[ADTS_MAX_SIZE];
+	int frames, t_framelength = 0, frame_length, sr_idx, ID;
+	int second = 0, pos;
+	float frames_per_sec = 0;
+	unsigned long bytes;
+
+	info->headertype = 2;
+
+	/* Seek to the first frame */
+	SetFilePointer(file, tagsize, NULL, FILE_BEGIN);
+
+	/* Read all frames to ensure correct time and bitrate */
+	for(frames=0; /* */; frames++)
+	{
+		/* 12 bit SYNCWORD */
+		ReadFile(file, buffer, ADTS_MAX_SIZE, &bytes, 0);
+		if(bytes != ADTS_MAX_SIZE)
+		{
+			/* Bail out if no syncword found */
+			break;
+		}
+
+		if (!((buffer[0] == 0xFF)&&((buffer[1] & 0xF6) == 0xF0)))
+			break;
+
+		pos = SetFilePointer(file, 0, NULL, FILE_CURRENT) - ADTS_MAX_SIZE;
+
+		if(!frames)
+		{
+			/* fixed ADTS header is the same for every frame, so we read it only once */ 
+			/* Syncword found, proceed to read in the fixed ADTS header */ 
+			ID = buffer[1] & 0x08;
+			info->object_type = (buffer[2]&0xC0)>>6;
+			sr_idx = (buffer[2]&0x3C)>>2;
+			info->channels = ((buffer[2]&0x01)<<2)|((buffer[3]&0xC0)>>6);
+
+			frames_per_sec = sample_rates[sr_idx] / 1024.f;
+		}
+
+		/* ...and the variable ADTS header */
+		if (ID == 0) {
+			info->version = 4;
+			frame_length = (((unsigned int)buffer[4]) << 5) |
+				((unsigned int)buffer[5] >> 3);
+		} else { /* MPEG-2 */
+			info->version = 2;
+			frame_length = ((((unsigned int)buffer[3] & 0x3)) << 11)
+				| (((unsigned int)buffer[4]) << 3) | (buffer[5] >> 5);
+		}
+
+		t_framelength += frame_length;
+
+		if (frames > second*frames_per_sec)
+		{
+			seek_table[second] = pos;
+			second++;
+		}
+
+		SetFilePointer(file, frame_length - ADTS_MAX_SIZE, NULL, FILE_CURRENT);
+	}
+
+	info->sampling_rate = sample_rates[sr_idx];
+	info->bitrate = (int)(((t_framelength / frames) * (info->sampling_rate/1024.0)) +0.5)*8;
+	info->length = (int)((float)(frames/frames_per_sec))*1000;
+
+	return 0;
+}
+
+static int f_id3v2_tag(HANDLE file)
+{
+	unsigned char buffer[10];
+	unsigned long tmp;
+
+	ReadFile(file, buffer, 10, &tmp, 0);
+
+	if (StringComp(buffer, "ID3", 3) == 0) {
+		unsigned long tagsize;
+
+		/* high bit is not used */
+		tagsize = (buffer[6] << 21) | (buffer[7] << 14) |
+			(buffer[8] <<  7) | (buffer[9] <<  0);
+
+		tagsize += 10;
+
+		SetFilePointer(file, tagsize, NULL, FILE_BEGIN);
+
+		return tagsize;
+	} else {
+		SetFilePointer(file, 0, NULL, FILE_BEGIN);
+
+		return 0;
+	}
+}
+
+int get_AAC_format(char *filename, faadAACInfo *info, int *seek_table)
+{
+	unsigned int tagsize;
+	HANDLE file;
+	unsigned long file_len;
+	unsigned char adxx_id[5];
+	unsigned long tmp;
+
+	if(StringComp(filename, "http://", 7) == 0)
+	{
+		info->version = 2;
+		info->length = 0;
+		info->bitrate = 128000;
+		info->sampling_rate = 44100;
+		info->channels = 2;
+		info->headertype = 0;
+		info->object_type = 1;
+
+		return 0;
+	}
+
+	file = CreateFile(filename, GENERIC_READ,
+		FILE_SHARE_READ | FILE_SHARE_WRITE, 0,
+		OPEN_EXISTING, FILE_FLAG_SEQUENTIAL_SCAN, 0);
+	if (file == INVALID_HANDLE_VALUE)
+		return -1;
+
+	file_len = GetFileSize(file, NULL);
+
+	tagsize = f_id3v2_tag(file); /* Skip the tag, if it's there */
+	file_len -= tagsize;
+
+	ReadFile(file, adxx_id, 4, &tmp, 0);
+	SetFilePointer(file, tagsize, NULL, FILE_BEGIN);
+
+	adxx_id[5-1] = 0;
+
+	info->length = 0;
+
+	if(StringComp(adxx_id, "ADIF", 4) == 0)
+	{
+		read_ADIF_header(file, info);
+	}
+	else
+	{
+		if ((adxx_id[0] == 0xFF)&&((adxx_id[1] & 0xF6) == 0xF0))
+		{
+//			SetFilePointer(file, tagsize, NULL, FILE_BEGIN);
+			read_ADTS_header(file, info, seek_table, tagsize);
+		}
+		else
+		{
+			/* Unknown/headerless AAC file, assume format: */
+			info->version = 2;
+			info->bitrate = 128000;
+			info->sampling_rate = 44100;
+			info->channels = 2;
+			info->headertype = 0;
+			info->object_type = 1;
+		}
+	}
+
+	if (info->length == 0)
+		info->length = (int)((file_len/(((info->bitrate*8)/1024)*16))*1000);
+
+	CloseHandle(file);
+
+	return 0;
+}
+
+int StringComp(char const *str1, char const *str2, unsigned long len)
+{
+	signed int c1 = 0, c2 = 0;
+
+	while (len--) {
+		c1 = *str1++;
+		c2 = *str2++;
+
+		if (c1 == 0 || c1 != c2)
+			break;
+	}
+
+	return c1 - c2;
+}
--- /dev/null
+++ b/plugins/cooledit/aacinfo.h
@@ -1,0 +1,39 @@
+/*
+ * FAAD - Freeware Advanced Audio Decoder
+ * Copyright (C) 2001 Menno Bakker
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * $Id: aacinfo.h,v 1.1 2001/10/11 09:53:44 menno Exp $
+ */
+
+typedef struct {
+	int version;
+	int channels;
+	int sampling_rate;
+	int bitrate;
+	int length;
+	int object_type;
+	int headertype;
+} faadAACInfo;
+
+
+int get_AAC_format(char *filename, faadAACInfo *info, int *seek_table);
+
+static int f_id3v2_tag(HANDLE file);
+static int read_ADIF_header(HANDLE file, faadAACInfo *info);
+static int read_ADTS_header(HANDLE file, faadAACInfo *info, int *seek_table,
+							int tagsize);
+int StringComp(char const *str1, char const *str2, unsigned long len);
binary files /dev/null b/plugins/cooledit/bitmap1.bmp differ
--- /dev/null
+++ b/plugins/cooledit/faac.c
@@ -1,0 +1,517 @@
+#include <windows.h>
+#include <stdio.h>  // FILE *
+#include "filters.h" //CoolEdit
+#include "resource.h"
+#include "faac.h"
+
+
+#define PI_VER "v1.0beta"
+
+
+extern void config_init();
+extern void config_read(DWORD *dwOptions);
+extern void config_write(DWORD dwOptions);
+
+
+typedef struct output_tag  // any special vars associated with output file
+{
+ FILE  *fFile;         
+ DWORD lSize;
+ long  lSamprate;
+ WORD  wBitsPerSample;
+ WORD  wChannels;
+// DWORD dwDataOffset;
+// BOOL  bWrittenHeader;
+ char  szNAME[256];
+
+ faacEncHandle hEncoder;
+ unsigned char *bitbuf;
+ DWORD maxBytesOutput;
+ long  samplesInput;
+ BOOL  bStopEnc;
+} MYOUTPUT;
+
+
+
+__declspec(dllexport) BOOL FAR PASCAL DIALOGMsgProc(HWND hWndDlg, UINT Message, WPARAM wParam, LPARAM lParam)
+{
+DWORD dwOptions=(DWORD)lParam;
+
+ switch(Message)
+ {
+  case WM_INITDIALOG:
+	  {
+      char buf[10];
+
+       SendMessage(GetDlgItem(hWndDlg, IDC_CB_BITRATE), CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)"8");
+       SendMessage(GetDlgItem(hWndDlg, IDC_CB_BITRATE), CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)"18");
+       SendMessage(GetDlgItem(hWndDlg, IDC_CB_BITRATE), CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)"20");
+       SendMessage(GetDlgItem(hWndDlg, IDC_CB_BITRATE), CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)"24");
+       SendMessage(GetDlgItem(hWndDlg, IDC_CB_BITRATE), CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)"32");
+       SendMessage(GetDlgItem(hWndDlg, IDC_CB_BITRATE), CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)"40");
+       SendMessage(GetDlgItem(hWndDlg, IDC_CB_BITRATE), CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)"48");
+       SendMessage(GetDlgItem(hWndDlg, IDC_CB_BITRATE), CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)"56");
+       SendMessage(GetDlgItem(hWndDlg, IDC_CB_BITRATE), CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)"64");
+       SendMessage(GetDlgItem(hWndDlg, IDC_CB_BITRATE), CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)"96");
+       SendMessage(GetDlgItem(hWndDlg, IDC_CB_BITRATE), CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)"112");
+       SendMessage(GetDlgItem(hWndDlg, IDC_CB_BITRATE), CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)"128");
+       SendMessage(GetDlgItem(hWndDlg, IDC_CB_BITRATE), CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)"160");
+       SendMessage(GetDlgItem(hWndDlg, IDC_CB_BITRATE), CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)"192");
+       SendMessage(GetDlgItem(hWndDlg, IDC_CB_BITRATE), CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)"256");
+       SendMessage(GetDlgItem(hWndDlg, IDC_CB_BITRATE), CB_SETCURSEL, 8, 0);
+
+       SendMessage(GetDlgItem(hWndDlg, IDC_CB_BANDWIDTH), CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)"0");
+       SendMessage(GetDlgItem(hWndDlg, IDC_CB_BANDWIDTH), CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)"4000");
+       SendMessage(GetDlgItem(hWndDlg, IDC_CB_BANDWIDTH), CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)"8000");
+       SendMessage(GetDlgItem(hWndDlg, IDC_CB_BANDWIDTH), CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)"16000");
+       SendMessage(GetDlgItem(hWndDlg, IDC_CB_BANDWIDTH), CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)"22050");
+       SendMessage(GetDlgItem(hWndDlg, IDC_CB_BANDWIDTH), CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)"24000");
+       SendMessage(GetDlgItem(hWndDlg, IDC_CB_BANDWIDTH), CB_SETCURSEL, 0, 0);
+
+//       if(!((dwOptions>>23)&1))
+	   {
+        config_init();
+        config_read(&dwOptions);
+	   }
+
+	   if(dwOptions)
+	   {
+       char Enabled=!(dwOptions&1);
+		CheckDlgButton(hWndDlg,IDC_CHK_AUTOCFG, dwOptions&1);
+        EnableWindow(GetDlgItem(hWndDlg, IDC_RADIO_MPEG4), Enabled);
+        EnableWindow(GetDlgItem(hWndDlg, IDC_RADIO_MPEG2), Enabled);
+        EnableWindow(GetDlgItem(hWndDlg, IDC_RADIO_MAIN), Enabled);
+        EnableWindow(GetDlgItem(hWndDlg, IDC_RADIO_LOW), Enabled);
+        EnableWindow(GetDlgItem(hWndDlg, IDC_RADIO_SSR), Enabled);
+        EnableWindow(GetDlgItem(hWndDlg, IDC_RADIO_LTP), Enabled);
+        EnableWindow(GetDlgItem(hWndDlg, IDC_ALLOWMIDSIDE), Enabled);
+        EnableWindow(GetDlgItem(hWndDlg, IDC_USETNS), Enabled);
+//        EnableWindow(GetDlgItem(hWndDlg, IDC_USELFE), Enabled);
+        EnableWindow(GetDlgItem(hWndDlg, IDC_CB_BITRATE), Enabled);
+        EnableWindow(GetDlgItem(hWndDlg, IDC_CB_BANDWIDTH), Enabled);
+
+	    if(((dwOptions>>29)&7)==MPEG4)
+	     CheckDlgButton(hWndDlg,IDC_RADIO_MPEG4,TRUE);
+		else
+		 CheckDlgButton(hWndDlg,IDC_RADIO_MPEG2,TRUE);
+
+		switch((dwOptions>>27)&3)
+		{
+		 case 0:
+              CheckDlgButton(hWndDlg,IDC_RADIO_MAIN,TRUE);
+		      break;
+		 case 1:
+              CheckDlgButton(hWndDlg,IDC_RADIO_LOW,TRUE);
+		      break;
+		 case 2:
+              CheckDlgButton(hWndDlg,IDC_RADIO_SSR,TRUE);
+		      break;
+		  case 3:
+               CheckDlgButton(hWndDlg,IDC_RADIO_LTP,TRUE);
+		       break;
+		}
+
+		CheckDlgButton(hWndDlg, IDC_ALLOWMIDSIDE, (dwOptions>>26)&1);
+        CheckDlgButton(hWndDlg, IDC_USETNS, (dwOptions>>25)&1);
+        CheckDlgButton(hWndDlg, IDC_USELFE, (dwOptions>>24)&1);
+
+        SendMessage(GetDlgItem(hWndDlg, IDC_CB_BITRATE), CB_SETCURSEL, (dwOptions>>19)&31, 0);
+//        SendMessage(GetDlgItem(hWndDlg, IDC_CB_BANDWIDTH), CB_SETCURSEL, (dwOptions>>1)&0x0000ffff, 0);
+		sprintf(buf,"%lu",(dwOptions>>1)&0x0000ffff);
+        SetDlgItemText(hWndDlg, IDC_CB_BANDWIDTH, buf);
+		break;
+	   } // End dwOptions
+
+       CheckDlgButton(hWndDlg, IDC_ALLOWMIDSIDE, TRUE);
+       CheckDlgButton(hWndDlg, IDC_USETNS, TRUE);
+       CheckDlgButton(hWndDlg, IDC_USELFE, FALSE);
+
+	   switch((long)lParam)
+	   {
+	    case IDC_RADIO_MPEG4:
+			 CheckDlgButton(hWndDlg,IDC_RADIO_MPEG4,TRUE);
+			 break;
+		case IDC_RADIO_MPEG2:
+			 CheckDlgButton(hWndDlg,IDC_RADIO_MPEG2,TRUE);
+			 break;
+		case IDC_RADIO_MAIN:
+			 CheckDlgButton(hWndDlg,IDC_RADIO_MAIN,TRUE);
+			 break;
+		case IDC_RADIO_LOW:
+			 CheckDlgButton(hWndDlg,IDC_RADIO_LOW,TRUE);
+			 break;
+		case IDC_RADIO_SSR:
+			 CheckDlgButton(hWndDlg,IDC_RADIO_SSR,TRUE);
+			 break;
+		case IDC_RADIO_LTP:
+			 CheckDlgButton(hWndDlg,IDC_RADIO_LTP,TRUE);
+			 break;
+		case IDC_CHK_AUTOCFG:
+			 CheckDlgButton(hWndDlg,IDC_CHK_AUTOCFG, !IsDlgButtonChecked(hWndDlg,IDC_CHK_AUTOCFG));
+			 break;
+		default:
+			 CheckDlgButton(hWndDlg,IDC_RADIO_MPEG4,TRUE);
+			 CheckDlgButton(hWndDlg,IDC_RADIO_MAIN,TRUE);
+			 break;
+	   }         
+	  }
+       break; // End of WM_INITDIALOG                                 
+
+  case WM_CLOSE:
+       // Closing the Dialog behaves the same as Cancel               
+       PostMessage(hWndDlg, WM_COMMAND, IDCANCEL, 0L);
+       break; // End of WM_CLOSE                                      
+
+  case WM_COMMAND:
+	   switch(LOWORD(wParam))
+       {
+	   case IDC_CHK_AUTOCFG:
+		   {
+           char Enabled=!IsDlgButtonChecked(hWndDlg,IDC_CHK_AUTOCFG);
+      		EnableWindow(GetDlgItem(hWndDlg, IDC_RADIO_MPEG4), Enabled);
+      		EnableWindow(GetDlgItem(hWndDlg, IDC_RADIO_MPEG2), Enabled);
+      		EnableWindow(GetDlgItem(hWndDlg, IDC_RADIO_MAIN), Enabled);
+      		EnableWindow(GetDlgItem(hWndDlg, IDC_RADIO_LOW), Enabled);
+      		EnableWindow(GetDlgItem(hWndDlg, IDC_RADIO_SSR), Enabled);
+      		EnableWindow(GetDlgItem(hWndDlg, IDC_RADIO_LTP), Enabled);
+      		EnableWindow(GetDlgItem(hWndDlg, IDC_ALLOWMIDSIDE), Enabled);
+      		EnableWindow(GetDlgItem(hWndDlg, IDC_USETNS), Enabled);
+//      		EnableWindow(GetDlgItem(hWndDlg, IDC_USELFE), Enabled);
+      		EnableWindow(GetDlgItem(hWndDlg, IDC_CB_BITRATE), Enabled);
+      		EnableWindow(GetDlgItem(hWndDlg, IDC_CB_BANDWIDTH), Enabled);
+		   }
+           break;
+
+	   case IDOK:
+		   {
+		   DWORD retVal=0;
+           faacEncConfiguration faacEncCfg;
+              if(IsDlgButtonChecked(hWndDlg,IDC_RADIO_MPEG4))
+			  {
+               faacEncCfg.mpegVersion=MPEG4;
+			   retVal|=MPEG4<<29;
+			  }
+              if(IsDlgButtonChecked(hWndDlg,IDC_RADIO_MPEG2))
+			  {
+               faacEncCfg.mpegVersion=MPEG2;
+			   retVal|=MPEG2<<29;
+			  }
+              if(IsDlgButtonChecked(hWndDlg,IDC_RADIO_MAIN))
+			  {
+               faacEncCfg.aacObjectType=MAIN;
+			   retVal|=MAIN<<27;
+			  }
+              if(IsDlgButtonChecked(hWndDlg,IDC_RADIO_LOW))
+			  {
+               faacEncCfg.aacObjectType=LOW;
+			   retVal|=LOW<<27;
+			  }
+              if(IsDlgButtonChecked(hWndDlg,IDC_RADIO_SSR))
+			  {
+               faacEncCfg.aacObjectType=SSR;
+			   retVal|=SSR<<27;
+			  }
+              if(IsDlgButtonChecked(hWndDlg,IDC_RADIO_LTP))
+			  {
+               faacEncCfg.aacObjectType=LTP;
+			   retVal|=LTP<<27;
+			  }
+
+              faacEncCfg.allowMidside=IsDlgButtonChecked(hWndDlg, IDC_ALLOWMIDSIDE) == BST_CHECKED ? 1 : 0;
+              retVal|=faacEncCfg.allowMidside<<26;
+              faacEncCfg.useTns=IsDlgButtonChecked(hWndDlg, IDC_USETNS) == BST_CHECKED ? 1 : 0;
+              retVal|=faacEncCfg.useTns<<25;
+              faacEncCfg.useLfe=IsDlgButtonChecked(hWndDlg, IDC_USELFE) == BST_CHECKED ? 1 : 0;
+              retVal|=faacEncCfg.useLfe<<24;
+			  
+			  faacEncCfg.bitRate=GetDlgItemInt(hWndDlg, IDC_CB_BITRATE, 0, FALSE);
+			  retVal|=(SendMessage(GetDlgItem(hWndDlg, IDC_CB_BITRATE), CB_GETCURSEL, 0, 0)&31)<<19;
+              //retVal|=faacEncCfg.bitRate;
+			  faacEncCfg.bandWidth=GetDlgItemInt(hWndDlg, IDC_CB_BANDWIDTH, 0, FALSE);
+//			  retVal|=(SendMessage(GetDlgItem(hWndDlg, IDC_CB_BANDWIDTH), CB_GETCURSEL, 0, 0)&0x0000ffff)<<1;
+			  retVal|=(faacEncCfg.bandWidth&0x0000ffff)<<1;
+             
+			  if(IsDlgButtonChecked(hWndDlg,IDC_CHK_AUTOCFG))
+			   retVal|=1;
+
+              config_write(retVal);
+			  
+//			  retVal|=1<<23; // CFG has been written
+
+              EndDialog(hWndDlg, retVal);
+             }
+             break;
+
+        case IDCANCEL:
+             // Ignore data values entered into the controls        
+             // and dismiss the dialog window returning FALSE       
+             EndDialog(hWndDlg, FALSE);
+             break;
+
+		case IDC_BTN_ABOUT:
+           	 {
+		     char buf[256];
+ 			  sprintf(buf,"AAC-MPEG4 encoder plug-in %s\nThis plugin uses FAAC encoder engine v%g\n\nCompiled on %s\n",
+				          PI_VER,
+		 	              FAACENC_VERSION,
+						  __DATE__
+						  );
+		      MessageBox(hWndDlg, buf, "About", MB_OK);
+             }
+             break;
+       }
+       break; // End of WM_COMMAND                                 
+  default: return FALSE;
+ }
+ return TRUE;
+} // End of DIALOGSMsgProc                                      
+
+__declspec(dllexport) DWORD FAR PASCAL FilterGetOptions(HWND hWnd, HINSTANCE hInst, long lSamprate, WORD wChannels, WORD wBitsPerSample, DWORD dwOptions) // return 0 if no options box
+{
+long nDialogReturn=0;
+FARPROC lpfnDIALOGMsgProc;
+	
+ lpfnDIALOGMsgProc=GetProcAddress(hInst,(LPCSTR)MAKELONG(20,0));			
+ nDialogReturn=(long)DialogBoxParam((HINSTANCE)hInst,(LPCSTR)MAKEINTRESOURCE(IDD_COMPRESSION), (HWND)hWnd, (DLGPROC)lpfnDIALOGMsgProc, dwOptions);
+
+ return nDialogReturn;
+}
+
+__declspec(dllexport) DWORD FAR PASCAL FilterWriteFirstSpecialData(HANDLE hInput, 
+	SPECIALDATA * psp)
+{
+ return 0;
+}
+
+__declspec(dllexport) DWORD FAR PASCAL FilterWriteNextSpecialData(HANDLE hInput, SPECIALDATA * psp)
+{	
+ return 0;
+// only has 1 special data!  Otherwise we would use psp->hSpecialData
+// as either a counter to know which item to retrieve next, or as a
+// structure with other state information in it.
+}
+
+__declspec(dllexport) DWORD FAR PASCAL FilterWriteSpecialData(HANDLE hOutput,
+	LPCSTR szListType, LPCSTR szType, char * pData,DWORD dwSize)
+{
+ return 0;
+}
+
+__declspec(dllexport) void FAR PASCAL CloseFilterOutput(HANDLE hOutput)
+{
+ if(hOutput)
+ {
+ MYOUTPUT *mo;
+  mo=(MYOUTPUT *)GlobalLock(hOutput);
+
+ if(mo->fFile)
+ {
+  fclose(mo->fFile);
+  mo->fFile=0;
+ }
+
+ if(mo->hEncoder)
+  faacEncClose(mo->hEncoder);
+
+ if(mo->bitbuf)
+ {
+  free(mo->bitbuf);
+  mo->bitbuf=0;
+ }
+
+  GlobalUnlock(hOutput);
+  GlobalFree(hOutput);
+ }
+}              
+
+__declspec(dllexport) HANDLE FAR PASCAL OpenFilterOutput(LPSTR lpstrFilename,long lSamprate,WORD wBitsPerSample,WORD wChannels,long lSize, long far *lpChunkSize, DWORD dwOptions)
+{
+HANDLE        hOutput;
+faacEncHandle hEncoder;
+FILE          *outfile;
+unsigned char *bitbuf;
+DWORD         maxBytesOutput;
+long          samplesInput;
+int           bytesEncoded;
+
+//    if(!((dwOptions>>23)&1))
+	{
+     config_init();
+     config_read(&dwOptions);
+	}
+
+// open the aac output file 
+	if(!(outfile=fopen(lpstrFilename, "wb")))
+	{
+     MessageBox(0, "Can't create file", "FAAC interface", MB_OK);
+	 return 0;
+	}
+
+// open the encoder library
+	if(!(hEncoder=faacEncOpen(lSamprate, wChannels, &samplesInput, &maxBytesOutput)))
+	{
+	 MessageBox(0, "Can't init library", "FAAC interface", MB_OK);
+	 fclose(outfile);
+	 return 0;
+	}
+
+	if(!(bitbuf=(unsigned char*)malloc(maxBytesOutput*sizeof(unsigned char))))
+	{
+	 MessageBox(0, "Memory allocation error: output buffer", "FAAC interface", MB_OK);
+     faacEncClose(hEncoder);
+	 fclose(outfile);
+	 return 0;
+	}
+
+	*lpChunkSize=samplesInput*2;
+
+    hOutput=GlobalAlloc(GMEM_MOVEABLE|GMEM_SHARE,sizeof(MYOUTPUT));
+    if(hOutput)
+    {
+	MYOUTPUT *mo;
+	 mo=(MYOUTPUT *)GlobalLock(hOutput);
+	 mo->fFile=outfile;
+	 mo->lSize=lSize;
+	 mo->lSamprate=lSamprate;
+	 mo->wBitsPerSample=wBitsPerSample;
+	 mo->wChannels=wChannels;
+//	 mo->dwDataOffset=0; // ???
+//	 mo->bWrittenHeader=0;
+	 strcpy(mo->szNAME,lpstrFilename);
+
+	 mo->hEncoder=hEncoder;
+     mo->bitbuf=bitbuf;
+	 mo->maxBytesOutput=maxBytesOutput;
+	 mo->samplesInput=samplesInput;
+	 mo->bStopEnc=0;
+
+	 GlobalUnlock(hOutput);
+    }
+	else
+	{
+	 MessageBox(0, "hOutput=NULL", "FAAC interface", MB_OK);
+     faacEncClose(hEncoder);
+	 fclose(outfile);
+	 free(bitbuf);
+	 return 0;
+	}
+
+	if(dwOptions && !(dwOptions&1))
+	{
+    faacEncConfigurationPtr myFormat;
+     myFormat=faacEncGetCurrentConfiguration(hEncoder);
+
+     myFormat->mpegVersion=(dwOptions>>29)&7;
+	 myFormat->aacObjectType=(dwOptions>>27)&3;
+	 myFormat->allowMidside=(dwOptions>>26)&1;
+	 myFormat->useTns=(dwOptions>>25)&1;
+	 myFormat->useLfe=(dwOptions>>24)&1;
+	 switch((dwOptions>>1)&31)
+	 {
+	  case 0:
+           myFormat->bitRate=8000;
+		   break;
+	  case 1:
+           myFormat->bitRate=18000;
+		   break;
+	  case 2:
+           myFormat->bitRate=20000;
+		   break;
+	  case 3:
+           myFormat->bitRate=24000;
+		   break;
+	  case 4:
+           myFormat->bitRate=32000;
+		   break;
+	  case 5:
+           myFormat->bitRate=40000;
+		   break;
+	  case 6:
+           myFormat->bitRate=48000;
+		   break;
+	  case 7:
+           myFormat->bitRate=56000;
+		   break;
+	  case 8:
+           myFormat->bitRate=64000;
+		   break;
+	  case 9:
+           myFormat->bitRate=96000;
+		   break;
+	  case 10:
+           myFormat->bitRate=112000;
+		   break;
+	  case 11:
+           myFormat->bitRate=128000;
+		   break;
+	  case 12:
+           myFormat->bitRate=160000;
+		   break;
+	  case 13:
+           myFormat->bitRate=192000;
+		   break;
+	  case 14:
+           myFormat->bitRate=256000;
+		   break;
+	 }
+     myFormat->bandWidth=(dwOptions>>1)&0x0000ffff;
+     if(!myFormat->bandWidth)
+	  myFormat->bandWidth=lSamprate/2;
+
+	 if(!faacEncSetConfiguration(hEncoder, myFormat))
+	 {
+      MessageBox(0, "Unsupported parameters", "FAAC interface", MB_OK);
+      faacEncClose(hEncoder);
+	  fclose(outfile);
+	  free(bitbuf);
+      GlobalFree(hOutput);
+	  return 0;
+	 }
+	}
+
+// init flushing process
+    bytesEncoded=faacEncEncode(hEncoder, 0, 0, bitbuf, maxBytesOutput); // initializes the flushing process
+    if(bytesEncoded>0)
+	 fwrite(bitbuf, 1, bytesEncoded, outfile);
+
+    return hOutput;
+}
+
+__declspec(dllexport) DWORD FAR PASCAL WriteFilterOutput(HANDLE hOutput, unsigned char far *buf, long lBytes)
+{
+int bytesWritten;
+int bytesEncoded;
+
+ if(hOutput)
+ { 
+ MYOUTPUT far *mo;
+  mo=(MYOUTPUT far *)GlobalLock(hOutput);
+
+  if(!mo->bStopEnc)
+  {
+// call the actual encoding routine
+   bytesEncoded=faacEncEncode(mo->hEncoder, (short *)buf, mo->samplesInput, mo->bitbuf, mo->maxBytesOutput);
+   if(bytesEncoded<1) // end of flushing process
+   {
+    if(bytesEncoded<0)
+     MessageBox(0, "faacEncEncode() failed", "FAAC interface", MB_OK);
+    mo->bStopEnc=1;
+    GlobalUnlock(hOutput);
+    return 0;
+   }
+// write bitstream to aac file 
+   bytesWritten=fwrite(mo->bitbuf, 1, bytesEncoded, mo->fFile);
+   if(bytesWritten!=bytesEncoded)
+   {
+    MessageBox(0, "bytesWritten and bytesEncoded are different", "FAAC interface", MB_OK);
+    mo->bStopEnc=1;
+    GlobalUnlock(hOutput);
+    return 0;
+   }
+
+   GlobalUnlock(hOutput);
+  }
+ }
+
+ return bytesWritten;
+}
--- /dev/null
+++ b/plugins/cooledit/faad.c
@@ -1,0 +1,430 @@
+#include <windows.h>
+#include <stdio.h>  // FILE *
+#include "filters.h" //CoolEdit
+#include "faad.h"
+#include "aacinfo.h"
+
+
+#define MAX_CHANNELS 2
+
+
+typedef struct input_tag // any special vars associated with input file
+{
+ FILE  *fFile;
+ DWORD lSize;    
+ DWORD len_ms;
+ WORD  wChannels;
+ DWORD dwSamprate;
+ WORD  wBitsPerSample;
+ char  szName[256];
+
+ faacDecHandle hDecoder;
+ faadAACInfo   file_info;
+ unsigned char *buffer;
+ DWORD full_size; // size of decoded file needed to set the length of progress bar
+ DWORD tagsize;
+ DWORD bytes_read; // from file
+ DWORD bytes_consumed; // by faadDecDecode
+ DWORD bytes_into_buffer;
+ DWORD bytes_Enc;
+//	   bytesDec; // Not used because I prefer decode until possible and not until file_info.lenght
+} MYINPUT;
+
+
+int id3v2_tag(unsigned char *buffer)
+{
+ if(StringComp(buffer, "ID3", 3) == 0) 
+ {
+unsigned long tagsize;
+
+/* high bit is not used */
+  tagsize=(buffer[6] << 21) | (buffer[7] << 14) |
+          (buffer[8] <<  7) | (buffer[9] <<  0);
+  tagsize += 10;
+  return tagsize;
+ }
+ else 
+  return 0;
+}
+
+__declspec(dllexport) BOOL FAR PASCAL FilterUnderstandsFormat(LPSTR filename)
+{
+WORD len;
+ if((len=lstrlen(filename))>4 && 
+	(!strcmpi(filename+len-4,".aac") ||
+	 !strcmpi(filename+len-4,".mp4")))
+  return TRUE;
+ return FALSE;
+}
+
+__declspec(dllexport) long FAR PASCAL FilterGetFileSize(HANDLE hInput)
+{
+DWORD full_size;
+
+ if(hInput)  
+ {
+ MYINPUT *mi;
+  mi=(MYINPUT *)GlobalLock(hInput);
+  full_size=mi->full_size;
+
+  GlobalUnlock(hInput);
+ }
+
+ return full_size;
+}
+
+__declspec(dllexport) DWORD FAR PASCAL FilterOptions(HANDLE hInput)
+{
+ return 0L;
+}	    
+
+__declspec(dllexport) DWORD FAR PASCAL FilterOptionsString(HANDLE hInput, LPSTR szString)
+{
+char buf[20];
+
+ if(hInput)
+ {
+ MYINPUT *mi;
+  mi=(MYINPUT *)GlobalLock(hInput);
+ 
+  lstrcpy(szString,"");
+
+  if(mi->file_info.version == 2)
+   lstrcat(szString,"MPEG2 - ");
+  else
+   lstrcat(szString,"MPEG4 - ");
+ 
+  sprintf(buf,"%lu bps\n",mi->file_info.bitrate);
+  lstrcat(szString,buf);
+ 
+  switch(mi->file_info.headertype)
+  {
+  case 0:
+       lstrcat(szString,"RAW\n");
+       return 0;
+  case 1:
+       lstrcat(szString,"ADIF\n");
+       break;
+  case 2:
+       lstrcat(szString,"ADTS\n");
+       break;
+  }
+
+  switch(mi->file_info.object_type)
+  {
+  case 0:
+       lstrcat(szString,"Main");
+       break;
+  case 1:
+       lstrcat(szString,"Low Complexity");
+       break;
+  case 2:
+       lstrcat(szString,"SSR (unsupported)");
+       break;
+  case 3:
+       lstrcat(szString,"Main LTP");
+       break;
+  }
+
+  GlobalUnlock(hInput);
+ }
+ return 1;
+}
+
+__declspec(dllexport) DWORD FAR PASCAL FilterGetFirstSpecialData(HANDLE hInput, 
+	SPECIALDATA * psp)
+{
+return 0L;
+}
+    
+__declspec(dllexport) DWORD FAR PASCAL FilterGetNextSpecialData(HANDLE hInput, SPECIALDATA * psp)
+{	return 0; // only has 1 special data!  Otherwise we would use psp->hSpecialData
+			  // as either a counter to know which item to retrieve next, or as a
+			  // structure with other state information in it.
+}
+
+__declspec(dllexport) void FAR PASCAL CloseFilterInput(HANDLE hInput)
+{
+ if(hInput)
+ {
+ MYINPUT far *mi;
+  mi=(MYINPUT far *)GlobalLock(hInput);
+
+  if(mi->fFile)
+   fclose(mi->fFile);
+  
+  if(mi->buffer)
+   free(mi->buffer);
+
+  if(mi->hDecoder)
+   faacDecClose(mi->hDecoder);
+
+  GlobalUnlock(hInput);
+  GlobalFree(hInput);
+ }
+}
+
+// return handle that will be passed in to close, and write routines
+__declspec(dllexport) HANDLE FAR PASCAL OpenFilterInput( LPSTR lpstrFilename,
+											long far *lSamprate,
+											WORD far *wBitsPerSample,
+											WORD far *wChannels,
+											HWND hWnd,
+											long far *lChunkSize)
+{
+HANDLE hInput;
+faacDecHandle hDecoder;
+DWORD  k,tmp;
+//int    shift;
+FILE   *infile;
+DWORD  samplerate, channels;
+DWORD  pos; // into the file. Needed to obtain length of file
+DWORD  read;
+int    *seek_table;
+//faadAACInfo file_info;
+unsigned char *buffer;
+long tagsize;
+
+ if(!(infile=fopen(lpstrFilename,"rb")))
+  return 0;
+
+ hInput=GlobalAlloc(GMEM_MOVEABLE|GMEM_SHARE|GMEM_ZEROINIT,sizeof(MYINPUT));
+ if(!hInput)
+ {
+  fclose(infile);
+  return 0;
+ }
+ else
+ {   
+ MYINPUT *mi;
+  mi=(MYINPUT *)GlobalLock(hInput);
+
+  mi->fFile=infile;
+  pos=ftell(infile);
+  fseek(infile, 0, SEEK_END);
+  mi->lSize=ftell(infile);
+  fseek(infile, pos, SEEK_SET);
+  if(!(buffer=(unsigned char*)malloc(768*MAX_CHANNELS)))
+  {
+   MessageBox(0, "Memory allocation error: buffer", "FAAD interface", MB_OK);
+   fclose(infile);
+   GlobalUnlock(hInput);
+   return 0;
+  }
+  mi->buffer=buffer;
+  memset(buffer, 0, 768*MAX_CHANNELS);
+
+  if(mi->lSize<768*MAX_CHANNELS)
+   tmp=mi->lSize;
+  else
+   tmp=768*MAX_CHANNELS;
+  read=fread(buffer, 1, tmp, infile);
+  if(read==tmp)
+  {
+   mi->bytes_read=read;
+   mi->bytes_into_buffer=read;
+  }
+  else
+  {
+   MessageBox(0, "fread", "FAAD interface", MB_OK);
+   fclose(mi->fFile);
+   free(mi->buffer);
+   GlobalUnlock(hInput);
+   return 0;
+  }
+
+  tagsize=id3v2_tag(buffer);
+  if(tagsize)
+  {
+   for (k=0; k<(768*MAX_CHANNELS - tagsize); k++)
+   buffer[k]=buffer[k + tagsize];
+
+   if(mi->bytes_read+tagsize<mi->lSize)
+	tmp=tagsize;
+   else
+    tmp=mi->lSize-mi->bytes_read;
+   read=fread(buffer+mi->bytes_into_buffer, 1, tmp, mi->fFile);
+   if(read==tmp)
+   {
+    mi->bytes_read+=read;
+    mi->bytes_into_buffer+=read;
+   }
+   else
+   {
+    MessageBox(0, "fread", "FAAD interface", MB_OK);
+    fclose(mi->fFile);
+    free(mi->buffer);
+    GlobalUnlock(hInput);
+    return 0;
+   }
+  }
+  mi->tagsize=tagsize;
+  mi->bytes_Enc=tagsize;
+//  mi->bytesDec=0;
+
+  hDecoder = faacDecOpen();
+  if(!hDecoder)
+  {
+   MessageBox(0, "Can't init library", "FAAD interface", MB_OK);
+   fclose(mi->fFile);
+   free(mi->buffer);
+   GlobalUnlock(hInput);
+   return 0;
+  }
+  mi->hDecoder=hDecoder;
+
+  if((mi->bytes_consumed=faacDecInit(hDecoder, buffer, &samplerate, &channels)) < 0)
+  {
+   MessageBox(hWnd, "Error retrieving information form input file", "FAAD interface", MB_OK);
+   fclose(mi->fFile);
+   free(mi->buffer);
+   faacDecClose(mi->hDecoder);
+   GlobalUnlock(hInput);
+   return 0;
+  }
+  mi->bytes_into_buffer-=mi->bytes_consumed;
+// if(mi->bytes_consumed>0) 
+// faacDecInit reports there is an header to skip
+// this operation will be done in ReadFilterInput
+
+  *lSamprate=samplerate;
+  *wBitsPerSample=16;
+  *wChannels=channels;
+  *lChunkSize=sizeof(short)*1024*channels;
+
+  mi->wChannels=channels;
+  mi->dwSamprate=samplerate;
+  mi->wBitsPerSample=*wBitsPerSample;
+  strcpy(mi->szName,lpstrFilename);
+
+  if(seek_table=(int*)LocalAlloc(LPTR, 10800*sizeof(int)))
+  {
+   get_AAC_format(mi->szName, &(mi->file_info), seek_table);
+   LocalFree(seek_table);
+  }
+  else
+   if(!mi->file_info.version)
+   {
+    fclose(mi->fFile);
+    free(mi->buffer);
+    faacDecClose(hDecoder);
+    GlobalUnlock(hInput);
+    return 0;
+   }
+
+  if(mi->file_info.object_type==2) // Unupported type SSR profile
+   {
+    fclose(mi->fFile);
+    free(mi->buffer);
+    faacDecClose(hDecoder);
+    GlobalUnlock(hInput);
+    return 0;
+   }
+
+  mi->len_ms=1000*(mi->lSize*8)/mi->file_info.bitrate;
+  if(mi->len_ms)
+   mi->full_size=(DWORD)(mi->len_ms*((float)mi->dwSamprate/1000)*mi->wChannels*(16/8));
+  else
+   mi->full_size=mi->lSize; // corrupted stream?
+/*
+  if(mi->file_info.length)
+   mi->full_size=(DWORD)(mi->file_info.length*((float)samplerate/1000)*channels*(16/8));
+  else
+   mi->full_size=mi->lSize; // corrupted stream?
+*/
+/*  {
+   fclose(mi->fFile);
+   free(mi->buffer);
+   faacDecClose(hDecoder);
+   GlobalUnlock(hInput);
+   return 0;
+  }*/
+
+  GlobalUnlock(hInput);
+ }
+
+ return hInput;
+}
+
+__declspec(dllexport) DWORD FAR PASCAL ReadFilterInput(HANDLE hInput, unsigned char far *bufout, long lBytes)
+{
+DWORD read,
+      tmp,
+	  bytesDec,
+	  k;
+int   result;
+unsigned char *buffer;
+
+ if(hInput)
+ {   
+ MYINPUT *mi;
+  mi=(MYINPUT *)GlobalLock(hInput);
+
+  buffer=mi->buffer;
+
+  mi->bytes_Enc+=mi->bytes_consumed;
+  if(mi->bytes_Enc>=mi->lSize)
+  {
+//   MessageBox(0, "ReadFilterInput: mi->bytesEnc>mi->lSize", "FAAD interface", MB_OK);
+   GlobalUnlock(hInput);
+   return 0;
+  }
+
+  if(mi->bytes_consumed)
+  {
+/*   mi->bytesDec+=sizeof(short)*1024*mi->wChannels;
+   if(mi->bytesDec>mi->full_size+sizeof(short)*1024*mi->wChannels)
+   {
+//    MessageBox(0, "ReadFilterInput: mi->bytesDec>mi->full_size", "FAAD interface", MB_OK);
+    GlobalUnlock(hInput);
+    return 0;
+   }*/
+
+   for(k=0; k<mi->bytes_into_buffer; k++)
+    buffer[k]=buffer[k + mi->bytes_consumed];
+
+   if(mi->bytes_read<mi->lSize)
+   {
+    if(mi->bytes_read+mi->bytes_consumed<mi->lSize)
+	 tmp=mi->bytes_consumed;
+	else
+	 tmp=mi->lSize-mi->bytes_read;
+    read=fread(buffer+mi->bytes_into_buffer, 1, tmp, mi->fFile);
+    if(read==tmp)
+	{
+	 mi->bytes_read+=read;
+     mi->bytes_into_buffer+=read;
+	}
+   }
+   else
+    memset(buffer+mi->bytes_into_buffer, 0, mi->bytes_consumed);
+  }
+
+  if(!mi->bytes_into_buffer)
+  {
+//   MessageBox(0, "ReadFilterInput: buffer empty", "FAAD interface", MB_OK);
+   GlobalUnlock(hInput);
+   return 0;
+  }
+
+  result=faacDecDecode(mi->hDecoder, buffer, &(mi->bytes_consumed), (short*)bufout);
+  if(mi->bytes_into_buffer>mi->bytes_consumed)
+   mi->bytes_into_buffer-=mi->bytes_consumed;
+  else
+   mi->bytes_into_buffer=0;
+//  if(result>FAAD_OK_CHUPDATE)
+  if(result==FAAD_FATAL_ERROR)
+  {
+//   MessageBox(0, "ReadFilterInput: FAAD_FATAL_ERROR or FAAD_ERROR", "FAAD interface", MB_OK);
+//   MessageBox(0, "ReadFilterInput: FAAD_FATAL_ERROR", "FAAD interface", MB_OK);
+   GlobalUnlock(hInput);
+   return 0;
+  }
+
+  bytesDec=sizeof(short)*1024*mi->wChannels;
+
+  GlobalUnlock(hInput);
+ }
+
+ return bytesDec;
+}
--- /dev/null
+++ b/plugins/cooledit/faad.def
@@ -1,0 +1,22 @@
+LIBRARY   Cool32*FAAC
+
+HEAPSIZE  2048
+
+EXPORTS
+                QueryCoolFilter	   @2
+				OpenFilterOutput   @3
+				CloseFilterOutput  @4
+				WriteFilterOutput  @5
+				OpenFilterInput    @6
+				CloseFilterInput   @7
+				ReadFilterInput    @8
+                FilterUnderstandsFormat @9
+				FilterGetOptions		@14 
+				FilterOptions			@15
+				FilterGetFileSize		@16
+				FilterOptionsString		@17
+				DIALOGMsgProc 			@20
+			   	FilterGetFirstSpecialData	@31
+				FilterGetNextSpecialData	@32
+				FilterWriteSpecialData		@33
+
--- /dev/null
+++ b/plugins/cooledit/faad.dsw
@@ -1,0 +1,59 @@
+Microsoft Developer Studio Workspace File, Format Version 6.00
+# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
+
+###############################################################################
+
+Project: "FAAD"=.\FAAD.DSP - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+    Begin Project Dependency
+    Project_Dep_Name libfaad
+    End Project Dependency
+    Begin Project Dependency
+    Project_Dep_Name libfaac
+    End Project Dependency
+}}}
+
+###############################################################################
+
+Project: "libfaac"=..\libfaac\libfaac.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "libfaad"=..\..\faad\libfaad\libfaad.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Global:
+
+Package=<5>
+{{{
+}}}
+
+Package=<3>
+{{{
+}}}
+
+###############################################################################
+
--- /dev/null
+++ b/plugins/cooledit/filters.h
@@ -1,0 +1,121 @@
+//////////////////////////////////////////////////////
+// GENERAL PURPOSE DEFS FOR CREATING CUSTOM FILTERS //
+//////////////////////////////////////////////////////
+
+
+typedef struct riffspecialdata_t
+{	HANDLE hSpecialData;	
+	HANDLE hData;			// Actual data handle
+	DWORD  dwSize;			// size of data in handle
+	DWORD  dwExtra;			// optional extra data (usually a count)
+	char   szListType[8];	// Parent list type (usually "WAVE" or "INFO", or "adtl")
+	char   szType[8];		// Usually a four character code for data, but can be up to 7 chars
+} SPECIALDATA;
+
+// "CUE " dwExtra=number of cues, each cue is 8 bytes		([4] name [4] sample offset)
+// "LTXT" dwExtra=number of items, each one is 8 bytes		([4] ltxt len [4] name [4] cue length [4] purpose [n] data)
+// "NOTE" dwExtra=number of strings, each one is n bytes	([4] name [n-4] length zero term)
+// "LABL" dwExtra=number of strings, each one is n bytes	([4] name [n-4] length zero term)
+// "PLST" dwExtra=number if items, each one is 16 bytes		([4] name [4] dwLen [4] dwLoops [4] dwMode)
+
+
+// For special data, .FLT must implement FilterGetFirstSpecialData and FilterGetNextSpecialData
+
+
+typedef DWORD           FOURCC;         // a four character code
+
+struct cue_type { DWORD dwName;
+				  DWORD dwPosition;
+				  FOURCC fccChunk;
+				  DWORD dwChunkStart;
+				  DWORD dwBlockStart;
+				  DWORD dwSampleOffset;
+				 };
+
+struct play_type {DWORD dwName;
+					 DWORD dwLength;
+					 DWORD dwLoops;
+					};
+
+
+typedef struct coolquery_tag
+	{char szName[24];
+	 char szCopyright[80];
+	 
+	 // rate table, bits are set for modes that can be handled
+	 WORD Quad32;  // Quads are 3-D encoded
+	 WORD Quad16;
+	 WORD Quad8;
+	 WORD Stereo8;    		// rates are from lowest bit:
+	 WORD Stereo12;   		// bit 0 set: 5500 (5512.5)
+	 WORD Stereo16;   		// bit 1 set: 11025 (11K)
+	 WORD Stereo24;   		// bit 2 set: 22050 (22K)
+	 WORD Stereo32;   		// bit 3 set: 32075 (32K, or 32000)
+	 WORD Mono8;      		// bit 4 set: 44100 (44K)
+	 WORD Mono12;	  		// bit 5 set: 48000 (48K)
+	 WORD Mono16;	  		// bit 6 set: 88200 (88K)   (future ultra-sonic rates?)
+	 WORD Mono24;	  		// bit 7 set: 96000 (96K)
+	 WORD Mono32;     		// bit 8 set: 132300 (132K)
+	 				  		// bit 9 set: 176400 (176K)
+	 DWORD dwFlags;
+	 char szExt[4];
+	 long lChunkSize;
+	 char szExt2[4];
+	 char szExt3[4];
+	 char szExt4[4];
+	} COOLQUERY;
+
+#define R_5500   1
+#define R_11025  2
+#define R_22050  4
+#define R_32075  8
+#define R_44100  16
+#define R_48000  32
+#define R_88200  64
+#define R_96000  128
+#define R_132300 256
+#define R_176400 512
+
+#define C_VALIDLIBRARY 1154
+
+#define QF_RATEADJUSTABLE		0x001   // if can handle non-standard sample rates
+										// if not, only rates in bit rate table understood
+#define QF_CANSAVE				0x002		  
+#define QF_CANLOAD				0x004
+#define QF_UNDERSTANDSALL		0x008   // will read ANYTHING, so it is the last resort if no other
+										// formats match
+#define QF_READSPECIALFIRST		0x010	// read special info before trying to read data
+#define QF_READSPECIALLAST		0x020	// read special info after reading data
+#define QF_WRITESPECIALFIRST	0x040	// when writing a file, special info is sent to DLL before data
+#define QF_WRITESPECIALLAST		0x080	// when writing, special info is sent to DLL after data
+#define QF_HASOPTIONSBOX		0x100	// set if options box implemented
+#define QF_NOASKFORCONVERT		0x200	// set to bypass asking for conversion if original in different rate, auto convert
+#define QF_NOHEADER				0x400	// set if this is a raw data format with no header
+#define QF_CANDO32BITFLOATS		0x800	// set if file format can handle 32-bit sample data for input
+#define QF_CANOPENVIRTUAL		0x1000	// Set if data is in Intel 8-bit or 16-bit sample format, or floats
+										// and the GetDataOffset() function is implemented
+
+// special types are read from and written to DLL in the order below
+/*
+// special types (particular to Windows waveforms)
+#define SP_IART  20
+#define SP_ICMT  21
+#define SP_ICOP  22
+#define SP_ICRD  23
+#define SP_IENG  24
+#define SP_IGNR  25
+#define SP_IKEY  26
+#define SP_IMED  27
+#define SP_INAM  28
+#define SP_ISFT  29
+#define SP_ISRC  30
+#define SP_ITCH  31
+#define SP_ISBJ  32
+#define SP_ISRF  33
+#define SP_DISP  34
+#define SP_CUE   40 // returns number of cues of size cue_type 
+#define SP_LTXT  41 // returns number of adtl texts of size 8 (4,id and 4,len)
+#define SP_NOTE  42 // returns LO=size, HI=number of strings (sz sz sz...)
+#define SP_LABL	 43 // returns LO=size, HI=number of strings (sz sz sz...)
+#define SP_PLST  44 // returns number of playlist entries size play_type 
+*/
\ No newline at end of file
--- /dev/null
+++ b/plugins/cooledit/main.c
@@ -1,0 +1,84 @@
+#include <windows.h>
+#include "filters.h" //CoolEdit
+
+
+
+BOOL WINAPI DllMain (HANDLE hModule, DWORD fdwReason, LPVOID lpReserved)
+{
+   switch (fdwReason)
+   {
+      case DLL_PROCESS_ATTACH:
+        /* Code from LibMain inserted here.  Return TRUE to keep the
+            DLL loaded or return FALSE to fail loading the DLL.
+ 
+            You may have to modify the code in your original LibMain to
+            account for the fact that it may be called more than once.
+            You will get one DLL_PROCESS_ATTACH for each process that
+            loads the DLL. This is different from LibMain which gets
+            called only once when the DLL is loaded. The only time this
+            is critical is when you are using shared data sections.
+            If you are using shared data sections for statically
+            allocated data, you will need to be careful to initialize it
+            only once. Check your code carefully.
+ 
+            Certain one-time initializations may now need to be done for
+            each process that attaches. You may also not need code from
+            your original LibMain because the operating system may now
+            be doing it for you.
+         */
+         break;
+ 
+      case DLL_THREAD_ATTACH:
+         /* Called each time a thread is created in a process that has
+            already loaded (attached to) this DLL. Does not get called
+            for each thread that exists in the process before it loaded
+            the DLL.
+ 
+            Do thread-specific initialization here.
+         */
+         break;
+ 
+      case DLL_THREAD_DETACH:
+         /* Same as above, but called when a thread in the process
+            exits.
+ 
+            Do thread-specific cleanup here.
+         */
+         break;
+ 
+      case DLL_PROCESS_DETACH:
+         /* Code from _WEP inserted here.  This code may (like the
+            LibMain) not be necessary.  Check to make certain that the
+            operating system is not doing it for you.
+         */
+         break;
+   }
+ 
+   /* The return value is only used for DLL_PROCESS_ATTACH; all other
+      conditions are ignored.  */
+   return TRUE;   // successful DLL_PROCESS_ATTACH
+}
+
+// Fill COOLQUERY structure with information regarding this file filter
+
+__declspec(dllexport) short FAR PASCAL QueryCoolFilter(COOLQUERY far * cq)
+{
+	lstrcpy(cq->szName,"MPEG4-AAC Format");		
+	lstrcpy(cq->szCopyright,"Freeware AAC-MPEG4 codec");
+	lstrcpy(cq->szExt,"AAC");
+	lstrcpy(cq->szExt2,"MP4"); 
+	cq->lChunkSize=16384; 
+	cq->dwFlags=QF_RATEADJUSTABLE|QF_CANLOAD|QF_CANSAVE|QF_HASOPTIONSBOX;
+ 	cq->Stereo8=0xFF; // supports all rates ???
+ 	cq->Stereo16=0xFF;
+ 	cq->Stereo24=0xFF;
+ 	cq->Stereo32=0xFF;
+ 	cq->Mono8=0xFF;
+ 	cq->Mono16=0xFF;
+ 	cq->Mono24=0xFF;
+ 	cq->Mono32=0xFF;
+ 	cq->Quad32=0xFF;
+ 	cq->Quad16=0xFF;
+ 	cq->Quad8=0xFF;
+ 	return C_VALIDLIBRARY;
+}
--- /dev/null
+++ b/plugins/cooledit/resource.h
@@ -1,0 +1,40 @@
+//{{NO_DEPENDENCIES}}
+// Microsoft Developer Studio generated include file.
+// Used by FAAD.rc
+//
+#define IDD_COMPRESSION                 101
+#define IDB_LOGO                        104
+#define IDC_RADIO1                      1000
+#define IDC_RADIO_MPEG4                 1000
+#define IDC_RADIO2                      1001
+#define IDC_RADIO_MPEG2                 1001
+#define IDC_RADIO4                      1002
+#define IDC_RADIO_LOW                   1002
+#define IDC_RADIO3                      1003
+#define IDC_RADIO_MAIN                  1003
+#define IDC_RADIO5                      1004
+#define IDC_RADIO_SSR                   1004
+#define IDC_RADIO6                      1005
+#define IDC_RADIO_LTP                   1005
+#define IDC_RADIO7                      1006
+#define IDC_RADIO8                      1007
+#define IDC_RADIO9                      1008
+#define IDC_ALLOWMIDSIDE                1011
+#define IDC_USETNS                      1012
+#define IDC_USELFE                      1013
+#define IDC_CB_BANDWIDTH                1015
+#define IDC_CB_BITRATE                  1017
+#define IDC_CHK_AUTOCFG                 1020
+#define IDC_BTN_ABOUT                   1021
+#define IDC_IMG_LOGO                    1022
+
+// Next default values for new objects
+// 
+#ifdef APSTUDIO_INVOKED
+#ifndef APSTUDIO_READONLY_SYMBOLS
+#define _APS_NEXT_RESOURCE_VALUE        106
+#define _APS_NEXT_COMMAND_VALUE         40001
+#define _APS_NEXT_CONTROL_VALUE         1025
+#define _APS_NEXT_SYMED_VALUE           101
+#endif
+#endif
--- /dev/null
+++ b/plugins/winamp/.cvsignore
@@ -1,0 +1,13 @@
+*.o
+*.so
+*.a
+*.ncb
+*.plg
+*.aps
+*.opt
+*.aac
+*.wav
+Release
+Debug
+ReleaseGUI
+DebugGUI
\ No newline at end of file
--- /dev/null
+++ b/plugins/winamp/AACINFO.C
@@ -1,0 +1,249 @@
+/*
+ * FAAC - Freeware Advanced Audio Decoder
+ * Copyright (C) 2001 Menno Bakker
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * $Id: AACINFO.C,v 1.1 2001/10/11 09:53:44 menno Exp $
+ */
+
+#include <windows.h>
+#include "aacinfo.h"
+
+#define ADIF_MAX_SIZE 30 /* Should be enough */
+#define ADTS_MAX_SIZE 10 /* Should be enough */
+
+const int sample_rates[] = {96000,88200,64000,48000,44100,32000,24000,22050,16000,12000,11025,8000};
+
+static int read_ADIF_header(HANDLE file, FAACAACInfo *info)
+{
+	unsigned long tmp;
+	int bitstream;
+	unsigned char buffer[ADIF_MAX_SIZE];
+	int skip_size = 0;
+	int sf_idx;
+
+	/* Get ADIF header data */
+	
+	info->headertype = 1;
+
+	ReadFile(file, buffer, ADIF_MAX_SIZE, &tmp, 0);
+
+	/* copyright string */	
+	if(buffer[4] & 128)
+		skip_size += 9; /* skip 9 bytes */
+
+	bitstream = buffer[4 + skip_size] & 16;
+	info->bitrate = ((unsigned int)(buffer[4 + skip_size] & 0x0F)<<19)|
+		((unsigned int)buffer[5 + skip_size]<<11)|
+		((unsigned int)buffer[6 + skip_size]<<3)|
+		((unsigned int)buffer[7 + skip_size] & 0xE0);
+
+	if (bitstream == 0) {
+		info->object_type = ((buffer[9 + skip_size]&0x01)<<1)|((buffer[10 + skip_size]&0x80)>>7);
+		sf_idx = (buffer[10 + skip_size]&0x78)>>3;
+		info->channels = ((buffer[10 + skip_size]&0x07)<<1)|((buffer[11 + skip_size]&0x80)>>7);
+	} else {
+		info->object_type = (buffer[7 + skip_size] & 0x18)>>3;
+		sf_idx = ((buffer[7 + skip_size] & 0x07)<<1)|((buffer[8 + skip_size] & 0x80)>>7);
+		info->channels = (buffer[8 + skip_size]&0x78)>>3;
+	}
+	info->sampling_rate = sample_rates[sf_idx];
+
+	return 0;
+}
+
+static int read_ADTS_header(HANDLE file, FAACAACInfo *info, int *seek_table,
+							int tagsize)
+{
+	/* Get ADTS header data */
+	unsigned char buffer[ADTS_MAX_SIZE];
+	int frames, t_framelength = 0, frame_length, sr_idx, ID;
+	int second = 0, pos;
+	float frames_per_sec = 0;
+	unsigned long bytes;
+
+	info->headertype = 2;
+
+	/* Seek to the first frame */
+	SetFilePointer(file, tagsize, NULL, FILE_BEGIN);
+
+	/* Read all frames to ensure correct time and bitrate */
+	for(frames=0; /* */; frames++)
+	{
+		/* 12 bit SYNCWORD */
+		ReadFile(file, buffer, ADTS_MAX_SIZE, &bytes, 0);
+		if(bytes != ADTS_MAX_SIZE)
+		{
+			/* Bail out if no syncword found */
+			break;
+		}
+
+		if (!((buffer[0] == 0xFF)&&((buffer[1] & 0xF6) == 0xF0)))
+			break;
+
+		pos = SetFilePointer(file, 0, NULL, FILE_CURRENT) - ADTS_MAX_SIZE;
+
+		if(!frames)
+		{
+			/* fixed ADTS header is the same for every frame, so we read it only once */ 
+			/* Syncword found, proceed to read in the fixed ADTS header */ 
+			ID = buffer[1] & 0x08;
+			info->object_type = (buffer[2]&0xC0)>>6;
+			sr_idx = (buffer[2]&0x3C)>>2;
+			info->channels = ((buffer[2]&0x01)<<2)|((buffer[3]&0xC0)>>6);
+
+			frames_per_sec = sample_rates[sr_idx] / 1024.f;
+		}
+
+		/* ...and the variable ADTS header */
+		if (ID == 0) {
+			info->version = 4;
+			frame_length = (((unsigned int)buffer[4]) << 5) |
+				((unsigned int)buffer[5] >> 3);
+		} else { /* MPEG-2 */
+			info->version = 2;
+			frame_length = ((((unsigned int)buffer[3] & 0x3)) << 11)
+				| (((unsigned int)buffer[4]) << 3) | (buffer[5] >> 5);
+		}
+
+		t_framelength += frame_length;
+
+		if (frames > second*frames_per_sec)
+		{
+			seek_table[second] = pos;
+			second++;
+		}
+
+		SetFilePointer(file, frame_length - ADTS_MAX_SIZE, NULL, FILE_CURRENT);
+	}
+
+	info->sampling_rate = sample_rates[sr_idx];
+	info->bitrate = (int)(((t_framelength / frames) * (info->sampling_rate/1024.0)) +0.5)*8;
+	info->length = (int)((float)(frames/frames_per_sec))*1000;
+
+	return 0;
+}
+
+static int f_id3v2_tag(HANDLE file)
+{
+	unsigned char buffer[10];
+	unsigned long tmp;
+
+	ReadFile(file, buffer, 10, &tmp, 0);
+
+	if (StringComp(buffer, "ID3", 3) == 0) {
+		unsigned long tagsize;
+
+		/* high bit is not used */
+		tagsize = (buffer[6] << 21) | (buffer[7] << 14) |
+			(buffer[8] <<  7) | (buffer[9] <<  0);
+
+		tagsize += 10;
+
+		SetFilePointer(file, tagsize, NULL, FILE_BEGIN);
+
+		return tagsize;
+	} else {
+		SetFilePointer(file, 0, NULL, FILE_BEGIN);
+
+		return 0;
+	}
+}
+
+int get_AAC_format(char *filename, FAACAACInfo *info, int *seek_table)
+{
+	unsigned int tagsize;
+	HANDLE file;
+	unsigned long file_len;
+	unsigned char adxx_id[5];
+	unsigned long tmp;
+
+	if(StringComp(filename, "http://", 7) == 0)
+	{
+		info->version = 2;
+		info->length = 0;
+		info->bitrate = 128000;
+		info->sampling_rate = 44100;
+		info->channels = 2;
+		info->headertype = 0;
+		info->object_type = 1;
+
+		return 0;
+	}
+
+	file = CreateFile(filename, GENERIC_READ,
+		FILE_SHARE_READ | FILE_SHARE_WRITE, 0,
+		OPEN_EXISTING, FILE_FLAG_SEQUENTIAL_SCAN, 0);
+	if (file == INVALID_HANDLE_VALUE)
+		return -1;
+
+	file_len = GetFileSize(file, NULL);
+
+	tagsize = f_id3v2_tag(file); /* Skip the tag, if it's there */
+	file_len -= tagsize;
+
+	ReadFile(file, adxx_id, 4, &tmp, 0);
+	SetFilePointer(file, tagsize, NULL, FILE_BEGIN);
+
+	adxx_id[5-1] = 0;
+
+	info->length = 0;
+
+	if(StringComp(adxx_id, "ADIF", 4) == 0)
+	{
+		read_ADIF_header(file, info);
+	}
+	else
+	{
+		if ((adxx_id[0] == 0xFF)&&((adxx_id[1] & 0xF6) == 0xF0))
+		{
+//			SetFilePointer(file, tagsize, NULL, FILE_BEGIN);
+			read_ADTS_header(file, info, seek_table, tagsize);
+		}
+		else
+		{
+			/* Unknown/headerless AAC file, assume format: */
+			info->version = 2;
+			info->bitrate = 128000;
+			info->sampling_rate = 44100;
+			info->channels = 2;
+			info->headertype = 0;
+			info->object_type = 1;
+		}
+	}
+
+	if (info->length == 0)
+		info->length = (int)((file_len/(((info->bitrate*8)/1024)*16))*1000);
+
+	CloseHandle(file);
+
+	return 0;
+}
+
+int StringComp(char const *str1, char const *str2, unsigned long len)
+{
+	signed int c1 = 0, c2 = 0;
+
+	while (len--) {
+		c1 = *str1++;
+		c2 = *str2++;
+
+		if (c1 == 0 || c1 != c2)
+			break;
+	}
+
+	return c1 - c2;
+}
--- /dev/null
+++ b/plugins/winamp/AACINFO.H
@@ -1,0 +1,39 @@
+/*
+ * FAAC - Freeware Advanced Audio Decoder
+ * Copyright (C) 2001 Menno Bakker
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * $Id: AACINFO.H,v 1.1 2001/10/11 09:53:44 menno Exp $
+ */
+
+typedef struct {
+	int version;
+	int channels;
+	int sampling_rate;
+	int bitrate;
+	int length;
+	int object_type;
+	int headertype;
+} FAACAACInfo;
+
+
+int get_AAC_format(char *filename, FAACAACInfo *info, int *seek_table);
+
+static int f_id3v2_tag(HANDLE file);
+static int read_ADIF_header(HANDLE file, FAACAACInfo *info);
+static int read_ADTS_header(HANDLE file, FAACAACInfo *info, int *seek_table,
+							int tagsize);
+int StringComp(char const *str1, char const *str2, unsigned long len);
--- /dev/null
+++ b/plugins/winamp/Config.c
@@ -1,0 +1,47 @@
+#include <windows.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+
+static char app_name[] = "Freeware AAC encoder";
+static char INI_FILE[MAX_PATH];
+extern char config_AACoutdir[MAX_PATH];
+extern DWORD dwOptions;
+
+static void _r_s(char *name,char *data, int mlen)
+{
+char buf[2048];
+ strcpy(buf,data);
+ GetPrivateProfileString(app_name,name,buf,data,mlen,INI_FILE);
+}
+
+#define RS(x) (_r_s(#x,x,sizeof(x)))
+#define WS(x) (WritePrivateProfileString(app_name,#x,x,INI_FILE))
+
+
+
+static void config_init()
+{
+	char *p=INI_FILE;
+	GetModuleFileName(NULL,INI_FILE,sizeof(INI_FILE));
+	while (*p) p++;
+	while (p >= INI_FILE && *p != '.') p--;
+	strcpy(p+1,"ini");
+}
+
+void config_read()
+{
+char Options[512];
+ config_init();
+ RS(config_AACoutdir);
+ RS(Options);
+ dwOptions=atoi(Options);
+}
+
+void config_write()
+{
+char Options[512];
+ WS(config_AACoutdir);
+ sprintf(Options,"%lu",dwOptions);
+ WS(Options);
+}
--- /dev/null
+++ b/plugins/winamp/FAAC.rc
@@ -1,0 +1,149 @@
+//Microsoft Developer Studio generated resource script.
+//
+#include "resource.h"
+
+#define APSTUDIO_READONLY_SYMBOLS
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 2 resource.
+//
+#include "afxres.h"
+
+/////////////////////////////////////////////////////////////////////////////
+#undef APSTUDIO_READONLY_SYMBOLS
+
+/////////////////////////////////////////////////////////////////////////////
+// English (U.S.) resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
+#ifdef _WIN32
+LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
+#pragma code_page(1252)
+#endif //_WIN32
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Dialog
+//
+
+IDD_COMPRESSION DIALOG DISCARDABLE  0, 0, 178, 142
+STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
+CAPTION "AAC-MPEG4 options"
+FONT 8, "MS Sans Serif"
+BEGIN
+    CONTROL         "Automatic configuration",IDC_CHK_AUTOCFG,"Button",
+                    BS_AUTOCHECKBOX | WS_TABSTOP,4,4,90,10
+    CONTROL         "MPEG4",IDC_RADIO_MPEG4,"Button",BS_AUTORADIOBUTTON | 
+                    WS_GROUP,8,29,42,10
+    CONTROL         "MPEG2",IDC_RADIO_MPEG2,"Button",BS_AUTORADIOBUTTON,8,42,
+                    41,9
+    CONTROL         "Main",IDC_RADIO_MAIN,"Button",BS_AUTORADIOBUTTON | 
+                    WS_GROUP,12,73,31,10
+    CONTROL         "Low",IDC_RADIO_LOW,"Button",BS_AUTORADIOBUTTON,12,85,29,
+                    10
+    CONTROL         "SSR",IDC_RADIO_SSR,"Button",BS_AUTORADIOBUTTON | 
+                    WS_DISABLED,12,97,31,10
+    CONTROL         "LTP",IDC_RADIO_LTP,"Button",BS_AUTORADIOBUTTON,12,109,
+                    29,10
+    CONTROL         "Allow Mid/Side",IDC_ALLOWMIDSIDE,"Button",
+                    BS_AUTOCHECKBOX | WS_TABSTOP,59,21,63,10
+    CONTROL         "Use TNS",IDC_USETNS,"Button",BS_AUTOCHECKBOX | 
+                    WS_TABSTOP,59,33,45,10
+    CONTROL         "Use LFE channel",IDC_USELFE,"Button",BS_AUTOCHECKBOX | 
+                    WS_DISABLED | WS_TABSTOP,59,46,67,10
+    COMBOBOX        IDC_CB_BITRATE,126,68,48,30,CBS_DROPDOWNLIST | 
+                    WS_VSCROLL | WS_TABSTOP
+    COMBOBOX        IDC_CB_BANDWIDTH,126,85,48,30,CBS_DROPDOWN | WS_VSCROLL | 
+                    WS_TABSTOP
+    EDITTEXT        IDC_E_BROWSE,57,103,94,14,ES_AUTOHSCROLL
+    PUSHBUTTON      "Browse",IDC_BTN_BROWSE,156,103,18,14,BS_BITMAP
+    DEFPUSHBUTTON   "OK",IDOK,65,123,36,14
+    PUSHBUTTON      "Cancel",IDCANCEL,101,123,36,14
+    PUSHBUTTON      "About",IDC_BTN_ABOUT,138,123,36,14
+    GROUPBOX        "AAC type",IDC_STATIC,4,18,48,38
+    GROUPBOX        "Profile",IDC_STATIC,4,63,48,59
+    LTEXT           "Bitrate per channel",IDC_STATIC,59,73,60,8
+    LTEXT           "Bandwidth (0=full)",IDC_STATIC,59,89,57,8
+    CONTROL         104,IDC_IMG_LOGO,"Static",SS_BITMAP,138,4,36,23
+END
+
+
+#ifdef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// TEXTINCLUDE
+//
+
+1 TEXTINCLUDE DISCARDABLE 
+BEGIN
+    "resource.h\0"
+END
+
+2 TEXTINCLUDE DISCARDABLE 
+BEGIN
+    "#include ""afxres.h""\r\n"
+    "\0"
+END
+
+3 TEXTINCLUDE DISCARDABLE 
+BEGIN
+    "\r\n"
+    "\0"
+END
+
+#endif    // APSTUDIO_INVOKED
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// DESIGNINFO
+//
+
+#ifdef APSTUDIO_INVOKED
+GUIDELINES DESIGNINFO DISCARDABLE 
+BEGIN
+    IDD_COMPRESSION, DIALOG
+    BEGIN
+        LEFTMARGIN, 4
+        RIGHTMARGIN, 174
+        TOPMARGIN, 4
+        BOTTOMMARGIN, 137
+    END
+END
+#endif    // APSTUDIO_INVOKED
+
+#endif    // English (U.S.) resources
+/////////////////////////////////////////////////////////////////////////////
+
+
+/////////////////////////////////////////////////////////////////////////////
+// Italian (Italy) resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ITA)
+#ifdef _WIN32
+LANGUAGE LANG_ITALIAN, SUBLANG_ITALIAN
+#pragma code_page(1252)
+#endif //_WIN32
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Bitmap
+//
+
+IDB_LOGO                BITMAP  DISCARDABLE     "Logo.bmp"
+IDB_BROWSE              BITMAP  DISCARDABLE     "Open.bmp"
+#endif    // Italian (Italy) resources
+/////////////////////////////////////////////////////////////////////////////
+
+
+
+#ifndef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 3 resource.
+//
+
+
+/////////////////////////////////////////////////////////////////////////////
+#endif    // not APSTUDIO_INVOKED
+
--- /dev/null
+++ b/plugins/winamp/FILTERS.H
@@ -1,0 +1,121 @@
+//////////////////////////////////////////////////////
+// GENERAL PURPOSE DEFS FOR CREATING CUSTOM FILTERS //
+//////////////////////////////////////////////////////
+
+
+typedef struct riffspecialdata_t
+{	HANDLE hSpecialData;	
+	HANDLE hData;			// Actual data handle
+	DWORD  dwSize;			// size of data in handle
+	DWORD  dwExtra;			// optional extra data (usually a count)
+	char   szListType[8];	// Parent list type (usually "WAVE" or "INFO", or "adtl")
+	char   szType[8];		// Usually a four character code for data, but can be up to 7 chars
+} SPECIALDATA;
+
+// "CUE " dwExtra=number of cues, each cue is 8 bytes		([4] name [4] sample offset)
+// "LTXT" dwExtra=number of items, each one is 8 bytes		([4] ltxt len [4] name [4] cue length [4] purpose [n] data)
+// "NOTE" dwExtra=number of strings, each one is n bytes	([4] name [n-4] length zero term)
+// "LABL" dwExtra=number of strings, each one is n bytes	([4] name [n-4] length zero term)
+// "PLST" dwExtra=number if items, each one is 16 bytes		([4] name [4] dwLen [4] dwLoops [4] dwMode)
+
+
+// For special data, .FLT must implement FilterGetFirstSpecialData and FilterGetNextSpecialData
+
+
+typedef DWORD           FOURCC;         // a four character code
+
+struct cue_type { DWORD dwName;
+				  DWORD dwPosition;
+				  FOURCC fccChunk;
+				  DWORD dwChunkStart;
+				  DWORD dwBlockStart;
+				  DWORD dwSampleOffset;
+				 };
+
+struct play_type {DWORD dwName;
+					 DWORD dwLength;
+					 DWORD dwLoops;
+					};
+
+
+typedef struct coolquery_tag
+	{char szName[24];
+	 char szCopyright[80];
+	 
+	 // rate table, bits are set for modes that can be handled
+	 WORD Quad32;  // Quads are 3-D encoded
+	 WORD Quad16;
+	 WORD Quad8;
+	 WORD Stereo8;    		// rates are from lowest bit:
+	 WORD Stereo12;   		// bit 0 set: 5500 (5512.5)
+	 WORD Stereo16;   		// bit 1 set: 11025 (11K)
+	 WORD Stereo24;   		// bit 2 set: 22050 (22K)
+	 WORD Stereo32;   		// bit 3 set: 32075 (32K, or 32000)
+	 WORD Mono8;      		// bit 4 set: 44100 (44K)
+	 WORD Mono12;	  		// bit 5 set: 48000 (48K)
+	 WORD Mono16;	  		// bit 6 set: 88200 (88K)   (future ultra-sonic rates?)
+	 WORD Mono24;	  		// bit 7 set: 96000 (96K)
+	 WORD Mono32;     		// bit 8 set: 132300 (132K)
+	 				  		// bit 9 set: 176400 (176K)
+	 DWORD dwFlags;
+	 char szExt[4];
+	 long lChunkSize;
+	 char szExt2[4];
+	 char szExt3[4];
+	 char szExt4[4];
+	} COOLQUERY;
+
+#define R_5500   1
+#define R_11025  2
+#define R_22050  4
+#define R_32075  8
+#define R_44100  16
+#define R_48000  32
+#define R_88200  64
+#define R_96000  128
+#define R_132300 256
+#define R_176400 512
+
+#define C_VALIDLIBRARY 1154
+
+#define QF_RATEADJUSTABLE		0x001   // if can handle non-standard sample rates
+										// if not, only rates in bit rate table understood
+#define QF_CANSAVE				0x002		  
+#define QF_CANLOAD				0x004
+#define QF_UNDERSTANDSALL		0x008   // will read ANYTHING, so it is the last resort if no other
+										// formats match
+#define QF_READSPECIALFIRST		0x010	// read special info before trying to read data
+#define QF_READSPECIALLAST		0x020	// read special info after reading data
+#define QF_WRITESPECIALFIRST	0x040	// when writing a file, special info is sent to DLL before data
+#define QF_WRITESPECIALLAST		0x080	// when writing, special info is sent to DLL after data
+#define QF_HASOPTIONSBOX		0x100	// set if options box implemented
+#define QF_NOASKFORCONVERT		0x200	// set to bypass asking for conversion if original in different rate, auto convert
+#define QF_NOHEADER				0x400	// set if this is a raw data format with no header
+#define QF_CANDO32BITFLOATS		0x800	// set if file format can handle 32-bit sample data for input
+#define QF_CANOPENVIRTUAL		0x1000	// Set if data is in Intel 8-bit or 16-bit sample format, or floats
+										// and the GetDataOffset() function is implemented
+
+// special types are read from and written to DLL in the order below
+/*
+// special types (particular to Windows waveforms)
+#define SP_IART  20
+#define SP_ICMT  21
+#define SP_ICOP  22
+#define SP_ICRD  23
+#define SP_IENG  24
+#define SP_IGNR  25
+#define SP_IKEY  26
+#define SP_IMED  27
+#define SP_INAM  28
+#define SP_ISFT  29
+#define SP_ISRC  30
+#define SP_ITCH  31
+#define SP_ISBJ  32
+#define SP_ISRF  33
+#define SP_DISP  34
+#define SP_CUE   40 // returns number of cues of size cue_type 
+#define SP_LTXT  41 // returns number of adtl texts of size 8 (4,id and 4,len)
+#define SP_NOTE  42 // returns LO=size, HI=number of strings (sz sz sz...)
+#define SP_LABL	 43 // returns LO=size, HI=number of strings (sz sz sz...)
+#define SP_PLST  44 // returns number of playlist entries size play_type 
+*/
\ No newline at end of file
binary files /dev/null b/plugins/winamp/Logo.bmp differ
--- /dev/null
+++ b/plugins/winamp/OUT.H
@@ -1,0 +1,52 @@
+#define OUT_VER 0x10
+
+typedef struct 
+{
+	int version;				// module version (OUT_VER)
+	char *description;			// description of module, with version string
+	int id;						// module id. each input module gets its own. non-nullsoft modules should
+								// be >= 65536. 
+
+	HWND hMainWindow;			// winamp's main window (filled in by winamp)
+	HINSTANCE hDllInstance;		// DLL instance handle (filled in by winamp)
+
+	void (*Config)(HWND hwndParent); // configuration dialog 
+	void (*About)(HWND hwndParent);  // about dialog
+
+	void (*Init)();				// called when loaded
+	void (*Quit)();				// called when unloaded
+
+	int (*Open)(int samplerate, int numchannels, int bitspersamp, int bufferlenms, int prebufferms); 
+					// returns >=0 on success, <0 on failure
+					// NOTENOTENOTE: bufferlenms and prebufferms are ignored in most if not all output plug-ins. 
+					//    ... so don't expect the max latency returned to be what you asked for.
+					// returns max latency in ms (0 for diskwriters, etc)
+					// bufferlenms and prebufferms must be in ms. 0 to use defaults. 
+					// prebufferms must be <= bufferlenms
+
+	void (*Close)();	// close the ol' output device.
+
+	int (*Write)(char *buf, int len);	
+					// 0 on success. Len == bytes to write (<= 8192 always). buf is straight audio data. 
+					// 1 returns not able to write (yet). Non-blocking, always.
+
+	int (*CanWrite)();	// returns number of bytes possible to write at a given time. 
+						// Never will decrease unless you call Write (or Close, heh)
+
+	int (*IsPlaying)(); // non0 if output is still going or if data in buffers waiting to be
+						// written (i.e. closing while IsPlaying() returns 1 would truncate the song
+
+	int (*Pause)(int pause); // returns previous pause state
+
+	void (*SetVolume)(int volume); // volume is 0-255
+	void (*SetPan)(int pan); // pan is -128 to 128
+
+	void (*Flush)(int t);	// flushes buffers and restarts output at time t (in ms) 
+							// (used for seeking)
+
+	int (*GetOutputTime)(); // returns played time in MS
+	int (*GetWrittenTime)(); // returns time written in MS (used for synching up vis stuff)
+
+} Out_Module;
+
+
binary files /dev/null b/plugins/winamp/Open.bmp differ
--- /dev/null
+++ b/plugins/winamp/Out_faac.c
@@ -1,0 +1,850 @@
+#include <windows.h>
+#include <shlobj.h>
+#include <stdio.h>  // FILE *
+#include "resource.h"
+#include <faac.h>
+#include "out.h"
+
+
+#define PI_VER "v1.0beta"
+
+
+extern void config_read();
+extern void config_write();
+
+int getwrittentime();
+
+
+typedef struct output_tag  // any special vars associated with output file
+{
+ FILE  *fFile;         
+ DWORD lSize;
+ long  lSamprate;
+ WORD  wBitsPerSample;
+ WORD  wChannels;
+// DWORD dwDataOffset;
+ //BOOL  bWrittenHeader;
+ char  szNAME[256];
+
+ faacEncHandle hEncoder;
+ unsigned char *bitbuf;
+ DWORD maxBytesOutput;
+ long  samplesInput;
+ BOOL  bStopEnc;
+
+ unsigned char *inbuf;
+ DWORD full_size; // size of decoded file needed to set the length of progress bar
+ DWORD tagsize;
+ DWORD bytes_read; // from file
+ DWORD bytes_consumed; // by faadDecDecode
+ DWORD bytes_into_buffer;
+ DWORD bytes_Enc;
+} MYOUTPUT;
+
+Out_Module out;
+char config_AACoutdir[MAX_PATH]="";
+DWORD dwOptions;
+static MYOUTPUT mo0,
+                *mo=&mo0; // this is done to drag'n'drop code from CoolEdit plugin
+static HBITMAP hBmBrowse=NULL;
+static int srate, numchan, bps;
+volatile int writtentime, w_offset;
+static int last_pause=0;
+
+
+
+BOOL WINAPI _DllMainCRTStartup(HANDLE hInst, ULONG ulReason, LPVOID lpReserved)
+{
+   switch(ulReason)
+   {
+      case DLL_PROCESS_ATTACH:
+           DisableThreadLibraryCalls(hInst);
+           if(!hBmBrowse)
+            hBmBrowse=LoadBitmap(hInst, MAKEINTRESOURCE(IDB_BROWSE));
+         /* Code from LibMain inserted here.  Return TRUE to keep the
+            DLL loaded or return FALSE to fail loading the DLL.
+ 
+            You may have to modify the code in your original LibMain to
+            account for the fact that it may be called more than once.
+            You will get one DLL_PROCESS_ATTACH for each process that
+            loads the DLL. This is different from LibMain which gets
+            called only once when the DLL is loaded. The only time this
+            is critical is when you are using shared data sections.
+            If you are using shared data sections for statically
+            allocated data, you will need to be careful to initialize it
+            only once. Check your code carefully.
+ 
+            Certain one-time initializations may now need to be done for
+            each process that attaches. You may also not need code from
+            your original LibMain because the operating system may now
+            be doing it for you.
+         */
+         break;
+ 
+      case DLL_THREAD_ATTACH:
+         /* Called each time a thread is created in a process that has
+            already loaded (attached to) this DLL. Does not get called
+            for each thread that exists in the process before it loaded
+            the DLL.
+ 
+            Do thread-specific initialization here.
+         */
+         break;
+ 
+      case DLL_THREAD_DETACH:
+         /* Same as above, but called when a thread in the process
+            exits.
+ 
+            Do thread-specific cleanup here.
+         */
+         break;
+ 
+      case DLL_PROCESS_DETACH:
+           if(hBmBrowse)
+           {
+            DeleteObject(hBmBrowse);
+            hBmBrowse=NULL;
+           }
+         /* Code from _WEP inserted here.  This code may (like the
+            LibMain) not be necessary.  Check to make certain that the
+            operating system is not doing it for you.
+         */
+         break;
+   }
+ 
+   /* The return value is only used for DLL_PROCESS_ATTACH; all other
+      conditions are ignored.  */
+   return TRUE;   // successful DLL_PROCESS_ATTACH
+}
+
+static int CALLBACK WINAPI BrowseCallbackProc( HWND hwnd, UINT uMsg, LPARAM lParam, LPARAM lpData)
+{
+	if (uMsg == BFFM_INITIALIZED)
+	{
+		SetWindowText(hwnd,"Select Directory");
+		SendMessage(hwnd,BFFM_SETSELECTION,(WPARAM)1,(LPARAM)config_AACoutdir);
+	}
+	return 0;
+}
+
+
+static BOOL CALLBACK DIALOGMsgProc(HWND hWndDlg, UINT Message, WPARAM wParam, LPARAM lParam)
+{
+ switch(Message)
+ {
+  case WM_INITDIALOG:
+	  {
+      char buf[10];
+	   SendMessage(GetDlgItem(hWndDlg, IDC_BTN_BROWSE), BM_SETIMAGE, IMAGE_BITMAP, (LPARAM) hBmBrowse);
+       SetDlgItemText(hWndDlg, IDC_E_BROWSE, config_AACoutdir);
+
+	   SendMessage(GetDlgItem(hWndDlg, IDC_CB_BITRATE), CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)"8");
+       SendMessage(GetDlgItem(hWndDlg, IDC_CB_BITRATE), CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)"18");
+       SendMessage(GetDlgItem(hWndDlg, IDC_CB_BITRATE), CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)"20");
+       SendMessage(GetDlgItem(hWndDlg, IDC_CB_BITRATE), CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)"24");
+       SendMessage(GetDlgItem(hWndDlg, IDC_CB_BITRATE), CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)"32");
+       SendMessage(GetDlgItem(hWndDlg, IDC_CB_BITRATE), CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)"40");
+       SendMessage(GetDlgItem(hWndDlg, IDC_CB_BITRATE), CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)"48");
+       SendMessage(GetDlgItem(hWndDlg, IDC_CB_BITRATE), CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)"56");
+       SendMessage(GetDlgItem(hWndDlg, IDC_CB_BITRATE), CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)"64");
+       SendMessage(GetDlgItem(hWndDlg, IDC_CB_BITRATE), CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)"96");
+       SendMessage(GetDlgItem(hWndDlg, IDC_CB_BITRATE), CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)"112");
+       SendMessage(GetDlgItem(hWndDlg, IDC_CB_BITRATE), CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)"128");
+       SendMessage(GetDlgItem(hWndDlg, IDC_CB_BITRATE), CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)"160");
+       SendMessage(GetDlgItem(hWndDlg, IDC_CB_BITRATE), CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)"192");
+       SendMessage(GetDlgItem(hWndDlg, IDC_CB_BITRATE), CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)"256");
+       SendMessage(GetDlgItem(hWndDlg, IDC_CB_BITRATE), CB_SETCURSEL, 8, 0);
+
+       SendMessage(GetDlgItem(hWndDlg, IDC_CB_BANDWIDTH), CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)"0");
+       SendMessage(GetDlgItem(hWndDlg, IDC_CB_BANDWIDTH), CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)"4000");
+       SendMessage(GetDlgItem(hWndDlg, IDC_CB_BANDWIDTH), CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)"8000");
+       SendMessage(GetDlgItem(hWndDlg, IDC_CB_BANDWIDTH), CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)"16000");
+       SendMessage(GetDlgItem(hWndDlg, IDC_CB_BANDWIDTH), CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)"22050");
+       SendMessage(GetDlgItem(hWndDlg, IDC_CB_BANDWIDTH), CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)"24000");
+       SendMessage(GetDlgItem(hWndDlg, IDC_CB_BANDWIDTH), CB_SETCURSEL, 0, 0);
+
+	   if(dwOptions)
+	   {
+       char Enabled=!(dwOptions&1);
+		CheckDlgButton(hWndDlg,IDC_CHK_AUTOCFG, dwOptions&1);
+        EnableWindow(GetDlgItem(hWndDlg, IDC_RADIO_MPEG4), Enabled);
+        EnableWindow(GetDlgItem(hWndDlg, IDC_RADIO_MPEG2), Enabled);
+        EnableWindow(GetDlgItem(hWndDlg, IDC_RADIO_MAIN), Enabled);
+        EnableWindow(GetDlgItem(hWndDlg, IDC_RADIO_LOW), Enabled);
+        EnableWindow(GetDlgItem(hWndDlg, IDC_RADIO_SSR), Enabled);
+        EnableWindow(GetDlgItem(hWndDlg, IDC_RADIO_LTP), Enabled);
+        EnableWindow(GetDlgItem(hWndDlg, IDC_ALLOWMIDSIDE), Enabled);
+        EnableWindow(GetDlgItem(hWndDlg, IDC_USETNS), Enabled);
+//        EnableWindow(GetDlgItem(hWndDlg, IDC_USELFE), Enabled);
+        EnableWindow(GetDlgItem(hWndDlg, IDC_CB_BITRATE), Enabled);
+        EnableWindow(GetDlgItem(hWndDlg, IDC_CB_BANDWIDTH), Enabled);
+
+	    if(((dwOptions>>29)&7)==MPEG4)
+	     CheckDlgButton(hWndDlg,IDC_RADIO_MPEG4,TRUE);
+		else
+		 CheckDlgButton(hWndDlg,IDC_RADIO_MPEG2,TRUE);
+
+		switch((dwOptions>>27)&3)
+		{
+		 case 0:
+              CheckDlgButton(hWndDlg,IDC_RADIO_MAIN,TRUE);
+		      break;
+		 case 1:
+              CheckDlgButton(hWndDlg,IDC_RADIO_LOW,TRUE);
+		      break;
+		 case 2:
+              CheckDlgButton(hWndDlg,IDC_RADIO_SSR,TRUE);
+		      break;
+		  case 3:
+               CheckDlgButton(hWndDlg,IDC_RADIO_LTP,TRUE);
+		       break;
+		}
+
+		CheckDlgButton(hWndDlg, IDC_ALLOWMIDSIDE, (dwOptions>>26)&1);
+        CheckDlgButton(hWndDlg, IDC_USETNS, (dwOptions>>25)&1);
+        CheckDlgButton(hWndDlg, IDC_USELFE, (dwOptions>>24)&1);
+
+        SendMessage(GetDlgItem(hWndDlg, IDC_CB_BITRATE), CB_SETCURSEL, (dwOptions>>19)&31, 0);
+//        SendMessage(GetDlgItem(hWndDlg, IDC_CB_BANDWIDTH), CB_SETCURSEL, (dwOptions>>6)&31, 0);
+		sprintf(buf,"%lu",(dwOptions>>1)&0x0000ffff);
+        SetDlgItemText(hWndDlg, IDC_CB_BANDWIDTH, buf);
+		break;
+	   } // End dwOptions
+
+	   CheckDlgButton(hWndDlg, IDC_ALLOWMIDSIDE, TRUE);
+       CheckDlgButton(hWndDlg, IDC_USETNS, TRUE);
+       CheckDlgButton(hWndDlg, IDC_USELFE, FALSE);
+       
+	   switch((long)lParam)
+	   {
+	    case IDC_RADIO_MPEG4:
+			 CheckDlgButton(hWndDlg,IDC_RADIO_MPEG4,TRUE);
+			 break;
+		case IDC_RADIO_MPEG2:
+			 CheckDlgButton(hWndDlg,IDC_RADIO_MPEG2,TRUE);
+			 break;
+		case IDC_RADIO_MAIN:
+			 CheckDlgButton(hWndDlg,IDC_RADIO_MAIN,TRUE);
+			 break;
+		case IDC_RADIO_LOW:
+			 CheckDlgButton(hWndDlg,IDC_RADIO_LOW,TRUE);
+			 break;
+		case IDC_RADIO_SSR:
+			 CheckDlgButton(hWndDlg,IDC_RADIO_SSR,TRUE);
+			 break;
+		case IDC_RADIO_LTP:
+			 CheckDlgButton(hWndDlg,IDC_RADIO_LTP,TRUE);
+			 break;
+		case IDC_CHK_AUTOCFG:
+			 CheckDlgButton(hWndDlg,IDC_CHK_AUTOCFG, !IsDlgButtonChecked(hWndDlg,IDC_CHK_AUTOCFG));
+			 break;
+		default:
+			 CheckDlgButton(hWndDlg,IDC_RADIO_MPEG4,TRUE);
+			 CheckDlgButton(hWndDlg,IDC_RADIO_MAIN,TRUE);
+			 break;
+	   }         
+	  }
+      break; // End of WM_INITDIALOG                                 
+
+  case WM_CLOSE:
+       // Closing the Dialog behaves the same as Cancel               
+       PostMessage(hWndDlg, WM_COMMAND, IDCANCEL, 0L);
+       break; // End of WM_CLOSE                                      
+
+  case WM_COMMAND:
+	   switch(LOWORD(wParam))
+       {
+        case IDC_CHK_AUTOCFG:
+			{
+            char Enabled=!IsDlgButtonChecked(hWndDlg,IDC_CHK_AUTOCFG);
+      	 	 EnableWindow(GetDlgItem(hWndDlg, IDC_RADIO_MPEG4), Enabled);
+      		 EnableWindow(GetDlgItem(hWndDlg, IDC_RADIO_MPEG2), Enabled);
+      		 EnableWindow(GetDlgItem(hWndDlg, IDC_RADIO_MAIN), Enabled);
+      		 EnableWindow(GetDlgItem(hWndDlg, IDC_RADIO_LOW), Enabled);
+      		 EnableWindow(GetDlgItem(hWndDlg, IDC_RADIO_SSR), Enabled);
+      		 EnableWindow(GetDlgItem(hWndDlg, IDC_RADIO_LTP), Enabled);
+      		 EnableWindow(GetDlgItem(hWndDlg, IDC_ALLOWMIDSIDE), Enabled);
+      		 EnableWindow(GetDlgItem(hWndDlg, IDC_USETNS), Enabled);
+//      		 EnableWindow(GetDlgItem(hWndDlg, IDC_USELFE), Enabled);
+      		 EnableWindow(GetDlgItem(hWndDlg, IDC_CB_BITRATE), Enabled);
+      		 EnableWindow(GetDlgItem(hWndDlg, IDC_CB_BANDWIDTH), Enabled);
+			}
+            break;
+
+	    case IDC_BTN_BROWSE:
+             {
+             char name[MAX_PATH];
+             BROWSEINFO bi;
+             ITEMIDLIST *idlist;
+	          bi.hwndOwner = hWndDlg;
+	          bi.pidlRoot = 0;
+	          bi.pszDisplayName = name;
+	          bi.lpszTitle = "Select a directory for AAC-MPEG4 file output:";
+	          bi.ulFlags = BIF_RETURNONLYFSDIRS;
+	          bi.lpfn = BrowseCallbackProc;
+	          bi.lParam = 0;
+	          idlist = SHBrowseForFolder( &bi );
+	          if (idlist) 
+	           SHGetPathFromIDList( idlist, config_AACoutdir );
+
+              SetDlgItemText(hWndDlg, IDC_E_BROWSE, config_AACoutdir);
+			 }
+			 break;
+
+		case IDC_E_BROWSE:
+             GetDlgItemText(hWndDlg, IDC_E_BROWSE, config_AACoutdir,256);
+			 break;
+
+	    case IDOK:
+           	 {
+			 DWORD retVal=0;
+             faacEncConfiguration faacEncCfg;
+
+              if(IsDlgButtonChecked(hWndDlg,IDC_RADIO_MPEG4))
+			  {
+               faacEncCfg.mpegVersion=MPEG4;
+			   retVal|=MPEG4<<29;
+			  }
+              if(IsDlgButtonChecked(hWndDlg,IDC_RADIO_MPEG2))
+			  {
+               faacEncCfg.mpegVersion=MPEG2;
+			   retVal|=MPEG2<<29;
+			  }
+              if(IsDlgButtonChecked(hWndDlg,IDC_RADIO_MAIN))
+               faacEncCfg.aacObjectType=0;
+              if(IsDlgButtonChecked(hWndDlg,IDC_RADIO_LOW))
+			  {
+               faacEncCfg.aacObjectType=LOW;
+			   retVal|=1<<27;
+			  }
+              if(IsDlgButtonChecked(hWndDlg,IDC_RADIO_SSR))
+			  {
+               faacEncCfg.aacObjectType=2;
+			   retVal|=2<<27;
+			  }
+              if(IsDlgButtonChecked(hWndDlg,IDC_RADIO_LTP))
+			  {
+               faacEncCfg.aacObjectType=3;
+			   retVal|=3<<27;
+			  }
+
+              faacEncCfg.allowMidside=IsDlgButtonChecked(hWndDlg, IDC_ALLOWMIDSIDE) == BST_CHECKED ? 1 : 0;
+              retVal|=faacEncCfg.allowMidside<<26;
+              faacEncCfg.useTns=IsDlgButtonChecked(hWndDlg, IDC_USETNS) == BST_CHECKED ? 1 : 0;
+              retVal|=faacEncCfg.useTns<<25;
+              faacEncCfg.useLfe=IsDlgButtonChecked(hWndDlg, IDC_USELFE) == BST_CHECKED ? 1 : 0;
+              retVal|=faacEncCfg.useLfe<<24;
+			  
+			  faacEncCfg.bitRate=GetDlgItemInt(hWndDlg, IDC_CB_BITRATE, 0, FALSE);
+			  retVal|=(SendMessage(GetDlgItem(hWndDlg, IDC_CB_BITRATE), CB_GETCURSEL, 0, 0)&31)<<19;
+              //retVal|=faacEncCfg.bitRate;
+			  faacEncCfg.bandWidth=GetDlgItemInt(hWndDlg, IDC_CB_BANDWIDTH, 0, FALSE);
+//			  retVal|=(SendMessage(GetDlgItem(hWndDlg, IDC_CB_BANDWIDTH), CB_GETCURSEL, 0, 0)&31)<<6;
+			  retVal|=(faacEncCfg.bandWidth&0x0000ffff)<<1;
+
+			  if(IsDlgButtonChecked(hWndDlg,IDC_CHK_AUTOCFG))
+			   retVal|=1;
+
+			  EndDialog(hWndDlg, retVal);
+             }
+             break;
+
+        case IDCANCEL:
+             // Ignore data values entered into the controls        
+             // and dismiss the dialog window returning FALSE       
+             EndDialog(hWndDlg, FALSE);
+             break;
+
+		case IDC_BTN_ABOUT:
+           	 {
+		     char buf[256];
+ 			  sprintf(buf,"AAC-MPEG4 encoder plug-in %s\nThis plugin uses FAAC encoder engine v%g\n\nCompiled on %s\n",
+				          PI_VER,
+		 	              FAACENC_VERSION,
+						  __DATE__
+						  );
+		      MessageBox(hWndDlg, buf, "About", MB_OK);
+             }
+             break;
+       }
+       break; // End of WM_COMMAND                                 
+  default: return FALSE;
+ }
+ return TRUE;
+} // End of DIALOGSMsgProc                                      
+
+
+
+void config(HWND hWnd)
+{
+ dwOptions=DialogBox(out.hDllInstance, MAKEINTRESOURCE(IDD_COMPRESSION), hWnd, DIALOGMsgProc);
+// dwOptions=DialogBoxParam((HINSTANCE)out.hDllInstance,(LPCSTR)MAKEINTRESOURCE(IDD_COMPRESSION), (HWND)hWnd, (DLGPROC)DIALOGMsgProc, dwOptions);
+ config_write();
+}
+
+void about(HWND hwnd)
+{
+char buf[256];
+ sprintf(buf,"AAC-MPEG4 encoder plug-in %s\nThis plugin uses FAAC encoder engine v%g\n\nCompiled on %s\n",
+	         PI_VER,
+             FAACENC_VERSION,
+			 __DATE__);
+ MessageBox(hwnd, buf, "About", MB_OK);
+/*	MessageBox(hwnd,"AAC-MPEG4 encoder plug-in " PI_VER "\n"
+					"This plugin uses FAAC encoder engine v1.5\n\n"
+					"Compiled on " __DATE__ "\n","About",MB_OK);*/
+}
+
+void init()
+{
+ config_read();
+}
+
+void quit()
+{
+}
+
+static char *scanstr_back(char *str, char *toscan, char *defval)
+{
+	char *s=str+strlen(str)-1;
+	if (strlen(str) < 1) return defval;
+	if (strlen(toscan) < 1) return defval;
+	while (1)
+	{
+		char *t=toscan;
+		while (*t)
+			if (*t++ == *s) return s;
+		t=CharPrev(str,s);
+		if (t==s) return defval;
+		s=t;
+	}
+}
+
+int open(int lSamprate, int wChannels, int wBitsPerSample, int bufferlenms, int prebufferms)
+{
+//HANDLE        hOutput;
+faacEncHandle hEncoder;
+FILE          *outfile;
+unsigned char *bitbuf;
+DWORD         maxBytesOutput;
+long          samplesInput;
+int           bytesEncoded;
+
+
+	char *t,*p;
+	char temp2[MAX_PATH],lpstrFilename[MAX_PATH];
+	GetWindowText(out.hMainWindow,temp2,sizeof(temp2));
+	t=temp2;
+
+	t=scanstr_back(temp2,"-",NULL);
+	if (t) t[-1]=0;
+
+	if (temp2[0] && temp2[1] == '.')
+	{
+		char *p1,*p2;
+		p1=lpstrFilename;
+		p2=temp2;
+		while (*p2) *p1++=*p2++;
+		*p1=0;
+		p1 = temp2+1;
+		p2 = lpstrFilename;
+		while (*p2)
+		{
+			*p1++ = *p2++;
+		}
+		*p1=0;
+		temp2[0] = '0';
+	}
+	p=temp2;
+	while (*p != '.' && *p) p++;
+	if (*p == '.') 
+	{
+		*p = '-';
+		p=CharNext(p);
+	}
+	while (*p)
+	{
+		if (*p == '.' || *p == '/' || *p == '\\' || *p == '*' || 
+			*p == '?' || *p == ':' || *p == '+' || *p == '\"' || 
+			*p == '\'' || *p == '|' || *p == '<' || *p == '>') *p = '_';
+		p=CharNext(p);
+	}
+
+	p=config_AACoutdir;
+	if (p[0]) while (p[1]) p++;
+
+	if (!config_AACoutdir[0] || config_AACoutdir[0] == ' ')
+		config(out.hMainWindow);
+	if (!config_AACoutdir[0])
+		wsprintf(lpstrFilename,"%s.aac",temp2);
+	else if (p[0]=='\\')
+		wsprintf(lpstrFilename,"%s%s.aac",config_AACoutdir,temp2);
+	else
+		wsprintf(lpstrFilename,"%s\\%s.aac",config_AACoutdir,temp2);
+
+ 	w_offset = writtentime = 0;
+	numchan = wChannels;
+	srate = lSamprate;
+	bps = wBitsPerSample;
+
+
+
+	/* open the aac output file */
+	if(!(outfile=fopen(lpstrFilename, "wb")))
+	{
+     MessageBox(0, "Can't create file", "FAAC interface", MB_OK);
+	 return -1;
+	}
+
+	/* open the encoder library */
+	if(!(hEncoder=faacEncOpen(lSamprate, wChannels, &samplesInput, &maxBytesOutput)))
+	{
+	 MessageBox(0, "Can't init library", "FAAC interface", MB_OK);
+	 fclose(outfile);
+	 return -1;
+	}
+
+	if(!(bitbuf=(unsigned char*)malloc(maxBytesOutput*sizeof(unsigned char))))
+	{
+	 MessageBox(0, "Memory allocation error: output buffer", "FAAC interface", MB_OK);
+     faacEncClose(hEncoder);
+	 fclose(outfile);
+	 return -1;
+	}
+
+	if(!(mo->inbuf=(unsigned char*)malloc(sizeof(short)*1024*wChannels)))
+	{
+	 MessageBox(0, "Memory allocation error: output buffer", "FAAC interface", MB_OK);
+     faacEncClose(hEncoder);
+	 fclose(outfile);
+	 free(bitbuf);
+	 return -1;
+	}
+
+//	*lpChunkSize=samplesInput*2;
+
+/*    hOutput=GlobalAlloc(GMEM_MOVEABLE|GMEM_SHARE,sizeof(MYOUTPUT));
+    if(hOutput)
+    {
+	MYOUTPUT *mo;*/
+	 //mo=(MYOUTPUT *)GlobalLock(hOutput);
+	 mo->fFile=outfile;
+//	 mo->lSize=lSize;
+	 mo->lSamprate=lSamprate;
+	 mo->wBitsPerSample=wBitsPerSample;
+	 mo->wChannels=wChannels;
+//	 mo->dwDataOffset=0; // ???
+//	 mo->bWrittenHeader=0;
+	 strcpy(mo->szNAME,lpstrFilename);
+
+	 mo->hEncoder=hEncoder;
+     mo->bitbuf=bitbuf;
+	 mo->maxBytesOutput=maxBytesOutput;
+	 mo->samplesInput=samplesInput*(sizeof(short));
+	 mo->bStopEnc=0;
+
+//	 GlobalUnlock(hOutput);
+/*    }
+	else
+	{
+	 MessageBox(0, "hOutput=NULL", "FAAC interface", MB_OK);
+     faacEncClose(hEncoder);
+	 fclose(outfile);
+	 free(bitbuf);
+	 free(mo->inbuf);
+	 return -1;
+	}*/
+
+	if(dwOptions && !(dwOptions&1))
+	{
+     faacEncConfigurationPtr myFormat;
+     myFormat=faacEncGetCurrentConfiguration(hEncoder);
+
+	 myFormat->mpegVersion=(dwOptions>>29)&7;
+	 myFormat->aacObjectType=(dwOptions>>27)&3;
+	 myFormat->allowMidside=(dwOptions>>26)&1;
+	 myFormat->useTns=(dwOptions>>25)&1;
+	 myFormat->useLfe=(dwOptions>>24)&1;
+
+	 switch((dwOptions>>19)&31)
+	 {
+	  case 0:
+           myFormat->bitRate=8000;
+		   break;
+	  case 1:
+           myFormat->bitRate=18000;
+		   break;
+	  case 2:
+           myFormat->bitRate=20000;
+		   break;
+	  case 3:
+           myFormat->bitRate=24000;
+		   break;
+	  case 4:
+           myFormat->bitRate=32000;
+		   break;
+	  case 5:
+           myFormat->bitRate=40000;
+		   break;
+	  case 6:
+           myFormat->bitRate=48000;
+		   break;
+	  case 7:
+           myFormat->bitRate=56000;
+		   break;
+	  case 8:
+           myFormat->bitRate=64000;
+		   break;
+	  case 9:
+           myFormat->bitRate=96000;
+		   break;
+	  case 10:
+           myFormat->bitRate=112000;
+		   break;
+	  case 11:
+           myFormat->bitRate=128000;
+		   break;
+	  case 12:
+           myFormat->bitRate=160000;
+		   break;
+	  case 13:
+           myFormat->bitRate=192000;
+		   break;
+	  case 14:
+           myFormat->bitRate=256000;
+		   break;
+	 }
+     myFormat->bandWidth=(dwOptions>>1)&0x0000ffff;
+     if(!myFormat->bandWidth)
+	  myFormat->bandWidth=mo->lSamprate/2;
+
+	 if(!faacEncSetConfiguration(hEncoder, myFormat))
+	 {
+      MessageBox(0, "Unsupported parameters", "FAAC interface", MB_OK);
+      faacEncClose(hEncoder);
+	  fclose(outfile);
+	  free(bitbuf);
+      free(mo->inbuf);
+//      GlobalFree(hOutput);
+	  return -1;
+	 }
+/*	{
+faacEncConfigurationPtr myFormat;
+     myFormat=faacEncGetCurrentConfiguration(hEncoder);
+
+	 myFormat->mpegVersion=faacEncCfg.mpegVersion;
+	 myFormat->aacObjectType=faacEncCfg.aacObjectType;
+	 myFormat->allowMidside=faacEncCfg.allowMidside;
+	 myFormat->useLfe=faacEncCfg.useLfe;
+	 myFormat->useTns=faacEncCfg.useTns;
+	 myFormat->bandWidth=faacEncCfg.bandWidth;
+	 myFormat->bitRate=faacEncCfg.bitRate;
+
+	 if(!faacEncSetConfiguration(hEncoder, myFormat))
+	 {
+      MessageBox(0, "Unsupported parameters", "FAAC interface", MB_OK);
+      faacEncClose(hEncoder);
+	  fclose(outfile);
+	  free(bitbuf);
+      free(mo->inbuf);
+      GlobalFree(hOutput);
+	  return -1;
+	 }*/
+	}
+
+    bytesEncoded=faacEncEncode(hEncoder, 0, 0, bitbuf, maxBytesOutput); // initializes the flushing process
+    if(bytesEncoded>0)
+	 fwrite(bitbuf, 1, bytesEncoded, outfile);
+
+	return 0;
+}
+
+void close()
+{
+ if(mo->bytes_into_buffer)
+ {
+int bytesEncoded;
+  bytesEncoded=faacEncEncode(mo->hEncoder, (short *)mo->inbuf, mo->bytes_into_buffer/sizeof(short), mo->bitbuf, mo->maxBytesOutput);
+  if(bytesEncoded>0)
+   fwrite(mo->bitbuf, 1, bytesEncoded, mo->fFile);
+ }
+
+ if(mo->hEncoder)
+  faacEncClose(mo->hEncoder);
+ if(mo->fFile)
+  fclose(mo->fFile);
+ if(mo->bitbuf)
+  free(mo->bitbuf);
+ if(mo->inbuf)
+  free(mo->inbuf);
+
+// CloseHandle(outfile);
+}
+
+int write(char *buf, int len)
+{
+int bytesWritten;
+int bytesEncoded;
+int k,i,shift=0;
+
+//	int t;
+	writtentime += len;
+
+//	WriteFile(outfile,buf,len,&t,NULL);
+
+
+/* if(hOutput)
+ { 
+ MYOUTPUT far *mo;
+  mo=(MYOUTPUT far *)GlobalLock(hOutput);*/
+
+  if(!mo->bStopEnc)
+  {
+//   if(writtentime>mo->lSize)
+//	return 0;
+
+   if(mo->bytes_into_buffer+len<mo->samplesInput)
+   {
+    memcpy(mo->inbuf+mo->bytes_into_buffer, buf, len);
+	mo->bytes_into_buffer+=len;
+	return 0;
+   }
+   else
+   {
+    memcpy(mo->inbuf+mo->bytes_into_buffer, buf, mo->samplesInput-mo->bytes_into_buffer);
+    shift=mo->samplesInput-mo->bytes_into_buffer;
+    mo->bytes_into_buffer+=shift;
+	len-=shift;
+    buf+=shift;
+
+    bytesEncoded=faacEncEncode(mo->hEncoder, (short *)mo->inbuf, mo->samplesInput/sizeof(short), mo->bitbuf, mo->maxBytesOutput);
+	mo->bytes_into_buffer=0;
+    if(bytesEncoded<1) // end of flushing process
+    {
+     if(bytesEncoded<0)
+      MessageBox(0, "faacEncEncode() failed", "FAAC interface", MB_OK);
+     mo->bStopEnc=1;
+//     GlobalUnlock(hOutput);
+     return -1;
+    }
+   }
+
+   if(mo->bytes_into_buffer)
+   {
+    if(bytesEncoded<0)
+     MessageBox(0, "bytes_into_buffer>0", "FAAC interface", MB_OK);
+    mo->bStopEnc=1;
+//    GlobalUnlock(hOutput);
+    return -1;
+   }
+
+// call the actual encoding routine
+   k=len/mo->samplesInput;
+   for(i=0; i<k; i++)
+    bytesEncoded+=faacEncEncode(mo->hEncoder, (short *)(buf+i*mo->samplesInput), mo->samplesInput/sizeof(short), mo->bitbuf, mo->maxBytesOutput);
+   memcpy(mo->inbuf+mo->bytes_into_buffer, buf, len%mo->samplesInput);
+   mo->bytes_into_buffer+=len%mo->samplesInput;
+   if(bytesEncoded<1) // end of flushing process
+   {
+    if(bytesEncoded<0)
+     MessageBox(0, "faacEncEncode() failed", "FAAC interface", MB_OK);
+    mo->bStopEnc=1;
+//    GlobalUnlock(hOutput);
+    return -1;
+   }
+// write bitstream to aac file 
+   bytesWritten=fwrite(mo->bitbuf, 1, bytesEncoded, mo->fFile);
+   if(bytesWritten!=bytesEncoded)
+   {
+    MessageBox(0, "bytesWritten and bytesEncoded are different", "FAAC interface", MB_OK);
+    mo->bStopEnc=1;
+//    GlobalUnlock(hOutput);
+    return -1;
+   }
+
+//   GlobalUnlock(hOutput);
+  }
+// }
+
+
+	Sleep(0);
+	return 0;
+}
+
+int canwrite()
+{
+	return last_pause ? 0 : 16*1024*1024;
+//	return last_pause ? 0 : mo->samplesInput;
+//	return mo->samplesInput;
+}
+
+int isplaying()
+{
+	return 0;
+}
+
+int pause(int pause)
+{
+	int t=last_pause;
+	last_pause=pause;
+	return t;
+}
+
+void setvolume(int volume)
+{
+}
+
+void setpan(int pan)
+{
+}
+
+void flush(int t)
+{
+  int a;
+  w_offset=0;
+  a = t - getwrittentime();
+  w_offset=a;
+}
+	
+int getwrittentime()
+{
+	int t=srate*numchan,l;
+	int ms=writtentime;
+
+	l=ms%t;
+	ms /= t;
+	ms *= 1000;
+	ms += (l*1000)/t;
+
+	if (bps == 16) ms/=2;
+
+	return ms + w_offset;
+}
+
+Out_Module out = {
+	OUT_VER,
+	"Freeware AAC encoder " PI_VER,
+	33,
+	0, // hmainwindow
+	0, // hdllinstance
+	config,
+	about,
+	init,
+	quit,
+	open,
+	close,
+	write,
+	canwrite,
+	isplaying,
+	pause,
+	setvolume,
+	setpan,
+	flush,
+	getwrittentime,
+	getwrittentime
+};
+
+__declspec( dllexport ) Out_Module * winampGetOutModule()
+{
+	return &out;
+}
--- /dev/null
+++ b/plugins/winamp/RESOURCE.H
@@ -1,0 +1,44 @@
+//{{NO_DEPENDENCIES}}
+// Microsoft Developer Studio generated include file.
+// Used by FAAC.rc
+//
+#define IDD_COMPRESSION                 101
+#define IDB_LOGO                        104
+#define IDB_BROWSE                      106
+#define IDB_OPEN                        107
+#define IDC_RADIO1                      1000
+#define IDC_RADIO_MPEG4                 1000
+#define IDC_RADIO2                      1001
+#define IDC_RADIO_MPEG2                 1001
+#define IDC_RADIO4                      1002
+#define IDC_RADIO_LOW                   1002
+#define IDC_RADIO3                      1003
+#define IDC_RADIO_MAIN                  1003
+#define IDC_RADIO5                      1004
+#define IDC_RADIO_SSR                   1004
+#define IDC_RADIO6                      1005
+#define IDC_RADIO_LTP                   1005
+#define IDC_RADIO7                      1006
+#define IDC_RADIO8                      1007
+#define IDC_RADIO9                      1008
+#define IDC_ALLOWMIDSIDE                1011
+#define IDC_USETNS                      1012
+#define IDC_USELFE                      1013
+#define IDC_CB_BANDWIDTH                1015
+#define IDC_CB_BITRATE                  1017
+#define IDC_CHK_AUTOCFG                 1020
+#define IDC_E_BROWSE                    1021
+#define IDC_BTN_BROWSE                  1022
+#define IDC_IMG_LOGO                    1023
+#define IDC_BTN_ABOUT                   1024
+
+// Next default values for new objects
+// 
+#ifdef APSTUDIO_INVOKED
+#ifndef APSTUDIO_READONLY_SYMBOLS
+#define _APS_NEXT_RESOURCE_VALUE        108
+#define _APS_NEXT_COMMAND_VALUE         40001
+#define _APS_NEXT_CONTROL_VALUE         1025
+#define _APS_NEXT_SYMED_VALUE           101
+#endif
+#endif
--- /dev/null
+++ b/plugins/winamp/ReadMe.txt
@@ -1,0 +1,1 @@
+mail: kreel@interfree.it
--- /dev/null
+++ b/plugins/winamp/out_FAAC.dsp
@@ -1,0 +1,140 @@
+# Microsoft Developer Studio Project File - Name="out_FAAC" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
+
+CFG=out_FAAC - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE 
+!MESSAGE NMAKE /f "out_FAAC.mak".
+!MESSAGE 
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE 
+!MESSAGE NMAKE /f "out_FAAC.mak" CFG="out_FAAC - Win32 Debug"
+!MESSAGE 
+!MESSAGE Possible choices for configuration are:
+!MESSAGE 
+!MESSAGE "out_FAAC - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "out_FAAC - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE 
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=xicl6.exe
+MTL=midl.exe
+RSC=rc.exe
+
+!IF  "$(CFG)" == "out_FAAC - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Ignore_Export_Lib 1
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "out_FAAC_EXPORTS" /YX /FD /GZ /c
+# ADD CPP /nologo /MT /W3 /Gi /GX /O2 /I "../../include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "out_FAAC_EXPORTS" /YX /FD /c
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+# SUBTRACT RSC /x
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=xilink6.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 msvcrt.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 /nodefaultlib /out:"Release\out_AAC.dll" /pdbtype:sept
+# SUBTRACT LINK32 /incremental:no /debug
+
+!ELSEIF  "$(CFG)" == "out_FAAC - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug"
+# PROP Ignore_Export_Lib 1
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "out_FAAC_EXPORTS" /YX /FD /GZ /c
+# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "../../include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "out_FAAC_EXPORTS" /YX /FD /GZ /c
+# SUBTRACT CPP /WX
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+# SUBTRACT RSC /x
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=xilink6.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 msvcrt.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /nodefaultlib /out:"C:\Program Files\Sound\Gen\Winamp\Plugins\out_AAC.dll" /pdbtype:sept
+# SUBTRACT LINK32 /incremental:no
+
+!ENDIF 
+
+# Begin Target
+
+# Name "out_FAAC - Win32 Release"
+# Name "out_FAAC - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=.\Aacinfo.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\Config.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\FAAC.rc
+# End Source File
+# Begin Source File
+
+SOURCE=.\Out_faac.c
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=.\Main.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\Out.h
+# End Source File
+# End Group
+# Begin Group "Resource Files"
+
+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
+# Begin Source File
+
+SOURCE=.\Logo.bmp
+# End Source File
+# Begin Source File
+
+SOURCE=.\Open.bmp
+# End Source File
+# End Group
+# End Target
+# End Project
--- /dev/null
+++ b/plugins/winamp/out_FAAC.dsw
@@ -1,0 +1,44 @@
+Microsoft Developer Studio Workspace File, Format Version 6.00
+# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
+
+###############################################################################
+
+Project: "libfaac"=..\LIBFAAC\libfaac.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "out_FAAC"=.\out_FAAC.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+    Begin Project Dependency
+    Project_Dep_Name libfaac
+    End Project Dependency
+}}}
+
+###############################################################################
+
+Global:
+
+Package=<5>
+{{{
+}}}
+
+Package=<3>
+{{{
+}}}
+
+###############################################################################
+
--- a/winamp/.cvsignore
+++ /dev/null
@@ -1,13 +1,0 @@
-*.o
-*.so
-*.a
-*.ncb
-*.plg
-*.aps
-*.opt
-*.aac
-*.wav
-Release
-Debug
-ReleaseGUI
-DebugGUI
\ No newline at end of file
--- a/winamp/AACINFO.C
+++ /dev/null
@@ -1,249 +1,0 @@
-/*
- * FAAC - Freeware Advanced Audio Decoder
- * Copyright (C) 2001 Menno Bakker
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
-
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
- * $Id: AACINFO.C,v 1.1 2001/08/03 11:47:03 menno Exp $
- */
-
-#include <windows.h>
-#include "aacinfo.h"
-
-#define ADIF_MAX_SIZE 30 /* Should be enough */
-#define ADTS_MAX_SIZE 10 /* Should be enough */
-
-const int sample_rates[] = {96000,88200,64000,48000,44100,32000,24000,22050,16000,12000,11025,8000};
-
-static int read_ADIF_header(HANDLE file, FAACAACInfo *info)
-{
-	unsigned long tmp;
-	int bitstream;
-	unsigned char buffer[ADIF_MAX_SIZE];
-	int skip_size = 0;
-	int sf_idx;
-
-	/* Get ADIF header data */
-	
-	info->headertype = 1;
-
-	ReadFile(file, buffer, ADIF_MAX_SIZE, &tmp, 0);
-
-	/* copyright string */	
-	if(buffer[4] & 128)
-		skip_size += 9; /* skip 9 bytes */
-
-	bitstream = buffer[4 + skip_size] & 16;
-	info->bitrate = ((unsigned int)(buffer[4 + skip_size] & 0x0F)<<19)|
-		((unsigned int)buffer[5 + skip_size]<<11)|
-		((unsigned int)buffer[6 + skip_size]<<3)|
-		((unsigned int)buffer[7 + skip_size] & 0xE0);
-
-	if (bitstream == 0) {
-		info->object_type = ((buffer[9 + skip_size]&0x01)<<1)|((buffer[10 + skip_size]&0x80)>>7);
-		sf_idx = (buffer[10 + skip_size]&0x78)>>3;
-		info->channels = ((buffer[10 + skip_size]&0x07)<<1)|((buffer[11 + skip_size]&0x80)>>7);
-	} else {
-		info->object_type = (buffer[7 + skip_size] & 0x18)>>3;
-		sf_idx = ((buffer[7 + skip_size] & 0x07)<<1)|((buffer[8 + skip_size] & 0x80)>>7);
-		info->channels = (buffer[8 + skip_size]&0x78)>>3;
-	}
-	info->sampling_rate = sample_rates[sf_idx];
-
-	return 0;
-}
-
-static int read_ADTS_header(HANDLE file, FAACAACInfo *info, int *seek_table,
-							int tagsize)
-{
-	/* Get ADTS header data */
-	unsigned char buffer[ADTS_MAX_SIZE];
-	int frames, t_framelength = 0, frame_length, sr_idx, ID;
-	int second = 0, pos;
-	float frames_per_sec = 0;
-	unsigned long bytes;
-
-	info->headertype = 2;
-
-	/* Seek to the first frame */
-	SetFilePointer(file, tagsize, NULL, FILE_BEGIN);
-
-	/* Read all frames to ensure correct time and bitrate */
-	for(frames=0; /* */; frames++)
-	{
-		/* 12 bit SYNCWORD */
-		ReadFile(file, buffer, ADTS_MAX_SIZE, &bytes, 0);
-		if(bytes != ADTS_MAX_SIZE)
-		{
-			/* Bail out if no syncword found */
-			break;
-		}
-
-		if (!((buffer[0] == 0xFF)&&((buffer[1] & 0xF6) == 0xF0)))
-			break;
-
-		pos = SetFilePointer(file, 0, NULL, FILE_CURRENT) - ADTS_MAX_SIZE;
-
-		if(!frames)
-		{
-			/* fixed ADTS header is the same for every frame, so we read it only once */ 
-			/* Syncword found, proceed to read in the fixed ADTS header */ 
-			ID = buffer[1] & 0x08;
-			info->object_type = (buffer[2]&0xC0)>>6;
-			sr_idx = (buffer[2]&0x3C)>>2;
-			info->channels = ((buffer[2]&0x01)<<2)|((buffer[3]&0xC0)>>6);
-
-			frames_per_sec = sample_rates[sr_idx] / 1024.f;
-		}
-
-		/* ...and the variable ADTS header */
-		if (ID == 0) {
-			info->version = 4;
-			frame_length = (((unsigned int)buffer[4]) << 5) |
-				((unsigned int)buffer[5] >> 3);
-		} else { /* MPEG-2 */
-			info->version = 2;
-			frame_length = ((((unsigned int)buffer[3] & 0x3)) << 11)
-				| (((unsigned int)buffer[4]) << 3) | (buffer[5] >> 5);
-		}
-
-		t_framelength += frame_length;
-
-		if (frames > second*frames_per_sec)
-		{
-			seek_table[second] = pos;
-			second++;
-		}
-
-		SetFilePointer(file, frame_length - ADTS_MAX_SIZE, NULL, FILE_CURRENT);
-	}
-
-	info->sampling_rate = sample_rates[sr_idx];
-	info->bitrate = (int)(((t_framelength / frames) * (info->sampling_rate/1024.0)) +0.5)*8;
-	info->length = (int)((float)(frames/frames_per_sec))*1000;
-
-	return 0;
-}
-
-static int f_id3v2_tag(HANDLE file)
-{
-	unsigned char buffer[10];
-	unsigned long tmp;
-
-	ReadFile(file, buffer, 10, &tmp, 0);
-
-	if (StringComp(buffer, "ID3", 3) == 0) {
-		unsigned long tagsize;
-
-		/* high bit is not used */
-		tagsize = (buffer[6] << 21) | (buffer[7] << 14) |
-			(buffer[8] <<  7) | (buffer[9] <<  0);
-
-		tagsize += 10;
-
-		SetFilePointer(file, tagsize, NULL, FILE_BEGIN);
-
-		return tagsize;
-	} else {
-		SetFilePointer(file, 0, NULL, FILE_BEGIN);
-
-		return 0;
-	}
-}
-
-int get_AAC_format(char *filename, FAACAACInfo *info, int *seek_table)
-{
-	unsigned int tagsize;
-	HANDLE file;
-	unsigned long file_len;
-	unsigned char adxx_id[5];
-	unsigned long tmp;
-
-	if(StringComp(filename, "http://", 7) == 0)
-	{
-		info->version = 2;
-		info->length = 0;
-		info->bitrate = 128000;
-		info->sampling_rate = 44100;
-		info->channels = 2;
-		info->headertype = 0;
-		info->object_type = 1;
-
-		return 0;
-	}
-
-	file = CreateFile(filename, GENERIC_READ,
-		FILE_SHARE_READ | FILE_SHARE_WRITE, 0,
-		OPEN_EXISTING, FILE_FLAG_SEQUENTIAL_SCAN, 0);
-	if (file == INVALID_HANDLE_VALUE)
-		return -1;
-
-	file_len = GetFileSize(file, NULL);
-
-	tagsize = f_id3v2_tag(file); /* Skip the tag, if it's there */
-	file_len -= tagsize;
-
-	ReadFile(file, adxx_id, 4, &tmp, 0);
-	SetFilePointer(file, tagsize, NULL, FILE_BEGIN);
-
-	adxx_id[5-1] = 0;
-
-	info->length = 0;
-
-	if(StringComp(adxx_id, "ADIF", 4) == 0)
-	{
-		read_ADIF_header(file, info);
-	}
-	else
-	{
-		if ((adxx_id[0] == 0xFF)&&((adxx_id[1] & 0xF6) == 0xF0))
-		{
-//			SetFilePointer(file, tagsize, NULL, FILE_BEGIN);
-			read_ADTS_header(file, info, seek_table, tagsize);
-		}
-		else
-		{
-			/* Unknown/headerless AAC file, assume format: */
-			info->version = 2;
-			info->bitrate = 128000;
-			info->sampling_rate = 44100;
-			info->channels = 2;
-			info->headertype = 0;
-			info->object_type = 1;
-		}
-	}
-
-	if (info->length == 0)
-		info->length = (int)((file_len/(((info->bitrate*8)/1024)*16))*1000);
-
-	CloseHandle(file);
-
-	return 0;
-}
-
-int StringComp(char const *str1, char const *str2, unsigned long len)
-{
-	signed int c1 = 0, c2 = 0;
-
-	while (len--) {
-		c1 = *str1++;
-		c2 = *str2++;
-
-		if (c1 == 0 || c1 != c2)
-			break;
-	}
-
-	return c1 - c2;
-}
--- a/winamp/AACINFO.H
+++ /dev/null
@@ -1,39 +1,0 @@
-/*
- * FAAC - Freeware Advanced Audio Decoder
- * Copyright (C) 2001 Menno Bakker
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
-
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
- * $Id: AACINFO.H,v 1.1 2001/08/03 11:47:03 menno Exp $
- */
-
-typedef struct {
-	int version;
-	int channels;
-	int sampling_rate;
-	int bitrate;
-	int length;
-	int object_type;
-	int headertype;
-} FAACAACInfo;
-
-
-int get_AAC_format(char *filename, FAACAACInfo *info, int *seek_table);
-
-static int f_id3v2_tag(HANDLE file);
-static int read_ADIF_header(HANDLE file, FAACAACInfo *info);
-static int read_ADTS_header(HANDLE file, FAACAACInfo *info, int *seek_table,
-							int tagsize);
-int StringComp(char const *str1, char const *str2, unsigned long len);
--- a/winamp/Config.c
+++ /dev/null
@@ -1,47 +1,0 @@
-#include <windows.h>
-#include <stdio.h>
-#include <stdlib.h>
-
-
-static char app_name[] = "Freeware AAC encoder";
-static char INI_FILE[MAX_PATH];
-extern char config_AACoutdir[MAX_PATH];
-extern DWORD dwOptions;
-
-static void _r_s(char *name,char *data, int mlen)
-{
-char buf[2048];
- strcpy(buf,data);
- GetPrivateProfileString(app_name,name,buf,data,mlen,INI_FILE);
-}
-
-#define RS(x) (_r_s(#x,x,sizeof(x)))
-#define WS(x) (WritePrivateProfileString(app_name,#x,x,INI_FILE))
-
-
-
-static void config_init()
-{
-	char *p=INI_FILE;
-	GetModuleFileName(NULL,INI_FILE,sizeof(INI_FILE));
-	while (*p) p++;
-	while (p >= INI_FILE && *p != '.') p--;
-	strcpy(p+1,"ini");
-}
-
-void config_read()
-{
-char Options[512];
- config_init();
- RS(config_AACoutdir);
- RS(Options);
- dwOptions=atoi(Options);
-}
-
-void config_write()
-{
-char Options[512];
- WS(config_AACoutdir);
- sprintf(Options,"%lu",dwOptions);
- WS(Options);
-}
--- a/winamp/FAAC.H
+++ /dev/null
@@ -1,107 +1,0 @@
-/*
- * FAAC - Freeware Advanced Audio Coder
- * Copyright (C) 2001 Menno Bakker
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
-
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
- * $Id: FAAC.H,v 1.1 2001/08/03 11:47:03 menno Exp $
- */
-
-#ifndef FAACLIB_H
-#define FAACLIB_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-#ifdef WIN32
-  #pragma pack(push, 8)
-  #ifndef FAACAPI
-    #define FAACAPI __stdcall
-  #endif
-#else
-  #ifndef FAACAPI
-    #define FAACAPI
-  #endif
-#endif
-
-#define FAACENC_VERSION 1.5
-#define FAACENC_VERSIONB 0 /* If 1 this version is still in beta */
-
-/* MPEG ID's */
-#define MPEG2 1
-#define MPEG4 0
-
-/* AAC object types */
-#define MAIN 0
-#define LOW  1
-#define SSR  2
-#define LTP  3
-
-typedef struct faacEncConfiguration
-{
-	/* MPEG version, 2 or 4 */
-	unsigned int mpegVersion;
-
-	/* AAC object type */
-	unsigned int aacObjectType;
-
-	/* Allow mid/side coding */
-	unsigned int allowMidside;
-
-	/* Use one of the channels as LFE channel */
-	unsigned int useLfe;
-
-	/* Use Temporal Noise Shaping */
-	unsigned int useTns;
-
-	/* bitrate / channel of AAC file */
-	unsigned long bitRate;
-
-	/* AAC file frequency bandwidth */
-	unsigned int bandWidth;
-
-} faacEncConfiguration, *faacEncConfigurationPtr;
-
-typedef void *faacEncHandle;
-
-
-faacEncConfigurationPtr FAACAPI faacEncGetCurrentConfiguration(faacEncHandle hEncoder);
-int FAACAPI faacEncSetConfiguration (faacEncHandle hEncoder, faacEncConfigurationPtr config);
-
-faacEncHandle FAACAPI faacEncOpen(unsigned long sampleRate,
-								  unsigned int numChannels,
-								  unsigned long *inputSamples,
-								  unsigned long *maxOutputBytes);
-
-int FAACAPI faacEncEncode(faacEncHandle hEncoder,
-						  short *inputBuffer,
-						  unsigned int samplesInput,
-						  void *outputBuffer,
-						  unsigned int bufferSize
-						  );
-
-int FAACAPI faacEncClose(faacEncHandle hEncoder);
-
-
-#ifdef WIN32
-  #pragma pack(pop)
-#endif
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* FAACLIB_H */
\ No newline at end of file
--- a/winamp/FAAC.rc
+++ /dev/null
@@ -1,149 +1,0 @@
-//Microsoft Developer Studio generated resource script.
-//
-#include "resource.h"
-
-#define APSTUDIO_READONLY_SYMBOLS
-/////////////////////////////////////////////////////////////////////////////
-//
-// Generated from the TEXTINCLUDE 2 resource.
-//
-#include "afxres.h"
-
-/////////////////////////////////////////////////////////////////////////////
-#undef APSTUDIO_READONLY_SYMBOLS
-
-/////////////////////////////////////////////////////////////////////////////
-// English (U.S.) resources
-
-#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
-#ifdef _WIN32
-LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
-#pragma code_page(1252)
-#endif //_WIN32
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// Dialog
-//
-
-IDD_COMPRESSION DIALOG DISCARDABLE  0, 0, 178, 142
-STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
-CAPTION "AAC-MPEG4 options"
-FONT 8, "MS Sans Serif"
-BEGIN
-    CONTROL         "Automatic configuration",IDC_CHK_AUTOCFG,"Button",
-                    BS_AUTOCHECKBOX | WS_TABSTOP,4,4,90,10
-    CONTROL         "MPEG4",IDC_RADIO_MPEG4,"Button",BS_AUTORADIOBUTTON | 
-                    WS_GROUP,8,29,42,10
-    CONTROL         "MPEG2",IDC_RADIO_MPEG2,"Button",BS_AUTORADIOBUTTON,8,42,
-                    41,9
-    CONTROL         "Main",IDC_RADIO_MAIN,"Button",BS_AUTORADIOBUTTON | 
-                    WS_GROUP,12,73,31,10
-    CONTROL         "Low",IDC_RADIO_LOW,"Button",BS_AUTORADIOBUTTON,12,85,29,
-                    10
-    CONTROL         "SSR",IDC_RADIO_SSR,"Button",BS_AUTORADIOBUTTON | 
-                    WS_DISABLED,12,97,31,10
-    CONTROL         "LTP",IDC_RADIO_LTP,"Button",BS_AUTORADIOBUTTON,12,109,
-                    29,10
-    CONTROL         "Allow Mid/Side",IDC_ALLOWMIDSIDE,"Button",
-                    BS_AUTOCHECKBOX | WS_TABSTOP,59,21,63,10
-    CONTROL         "Use TNS",IDC_USETNS,"Button",BS_AUTOCHECKBOX | 
-                    WS_TABSTOP,59,33,45,10
-    CONTROL         "Use LFE channel",IDC_USELFE,"Button",BS_AUTOCHECKBOX | 
-                    WS_DISABLED | WS_TABSTOP,59,46,67,10
-    COMBOBOX        IDC_CB_BITRATE,126,68,48,30,CBS_DROPDOWNLIST | 
-                    WS_VSCROLL | WS_TABSTOP
-    COMBOBOX        IDC_CB_BANDWIDTH,126,85,48,30,CBS_DROPDOWN | WS_VSCROLL | 
-                    WS_TABSTOP
-    EDITTEXT        IDC_E_BROWSE,57,103,94,14,ES_AUTOHSCROLL
-    PUSHBUTTON      "Browse",IDC_BTN_BROWSE,156,103,18,14,BS_BITMAP
-    DEFPUSHBUTTON   "OK",IDOK,65,123,36,14
-    PUSHBUTTON      "Cancel",IDCANCEL,101,123,36,14
-    PUSHBUTTON      "About",IDC_BTN_ABOUT,138,123,36,14
-    GROUPBOX        "AAC type",IDC_STATIC,4,18,48,38
-    GROUPBOX        "Profile",IDC_STATIC,4,63,48,59
-    LTEXT           "Bitrate per channel",IDC_STATIC,59,73,60,8
-    LTEXT           "Bandwidth (0=full)",IDC_STATIC,59,89,57,8
-    CONTROL         104,IDC_IMG_LOGO,"Static",SS_BITMAP,138,4,36,23
-END
-
-
-#ifdef APSTUDIO_INVOKED
-/////////////////////////////////////////////////////////////////////////////
-//
-// TEXTINCLUDE
-//
-
-1 TEXTINCLUDE DISCARDABLE 
-BEGIN
-    "resource.h\0"
-END
-
-2 TEXTINCLUDE DISCARDABLE 
-BEGIN
-    "#include ""afxres.h""\r\n"
-    "\0"
-END
-
-3 TEXTINCLUDE DISCARDABLE 
-BEGIN
-    "\r\n"
-    "\0"
-END
-
-#endif    // APSTUDIO_INVOKED
-
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// DESIGNINFO
-//
-
-#ifdef APSTUDIO_INVOKED
-GUIDELINES DESIGNINFO DISCARDABLE 
-BEGIN
-    IDD_COMPRESSION, DIALOG
-    BEGIN
-        LEFTMARGIN, 4
-        RIGHTMARGIN, 174
-        TOPMARGIN, 4
-        BOTTOMMARGIN, 137
-    END
-END
-#endif    // APSTUDIO_INVOKED
-
-#endif    // English (U.S.) resources
-/////////////////////////////////////////////////////////////////////////////
-
-
-/////////////////////////////////////////////////////////////////////////////
-// Italian (Italy) resources
-
-#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ITA)
-#ifdef _WIN32
-LANGUAGE LANG_ITALIAN, SUBLANG_ITALIAN
-#pragma code_page(1252)
-#endif //_WIN32
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// Bitmap
-//
-
-IDB_LOGO                BITMAP  DISCARDABLE     "Logo.bmp"
-IDB_BROWSE              BITMAP  DISCARDABLE     "Open.bmp"
-#endif    // Italian (Italy) resources
-/////////////////////////////////////////////////////////////////////////////
-
-
-
-#ifndef APSTUDIO_INVOKED
-/////////////////////////////////////////////////////////////////////////////
-//
-// Generated from the TEXTINCLUDE 3 resource.
-//
-
-
-/////////////////////////////////////////////////////////////////////////////
-#endif    // not APSTUDIO_INVOKED
-
--- a/winamp/FILTERS.H
+++ /dev/null
@@ -1,121 +1,0 @@
-//////////////////////////////////////////////////////
-// GENERAL PURPOSE DEFS FOR CREATING CUSTOM FILTERS //
-//////////////////////////////////////////////////////
-
-
-typedef struct riffspecialdata_t
-{	HANDLE hSpecialData;	
-	HANDLE hData;			// Actual data handle
-	DWORD  dwSize;			// size of data in handle
-	DWORD  dwExtra;			// optional extra data (usually a count)
-	char   szListType[8];	// Parent list type (usually "WAVE" or "INFO", or "adtl")
-	char   szType[8];		// Usually a four character code for data, but can be up to 7 chars
-} SPECIALDATA;
-
-// "CUE " dwExtra=number of cues, each cue is 8 bytes		([4] name [4] sample offset)
-// "LTXT" dwExtra=number of items, each one is 8 bytes		([4] ltxt len [4] name [4] cue length [4] purpose [n] data)
-// "NOTE" dwExtra=number of strings, each one is n bytes	([4] name [n-4] length zero term)
-// "LABL" dwExtra=number of strings, each one is n bytes	([4] name [n-4] length zero term)
-// "PLST" dwExtra=number if items, each one is 16 bytes		([4] name [4] dwLen [4] dwLoops [4] dwMode)
-
-
-// For special data, .FLT must implement FilterGetFirstSpecialData and FilterGetNextSpecialData
-
-
-typedef DWORD           FOURCC;         // a four character code
-
-struct cue_type { DWORD dwName;
-				  DWORD dwPosition;
-				  FOURCC fccChunk;
-				  DWORD dwChunkStart;
-				  DWORD dwBlockStart;
-				  DWORD dwSampleOffset;
-				 };
-
-struct play_type {DWORD dwName;
-					 DWORD dwLength;
-					 DWORD dwLoops;
-					};
-
-
-typedef struct coolquery_tag
-	{char szName[24];
-	 char szCopyright[80];
-	 
-	 // rate table, bits are set for modes that can be handled
-	 WORD Quad32;  // Quads are 3-D encoded
-	 WORD Quad16;
-	 WORD Quad8;
-	 WORD Stereo8;    		// rates are from lowest bit:
-	 WORD Stereo12;   		// bit 0 set: 5500 (5512.5)
-	 WORD Stereo16;   		// bit 1 set: 11025 (11K)
-	 WORD Stereo24;   		// bit 2 set: 22050 (22K)
-	 WORD Stereo32;   		// bit 3 set: 32075 (32K, or 32000)
-	 WORD Mono8;      		// bit 4 set: 44100 (44K)
-	 WORD Mono12;	  		// bit 5 set: 48000 (48K)
-	 WORD Mono16;	  		// bit 6 set: 88200 (88K)   (future ultra-sonic rates?)
-	 WORD Mono24;	  		// bit 7 set: 96000 (96K)
-	 WORD Mono32;     		// bit 8 set: 132300 (132K)
-	 				  		// bit 9 set: 176400 (176K)
-	 DWORD dwFlags;
-	 char szExt[4];
-	 long lChunkSize;
-	 char szExt2[4];
-	 char szExt3[4];
-	 char szExt4[4];
-	} COOLQUERY;
-
-#define R_5500   1
-#define R_11025  2
-#define R_22050  4
-#define R_32075  8
-#define R_44100  16
-#define R_48000  32
-#define R_88200  64
-#define R_96000  128
-#define R_132300 256
-#define R_176400 512
-
-#define C_VALIDLIBRARY 1154
-
-#define QF_RATEADJUSTABLE		0x001   // if can handle non-standard sample rates
-										// if not, only rates in bit rate table understood
-#define QF_CANSAVE				0x002		  
-#define QF_CANLOAD				0x004
-#define QF_UNDERSTANDSALL		0x008   // will read ANYTHING, so it is the last resort if no other
-										// formats match
-#define QF_READSPECIALFIRST		0x010	// read special info before trying to read data
-#define QF_READSPECIALLAST		0x020	// read special info after reading data
-#define QF_WRITESPECIALFIRST	0x040	// when writing a file, special info is sent to DLL before data
-#define QF_WRITESPECIALLAST		0x080	// when writing, special info is sent to DLL after data
-#define QF_HASOPTIONSBOX		0x100	// set if options box implemented
-#define QF_NOASKFORCONVERT		0x200	// set to bypass asking for conversion if original in different rate, auto convert
-#define QF_NOHEADER				0x400	// set if this is a raw data format with no header
-#define QF_CANDO32BITFLOATS		0x800	// set if file format can handle 32-bit sample data for input
-#define QF_CANOPENVIRTUAL		0x1000	// Set if data is in Intel 8-bit or 16-bit sample format, or floats
-										// and the GetDataOffset() function is implemented
-
-// special types are read from and written to DLL in the order below
-/*
-// special types (particular to Windows waveforms)
-#define SP_IART  20
-#define SP_ICMT  21
-#define SP_ICOP  22
-#define SP_ICRD  23
-#define SP_IENG  24
-#define SP_IGNR  25
-#define SP_IKEY  26
-#define SP_IMED  27
-#define SP_INAM  28
-#define SP_ISFT  29
-#define SP_ISRC  30
-#define SP_ITCH  31
-#define SP_ISBJ  32
-#define SP_ISRF  33
-#define SP_DISP  34
-#define SP_CUE   40 // returns number of cues of size cue_type 
-#define SP_LTXT  41 // returns number of adtl texts of size 8 (4,id and 4,len)
-#define SP_NOTE  42 // returns LO=size, HI=number of strings (sz sz sz...)
-#define SP_LABL	 43 // returns LO=size, HI=number of strings (sz sz sz...)
-#define SP_PLST  44 // returns number of playlist entries size play_type 
-*/
\ No newline at end of file
binary files a/winamp/Logo.bmp /dev/null differ
--- a/winamp/OUT.H
+++ /dev/null
@@ -1,52 +1,0 @@
-#define OUT_VER 0x10
-
-typedef struct 
-{
-	int version;				// module version (OUT_VER)
-	char *description;			// description of module, with version string
-	int id;						// module id. each input module gets its own. non-nullsoft modules should
-								// be >= 65536. 
-
-	HWND hMainWindow;			// winamp's main window (filled in by winamp)
-	HINSTANCE hDllInstance;		// DLL instance handle (filled in by winamp)
-
-	void (*Config)(HWND hwndParent); // configuration dialog 
-	void (*About)(HWND hwndParent);  // about dialog
-
-	void (*Init)();				// called when loaded
-	void (*Quit)();				// called when unloaded
-
-	int (*Open)(int samplerate, int numchannels, int bitspersamp, int bufferlenms, int prebufferms); 
-					// returns >=0 on success, <0 on failure
-					// NOTENOTENOTE: bufferlenms and prebufferms are ignored in most if not all output plug-ins. 
-					//    ... so don't expect the max latency returned to be what you asked for.
-					// returns max latency in ms (0 for diskwriters, etc)
-					// bufferlenms and prebufferms must be in ms. 0 to use defaults. 
-					// prebufferms must be <= bufferlenms
-
-	void (*Close)();	// close the ol' output device.
-
-	int (*Write)(char *buf, int len);	
-					// 0 on success. Len == bytes to write (<= 8192 always). buf is straight audio data. 
-					// 1 returns not able to write (yet). Non-blocking, always.
-
-	int (*CanWrite)();	// returns number of bytes possible to write at a given time. 
-						// Never will decrease unless you call Write (or Close, heh)
-
-	int (*IsPlaying)(); // non0 if output is still going or if data in buffers waiting to be
-						// written (i.e. closing while IsPlaying() returns 1 would truncate the song
-
-	int (*Pause)(int pause); // returns previous pause state
-
-	void (*SetVolume)(int volume); // volume is 0-255
-	void (*SetPan)(int pan); // pan is -128 to 128
-
-	void (*Flush)(int t);	// flushes buffers and restarts output at time t (in ms) 
-							// (used for seeking)
-
-	int (*GetOutputTime)(); // returns played time in MS
-	int (*GetWrittenTime)(); // returns time written in MS (used for synching up vis stuff)
-
-} Out_Module;
-
-
binary files a/winamp/Open.bmp /dev/null differ
--- a/winamp/Out_faac.c
+++ /dev/null
@@ -1,850 +1,0 @@
-#include <windows.h>
-#include <shlobj.h>
-#include <stdio.h>  // FILE *
-#include "resource.h"
-#include "faac.h"
-#include "out.h"
-
-
-#define PI_VER "v1.0beta"
-
-
-extern void config_read();
-extern void config_write();
-
-int getwrittentime();
-
-
-typedef struct output_tag  // any special vars associated with output file
-{
- FILE  *fFile;         
- DWORD lSize;
- long  lSamprate;
- WORD  wBitsPerSample;
- WORD  wChannels;
-// DWORD dwDataOffset;
- //BOOL  bWrittenHeader;
- char  szNAME[256];
-
- faacEncHandle hEncoder;
- unsigned char *bitbuf;
- DWORD maxBytesOutput;
- long  samplesInput;
- BOOL  bStopEnc;
-
- unsigned char *inbuf;
- DWORD full_size; // size of decoded file needed to set the length of progress bar
- DWORD tagsize;
- DWORD bytes_read; // from file
- DWORD bytes_consumed; // by faadDecDecode
- DWORD bytes_into_buffer;
- DWORD bytes_Enc;
-} MYOUTPUT;
-
-Out_Module out;
-char config_AACoutdir[MAX_PATH]="";
-DWORD dwOptions;
-static MYOUTPUT mo0,
-                *mo=&mo0; // this is done to drag'n'drop code from CoolEdit plugin
-static HBITMAP hBmBrowse=NULL;
-static int srate, numchan, bps;
-volatile int writtentime, w_offset;
-static int last_pause=0;
-
-
-
-BOOL WINAPI _DllMainCRTStartup(HANDLE hInst, ULONG ulReason, LPVOID lpReserved)
-{
-   switch(ulReason)
-   {
-      case DLL_PROCESS_ATTACH:
-           DisableThreadLibraryCalls(hInst);
-           if(!hBmBrowse)
-            hBmBrowse=LoadBitmap(hInst, MAKEINTRESOURCE(IDB_BROWSE));
-         /* Code from LibMain inserted here.  Return TRUE to keep the
-            DLL loaded or return FALSE to fail loading the DLL.
- 
-            You may have to modify the code in your original LibMain to
-            account for the fact that it may be called more than once.
-            You will get one DLL_PROCESS_ATTACH for each process that
-            loads the DLL. This is different from LibMain which gets
-            called only once when the DLL is loaded. The only time this
-            is critical is when you are using shared data sections.
-            If you are using shared data sections for statically
-            allocated data, you will need to be careful to initialize it
-            only once. Check your code carefully.
- 
-            Certain one-time initializations may now need to be done for
-            each process that attaches. You may also not need code from
-            your original LibMain because the operating system may now
-            be doing it for you.
-         */
-         break;
- 
-      case DLL_THREAD_ATTACH:
-         /* Called each time a thread is created in a process that has
-            already loaded (attached to) this DLL. Does not get called
-            for each thread that exists in the process before it loaded
-            the DLL.
- 
-            Do thread-specific initialization here.
-         */
-         break;
- 
-      case DLL_THREAD_DETACH:
-         /* Same as above, but called when a thread in the process
-            exits.
- 
-            Do thread-specific cleanup here.
-         */
-         break;
- 
-      case DLL_PROCESS_DETACH:
-           if(hBmBrowse)
-           {
-            DeleteObject(hBmBrowse);
-            hBmBrowse=NULL;
-           }
-         /* Code from _WEP inserted here.  This code may (like the
-            LibMain) not be necessary.  Check to make certain that the
-            operating system is not doing it for you.
-         */
-         break;
-   }
- 
-   /* The return value is only used for DLL_PROCESS_ATTACH; all other
-      conditions are ignored.  */
-   return TRUE;   // successful DLL_PROCESS_ATTACH
-}
-
-static int CALLBACK WINAPI BrowseCallbackProc( HWND hwnd, UINT uMsg, LPARAM lParam, LPARAM lpData)
-{
-	if (uMsg == BFFM_INITIALIZED)
-	{
-		SetWindowText(hwnd,"Select Directory");
-		SendMessage(hwnd,BFFM_SETSELECTION,(WPARAM)1,(LPARAM)config_AACoutdir);
-	}
-	return 0;
-}
-
-
-static BOOL CALLBACK DIALOGMsgProc(HWND hWndDlg, UINT Message, WPARAM wParam, LPARAM lParam)
-{
- switch(Message)
- {
-  case WM_INITDIALOG:
-	  {
-      char buf[10];
-	   SendMessage(GetDlgItem(hWndDlg, IDC_BTN_BROWSE), BM_SETIMAGE, IMAGE_BITMAP, (LPARAM) hBmBrowse);
-       SetDlgItemText(hWndDlg, IDC_E_BROWSE, config_AACoutdir);
-
-	   SendMessage(GetDlgItem(hWndDlg, IDC_CB_BITRATE), CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)"8");
-       SendMessage(GetDlgItem(hWndDlg, IDC_CB_BITRATE), CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)"18");
-       SendMessage(GetDlgItem(hWndDlg, IDC_CB_BITRATE), CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)"20");
-       SendMessage(GetDlgItem(hWndDlg, IDC_CB_BITRATE), CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)"24");
-       SendMessage(GetDlgItem(hWndDlg, IDC_CB_BITRATE), CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)"32");
-       SendMessage(GetDlgItem(hWndDlg, IDC_CB_BITRATE), CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)"40");
-       SendMessage(GetDlgItem(hWndDlg, IDC_CB_BITRATE), CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)"48");
-       SendMessage(GetDlgItem(hWndDlg, IDC_CB_BITRATE), CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)"56");
-       SendMessage(GetDlgItem(hWndDlg, IDC_CB_BITRATE), CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)"64");
-       SendMessage(GetDlgItem(hWndDlg, IDC_CB_BITRATE), CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)"96");
-       SendMessage(GetDlgItem(hWndDlg, IDC_CB_BITRATE), CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)"112");
-       SendMessage(GetDlgItem(hWndDlg, IDC_CB_BITRATE), CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)"128");
-       SendMessage(GetDlgItem(hWndDlg, IDC_CB_BITRATE), CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)"160");
-       SendMessage(GetDlgItem(hWndDlg, IDC_CB_BITRATE), CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)"192");
-       SendMessage(GetDlgItem(hWndDlg, IDC_CB_BITRATE), CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)"256");
-       SendMessage(GetDlgItem(hWndDlg, IDC_CB_BITRATE), CB_SETCURSEL, 8, 0);
-
-       SendMessage(GetDlgItem(hWndDlg, IDC_CB_BANDWIDTH), CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)"0");
-       SendMessage(GetDlgItem(hWndDlg, IDC_CB_BANDWIDTH), CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)"4000");
-       SendMessage(GetDlgItem(hWndDlg, IDC_CB_BANDWIDTH), CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)"8000");
-       SendMessage(GetDlgItem(hWndDlg, IDC_CB_BANDWIDTH), CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)"16000");
-       SendMessage(GetDlgItem(hWndDlg, IDC_CB_BANDWIDTH), CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)"22050");
-       SendMessage(GetDlgItem(hWndDlg, IDC_CB_BANDWIDTH), CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)"24000");
-       SendMessage(GetDlgItem(hWndDlg, IDC_CB_BANDWIDTH), CB_SETCURSEL, 0, 0);
-
-	   if(dwOptions)
-	   {
-       char Enabled=!(dwOptions&1);
-		CheckDlgButton(hWndDlg,IDC_CHK_AUTOCFG, dwOptions&1);
-        EnableWindow(GetDlgItem(hWndDlg, IDC_RADIO_MPEG4), Enabled);
-        EnableWindow(GetDlgItem(hWndDlg, IDC_RADIO_MPEG2), Enabled);
-        EnableWindow(GetDlgItem(hWndDlg, IDC_RADIO_MAIN), Enabled);
-        EnableWindow(GetDlgItem(hWndDlg, IDC_RADIO_LOW), Enabled);
-        EnableWindow(GetDlgItem(hWndDlg, IDC_RADIO_SSR), Enabled);
-        EnableWindow(GetDlgItem(hWndDlg, IDC_RADIO_LTP), Enabled);
-        EnableWindow(GetDlgItem(hWndDlg, IDC_ALLOWMIDSIDE), Enabled);
-        EnableWindow(GetDlgItem(hWndDlg, IDC_USETNS), Enabled);
-//        EnableWindow(GetDlgItem(hWndDlg, IDC_USELFE), Enabled);
-        EnableWindow(GetDlgItem(hWndDlg, IDC_CB_BITRATE), Enabled);
-        EnableWindow(GetDlgItem(hWndDlg, IDC_CB_BANDWIDTH), Enabled);
-
-	    if(((dwOptions>>29)&7)==MPEG4)
-	     CheckDlgButton(hWndDlg,IDC_RADIO_MPEG4,TRUE);
-		else
-		 CheckDlgButton(hWndDlg,IDC_RADIO_MPEG2,TRUE);
-
-		switch((dwOptions>>27)&3)
-		{
-		 case 0:
-              CheckDlgButton(hWndDlg,IDC_RADIO_MAIN,TRUE);
-		      break;
-		 case 1:
-              CheckDlgButton(hWndDlg,IDC_RADIO_LOW,TRUE);
-		      break;
-		 case 2:
-              CheckDlgButton(hWndDlg,IDC_RADIO_SSR,TRUE);
-		      break;
-		  case 3:
-               CheckDlgButton(hWndDlg,IDC_RADIO_LTP,TRUE);
-		       break;
-		}
-
-		CheckDlgButton(hWndDlg, IDC_ALLOWMIDSIDE, (dwOptions>>26)&1);
-        CheckDlgButton(hWndDlg, IDC_USETNS, (dwOptions>>25)&1);
-        CheckDlgButton(hWndDlg, IDC_USELFE, (dwOptions>>24)&1);
-
-        SendMessage(GetDlgItem(hWndDlg, IDC_CB_BITRATE), CB_SETCURSEL, (dwOptions>>19)&31, 0);
-//        SendMessage(GetDlgItem(hWndDlg, IDC_CB_BANDWIDTH), CB_SETCURSEL, (dwOptions>>6)&31, 0);
-		sprintf(buf,"%lu",(dwOptions>>1)&0x0000ffff);
-        SetDlgItemText(hWndDlg, IDC_CB_BANDWIDTH, buf);
-		break;
-	   } // End dwOptions
-
-	   CheckDlgButton(hWndDlg, IDC_ALLOWMIDSIDE, TRUE);
-       CheckDlgButton(hWndDlg, IDC_USETNS, TRUE);
-       CheckDlgButton(hWndDlg, IDC_USELFE, FALSE);
-       
-	   switch((long)lParam)
-	   {
-	    case IDC_RADIO_MPEG4:
-			 CheckDlgButton(hWndDlg,IDC_RADIO_MPEG4,TRUE);
-			 break;
-		case IDC_RADIO_MPEG2:
-			 CheckDlgButton(hWndDlg,IDC_RADIO_MPEG2,TRUE);
-			 break;
-		case IDC_RADIO_MAIN:
-			 CheckDlgButton(hWndDlg,IDC_RADIO_MAIN,TRUE);
-			 break;
-		case IDC_RADIO_LOW:
-			 CheckDlgButton(hWndDlg,IDC_RADIO_LOW,TRUE);
-			 break;
-		case IDC_RADIO_SSR:
-			 CheckDlgButton(hWndDlg,IDC_RADIO_SSR,TRUE);
-			 break;
-		case IDC_RADIO_LTP:
-			 CheckDlgButton(hWndDlg,IDC_RADIO_LTP,TRUE);
-			 break;
-		case IDC_CHK_AUTOCFG:
-			 CheckDlgButton(hWndDlg,IDC_CHK_AUTOCFG, !IsDlgButtonChecked(hWndDlg,IDC_CHK_AUTOCFG));
-			 break;
-		default:
-			 CheckDlgButton(hWndDlg,IDC_RADIO_MPEG4,TRUE);
-			 CheckDlgButton(hWndDlg,IDC_RADIO_MAIN,TRUE);
-			 break;
-	   }         
-	  }
-      break; // End of WM_INITDIALOG                                 
-
-  case WM_CLOSE:
-       // Closing the Dialog behaves the same as Cancel               
-       PostMessage(hWndDlg, WM_COMMAND, IDCANCEL, 0L);
-       break; // End of WM_CLOSE                                      
-
-  case WM_COMMAND:
-	   switch(LOWORD(wParam))
-       {
-        case IDC_CHK_AUTOCFG:
-			{
-            char Enabled=!IsDlgButtonChecked(hWndDlg,IDC_CHK_AUTOCFG);
-      	 	 EnableWindow(GetDlgItem(hWndDlg, IDC_RADIO_MPEG4), Enabled);
-      		 EnableWindow(GetDlgItem(hWndDlg, IDC_RADIO_MPEG2), Enabled);
-      		 EnableWindow(GetDlgItem(hWndDlg, IDC_RADIO_MAIN), Enabled);
-      		 EnableWindow(GetDlgItem(hWndDlg, IDC_RADIO_LOW), Enabled);
-      		 EnableWindow(GetDlgItem(hWndDlg, IDC_RADIO_SSR), Enabled);
-      		 EnableWindow(GetDlgItem(hWndDlg, IDC_RADIO_LTP), Enabled);
-      		 EnableWindow(GetDlgItem(hWndDlg, IDC_ALLOWMIDSIDE), Enabled);
-      		 EnableWindow(GetDlgItem(hWndDlg, IDC_USETNS), Enabled);
-//      		 EnableWindow(GetDlgItem(hWndDlg, IDC_USELFE), Enabled);
-      		 EnableWindow(GetDlgItem(hWndDlg, IDC_CB_BITRATE), Enabled);
-      		 EnableWindow(GetDlgItem(hWndDlg, IDC_CB_BANDWIDTH), Enabled);
-			}
-            break;
-
-	    case IDC_BTN_BROWSE:
-             {
-             char name[MAX_PATH];
-             BROWSEINFO bi;
-             ITEMIDLIST *idlist;
-	          bi.hwndOwner = hWndDlg;
-	          bi.pidlRoot = 0;
-	          bi.pszDisplayName = name;
-	          bi.lpszTitle = "Select a directory for AAC-MPEG4 file output:";
-	          bi.ulFlags = BIF_RETURNONLYFSDIRS;
-	          bi.lpfn = BrowseCallbackProc;
-	          bi.lParam = 0;
-	          idlist = SHBrowseForFolder( &bi );
-	          if (idlist) 
-	           SHGetPathFromIDList( idlist, config_AACoutdir );
-
-              SetDlgItemText(hWndDlg, IDC_E_BROWSE, config_AACoutdir);
-			 }
-			 break;
-
-		case IDC_E_BROWSE:
-             GetDlgItemText(hWndDlg, IDC_E_BROWSE, config_AACoutdir,256);
-			 break;
-
-	    case IDOK:
-           	 {
-			 DWORD retVal=0;
-             faacEncConfiguration faacEncCfg;
-
-              if(IsDlgButtonChecked(hWndDlg,IDC_RADIO_MPEG4))
-			  {
-               faacEncCfg.mpegVersion=MPEG4;
-			   retVal|=MPEG4<<29;
-			  }
-              if(IsDlgButtonChecked(hWndDlg,IDC_RADIO_MPEG2))
-			  {
-               faacEncCfg.mpegVersion=MPEG2;
-			   retVal|=MPEG2<<29;
-			  }
-              if(IsDlgButtonChecked(hWndDlg,IDC_RADIO_MAIN))
-               faacEncCfg.aacObjectType=0;
-              if(IsDlgButtonChecked(hWndDlg,IDC_RADIO_LOW))
-			  {
-               faacEncCfg.aacObjectType=LOW;
-			   retVal|=1<<27;
-			  }
-              if(IsDlgButtonChecked(hWndDlg,IDC_RADIO_SSR))
-			  {
-               faacEncCfg.aacObjectType=2;
-			   retVal|=2<<27;
-			  }
-              if(IsDlgButtonChecked(hWndDlg,IDC_RADIO_LTP))
-			  {
-               faacEncCfg.aacObjectType=3;
-			   retVal|=3<<27;
-			  }
-
-              faacEncCfg.allowMidside=IsDlgButtonChecked(hWndDlg, IDC_ALLOWMIDSIDE) == BST_CHECKED ? 1 : 0;
-              retVal|=faacEncCfg.allowMidside<<26;
-              faacEncCfg.useTns=IsDlgButtonChecked(hWndDlg, IDC_USETNS) == BST_CHECKED ? 1 : 0;
-              retVal|=faacEncCfg.useTns<<25;
-              faacEncCfg.useLfe=IsDlgButtonChecked(hWndDlg, IDC_USELFE) == BST_CHECKED ? 1 : 0;
-              retVal|=faacEncCfg.useLfe<<24;
-			  
-			  faacEncCfg.bitRate=GetDlgItemInt(hWndDlg, IDC_CB_BITRATE, 0, FALSE);
-			  retVal|=(SendMessage(GetDlgItem(hWndDlg, IDC_CB_BITRATE), CB_GETCURSEL, 0, 0)&31)<<19;
-              //retVal|=faacEncCfg.bitRate;
-			  faacEncCfg.bandWidth=GetDlgItemInt(hWndDlg, IDC_CB_BANDWIDTH, 0, FALSE);
-//			  retVal|=(SendMessage(GetDlgItem(hWndDlg, IDC_CB_BANDWIDTH), CB_GETCURSEL, 0, 0)&31)<<6;
-			  retVal|=(faacEncCfg.bandWidth&0x0000ffff)<<1;
-
-			  if(IsDlgButtonChecked(hWndDlg,IDC_CHK_AUTOCFG))
-			   retVal|=1;
-
-			  EndDialog(hWndDlg, retVal);
-             }
-             break;
-
-        case IDCANCEL:
-             // Ignore data values entered into the controls        
-             // and dismiss the dialog window returning FALSE       
-             EndDialog(hWndDlg, FALSE);
-             break;
-
-		case IDC_BTN_ABOUT:
-           	 {
-		     char buf[256];
- 			  sprintf(buf,"AAC-MPEG4 encoder plug-in %s\nThis plugin uses FAAC encoder engine v%g\n\nCompiled on %s\n",
-				          PI_VER,
-		 	              FAACENC_VERSION,
-						  __DATE__
-						  );
-		      MessageBox(hWndDlg, buf, "About", MB_OK);
-             }
-             break;
-       }
-       break; // End of WM_COMMAND                                 
-  default: return FALSE;
- }
- return TRUE;
-} // End of DIALOGSMsgProc                                      
-
-
-
-void config(HWND hWnd)
-{
- dwOptions=DialogBox(out.hDllInstance, MAKEINTRESOURCE(IDD_COMPRESSION), hWnd, DIALOGMsgProc);
-// dwOptions=DialogBoxParam((HINSTANCE)out.hDllInstance,(LPCSTR)MAKEINTRESOURCE(IDD_COMPRESSION), (HWND)hWnd, (DLGPROC)DIALOGMsgProc, dwOptions);
- config_write();
-}
-
-void about(HWND hwnd)
-{
-char buf[256];
- sprintf(buf,"AAC-MPEG4 encoder plug-in %s\nThis plugin uses FAAC encoder engine v%g\n\nCompiled on %s\n",
-	         PI_VER,
-             FAACENC_VERSION,
-			 __DATE__);
- MessageBox(hwnd, buf, "About", MB_OK);
-/*	MessageBox(hwnd,"AAC-MPEG4 encoder plug-in " PI_VER "\n"
-					"This plugin uses FAAC encoder engine v1.5\n\n"
-					"Compiled on " __DATE__ "\n","About",MB_OK);*/
-}
-
-void init()
-{
- config_read();
-}
-
-void quit()
-{
-}
-
-static char *scanstr_back(char *str, char *toscan, char *defval)
-{
-	char *s=str+strlen(str)-1;
-	if (strlen(str) < 1) return defval;
-	if (strlen(toscan) < 1) return defval;
-	while (1)
-	{
-		char *t=toscan;
-		while (*t)
-			if (*t++ == *s) return s;
-		t=CharPrev(str,s);
-		if (t==s) return defval;
-		s=t;
-	}
-}
-
-int open(int lSamprate, int wChannels, int wBitsPerSample, int bufferlenms, int prebufferms)
-{
-//HANDLE        hOutput;
-faacEncHandle hEncoder;
-FILE          *outfile;
-unsigned char *bitbuf;
-DWORD         maxBytesOutput;
-long          samplesInput;
-int           bytesEncoded;
-
-
-	char *t,*p;
-	char temp2[MAX_PATH],lpstrFilename[MAX_PATH];
-	GetWindowText(out.hMainWindow,temp2,sizeof(temp2));
-	t=temp2;
-
-	t=scanstr_back(temp2,"-",NULL);
-	if (t) t[-1]=0;
-
-	if (temp2[0] && temp2[1] == '.')
-	{
-		char *p1,*p2;
-		p1=lpstrFilename;
-		p2=temp2;
-		while (*p2) *p1++=*p2++;
-		*p1=0;
-		p1 = temp2+1;
-		p2 = lpstrFilename;
-		while (*p2)
-		{
-			*p1++ = *p2++;
-		}
-		*p1=0;
-		temp2[0] = '0';
-	}
-	p=temp2;
-	while (*p != '.' && *p) p++;
-	if (*p == '.') 
-	{
-		*p = '-';
-		p=CharNext(p);
-	}
-	while (*p)
-	{
-		if (*p == '.' || *p == '/' || *p == '\\' || *p == '*' || 
-			*p == '?' || *p == ':' || *p == '+' || *p == '\"' || 
-			*p == '\'' || *p == '|' || *p == '<' || *p == '>') *p = '_';
-		p=CharNext(p);
-	}
-
-	p=config_AACoutdir;
-	if (p[0]) while (p[1]) p++;
-
-	if (!config_AACoutdir[0] || config_AACoutdir[0] == ' ')
-		config(out.hMainWindow);
-	if (!config_AACoutdir[0])
-		wsprintf(lpstrFilename,"%s.aac",temp2);
-	else if (p[0]=='\\')
-		wsprintf(lpstrFilename,"%s%s.aac",config_AACoutdir,temp2);
-	else
-		wsprintf(lpstrFilename,"%s\\%s.aac",config_AACoutdir,temp2);
-
- 	w_offset = writtentime = 0;
-	numchan = wChannels;
-	srate = lSamprate;
-	bps = wBitsPerSample;
-
-
-
-	/* open the aac output file */
-	if(!(outfile=fopen(lpstrFilename, "wb")))
-	{
-     MessageBox(0, "Can't create file", "FAAC interface", MB_OK);
-	 return -1;
-	}
-
-	/* open the encoder library */
-	if(!(hEncoder=faacEncOpen(lSamprate, wChannels, &samplesInput, &maxBytesOutput)))
-	{
-	 MessageBox(0, "Can't init library", "FAAC interface", MB_OK);
-	 fclose(outfile);
-	 return -1;
-	}
-
-	if(!(bitbuf=(unsigned char*)malloc(maxBytesOutput*sizeof(unsigned char))))
-	{
-	 MessageBox(0, "Memory allocation error: output buffer", "FAAC interface", MB_OK);
-     faacEncClose(hEncoder);
-	 fclose(outfile);
-	 return -1;
-	}
-
-	if(!(mo->inbuf=(unsigned char*)malloc(sizeof(short)*1024*wChannels)))
-	{
-	 MessageBox(0, "Memory allocation error: output buffer", "FAAC interface", MB_OK);
-     faacEncClose(hEncoder);
-	 fclose(outfile);
-	 free(bitbuf);
-	 return -1;
-	}
-
-//	*lpChunkSize=samplesInput*2;
-
-/*    hOutput=GlobalAlloc(GMEM_MOVEABLE|GMEM_SHARE,sizeof(MYOUTPUT));
-    if(hOutput)
-    {
-	MYOUTPUT *mo;*/
-	 //mo=(MYOUTPUT *)GlobalLock(hOutput);
-	 mo->fFile=outfile;
-//	 mo->lSize=lSize;
-	 mo->lSamprate=lSamprate;
-	 mo->wBitsPerSample=wBitsPerSample;
-	 mo->wChannels=wChannels;
-//	 mo->dwDataOffset=0; // ???
-//	 mo->bWrittenHeader=0;
-	 strcpy(mo->szNAME,lpstrFilename);
-
-	 mo->hEncoder=hEncoder;
-     mo->bitbuf=bitbuf;
-	 mo->maxBytesOutput=maxBytesOutput;
-	 mo->samplesInput=samplesInput*(sizeof(short));
-	 mo->bStopEnc=0;
-
-//	 GlobalUnlock(hOutput);
-/*    }
-	else
-	{
-	 MessageBox(0, "hOutput=NULL", "FAAC interface", MB_OK);
-     faacEncClose(hEncoder);
-	 fclose(outfile);
-	 free(bitbuf);
-	 free(mo->inbuf);
-	 return -1;
-	}*/
-
-	if(dwOptions && !(dwOptions&1))
-	{
-     faacEncConfigurationPtr myFormat;
-     myFormat=faacEncGetCurrentConfiguration(hEncoder);
-
-	 myFormat->mpegVersion=(dwOptions>>29)&7;
-	 myFormat->aacObjectType=(dwOptions>>27)&3;
-	 myFormat->allowMidside=(dwOptions>>26)&1;
-	 myFormat->useTns=(dwOptions>>25)&1;
-	 myFormat->useLfe=(dwOptions>>24)&1;
-
-	 switch((dwOptions>>19)&31)
-	 {
-	  case 0:
-           myFormat->bitRate=8000;
-		   break;
-	  case 1:
-           myFormat->bitRate=18000;
-		   break;
-	  case 2:
-           myFormat->bitRate=20000;
-		   break;
-	  case 3:
-           myFormat->bitRate=24000;
-		   break;
-	  case 4:
-           myFormat->bitRate=32000;
-		   break;
-	  case 5:
-           myFormat->bitRate=40000;
-		   break;
-	  case 6:
-           myFormat->bitRate=48000;
-		   break;
-	  case 7:
-           myFormat->bitRate=56000;
-		   break;
-	  case 8:
-           myFormat->bitRate=64000;
-		   break;
-	  case 9:
-           myFormat->bitRate=96000;
-		   break;
-	  case 10:
-           myFormat->bitRate=112000;
-		   break;
-	  case 11:
-           myFormat->bitRate=128000;
-		   break;
-	  case 12:
-           myFormat->bitRate=160000;
-		   break;
-	  case 13:
-           myFormat->bitRate=192000;
-		   break;
-	  case 14:
-           myFormat->bitRate=256000;
-		   break;
-	 }
-     myFormat->bandWidth=(dwOptions>>1)&0x0000ffff;
-     if(!myFormat->bandWidth)
-	  myFormat->bandWidth=mo->lSamprate/2;
-
-	 if(!faacEncSetConfiguration(hEncoder, myFormat))
-	 {
-      MessageBox(0, "Unsupported parameters", "FAAC interface", MB_OK);
-      faacEncClose(hEncoder);
-	  fclose(outfile);
-	  free(bitbuf);
-      free(mo->inbuf);
-//      GlobalFree(hOutput);
-	  return -1;
-	 }
-/*	{
-faacEncConfigurationPtr myFormat;
-     myFormat=faacEncGetCurrentConfiguration(hEncoder);
-
-	 myFormat->mpegVersion=faacEncCfg.mpegVersion;
-	 myFormat->aacObjectType=faacEncCfg.aacObjectType;
-	 myFormat->allowMidside=faacEncCfg.allowMidside;
-	 myFormat->useLfe=faacEncCfg.useLfe;
-	 myFormat->useTns=faacEncCfg.useTns;
-	 myFormat->bandWidth=faacEncCfg.bandWidth;
-	 myFormat->bitRate=faacEncCfg.bitRate;
-
-	 if(!faacEncSetConfiguration(hEncoder, myFormat))
-	 {
-      MessageBox(0, "Unsupported parameters", "FAAC interface", MB_OK);
-      faacEncClose(hEncoder);
-	  fclose(outfile);
-	  free(bitbuf);
-      free(mo->inbuf);
-      GlobalFree(hOutput);
-	  return -1;
-	 }*/
-	}
-
-    bytesEncoded=faacEncEncode(hEncoder, 0, 0, bitbuf, maxBytesOutput); // initializes the flushing process
-    if(bytesEncoded>0)
-	 fwrite(bitbuf, 1, bytesEncoded, outfile);
-
-	return 0;
-}
-
-void close()
-{
- if(mo->bytes_into_buffer)
- {
-int bytesEncoded;
-  bytesEncoded=faacEncEncode(mo->hEncoder, (short *)mo->inbuf, mo->bytes_into_buffer/sizeof(short), mo->bitbuf, mo->maxBytesOutput);
-  if(bytesEncoded>0)
-   fwrite(mo->bitbuf, 1, bytesEncoded, mo->fFile);
- }
-
- if(mo->hEncoder)
-  faacEncClose(mo->hEncoder);
- if(mo->fFile)
-  fclose(mo->fFile);
- if(mo->bitbuf)
-  free(mo->bitbuf);
- if(mo->inbuf)
-  free(mo->inbuf);
-
-// CloseHandle(outfile);
-}
-
-int write(char *buf, int len)
-{
-int bytesWritten;
-int bytesEncoded;
-int k,i,shift=0;
-
-//	int t;
-	writtentime += len;
-
-//	WriteFile(outfile,buf,len,&t,NULL);
-
-
-/* if(hOutput)
- { 
- MYOUTPUT far *mo;
-  mo=(MYOUTPUT far *)GlobalLock(hOutput);*/
-
-  if(!mo->bStopEnc)
-  {
-//   if(writtentime>mo->lSize)
-//	return 0;
-
-   if(mo->bytes_into_buffer+len<mo->samplesInput)
-   {
-    memcpy(mo->inbuf+mo->bytes_into_buffer, buf, len);
-	mo->bytes_into_buffer+=len;
-	return 0;
-   }
-   else
-   {
-    memcpy(mo->inbuf+mo->bytes_into_buffer, buf, mo->samplesInput-mo->bytes_into_buffer);
-    shift=mo->samplesInput-mo->bytes_into_buffer;
-    mo->bytes_into_buffer+=shift;
-	len-=shift;
-    buf+=shift;
-
-    bytesEncoded=faacEncEncode(mo->hEncoder, (short *)mo->inbuf, mo->samplesInput/sizeof(short), mo->bitbuf, mo->maxBytesOutput);
-	mo->bytes_into_buffer=0;
-    if(bytesEncoded<1) // end of flushing process
-    {
-     if(bytesEncoded<0)
-      MessageBox(0, "faacEncEncode() failed", "FAAC interface", MB_OK);
-     mo->bStopEnc=1;
-//     GlobalUnlock(hOutput);
-     return -1;
-    }
-   }
-
-   if(mo->bytes_into_buffer)
-   {
-    if(bytesEncoded<0)
-     MessageBox(0, "bytes_into_buffer>0", "FAAC interface", MB_OK);
-    mo->bStopEnc=1;
-//    GlobalUnlock(hOutput);
-    return -1;
-   }
-
-// call the actual encoding routine
-   k=len/mo->samplesInput;
-   for(i=0; i<k; i++)
-    bytesEncoded+=faacEncEncode(mo->hEncoder, (short *)(buf+i*mo->samplesInput), mo->samplesInput/sizeof(short), mo->bitbuf, mo->maxBytesOutput);
-   memcpy(mo->inbuf+mo->bytes_into_buffer, buf, len%mo->samplesInput);
-   mo->bytes_into_buffer+=len%mo->samplesInput;
-   if(bytesEncoded<1) // end of flushing process
-   {
-    if(bytesEncoded<0)
-     MessageBox(0, "faacEncEncode() failed", "FAAC interface", MB_OK);
-    mo->bStopEnc=1;
-//    GlobalUnlock(hOutput);
-    return -1;
-   }
-// write bitstream to aac file 
-   bytesWritten=fwrite(mo->bitbuf, 1, bytesEncoded, mo->fFile);
-   if(bytesWritten!=bytesEncoded)
-   {
-    MessageBox(0, "bytesWritten and bytesEncoded are different", "FAAC interface", MB_OK);
-    mo->bStopEnc=1;
-//    GlobalUnlock(hOutput);
-    return -1;
-   }
-
-//   GlobalUnlock(hOutput);
-  }
-// }
-
-
-	Sleep(0);
-	return 0;
-}
-
-int canwrite()
-{
-	return last_pause ? 0 : 16*1024*1024;
-//	return last_pause ? 0 : mo->samplesInput;
-//	return mo->samplesInput;
-}
-
-int isplaying()
-{
-	return 0;
-}
-
-int pause(int pause)
-{
-	int t=last_pause;
-	last_pause=pause;
-	return t;
-}
-
-void setvolume(int volume)
-{
-}
-
-void setpan(int pan)
-{
-}
-
-void flush(int t)
-{
-  int a;
-  w_offset=0;
-  a = t - getwrittentime();
-  w_offset=a;
-}
-	
-int getwrittentime()
-{
-	int t=srate*numchan,l;
-	int ms=writtentime;
-
-	l=ms%t;
-	ms /= t;
-	ms *= 1000;
-	ms += (l*1000)/t;
-
-	if (bps == 16) ms/=2;
-
-	return ms + w_offset;
-}
-
-Out_Module out = {
-	OUT_VER,
-	"Freeware AAC encoder " PI_VER,
-	33,
-	0, // hmainwindow
-	0, // hdllinstance
-	config,
-	about,
-	init,
-	quit,
-	open,
-	close,
-	write,
-	canwrite,
-	isplaying,
-	pause,
-	setvolume,
-	setpan,
-	flush,
-	getwrittentime,
-	getwrittentime
-};
-
-__declspec( dllexport ) Out_Module * winampGetOutModule()
-{
-	return &out;
-}
--- a/winamp/RESOURCE.H
+++ /dev/null
@@ -1,44 +1,0 @@
-//{{NO_DEPENDENCIES}}
-// Microsoft Developer Studio generated include file.
-// Used by FAAC.rc
-//
-#define IDD_COMPRESSION                 101
-#define IDB_LOGO                        104
-#define IDB_BROWSE                      106
-#define IDB_OPEN                        107
-#define IDC_RADIO1                      1000
-#define IDC_RADIO_MPEG4                 1000
-#define IDC_RADIO2                      1001
-#define IDC_RADIO_MPEG2                 1001
-#define IDC_RADIO4                      1002
-#define IDC_RADIO_LOW                   1002
-#define IDC_RADIO3                      1003
-#define IDC_RADIO_MAIN                  1003
-#define IDC_RADIO5                      1004
-#define IDC_RADIO_SSR                   1004
-#define IDC_RADIO6                      1005
-#define IDC_RADIO_LTP                   1005
-#define IDC_RADIO7                      1006
-#define IDC_RADIO8                      1007
-#define IDC_RADIO9                      1008
-#define IDC_ALLOWMIDSIDE                1011
-#define IDC_USETNS                      1012
-#define IDC_USELFE                      1013
-#define IDC_CB_BANDWIDTH                1015
-#define IDC_CB_BITRATE                  1017
-#define IDC_CHK_AUTOCFG                 1020
-#define IDC_E_BROWSE                    1021
-#define IDC_BTN_BROWSE                  1022
-#define IDC_IMG_LOGO                    1023
-#define IDC_BTN_ABOUT                   1024
-
-// Next default values for new objects
-// 
-#ifdef APSTUDIO_INVOKED
-#ifndef APSTUDIO_READONLY_SYMBOLS
-#define _APS_NEXT_RESOURCE_VALUE        108
-#define _APS_NEXT_COMMAND_VALUE         40001
-#define _APS_NEXT_CONTROL_VALUE         1025
-#define _APS_NEXT_SYMED_VALUE           101
-#endif
-#endif
--- a/winamp/ReadMe.txt
+++ /dev/null
@@ -1,1 +1,0 @@
-mail: kreel@interfree.it
--- a/winamp/out_FAAC.dsp
+++ /dev/null
@@ -1,140 +1,0 @@
-# Microsoft Developer Studio Project File - Name="out_FAAC" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
-
-CFG=out_FAAC - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE 
-!MESSAGE NMAKE /f "out_FAAC.mak".
-!MESSAGE 
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE 
-!MESSAGE NMAKE /f "out_FAAC.mak" CFG="out_FAAC - Win32 Debug"
-!MESSAGE 
-!MESSAGE Possible choices for configuration are:
-!MESSAGE 
-!MESSAGE "out_FAAC - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "out_FAAC - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE 
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-MTL=midl.exe
-RSC=rc.exe
-
-!IF  "$(CFG)" == "out_FAAC - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 1
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "out_FAAC_EXPORTS" /YX /FD /GZ /c
-# ADD CPP /nologo /MT /W3 /Gi /GX /O2 /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "out_FAAC_EXPORTS" /YX /FD /c
-# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
-# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-# SUBTRACT RSC /x
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 msvcrt.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 /nodefaultlib /out:"Release\out_AAC.dll" /pdbtype:sept
-# SUBTRACT LINK32 /incremental:no /debug
-
-!ELSEIF  "$(CFG)" == "out_FAAC - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 1
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "out_FAAC_EXPORTS" /YX /FD /GZ /c
-# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "out_FAAC_EXPORTS" /YX /FD /GZ /c
-# SUBTRACT CPP /WX
-# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
-# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-# SUBTRACT RSC /x
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 msvcrt.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /nodefaultlib /out:"C:\Program Files\Sound\Gen\Winamp\Plugins\out_AAC.dll" /pdbtype:sept
-# SUBTRACT LINK32 /incremental:no
-
-!ENDIF 
-
-# Begin Target
-
-# Name "out_FAAC - Win32 Release"
-# Name "out_FAAC - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=.\Aacinfo.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\Config.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\FAAC.rc
-# End Source File
-# Begin Source File
-
-SOURCE=.\Out_faac.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# Begin Source File
-
-SOURCE=.\Main.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\Out.h
-# End Source File
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-# Begin Source File
-
-SOURCE=.\Logo.bmp
-# End Source File
-# Begin Source File
-
-SOURCE=.\Open.bmp
-# End Source File
-# End Group
-# End Target
-# End Project
--- a/winamp/out_FAAC.dsw
+++ /dev/null
@@ -1,44 +1,0 @@
-Microsoft Developer Studio Workspace File, Format Version 6.00
-# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
-
-###############################################################################
-
-Project: "libfaac"=..\LIBFAAC\libfaac.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "out_FAAC"=.\out_FAAC.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-    Begin Project Dependency
-    Project_Dep_Name libfaac
-    End Project Dependency
-}}}
-
-###############################################################################
-
-Global:
-
-Package=<5>
-{{{
-}}}
-
-Package=<3>
-{{{
-}}}
-
-###############################################################################
-