ref: 8757a20d2b93d63236b8e7bb85df85596b75b238
parent: c3b6713ce9add1b13fa50d464eb8bf58e5accb33
author: menno <menno>
date: Thu Oct 11 05:53:44 EDT 2001
Structure changes to the CVS tree
--- 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>
-{{{
-}}}
-
-###############################################################################
-