[PD-cvs] SF.net SVN: pure-data: [9482] vendor
eighthave at users.sourceforge.net
eighthave at users.sourceforge.net
Fri Feb 22 17:56:29 CET 2008
Revision: 9482
http://pure-data.svn.sourceforge.net/pure-data/?rev=9482&view=rev
Author: eighthave
Date: 2008-02-22 08:56:27 -0800 (Fri, 22 Feb 2008)
Log Message:
-----------
importing lame-3.97.tar.gz
Added Paths:
-----------
vendor/lame/
vendor/lame/current/
vendor/lame/current/ACM/
vendor/lame/current/ACM/ACM.cpp
vendor/lame/current/ACM/ACM.h
vendor/lame/current/ACM/ACMStream.cpp
vendor/lame/current/ACM/ACMStream.h
vendor/lame/current/ACM/ADbg/
vendor/lame/current/ACM/ADbg/ADbg.cpp
vendor/lame/current/ACM/ADbg/ADbg.dsp
vendor/lame/current/ACM/ADbg/ADbg.h
vendor/lame/current/ACM/ADbg/ADbg_vc7.vcproj
vendor/lame/current/ACM/ADbg/Makefile.am
vendor/lame/current/ACM/ADbg/Makefile.in
vendor/lame/current/ACM/AEncodeProperties.cpp
vendor/lame/current/ACM/AEncodeProperties.h
vendor/lame/current/ACM/DecodeStream.cpp
vendor/lame/current/ACM/DecodeStream.h
vendor/lame/current/ACM/LameACM.inf
vendor/lame/current/ACM/Makefile.am
vendor/lame/current/ACM/Makefile.in
vendor/lame/current/ACM/TODO
vendor/lame/current/ACM/acm.rc
vendor/lame/current/ACM/adebug.h
vendor/lame/current/ACM/ddk/
vendor/lame/current/ACM/ddk/Makefile.am
vendor/lame/current/ACM/ddk/Makefile.in
vendor/lame/current/ACM/ddk/msacmdrv.h
vendor/lame/current/ACM/lame.ico
vendor/lame/current/ACM/lameACM.def
vendor/lame/current/ACM/lameACM_vc6.dsp
vendor/lame/current/ACM/lameACM_vc7.vcproj
vendor/lame/current/ACM/lame_acm.xml
vendor/lame/current/ACM/main.cpp
vendor/lame/current/ACM/readme.txt
vendor/lame/current/ACM/resource.h
vendor/lame/current/ACM/tinyxml/
vendor/lame/current/ACM/tinyxml/Makefile.am
vendor/lame/current/ACM/tinyxml/Makefile.in
vendor/lame/current/ACM/tinyxml/Makefile.tinyxml
vendor/lame/current/ACM/tinyxml/changes.txt
vendor/lame/current/ACM/tinyxml/dox
vendor/lame/current/ACM/tinyxml/makedistlinux
vendor/lame/current/ACM/tinyxml/makedistwin.bat
vendor/lame/current/ACM/tinyxml/readme.txt
vendor/lame/current/ACM/tinyxml/test.dsp
vendor/lame/current/ACM/tinyxml/test.dsw
vendor/lame/current/ACM/tinyxml/tinyxml.cpp
vendor/lame/current/ACM/tinyxml/tinyxml.dsp
vendor/lame/current/ACM/tinyxml/tinyxml.h
vendor/lame/current/ACM/tinyxml/tinyxml_vc7.vcproj
vendor/lame/current/ACM/tinyxml/tinyxmlerror.cpp
vendor/lame/current/ACM/tinyxml/tinyxmlparser.cpp
vendor/lame/current/ACM/tinyxml/xmltest.cpp
vendor/lame/current/API
vendor/lame/current/COPYING
vendor/lame/current/ChangeLog
vendor/lame/current/DEFINES
vendor/lame/current/Dll/
vendor/lame/current/Dll/BladeMP3EncDLL.c
vendor/lame/current/Dll/BladeMP3EncDLL.def
vendor/lame/current/Dll/BladeMP3EncDLL.h
vendor/lame/current/Dll/Example.cpp
vendor/lame/current/Dll/Example_vc6.dsp
vendor/lame/current/Dll/Example_vc6.dsw
vendor/lame/current/Dll/LameDLLInterface.htm
vendor/lame/current/Dll/LameDll_vc6.dsp
vendor/lame/current/Dll/LameDll_vc7.vcproj
vendor/lame/current/Dll/MP3export.pas
vendor/lame/current/Dll/Makefile.am
vendor/lame/current/Dll/Makefile.in
vendor/lame/current/Dll/Makefile.mingw32
vendor/lame/current/Dll/README
vendor/lame/current/HACKING
vendor/lame/current/INSTALL
vendor/lame/current/INSTALL.configure
vendor/lame/current/LICENSE
vendor/lame/current/Makefile.MSVC
vendor/lame/current/Makefile.am
vendor/lame/current/Makefile.am.global
vendor/lame/current/Makefile.in
vendor/lame/current/Makefile.unix
vendor/lame/current/README
vendor/lame/current/README.WINGTK
vendor/lame/current/STYLEGUIDE
vendor/lame/current/TODO
vendor/lame/current/USAGE
vendor/lame/current/acinclude.m4
vendor/lame/current/aclocal.m4
vendor/lame/current/config.guess
vendor/lame/current/config.h.in
vendor/lame/current/config.sub
vendor/lame/current/configMS.h
vendor/lame/current/configure
vendor/lame/current/configure.in
vendor/lame/current/debian/
vendor/lame/current/debian/Makefile.am
vendor/lame/current/debian/Makefile.in
vendor/lame/current/debian/changelog
vendor/lame/current/debian/control
vendor/lame/current/debian/copyright
vendor/lame/current/debian/lame.docs
vendor/lame/current/debian/lame.files
vendor/lame/current/debian/libmp3lame0-dev.docs
vendor/lame/current/debian/libmp3lame0-dev.files
vendor/lame/current/debian/libmp3lame0.files
vendor/lame/current/debian/rules
vendor/lame/current/depcomp
vendor/lame/current/doc/
vendor/lame/current/doc/Makefile.am
vendor/lame/current/doc/Makefile.in
vendor/lame/current/doc/html/
vendor/lame/current/doc/html/Makefile.am
vendor/lame/current/doc/html/Makefile.in
vendor/lame/current/doc/html/basic.html
vendor/lame/current/doc/html/contributors.html
vendor/lame/current/doc/html/examples.html
vendor/lame/current/doc/html/history.html
vendor/lame/current/doc/html/id3.html
vendor/lame/current/doc/html/index.html
vendor/lame/current/doc/html/lame.css
vendor/lame/current/doc/html/modes.html
vendor/lame/current/doc/html/node6.html
vendor/lame/current/doc/html/presets.html
vendor/lame/current/doc/html/switchs.html
vendor/lame/current/doc/man/
vendor/lame/current/doc/man/Makefile.am
vendor/lame/current/doc/man/Makefile.in
vendor/lame/current/doc/man/lame.1
vendor/lame/current/dshow/
vendor/lame/current/dshow/Encoder.cpp
vendor/lame/current/dshow/Encoder.h
vendor/lame/current/dshow/Makefile.am
vendor/lame/current/dshow/Makefile.in
vendor/lame/current/dshow/Mpegac.cpp
vendor/lame/current/dshow/Mpegac.def
vendor/lame/current/dshow/Mpegac.h
vendor/lame/current/dshow/PropPage.cpp
vendor/lame/current/dshow/PropPage.h
vendor/lame/current/dshow/PropPage_adv.cpp
vendor/lame/current/dshow/PropPage_adv.h
vendor/lame/current/dshow/Property.rc
vendor/lame/current/dshow/README
vendor/lame/current/dshow/REG.CPP
vendor/lame/current/dshow/REG.H
vendor/lame/current/dshow/UIDS.H
vendor/lame/current/dshow/aboutprp.cpp
vendor/lame/current/dshow/aboutprp.h
vendor/lame/current/dshow/dshow.dsp
vendor/lame/current/dshow/dshow.dsw
vendor/lame/current/dshow/elogo.ico
vendor/lame/current/dshow/iaudioprops.h
vendor/lame/current/dshow/resource.h
vendor/lame/current/frontend/
vendor/lame/current/frontend/Makefile.am
vendor/lame/current/frontend/Makefile.in
vendor/lame/current/frontend/amiga_mpega.c
vendor/lame/current/frontend/brhist.c
vendor/lame/current/frontend/brhist.h
vendor/lame/current/frontend/console.c
vendor/lame/current/frontend/console.h
vendor/lame/current/frontend/depcomp
vendor/lame/current/frontend/get_audio.c
vendor/lame/current/frontend/get_audio.h
vendor/lame/current/frontend/gpkplotting.c
vendor/lame/current/frontend/gpkplotting.h
vendor/lame/current/frontend/gtkanal.c
vendor/lame/current/frontend/gtkanal.h
vendor/lame/current/frontend/lame_vc6.dsp
vendor/lame/current/frontend/lame_vc7.vcproj
vendor/lame/current/frontend/lametime.c
vendor/lame/current/frontend/lametime.h
vendor/lame/current/frontend/main.c
vendor/lame/current/frontend/main.h
vendor/lame/current/frontend/mp3rtp.c
vendor/lame/current/frontend/mp3x.c
vendor/lame/current/frontend/mp3x_vc6.dsp
vendor/lame/current/frontend/mp3x_vc7.vcproj
vendor/lame/current/frontend/parse.c
vendor/lame/current/frontend/parse.h
vendor/lame/current/frontend/portableio.c
vendor/lame/current/frontend/portableio.h
vendor/lame/current/frontend/rtp.c
vendor/lame/current/frontend/rtp.h
vendor/lame/current/frontend/timestatus.c
vendor/lame/current/frontend/timestatus.h
vendor/lame/current/include/
vendor/lame/current/include/Makefile.am
vendor/lame/current/include/Makefile.in
vendor/lame/current/include/lame.h
vendor/lame/current/install-sh
vendor/lame/current/lame.bat
vendor/lame/current/lame.spec
vendor/lame/current/lame.spec.in
vendor/lame/current/lame_projects_vc6.dsp
vendor/lame/current/lame_vc6.dsw
vendor/lame/current/lame_vc7.sln
vendor/lame/current/libmp3lame/
vendor/lame/current/libmp3lame/Makefile.am
vendor/lame/current/libmp3lame/Makefile.in
vendor/lame/current/libmp3lame/VbrTag.c
vendor/lame/current/libmp3lame/VbrTag.h
vendor/lame/current/libmp3lame/bitstream.c
vendor/lame/current/libmp3lame/bitstream.h
vendor/lame/current/libmp3lame/depcomp
vendor/lame/current/libmp3lame/encoder.c
vendor/lame/current/libmp3lame/encoder.h
vendor/lame/current/libmp3lame/fft.c
vendor/lame/current/libmp3lame/fft.h
vendor/lame/current/libmp3lame/gain_analysis.c
vendor/lame/current/libmp3lame/gain_analysis.h
vendor/lame/current/libmp3lame/i386/
vendor/lame/current/libmp3lame/i386/Makefile.am
vendor/lame/current/libmp3lame/i386/Makefile.in
vendor/lame/current/libmp3lame/i386/choose_table.nas
vendor/lame/current/libmp3lame/i386/cpu_feat.nas
vendor/lame/current/libmp3lame/i386/fft.nas
vendor/lame/current/libmp3lame/i386/fft3dn.nas
vendor/lame/current/libmp3lame/i386/fftfpu.nas
vendor/lame/current/libmp3lame/i386/fftsse.nas
vendor/lame/current/libmp3lame/i386/ffttbl.nas
vendor/lame/current/libmp3lame/i386/nasm.h
vendor/lame/current/libmp3lame/id3tag.c
vendor/lame/current/libmp3lame/id3tag.h
vendor/lame/current/libmp3lame/l3side.h
vendor/lame/current/libmp3lame/lame-analysis.h
vendor/lame/current/libmp3lame/lame.c
vendor/lame/current/libmp3lame/lame_global_flags.h
vendor/lame/current/libmp3lame/libmp3lame_vc6.dsp
vendor/lame/current/libmp3lame/libmp3lame_vc7.vcproj
vendor/lame/current/libmp3lame/machine.h
vendor/lame/current/libmp3lame/mpglib_interface.c
vendor/lame/current/libmp3lame/newmdct.c
vendor/lame/current/libmp3lame/newmdct.h
vendor/lame/current/libmp3lame/presets.c
vendor/lame/current/libmp3lame/psymodel.c
vendor/lame/current/libmp3lame/psymodel.h
vendor/lame/current/libmp3lame/quantize.c
vendor/lame/current/libmp3lame/quantize.h
vendor/lame/current/libmp3lame/quantize_pvt.c
vendor/lame/current/libmp3lame/quantize_pvt.h
vendor/lame/current/libmp3lame/reservoir.c
vendor/lame/current/libmp3lame/reservoir.h
vendor/lame/current/libmp3lame/set_get.c
vendor/lame/current/libmp3lame/set_get.h
vendor/lame/current/libmp3lame/tables.c
vendor/lame/current/libmp3lame/tables.h
vendor/lame/current/libmp3lame/takehiro.c
vendor/lame/current/libmp3lame/util.c
vendor/lame/current/libmp3lame/util.h
vendor/lame/current/libmp3lame/vbrquantize.c
vendor/lame/current/libmp3lame/vbrquantize.h
vendor/lame/current/libmp3lame/version.c
vendor/lame/current/libmp3lame/version.h
vendor/lame/current/ltconfig
vendor/lame/current/ltmain.sh
vendor/lame/current/mac/
vendor/lame/current/mac/LAME.mcp
vendor/lame/current/mac/LAME_Carbon_Debug.pch
vendor/lame/current/mac/LAME_Carbon_Final.pch
vendor/lame/current/mac/LAME_Classic_Debug.pch
vendor/lame/current/mac/LAME_Classic_Final.pch
vendor/lame/current/mac/MacDLLMain.c
vendor/lame/current/mac/Makefile.am
vendor/lame/current/mac/Makefile.in
vendor/lame/current/mac/Precompile_Common.h
vendor/lame/current/misc/
vendor/lame/current/misc/Lame.vbs
vendor/lame/current/misc/Makefile.am
vendor/lame/current/misc/Makefile.in
vendor/lame/current/misc/abx.c
vendor/lame/current/misc/ath.c
vendor/lame/current/misc/auenc
vendor/lame/current/misc/depcomp
vendor/lame/current/misc/lame4dos.bat
vendor/lame/current/misc/lameGUI.html
vendor/lame/current/misc/lameid3.pl
vendor/lame/current/misc/mlame
vendor/lame/current/misc/mlame_corr.c
vendor/lame/current/misc/mugeco.sh
vendor/lame/current/misc/scalartest.c
vendor/lame/current/missing
vendor/lame/current/mkinstalldirs
vendor/lame/current/mpglib/
vendor/lame/current/mpglib/Makefile.am
vendor/lame/current/mpglib/Makefile.in
vendor/lame/current/mpglib/README
vendor/lame/current/mpglib/TODO
vendor/lame/current/mpglib/common.c
vendor/lame/current/mpglib/common.h
vendor/lame/current/mpglib/dct64_i386.c
vendor/lame/current/mpglib/dct64_i386.h
vendor/lame/current/mpglib/decode_i386.c
vendor/lame/current/mpglib/decode_i386.h
vendor/lame/current/mpglib/depcomp
vendor/lame/current/mpglib/huffman.h
vendor/lame/current/mpglib/interface.c
vendor/lame/current/mpglib/interface.h
vendor/lame/current/mpglib/l2tables.h
vendor/lame/current/mpglib/layer1.c
vendor/lame/current/mpglib/layer1.h
vendor/lame/current/mpglib/layer2.c
vendor/lame/current/mpglib/layer2.h
vendor/lame/current/mpglib/layer3.c
vendor/lame/current/mpglib/layer3.h
vendor/lame/current/mpglib/mpg123.h
vendor/lame/current/mpglib/mpglib.h
vendor/lame/current/mpglib/mpglib_vc6.dsp
vendor/lame/current/mpglib/mpglib_vc7.vcproj
vendor/lame/current/mpglib/tabinit.c
vendor/lame/current/mpglib/tabinit.h
vendor/lame/current/testcase.mp3
vendor/lame/current/testcase.wav
Added: vendor/lame/current/ACM/ACM.cpp
===================================================================
--- vendor/lame/current/ACM/ACM.cpp (rev 0)
+++ vendor/lame/current/ACM/ACM.cpp 2008-02-22 16:56:27 UTC (rev 9482)
@@ -0,0 +1,1421 @@
+/**
+ *
+ * Lame ACM wrapper, encode/decode MP3 based RIFF/AVI files in MS Windows
+ *
+ * Copyright (c) 2002 Steve Lhomme <steve.lhomme at free.fr>
+ *
+ * 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
+ *
+ */
+
+/*!
+ \author Steve Lhomme
+ \version \$Id: ACM.cpp,v 1.18 2005/03/13 14:43:21 robert Exp $
+*/
+
+#if !defined(STRICT)
+#define STRICT
+#endif // STRICT
+
+#include <algorithm>
+
+#include <windows.h>
+#include <windowsx.h>
+#include <intshcut.h>
+
+#include <mmreg.h>
+#include <msacm.h>
+#include <msacmdrv.h>
+
+#include <assert.h>
+
+#include <version.h>
+
+#include "adebug.h"
+#include "resource.h"
+#include "ACMStream.h"
+
+#ifdef ENABLE_DECODING
+#include "DecodeStream.h"
+#endif // ENABLE_DECODING
+
+#include "ACM.h"
+
+#ifndef IDC_HAND
+#define IDC_HAND MAKEINTRESOURCE(32649)
+#endif // IDC_HAND
+
+char ACM::VersionString[20];
+
+const char ACM_VERSION[] = "0.9.0";
+
+#ifdef WIN32
+//
+// 32-bit versions
+//
+#if (WINVER >= 0x0400)
+ #define VERSION_ACM_DRIVER MAKE_ACM_VERSION(4, 0, 0)
+#else
+#define VERSION_ACM_DRIVER MAKE_ACM_VERSION(3, 51, 0)
+#endif
+#define VERSION_MSACM MAKE_ACM_VERSION(3, 50, 0)
+
+#else
+//
+// 16-bit versions
+//
+#define VERSION_ACM_DRIVER MAKE_ACM_VERSION(1, 0, 0)
+#define VERSION_MSACM MAKE_ACM_VERSION(2, 1, 0)
+
+#endif
+
+#define PERSONAL_FORMAT WAVE_FORMAT_MPEGLAYER3
+#define SIZE_FORMAT_STRUCT sizeof(MPEGLAYER3WAVEFORMAT)
+//#define SIZE_FORMAT_STRUCT 0
+
+//static const char channel_mode[][13] = {"mono","stereo","joint stereo","dual channel"};
+static const char channel_mode[][13] = {"mono","stereo"};
+static const unsigned int mpeg1_freq[] = {48000,44100,32000};
+static const unsigned int mpeg2_freq[] = {24000,22050,16000,12000,11025,8000};
+static const unsigned int mpeg1_bitrate[] = {320, 256, 224, 192, 160, 128, 112, 96, 80, 64, 56, 48, 40, 32};
+static const unsigned int mpeg2_bitrate[] = {160, 144, 128, 112, 96, 80, 64, 56, 48, 40, 32, 24, 16, 8};
+
+#define SIZE_CHANNEL_MODE (sizeof(channel_mode) / (sizeof(char) * 13))
+#define SIZE_FREQ_MPEG1 (sizeof(mpeg1_freq) / sizeof(unsigned int))
+#define SIZE_FREQ_MPEG2 (sizeof(mpeg2_freq) / sizeof(unsigned int))
+#define SIZE_BITRATE_MPEG1 (sizeof(mpeg1_bitrate) / sizeof(unsigned int))
+#define SIZE_BITRATE_MPEG2 (sizeof(mpeg2_bitrate) / sizeof(unsigned int))
+
+static const int FORMAT_TAG_MAX_NB = 2; // PCM and PERSONAL (mandatory to have at least PCM and your format)
+static const int FILTER_TAG_MAX_NB = 0; // this is a codec, not a filter
+
+// number of supported PCM formats
+static const int FORMAT_MAX_NB_PCM =
+ 2 * // number of PCM channel mode (stereo/mono)
+ (SIZE_FREQ_MPEG1 + // number of MPEG 1 sampling freq
+ SIZE_FREQ_MPEG2); // number of MPEG 2 sampling freq
+
+//////////////////////////////////////////////////////////////////////
+//
+//////////////////////////////////////////////////////////////////////
+bool bitrate_item::operator<(const bitrate_item & other_bitrate) const
+{
+ return (other_bitrate.frequency < frequency ||
+ (other_bitrate.frequency == frequency &&
+ (other_bitrate.bitrate < bitrate ||
+ (other_bitrate.bitrate == bitrate &&
+ (other_bitrate.channels < channels)))));
+}
+
+//////////////////////////////////////////////////////////////////////
+// Configuration Dialog
+//////////////////////////////////////////////////////////////////////
+/*
+static CALLBACK ConfigProc(
+ HWND hwndDlg, // handle to dialog box
+UINT uMsg, // message
+WPARAM wParam, // first message parameter
+LPARAM lParam // second message parameter
+)
+{
+ BOOL bResult;
+
+ switch (uMsg) {
+ case WM_COMMAND:
+ UINT command;
+ command = GET_WM_COMMAND_ID(wParam, lParam);
+ if (IDOK == command)
+ {
+ EndDialog(hwndDlg, (IDOK == command));
+ } else if (IDCANCEL == command)
+ {
+ EndDialog(hwndDlg, (IDOK == command));
+ }
+ bResult = FALSE;
+ break;
+ default:
+ bResult = FALSE; // will be treated by DefWindowProc
+}
+ return bResult;
+}
+
+
+inline DWORD ACM::Configure(HWND hParentWindow, LPDRVCONFIGINFO pConfig)
+{
+ my_debug.OutPut(DEBUG_LEVEL_FUNC_START, "ACM : Configure (Parent Window = 0x%08X)",hParentWindow);
+
+ DialogBoxParam( my_hModule, MAKEINTRESOURCE(IDD_CONFIG), hParentWindow, ::ConfigProc , (LPARAM)this);
+
+ return DRVCNF_OK; // Can also return
+ // DRVCNF_CANCEL
+ // and DRVCNF_RESTART
+}
+*/
+//////////////////////////////////////////////////////////////////////
+// About Dialog
+//////////////////////////////////////////////////////////////////////
+
+static BOOL CALLBACK AboutProc(
+ HWND hwndDlg, // handle to dialog box
+UINT uMsg, // message
+WPARAM wParam, // first message parameter
+LPARAM lParam // second message parameter
+)
+{
+ static HBRUSH hBrushStatic = NULL;
+// static LOGFONT lf; // structure for font information
+// static HFONT hfnt;
+ static HCURSOR hcOverCursor = NULL;
+ BOOL bResult;
+
+ switch (uMsg) {
+ case WM_INITDIALOG:
+ char tmp[150];
+ wsprintf(tmp,"LAME MP3 codec v%s", ACM::GetVersionString());
+ ::SetWindowText(GetDlgItem( hwndDlg, IDC_STATIC_ABOUT_TITLE), tmp);
+
+/*
+ ::GetObject(::GetStockObject(DEFAULT_GUI_FONT), sizeof(LOGFONT), &lf);
+ lf.lfUnderline = TRUE;
+
+ hfnt = ::CreateFontIndirect(&lf);
+
+ ::SendMessage(::GetDlgItem(hwndDlg,IDC_STATIC_ABOUT_URL), WM_SETFONT, (WPARAM) hfnt, TRUE);
+* /
+ hBrushStatic = ::CreateSolidBrush(::GetSysColor (COLOR_BTNFACE));
+*/ hcOverCursor = ::LoadCursor(NULL,(LPCTSTR)IDC_HAND);
+ if (hcOverCursor == NULL)
+ hcOverCursor = ::LoadCursor(NULL,(LPCTSTR)IDC_CROSS);
+
+ bResult = TRUE;
+ break;
+/*
+ case WM_CTLCOLORSTATIC:
+ /// \todo only if there are URLs
+ if ((HWND)lParam == ::GetDlgItem(hwndDlg,IDC_STATIC_ABOUT_URL))
+ {
+ ::SetTextColor((HDC)wParam, ::GetSysColor (COLOR_HIGHLIGHT));
+ ::SetBkColor((HDC)wParam, ::GetSysColor (COLOR_BTNFACE));
+
+ return (LRESULT) hBrushStatic;
+ }
+ else
+ return (LRESULT) NULL;
+*/
+ case WM_MOUSEMOVE:
+ {
+ POINT pnt;
+ ::GetCursorPos(&pnt);
+
+ RECT rect;
+ ::GetWindowRect( ::GetDlgItem(hwndDlg,IDC_STATIC_ABOUT_URL), &rect);
+
+ if ( ::PtInRect(&rect,pnt) )
+ {
+ ::SetCursor(hcOverCursor);
+ }
+
+
+ }
+ break;
+
+ case WM_LBUTTONUP:
+ {
+ POINT pnt;
+ ::GetCursorPos(&pnt);
+
+ RECT rect;
+ ::GetWindowRect( ::GetDlgItem(hwndDlg,IDC_STATIC_ABOUT_URL), &rect);
+
+ TCHAR Url[200];
+ bool bUrl = false;
+ if (::PtInRect(&rect,pnt))
+ {
+ wsprintf(Url,LAME_URL);
+ bUrl = true;
+ }
+
+ if (bUrl)
+ {
+ LPSTR tmpStr;
+ HRESULT hresult = ::TranslateURL(Url, TRANSLATEURL_FL_GUESS_PROTOCOL|TRANSLATEURL_FL_GUESS_PROTOCOL, &tmpStr);
+ if (hresult == S_OK)
+ ::ShellExecute(hwndDlg,"open",tmpStr,NULL,"",SW_SHOWMAXIMIZED );
+ else if (hresult == S_FALSE)
+ ::ShellExecute(hwndDlg,"open",Url,NULL,"",SW_SHOWMAXIMIZED );
+ }
+
+ }
+ break;
+
+ case WM_COMMAND:
+ UINT command;
+ command = GET_WM_COMMAND_ID(wParam, lParam);
+ if (IDOK == command)
+ {
+ EndDialog(hwndDlg, TRUE);
+ }
+ bResult = FALSE;
+ break;
+
+ case IDC_STATIC_ABOUT_URL:
+ break;
+ default:
+ bResult = FALSE; // will be treated by DefWindowProc
+}
+ return bResult;
+}
+
+inline DWORD ACM::About(HWND hParentWindow)
+{
+ my_debug.OutPut(DEBUG_LEVEL_FUNC_START, "ACM : About (Parent Window = 0x%08X)",hParentWindow);
+
+ DialogBoxParam( my_hModule, MAKEINTRESOURCE(IDD_ABOUT), hParentWindow, ::AboutProc , (LPARAM)this);
+
+ return DRVCNF_OK; // Can also return
+// DRVCNF_CANCEL
+// and DRVCNF_RESTART
+}
+
+
+//////////////////////////////////////////////////////////////////////
+// Construction/Destruction
+//////////////////////////////////////////////////////////////////////
+
+ACM::ACM( HMODULE hModule )
+ :my_hModule(hModule),
+ my_hIcon(NULL),
+ my_debug(ADbg(DEBUG_LEVEL_CREATION)),
+ my_EncodingProperties(hModule)
+{
+ my_EncodingProperties.ParamsRestore();
+
+ /// \todo get the debug level from the registry
+ unsigned char DebugFileName[512];
+
+ char tmp[128];
+ wsprintf(tmp,"LAMEacm 0x%08X",this);
+ my_debug.setPrefix(tmp); /// \todo get it from the registry
+ my_debug.setIncludeTime(true); /// \todo get it from the registry
+
+ // Check in the registry if we have to Output Debug information
+ DebugFileName[0] = '\0';
+
+ HKEY OssKey;
+ if (RegOpenKeyEx( HKEY_LOCAL_MACHINE, "SOFTWARE\\MUKOLI", 0, KEY_READ , &OssKey ) == ERROR_SUCCESS) {
+ DWORD DataType;
+ DWORD DebugFileNameSize = 512;
+ if (RegQueryValueEx( OssKey, "DebugFile", NULL, &DataType, DebugFileName, &DebugFileNameSize ) == ERROR_SUCCESS) {
+ if (DataType == REG_SZ) {
+ my_debug.setUseFile(true);
+ my_debug.setDebugFile((char *)DebugFileName);
+ my_debug.OutPut("Debug file is %s",(char *)DebugFileName);
+ }
+ }
+ }
+
+#if LAME_ALPHA_VERSION > 0
+ wsprintf(VersionString,"%s - %d.%d (alpha %d)", ACM_VERSION, LAME_MAJOR_VERSION, LAME_MINOR_VERSION,LAME_PATCH_VERSION);
+#elif LAME_BETA_VERSION > 0
+ wsprintf(VersionString,"%s - %d.%d (beta %d)", ACM_VERSION, LAME_MAJOR_VERSION, LAME_MINOR_VERSION, LAME_PATCH_VERSION);
+#else
+ wsprintf(VersionString,"%s - %d.%d (stable)", ACM_VERSION, LAME_MAJOR_VERSION, LAME_MINOR_VERSION);
+#endif
+
+ BuildBitrateTable();
+
+ my_debug.OutPut(DEBUG_LEVEL_FUNC_START, "New ACM Creation (0x%08X)",this);
+}
+
+ACM::~ACM()
+{
+// not used, it's done automatically when closing the driver if (my_hIcon != NULL)
+// CloseHandle(my_hIcon);
+
+ bitrate_table.clear();
+
+ my_debug.OutPut(DEBUG_LEVEL_FUNC_START, "ACM Deleted (0x%08X)",this);
+}
+
+//////////////////////////////////////////////////////////////////////
+// Main message handler
+//////////////////////////////////////////////////////////////////////
+
+LONG ACM::DriverProcedure(const HDRVR hdrvr, const UINT msg, LONG lParam1, LONG lParam2)
+{
+ DWORD dwRes = 0L;
+
+//my_debug.OutPut(DEBUG_LEVEL_MSG, "message 0x%08X for ThisACM 0x%08X", msg, this);
+
+switch (msg) {
+ case DRV_INSTALL:
+ my_debug.OutPut(DEBUG_LEVEL_MSG, "DRV_INSTALL");
+ // Sent when the driver is installed.
+ dwRes = DRVCNF_OK; // Can also return
+ break; // DRVCNF_CANCEL
+ // and DRV_RESTART
+
+ case DRV_REMOVE:
+ // Sent when the driver is removed.
+ my_debug.OutPut(DEBUG_LEVEL_MSG, "DRV_REMOVE");
+ dwRes = 1L; // return value ignored
+ break;
+
+ case DRV_QUERYCONFIGURE:
+ my_debug.OutPut(DEBUG_LEVEL_MSG, "DRV_QUERYCONFIGURE");
+ // Sent to determine if the driver can be
+ // configured.
+ dwRes = 1L; // Zero indicates configuration
+ break; // NOT supported
+
+ case DRV_CONFIGURE:
+ my_debug.OutPut(DEBUG_LEVEL_MSG, "DRV_CONFIGURE");
+ // Sent to display the configuration
+ // dialog box for the driver.
+// dwRes = Configure( (HWND) lParam1, (LPDRVCONFIGINFO) lParam2 );
+ if (my_EncodingProperties.Config(my_hModule, (HWND) lParam1))
+ {
+ dwRes = DRVCNF_OK; // Can also return
+ // DRVCNF_CANCEL
+ // and DRVCNF_RESTART
+ } else {
+ dwRes = DRVCNF_CANCEL;
+ }
+ break;
+
+ /**************************************
+ // ACM additional messages
+ ***************************************/
+
+ case ACMDM_DRIVER_ABOUT:
+ my_debug.OutPut(DEBUG_LEVEL_MSG, "ACMDM_DRIVER_ABOUT");
+
+ dwRes = About( (HWND) lParam1 );
+
+ break;
+
+ case ACMDM_DRIVER_DETAILS: // acmDriverDetails
+ // Fill-in general informations about the driver/codec
+ my_debug.OutPut(DEBUG_LEVEL_MSG, "ACMDM_DRIVER_DETAILS");
+
+ dwRes = OnDriverDetails(hdrvr, (LPACMDRIVERDETAILS) lParam1);
+
+ break;
+
+ case ACMDM_FORMATTAG_DETAILS: // acmFormatTagDetails
+ my_debug.OutPut(DEBUG_LEVEL_MSG, "ACMDM_FORMATTAG_DETAILS");
+
+ dwRes = OnFormatTagDetails((LPACMFORMATTAGDETAILS) lParam1, lParam2);
+
+ break;
+
+ case ACMDM_FORMAT_DETAILS: // acmFormatDetails
+ my_debug.OutPut(DEBUG_LEVEL_MSG, "ACMDM_FORMAT_DETAILS");
+
+ dwRes = OnFormatDetails((LPACMFORMATDETAILS) lParam1, lParam2);
+
+ break;
+
+ case ACMDM_FORMAT_SUGGEST: // acmFormatSuggest
+ // Sent to determine if the driver can be
+ // configured.
+ my_debug.OutPut(DEBUG_LEVEL_MSG, "ACMDM_FORMAT_SUGGEST");
+ dwRes = OnFormatSuggest((LPACMDRVFORMATSUGGEST) lParam1);
+ break;
+
+ /**************************************
+ // ACM stream messages
+ ***************************************/
+
+ case ACMDM_STREAM_OPEN:
+ // Sent to determine if the driver can be
+ // configured.
+ my_debug.OutPut(DEBUG_LEVEL_MSG, "ACMDM_STREAM_OPEN");
+ dwRes = OnStreamOpen((LPACMDRVSTREAMINSTANCE) lParam1);
+ break;
+
+ case ACMDM_STREAM_SIZE:
+ // returns a recommended size for a source
+ // or destination buffer on an ACM stream
+ my_debug.OutPut(DEBUG_LEVEL_MSG, "ACMDM_STREAM_SIZE");
+ dwRes = OnStreamSize((LPACMDRVSTREAMINSTANCE)lParam1, (LPACMDRVSTREAMSIZE)lParam2);
+ break;
+
+ case ACMDM_STREAM_PREPARE:
+ // prepares an ACMSTREAMHEADER structure for
+ // an ACM stream conversion
+ my_debug.OutPut(DEBUG_LEVEL_MSG, "ACMDM_STREAM_PREPARE");
+ dwRes = OnStreamPrepareHeader((LPACMDRVSTREAMINSTANCE)lParam1, (LPACMSTREAMHEADER) lParam2);
+ break;
+
+ case ACMDM_STREAM_UNPREPARE:
+ // cleans up the preparation performed by
+ // the ACMDM_STREAM_PREPARE message for an ACM stream
+ my_debug.OutPut(DEBUG_LEVEL_MSG, "ACMDM_STREAM_UNPREPARE");
+ dwRes = OnStreamUnPrepareHeader((LPACMDRVSTREAMINSTANCE)lParam1, (LPACMSTREAMHEADER) lParam2);
+ break;
+
+ case ACMDM_STREAM_CONVERT:
+ // perform a conversion on the specified conversion stream
+ my_debug.OutPut(DEBUG_LEVEL_MSG, "ACMDM_STREAM_CONVERT");
+ dwRes = OnStreamConvert((LPACMDRVSTREAMINSTANCE)lParam1, (LPACMDRVSTREAMHEADER) lParam2);
+
+ break;
+
+ case ACMDM_STREAM_CLOSE:
+ // closes an ACM conversion stream
+ my_debug.OutPut(DEBUG_LEVEL_MSG, "ACMDM_STREAM_CLOSE");
+ dwRes = OnStreamClose((LPACMDRVSTREAMINSTANCE)lParam1);
+ break;
+
+ /**************************************
+ // Unknown message
+ ***************************************/
+
+ default:
+ // Process any other messages.
+ my_debug.OutPut(DEBUG_LEVEL_MSG, "ACM::DriverProc unknown message (0x%08X), lParam1 = 0x%08X, lParam2 = 0x%08X", msg, lParam1, lParam2);
+ return DefDriverProc ((DWORD)this, hdrvr, msg, lParam1, lParam2);
+ }
+
+ return dwRes;
+}
+
+//////////////////////////////////////////////////////////////////////
+// Special message handlers
+//////////////////////////////////////////////////////////////////////
+/*!
+ Retreive the config details of this ACM driver
+ The index represent the specified format
+
+ \param a_FormatDetails will be filled with all the corresponding data
+*/
+inline DWORD ACM::OnFormatDetails(LPACMFORMATDETAILS a_FormatDetails, const LPARAM a_Query)
+{
+ DWORD Result = ACMERR_NOTPOSSIBLE;
+
+ my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "ACM_FORMATDETAILS a_Query = 0x%08X",a_Query);
+ switch (a_Query & ACM_FORMATDETAILSF_QUERYMASK) {
+
+ // Fill-in the informations corresponding to the FormatDetails->dwFormatTagIndex
+ case ACM_FORMATDETAILSF_INDEX :
+ my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "enter ACM_FORMATDETAILSF_INDEX for index 0x%04X:%03d",a_FormatDetails->dwFormatTag,a_FormatDetails->dwFormatIndex);
+ if (a_FormatDetails->dwFormatTag == PERSONAL_FORMAT) {
+ if (a_FormatDetails->dwFormatIndex < GetNumberEncodingFormats()) {
+ LPWAVEFORMATEX WaveExt;
+ WaveExt = a_FormatDetails->pwfx;
+
+ WaveExt->wFormatTag = PERSONAL_FORMAT;
+
+ my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "format in : channels %d, sample rate %d", WaveExt->nChannels, WaveExt->nSamplesPerSec);
+ GetMP3FormatForIndex(a_FormatDetails->dwFormatIndex, *WaveExt, a_FormatDetails->szFormat);
+ my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "format out : channels %d, sample rate %d", WaveExt->nChannels, WaveExt->nSamplesPerSec);
+ Result = MMSYSERR_NOERROR;
+ }
+ else
+ {
+ my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "ACM_FORMATDETAILSF_INDEX unknown index 0x%04X:%03d",a_FormatDetails->dwFormatTag,a_FormatDetails->dwFormatIndex);
+ }
+ }
+ else if (a_FormatDetails->dwFormatTag == WAVE_FORMAT_PCM) {
+ if (a_FormatDetails->dwFormatIndex < FORMAT_MAX_NB_PCM) {
+ LPWAVEFORMATEX WaveExt;
+ WaveExt = a_FormatDetails->pwfx;
+
+ WaveExt->wFormatTag = WAVE_FORMAT_PCM;
+
+ my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "format in : channels %d, sample rate %d", WaveExt->nChannels, WaveExt->nSamplesPerSec);
+ GetPCMFormatForIndex(a_FormatDetails->dwFormatIndex, *WaveExt, a_FormatDetails->szFormat);
+ my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "format out : channels %d, sample rate %d", WaveExt->nChannels, WaveExt->nSamplesPerSec);
+ Result = MMSYSERR_NOERROR;
+ }
+ else
+ {
+ my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "ACM_FORMATDETAILSF_INDEX unknown index 0x%04X:%03d",a_FormatDetails->dwFormatTag,a_FormatDetails->dwFormatIndex);
+ }
+ }
+ else
+ {
+ my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "Unknown a_FormatDetails->dwFormatTag = 0x%08X",a_FormatDetails->dwFormatTag);
+ }
+
+ case ACM_FORMATDETAILSF_FORMAT :
+ /// \todo we may output the corresponding strong (only for personal format)
+ LPWAVEFORMATEX WaveExt;
+ WaveExt = a_FormatDetails->pwfx;
+
+ my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "enter ACM_FORMATDETAILSF_FORMAT : 0x%04X:%03d, format in : channels %d, sample rate %d",a_FormatDetails->dwFormatTag,a_FormatDetails->dwFormatIndex, WaveExt->nChannels, WaveExt->nSamplesPerSec);
+
+ Result = MMSYSERR_NOERROR;
+ break;
+
+ default:
+ Result = ACMERR_NOTPOSSIBLE;
+ break;
+ }
+
+ a_FormatDetails->fdwSupport = ACMDRIVERDETAILS_SUPPORTF_CODEC;
+
+ return Result;
+}
+
+/*!
+ Retreive the details of each known format by this ACM driver
+ The index represent the specified format (0 = MP3 / 1 = PCM)
+
+ \param a_FormatTagDetails will be filled with all the corresponding data
+*/
+inline DWORD ACM::OnFormatTagDetails(LPACMFORMATTAGDETAILS a_FormatTagDetails, const LPARAM a_Query)
+{
+ DWORD Result;
+ DWORD the_format = WAVE_FORMAT_UNKNOWN; // the format to give details
+
+ if (a_FormatTagDetails->cbStruct >= sizeof(*a_FormatTagDetails)) {
+
+ my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "ACMDM_FORMATTAG_DETAILS, a_Query = 0x%08X",a_Query);
+ switch(a_Query & ACM_FORMATTAGDETAILSF_QUERYMASK) {
+
+ case ACM_FORMATTAGDETAILSF_INDEX:
+ // Fill-in the informations corresponding to the a_FormatDetails->dwFormatTagIndex
+ my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "get ACM_FORMATTAGDETAILSF_INDEX for index %03d",a_FormatTagDetails->dwFormatTagIndex);
+
+ if (a_FormatTagDetails->dwFormatTagIndex < FORMAT_TAG_MAX_NB) {
+ switch (a_FormatTagDetails->dwFormatTagIndex)
+ {
+ case 0:
+ the_format = PERSONAL_FORMAT;
+ break;
+ default :
+ the_format = WAVE_FORMAT_PCM;
+ break;
+ }
+ }
+ else
+ {
+ my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "ACM_FORMATTAGDETAILSF_INDEX for unsupported index %03d",a_FormatTagDetails->dwFormatTagIndex);
+ Result = ACMERR_NOTPOSSIBLE;
+ }
+ break;
+
+ case ACM_FORMATTAGDETAILSF_FORMATTAG:
+ // Fill-in the informations corresponding to the a_FormatDetails->dwFormatTagIndex and hdrvr given
+ switch (a_FormatTagDetails->dwFormatTag)
+ {
+ case WAVE_FORMAT_PCM:
+ the_format = WAVE_FORMAT_PCM;
+ break;
+ case PERSONAL_FORMAT:
+ the_format = PERSONAL_FORMAT;
+ break;
+ default:
+ return (ACMERR_NOTPOSSIBLE);
+ }
+ my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "get ACM_FORMATTAGDETAILSF_FORMATTAG for index 0x%02X, cStandardFormats = %d",a_FormatTagDetails->dwFormatTagIndex,a_FormatTagDetails->cStandardFormats);
+ break;
+ case ACM_FORMATTAGDETAILSF_LARGESTSIZE:
+ my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "ACM_FORMATTAGDETAILSF_LARGESTSIZE not used");
+ Result = 0L;
+ break;
+ default:
+ my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "OnFormatTagDetails Unknown Format tag query");
+ Result = MMSYSERR_NOTSUPPORTED;
+ break;
+ }
+
+ my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "OnFormatTagDetails the_format = 0x%08X",the_format);
+ switch(the_format)
+ {
+ case WAVE_FORMAT_PCM:
+ a_FormatTagDetails->dwFormatTag = WAVE_FORMAT_PCM;
+ a_FormatTagDetails->dwFormatTagIndex = 0;
+ a_FormatTagDetails->cbFormatSize = sizeof(PCMWAVEFORMAT);
+ /// \note 0 may mean we don't know how to decode
+ a_FormatTagDetails->fdwSupport = ACMDRIVERDETAILS_SUPPORTF_CODEC;
+ a_FormatTagDetails->cStandardFormats = FORMAT_MAX_NB_PCM;
+ // should be filled by Windows a_FormatTagDetails->szFormatTag[0] = '\0';
+ Result = MMSYSERR_NOERROR;
+ break;
+ case PERSONAL_FORMAT:
+ a_FormatTagDetails->dwFormatTag = PERSONAL_FORMAT;
+ a_FormatTagDetails->dwFormatTagIndex = 1;
+ a_FormatTagDetails->cbFormatSize = SIZE_FORMAT_STRUCT;
+ a_FormatTagDetails->fdwSupport = ACMDRIVERDETAILS_SUPPORTF_CODEC;
+ a_FormatTagDetails->cStandardFormats = GetNumberEncodingFormats();
+ lstrcpyW( a_FormatTagDetails->szFormatTag, L"Lame MP3" );
+ Result = MMSYSERR_NOERROR;
+ break;
+ default:
+ my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "OnFormatTagDetails Unknown format 0x%08X",the_format);
+ return (ACMERR_NOTPOSSIBLE);
+ }
+ my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "OnFormatTagDetails %d possibilities for format 0x%08X",a_FormatTagDetails->cStandardFormats,the_format);
+ }
+ else
+ {
+ my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "a_FormatTagDetails->cbStruct < sizeof(*a_FormatDetails)");
+ Result = ACMERR_NOTPOSSIBLE;
+ }
+
+ return Result;
+}
+
+/*!
+ Retreive the global details of this ACM driver
+
+ \param a_DriverDetail will be filled with all the corresponding data
+*/
+inline DWORD ACM::OnDriverDetails(const HDRVR hdrvr, LPACMDRIVERDETAILS a_DriverDetail)
+{
+ if (my_hIcon == NULL)
+ my_hIcon = LoadIcon(GetDriverModuleHandle(hdrvr), MAKEINTRESOURCE(IDI_ICON));
+ a_DriverDetail->hicon = my_hIcon;
+
+ a_DriverDetail->fccType = ACMDRIVERDETAILS_FCCTYPE_AUDIOCODEC;
+ a_DriverDetail->fccComp = ACMDRIVERDETAILS_FCCCOMP_UNDEFINED;
+
+ /// \note this is an explicit hack of the FhG values
+ /// \note later it could be a new value when the decoding is done
+ a_DriverDetail->wMid = MM_FRAUNHOFER_IIS;
+ a_DriverDetail->wPid = MM_FHGIIS_MPEGLAYER3;
+
+ a_DriverDetail->vdwACM = VERSION_MSACM;
+ a_DriverDetail->vdwDriver = VERSION_ACM_DRIVER;
+ a_DriverDetail->fdwSupport = ACMDRIVERDETAILS_SUPPORTF_CODEC;
+ a_DriverDetail->cFormatTags = FORMAT_TAG_MAX_NB; // 2 : MP3 and PCM
+// a_DriverDetail->cFormatTags = 1; // 2 : MP3 and PCM
+ a_DriverDetail->cFilterTags = FILTER_TAG_MAX_NB;
+
+ lstrcpyW( a_DriverDetail->szShortName, L"LAME MP3" );
+ char tmpStr[128];
+ wsprintf(tmpStr, "LAME MP3 Codec v%s", GetVersionString());
+ int u = MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, tmpStr, -1, a_DriverDetail->szLongName, 0);
+ MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, tmpStr, -1, a_DriverDetail->szLongName, u);
+ lstrcpyW( a_DriverDetail->szCopyright, L"2002 Steve Lhomme" );
+ lstrcpyW( a_DriverDetail->szLicensing, L"LGPL (see gnu.org)" );
+ /// \todo update this part when the code changes
+ lstrcpyW( a_DriverDetail->szFeatures , L"only CBR implementation" );
+
+ return MMSYSERR_NOERROR; // Can also return DRVCNF_CANCEL
+}
+
+/*!
+ Suggest an output format for the specified input format
+
+ \param a_FormatSuggest will be filled with all the corresponding data
+*/
+inline DWORD ACM::OnFormatSuggest(LPACMDRVFORMATSUGGEST a_FormatSuggest)
+{
+ DWORD Result = MMSYSERR_NOTSUPPORTED;
+ DWORD fdwSuggest = (ACM_FORMATSUGGESTF_TYPEMASK & a_FormatSuggest->fdwSuggest);
+
+my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "Suggest %s%s%s%s (0x%08X)",
+ (fdwSuggest & ACM_FORMATSUGGESTF_NCHANNELS) ? "channels, ":"",
+ (fdwSuggest & ACM_FORMATSUGGESTF_NSAMPLESPERSEC) ? "samples/sec, ":"",
+ (fdwSuggest & ACM_FORMATSUGGESTF_WBITSPERSAMPLE) ? "bits/sample, ":"",
+ (fdwSuggest & ACM_FORMATSUGGESTF_WFORMATTAG) ? "format, ":"",
+ fdwSuggest);
+
+my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "Suggest for source format = 0x%04X, channels = %d, Samples/s = %d, AvgB/s = %d, BlockAlign = %d, b/sample = %d",
+ a_FormatSuggest->pwfxSrc->wFormatTag,
+ a_FormatSuggest->pwfxSrc->nChannels,
+ a_FormatSuggest->pwfxSrc->nSamplesPerSec,
+ a_FormatSuggest->pwfxSrc->nAvgBytesPerSec,
+ a_FormatSuggest->pwfxSrc->nBlockAlign,
+ a_FormatSuggest->pwfxSrc->wBitsPerSample);
+
+my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "Suggested destination format = 0x%04X, channels = %d, Samples/s = %d, AvgB/s = %d, BlockAlign = %d, b/sample = %d",
+ a_FormatSuggest->pwfxDst->wFormatTag,
+ a_FormatSuggest->pwfxDst->nChannels,
+ a_FormatSuggest->pwfxDst->nSamplesPerSec,
+ a_FormatSuggest->pwfxDst->nAvgBytesPerSec,
+ a_FormatSuggest->pwfxDst->nBlockAlign,
+ a_FormatSuggest->pwfxDst->wBitsPerSample);
+
+ switch (a_FormatSuggest->pwfxSrc->wFormatTag)
+ {
+ case WAVE_FORMAT_PCM:
+ /// \todo handle here the decoding ?
+ my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "Suggest for PCM source");
+ //
+ // if the destination format tag is restricted, verify that
+ // it is within our capabilities...
+ //
+ // this driver is able to decode to PCM
+ //
+ if (ACM_FORMATSUGGESTF_WFORMATTAG & fdwSuggest)
+ {
+ if (PERSONAL_FORMAT != a_FormatSuggest->pwfxDst->wFormatTag)
+ return (ACMERR_NOTPOSSIBLE);
+ }
+ else
+ {
+ a_FormatSuggest->pwfxDst->wFormatTag = PERSONAL_FORMAT;
+ }
+
+
+my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "Suggest succeed A");
+ //
+ // if the destination channel count is restricted, verify that
+ // it is within our capabilities...
+ //
+ // this driver is not able to change the number of channels
+ //
+ if (ACM_FORMATSUGGESTF_NCHANNELS & fdwSuggest)
+ {
+ if (a_FormatSuggest->pwfxSrc->nChannels != a_FormatSuggest->pwfxDst->nChannels)
+ return (ACMERR_NOTPOSSIBLE);
+ }
+ else
+ {
+ a_FormatSuggest->pwfxDst->nChannels = a_FormatSuggest->pwfxSrc->nChannels;
+ }
+
+ if (a_FormatSuggest->pwfxSrc->nChannels != 1 && a_FormatSuggest->pwfxSrc->nChannels != 2)
+ return MMSYSERR_INVALPARAM;
+
+
+my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "Suggest succeed B");
+ //
+ // if the destination samples per second is restricted, verify
+ // that it is within our capabilities...
+ //
+ // this driver is not able to change the sample rate
+ //
+ if (ACM_FORMATSUGGESTF_NSAMPLESPERSEC & fdwSuggest)
+ {
+ if (a_FormatSuggest->pwfxSrc->nSamplesPerSec != a_FormatSuggest->pwfxDst->nSamplesPerSec)
+ return (ACMERR_NOTPOSSIBLE);
+ }
+ else
+ {
+ a_FormatSuggest->pwfxDst->nSamplesPerSec = a_FormatSuggest->pwfxSrc->nSamplesPerSec;
+ }
+
+
+my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "Suggest succeed C");
+ //
+ // if the destination bits per sample is restricted, verify
+ // that it is within our capabilities...
+ //
+ // We prefer decoding to 16-bit PCM.
+ //
+ if (ACM_FORMATSUGGESTF_WBITSPERSAMPLE & fdwSuggest)
+ {
+ if ( (16 != a_FormatSuggest->pwfxDst->wBitsPerSample) && (8 != a_FormatSuggest->pwfxDst->wBitsPerSample) )
+ return (ACMERR_NOTPOSSIBLE);
+ }
+ else
+ {
+ a_FormatSuggest->pwfxDst->wBitsPerSample = 16;
+ }
+
+ // a_FormatSuggest->pwfxDst->nBlockAlign = FORMAT_BLOCK_ALIGN;
+ a_FormatSuggest->pwfxDst->nBlockAlign = a_FormatSuggest->pwfxDst->nChannels * a_FormatSuggest->pwfxDst->wBitsPerSample / 8;
+
+ a_FormatSuggest->pwfxDst->nAvgBytesPerSec = a_FormatSuggest->pwfxDst->nChannels * 64000 / 8;
+
+ my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "Suggest succeed");
+ Result = MMSYSERR_NOERROR;
+
+
+ break;
+ case PERSONAL_FORMAT:
+ my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "Suggest for PERSONAL source");
+ //
+ // if the destination format tag is restricted, verify that
+ // it is within our capabilities...
+ //
+ // this driver is able to decode to PCM
+ //
+ if (ACM_FORMATSUGGESTF_WFORMATTAG & fdwSuggest)
+ {
+ if (WAVE_FORMAT_PCM != a_FormatSuggest->pwfxDst->wFormatTag)
+ return (ACMERR_NOTPOSSIBLE);
+ }
+ else
+ {
+ a_FormatSuggest->pwfxDst->wFormatTag = WAVE_FORMAT_PCM;
+ }
+
+
+ //
+ // if the destination channel count is restricted, verify that
+ // it is within our capabilities...
+ //
+ // this driver is not able to change the number of channels
+ //
+ if (ACM_FORMATSUGGESTF_NCHANNELS & fdwSuggest)
+ {
+ if (a_FormatSuggest->pwfxSrc->nChannels != a_FormatSuggest->pwfxDst->nChannels)
+ return (ACMERR_NOTPOSSIBLE);
+ }
+ else
+ {
+ a_FormatSuggest->pwfxDst->nChannels = a_FormatSuggest->pwfxSrc->nChannels;
+ }
+
+
+ //
+ // if the destination samples per second is restricted, verify
+ // that it is within our capabilities...
+ //
+ // this driver is not able to change the sample rate
+ //
+ if (ACM_FORMATSUGGESTF_NSAMPLESPERSEC & fdwSuggest)
+ {
+ if (a_FormatSuggest->pwfxSrc->nSamplesPerSec != a_FormatSuggest->pwfxDst->nSamplesPerSec)
+ return (ACMERR_NOTPOSSIBLE);
+ }
+ else
+ {
+ a_FormatSuggest->pwfxDst->nSamplesPerSec = a_FormatSuggest->pwfxSrc->nSamplesPerSec;
+ }
+
+
+ //
+ // if the destination bits per sample is restricted, verify
+ // that it is within our capabilities...
+ //
+ // We prefer decoding to 16-bit PCM.
+ //
+ if (ACM_FORMATSUGGESTF_WBITSPERSAMPLE & fdwSuggest)
+ {
+ if ( (16 != a_FormatSuggest->pwfxDst->wBitsPerSample) && (8 != a_FormatSuggest->pwfxDst->wBitsPerSample) )
+ return (ACMERR_NOTPOSSIBLE);
+ }
+ else
+ {
+ a_FormatSuggest->pwfxDst->wBitsPerSample = 16;
+ }
+
+ // a_FormatSuggest->pwfxDst->nBlockAlign = FORMAT_BLOCK_ALIGN;
+ a_FormatSuggest->pwfxDst->nBlockAlign = a_FormatSuggest->pwfxDst->nChannels * a_FormatSuggest->pwfxDst->wBitsPerSample / 8;
+
+ /// \todo this value must be a correct one !
+ a_FormatSuggest->pwfxDst->nAvgBytesPerSec = a_FormatSuggest->pwfxDst->nSamplesPerSec * a_FormatSuggest->pwfxDst->nChannels * a_FormatSuggest->pwfxDst->wBitsPerSample / 8;
+
+ my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "Suggest succeed");
+ Result = MMSYSERR_NOERROR;
+
+
+ break;
+ }
+
+ my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "Suggested destination format = 0x%04X, channels = %d, Samples/s = %d, AvgB/s = %d, BlockAlign = %d, b/sample = %d",
+ a_FormatSuggest->pwfxDst->wFormatTag,
+ a_FormatSuggest->pwfxDst->nChannels,
+ a_FormatSuggest->pwfxDst->nSamplesPerSec,
+ a_FormatSuggest->pwfxDst->nAvgBytesPerSec,
+ a_FormatSuggest->pwfxDst->nBlockAlign,
+ a_FormatSuggest->pwfxDst->wBitsPerSample);
+
+ return Result;
+}
+
+/*!
+ Create a stream instance for decoding/encoding
+
+ \param a_StreamInstance contain information about the stream desired
+*/
+inline DWORD ACM::OnStreamOpen(LPACMDRVSTREAMINSTANCE a_StreamInstance)
+{
+ DWORD Result = ACMERR_NOTPOSSIBLE;
+
+ //
+ // the most important condition to check before doing anything else
+ // is that this ACM driver can actually perform the conversion we are
+ // being opened for. this check should fail as quickly as possible
+ // if the conversion is not possible by this driver.
+ //
+ // it is VERY important to fail quickly so the ACM can attempt to
+ // find a driver that is suitable for the conversion. also note that
+ // the ACM may call this driver several times with slightly different
+ // format specifications before giving up.
+ //
+ // this driver first verifies that the source and destination formats
+ // are acceptable...
+ //
+ switch (a_StreamInstance->pwfxSrc->wFormatTag)
+ {
+ case WAVE_FORMAT_PCM:
+ my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "Open stream for PCM source (%05d samples %d channels %d bits/sample)",a_StreamInstance->pwfxSrc->nSamplesPerSec,a_StreamInstance->pwfxSrc->nChannels,a_StreamInstance->pwfxSrc->wBitsPerSample);
+ if (a_StreamInstance->pwfxDst->wFormatTag == PERSONAL_FORMAT)
+ {
+ unsigned int OutputFrequency;
+
+ /// \todo Smart mode
+ if (my_EncodingProperties.GetSmartOutputMode())
+ OutputFrequency = ACMStream::GetOutputSampleRate(a_StreamInstance->pwfxSrc->nSamplesPerSec,a_StreamInstance->pwfxDst->nAvgBytesPerSec,a_StreamInstance->pwfxDst->nChannels);
+ else
+ OutputFrequency = a_StreamInstance->pwfxSrc->nSamplesPerSec;
+
+ my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "Open stream for PERSONAL output (%05d samples %d channels %d bits/sample %d kbps)",a_StreamInstance->pwfxDst->nSamplesPerSec,a_StreamInstance->pwfxDst->nChannels,a_StreamInstance->pwfxDst->wBitsPerSample,8 * a_StreamInstance->pwfxDst->nAvgBytesPerSec);
+
+ /// \todo add the possibility to have channel resampling (mono to stereo / stereo to mono)
+ /// \todo support resampling ?
+ /// \todo only do the test on OutputFrequency in "Smart Output" mode
+ if (a_StreamInstance->pwfxDst->nSamplesPerSec != OutputFrequency ||
+// a_StreamInstance->pwfxSrc->nSamplesPerSec != a_StreamInstance->pwfxDst->nSamplesPerSec ||
+ a_StreamInstance->pwfxSrc->nChannels != a_StreamInstance->pwfxDst->nChannels ||
+ a_StreamInstance->pwfxSrc->wBitsPerSample != 16)
+ {
+ Result = ACMERR_NOTPOSSIBLE;
+ } else {
+ if ((a_StreamInstance->fdwOpen & ACM_STREAMOPENF_QUERY) == 0)
+ {
+ ACMStream * the_stream = ACMStream::Create();
+ a_StreamInstance->dwInstance = (DWORD) the_stream;
+
+ if (the_stream != NULL)
+ {
+ MPEGLAYER3WAVEFORMAT * casted = (MPEGLAYER3WAVEFORMAT *) a_StreamInstance->pwfxDst;
+ vbr_mode a_mode = (casted->fdwFlags-2 == 0)?vbr_abr:vbr_off;
+ if (the_stream->init(a_StreamInstance->pwfxDst->nSamplesPerSec,
+ OutputFrequency,
+ a_StreamInstance->pwfxDst->nChannels,
+ a_StreamInstance->pwfxDst->nAvgBytesPerSec,
+ a_mode))
+ Result = MMSYSERR_NOERROR;
+ else
+ ACMStream::Erase( the_stream );
+ }
+ }
+ else
+ {
+ Result = MMSYSERR_NOERROR;
+ }
+ }
+ }
+ break;
+ case PERSONAL_FORMAT:
+ my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "Open stream for PERSONAL source (%05d samples %d channels %d bits/sample %d kbps)",a_StreamInstance->pwfxSrc->nSamplesPerSec,a_StreamInstance->pwfxSrc->nChannels,a_StreamInstance->pwfxSrc->wBitsPerSample,8 * a_StreamInstance->pwfxSrc->nAvgBytesPerSec);
+ if (a_StreamInstance->pwfxDst->wFormatTag == WAVE_FORMAT_PCM)
+ {
+#ifdef ENABLE_DECODING
+ if ((a_StreamInstance->fdwOpen & ACM_STREAMOPENF_QUERY) == 0)
+ {
+ /// \todo create the decoding stream
+ my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "Open stream for PCM output (%05d samples %d channels %d bits/sample %d B/s)",a_StreamInstance->pwfxDst->nSamplesPerSec,a_StreamInstance->pwfxDst->nChannels,a_StreamInstance->pwfxDst->wBitsPerSample,a_StreamInstance->pwfxDst->nAvgBytesPerSec);
+
+ DecodeStream * the_stream = DecodeStream::Create();
+ a_StreamInstance->dwInstance = (DWORD) the_stream;
+
+ if (the_stream != NULL)
+ {
+ if (the_stream->init(a_StreamInstance->pwfxDst->nSamplesPerSec,
+ a_StreamInstance->pwfxDst->nChannels,
+ a_StreamInstance->pwfxDst->nAvgBytesPerSec,
+ a_StreamInstance->pwfxSrc->nAvgBytesPerSec))
+ Result = MMSYSERR_NOERROR;
+ else
+ DecodeStream::Erase( the_stream );
+ }
+ }
+ else
+ {
+ /// \todo decoding verification
+ my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "Open stream is valid");
+ Result = MMSYSERR_NOERROR;
+ }
+#endif // ENABLE_DECODING
+ }
+ break;
+ }
+
+ my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "Open stream Result = %d",Result);
+ return Result;
+}
+
+inline DWORD ACM::OnStreamSize(LPACMDRVSTREAMINSTANCE a_StreamInstance, LPACMDRVSTREAMSIZE the_StreamSize)
+{
+ DWORD Result = ACMERR_NOTPOSSIBLE;
+
+ switch (ACM_STREAMSIZEF_QUERYMASK & the_StreamSize->fdwSize)
+ {
+ case ACM_STREAMSIZEF_DESTINATION:
+ my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "Get source buffer size for destination size = %d",the_StreamSize->cbDstLength);
+ break;
+ case ACM_STREAMSIZEF_SOURCE:
+ my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "Get destination buffer size for source size = %d",the_StreamSize->cbSrcLength);
+ if (WAVE_FORMAT_PCM == a_StreamInstance->pwfxSrc->wFormatTag &&
+ PERSONAL_FORMAT == a_StreamInstance->pwfxDst->wFormatTag)
+ {
+ ACMStream * the_stream = (ACMStream *) a_StreamInstance->dwInstance;
+ if (the_stream != NULL)
+ {
+ the_StreamSize->cbDstLength = the_stream->GetOutputSizeForInput(the_StreamSize->cbSrcLength);
+ Result = MMSYSERR_NOERROR;
+ }
+ }
+ else if (PERSONAL_FORMAT == a_StreamInstance->pwfxSrc->wFormatTag &&
+ WAVE_FORMAT_PCM== a_StreamInstance->pwfxDst->wFormatTag)
+ {
+#ifdef ENABLE_DECODING
+ DecodeStream * the_stream = (DecodeStream *) a_StreamInstance->dwInstance;
+ if (the_stream != NULL)
+ {
+ the_StreamSize->cbDstLength = the_stream->GetOutputSizeForInput(the_StreamSize->cbSrcLength);
+ Result = MMSYSERR_NOERROR;
+ }
+#endif // ENABLE_DECODING
+ }
+ break;
+ default:
+ Result = MMSYSERR_INVALFLAG;
+ break;
+ }
+
+ return Result;
+}
+
+inline DWORD ACM::OnStreamClose(LPACMDRVSTREAMINSTANCE a_StreamInstance)
+{
+ DWORD Result = ACMERR_NOTPOSSIBLE;
+
+ my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "OnStreamClose the stream 0x%X",a_StreamInstance->dwInstance);
+ if (WAVE_FORMAT_PCM == a_StreamInstance->pwfxSrc->wFormatTag &&
+ PERSONAL_FORMAT == a_StreamInstance->pwfxDst->wFormatTag)
+ {
+ ACMStream::Erase( (ACMStream *) a_StreamInstance->dwInstance );
+ }
+ else if (PERSONAL_FORMAT == a_StreamInstance->pwfxSrc->wFormatTag &&
+ WAVE_FORMAT_PCM== a_StreamInstance->pwfxDst->wFormatTag)
+ {
+#ifdef ENABLE_DECODING
+ DecodeStream::Erase( (DecodeStream *) a_StreamInstance->dwInstance );
+#endif // ENABLE_DECODING
+ }
+
+ // nothing to do yet
+ Result = MMSYSERR_NOERROR;
+
+ return Result;
+}
+
+inline DWORD ACM::OnStreamPrepareHeader(LPACMDRVSTREAMINSTANCE a_StreamInstance, LPACMSTREAMHEADER a_StreamHeader)
+{
+ DWORD Result = ACMERR_NOTPOSSIBLE;
+
+ my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, " prepare : Src : %d (0x%08X) / %d - Dst : %d (0x%08X) / %d"
+ , a_StreamHeader->cbSrcLength
+ , a_StreamHeader->pbSrc
+ , a_StreamHeader->cbSrcLengthUsed
+ , a_StreamHeader->cbDstLength
+ , a_StreamHeader->pbDst
+ , a_StreamHeader->cbDstLengthUsed
+ );
+
+ if (WAVE_FORMAT_PCM == a_StreamInstance->pwfxSrc->wFormatTag &&
+ PERSONAL_FORMAT == a_StreamInstance->pwfxDst->wFormatTag)
+ {
+ ACMStream * the_stream = (ACMStream *)a_StreamInstance->dwInstance;
+
+ if (the_stream->open(my_EncodingProperties))
+ Result = MMSYSERR_NOERROR;
+ }
+ else if (PERSONAL_FORMAT == a_StreamInstance->pwfxSrc->wFormatTag &&
+ WAVE_FORMAT_PCM == a_StreamInstance->pwfxDst->wFormatTag)
+ {
+#ifdef ENABLE_DECODING
+ DecodeStream * the_stream = (DecodeStream *)a_StreamInstance->dwInstance;
+
+ if (the_stream->open())
+ Result = MMSYSERR_NOERROR;
+#endif // ENABLE_DECODING
+ }
+
+ return Result;
+}
+
+inline DWORD ACM::OnStreamUnPrepareHeader(LPACMDRVSTREAMINSTANCE a_StreamInstance, LPACMSTREAMHEADER a_StreamHeader)
+{
+ DWORD Result = ACMERR_NOTPOSSIBLE;
+
+ my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "unprepare : Src : %d / %d - Dst : %d / %d"
+ , a_StreamHeader->cbSrcLength
+ , a_StreamHeader->cbSrcLengthUsed
+ , a_StreamHeader->cbDstLength
+ , a_StreamHeader->cbDstLengthUsed
+ );
+ if (WAVE_FORMAT_PCM == a_StreamInstance->pwfxSrc->wFormatTag &&
+ PERSONAL_FORMAT == a_StreamInstance->pwfxDst->wFormatTag)
+ {
+ ACMStream * the_stream = (ACMStream *)a_StreamInstance->dwInstance;
+ DWORD OutputSize = a_StreamHeader->cbDstLength;
+
+ if (the_stream->close(a_StreamHeader->pbDst, &OutputSize) && (OutputSize <= a_StreamHeader->cbDstLength))
+ {
+ a_StreamHeader->cbDstLengthUsed = OutputSize;
+ Result = MMSYSERR_NOERROR;
+ }
+ }
+ else if (PERSONAL_FORMAT == a_StreamInstance->pwfxSrc->wFormatTag &&
+ WAVE_FORMAT_PCM== a_StreamInstance->pwfxDst->wFormatTag)
+ {
+#ifdef ENABLE_DECODING
+ DecodeStream * the_stream = (DecodeStream *)a_StreamInstance->dwInstance;
+ DWORD OutputSize = a_StreamHeader->cbDstLength;
+
+ if (the_stream->close(a_StreamHeader->pbDst, &OutputSize) && (OutputSize <= a_StreamHeader->cbDstLength))
+ {
+ a_StreamHeader->cbDstLengthUsed = OutputSize;
+ Result = MMSYSERR_NOERROR;
+ }
+#endif // ENABLE_DECODING
+ }
+
+ return Result;
+}
+
+inline DWORD ACM::OnStreamConvert(LPACMDRVSTREAMINSTANCE a_StreamInstance, LPACMDRVSTREAMHEADER a_StreamHeader)
+{
+ DWORD Result = ACMERR_NOTPOSSIBLE;
+
+ if (WAVE_FORMAT_PCM == a_StreamInstance->pwfxSrc->wFormatTag &&
+ PERSONAL_FORMAT == a_StreamInstance->pwfxDst->wFormatTag)
+ {
+ my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "OnStreamConvert SRC = PCM (encode)");
+
+ ACMStream * the_stream = (ACMStream *) a_StreamInstance->dwInstance;
+ if (the_stream != NULL)
+ {
+ if (the_stream->ConvertBuffer( a_StreamHeader ))
+ Result = MMSYSERR_NOERROR;
+ }
+ }
+ else if (PERSONAL_FORMAT == a_StreamInstance->pwfxSrc->wFormatTag &&
+ WAVE_FORMAT_PCM == a_StreamInstance->pwfxDst->wFormatTag)
+ {
+ my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "OnStreamConvert SRC = MP3 (decode)");
+
+#ifdef ENABLE_DECODING
+ DecodeStream * the_stream = (DecodeStream *) a_StreamInstance->dwInstance;
+ if (the_stream != NULL)
+ {
+ if (the_stream->ConvertBuffer( a_StreamHeader ))
+ Result = MMSYSERR_NOERROR;
+ }
+#endif // ENABLE_DECODING
+ }
+ else
+ my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "OnStreamConvert unsupported conversion");
+
+ return Result;
+}
+
+
+void ACM::GetMP3FormatForIndex(const DWORD the_Index, WAVEFORMATEX & the_Format, unsigned short the_String[ACMFORMATDETAILS_FORMAT_CHARS]) const
+{
+ int Block_size;
+ char temp[ACMFORMATDETAILS_FORMAT_CHARS];
+
+
+ if (the_Index < bitrate_table.size())
+ {
+ // the_Format.wBitsPerSample = 16;
+ the_Format.wBitsPerSample = 0;
+
+ /// \todo handle more channel modes (mono, stereo, joint-stereo, dual-channel)
+ // the_Format.nChannels = SIZE_CHANNEL_MODE - int(the_Index % SIZE_CHANNEL_MODE);
+
+ the_Format.nBlockAlign = 1;
+
+ the_Format.nSamplesPerSec = bitrate_table[the_Index].frequency;
+ the_Format.nAvgBytesPerSec = bitrate_table[the_Index].bitrate * 1000 / 8;
+ if (bitrate_table[the_Index].frequency >= mpeg1_freq[SIZE_FREQ_MPEG1-1])
+ Block_size = 1152;
+ else
+ Block_size = 576;
+
+ the_Format.nChannels = bitrate_table[the_Index].channels;
+
+ the_Format.cbSize = sizeof(MPEGLAYER3WAVEFORMAT) - sizeof(WAVEFORMATEX);
+ MPEGLAYER3WAVEFORMAT * tmpFormat = (MPEGLAYER3WAVEFORMAT *) &the_Format;
+ tmpFormat->wID = 1;
+ // this is the only way I found to know if we do CBR or ABR
+ tmpFormat->fdwFlags = 2 + ((bitrate_table[the_Index].mode == vbr_abr)?0:2);
+ tmpFormat->nBlockSize = Block_size * the_Format.nAvgBytesPerSec / the_Format.nSamplesPerSec;
+ tmpFormat->nFramesPerBlock = 1;
+ tmpFormat->nCodecDelay = 0; // 0x0571 on FHG
+
+ /// \todo : generate the string with the appropriate stereo mode
+ if (bitrate_table[the_Index].mode == vbr_abr)
+ wsprintfA( temp, "%d Hz, %d kbps ABR, %s", the_Format.nSamplesPerSec, the_Format.nAvgBytesPerSec * 8 / 1000, (the_Format.nChannels == 1)?"Mono":"Stereo");
+ else
+ wsprintfA( temp, "%d Hz, %d kbps CBR, %s", the_Format.nSamplesPerSec, the_Format.nAvgBytesPerSec * 8 / 1000, (the_Format.nChannels == 1)?"Mono":"Stereo");
+
+ MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, temp, -1, the_String, ACMFORMATDETAILS_FORMAT_CHARS);
+ }
+ }
+
+void ACM::GetPCMFormatForIndex(const DWORD the_Index, WAVEFORMATEX & the_Format, unsigned short the_String[ACMFORMATDETAILS_FORMAT_CHARS]) const
+{
+ the_Format.nChannels = SIZE_CHANNEL_MODE - int(the_Index % SIZE_CHANNEL_MODE);
+ the_Format.wBitsPerSample = 16;
+ the_Format.nBlockAlign = the_Format.nChannels * the_Format.wBitsPerSample / 8;
+
+
+ DWORD a_Channel_Independent = the_Index / SIZE_CHANNEL_MODE;
+
+ // first MPEG1 frequencies
+ if (a_Channel_Independent < SIZE_FREQ_MPEG1)
+ {
+ the_Format.nSamplesPerSec = mpeg1_freq[a_Channel_Independent];
+ }
+ else
+ {
+ a_Channel_Independent -= SIZE_FREQ_MPEG1;
+ the_Format.nSamplesPerSec = mpeg2_freq[a_Channel_Independent];
+ }
+
+ the_Format.nAvgBytesPerSec = the_Format.nSamplesPerSec * the_Format.nChannels * the_Format.wBitsPerSample / 8;
+}
+
+DWORD ACM::GetNumberEncodingFormats() const
+{
+ return bitrate_table.size();
+}
+
+bool ACM::IsSmartOutput(const int frequency, const int bitrate, const int channels) const
+{
+ double compression_ratio = double(frequency * 2 * channels) / double(bitrate * 100);
+
+//my_debug.OutPut(DEBUG_LEVEL_FUNC_DEBUG, "compression_ratio %f, freq %d, bitrate %d, channels %d", compression_ratio, frequency, bitrate, channels);
+
+ if(my_EncodingProperties.GetSmartOutputMode())
+ return (compression_ratio <= my_EncodingProperties.GetSmartRatio());
+ else return true;
+}
+
+void ACM::BuildBitrateTable()
+{
+ my_debug.OutPut("entering BuildBitrateTable");
+
+ // fill the table
+ unsigned int channel,bitrate,freq;
+
+ bitrate_table.clear();
+
+ // CBR bitrates
+ for (channel = 0;channel < SIZE_CHANNEL_MODE;channel++)
+ {
+ // MPEG I
+ for (freq = 0;freq < SIZE_FREQ_MPEG1;freq++)
+ {
+ for (bitrate = 0;bitrate < SIZE_BITRATE_MPEG1;bitrate++)
+ {
+
+ if (!my_EncodingProperties.GetSmartOutputMode() || IsSmartOutput(mpeg1_freq[freq], mpeg1_bitrate[bitrate], channel+1))
+ {
+ bitrate_item * bitrate_table_tmp = new bitrate_item;
+ if (bitrate_table_tmp == NULL)
+ return;
+
+ bitrate_table_tmp->frequency = mpeg1_freq[freq];
+ bitrate_table_tmp->bitrate = mpeg1_bitrate[bitrate];
+ bitrate_table_tmp->channels = channel+1;
+ bitrate_table_tmp->mode = vbr_off;
+ bitrate_table.push_back(*bitrate_table_tmp);
+ }
+ }
+ }
+ // MPEG II / II.5
+ for (freq = 0;freq < SIZE_FREQ_MPEG2;freq++)
+ {
+ for (bitrate = 0;bitrate < SIZE_BITRATE_MPEG2;bitrate++)
+ {
+ if (!my_EncodingProperties.GetSmartOutputMode() || IsSmartOutput(mpeg2_freq[freq], mpeg2_bitrate[bitrate], channel+1))
+ {
+ bitrate_item * bitrate_table_tmp = new bitrate_item;
+ if (bitrate_table_tmp == NULL)
+ return;
+
+ bitrate_table_tmp->frequency = mpeg2_freq[freq];
+ bitrate_table_tmp->bitrate = mpeg2_bitrate[bitrate];
+ bitrate_table_tmp->channels = channel+1;
+ bitrate_table_tmp->mode = vbr_abr;
+ bitrate_table.push_back(*bitrate_table_tmp);
+ }
+ }
+ }
+ }
+
+ if (my_EncodingProperties.GetAbrOutputMode())
+ // ABR bitrates
+ {
+ for (channel = 0;channel < SIZE_CHANNEL_MODE;channel++)
+ {
+ // MPEG I
+ for (freq = 0;freq < SIZE_FREQ_MPEG1;freq++)
+ {
+ for (bitrate = my_EncodingProperties.GetAbrBitrateMax();
+ bitrate >= my_EncodingProperties.GetAbrBitrateMin();
+ bitrate -= my_EncodingProperties.GetAbrBitrateStep())
+ {
+ if (bitrate >= mpeg1_bitrate[SIZE_BITRATE_MPEG1-1] && (!my_EncodingProperties.GetSmartOutputMode() || IsSmartOutput(mpeg1_freq[freq], bitrate, channel+1)))
+ {
+ bitrate_item * bitrate_table_tmp = new bitrate_item;
+ if (bitrate_table_tmp == NULL)
+ return;
+
+ bitrate_table_tmp->frequency = mpeg1_freq[freq];
+ bitrate_table_tmp->bitrate = bitrate;
+ bitrate_table_tmp->channels = channel+1;
+ bitrate_table_tmp->mode = vbr_abr;
+ bitrate_table.push_back(*bitrate_table_tmp);
+ }
+ }
+ }
+ // MPEG II / II.5
+ for (freq = 0;freq < SIZE_FREQ_MPEG2;freq++)
+ {
+ for (bitrate = my_EncodingProperties.GetAbrBitrateMax();
+ bitrate >= my_EncodingProperties.GetAbrBitrateMin();
+ bitrate -= my_EncodingProperties.GetAbrBitrateStep())
+ {
+ if (bitrate >= mpeg2_bitrate[SIZE_BITRATE_MPEG2-1] && (!my_EncodingProperties.GetSmartOutputMode() || IsSmartOutput(mpeg2_freq[freq], bitrate, channel+1)))
+ {
+ bitrate_item * bitrate_table_tmp = new bitrate_item;
+ if (bitrate_table_tmp == NULL)
+ return;
+
+ bitrate_table_tmp->frequency = mpeg2_freq[freq];
+ bitrate_table_tmp->bitrate = bitrate;
+ bitrate_table_tmp->channels = channel+1;
+ bitrate_table_tmp->mode = vbr_abr;
+ bitrate_table.push_back(*bitrate_table_tmp);
+ }
+ }
+ }
+ }
+ }
+
+ // sorting by frequency/bitrate/channel
+ std::sort(bitrate_table.begin(), bitrate_table.end());
+
+/* {
+ // display test
+ int i=0;
+ for (i=0; i<bitrate_table.size();i++)
+ {
+ my_debug.OutPut("bitrate_table[%d].frequency = %d",i,bitrate_table[i].frequency);
+ my_debug.OutPut("bitrate_table[%d].bitrate = %d",i,bitrate_table[i].bitrate);
+ my_debug.OutPut("bitrate_table[%d].channel = %d",i,bitrate_table[i].channels);
+ my_debug.OutPut("bitrate_table[%d].ABR = %s\n",i,(bitrate_table[i].mode == vbr_abr)?"ABR":"CBR");
+ }
+ }*/
+
+ my_debug.OutPut("leaving BuildBitrateTable");
+}
Added: vendor/lame/current/ACM/ACM.h
===================================================================
--- vendor/lame/current/ACM/ACM.h (rev 0)
+++ vendor/lame/current/ACM/ACM.h 2008-02-22 16:56:27 UTC (rev 9482)
@@ -0,0 +1,100 @@
+/**
+ *
+ * Lame ACM wrapper, encode/decode MP3 based RIFF/AVI files in MS Windows
+ *
+ * Copyright (c) 2002 Steve Lhomme <steve.lhomme at free.fr>
+ *
+ * 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
+ *
+ */
+
+/*!
+ \author Steve Lhomme
+ \version \$Id: ACM.h,v 1.7 2002/04/06 14:01:33 robux4 Exp $
+*/
+
+#if !defined(_ACM_H__INCLUDED_)
+#define _ACM_H__INCLUDED_
+
+#if _MSC_VER >= 1000
+#pragma once
+#endif // _MSC_VER >= 1000
+
+#include <vector>
+
+#include <windows.h>
+#include <mmsystem.h>
+#include <mmreg.h>
+#include <msacm.h>
+#include <msacmdrv.h>
+
+#include "lame.h"
+
+#include "ADbg/ADbg.h"
+
+class AEncodeProperties;
+
+class bitrate_item {
+ public:
+ unsigned int frequency;
+ unsigned int bitrate;
+ unsigned int channels;
+ vbr_mode mode;
+
+ bool operator<(const bitrate_item & bitrate) const;
+};
+
+class ACM
+{
+public:
+ ACM( HMODULE hModule );
+ virtual ~ACM();
+
+ LONG DriverProcedure(const HDRVR hdrvr, const UINT msg, LONG lParam1, LONG lParam2);
+
+ static const char * GetVersionString(void) {return VersionString;}
+
+protected:
+// inline DWORD Configure( HWND hParentWindow, LPDRVCONFIGINFO pConfig );
+ inline DWORD About( HWND hParentWindow );
+
+ inline DWORD OnDriverDetails(const HDRVR hdrvr, LPACMDRIVERDETAILS a_DriverDetail);
+ inline DWORD OnFormatTagDetails(LPACMFORMATTAGDETAILS a_FormatTagDetails, const LPARAM a_Query);
+ inline DWORD OnFormatDetails(LPACMFORMATDETAILS a_FormatDetails, const LPARAM a_Query);
+ inline DWORD OnFormatSuggest(LPACMDRVFORMATSUGGEST a_FormatSuggest);
+ inline DWORD OnStreamOpen(LPACMDRVSTREAMINSTANCE a_StreamInstance);
+ inline DWORD OnStreamClose(LPACMDRVSTREAMINSTANCE a_StreamInstance);
+ inline DWORD OnStreamSize(LPACMDRVSTREAMINSTANCE a_StreamInstance, LPACMDRVSTREAMSIZE the_StreamSize);
+ inline DWORD OnStreamPrepareHeader(LPACMDRVSTREAMINSTANCE a_StreamInstance, LPACMSTREAMHEADER a_StreamHeader);
+ inline DWORD OnStreamUnPrepareHeader(LPACMDRVSTREAMINSTANCE a_StreamInstance, LPACMSTREAMHEADER a_StreamHeader);
+ inline DWORD OnStreamConvert(LPACMDRVSTREAMINSTANCE a_StreamInstance, LPACMDRVSTREAMHEADER a_StreamHeader);
+
+ void GetMP3FormatForIndex(const DWORD the_Index, WAVEFORMATEX & the_Format, unsigned short the_String[ACMFORMATDETAILS_FORMAT_CHARS]) const;
+ void GetPCMFormatForIndex(const DWORD the_Index, WAVEFORMATEX & the_Format, unsigned short the_String[ACMFORMATDETAILS_FORMAT_CHARS]) const;
+ DWORD GetNumberEncodingFormats() const;
+ bool IsSmartOutput(const int frequency, const int bitrate, const int channels) const;
+ void BuildBitrateTable();
+
+ HMODULE my_hModule;
+ HICON my_hIcon;
+ ADbg my_debug;
+ AEncodeProperties my_EncodingProperties;
+ std::vector<bitrate_item> bitrate_table;
+
+ static char VersionString[20];
+};
+
+#endif // !defined(_ACM_H__INCLUDED_)
+
Added: vendor/lame/current/ACM/ACMStream.cpp
===================================================================
--- vendor/lame/current/ACM/ACMStream.cpp (rev 0)
+++ vendor/lame/current/ACM/ACMStream.cpp 2008-02-22 16:56:27 UTC (rev 9482)
@@ -0,0 +1,367 @@
+/**
+ *
+ * Lame ACM wrapper, encode/decode MP3 based RIFF/AVI files in MS Windows
+ *
+ * Copyright (c) 2002 Steve Lhomme <steve.lhomme at free.fr>
+ *
+ * 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
+ *
+ */
+
+/*!
+ \author Steve Lhomme
+ \version \$Id: ACMStream.cpp,v 1.10 2004/07/11 18:11:39 bouvigne Exp $
+*/
+
+#if !defined(STRICT)
+#define STRICT
+#endif // STRICT
+
+#include <assert.h>
+#include <windows.h>
+
+#include "adebug.h"
+
+#include "ACMStream.h"
+
+// static methods
+
+ACMStream * ACMStream::Create()
+{
+ ACMStream * Result;
+
+ Result = new ACMStream;
+
+ return Result;
+}
+
+const bool ACMStream::Erase(const ACMStream * a_ACMStream)
+{
+ delete a_ACMStream;
+ return true;
+}
+
+// class methods
+
+ACMStream::ACMStream() :
+ m_WorkingBufferUseSize(0),
+ gfp(NULL)
+{
+ /// \todo get the debug level from the registry
+my_debug = new ADbg(DEBUG_LEVEL_CREATION);
+ if (my_debug != NULL) {
+ unsigned char DebugFileName[512];
+
+ my_debug->setPrefix("LAMEstream"); /// \todo get it from the registry
+my_debug->setIncludeTime(true); /// \todo get it from the registry
+
+// Check in the registry if we have to Output Debug information
+DebugFileName[0] = '\0';
+
+ HKEY OssKey;
+ if (RegOpenKeyEx( HKEY_LOCAL_MACHINE, "SOFTWARE\\MUKOLI", 0, KEY_READ , &OssKey ) == ERROR_SUCCESS) {
+ DWORD DataType;
+ DWORD DebugFileNameSize = 512;
+ if (RegQueryValueEx( OssKey, "DebugFile", NULL, &DataType, DebugFileName, &DebugFileNameSize ) == ERROR_SUCCESS) {
+ if (DataType == REG_SZ) {
+ my_debug->setUseFile(true);
+ my_debug->setDebugFile((char *)DebugFileName);
+ my_debug->OutPut("Debug file is %s",(char *)DebugFileName);
+ }
+ }
+ }
+ my_debug->OutPut(DEBUG_LEVEL_FUNC_START, "ACMStream Creation (0X%08X)",this);
+ }
+ else {
+ ADbg debug;
+ debug.OutPut("ACMStream::ACMACMStream : Impossible to create my_debug");
+ }
+
+}
+
+ACMStream::~ACMStream()
+{
+ // release memory - encoding is finished
+ if (gfp) lame_close( gfp );
+
+ if (my_debug != NULL)
+ {
+ my_debug->OutPut(DEBUG_LEVEL_FUNC_START, "ACMStream Deletion (0X%08X)",this);
+ delete my_debug;
+ }
+}
+
+bool ACMStream::init(const int nSamplesPerSec, const int nOutputSamplesPerSec, const int nChannels, const int nAvgBytesPerSec, const vbr_mode mode)
+{
+ bool bResult = false;
+
+ my_SamplesPerSec = nSamplesPerSec;
+ my_OutBytesPerSec = nOutputSamplesPerSec;
+ my_Channels = nChannels;
+ my_AvgBytesPerSec = nAvgBytesPerSec;
+ my_VBRMode = mode;
+
+ bResult = true;
+
+ return bResult;
+
+}
+
+bool ACMStream::open(const AEncodeProperties & the_Properties)
+{
+ bool bResult = false;
+
+ // Init the MP3 Stream
+ // Init the global flags structure
+ gfp = lame_init();
+
+ // Set input sample frequency
+ lame_set_in_samplerate( gfp, my_SamplesPerSec );
+
+ // Set output sample frequency
+ lame_set_out_samplerate( gfp, my_OutBytesPerSec );
+
+ lame_set_num_channels( gfp, my_Channels );
+ if (my_Channels == 1)
+ lame_set_mode( gfp, MONO );
+ else
+ lame_set_mode( gfp, (MPEG_mode_e)the_Properties.GetChannelModeValue()) ; /// \todo Get the mode from the default configuration
+
+// lame_set_VBR( gfp, vbr_off ); /// \note VBR not supported for the moment
+ lame_set_VBR( gfp, my_VBRMode ); /// \note VBR not supported for the moment
+
+ if (my_VBRMode == vbr_abr)
+ {
+ lame_set_VBR_q( gfp, 1 );
+
+ lame_set_VBR_mean_bitrate_kbps( gfp, (my_AvgBytesPerSec * 8 + 500) / 1000 );
+
+ if (24000 > lame_get_in_samplerate( gfp ))
+ {
+ // For MPEG-II
+ lame_set_VBR_min_bitrate_kbps( gfp, 8);
+
+ lame_set_VBR_max_bitrate_kbps( gfp, 160);
+ }
+ else
+ {
+ // For MPEG-I
+ lame_set_VBR_min_bitrate_kbps( gfp, 32);
+
+ lame_set_VBR_max_bitrate_kbps( gfp, 320);
+ }
+ }
+
+ // Set bitrate
+ lame_set_brate( gfp, my_AvgBytesPerSec * 8 / 1000 );
+
+ /// \todo Get the mode from the default configuration
+ // Set copyright flag?
+ lame_set_copyright( gfp, the_Properties.GetCopyrightMode()?1:0 );
+ // Do we have to tag it as non original
+ lame_set_original( gfp, the_Properties.GetOriginalMode()?1:0 );
+ // Add CRC?
+ lame_set_error_protection( gfp, the_Properties.GetCRCMode()?1:0 );
+ // Set private bit?
+ lame_set_extension( gfp, the_Properties.GetPrivateMode()?1:0 );
+ // INFO tag support not possible in ACM - it requires rewinding
+ // output stream to the beginning after encoding is finished.
+ lame_set_bWriteVbrTag( gfp, 0 );
+
+ if (0 == lame_init_params( gfp ))
+ {
+ //LAME encoding call will accept any number of samples.
+ if ( 0 == lame_get_version( gfp ) )
+ {
+ // For MPEG-II, only 576 samples per frame per channel
+ my_SamplesPerBlock = 576 * lame_get_num_channels( gfp );
+ }
+ else
+ {
+ // For MPEG-I, 1152 samples per frame per channel
+ my_SamplesPerBlock = 1152 * lame_get_num_channels( gfp );
+ }
+ }
+
+ my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "version =%d",lame_get_version( gfp ) );
+ my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "Layer =3");
+ switch ( lame_get_mode( gfp ) )
+ {
+ case STEREO: my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "mode =Stereo" ); break;
+ case JOINT_STEREO: my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "mode =Joint-Stereo" ); break;
+ case DUAL_CHANNEL: my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "mode =Forced Stereo" ); break;
+ case MONO: my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "mode =Mono" ); break;
+ case NOT_SET: /* FALLTROUGH */
+ default: my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "mode =Error (unknown)" ); break;
+ }
+
+ my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "sampling frequency =%.1f kHz", lame_get_in_samplerate( gfp ) /1000.0 );
+ my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "bitrate =%d kbps", lame_get_brate( gfp ) );
+ my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "Vbr Min bitrate =%d kbps", lame_get_VBR_min_bitrate_kbps( gfp ) );
+ my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "Vbr Max bitrate =%d kbps", lame_get_VBR_max_bitrate_kbps( gfp ) );
+ my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "Quality Setting =%d", lame_get_quality( gfp ) );
+
+ my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "Low pass frequency =%d", lame_get_lowpassfreq( gfp ) );
+ my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "Low pass width =%d", lame_get_lowpasswidth( gfp ) );
+
+ my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "High pass frequency =%d", lame_get_highpassfreq( gfp ) );
+ my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "High pass width =%d", lame_get_highpasswidth( gfp ) );
+
+ my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "No Short Blocks =%d", lame_get_no_short_blocks( gfp ) );
+
+ my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "de-emphasis =%d", lame_get_emphasis( gfp ) );
+ my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "private flag =%d", lame_get_extension( gfp ) );
+
+ my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "copyright flag =%d", lame_get_copyright( gfp ) );
+ my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "original flag =%d", lame_get_original( gfp ) );
+ my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "CRC =%s", lame_get_error_protection( gfp ) ? "on" : "off" );
+ my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "Fast mode =%s", ( lame_get_quality( gfp ) )? "enabled" : "disabled" );
+ my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "Force mid/side stereo =%s", ( lame_get_force_ms( gfp ) )?"enabled":"disabled" );
+ my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "Padding Type =%d", lame_get_padding_type( gfp ) );
+ my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "Disable Resorvoir =%d", lame_get_disable_reservoir( gfp ) );
+ my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "VBR =%s, VBR_q =%d, VBR method =",
+ ( lame_get_VBR( gfp ) !=vbr_off ) ? "enabled": "disabled",
+ lame_get_VBR_q( gfp ) );
+
+ switch ( lame_get_VBR( gfp ) )
+ {
+ case vbr_off: my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "vbr_off" ); break;
+ case vbr_mt : my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "vbr_mt" ); break;
+ case vbr_rh : my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "vbr_rh" ); break;
+ case vbr_mtrh: my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "vbr_mtrh" ); break;
+ case vbr_abr:
+ my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "vbr_abr (average bitrate %d kbps)", lame_get_VBR_mean_bitrate_kbps( gfp ) );
+ break;
+ default:
+ my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "error, unknown VBR setting");
+ break;
+ }
+
+ my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "Write VBR Header =%s\n", ( lame_get_bWriteVbrTag( gfp ) ) ?"Yes":"No");
+
+#ifdef FROM_DLL
+beConfig.format.LHV1.dwReSampleRate = my_OutBytesPerSec; // force the user resampling
+#endif // FROM_DLL
+
+ bResult = true;
+
+ return bResult;
+}
+
+bool ACMStream::close(LPBYTE pOutputBuffer, DWORD *pOutputSize)
+{
+
+bool bResult = false;
+
+ int nOutputSamples = 0;
+
+ nOutputSamples = lame_encode_flush( gfp, pOutputBuffer, 0 );
+
+ if ( nOutputSamples < 0 )
+ {
+ // BUFFER_TOO_SMALL
+*pOutputSize = 0;
+ }
+ else
+{
+ *pOutputSize = nOutputSamples;
+
+ bResult = true;
+ }
+
+ // lame will be closed in destructor
+ //lame_close( gfp );
+
+ return bResult;
+}
+
+DWORD ACMStream::GetOutputSizeForInput(const DWORD the_SrcLength) const
+{
+/* double OutputInputRatio;
+
+ if (my_VBRMode == vbr_off)
+ OutputInputRatio = double(my_AvgBytesPerSec) / double(my_OutBytesPerSec * 2);
+ else // reserve the space for 320 kbps
+ OutputInputRatio = 40000.0 / double(my_OutBytesPerSec * 2);
+
+ OutputInputRatio *= 1.15; // allow 15% more*/
+
+ DWORD Result;
+
+// Result = DWORD(double(the_SrcLength) * OutputInputRatio);
+ Result = DWORD(1.25*the_SrcLength + 7200);
+
+my_debug->OutPut(DEBUG_LEVEL_FUNC_CODE, "Result = %d",Result);
+
+ return Result;
+}
+
+bool ACMStream::ConvertBuffer(LPACMDRVSTREAMHEADER a_StreamHeader)
+{
+ bool result;
+
+if (my_debug != NULL)
+{
+my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "enter ACMStream::ConvertBuffer");
+}
+
+ DWORD InSize = a_StreamHeader->cbSrcLength / 2, OutSize = a_StreamHeader->cbDstLength; // 2 for 8<->16 bits
+
+// Encode it
+int dwSamples;
+ int nOutputSamples = 0;
+
+ dwSamples = InSize / lame_get_num_channels( gfp );
+
+ if ( 1 == lame_get_num_channels( gfp ) )
+ {
+ nOutputSamples = lame_encode_buffer(gfp,(PSHORT)a_StreamHeader->pbSrc,(PSHORT)a_StreamHeader->pbSrc,dwSamples,a_StreamHeader->pbDst,a_StreamHeader->cbDstLength);
+ }
+ else
+ {
+ nOutputSamples = lame_encode_buffer_interleaved(gfp,(PSHORT)a_StreamHeader->pbSrc,dwSamples,a_StreamHeader->pbDst,a_StreamHeader->cbDstLength);
+ }
+
+ a_StreamHeader->cbSrcLengthUsed = a_StreamHeader->cbSrcLength;
+ a_StreamHeader->cbDstLengthUsed = nOutputSamples;
+
+ result = a_StreamHeader->cbDstLengthUsed <= a_StreamHeader->cbDstLength;
+
+ my_debug->OutPut(DEBUG_LEVEL_FUNC_CODE, "UsedSize = %d / EncodedSize = %d, result = %d (%d <= %d)", InSize, OutSize, result, a_StreamHeader->cbDstLengthUsed, a_StreamHeader->cbDstLength);
+
+if (my_debug != NULL)
+{
+my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "ACMStream::ConvertBuffer result = %d (0x%02X 0x%02X)",result,a_StreamHeader->pbDst[0],a_StreamHeader->pbDst[1]);
+}
+
+ return result;
+}
+
+unsigned int ACMStream::GetOutputSampleRate(int samples_per_sec, int bitrate, int channels)
+{
+ if (bitrate==0)
+ bitrate = (64000*channels)/8;
+
+ /// \todo pass through the same LAME routine
+ unsigned int OutputFrequency;
+ double compression_ratio = double(samples_per_sec * 16 * channels / (bitrate * 8));
+ if (compression_ratio > 13.)
+ OutputFrequency = map2MP3Frequency( (10. * bitrate * 8) / (16 * channels));
+ else
+ OutputFrequency = map2MP3Frequency( 0.97 * samples_per_sec );
+
+ return OutputFrequency;
+}
+
Added: vendor/lame/current/ACM/ACMStream.h
===================================================================
--- vendor/lame/current/ACM/ACMStream.h (rev 0)
+++ vendor/lame/current/ACM/ACMStream.h 2008-02-22 16:56:27 UTC (rev 9482)
@@ -0,0 +1,83 @@
+/**
+ *
+ * Lame ACM wrapper, encode/decode MP3 based RIFF/AVI files in MS Windows
+ *
+ * Copyright (c) 2002 Steve Lhomme <steve.lhomme at free.fr>
+ *
+ * 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
+ *
+ */
+
+/*!
+ \author Steve Lhomme
+ \version \$Id: ACMStream.h,v 1.4 2002/04/06 14:01:33 robux4 Exp $
+*/
+
+#if !defined(_ACMSTREAM_H__INCLUDED_)
+#define _ACMSTREAM_H__INCLUDED_
+
+#if _MSC_VER >= 1000
+#pragma once
+#endif // _MSC_VER >= 1000
+
+#include <mmreg.h>
+#include <msacm.h>
+#include <msacmdrv.h>
+
+#include "ADbg/ADbg.h"
+
+#include <config.h>
+#include "util.h"
+
+#include "AEncodeProperties.h"
+
+class ACMStream
+{
+public:
+ ACMStream( );
+ virtual ~ACMStream( );
+
+ static ACMStream * Create();
+ static const bool Erase(const ACMStream * a_ACMStream);
+
+ bool init(const int nSamplesPerSec, const int nOutputSamplesPerSec, const int nChannels, const int nAvgBytesPerSec, const vbr_mode mode);
+ bool open(const AEncodeProperties & the_Properties);
+ bool close(LPBYTE pOutputBuffer, DWORD *pOutputSize);
+
+ DWORD GetOutputSizeForInput(const DWORD the_SrcLength) const;
+ bool ConvertBuffer(LPACMDRVSTREAMHEADER a_StreamHeader);
+
+ static unsigned int GetOutputSampleRate(int samples_per_sec, int bitrate, int channels);
+
+protected:
+ lame_global_flags * gfp;
+
+ ADbg * my_debug;
+ int my_SamplesPerSec;
+ int my_Channels;
+ int my_AvgBytesPerSec;
+ int my_OutBytesPerSec;
+ vbr_mode my_VBRMode;
+ DWORD my_SamplesPerBlock;
+
+unsigned int m_WorkingBufferUseSize;
+ char m_WorkingBuffer[2304*2]; // should be at least twice my_SamplesPerBlock
+
+inline int GetBytesPerBlock(DWORD bytes_per_sec, DWORD samples_per_sec, int BlockAlign) const;
+
+};
+
+#endif // !defined(_ACMSTREAM_H__INCLUDED_)
+
Added: vendor/lame/current/ACM/ADbg/ADbg.cpp
===================================================================
--- vendor/lame/current/ACM/ADbg/ADbg.cpp (rev 0)
+++ vendor/lame/current/ACM/ADbg/ADbg.cpp 2008-02-22 16:56:27 UTC (rev 9482)
@@ -0,0 +1,181 @@
+/************************************************************************
+Project : C++ debugging class
+File version : 0.4
+
+BSD License post 1999 :
+
+Copyright (c) 2001, Steve Lhomme
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+- Redistributions of source code must retain the above copyright notice, this
+list of conditions and the following disclaimer.
+
+- Redistributions in binary form must reproduce the above copyright notice,
+this list of conditions and the following disclaimer in the documentation
+and/or other materials provided with the distribution.
+
+- The name of the author may not be used to endorse or promote products derived
+from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
+WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
+OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
+IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
+OF SUCH DAMAGE.
+************************************************************************/
+
+#include <stdio.h>
+#include <stdarg.h>
+#include <windows.h>
+
+#include "ADbg.h"
+
+#if !defined(NDEBUG)
+
+//////////////////////////////////////////////////////////////////////
+// Construction/Destruction
+//////////////////////////////////////////////////////////////////////
+
+ADbg::ADbg(int level)
+:my_level(level)
+,my_time_included(false)
+,my_use_file(false)
+,my_debug_output(true)
+,hFile(NULL)
+{
+ prefix[0] = '\0';
+ OutPut(-1,"ADbg Creation at debug level = %d (0x%08X)",my_level,this);
+}
+
+ADbg::~ADbg()
+{
+ unsetDebugFile();
+ OutPut(-1,"ADbg Deletion (0x%08X)",this);
+}
+
+inline int ADbg::_OutPut(const char * format,va_list params) const
+{
+ int result;
+
+ char tst[1000];
+ char myformat[256];
+
+ if (my_time_included) {
+ SYSTEMTIME time;
+ GetSystemTime(&time);
+ if (prefix[0] == '\0')
+ wsprintf(myformat,"%04d/%02d/%02d %02d:%02d:%02d.%03d UTC : %s\r\n",
+ time.wYear,
+ time.wMonth,
+ time.wDay,
+ time.wHour,
+ time.wMinute,
+ time.wSecond,
+ time.wMilliseconds,
+ format);
+ else
+ wsprintf(myformat,"%04d/%02d/%02d %02d:%02d:%02d.%03d UTC : %s - %s\r\n",
+ time.wYear,
+ time.wMonth,
+ time.wDay,
+ time.wHour,
+ time.wMinute,
+ time.wSecond,
+ time.wMilliseconds,
+ prefix,
+ format);
+ } else {
+ if (prefix[0] == '\0')
+ wsprintf( myformat, "%s\r\n", format);
+ else
+ wsprintf( myformat, "%s - %s\r\n", prefix, format);
+ }
+
+ result = vsprintf(tst,myformat,params);
+
+ if (my_debug_output)
+ OutputDebugString(tst);
+
+ if (my_use_file && (hFile != NULL)) {
+ SetFilePointer( hFile, 0, 0, FILE_END );
+ DWORD written;
+ WriteFile( hFile, tst, lstrlen(tst), &written, NULL );
+ }
+
+ return result;
+}
+
+int ADbg::OutPut(int forLevel, const char * format,...) const
+{
+ int result=0;
+
+ if (forLevel >= my_level) {
+ va_list tstlist;
+ int result;
+
+ va_start(tstlist, format);
+
+ result = _OutPut(format,tstlist);
+
+ }
+
+ return result;
+}
+
+int ADbg::OutPut(const char * format,...) const
+{
+ va_list tstlist;
+
+ va_start(tstlist, format);
+
+ return _OutPut(format,tstlist);
+}
+
+bool ADbg::setDebugFile(const char * NewFilename) {
+ bool result;
+ result = unsetDebugFile();
+
+ if (result) {
+ result = false;
+
+ hFile = CreateFile(NewFilename, GENERIC_WRITE, FILE_SHARE_WRITE|FILE_SHARE_READ, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL );
+
+ if (hFile != INVALID_HANDLE_VALUE) {
+ SetFilePointer( hFile, 0, 0, FILE_END );
+
+ result = true;
+
+ OutPut(-1,"Debug file Opening succeeded");
+
+ }
+ else
+ OutPut(-1,"Debug file %s Opening failed",NewFilename);
+ }
+
+ return result;
+}
+
+bool ADbg::unsetDebugFile() {
+ bool result = (hFile == NULL);
+
+ if (hFile != NULL) {
+ result = (CloseHandle(hFile) != 0);
+
+ if (result) {
+ OutPut(-1,"Debug file Closing succeeded");
+ hFile = NULL;
+ }
+ }
+
+ return result;
+}
+
+#endif // !defined(NDEBUG)
Added: vendor/lame/current/ACM/ADbg/ADbg.dsp
===================================================================
--- vendor/lame/current/ACM/ADbg/ADbg.dsp (rev 0)
+++ vendor/lame/current/ACM/ADbg/ADbg.dsp 2008-02-22 16:56:27 UTC (rev 9482)
@@ -0,0 +1,100 @@
+# Microsoft Developer Studio Project File - Name="ADbg" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Static Library" 0x0104
+
+CFG=ADbg - 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 "ADbg.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 "ADbg.mak" CFG="ADbg - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "ADbg - Win32 Release" (based on "Win32 (x86) Static Library")
+!MESSAGE "ADbg - Win32 Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "ADbg - 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 Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD BASE RSC /l 0x40c
+# ADD RSC /l 0x40c
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+
+!ELSEIF "$(CFG)" == "ADbg - 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 Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /Z7 /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD CPP /nologo /W3 /GX /Z7 /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD BASE RSC /l 0x40c
+# ADD RSC /l 0x40c
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+
+!ENDIF
+
+# Begin Target
+
+# Name "ADbg - Win32 Release"
+# Name "ADbg - Win32 Debug"
+# Begin Group "Sources"
+
+# PROP Default_Filter "cpp"
+# Begin Source File
+
+SOURCE=.\ADbg.cpp
+# End Source File
+# End Group
+# Begin Group "Headers"
+
+# PROP Default_Filter "h"
+# Begin Source File
+
+SOURCE=.\ADbg.h
+# End Source File
+# End Group
+# End Target
+# End Project
Added: vendor/lame/current/ACM/ADbg/ADbg.h
===================================================================
--- vendor/lame/current/ACM/ADbg/ADbg.h (rev 0)
+++ vendor/lame/current/ACM/ADbg/ADbg.h 2008-02-22 16:56:27 UTC (rev 9482)
@@ -0,0 +1,133 @@
+/************************************************************************
+Project : C++ debugging class
+File version : 0.4
+
+BSD License post 1999 :
+
+Copyright (c) 2001, Steve Lhomme
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+- Redistributions of source code must retain the above copyright notice, this
+list of conditions and the following disclaimer.
+
+- Redistributions in binary form must reproduce the above copyright notice,
+this list of conditions and the following disclaimer in the documentation
+and/or other materials provided with the distribution.
+
+- The name of the author may not be used to endorse or promote products derived
+from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
+WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
+OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
+IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
+OF SUCH DAMAGE.
+************************************************************************/
+
+#if !defined(_DBG_H__INCLUDED_)
+#define _DBG_H__INCLUDED_
+
+#include <windows.h>
+
+static const int MAX_PREFIX_LENGTH = 128;
+
+#if !defined(NDEBUG)
+// define the working debugging class
+
+class ADbg
+{
+public:
+ ADbg(int level = 0);
+ virtual ~ADbg();
+
+ /// \todo make an inline function to test the level first and the process
+ int OutPut(int level, const char * format,...) const;
+
+ int OutPut(const char * format,...) const;
+
+ inline int setLevel(const int level) {
+ return my_level = level;
+ }
+
+ inline bool setIncludeTime(const bool included = true) {
+ return my_time_included = included;
+ }
+
+ bool setDebugFile(const char * NewFilename);
+ bool unsetDebugFile();
+
+ inline bool setUseFile(const bool usefile = true) {
+ return my_use_file = usefile;
+ }
+
+ inline const char * setPrefix(const char * string) {
+ return strncpy(prefix, string, MAX_PREFIX_LENGTH);
+ }
+
+private:
+ int my_level;
+ bool my_time_included;
+ bool my_use_file;
+ bool my_debug_output;
+
+ int _OutPut(const char * format,va_list params) const;
+
+ char prefix[MAX_PREFIX_LENGTH];
+
+ HANDLE hFile;
+};
+
+#else // !defined(NDEBUG)
+
+// define a class that does nothing (no output)
+
+class ADbg
+{
+public:
+ ADbg(int level = 0){}
+ virtual ~ADbg() {}
+
+ inline int OutPut(int level, const char * format,...) const {
+ return 0;
+ }
+
+ inline int OutPut(const char * format,...) const {
+ return 0;
+ }
+
+ inline int setLevel(const int level) {
+ return level;
+ }
+
+ inline bool setIncludeTime(const bool included = true) {
+ return true;
+ }
+
+ inline bool setDebugFile(const char * NewFilename) {
+ return true;
+ }
+
+ inline bool unsetDebugFile() {
+ return true;
+ }
+
+ inline bool setUseFile(const bool usefile = true) {
+ return true;
+ }
+
+ inline const char * setPrefix(const char * string) {
+ return string;
+ }
+};
+
+#endif // !defined(NDEBUG)
+
+#endif // !defined(_DBG_H__INCLUDED_)
Added: vendor/lame/current/ACM/ADbg/ADbg_vc7.vcproj
===================================================================
--- vendor/lame/current/ACM/ADbg/ADbg_vc7.vcproj (rev 0)
+++ vendor/lame/current/ACM/ADbg/ADbg_vc7.vcproj 2008-02-22 16:56:27 UTC (rev 9482)
@@ -0,0 +1,465 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="7.10"
+ Name="ADbg"
+ ProjectGUID="{4A9EBEED-ACCA-4548-B10A-90524B1CFCD1}"
+ SccProjectName=""
+ SccLocalPath="">
+ <Platforms>
+ <Platform
+ Name="Win32"/>
+ </Platforms>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory=".\Debug"
+ IntermediateDirectory=".\Debug"
+ ConfigurationType="4"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS"
+ RuntimeLibrary="5"
+ UsePrecompiledHeader="2"
+ PrecompiledHeaderFile=".\Debug/ADbg.pch"
+ AssemblerListingLocation=".\Debug/"
+ ObjectFile=".\Debug/"
+ ProgramDataBaseFileName=".\Debug/"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ DebugInformationFormat="1"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLibrarianTool"
+ OutputFile=".\Debug\ADbg.lib"
+ SuppressStartupBanner="TRUE"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"
+ Culture="1036"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory=".\Release"
+ IntermediateDirectory=".\Release"
+ ConfigurationType="4"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS"
+ StringPooling="TRUE"
+ RuntimeLibrary="4"
+ EnableFunctionLevelLinking="TRUE"
+ UsePrecompiledHeader="2"
+ PrecompiledHeaderFile=".\Release/ADbg.pch"
+ AssemblerListingLocation=".\Release/"
+ ObjectFile=".\Release/"
+ ProgramDataBaseFileName=".\Release/"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLibrarianTool"
+ OutputFile=".\Release\ADbg.lib"
+ SuppressStartupBanner="TRUE"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"
+ Culture="1036"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="LAME debug|Win32"
+ OutputDirectory="$(ConfigurationName)"
+ IntermediateDirectory="$(ConfigurationName)"
+ ConfigurationType="4"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS"
+ RuntimeLibrary="5"
+ UsePrecompiledHeader="2"
+ PrecompiledHeaderFile=".\Debug/ADbg.pch"
+ AssemblerListingLocation=".\Debug/"
+ ObjectFile=".\Debug/"
+ ProgramDataBaseFileName=".\Debug/"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ DebugInformationFormat="1"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLibrarianTool"
+ OutputFile=".\Debug\ADbg.lib"
+ SuppressStartupBanner="TRUE"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"
+ Culture="1036"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="LAME release|Win32"
+ OutputDirectory="$(ConfigurationName)"
+ IntermediateDirectory="$(ConfigurationName)"
+ ConfigurationType="4"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS"
+ RuntimeLibrary="5"
+ UsePrecompiledHeader="2"
+ PrecompiledHeaderFile=".\Debug/ADbg.pch"
+ AssemblerListingLocation=".\Debug/"
+ ObjectFile=".\Debug/"
+ ProgramDataBaseFileName=".\Debug/"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ DebugInformationFormat="1"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLibrarianTool"
+ OutputFile=".\Debug\ADbg.lib"
+ SuppressStartupBanner="TRUE"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"
+ Culture="1036"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="LAME release Nasm|Win32"
+ OutputDirectory="$(ConfigurationName)"
+ IntermediateDirectory="$(ConfigurationName)"
+ ConfigurationType="4"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS"
+ StringPooling="TRUE"
+ RuntimeLibrary="4"
+ EnableFunctionLevelLinking="TRUE"
+ UsePrecompiledHeader="2"
+ PrecompiledHeaderFile=".\Release/ADbg.pch"
+ AssemblerListingLocation=".\Release/"
+ ObjectFile=".\Release/"
+ ProgramDataBaseFileName=".\Release/"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLibrarianTool"
+ OutputFile=".\Release\ADbg.lib"
+ SuppressStartupBanner="TRUE"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"
+ Culture="1036"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="dll debug|Win32"
+ OutputDirectory="$(ConfigurationName)"
+ IntermediateDirectory="$(ConfigurationName)"
+ ConfigurationType="4"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS"
+ RuntimeLibrary="5"
+ UsePrecompiledHeader="2"
+ PrecompiledHeaderFile=".\Debug/ADbg.pch"
+ AssemblerListingLocation=".\Debug/"
+ ObjectFile=".\Debug/"
+ ProgramDataBaseFileName=".\Debug/"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ DebugInformationFormat="1"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLibrarianTool"
+ OutputFile=".\Debug\ADbg.lib"
+ SuppressStartupBanner="TRUE"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"
+ Culture="1036"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="dll release|Win32"
+ OutputDirectory="$(ConfigurationName)"
+ IntermediateDirectory="$(ConfigurationName)"
+ ConfigurationType="4"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS"
+ RuntimeLibrary="5"
+ UsePrecompiledHeader="2"
+ PrecompiledHeaderFile=".\Debug/ADbg.pch"
+ AssemblerListingLocation=".\Debug/"
+ ObjectFile=".\Debug/"
+ ProgramDataBaseFileName=".\Debug/"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ DebugInformationFormat="1"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLibrarianTool"
+ OutputFile=".\Debug\ADbg.lib"
+ SuppressStartupBanner="TRUE"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"
+ Culture="1036"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="dll release Nasm|Win32"
+ OutputDirectory="$(ConfigurationName)"
+ IntermediateDirectory="$(ConfigurationName)"
+ ConfigurationType="4"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS"
+ StringPooling="TRUE"
+ RuntimeLibrary="4"
+ EnableFunctionLevelLinking="TRUE"
+ UsePrecompiledHeader="2"
+ PrecompiledHeaderFile=".\Release/ADbg.pch"
+ AssemblerListingLocation=".\Release/"
+ ObjectFile=".\Release/"
+ ProgramDataBaseFileName=".\Release/"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLibrarianTool"
+ OutputFile=".\Release\ADbg.lib"
+ SuppressStartupBanner="TRUE"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"
+ Culture="1036"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Sources"
+ Filter="cpp">
+ <File
+ RelativePath="ADbg.cpp">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ PreprocessorDefinitions=""/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ PreprocessorDefinitions=""/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="LAME debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ PreprocessorDefinitions=""/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="LAME release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ PreprocessorDefinitions=""/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="LAME release Nasm|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ PreprocessorDefinitions=""/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="dll debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ PreprocessorDefinitions=""/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="dll release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ PreprocessorDefinitions=""/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="dll release Nasm|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ PreprocessorDefinitions=""/>
+ </FileConfiguration>
+ </File>
+ </Filter>
+ <Filter
+ Name="Headers"
+ Filter="h">
+ <File
+ RelativePath="ADbg.h">
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
Added: vendor/lame/current/ACM/ADbg/Makefile.am
===================================================================
--- vendor/lame/current/ACM/ADbg/Makefile.am (rev 0)
+++ vendor/lame/current/ACM/ADbg/Makefile.am 2008-02-22 16:56:27 UTC (rev 9482)
@@ -0,0 +1,10 @@
+## $Id: Makefile.am,v 1.2 2005/08/21 17:32:08 bouvigne Exp $
+
+include $(top_srcdir)/Makefile.am.global
+
+EXTRA_DIST = \
+ ADbg.cpp \
+ ADbg.dsp \
+ ADbg_vc7.vcproj \
+ ADbg.h
+
Added: vendor/lame/current/ACM/ADbg/Makefile.in
===================================================================
--- vendor/lame/current/ACM/ADbg/Makefile.in (rev 0)
+++ vendor/lame/current/ACM/ADbg/Makefile.in 2008-02-22 16:56:27 UTC (rev 9482)
@@ -0,0 +1,353 @@
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+# global section for every Makefile.am
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ../..
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+ $(top_srcdir)/Makefile.am.global
+subdir = ACM/ADbg
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
+ $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CONFIG_DEFS = @CONFIG_DEFS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CPUTYPE = @CPUTYPE@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FRONTEND_CFLAGS = @FRONTEND_CFLAGS@
+FRONTEND_LDADD = @FRONTEND_LDADD@
+FRONTEND_LDFLAGS = @FRONTEND_LDFLAGS@
+GTK_CFLAGS = @GTK_CFLAGS@
+GTK_CONFIG = @GTK_CONFIG@
+GTK_LIBS = @GTK_LIBS@
+HAVE_NASM_FALSE = @HAVE_NASM_FALSE@
+HAVE_NASM_TRUE = @HAVE_NASM_TRUE@
+INCLUDES = @INCLUDES@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDADD = @LDADD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIBTOOL_DEPS = @LIBTOOL_DEPS@
+LIB_MAJOR_VERSION = @LIB_MAJOR_VERSION@
+LIB_MINOR_VERSION = @LIB_MINOR_VERSION@
+LIB_WITH_DECODER_FALSE = @LIB_WITH_DECODER_FALSE@
+LIB_WITH_DECODER_TRUE = @LIB_WITH_DECODER_TRUE@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
+MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
+MAKEDEP = @MAKEDEP@
+MAKEINFO = @MAKEINFO@
+NASM = @NASM@
+NASM_FORMAT = @NASM_FORMAT@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+RM_F = @RM_F@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+U = @U@
+VERSION = @VERSION@
+WITH_BRHIST_FALSE = @WITH_BRHIST_FALSE@
+WITH_BRHIST_TRUE = @WITH_BRHIST_TRUE@
+WITH_FRONTEND = @WITH_FRONTEND@
+WITH_MP3RTP = @WITH_MP3RTP@
+WITH_MP3X = @WITH_MP3X@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+AUTOMAKE_OPTIONS = 1.5 foreign $(top_srcdir)/ansi2knr
+EXTRA_DIST = \
+ ADbg.cpp \
+ ADbg.dsp \
+ ADbg_vc7.vcproj \
+ ADbg.h
+
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.am.global $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign ACM/ADbg/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --foreign ACM/ADbg/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+distclean-libtool:
+ -rm -f libtool
+uninstall-info-am:
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+distdir: $(DISTFILES)
+ $(mkdir_p) $(distdir)/../..
+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+ list='$(DISTFILES)'; for file in $$list; do \
+ case $$file in \
+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+ esac; \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+ dir="/$$dir"; \
+ $(mkdir_p) "$(distdir)$$dir"; \
+ else \
+ dir=''; \
+ fi; \
+ if test -d $$d/$$file; then \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
@@ Diff output truncated at 100000 characters. @@
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Pd-cvs
mailing list