shithub: aacdec

Download patch

ref: d73787d5b9d14fe0086c0b0b3b6ec928dd3dbce6
parent: 8a8fa3b09ef3dc7dba3c763e078bceb403809b6d
author: menno <menno>
date: Thu Dec 26 12:35:17 EST 2002

Added foobar2000 plugin

diff: cannot open b/plugins/foo_mp4//null: file does not exist: 'b/plugins/foo_mp4//null'
--- /dev/null
+++ b/plugins/foo_mp4/compiling.txt
@@ -1,0 +1,3 @@
+How to compile foo_mp4.dll:
+Extract the 2 directories (\foobar2000, \pfc) from the foobar2000
+SDK to this directory, open the foo_mp4 project for VC and compile.
--- /dev/null
+++ b/plugins/foo_mp4/foo_mp4.cpp
@@ -1,0 +1,183 @@
+
+#include <mp4.h>
+#include <faad.h>
+#include "pfc/pfc.h"
+#include "foobar2000/SDK/input.h"
+
+class input_mp4 : public input
+{
+public:
+
+    virtual int test_filename(const WCHAR * fn,const WCHAR * ext) 
+    {
+        return !wcsicmp(ext,L"MP4");
+    }
+
+    virtual int open(reader * r,file_info * info,int full_open)
+    {
+        unsigned __int8 *buffer;
+        unsigned __int32 buffer_size;
+        unsigned __int8 channels;
+        faacDecConfigurationPtr config;
+
+        hDecoder = faacDecOpen();
+        if (!hDecoder) return 0;
+
+        config = faacDecGetCurrentConfiguration(hDecoder);
+        config->outputFormat = FAAD_FMT_FLOAT;
+        faacDecSetConfiguration(hDecoder, config);
+
+        char filename[_MAX_PATH];
+        int len = (wcslen(info->get_file_path())+1)*2;
+        WideCharToMultiByte(CP_ACP,0,info->get_file_path(),-1,filename,len,0,0);
+
+        hFile = MP4Read(filename, 0);
+        if (hFile == MP4_INVALID_FILE_HANDLE) return 0;
+
+        track = GetAACTrack(hFile);
+        if (track < 1) return 0;
+
+        buffer = NULL;
+        buffer_size = 0;
+        MP4GetTrackESConfiguration(hFile, track, &buffer, &buffer_size);
+        if (!buffer) return 0;
+
+        int rc = faacDecInit2(hDecoder, (unsigned char*)buffer, buffer_size,
+            (unsigned long*)&m_samplerate, (unsigned char*)&channels);
+        if (buffer) free(buffer);
+        if (rc < 0) return 0;
+
+        numSamples = MP4GetTrackNumberOfSamples(hFile, track);
+        sampleId = 1;
+
+        unsigned __int64 length = MP4GetTrackDuration(hFile, track);
+        __int64 sDuration = MP4ConvertFromTrackDuration(hFile, track,
+            length, MP4_SECS_TIME_SCALE);
+        info->set_length((double)sDuration);
+
+        info->info_set_int(L"bitrate",(__int64)MP4GetTrackIntegerProperty(hFile,
+            track, "mdia.minf.stbl.stsd.mp4a.esds.decConfigDescr.avgBitrate"));
+        info->info_set_int(L"channels", (__int64)channels);
+        info->info_set_int(L"samplerate", (__int64)m_samplerate);
+
+        return 1;
+    }
+
+    input_mp4()
+    {
+        hFile = MP4_INVALID_FILE_HANDLE;
+        hDecoder = NULL;
+    }
+
+    ~input_mp4()
+    {
+        if (hFile != MP4_INVALID_FILE_HANDLE)
+            MP4Close(hFile);
+        if (hDecoder)
+            faacDecClose(hDecoder);
+    }
+
+    virtual int run(audio_chunk * chunk)
+    {
+        faacDecFrameInfo frameInfo;
+        unsigned char *buffer;
+        unsigned __int32 buffer_size;
+        void *sample_buffer;
+
+        do {
+            buffer = NULL;
+            buffer_size = 0;
+
+            MP4ReadSample(hFile, track, sampleId,
+                (unsigned __int8**)&buffer, &buffer_size,
+                NULL, NULL, NULL, NULL);
+            sampleId++;
+
+            sample_buffer = faacDecDecode(hDecoder, &frameInfo, buffer, buffer_size);
+
+            if (buffer) free(buffer);
+
+        } while ((frameInfo.error == 0) && (frameInfo.samples == 0));
+
+        if (frameInfo.error || (sampleId > numSamples))
+            return 0;
+
+        chunk->data = (float*)sample_buffer;
+        chunk->samples = frameInfo.samples/frameInfo.channels;
+        chunk->nch = frameInfo.channels;
+        chunk->srate = m_samplerate;
+
+        return 1;
+    }
+
+    virtual int set_info(reader *r,const file_info * info)
+    {
+        return 1;
+    }
+
+    virtual int seek(double seconds)
+    {
+        MP4Duration duration;
+
+        duration = MP4ConvertToTrackDuration(hFile,
+            track, seconds, MP4_SECS_TIME_SCALE);
+        sampleId = MP4GetSampleIdFromTime(hFile,
+            track, duration, 0);
+
+        if (sampleId == MP4_INVALID_SAMPLE_ID)
+            sampleId = numSamples;
+
+        return 1;
+    }
+
+private:
+
+    MP4FileHandle hFile;
+    MP4SampleId sampleId, numSamples;
+    int track;
+
+    unsigned __int32 m_samplerate;
+
+    faacDecHandle hDecoder;
+
+
+    int GetAACTrack(MP4FileHandle infile)
+    {
+        /* find AAC track */
+        int i, rc;
+        int numTracks = MP4GetNumberOfTracks(infile, NULL, /* subType */ 0);
+
+        for (i = 0; i < numTracks; i++)
+        {
+            MP4TrackId trackId = MP4FindTrackId(infile, i, NULL, /* subType */ 0);
+            const char* trackType = MP4GetTrackType(infile, trackId);
+
+            if (!strcmp(trackType, MP4_AUDIO_TRACK_TYPE))
+            {
+                unsigned char *buff = NULL;
+                int buff_size = 0;
+                unsigned long dummy1_32;
+                unsigned char dummy2_8, dummy3_8, dummy4_8, dummy5_8, dummy6_8,
+                    dummy7_8, dummy8_8;
+                MP4GetTrackESConfiguration(infile, trackId,
+                    (unsigned __int8**)&buff, (unsigned __int32*)&buff_size);
+
+                if (buff)
+                {
+                    rc = AudioSpecificConfig(buff, buff_size, &dummy1_32, &dummy2_8,
+                        &dummy3_8, &dummy4_8, &dummy5_8, &dummy6_8, &dummy7_8, &dummy8_8);
+                    free(buff);
+
+                    if (rc < 0)
+                        return -1;
+                    return trackId;
+                }
+            }
+        }
+
+        /* can't decode this */
+        return -1;
+    }
+};
+
+static service_factory_t<input,input_mp4> foo;
--- /dev/null
+++ b/plugins/foo_mp4/foo_mp4.dsp
@@ -1,0 +1,207 @@
+# Microsoft Developer Studio Project File - Name="foo_mp4" - 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_mp4 - 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_mp4.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_mp4.mak" CFG="foo_mp4 - Win32 Debug"
+!MESSAGE 
+!MESSAGE Possible choices for configuration are:
+!MESSAGE 
+!MESSAGE "foo_mp4 - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "foo_mp4 - 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_mp4 - 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 /MT /W3 /GX /O2 /I "../../include" /I "../../common/mp4v2" /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 0x413 /d "NDEBUG"
+# ADD RSC /l 0x413 /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 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 /subsystem:windows /dll /machine:I386
+
+!ELSEIF  "$(CFG)" == "foo_mp4 - 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 /MTd /W3 /Gm /GX /ZI /Od /I "../../include" /I "../../common/mp4v2" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /GZ /c
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x413 /d "_DEBUG"
+# ADD RSC /l 0x413 /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 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 /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept
+
+!ENDIF 
+
+# Begin Target
+
+# Name "foo_mp4 - Win32 Release"
+# Name "foo_mp4 - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=.\foobar2000\component_client\component_client.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\foo_mp4.cpp
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=.\foobar2000\SDK\audio_chunk.h
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\..\..\Program Files\DXSDK\include\basetsd.h"
+# End Source File
+# Begin Source File
+
+SOURCE=.\pfc\cfg_memblock.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\pfc\cfg_var.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\foobar2000\SDK\component.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\pfc\critsec.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\faad.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\foobar2000\SDK\file_info.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\foobar2000\SDK\foobar2000.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\pfc\grow_buf.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\foobar2000\SDK\input.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\foobar2000\SDK\interface_helper.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\pfc\mem_block.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\pfc\mem_block_mgr.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\common\mp4v2\mp4.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\common\mp4v2\mpeg4ip.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\pfc\pfc.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\foobar2000\SDK\playlist_entry.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\pfc\ptr_list.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\foobar2000\SDK\reader.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\foobar2000\SDK\service.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\pfc\string_unicode.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\common\mp4v2\systems.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\common\mp4v2\win32_ver.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
--- /dev/null
+++ b/plugins/foo_mp4/foo_mp4.dsw
@@ -1,0 +1,89 @@
+Microsoft Developer Studio Workspace File, Format Version 6.00
+# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
+
+###############################################################################
+
+Project: "foo_mp4"=.\foo_mp4.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+    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 pfc_unicode
+    End Project Dependency
+    Begin Project Dependency
+    Project_Dep_Name foobar2000_SDK
+    End Project Dependency
+}}}
+
+###############################################################################
+
+Project: "foobar2000_SDK"=.\foobar2000\SDK\foobar2000_SDK.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "libfaad"=..\..\libfaad\libfaad.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "libmp4v2_st"=..\..\common\mp4v2\libmp4v2_st60.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "pfc_unicode"=.\pfc\pfc_unicode.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Global:
+
+Package=<5>
+{{{
+}}}
+
+Package=<3>
+{{{
+}}}
+
+###############################################################################
+
--- /dev/null
+++ b/plugins/foo_mp4/foo_mp4.sln
@@ -1,0 +1,60 @@
+Microsoft Visual Studio Solution File, Format Version 7.00
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "foo_mp4", "foo_mp4.vcproj", "{5CEB23D7-5BDB-4D77-978A-D5B8572843FF}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "foobar2000_SDK", "foobar2000\SDK\foobar2000_SDK.vcproj", "{409102E1-0B45-41CD-A3F8-C37371520D9B}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libfaad", "..\..\libfaad\libfaad.vcproj", "{AB39547E-6CAC-4E25-8BC4-C97EFC144800}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libmp4v2_st", "..\..\common\mp4v2\libmp4v2_st60.vcproj", "{0842E354-7635-4B5D-8709-9A373ED27DCA}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pfc_unicode", "pfc\pfc_unicode.vcproj", "{5C9C90BE-0FEA-4C67-9A4C-C2513C2E27C4}"
+EndProject
+Global
+	GlobalSection(SolutionConfiguration) = preSolution
+		ConfigName.0 = Debug
+		ConfigName.1 = Release
+		ConfigName.2 = Release ANSI
+	EndGlobalSection
+	GlobalSection(ProjectDependencies) = postSolution
+		{5CEB23D7-5BDB-4D77-978A-D5B8572843FF}.0 = {409102E1-0B45-41CD-A3F8-C37371520D9B}
+		{5CEB23D7-5BDB-4D77-978A-D5B8572843FF}.1 = {5C9C90BE-0FEA-4C67-9A4C-C2513C2E27C4}
+		{5CEB23D7-5BDB-4D77-978A-D5B8572843FF}.2 = {AB39547E-6CAC-4E25-8BC4-C97EFC144800}
+		{5CEB23D7-5BDB-4D77-978A-D5B8572843FF}.3 = {0842E354-7635-4B5D-8709-9A373ED27DCA}
+	EndGlobalSection
+	GlobalSection(ProjectConfiguration) = postSolution
+		{5CEB23D7-5BDB-4D77-978A-D5B8572843FF}.Debug.ActiveCfg = Debug|Win32
+		{5CEB23D7-5BDB-4D77-978A-D5B8572843FF}.Debug.Build.0 = Debug|Win32
+		{5CEB23D7-5BDB-4D77-978A-D5B8572843FF}.Release.ActiveCfg = Release|Win32
+		{5CEB23D7-5BDB-4D77-978A-D5B8572843FF}.Release.Build.0 = Release|Win32
+		{5CEB23D7-5BDB-4D77-978A-D5B8572843FF}.Release ANSI.ActiveCfg = Release|Win32
+		{5CEB23D7-5BDB-4D77-978A-D5B8572843FF}.Release ANSI.Build.0 = Release|Win32
+		{409102E1-0B45-41CD-A3F8-C37371520D9B}.Debug.ActiveCfg = Debug|Win32
+		{409102E1-0B45-41CD-A3F8-C37371520D9B}.Debug.Build.0 = Debug|Win32
+		{409102E1-0B45-41CD-A3F8-C37371520D9B}.Release.ActiveCfg = Release|Win32
+		{409102E1-0B45-41CD-A3F8-C37371520D9B}.Release.Build.0 = Release|Win32
+		{409102E1-0B45-41CD-A3F8-C37371520D9B}.Release ANSI.ActiveCfg = Release|Win32
+		{409102E1-0B45-41CD-A3F8-C37371520D9B}.Release ANSI.Build.0 = Release|Win32
+		{AB39547E-6CAC-4E25-8BC4-C97EFC144800}.Debug.ActiveCfg = Debug|Win32
+		{AB39547E-6CAC-4E25-8BC4-C97EFC144800}.Debug.Build.0 = Debug|Win32
+		{AB39547E-6CAC-4E25-8BC4-C97EFC144800}.Release.ActiveCfg = Release|Win32
+		{AB39547E-6CAC-4E25-8BC4-C97EFC144800}.Release.Build.0 = Release|Win32
+		{AB39547E-6CAC-4E25-8BC4-C97EFC144800}.Release ANSI.ActiveCfg = Release|Win32
+		{AB39547E-6CAC-4E25-8BC4-C97EFC144800}.Release ANSI.Build.0 = Release|Win32
+		{0842E354-7635-4B5D-8709-9A373ED27DCA}.Debug.ActiveCfg = Debug|Win32
+		{0842E354-7635-4B5D-8709-9A373ED27DCA}.Debug.Build.0 = Debug|Win32
+		{0842E354-7635-4B5D-8709-9A373ED27DCA}.Release.ActiveCfg = Release|Win32
+		{0842E354-7635-4B5D-8709-9A373ED27DCA}.Release.Build.0 = Release|Win32
+		{0842E354-7635-4B5D-8709-9A373ED27DCA}.Release ANSI.ActiveCfg = Release|Win32
+		{0842E354-7635-4B5D-8709-9A373ED27DCA}.Release ANSI.Build.0 = Release|Win32
+		{5C9C90BE-0FEA-4C67-9A4C-C2513C2E27C4}.Debug.ActiveCfg = Debug|Win32
+		{5C9C90BE-0FEA-4C67-9A4C-C2513C2E27C4}.Debug.Build.0 = Debug|Win32
+		{5C9C90BE-0FEA-4C67-9A4C-C2513C2E27C4}.Release.ActiveCfg = Release|Win32
+		{5C9C90BE-0FEA-4C67-9A4C-C2513C2E27C4}.Release.Build.0 = Release|Win32
+		{5C9C90BE-0FEA-4C67-9A4C-C2513C2E27C4}.Release ANSI.ActiveCfg = Release ANSI|Win32
+		{5C9C90BE-0FEA-4C67-9A4C-C2513C2E27C4}.Release ANSI.Build.0 = Release ANSI|Win32
+	EndGlobalSection
+	GlobalSection(ExtensibilityGlobals) = postSolution
+	EndGlobalSection
+	GlobalSection(ExtensibilityAddIns) = postSolution
+	EndGlobalSection
+EndGlobal
--- /dev/null
+++ b/plugins/foo_mp4/foo_mp4.vcproj
@@ -1,0 +1,197 @@
+<?xml version="1.0" encoding = "Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="7.00"
+	Name="foo_mp4"
+	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,../../common/mp4v2"
+				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS"
+				StringPooling="TRUE"
+				RuntimeLibrary="0"
+				EnableFunctionLevelLinking="TRUE"
+				UsePrecompiledHeader="2"
+				PrecompiledHeaderFile=".\Release/foo_mp4.pch"
+				AssemblerListingLocation=".\Release/"
+				ObjectFile=".\Release/"
+				ProgramDataBaseFileName=".\Release/"
+				WarningLevel="3"
+				SuppressStartupBanner="TRUE"
+				CompileAs="0"
+				AdditionalOptions=""/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalOptions="/MACHINE:I386"
+				AdditionalDependencies="ws2_32.lib odbc32.lib odbccp32.lib"
+				OutputFile=".\Release/foo_mp4.dll"
+				LinkIncremental="1"
+				SuppressStartupBanner="TRUE"
+				ProgramDatabaseFile=".\Release/foo_mp4.pdb"
+				SubSystem="2"
+				ImportLibrary=".\Release/foo_mp4.lib"/>
+			<Tool
+				Name="VCMIDLTool"
+				PreprocessorDefinitions="NDEBUG"
+				MkTypLibCompatible="TRUE"
+				SuppressStartupBanner="TRUE"
+				TargetEnvironment="1"
+				TypeLibraryName=".\Release/foo_mp4.tlb"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"
+				PreprocessorDefinitions="NDEBUG"
+				Culture="1043"/>
+			<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,../../common/mp4v2"
+				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="1"
+				UsePrecompiledHeader="2"
+				PrecompiledHeaderFile=".\Debug/foo_mp4.pch"
+				AssemblerListingLocation=".\Debug/"
+				ObjectFile=".\Debug/"
+				ProgramDataBaseFileName=".\Debug/"
+				WarningLevel="3"
+				SuppressStartupBanner="TRUE"
+				DebugInformationFormat="4"
+				CompileAs="0"
+				AdditionalOptions=""/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalOptions="/MACHINE:I386"
+				AdditionalDependencies="ws2_32.lib odbc32.lib odbccp32.lib"
+				OutputFile=".\Debug/foo_mp4.dll"
+				LinkIncremental="2"
+				SuppressStartupBanner="TRUE"
+				GenerateDebugInformation="TRUE"
+				ProgramDatabaseFile=".\Debug/foo_mp4.pdb"
+				SubSystem="2"
+				ImportLibrary=".\Debug/foo_mp4.lib"/>
+			<Tool
+				Name="VCMIDLTool"
+				PreprocessorDefinitions="_DEBUG"
+				MkTypLibCompatible="TRUE"
+				SuppressStartupBanner="TRUE"
+				TargetEnvironment="1"
+				TypeLibraryName=".\Debug/foo_mp4.tlb"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"
+				PreprocessorDefinitions="_DEBUG"
+				Culture="1043"/>
+			<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=".\foobar2000\component_client\component_client.cpp"/>
+			<File
+				RelativePath=".\foo_mp4.cpp"/>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl">
+			<File
+				RelativePath=".\foobar2000\SDK\audio_chunk.h"/>
+			<File
+				RelativePath="..\..\..\..\..\Program Files\DXSDK\include\basetsd.h"/>
+			<File
+				RelativePath=".\pfc\cfg_memblock.h"/>
+			<File
+				RelativePath=".\pfc\cfg_var.h"/>
+			<File
+				RelativePath=".\foobar2000\SDK\component.h"/>
+			<File
+				RelativePath=".\pfc\critsec.h"/>
+			<File
+				RelativePath="..\..\include\faad.h"/>
+			<File
+				RelativePath=".\foobar2000\SDK\file_info.h"/>
+			<File
+				RelativePath=".\foobar2000\SDK\foobar2000.h"/>
+			<File
+				RelativePath=".\pfc\grow_buf.h"/>
+			<File
+				RelativePath=".\foobar2000\SDK\input.h"/>
+			<File
+				RelativePath=".\foobar2000\SDK\interface_helper.h"/>
+			<File
+				RelativePath=".\pfc\mem_block.h"/>
+			<File
+				RelativePath=".\pfc\mem_block_mgr.h"/>
+			<File
+				RelativePath="..\..\common\mp4v2\mp4.h"/>
+			<File
+				RelativePath="..\..\common\mp4v2\mpeg4ip.h"/>
+			<File
+				RelativePath=".\pfc\pfc.h"/>
+			<File
+				RelativePath=".\foobar2000\SDK\playlist_entry.h"/>
+			<File
+				RelativePath=".\pfc\ptr_list.h"/>
+			<File
+				RelativePath=".\foobar2000\SDK\reader.h"/>
+			<File
+				RelativePath=".\foobar2000\SDK\service.h"/>
+			<File
+				RelativePath=".\pfc\string_unicode.h"/>
+			<File
+				RelativePath="..\..\common\mp4v2\systems.h"/>
+			<File
+				RelativePath="..\..\common\mp4v2\win32_ver.h"/>
+		</Filter>
+		<Filter
+			Name="Resource Files"
+			Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"/>
+	</Files>
+	<Globals/>
+</VisualStudioProject>