shithub: aacenc

Download patch

ref: 090d7e381ee5f782170d2105bda52344971fe4c0
parent: b1ad0c2767ebcf4131f5df7aeeaa369e701a71f5
author: menno <menno>
date: Sun Jan 25 15:31:26 EST 2009

Updated projects and removed outdated code

diff: cannot open a/plugins/aac_acm//null: file does not exist: 'a/plugins/aac_acm//null' diff: cannot open a/plugins/foo_faac//null: file does not exist: 'a/plugins/foo_faac//null'
--- a/plugins/aac_acm/StdAfx.cpp
+++ /dev/null
@@ -1,8 +1,0 @@
-// stdafx.cpp : source file that includes just the standard includes
-//	aac_acm.pch will be the pre-compiled header
-//	stdafx.obj will contain the pre-compiled type information
-
-#include "stdafx.h"
-
-// TODO: reference any additional headers you need in STDAFX.H
-// and not in this file
--- a/plugins/aac_acm/StdAfx.h
+++ /dev/null
@@ -1,24 +1,0 @@
-// stdafx.h : include file for standard system include files,
-//  or project specific include files that are used frequently, but
-//      are changed infrequently
-//
-
-#if !defined(AFX_STDAFX_H__4B6551ED_F548_4AD7_B0DA_37308A3D8313__INCLUDED_)
-#define AFX_STDAFX_H__4B6551ED_F548_4AD7_B0DA_37308A3D8313__INCLUDED_
-
-#if _MSC_VER > 1000
-#pragma once
-#endif // _MSC_VER > 1000
-
-
-// Insert your headers here
-#define WIN32_LEAN_AND_MEAN		// Exclude rarely-used stuff from Windows headers
-
-#include <windows.h>
-
-// TODO: reference additional headers your program requires here
-
-//{{AFX_INSERT_LOCATION}}
-// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
-
-#endif // !defined(AFX_STDAFX_H__4B6551ED_F548_4AD7_B0DA_37308A3D8313__INCLUDED_)
--- a/plugins/aac_acm/aac_acm.cpp
+++ /dev/null
@@ -1,192 +1,0 @@
-// aac_acm.cpp : Defines the entry point for the DLL application.
-//
-
-#include "stdafx.h"
-#include "codec.h"
-#include <list>
-
-struct messagetype
-{
-    const char* c;
-    int i;
-};
-
-const messagetype g_types[] =
-{
-	"DRV_LOAD", DRV_LOAD,
-	"DRV_FREE", DRV_FREE,
-	"DRV_OPEN", DRV_OPEN,
-	"DRV_CLOSE", DRV_CLOSE,
-	"DRV_DISABLE", DRV_DISABLE,
-	"DRV_ENABLE", DRV_ENABLE,
-	"DRV_INSTALL", DRV_INSTALL,
-	"DRV_REMOVE", DRV_REMOVE,
-	"DRV_CONFIGURE", DRV_CONFIGURE,
-	"DRV_QUERYCONFIGURE", DRV_QUERYCONFIGURE,
-	"ACMDM_DRIVER_DETAILS", ACMDM_DRIVER_DETAILS,
-	"ACMDM_DRIVER_ABOUT", ACMDM_DRIVER_ABOUT,
-	"ACMDM_FORMATTAG_DETAILS", ACMDM_FORMATTAG_DETAILS,
-	"ACMDM_FORMAT_DETAILS", ACMDM_FORMAT_DETAILS,
-	"ACMDM_FORMAT_SUGGEST", ACMDM_FORMAT_SUGGEST,
-	"ACMDM_STREAM_OPEN", ACMDM_STREAM_OPEN,
-	"ACMDM_STREAM_CLOSE", ACMDM_STREAM_CLOSE,
-	"ACMDM_STREAM_SIZE", ACMDM_STREAM_SIZE,
-	"ACMDM_STREAM_CONVERT", ACMDM_STREAM_CONVERT,
-	"ACMDM_STREAM_RESET", ACMDM_STREAM_RESET,
-	"ACMDM_STREAM_PREPARE", ACMDM_STREAM_PREPARE,
-	"ACMDM_STREAM_UNPREPARE", ACMDM_STREAM_UNPREPARE,
-	"ACMDM_STREAM_UPDATE", ACMDM_STREAM_UPDATE,
-};
-
-#include <stdio.h>
-
-static void Message(const char* fmt, ...)
-{
-#ifndef NDEBUG
-	FILE* f=fopen("c:\\msg.log", "ab");
-	va_list va;
-	va_start(va, fmt);
-	vfprintf(f, fmt, va);
-	va_end(va);
-	fclose(f);
-#endif
-}
-
-//codec c1;
-//codec c2;
-//int iCodecs=0;
-
-bool g_bAttached=false;
-std::list<codec*> g_codec_objects;
-
-BOOL APIENTRY DllMain( HANDLE hModule, 
-					  DWORD  ul_reason_for_call, 
-					  LPVOID lpReserved
-					  )
-{
-    Message("DllMain(%d)\n");
-    if(ul_reason_for_call==DLL_PROCESS_ATTACH)
-		g_bAttached=true;
-    if(ul_reason_for_call==DLL_PROCESS_DETACH)
-    {
-		for(std::list<codec*>::iterator it=g_codec_objects.begin();
-		it!=g_codec_objects.end();
-		it++)
-			delete *it;
-		g_bAttached=false;
-    }
-    return TRUE;
-}
-
-
-extern "C" LONG WINAPI DriverProc(DWORD dwDriverID, HDRVR hDriver, UINT uiMessage, LPARAM lParam1, LPARAM lParam2) 
-{
-    codec *cdx = (codec *)(UINT)dwDriverID;
-    ICOPEN *icinfo = (ICOPEN *)lParam2;
-	
-    if(g_bAttached==false) 
-		// it really happens!
-		// and since our heap may be already destroyed, we don't dare to do anything
-		return E_FAIL;
-	
-    for(int i=0; i<sizeof(g_types)/sizeof(g_types[0]); i++)
-    {
-		if(uiMessage==g_types[i].i)
-		{
-			Message("%x %s %x %x\n", dwDriverID, g_types[i].c, lParam1, lParam2);
-			goto cont;
-		}
-    }
-    Message("%x %x %x %x\n", dwDriverID, uiMessage, lParam1, lParam2);
-cont:
-    switch (uiMessage) 
-    {
-    /****************************************
-	
-	  standard driver messages
-	  
-	****************************************/
-		
-    case DRV_LOAD:
-		return (LRESULT)1L;
-		
-    case DRV_FREE:
-		return (LRESULT)1L;
-		
-    case DRV_OPEN:
-		if (icinfo && icinfo->fccType != ICTYPE_AUDIO) return NULL;
-		//	if(!iCodecs)
-		//	    cdx=&c1;
-		//	else
-		//	    cdx=&c2;
-		//	iCodecs++;
-		cdx = new codec;
-		g_codec_objects.push_back(cdx);
-		if (icinfo) icinfo->dwError = cdx ? ICERR_OK : ICERR_MEMORY;
-		Message(" ==> %x\n", cdx);
-		return (LRESULT)(DWORD)(UINT) cdx;
-		
-    case DRV_CLOSE:
-		g_codec_objects.remove(cdx);
-		delete cdx;
-		return (LRESULT)1L;
-		
-    case DRV_DISABLE:
-    case DRV_ENABLE:
-		return (LRESULT)1L;
-		
-    case DRV_INSTALL:
-    case DRV_REMOVE:
-		return (LRESULT)DRV_OK;
-		
-    case DRV_QUERYCONFIGURE:    
-		return (LRESULT)0L; // does support drive configure with the about box
-		
-    case DRV_CONFIGURE:
-		//	return cdx->about(lParam1,lParam2);
-		MessageBox(0, "Configure", "qqq", MB_OK);
-		return DRVCNF_OK;
-		
-    case ACMDM_DRIVER_DETAILS:
-		return cdx->details((ACMDRIVERDETAILSW*)lParam1);
-		
-    case ACMDM_DRIVER_ABOUT:
-		return cdx->about((DWORD)lParam1);
-		
-    case ACMDM_FORMATTAG_DETAILS:
-		return cdx->formattag_details((ACMFORMATTAGDETAILSW*)lParam1, (DWORD)lParam2);
-		
-    case ACMDM_FORMAT_DETAILS:
-		return cdx->format_details((ACMFORMATDETAILSW*)lParam1, (DWORD)lParam2);
-		
-    case ACMDM_FORMAT_SUGGEST:
-		return cdx->format_suggest((ACMDRVFORMATSUGGEST*)lParam1);
-		
-    case ACMDM_STREAM_OPEN:
-		return cdx->open((ACMDRVSTREAMINSTANCE*)lParam1);
-		
-    case ACMDM_STREAM_PREPARE:
-		return cdx->prepare((ACMDRVSTREAMINSTANCE*)lParam1, (ACMDRVSTREAMHEADER*) lParam2);
-		
-    case ACMDM_STREAM_RESET:
-		return cdx->reset((ACMDRVSTREAMINSTANCE*)lParam1);
-		
-    case ACMDM_STREAM_SIZE:
-		return cdx->size((ACMDRVSTREAMINSTANCE*)lParam1, (ACMDRVSTREAMSIZE*)lParam2);
-		
-    case ACMDM_STREAM_UNPREPARE:
-		return cdx->unprepare((ACMDRVSTREAMINSTANCE*)lParam1, (ACMDRVSTREAMHEADER*) lParam2);
-		
-    case ACMDM_STREAM_CONVERT:
-		return cdx->convert((ACMDRVSTREAMINSTANCE*)lParam1, (ACMDRVSTREAMHEADER*) lParam2);
-		
-    case ACMDM_STREAM_CLOSE:
-		return cdx->close((ACMDRVSTREAMINSTANCE*)lParam1);
-		
-    }
-	
-    if (uiMessage < DRV_USER)
-		return DefDriverProc(dwDriverID, hDriver, uiMessage, lParam1, lParam2);
-    else
-        return MMSYSERR_NOTSUPPORTED;
-}
--- a/plugins/aac_acm/aac_acm.def
+++ /dev/null
@@ -1,5 +1,0 @@
-LIBRARY      "aac_acm"
-DESCRIPTION  'Windows Dynamic Link Library'
-
-EXPORTS
-	DriverProc PRIVATE
--- a/plugins/aac_acm/aac_acm.dsp
+++ /dev/null
@@ -1,140 +1,0 @@
-# Microsoft Developer Studio Project File - Name="aac_acm" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
-
-CFG=aac_acm - 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 "aac_acm.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 "aac_acm.mak" CFG="aac_acm - Win32 Debug"
-!MESSAGE 
-!MESSAGE Possible choices for configuration are:
-!MESSAGE 
-!MESSAGE "aac_acm - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "aac_acm - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE 
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=xicl6.exe
-MTL=midl.exe
-RSC=rc.exe
-
-!IF  "$(CFG)" == "aac_acm - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
-# ADD CPP /nologo /W3 /GX /O2 /I "../../include" /I "../../../faad/include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
-# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
-# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
-# ADD BASE RSC /l 0x419 /d "NDEBUG"
-# ADD RSC /l 0x419 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=xilink6.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib vfw32.lib winmm.lib /nologo /subsystem:windows /dll /machine:I386 /libpath:"bin"
-
-!ELSEIF  "$(CFG)" == "aac_acm - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /GZ /c
-# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "../../include" /I "../../../faad/include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /FR /YX /FD /GZ /c
-# SUBTRACT CPP /FA<none>
-# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
-# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
-# ADD BASE RSC /l 0x419 /d "_DEBUG"
-# ADD RSC /l 0x419 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=xilink6.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib vfw32.lib winmm.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept /libpath:"bin"
-
-!ENDIF 
-
-# Begin Target
-
-# Name "aac_acm - Win32 Release"
-# Name "aac_acm - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=.\aac_acm.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\aac_acm.def
-# End Source File
-# Begin Source File
-
-SOURCE=.\codec.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\StdAfx.cpp
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# Begin Source File
-
-SOURCE=.\codec.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\include\faac.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\faad\include\faad.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\msacmdrv.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\StdAfx.h
-# End Source File
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-# End Group
-# End Target
-# End Project
--- a/plugins/aac_acm/aac_acm.dsw
+++ /dev/null
@@ -1,59 +1,0 @@
-Microsoft Developer Studio Workspace File, Format Version 6.00
-# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
-
-###############################################################################
-
-Project: "aac_acm"=.\aac_acm.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-    Begin Project Dependency
-    Project_Dep_Name libfaac
-    End Project Dependency
-    Begin Project Dependency
-    Project_Dep_Name libfaad
-    End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "libfaac"=..\..\libfaac\libfaac.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "libfaad"=..\..\..\faad\libfaad\libfaad.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Global:
-
-Package=<5>
-{{{
-}}}
-
-Package=<3>
-{{{
-}}}
-
-###############################################################################
-
--- a/plugins/aac_acm/aac_acm.inf
+++ /dev/null
@@ -1,80 +1,0 @@
-
-
-[Version]
-Signature = "$CHICAGO$"
-Class = MEDIA
-
-[SourceDisksNames]
-1="AAC Audio Codec Install Disk",, 0001
-
-[SourceDisksFiles]
-aac_acm.dll=1
-aac_acm.inf=1
-
-[Installable.Drivers]
-divxa32 = 1:aac_acm.dll, "msacm.aac" , "AAC Audio Codec" , , , 
-
-[DefaultInstall]
-CopyFiles=AAC.Copy,AAC.Copy.Inf
-Updateinis = AAC.Updateini
-addreg = AAC.AddReg9x
-MediaType = SOFTWARE
-
-[DefaultInstall.ntx86]
-CopyFiles=AAC.Copy,AAC.Copy.Inf
-addreg = AAC.AddRegNT
-MediaType = SOFTWARE
-
-[Remove_AAC]
-AddReg = AAC.Unregister
-DelFiles = AAC.Copy,AAC.Copy.Inf
-UpdateInis = AAC.DelIni
-
-[AAC.Copy]
-aac_acm.dll
-
-[AAC.Copy.Inf]
-aac_acm.inf
-
-[AAC.UpdateIni]
-system.ini, drivers32,,"msacm.aac=aac_acm.dll"
-
-[AAC.DelIni]
-system.ini, drivers32,"msacm.aac=aac_acm.dll"
-
-[AAC.AddReg9x]
-HKLM,SYSTEM\CurrentControlSet\Control\MediaResources\acm\msacm.aac,Description,,%AACAudio%
-HKLM,SYSTEM\CurrentControlSet\Control\MediaResources\acm\msacm.aac,Driver,,aac_acm.dll
-HKLM,SYSTEM\CurrentControlSet\Control\MediaResources\acm\msacm.aac,FriendlyName,,%AACAudio%
-
-HKLM,%UnInstallPath%,DisplayName,,%UninstallDispName%
-HKLM,%UnInstallPath%,UninstallString,,"%10%\rundll.exe setupx.dll,InstallHinfSection Remove_AAC 132 %17%\%InfFile%"
-
-[AAC.AddRegNT]
-HKLM,SOFTWARE\Microsoft\Windows NT\CurrentVersion\drivers.desc,aac_acm.dll,,%AACAudio%
-HKLM,SOFTWARE\Microsoft\Windows NT\CurrentVersion\drivers32,msacm.aac,,aac_acm.dll
-
-
-HKLM,%UnInstallPath%,DisplayName,,%UninstallDispName%
-HKLM,%UnInstallPath%,UninstallString,,"%11%\rundll32.exe setupapi,InstallHinfSection Remove_AAC 132 %17%\%InfFile%"
-
-[AAC.DelReg]
-HKLM,SYSTEM\CurrentControlSet\Control\MediaResources\acm\msacm.aac
-
-HKLM,SOFTWARE\Microsoft\Windows NT\CurrentVersion\drivers.desc,aac_acm.dll,,""
-HKLM,SOFTWARE\Microsoft\Windows NT\CurrentVersion\drivers32,msacm.aac,,""
-HKLM,%UnInstallPath%
-
-[DestinationDirs]
-DefaultDestDir = 11	; LDID_SYS
-AAC.Copy = 11
-AAC.Copy.Inf = 17
-
-[Strings]
-AACAudio="MPEG-2/4 AAC audio codec"
-InfFile="aac_acm.inf"
-UninstallDispName="MPEG-2/4 AAC audio codec"
-UnInstallPath="Software\Microsoft\Windows\CurrentVersion\Uninstall\AACCodec"
-MediaClassName="Media Devices"
-mfgname="No more money !"
-
--- a/plugins/aac_acm/aac_acm.sln
+++ /dev/null
@@ -1,35 +1,0 @@
-Microsoft Visual Studio Solution File, Format Version 7.00
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "aac_acm", "aac_acm.vcproj", "{D99ED960-4DEC-421E-87DE-EDA1D4A83832}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libfaac", "..\..\libfaac\libfaac.vcproj", "{D959B8AF-46D6-46D3-B839-AAB9F7AB5A56}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libfaad", "..\..\..\faad\libfaad\libfaad.vcproj", "{8855A63B-544C-4C2F-A254-1B824BE9D5FC}"
-EndProject
-Global
-	GlobalSection(SolutionConfiguration) = preSolution
-		ConfigName.0 = Debug
-		ConfigName.1 = Release
-	EndGlobalSection
-	GlobalSection(ProjectDependencies) = postSolution
-		{D99ED960-4DEC-421E-87DE-EDA1D4A83832}.0 = {8855A63B-544C-4C2F-A254-1B824BE9D5FC}
-		{D99ED960-4DEC-421E-87DE-EDA1D4A83832}.1 = {D959B8AF-46D6-46D3-B839-AAB9F7AB5A56}
-	EndGlobalSection
-	GlobalSection(ProjectConfiguration) = postSolution
-		{D99ED960-4DEC-421E-87DE-EDA1D4A83832}.Debug.ActiveCfg = Debug|Win32
-		{D99ED960-4DEC-421E-87DE-EDA1D4A83832}.Debug.Build.0 = Debug|Win32
-		{D99ED960-4DEC-421E-87DE-EDA1D4A83832}.Release.ActiveCfg = Release|Win32
-		{D99ED960-4DEC-421E-87DE-EDA1D4A83832}.Release.Build.0 = Release|Win32
-		{D959B8AF-46D6-46D3-B839-AAB9F7AB5A56}.Debug.ActiveCfg = Debug|Win32
-		{D959B8AF-46D6-46D3-B839-AAB9F7AB5A56}.Debug.Build.0 = Debug|Win32
-		{D959B8AF-46D6-46D3-B839-AAB9F7AB5A56}.Release.ActiveCfg = Release|Win32
-		{D959B8AF-46D6-46D3-B839-AAB9F7AB5A56}.Release.Build.0 = Release|Win32
-		{8855A63B-544C-4C2F-A254-1B824BE9D5FC}.Debug.ActiveCfg = Debug|Win32
-		{8855A63B-544C-4C2F-A254-1B824BE9D5FC}.Debug.Build.0 = Debug|Win32
-		{8855A63B-544C-4C2F-A254-1B824BE9D5FC}.Release.ActiveCfg = Release|Win32
-		{8855A63B-544C-4C2F-A254-1B824BE9D5FC}.Release.Build.0 = Release|Win32
-	EndGlobalSection
-	GlobalSection(ExtensibilityGlobals) = postSolution
-	EndGlobalSection
-	GlobalSection(ExtensibilityAddIns) = postSolution
-	EndGlobalSection
-EndGlobal
--- a/plugins/aac_acm/aac_acm.vcproj
+++ /dev/null
@@ -1,177 +1,0 @@
-<?xml version="1.0" encoding = "Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="7.00"
-	Name="aac_acm"
-	SccProjectName=""
-	SccLocalPath="">
-	<Platforms>
-		<Platform
-			Name="Win32"/>
-	</Platforms>
-	<Configurations>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory=".\Release"
-			IntermediateDirectory=".\Release"
-			ConfigurationType="2"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="FALSE">
-			<Tool
-				Name="VCCLCompilerTool"
-				InlineFunctionExpansion="1"
-				AdditionalIncludeDirectories="../../include,../../../faad/include"
-				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS"
-				StringPooling="TRUE"
-				RuntimeLibrary="4"
-				EnableFunctionLevelLinking="TRUE"
-				UsePrecompiledHeader="2"
-				PrecompiledHeaderFile=".\Release/aac_acm.pch"
-				AssemblerListingLocation=".\Release/"
-				ObjectFile=".\Release/"
-				ProgramDataBaseFileName=".\Release/"
-				WarningLevel="3"
-				SuppressStartupBanner="TRUE"
-				CompileAs="0"/>
-			<Tool
-				Name="VCCustomBuildTool"/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalOptions="/MACHINE:I386"
-				AdditionalDependencies="odbc32.lib odbccp32.lib vfw32.lib winmm.lib"
-				OutputFile=".\Release/aac_acm.dll"
-				LinkIncremental="1"
-				SuppressStartupBanner="TRUE"
-				AdditionalLibraryDirectories="bin"
-				ModuleDefinitionFile=".\aac_acm.def"
-				ProgramDatabaseFile=".\Release/aac_acm.pdb"
-				SubSystem="2"
-				ImportLibrary=".\Release/aac_acm.lib"/>
-			<Tool
-				Name="VCMIDLTool"
-				PreprocessorDefinitions="NDEBUG"
-				MkTypLibCompatible="TRUE"
-				SuppressStartupBanner="TRUE"
-				TargetEnvironment="1"
-				TypeLibraryName=".\Release/aac_acm.tlb"/>
-			<Tool
-				Name="VCPostBuildEventTool"/>
-			<Tool
-				Name="VCPreBuildEventTool"/>
-			<Tool
-				Name="VCPreLinkEventTool"/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				PreprocessorDefinitions="NDEBUG"
-				Culture="1049"/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"/>
-			<Tool
-				Name="VCWebDeploymentTool"/>
-		</Configuration>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory=".\Debug"
-			IntermediateDirectory=".\Debug"
-			ConfigurationType="2"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="FALSE">
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="../../include,../../../faad/include"
-				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="2"
-				PrecompiledHeaderFile=".\Debug/aac_acm.pch"
-				AssemblerListingLocation=".\Debug/"
-				ObjectFile=".\Debug/"
-				ProgramDataBaseFileName=".\Debug/"
-				BrowseInformation="1"
-				WarningLevel="3"
-				SuppressStartupBanner="TRUE"
-				DebugInformationFormat="4"
-				CompileAs="0"/>
-			<Tool
-				Name="VCCustomBuildTool"/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalOptions="/MACHINE:I386"
-				AdditionalDependencies="odbc32.lib odbccp32.lib vfw32.lib winmm.lib"
-				OutputFile=".\Debug/aac_acm.dll"
-				LinkIncremental="2"
-				SuppressStartupBanner="TRUE"
-				AdditionalLibraryDirectories="bin"
-				ModuleDefinitionFile=".\aac_acm.def"
-				GenerateDebugInformation="TRUE"
-				ProgramDatabaseFile=".\Debug/aac_acm.pdb"
-				SubSystem="2"
-				ImportLibrary=".\Debug/aac_acm.lib"/>
-			<Tool
-				Name="VCMIDLTool"
-				PreprocessorDefinitions="_DEBUG"
-				MkTypLibCompatible="TRUE"
-				SuppressStartupBanner="TRUE"
-				TargetEnvironment="1"
-				TypeLibraryName=".\Debug/aac_acm.tlb"/>
-			<Tool
-				Name="VCPostBuildEventTool"/>
-			<Tool
-				Name="VCPreBuildEventTool"/>
-			<Tool
-				Name="VCPreLinkEventTool"/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				PreprocessorDefinitions="_DEBUG"
-				Culture="1049"/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"/>
-			<Tool
-				Name="VCWebDeploymentTool"/>
-		</Configuration>
-	</Configurations>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat">
-			<File
-				RelativePath=".\StdAfx.cpp">
-			</File>
-			<File
-				RelativePath=".\aac_acm.cpp">
-			</File>
-			<File
-				RelativePath=".\aac_acm.def">
-			</File>
-			<File
-				RelativePath=".\codec.cpp">
-			</File>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl">
-			<File
-				RelativePath=".\StdAfx.h">
-			</File>
-			<File
-				RelativePath=".\codec.h">
-			</File>
-			<File
-				RelativePath="..\..\include\faac.h">
-			</File>
-			<File
-				RelativePath="..\..\..\faad\include\faad.h">
-			</File>
-			<File
-				RelativePath=".\msacmdrv.h">
-			</File>
-		</Filter>
-		<Filter
-			Name="Resource Files"
-			Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe">
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
--- a/plugins/aac_acm/codec.cpp
+++ /dev/null
@@ -1,669 +1,0 @@
-#include "codec.h"
-#include <assert.h>
-
-// we must register these by emailing to mmreg@microsoft.com
-const int codec::m_iCompressedFormatTag = 0x1234;
-const int codec::m_iManufacturerID = MM_GADGETLABS;
-const int codec::m_iProductID = 7;
-
-const wchar_t g_sCodecName[]=L"MPEG-2/4 AAC audio codec";
-const wchar_t g_sLongCodecName[]=L"Very special audio codec";
-const wchar_t g_sFormatName[]=L"MPEG-2/4 AAC";
-
-codec::codec()
-{
-}
-
-codec::~codec()
-{
-}
-
-HRESULT codec::formattag_details(ACMFORMATTAGDETAILSW* lParam1, DWORD lParam2)
-{
-    bool bCompressedFormat;
-    switch(lParam2)
-    {
-    case ACM_FORMATTAGDETAILSF_INDEX:
-		if(lParam1->dwFormatTagIndex>=2)
-			return ACMERR_NOTPOSSIBLE;
-		bCompressedFormat=(lParam1->dwFormatTagIndex==1);
-		break;
-    case ACM_FORMATTAGDETAILSF_FORMATTAG:
-		if(lParam1->dwFormatTag==1)
-			bCompressedFormat=false;
-		else if(lParam1->dwFormatTag==m_iCompressedFormatTag)
-			bCompressedFormat=true;
-		else
-			return ACMERR_NOTPOSSIBLE;
-    case ACM_FORMATTAGDETAILSF_LARGESTSIZE:
-		bCompressedFormat=true;
-		break;
-    default:
-		return ACMERR_NOTPOSSIBLE;
-    }
-    lParam1->cbStruct=sizeof(ACMFORMATTAGDETAILSW);    
-    lParam1->cbFormatSize=bCompressedFormat ? 20 : 16;    
-    lParam1->fdwSupport=ACMDRIVERDETAILS_SUPPORTF_CODEC;
-    if(bCompressedFormat)
-		lParam1->cStandardFormats=8; // 44 & 48 khz 16 bit, mono & stereo, 64 & 128 kbps
-    else
-		lParam1->cStandardFormats=8; // 44 & 48 khz 8 & 16 bit, mono & stereo
-    if(bCompressedFormat)
-    {
-		wcscpy(lParam1->szFormatTag, g_sFormatName);
-		lParam1->dwFormatTag=m_iCompressedFormatTag;
-    }
-    else
-    {
-		wcscpy(lParam1->szFormatTag, L"PCM");
-		lParam1->dwFormatTag=1;
-    }
-    return MMSYSERR_NOERROR;
-}
-
-void codec::fill_pcm_format(WAVEFORMATEX* pwfx, int rate, int bits, int channels)
-{
-    pwfx->wFormatTag=1;
-    pwfx->nSamplesPerSec=rate;
-    pwfx->wBitsPerSample=bits;
-    pwfx->nChannels=channels;
-    pwfx->nAvgBytesPerSec=rate * bits * channels / 8;
-    pwfx->nBlockAlign=channels * bits / 8;
-    pwfx->cbSize=0;
-}
-
-#define MAIN 0
-#define LOW  1
-#define SSR  2
-#define LTP  3
-
-static unsigned int aacSamplingRates[16] = {
-    96000, 88200, 64000, 48000, 44100, 32000, 24000, 22050,
-		16000, 12000, 11025, 8000, 7350, 0, 0, 0
-};
-
-void codec::fill_compressed_format(WAVEFORMATEX* pwfx, int rate, int bits, int channels, int bitrate)
-{
-    pwfx->wFormatTag=m_iCompressedFormatTag;
-    pwfx->nSamplesPerSec=rate;
-    pwfx->wBitsPerSample=bits;
-    pwfx->nChannels=channels;
-    pwfx->nAvgBytesPerSec=bitrate / 8;
-    pwfx->nBlockAlign=1024;
-    pwfx->cbSize=2;
-	
-    unsigned char* ext=(unsigned char*)(&pwfx[1]);
-    int profile = MAIN;
-    int samplerate_index=-1;
-    for(int i=0; i<16; i++)
-		if(aacSamplingRates[i]==rate)
-		{
-			samplerate_index=i;
-			break;
-		}
-		if(samplerate_index<0)
-			return;
-		ext[0] = ((profile + 1) << 3) | ((samplerate_index & 0xe) >> 1);
-		ext[1] = ((samplerate_index & 0x1) << 7) | (channels << 3);
-		// 960 byte frames not used
-}
-
-HRESULT codec::format_details(ACMFORMATDETAILSW* lParam1, DWORD lParam2)
-{
-    lParam1->cbStruct=sizeof(ACMFORMATDETAILSW);
-    lParam1->szFormat[0]=0;
-    lParam1->fdwSupport=ACMDRIVERDETAILS_SUPPORTF_CODEC;
-	
-    if(lParam1->dwFormatTag==1)
-    {
-		if(lParam2==ACM_FORMATDETAILSF_INDEX)
-		{
-			switch(lParam1->dwFormatIndex)
-			{
-			case 0:
-				fill_pcm_format(lParam1->pwfx, 44100, 16, 1);
-				break;
-			case 1:
-				fill_pcm_format(lParam1->pwfx, 44100, 16, 2);
-				break;
-			case 2:
-				fill_pcm_format(lParam1->pwfx, 44100, 8, 1);
-				break;
-			case 3:
-				fill_pcm_format(lParam1->pwfx, 44100, 8, 2);
-				break;
-			case 4:
-				fill_pcm_format(lParam1->pwfx, 48000, 16, 1);
-				break;
-			case 5:
-				fill_pcm_format(lParam1->pwfx, 48000, 16, 2);
-				break;
-			case 6:
-				fill_pcm_format(lParam1->pwfx, 48000, 8, 1);
-				break;
-			case 7:
-				fill_pcm_format(lParam1->pwfx, 48000, 8, 2);
-				break;
-			default:
-				return ACMERR_NOTPOSSIBLE;
-			}
-		}   
-		else if(lParam2==ACM_FORMATDETAILSF_FORMAT)
-		{
-			if((lParam1->pwfx->nSamplesPerSec != 44100) && (lParam1->pwfx->nSamplesPerSec != 48000))
-				return ACMERR_NOTPOSSIBLE;
-		}
-		else
-			return ACMERR_NOTPOSSIBLE;
-    }
-    else if(lParam1->dwFormatTag==m_iCompressedFormatTag)
-    {
-		if(lParam2==ACM_FORMATDETAILSF_INDEX)
-		{
-			switch(lParam1->dwFormatIndex)
-			{
-			case 0:
-				fill_compressed_format(lParam1->pwfx, 44100, 16, 1, 128000);
-				break;
-			case 1:
-				fill_compressed_format(lParam1->pwfx, 44100, 16, 2, 128000);
-				break;
-			case 2:
-				fill_compressed_format(lParam1->pwfx, 44100, 16, 1, 64000);
-				break;
-			case 3:
-				fill_compressed_format(lParam1->pwfx, 44100, 16, 2, 64000);
-				break;
-			case 4:
-				fill_compressed_format(lParam1->pwfx, 48000, 16, 1, 128000);
-				break;
-			case 5:
-				fill_compressed_format(lParam1->pwfx, 48000, 16, 2, 128000);
-				break;
-			case 6:
-				fill_compressed_format(lParam1->pwfx, 48000, 16, 1, 64000);
-				break;
-			case 7:
-				fill_compressed_format(lParam1->pwfx, 48000, 16, 2, 64000);
-				break;
-			default:
-				return ACMERR_NOTPOSSIBLE;
-			}
-		}
-		else if(lParam2==ACM_FORMATDETAILSF_FORMAT)
-		{
-			if((lParam1->pwfx->nSamplesPerSec != 44100) && (lParam1->pwfx->nSamplesPerSec != 48000))
-				return ACMERR_NOTPOSSIBLE;
-		}
-		else
-			return ACMERR_NOTPOSSIBLE;
-    }
-    else
-		return ACMERR_NOTPOSSIBLE;
-    return MMSYSERR_NOERROR;
-}
-
-HRESULT codec::format_suggest(ACMDRVFORMATSUGGEST* pFormat)
-{
-    bool bEncode;
-    if(pFormat->fdwSuggest & ACM_FORMATSUGGESTF_WFORMATTAG)
-    {
-		if((pFormat->pwfxDst->wFormatTag == 1) && (pFormat->pwfxSrc->wFormatTag == m_iCompressedFormatTag))
-			bEncode=false;
-		else
-			if((pFormat->pwfxDst->wFormatTag == m_iCompressedFormatTag) && (pFormat->pwfxSrc->wFormatTag == 1))
-				bEncode=true;
-			else
-				return ACMERR_NOTPOSSIBLE;
-    }
-    else
-    {
-		if(pFormat->pwfxSrc->wFormatTag == m_iCompressedFormatTag)
-		{
-			pFormat->pwfxDst->wFormatTag=1; 
-			bEncode=false;
-		}
-		else
-			if(pFormat->pwfxSrc->wFormatTag == 1)
-			{
-				pFormat->pwfxDst->wFormatTag=m_iCompressedFormatTag; 
-				bEncode=true;
-			}
-			else
-				return ACMERR_NOTPOSSIBLE;
-    }
-    if(pFormat->fdwSuggest & ACM_FORMATSUGGESTF_NCHANNELS)
-    {
-		if(pFormat->pwfxDst->nChannels != pFormat->pwfxSrc->nChannels)
-			return ACMERR_NOTPOSSIBLE;
-    }
-    int iChannels = pFormat->pwfxSrc->nChannels;
-    if(pFormat->fdwSuggest & ACM_FORMATSUGGESTF_NSAMPLESPERSEC)
-    {
-		if(pFormat->pwfxDst->nSamplesPerSec != pFormat->pwfxSrc->nSamplesPerSec)
-			return ACMERR_NOTPOSSIBLE;
-    }
-    int iSamplesPerSec = pFormat->pwfxSrc->nSamplesPerSec;
-	
-    if(pFormat->fdwSuggest & ACM_FORMATSUGGESTF_WBITSPERSAMPLE)
-    {
-		if(pFormat->pwfxDst->wBitsPerSample != pFormat->pwfxSrc->wBitsPerSample)
-			return ACMERR_NOTPOSSIBLE;
-    }
-    int iBitsPerSample = pFormat->pwfxSrc->wBitsPerSample;
-	
-    if(bEncode)
-		fill_compressed_format(pFormat->pwfxDst, iSamplesPerSec, iBitsPerSample, iChannels, 128000);
-    else
-		fill_pcm_format(pFormat->pwfxDst, iSamplesPerSec, iBitsPerSample, iChannels);
-	
-    return MMSYSERR_NOERROR;
-}
-
-HRESULT codec::details(ACMDRIVERDETAILSW* pDetails)
-{
-    memset(pDetails, 0, sizeof(ACMDRIVERDETAILSW));
-    pDetails->cbStruct=sizeof(ACMDRIVERDETAILSW);
-    pDetails->fccType=ACMDRIVERDETAILS_FCCTYPE_AUDIOCODEC;
-    pDetails->fccComp=ACMDRIVERDETAILS_FCCCOMP_UNDEFINED;
-    pDetails->wMid=m_iManufacturerID;
-    pDetails->wPid=m_iProductID;
-    pDetails->vdwACM=0x3320000;
-    pDetails->vdwDriver=0x1000000;
-    pDetails->fdwSupport=ACMDRIVERDETAILS_SUPPORTF_CODEC;
-    pDetails->cFormatTags=2;
-    pDetails->cFilterTags=0;
-    wcscpy(pDetails->szShortName, g_sCodecName);
-    wcscpy(pDetails->szLongName, g_sLongCodecName);
-    return MMSYSERR_NOERROR;
-}
-
-HRESULT codec::about(DWORD h)
-{
-    if(h==(DWORD)-1)
-		return MMSYSERR_NOERROR;
-    MessageBoxW((HWND)h, g_sLongCodecName, L"About", MB_OK);
-    return MMSYSERR_NOERROR;
-}
-
-HRESULT codec::open(ACMDRVSTREAMINSTANCE* pStream)
-{
-    if(pStream->pwfxDst->nChannels != pStream->pwfxSrc->nChannels)
-		return ACMERR_NOTPOSSIBLE;
-    if(pStream->pwfxDst->nSamplesPerSec != pStream->pwfxSrc->nSamplesPerSec)
-		return ACMERR_NOTPOSSIBLE;
-    bool bDecode = (pStream->pwfxDst->wFormatTag == 1);
-    if(bDecode)
-    {
-		if(pStream->pwfxDst->wBitsPerSample!=16)
-			return ACMERR_NOTPOSSIBLE;
-		if(pStream->pwfxSrc->wFormatTag!=m_iCompressedFormatTag)
-			return ACMERR_NOTPOSSIBLE;
-    }
-    else
-    {
-		//	if(pStream->pwfxSrc->wBitsPerSample!=16)
-		//	    return ACMERR_NOTPOSSIBLE;
-		if(pStream->pwfxDst->wFormatTag!=m_iCompressedFormatTag)
-			return ACMERR_NOTPOSSIBLE;
-		if(pStream->pwfxSrc->wFormatTag!=1)
-			return ACMERR_NOTPOSSIBLE;
-    }
-	
-    if(pStream->fdwOpen & ACM_STREAMOPENF_QUERY)
-		return MMSYSERR_NOERROR;
-	
-    if(bDecode)
-		pStream->dwDriver=(DWORD)new decoder(pStream->pwfxSrc);
-    else
-		pStream->dwDriver=(DWORD)new encoder(pStream->pwfxSrc, pStream->pwfxDst);
-    return MMSYSERR_NOERROR;
-}
-
-HRESULT codec::prepare(ACMDRVSTREAMINSTANCE* pStream, ACMDRVSTREAMHEADER* pHeader)
-{
-    return MMSYSERR_NOTSUPPORTED;
-}
-
-HRESULT codec::reset(ACMDRVSTREAMINSTANCE* pStream)
-{
-    stream* pstr=(stream*)pStream->dwDriver;
-    return pstr->reset();
-}
-
-HRESULT codec::size(ACMDRVSTREAMINSTANCE* pStream, ACMDRVSTREAMSIZE* pSize)
-{
-    stream* pstr=(stream*)pStream->dwDriver;
-    return pstr->size(pSize);
-}
-
-HRESULT codec::unprepare(ACMDRVSTREAMINSTANCE* pStream, ACMDRVSTREAMHEADER* pHeader)
-{
-    return MMSYSERR_NOTSUPPORTED;
-}
-
-HRESULT codec::convert(ACMDRVSTREAMINSTANCE* pStream, ACMDRVSTREAMHEADER* pHeader)
-{
-    stream* pstr=(stream*)pStream->dwDriver;
-    return pstr->convert(pHeader);
-}
-
-HRESULT codec::close(ACMDRVSTREAMINSTANCE* pStream)
-{
-    stream* pstr=(stream*)pStream->dwDriver;
-    delete pstr;
-    return MMSYSERR_NOERROR;
-}
-
-#include "faac.h"
-
-codec::encoder::encoder(WAVEFORMATEX* pF, WAVEFORMATEX* pFDest) : m_sFormat(*pF)
-{
-    m_iOutputBytesPerSec=pFDest->nAvgBytesPerSec; 
-	
-    m_pHandle=faacEncOpen(pF->nSamplesPerSec, pF->nChannels, &m_iInputSamples, &m_iMaxOutputBytes);
-	
-    faacEncConfiguration conf;
-    conf.mpegVersion = MPEG4;
-    conf.aacObjectType = MAIN;
-    conf.allowMidside = 1;
-    conf.useLfe = 1;
-    conf.useTns = 1;
-    conf.bitRate = m_iOutputBytesPerSec/pFDest->nChannels; // bits/second per channel
-    conf.bandWidth = 18000; //Hz
-    conf.outputFormat = 1; // ADTS
-    faacEncSetConfiguration(m_pHandle, &conf);    
-}
-
-HRESULT codec::encoder::reset()
-{
-    // fixme (?)
-    return MMSYSERR_NOERROR;
-}
-
-HRESULT codec::encoder::size(ACMDRVSTREAMSIZE* pSize)
-{
-    double dwInputBitRate=m_sFormat.nSamplesPerSec * m_sFormat.wBitsPerSample * m_sFormat.nChannels;
-    double dwOutputBitRate=m_iOutputBytesPerSec;// kbytes/s    
-	
-    if(pSize->fdwSize == ACM_STREAMSIZEF_SOURCE)
-    {
-		if(pSize->cbSrcLength<2*m_iInputSamples)
-			pSize->cbSrcLength=2*m_iInputSamples;
-		pSize->cbDstLength = pSize->cbSrcLength * 2 * dwOutputBitRate/dwInputBitRate;
-		if(pSize->cbDstLength<m_iMaxOutputBytes)
-			pSize->cbDstLength=m_iMaxOutputBytes;
-		
-    }
-    else
-    {
-		if(pSize->cbDstLength<m_iMaxOutputBytes)
-			pSize->cbDstLength=m_iMaxOutputBytes;
-		pSize->cbSrcLength = pSize->cbDstLength * 2 * dwInputBitRate/dwOutputBitRate;;
-		if(pSize->cbSrcLength<2*m_iInputSamples)
-			pSize->cbSrcLength=2*m_iInputSamples;
-    }
-    
-    return MMSYSERR_NOERROR;
-}
-
-#include <stdio.h>
-
-HRESULT codec::encoder::convert(ACMDRVSTREAMHEADER* pHeader)
-{
-#if 0
-    short* pSrc, *pDst;
-    pSrc=(short*)(pHeader->pbSrc);
-    pDst=(short*)(pHeader->pbDst);
-    int iSrc=0, iDst=0;
-    int block_size=m_sFormat.nChannels * 64;
-    int samples_to_process=pHeader->cbSrcLength / (2 * block_size);
-	
-    for(int j=0; j<samples_to_process; j++)
-    {
-		if(m_sFormat.nChannels==1)
-		{
-			pDst[0]=pSrc[0];
-			for(int i=1; i<64; i++)
-				pDst[i]=(int)pSrc[i]-(int)pSrc[i-1];
-			pSrc+=block_size;
-			pDst+=block_size;
-		}
-		else
-		{
-			pDst[0]=pSrc[0];
-			pDst[1]=pSrc[1];
-			for(int i=1; i<64; i++)
-			{
-				pDst[2*i]=(int)pSrc[2*i]-(int)pSrc[2*i-2];
-				pDst[2*i+1]=(int)pSrc[2*i+1]-(int)pSrc[2*i-1];
-			}
-			pSrc+=block_size;
-			pDst+=block_size;
-		}
-    }
-    FILE* f=fopen("c:\\enc.log", "ab");
-    fwrite(pHeader->pbSrc, 2 * block_size * samples_to_process, 1, f);
-    fclose(f);
-    f=fopen("c:\\enc2.log", "ab");
-    fwrite(pHeader->pbDst, 2 * block_size * samples_to_process, 1, f);
-    fclose(f);
-    pHeader->cbDstLengthUsed=2 * block_size * samples_to_process;
-    pHeader->cbSrcLengthUsed=2 * block_size * samples_to_process;
-    return MMSYSERR_NOERROR;
-#else
-    short* buffer=0;
-    int length=pHeader->cbSrcLength;
-    if(m_sFormat.wBitsPerSample!=16)
-    {
-		buffer = new short[length];
-		for(int i=0; i<length; i++)
-		{
-			short s=(short)(((unsigned char*)pHeader->pbSrc)[i]);
-			s-=128;
-			s*=256;
-			buffer[i]=s;
-		}
-    }
-    short* pointer = buffer ? buffer : (short*)(pHeader->pbSrc);
-    pHeader->cbSrcLengthUsed=0;
-    pHeader->cbDstLengthUsed=0;
-    while(1)
-    {
-		if(length-pHeader->cbSrcLengthUsed<2*m_iInputSamples)
-			break;
-		if(pHeader->cbDstLength-pHeader->cbDstLengthUsed<m_iMaxOutputBytes)
-			break;
-		int result=faacEncEncode(m_pHandle, pointer+pHeader->cbSrcLengthUsed,
-			m_iInputSamples, 
-			(short*)(pHeader->pbDst+pHeader->cbDstLengthUsed),
-			pHeader->cbDstLength-pHeader->cbDstLengthUsed);
-		if(result<0)
-		{
-			reset();
-			break;
-		}
-        pHeader->cbDstLengthUsed+=result;
-        pHeader->cbSrcLengthUsed+=2*m_iInputSamples;
-    }    
-    if(buffer)
-    {
-		pHeader->cbSrcLengthUsed/=2;
-		delete[] buffer;
-    }
-    return MMSYSERR_NOERROR;
-#endif
-}
-
-codec::decoder::decoder(WAVEFORMATEX* pF) : m_sFormat(*pF), m_bInitialized(false), m_pCache(0)
-{
-    m_pHandle=faacDecOpen();
-}
-
-HRESULT codec::decoder::reset()
-{
-    faacDecClose(m_pHandle);
-    m_pHandle=faacDecOpen();
-    m_bInitialized=false;
-    delete[] m_pCache;
-    m_pCache=0;
-    return MMSYSERR_NOERROR;
-}
-
-HRESULT codec::decoder::size(ACMDRVSTREAMSIZE* pSize)
-{
-    double dwInputBitRate=m_sFormat.nAvgBytesPerSec;
-    double dwOutputBitRate=m_sFormat.nSamplesPerSec * m_sFormat.wBitsPerSample * m_sFormat.nChannels;
-	
-    if(pSize->fdwSize == ACM_STREAMSIZEF_SOURCE)
-    {
-		if(pSize->cbSrcLength<768*m_sFormat.nChannels)
-			pSize->cbSrcLength=768*m_sFormat.nChannels;
-		pSize->cbDstLength = pSize->cbSrcLength * 2 * dwOutputBitRate/dwInputBitRate;
-		if(pSize->cbDstLength<4096)
-			pSize->cbDstLength=4096;
-    }
-    else
-    {
-		if(pSize->cbDstLength<4096)
-			pSize->cbDstLength=4096;
-		pSize->cbSrcLength = pSize->cbDstLength * 2 * dwInputBitRate/dwOutputBitRate;;
-		if(pSize->cbSrcLength<768*m_sFormat.nChannels)
-			pSize->cbSrcLength=768*m_sFormat.nChannels;
-    }
-    
-    return MMSYSERR_NOERROR;
-}
-
-//static int iBytesProcessed=0;
-HRESULT codec::decoder::convert(ACMDRVSTREAMHEADER* pHeader)
-{
-#if 0
-    short *pSrc, *pDst;
-    pSrc=(short*)pHeader->pbSrc;
-    pDst=(short*)pHeader->pbDst;
-    int iSrc=0, iDst=0;
-    int block_size=m_sFormat.nChannels * 64;
-    int samples_to_process=pHeader->cbSrcLength / (2 * block_size);
-    for(int j=0; j<samples_to_process; j++)
-    {
-		if(m_sFormat.nChannels==1)
-		{
-			pDst[0]=pSrc[0];
-			for(int i=1; i<64; i++)
-				pDst[i]=(int)pSrc[i]+(int)pDst[i-1];
-			pSrc+=block_size;
-			pDst+=block_size;
-		}
-		else
-		{
-			pDst[0]=pSrc[0];
-			pDst[1]=pSrc[1];
-			for(int i=1; i<64; i++)
-			{
-				pDst[2*i]=(int)pSrc[2*i]+(int)pDst[2*i-2];
-				pDst[2*i+1]=(int)pSrc[2*i+1]+(int)pDst[2*i-1];
-			}
-			pSrc+=block_size;
-			pDst+=block_size;
-		}
-    }
-    FILE* f=fopen("c:\\dec.log", "ab");
-    fwrite(pHeader->pbDst, 2 * block_size * samples_to_process, 1, f);
-    fclose(f);
-    pHeader->cbDstLengthUsed=2 * block_size * samples_to_process;
-    pHeader->cbSrcLengthUsed=2 * block_size * samples_to_process;
-    return MMSYSERR_NOERROR;
-#else
-    // fixme: check fdwConvert contents
-	
-    const int iMinInputSize = 768*m_sFormat.nChannels;
-    pHeader->cbSrcLengthUsed=0;
-    pHeader->cbDstLengthUsed=0;
-    int decoded_bytes=0;
-    if(!m_bInitialized)
-    {
-		unsigned long samplerate;
-		unsigned long channels;
-		//assert(!m_pCache);
-		// we don't really need this call
-		// and it is done only because i am not sure if it's necessary for faac functionality
-		pHeader->cbSrcLengthUsed=faacDecInit(m_pHandle, pHeader->pbSrc, &samplerate, &channels);
-		m_bInitialized=true;
-    }
-    unsigned long bytesconsumed;
-    unsigned long samples;    
-    if(pHeader->cbDstLength<4096)
-		goto finish;
-
-    int iSrcDataLeft=pHeader->cbSrcLength;
-	
-    while(m_pCache)
-    {
-		int iFillSize = iMinInputSize - m_iCacheSize;
-		if(iFillSize > iSrcDataLeft)
-			iFillSize = iSrcDataLeft;
-		memcpy(&m_pCache[m_iCacheSize], pHeader->pbSrc+pHeader->cbSrcLengthUsed, iFillSize);
-		m_iCacheSize += iFillSize;
-		iSrcDataLeft -= iFillSize;
-		pHeader->cbSrcLengthUsed += iFillSize;
-		if(m_iCacheSize < iMinInputSize)
-			goto finish;
-		int result=faacDecDecode(m_pHandle, m_pCache, &bytesconsumed, 
-			(short*)(pHeader->pbDst+pHeader->cbDstLengthUsed), &samples); // no way to prevent output buffer overrun???
-		if(result==FAAD_FATAL_ERROR)
-		{
-			reset();
-			goto finish;
-		}
-		if(result==FAAD_OK)
-			pHeader->cbDstLengthUsed+=sizeof(short)*samples;
-		assert(bytesconsumed <= iMinInputSize);
-		if(bytesconsumed < iMinInputSize)
-			memmove(m_pCache, &m_pCache[bytesconsumed], iMinInputSize-bytesconsumed);
-		m_iCacheSize-=bytesconsumed;
-		if(m_iCacheSize==0)
-		{
-			delete[] m_pCache;
-			m_pCache=0;
-		}
-    }
-
-    if(iSrcDataLeft == 0)
-		goto finish;
-	
-    if(iSrcDataLeft < iMinInputSize)
-    {
-		m_pCache = new unsigned char[iMinInputSize];
-		memcpy(m_pCache, pHeader->pbSrc + pHeader->cbSrcLengthUsed, iSrcDataLeft);
-		m_iCacheSize = iSrcDataLeft;
-		pHeader->cbSrcLengthUsed = pHeader->cbSrcLength;
-		goto finish;
-    }
-    
-    while(iSrcDataLeft>=iMinInputSize)
-    {
-		if(pHeader->cbDstLength-pHeader->cbDstLengthUsed<4096)
-			break;
-		int result=faacDecDecode(m_pHandle, pHeader->pbSrc+pHeader->cbSrcLengthUsed, &bytesconsumed, 
-			(short*)(pHeader->pbDst+pHeader->cbDstLengthUsed), &samples); // no way to prevent output buffer overrun???
-		if(result==FAAD_FATAL_ERROR)
-		{
-			pHeader->cbSrcLengthUsed=pHeader->cbSrcLength;
-			reset();
-			goto finish;
-		}
-		if(result==FAAD_OK)
-			pHeader->cbDstLengthUsed+=sizeof(short)*samples;
-        pHeader->cbSrcLengthUsed+=bytesconsumed;
-		iSrcDataLeft-=bytesconsumed;
-    }    
-finish:
-    FILE* f=fopen("c:\\aac_acm.bin", "ab");
-    fwrite(pHeader->pbSrc, pHeader->cbSrcLengthUsed, 1, f);
-    fclose(f);
-	//    iBytesProcessed+=pHeader->cbSrcLengthUsed;
-    return MMSYSERR_NOERROR;
-#endif
-}
-
--- a/plugins/aac_acm/codec.h
+++ /dev/null
@@ -1,71 +1,0 @@
-#ifndef _CODEC_H
-#define _CODEC_H
-
-#include "msacmdrv.h"
-#include "faac.h"
-#include "faad.h"
-class codec
-{
-    static const int m_iCompressedFormatTag;
-    static const int m_iManufacturerID;
-    static const int m_iProductID;
-	
-    static void fill_pcm_format(WAVEFORMATEX* pwfx, int rate, int bits, int channels);
-    static void fill_compressed_format(WAVEFORMATEX* pwfx, int rate, int bits, int channels, int bitrate);
-    int something;
-    class stream
-    {
-    public:
-		virtual ~stream() {}
-		virtual HRESULT reset() =0;
-		virtual HRESULT size(ACMDRVSTREAMSIZE*) =0;
-		virtual HRESULT convert(ACMDRVSTREAMHEADER*) =0;
-    };
-    class encoder: public stream
-    {
-		WAVEFORMATEX m_sFormat;
-		unsigned long m_iInputSamples;
-		unsigned long m_iMaxOutputBytes;
-		unsigned long m_iOutputBytesPerSec;
-		faacEncHandle m_pHandle;
-    public:
-		encoder(WAVEFORMATEX* pF, WAVEFORMATEX* pFDest);
-		~encoder() {}
-		virtual HRESULT reset();
-		virtual HRESULT size(ACMDRVSTREAMSIZE*);
-		virtual HRESULT convert(ACMDRVSTREAMHEADER*);
-    };
-    class decoder: public stream
-    {
-		WAVEFORMATEX m_sFormat;
-		faacDecHandle m_pHandle;
-		bool m_bInitialized;
-		unsigned char* m_pCache;
-		int m_iCacheSize;
-    public:
-		decoder(WAVEFORMATEX* pF);
-		~decoder() { delete[] m_pCache; }
-		virtual HRESULT reset();
-		virtual HRESULT size(ACMDRVSTREAMSIZE*);
-		virtual HRESULT convert(ACMDRVSTREAMHEADER*);
-    };
-	public:
-		codec();
-		~codec();
-		HRESULT formattag_details(ACMFORMATTAGDETAILSW* lParam1, DWORD lParam2);
-		HRESULT format_details(ACMFORMATDETAILSW* lParam1, DWORD lParam2);
-		HRESULT format_suggest(ACMDRVFORMATSUGGEST*);
-		HRESULT details(ACMDRIVERDETAILSW*);
-		HRESULT about(DWORD);
-		HRESULT open(ACMDRVSTREAMINSTANCE*);
-		HRESULT prepare(ACMDRVSTREAMINSTANCE*, ACMDRVSTREAMHEADER*);
-		HRESULT reset(ACMDRVSTREAMINSTANCE*);
-		HRESULT size(ACMDRVSTREAMINSTANCE*, ACMDRVSTREAMSIZE*);
-		HRESULT unprepare(ACMDRVSTREAMINSTANCE*, ACMDRVSTREAMHEADER*);
-		HRESULT convert(ACMDRVSTREAMINSTANCE*, ACMDRVSTREAMHEADER*);
-		HRESULT close(ACMDRVSTREAMINSTANCE*);
-};
-
-#endif
-
-
--- a/plugins/aac_acm/msacmdrv.h
+++ /dev/null
@@ -1,178 +1,0 @@
-#ifndef _MSACMDRV_H
-#define _MSACMDRV_H
-
-#include <windows.h>
-#include <mmsystem.h>
-#include <mmreg.h>
-#include <vfw.h>
-#include <msacm.h>
-
-#define ACMDM_DRIVER_DETAILS            (ACMDM_BASE + 10)
-#define ACMDM_DRIVER_ABOUT	        (ACMDM_BASE + 11)
-#define ACMDM_FORMATTAG_DETAILS         (ACMDM_BASE + 25)
-#define ACMDM_FORMAT_DETAILS            (ACMDM_BASE + 26)
-#define ACMDM_FORMAT_SUGGEST            (ACMDM_BASE + 27)
-
-#define ACMDM_STREAM_OPEN               (ACMDM_BASE + 76)
-#define ACMDM_STREAM_CLOSE              (ACMDM_BASE + 77)
-#define ACMDM_STREAM_SIZE               (ACMDM_BASE + 78)
-#define ACMDM_STREAM_CONVERT            (ACMDM_BASE + 79)
-#define ACMDM_STREAM_RESET              (ACMDM_BASE + 80)
-#define ACMDM_STREAM_PREPARE            (ACMDM_BASE + 81)
-#define ACMDM_STREAM_UNPREPARE          (ACMDM_BASE + 82)
-#define ACMDM_STREAM_UPDATE             (ACMDM_BASE + 83)
-
-typedef struct _ACMDRVOPENDESCA
-{
-  DWORD  cbStruct;
-  FOURCC fccType;
-  FOURCC fccComp;
-  DWORD  dwVersion;
-  DWORD  dwFlags;
-  DWORD  dwError;
-  LPCSTR pszSectionName;
-  LPCSTR pszAliasName;
-  DWORD  dnDevNode;
-} ACMDRVOPENDESCA, *PACMDRVOPENDESCA;
-
-typedef struct _ACMDRVOPENDESCW
-{
-  DWORD   cbStruct;
-  FOURCC  fccType;
-  FOURCC  fccComp;
-  DWORD   dwVersion;
-  DWORD   dwFlags;
-  DWORD   dwError;
-  LPCWSTR pszSectionName;
-  LPCWSTR pszAliasName;
-  DWORD   dnDevNode;
-} ACMDRVOPENDESCW, *PACMDRVOPENDESCW;
-
-typedef struct _ACMDRVOPENDESC16
-{
-  DWORD  cbStruct;
-  FOURCC fccType;
-  FOURCC fccComp;
-  DWORD  dwVersion;
-  DWORD  dwFlags;
-  DWORD  dwError;
-  LPCSTR pszSectionName;
-  LPCSTR pszAliasName;
-  DWORD  dnDevNode;
-} ACMDRVOPENDESC16, *NPACMDRVOPENDESC16, *LPACMDRVOPENDESC16;
-/*
-typedef struct _ACMDRVSTREAMINSTANCE16
-{
-  DWORD            cbStruct;
-  LPWAVEFORMATEX   pwfxSrc;
-  LPWAVEFORMATEX   pwfxDst;
-  LPWAVEFILTER     pwfltr;
-  DWORD            dwCallback;
-  DWORD            dwInstance;
-  DWORD            fdwOpen;
-  DWORD            fdwDriver;
-  DWORD            dwDriver;
-  HACMSTREAM16     has;
-} ACMDRVSTREAMINSTANCE16, *NPACMDRVSTREAMINSTANCE16, *LPACMDRVSTREAMINSTANCE16;
-*/
-typedef struct _ACMDRVSTREAMINSTANCE
-{
-  DWORD           cbStruct;
-  PWAVEFORMATEX   pwfxSrc;
-  PWAVEFORMATEX   pwfxDst;
-  PWAVEFILTER     pwfltr;
-  DWORD           dwCallback;
-  DWORD           dwInstance;
-  DWORD           fdwOpen;
-  DWORD           fdwDriver;
-  DWORD           dwDriver;
-  HACMSTREAM    has;
-} ACMDRVSTREAMINSTANCE, *PACMDRVSTREAMINSTANCE;
-
-
-typedef struct _ACMDRVSTREAMHEADER16 *LPACMDRVSTREAMHEADER16;
-typedef struct _ACMDRVSTREAMHEADER16 {
-  DWORD  cbStruct;
-  DWORD  fdwStatus;
-  DWORD  dwUser;
-  LPBYTE pbSrc;
-  DWORD  cbSrcLength;
-  DWORD  cbSrcLengthUsed;
-  DWORD  dwSrcUser;
-  LPBYTE pbDst;
-  DWORD  cbDstLength;
-  DWORD  cbDstLengthUsed;
-  DWORD  dwDstUser;
-
-  DWORD fdwConvert;
-  LPACMDRVSTREAMHEADER16 *padshNext;
-  DWORD fdwDriver;
-  DWORD dwDriver;
-
-  /* Internal fields for ACM */
-  DWORD  fdwPrepared;
-  DWORD  dwPrepared;
-  LPBYTE pbPreparedSrc;
-  DWORD  cbPreparedSrcLength;
-  LPBYTE pbPreparedDst;
-  DWORD  cbPreparedDstLength;
-} ACMDRVSTREAMHEADER16, *NPACMDRVSTREAMHEADER16;
-
-typedef struct _ACMDRVSTREAMHEADER *PACMDRVSTREAMHEADER;
-typedef struct _ACMDRVSTREAMHEADER {
-  DWORD  cbStruct;
-  DWORD  fdwStatus;
-  DWORD  dwUser;
-  LPBYTE pbSrc;
-  DWORD  cbSrcLength;
-  DWORD  cbSrcLengthUsed;
-  DWORD  dwSrcUser;
-  LPBYTE pbDst;
-  DWORD  cbDstLength;
-  DWORD  cbDstLengthUsed;
-  DWORD  dwDstUser;
-
-  DWORD fdwConvert;
-  PACMDRVSTREAMHEADER *padshNext;
-  DWORD fdwDriver;
-  DWORD dwDriver;
-
-  /* Internal fields for ACM */
-  DWORD  fdwPrepared;
-  DWORD  dwPrepared;
-  LPBYTE pbPreparedSrc;
-  DWORD  cbPreparedSrcLength;
-  LPBYTE pbPreparedDst;
-  DWORD  cbPreparedDstLength;
-} ACMDRVSTREAMHEADER;
-
-typedef struct _ACMDRVSTREAMSIZE
-{
-  DWORD cbStruct;
-  DWORD fdwSize;
-  DWORD cbSrcLength;
-  DWORD cbDstLength;
-} ACMDRVSTREAMSIZE16, *NPACMDRVSTREAMSIZE16, *LPACMDRVSTREAMSIZE16,
-  ACMDRVSTREAMSIZE, *PACMDRVSTREAMSIZE;
-
-typedef struct _ACMDRVFORMATSUGGEST16
-{
-  DWORD            cbStruct;
-  DWORD            fdwSuggest;
-  LPWAVEFORMATEX   pwfxSrc;
-  DWORD            cbwfxSrc;
-  LPWAVEFORMATEX   pwfxDst;
-  DWORD            cbwfxDst;
-} ACMDRVFORMATSUGGEST16, *NPACMDRVFORMATSUGGEST, *LPACMDRVFORMATSUGGEST;
-
-typedef struct _ACMDRVFORMATSUGGEST
-{
-  DWORD           cbStruct;
-  DWORD           fdwSuggest;
-  PWAVEFORMATEX   pwfxSrc;
-  DWORD           cbwfxSrc;
-  PWAVEFORMATEX   pwfxDst;
-  DWORD           cbwfxDst;
-} ACMDRVFORMATSUGGEST, *PACMDRVFORMATSUGGEST;
-
-#endif
--- a/plugins/cooledit/FAAC.dsp
+++ /dev/null
@@ -1,216 +1,0 @@
-# Microsoft Developer Studio Project File - Name="FAAC" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
-
-CFG=FAAC - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE 
-!MESSAGE NMAKE /f "FAAC.mak".
-!MESSAGE 
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE 
-!MESSAGE NMAKE /f "FAAC.mak" CFG="FAAC - Win32 Debug"
-!MESSAGE 
-!MESSAGE Possible choices for configuration are:
-!MESSAGE 
-!MESSAGE "FAAC - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "FAAC - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE 
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=xicl6.exe
-MTL=midl.exe
-RSC=rc.exe
-
-!IF  "$(CFG)" == "FAAC - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "FAAC_EXPORTS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I "../../common/Cfaac" /I "../../../faad2/common/id3lib/include" /I "../../include" /I "../../../faad2/include" /I "../../../faad2/common/faad" /I "../../common/mp4v2" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "WIN32_LEAN_AND_MEAN" /YX /FD /c
-# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
-# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
-# ADD BASE RSC /l 0x410 /d "NDEBUG"
-# ADD RSC /l 0x410 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=xilink6.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
-# ADD LINK32 ws2_32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /incremental:yes /machine:I386 /out:"Release/FAAC.flt"
-
-!ELSEIF  "$(CFG)" == "FAAC - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "FAAC_EXPORTS" /YX /FD /GZ /c
-# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /I "../../common/Cfaac" /I "../../../faad2/common/id3lib/include" /I "../../include" /I "../../../faad2/include" /I "../../../faad2/common/faad" /I "../../common/mp4v2" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "WIN32_LEAN_AND_MEAN" /YX /FD /GZ /c
-# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
-# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
-# ADD BASE RSC /l 0x410 /d "_DEBUG"
-# ADD RSC /l 0x410 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=xilink6.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 ws2_32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /out:"Debug\FAAC.flt" /pdbtype:sept
-# SUBTRACT LINK32 /nodefaultlib /force
-
-!ENDIF 
-
-# Begin Target
-
-# Name "FAAC - Win32 Release"
-# Name "FAAC - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\..\common\Cfaac\Cfaac.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\common\Cfaac\Cfaad.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\common\Cfaac\CRegistry.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\common\Cfaac\CTag.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\common\Cfaac\DecDialog.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\common\Cfaac\EncDialog.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\Faac.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\FAAC.def
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\common\Cfaac\FAAC.rc
-# End Source File
-# Begin Source File
-
-SOURCE=.\Faad.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\Main.cpp
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# Begin Source File
-
-SOURCE=..\..\common\Cfaac\Cfaac.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\common\Cfaac\Cfaad.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\common\Cfaac\CRegistry.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\common\Cfaac\CTag.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\common\Cfaac\DecDialog.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\Defines.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\common\Cfaac\EncDialog.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\include\faac.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\faad2\include\faad.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\Filters.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\common\Cfaac\resource.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\common\Cfaac\TypeDef.h
-# End Source File
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-# Begin Source File
-
-SOURCE=..\..\common\Cfaac\AudioCoding.bmp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\common\Cfaac\Email.bmp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\common\Cfaac\id3v2.ico
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\common\Cfaac\Mail.bmp
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\common\Cfaac\mpeg4ip-v.bmp"
-# End Source File
-# End Group
-# End Target
-# End Project
--- a/plugins/cooledit/FAAC.dsw
+++ /dev/null
@@ -1,119 +1,0 @@
-Microsoft Developer Studio Workspace File, Format Version 6.00
-# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
-
-###############################################################################
-
-Project: "FAAC"=.\FAAC.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-    Begin Project Dependency
-    Project_Dep_Name libfaac
-    End Project Dependency
-    Begin Project Dependency
-    Project_Dep_Name libfaad
-    End Project Dependency
-    Begin Project Dependency
-    Project_Dep_Name libmp4v2_st
-    End Project Dependency
-    Begin Project Dependency
-    Project_Dep_Name aacInfoLib
-    End Project Dependency
-    Begin Project Dependency
-    Project_Dep_Name id3lib
-    End Project Dependency
-    Begin Project Dependency
-    Project_Dep_Name zlib
-    End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "aacInfoLib"=.\aacInfoLib.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "id3lib"=..\..\..\faad2\common\id3lib\libprj\id3lib.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "libfaac"=..\..\libfaac\libfaac.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "libfaad"=..\..\..\faad2\libfaad\libfaad.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "libmp4v2_st"=..\..\..\faad2\common\mp4v2\libmp4v2_st60.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "zlib"=..\..\..\faad2\common\id3lib\zlib\prj\zlib.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Global:
-
-Package=<5>
-{{{
-}}}
-
-Package=<3>
-{{{
-}}}
-
-###############################################################################
-
--- /dev/null
+++ b/plugins/cooledit/FAAC.sln
@@ -1,0 +1,43 @@
+
+Microsoft Visual Studio Solution File, Format Version 9.00
+# Visual Studio 2005
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FAAC", "FAAC.vcproj", "{DEC2740A-F3D5-430C-BB81-C57006D20378}"
+	ProjectSection(ProjectDependencies) = postProject
+		{2E6FD2E8-55B9-4740-8882-CF823F77F7E1} = {2E6FD2E8-55B9-4740-8882-CF823F77F7E1}
+		{429A062F-81E0-4EFD-832B-55E0DE931FC8} = {429A062F-81E0-4EFD-832B-55E0DE931FC8}
+		{BD8FBE75-314D-476B-B13C-A206C52F0BD1} = {BD8FBE75-314D-476B-B13C-A206C52F0BD1}
+		{7F01A591-0084-4749-B53F-F9D2BFE8DF6E} = {7F01A591-0084-4749-B53F-F9D2BFE8DF6E}
+		{6440BFC6-57A6-4F6E-A8FB-F960D088ADEE} = {6440BFC6-57A6-4F6E-A8FB-F960D088ADEE}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "aacInfoLib", "aacInfoLib.vcproj", "{3257D980-5029-486B-94DC-AA520B501C62}"
+EndProject
+Project("{059D6162-CD51-11D0-AE1F-00A0C90FFFC3}") = "id3lib", "..\..\..\faad2\common\id3lib\libprj\id3lib.dsp", "{7F01A591-0084-4749-B53F-F9D2BFE8DF6E}"
+EndProject
+Project("{059D6162-CD51-11D0-AE1F-00A0C90FFFC3}") = "libfaac", "..\..\libfaac\libfaac.dsp", "{2E6FD2E8-55B9-4740-8882-CF823F77F7E1}"
+EndProject
+Project("{059D6162-CD51-11D0-AE1F-00A0C90FFFC3}") = "libfaad", "..\..\..\faad2\libfaad\libfaad.dsp", "{429A062F-81E0-4EFD-832B-55E0DE931FC8}"
+EndProject
+Project("{059D6162-CD51-11D0-AE1F-00A0C90FFFC3}") = "libmp4v2_st", "..\..\..\faad2\common\mp4v2\libmp4v2_st60.dsp", "{BD8FBE75-314D-476B-B13C-A206C52F0BD1}"
+EndProject
+Project("{059D6162-CD51-11D0-AE1F-00A0C90FFFC3}") = "zlib", "..\..\..\faad2\common\id3lib\zlib\prj\zlib.dsp", "{6440BFC6-57A6-4F6E-A8FB-F960D088ADEE}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Win32 = Debug|Win32
+		Release|Win32 = Release|Win32
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{DEC2740A-F3D5-430C-BB81-C57006D20378}.Debug|Win32.ActiveCfg = Debug|Win32
+		{DEC2740A-F3D5-430C-BB81-C57006D20378}.Debug|Win32.Build.0 = Debug|Win32
+		{DEC2740A-F3D5-430C-BB81-C57006D20378}.Release|Win32.ActiveCfg = Release|Win32
+		{DEC2740A-F3D5-430C-BB81-C57006D20378}.Release|Win32.Build.0 = Release|Win32
+		{3257D980-5029-486B-94DC-AA520B501C62}.Debug|Win32.ActiveCfg = Debug|Win32
+		{3257D980-5029-486B-94DC-AA520B501C62}.Debug|Win32.Build.0 = Debug|Win32
+		{3257D980-5029-486B-94DC-AA520B501C62}.Release|Win32.ActiveCfg = Release|Win32
+		{3257D980-5029-486B-94DC-AA520B501C62}.Release|Win32.Build.0 = Release|Win32
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+EndGlobal
--- /dev/null
+++ b/plugins/cooledit/FAAC.vcproj
@@ -1,0 +1,521 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="8.00"
+	Name="FAAC"
+	ProjectGUID="{DEC2740A-F3D5-430C-BB81-C57006D20378}"
+	>
+	<Platforms>
+		<Platform
+			Name="Win32"
+		/>
+	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
+	<Configurations>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory=".\Release"
+			IntermediateDirectory=".\Release"
+			ConfigurationType="2"
+			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
+			UseOfMFC="0"
+			ATLMinimizesCRunTimeLibraryUsage="false"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+				PreprocessorDefinitions="NDEBUG"
+				MkTypLibCompatible="true"
+				SuppressStartupBanner="true"
+				TargetEnvironment="1"
+				TypeLibraryName=".\Release/FAAC.tlb"
+				HeaderFileName=""
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="2"
+				InlineFunctionExpansion="1"
+				AdditionalIncludeDirectories=".,../../common/Cfaac,../../../faad2/common/id3lib/include,../../include,../../../faad2/include,../../../faad2/common/faad,../../common/mp4v2"
+				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;WIN32_LEAN_AND_MEAN"
+				StringPooling="true"
+				RuntimeLibrary="2"
+				EnableFunctionLevelLinking="true"
+				PrecompiledHeaderFile=".\Release/FAAC.pch"
+				AssemblerListingLocation=".\Release/"
+				ObjectFile=".\Release/"
+				ProgramDataBaseFileName=".\Release/"
+				WarningLevel="3"
+				SuppressStartupBanner="true"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+				PreprocessorDefinitions="NDEBUG"
+				Culture="1040"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="ws2_32.lib odbc32.lib odbccp32.lib"
+				OutputFile="Release/FAAC.flt"
+				LinkIncremental="2"
+				SuppressStartupBanner="true"
+				ModuleDefinitionFile=".\FAAC.def"
+				ProgramDatabaseFile=".\Release/FAAC.pdb"
+				ImportLibrary=".\Release/FAAC.lib"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+				SuppressStartupBanner="true"
+				OutputFile=".\Release/FAAC.bsc"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCWebDeploymentTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory=".\Debug"
+			IntermediateDirectory=".\Debug"
+			ConfigurationType="2"
+			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
+			UseOfMFC="0"
+			ATLMinimizesCRunTimeLibraryUsage="false"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+				PreprocessorDefinitions="_DEBUG"
+				MkTypLibCompatible="true"
+				SuppressStartupBanner="true"
+				TargetEnvironment="1"
+				TypeLibraryName=".\Debug/FAAC.tlb"
+				HeaderFileName=""
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories=".,../../common/Cfaac,../../../faad2/common/id3lib/include,../../include,../../../faad2/include,../../../faad2/common/faad,../../common/mp4v2"
+				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;WIN32_LEAN_AND_MEAN"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				PrecompiledHeaderFile=".\Debug/FAAC.pch"
+				AssemblerListingLocation=".\Debug/"
+				ObjectFile=".\Debug/"
+				ProgramDataBaseFileName=".\Debug/"
+				WarningLevel="3"
+				SuppressStartupBanner="true"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+				PreprocessorDefinitions="_DEBUG"
+				Culture="1040"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="ws2_32.lib odbc32.lib odbccp32.lib"
+				OutputFile="Debug\FAAC.flt"
+				LinkIncremental="2"
+				SuppressStartupBanner="true"
+				ModuleDefinitionFile=".\FAAC.def"
+				GenerateDebugInformation="true"
+				ProgramDatabaseFile=".\Debug/FAAC.pdb"
+				ImportLibrary=".\Debug/FAAC.lib"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+				SuppressStartupBanner="true"
+				OutputFile=".\Debug/FAAC.bsc"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCWebDeploymentTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+			>
+			<File
+				RelativePath="..\..\common\Cfaac\Cfaac.cpp"
+				>
+				<FileConfiguration
+					Name="Release|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+					/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+					/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="..\..\common\Cfaac\Cfaad.cpp"
+				>
+				<FileConfiguration
+					Name="Release|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+					/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+					/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="..\..\common\Cfaac\CRegistry.cpp"
+				>
+				<FileConfiguration
+					Name="Release|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+					/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+					/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="..\..\common\Cfaac\CTag.cpp"
+				>
+				<FileConfiguration
+					Name="Release|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+					/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+					/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="..\..\common\Cfaac\DecDialog.cpp"
+				>
+				<FileConfiguration
+					Name="Release|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+					/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+					/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="..\..\common\Cfaac\EncDialog.cpp"
+				>
+				<FileConfiguration
+					Name="Release|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+					/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+					/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="Faac.cpp"
+				>
+				<FileConfiguration
+					Name="Release|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+					/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+					/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="FAAC.def"
+				>
+			</File>
+			<File
+				RelativePath="..\..\common\Cfaac\FAAC.rc"
+				>
+				<FileConfiguration
+					Name="Release|Win32"
+					>
+					<Tool
+						Name="VCResourceCompilerTool"
+						PreprocessorDefinitions=""
+						AdditionalIncludeDirectories="\Audiocoding.com\repository\faac\common\Cfaac"
+					/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|Win32"
+					>
+					<Tool
+						Name="VCResourceCompilerTool"
+						PreprocessorDefinitions=""
+						AdditionalIncludeDirectories="\Audiocoding.com\repository\faac\common\Cfaac"
+					/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="Faad.cpp"
+				>
+				<FileConfiguration
+					Name="Release|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+					/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+					/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="Main.cpp"
+				>
+				<FileConfiguration
+					Name="Release|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+					/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+					/>
+				</FileConfiguration>
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl"
+			>
+			<File
+				RelativePath="..\..\common\Cfaac\Cfaac.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\common\Cfaac\Cfaad.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\common\Cfaac\CRegistry.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\common\Cfaac\CTag.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\common\Cfaac\DecDialog.h"
+				>
+			</File>
+			<File
+				RelativePath="Defines.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\common\Cfaac\EncDialog.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\include\faac.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\faad2\include\faad.h"
+				>
+			</File>
+			<File
+				RelativePath="Filters.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\common\Cfaac\resource.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\common\Cfaac\TypeDef.h"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="Resource Files"
+			Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
+			>
+			<File
+				RelativePath="..\..\common\Cfaac\AudioCoding.bmp"
+				>
+			</File>
+			<File
+				RelativePath="..\..\common\Cfaac\Email.bmp"
+				>
+			</File>
+			<File
+				RelativePath="..\..\common\Cfaac\id3v2.ico"
+				>
+			</File>
+			<File
+				RelativePath="..\..\common\Cfaac\Mail.bmp"
+				>
+			</File>
+			<File
+				RelativePath="..\..\common\Cfaac\mpeg4ip-v.bmp"
+				>
+			</File>
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
--- a/plugins/cooledit/aacInfoLib.dsp
+++ /dev/null
@@ -1,112 +1,0 @@
-# Microsoft Developer Studio Project File - Name="aacInfoLib" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Static Library" 0x0104
-
-CFG=aacInfoLib - 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 "aacInfoLib.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 "aacInfoLib.mak" CFG="aacInfoLib - Win32 Debug"
-!MESSAGE 
-!MESSAGE Possible choices for configuration are:
-!MESSAGE 
-!MESSAGE "aacInfoLib - Win32 Release" (based on "Win32 (x86) Static Library")
-!MESSAGE "aacInfoLib - Win32 Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE 
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=xicl6.exe
-RSC=rc.exe
-
-!IF  "$(CFG)" == "aacInfoLib - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "aacInfoLib___Win32_Release"
-# PROP BASE Intermediate_Dir "aacInfoLib___Win32_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 ""
-MTL=midl.exe
-F90=df.exe
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "../../../faad2/common/faad" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD BASE RSC /l 0x410 /d "NDEBUG"
-# ADD RSC /l 0x410 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=xilink6.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-
-!ELSEIF  "$(CFG)" == "aacInfoLib - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "aacInfoLib___Win32_Debug"
-# PROP BASE Intermediate_Dir "aacInfoLib___Win32_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 ""
-MTL=midl.exe
-F90=df.exe
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "../../../faad2/common/faad" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD BASE RSC /l 0x410 /d "_DEBUG"
-# ADD RSC /l 0x410 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=xilink6.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-
-!ENDIF 
-
-# Begin Target
-
-# Name "aacInfoLib - Win32 Release"
-# Name "aacInfoLib - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\..\..\faad2\common\faad\aacinfo.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\faad2\common\faad\filestream.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# Begin Source File
-
-SOURCE=..\..\common\faad\aacinfo.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\common\faad\filestream.h
-# End Source File
-# End Group
-# End Target
-# End Project
--- a/plugins/cooledit/aacInfoLib.dsw
+++ /dev/null
@@ -1,29 +1,0 @@
-Microsoft Developer Studio Workspace File, Format Version 6.00
-# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
-
-###############################################################################
-
-Project: "aacInfoLib"=.\aacInfoLib.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Global:
-
-Package=<5>
-{{{
-}}}
-
-Package=<3>
-{{{
-}}}
-
-###############################################################################
-
--- /dev/null
+++ b/plugins/cooledit/aacInfoLib.sln
@@ -1,0 +1,20 @@
+
+Microsoft Visual Studio Solution File, Format Version 9.00
+# Visual Studio 2005
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "aacInfoLib", "aacInfoLib.vcproj", "{3257D980-5029-486B-94DC-AA520B501C62}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Win32 = Debug|Win32
+		Release|Win32 = Release|Win32
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{3257D980-5029-486B-94DC-AA520B501C62}.Debug|Win32.ActiveCfg = Debug|Win32
+		{3257D980-5029-486B-94DC-AA520B501C62}.Debug|Win32.Build.0 = Debug|Win32
+		{3257D980-5029-486B-94DC-AA520B501C62}.Release|Win32.ActiveCfg = Release|Win32
+		{3257D980-5029-486B-94DC-AA520B501C62}.Release|Win32.Build.0 = Release|Win32
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+EndGlobal
--- /dev/null
+++ b/plugins/cooledit/aacInfoLib.vcproj
@@ -1,0 +1,235 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="8.00"
+	Name="aacInfoLib"
+	ProjectGUID="{3257D980-5029-486B-94DC-AA520B501C62}"
+	>
+	<Platforms>
+		<Platform
+			Name="Win32"
+		/>
+	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory=".\Debug"
+			IntermediateDirectory=".\Debug"
+			ConfigurationType="4"
+			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
+			UseOfMFC="0"
+			ATLMinimizesCRunTimeLibraryUsage="false"
+			CharacterSet="2"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="../../../faad2/common/faad"
+				PreprocessorDefinitions="WIN32;_DEBUG;_LIB"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				PrecompiledHeaderFile=".\Debug/aacInfoLib.pch"
+				AssemblerListingLocation=".\Debug/"
+				ObjectFile=".\Debug/"
+				ProgramDataBaseFileName=".\Debug/"
+				WarningLevel="3"
+				SuppressStartupBanner="true"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+				PreprocessorDefinitions="_DEBUG"
+				Culture="1040"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLibrarianTool"
+				OutputFile=".\Debug\aacInfoLib.lib"
+				SuppressStartupBanner="true"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+				SuppressStartupBanner="true"
+				OutputFile=".\Debug/aacInfoLib.bsc"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory=".\Release"
+			IntermediateDirectory=".\Release"
+			ConfigurationType="4"
+			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
+			UseOfMFC="0"
+			ATLMinimizesCRunTimeLibraryUsage="false"
+			CharacterSet="2"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="2"
+				InlineFunctionExpansion="1"
+				AdditionalIncludeDirectories="../../../faad2/common/faad"
+				PreprocessorDefinitions="WIN32;NDEBUG;_LIB"
+				StringPooling="true"
+				RuntimeLibrary="2"
+				EnableFunctionLevelLinking="true"
+				PrecompiledHeaderFile=".\Release/aacInfoLib.pch"
+				AssemblerListingLocation=".\Release/"
+				ObjectFile=".\Release/"
+				ProgramDataBaseFileName=".\Release/"
+				WarningLevel="3"
+				SuppressStartupBanner="true"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+				PreprocessorDefinitions="NDEBUG"
+				Culture="1040"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLibrarianTool"
+				OutputFile=".\Release\aacInfoLib.lib"
+				SuppressStartupBanner="true"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+				SuppressStartupBanner="true"
+				OutputFile=".\Release/aacInfoLib.bsc"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+			>
+			<File
+				RelativePath="..\..\..\faad2\common\faad\aacinfo.c"
+				>
+				<FileConfiguration
+					Name="Debug|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+					/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Release|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+					/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="..\..\..\faad2\common\faad\filestream.c"
+				>
+				<FileConfiguration
+					Name="Debug|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+					/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Release|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+					/>
+				</FileConfiguration>
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl"
+			>
+			<File
+				RelativePath="..\..\common\faad\aacinfo.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\common\faad\filestream.h"
+				>
+			</File>
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
--- a/plugins/foo_faac/foo_faac.cpp
+++ /dev/null
@@ -1,805 +1,0 @@
-// FAAC encoder for foobar2000 diskwriter
-// Copyright (C) 2003 Janne Hyv�rinen
-//
-// Changes:
-//  0.4.2 (2003-12-14): Changed the gapless method again
-//  0.4.1 (2003-12-13): Added ctts field writing for MP4 mode
-//  0.4   (2003-12-11): Added support for average bitrate controlling
-//  0.3.5 (2003-10-17): Changed way gapless encoding is handled (iTunes is buggy...)
-//  0.3.4 (2003-10-14): Fixed AAC object type selecting
-//  0.3.3 (2003-10-02): Removed gapless support for raw AAC files, it was hacky and recent libfaad changes broke it
-//  0.3.2 (2003-09-17): Last fix wasn't perfect and very small input chunks wouldn't have been encoded
-//  0.3.1 (2003-09-14): Fixed possible memory access problems
-//  0.3   (2003-08-17): Even more corrections to MP4 writing, now encoder delay is taken into account and first MP4 sample is given length 0
-//                      writes 'TOOL' metadata tag with libfaac version string
-//  0.2.9 (2003-08-16): Fixes in MP4 writing
-//  0.2.8 (2003-08-16): Added silence padding at the end, new libfaac doesn't do it itself
-//  0.2.7 (2003-08-16): MP4 fixes, now MP4 header stores correct length
-//  0.2.6 (2003-08-16): MP4 writing uses correct length for last frame
-//  0.2.5 (2003-08-15): "libfaac flushing" added for 0.2.2 removed, foo_mp4 was cutting the end away incorrectly
-//  0.2.4 (2003-08-09): Added direct M4A writing and one new mode to bandwidth list
-//                      uses LFE mode with 6 channels
-//  0.2.3 (2003-08-08): Doesn't write tech info to APEv2 tags anymore
-//                      stores original file length now also for AAC
-//                      no longer limited to 32bit storage for length
-//                      changes to config
-//  0.2.2 (2003-08-07): Flushes libfaac now properly to get gapless playback
-//                      fixed bandwidth selecting issues in config
-//  0.2.1 (2003-08-07): Fixed MP4 writing
-//  0.2   (2003-08-07): Added MP4 creation and tagging, reorganized config
-//                      reports libfaac version in component info string
-//  0.1   (2003-08-06): First public version
-
-#include <mp4.h>
-#include "../SDK/foobar2000.h"
-#include "resource.h"
-#include <commctrl.h>
-#include <faac.h>
-#include <version.h>
-
-#define FOO_FAAC_VERSION     "0.4.2"
-
-#define FF_AAC  0
-#define FF_MP4  1
-#define FF_M4A  2
-
-#define FF_DEFAULT_OBJECTTYPE   LOW
-#define FF_DEFAULT_MIDSIDE      1
-#define FF_DEFAULT_TNS          0
-#define FF_DEFAULT_QUANTQUAL    100
-#define FF_DEFAULT_AVGBRATE     64
-#define FF_DEFAULT_CUTOFF       -1
-#define FF_DEFAULT_MP4CONTAINER FF_MP4
-#define FF_DEFAULT_USE_QQ       1
-#define FF_DEFAULT_USE_AB       0
-
-static cfg_int cfg_objecttype ( "objecttype", FF_DEFAULT_OBJECTTYPE );
-static cfg_int cfg_midside ( "midside", FF_DEFAULT_MIDSIDE );
-static cfg_int cfg_tns ( "tns", FF_DEFAULT_TNS );
-static cfg_int cfg_quantqual ( "quantqual", FF_DEFAULT_QUANTQUAL );
-static cfg_int cfg_avgbrate ( "avgbrate", FF_DEFAULT_AVGBRATE );
-static cfg_int cfg_cutoff ( "cutoff", FF_DEFAULT_CUTOFF );
-static cfg_int cfg_mp4container ( "mp4container", FF_DEFAULT_MP4CONTAINER );
-static cfg_int cfg_use_qq ( "use_qq", FF_DEFAULT_USE_QQ );
-static cfg_int cfg_use_ab ( "use_ab", FF_DEFAULT_USE_AB );
-
-DECLARE_COMPONENT_VERSION ( "FAAC encoder", FOO_FAAC_VERSION, "Uses libfaac version " FAAC_VERSION );
-
-class diskwriter_faac : public diskwriter {
-private:
-    // mp4
-    MP4FileHandle MP4hFile;
-    MP4TrackId MP4track;
-
-    // faac
-    faacEncHandle hEncoder;
-    faacEncConfigurationPtr myFormat;
-    unsigned int objectType;
-    unsigned int useMidSide;
-    unsigned int useTns;
-    int cutOff;
-    int bitRate;
-    unsigned long quantqual;
-    int use_qq, use_ab;
-
-    int create_mp4;
-
-    reader *m_reader;
-    mem_block_t<unsigned char> bitbuf;
-    mem_block_t<float> floatbuf;
-    unsigned long samplesInput, maxBytesOutput;
-    int *chanmap;
-    unsigned int bufferedSamples;
-    unsigned int frameSize;
-
-    string8 path;
-    file_info_i_full info;
-    unsigned int srate, nch, bps;
-    __int64 total_samples, encoded_samples, delay_samples;
-    bool encode_error;
-
-public:
-    diskwriter_faac()
-    {
-        objectType = cfg_objecttype;
-        useMidSide = cfg_midside;
-        useTns = cfg_tns;
-        cutOff = cfg_cutoff;
-        bitRate = cfg_avgbrate * 1000;
-        quantqual = cfg_quantqual;
-        use_qq = cfg_use_qq;
-        use_ab = cfg_use_ab;
-        hEncoder = 0;
-        myFormat = 0;
-
-        MP4hFile = 0;
-        MP4track = 0;
-
-        create_mp4 = cfg_mp4container;
-
-        m_reader = 0;
-    }
-
-    ~diskwriter_faac()
-    {
-        if ( m_reader ) m_reader->reader_release();
-    }
-
-    virtual const char *get_name() { return "AAC"; }
-
-    virtual const char *get_extension()
-    {
-        switch ( create_mp4 ) {
-        case FF_MP4:
-        default:
-            return "mp4";
-        case FF_M4A:
-            return "m4a";
-        case FF_AAC:
-            return "aac";
-        }
-    }
-        
-    virtual int open ( const char *filename, metadb_handle *src_file )
-    {
-        if ( m_reader ) return 0;
-
-        encode_error = false;
-        path = filename;
-        if ( src_file ) src_file->handle_query ( &info ); else info.reset();
-
-        console::info ( "AAC encoding with FAAC version " FAAC_VERSION );
-        console::info ( string_printf ("Source file: %s", (const char *)info.get_file_path()) );
-        console::info ( string_printf ("Destination file: %s", (const char *)path) );
-
-        if ( path.is_empty() ) {
-            console::error ( "No destination name" );
-            return 0;
-        }
-
-        m_reader = file::g_open ( path, reader::MODE_WRITE_NEW );
-        if ( !m_reader ) {
-            console::error ( "Can't write to destination" );
-            return 0;
-        }
-
-        return 1;
-    }
-                
-    virtual int process_samples ( const audio_chunk *src )
-    {
-        if ( encode_error ) return 0;
-
-        if ( !hEncoder ) {
-            encode_error = true;
-            nch = src->get_channels();
-            srate = src->get_srate();
-
-            // get faac version
-            hEncoder = faacEncOpen ( 44100, 2, &samplesInput, &maxBytesOutput );
-            myFormat = faacEncGetCurrentConfiguration ( hEncoder );
-
-            if ( myFormat->version == FAAC_CFG_VERSION ) {
-                //console::info ( string_printf ("libfaac version %s", (const char *)myFormat->name) );
-                faacEncClose ( hEncoder );
-            } else {
-                console::error ( "Wrong libfaac version" );
-                faacEncClose ( hEncoder );
-                hEncoder = 0;
-                return 0;
-            }
-
-            // open the encoder library
-            hEncoder = faacEncOpen ( srate, nch, &samplesInput, &maxBytesOutput );
-
-            bufferedSamples = 0;
-            frameSize = samplesInput / nch;
-            total_samples = 0;
-            encoded_samples = 0;
-            delay_samples = frameSize;
-            bitbuf.check_size ( maxBytesOutput );
-            floatbuf.check_size ( samplesInput );
-            chanmap = mkChanMap ( nch, 3/*chanC*/, 4/*chanLF*/ );
-
-            if ( cutOff <= 0 ) {
-                if ( cutOff < 0 ) {
-                    cutOff = 0;
-                } else {
-                    cutOff = srate / 2;
-                }
-            }
-            if ( (unsigned)cutOff > (srate / 2) ) cutOff = srate / 2;
-
-            // put the options in the configuration struct
-            myFormat = faacEncGetCurrentConfiguration ( hEncoder );
-            myFormat->aacObjectType = objectType;
-            myFormat->mpegVersion = (create_mp4 || objectType == LTP) ? MPEG4 : MPEG2;
-            myFormat->useLfe = (nch == 6) ? 1 : 0;
-            myFormat->useTns = useTns;
-            myFormat->allowMidside = useMidSide;
-            if ( use_ab ) myFormat->bitRate = bitRate;
-            myFormat->bandWidth = cutOff;
-            if ( use_qq ) myFormat->quantqual = quantqual;
-            myFormat->outputFormat = create_mp4 ? 0 : 1;
-            myFormat->inputFormat = FAAC_INPUT_FLOAT;
-
-            if ( !faacEncSetConfiguration (hEncoder, myFormat) ) {
-                console::error ( "Unsupported output format" );
-                return 0;
-            }
-
-            // initialize MP4 creation
-            if ( create_mp4 ) {
-                MP4hFile = MP4CreateCb ( 0, 0, 0, open_cb, close_cb, read_cb, write_cb, setpos_cb, getpos_cb, filesize_cb, (void *)m_reader );
-                if ( MP4hFile == MP4_INVALID_FILE_HANDLE ) {
-                    console::error ( "MP4Create() failed" );
-                    return 0;
-                }
-
-                MP4SetTimeScale ( MP4hFile, 90000 );
-
-                MP4track = MP4AddAudioTrack ( MP4hFile, srate, MP4_INVALID_DURATION, MP4_MPEG4_AUDIO_TYPE );
-
-                MP4SetAudioProfileLevel ( MP4hFile, 0x0F );
-
-                unsigned char *ASC = 0;
-                unsigned long ASCLength = 0;
-                faacEncGetDecoderSpecificInfo(hEncoder, &ASC, &ASCLength);
-
-                MP4SetTrackESConfiguration ( MP4hFile, MP4track, (u_int8_t *)ASC, ASCLength );
-            }
-
-            cutOff = myFormat->bandWidth;
-            quantqual = myFormat->quantqual;
-            bitRate = myFormat->bitRate;
-
-            if ( bitRate > 0 ) {
-                console::info ( string_printf ("Using quantizer quality %i and average bitrate of %i kbps per channel", quantqual, bitRate/1000) );
-            } else {
-                console::info ( string_printf ("Using quantizer quality %i and no average bitrate control", quantqual, bitRate) );
-            }
-
-            encode_error = false;
-        }
-
-        if ( srate != src->get_srate() || nch != src->get_channels() ) return 0;
-
-        {
-            unsigned int samples = src->get_sample_count() * nch;
-            const audio_sample *s = src->get_data();
-
-            do {
-                unsigned int num = (samples+bufferedSamples < samplesInput) ? samples+bufferedSamples : samplesInput;
-                if ( num == 0 ) break;
-
-                float *d = (float *)floatbuf.get_ptr() + bufferedSamples;
-
-                for ( unsigned int i = bufferedSamples; i < num; i++ ) {
-                    *d++ = (float)((*s++) * 32768.);
-
-                    bufferedSamples++;
-                    samples--;
-                }
-
-                if ( bufferedSamples == samplesInput ) {
-                    if ( nch >= 3 && chanmap ) {
-                        chan_remap ( (int *)floatbuf.get_ptr(), nch, frameSize, chanmap );
-                    }
-
-                    // call the actual encoding routine
-                    int bytesWritten = faacEncEncode ( hEncoder, (int32_t *)floatbuf.get_ptr(), samplesInput, bitbuf.get_ptr(), maxBytesOutput );
-
-                    bufferedSamples = 0;
-
-                    if ( bytesWritten < 0 ) {
-                        console::error ( "faacEncEncode() failed" );
-                        return 0;
-                    }
-
-                    if ( bytesWritten > 0 ) {
-                        MP4Duration dur = frameSize;
-                        MP4Duration ofs = 0;
-
-                        if ( delay_samples > 0 ) {
-                            dur = 0;
-                            ofs = delay_samples;
-                            delay_samples -= frameSize;
-                        }
-
-                        if ( create_mp4 ) {
-                            MP4WriteSample ( MP4hFile, MP4track, (const unsigned __int8 *)bitbuf.get_ptr(), bytesWritten, frameSize, ofs );
-                        } else {
-                            m_reader->write ( bitbuf.get_ptr(), bytesWritten );
-                        }
-
-                        encoded_samples += dur;
-                    }
-                }
-            } while ( bufferedSamples == 0 );
-        }
-
-        total_samples += src->get_sample_count();
-
-        return 1;
-    }
-
-    virtual void flush()
-    {
-        if ( hEncoder ) {
-            if ( nch >= 3 && chanmap ) {
-                chan_remap ( (int *)floatbuf.get_ptr(), nch, bufferedSamples/nch, chanmap );
-            }
-
-            __int64 samples_left = total_samples - encoded_samples;
-
-            while ( samples_left > 0 ) {
-                if ( !bufferedSamples ) {
-                    bufferedSamples = samplesInput;
-                    memset ( floatbuf.get_ptr(), 0, samplesInput * sizeof(float) );
-                }
-
-                int bytesWritten = faacEncEncode ( hEncoder, (int32_t *)floatbuf.get_ptr(), bufferedSamples, bitbuf.get_ptr(), maxBytesOutput );
-                bufferedSamples = 0;
-
-                if ( bytesWritten < 0 ) {
-                    console::error ( "faacEncEncode() failed" );
-                    break;
-                }
-                else if ( bytesWritten > 0 ) {
-                    MP4Duration dur = samples_left > frameSize ? frameSize : samples_left;
-
-                    if ( create_mp4 ) {
-                        MP4WriteSample ( MP4hFile, MP4track, (const unsigned __int8 *)bitbuf.get_ptr(), bytesWritten, dur );
-                    } else {
-                        m_reader->write ( bitbuf.get_ptr(), bytesWritten );
-                    }
-
-                    samples_left -= frameSize;
-                }
-            }
-
-            faacEncClose ( hEncoder );
-            hEncoder = 0;
-        }
-
-        if ( m_reader ) {
-            bool success = !encode_error && (m_reader->get_length() > 0);
-
-            if ( success ) {
-                write_tag();
-                console::info ( "Encoding finished successfully" );
-            }
-
-            if ( create_mp4 ) {
-                MP4Close ( MP4hFile );
-                MP4hFile = 0;
-            }
-
-            m_reader->reader_release();
-            m_reader = 0;
-
-            if ( !success ) {
-                console::info ( "Encoding failed" );
-                file::g_remove ( path );
-            }
-        }
-    }
-
-    virtual const char *get_config_page_name() { return "FAAC encoder"; }
-
-private:
-    int write_tag()
-    {
-        info.info_remove_all();
-
-        if ( !create_mp4 ) {
-            return tag_writer::g_run ( m_reader, &info, "ape" );
-        } else {
-            MP4SetMetadataTool ( MP4hFile, "libfaac version " FAAC_VERSION );
-
-            for ( int i = 0; i < info.meta_get_count(); i++ ) {
-                char *pName = (char *)info.meta_enum_name ( i );
-                const char *val = info.meta_enum_value ( i );
-                if ( !val || (val && !(*val)) ) continue;
-
-                if ( !stricmp (pName, "TITLE") ) {
-                    MP4SetMetadataName ( MP4hFile, val );
-                }
-                else if ( !stricmp (pName, "ARTIST") ) {
-                    MP4SetMetadataArtist ( MP4hFile, val );
-                }
-                else if ( !stricmp (pName, "WRITER") ) {
-                    MP4SetMetadataWriter ( MP4hFile, val );
-                }
-                else if ( !stricmp (pName, "ALBUM") ) {
-                    MP4SetMetadataAlbum ( MP4hFile, val );
-                }
-                else if ( !stricmp (pName, "YEAR") || !stricmp (pName, "DATE") ) {
-                    MP4SetMetadataYear ( MP4hFile, val );
-                }
-                else if ( !stricmp (pName, "COMMENT") ) {
-                    MP4SetMetadataComment ( MP4hFile, val );
-                }
-                else if ( !stricmp (pName, "GENRE") ) {
-                    MP4SetMetadataGenre ( MP4hFile, val );
-                }
-                else if ( !stricmp (pName, "TRACKNUMBER") ) {
-                    unsigned __int16 trkn = atoi ( val ), tot = 0;
-                    MP4SetMetadataTrack ( MP4hFile, trkn, tot );
-                }
-                else if ( !stricmp (pName, "DISKNUMBER") || !stricmp (pName, "DISC") ) {
-                    unsigned __int16 disk = atoi ( val ), tot = 0;
-                    MP4SetMetadataDisk ( MP4hFile, disk, tot );
-                }
-                else if ( !stricmp (pName, "COMPILATION") ) {
-                    unsigned __int8 cpil = atoi ( val );
-                    MP4SetMetadataCompilation ( MP4hFile, cpil );
-                }
-                else if ( !stricmp (pName, "TEMPO") ) {
-                    unsigned __int16 tempo = atoi ( val );
-                    MP4SetMetadataTempo ( MP4hFile, tempo );
-                } else {
-                    MP4SetMetadataFreeForm ( MP4hFile, pName, (unsigned __int8*)val, strlen(val) );
-                }
-            }
-
-            return 1;
-        }
-    }
-
-    int *mkChanMap ( int channels, int center, int lf )
-    {
-        if ( !center && !lf ) return 0;
-        if ( channels < 3 ) return 0;
-
-        if ( lf > 0 ) {
-            lf--;
-        } else {
-            lf = channels - 1; // default AAC position
-        }
-
-        if ( center > 0 ) {
-            center--;
-        } else {
-            center = 0; // default AAC position
-        }
-
-        int *map = (int *)calloc ( channels, sizeof(map[0]) );
-
-        int outpos = 0;
-        if ( (center >= 0) && (center < channels) ) map[outpos++] = center;
-
-        int inpos = 0;
-        for ( ; outpos < (channels - 1); inpos++ ) {
-            if ( inpos == center ) continue;
-            if ( inpos == lf ) continue;
-
-            map[outpos++] = inpos;
-        }
-
-        if ( outpos < channels ) {
-            if ( (lf >= 0) && (lf < channels) ) {
-                map[outpos] = lf;
-            } else {
-                map[outpos] = inpos;
-            }
-        }
-
-        return map;
-    }
-
-    void chan_remap ( int *buf, unsigned int channels, unsigned int blocks, int *map )
-    {
-        int *tmp = (int *)alloca ( channels * sizeof(int) );
-
-        for ( unsigned int i = 0; i < blocks; i++ ) {
-            memcpy ( tmp, buf + i * channels, sizeof(int) * channels );
-
-            for ( unsigned int chn = 0; chn < channels; chn++ ) {
-                buf[i * channels + chn] = tmp[map[chn]];
-            }
-        }
-    }
-
-    // MP4 I/O callbacks
-    static unsigned __int32 open_cb ( const char *pName, const char *mode, void *userData ) { return 1; }
-
-    static void close_cb ( void *userData ) { return; }
-
-    static unsigned __int32 read_cb ( void *pBuffer, unsigned int nBytesToRead, void *userData )
-    {
-        reader *r = (reader *)userData;
-        return r->read ( pBuffer, nBytesToRead );
-    }
-
-    static unsigned __int32 write_cb ( void *pBuffer, unsigned int nBytesToWrite, void *userData )
-    {
-        reader *r = (reader *)userData;
-        return r->write ( pBuffer, nBytesToWrite );
-    }
-
-    static __int64 getpos_cb ( void *userData )
-    {
-        reader *r = (reader *)userData;
-        return r->get_position();
-    }
-
-    static __int32 setpos_cb ( unsigned __int32 pos, void *userData )
-    {
-        reader *r = (reader *)userData;
-        return !r->seek ( pos );
-    }
-
-    static __int64 filesize_cb ( void *userData )
-    {
-        reader *r = (reader *)userData;
-        return r->get_length();
-    }
-};
-
-// -------------------------------------
-
-typedef struct {
-    int     mp4;
-    char    name[4];
-} format_list_t;
-
-static format_list_t format_list[] = {
-    { FF_MP4, "MP4" },
-    { FF_M4A, "M4A" },
-    { FF_AAC, "AAC" },
-};
-
-typedef struct {
-    int     profile;
-    char    name[6];
-} profile_list_t;
-
-static profile_list_t profile_list[] = {
-    { LOW,  "LC"   },
-    { MAIN, "Main" },
-    { LTP,  "LTP"  },
-};
-
-typedef struct {
-    int     cutoff;
-    char    name[10];
-} cutoff_list_t;
-
-static cutoff_list_t cutoff_list[] = {
-    {     -1, "Automatic" },
-    {      0, "Full"      },
-    {  20000, "20000"     },
-    {  19000, "19000"     },
-    {  18000, "18000"     },
-    {  17000, "17000"     },
-    {  16000, "16000"     },
-    {  15000, "15000"     },
-    {  14000, "14000"     },
-    {  13000, "13000"     },
-    {  12000, "12000"     },
-    {  11000, "11000"     },
-    {  10000, "10000"     },
-};
-
-#define QQ_MIN      10
-#define QQ_MAX      500
-#define AB_MIN      8
-#define AB_MAX      384
-
-class config_faac : public config {
-    static void update ( HWND wnd )
-    {
-        int i;
-        HWND wnd_format = GetDlgItem ( wnd, IDC_FORMAT );
-        HWND wnd_profile = GetDlgItem ( wnd, IDC_PROFILE );
-        HWND wnd_cutoff = GetDlgItem ( wnd, IDC_CUTOFF );
-
-        for ( i = 0; i < sizeof(format_list)/sizeof(*format_list); i++ ) {
-            if ( (cfg_mp4container == format_list[i].mp4) ) {
-                uSendMessage ( wnd_format, CB_SETCURSEL, i, 0 );
-                break;
-            }
-        }
-
-        for ( i = 0; i < sizeof(profile_list)/sizeof(*profile_list); i++ ) {
-            if ( cfg_objecttype == profile_list[i].profile ) {
-                uSendMessage ( wnd_profile, CB_SETCURSEL, i, 0 );
-                break;
-            }
-        }
-
-        bool cutoff_found = false;
-
-        for ( i = 0; i < sizeof(cutoff_list)/sizeof(*cutoff_list); i++ ) {
-            if ( cfg_cutoff == cutoff_list[i].cutoff ) {
-                uSendMessage ( wnd_cutoff, CB_SETCURSEL, i, 0 );
-                cutoff_found = true;
-                break;
-            }
-        }
-
-        if ( !cutoff_found ) uSetDlgItemText ( wnd, IDC_CUTOFF, string_printf ("%i", (int)cfg_cutoff) );
-
-        uSendDlgItemMessage ( wnd, IDC_QUANTQUAL_SLIDER, TBM_SETPOS, 1, cfg_quantqual );
-        uSetDlgItemText ( wnd, IDC_QUANTQUAL_EDIT, string_printf ("%i", (int)cfg_quantqual) );
-
-        uSendDlgItemMessage ( wnd, IDC_AVGBRATE_SLIDER, TBM_SETPOS, 1, cfg_avgbrate );
-        uSetDlgItemText ( wnd, IDC_AVGBRATE_EDIT, string_printf ("%i", (int)cfg_avgbrate) );
-
-        CheckDlgButton ( wnd, IDC_USE_QQ, cfg_use_qq );
-        CheckDlgButton ( wnd, IDC_USE_AB, cfg_use_ab );
-
-        CheckDlgButton ( wnd, IDC_MIDSIDE, cfg_midside );
-        CheckDlgButton ( wnd, IDC_TNS, cfg_tns );
-    }
-
-    static BOOL CALLBACK ConfigProc ( HWND wnd, UINT msg, WPARAM wp, LPARAM lp )
-    {
-        HWND wnd_format = GetDlgItem ( wnd, IDC_FORMAT );
-        HWND wnd_profile = GetDlgItem ( wnd, IDC_PROFILE );
-        HWND wnd_cutoff = GetDlgItem ( wnd, IDC_CUTOFF );
-
-        switch ( msg ) {
-        case WM_INITDIALOG:
-            {
-                int i;
-
-                for ( i = 0; i < sizeof(format_list)/sizeof(*format_list); i++ ) {
-                    uSendMessageText ( wnd_format, CB_ADDSTRING, 0, format_list[i].name );
-                }
-
-                for ( i = 0; i < sizeof(profile_list)/sizeof(*profile_list); i++ ) {
-                    uSendMessageText ( wnd_profile, CB_ADDSTRING, 0, profile_list[i].name );
-                }
-
-                for ( i = 0; i < sizeof(cutoff_list)/sizeof(*cutoff_list); i++ ) {
-                    uSendMessageText ( wnd_cutoff, CB_ADDSTRING, 0, cutoff_list[i].name );
-                }
-
-                uSendDlgItemMessage ( wnd, IDC_QUANTQUAL_SLIDER, TBM_SETRANGE, 0, MAKELONG(QQ_MIN, QQ_MAX) );
-                uSendDlgItemMessage ( wnd, IDC_AVGBRATE_SLIDER, TBM_SETRANGE, 0, MAKELONG(AB_MIN, AB_MAX) );
-
-                update ( wnd );
-            }
-            return TRUE;
-
-        case WM_COMMAND:
-            switch ( wp ) {
-            case IDC_FORMAT | (CBN_SELCHANGE<<16):
-                {
-                    int t = (int)uSendMessage ( wnd_format, CB_GETCURSEL, 0, 0 );
-                    if ( t >= 0 ) cfg_mp4container = format_list[t].mp4;
-                }
-                break;
-
-            case IDC_PROFILE | (CBN_SELCHANGE<<16):
-                {
-                    int t = (int)uSendMessage ( wnd_profile, CB_GETCURSEL, 0, 0 );
-                    if ( t >= 0 ) cfg_objecttype = profile_list[t].profile;
-                }
-                break;
-
-            case IDC_QUANTQUAL_EDIT | (EN_KILLFOCUS<<16):
-                {
-                    cfg_quantqual = GetDlgItemInt ( wnd, IDC_QUANTQUAL_EDIT, 0, 0 );
-                    if ( cfg_quantqual < QQ_MIN || cfg_quantqual > QQ_MAX ) {
-                        if ( cfg_quantqual < QQ_MIN ) {
-                            cfg_quantqual = QQ_MIN;
-                        } else {
-                            cfg_quantqual = QQ_MAX;
-                        }
-                        uSetDlgItemText ( wnd, IDC_QUANTQUAL_EDIT, string_printf ("%i", (int)cfg_quantqual) );
-                    }
-                    uSendDlgItemMessage ( wnd, IDC_QUANTQUAL_SLIDER, TBM_SETPOS, 1, cfg_quantqual );
-                }
-                break;
-
-            case IDC_AVGBRATE_EDIT | (EN_KILLFOCUS<<16):
-                {
-                    cfg_avgbrate = GetDlgItemInt ( wnd, IDC_AVGBRATE_EDIT, 0, 0 );
-                    if ( cfg_avgbrate < AB_MIN || cfg_quantqual > AB_MAX ) {
-                        if ( cfg_avgbrate< AB_MIN ) {
-                            cfg_avgbrate = AB_MIN;
-                        } else {
-                            cfg_avgbrate = AB_MAX;
-                        }
-                        uSetDlgItemText ( wnd, IDC_AVGBRATE_EDIT, string_printf ("%i", (int)cfg_avgbrate) );
-                    }
-                    uSendDlgItemMessage ( wnd, IDC_AVGBRATE_SLIDER, TBM_SETPOS, 1, cfg_avgbrate );
-                }
-                break;
-
-            case IDC_CUTOFF | (CBN_SELCHANGE<<16):
-                {
-                    int t = (int)uSendMessage ( wnd_cutoff, CB_GETCURSEL, 0, 0 );
-                    if ( t >= 0 ) cfg_cutoff = cutoff_list[t].cutoff;
-                }
-                break;
-
-            case IDC_CUTOFF | (CBN_KILLFOCUS<<16):
-                {
-                    int t = (int)uSendMessage ( wnd_cutoff, CB_GETCURSEL, 0, 0 );
-                    if ( t < 0 ) {
-                        cfg_cutoff = GetDlgItemInt ( wnd, IDC_CUTOFF, 0, 0 );
-                        if ( cfg_cutoff > 0 && cfg_cutoff < 100 ) {
-                            cfg_cutoff = 100;
-                            uSetDlgItemText ( wnd, IDC_CUTOFF, string_printf ("%i", (int)cfg_cutoff) );
-                        }
-                        else if ( cfg_cutoff <= 0 ) {
-                            uSendMessage ( wnd_cutoff, CB_SETCURSEL, 0, 0 );
-                            cfg_cutoff = cutoff_list[0].cutoff;
-                        }
-                    }
-                }
-                break;
-
-            case IDC_MIDSIDE:
-                {
-                    cfg_midside = !cfg_midside;
-                }
-                break;
-
-            case IDC_TNS:
-                {
-                    cfg_tns = !cfg_tns;
-                }
-                break;
-
-            case IDC_USE_QQ:
-                {
-                    cfg_use_qq = !cfg_use_qq;
-                }
-                break;
-
-            case IDC_USE_AB:
-                {
-                    cfg_use_ab = !cfg_use_ab;
-                }
-                break;
-
-            case IDC_DEFAULTS:
-                {
-                    cfg_objecttype = FF_DEFAULT_OBJECTTYPE;
-                    cfg_midside = FF_DEFAULT_MIDSIDE;
-                    cfg_tns = FF_DEFAULT_TNS;
-                    cfg_avgbrate = FF_DEFAULT_AVGBRATE;
-                    cfg_quantqual = FF_DEFAULT_QUANTQUAL;
-                    cfg_cutoff = FF_DEFAULT_CUTOFF;
-                    cfg_use_qq = FF_DEFAULT_USE_QQ;
-                    cfg_use_ab = FF_DEFAULT_USE_AB;
-                    update ( wnd );
-                }
-                break;
-            }
-            break;
-
-        case WM_HSCROLL:
-            switch ( uGetWindowLong((HWND)lp, GWL_ID) ) {
-            case IDC_QUANTQUAL_SLIDER:
-                cfg_quantqual = uSendMessage ( (HWND)lp, TBM_GETPOS, 0, 0 );
-                uSetDlgItemText ( wnd, IDC_QUANTQUAL_EDIT, string_printf ("%i", (int)cfg_quantqual) );
-                break;
-
-            case IDC_AVGBRATE_SLIDER:
-                cfg_avgbrate = uSendMessage ( (HWND)lp, TBM_GETPOS, 0, 0 );
-                uSetDlgItemText ( wnd, IDC_AVGBRATE_EDIT, string_printf ("%i", (int)cfg_avgbrate) );
-                break;
-            }
-            break;
-        }
-
-        return FALSE;
-    }
-
-    virtual HWND create ( HWND parent ) {
-        return uCreateDialog ( IDD_CONFIG, parent, ConfigProc );
-    }
-
-    virtual const char *get_name() { return "FAAC encoder"; }
-
-    virtual const char *get_parent_name() { return "Diskwriter"; }
-};
-
-static service_factory_t<diskwriter, diskwriter_faac> foo_faac;
-static service_factory_single_t<config, config_faac> foo_faac_cfg;
--- a/plugins/foo_faac/foo_faac.dsp
+++ /dev/null
@@ -1,116 +1,0 @@
-# Microsoft Developer Studio Project File - Name="foo_faac" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
-
-CFG=foo_faac - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE 
-!MESSAGE NMAKE /f "foo_faac.mak".
-!MESSAGE 
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE 
-!MESSAGE NMAKE /f "foo_faac.mak" CFG="foo_faac - Win32 Debug"
-!MESSAGE 
-!MESSAGE Possible choices for configuration are:
-!MESSAGE 
-!MESSAGE "foo_faac - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "foo_faac - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE 
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=xicl6.exe
-MTL=midl.exe
-RSC=rc.exe
-
-!IF  "$(CFG)" == "foo_faac - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "foo_faac_EXPORTS" /YX /FD /c
-# ADD CPP /nologo /G6 /MD /W3 /O1 /I "../../../faac/include" /I "../../../faac/libfaac" /I "..\..\..\faad2\common\mp4v2" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /YX /FD /c
-# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
-# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=xilink6.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ws2_32.lib /nologo /dll /machine:I386
-
-!ELSEIF  "$(CFG)" == "foo_faac - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "foo_faac_EXPORTS" /YX /FD /GZ /c
-# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "../../../faac/include" /I "../../../faac/libfaac" /I "..\..\..\faad2\common\mp4v2" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /YX /FD /GZ /c
-# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
-# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=xilink6.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ws2_32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
-
-!ENDIF 
-
-# Begin Target
-
-# Name "foo_faac - Win32 Release"
-# Name "foo_faac - Win32 Debug"
-# Begin Group "faac"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=..\..\..\faac\include\faac.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\faac\libfaac\version.h
-# End Source File
-# End Group
-# Begin Source File
-
-SOURCE=.\foo_faac.cpp
-# ADD CPP /I "../SDK" /I "../../mpc/include" /I "../../ogg/include"
-# End Source File
-# Begin Source File
-
-SOURCE=.\foo_faac.rc
-# End Source File
-# Begin Source File
-
-SOURCE=.\resource.h
-# End Source File
-# End Target
-# End Project
--- a/plugins/foo_faac/foo_faac.dsw
+++ /dev/null
@@ -1,125 +1,0 @@
-Microsoft Developer Studio Workspace File, Format Version 6.00
-# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
-
-###############################################################################
-
-Project: "foo_faac"=.\foo_faac.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-    Begin Project Dependency
-    Project_Dep_Name foobar2000_SDK
-    End Project Dependency
-    Begin Project Dependency
-    Project_Dep_Name pfc
-    End Project Dependency
-    Begin Project Dependency
-    Project_Dep_Name foobar2000_component_client
-    End Project Dependency
-    Begin Project Dependency
-    Project_Dep_Name libfaac
-    End Project Dependency
-    Begin Project Dependency
-    Project_Dep_Name utf8api
-    End Project Dependency
-    Begin Project Dependency
-    Project_Dep_Name libmp4v2_cb
-    End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "foobar2000_SDK"=..\SDK\foobar2000_SDK.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-    Begin Project Dependency
-    Project_Dep_Name utf8api
-    End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "foobar2000_component_client"=..\foobar2000_component_client\foobar2000_component_client.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "libfaac"=..\..\..\faac\libfaac\libfaac.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "libmp4v2_cb"=..\..\..\faad2\common\mp4v2\libmp4v2_cb.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "pfc"=..\..\pfc\pfc.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "utf8api"=..\utf8api\utf8api.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-    Begin Project Dependency
-    Project_Dep_Name pfc
-    End Project Dependency
-}}}
-
-###############################################################################
-
-Global:
-
-Package=<5>
-{{{
-}}}
-
-Package=<3>
-{{{
-}}}
-
-###############################################################################
-
--- a/plugins/foo_faac/foo_faac.rc
+++ /dev/null
@@ -1,121 +1,0 @@
-//Microsoft Developer Studio generated resource script.
-//
-#include "resource.h"
-
-#define APSTUDIO_READONLY_SYMBOLS
-/////////////////////////////////////////////////////////////////////////////
-//
-// Generated from the TEXTINCLUDE 2 resource.
-//
-#include "afxres.h"
-
-/////////////////////////////////////////////////////////////////////////////
-#undef APSTUDIO_READONLY_SYMBOLS
-
-/////////////////////////////////////////////////////////////////////////////
-// English (U.S.) resources
-
-#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
-#ifdef _WIN32
-LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
-#pragma code_page(1252)
-#endif //_WIN32
-
-#ifdef APSTUDIO_INVOKED
-/////////////////////////////////////////////////////////////////////////////
-//
-// TEXTINCLUDE
-//
-
-1 TEXTINCLUDE DISCARDABLE 
-BEGIN
-    "resource.h\0"
-END
-
-2 TEXTINCLUDE DISCARDABLE 
-BEGIN
-    "#include ""afxres.h""\r\n"
-    "\0"
-END
-
-3 TEXTINCLUDE DISCARDABLE 
-BEGIN
-    "\r\n"
-    "\0"
-END
-
-#endif    // APSTUDIO_INVOKED
-
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// DESIGNINFO
-//
-
-#ifdef APSTUDIO_INVOKED
-GUIDELINES DESIGNINFO DISCARDABLE 
-BEGIN
-    IDD_CONFIG, DIALOG
-    BEGIN
-        LEFTMARGIN, 7
-        RIGHTMARGIN, 293
-        TOPMARGIN, 7
-        BOTTOMMARGIN, 183
-    END
-END
-#endif    // APSTUDIO_INVOKED
-
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// Dialog
-//
-
-IDD_CONFIG DIALOG DISCARDABLE  0, 0, 300, 190
-STYLE WS_CHILD
-FONT 8, "Tahoma"
-BEGIN
-    LTEXT           "Output format:",IDC_STATIC,13,16,54,8
-    COMBOBOX        IDC_FORMAT,68,14,53,50,CBS_DROPDOWNLIST | WS_VSCROLL | 
-                    WS_TABSTOP
-    LTEXT           "AAC profile:",IDC_STATIC,21,76,42,8
-    COMBOBOX        IDC_PROFILE,81,74,60,64,CBS_DROPDOWNLIST | WS_VSCROLL | 
-                    WS_TABSTOP
-    EDITTEXT        IDC_QUANTQUAL_EDIT,233,41,32,12,ES_CENTER | 
-                    ES_AUTOHSCROLL | ES_NUMBER
-    LTEXT           "Bandwidth (Hz):",IDC_STATIC,21,92,56,8
-    CONTROL         "Use mid/side coding",IDC_MIDSIDE,"Button",
-                    BS_AUTOCHECKBOX | WS_TABSTOP,21,107,79,10
-    CONTROL         "Use TNS",IDC_TNS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,
-                    21,120,43,10
-    COMBOBOX        IDC_CUTOFF,81,90,60,160,CBS_DROPDOWN | WS_VSCROLL | 
-                    WS_TABSTOP
-    CONTROL         "Slider2",IDC_QUANTQUAL_SLIDER,"msctls_trackbar32",
-                    WS_TABSTOP,97,41,132,11
-    GROUPBOX        "Encoder settings",IDC_STATIC,14,31,258,107
-    PUSHBUTTON      "Defaults",IDC_DEFAULTS,225,116,40,14
-    CONTROL         "Quantizer quality:",IDC_USE_QQ,"Button",BS_AUTOCHECKBOX | 
-                    WS_TABSTOP,21,43,73,10
-    CONTROL         "Bitrate/ch (kbps):",IDC_USE_AB,"Button",BS_AUTOCHECKBOX | 
-                    WS_TABSTOP,21,58,72,10
-    CONTROL         "Slider2",IDC_AVGBRATE_SLIDER,"msctls_trackbar32",
-                    WS_TABSTOP,97,57,132,11
-    EDITTEXT        IDC_AVGBRATE_EDIT,233,57,32,12,ES_CENTER | 
-                    ES_AUTOHSCROLL | ES_NUMBER
-END
-
-#endif    // English (U.S.) resources
-/////////////////////////////////////////////////////////////////////////////
-
-
-
-#ifndef APSTUDIO_INVOKED
-/////////////////////////////////////////////////////////////////////////////
-//
-// Generated from the TEXTINCLUDE 3 resource.
-//
-
-
-/////////////////////////////////////////////////////////////////////////////
-#endif    // not APSTUDIO_INVOKED
-
--- a/plugins/foo_faac/resource.h
+++ /dev/null
@@ -1,28 +1,0 @@
-//{{NO_DEPENDENCIES}}
-// Microsoft Developer Studio generated include file.
-// Used by foo_faac.rc
-//
-#define IDD_CONFIG                      116
-#define IDC_FORMAT                      1000
-#define IDC_USE_QQ                      1001
-#define IDC_USE_AB                      1002
-#define IDC_QUANTQUAL_SLIDER            1003
-#define IDC_AVGBRATE_SLIDER             1004
-#define IDC_QUANTQUAL_EDIT              1005
-#define IDC_AVGBRATE_EDIT               1006
-#define IDC_PROFILE                     1007
-#define IDC_CUTOFF                      1008
-#define IDC_MIDSIDE                     1009
-#define IDC_TNS                         1010
-#define IDC_DEFAULTS                    1011
-
-// Next default values for new objects
-// 
-#ifdef APSTUDIO_INVOKED
-#ifndef APSTUDIO_READONLY_SYMBOLS
-#define _APS_NEXT_RESOURCE_VALUE        105
-#define _APS_NEXT_COMMAND_VALUE         40001
-#define _APS_NEXT_CONTROL_VALUE         1012
-#define _APS_NEXT_SYMED_VALUE           101
-#endif
-#endif
--- a/plugins/winamp/.cvsignore
+++ /dev/null
@@ -1,14 +1,0 @@
-*.o
-*.so
-*.a
-*.ncb
-*.plg
-*.aps
-*.opt
-*.aac
-*.wav
-Release
-Debug
-ReleaseGUI
-DebugGUI
-out_FAAC.suo
\ No newline at end of file
--- a/plugins/winamp/Copying
+++ /dev/null
@@ -1,339 +1,0 @@
-		    GNU GENERAL PUBLIC LICENSE
-		       Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
-                          675 Mass Ave, Cambridge, MA 02139, USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-			    Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users.  This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it.  (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.)  You can apply it to
-your programs, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
-  To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
-  For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have.  You must make sure that they, too, receive or can get the
-source code.  And you must show them these terms so they know their
-rights.
-
-  We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
-  Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software.  If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
-  Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary.  To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.
-
-		    GNU GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License.  The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language.  (Hereinafter, translation is included without limitation in
-the term "modification".)  Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
-  1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
-  2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) You must cause the modified files to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    b) You must cause any work that you distribute or publish, that in
-    whole or in part contains or is derived from the Program or any
-    part thereof, to be licensed as a whole at no charge to all third
-    parties under the terms of this License.
-
-    c) If the modified program normally reads commands interactively
-    when run, you must cause it, when started running for such
-    interactive use in the most ordinary way, to print or display an
-    announcement including an appropriate copyright notice and a
-    notice that there is no warranty (or else, saying that you provide
-    a warranty) and that users may redistribute the program under
-    these conditions, and telling the user how to view a copy of this
-    License.  (Exception: if the Program itself is interactive but
-    does not normally print such an announcement, your work based on
-    the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
-    a) Accompany it with the complete corresponding machine-readable
-    source code, which must be distributed under the terms of Sections
-    1 and 2 above on a medium customarily used for software interchange; or,
-
-    b) Accompany it with a written offer, valid for at least three
-    years, to give any third party, for a charge no more than your
-    cost of physically performing source distribution, a complete
-    machine-readable copy of the corresponding source code, to be
-    distributed under the terms of Sections 1 and 2 above on a medium
-    customarily used for software interchange; or,
-
-    c) Accompany it with the information you received as to the offer
-    to distribute corresponding source code.  (This alternative is
-    allowed only for noncommercial distribution and only if you
-    received the program in object code or executable form with such
-    an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it.  For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable.  However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-  4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License.  Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
-  5. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Program or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
-  6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
-  7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-  8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded.  In such case, this License incorporates
-the limitation as if written in the body of this License.
-
-  9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time.  Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation.  If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
-  10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission.  For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this.  Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
-			    NO WARRANTY
-
-  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
-  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
-		     END OF TERMS AND CONDITIONS
-
-	Appendix: How to Apply These Terms to Your New Programs
-
-  If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
-  To do so, attach the following notices to the program.  It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
-    <one line to give the program's name and a brief idea of what it does.>
-    Copyright (C) 19yy  <name of author>
-
-    This program is free software; you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation; either version 2 of the License, or
-    (at your option) any later version.
-
-    This program 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 General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with this program; if not, write to the Free Software
-    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
-    Gnomovision version 69, Copyright (C) 19yy name of author
-    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
-    This is free software, and you are welcome to redistribute it
-    under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License.  Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary.  Here is a sample; alter the names:
-
-  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
-  `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
-  <signature of Ty Coon>, 1 April 1989
-  Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs.  If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library.  If this is what you want to do, use the GNU Library General
-Public License instead of this License.
--- a/plugins/winamp/FILTERS.H
+++ /dev/null
@@ -1,121 +1,0 @@
-//////////////////////////////////////////////////////
-// GENERAL PURPOSE DEFS FOR CREATING CUSTOM FILTERS //
-//////////////////////////////////////////////////////
-
-
-typedef struct riffspecialdata_t
-{	HANDLE hSpecialData;	
-	HANDLE hData;			// Actual data handle
-	DWORD  dwSize;			// size of data in handle
-	DWORD  dwExtra;			// optional extra data (usually a count)
-	char   szListType[8];	// Parent list type (usually "WAVE" or "INFO", or "adtl")
-	char   szType[8];		// Usually a four character code for data, but can be up to 7 chars
-} SPECIALDATA;
-
-// "CUE " dwExtra=number of cues, each cue is 8 bytes		([4] name [4] sample offset)
-// "LTXT" dwExtra=number of items, each one is 8 bytes		([4] ltxt len [4] name [4] cue length [4] purpose [n] data)
-// "NOTE" dwExtra=number of strings, each one is n bytes	([4] name [n-4] length zero term)
-// "LABL" dwExtra=number of strings, each one is n bytes	([4] name [n-4] length zero term)
-// "PLST" dwExtra=number if items, each one is 16 bytes		([4] name [4] dwLen [4] dwLoops [4] dwMode)
-
-
-// For special data, .FLT must implement FilterGetFirstSpecialData and FilterGetNextSpecialData
-
-
-typedef DWORD           FOURCC;         // a four character code
-
-struct cue_type { DWORD dwName;
-				  DWORD dwPosition;
-				  FOURCC fccChunk;
-				  DWORD dwChunkStart;
-				  DWORD dwBlockStart;
-				  DWORD dwSampleOffset;
-				 };
-
-struct play_type {DWORD dwName;
-					 DWORD dwLength;
-					 DWORD dwLoops;
-					};
-
-
-typedef struct coolquery_tag
-	{char szName[24];
-	 char szCopyright[80];
-	 
-	 // rate table, bits are set for modes that can be handled
-	 WORD Quad32;  // Quads are 3-D encoded
-	 WORD Quad16;
-	 WORD Quad8;
-	 WORD Stereo8;    		// rates are from lowest bit:
-	 WORD Stereo12;   		// bit 0 set: 5500 (5512.5)
-	 WORD Stereo16;   		// bit 1 set: 11025 (11K)
-	 WORD Stereo24;   		// bit 2 set: 22050 (22K)
-	 WORD Stereo32;   		// bit 3 set: 32075 (32K, or 32000)
-	 WORD Mono8;      		// bit 4 set: 44100 (44K)
-	 WORD Mono12;	  		// bit 5 set: 48000 (48K)
-	 WORD Mono16;	  		// bit 6 set: 88200 (88K)   (future ultra-sonic rates?)
-	 WORD Mono24;	  		// bit 7 set: 96000 (96K)
-	 WORD Mono32;     		// bit 8 set: 132300 (132K)
-	 				  		// bit 9 set: 176400 (176K)
-	 DWORD dwFlags;
-	 char szExt[4];
-	 long lChunkSize;
-	 char szExt2[4];
-	 char szExt3[4];
-	 char szExt4[4];
-	} COOLQUERY;
-
-#define R_5500   1
-#define R_11025  2
-#define R_22050  4
-#define R_32075  8
-#define R_44100  16
-#define R_48000  32
-#define R_88200  64
-#define R_96000  128
-#define R_132300 256
-#define R_176400 512
-
-#define C_VALIDLIBRARY 1154
-
-#define QF_RATEADJUSTABLE		0x001   // if can handle non-standard sample rates
-										// if not, only rates in bit rate table understood
-#define QF_CANSAVE				0x002		  
-#define QF_CANLOAD				0x004
-#define QF_UNDERSTANDSALL		0x008   // will read ANYTHING, so it is the last resort if no other
-										// formats match
-#define QF_READSPECIALFIRST		0x010	// read special info before trying to read data
-#define QF_READSPECIALLAST		0x020	// read special info after reading data
-#define QF_WRITESPECIALFIRST	0x040	// when writing a file, special info is sent to DLL before data
-#define QF_WRITESPECIALLAST		0x080	// when writing, special info is sent to DLL after data
-#define QF_HASOPTIONSBOX		0x100	// set if options box implemented
-#define QF_NOASKFORCONVERT		0x200	// set to bypass asking for conversion if original in different rate, auto convert
-#define QF_NOHEADER				0x400	// set if this is a raw data format with no header
-#define QF_CANDO32BITFLOATS		0x800	// set if file format can handle 32-bit sample data for input
-#define QF_CANOPENVIRTUAL		0x1000	// Set if data is in Intel 8-bit or 16-bit sample format, or floats
-										// and the GetDataOffset() function is implemented
-
-// special types are read from and written to DLL in the order below
-/*
-// special types (particular to Windows waveforms)
-#define SP_IART  20
-#define SP_ICMT  21
-#define SP_ICOP  22
-#define SP_ICRD  23
-#define SP_IENG  24
-#define SP_IGNR  25
-#define SP_IKEY  26
-#define SP_IMED  27
-#define SP_INAM  28
-#define SP_ISFT  29
-#define SP_ISRC  30
-#define SP_ITCH  31
-#define SP_ISBJ  32
-#define SP_ISRF  33
-#define SP_DISP  34
-#define SP_CUE   40 // returns number of cues of size cue_type 
-#define SP_LTXT  41 // returns number of adtl texts of size 8 (4,id and 4,len)
-#define SP_NOTE  42 // returns LO=size, HI=number of strings (sz sz sz...)
-#define SP_LABL	 43 // returns LO=size, HI=number of strings (sz sz sz...)
-#define SP_PLST  44 // returns number of playlist entries size play_type 
-*/
\ No newline at end of file
--- a/plugins/winamp/OUT.H
+++ /dev/null
@@ -1,63 +1,0 @@
-#define OUT_VER 0x10
-/*
-#ifdef __cplusplus
-extern "C" {
-#endif
-*/
-	
-	
-typedef struct 
-{
-	int version;				// module version (OUT_VER)
-	char *description;			// description of module, with version string
-	int id;						// module id. each input module gets its own. non-nullsoft modules should
-								// be >= 65536. 
-
-	HWND hMainWindow;			// winamp's main window (filled in by winamp)
-	HINSTANCE hDllInstance;		// DLL instance handle (filled in by winamp)
-
-	void (*Config)(HWND hwndParent); // configuration dialog 
-	void (*About)(HWND hwndParent);  // about dialog
-
-	void (*Init)();				// called when loaded
-	void (*Quit)();				// called when unloaded
-
-	int (*Open)(int samplerate, int numchannels, int bitspersamp, int bufferlenms, int prebufferms); 
-					// returns >=0 on success, <0 on failure
-					// NOTENOTENOTE: bufferlenms and prebufferms are ignored in most if not all output plug-ins. 
-					//    ... so don't expect the max latency returned to be what you asked for.
-					// returns max latency in ms (0 for diskwriters, etc)
-					// bufferlenms and prebufferms must be in ms. 0 to use defaults. 
-					// prebufferms must be <= bufferlenms
-
-	void (*Close)();	// close the ol' output device.
-
-	int (*Write)(char *buf, int len);	
-					// 0 on success. Len == bytes to write (<= 8192 always). buf is straight audio data. 
-					// 1 returns not able to write (yet). Non-blocking, always.
-
-	int (*CanWrite)();	// returns number of bytes possible to write at a given time. 
-						// Never will decrease unless you call Write (or Close, heh)
-
-	int (*IsPlaying)(); // non0 if output is still going or if data in buffers waiting to be
-						// written (i.e. closing while IsPlaying() returns 1 would truncate the song
-
-	int (*Pause)(int pause); // returns previous pause state
-
-	void (*SetVolume)(int volume); // volume is 0-255
-	void (*SetPan)(int pan); // pan is -128 to 128
-
-	void (*Flush)(int t);	// flushes buffers and restarts output at time t (in ms) 
-							// (used for seeking)
-
-	int (*GetOutputTime)(); // returns played time in MS
-	int (*GetWrittenTime)(); // returns time written in MS (used for synching up vis stuff)
-
-} Out_Module;
-
-
-/*
-#ifdef __cplusplus
-}
-#endif
-*/
\ No newline at end of file
--- a/plugins/winamp/OUT_FAAC.DEF
+++ /dev/null
@@ -1,4 +1,0 @@
-LIBRARY
-
-EXPORTS
-	winampGetOutModule
--- a/plugins/winamp/Out_FAAC.dsp
+++ /dev/null
@@ -1,179 +1,0 @@
-# Microsoft Developer Studio Project File - Name="Out_FAAC" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
-
-CFG=Out_FAAC - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE 
-!MESSAGE NMAKE /f "Out_FAAC.mak".
-!MESSAGE 
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE 
-!MESSAGE NMAKE /f "Out_FAAC.mak" CFG="Out_FAAC - Win32 Debug"
-!MESSAGE 
-!MESSAGE Possible choices for configuration are:
-!MESSAGE 
-!MESSAGE "Out_FAAC - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "Out_FAAC - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE 
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=xicl6.exe
-MTL=midl.exe
-RSC=rc.exe
-
-!IF  "$(CFG)" == "Out_FAAC - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "OUT_FAAC_EXPORTS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I "../../common/Cfaac" /I "../../include" /I "../../../faad2/include" /I "../../../faad2/common/faad" /I "../../common/mp4v2" /I "../../../faad2/common/id3lib/include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "WIN32_LEAN_AND_MEAN" /YX /FD /c
-# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
-# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
-# ADD BASE RSC /l 0x410 /d "NDEBUG"
-# ADD RSC /l 0x410 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=xilink6.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
-# ADD LINK32 ws2_32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /incremental:yes /machine:I386 /out:"Release/Out_AAC.dll"
-
-!ELSEIF  "$(CFG)" == "Out_FAAC - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "OUT_FAAC_EXPORTS" /YX /FD /GZ /c
-# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /I "../../common/Cfaac" /I "../../include" /I "../../../faad2/include" /I "../../../faad2/common/faad" /I "../../common/mp4v2" /I "../../../faad2/common/id3lib/include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "WIN32_LEAN_AND_MEAN" /YX /FD /GZ /c
-# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
-# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
-# ADD BASE RSC /l 0x410 /d "_DEBUG"
-# ADD RSC /l 0x410 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=xilink6.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 ws2_32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /out:"C:\Program Files\Audio\Gen\Winamp\Plugins\Out_AAC.dll" /pdbtype:sept
-
-!ENDIF 
-
-# Begin Target
-
-# Name "Out_FAAC - Win32 Release"
-# Name "Out_FAAC - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\..\common\Cfaac\Cfaac.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\common\Cfaac\CRegistry.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\common\Cfaac\CTag.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\common\Cfaac\EncDialog.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\common\Cfaac\FAAC.rc
-# End Source File
-# Begin Source File
-
-SOURCE=.\Out_faac.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\Out_FAAC.def
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# Begin Source File
-
-SOURCE=..\..\common\Cfaac\Cfaac.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\common\Cfaac\CRegistry.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\defines.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\include\faac.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\FILTERS.H
-# End Source File
-# Begin Source File
-
-SOURCE=.\OUT.H
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\common\Cfaac\resource.h
-# End Source File
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-# Begin Source File
-
-SOURCE=..\..\common\Cfaac\AudioCoding.bmp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\common\Cfaac\Email.bmp
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\common\Cfaac\mpeg4ip-v.bmp"
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\common\Cfaac\Open.bmp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\common\Cfaac\Open.ico
-# End Source File
-# End Group
-# End Target
-# End Project
--- a/plugins/winamp/Out_faac.cpp
+++ /dev/null
@@ -1,476 +1,0 @@
-/*
-FAAC - codec plugin for Cooledit
-Copyright (C) 2002-2004 Antonio Foranna
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation.
-	
-This program 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 General Public License for more details.
-		
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-			
-The author can be contacted at:
-ntnfrn_email-temp@yahoo.it
-*/
-
-#include <windows.h>
-#include "resource.h"
-#include "out.h"
-#include "wa_ipc.h"
-#include "defines.h"
-#include "EncDialog.h"
-#include "Cfaac.h"
-
-
-// *********************************************************************************************
-
-
-void Config(HWND);
-void About(HWND);
-void Init();
-void Quit();
-int Open(int, int, int, int, int);
-void Close();
-int Write(char*, int);
-int CanWrite();
-int IsPlaying();
-int Pause(int);
-void SetVolume(int);
-void SetPan(int);
-void Flush(int);
-int GetOutputTime();
-int GetWrittenTime();
-
-
-
-Cfaac			*Cpcmaac;
-//char			OutDir[MAX_PATH]="";
-
-HINSTANCE		hInstance=NULL;
-HBITMAP			hBmBrowse=NULL;
-char			config_AACoutdir[MAX_PATH]="";
-
-static int		srate, numchan, bps;
-volatile int	writtentime, w_offset;
-static int		last_pause=0;
-
-
-Out_Module out = {
-	OUT_VER,
-	APP_NAME " " APP_VER,
-	NULL,
-    NULL, // hmainwindow
-    NULL, // hdllinstance
-    Config,
-    About,
-    Init,
-    Quit,
-    Open,
-    Close,
-    Write,
-    CanWrite,
-    IsPlaying,
-    Pause,
-    SetVolume,
-    SetPan,
-    Flush,
-    GetOutputTime,
-    GetWrittenTime
-};
-
-
-
-// *********************************************************************************************
-
-
-
-Out_Module *winampGetOutModule()
-{
-	return &out;
-}
-// *********************************************************************************************
-
-BOOL WINAPI DllMain (HINSTANCE hInst, DWORD ulReason, LPVOID lpReserved)
-{
-	switch(ulReason)
-	{
-	case DLL_PROCESS_ATTACH:
-		hInstance=hInst;
-		DisableThreadLibraryCalls((struct HINSTANCE__ *)hInst);
-		if(!hBmBrowse)
-			hBmBrowse=(HBITMAP)LoadImage(hInst,MAKEINTRESOURCE(IDB_BROWSE),IMAGE_BITMAP,0,0,/*LR_CREATEDIBSECTION|*/LR_LOADTRANSPARENT|LR_LOADMAP3DCOLORS);
-		
-		/*	Code from LibMain inserted here.  Return TRUE to keep the
-			DLL loaded or return FALSE to fail loading the DLL.
-
-			You may have to modify the code in your original LibMain to
-			account for the fact that it may be called more than once.
-			You will get one DLL_PROCESS_ATTACH for each process that
-			loads the DLL. This is different from LibMain which gets
-			called only once when the DLL is loaded. The only time this
-			is critical is when you are using shared data sections.
-			If you are using shared data sections for statically
-			allocated data, you will need to be careful to initialize it
-			only once. Check your code carefully.
-
-			Certain one-time initializations may now need to be done for
-			each process that attaches. You may also not need code from
-			your original LibMain because the operating system may now
-			be doing it for you.
-		*/
-		break;
-		
-	case DLL_THREAD_ATTACH:
-		/*	Called each time a thread is created in a process that has
-			already loaded (attached to) this DLL. Does not get called
-			for each thread that exists in the process before it loaded
-			the DLL.
-	
-			Do thread-specific initialization here.
-		*/
-		break;
-		
-	case DLL_THREAD_DETACH:
-		/*	Same as above, but called when a thread in the process
-			exits.
-		
-			Do thread-specific cleanup here.
-		*/
-		break;
-		
-	case DLL_PROCESS_DETACH:
-		hInstance=NULL;
-		if(hBmBrowse)
-		{
-            DeleteObject(hBmBrowse);
-            hBmBrowse=NULL;
-		}
-		/*	Code from _WEP inserted here.  This code may (like the
-			LibMain) not be necessary.  Check to make certain that the
-			operating system is not doing it for you.
-		*/
-		break;
-	}
-	
-	/*	The return value is only used for DLL_PROCESS_ATTACH; all other
-		conditions are ignored.
-	*/
-	return TRUE;   // successful DLL_PROCESS_ATTACH
-}
-
-// *********************************************************************************************
-
-void About(HWND hWndDlg)
-{
-	DialogBox(out.hDllInstance, MAKEINTRESOURCE(IDD_ABOUT), hWndDlg, (DLGPROC)DialogMsgProcAbout);
-
-/*char buf[256];
-  unsigned long samplesInput, maxBytesOutput;
-  faacEncHandle hEncoder =
-    faacEncOpen(44100, 2, &samplesInput, &maxBytesOutput);
-  faacEncConfigurationPtr myFormat =
-    faacEncGetCurrentConfiguration(hEncoder);
-
-	sprintf(buf,
-			APP_NAME " %s by Antonio Foranna\n\n"
-			"This plugin uses FAAC encoder engine v%s\n\n"
-			"Compiled on %s\n",
-			 APP_VER,
-			 myFormat->name,
-			 __DATE__
-			 );
-	faacEncClose(hEncoder);
-	MessageBox(hWndDlg, buf, "About", MB_OK);*/
-}
-// *********************************************************************************************
-
-void Config(HWND hWnd)
-{
-	DialogBox(out.hDllInstance, MAKEINTRESOURCE(IDD_ENCODER), hWnd, DIALOGMsgProcEnc);
-//	dwOptions=DialogBoxParam((HINSTANCE)out.hDllInstance,(LPCSTR)MAKEINTRESOURCE(IDD_ENCODER), (HWND)hWnd, (DLGPROC)DIALOGMsgProc, dwOptions);
-}
-
-// *********************************************************************************************
-//									Utilities
-// *********************************************************************************************
-
-char *getSourceName(HWND hwnd)
-{
-HANDLE hProcess;
-DWORD processid;
-char filename[MAX_PATH], *pname;
-SIZE_T bread;
-//HWND hdlgPE;
-	
-	memset(filename, 0, MAX_PATH);
-	GetWindowThreadProcessId(hwnd, &processid);
-	hProcess = OpenProcess(PROCESS_VM_READ, FALSE, processid);
-//	hdlgPE=SendMessage(hwnd,WM_WA_IPC,IPC_GETWND_PE,IPC_GETWND);
-	pname=(char*)SendMessage(hwnd,WM_WA_IPC,SendMessage(hwnd,WM_WA_IPC,0,IPC_GETLISTPOS),IPC_GETPLAYLISTFILE);
-	ReadProcessMemory(hProcess, pname, filename, MAX_PATH, &bread);
-	CloseHandle(hProcess);
-	return strdup(filename);
-}
-
-char *getWASourceName(char *src)
-{
-char	*dst=NULL, *tmp=src;
-int		l;
-	if(!src)
-	{
-		if(dst=(char *)malloc(1))
-			*dst='\0';
-		return dst;
-	}
-
-	while(*src && *src>='0' && *src<='9')
-		src++;
-	if(src[0]=='.' && src[1]==' ')
-		src+=2;
-	else
-		src=tmp;
-	if(!(dst=(char *)malloc(strlen(src)+1)))
-		return dst;
-	strcpy(dst,src);
-	l=strlen(src);
-	if(l>9 && !strcmpi(src+l-9," - Winamp"))
-		dst[l-9]='\0';
-	// cut ext
-	tmp=dst+strlen(dst);
-	while(tmp!=dst && *tmp!='.')
-		tmp--;
-	if(*tmp=='.')
-		*tmp='\0';
-	return dst;
-}
-
-static char *scanstr_back(char *str, char *toscan, char *defval)
-{
-char *s=str+strlen(str)-1;
-
-	if (strlen(str) < 1) return defval;
-	if (strlen(toscan) < 1) return defval;
-	while (1)
-	{
-		char *t=toscan;
-		while (*t)
-			if (*t++ == *s) return s;
-		t=CharPrev(str,s);
-		if (t==s) return defval;
-		s=t;
-	}
-}
-//------------------------------------------------------------------------------------------
-
-void GetNewFileName(char *lpstrFilename)
-{
-char temp2[MAX_PATH];
-char *t,*p;
-
-	GetWindowText(out.hMainWindow,temp2,sizeof(temp2));
-	t=temp2;
-	
-	t=scanstr_back(temp2,"-",NULL);
-	if (t) t[-1]=0;
-	
-	if (temp2[0] && temp2[1] == '.')
-	{
-		char *p1,*p2;
-		p1=lpstrFilename;
-		p2=temp2;
-		while (*p2) *p1++=*p2++;
-		*p1=0;
-		p1 = temp2+1;
-		p2 = lpstrFilename;
-		while (*p2)
-		{
-			*p1++ = *p2++;
-		}
-		*p1=0;
-		temp2[0] = '0';
-	}
-	p=temp2;
-	while (*p != '.' && *p) p++;
-	if (*p == '.') 
-	{
-		*p = '-';
-		p=CharNext(p);
-	}
-	while (*p)
-	{
-		if (*p == '.' || *p == '/' || *p == '\\' || *p == '*' || 
-			*p == '?' || *p == ':' || *p == '+' || *p == '\"' || 
-			*p == '\'' || *p == '|' || *p == '<' || *p == '>') *p = '_';
-		p=CharNext(p);
-	}
-	
-	p=config_AACoutdir;
-	if (p[0]) while (p[1]) p++;
-	
-	if (!config_AACoutdir[0] || config_AACoutdir[0] == ' ')
-		Config(out.hMainWindow);
-	if (!config_AACoutdir[0])
-		wsprintf(lpstrFilename,"%s.aac",temp2);
-	else if (p[0]=='\\')
-		wsprintf(lpstrFilename,"%s%s.aac",config_AACoutdir,temp2);
-	else
-		wsprintf(lpstrFilename,"%s\\%s.aac",config_AACoutdir,temp2);
-}
-
-// *********************************************************************************************
-//									Main functions
-// *********************************************************************************************
-
-void Init()
-{
-}
-// *********************************************************************************************
-
-void Quit()
-{
-}
-// *********************************************************************************************
-
-#define ERROR_O(msg) \
-{ \
-	if(msg) \
-		MessageBox(0, msg, "FAAC plugin", MB_OK); \
-	Close(); \
-	return -1; \
-}
-
-int Open(int lSamprate, int wChannels, int wBitsPerSample, int bufferlenms, int prebufferms)
-{
-CMyEncCfg	cfg;
-char		OutFilename[MAX_PATH],
-			*srcFilename=NULL;
-//			buf[MAX_PATH],
-//			*tsrcFilename;
-
-	w_offset = writtentime = 0;
-	numchan = wChannels;
-	srate = lSamprate;
-	bps = wBitsPerSample;
-
-	strcpy(config_AACoutdir,cfg.OutDir);
-	GetNewFileName(OutFilename);
-
-	Cpcmaac=new Cfaac();
-#ifdef USE_IMPORT_TAG
-/*	GetWindowText(out.hMainWindow,buf,sizeof(buf));
-	tsrcFilename=getWASourceName(buf);
-	srcFilename=Cpcmaac->getSourceFilename(cfg.TagSrcPath,tsrcFilename,cfg.TagSrcExt);
-	FREE_ARRAY(tsrcFilename);*/
-	srcFilename=getSourceName(out.hMainWindow);
-#endif
-	if(!Cpcmaac->Init(srcFilename,OutFilename,lSamprate,wBitsPerSample,wChannels,-1))
-		ERROR_O(0);
-
-	FREE_ARRAY(srcFilename);
-	return 0;
-}
-// *********************************************************************************************
-
-void Close()
-{
-	if(Cpcmaac)
-	{
-		delete Cpcmaac;
-		Cpcmaac=NULL;
-	}
-}
-// *********************************************************************************************
-
-int Write(char *wabuf, int len)
-{
-	writtentime+=len;
-
-	if(Cpcmaac->processDataBufferized(Cpcmaac->hOutput,(BYTE *)wabuf,len)<0)
-		return -1;
-
-//	Sleep(10);
-	return 0;
-}
-// *********************************************************************************************
-
-int CanWrite()
-{
-	return last_pause ? 0 : 16*1024*1024;
-//	return last_pause ? 0 : mo->samplesInput*(mo->wBitsPerSample>>3);
-}
-// *********************************************************************************************
-
-int IsPlaying()
-{
-	return 0;
-}
-// *********************************************************************************************
-
-int Pause(int pause)
-{
-	int t=last_pause;
-	last_pause=pause;
-	return t;
-}
-// *********************************************************************************************
-
-void SetVolume(int volume)
-{
-}
-// *********************************************************************************************
-
-void SetPan(int pan)
-{
-}
-// *********************************************************************************************
-
-void Flush(int t)
-{
-int a;
-
-	  w_offset=0;
-	  a = t - GetWrittenTime();
-	  w_offset=a;
-}
-// *********************************************************************************************
-
-int GetOutputTime()
-{
-int t=srate*numchan,
-	ms=writtentime,
-	l;
-
-	if(t)
-	{
-		l=ms%t;
-		ms /= t;
-		ms *= 1000;
-		ms += (l*1000)/t;
-		if (bps == 16) ms/=2;
-	}
-	return ms + w_offset;
-}
-// *********************************************************************************************
-	
-int GetWrittenTime()
-{
-int t=srate*numchan,
-	ms=writtentime,
-	l;
-
-	if(t)
-	{
-		l=ms%t;
-		ms /= t;
-		ms *= 1000;
-		ms += (l*1000)/t;
-		if (bps == 16) ms/=2;
-	}
-	return ms + w_offset;
-}
--- a/plugins/winamp/ReadMe.txt
+++ /dev/null
@@ -1,27 +1,0 @@
-+-----------------------------------------------------------------+
-|                                                                 |
-|                          out_FAAC Readme                        |
-|                          ---------------                        |
-|                                                                 |
-+-----------------------------------------------------------------+
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License.
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY.
-
-----------------------------------------------------------------------------
-
-out_AAC is an encoder plugin for Winamp 2 and 5 to export .aac/.mp4 files.
-
-To use it:
-----------
-
-1) put FAAC and FAAD2 packages into the same folder;
-2) open the project, set "Active Configuration = FAAC - win32 Release" and compile;
-3) copy out_AAC.dll into Winamp\plugins folder.
-
-----------------------------------------------------------------------------
-
-For suggestions, bugs report, etc., you can contact me at
-ntnfrn_email-temp@yahoo.it
--- a/plugins/winamp/defines.h
+++ /dev/null
@@ -1,48 +1,0 @@
-/*
-FAAC - codec plugin for Cooledit
-Copyright (C) 2002-2004 Antonio Foranna
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation.
-	
-This program 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 General Public License for more details.
-		
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-			
-The author can be contacted at:
-ntnfrn_email-temp@yahoo.it
-*/
-
-#define APP_NAME "MPEG4-AAC encoder"
-#define APP_VER "v1.7"
-#define REGISTRY_PROGRAM_NAME "SOFTWARE\\4N\\Winamp\\Out_AAC"
-
-#define USE_OUTPUT_FOLDER
-#define USE_IMPORT_TAG
-//#define USE_PATHEXT
-
-// -----------------------------------------------------------------------------------------------
-
-#define FREE_ARRAY(ptr) \
-{ \
-	if(ptr!=NULL) \
-		free(ptr); \
-	ptr=NULL; \
-}
-
-// -----------------------------------------------------------------------------------------------
-
-#define GLOBALLOCK(ptr,handle,type,ret) \
-{ \
-	if(!(ptr=(type *)GlobalLock(handle))) \
-	{ \
-		MessageBox(0, "GlobalLock", APP_NAME " plugin", MB_OK|MB_ICONSTOP); \
-		ret; \
-	} \
-}
--- a/plugins/winamp/out_FAAC.dsw
+++ /dev/null
@@ -1,89 +1,0 @@
-Microsoft Developer Studio Workspace File, Format Version 6.00
-# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
-
-###############################################################################
-
-Project: "Out_FAAC"=.\Out_FAAC.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-    Begin Project Dependency
-    Project_Dep_Name libfaac
-    End Project Dependency
-    Begin Project Dependency
-    Project_Dep_Name libmp4v2_st
-    End Project Dependency
-    Begin Project Dependency
-    Project_Dep_Name id3lib
-    End Project Dependency
-    Begin Project Dependency
-    Project_Dep_Name zlib
-    End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "id3lib"=..\..\..\faad2\common\id3lib\libprj\id3lib.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "libfaac"=..\..\libfaac\libfaac.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "libmp4v2_st"=..\..\..\faad2\common\mp4v2\libmp4v2_st60.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "zlib"=..\..\..\faad2\common\id3lib\zlib\prj\zlib.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Global:
-
-Package=<5>
-{{{
-}}}
-
-Package=<3>
-{{{
-}}}
-
-###############################################################################
-
--- a/plugins/winamp/wa_ipc.h
+++ /dev/null
@@ -1,1022 +1,0 @@
-/*
-** Copyright (C) 2003 Nullsoft, Inc.
-**
-** This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held 
-** liable for any damages arising from the use of this software. 
-**
-** Permission is granted to anyone to use this software for any purpose, including commercial applications, and to 
-** alter it and redistribute it freely, subject to the following restrictions:
-**
-**   1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. 
-**      If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
-**
-**   2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
-**
-**   3. This notice may not be removed or altered from any source distribution.
-**
-*/
-
-#ifndef _WA_IPC_H_
-#define _WA_IPC_H_
-
-/*
-** This is the modern replacement for the classic 'frontend.h'. Most of these 
-** updates are designed for in-process use, i.e. from a plugin.
-**
-*/
-
-/* message used to sent many messages to winamp's main window. 
-** most all of the IPC_* messages involve sending the message in the form of:
-**   result = SendMessage(hwnd_winamp,WM_WA_IPC,(parameter),IPC_*);
-*/
-#define WM_WA_IPC WM_USER
-/* but some of them use WM_COPYDATA. be afraid.
-*/
-
-#define IPC_GETVERSION 0
-/* int version = SendMessage(hwnd_winamp,WM_WA_IPC,0,IPC_GETVERSION);
-**
-** Version will be 0x20yx for winamp 2.yx. versions previous to Winamp 2.0
-** typically (but not always) use 0x1zyx for 1.zx versions. Weird, I know.
-*/
-
-#define IPC_GETREGISTEREDVERSION 770
-
-
-typedef struct {
-  char *filename;
-  char *title;
-  int length;
-} enqueueFileWithMetaStruct; // send this to a IPC_PLAYFILE in a non WM_COPYDATA, 
-// and you get the nice desired result. if title is NULL, it is treated as a "thing",
-// otherwise it's assumed to be a file (for speed)
-
-#define IPC_PLAYFILE 100  // dont be fooled, this is really the same as enqueufile
-#define IPC_ENQUEUEFILE 100 
-/* sent as a WM_COPYDATA, with IPC_PLAYFILE as the dwData, and the string to play
-** as the lpData. Just enqueues, does not clear the playlist or change the playback
-** state.
-*/
-
-
-#define IPC_DELETE 101
-#define IPC_DELETE_INT 1101 // don't use this, it's used internally by winamp when 
-                            // dealing with some lame explorer issues.
-/* SendMessage(hwnd_winamp,WM_WA_IPC,0,IPC_DELETE);
-** Use IPC_DELETE to clear Winamp's internal playlist.
-*/
-
-
-#define IPC_STARTPLAY 102   // starts playback. almost like hitting play in Winamp.
-#define IPC_STARTPLAY_INT 1102 // used internally, don't bother using it (won't be any fun)
-
-
-#define IPC_CHDIR 103
-/* sent as a WM_COPYDATA, with IPC_CHDIR as the dwData, and the directory to change to
-** as the lpData. 
-*/
-
-
-#define IPC_ISPLAYING 104
-/* int res = SendMessage(hwnd_winamp,WM_WA_IPC,0,IPC_ISPLAYING);
-** If it returns 1, it is playing. if it returns 3, it is paused, 
-** if it returns 0, it is not playing.
-*/
-
-
-#define IPC_GETOUTPUTTIME 105
-/* int res = SendMessage(hwnd_winamp,WM_WA_IPC,mode,IPC_GETOUTPUTTIME);
-** returns the position in milliseconds of the current track (mode = 0), 
-** or the track length, in seconds (mode = 1). Returns -1 if not playing or error.
-*/
-
-
-#define IPC_JUMPTOTIME 106
-/* (requires Winamp 1.60+)
-** SendMessage(hwnd_winamp,WM_WA_IPC,ms,IPC_JUMPTOTIME);
-** IPC_JUMPTOTIME sets the position in milliseconds of the 
-** current song (approximately).
-** Returns -1 if not playing, 1 on eof, or 0 if successful
-*/
-
-#define IPC_GETMODULENAME 109
-#define IPC_EX_ISRIGHTEXE 666
-/* usually shouldnt bother using these, but here goes:
-** send a WM_COPYDATA with IPC_GETMODULENAME, and an internal
-** flag gets set, which if you send a normal WM_WA_IPC message with
-** IPC_EX_ISRIGHTEXE, it returns whether or not that filename
-** matches. lame, I know.
-*/
-
-#define IPC_WRITEPLAYLIST 120
-/* (requires Winamp 1.666+)
-** SendMessage(hwnd_winamp,WM_WA_IPC,0,IPC_WRITEPLAYLIST);
-**
-** IPC_WRITEPLAYLIST writes the current playlist to <winampdir>\\Winamp.m3u,
-** and returns the current playlist position.
-** Kinda obsoleted by some of the 2.x new stuff, but still good for when
-** using a front-end (instead of a plug-in)
-*/
-
-
-#define IPC_SETPLAYLISTPOS 121
-/* (requires Winamp 2.0+)
-** SendMessage(hwnd_winamp,WM_WA_IPC,position,IPC_SETPLAYLISTPOS)
-** IPC_SETPLAYLISTPOS sets the playlist position to 'position'. It
-** does not change playback or anything, it just sets position, and
-** updates the view if necessary
-*/
-
-
-#define IPC_SETVOLUME 122
-/* (requires Winamp 2.0+)
-** SendMessage(hwnd_winamp,WM_WA_IPC,volume,IPC_SETVOLUME);
-** IPC_SETVOLUME sets the volume of Winamp (from 0-255).
-*/
-
-
-#define IPC_SETPANNING 123
-/* (requires Winamp 2.0+)
-** SendMessage(hwnd_winamp,WM_WA_IPC,panning,IPC_SETPANNING);
-** IPC_SETPANNING sets the panning of Winamp (from 0 (left) to 255 (right)).
-*/
-
-
-#define IPC_GETLISTLENGTH 124
-/* (requires Winamp 2.0+)
-** int length = SendMessage(hwnd_winamp,WM_WA_IPC,0,IPC_GETLISTLENGTH);
-** IPC_GETLISTLENGTH returns the length of the current playlist, in
-** tracks.
-*/
-
-
-#define IPC_GETLISTPOS 125
-/* (requires Winamp 2.05+)
-** int pos=SendMessage(hwnd_winamp,WM_WA_IPC,0,IPC_GETLISTPOS);
-** IPC_GETLISTPOS returns the playlist position. A lot like IPC_WRITEPLAYLIST
-** only faster since it doesn't have to write out the list. Heh, silly me.
-*/
-
-
-#define IPC_GETINFO 126
-/* (requires Winamp 2.05+)
-** int inf=SendMessage(hwnd_winamp,WM_WA_IPC,mode,IPC_GETINFO);
-** IPC_GETINFO returns info about the current playing song. The value
-** it returns depends on the value of 'mode'.
-** Mode      Meaning
-** ------------------
-** 0         Samplerate (i.e. 44100)
-** 1         Bitrate  (i.e. 128)
-** 2         Channels (i.e. 2)
-** 3 (5+)    Video LOWORD=w HIWORD=h
-** 4 (5+)    > 65536, string (video description)
-*/
-
-
-#define IPC_GETEQDATA 127
-/* (requires Winamp 2.05+)
-** int data=SendMessage(hwnd_winamp,WM_WA_IPC,pos,IPC_GETEQDATA);
-** IPC_GETEQDATA queries the status of the EQ. 
-** The value returned depends on what 'pos' is set to:
-** Value      Meaning
-** ------------------
-** 0-9        The 10 bands of EQ data. 0-63 (+20db - -20db)
-** 10         The preamp value. 0-63 (+20db - -20db)
-** 11         Enabled. zero if disabled, nonzero if enabled.
-** 12         Autoload. zero if disabled, nonzero if enabled.
-*/
-
-
-#define IPC_SETEQDATA 128
-/* (requires Winamp 2.05+)
-** SendMessage(hwnd_winamp,WM_WA_IPC,pos,IPC_GETEQDATA);
-** SendMessage(hwnd_winamp,WM_WA_IPC,value,IPC_SETEQDATA);
-** IPC_SETEQDATA sets the value of the last position retrieved
-** by IPC_GETEQDATA. This is pretty lame, and we should provide
-** an extended version that lets you do a MAKELPARAM(pos,value).
-** someday...
-
-  new (2.92+): 
-    if the high byte is set to 0xDB, then the third byte specifies
-    which band, and the bottom word specifies the value.
-*/
-
-#define IPC_ADDBOOKMARK 129
-/* (requires Winamp 2.4+)
-** Sent as a WM_COPYDATA, using IPC_ADDBOOKMARK, adds the specified
-** file/url to the Winamp bookmark list.
-*/
-/*
-In winamp 5+, we use this as a normal WM_WA_IPC and the string:
-
-  "filename\0title\0"
-
-  to notify the library/bookmark editor that a bookmark
-was added. Note that using this message in this context does not
-actually add the bookmark.
-do not use :)
-*/
-
-
-#define IPC_INSTALLPLUGIN 130
-/* not implemented, but if it was you could do a WM_COPYDATA with 
-** a path to a .wpz, and it would install it.
-*/
-
-
-#define IPC_RESTARTWINAMP 135
-/* (requires Winamp 2.2+)
-** SendMessage(hwnd_winamp,WM_WA_IPC,0,IPC_RESTARTWINAMP);
-** IPC_RESTARTWINAMP will restart Winamp (isn't that obvious ? :)
-*/
-
-
-#define IPC_ISFULLSTOP 400
-/* (requires winamp 2.7+ I think)
-** ret=SendMessage(hwnd_winamp,WM_WA_IPC,0,IPC_ISFULLSTOP);
-** useful for when you're an output plugin, and you want to see
-** if the stop/close is a full stop, or just between tracks.
-** returns nonzero if it's full, zero if it's just a new track.
-*/
-
-
-#define IPC_INETAVAILABLE 242
-/* (requires Winamp 2.05+)
-** val=SendMessage(hwnd_winamp,WM_WA_IPC,0,IPC_INETAVAILABLE);
-** IPC_INETAVAILABLE will return 1 if the Internet connection is available for Winamp.
-*/
-
-
-#define IPC_UPDTITLE 243
-/* (requires Winamp 2.2+)
-** SendMessage(hwnd_winamp,WM_WA_IPC,0,IPC_UPDTITLE);
-** IPC_UPDTITLE will ask Winamp to update the informations about the current title.
-*/
-
-
-#define IPC_REFRESHPLCACHE 247
-/* (requires Winamp 2.2+)
-** SendMessage(hwnd_winamp,WM_WA_IPC,0,IPC_REFRESHPLCACHE);
-** IPC_REFRESHPLCACHE will flush the playlist cache buffer.
-** (send this if you want it to go refetch titles for tracks)
-*/
-
-
-#define IPC_GET_SHUFFLE 250
-/* (requires Winamp 2.4+)
-** val=SendMessage(hwnd_winamp,WM_WA_IPC,0,IPC_GET_SHUFFLE);
-**
-** IPC_GET_SHUFFLE returns the status of the Shuffle option (1 if set)
-*/
-
-
-#define IPC_GET_REPEAT 251
-/* (requires Winamp 2.4+)
-** val=SendMessage(hwnd_winamp,WM_WA_IPC,0,IPC_GET_REPEAT);
-**
-** IPC_GET_REPEAT returns the status of the Repeat option (1 if set)
-*/
-
-
-#define IPC_SET_SHUFFLE 252
-/* (requires Winamp 2.4+)
-** SendMessage(hwnd_winamp,WM_WA_IPC,value,IPC_SET_SHUFFLE);
-**
-** IPC_SET_SHUFFLE sets the status of the Shuffle option (1 to turn it on)
-*/
-
-
-#define IPC_SET_REPEAT 253
-/* (requires Winamp 2.4+)
-** SendMessage(hwnd_winamp,WM_WA_IPC,value,IPC_SET_REPEAT);
-**
-** IPC_SET_REPEAT sets the status of the Repeat option (1 to turn it on)
-*/
-
-
-#define IPC_ENABLEDISABLE_ALL_WINDOWS 259 // 0xdeadbeef to disable
-/* (requires Winamp 2.9+)
-** SendMessage(hwnd_winamp,WM_WA_IPC,enable?0:0xdeadbeef,IPC_MBOPENREAL);
-** sending with 0xdeadbeef as the param disables all winamp windows, 
-** any other values will enable all winamp windows.
-*/
-
-
-#define IPC_GETWND 260
-/* (requires Winamp 2.9+)
-** HWND h=SendMessage(hwnd_winamp,WM_WA_IPC,IPC_GETWND_xxx,IPC_GETWND);
-** returns the HWND of the window specified.
-*/
-  #define IPC_GETWND_EQ 0 // use one of these for the param
-  #define IPC_GETWND_PE 1
-  #define IPC_GETWND_MB 2
-  #define IPC_GETWND_VIDEO 3
-#define IPC_ISWNDVISIBLE 261 // same param as IPC_GETWND
-
-
-
-
-/************************************************************************
-***************** in-process only (WE LOVE PLUGINS)
-************************************************************************/
-
-
-#define IPC_SETSKIN 200
-/* (requires Winamp 2.04+, only usable from plug-ins (not external apps))
-** SendMessage(hwnd_winamp,WM_WA_IPC,(WPARAM)"skinname",IPC_SETSKIN);
-** IPC_SETSKIN sets the current skin to "skinname". Note that skinname 
-** can be the name of a skin, a skin .zip file, with or without path. 
-** If path isn't specified, the default search path is the winamp skins 
-** directory.
-*/
-
-
-#define IPC_GETSKIN 201
-/* (requires Winamp 2.04+, only usable from plug-ins (not external apps))
-** SendMessage(hwnd_winamp,WM_WA_IPC,(WPARAM)skinname_buffer,IPC_GETSKIN);
-** IPC_GETSKIN puts the directory where skin bitmaps can be found 
-** into  skinname_buffer.
-** skinname_buffer must be MAX_PATH characters in length.
-** When using a .zip'd skin file, it'll return a temporary directory
-** where the ZIP was decompressed.
-*/
-
-
-#define IPC_EXECPLUG 202
-/* (requires Winamp 2.04+, only usable from plug-ins (not external apps))
-** SendMessage(hwnd_winamp,WM_WA_IPC,(WPARAM)"vis_file.dll",IPC_EXECPLUG);
-** IPC_EXECPLUG executes a visualization plug-in pointed to by WPARAM.
-** the format of this string can be:
-** "vis_whatever.dll"
-** "vis_whatever.dll,0" // (first mod, file in winamp plug-in dir)
-** "C:\\dir\\vis_whatever.dll,1" 
-*/
-
-
-#define IPC_GETPLAYLISTFILE 211
-/* (requires Winamp 2.04+, only usable from plug-ins (not external apps))
-** char *name=SendMessage(hwnd_winamp,WM_WA_IPC,index,IPC_GETPLAYLISTFILE);
-** IPC_GETPLAYLISTFILE gets the filename of the playlist entry [index].
-** returns a pointer to it. returns NULL on error.
-*/
-
-
-#define IPC_GETPLAYLISTTITLE 212
-/* (requires Winamp 2.04+, only usable from plug-ins (not external apps))
-** char *name=SendMessage(hwnd_winamp,WM_WA_IPC,index,IPC_GETPLAYLISTTITLE);
-**
-** IPC_GETPLAYLISTTITLE gets the title of the playlist entry [index].
-** returns a pointer to it. returns NULL on error.
-*/
-
-
-#define IPC_GETHTTPGETTER 240
-/* retrieves a function pointer to a HTTP retrieval function.
-** if this is unsupported, returns 1 or 0.
-** the function should be:
-** int (*httpRetrieveFile)(HWND hwnd, char *url, char *file, char *dlgtitle);
-** if you call this function, with a parent window, a URL, an output file, and a dialog title,
-** it will return 0 on successful download, 1 on error.
-*/
-
-
-#define IPC_MBOPEN 241
-/* (requires Winamp 2.05+)
-** SendMessage(hwnd_winamp,WM_WA_IPC,0,IPC_MBOPEN);
-** SendMessage(hwnd_winamp,WM_WA_IPC,(WPARAM)url,IPC_MBOPEN);
-** IPC_MBOPEN will open a new URL in the minibrowser. if url is NULL, it will open the Minibrowser window.
-*/
-
-
-
-#define IPC_CHANGECURRENTFILE 245
-/* (requires Winamp 2.05+)
-** SendMessage(hwnd_winamp,WM_WA_IPC,(WPARAM)file,IPC_CHANGECURRENTFILE);
-** IPC_CHANGECURRENTFILE will set the current playlist item.
-*/
-
-
-#define IPC_GETMBURL 246
-/* (requires Winamp 2.2+)
-** char buffer[4096]; // Urls can be VERY long
-** SendMessage(hwnd_winamp,WM_WA_IPC,(WPARAM)buffer,IPC_GETMBURL);
-** IPC_GETMBURL will retrieve the current Minibrowser URL into buffer.
-** buffer must be at least 4096 bytes long.
-*/
-
-
-#define IPC_MBBLOCK 248
-/* (requires Winamp 2.4+)
-** SendMessage(hwnd_winamp,WM_WA_IPC,value,IPC_MBBLOCK);
-**
-** IPC_MBBLOCK will block the Minibrowser from updates if value is set to 1
-*/
-
-#define IPC_MBOPENREAL 249
-/* (requires Winamp 2.4+)
-** SendMessage(hwnd_winamp,WM_WA_IPC,(WPARAM)url,IPC_MBOPENREAL);
-**
-** IPC_MBOPENREAL works the same as IPC_MBOPEN except that it will works even if 
-** IPC_MBBLOCK has been set to 1
-*/
-
-#define IPC_ADJUST_OPTIONSMENUPOS 280
-/* (requires Winamp 2.9+)
-** int newpos=SendMessage(hwnd_winamp,WM_WA_IPC,(WPARAM)adjust_offset,IPC_ADJUST_OPTIONSMENUPOS);
-** moves where winamp expects the Options menu in the main menu. Useful if you wish to insert a
-** menu item above the options/skins/vis menus.
-*/
-
-#define IPC_GET_HMENU 281
-/* (requires Winamp 2.9+)
-** HMENU hMenu=SendMessage(hwnd_winamp,WM_WA_IPC,(WPARAM)0,IPC_GET_HMENU);
-** values for data:
-** 0 : main popup menu 
-** 1 : main menubar file menu
-** 2 : main menubar options menu
-** 3 : main menubar windows menu
-** 4 : main menubar help menu
-** other values will return NULL.
-*/
-
-#define IPC_GET_EXTENDED_FILE_INFO 290 //pass a pointer to the following struct in wParam
-#define IPC_GET_EXTENDED_FILE_INFO_HOOKABLE 296
-/* (requires Winamp 2.9+)
-** to use, create an extendedFileInfoStruct, point the values filename and metadata to the
-** filename and metadata field you wish to query, and ret to a buffer, with retlen to the
-** length of that buffer, and then SendMessage(hwnd_winamp,WM_WA_IPC,&struct,IPC_GET_EXTENDED_FILE_INFO);
-** the results should be in the buffer pointed to by ret.
-** returns 1 if the decoder supports a getExtendedFileInfo method
-*/
-typedef struct {
-  char *filename;
-  char *metadata;
-  char *ret;
-  int retlen;
-} extendedFileInfoStruct;
-
-#define IPC_GET_BASIC_FILE_INFO 291 //pass a pointer to the following struct in wParam
-typedef struct {
-  char *filename;
-
-  int quickCheck; // set to 0 to always get, 1 for quick, 2 for default (if 2, quickCheck will be set to 0 if quick wasnot used)
-
-  // filled in by winamp
-  int length;
-  char *title;
-  int titlelen;
-} basicFileInfoStruct;
-
-#define IPC_GET_EXTLIST 292 //returns doublenull delimited. GlobalFree() it when done. if data is 0, returns raw extlist, if 1, returns something suitable for getopenfilename
-
-#define IPC_INFOBOX 293
-typedef struct {
-  HWND parent;
-  char *filename;
-} infoBoxParam;
-
-#define IPC_SET_EXTENDED_FILE_INFO 294 //pass a pointer to the a extendedFileInfoStruct in wParam
-/* (requires Winamp 2.9+)
-** to use, create an extendedFileInfoStruct, point the values filename and metadata to the
-** filename and metadata field you wish to write in ret. (retlen is not used). and then 
-** SendMessage(hwnd_winamp,WM_WA_IPC,&struct,IPC_SET_EXTENDED_FILE_INFO);
-** returns 1 if the metadata is supported
-** Call IPC_WRITE_EXTENDED_FILE_INFO once you're done setting all the metadata you want to update
-*/
-
-#define IPC_WRITE_EXTENDED_FILE_INFO 295 
-/* (requires Winamp 2.9+)
-** writes all the metadata set thru IPC_SET_EXTENDED_FILE_INFO to the file
-** returns 1 if the file has been successfully updated, 0 if error
-*/
-
-#define IPC_FORMAT_TITLE 297
-typedef struct 
-{
-  char *spec; // NULL=default winamp spec
-  void *p;
-
-  char *out;
-  int out_len;
-
-  char * (*TAGFUNC)(char * tag, void * p); //return 0 if not found
-  void (*TAGFREEFUNC)(char * tag,void * p);
-} waFormatTitle;
-
-#define IPC_GETUNCOMPRESSINTERFACE 331
-/* returns a function pointer to uncompress().
-** int (*uncompress)(unsigned char *dest, unsigned long *destLen, const unsigned char *source, unsigned long sourceLen);
-** right out of zlib, useful for decompressing zlibbed data.
-** if you pass the parm of 0x10100000, it will return a wa_inflate_struct * to an inflate API.
-*/
-
-typedef struct {
-  int (*inflateReset)(void *strm);
-  int (*inflateInit_)(void *strm,const char *version, int stream_size);
-  int (*inflate)(void *strm, int flush);
-  int (*inflateEnd)(void *strm);
-  unsigned long (*crc32)(unsigned long crc, const unsigned  char *buf, unsigned int len);
-} wa_inflate_struct;
-
-
-#define IPC_ADD_PREFS_DLG 332
-#define IPC_REMOVE_PREFS_DLG 333
-/* (requires Winamp 2.9+)
-** to use, allocate a prefsDlgRec structure (either on the heap or some global
-** data, but NOT on the stack), initialze the members:
-** hInst to the DLL instance where the resource is located
-** dlgID to the ID of the dialog,
-** proc to the window procedure for the dialog
-** name to the name of the prefs page in the prefs.
-** where to 0 (eventually we may add more options)
-** then, SendMessage(hwnd_winamp,WM_WA_IPC,&prefsRec,IPC_ADD_PREFS_DLG);
-**
-** you can also IPC_REMOVE_PREFS_DLG with the address of the same prefsRec,
-** but you shouldn't really ever have to.
-**
-*/
-#define IPC_OPENPREFSTOPAGE 380 // pass an id of a builtin page, or a &prefsDlgRec of prefs page to open
-
-typedef struct _prefsDlgRec {
-  HINSTANCE hInst;
-  int dlgID;
-  void *proc;
-
-  char *name;
-  int where; // 0 for options, 1 for plugins, 2 for skins, 3 for bookmarks, 4 for prefs
-
-
-  int _id;
-  struct _prefsDlgRec *next;
-} prefsDlgRec;
-
-
-#define IPC_GETINIFILE 334 // returns a pointer to winamp.ini
-#define IPC_GETINIDIRECTORY 335 // returns a pointer to the directory to put config files in (if you dont want to use winamp.ini)
-
-#define IPC_SPAWNBUTTONPOPUP 361 // param =
-// 0 = eject
-// 1 = previous
-// 2 = next
-// 3 = pause
-// 4 = play
-// 5 = stop
-
-#define IPC_OPENURLBOX 360 // pass a HWND to a parent, returns a HGLOBAL that needs to be freed with GlobalFree(), if successful
-#define IPC_OPENFILEBOX 362 // pass a HWND to a parent
-#define IPC_OPENDIRBOX 363 // pass a HWND to a parent
-
-// pass an HWND to a parent. call this if you take over the whole UI so that the dialogs are not appearing on the
-// bottom right of the screen since the main winamp window is at 3000x3000, call again with NULL to reset
-#define IPC_SETDIALOGBOXPARENT 364 
-
-
-
-// pass 0 for a copy of the skin HBITMAP
-// pass 1 for name of font to use for playlist editor likeness
-// pass 2 for font charset
-// pass 3 for font size
-#define IPC_GET_GENSKINBITMAP 503
-
-
-#define IPC_GET_EMBEDIF 505 // pass an embedWindowState
-// returns an HWND embedWindow(embedWindowState *); if the data is NULL, otherwise returns the HWND directly
-typedef struct
-{
-  HWND me; //hwnd of the window
-
-  int flags;
-
-  RECT r;
-
-  void *user_ptr; // for application use
-
-  int extra_data[64]; // for internal winamp use
-} embedWindowState;
-
-#define EMBED_FLAGS_NORESIZE 1 // set this bit in embedWindowState.flags to keep window from being resizable
-#define EMBED_FLAGS_NOTRANSPARENCY 2 // set this bit in embedWindowState.flags to make gen_ff turn transparency off for this wnd
-
-
-#define IPC_EMBED_ENUM 532
-typedef struct embedEnumStruct
-{
-  int (*enumProc)(embedWindowState *ws, struct embedEnumStruct *param); // return 1 to abort
-  int user_data; // or more :)
-} embedEnumStruct;
-  // pass 
-
-#define IPC_EMBED_ISVALID 533
-
-#define IPC_CONVERTFILE 506
-/* (requires Winamp 2.92+)
-** Converts a given file to a different format (PCM, MP3, etc...)
-** To use, pass a pointer to a waFileConvertStruct struct
-** This struct can be either on the heap or some global
-** data, but NOT on the stack. At least, until the conversion is done.
-**
-** eg: SendMessage(hwnd_winamp,WM_WA_IPC,&myConvertStruct,IPC_CONVERTFILE);
-**
-** Return value:
-** 0: Can't start the conversion. Look at myConvertStruct->error for details.
-** 1: Conversion started. Status messages will be sent to the specified callbackhwnd.
-**    Be sure to call IPC_CONVERTFILE_END when your callback window receives the
-**    IPC_CB_CONVERT_DONE message.
-*/
-typedef struct 
-{
-  char *sourcefile;  // "c:\\source.mp3"
-  char *destfile;    // "c:\\dest.pcm"
-  int destformat[8]; // like 'PCM ',srate,nch,bps
-  HWND callbackhwnd; // window that will receive the IPC_CB_CONVERT notification messages
-  
-  //filled in by winamp.exe
-  char *error;        //if IPC_CONVERTFILE returns 0, the reason will be here
-
-  int bytes_done;     //you can look at both of these values for speed statistics
-  int bytes_total;
-  int bytes_out;
-
-  int killswitch;     // don't set it manually, use IPC_CONVERTFILE_END
-  int extra_data[64]; // for internal winamp use
-} convertFileStruct;
-
-#define IPC_CONVERTFILE_END 507
-/* (requires Winamp 2.92+)
-** Stop/ends a convert process started from IPC_CONVERTFILE
-** You need to call this when you receive the IPC_CB_CONVERTDONE message or when you
-** want to abort a conversion process
-**
-** eg: SendMessage(hwnd_winamp,WM_WA_IPC,&myConvertStruct,IPC_CONVERTFILE_END);
-**
-** No return value
-*/
-
-typedef struct {
-  HWND hwndParent;
-  int format;
-
-  //filled in by winamp.exe
-  HWND hwndConfig;
-  int extra_data[8];
-} convertConfigStruct;
-#define IPC_CONVERT_CONFIG 508
-#define IPC_CONVERT_CONFIG_END 509
-
-typedef struct
-{
-  void (*enumProc)(int user_data, const char *desc, int fourcc);
-  int user_data;
-} converterEnumFmtStruct;
-#define IPC_CONVERT_CONFIG_ENUMFMTS 510
-/* (requires Winamp 2.92+)
-*/
-
-
-typedef struct
-{
-  char cdletter;
-  char *playlist_file;
-  HWND callback_hwnd;
-
-  //filled in by winamp.exe
-  char *error;
-} burnCDStruct;
-#define IPC_BURN_CD 511
-/* (requires Winamp 5.0+)
-*/
-
-typedef struct
-{
-  convertFileStruct *cfs;
-  int priority;
-} convertSetPriority;
-#define IPC_CONVERT_SET_PRIORITY 512
-
-typedef struct
-{
-  char *filename;
-  char *title; // 2048 bytes
-  int length;
-  int force_useformatting; // can set this to 1 if you want to force a url to use title formatting shit
-} waHookTitleStruct;
-// return TRUE if you hook this
-#define IPC_HOOK_TITLES 850
-
-#define IPC_GETSADATAFUNC 800 
-// 0: returns a char *export_sa_get() that returns 150 bytes of data
-// 1: returns a export_sa_setreq(int want);
-
-#define IPC_ISMAINWNDVISIBLE 900
-
-
-#define IPC_SETPLEDITCOLORS 920
-typedef struct
-{
-  int numElems;
-  int *elems;
-  HBITMAP bm; // set if you want to override
-} waSetPlColorsStruct;
-
-
-// the following IPC use waSpawnMenuParms as parameter
-#define IPC_SPAWNEQPRESETMENU 933
-#define IPC_SPAWNFILEMENU 934 //menubar
-#define IPC_SPAWNOPTIONSMENU 935 //menubar
-#define IPC_SPAWNWINDOWSMENU 936 //menubar
-#define IPC_SPAWNHELPMENU 937 //menubar
-#define IPC_SPAWNPLAYMENU 938 //menubar
-#define IPC_SPAWNPEFILEMENU 939 //menubar
-#define IPC_SPAWNPEPLAYLISTMENU 940 //menubar
-#define IPC_SPAWNPESORTMENU 941 //menubar
-#define IPC_SPAWNPEHELPMENU 942 //menubar
-#define IPC_SPAWNMLFILEMENU 943 //menubar
-#define IPC_SPAWNMLVIEWMENU 944 //menubar
-#define IPC_SPAWNMLHELPMENU 945 //menubar
-#define IPC_SPAWNPELISTOFPLAYLISTS 946
-
-typedef struct
-{
-  HWND wnd;
-  int xpos; // in screen coordinates
-  int ypos;
-} waSpawnMenuParms;
-
-// waSpawnMenuParms2 is used by the menubar submenus
-typedef struct
-{
-  HWND wnd;
-  int xpos; // in screen coordinates
-  int ypos;
-  int width;
-  int height;
-} waSpawnMenuParms2;
-
-
-// system tray sends this (you might want to simulate it)
-#define WM_WA_SYSTRAY WM_USER+1
-
-// input plugins send this when they are done playing back
-#define WM_WA_MPEG_EOF WM_USER+2
-
-
-
-//// video stuff
-
-#define IPC_IS_PLAYING_VIDEO 501 // returns >1 if playing, 0 if not, 1 if old version (so who knows):)
-#define IPC_GET_IVIDEOOUTPUT 500 // see below for IVideoOutput interface
-#define VIDEO_MAKETYPE(A,B,C,D) ((A) | ((B)<<8) | ((C)<<16) | ((D)<<24))
-#define VIDUSER_SET_INFOSTRING 0x1000
-#define VIDUSER_GET_VIDEOHWND  0x1001
-#define VIDUSER_SET_VFLIP      0x1002
-
-#ifndef NO_IVIDEO_DECLARE
-#ifdef __cplusplus
-
-class VideoOutput;
-class SubsItem;
-
-typedef	struct {
-	unsigned char*	baseAddr;
-	long			rowBytes;
-} YV12_PLANE;
-
-typedef	struct {
-	YV12_PLANE	y;
-	YV12_PLANE	u;
-	YV12_PLANE	v;
-} YV12_PLANES;
-
-class IVideoOutput
-{
-  public:
-    virtual ~IVideoOutput() { }
-    virtual int open(int w, int h, int vflip, double aspectratio, unsigned int fmt)=0;
-    virtual void setcallback(LRESULT (*msgcallback)(void *token, HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam), void *token) { }
-    virtual void close()=0;
-    virtual void draw(void *frame)=0;
-    virtual void drawSubtitle(SubsItem *item) { }
-    virtual void showStatusMsg(const char *text) { }
-    virtual int get_latency() { return 0; }
-    virtual void notifyBufferState(int bufferstate) { } /* 0-255*/
-
-    virtual int extended(int param1, int param2, int param3) { return 0; } // Dispatchable, eat this!
-};
-#endif //cplusplus
-#endif//NO_IVIDEO_DECLARE
-
-// these messages are callbacks that you can grab by subclassing the winamp window
-
-// wParam = 
-#define IPC_CB_WND_EQ 0 // use one of these for the param
-#define IPC_CB_WND_PE 1
-#define IPC_CB_WND_MB 2
-#define IPC_CB_WND_VIDEO 3
-#define IPC_CB_WND_MAIN 4
-
-#define IPC_CB_ONSHOWWND 600 
-#define IPC_CB_ONHIDEWND 601 
-
-#define IPC_CB_GETTOOLTIP 602
-
-#define IPC_CB_MISC 603
-    #define IPC_CB_MISC_TITLE 0
-    #define IPC_CB_MISC_VOLUME 1 // volume/pan
-    #define IPC_CB_MISC_STATUS 2
-    #define IPC_CB_MISC_EQ 3
-    #define IPC_CB_MISC_INFO 4
-    #define IPC_CB_MISC_VIDEOINFO 5
-
-#define IPC_CB_CONVERT_STATUS 604 // param value goes from 0 to 100 (percent)
-#define IPC_CB_CONVERT_DONE   605
-
-#define IPC_ADJUST_FFWINDOWSMENUPOS 606
-/* (requires Winamp 2.9+)
-** int newpos=SendMessage(hwnd_winamp,WM_WA_IPC,(WPARAM)adjust_offset,IPC_ADJUST_FFWINDOWSMENUPOS);
-** moves where winamp expects the freeform windows in the menubar windows main menu. Useful if you wish to insert a
-** menu item above extra freeform windows.
-*/
-
-#define IPC_ISDOUBLESIZE 608
-
-#define IPC_ADJUST_FFOPTIONSMENUPOS 609
-/* (requires Winamp 2.9+)
-** int newpos=SendMessage(hwnd_winamp,WM_WA_IPC,(WPARAM)adjust_offset,IPC_ADJUST_FFOPTIONSMENUPOS);
-** moves where winamp expects the freeform preferences item in the menubar windows main menu. Useful if you wish to insert a
-** menu item above preferences item.
-*/
-
-#define IPC_GETTIMEDISPLAYMODE 610 // returns 0 if displaying elapsed time or 1 if displaying remaining time
-
-#define IPC_SETVISWND 611 // param is hwnd, setting this allows you to receive ID_VIS_NEXT/PREVOUS/RANDOM/FS wm_commands
-#define ID_VIS_NEXT                     40382
-#define ID_VIS_PREV                     40383
-#define ID_VIS_RANDOM                   40384
-#define ID_VIS_FS                       40389
-#define ID_VIS_CFG                      40390
-#define ID_VIS_MENU                     40391
-
-#define IPC_GETVISWND 612 // returns the vis cmd handler hwnd
-#define IPC_ISVISRUNNING 613
-#define IPC_CB_VISRANDOM 628 // param is status of random
-
-#define IPC_SETIDEALVIDEOSIZE 614 // sent by winamp to winamp, trap it if you need it. width=HIWORD(param), height=LOWORD(param)
-
-#define IPC_GETSTOPONVIDEOCLOSE 615
-#define IPC_SETSTOPONVIDEOCLOSE 616
-
-typedef struct {
-  HWND hwnd;
-  int uMsg;
-  int wParam;
-  int lParam;
-} transAccelStruct;
-
-#define IPC_TRANSLATEACCELERATOR 617
-
-typedef struct {
-  int cmd;
-  int x;
-  int y;
-  int align;
-} windowCommand; // send this as param to an IPC_PLCMD, IPC_MBCMD, IPC_VIDCMD
-
-#define IPC_CB_ONTOGGLEAOT 618 
-
-#define IPC_GETPREFSWND 619
-
-#define IPC_SET_PE_WIDTHHEIGHT 620 // data is a pointer to a POINT structure that holds width & height
-
-#define IPC_GETLANGUAGEPACKINSTANCE 621
-
-#define IPC_CB_PEINFOTEXT 622 // data is a string, ie: "04:21/45:02"
-
-#define IPC_CB_OUTPUTCHANGED 623 // output plugin was changed in config
-
-#define IPC_GETOUTPUTPLUGIN 625
-
-#define IPC_SETDRAWBORDERS 626
-#define IPC_DISABLESKINCURSORS 627
-#define IPC_CB_RESETFONT 629
-
-#define IPC_IS_FULLSCREEN 630 // returns 1 if video or vis is in fullscreen mode
-#define IPC_SET_VIS_FS_FLAG 631 // a vis should send this message with 1/as param to notify winamp that it has gone to or has come back from fullscreen mode
-
-#define IPC_SHOW_NOTIFICATION 632
-
-#define IPC_GETSKININFO 633
-
-// >>>>>>>>>>> Next is 634
-
-#define IPC_PLCMD  1000 
-
-#define PLCMD_ADD  0
-#define PLCMD_REM  1
-#define PLCMD_SEL  2
-#define PLCMD_MISC 3
-#define PLCMD_LIST 4
-
-#define IPC_MBCMD  1001 
-
-#define MBCMD_BACK    0
-#define MBCMD_FORWARD 1
-#define MBCMD_STOP    2
-#define MBCMD_RELOAD  3
-#define MBCMD_MISC  4
-
-#define IPC_VIDCMD 1002 
-
-#define VIDCMD_FULLSCREEN 0
-#define VIDCMD_1X         1
-#define VIDCMD_2X         2
-#define VIDCMD_LIB        3
-#define VIDPOPUP_MISC     4
-
-#define IPC_MBURL       1003 //sets the URL
-#define IPC_MBGETCURURL 1004 //copies the current URL into wParam (have a 4096 buffer ready)
-#define IPC_MBGETDESC   1005 //copies the current URL description into wParam (have a 4096 buffer ready)
-#define IPC_MBCHECKLOCFILE 1006 //checks that the link file is up to date (otherwise updates it). wParam=parent HWND
-#define IPC_MBREFRESH   1007 //refreshes the "now playing" view in the library
-#define IPC_MBGETDEFURL 1008 //copies the default URL into wParam (have a 4096 buffer ready)
-
-#define IPC_STATS_LIBRARY_ITEMCNT 1300 // updates library count status
-
-// IPC 2000-3000 reserved for freeform messages, see gen_ff/ff_ipc.h
-#define IPC_FF_FIRST 2000
-#define IPC_FF_LAST  3000
-
-#define IPC_GETDROPTARGET 3001
-
-#define IPC_PLAYLIST_MODIFIED 3002 // sent to main wnd whenever the playlist is modified
-
-#define IPC_PLAYING_FILE 3003 // sent to main wnd with the file as parm whenever a file is played
-#define IPC_FILE_TAG_MAY_HAVE_UPDATED 3004 // sent to main wnd with the file as parm whenever a file tag might be updated
-
-
-#define IPC_ALLOW_PLAYTRACKING 3007
-// send nonzero to allow, zero to disallow
-
-#define IPC_HOOK_OKTOQUIT 3010 // return 0 to abort a quit, nonzero if quit is OK
-
-#define IPC_WRITECONFIG 3011 // pass 2 to write all, 1 to write playlist + common, 0 to write common+less common
-
-// pass a string to be the name to register, and returns a value > 65536, which is a unique value you can use
-// for custom WM_WA_IPC messages. 
-#define IPC_REGISTER_WINAMP_IPCMESSAGE 65536 
-
-/**************************************************************************/
-
-/*
-** Finally there are some WM_COMMAND messages that you can use to send 
-** Winamp misc commands.
-** 
-** To send these, use:
-**
-** SendMessage(hwnd_winamp, WM_COMMAND,command_name,0);
-*/
-
-#define WINAMP_OPTIONS_EQ               40036 // toggles the EQ window
-#define WINAMP_OPTIONS_PLEDIT           40040 // toggles the playlist window
-#define WINAMP_VOLUMEUP                 40058 // turns the volume up a little
-#define WINAMP_VOLUMEDOWN               40059 // turns the volume down a little
-#define WINAMP_FFWD5S                   40060 // fast forwards 5 seconds
-#define WINAMP_REW5S                    40061 // rewinds 5 seconds
-
-// the following are the five main control buttons, with optionally shift 
-// or control pressed
-// (for the exact functions of each, just try it out)
-#define WINAMP_BUTTON1                  40044
-#define WINAMP_BUTTON2                  40045
-#define WINAMP_BUTTON3                  40046
-#define WINAMP_BUTTON4                  40047
-#define WINAMP_BUTTON5                  40048
-#define WINAMP_BUTTON1_SHIFT            40144
-#define WINAMP_BUTTON2_SHIFT            40145
-#define WINAMP_BUTTON3_SHIFT            40146
-#define WINAMP_BUTTON4_SHIFT            40147
-#define WINAMP_BUTTON5_SHIFT            40148
-#define WINAMP_BUTTON1_CTRL             40154
-#define WINAMP_BUTTON2_CTRL             40155
-#define WINAMP_BUTTON3_CTRL             40156
-#define WINAMP_BUTTON4_CTRL             40157
-#define WINAMP_BUTTON5_CTRL             40158
-
-#define WINAMP_FILE_PLAY                40029 // pops up the load file(s) box
-#define WINAMP_FILE_DIR                 40187 // pops up the load directory box
-#define WINAMP_OPTIONS_PREFS            40012 // pops up the preferences
-#define WINAMP_OPTIONS_AOT              40019 // toggles always on top
-#define WINAMP_HELP_ABOUT               40041 // pops up the about box :)
-
-#define ID_MAIN_PLAY_AUDIOCD1           40323 // starts playing the audio CD in the first CD reader
-#define ID_MAIN_PLAY_AUDIOCD2           40323 // plays the 2nd
-#define ID_MAIN_PLAY_AUDIOCD3           40323 // plays the 3nd
-#define ID_MAIN_PLAY_AUDIOCD4           40323 // plays the 4nd
-
-// IDs 42000 to 45000 are reserved for gen_ff
-// IDs from 45000 to 57000 are reserved for library 
-
-#endif//_WA_IPC_H_
-
-/*
-** EOF.. Enjoy.
-*/
\ No newline at end of file