diff --git a/.gitignore b/.gitignore index d6f02fe1b9..cf8616676f 100644 --- a/.gitignore +++ b/.gitignore @@ -27,6 +27,7 @@ Xcode/Info.StepMania.plist Xcode/plistHelper.hpp src/version_updater/VersionUpdater src/generated +extern/mad-0.15.1b/config.h # Text Editor Based Items ___* @@ -183,4 +184,3 @@ BuildLog.htm *.swp *.pc *.d - diff --git a/StepmaniaCore.cmake b/StepmaniaCore.cmake index 2a9109f523..88a2f6171d 100644 --- a/StepmaniaCore.cmake +++ b/StepmaniaCore.cmake @@ -48,28 +48,51 @@ set_property(GLOBAL PROPERTY USE_FOLDERS ON) # Checks the standard include directories for c-style headers. # We may use C++ in this project, but the check works better with plain C headers. include(CheckIncludeFiles) -check_include_files(math.h HAVE_MATH_H) check_include_files(alloca.h HAVE_ALLOCA_H) +check_include_files(assert.h HAVE_ASSERT_H) +check_include_files(dlfcn.h HAVE_DLFCN_H) check_include_files(dirent.h HAVE_DIRENT_H) +check_include_files(errno.h HAVE_ERRNO_H) +check_include_files(fcntl.h HAVE_FCNTL_H) +check_include_files(float.h HAVE_FLOAT_H) check_include_files(inttypes.h HAVE_INTTYPES_H) +check_include_files(limits.h HAVE_LIMITS_H) +check_include_files(math.h HAVE_MATH_H) +check_include_files(memory.h HAVE_MEMORY_H) +check_include_files(stdarg.h HAVE_STDARG_H) +check_include_files(stddef.h HAVE_STDDEF_H) check_include_files(stdint.h HAVE_STDINT_H) +check_include_files(stdlib.h HAVE_STDLIB_H) +check_include_files(strings.h HAVE_STRINGS_H) +check_include_files(string.h HAVE_STRING_H) +check_include_files(unistd.h HAVE_UNISTD_H) +check_include_files(sys/param.h HAVE_SYS_PARAM_H) +check_include_files(sys/stat.h HAVE_SYS_STAT_H) +check_include_files(sys/types.h HAVE_SYS_TYPES_H) +check_include_files(sys/utsname.h HAVE_SYS_UTSNAME_H) +check_include_files(sys/wait.h HAVE_SYS_WAIT_H) + check_include_files(endian.h HAVE_ENDIAN_H) check_include_files(sys/endian.h HAVE_SYS_ENDIAN_H) check_include_files(machine/endian.h HAVE_MACHINE_ENDIAN_H) -check_include_files(sys/param.h HAVE_SYS_PARAM_H) -check_include_files(sys/utsname.h HAVE_SYS_UTSNAME_H) -check_include_files(fcntl.h HAVE_FCNTL_H) -check_include_files(unistd.h HAVE_UNISTD_H) + +if (HAVE_STDLIB_H AND HAVE_STDARG_H AND HAVE_STRING_H AND HAVE_FLOAT_H) + set(STDC_HEADERS 1) +endif() include(CheckFunctionExists) include(CheckSymbolExists) include(CheckCXXSymbolExists) + if (WIN32 AND MSVC) check_function_exists(_mkdir HAVE__MKDIR) check_function_exists(_snprintf HAVE__SNPRINTF) else() + check_function_exists(fcntl HAVE_FCNTL) + check_function_exists(fork HAVE_FORK) check_function_exists(mkdir HAVE_MKDIR) check_function_exists(snprintf HAVE_SNPRINTF) + check_function_exists(waitpid HAVE_WAITPID) endif() check_cxx_symbol_exists(powf cmath HAVE_POWF) check_cxx_symbol_exists(sqrtf cmath HAVE_SQRTF) @@ -85,6 +108,12 @@ check_symbol_exists(M_PI math.h HAVE_M_PI) # Checks to make it easier to work with 32-bit/64-bit builds if required. include(CheckTypeSize) +check_type_size(short SIZEOF_SHORT) +check_type_size(int SIZEOF_INT) +check_type_size(long SIZEOF_LONG) +check_type_size("long long" SIZEOF_LONG_LONG) +check_type_size(float SIZEOF_FLOAT) +check_type_size(double SIZEOF_DOUBLE) check_type_size(intptr_t SIZEOF_INTPTR_T) check_type_size(pid_t SIZEOF_PID_T) check_type_size(size_t SIZEOF_SIZE_T) diff --git a/extern/CMakeLists.txt b/extern/CMakeLists.txt index 46b483ab48..156882cb75 100644 --- a/extern/CMakeLists.txt +++ b/extern/CMakeLists.txt @@ -1,17 +1,17 @@ include(CMakeProject-lua.cmake) include(CMakeProject-glew.cmake) include(CMakeProject-json.cmake) +if (APPLE OR MSVC) + include(CMakeProject-mad.cmake) + include(CMakeProject-zlib.cmake) +endif() if (NOT SYSTEM_PCRE_FOUND) include(CMakeProject-pcre.cmake) endif() include(CMakeProject-tomcrypt.cmake) include(CMakeProject-tommath.cmake) -if (APPLE OR MSVC) - include(CMakeProject-zlib.cmake) -endif() include(CMakeProject-png.cmake) if (APPLE) include(CMakeProject-jpeg.cmake) - include(CMakeProject-mad.cmake) endif() diff --git a/extern/CMakeProject-mad.cmake b/extern/CMakeProject-mad.cmake index 4ed0dd47f9..28d0342977 100644 --- a/extern/CMakeProject-mad.cmake +++ b/extern/CMakeProject-mad.cmake @@ -1,52 +1,75 @@ +set(MAD_DIR "${SM_EXTERN_DIR}/mad-0.15.1b") + list(APPEND MAD_SRC - "mad-0.15.1b/bit.c" - "mad-0.15.1b/decoder.c" - "mad-0.15.1b/fixed.c" - "mad-0.15.1b/frame.c" - "mad-0.15.1b/huffman.c" - "mad-0.15.1b/layer12.c" - "mad-0.15.1b/layer3.c" - "mad-0.15.1b/stream.c" - "mad-0.15.1b/synth.c" - "mad-0.15.1b/timer.c" - "mad-0.15.1b/version.c" + "${MAD_DIR}/bit.c" + "${MAD_DIR}/decoder.c" + "${MAD_DIR}/fixed.c" + "${MAD_DIR}/frame.c" + "${MAD_DIR}/huffman.c" + "${MAD_DIR}/layer12.c" + "${MAD_DIR}/layer3.c" + "${MAD_DIR}/stream.c" + "${MAD_DIR}/synth.c" + "${MAD_DIR}/timer.c" + "${MAD_DIR}/version.c" ) list(APPEND MAD_HPP - "mad-0.15.1b/bit.h" - "mad-0.15.1b/decoder.h" - "mad-0.15.1b/fixed.h" - "mad-0.15.1b/frame.h" - "mad-0.15.1b/global.h" - "mad-0.15.1b/huffman.h" - "mad-0.15.1b/layer12.h" - "mad-0.15.1b/layer3.h" - "mad-0.15.1b/mad.h" - "mad-0.15.1b/stream.h" - "mad-0.15.1b/synth.h" - "mad-0.15.1b/timer.h" - "mad-0.15.1b/version.h" + "${MAD_DIR}/bit.h" + "${MAD_DIR}/config.h" + "${MAD_DIR}/decoder.h" + "${MAD_DIR}/fixed.h" + "${MAD_DIR}/frame.h" + "${MAD_DIR}/global.h" + "${MAD_DIR}/huffman.h" + "${MAD_DIR}/layer12.h" + "${MAD_DIR}/layer3.h" + "${MAD_DIR}/mad.h" + "${MAD_DIR}/stream.h" + "${MAD_DIR}/synth.h" + "${MAD_DIR}/timer.h" + "${MAD_DIR}/version.h" ) -source_group("" FILES ${MAD_SRC} ${MAD_HPP}) +list(APPEND MAD_DAT + "${MAD_DIR}/D.dat" + "${MAD_DIR}/imdct_s.dat" + "${MAD_DIR}/qc_table.dat" + "${MAD_DIR}/rq_table.dat" + "${MAD_DIR}/sf_table.dat" +) -add_library("mad" ${MAD_SRC} ${MAD_HPP}) +source_group("Source Files" FILES ${MAD_SRC}) +source_group("Header Files" FILES ${MAD_HPP}) +source_group("Data Files" FILES ${MAD_DAT}) + +add_library("mad" ${MAD_SRC} ${MAD_HPP} ${MAD_DAT}) set_property(TARGET "mad" PROPERTY FOLDER "External Libraries") disable_project_warnings("mad") +if(ENDIAN_BIG) + set(WORDS_BIGENDIAN 1) +endif() + +sm_add_compile_definition("mad" $<$:DEBUG>) +sm_add_compile_definition("mad" HAVE_CONFIG_H) + if(MSVC) sm_add_compile_definition("mad" _CRT_SECURE_NO_WARNINGS) + # TODO: Remove the need for this check since it's tied to 32-bit builds from first glance. + sm_add_compile_definition("mad" ASO_ZEROCHECK) + sm_add_compile_definition("mad" $<$:FPM_DEFAULT>) + sm_add_compile_definition("mad" $<$:FPM_INTEL>) + sm_add_compile_definition("mad" $<$:FPM_INTEL>) + sm_add_compile_definition("mad" $<$:FPM_INTEL>) + # TODO: Provide a proper define for inline. + sm_add_compile_definition("mad" inline=__inline) elseif(APPLE) - sm_add_compile_definition("mad" HAVE_ASSERT_H=1) - sm_add_compile_definition("mad" HAVE_DLFCN_H=1) - sm_add_compile_definition("mad" HAVE_ERRNO_H=1) - sm_add_compile_definition("mad" HAVE_FORK=1) - sm_add_compile_definition("mad" HAVE_INTTYPES_H=1) - sm_add_compile_definition("mad" HAVE_LIMITS_H=1) - sm_add_compile_definition("mad" HAVE_MEMORY_H=1) - sm_add_compile_definition("mad" HAVE_WAITPID=1) - sm_add_compile_definition("mad" SIZEOF_LONG=4) sm_add_compile_definition("mad" FPM_64BIT=1) -endif(MSVC) \ No newline at end of file +endif(MSVC) + +target_include_directories("mad" PUBLIC "${MAD_DIR}") + +configure_file("${SM_EXTERN_DIR}/config.mad.in.h" "${MAD_DIR}/config.h") diff --git a/extern/mad-0.15.1b/xboxmad/config.h b/extern/config.mad.in.h similarity index 65% rename from extern/mad-0.15.1b/xboxmad/config.h rename to extern/config.mad.in.h index 02683a5f81..fff0daed42 100644 --- a/extern/mad-0.15.1b/xboxmad/config.h +++ b/extern/config.mad.in.h @@ -1,5 +1,4 @@ -/* config.h. Generated by configure. */ -/* config.h.in. Generated from configure.ac by autoheader. */ +/* Auto-generated config.h file powered by cmake. */ /* Define to enable diagnostic debugging support. */ /* #undef DEBUG */ @@ -8,28 +7,28 @@ /* #undef EXPERIMENTAL */ /* Define to 1 if you have the header file. */ -#define HAVE_ASSERT_H 1 +#cmakedefine HAVE_ASSERT_H 1 /* Define to 1 if you have the header file. */ -/* #undef HAVE_DLFCN_H */ +#cmakedefine HAVE_DLFCN_H 1 /* Define to 1 if you have the header file. */ -#define HAVE_ERRNO_H 1 +#cmakedefine HAVE_ERRNO_H 1 /* Define to 1 if you have the `fcntl' function. */ -/* #undef HAVE_FCNTL */ +#cmakedefine HAVE_FCNTL 1 /* Define to 1 if you have the header file. */ -#define HAVE_FCNTL_H 1 +#cmakedefine HAVE_FCNTL_H 1 /* Define to 1 if you have the `fork' function. */ -/* #undef HAVE_FORK */ +#cmakedefine HAVE_FORK 1 /* Define to 1 if you have the header file. */ -#define HAVE_INTTYPES_H 1 +#cmakedefine HAVE_INTTYPES_H 1 /* Define to 1 if you have the header file. */ -#define HAVE_LIMITS_H 1 +#cmakedefine HAVE_LIMITS_H 1 /* Define if your MIPS CPU supports a 2-operand MADD16 instruction. */ /* #undef HAVE_MADD16_ASM */ @@ -38,37 +37,37 @@ /* #undef HAVE_MADD_ASM */ /* Define to 1 if you have the header file. */ -#define HAVE_MEMORY_H 1 +#cmakedefine HAVE_MEMORY_H 1 /* Define to 1 if you have the `pipe' function. */ -/* #undef HAVE_PIPE */ +#cmakedefine HAVE_PIPE 1 /* Define to 1 if you have the header file. */ -#define HAVE_STDINT_H 1 +#cmakedefine HAVE_STDINT_H 1 /* Define to 1 if you have the header file. */ -#define HAVE_STDLIB_H 1 +#cmakedefine HAVE_STDLIB_H 1 /* Define to 1 if you have the header file. */ -#define HAVE_STRINGS_H 1 +#cmakedefine HAVE_STRINGS_H 1 /* Define to 1 if you have the header file. */ -#define HAVE_STRING_H 1 +#cmakedefine HAVE_STRING_H 1 /* Define to 1 if you have the header file. */ -#define HAVE_SYS_STAT_H 1 +#cmakedefine HAVE_SYS_STAT_H 1 /* Define to 1 if you have the header file. */ -#define HAVE_SYS_TYPES_H 1 +#cmakedefine HAVE_SYS_TYPES_H 1 /* Define to 1 if you have that is POSIX.1 compatible. */ -/* #undef HAVE_SYS_WAIT_H */ +#cmakedefine HAVE_SYS_WAIT_H 1 /* Define to 1 if you have the header file. */ -/* #undef HAVE_UNISTD_H */ +#cmakedefine HAVE_UNISTD_H 1 /* Define to 1 if you have the `waitpid' function. */ -/* #undef HAVE_WAITPID */ +#cmakedefine HAVE_WAITPID 1 /* Define to disable debugging assertions. */ /* #undef NDEBUG */ @@ -87,44 +86,53 @@ /* #undef OPT_STRICT */ /* Name of package */ -#define PACKAGE "libmad" +/* #undef PACKAGE */ /* Define to the address where bug reports for this package should be sent. */ -#define PACKAGE_BUGREPORT "support@underbit.com" +/* #undef PACKAGE_BUGREPORT */ /* Define to the full name of this package. */ -#define PACKAGE_NAME "MPEG Audio Decoder" +/* #undef PACKAGE_NAME */ /* Define to the full name and version of this package. */ -#define PACKAGE_STRING "MPEG Audio Decoder 0.15.1b" +/* #undef PACKAGE_STRING */ /* Define to the one symbol short name of this package. */ -#define PACKAGE_TARNAME "libmad" +/* #undef PACKAGE_TARNAME */ /* Define to the version of this package. */ -#define PACKAGE_VERSION "0.15.1b" +/* #undef PACKAGE_VERSION */ /* The size of a `int', as computed by sizeof. */ -#define SIZEOF_INT 4 +#cmakedefine SIZEOF_INT ${SIZEOF_INT} /* The size of a `long', as computed by sizeof. */ -#define SIZEOF_LONG 4 +#cmakedefine SIZEOF_LONG ${SIZEOF_LONG} /* The size of a `long long', as computed by sizeof. */ -#define SIZEOF_LONG_LONG 8 +#cmakedefine SIZEOF_LONG_LONG ${SIZEOF_LONG_LONG} /* Define to 1 if you have the ANSI C header files. */ -#define STDC_HEADERS 1 +#cmakedefine STDC_HEADERS 1 /* Version number of package */ -#define VERSION "0.15.1b" +/* #undef VERSION */ + +/* Define to 1 if your processor stores words with the most significant byte + first (like Motorola and SPARC, unlike Intel and VAX). */ +#cmakedefine WORDS_BIGENDIAN 1 /* Define to empty if `const' does not conform to ANSI C. */ /* #undef const */ -/* Define as `__inline' if that's what the C compiler calls it, or to nothing - if it is not supported. */ -#define inline __inline +/* Define to `__inline__' or `__inline' if that's what the C compiler + calls it, or to nothing if 'inline' is not supported under any name. */ +/* #ifndef __cplusplus +#undef inline +#endif */ /* Define to `int' if does not define. */ -/* #undef pid_t */ +#cmakedefine HAVE_SIZEOF_PID_T 1 +#if !defined(HAVE_SIZEOF_PID_T) +typedef int pid_t; +#endif diff --git a/extern/mad-0.15.1b/msvc++/Makefile.am b/extern/mad-0.15.1b/msvc++/Makefile.am deleted file mode 100644 index 5750849707..0000000000 --- a/extern/mad-0.15.1b/msvc++/Makefile.am +++ /dev/null @@ -1,24 +0,0 @@ -## -## libmad - MPEG audio decoder library -## Copyright (C) 2000-2004 Underbit Technologies, Inc. -## -## 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -## -## $Id: Makefile.am 8581 2004-02-18 04:36:30Z gmaynard $ -## - -## Process this file with automake to produce Makefile.in - -EXTRA_DIST = mad.h config.h libmad.dsp diff --git a/extern/mad-0.15.1b/msvc++/Release/libmad.lib b/extern/mad-0.15.1b/msvc++/Release/libmad.lib deleted file mode 100644 index a45f463bff..0000000000 Binary files a/extern/mad-0.15.1b/msvc++/Release/libmad.lib and /dev/null differ diff --git a/extern/mad-0.15.1b/msvc++/config.h b/extern/mad-0.15.1b/msvc++/config.h deleted file mode 100644 index 02683a5f81..0000000000 --- a/extern/mad-0.15.1b/msvc++/config.h +++ /dev/null @@ -1,130 +0,0 @@ -/* config.h. Generated by configure. */ -/* config.h.in. Generated from configure.ac by autoheader. */ - -/* Define to enable diagnostic debugging support. */ -/* #undef DEBUG */ - -/* Define to enable experimental code. */ -/* #undef EXPERIMENTAL */ - -/* Define to 1 if you have the header file. */ -#define HAVE_ASSERT_H 1 - -/* Define to 1 if you have the header file. */ -/* #undef HAVE_DLFCN_H */ - -/* Define to 1 if you have the header file. */ -#define HAVE_ERRNO_H 1 - -/* Define to 1 if you have the `fcntl' function. */ -/* #undef HAVE_FCNTL */ - -/* Define to 1 if you have the header file. */ -#define HAVE_FCNTL_H 1 - -/* Define to 1 if you have the `fork' function. */ -/* #undef HAVE_FORK */ - -/* Define to 1 if you have the header file. */ -#define HAVE_INTTYPES_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_LIMITS_H 1 - -/* Define if your MIPS CPU supports a 2-operand MADD16 instruction. */ -/* #undef HAVE_MADD16_ASM */ - -/* Define if your MIPS CPU supports a 2-operand MADD instruction. */ -/* #undef HAVE_MADD_ASM */ - -/* Define to 1 if you have the header file. */ -#define HAVE_MEMORY_H 1 - -/* Define to 1 if you have the `pipe' function. */ -/* #undef HAVE_PIPE */ - -/* Define to 1 if you have the header file. */ -#define HAVE_STDINT_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_STDLIB_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_STRINGS_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_STRING_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_SYS_STAT_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_SYS_TYPES_H 1 - -/* Define to 1 if you have that is POSIX.1 compatible. */ -/* #undef HAVE_SYS_WAIT_H */ - -/* Define to 1 if you have the header file. */ -/* #undef HAVE_UNISTD_H */ - -/* Define to 1 if you have the `waitpid' function. */ -/* #undef HAVE_WAITPID */ - -/* Define to disable debugging assertions. */ -/* #undef NDEBUG */ - -/* Define to optimize for accuracy over speed. */ -/* #undef OPT_ACCURACY */ - -/* Define to optimize for speed over accuracy. */ -/* #undef OPT_SPEED */ - -/* Define to enable a fast subband synthesis approximation optimization. */ -/* #undef OPT_SSO */ - -/* Define to influence a strict interpretation of the ISO/IEC standards, even - if this is in opposition with best accepted practices. */ -/* #undef OPT_STRICT */ - -/* Name of package */ -#define PACKAGE "libmad" - -/* Define to the address where bug reports for this package should be sent. */ -#define PACKAGE_BUGREPORT "support@underbit.com" - -/* Define to the full name of this package. */ -#define PACKAGE_NAME "MPEG Audio Decoder" - -/* Define to the full name and version of this package. */ -#define PACKAGE_STRING "MPEG Audio Decoder 0.15.1b" - -/* Define to the one symbol short name of this package. */ -#define PACKAGE_TARNAME "libmad" - -/* Define to the version of this package. */ -#define PACKAGE_VERSION "0.15.1b" - -/* The size of a `int', as computed by sizeof. */ -#define SIZEOF_INT 4 - -/* The size of a `long', as computed by sizeof. */ -#define SIZEOF_LONG 4 - -/* The size of a `long long', as computed by sizeof. */ -#define SIZEOF_LONG_LONG 8 - -/* Define to 1 if you have the ANSI C header files. */ -#define STDC_HEADERS 1 - -/* Version number of package */ -#define VERSION "0.15.1b" - -/* Define to empty if `const' does not conform to ANSI C. */ -/* #undef const */ - -/* Define as `__inline' if that's what the C compiler calls it, or to nothing - if it is not supported. */ -#define inline __inline - -/* Define to `int' if does not define. */ -/* #undef pid_t */ diff --git a/extern/mad-0.15.1b/msvc++/libmad.dsp b/extern/mad-0.15.1b/msvc++/libmad.dsp deleted file mode 100644 index ef679375c7..0000000000 --- a/extern/mad-0.15.1b/msvc++/libmad.dsp +++ /dev/null @@ -1,213 +0,0 @@ -# Microsoft Developer Studio Project File - Name="libmad" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Static Library" 0x0104 - -CFG=libmad - 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 "libmad.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 "libmad.mak" CFG="libmad - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "libmad - Win32 Release" (based on "Win32 (x86) Static Library") -!MESSAGE "libmad - Win32 Debug" (based on "Win32 (x86) Static Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "libmad - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c -# ADD CPP /nologo /MD /GX /O2 /I "." /D "NDEBUG" /D "FPM_INTEL" /D "WIN32" /D "_MBCS" /D "_LIB" /D "HAVE_CONFIG_H" /D "ASO_ZEROCHECK" /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo - -!ELSEIF "$(CFG)" == "libmad - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c -# ADD CPP /nologo /Gm /GX /ZI /Od /I "." /D "FPM_DEFAULT" /D "_LIB" /D "HAVE_CONFIG_H" /D "ASO_ZEROCHECK" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "DEBUG" /FD /GZ /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo - -!ENDIF - -# Begin Target - -# Name "libmad - Win32 Release" -# Name "libmad - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "c" -# Begin Source File - -SOURCE=..\bit.c -# End Source File -# Begin Source File - -SOURCE=..\decoder.c -# End Source File -# Begin Source File - -SOURCE=..\fixed.c -# End Source File -# Begin Source File - -SOURCE=..\frame.c -# End Source File -# Begin Source File - -SOURCE=..\huffman.c -# End Source File -# Begin Source File - -SOURCE=..\layer12.c -# End Source File -# Begin Source File - -SOURCE=..\layer3.c -# End Source File -# Begin Source File - -SOURCE=..\stream.c -# End Source File -# Begin Source File - -SOURCE=..\synth.c -# End Source File -# Begin Source File - -SOURCE=..\timer.c -# End Source File -# Begin Source File - -SOURCE=..\version.c -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h" -# Begin Source File - -SOURCE=..\bit.h -# End Source File -# Begin Source File - -SOURCE=.\config.h -# End Source File -# Begin Source File - -SOURCE=..\decoder.h -# End Source File -# Begin Source File - -SOURCE=..\fixed.h -# End Source File -# Begin Source File - -SOURCE=..\frame.h -# End Source File -# Begin Source File - -SOURCE=..\global.h -# End Source File -# Begin Source File - -SOURCE=..\huffman.h -# End Source File -# Begin Source File - -SOURCE=..\layer12.h -# End Source File -# Begin Source File - -SOURCE=..\layer3.h -# End Source File -# Begin Source File - -SOURCE=..\stream.h -# End Source File -# Begin Source File - -SOURCE=..\synth.h -# End Source File -# Begin Source File - -SOURCE=..\timer.h -# End Source File -# Begin Source File - -SOURCE=..\version.h -# End Source File -# End Group -# Begin Group "Data Files" - -# PROP Default_Filter "dat" -# Begin Source File - -SOURCE=..\D.dat -# End Source File -# Begin Source File - -SOURCE=..\imdct_s.dat -# End Source File -# Begin Source File - -SOURCE=..\qc_table.dat -# End Source File -# Begin Source File - -SOURCE=..\rq_table.dat -# End Source File -# Begin Source File - -SOURCE=..\sf_table.dat -# End Source File -# End Group -# End Target -# End Project diff --git a/extern/mad-0.15.1b/msvc++/libmad.dsw b/extern/mad-0.15.1b/msvc++/libmad.dsw deleted file mode 100644 index 3965a639b9..0000000000 --- a/extern/mad-0.15.1b/msvc++/libmad.dsw +++ /dev/null @@ -1,29 +0,0 @@ -Microsoft Developer Studio Workspace File, Format Version 6.00 -# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! - -############################################################################### - -Project: "libmad"=".\libmad.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Global: - -Package=<5> -{{{ -}}} - -Package=<3> -{{{ -}}} - -############################################################################### - diff --git a/extern/mad-0.15.1b/msvc++/mad.h b/extern/mad-0.15.1b/msvc++/mad.h deleted file mode 100644 index d483478567..0000000000 --- a/extern/mad-0.15.1b/msvc++/mad.h +++ /dev/null @@ -1,948 +0,0 @@ -/* - * libmad - MPEG audio decoder library - * Copyright (C) 2000-2004 Underbit Technologies, Inc. - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * If you would like to negotiate alternate licensing terms, you may do - * so by contacting: Underbit Technologies, Inc. - */ - -# ifdef __cplusplus -extern "C" { -# endif - -# define FPM_INTEL - - - -# define SIZEOF_INT 4 -# define SIZEOF_LONG 4 -# define SIZEOF_LONG_LONG 8 - - -/* Id: version.h,v 1.24 2003/05/27 22:40:37 rob Exp */ - -# ifndef LIBMAD_VERSION_H -# define LIBMAD_VERSION_H - -# define MAD_VERSION_MAJOR 0 -# define MAD_VERSION_MINOR 15 -# define MAD_VERSION_PATCH 1 -# define MAD_VERSION_EXTRA " (beta)" - -# define MAD_VERSION_STRINGIZE(str) #str -# define MAD_VERSION_STRING(num) MAD_VERSION_STRINGIZE(num) - -# define MAD_VERSION MAD_VERSION_STRING(MAD_VERSION_MAJOR) "." \ - MAD_VERSION_STRING(MAD_VERSION_MINOR) "." \ - MAD_VERSION_STRING(MAD_VERSION_PATCH) \ - MAD_VERSION_EXTRA - -# define MAD_PUBLISHYEAR "2000-2003" -# define MAD_AUTHOR "Underbit Technologies, Inc." -# define MAD_EMAIL "info@underbit.com" - -extern char const mad_version[]; -extern char const mad_copyright[]; -extern char const mad_author[]; -extern char const mad_build[]; - -# endif - -/* Id: fixed.h,v 1.36 2003/05/28 04:36:00 rob Exp */ - -# ifndef LIBMAD_FIXED_H -# define LIBMAD_FIXED_H - -# if SIZEOF_INT >= 4 -typedef signed int mad_fixed_t; - -typedef signed int mad_fixed64hi_t; -typedef unsigned int mad_fixed64lo_t; -# else -typedef signed long mad_fixed_t; - -typedef signed long mad_fixed64hi_t; -typedef unsigned long mad_fixed64lo_t; -# endif - -# if defined(_MSC_VER) -# define mad_fixed64_t signed __int64 -# elif 1 || defined(__GNUC__) -# define mad_fixed64_t signed long long -# endif - -# if defined(FPM_FLOAT) -typedef double mad_sample_t; -# else -typedef mad_fixed_t mad_sample_t; -# endif - -/* - * Fixed-point format: 0xABBBBBBB - * A == whole part (sign + 3 bits) - * B == fractional part (28 bits) - * - * Values are signed two's complement, so the effective range is: - * 0x80000000 to 0x7fffffff - * -8.0 to +7.9999999962747097015380859375 - * - * The smallest representable value is: - * 0x00000001 == 0.0000000037252902984619140625 (i.e. about 3.725e-9) - * - * 28 bits of fractional accuracy represent about - * 8.6 digits of decimal accuracy. - * - * Fixed-point numbers can be added or subtracted as normal - * integers, but multiplication requires shifting the 64-bit result - * from 56 fractional bits back to 28 (and rounding.) - * - * Changing the definition of MAD_F_FRACBITS is only partially - * supported, and must be done with care. - */ - -# define MAD_F_FRACBITS 28 - -# if MAD_F_FRACBITS == 28 -# define MAD_F(x) ((mad_fixed_t) (x##L)) -# else -# if MAD_F_FRACBITS < 28 -# warning "MAD_F_FRACBITS < 28" -# define MAD_F(x) ((mad_fixed_t) \ - (((x##L) + \ - (1L << (28 - MAD_F_FRACBITS - 1))) >> \ - (28 - MAD_F_FRACBITS))) -# elif MAD_F_FRACBITS > 28 -# error "MAD_F_FRACBITS > 28 not currently supported" -# define MAD_F(x) ((mad_fixed_t) \ - ((x##L) << (MAD_F_FRACBITS - 28))) -# endif -# endif - -# define MAD_F_MIN ((mad_fixed_t) -0x80000000L) -# define MAD_F_MAX ((mad_fixed_t) +0x7fffffffL) - -# define MAD_F_ONE MAD_F(0x10000000) - -# define mad_f_tofixed(x) ((mad_fixed_t) \ - ((x) * (double) (1L << MAD_F_FRACBITS) + 0.5)) -# define mad_f_todouble(x) ((double) \ - ((x) / (double) (1L << MAD_F_FRACBITS))) - -# define mad_f_intpart(x) ((x) >> MAD_F_FRACBITS) -# define mad_f_fracpart(x) ((x) & ((1L << MAD_F_FRACBITS) - 1)) - /* (x should be positive) */ - -# define mad_f_fromint(x) ((x) << MAD_F_FRACBITS) - -# define mad_f_add(x, y) ((x) + (y)) -# define mad_f_sub(x, y) ((x) - (y)) - -# if defined(FPM_FLOAT) -# error "FPM_FLOAT not yet supported" - -# undef MAD_F -# define MAD_F(x) mad_f_todouble(x) - -# define mad_f_mul(x, y) ((x) * (y)) -# define mad_f_scale64 - -# undef ASO_ZEROCHECK - -# elif defined(FPM_64BIT) - -/* - * This version should be the most accurate if 64-bit types are supported by - * the compiler, although it may not be the most efficient. - */ -# if defined(OPT_ACCURACY) -# define mad_f_mul(x, y) \ - ((mad_fixed_t) \ - ((((mad_fixed64_t) (x) * (y)) + \ - (1L << (MAD_F_SCALEBITS - 1))) >> MAD_F_SCALEBITS)) -# else -# define mad_f_mul(x, y) \ - ((mad_fixed_t) (((mad_fixed64_t) (x) * (y)) >> MAD_F_SCALEBITS)) -# endif - -# define MAD_F_SCALEBITS MAD_F_FRACBITS - -/* --- Intel --------------------------------------------------------------- */ - -# elif defined(FPM_INTEL) - -# if defined(_MSC_VER) -# pragma warning(push) -# pragma warning(disable: 4035) /* no return value */ -static __forceinline -mad_fixed_t mad_f_mul_inline(mad_fixed_t x, mad_fixed_t y) -{ - enum { - fracbits = MAD_F_FRACBITS - }; - - __asm { - mov eax, x - imul y - shrd eax, edx, fracbits - } - - /* implicit return of eax */ -} -# pragma warning(pop) - -# define mad_f_mul mad_f_mul_inline -# define mad_f_scale64 -# else -/* - * This Intel version is fast and accurate; the disposition of the least - * significant bit depends on OPT_ACCURACY via mad_f_scale64(). - */ -# define MAD_F_MLX(hi, lo, x, y) \ - asm ("imull %3" \ - : "=a" (lo), "=d" (hi) \ - : "%a" (x), "rm" (y) \ - : "cc") - -# if defined(OPT_ACCURACY) -/* - * This gives best accuracy but is not very fast. - */ -# define MAD_F_MLA(hi, lo, x, y) \ - ({ mad_fixed64hi_t __hi; \ - mad_fixed64lo_t __lo; \ - MAD_F_MLX(__hi, __lo, (x), (y)); \ - asm ("addl %2,%0\n\t" \ - "adcl %3,%1" \ - : "=rm" (lo), "=rm" (hi) \ - : "r" (__lo), "r" (__hi), "0" (lo), "1" (hi) \ - : "cc"); \ - }) -# endif /* OPT_ACCURACY */ - -# if defined(OPT_ACCURACY) -/* - * Surprisingly, this is faster than SHRD followed by ADC. - */ -# define mad_f_scale64(hi, lo) \ - ({ mad_fixed64hi_t __hi_; \ - mad_fixed64lo_t __lo_; \ - mad_fixed_t __result; \ - asm ("addl %4,%2\n\t" \ - "adcl %5,%3" \ - : "=rm" (__lo_), "=rm" (__hi_) \ - : "0" (lo), "1" (hi), \ - "ir" (1L << (MAD_F_SCALEBITS - 1)), "ir" (0) \ - : "cc"); \ - asm ("shrdl %3,%2,%1" \ - : "=rm" (__result) \ - : "0" (__lo_), "r" (__hi_), "I" (MAD_F_SCALEBITS) \ - : "cc"); \ - __result; \ - }) -# else -# define mad_f_scale64(hi, lo) \ - ({ mad_fixed_t __result; \ - asm ("shrdl %3,%2,%1" \ - : "=rm" (__result) \ - : "0" (lo), "r" (hi), "I" (MAD_F_SCALEBITS) \ - : "cc"); \ - __result; \ - }) -# endif /* OPT_ACCURACY */ - -# define MAD_F_SCALEBITS MAD_F_FRACBITS -# endif - -/* --- ARM ----------------------------------------------------------------- */ - -# elif defined(FPM_ARM) - -/* - * This ARM V4 version is as accurate as FPM_64BIT but much faster. The - * least significant bit is properly rounded at no CPU cycle cost! - */ -# if 1 -/* - * This is faster than the default implementation via MAD_F_MLX() and - * mad_f_scale64(). - */ -# define mad_f_mul(x, y) \ - ({ mad_fixed64hi_t __hi; \ - mad_fixed64lo_t __lo; \ - mad_fixed_t __result; \ - asm ("smull %0, %1, %3, %4\n\t" \ - "movs %0, %0, lsr %5\n\t" \ - "adc %2, %0, %1, lsl %6" \ - : "=&r" (__lo), "=&r" (__hi), "=r" (__result) \ - : "%r" (x), "r" (y), \ - "M" (MAD_F_SCALEBITS), "M" (32 - MAD_F_SCALEBITS) \ - : "cc"); \ - __result; \ - }) -# endif - -# define MAD_F_MLX(hi, lo, x, y) \ - asm ("smull %0, %1, %2, %3" \ - : "=&r" (lo), "=&r" (hi) \ - : "%r" (x), "r" (y)) - -# define MAD_F_MLA(hi, lo, x, y) \ - asm ("smlal %0, %1, %2, %3" \ - : "+r" (lo), "+r" (hi) \ - : "%r" (x), "r" (y)) - -# define MAD_F_MLN(hi, lo) \ - asm ("rsbs %0, %2, #0\n\t" \ - "rsc %1, %3, #0" \ - : "=r" (lo), "=r" (hi) \ - : "0" (lo), "1" (hi) \ - : "cc") - -# define mad_f_scale64(hi, lo) \ - ({ mad_fixed_t __result; \ - asm ("movs %0, %1, lsr %3\n\t" \ - "adc %0, %0, %2, lsl %4" \ - : "=&r" (__result) \ - : "r" (lo), "r" (hi), \ - "M" (MAD_F_SCALEBITS), "M" (32 - MAD_F_SCALEBITS) \ - : "cc"); \ - __result; \ - }) - -# define MAD_F_SCALEBITS MAD_F_FRACBITS - -/* --- MIPS ---------------------------------------------------------------- */ - -# elif defined(FPM_MIPS) - -/* - * This MIPS version is fast and accurate; the disposition of the least - * significant bit depends on OPT_ACCURACY via mad_f_scale64(). - */ -# define MAD_F_MLX(hi, lo, x, y) \ - asm ("mult %2,%3" \ - : "=l" (lo), "=h" (hi) \ - : "%r" (x), "r" (y)) - -# if defined(HAVE_MADD_ASM) -# define MAD_F_MLA(hi, lo, x, y) \ - asm ("madd %2,%3" \ - : "+l" (lo), "+h" (hi) \ - : "%r" (x), "r" (y)) -# elif defined(HAVE_MADD16_ASM) -/* - * This loses significant accuracy due to the 16-bit integer limit in the - * multiply/accumulate instruction. - */ -# define MAD_F_ML0(hi, lo, x, y) \ - asm ("mult %2,%3" \ - : "=l" (lo), "=h" (hi) \ - : "%r" ((x) >> 12), "r" ((y) >> 16)) -# define MAD_F_MLA(hi, lo, x, y) \ - asm ("madd16 %2,%3" \ - : "+l" (lo), "+h" (hi) \ - : "%r" ((x) >> 12), "r" ((y) >> 16)) -# define MAD_F_MLZ(hi, lo) ((mad_fixed_t) (lo)) -# endif - -# if defined(OPT_SPEED) -# define mad_f_scale64(hi, lo) \ - ((mad_fixed_t) ((hi) << (32 - MAD_F_SCALEBITS))) -# define MAD_F_SCALEBITS MAD_F_FRACBITS -# endif - -/* --- SPARC --------------------------------------------------------------- */ - -# elif defined(FPM_SPARC) - -/* - * This SPARC V8 version is fast and accurate; the disposition of the least - * significant bit depends on OPT_ACCURACY via mad_f_scale64(). - */ -# define MAD_F_MLX(hi, lo, x, y) \ - asm ("smul %2, %3, %0\n\t" \ - "rd %%y, %1" \ - : "=r" (lo), "=r" (hi) \ - : "%r" (x), "rI" (y)) - -/* --- PowerPC ------------------------------------------------------------- */ - -# elif defined(FPM_PPC) - -/* - * This PowerPC version is fast and accurate; the disposition of the least - * significant bit depends on OPT_ACCURACY via mad_f_scale64(). - */ -# define MAD_F_MLX(hi, lo, x, y) \ - do { \ - asm ("mullw %0,%1,%2" \ - : "=r" (lo) \ - : "%r" (x), "r" (y)); \ - asm ("mulhw %0,%1,%2" \ - : "=r" (hi) \ - : "%r" (x), "r" (y)); \ - } \ - while (0) - -# if defined(OPT_ACCURACY) -/* - * This gives best accuracy but is not very fast. - */ -# define MAD_F_MLA(hi, lo, x, y) \ - ({ mad_fixed64hi_t __hi; \ - mad_fixed64lo_t __lo; \ - MAD_F_MLX(__hi, __lo, (x), (y)); \ - asm ("addc %0,%2,%3\n\t" \ - "adde %1,%4,%5" \ - : "=r" (lo), "=r" (hi) \ - : "%r" (lo), "r" (__lo), \ - "%r" (hi), "r" (__hi) \ - : "xer"); \ - }) -# endif - -# if defined(OPT_ACCURACY) -/* - * This is slower than the truncating version below it. - */ -# define mad_f_scale64(hi, lo) \ - ({ mad_fixed_t __result, __round; \ - asm ("rotrwi %0,%1,%2" \ - : "=r" (__result) \ - : "r" (lo), "i" (MAD_F_SCALEBITS)); \ - asm ("extrwi %0,%1,1,0" \ - : "=r" (__round) \ - : "r" (__result)); \ - asm ("insrwi %0,%1,%2,0" \ - : "+r" (__result) \ - : "r" (hi), "i" (MAD_F_SCALEBITS)); \ - asm ("add %0,%1,%2" \ - : "=r" (__result) \ - : "%r" (__result), "r" (__round)); \ - __result; \ - }) -# else -# define mad_f_scale64(hi, lo) \ - ({ mad_fixed_t __result; \ - asm ("rotrwi %0,%1,%2" \ - : "=r" (__result) \ - : "r" (lo), "i" (MAD_F_SCALEBITS)); \ - asm ("insrwi %0,%1,%2,0" \ - : "+r" (__result) \ - : "r" (hi), "i" (MAD_F_SCALEBITS)); \ - __result; \ - }) -# endif - -# define MAD_F_SCALEBITS MAD_F_FRACBITS - -/* --- Default ------------------------------------------------------------- */ - -# elif defined(FPM_DEFAULT) - -/* - * This version is the most portable but it loses significant accuracy. - * Furthermore, accuracy is biased against the second argument, so care - * should be taken when ordering operands. - * - * The scale factors are constant as this is not used with SSO. - * - * Pre-rounding is required to stay within the limits of compliance. - */ -# if defined(OPT_SPEED) -# define mad_f_mul(x, y) (((x) >> 12) * ((y) >> 16)) -# else -# define mad_f_mul(x, y) ((((x) + (1L << 11)) >> 12) * \ - (((y) + (1L << 15)) >> 16)) -# endif - -/* ------------------------------------------------------------------------- */ - -# else -# error "no FPM selected" -# endif - -/* default implementations */ - -# if !defined(mad_f_mul) -# define mad_f_mul(x, y) \ - ({ register mad_fixed64hi_t __hi; \ - register mad_fixed64lo_t __lo; \ - MAD_F_MLX(__hi, __lo, (x), (y)); \ - mad_f_scale64(__hi, __lo); \ - }) -# endif - -# if !defined(MAD_F_MLA) -# define MAD_F_ML0(hi, lo, x, y) ((lo) = mad_f_mul((x), (y))) -# define MAD_F_MLA(hi, lo, x, y) ((lo) += mad_f_mul((x), (y))) -# define MAD_F_MLN(hi, lo) ((lo) = -(lo)) -# define MAD_F_MLZ(hi, lo) ((void) (hi), (mad_fixed_t) (lo)) -# endif - -# if !defined(MAD_F_ML0) -# define MAD_F_ML0(hi, lo, x, y) MAD_F_MLX((hi), (lo), (x), (y)) -# endif - -# if !defined(MAD_F_MLN) -# define MAD_F_MLN(hi, lo) ((hi) = ((lo) = -(lo)) ? ~(hi) : -(hi)) -# endif - -# if !defined(MAD_F_MLZ) -# define MAD_F_MLZ(hi, lo) mad_f_scale64((hi), (lo)) -# endif - -# if !defined(mad_f_scale64) -# if defined(OPT_ACCURACY) -# define mad_f_scale64(hi, lo) \ - ((((mad_fixed_t) \ - (((hi) << (32 - (MAD_F_SCALEBITS - 1))) | \ - ((lo) >> (MAD_F_SCALEBITS - 1)))) + 1) >> 1) -# else -# define mad_f_scale64(hi, lo) \ - ((mad_fixed_t) \ - (((hi) << (32 - MAD_F_SCALEBITS)) | \ - ((lo) >> MAD_F_SCALEBITS))) -# endif -# define MAD_F_SCALEBITS MAD_F_FRACBITS -# endif - -/* C routines */ - -mad_fixed_t mad_f_abs(mad_fixed_t); -mad_fixed_t mad_f_div(mad_fixed_t, mad_fixed_t); - -# endif - -/* Id: bit.h,v 1.11 2003/05/27 22:40:36 rob Exp */ - -# ifndef LIBMAD_BIT_H -# define LIBMAD_BIT_H - -struct mad_bitptr { - unsigned char const *byte; - unsigned short cache; - unsigned short left; -}; - -void mad_bit_init(struct mad_bitptr *, unsigned char const *); - -# define mad_bit_finish(bitptr) /* nothing */ - -unsigned int mad_bit_length(struct mad_bitptr const *, - struct mad_bitptr const *); - -# define mad_bit_bitsleft(bitptr) ((bitptr)->left) -unsigned char const *mad_bit_nextbyte(struct mad_bitptr const *); - -void mad_bit_skip(struct mad_bitptr *, unsigned int); -unsigned long mad_bit_read(struct mad_bitptr *, unsigned int); -void mad_bit_write(struct mad_bitptr *, unsigned int, unsigned long); - -unsigned short mad_bit_crc(struct mad_bitptr, unsigned int, unsigned short); - -# endif - -/* Id: timer.h,v 1.15 2003/05/27 22:40:37 rob Exp */ - -# ifndef LIBMAD_TIMER_H -# define LIBMAD_TIMER_H - -typedef struct { - signed long seconds; /* whole seconds */ - unsigned long fraction; /* 1/MAD_TIMER_RESOLUTION seconds */ -} mad_timer_t; - -extern mad_timer_t const mad_timer_zero; - -# define MAD_TIMER_RESOLUTION 352800000UL - -enum mad_units { - MAD_UNITS_HOURS = -2, - MAD_UNITS_MINUTES = -1, - MAD_UNITS_SECONDS = 0, - - /* metric units */ - - MAD_UNITS_DECISECONDS = 10, - MAD_UNITS_CENTISECONDS = 100, - MAD_UNITS_MILLISECONDS = 1000, - - /* audio sample units */ - - MAD_UNITS_8000_HZ = 8000, - MAD_UNITS_11025_HZ = 11025, - MAD_UNITS_12000_HZ = 12000, - - MAD_UNITS_16000_HZ = 16000, - MAD_UNITS_22050_HZ = 22050, - MAD_UNITS_24000_HZ = 24000, - - MAD_UNITS_32000_HZ = 32000, - MAD_UNITS_44100_HZ = 44100, - MAD_UNITS_48000_HZ = 48000, - - /* video frame/field units */ - - MAD_UNITS_24_FPS = 24, - MAD_UNITS_25_FPS = 25, - MAD_UNITS_30_FPS = 30, - MAD_UNITS_48_FPS = 48, - MAD_UNITS_50_FPS = 50, - MAD_UNITS_60_FPS = 60, - - /* CD audio frames */ - - MAD_UNITS_75_FPS = 75, - - /* video drop-frame units */ - - MAD_UNITS_23_976_FPS = -24, - MAD_UNITS_24_975_FPS = -25, - MAD_UNITS_29_97_FPS = -30, - MAD_UNITS_47_952_FPS = -48, - MAD_UNITS_49_95_FPS = -50, - MAD_UNITS_59_94_FPS = -60 -}; - -# define mad_timer_reset(timer) ((void) (*(timer) = mad_timer_zero)) - -int mad_timer_compare(mad_timer_t, mad_timer_t); - -# define mad_timer_sign(timer) mad_timer_compare((timer), mad_timer_zero) - -void mad_timer_negate(mad_timer_t *); -mad_timer_t mad_timer_abs(mad_timer_t); - -void mad_timer_set(mad_timer_t *, unsigned long, unsigned long, unsigned long); -void mad_timer_add(mad_timer_t *, mad_timer_t); -void mad_timer_multiply(mad_timer_t *, signed long); - -signed long mad_timer_count(mad_timer_t, enum mad_units); -unsigned long mad_timer_fraction(mad_timer_t, unsigned long); -void mad_timer_string(mad_timer_t, char *, char const *, - enum mad_units, enum mad_units, unsigned long); - -# endif - -/* Id: stream.h,v 1.18 2003/05/27 22:40:37 rob Exp */ - -# ifndef LIBMAD_STREAM_H -# define LIBMAD_STREAM_H - - -# define MAD_BUFFER_GUARD 8 -# define MAD_BUFFER_MDLEN (511 + 2048 + MAD_BUFFER_GUARD) - -enum mad_error { - MAD_ERROR_NONE = 0x0000, /* no error */ - - MAD_ERROR_BUFLEN = 0x0001, /* input buffer too small (or EOF) */ - MAD_ERROR_BUFPTR = 0x0002, /* invalid (null) buffer pointer */ - - MAD_ERROR_NOMEM = 0x0031, /* not enough memory */ - - MAD_ERROR_LOSTSYNC = 0x0101, /* lost synchronization */ - MAD_ERROR_BADLAYER = 0x0102, /* reserved header layer value */ - MAD_ERROR_BADBITRATE = 0x0103, /* forbidden bitrate value */ - MAD_ERROR_BADSAMPLERATE = 0x0104, /* reserved sample frequency value */ - MAD_ERROR_BADEMPHASIS = 0x0105, /* reserved emphasis value */ - - MAD_ERROR_BADCRC = 0x0201, /* CRC check failed */ - MAD_ERROR_BADBITALLOC = 0x0211, /* forbidden bit allocation value */ - MAD_ERROR_BADSCALEFACTOR = 0x0221, /* bad scalefactor index */ - MAD_ERROR_BADFRAMELEN = 0x0231, /* bad frame length */ - MAD_ERROR_BADBIGVALUES = 0x0232, /* bad big_values count */ - MAD_ERROR_BADBLOCKTYPE = 0x0233, /* reserved block_type */ - MAD_ERROR_BADSCFSI = 0x0234, /* bad scalefactor selection info */ - MAD_ERROR_BADDATAPTR = 0x0235, /* bad main_data_begin pointer */ - MAD_ERROR_BADPART3LEN = 0x0236, /* bad audio data length */ - MAD_ERROR_BADHUFFTABLE = 0x0237, /* bad Huffman table select */ - MAD_ERROR_BADHUFFDATA = 0x0238, /* Huffman data overrun */ - MAD_ERROR_BADSTEREO = 0x0239 /* incompatible block_type for JS */ -}; - -# define MAD_RECOVERABLE(error) ((error) & 0xff00) - -struct mad_stream { - unsigned char const *buffer; /* input bitstream buffer */ - unsigned char const *bufend; /* end of buffer */ - unsigned long skiplen; /* bytes to skip before next frame */ - - int sync; /* stream sync found */ - unsigned long freerate; /* free bitrate (fixed) */ - - unsigned char const *this_frame; /* start of current frame */ - unsigned char const *next_frame; /* start of next frame */ - struct mad_bitptr ptr; /* current processing bit pointer */ - - struct mad_bitptr anc_ptr; /* ancillary bits pointer */ - unsigned int anc_bitlen; /* number of ancillary bits */ - - unsigned char (*main_data)[MAD_BUFFER_MDLEN]; - /* Layer III main_data() */ - unsigned int md_len; /* bytes in main_data */ - - int options; /* decoding options (see below) */ - enum mad_error error; /* error code (see above) */ -}; - -enum { - MAD_OPTION_IGNORECRC = 0x0001, /* ignore CRC errors */ - MAD_OPTION_HALFSAMPLERATE = 0x0002 /* generate PCM at 1/2 sample rate */ -# if 0 /* not yet implemented */ - MAD_OPTION_LEFTCHANNEL = 0x0010, /* decode left channel only */ - MAD_OPTION_RIGHTCHANNEL = 0x0020, /* decode right channel only */ - MAD_OPTION_SINGLECHANNEL = 0x0030 /* combine channels */ -# endif -}; - -void mad_stream_init(struct mad_stream *); -void mad_stream_finish(struct mad_stream *); - -# define mad_stream_options(stream, opts) \ - ((void) ((stream)->options = (opts))) - -void mad_stream_buffer(struct mad_stream *, - unsigned char const *, unsigned long); -void mad_stream_skip(struct mad_stream *, unsigned long); - -int mad_stream_sync(struct mad_stream *); - -char const *mad_stream_errorstr(struct mad_stream const *); - -# endif - -/* Id: frame.h,v 1.19 2003/05/27 22:40:36 rob Exp */ - -# ifndef LIBMAD_FRAME_H -# define LIBMAD_FRAME_H - - -enum mad_layer { - MAD_LAYER_I = 1, /* Layer I */ - MAD_LAYER_II = 2, /* Layer II */ - MAD_LAYER_III = 3 /* Layer III */ -}; - -enum mad_mode { - MAD_MODE_SINGLE_CHANNEL = 0, /* single channel */ - MAD_MODE_DUAL_CHANNEL = 1, /* dual channel */ - MAD_MODE_JOINT_STEREO = 2, /* joint (MS/intensity) stereo */ - MAD_MODE_STEREO = 3 /* normal LR stereo */ -}; - -enum mad_emphasis { - MAD_EMPHASIS_NONE = 0, /* no emphasis */ - MAD_EMPHASIS_50_15_US = 1, /* 50/15 microseconds emphasis */ - MAD_EMPHASIS_CCITT_J_17 = 3, /* CCITT J.17 emphasis */ - MAD_EMPHASIS_RESERVED = 2 /* unknown emphasis */ -}; - -struct mad_header { - enum mad_layer layer; /* audio layer (1, 2, or 3) */ - enum mad_mode mode; /* channel mode (see above) */ - int mode_extension; /* additional mode info */ - enum mad_emphasis emphasis; /* de-emphasis to use (see above) */ - - unsigned long bitrate; /* stream bitrate (bps) */ - unsigned int samplerate; /* sampling frequency (Hz) */ - - unsigned short crc_check; /* frame CRC accumulator */ - unsigned short crc_target; /* final target CRC checksum */ - - int flags; /* flags (see below) */ - int private_bits; /* private bits (see below) */ - - mad_timer_t duration; /* audio playing time of frame */ -}; - -struct mad_frame { - struct mad_header header; /* MPEG audio header */ - - int options; /* decoding options (from stream) */ - - mad_fixed_t sbsample[2][36][32]; /* synthesis subband filter samples */ - mad_fixed_t (*overlap)[2][32][18]; /* Layer III block overlap data */ -}; - -# define MAD_NCHANNELS(header) ((header)->mode ? 2 : 1) -# define MAD_NSBSAMPLES(header) \ - ((header)->layer == MAD_LAYER_I ? 12 : \ - (((header)->layer == MAD_LAYER_III && \ - ((header)->flags & MAD_FLAG_LSF_EXT)) ? 18 : 36)) - -enum { - MAD_FLAG_NPRIVATE_III = 0x0007, /* number of Layer III private bits */ - MAD_FLAG_INCOMPLETE = 0x0008, /* header but not data is decoded */ - - MAD_FLAG_PROTECTION = 0x0010, /* frame has CRC protection */ - MAD_FLAG_COPYRIGHT = 0x0020, /* frame is copyright */ - MAD_FLAG_ORIGINAL = 0x0040, /* frame is original (else copy) */ - MAD_FLAG_PADDING = 0x0080, /* frame has additional slot */ - - MAD_FLAG_I_STEREO = 0x0100, /* uses intensity joint stereo */ - MAD_FLAG_MS_STEREO = 0x0200, /* uses middle/side joint stereo */ - MAD_FLAG_FREEFORMAT = 0x0400, /* uses free format bitrate */ - - MAD_FLAG_LSF_EXT = 0x1000, /* lower sampling freq. extension */ - MAD_FLAG_MC_EXT = 0x2000, /* multichannel audio extension */ - MAD_FLAG_MPEG_2_5_EXT = 0x4000 /* MPEG 2.5 (unofficial) extension */ -}; - -enum { - MAD_PRIVATE_HEADER = 0x0100, /* header private bit */ - MAD_PRIVATE_III = 0x001f /* Layer III private bits (up to 5) */ -}; - -void mad_header_init(struct mad_header *); - -# define mad_header_finish(header) /* nothing */ - -int mad_header_decode(struct mad_header *, struct mad_stream *); - -void mad_frame_init(struct mad_frame *); -void mad_frame_finish(struct mad_frame *); - -int mad_frame_decode(struct mad_frame *, struct mad_stream *); - -void mad_frame_mute(struct mad_frame *); - -# endif - -/* Id: synth.h,v 1.14 2003/05/27 22:40:37 rob Exp */ - -# ifndef LIBMAD_SYNTH_H -# define LIBMAD_SYNTH_H - - -struct mad_pcm { - unsigned int samplerate; /* sampling frequency (Hz) */ - unsigned short channels; /* number of channels */ - unsigned short length; /* number of samples per channel */ - mad_fixed_t samples[2][1152]; /* PCM output samples [ch][sample] */ -}; - -struct mad_synth { - mad_fixed_t filter[2][2][2][16][8]; /* polyphase filterbank outputs */ - /* [ch][eo][peo][s][v] */ - - unsigned int phase; /* current processing phase */ - - struct mad_pcm pcm; /* PCM output */ -}; - -/* single channel PCM selector */ -enum { - MAD_PCM_CHANNEL_SINGLE = 0 -}; - -/* dual channel PCM selector */ -enum { - MAD_PCM_CHANNEL_DUAL_1 = 0, - MAD_PCM_CHANNEL_DUAL_2 = 1 -}; - -/* stereo PCM selector */ -enum { - MAD_PCM_CHANNEL_STEREO_LEFT = 0, - MAD_PCM_CHANNEL_STEREO_RIGHT = 1 -}; - -void mad_synth_init(struct mad_synth *); - -# define mad_synth_finish(synth) /* nothing */ - -void mad_synth_mute(struct mad_synth *); - -void mad_synth_frame(struct mad_synth *, struct mad_frame const *); - -# endif - -/* Id: decoder.h,v 1.16 2003/05/27 22:40:36 rob Exp */ - -# ifndef LIBMAD_DECODER_H -# define LIBMAD_DECODER_H - - -enum mad_decoder_mode { - MAD_DECODER_MODE_SYNC = 0, - MAD_DECODER_MODE_ASYNC -}; - -enum mad_flow { - MAD_FLOW_CONTINUE = 0x0000, /* continue normally */ - MAD_FLOW_STOP = 0x0010, /* stop decoding normally */ - MAD_FLOW_BREAK = 0x0011, /* stop decoding and signal an error */ - MAD_FLOW_IGNORE = 0x0020 /* ignore the current frame */ -}; - -struct mad_decoder { - enum mad_decoder_mode mode; - - int options; - - struct { - long pid; - int in; - int out; - } async; - - struct { - struct mad_stream stream; - struct mad_frame frame; - struct mad_synth synth; - } *sync; - - void *cb_data; - - enum mad_flow (*input_func)(void *, struct mad_stream *); - enum mad_flow (*header_func)(void *, struct mad_header const *); - enum mad_flow (*filter_func)(void *, - struct mad_stream const *, struct mad_frame *); - enum mad_flow (*output_func)(void *, - struct mad_header const *, struct mad_pcm *); - enum mad_flow (*error_func)(void *, struct mad_stream *, struct mad_frame *); - enum mad_flow (*message_func)(void *, void *, unsigned int *); -}; - -void mad_decoder_init(struct mad_decoder *, void *, - enum mad_flow (*)(void *, struct mad_stream *), - enum mad_flow (*)(void *, struct mad_header const *), - enum mad_flow (*)(void *, - struct mad_stream const *, - struct mad_frame *), - enum mad_flow (*)(void *, - struct mad_header const *, - struct mad_pcm *), - enum mad_flow (*)(void *, - struct mad_stream *, - struct mad_frame *), - enum mad_flow (*)(void *, void *, unsigned int *)); -int mad_decoder_finish(struct mad_decoder *); - -# define mad_decoder_options(decoder, opts) \ - ((void) ((decoder)->options = (opts))) - -int mad_decoder_run(struct mad_decoder *, enum mad_decoder_mode); -int mad_decoder_message(struct mad_decoder *, void *, unsigned int *); - -# endif - -# ifdef __cplusplus -} -# endif diff --git a/extern/mad-0.15.1b/xboxmad/xboxmad-2003.sln b/extern/mad-0.15.1b/xboxmad/xboxmad-2003.sln deleted file mode 100644 index aa30d47a72..0000000000 --- a/extern/mad-0.15.1b/xboxmad/xboxmad-2003.sln +++ /dev/null @@ -1,30 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 8.00 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xboxmad", "xboxmad-2003.vcproj", "{CA22B79A-E8A9-4BFB-A297-42231F2213F2}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject -Global - GlobalSection(SolutionConfiguration) = preSolution - Debug = Debug - Profile = Profile - Profile_FastCap = Profile_FastCap - Release = Release - Release_LTCG = Release_LTCG - EndGlobalSection - GlobalSection(ProjectConfiguration) = postSolution - {CA22B79A-E8A9-4BFB-A297-42231F2213F2}.Debug.ActiveCfg = Debug|Xbox - {CA22B79A-E8A9-4BFB-A297-42231F2213F2}.Debug.Build.0 = Debug|Xbox - {CA22B79A-E8A9-4BFB-A297-42231F2213F2}.Profile.ActiveCfg = Profile|Xbox - {CA22B79A-E8A9-4BFB-A297-42231F2213F2}.Profile.Build.0 = Profile|Xbox - {CA22B79A-E8A9-4BFB-A297-42231F2213F2}.Profile_FastCap.ActiveCfg = Profile_FastCap|Xbox - {CA22B79A-E8A9-4BFB-A297-42231F2213F2}.Profile_FastCap.Build.0 = Profile_FastCap|Xbox - {CA22B79A-E8A9-4BFB-A297-42231F2213F2}.Release.ActiveCfg = Release|Xbox - {CA22B79A-E8A9-4BFB-A297-42231F2213F2}.Release.Build.0 = Release|Xbox - {CA22B79A-E8A9-4BFB-A297-42231F2213F2}.Release_LTCG.ActiveCfg = Release_LTCG|Xbox - {CA22B79A-E8A9-4BFB-A297-42231F2213F2}.Release_LTCG.Build.0 = Release_LTCG|Xbox - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - EndGlobalSection - GlobalSection(ExtensibilityAddIns) = postSolution - EndGlobalSection -EndGlobal diff --git a/extern/mad-0.15.1b/xboxmad/xboxmad-2003.vcproj b/extern/mad-0.15.1b/xboxmad/xboxmad-2003.vcproj deleted file mode 100644 index 188ec5a8c2..0000000000 --- a/extern/mad-0.15.1b/xboxmad/xboxmad-2003.vcproj +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/extern/mad-0.15.1b/xboxmad/xboxmad.sln b/extern/mad-0.15.1b/xboxmad/xboxmad.sln deleted file mode 100644 index 2c88a80459..0000000000 --- a/extern/mad-0.15.1b/xboxmad/xboxmad.sln +++ /dev/null @@ -1,30 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 7.00 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xboxmad", "xboxmad.vcproj", "{CA22B79A-E8A9-4BFB-A297-42231F2213F2}" -EndProject -Global - GlobalSection(SolutionConfiguration) = preSolution - ConfigName.0 = Debug - ConfigName.1 = Profile - ConfigName.2 = Profile_FastCap - ConfigName.3 = Release - ConfigName.4 = Release_LTCG - EndGlobalSection - GlobalSection(ProjectDependencies) = postSolution - EndGlobalSection - GlobalSection(ProjectConfiguration) = postSolution - {CA22B79A-E8A9-4BFB-A297-42231F2213F2}.Debug.ActiveCfg = Debug|Xbox - {CA22B79A-E8A9-4BFB-A297-42231F2213F2}.Debug.Build.0 = Debug|Xbox - {CA22B79A-E8A9-4BFB-A297-42231F2213F2}.Profile.ActiveCfg = Profile|Xbox - {CA22B79A-E8A9-4BFB-A297-42231F2213F2}.Profile.Build.0 = Profile|Xbox - {CA22B79A-E8A9-4BFB-A297-42231F2213F2}.Profile_FastCap.ActiveCfg = Profile_FastCap|Xbox - {CA22B79A-E8A9-4BFB-A297-42231F2213F2}.Profile_FastCap.Build.0 = Profile_FastCap|Xbox - {CA22B79A-E8A9-4BFB-A297-42231F2213F2}.Release.ActiveCfg = Release|Xbox - {CA22B79A-E8A9-4BFB-A297-42231F2213F2}.Release.Build.0 = Release|Xbox - {CA22B79A-E8A9-4BFB-A297-42231F2213F2}.Release_LTCG.ActiveCfg = Release_LTCG|Xbox - {CA22B79A-E8A9-4BFB-A297-42231F2213F2}.Release_LTCG.Build.0 = Release_LTCG|Xbox - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - EndGlobalSection - GlobalSection(ExtensibilityAddIns) = postSolution - EndGlobalSection -EndGlobal diff --git a/extern/mad-0.15.1b/xboxmad/xboxmad.vcproj b/extern/mad-0.15.1b/xboxmad/xboxmad.vcproj deleted file mode 100644 index 4e8792ea22..0000000000 --- a/extern/mad-0.15.1b/xboxmad/xboxmad.vcproj +++ /dev/null @@ -1,230 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index ca7e2bb151..82d617fb47 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -441,7 +441,6 @@ if (WIN32) "${LIB_AVCODEC}" "${LIB_AVFORMAT}" "${LIB_AVUTIL}" - "libmad.lib" "ogg_static.lib" "vorbis_static.lib" "vorbisfile_static.lib" @@ -449,15 +448,12 @@ if (WIN32) "setupapi.lib" "hid.lib" ) - # Mad is not built in Windows. - list(REMOVE_ITEM SMDATA_LINK_LIB "mad") get_filename_component(DIRECTX_LIBRARY_DIR "${DIRECTX_LIBRARIES}" DIRECTORY) sm_add_link_flag("${SM_EXE_NAME}" "/LIBPATH:\"${DIRECTX_LIBRARY_DIR}\"") sm_add_link_flag("${SM_EXE_NAME}" "/LIBPATH:\"${SM_EXTERN_DIR}/ffmpeg/lib\"") sm_add_link_flag("${SM_EXE_NAME}" "/LIBPATH:\"${SM_EXTERN_DIR}/libjpeg\"") - sm_add_link_flag("${SM_EXE_NAME}" "/LIBPATH:\"${SM_EXTERN_DIR}/mad-0.15.1b/msvc++/Release\"") sm_add_link_flag("${SM_EXE_NAME}" "/LIBPATH:\"${SM_EXTERN_DIR}/vorbis/win32\"") sm_add_link_flag("${SM_EXE_NAME}" "/LIBPATH:\"${SM_SRC_DIR}/archutils/Win32/ddk\"") sm_add_link_flag("${SM_EXE_NAME}" "/ERRORREPORT:SEND") diff --git a/src/RageSoundReader_MP3.cpp b/src/RageSoundReader_MP3.cpp index a85ecbc4e7..b21dddd6a2 100644 --- a/src/RageSoundReader_MP3.cpp +++ b/src/RageSoundReader_MP3.cpp @@ -9,14 +9,7 @@ #include #include -#if defined(_WINDOWS) || defined(MACOSX) -#include "../extern/mad-0.15.1b/mad.h" -#ifdef _MSC_VER -#pragma comment(lib, "libmad.lib") -#endif //_MSC_VER -#else -#include -#endif // _WINDOWS +#include "mad.h" // ID3 code from libid3: enum tagtype {