mirror of
https://github.com/love2d/megasource.git
synced 2026-08-21 13:10:24 +02:00
Update mpg123 to 1.25.6
This commit is contained in:
+1
-1
@@ -141,7 +141,7 @@ set(MEGA_LUAJIT_VER "2.0.4")
|
||||
set(MEGA_LIBOGG_VER "1.3.2")
|
||||
set(MEGA_LIBVORBIS_VER "1.3.5")
|
||||
set(MEGA_LIBTHEORA_VER "1.1.1")
|
||||
set(MEGA_MPG123_VER "1.15.3")
|
||||
set(MEGA_MPG123_VER "1.25.6")
|
||||
set(MEGA_FREETYPE_VER "2.6.5")
|
||||
set(MEGA_SDL2_VER "2.0.5-b48d8a98e261")
|
||||
set(MEGA_OPENAL_VER "1.17.0")
|
||||
|
||||
@@ -1,100 +0,0 @@
|
||||
## Makefile.am: produce Makefile.in from this
|
||||
|
||||
## copyright by the mpg123 project - free software under the terms of the LGPL 2.1
|
||||
## see COPYING and AUTHORS files in distribution or http://mpg123.org
|
||||
## initially written by Nicholas J. Humfrey
|
||||
dist_man_MANS = man1/mpg123.1
|
||||
|
||||
SUBDIRS = src doc
|
||||
DIST_SUBDIRS = src doc
|
||||
ACLOCAL_AMFLAGS = -I m4
|
||||
|
||||
# pkg-config file for the mpg123 library
|
||||
pkgconfigdir = $(libdir)/pkgconfig
|
||||
pkgconfig_DATA = libmpg123.pc
|
||||
|
||||
# mpg123.spec is autogenerated but needs to be present in tarball!
|
||||
EXTRA_DIST = \
|
||||
mpg123.spec \
|
||||
makedll.sh \
|
||||
windows-builds.sh \
|
||||
equalize.dat \
|
||||
NEWS.libmpg123 \
|
||||
ports/MSVC++/mpg123.h \
|
||||
ports/MSVC++/config.h \
|
||||
ports/MSVC++/msvc.c \
|
||||
ports/MSVC++/examples/scan.c \
|
||||
ports/MSVC++/examples/feedseek.c \
|
||||
ports/MSVC++/2005/libmpg123/libmpg123.vcproj \
|
||||
ports/MSVC++/2008/mpg123.sln \
|
||||
ports/MSVC++/2008/feedseek/feedseek.vcproj \
|
||||
ports/MSVC++/2008/mpglib/mpglib.vcproj \
|
||||
ports/MSVC++/2008/libmpg123/libmpg123.vcproj \
|
||||
ports/MSVC++/2008/scan/scan.vcproj \
|
||||
ports/MSVC++/2008/dump_seekindex/dump_seekindex.vcproj \
|
||||
ports/MSVC++/2008clr/2008clr.sln \
|
||||
ports/MSVC++/2008clr/mpg123clr/advanced.cpp \
|
||||
ports/MSVC++/2008clr/mpg123clr/advanced.h \
|
||||
ports/MSVC++/2008clr/mpg123clr/AssemblyInfo.cpp \
|
||||
ports/MSVC++/2008clr/mpg123clr/dllmain.cpp \
|
||||
ports/MSVC++/2008clr/mpg123clr/enum.h \
|
||||
ports/MSVC++/2008clr/mpg123clr/error.cpp \
|
||||
ports/MSVC++/2008clr/mpg123clr/error.h \
|
||||
ports/MSVC++/2008clr/mpg123clr/id3v1.cpp \
|
||||
ports/MSVC++/2008clr/mpg123clr/id3v1.h \
|
||||
ports/MSVC++/2008clr/mpg123clr/id3v2.cpp \
|
||||
ports/MSVC++/2008clr/mpg123clr/id3v2.h \
|
||||
ports/MSVC++/2008clr/mpg123clr/mpg123clr.cpp \
|
||||
ports/MSVC++/2008clr/mpg123clr/mpg123clr.h \
|
||||
ports/MSVC++/2008clr/mpg123clr/mpg123clr.rc \
|
||||
ports/MSVC++/2008clr/mpg123clr/mpg123clr.vcproj \
|
||||
ports/MSVC++/2008clr/mpg123clr/ReadMe.txt \
|
||||
ports/MSVC++/2008clr/mpg123clr/resource.h \
|
||||
ports/MSVC++/2008clr/mpg123clr/stdafx.cpp \
|
||||
ports/MSVC++/2008clr/mpg123clr/stdafx.h \
|
||||
ports/MSVC++/2008clr/mpg123clr/string.cpp \
|
||||
ports/MSVC++/2008clr/mpg123clr/string.h \
|
||||
ports/MSVC++/2008clr/mpg123clr/targetver.h \
|
||||
ports/MSVC++/2008clr/mpg123clr/text.cpp \
|
||||
ports/MSVC++/2008clr/mpg123clr/text.h \
|
||||
ports/MSVC++/2008clr/examples/feedseekclr/feedseekclr.csproj \
|
||||
ports/MSVC++/2008clr/examples/feedseekclr/Program.cs \
|
||||
ports/MSVC++/2008clr/examples/feedseekclr/Properties/AssemblyInfo.cs \
|
||||
ports/MSVC++/2008clr/examples/ReplaceReaderclr/ReplaceReaderclr.csproj \
|
||||
ports/MSVC++/2008clr/examples/ReplaceReaderclr/Program.cs \
|
||||
ports/MSVC++/2008clr/examples/ReplaceReaderclr/Properties/AssemblyInfo.cs \
|
||||
ports/MSVC++/2008clr/examples/scanclr/scanclr.csproj \
|
||||
ports/MSVC++/2008clr/examples/scanclr/Program.cs \
|
||||
ports/MSVC++/2008clr/examples/scanclr/Properties/AssemblyInfo.cs \
|
||||
ports/MSVC++/2010/mpg123.sln \
|
||||
ports/MSVC++/2010/dump_seekindex/dump_seekindex.vcxproj \
|
||||
ports/MSVC++/2010/dump_seekindex/dump_seekindex.vcxproj.filters \
|
||||
ports/MSVC++/2010/feedseek/feedseek.vcxproj \
|
||||
ports/MSVC++/2010/feedseek/feedseek.vcxproj.filters \
|
||||
ports/MSVC++/2010/libmpg123/libmpg123.vcxproj \
|
||||
ports/MSVC++/2010/scan/scan.vcxproj \
|
||||
ports/MSVC++/2010/scan/scan.vcxproj.filters \
|
||||
ports/MSVC++/CMP3Stream/libMPG123/libMPG123.vcproj \
|
||||
ports/MSVC++/CMP3Stream/libMPG123/PLACE_LIBMPG123_SOURCES_HERE \
|
||||
ports/MSVC++/CMP3Stream/README \
|
||||
ports/MSVC++/CMP3Stream/SOURCE/CORE_Log.CPP \
|
||||
ports/MSVC++/CMP3Stream/SOURCE/CORE_FileIn.CPP \
|
||||
ports/MSVC++/CMP3Stream/SOURCE/SourceFilter_MP3Stream.CPP \
|
||||
ports/MSVC++/CMP3Stream/SOURCE/CORE_Mutex.CPP \
|
||||
ports/MSVC++/CMP3Stream/INCLUDE/CORE/CORE_FileIn.H \
|
||||
ports/MSVC++/CMP3Stream/INCLUDE/CORE/SourceFilter_MP3.H \
|
||||
ports/MSVC++/CMP3Stream/INCLUDE/IIEP_FileIn.H \
|
||||
ports/MSVC++/CMP3Stream/INCLUDE/IIEP_Def.H \
|
||||
ports/README \
|
||||
ports/Sony_PSP/config.h \
|
||||
ports/Sony_PSP/README \
|
||||
ports/Sony_PSP/Makefile.psp \
|
||||
ports/Sony_PSP/readers.c.patch \
|
||||
ports/mpg123_.pas \
|
||||
ports/Xcode/config.h \
|
||||
ports/Xcode/mpg123.h \
|
||||
ports/Xcode/mpg123.xcodeproj/project.pbxproj \
|
||||
scripts/benchmark-cpu.pl \
|
||||
scripts/tag_lyrics.py \
|
||||
scripts/conplay
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Vendored
-1168
File diff suppressed because it is too large
Load Diff
@@ -1,32 +0,0 @@
|
||||
## Makefile.am: produce Makefile.in from this
|
||||
|
||||
## copyright by the mpg123 project - free software under the terms of the LGPL 2.1
|
||||
## see COPYING and AUTHORS files in distribution or http://mpg123.org
|
||||
## initially written by Nicholas J. Humfrey
|
||||
|
||||
|
||||
EXTRA_DIST = \
|
||||
BENCHMARKING \
|
||||
BUGS \
|
||||
CONTACT \
|
||||
PATENTS \
|
||||
README.3DNOW \
|
||||
README.gain \
|
||||
README.remote \
|
||||
ROAD_TO_LGPL \
|
||||
TODO \
|
||||
LICENSE \
|
||||
THANKS \
|
||||
ACCURACY \
|
||||
libmpg123_speed.txt \
|
||||
doxyhead.xhtml \
|
||||
doxy_examples.c \
|
||||
doxygen.conf \
|
||||
examples/mpg123_to_wav.c \
|
||||
examples/scan.c \
|
||||
examples/mpglib.c \
|
||||
examples/id3dump.c \
|
||||
examples/feedseek.c \
|
||||
examples/dump_seekindex.c \
|
||||
examples/extract_frames.c \
|
||||
examples/Makefile
|
||||
@@ -1,493 +0,0 @@
|
||||
# Makefile.in generated by automake 1.12.2 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994-2012 Free Software Foundation, Inc.
|
||||
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
@SET_MAKE@
|
||||
VPATH = @srcdir@
|
||||
am__make_dryrun = \
|
||||
{ \
|
||||
am__dry=no; \
|
||||
case $$MAKEFLAGS in \
|
||||
*\\[\ \ ]*) \
|
||||
echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
|
||||
| grep '^AM OK$$' >/dev/null || am__dry=yes;; \
|
||||
*) \
|
||||
for am__flg in $$MAKEFLAGS; do \
|
||||
case $$am__flg in \
|
||||
*=*|--*) ;; \
|
||||
*n*) am__dry=yes; break;; \
|
||||
esac; \
|
||||
done;; \
|
||||
esac; \
|
||||
test $$am__dry = yes; \
|
||||
}
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkglibexecdir = $(libexecdir)/@PACKAGE@
|
||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||
install_sh_DATA = $(install_sh) -c -m 644
|
||||
install_sh_PROGRAM = $(install_sh) -c
|
||||
install_sh_SCRIPT = $(install_sh) -c
|
||||
INSTALL_HEADER = $(INSTALL_DATA)
|
||||
transform = $(program_transform_name)
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
build_triplet = @build@
|
||||
host_triplet = @host@
|
||||
subdir = doc
|
||||
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in THANKS TODO
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/m4/addrconfig.m4 \
|
||||
$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
|
||||
$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
|
||||
$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
mkinstalldirs = $(install_sh) -d
|
||||
CONFIG_HEADER = $(top_builddir)/src/config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
CONFIG_CLEAN_VPATH_FILES =
|
||||
SOURCES =
|
||||
DIST_SOURCES =
|
||||
am__can_run_installinfo = \
|
||||
case $$AM_UPDATE_INFO_DIR in \
|
||||
n|no|NO) false;; \
|
||||
*) (install-info --version) >/dev/null 2>&1;; \
|
||||
esac
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
ACLOCAL = @ACLOCAL@
|
||||
AIX_CFLAGS = @AIX_CFLAGS@
|
||||
AIX_LDFLAGS = @AIX_LDFLAGS@
|
||||
AIX_LIBS = @AIX_LIBS@
|
||||
ALIB_CFLAGS = @ALIB_CFLAGS@
|
||||
ALIB_LDFLAGS = @ALIB_LDFLAGS@
|
||||
ALIB_LIBS = @ALIB_LIBS@
|
||||
ALSA_CFLAGS = @ALSA_CFLAGS@
|
||||
ALSA_LDFLAGS = @ALSA_LDFLAGS@
|
||||
ALSA_LIBS = @ALSA_LIBS@
|
||||
AMTAR = @AMTAR@
|
||||
API_VERSION = @API_VERSION@
|
||||
AR = @AR@
|
||||
ARTS_CFLAGS = @ARTS_CFLAGS@
|
||||
ARTS_LDFLAGS = @ARTS_LDFLAGS@
|
||||
ARTS_LIBS = @ARTS_LIBS@
|
||||
AS = @AS@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AWK = @AWK@
|
||||
CC = @CC@
|
||||
CCAS = @CCAS@
|
||||
CCASDEPMODE = @CCASDEPMODE@
|
||||
CCASFLAGS = @CCASFLAGS@
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
CFLAGS = @CFLAGS@
|
||||
COREAUDIO_CFLAGS = @COREAUDIO_CFLAGS@
|
||||
COREAUDIO_LDFLAGS = @COREAUDIO_LDFLAGS@
|
||||
COREAUDIO_LIBS = @COREAUDIO_LIBS@
|
||||
CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
DECODER_LOBJ = @DECODER_LOBJ@
|
||||
DECODER_OBJ = @DECODER_OBJ@
|
||||
DEFS = @DEFS@
|
||||
DEPDIR = @DEPDIR@
|
||||
DLLTOOL = @DLLTOOL@
|
||||
DSYMUTIL = @DSYMUTIL@
|
||||
DUMMY_CFLAGS = @DUMMY_CFLAGS@
|
||||
DUMMY_LDFLAGS = @DUMMY_LDFLAGS@
|
||||
DUMMY_LIBS = @DUMMY_LIBS@
|
||||
DUMPBIN = @DUMPBIN@
|
||||
ECHO_C = @ECHO_C@
|
||||
ECHO_N = @ECHO_N@
|
||||
ECHO_T = @ECHO_T@
|
||||
EGREP = @EGREP@
|
||||
ESD_CFLAGS = @ESD_CFLAGS@
|
||||
ESD_LDFLAGS = @ESD_LDFLAGS@
|
||||
ESD_LIBS = @ESD_LIBS@
|
||||
EXEC_LT_LDFLAGS = @EXEC_LT_LDFLAGS@
|
||||
EXEEXT = @EXEEXT@
|
||||
FGREP = @FGREP@
|
||||
GREP = @GREP@
|
||||
HP_CFLAGS = @HP_CFLAGS@
|
||||
HP_LDFLAGS = @HP_LDFLAGS@
|
||||
HP_LIBS = @HP_LIBS@
|
||||
INCLUDE_STDIO_H = @INCLUDE_STDIO_H@
|
||||
INCLUDE_STDLIB_H = @INCLUDE_STDLIB_H@
|
||||
INCLUDE_SYS_TYPE_H = @INCLUDE_SYS_TYPE_H@
|
||||
INSTALL = @INSTALL@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||
JACK_CFLAGS = @JACK_CFLAGS@
|
||||
JACK_LDFLAGS = @JACK_LDFLAGS@
|
||||
JACK_LIBS = @JACK_LIBS@
|
||||
LD = @LD@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LFS_LOBJ = @LFS_LOBJ@
|
||||
LIBMPG123_VERSION = @LIBMPG123_VERSION@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
LIBS = @LIBS@
|
||||
LIBTOOL = @LIBTOOL@
|
||||
LIPO = @LIPO@
|
||||
LN_S = @LN_S@
|
||||
LTLIBOBJS = @LTLIBOBJS@
|
||||
LT_LDFLAGS = @LT_LDFLAGS@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
MANIFEST_TOOL = @MANIFEST_TOOL@
|
||||
MINT_CFLAGS = @MINT_CFLAGS@
|
||||
MINT_LDFLAGS = @MINT_LDFLAGS@
|
||||
MINT_LIBS = @MINT_LIBS@
|
||||
MKDIR_P = @MKDIR_P@
|
||||
MODULE_OBJ = @MODULE_OBJ@
|
||||
NAS_CFLAGS = @NAS_CFLAGS@
|
||||
NAS_LDFLAGS = @NAS_LDFLAGS@
|
||||
NAS_LIBS = @NAS_LIBS@
|
||||
NM = @NM@
|
||||
NMEDIT = @NMEDIT@
|
||||
OBJDUMP = @OBJDUMP@
|
||||
OBJEXT = @OBJEXT@
|
||||
OPENAL_CFLAGS = @OPENAL_CFLAGS@
|
||||
OPENAL_LDFLAGS = @OPENAL_LDFLAGS@
|
||||
OPENAL_LIBS = @OPENAL_LIBS@
|
||||
OS2_CFLAGS = @OS2_CFLAGS@
|
||||
OS2_LDFLAGS = @OS2_LDFLAGS@
|
||||
OS2_LIBS = @OS2_LIBS@
|
||||
OSS_CFLAGS = @OSS_CFLAGS@
|
||||
OSS_LDFLAGS = @OSS_LDFLAGS@
|
||||
OSS_LIBS = @OSS_LIBS@
|
||||
OTOOL = @OTOOL@
|
||||
OTOOL64 = @OTOOL64@
|
||||
OUTPUT_CFLAGS = @OUTPUT_CFLAGS@
|
||||
OUTPUT_LDFLAGS = @OUTPUT_LDFLAGS@
|
||||
OUTPUT_LIBS = @OUTPUT_LIBS@
|
||||
OUTPUT_MOD = @OUTPUT_MOD@
|
||||
OUTPUT_OBJ = @OUTPUT_OBJ@
|
||||
PACKAGE = @PACKAGE@
|
||||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||
PACKAGE_NAME = @PACKAGE_NAME@
|
||||
PACKAGE_STRING = @PACKAGE_STRING@
|
||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||
PACKAGE_URL = @PACKAGE_URL@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
PKG_CONFIG = @PKG_CONFIG@
|
||||
PORTAUDIO_CFLAGS = @PORTAUDIO_CFLAGS@
|
||||
PORTAUDIO_LDFLAGS = @PORTAUDIO_LDFLAGS@
|
||||
PORTAUDIO_LIBS = @PORTAUDIO_LIBS@
|
||||
PULSE_CFLAGS = @PULSE_CFLAGS@
|
||||
PULSE_LDFLAGS = @PULSE_LDFLAGS@
|
||||
PULSE_LIBS = @PULSE_LIBS@
|
||||
QSA_CFLAGS = @QSA_CFLAGS@
|
||||
QSA_LDFLAGS = @QSA_LDFLAGS@
|
||||
QSA_LIBS = @QSA_LIBS@
|
||||
RANLIB = @RANLIB@
|
||||
SDL_CFLAGS = @SDL_CFLAGS@
|
||||
SDL_LDFLAGS = @SDL_LDFLAGS@
|
||||
SDL_LIBS = @SDL_LIBS@
|
||||
SED = @SED@
|
||||
SET_MAKE = @SET_MAKE@
|
||||
SGI_CFLAGS = @SGI_CFLAGS@
|
||||
SGI_LDFLAGS = @SGI_LDFLAGS@
|
||||
SGI_LIBS = @SGI_LIBS@
|
||||
SHELL = @SHELL@
|
||||
SNDIO_CFLAGS = @SNDIO_CFLAGS@
|
||||
SNDIO_LDFLAGS = @SNDIO_LDFLAGS@
|
||||
SNDIO_LIBS = @SNDIO_LIBS@
|
||||
STRIP = @STRIP@
|
||||
SUN_CFLAGS = @SUN_CFLAGS@
|
||||
SUN_LDFLAGS = @SUN_LDFLAGS@
|
||||
SUN_LIBS = @SUN_LIBS@
|
||||
VERSION = @VERSION@
|
||||
WIN32_CFLAGS = @WIN32_CFLAGS@
|
||||
WIN32_LDFLAGS = @WIN32_LDFLAGS@
|
||||
WIN32_LIBS = @WIN32_LIBS@
|
||||
abs_builddir = @abs_builddir@
|
||||
abs_srcdir = @abs_srcdir@
|
||||
abs_top_builddir = @abs_top_builddir@
|
||||
abs_top_srcdir = @abs_top_srcdir@
|
||||
ac_ct_AR = @ac_ct_AR@
|
||||
ac_ct_CC = @ac_ct_CC@
|
||||
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
|
||||
am__include = @am__include@
|
||||
am__leading_dot = @am__leading_dot@
|
||||
am__quote = @am__quote@
|
||||
am__tar = @am__tar@
|
||||
am__untar = @am__untar@
|
||||
bindir = @bindir@
|
||||
build = @build@
|
||||
build_alias = @build_alias@
|
||||
build_cpu = @build_cpu@
|
||||
build_os = @build_os@
|
||||
build_vendor = @build_vendor@
|
||||
builddir = @builddir@
|
||||
datadir = @datadir@
|
||||
datarootdir = @datarootdir@
|
||||
docdir = @docdir@
|
||||
dvidir = @dvidir@
|
||||
exec_prefix = @exec_prefix@
|
||||
host = @host@
|
||||
host_alias = @host_alias@
|
||||
host_cpu = @host_cpu@
|
||||
host_os = @host_os@
|
||||
host_vendor = @host_vendor@
|
||||
htmldir = @htmldir@
|
||||
includedir = @includedir@
|
||||
infodir = @infodir@
|
||||
install_sh = @install_sh@
|
||||
libdir = @libdir@
|
||||
libexecdir = @libexecdir@
|
||||
localedir = @localedir@
|
||||
localstatedir = @localstatedir@
|
||||
mandir = @mandir@
|
||||
mkdir_p = @mkdir_p@
|
||||
oldincludedir = @oldincludedir@
|
||||
pdfdir = @pdfdir@
|
||||
prefix = @prefix@
|
||||
program_transform_name = @program_transform_name@
|
||||
psdir = @psdir@
|
||||
sbindir = @sbindir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
srcdir = @srcdir@
|
||||
sysconfdir = @sysconfdir@
|
||||
target_alias = @target_alias@
|
||||
top_build_prefix = @top_build_prefix@
|
||||
top_builddir = @top_builddir@
|
||||
top_srcdir = @top_srcdir@
|
||||
EXTRA_DIST = \
|
||||
BENCHMARKING \
|
||||
BUGS \
|
||||
CONTACT \
|
||||
PATENTS \
|
||||
README.3DNOW \
|
||||
README.gain \
|
||||
README.remote \
|
||||
ROAD_TO_LGPL \
|
||||
TODO \
|
||||
LICENSE \
|
||||
THANKS \
|
||||
ACCURACY \
|
||||
libmpg123_speed.txt \
|
||||
doxyhead.xhtml \
|
||||
doxy_examples.c \
|
||||
doxygen.conf \
|
||||
examples/mpg123_to_wav.c \
|
||||
examples/scan.c \
|
||||
examples/mpglib.c \
|
||||
examples/id3dump.c \
|
||||
examples/feedseek.c \
|
||||
examples/dump_seekindex.c \
|
||||
examples/extract_frames.c \
|
||||
examples/Makefile
|
||||
|
||||
all: all-am
|
||||
|
||||
.SUFFIXES:
|
||||
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
|
||||
@for dep in $?; do \
|
||||
case '$(am__configure_deps)' in \
|
||||
*$$dep*) \
|
||||
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
|
||||
&& { if test -f $@; then exit 0; else break; fi; }; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
done; \
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/Makefile'; \
|
||||
$(am__cd) $(top_srcdir) && \
|
||||
$(AUTOMAKE) --gnu doc/Makefile
|
||||
.PRECIOUS: Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||
*) \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
|
||||
esac;
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
|
||||
$(top_srcdir)/configure: $(am__configure_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(am__aclocal_m4_deps):
|
||||
|
||||
mostlyclean-libtool:
|
||||
-rm -f *.lo
|
||||
|
||||
clean-libtool:
|
||||
-rm -rf .libs _libs
|
||||
tags: TAGS
|
||||
TAGS:
|
||||
|
||||
ctags: CTAGS
|
||||
CTAGS:
|
||||
|
||||
cscope cscopelist:
|
||||
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
list='$(DISTFILES)'; \
|
||||
dist_files=`for file in $$list; do echo $$file; done | \
|
||||
sed -e "s|^$$srcdirstrip/||;t" \
|
||||
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
|
||||
case $$dist_files in \
|
||||
*/*) $(MKDIR_P) `echo "$$dist_files" | \
|
||||
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
|
||||
sort -u` ;; \
|
||||
esac; \
|
||||
for file in $$dist_files; do \
|
||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||
if test -d $$d/$$file; then \
|
||||
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||
if test -d "$(distdir)/$$file"; then \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
|
||||
else \
|
||||
test -f "$(distdir)/$$file" \
|
||||
|| cp -p $$d/$$file "$(distdir)/$$file" \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
check-am: all-am
|
||||
check: check-am
|
||||
all-am: Makefile
|
||||
installdirs:
|
||||
install: install-am
|
||||
install-exec: install-exec-am
|
||||
install-data: install-data-am
|
||||
uninstall: uninstall-am
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
|
||||
installcheck: installcheck-am
|
||||
install-strip:
|
||||
if test -z '$(STRIP)'; then \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
install; \
|
||||
else \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
|
||||
fi
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
|
||||
distclean-generic:
|
||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
clean: clean-am
|
||||
|
||||
clean-am: clean-generic clean-libtool mostlyclean-am
|
||||
|
||||
distclean: distclean-am
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-generic
|
||||
|
||||
dvi: dvi-am
|
||||
|
||||
dvi-am:
|
||||
|
||||
html: html-am
|
||||
|
||||
html-am:
|
||||
|
||||
info: info-am
|
||||
|
||||
info-am:
|
||||
|
||||
install-data-am:
|
||||
|
||||
install-dvi: install-dvi-am
|
||||
|
||||
install-dvi-am:
|
||||
|
||||
install-exec-am:
|
||||
|
||||
install-html: install-html-am
|
||||
|
||||
install-html-am:
|
||||
|
||||
install-info: install-info-am
|
||||
|
||||
install-info-am:
|
||||
|
||||
install-man:
|
||||
|
||||
install-pdf: install-pdf-am
|
||||
|
||||
install-pdf-am:
|
||||
|
||||
install-ps: install-ps-am
|
||||
|
||||
install-ps-am:
|
||||
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-am
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
mostlyclean: mostlyclean-am
|
||||
|
||||
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
|
||||
|
||||
pdf: pdf-am
|
||||
|
||||
pdf-am:
|
||||
|
||||
ps: ps-am
|
||||
|
||||
ps-am:
|
||||
|
||||
uninstall-am:
|
||||
|
||||
.MAKE: install-am install-strip
|
||||
|
||||
.PHONY: all all-am check check-am clean clean-generic clean-libtool \
|
||||
distclean distclean-generic distclean-libtool distdir dvi \
|
||||
dvi-am html html-am info info-am install install-am \
|
||||
install-data install-data-am install-dvi install-dvi-am \
|
||||
install-exec install-exec-am install-html install-html-am \
|
||||
install-info install-info-am install-man install-pdf \
|
||||
install-pdf-am install-ps install-ps-am install-strip \
|
||||
installcheck installcheck-am installdirs maintainer-clean \
|
||||
maintainer-clean-generic mostlyclean mostlyclean-generic \
|
||||
mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am
|
||||
|
||||
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
||||
@@ -1,63 +0,0 @@
|
||||
We badly need:
|
||||
- header reorganization (lots of stuff don't belong to mpg123.h)
|
||||
- integer type safety - STOP using ints where size_t or at least long would be appropriate (expecially stream readers)
|
||||
- sprintf -> snprintf (maybe with switch to support ancient libc; or replacement by us)
|
||||
- rewrite httpget.c; that thing has been a can of bugs for years and I understand why when I look at it (way too many cooks)
|
||||
- really parse ID3V2 tags instead of skipping; done for RVA values... using the string info (just?) needs some Unicode/Locale handling
|
||||
- check support for fixed point arithmentic; generic_nofpu seems wo work generally, but resampling does not sound nice
|
||||
|
||||
From Nicholas:
|
||||
- Seperate out MPEG Audio decoder (only) into seperate library
|
||||
- Allow choice of audio output at runtime, rather than compile time
|
||||
- Choose processor optimization at runtime, rather than compile time?
|
||||
|
||||
From Michael (some time after/around pre-0.59s):
|
||||
|
||||
- add CRC check.
|
||||
- add 'free format stream' support.
|
||||
- optimize layer2.c:
|
||||
step_two: fraction as pointer ..
|
||||
process first channel 0 than channel 1
|
||||
copy channel 0 to channel 1 for: i >= jsbound
|
||||
- better frame reader .. especially for layer 3 - DONE by a good deal by Thomas
|
||||
- MPEG system stream decoder
|
||||
- check again layer1 !! (Layer-1 support not heavily tested ..)
|
||||
Problems with Layer1 fl7 reference stream
|
||||
- Write a special (optimized) 'single channel' decode.
|
||||
- optimized dct64 for down sampling modes
|
||||
- native audio support for AIX and DEC
|
||||
- update manpage
|
||||
- optimizations for downsampling modes on layer2 and layer1
|
||||
|
||||
MORE TODO: (partially done)
|
||||
---------------------------
|
||||
|
||||
A few notes on how mpg123 tries to select a 'good'
|
||||
audio encoding and frequency. (not full implemented yet!!)
|
||||
|
||||
- mpg123 tries to set the settings you specify on the command line
|
||||
in the order of its appearence (exclusiv .. no fallback then)
|
||||
(-r <rate>, --mono, --stereo, --8bit, etc )
|
||||
|
||||
- after this, mpg123 tries to set
|
||||
1. the number of channels (or fallback to mono if stereo isn't possible)
|
||||
2. the audioformat to 16 bit (or fallback to 8bit)
|
||||
3. the "best" frequency: (in this order)
|
||||
- the exact stream frequency or fallback to
|
||||
- 2:1 frequency or fallback to
|
||||
- 4:1 frequency or try the
|
||||
- nearest frequency lower than the frequency of your stream
|
||||
mpg123 automagically converts the rate.
|
||||
|
||||
So, if you think (or even know), that your hardware supports a higher
|
||||
frequency only with eg. mono,8bit you must force mpg123 to play mono
|
||||
and 8bit. ("--8bit -m") etc....
|
||||
|
||||
If you wanna a constant format eg to output the data to stdout you
|
||||
must explicit force it with eg: '-r 44100 --stereo'
|
||||
Else the format will be the format of the mpeg stream.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,12 +0,0 @@
|
||||
<!--#include virtual="../header.html" -->
|
||||
<title>$title</title>
|
||||
<link href="/doxygen.css" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<!--#include virtual="../linkbar.html" -->
|
||||
<div style="padding:1em;">
|
||||
<strong>Note:</strong>
|
||||
This API doc is automatically generated from the current development version that you can get via Subversion or as a daily snapshot from <a href="http://mpg123.org/snapshot">http://mpg123.org/snapshot</a>.
|
||||
There may be differences (additions) compared to the latest stable release. See <a href="http://mpg123.org/cgi-bin/viewvc.cgi/trunk/NEWS.libmpg123?view=markup">NEWS.libmpg123</a> and the overall <a href="http://mpg123.org/cgi-bin/viewvc.cgi/trunk/NEWS?view=markup">NEWS</a> file on libmpg123 versions and important changes between them.<br />
|
||||
Let me emphasize that the policy for libmpg123 is to always stay backwards compatible -- only <em>additions</em> are planned (and it's not yet planned to change the plans;-).
|
||||
</div>
|
||||
@@ -1,118 +0,0 @@
|
||||
/*
|
||||
mpg123_to_wav.c
|
||||
|
||||
copyright 2007 by the mpg123 project - free software under the terms of the LGPL 2.1
|
||||
see COPYING and AUTHORS files in distribution or http://mpg123.org
|
||||
initially written by Nicholas Humfrey
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <strings.h>
|
||||
#include <mpg123.h>
|
||||
#include <sndfile.h>
|
||||
|
||||
|
||||
void usage()
|
||||
{
|
||||
printf("Usage: mpg123_to_wav <input> <output> [s16|f32 [ <buffersize>]]\n");
|
||||
exit(99);
|
||||
}
|
||||
|
||||
void cleanup(mpg123_handle *mh)
|
||||
{
|
||||
/* It's really to late for error checks here;-) */
|
||||
mpg123_close(mh);
|
||||
mpg123_delete(mh);
|
||||
mpg123_exit();
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
SNDFILE* sndfile = NULL;
|
||||
SF_INFO sfinfo;
|
||||
mpg123_handle *mh = NULL;
|
||||
unsigned char* buffer = NULL;
|
||||
size_t buffer_size = 0;
|
||||
size_t done = 0;
|
||||
int channels = 0, encoding = 0;
|
||||
long rate = 0;
|
||||
int err = MPG123_OK;
|
||||
off_t samples = 0;
|
||||
|
||||
if (argc<3) usage();
|
||||
printf( "Input file: %s\n", argv[1]);
|
||||
printf( "Output file: %s\n", argv[2]);
|
||||
|
||||
err = mpg123_init();
|
||||
if(err != MPG123_OK || (mh = mpg123_new(NULL, &err)) == NULL)
|
||||
{
|
||||
fprintf(stderr, "Basic setup goes wrong: %s", mpg123_plain_strerror(err));
|
||||
cleanup(mh);
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* Simple hack to enable floating point output. */
|
||||
if(argc >= 4 && !strcmp(argv[3], "f32")) mpg123_param(mh, MPG123_ADD_FLAGS, MPG123_FORCE_FLOAT, 0.);
|
||||
|
||||
/* Let mpg123 work with the file, that excludes MPG123_NEED_MORE messages. */
|
||||
if( mpg123_open(mh, argv[1]) != MPG123_OK
|
||||
/* Peek into track and get first output format. */
|
||||
|| mpg123_getformat(mh, &rate, &channels, &encoding) != MPG123_OK )
|
||||
{
|
||||
fprintf( stderr, "Trouble with mpg123: %s\n", mpg123_strerror(mh) );
|
||||
cleanup(mh);
|
||||
return -1;
|
||||
}
|
||||
|
||||
if(encoding != MPG123_ENC_SIGNED_16 && encoding != MPG123_ENC_FLOAT_32)
|
||||
{ /* Signed 16 is the default output format anyways; it would actually by only different if we forced it.
|
||||
So this check is here just for this explanation. */
|
||||
cleanup(mh);
|
||||
fprintf(stderr, "Bad encoding: 0x%x!\n", encoding);
|
||||
return -2;
|
||||
}
|
||||
/* Ensure that this output format will not change (it could, when we allow it). */
|
||||
mpg123_format_none(mh);
|
||||
mpg123_format(mh, rate, channels, encoding);
|
||||
|
||||
bzero(&sfinfo, sizeof(sfinfo) );
|
||||
sfinfo.samplerate = rate;
|
||||
sfinfo.channels = channels;
|
||||
sfinfo.format = SF_FORMAT_WAV|(encoding == MPG123_ENC_SIGNED_16 ? SF_FORMAT_PCM_16 : SF_FORMAT_FLOAT);
|
||||
printf("Creating WAV with %i channels and %liHz.\n", channels, rate);
|
||||
|
||||
sndfile = sf_open(argv[2], SFM_WRITE, &sfinfo);
|
||||
if(sndfile == NULL){ fprintf(stderr, "Cannot open output file!\n"); cleanup(mh); return -2; }
|
||||
|
||||
/* Buffer could be almost any size here, mpg123_outblock() is just some recommendation.
|
||||
Important, especially for sndfile writing, is that the size is a multiple of sample size. */
|
||||
buffer_size = argc >= 5 ? atol(argv[4]) : mpg123_outblock(mh);
|
||||
buffer = malloc( buffer_size );
|
||||
|
||||
do
|
||||
{
|
||||
sf_count_t more_samples;
|
||||
err = mpg123_read( mh, buffer, buffer_size, &done );
|
||||
more_samples = encoding == MPG123_ENC_SIGNED_16
|
||||
? sf_write_short(sndfile, (short*)buffer, done/sizeof(short))
|
||||
: sf_write_float(sndfile, (float*)buffer, done/sizeof(float));
|
||||
if(more_samples < 0 || more_samples*mpg123_encsize(encoding) != done)
|
||||
{
|
||||
fprintf(stderr, "Warning: Written number of samples does not match the byte count we got from libmpg123: %li != %li\n", (long)(more_samples*mpg123_encsize(encoding)), (long)done);
|
||||
}
|
||||
samples += more_samples;
|
||||
/* We are not in feeder mode, so MPG123_OK, MPG123_ERR and MPG123_NEW_FORMAT are the only possibilities.
|
||||
We do not handle a new format, MPG123_DONE is the end... so abort on anything not MPG123_OK. */
|
||||
} while (err==MPG123_OK);
|
||||
|
||||
if(err != MPG123_DONE)
|
||||
fprintf( stderr, "Warning: Decoding ended prematurely because: %s\n",
|
||||
err == MPG123_ERR ? mpg123_strerror(mh) : mpg123_plain_strerror(err) );
|
||||
|
||||
sf_close( sndfile );
|
||||
|
||||
samples /= channels;
|
||||
printf("%li samples written.\n", (long)samples);
|
||||
cleanup(mh);
|
||||
return 0;
|
||||
}
|
||||
@@ -1,741 +0,0 @@
|
||||
<?xml version="1.0" encoding="Windows-1252"?>
|
||||
<VisualStudioProject
|
||||
ProjectType="Visual C++"
|
||||
Version="8,00"
|
||||
Name="libmpg123"
|
||||
ProjectGUID="{5ABE9A83-CA20-4321-878B-BF71EFDE3A6D}"
|
||||
RootNamespace="libmpg123"
|
||||
Keyword="Win32Proj"
|
||||
>
|
||||
<Platforms>
|
||||
<Platform
|
||||
Name="Win32"
|
||||
/>
|
||||
</Platforms>
|
||||
<ToolFiles>
|
||||
</ToolFiles>
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="Debug_Generic|Win32"
|
||||
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
|
||||
IntermediateDirectory="$(ConfigurationName)"
|
||||
ConfigurationType="4"
|
||||
CharacterSet="1"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="../..;../../../../src/libmpg123"
|
||||
PreprocessorDefinitions="WIN32;_CRT_SECURE_NO_WARNINGS;REAL_IS_FLOAT;OPT_GENERIC;_DEBUG;_LIB"
|
||||
MinimalRebuild="false"
|
||||
ExceptionHandling="0"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="3"
|
||||
RuntimeTypeInfo="false"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
Detect64BitPortabilityProblems="false"
|
||||
DebugInformationFormat="3"
|
||||
CompileAs="1"
|
||||
DisableSpecificWarnings="4996"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXDCMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release_Generic|Win32"
|
||||
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
|
||||
IntermediateDirectory="$(ConfigurationName)"
|
||||
ConfigurationType="4"
|
||||
CharacterSet="1"
|
||||
WholeProgramOptimization="1"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
InlineFunctionExpansion="2"
|
||||
EnableIntrinsicFunctions="true"
|
||||
FavorSizeOrSpeed="1"
|
||||
OmitFramePointers="true"
|
||||
AdditionalIncludeDirectories="../..;../../../../src/libmpg123"
|
||||
PreprocessorDefinitions="WIN32;_CRT_SECURE_NO_WARNINGS;REAL_IS_FLOAT;OPT_GENERIC;NDEBUG;_LIB"
|
||||
ExceptionHandling="0"
|
||||
RuntimeLibrary="2"
|
||||
BufferSecurityCheck="false"
|
||||
EnableFunctionLevelLinking="true"
|
||||
EnableEnhancedInstructionSet="1"
|
||||
FloatingPointModel="2"
|
||||
RuntimeTypeInfo="false"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
Detect64BitPortabilityProblems="false"
|
||||
DebugInformationFormat="0"
|
||||
CompileAs="1"
|
||||
DisableSpecificWarnings="4996"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXDCMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release_i386|Win32"
|
||||
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
|
||||
IntermediateDirectory="$(ConfigurationName)"
|
||||
ConfigurationType="4"
|
||||
CharacterSet="1"
|
||||
WholeProgramOptimization="1"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
InlineFunctionExpansion="2"
|
||||
EnableIntrinsicFunctions="true"
|
||||
FavorSizeOrSpeed="1"
|
||||
OmitFramePointers="true"
|
||||
AdditionalIncludeDirectories="../..;../../../../src/libmpg123"
|
||||
PreprocessorDefinitions="WIN32;_CRT_SECURE_NO_WARNINGS;REAL_IS_FLOAT;OPT_I386;NDEBUG;_LIB"
|
||||
ExceptionHandling="0"
|
||||
RuntimeLibrary="2"
|
||||
BufferSecurityCheck="false"
|
||||
EnableFunctionLevelLinking="true"
|
||||
EnableEnhancedInstructionSet="1"
|
||||
FloatingPointModel="2"
|
||||
RuntimeTypeInfo="false"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
Detect64BitPortabilityProblems="false"
|
||||
DebugInformationFormat="0"
|
||||
CompileAs="1"
|
||||
DisableSpecificWarnings="4996"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXDCMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release_i486|Win32"
|
||||
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
|
||||
IntermediateDirectory="$(ConfigurationName)"
|
||||
ConfigurationType="4"
|
||||
CharacterSet="1"
|
||||
WholeProgramOptimization="1"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
InlineFunctionExpansion="2"
|
||||
EnableIntrinsicFunctions="true"
|
||||
FavorSizeOrSpeed="1"
|
||||
OmitFramePointers="true"
|
||||
AdditionalIncludeDirectories="../..;../../../../src/libmpg123"
|
||||
PreprocessorDefinitions="WIN32;_CRT_SECURE_NO_WARNINGS;REAL_IS_FLOAT;OPT_I486;NDEBUG;_LIB"
|
||||
ExceptionHandling="0"
|
||||
RuntimeLibrary="2"
|
||||
BufferSecurityCheck="false"
|
||||
EnableFunctionLevelLinking="true"
|
||||
EnableEnhancedInstructionSet="1"
|
||||
FloatingPointModel="2"
|
||||
RuntimeTypeInfo="false"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
Detect64BitPortabilityProblems="false"
|
||||
DebugInformationFormat="0"
|
||||
CompileAs="1"
|
||||
DisableSpecificWarnings="4996"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXDCMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Debug_i386|Win32"
|
||||
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
|
||||
IntermediateDirectory="$(ConfigurationName)"
|
||||
ConfigurationType="4"
|
||||
CharacterSet="1"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="../..;../../../../src/libmpg123"
|
||||
PreprocessorDefinitions="WIN32;_CRT_SECURE_NO_WARNINGS;REAL_IS_FLOAT;OPT_I386;_DEBUG;_LIB"
|
||||
MinimalRebuild="false"
|
||||
ExceptionHandling="0"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="3"
|
||||
RuntimeTypeInfo="false"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
Detect64BitPortabilityProblems="false"
|
||||
DebugInformationFormat="3"
|
||||
CompileAs="1"
|
||||
DisableSpecificWarnings="4996"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXDCMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Debug_i486|Win32"
|
||||
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
|
||||
IntermediateDirectory="$(ConfigurationName)"
|
||||
ConfigurationType="4"
|
||||
CharacterSet="1"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="../..;../../../../src/libmpg123"
|
||||
PreprocessorDefinitions="WIN32;_CRT_SECURE_NO_WARNINGS;OPT_I486;REAL_IS_FLOAT;_DEBUG;_LIB"
|
||||
MinimalRebuild="false"
|
||||
ExceptionHandling="0"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="3"
|
||||
RuntimeTypeInfo="false"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
Detect64BitPortabilityProblems="false"
|
||||
DebugInformationFormat="3"
|
||||
CompileAs="1"
|
||||
DisableSpecificWarnings="4996"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXDCMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
/>
|
||||
</Configuration>
|
||||
</Configurations>
|
||||
<References>
|
||||
</References>
|
||||
<Files>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\libmpg123\compat.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\libmpg123\compat.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\config.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\libmpg123\dct64.c"
|
||||
>
|
||||
<FileConfiguration
|
||||
Name="Release_i386|Win32"
|
||||
ExcludedFromBuild="true"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Release_i486|Win32"
|
||||
ExcludedFromBuild="true"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\libmpg123\dct64_i386.c"
|
||||
>
|
||||
<FileConfiguration
|
||||
Name="Debug_Generic|Win32"
|
||||
ExcludedFromBuild="true"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Release_Generic|Win32"
|
||||
ExcludedFromBuild="true"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\libmpg123\dct64_i486.c"
|
||||
>
|
||||
<FileConfiguration
|
||||
Name="Debug_Generic|Win32"
|
||||
ExcludedFromBuild="true"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Release_Generic|Win32"
|
||||
ExcludedFromBuild="true"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Release_i386|Win32"
|
||||
ExcludedFromBuild="true"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Release_i486|Win32"
|
||||
ExcludedFromBuild="true"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Debug_i386|Win32"
|
||||
ExcludedFromBuild="true"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\libmpg123\debug.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\libmpg123\decode.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\libmpg123\equalizer.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\libmpg123\feature.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\libmpg123\format.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\libmpg123\frame.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\libmpg123\frame.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\libmpg123\getbits.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\libmpg123\huffman.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\libmpg123\icy.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\libmpg123\icy.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\libmpg123\icy2utf8.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\libmpg123\icy2utf8.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\libmpg123\id3.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\libmpg123\id3.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\libmpg123\index.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\libmpg123\index.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\libmpg123\l2tables.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\libmpg123\layer1.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\libmpg123\layer2.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\libmpg123\layer3.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\libmpg123\libmpg123.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\mpg123.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\libmpg123\mpg123lib_intern.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\msvc.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\libmpg123\ntom.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\libmpg123\optimize.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\libmpg123\optimize.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\libmpg123\parse.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\libmpg123\parse.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\libmpg123\reader.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\libmpg123\readers.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\libmpg123\sample.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\libmpg123\stringbuf.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\libmpg123\synth.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\libmpg123\synth.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\libmpg123\synth_8bit.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\libmpg123\synth_i486.c"
|
||||
>
|
||||
<FileConfiguration
|
||||
Name="Debug_Generic|Win32"
|
||||
ExcludedFromBuild="true"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Release_Generic|Win32"
|
||||
ExcludedFromBuild="true"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Release_i386|Win32"
|
||||
ExcludedFromBuild="true"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Debug_i386|Win32"
|
||||
ExcludedFromBuild="true"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\libmpg123\synth_real.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\libmpg123\synth_s32.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\libmpg123\tabinit.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\libmpg123\true.h"
|
||||
>
|
||||
</File>
|
||||
</Files>
|
||||
<Globals>
|
||||
</Globals>
|
||||
</VisualStudioProject>
|
||||
@@ -1,194 +0,0 @@
|
||||
<?xml version="1.0" encoding="Windows-1252"?>
|
||||
<VisualStudioProject
|
||||
ProjectType="Visual C++"
|
||||
Version="9,00"
|
||||
Name="dump_seekindex"
|
||||
ProjectGUID="{B086EA3E-700A-4DED-A91D-85ED8A79A8FC}"
|
||||
RootNamespace="dump_seekindex"
|
||||
Keyword="Win32Proj"
|
||||
TargetFrameworkVersion="196613"
|
||||
>
|
||||
<Platforms>
|
||||
<Platform
|
||||
Name="Win32"
|
||||
/>
|
||||
</Platforms>
|
||||
<ToolFiles>
|
||||
</ToolFiles>
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="Debug|Win32"
|
||||
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
|
||||
IntermediateDirectory="$(ConfigurationName)"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="1"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="../..;../../../../src/libmpg123"
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
|
||||
MinimalRebuild="false"
|
||||
ExceptionHandling="0"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="3"
|
||||
RuntimeTypeInfo="false"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
DebugInformationFormat="3"
|
||||
CompileAs="1"
|
||||
DisableSpecificWarnings="4996"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
LinkIncremental="2"
|
||||
GenerateDebugInformation="true"
|
||||
SubSystem="1"
|
||||
TargetMachine="1"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManifestTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXDCMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCAppVerifierTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|Win32"
|
||||
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
|
||||
IntermediateDirectory="$(ConfigurationName)"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="1"
|
||||
WholeProgramOptimization="1"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="2"
|
||||
InlineFunctionExpansion="2"
|
||||
EnableIntrinsicFunctions="true"
|
||||
FavorSizeOrSpeed="1"
|
||||
OmitFramePointers="true"
|
||||
AdditionalIncludeDirectories="../..;../../../../src/libmpg123"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
|
||||
ExceptionHandling="0"
|
||||
RuntimeLibrary="2"
|
||||
BufferSecurityCheck="false"
|
||||
EnableFunctionLevelLinking="true"
|
||||
EnableEnhancedInstructionSet="1"
|
||||
RuntimeTypeInfo="false"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
DebugInformationFormat="0"
|
||||
CompileAs="1"
|
||||
DisableSpecificWarnings="4996"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
LinkIncremental="1"
|
||||
GenerateDebugInformation="true"
|
||||
SubSystem="1"
|
||||
OptimizeReferences="2"
|
||||
EnableCOMDATFolding="2"
|
||||
TargetMachine="1"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManifestTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXDCMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCAppVerifierTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
/>
|
||||
</Configuration>
|
||||
</Configurations>
|
||||
<References>
|
||||
<ProjectReference
|
||||
ReferencedProjectIdentifier="{67CAA87B-7CF1-4F93-BB67-21C513F40803}"
|
||||
RelativePathToProject=".\libmpg123\libmpg123.vcproj"
|
||||
/>
|
||||
</References>
|
||||
<Files>
|
||||
<File
|
||||
RelativePath="..\..\..\..\doc\examples\dump_seekindex.c"
|
||||
>
|
||||
</File>
|
||||
</Files>
|
||||
<Globals>
|
||||
</Globals>
|
||||
</VisualStudioProject>
|
||||
@@ -1,195 +0,0 @@
|
||||
<?xml version="1.0" encoding="Windows-1252"?>
|
||||
<VisualStudioProject
|
||||
ProjectType="Visual C++"
|
||||
Version="9,00"
|
||||
Name="feedseek"
|
||||
ProjectGUID="{472481BF-11B6-41A9-BF6A-8BE16A7F8FD6}"
|
||||
RootNamespace="feedseek"
|
||||
Keyword="Win32Proj"
|
||||
TargetFrameworkVersion="196613"
|
||||
>
|
||||
<Platforms>
|
||||
<Platform
|
||||
Name="Win32"
|
||||
/>
|
||||
</Platforms>
|
||||
<ToolFiles>
|
||||
</ToolFiles>
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="Debug|Win32"
|
||||
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
|
||||
IntermediateDirectory="$(ConfigurationName)"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="1"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="../..;../../../../src/libmpg123"
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
|
||||
MinimalRebuild="false"
|
||||
ExceptionHandling="0"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="3"
|
||||
RuntimeTypeInfo="false"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
DebugInformationFormat="3"
|
||||
CompileAs="1"
|
||||
DisableSpecificWarnings="4996"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
LinkIncremental="2"
|
||||
GenerateDebugInformation="true"
|
||||
SubSystem="1"
|
||||
TargetMachine="1"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManifestTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXDCMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCAppVerifierTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|Win32"
|
||||
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
|
||||
IntermediateDirectory="$(ConfigurationName)"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="1"
|
||||
WholeProgramOptimization="1"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="2"
|
||||
InlineFunctionExpansion="2"
|
||||
EnableIntrinsicFunctions="true"
|
||||
FavorSizeOrSpeed="1"
|
||||
OmitFramePointers="true"
|
||||
AdditionalIncludeDirectories="../..;../../../../src/libmpg123"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
|
||||
ExceptionHandling="0"
|
||||
RuntimeLibrary="2"
|
||||
BufferSecurityCheck="false"
|
||||
EnableFunctionLevelLinking="true"
|
||||
EnableEnhancedInstructionSet="1"
|
||||
FloatingPointModel="0"
|
||||
RuntimeTypeInfo="false"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
DebugInformationFormat="0"
|
||||
CompileAs="1"
|
||||
DisableSpecificWarnings="4996"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
LinkIncremental="1"
|
||||
GenerateDebugInformation="true"
|
||||
SubSystem="1"
|
||||
OptimizeReferences="2"
|
||||
EnableCOMDATFolding="2"
|
||||
TargetMachine="1"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManifestTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXDCMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCAppVerifierTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
/>
|
||||
</Configuration>
|
||||
</Configurations>
|
||||
<References>
|
||||
<ProjectReference
|
||||
ReferencedProjectIdentifier="{67CAA87B-7CF1-4F93-BB67-21C513F40803}"
|
||||
RelativePathToProject=".\libmpg123\libmpg123.vcproj"
|
||||
/>
|
||||
</References>
|
||||
<Files>
|
||||
<File
|
||||
RelativePath="..\..\examples\feedseek.c"
|
||||
>
|
||||
</File>
|
||||
</Files>
|
||||
<Globals>
|
||||
</Globals>
|
||||
</VisualStudioProject>
|
||||
File diff suppressed because one or more lines are too long
@@ -1,44 +0,0 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 10.00
|
||||
# Visual Studio 2008
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libmpg123", "libmpg123\libmpg123.vcproj", "{67CAA87B-7CF1-4F93-BB67-21C513F40803}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mpglib", "mpglib\mpglib.vcproj", "{9FB32EE1-C45A-4CCD-9AC8-112C43AF80A7}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "feedseek", "feedseek\feedseek.vcproj", "{472481BF-11B6-41A9-BF6A-8BE16A7F8FD6}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "scan", "scan\scan.vcproj", "{245C2785-2FA9-4A6B-8558-35BB8473AEA1}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dump_seekindex", "dump_seekindex\dump_seekindex.vcproj", "{B086EA3E-700A-4DED-A91D-85ED8A79A8FC}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Win32 = Debug|Win32
|
||||
Release|Win32 = Release|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{67CAA87B-7CF1-4F93-BB67-21C513F40803}.Debug|Win32.ActiveCfg = Debug_Generic|Win32
|
||||
{67CAA87B-7CF1-4F93-BB67-21C513F40803}.Debug|Win32.Build.0 = Debug_Generic|Win32
|
||||
{67CAA87B-7CF1-4F93-BB67-21C513F40803}.Release|Win32.ActiveCfg = Release_Generic_Dll|Win32
|
||||
{67CAA87B-7CF1-4F93-BB67-21C513F40803}.Release|Win32.Build.0 = Release_Generic_Dll|Win32
|
||||
{9FB32EE1-C45A-4CCD-9AC8-112C43AF80A7}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{9FB32EE1-C45A-4CCD-9AC8-112C43AF80A7}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{9FB32EE1-C45A-4CCD-9AC8-112C43AF80A7}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{9FB32EE1-C45A-4CCD-9AC8-112C43AF80A7}.Release|Win32.Build.0 = Release|Win32
|
||||
{472481BF-11B6-41A9-BF6A-8BE16A7F8FD6}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{472481BF-11B6-41A9-BF6A-8BE16A7F8FD6}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{472481BF-11B6-41A9-BF6A-8BE16A7F8FD6}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{472481BF-11B6-41A9-BF6A-8BE16A7F8FD6}.Release|Win32.Build.0 = Release|Win32
|
||||
{245C2785-2FA9-4A6B-8558-35BB8473AEA1}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{245C2785-2FA9-4A6B-8558-35BB8473AEA1}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{245C2785-2FA9-4A6B-8558-35BB8473AEA1}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{245C2785-2FA9-4A6B-8558-35BB8473AEA1}.Release|Win32.Build.0 = Release|Win32
|
||||
{B086EA3E-700A-4DED-A91D-85ED8A79A8FC}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{B086EA3E-700A-4DED-A91D-85ED8A79A8FC}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{B086EA3E-700A-4DED-A91D-85ED8A79A8FC}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{B086EA3E-700A-4DED-A91D-85ED8A79A8FC}.Release|Win32.Build.0 = Release|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
@@ -1,191 +0,0 @@
|
||||
<?xml version="1.0" encoding="Windows-1252"?>
|
||||
<VisualStudioProject
|
||||
ProjectType="Visual C++"
|
||||
Version="9,00"
|
||||
Name="mpglib"
|
||||
ProjectGUID="{9FB32EE1-C45A-4CCD-9AC8-112C43AF80A7}"
|
||||
RootNamespace="mpglib"
|
||||
Keyword="Win32Proj"
|
||||
TargetFrameworkVersion="196613"
|
||||
>
|
||||
<Platforms>
|
||||
<Platform
|
||||
Name="Win32"
|
||||
/>
|
||||
</Platforms>
|
||||
<ToolFiles>
|
||||
</ToolFiles>
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="Debug|Win32"
|
||||
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
|
||||
IntermediateDirectory="$(ConfigurationName)"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="1"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="../..;../../../../src/libmpg123"
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
|
||||
MinimalRebuild="true"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="3"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
DebugInformationFormat="4"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
LinkIncremental="2"
|
||||
GenerateDebugInformation="true"
|
||||
SubSystem="1"
|
||||
TargetMachine="1"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManifestTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXDCMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCAppVerifierTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|Win32"
|
||||
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
|
||||
IntermediateDirectory="$(ConfigurationName)"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="1"
|
||||
WholeProgramOptimization="1"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="2"
|
||||
InlineFunctionExpansion="2"
|
||||
EnableIntrinsicFunctions="true"
|
||||
FavorSizeOrSpeed="1"
|
||||
OmitFramePointers="true"
|
||||
AdditionalIncludeDirectories="../..;../../../../src/libmpg123"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
|
||||
ExceptionHandling="0"
|
||||
RuntimeLibrary="2"
|
||||
BufferSecurityCheck="false"
|
||||
EnableFunctionLevelLinking="true"
|
||||
EnableEnhancedInstructionSet="1"
|
||||
FloatingPointModel="0"
|
||||
RuntimeTypeInfo="false"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
DebugInformationFormat="0"
|
||||
CompileAs="1"
|
||||
DisableSpecificWarnings="4996"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
LinkIncremental="1"
|
||||
GenerateDebugInformation="true"
|
||||
SubSystem="1"
|
||||
OptimizeReferences="2"
|
||||
EnableCOMDATFolding="2"
|
||||
TargetMachine="1"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManifestTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXDCMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCAppVerifierTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
/>
|
||||
</Configuration>
|
||||
</Configurations>
|
||||
<References>
|
||||
<ProjectReference
|
||||
ReferencedProjectIdentifier="{67CAA87B-7CF1-4F93-BB67-21C513F40803}"
|
||||
RelativePathToProject=".\libmpg123\libmpg123.vcproj"
|
||||
/>
|
||||
</References>
|
||||
<Files>
|
||||
<File
|
||||
RelativePath="..\..\..\..\doc\examples\mpglib.c"
|
||||
>
|
||||
</File>
|
||||
</Files>
|
||||
<Globals>
|
||||
</Globals>
|
||||
</VisualStudioProject>
|
||||
@@ -1,195 +0,0 @@
|
||||
<?xml version="1.0" encoding="Windows-1252"?>
|
||||
<VisualStudioProject
|
||||
ProjectType="Visual C++"
|
||||
Version="9,00"
|
||||
Name="scan"
|
||||
ProjectGUID="{245C2785-2FA9-4A6B-8558-35BB8473AEA1}"
|
||||
RootNamespace="scan"
|
||||
Keyword="Win32Proj"
|
||||
TargetFrameworkVersion="196613"
|
||||
>
|
||||
<Platforms>
|
||||
<Platform
|
||||
Name="Win32"
|
||||
/>
|
||||
</Platforms>
|
||||
<ToolFiles>
|
||||
</ToolFiles>
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="Debug|Win32"
|
||||
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
|
||||
IntermediateDirectory="$(ConfigurationName)"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="1"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="../..;../../../../src/libmpg123"
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
|
||||
MinimalRebuild="false"
|
||||
ExceptionHandling="0"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="3"
|
||||
RuntimeTypeInfo="false"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
DebugInformationFormat="3"
|
||||
CompileAs="1"
|
||||
DisableSpecificWarnings="4996"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
LinkIncremental="2"
|
||||
GenerateDebugInformation="true"
|
||||
SubSystem="1"
|
||||
TargetMachine="1"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManifestTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXDCMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCAppVerifierTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|Win32"
|
||||
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
|
||||
IntermediateDirectory="$(ConfigurationName)"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="1"
|
||||
WholeProgramOptimization="1"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="2"
|
||||
InlineFunctionExpansion="2"
|
||||
EnableIntrinsicFunctions="true"
|
||||
FavorSizeOrSpeed="1"
|
||||
OmitFramePointers="true"
|
||||
AdditionalIncludeDirectories="../..;../../../../src/libmpg123"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
|
||||
ExceptionHandling="0"
|
||||
RuntimeLibrary="2"
|
||||
BufferSecurityCheck="false"
|
||||
EnableFunctionLevelLinking="true"
|
||||
EnableEnhancedInstructionSet="1"
|
||||
FloatingPointModel="0"
|
||||
RuntimeTypeInfo="false"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
DebugInformationFormat="0"
|
||||
CompileAs="1"
|
||||
DisableSpecificWarnings="4996"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
LinkIncremental="1"
|
||||
GenerateDebugInformation="true"
|
||||
SubSystem="1"
|
||||
OptimizeReferences="2"
|
||||
EnableCOMDATFolding="2"
|
||||
TargetMachine="1"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManifestTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXDCMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCAppVerifierTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
/>
|
||||
</Configuration>
|
||||
</Configurations>
|
||||
<References>
|
||||
<ProjectReference
|
||||
ReferencedProjectIdentifier="{67CAA87B-7CF1-4F93-BB67-21C513F40803}"
|
||||
RelativePathToProject=".\libmpg123\libmpg123.vcproj"
|
||||
/>
|
||||
</References>
|
||||
<Files>
|
||||
<File
|
||||
RelativePath="..\..\examples\scan.c"
|
||||
>
|
||||
</File>
|
||||
</Files>
|
||||
<Globals>
|
||||
</Globals>
|
||||
</VisualStudioProject>
|
||||
@@ -1,90 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{3C75D302-5DA2-49DD-A27A-5EB199D6933B}</ProjectGuid>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
<RootNamespace>dump_seekindex</RootNamespace>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
<OutDir>$(ProjectDir)$(Configuration)\</OutDir>
|
||||
<IncludePath>..\..\..\MSVC++;..\..\..\..\src\libmpg123;$(IncludePath)</IncludePath>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
<OutDir>$(ProjectDir)$(Configuration)\</OutDir>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\..\..\doc\examples\dump_seekindex.c" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\libmpg123\libmpg123.vcxproj">
|
||||
<Project>{67caa87b-7cf1-4f93-bb67-21c513f40803}</Project>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
||||
@@ -1,95 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\examples\feedseek.c" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\libmpg123\libmpg123.vcxproj">
|
||||
<Project>{67caa87b-7cf1-4f93-bb67-21c513f40803}</Project>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{AE56D9D0-ECBA-44CD-943A-E530F6C46E15}</ProjectGuid>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
<RootNamespace>feedseek</RootNamespace>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
<IncludePath>..\..\..\MSVC++;..\..\..\..\src\libmpg123;$(IncludePath)</IncludePath>
|
||||
<OutDir>$(ProjectDir)$(Configuration)\</OutDir>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
<IncludePath>..\..\..\MSVC++;..\..\..\..\src\libmpg123;$(IncludePath)</IncludePath>
|
||||
<OutDir>$(ProjectDir)$(Configuration)\</OutDir>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
||||
<PreprocessorDefinitions>WIN32;_CRT_SECURE_NO_WARNINGS;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<PreprocessorDefinitions>WIN32;_CRT_SECURE_NO_WARNINGS;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
||||
@@ -1,960 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug_Generic_Dll|Win32">
|
||||
<Configuration>Debug_Generic_Dll</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug_Generic|Win32">
|
||||
<Configuration>Debug_Generic</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug_x86_Dll_Minimal|Win32">
|
||||
<Configuration>Debug_x86_Dll_Minimal</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug_x86_Dll|Win32">
|
||||
<Configuration>Debug_x86_Dll</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug_x86|Win32">
|
||||
<Configuration>Debug_x86</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release_Generic_Dll|Win32">
|
||||
<Configuration>Release_Generic_Dll</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release_Generic|Win32">
|
||||
<Configuration>Release_Generic</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release_x86_Dll_Minimal|Win32">
|
||||
<Configuration>Release_x86_Dll_Minimal</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release_x86_Dll|Win32">
|
||||
<Configuration>Release_x86_Dll</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release_x86|Win32">
|
||||
<Configuration>Release_x86</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{67CAA87B-7CF1-4F93-BB67-21C513F40803}</ProjectGuid>
|
||||
<RootNamespace>libmpg123</RootNamespace>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_x86_Dll_Minimal|Win32'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_x86_Dll_Minimal|Win32'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_x86_Dll|Win32'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_x86_Dll|Win32'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_x86|Win32'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_x86|Win32'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_Generic_Dll|Win32'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Generic_Dll|Win32'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_Generic|Win32'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Generic|Win32'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release_x86_Dll_Minimal|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_x86_Dll_Minimal|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release_x86_Dll|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_x86_Dll|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release_x86|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_x86|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release_Generic_Dll|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Generic_Dll|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release_Generic|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Generic|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup>
|
||||
<_ProjectFileVersion>10.0.21006.1</_ProjectFileVersion>
|
||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug_Generic|Win32'">$(ProjectDir)Debug\</OutDir>
|
||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug_Generic|Win32'">Debug\</IntDir>
|
||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release_Generic|Win32'">$(ProjectDir)Release\</OutDir>
|
||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release_Generic|Win32'">Release\</IntDir>
|
||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug_Generic_Dll|Win32'">$(ProjectDir)Debug\</OutDir>
|
||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug_Generic_Dll|Win32'">Debug\</IntDir>
|
||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release_Generic_Dll|Win32'">$(ProjectDir)Release\</OutDir>
|
||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release_Generic_Dll|Win32'">Release\</IntDir>
|
||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug_x86|Win32'">$(ProjectDir)Debug\</OutDir>
|
||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug_x86|Win32'">Debug\</IntDir>
|
||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release_x86|Win32'">$(ProjectDir)Release\</OutDir>
|
||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release_x86|Win32'">Release\</IntDir>
|
||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug_x86_Dll|Win32'">$(ProjectDir)Debug\</OutDir>
|
||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug_x86_Dll|Win32'">Debug\</IntDir>
|
||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release_x86_Dll|Win32'">$(ProjectDir)Release\</OutDir>
|
||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release_x86_Dll|Win32'">Release\</IntDir>
|
||||
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release_x86_Dll|Win32'">false</LinkIncremental>
|
||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug_x86_Dll_Minimal|Win32'">$(ProjectDir)Debug\</OutDir>
|
||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug_x86_Dll_Minimal|Win32'">Debug\</IntDir>
|
||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release_x86_Dll_Minimal|Win32'">$(ProjectDir)Release\</OutDir>
|
||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release_x86_Dll_Minimal|Win32'">Release\</IntDir>
|
||||
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release_x86_Dll_Minimal|Win32'">false</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Generic|Win32'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>../..;../../../../src/libmpg123;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_CRT_SECURE_NO_WARNINGS;OPT_GENERIC;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MinimalRebuild>false</MinimalRebuild>
|
||||
<ExceptionHandling>
|
||||
</ExceptionHandling>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
||||
<RuntimeTypeInfo>false</RuntimeTypeInfo>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<CompileAs>CompileAsC</CompileAs>
|
||||
<DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
|
||||
</ClCompile>
|
||||
<Lib>
|
||||
<OutputFile>$(ProjectDir)Debug\$(ProjectName).lib</OutputFile>
|
||||
</Lib>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_Generic|Win32'">
|
||||
<ClCompile>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
|
||||
<OmitFramePointers>true</OmitFramePointers>
|
||||
<AdditionalIncludeDirectories>../..;../../../../src/libmpg123;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_CRT_SECURE_NO_WARNINGS;OPT_GENERIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ExceptionHandling>
|
||||
</ExceptionHandling>
|
||||
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||
<FunctionLevelLinking>false</FunctionLevelLinking>
|
||||
<EnableEnhancedInstructionSet>StreamingSIMDExtensions</EnableEnhancedInstructionSet>
|
||||
<FloatingPointModel>Precise</FloatingPointModel>
|
||||
<RuntimeTypeInfo>false</RuntimeTypeInfo>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<CompileAs>CompileAsC</CompileAs>
|
||||
<DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
|
||||
</ClCompile>
|
||||
<Lib>
|
||||
<OutputFile>$(ProjectDir)Release\$(ProjectName).lib</OutputFile>
|
||||
</Lib>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Generic_Dll|Win32'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>../..;../../../../src/libmpg123;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_CRT_SECURE_NO_WARNINGS;OPT_GENERIC;_DEBUG;BUILD_MPG123_DLL;ACCURATE_ROUNDING;IEEE_FLOAT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MinimalRebuild>false</MinimalRebuild>
|
||||
<ExceptionHandling>
|
||||
</ExceptionHandling>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
||||
<RuntimeTypeInfo>false</RuntimeTypeInfo>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<TreatWarningAsError>false</TreatWarningAsError>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<CompileAs>CompileAsC</CompileAs>
|
||||
<DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<OutputFile>$(ProjectDir)Debug\$(ProjectName).dll</OutputFile>
|
||||
<AdditionalLibraryDirectories>$(ProjectDir)\Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<AssemblyDebug>true</AssemblyDebug>
|
||||
<BaseAddress>0x63000000</BaseAddress>
|
||||
<RandomizedBaseAddress>false</RandomizedBaseAddress>
|
||||
<FixedBaseAddress>true</FixedBaseAddress>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_Generic_Dll|Win32'">
|
||||
<ClCompile>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
|
||||
<OmitFramePointers>true</OmitFramePointers>
|
||||
<AdditionalIncludeDirectories>../..;../../../../src/libmpg123;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_CRT_SECURE_NO_WARNINGS;OPT_GENERIC;BUILD_MPG123_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ExceptionHandling>
|
||||
</ExceptionHandling>
|
||||
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||
<FunctionLevelLinking>false</FunctionLevelLinking>
|
||||
<EnableEnhancedInstructionSet>StreamingSIMDExtensions</EnableEnhancedInstructionSet>
|
||||
<FloatingPointModel>Precise</FloatingPointModel>
|
||||
<RuntimeTypeInfo>false</RuntimeTypeInfo>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<TreatWarningAsError>false</TreatWarningAsError>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<CompileAs>CompileAsC</CompileAs>
|
||||
<DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<OutputFile>$(ProjectDir)Release\$(ProjectName).dll</OutputFile>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<BaseAddress>0x63000000</BaseAddress>
|
||||
<RandomizedBaseAddress>false</RandomizedBaseAddress>
|
||||
<FixedBaseAddress>true</FixedBaseAddress>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_x86|Win32'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>../..;../../../../src/libmpg123;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_WARNINGS;OPT_MULTI;OPT_GENERIC;OPT_I386;OPT_I586;OPT_MMX;OPT_3DNOW;OPT_3DNOWEXT;OPT_SSE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MinimalRebuild>false</MinimalRebuild>
|
||||
<ExceptionHandling>
|
||||
</ExceptionHandling>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
||||
<RuntimeTypeInfo>false</RuntimeTypeInfo>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<CompileAs>CompileAsC</CompileAs>
|
||||
<DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
|
||||
</ClCompile>
|
||||
<PreLinkEvent>
|
||||
<Command>cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\dct36_3dnow.S" /nologo > "$(ProjectDir)..\libmpg123\Debug\dct36_3dnow.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Debug\dct36_3dnow.o" "$(ProjectDir)..\libmpg123\Debug\dct36_3dnow.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\dct36_3dnowext.S" /nologo > "$(ProjectDir)..\libmpg123\Debug\dct36_3dnowext.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Debug\dct36_3dnowext.o" "$(ProjectDir)..\libmpg123\Debug\dct36_3dnowext.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\dct64_3dnow.S" /nologo > "$(ProjectDir)..\libmpg123\Debug\dct64_3dnow.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Debug\dct64_3dnow.o" "$(ProjectDir)..\libmpg123\Debug\dct64_3dnow.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\dct64_3dnowext.S" /nologo > "$(ProjectDir)..\libmpg123\Debug\dct64_3dnowext.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Debug\dct64_3dnowext.o" "$(ProjectDir)..\libmpg123\Debug\dct64_3dnowext.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\dct64_mmx.S" /nologo > "$(ProjectDir)..\libmpg123\Debug\dct64_mmx.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Debug\dct64_mmx.o" "$(ProjectDir)..\libmpg123\Debug\dct64_mmx.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\dct64_sse.S" /nologo > "$(ProjectDir)..\libmpg123\Debug\dct64_sse.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Debug\dct64_sse.o" "$(ProjectDir)..\libmpg123\Debug\dct64_sse.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\dct64_sse_float.S" /nologo > "$(ProjectDir)..\libmpg123\Debug\dct64_sse_float.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Debug\dct64_sse_float.o" "$(ProjectDir)..\libmpg123\Debug\dct64_sse_float.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\equalizer_3dnow.S" /nologo > "$(ProjectDir)..\libmpg123\Debug\equalizer_3dnow.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Debug\equalizer_3dnow.o" "$(ProjectDir)..\libmpg123\Debug\equalizer_3dnow.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\getcpuflags.S" /nologo > "$(ProjectDir)..\libmpg123\Debug\getcpuflags.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Debug\getcpuflags.o" "$(ProjectDir)..\libmpg123\Debug\getcpuflags.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\synth_3dnow.S" /nologo > "$(ProjectDir)..\libmpg123\Debug\synth_3dnow.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Debug\synth_3dnow.o" "$(ProjectDir)..\libmpg123\Debug\synth_3dnow.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\synth_3dnowext.S" /nologo > "$(ProjectDir)..\libmpg123\Debug\synth_3dnowext.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Debug\synth_3dnowext.o" "$(ProjectDir)..\libmpg123\Debug\synth_3dnowext.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\synth_i586.S" /nologo > "$(ProjectDir)..\libmpg123\Debug\synth_i586.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Debug\synth_i586.o" "$(ProjectDir)..\libmpg123\Debug\synth_i586.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\synth_mmx.S" /nologo > "$(ProjectDir)..\libmpg123\Debug\synth_mmx.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Debug\synth_mmx.o" "$(ProjectDir)..\libmpg123\Debug\synth_mmx.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\synth_sse.S" /nologo > "$(ProjectDir)..\libmpg123\Debug\synth_sse.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Debug\synth_sse.o" "$(ProjectDir)..\libmpg123\Debug\synth_sse.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\synth_sse_float.S" /nologo > "$(ProjectDir)..\libmpg123\Debug\synth_sse_float.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Debug\synth_sse_float.o" "$(ProjectDir)..\libmpg123\Debug\synth_sse_float.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\synth_stereo_sse_float.S" /nologo > "$(ProjectDir)..\libmpg123\Debug\synth_stereo_sse_float.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Debug\synth_stereo_sse_float.o" "$(ProjectDir)..\libmpg123\Debug\synth_stereo_sse_float.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\tabinit_mmx.S" /nologo > "$(ProjectDir)..\libmpg123\Debug\tabinit_mmx.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Debug\tabinit_mmx.o" "$(ProjectDir)..\libmpg123\Debug\tabinit_mmx.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\synth_sse_accurate.S" /nologo > "$(ProjectDir)..\libmpg123\Debug\synth_sse_accurate.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Debug\synth_sse_accurate.o" "$(ProjectDir)..\libmpg123\Debug\synth_sse_accurate.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\synth_sse_s32.S" /nologo > "$(ProjectDir)..\libmpg123\Debug\synth_sse_s32.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Debug\synth_sse_s32.o" "$(ProjectDir)..\libmpg123\Debug\synth_sse_s32.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\synth_stereo_sse_accurate.S" /nologo > "$(ProjectDir)..\libmpg123\Debug\synth_stereo_sse_accurate.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Debug\synth_stereo_sse_accurate.o" "$(ProjectDir)..\libmpg123\Debug\synth_stereo_sse_accurate.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\synth_stereo_sse_s32.S" /nologo > "$(ProjectDir)..\libmpg123\Debug\synth_stereo_sse_s32.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Debug\synth_stereo_sse_s32.o" "$(ProjectDir)..\libmpg123\Debug\synth_stereo_sse_s32.asm"
|
||||
</Command>
|
||||
</PreLinkEvent>
|
||||
<Lib>
|
||||
<AdditionalDependencies>dct36_3dnow.o;dct36_3dnowext.o;dct64_3dnow.o;dct64_3dnowext.o;dct64_mmx.o;dct64_sse.o;dct64_sse_float.o;equalizer_3dnow.o;getcpuflags.o;synth_3dnow.o;synth_3dnowext.o;synth_i586.o;synth_mmx.o;synth_sse.o;synth_sse_float.o;synth_stereo_sse_float.o;tabinit_mmx.o;synth_sse_accurate.o;synth_sse_s32.o;synth_stereo_sse_accurate.o;synth_stereo_sse_s32.o;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<OutputFile>$(ProjectDir)Debug\$(ProjectName).lib</OutputFile>
|
||||
<AdditionalLibraryDirectories>$(ProjectDir)\Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
</Lib>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_x86|Win32'">
|
||||
<ClCompile>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
|
||||
<OmitFramePointers>true</OmitFramePointers>
|
||||
<AdditionalIncludeDirectories>../..;../../../../src/libmpg123;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_CRT_SECURE_NO_WARNINGS;OPT_MULTI;OPT_GENERIC;OPT_I386;OPT_I586;OPT_MMX;OPT_3DNOW;OPT_3DNOWEXT;OPT_SSE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ExceptionHandling>
|
||||
</ExceptionHandling>
|
||||
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||
<FunctionLevelLinking>false</FunctionLevelLinking>
|
||||
<EnableEnhancedInstructionSet>StreamingSIMDExtensions</EnableEnhancedInstructionSet>
|
||||
<FloatingPointModel>Precise</FloatingPointModel>
|
||||
<RuntimeTypeInfo>false</RuntimeTypeInfo>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<CompileAs>CompileAsC</CompileAs>
|
||||
<DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
|
||||
</ClCompile>
|
||||
<PreLinkEvent>
|
||||
<Command>cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\dct36_3dnow.S" /nologo > "$(ProjectDir)..\libmpg123\Release\dct36_3dnow.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Release\dct36_3dnow.o" "$(ProjectDir)..\libmpg123\Release\dct36_3dnow.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\dct36_3dnowext.S" /nologo > "$(ProjectDir)..\libmpg123\Release\dct36_3dnowext.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Release\dct36_3dnowext.o" "$(ProjectDir)..\libmpg123\Release\dct36_3dnowext.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\dct64_3dnow.S" /nologo > "$(ProjectDir)..\libmpg123\Release\dct64_3dnow.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Release\dct64_3dnow.o" "$(ProjectDir)..\libmpg123\Release\dct64_3dnow.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\dct64_3dnowext.S" /nologo > "$(ProjectDir)..\libmpg123\Release\dct64_3dnowext.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Release\dct64_3dnowext.o" "$(ProjectDir)..\libmpg123\Release\dct64_3dnowext.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\dct64_mmx.S" /nologo > "$(ProjectDir)..\libmpg123\Release\dct64_mmx.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Release\dct64_mmx.o" "$(ProjectDir)..\libmpg123\Release\dct64_mmx.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\dct64_sse.S" /nologo > "$(ProjectDir)..\libmpg123\Release\dct64_sse.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Release\dct64_sse.o" "$(ProjectDir)..\libmpg123\Release\dct64_sse.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\dct64_sse_float.S" /nologo > "$(ProjectDir)..\libmpg123\Release\dct64_sse_float.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Release\dct64_sse_float.o" "$(ProjectDir)..\libmpg123\Release\dct64_sse_float.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\equalizer_3dnow.S" /nologo > "$(ProjectDir)..\libmpg123\Release\equalizer_3dnow.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Release\equalizer_3dnow.o" "$(ProjectDir)..\libmpg123\Release\equalizer_3dnow.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\getcpuflags.S" /nologo > "$(ProjectDir)..\libmpg123\Release\getcpuflags.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Release\getcpuflags.o" "$(ProjectDir)..\libmpg123\Release\getcpuflags.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\synth_3dnow.S" /nologo > "$(ProjectDir)..\libmpg123\Release\synth_3dnow.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Release\synth_3dnow.o" "$(ProjectDir)..\libmpg123\Release\synth_3dnow.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\synth_3dnowext.S" /nologo > "$(ProjectDir)..\libmpg123\Release\synth_3dnowext.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Release\synth_3dnowext.o" "$(ProjectDir)..\libmpg123\Release\synth_3dnowext.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\synth_i586.S" /nologo > "$(ProjectDir)..\libmpg123\Release\synth_i586.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Release\synth_i586.o" "$(ProjectDir)..\libmpg123\Release\synth_i586.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\synth_mmx.S" /nologo > "$(ProjectDir)..\libmpg123\Release\synth_mmx.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Release\synth_mmx.o" "$(ProjectDir)..\libmpg123\Release\synth_mmx.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\synth_sse.S" /nologo > "$(ProjectDir)..\libmpg123\Release\synth_sse.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Release\synth_sse.o" "$(ProjectDir)..\libmpg123\Release\synth_sse.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\synth_sse_float.S" /nologo > "$(ProjectDir)..\libmpg123\Release\synth_sse_float.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Release\synth_sse_float.o" "$(ProjectDir)..\libmpg123\Release\synth_sse_float.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\synth_stereo_sse_float.S" /nologo > "$(ProjectDir)..\libmpg123\Release\synth_stereo_sse_float.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Release\synth_stereo_sse_float.o" "$(ProjectDir)..\libmpg123\Release\synth_stereo_sse_float.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\tabinit_mmx.S" /nologo > "$(ProjectDir)..\libmpg123\Release\tabinit_mmx.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Release\tabinit_mmx.o" "$(ProjectDir)..\libmpg123\Release\tabinit_mmx.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\synth_sse_accurate.S" /nologo > "$(ProjectDir)..\libmpg123\Release\synth_sse_accurate.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Release\synth_sse_accurate.o" "$(ProjectDir)..\libmpg123\Release\synth_sse_accurate.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\synth_sse_s32.S" /nologo > "$(ProjectDir)..\libmpg123\Release\synth_sse_s32.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Release\synth_sse_s32.o" "$(ProjectDir)..\libmpg123\Release\synth_sse_s32.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\synth_stereo_sse_accurate.S" /nologo > "$(ProjectDir)..\libmpg123\Release\synth_stereo_sse_accurate.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Release\synth_stereo_sse_accurate.o" "$(ProjectDir)..\libmpg123\Release\synth_stereo_sse_accurate.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\synth_stereo_sse_s32.S" /nologo > "$(ProjectDir)..\libmpg123\Release\synth_stereo_sse_s32.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Release\synth_stereo_sse_s32.o" "$(ProjectDir)..\libmpg123\Release\synth_stereo_sse_s32.asm"
|
||||
</Command>
|
||||
</PreLinkEvent>
|
||||
<Lib>
|
||||
<AdditionalDependencies>dct36_3dnow.o;dct36_3dnowext.o;dct64_3dnow.o;dct64_3dnowext.o;dct64_mmx.o;dct64_sse.o;dct64_sse_float.o;equalizer_3dnow.o;getcpuflags.o;synth_3dnow.o;synth_3dnowext.o;synth_i586.o;synth_mmx.o;synth_sse.o;synth_sse_float.o;synth_stereo_sse_float.o;tabinit_mmx.o;synth_sse_accurate.o;synth_sse_s32.o;synth_stereo_sse_accurate.o;synth_stereo_sse_s32.o;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<OutputFile>$(ProjectDir)Release\$(ProjectName).lib</OutputFile>
|
||||
<AdditionalLibraryDirectories>$(ProjectDir)\Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
</Lib>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_x86_Dll|Win32'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>../..;../../../../src/libmpg123;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_CRT_SECURE_NO_WARNINGS;_DEBUG;BUILD_MPG123_DLL;OPT_MULTI;OPT_GENERIC;OPT_I386;OPT_I586;OPT_MMX;OPT_3DNOW;OPT_3DNOWEXT;OPT_SSE;_BIND_TO_CURRENT_VCLIBS_VERSION=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MinimalRebuild>false</MinimalRebuild>
|
||||
<ExceptionHandling>
|
||||
</ExceptionHandling>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
||||
<FloatingPointModel>Precise</FloatingPointModel>
|
||||
<RuntimeTypeInfo>false</RuntimeTypeInfo>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<TreatWarningAsError>false</TreatWarningAsError>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<CompileAs>CompileAsC</CompileAs>
|
||||
<DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
|
||||
</ClCompile>
|
||||
<PreLinkEvent>
|
||||
<Command>cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\dct36_3dnow.S" /nologo > "$(ProjectDir)..\libmpg123\Debug\dct36_3dnow.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Debug\dct36_3dnow.o" "$(ProjectDir)..\libmpg123\Debug\dct36_3dnow.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\dct36_3dnowext.S" /nologo > "$(ProjectDir)..\libmpg123\Debug\dct36_3dnowext.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Debug\dct36_3dnowext.o" "$(ProjectDir)..\libmpg123\Debug\dct36_3dnowext.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\dct64_3dnow.S" /nologo > "$(ProjectDir)..\libmpg123\Debug\dct64_3dnow.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Debug\dct64_3dnow.o" "$(ProjectDir)..\libmpg123\Debug\dct64_3dnow.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\dct64_3dnowext.S" /nologo > "$(ProjectDir)..\libmpg123\Debug\dct64_3dnowext.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Debug\dct64_3dnowext.o" "$(ProjectDir)..\libmpg123\Debug\dct64_3dnowext.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\dct64_mmx.S" /nologo > "$(ProjectDir)..\libmpg123\Debug\dct64_mmx.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Debug\dct64_mmx.o" "$(ProjectDir)..\libmpg123\Debug\dct64_mmx.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\dct64_sse.S" /nologo > "$(ProjectDir)..\libmpg123\Debug\dct64_sse.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Debug\dct64_sse.o" "$(ProjectDir)..\libmpg123\Debug\dct64_sse.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\dct64_sse_float.S" /nologo > "$(ProjectDir)..\libmpg123\Debug\dct64_sse_float.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Debug\dct64_sse_float.o" "$(ProjectDir)..\libmpg123\Debug\dct64_sse_float.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\equalizer_3dnow.S" /nologo > "$(ProjectDir)..\libmpg123\Debug\equalizer_3dnow.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Debug\equalizer_3dnow.o" "$(ProjectDir)..\libmpg123\Debug\equalizer_3dnow.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\getcpuflags.S" /nologo > "$(ProjectDir)..\libmpg123\Debug\getcpuflags.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Debug\getcpuflags.o" "$(ProjectDir)..\libmpg123\Debug\getcpuflags.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\synth_3dnow.S" /nologo > "$(ProjectDir)..\libmpg123\Debug\synth_3dnow.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Debug\synth_3dnow.o" "$(ProjectDir)..\libmpg123\Debug\synth_3dnow.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\synth_3dnowext.S" /nologo > "$(ProjectDir)..\libmpg123\Debug\synth_3dnowext.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Debug\synth_3dnowext.o" "$(ProjectDir)..\libmpg123\Debug\synth_3dnowext.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\synth_i586.S" /nologo > "$(ProjectDir)..\libmpg123\Debug\synth_i586.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Debug\synth_i586.o" "$(ProjectDir)..\libmpg123\Debug\synth_i586.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\synth_mmx.S" /nologo > "$(ProjectDir)..\libmpg123\Debug\synth_mmx.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Debug\synth_mmx.o" "$(ProjectDir)..\libmpg123\Debug\synth_mmx.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\synth_sse.S" /nologo > "$(ProjectDir)..\libmpg123\Debug\synth_sse.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Debug\synth_sse.o" "$(ProjectDir)..\libmpg123\Debug\synth_sse.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\synth_sse_float.S" /nologo > "$(ProjectDir)..\libmpg123\Debug\synth_sse_float.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Debug\synth_sse_float.o" "$(ProjectDir)..\libmpg123\Debug\synth_sse_float.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\synth_stereo_sse_float.S" /nologo > "$(ProjectDir)..\libmpg123\Debug\synth_stereo_sse_float.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Debug\synth_stereo_sse_float.o" "$(ProjectDir)..\libmpg123\Debug\synth_stereo_sse_float.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\tabinit_mmx.S" /nologo > "$(ProjectDir)..\libmpg123\Debug\tabinit_mmx.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Debug\tabinit_mmx.o" "$(ProjectDir)..\libmpg123\Debug\tabinit_mmx.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\synth_sse_accurate.S" /nologo > "$(ProjectDir)..\libmpg123\Debug\synth_sse_accurate.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Debug\synth_sse_accurate.o" "$(ProjectDir)..\libmpg123\Debug\synth_sse_accurate.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\synth_sse_s32.S" /nologo > "$(ProjectDir)..\libmpg123\Debug\synth_sse_s32.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Debug\synth_sse_s32.o" "$(ProjectDir)..\libmpg123\Debug\synth_sse_s32.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\synth_stereo_sse_accurate.S" /nologo > "$(ProjectDir)..\libmpg123\Debug\synth_stereo_sse_accurate.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Debug\synth_stereo_sse_accurate.o" "$(ProjectDir)..\libmpg123\Debug\synth_stereo_sse_accurate.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\synth_stereo_sse_s32.S" /nologo > "$(ProjectDir)..\libmpg123\Debug\synth_stereo_sse_s32.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Debug\synth_stereo_sse_s32.o" "$(ProjectDir)..\libmpg123\Debug\synth_stereo_sse_s32.asm"
|
||||
</Command>
|
||||
</PreLinkEvent>
|
||||
<Link>
|
||||
<AdditionalDependencies>dct36_3dnow.o;dct36_3dnowext.o;dct64_3dnow.o;dct64_3dnowext.o;dct64_mmx.o;dct64_sse.o;dct64_sse_float.o;equalizer_3dnow.o;getcpuflags.o;synth_3dnow.o;synth_3dnowext.o;synth_i586.o;synth_mmx.o;synth_sse.o;synth_sse_float.o;synth_stereo_sse_float.o;tabinit_mmx.o;synth_sse_accurate.o;synth_sse_s32.o;synth_stereo_sse_accurate.o;synth_stereo_sse_s32.o;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<OutputFile>$(ProjectDir)Debug\$(ProjectName).dll</OutputFile>
|
||||
<AdditionalLibraryDirectories>$(ProjectDir)\Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<AssemblyDebug>true</AssemblyDebug>
|
||||
<BaseAddress>0x63000000</BaseAddress>
|
||||
<RandomizedBaseAddress>true</RandomizedBaseAddress>
|
||||
<FixedBaseAddress>false</FixedBaseAddress>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_x86_Dll|Win32'">
|
||||
<PreBuildEvent>
|
||||
<Command>
|
||||
</Command>
|
||||
</PreBuildEvent>
|
||||
<ClCompile>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
|
||||
<OmitFramePointers>true</OmitFramePointers>
|
||||
<AdditionalIncludeDirectories>../..;../../../../src/libmpg123;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_CRT_SECURE_NO_WARNINGS;BUILD_MPG123_DLL;OPT_MULTI;OPT_GENERIC;OPT_I386;OPT_I586;OPT_MMX;OPT_3DNOW;OPT_3DNOWEXT;OPT_SSE;_BIND_TO_CURRENT_VCLIBS_VERSION=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ExceptionHandling>
|
||||
</ExceptionHandling>
|
||||
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||
<FunctionLevelLinking>false</FunctionLevelLinking>
|
||||
<EnableEnhancedInstructionSet>StreamingSIMDExtensions</EnableEnhancedInstructionSet>
|
||||
<FloatingPointModel>Precise</FloatingPointModel>
|
||||
<RuntimeTypeInfo>false</RuntimeTypeInfo>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<TreatWarningAsError>false</TreatWarningAsError>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<CompileAs>CompileAsC</CompileAs>
|
||||
<DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
|
||||
</ClCompile>
|
||||
<PreLinkEvent>
|
||||
<Command>cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\dct36_3dnow.S" /nologo > "$(ProjectDir)..\libmpg123\Release\dct36_3dnow.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Release\dct36_3dnow.o" "$(ProjectDir)..\libmpg123\Release\dct36_3dnow.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\dct36_3dnowext.S" /nologo > "$(ProjectDir)..\libmpg123\Release\dct36_3dnowext.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Release\dct36_3dnowext.o" "$(ProjectDir)..\libmpg123\Release\dct36_3dnowext.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\dct64_3dnow.S" /nologo > "$(ProjectDir)..\libmpg123\Release\dct64_3dnow.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Release\dct64_3dnow.o" "$(ProjectDir)..\libmpg123\Release\dct64_3dnow.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\dct64_3dnowext.S" /nologo > "$(ProjectDir)..\libmpg123\Release\dct64_3dnowext.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Release\dct64_3dnowext.o" "$(ProjectDir)..\libmpg123\Release\dct64_3dnowext.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\dct64_mmx.S" /nologo > "$(ProjectDir)..\libmpg123\Release\dct64_mmx.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Release\dct64_mmx.o" "$(ProjectDir)..\libmpg123\Release\dct64_mmx.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\dct64_sse.S" /nologo > "$(ProjectDir)..\libmpg123\Release\dct64_sse.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Release\dct64_sse.o" "$(ProjectDir)..\libmpg123\Release\dct64_sse.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\dct64_sse_float.S" /nologo > "$(ProjectDir)..\libmpg123\Release\dct64_sse_float.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Release\dct64_sse_float.o" "$(ProjectDir)..\libmpg123\Release\dct64_sse_float.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\equalizer_3dnow.S" /nologo > "$(ProjectDir)..\libmpg123\Release\equalizer_3dnow.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Release\equalizer_3dnow.o" "$(ProjectDir)..\libmpg123\Release\equalizer_3dnow.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\getcpuflags.S" /nologo > "$(ProjectDir)..\libmpg123\Release\getcpuflags.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Release\getcpuflags.o" "$(ProjectDir)..\libmpg123\Release\getcpuflags.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\synth_3dnow.S" /nologo > "$(ProjectDir)..\libmpg123\Release\synth_3dnow.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Release\synth_3dnow.o" "$(ProjectDir)..\libmpg123\Release\synth_3dnow.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\synth_3dnowext.S" /nologo > "$(ProjectDir)..\libmpg123\Release\synth_3dnowext.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Release\synth_3dnowext.o" "$(ProjectDir)..\libmpg123\Release\synth_3dnowext.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\synth_i586.S" /nologo > "$(ProjectDir)..\libmpg123\Release\synth_i586.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Release\synth_i586.o" "$(ProjectDir)..\libmpg123\Release\synth_i586.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\synth_mmx.S" /nologo > "$(ProjectDir)..\libmpg123\Release\synth_mmx.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Release\synth_mmx.o" "$(ProjectDir)..\libmpg123\Release\synth_mmx.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\synth_sse.S" /nologo > "$(ProjectDir)..\libmpg123\Release\synth_sse.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Release\synth_sse.o" "$(ProjectDir)..\libmpg123\Release\synth_sse.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\synth_sse_float.S" /nologo > "$(ProjectDir)..\libmpg123\Release\synth_sse_float.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Release\synth_sse_float.o" "$(ProjectDir)..\libmpg123\Release\synth_sse_float.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\synth_stereo_sse_float.S" /nologo > "$(ProjectDir)..\libmpg123\Release\synth_stereo_sse_float.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Release\synth_stereo_sse_float.o" "$(ProjectDir)..\libmpg123\Release\synth_stereo_sse_float.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\tabinit_mmx.S" /nologo > "$(ProjectDir)..\libmpg123\Release\tabinit_mmx.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Release\tabinit_mmx.o" "$(ProjectDir)..\libmpg123\Release\tabinit_mmx.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\synth_sse_accurate.S" /nologo > "$(ProjectDir)..\libmpg123\Release\synth_sse_accurate.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Release\synth_sse_accurate.o" "$(ProjectDir)..\libmpg123\Release\synth_sse_accurate.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\synth_sse_s32.S" /nologo > "$(ProjectDir)..\libmpg123\Release\synth_sse_s32.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Release\synth_sse_s32.o" "$(ProjectDir)..\libmpg123\Release\synth_sse_s32.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\synth_stereo_sse_accurate.S" /nologo > "$(ProjectDir)..\libmpg123\Release\synth_stereo_sse_accurate.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Release\synth_stereo_sse_accurate.o" "$(ProjectDir)..\libmpg123\Release\synth_stereo_sse_accurate.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\synth_stereo_sse_s32.S" /nologo > "$(ProjectDir)..\libmpg123\Release\synth_stereo_sse_s32.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Release\synth_stereo_sse_s32.o" "$(ProjectDir)..\libmpg123\Release\synth_stereo_sse_s32.asm"
|
||||
</Command>
|
||||
</PreLinkEvent>
|
||||
<Link>
|
||||
<AdditionalDependencies>dct36_3dnow.o;dct36_3dnowext.o;dct64_3dnow.o;dct64_3dnowext.o;dct64_mmx.o;dct64_sse.o;dct64_sse_float.o;equalizer_3dnow.o;getcpuflags.o;synth_3dnow.o;synth_3dnowext.o;synth_i586.o;synth_mmx.o;synth_sse.o;synth_sse_float.o;synth_stereo_sse_float.o;tabinit_mmx.o;synth_sse_accurate.o;synth_sse_s32.o;synth_stereo_sse_accurate.o;synth_stereo_sse_s32.o;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<OutputFile>$(ProjectDir)Release\$(ProjectName).dll</OutputFile>
|
||||
<AdditionalLibraryDirectories>$(ProjectDir)\Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<BaseAddress>0x63000000</BaseAddress>
|
||||
<RandomizedBaseAddress>false</RandomizedBaseAddress>
|
||||
<FixedBaseAddress>true</FixedBaseAddress>
|
||||
</Link>
|
||||
<PostBuildEvent>
|
||||
<Command>
|
||||
</Command>
|
||||
</PostBuildEvent>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_x86_Dll_Minimal|Win32'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>../..;../../../../src/libmpg123;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_CRT_SECURE_NO_WARNINGS;_DEBUG;BUILD_MPG123_DLL;OPT_MULTI;OPT_GENERIC;OPT_I386;OPT_I586;OPT_MMX;OPT_3DNOW;OPT_3DNOWEXT;OPT_SSE;NO_STRING;NO_ID3V2;NO_ICY;NO_DOWNSAMPLE;_BIND_TO_CURRENT_VCLIBS_VERSION=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MinimalRebuild>false</MinimalRebuild>
|
||||
<ExceptionHandling>
|
||||
</ExceptionHandling>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
||||
<FloatingPointModel>Precise</FloatingPointModel>
|
||||
<RuntimeTypeInfo>false</RuntimeTypeInfo>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<TreatWarningAsError>false</TreatWarningAsError>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<CompileAs>CompileAsC</CompileAs>
|
||||
<DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
|
||||
</ClCompile>
|
||||
<PreLinkEvent>
|
||||
<Command>cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\dct36_3dnow.S" /nologo > "$(ProjectDir)..\libmpg123\Debug\dct36_3dnow.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Debug\dct36_3dnow.o" "$(ProjectDir)..\libmpg123\Debug\dct36_3dnow.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\dct36_3dnowext.S" /nologo > "$(ProjectDir)..\libmpg123\Debug\dct36_3dnowext.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Debug\dct36_3dnowext.o" "$(ProjectDir)..\libmpg123\Debug\dct36_3dnowext.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\dct64_3dnow.S" /nologo > "$(ProjectDir)..\libmpg123\Debug\dct64_3dnow.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Debug\dct64_3dnow.o" "$(ProjectDir)..\libmpg123\Debug\dct64_3dnow.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\dct64_3dnowext.S" /nologo > "$(ProjectDir)..\libmpg123\Debug\dct64_3dnowext.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Debug\dct64_3dnowext.o" "$(ProjectDir)..\libmpg123\Debug\dct64_3dnowext.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\dct64_mmx.S" /nologo > "$(ProjectDir)..\libmpg123\Debug\dct64_mmx.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Debug\dct64_mmx.o" "$(ProjectDir)..\libmpg123\Debug\dct64_mmx.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\dct64_sse.S" /nologo > "$(ProjectDir)..\libmpg123\Debug\dct64_sse.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Debug\dct64_sse.o" "$(ProjectDir)..\libmpg123\Debug\dct64_sse.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\dct64_sse_float.S" /nologo > "$(ProjectDir)..\libmpg123\Debug\dct64_sse_float.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Debug\dct64_sse_float.o" "$(ProjectDir)..\libmpg123\Debug\dct64_sse_float.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\equalizer_3dnow.S" /nologo > "$(ProjectDir)..\libmpg123\Debug\equalizer_3dnow.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Debug\equalizer_3dnow.o" "$(ProjectDir)..\libmpg123\Debug\equalizer_3dnow.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\getcpuflags.S" /nologo > "$(ProjectDir)..\libmpg123\Debug\getcpuflags.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Debug\getcpuflags.o" "$(ProjectDir)..\libmpg123\Debug\getcpuflags.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\synth_3dnow.S" /nologo > "$(ProjectDir)..\libmpg123\Debug\synth_3dnow.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Debug\synth_3dnow.o" "$(ProjectDir)..\libmpg123\Debug\synth_3dnow.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\synth_3dnowext.S" /nologo > "$(ProjectDir)..\libmpg123\Debug\synth_3dnowext.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Debug\synth_3dnowext.o" "$(ProjectDir)..\libmpg123\Debug\synth_3dnowext.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\synth_i586.S" /nologo > "$(ProjectDir)..\libmpg123\Debug\synth_i586.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Debug\synth_i586.o" "$(ProjectDir)..\libmpg123\Debug\synth_i586.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\synth_mmx.S" /nologo > "$(ProjectDir)..\libmpg123\Debug\synth_mmx.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Debug\synth_mmx.o" "$(ProjectDir)..\libmpg123\Debug\synth_mmx.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\synth_sse.S" /nologo > "$(ProjectDir)..\libmpg123\Debug\synth_sse.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Debug\synth_sse.o" "$(ProjectDir)..\libmpg123\Debug\synth_sse.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\synth_sse_float.S" /nologo > "$(ProjectDir)..\libmpg123\Debug\synth_sse_float.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Debug\synth_sse_float.o" "$(ProjectDir)..\libmpg123\Debug\synth_sse_float.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\synth_stereo_sse_float.S" /nologo > "$(ProjectDir)..\libmpg123\Debug\synth_stereo_sse_float.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Debug\synth_stereo_sse_float.o" "$(ProjectDir)..\libmpg123\Debug\synth_stereo_sse_float.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\tabinit_mmx.S" /nologo > "$(ProjectDir)..\libmpg123\Debug\tabinit_mmx.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Debug\tabinit_mmx.o" "$(ProjectDir)..\libmpg123\Debug\tabinit_mmx.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\synth_sse_accurate.S" /nologo > "$(ProjectDir)..\libmpg123\Debug\synth_sse_accurate.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Debug\synth_sse_accurate.o" "$(ProjectDir)..\libmpg123\Debug\synth_sse_accurate.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\synth_sse_s32.S" /nologo > "$(ProjectDir)..\libmpg123\Debug\synth_sse_s32.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Debug\synth_sse_s32.o" "$(ProjectDir)..\libmpg123\Debug\synth_sse_s32.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\synth_stereo_sse_accurate.S" /nologo > "$(ProjectDir)..\libmpg123\Debug\synth_stereo_sse_accurate.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Debug\synth_stereo_sse_accurate.o" "$(ProjectDir)..\libmpg123\Debug\synth_stereo_sse_accurate.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\synth_stereo_sse_s32.S" /nologo > "$(ProjectDir)..\libmpg123\Debug\synth_stereo_sse_s32.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Debug\synth_stereo_sse_s32.o" "$(ProjectDir)..\libmpg123\Debug\synth_stereo_sse_s32.asm"
|
||||
</Command>
|
||||
</PreLinkEvent>
|
||||
<Link>
|
||||
<AdditionalDependencies>dct36_3dnow.o;dct36_3dnowext.o;dct64_3dnow.o;dct64_3dnowext.o;dct64_mmx.o;dct64_sse.o;dct64_sse_float.o;equalizer_3dnow.o;getcpuflags.o;synth_3dnow.o;synth_3dnowext.o;synth_i586.o;synth_mmx.o;synth_sse.o;synth_sse_float.o;synth_stereo_sse_float.o;tabinit_mmx.o;synth_sse_accurate.o;synth_sse_s32.o;synth_stereo_sse_accurate.o;synth_stereo_sse_s32.o;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<OutputFile>$(ProjectDir)Debug\$(ProjectName).dll</OutputFile>
|
||||
<AdditionalLibraryDirectories>$(ProjectDir)\Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<AssemblyDebug>true</AssemblyDebug>
|
||||
<BaseAddress>0x63000000</BaseAddress>
|
||||
<RandomizedBaseAddress>true</RandomizedBaseAddress>
|
||||
<FixedBaseAddress>false</FixedBaseAddress>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_x86_Dll_Minimal|Win32'">
|
||||
<PreBuildEvent>
|
||||
<Command>
|
||||
</Command>
|
||||
</PreBuildEvent>
|
||||
<ClCompile>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
|
||||
<OmitFramePointers>true</OmitFramePointers>
|
||||
<AdditionalIncludeDirectories>../..;../../../../src/libmpg123;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_CRT_SECURE_NO_WARNINGS;BUILD_MPG123_DLL;OPT_MULTI;OPT_GENERIC;OPT_I386;OPT_I586;OPT_MMX;OPT_3DNOW;OPT_3DNOWEXT;OPT_SSE;NO_STRING;NO_ID3V2;NO_ICY;NO_DOWNSAMPLE;_BIND_TO_CURRENT_VCLIBS_VERSION=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ExceptionHandling>
|
||||
</ExceptionHandling>
|
||||
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||
<FunctionLevelLinking>false</FunctionLevelLinking>
|
||||
<EnableEnhancedInstructionSet>StreamingSIMDExtensions</EnableEnhancedInstructionSet>
|
||||
<FloatingPointModel>Precise</FloatingPointModel>
|
||||
<RuntimeTypeInfo>false</RuntimeTypeInfo>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<TreatWarningAsError>false</TreatWarningAsError>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<CompileAs>CompileAsC</CompileAs>
|
||||
<DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
|
||||
</ClCompile>
|
||||
<PreLinkEvent>
|
||||
<Command>cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\dct36_3dnow.S" /nologo > "$(ProjectDir)..\libmpg123\Release\dct36_3dnow.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Release\dct36_3dnow.o" "$(ProjectDir)..\libmpg123\Release\dct36_3dnow.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\dct36_3dnowext.S" /nologo > "$(ProjectDir)..\libmpg123\Release\dct36_3dnowext.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Release\dct36_3dnowext.o" "$(ProjectDir)..\libmpg123\Release\dct36_3dnowext.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\dct64_3dnow.S" /nologo > "$(ProjectDir)..\libmpg123\Release\dct64_3dnow.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Release\dct64_3dnow.o" "$(ProjectDir)..\libmpg123\Release\dct64_3dnow.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\dct64_3dnowext.S" /nologo > "$(ProjectDir)..\libmpg123\Release\dct64_3dnowext.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Release\dct64_3dnowext.o" "$(ProjectDir)..\libmpg123\Release\dct64_3dnowext.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\dct64_mmx.S" /nologo > "$(ProjectDir)..\libmpg123\Release\dct64_mmx.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Release\dct64_mmx.o" "$(ProjectDir)..\libmpg123\Release\dct64_mmx.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\dct64_sse.S" /nologo > "$(ProjectDir)..\libmpg123\Release\dct64_sse.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Release\dct64_sse.o" "$(ProjectDir)..\libmpg123\Release\dct64_sse.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\dct64_sse_float.S" /nologo > "$(ProjectDir)..\libmpg123\Release\dct64_sse_float.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Release\dct64_sse_float.o" "$(ProjectDir)..\libmpg123\Release\dct64_sse_float.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\equalizer_3dnow.S" /nologo > "$(ProjectDir)..\libmpg123\Release\equalizer_3dnow.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Release\equalizer_3dnow.o" "$(ProjectDir)..\libmpg123\Release\equalizer_3dnow.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\getcpuflags.S" /nologo > "$(ProjectDir)..\libmpg123\Release\getcpuflags.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Release\getcpuflags.o" "$(ProjectDir)..\libmpg123\Release\getcpuflags.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\synth_3dnow.S" /nologo > "$(ProjectDir)..\libmpg123\Release\synth_3dnow.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Release\synth_3dnow.o" "$(ProjectDir)..\libmpg123\Release\synth_3dnow.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\synth_3dnowext.S" /nologo > "$(ProjectDir)..\libmpg123\Release\synth_3dnowext.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Release\synth_3dnowext.o" "$(ProjectDir)..\libmpg123\Release\synth_3dnowext.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\synth_i586.S" /nologo > "$(ProjectDir)..\libmpg123\Release\synth_i586.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Release\synth_i586.o" "$(ProjectDir)..\libmpg123\Release\synth_i586.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\synth_mmx.S" /nologo > "$(ProjectDir)..\libmpg123\Release\synth_mmx.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Release\synth_mmx.o" "$(ProjectDir)..\libmpg123\Release\synth_mmx.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\synth_sse.S" /nologo > "$(ProjectDir)..\libmpg123\Release\synth_sse.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Release\synth_sse.o" "$(ProjectDir)..\libmpg123\Release\synth_sse.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\synth_sse_float.S" /nologo > "$(ProjectDir)..\libmpg123\Release\synth_sse_float.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Release\synth_sse_float.o" "$(ProjectDir)..\libmpg123\Release\synth_sse_float.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\synth_stereo_sse_float.S" /nologo > "$(ProjectDir)..\libmpg123\Release\synth_stereo_sse_float.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Release\synth_stereo_sse_float.o" "$(ProjectDir)..\libmpg123\Release\synth_stereo_sse_float.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\tabinit_mmx.S" /nologo > "$(ProjectDir)..\libmpg123\Release\tabinit_mmx.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Release\tabinit_mmx.o" "$(ProjectDir)..\libmpg123\Release\tabinit_mmx.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\synth_sse_accurate.S" /nologo > "$(ProjectDir)..\libmpg123\Release\synth_sse_accurate.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Release\synth_sse_accurate.o" "$(ProjectDir)..\libmpg123\Release\synth_sse_accurate.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\synth_sse_s32.S" /nologo > "$(ProjectDir)..\libmpg123\Release\synth_sse_s32.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Release\synth_sse_s32.o" "$(ProjectDir)..\libmpg123\Release\synth_sse_s32.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\synth_stereo_sse_accurate.S" /nologo > "$(ProjectDir)..\libmpg123\Release\synth_stereo_sse_accurate.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Release\synth_stereo_sse_accurate.o" "$(ProjectDir)..\libmpg123\Release\synth_stereo_sse_accurate.asm"
|
||||
|
||||
cl /I "..\.." /EP /TC "$(ProjectDir)..\..\..\..\src\libmpg123\synth_stereo_sse_s32.S" /nologo > "$(ProjectDir)..\libmpg123\Release\synth_stereo_sse_s32.asm"
|
||||
yasm -a x86 -p gas -r raw -f win32 -g null -m x86 -o "$(ProjectDir)..\libmpg123\Release\synth_stereo_sse_s32.o" "$(ProjectDir)..\libmpg123\Release\synth_stereo_sse_s32.asm"
|
||||
</Command>
|
||||
</PreLinkEvent>
|
||||
<Link>
|
||||
<AdditionalDependencies>dct36_3dnow.o;dct36_3dnowext.o;dct64_3dnow.o;dct64_3dnowext.o;dct64_mmx.o;dct64_sse.o;dct64_sse_float.o;equalizer_3dnow.o;getcpuflags.o;synth_3dnow.o;synth_3dnowext.o;synth_i586.o;synth_mmx.o;synth_sse.o;synth_sse_float.o;synth_stereo_sse_float.o;tabinit_mmx.o;synth_sse_accurate.o;synth_sse_s32.o;synth_stereo_sse_accurate.o;synth_stereo_sse_s32.o;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<OutputFile>$(ProjectDir)Release\$(ProjectName).dll</OutputFile>
|
||||
<AdditionalLibraryDirectories>$(ProjectDir)\Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<BaseAddress>0x63000000</BaseAddress>
|
||||
<RandomizedBaseAddress>false</RandomizedBaseAddress>
|
||||
<FixedBaseAddress>true</FixedBaseAddress>
|
||||
</Link>
|
||||
<PostBuildEvent>
|
||||
<Command>
|
||||
</Command>
|
||||
</PostBuildEvent>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\..\..\src\libmpg123\compat.c" />
|
||||
<ClCompile Include="..\..\..\..\src\libmpg123\dct64.c" />
|
||||
<ClCompile Include="..\..\..\..\src\libmpg123\dct64_i386.c">
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug_Generic_Dll|Win32'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug_Generic|Win32'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release_Generic_Dll|Win32'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release_Generic|Win32'">true</ExcludedFromBuild>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\..\src\libmpg123\dct64_i486.c">
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug_Generic_Dll|Win32'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug_Generic|Win32'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug_x86_Dll_Minimal|Win32'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug_x86_Dll|Win32'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug_x86|Win32'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release_Generic_Dll|Win32'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release_Generic|Win32'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release_x86_Dll_Minimal|Win32'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release_x86_Dll|Win32'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release_x86|Win32'">true</ExcludedFromBuild>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\..\src\libmpg123\equalizer.c" />
|
||||
<ClCompile Include="..\..\..\..\src\libmpg123\feature.c" />
|
||||
<ClCompile Include="..\..\..\..\src\libmpg123\format.c" />
|
||||
<ClCompile Include="..\..\..\..\src\libmpg123\frame.c" />
|
||||
<ClCompile Include="..\..\..\..\src\libmpg123\icy.c">
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug_x86_Dll_Minimal|Win32'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release_x86_Dll_Minimal|Win32'">true</ExcludedFromBuild>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\..\src\libmpg123\icy2utf8.c" />
|
||||
<ClCompile Include="..\..\..\..\src\libmpg123\id3.c" />
|
||||
<ClCompile Include="..\..\..\..\src\libmpg123\index.c" />
|
||||
<ClCompile Include="..\..\..\..\src\libmpg123\layer1.c" />
|
||||
<ClCompile Include="..\..\..\..\src\libmpg123\layer2.c" />
|
||||
<ClCompile Include="..\..\..\..\src\libmpg123\layer3.c" />
|
||||
<ClCompile Include="..\..\..\..\src\libmpg123\libmpg123.c" />
|
||||
<ClCompile Include="..\..\msvc.c" />
|
||||
<ClCompile Include="..\..\..\..\src\libmpg123\ntom.c" />
|
||||
<ClCompile Include="..\..\..\..\src\libmpg123\optimize.c" />
|
||||
<ClCompile Include="..\..\..\..\src\libmpg123\parse.c" />
|
||||
<ClCompile Include="..\..\..\..\src\libmpg123\readers.c" />
|
||||
<ClCompile Include="..\..\..\..\src\libmpg123\stringbuf.c" />
|
||||
<ClCompile Include="..\..\..\..\src\libmpg123\synth.c" />
|
||||
<ClCompile Include="..\..\..\..\src\libmpg123\synth_8bit.c" />
|
||||
<ClCompile Include="..\..\..\..\src\libmpg123\synth_i486.c">
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug_Generic_Dll|Win32'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug_Generic|Win32'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug_x86_Dll_Minimal|Win32'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug_x86_Dll|Win32'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug_x86|Win32'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release_Generic_Dll|Win32'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release_Generic|Win32'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release_x86_Dll_Minimal|Win32'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release_x86_Dll|Win32'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release_x86|Win32'">true</ExcludedFromBuild>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\..\src\libmpg123\synth_real.c" />
|
||||
<ClCompile Include="..\..\..\..\src\libmpg123\synth_s32.c" />
|
||||
<ClCompile Include="..\..\..\..\src\libmpg123\tabinit.c" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="..\..\..\..\src\libmpg123\compat.h" />
|
||||
<ClInclude Include="..\..\config.h" />
|
||||
<ClInclude Include="..\..\..\..\src\libmpg123\debug.h" />
|
||||
<ClInclude Include="..\..\..\..\src\libmpg123\decode.h" />
|
||||
<ClInclude Include="..\..\..\..\src\libmpg123\frame.h" />
|
||||
<ClInclude Include="..\..\..\..\src\libmpg123\getbits.h" />
|
||||
<ClInclude Include="..\..\..\..\src\libmpg123\getcpuflags.h" />
|
||||
<ClInclude Include="..\..\..\..\src\libmpg123\huffman.h" />
|
||||
<ClInclude Include="..\..\..\..\src\libmpg123\icy.h" />
|
||||
<ClInclude Include="..\..\..\..\src\libmpg123\icy2utf8.h" />
|
||||
<ClInclude Include="..\..\..\..\src\libmpg123\id3.h" />
|
||||
<ClInclude Include="..\..\..\..\src\libmpg123\index.h" />
|
||||
<ClInclude Include="..\..\..\..\src\libmpg123\l2tables.h" />
|
||||
<ClInclude Include="..\..\..\..\src\libmpg123\mangle.h" />
|
||||
<ClInclude Include="..\..\mpg123.h" />
|
||||
<ClInclude Include="..\..\..\..\src\libmpg123\mpg123lib_intern.h" />
|
||||
<ClInclude Include="..\..\..\..\src\libmpg123\optimize.h" />
|
||||
<ClInclude Include="..\..\..\..\src\libmpg123\parse.h" />
|
||||
<ClInclude Include="..\..\..\..\src\libmpg123\reader.h" />
|
||||
<ClInclude Include="..\..\..\..\src\libmpg123\sample.h" />
|
||||
<ClInclude Include="..\..\..\..\src\libmpg123\synth.h" />
|
||||
<ClInclude Include="..\..\..\..\src\libmpg123\true.h" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="..\..\..\..\src\libmpg123\dct36_3dnow.S" />
|
||||
<None Include="..\..\..\..\src\libmpg123\dct36_3dnowext.S" />
|
||||
<None Include="..\..\..\..\src\libmpg123\dct64_3dnow.S" />
|
||||
<None Include="..\..\..\..\src\libmpg123\dct64_3dnowext.S" />
|
||||
<None Include="..\..\..\..\src\libmpg123\dct64_mmx.S" />
|
||||
<None Include="..\..\..\..\src\libmpg123\dct64_sse.S" />
|
||||
<None Include="..\..\..\..\src\libmpg123\dct64_sse_float.S" />
|
||||
<None Include="..\..\..\..\src\libmpg123\dct64_x86_64.S" />
|
||||
<None Include="..\..\..\..\src\libmpg123\dct64_x86_64_float.S" />
|
||||
<None Include="..\..\..\..\src\libmpg123\equalizer_3dnow.S" />
|
||||
<None Include="..\..\..\..\src\libmpg123\getcpuflags.S" />
|
||||
<None Include="..\..\..\..\src\libmpg123\mpg123.h.in" />
|
||||
<None Include="..\..\..\..\src\libmpg123\synth_3dnow.S" />
|
||||
<None Include="..\..\..\..\src\libmpg123\synth_3dnowext.S" />
|
||||
<None Include="..\..\..\..\src\libmpg123\synth_i586.S" />
|
||||
<None Include="..\..\..\..\src\libmpg123\synth_i586_dither.S" />
|
||||
<None Include="..\..\..\..\src\libmpg123\synth_mmx.S" />
|
||||
<None Include="..\..\..\..\src\libmpg123\synth_sse.S" />
|
||||
<None Include="..\..\..\..\src\libmpg123\synth_sse_accurate.S" />
|
||||
<None Include="..\..\..\..\src\libmpg123\synth_sse_float.S" />
|
||||
<None Include="..\..\..\..\src\libmpg123\synth_sse_s32.S" />
|
||||
<None Include="..\..\..\..\src\libmpg123\synth_stereo_sse_accurate.S" />
|
||||
<None Include="..\..\..\..\src\libmpg123\synth_stereo_sse_float.S" />
|
||||
<None Include="..\..\..\..\src\libmpg123\synth_stereo_sse_s32.S" />
|
||||
<None Include="..\..\..\..\src\libmpg123\synth_stereo_x86_64.S" />
|
||||
<None Include="..\..\..\..\src\libmpg123\synth_stereo_x86_64_accurate.S" />
|
||||
<None Include="..\..\..\..\src\libmpg123\synth_stereo_x86_64_float.S" />
|
||||
<None Include="..\..\..\..\src\libmpg123\synth_stereo_x86_64_s32.S" />
|
||||
<None Include="..\..\..\..\src\libmpg123\synth_x86_64.S" />
|
||||
<None Include="..\..\..\..\src\libmpg123\synth_x86_64_accurate.S" />
|
||||
<None Include="..\..\..\..\src\libmpg123\synth_x86_64_float.S" />
|
||||
<None Include="..\..\..\..\src\libmpg123\synth_x86_64_s32.S" />
|
||||
<None Include="..\..\..\..\src\libmpg123\tabinit_mmx.S" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
||||
@@ -1,93 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\examples\scan.c" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\libmpg123\libmpg123.vcxproj">
|
||||
<Project>{67caa87b-7cf1-4f93-bb67-21c513f40803}</Project>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{1B03F4FD-A10A-4F99-A476-BE7FFD1CB508}</ProjectGuid>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
<RootNamespace>scan</RootNamespace>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
<OutDir>$(ProjectDir)$(Configuration)\</OutDir>
|
||||
<IncludePath>..\..\..\MSVC++;..\..\..\..\src\libmpg123;$(IncludePath)</IncludePath>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
<OutDir>$(ProjectDir)$(Configuration)\</OutDir>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
||||
@@ -1,178 +0,0 @@
|
||||
## Makefile.am: produce Makefile.in from this
|
||||
|
||||
## copyright by the mpg123 project - free software under the terms of the LGPL 2.1
|
||||
## see COPYING and AUTHORS files in distribution or http://mpg123.org
|
||||
## initially written by Nicholas J. Humfrey
|
||||
|
||||
AM_CPPFLAGS = -DPKGLIBDIR="\"$(pkglibdir)\""
|
||||
mpg123_LDADD = $(LIBLTDL) libmpg123/libmpg123.la @MODULE_OBJ@ @OUTPUT_OBJ@ @OUTPUT_LIBS@
|
||||
mpg123_LDFLAGS = @EXEC_LT_LDFLAGS@ @OUTPUT_LDFLAGS@
|
||||
# Just mpg123_INCLUDES has no effect on build! Trying that before reverting to AM_CPPFLAGS.
|
||||
INCLUDES = $(LTDLINCL) -I$(top_builddir)/src/libmpg123 -I$(top_srcdir)/src/libmpg123
|
||||
# libltdl is not mentioned here... it's not that trivial
|
||||
mpg123_DEPENDENCIES = @OUTPUT_OBJ@ @MODULE_OBJ@ libmpg123/libmpg123.la
|
||||
|
||||
SUBDIRS = output libmpg123
|
||||
EXTRA_DIST = legacy_module.c module.c sfifo.c sfifo.h
|
||||
|
||||
|
||||
CLEANFILES = *.a
|
||||
|
||||
bin_PROGRAMS = mpg123
|
||||
|
||||
EXTRA_PROGRAMS = tests/seek_whence tests/noise tests/text tests/plain_id3
|
||||
|
||||
mpg123_SOURCES = \
|
||||
audio.c \
|
||||
audio.h \
|
||||
buffer.c \
|
||||
buffer.h \
|
||||
common.c \
|
||||
common.h \
|
||||
libmpg123/compat.c \
|
||||
libmpg123/compat.h \
|
||||
control_generic.c \
|
||||
equalizer.c \
|
||||
getlopt.c \
|
||||
getlopt.h \
|
||||
httpget.c \
|
||||
httpget.h \
|
||||
resolver.c \
|
||||
resolver.h \
|
||||
genre.h \
|
||||
genre.c \
|
||||
module.h \
|
||||
mpg123.c \
|
||||
mpg123app.h \
|
||||
metaprint.c \
|
||||
metaprint.h \
|
||||
local.h \
|
||||
local.c \
|
||||
playlist.c \
|
||||
playlist.h \
|
||||
streamdump.h \
|
||||
streamdump.c \
|
||||
term.c \
|
||||
term.h \
|
||||
wav.c \
|
||||
win32_support.h \
|
||||
wavhead.h \
|
||||
xfermem.c \
|
||||
xfermem.h
|
||||
|
||||
if WIN32_CODES
|
||||
mpg123_SOURCES += \
|
||||
win32_support.c \
|
||||
win32_net.c
|
||||
endif
|
||||
|
||||
# That is not nice... but it is how I manage to get the dependency on output/alsa.o without error about .deps/output/alsa.Tpo .
|
||||
# Did I mention that recursive make sucks?
|
||||
# `%'-style pattern rules are a GNU make extension
|
||||
#find output/ -name '*.c' | perl -ne 'chomp; $mod=$_; $mod=~s/\.c$/.\$(OBJEXT)/;
|
||||
#print "$mod: $_ audio.h module.h\n";
|
||||
#print "\tcd output && \$(MAKE)\n\n";'
|
||||
|
||||
output/coreaudio.$(OBJEXT): output/coreaudio.c audio.h module.h
|
||||
cd output && $(MAKE)
|
||||
|
||||
output/win32.$(OBJEXT): output/win32.c audio.h module.h
|
||||
cd output && $(MAKE)
|
||||
|
||||
output/alsa05.$(OBJEXT): output/alsa05.c audio.h module.h
|
||||
cd output && $(MAKE)
|
||||
|
||||
output/sdl.$(OBJEXT): output/sdl.c audio.h module.h
|
||||
cd output && $(MAKE)
|
||||
|
||||
output/dummy.$(OBJEXT): output/dummy.c audio.h module.h
|
||||
cd output && $(MAKE)
|
||||
|
||||
output/alib.$(OBJEXT): output/alib.c audio.h module.h
|
||||
cd output && $(MAKE)
|
||||
|
||||
output/libao.$(OBJEXT): output/libao.c audio.h module.h
|
||||
cd output && $(MAKE)
|
||||
|
||||
output/sun.$(OBJEXT): output/sun.c audio.h module.h
|
||||
cd output && $(MAKE)
|
||||
|
||||
output/aix.$(OBJEXT): output/aix.c audio.h module.h
|
||||
cd output && $(MAKE)
|
||||
|
||||
output/oss.$(OBJEXT): output/oss.c audio.h module.h
|
||||
cd output && $(MAKE)
|
||||
|
||||
output/mint.$(OBJEXT): output/mint.c audio.h module.h
|
||||
cd output && $(MAKE)
|
||||
|
||||
output/pulse.$(OBJEXT): output/pulse.c audio.h module.h
|
||||
cd output && $(MAKE)
|
||||
|
||||
output/jack.$(OBJEXT): output/jack.c audio.h module.h
|
||||
cd output && $(MAKE)
|
||||
|
||||
output/os2.$(OBJEXT): output/os2.c audio.h module.h
|
||||
cd output && $(MAKE)
|
||||
|
||||
output/nas.$(OBJEXT): output/nas.c audio.h module.h
|
||||
cd output && $(MAKE)
|
||||
|
||||
output/sgi.$(OBJEXT): output/sgi.c audio.h module.h
|
||||
cd output && $(MAKE)
|
||||
|
||||
output/portaudio.$(OBJEXT): output/portaudio.c audio.h module.h
|
||||
cd output && $(MAKE)
|
||||
|
||||
output/arts.$(OBJEXT): output/arts.c audio.h module.h
|
||||
cd output && $(MAKE)
|
||||
|
||||
output/esd.$(OBJEXT): output/esd.c audio.h module.h
|
||||
cd output && $(MAKE)
|
||||
|
||||
output/alsa.$(OBJEXT): output/alsa.c audio.h module.h
|
||||
cd output && $(MAKE)
|
||||
|
||||
output/hp.$(OBJEXT): output/hp.c audio.h module.h
|
||||
cd output && $(MAKE)
|
||||
|
||||
output/sndio.$(OBJEXT): output/sndio.c audio.h module.h
|
||||
cd output && $(MAKE)
|
||||
|
||||
|
||||
# Would have to mention _all_ source files... Dammit, that's what the libmpg123/Makefile.am does!
|
||||
# But again, the a make $something here needs that stupid rule... WHY???
|
||||
libmpg123/libmpg123.la: config.h libmpg123/mpg123.h
|
||||
cd libmpg123 && $(MAKE)
|
||||
|
||||
tests_seek_whence_SOURCES = \
|
||||
tests/seek_whence.c \
|
||||
libmpg123/compat.h \
|
||||
libmpg123/compat.c
|
||||
|
||||
tests_seek_whence_DEPENDENCIES = libmpg123/libmpg123.la
|
||||
tests_seek_whence_LDADD = libmpg123/libmpg123.la
|
||||
|
||||
tests_noise_SOURCES = \
|
||||
tests/noise.c \
|
||||
libmpg123/compat.h \
|
||||
libmpg123/compat.c \
|
||||
libmpg123/dither.h \
|
||||
libmpg123/dither.c
|
||||
|
||||
tests_text_SOURCES = \
|
||||
tests/text.c \
|
||||
tests/testtext.h \
|
||||
libmpg123/compat.h \
|
||||
libmpg123/compat.c
|
||||
|
||||
tests_text_DEPENDENCIES = libmpg123/libmpg123.la
|
||||
tests_text_LDADD = libmpg123/libmpg123.la
|
||||
|
||||
tests_plain_id3_SOURCES = \
|
||||
tests/plain_id3.c \
|
||||
libmpg123/compat.h \
|
||||
libmpg123/compat.c
|
||||
|
||||
tests_plain_id3_DEPENDENCIES = libmpg123/libmpg123.la
|
||||
tests_plain_id3_LDADD = libmpg123/libmpg123.la
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,725 +0,0 @@
|
||||
/*
|
||||
audio: audio output interface
|
||||
|
||||
copyright ?-2008 by the mpg123 project - free software under the terms of the LGPL 2.1
|
||||
see COPYING and AUTHORS files in distribution or http://mpg123.org
|
||||
initially written by Michael Hipp
|
||||
*/
|
||||
|
||||
#include <errno.h>
|
||||
#include "mpg123app.h"
|
||||
#include "common.h"
|
||||
#include "buffer.h"
|
||||
|
||||
#ifdef HAVE_SYS_WAIT_H
|
||||
#include <sys/wait.h>
|
||||
#endif
|
||||
|
||||
#include "debug.h"
|
||||
|
||||
static int file_write(struct audio_output_struct* ao, unsigned char *bytes, int count)
|
||||
{
|
||||
return (int)write(ao->fn, bytes, count);
|
||||
}
|
||||
static int wave_write(struct audio_output_struct* ao, unsigned char *bytes, int count)
|
||||
{
|
||||
return wav_write(bytes, count);
|
||||
}
|
||||
static int builtin_get_formats(struct audio_output_struct *ao)
|
||||
{
|
||||
if(param.outmode == DECODE_CDR)
|
||||
{
|
||||
if(ao->rate == 44100 && ao->channels == 2)
|
||||
return MPG123_ENC_SIGNED_16;
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
else if(param.outmode == DECODE_AU) return MPG123_ENC_SIGNED_16|MPG123_ENC_UNSIGNED_8|MPG123_ENC_ULAW_8;
|
||||
else if(param.outmode == DECODE_WAV) return MPG123_ENC_SIGNED_16|MPG123_ENC_UNSIGNED_8|MPG123_ENC_FLOAT_32|MPG123_ENC_SIGNED_24|MPG123_ENC_SIGNED_32;
|
||||
else return MPG123_ENC_ANY;
|
||||
}
|
||||
static int builtin_close(struct audio_output_struct *ao)
|
||||
{
|
||||
switch(param.outmode)
|
||||
{
|
||||
case DECODE_WAV:
|
||||
return wav_close();
|
||||
break;
|
||||
case DECODE_AU:
|
||||
return au_close();
|
||||
break;
|
||||
case DECODE_CDR:
|
||||
return cdr_close();
|
||||
break;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
static int builtin_nothingint(struct audio_output_struct *ao){ return 0; }
|
||||
static void builtin_nothing(struct audio_output_struct *ao){}
|
||||
|
||||
audio_output_t* open_fake_module(void)
|
||||
{
|
||||
audio_output_t *ao = NULL;
|
||||
ao = alloc_audio_output();
|
||||
if(ao == NULL)
|
||||
{
|
||||
error("Cannot allocate memory for audio output data.");
|
||||
return NULL;
|
||||
}
|
||||
ao->module = NULL;
|
||||
ao->open = builtin_nothingint;
|
||||
ao->flush = builtin_nothing;
|
||||
ao->get_formats = builtin_get_formats;
|
||||
ao->write = wave_write;
|
||||
ao->close = builtin_close;
|
||||
ao->device = param.filename;
|
||||
ao->is_open = FALSE;
|
||||
switch(param.outmode)
|
||||
{
|
||||
case DECODE_FILE:
|
||||
ao->fn = OutputDescriptor;
|
||||
ao->write = file_write;
|
||||
break;
|
||||
case DECODE_WAV:
|
||||
ao->open = wav_open;
|
||||
break;
|
||||
case DECODE_CDR:
|
||||
ao->open = cdr_open;
|
||||
break;
|
||||
case DECODE_AU:
|
||||
ao->open = au_open;
|
||||
break;
|
||||
case DECODE_TEST:
|
||||
break;
|
||||
}
|
||||
|
||||
return ao;
|
||||
}
|
||||
|
||||
/* Open an audio output module, trying modules in list (comma-separated). */
|
||||
audio_output_t* open_output_module( const char* names )
|
||||
{
|
||||
mpg123_module_t *module = NULL;
|
||||
audio_output_t *ao = NULL;
|
||||
int result = 0;
|
||||
char *curname, *modnames;
|
||||
|
||||
if(param.usebuffer || names==NULL) return NULL;
|
||||
|
||||
/* Use internal code. */
|
||||
if(param.outmode != DECODE_AUDIO) return open_fake_module();
|
||||
|
||||
modnames = strdup(names);
|
||||
if(modnames == NULL)
|
||||
{
|
||||
error("Error allocating memory for module names.");
|
||||
return NULL;
|
||||
}
|
||||
/* Now loop over the list of possible modules to find one that works. */
|
||||
curname = strtok(modnames, ",");
|
||||
while(curname != NULL)
|
||||
{
|
||||
char* name = curname;
|
||||
curname = strtok(NULL, ",");
|
||||
if(param.verbose > 1) fprintf(stderr, "Trying output module %s.\n", name);
|
||||
/* Open the module, initial check for availability+libraries. */
|
||||
module = open_module( "output", name );
|
||||
if(module == NULL) continue;
|
||||
/* Check if module supports output */
|
||||
if(module->init_output == NULL)
|
||||
{
|
||||
error1("Module '%s' does not support audio output.", name);
|
||||
close_module(module);
|
||||
continue; /* Try next one. */
|
||||
}
|
||||
/* Allocation+initialization of memory for audio output type. */
|
||||
ao = alloc_audio_output();
|
||||
if(ao==NULL)
|
||||
{
|
||||
error("Failed to allocate audio output structure.");
|
||||
close_module(module);
|
||||
break; /* This is fatal. */
|
||||
}
|
||||
|
||||
/* Call the init function */
|
||||
ao->device = param.output_device;
|
||||
ao->flags = param.output_flags;
|
||||
/* Should I do funny stuff with stderr file descriptor instead? */
|
||||
if(curname == NULL)
|
||||
{
|
||||
if(param.verbose > 1)
|
||||
fprintf(stderr, "Note: %s is the last output option... showing you any error messages now.\n", name);
|
||||
}
|
||||
else ao->auxflags |= MPG123_OUT_QUIET; /* Probing, so don't spill stderr with errors. */
|
||||
ao->is_open = FALSE;
|
||||
ao->module = module; /* Need that to close module later. */
|
||||
result = module->init_output(ao);
|
||||
if(result == 0)
|
||||
{ /* Try to open the device. I'm only interested in actually working modules. */
|
||||
result = open_output(ao);
|
||||
close_output(ao);
|
||||
}
|
||||
else error2("Module '%s' init failed: %i", name, result);
|
||||
|
||||
if(result!=0)
|
||||
{ /* Try next one... */
|
||||
close_module(module);
|
||||
free(ao);
|
||||
ao = NULL;
|
||||
}
|
||||
else
|
||||
{ /* All good, leave the loop. */
|
||||
if(param.verbose > 1) fprintf(stderr, "Output module '%s' chosen.\n", name);
|
||||
|
||||
ao->auxflags &= ~MPG123_OUT_QUIET;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
free(modnames);
|
||||
if(ao==NULL) error1("Unable to find a working output module in this list: %s", names);
|
||||
|
||||
return ao;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* Close the audio output and close the module */
|
||||
void close_output_module( audio_output_t* ao )
|
||||
{
|
||||
if (!ao) return; /* That covers buffer mode, too (ao == NULL there). */
|
||||
|
||||
debug("closing output module");
|
||||
/* Close the audio output */
|
||||
if(ao->is_open && ao->close != NULL) ao->close(ao);
|
||||
|
||||
/* Deinitialise the audio output */
|
||||
if (ao->deinit) ao->deinit( ao );
|
||||
|
||||
/* Unload the module */
|
||||
if (ao->module) close_module( ao->module );
|
||||
|
||||
/* Free up memory */
|
||||
free( ao );
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* allocate and initialise memory */
|
||||
audio_output_t* alloc_audio_output()
|
||||
{
|
||||
audio_output_t* ao = malloc( sizeof( audio_output_t ) );
|
||||
if (ao==NULL) error( "Failed to allocate memory for audio_output_t." );
|
||||
|
||||
/* Initialise variables */
|
||||
ao->fn = -1;
|
||||
ao->rate = -1;
|
||||
ao->gain = param.gain;
|
||||
ao->userptr = NULL;
|
||||
ao->device = NULL;
|
||||
ao->channels = -1;
|
||||
ao->format = -1;
|
||||
ao->flags = 0;
|
||||
ao->auxflags = 0;
|
||||
|
||||
/*ao->module = NULL;*/
|
||||
|
||||
/* Set the callbacks to NULL */
|
||||
ao->open = NULL;
|
||||
ao->get_formats = NULL;
|
||||
ao->write = NULL;
|
||||
ao->flush = NULL;
|
||||
ao->close = NULL;
|
||||
ao->deinit = NULL;
|
||||
|
||||
return ao;
|
||||
}
|
||||
|
||||
/*
|
||||
static void audio_output_dump(audio_output_t *ao)
|
||||
{
|
||||
fprintf(stderr, "ao->fn=%d\n", ao->fn);
|
||||
fprintf(stderr, "ao->userptr=%p\n", ao->userptr);
|
||||
fprintf(stderr, "ao->rate=%ld\n", ao->rate);
|
||||
fprintf(stderr, "ao->gain=%ld\n", ao->gain);
|
||||
fprintf(stderr, "ao->device='%s'\n", ao->device);
|
||||
fprintf(stderr, "ao->channels=%d\n", ao->channels);
|
||||
fprintf(stderr, "ao->format=%d\n", ao->format);
|
||||
}
|
||||
*/
|
||||
|
||||
struct enc_desc
|
||||
{
|
||||
int code; /* MPG123_ENC_SOMETHING */
|
||||
const char *longname; /* signed bla bla */
|
||||
const char *name; /* sXX, short name */
|
||||
const unsigned char nlen; /* significant characters in short name */
|
||||
};
|
||||
|
||||
static const struct enc_desc encdesc[] =
|
||||
{
|
||||
{ MPG123_ENC_SIGNED_16, "signed 16 bit", "s16 ", 3 },
|
||||
{ MPG123_ENC_UNSIGNED_16, "unsigned 16 bit", "u16 ", 3 },
|
||||
{ MPG123_ENC_UNSIGNED_8, "unsigned 8 bit", "u8 ", 2 },
|
||||
{ MPG123_ENC_SIGNED_8, "signed 8 bit", "s8 ", 2 },
|
||||
{ MPG123_ENC_ULAW_8, "mu-law (8 bit)", "ulaw ", 4 },
|
||||
{ MPG123_ENC_ALAW_8, "a-law (8 bit)", "alaw ", 4 },
|
||||
{ MPG123_ENC_FLOAT_32, "float (32 bit)", "f32 ", 3 },
|
||||
{ MPG123_ENC_SIGNED_32, "signed 32 bit", "s32 ", 3 },
|
||||
{ MPG123_ENC_UNSIGNED_32, "unsigned 32 bit", "u32 ", 3 },
|
||||
{ MPG123_ENC_SIGNED_24, "signed 24 bit", "s24 ", 3 },
|
||||
{ MPG123_ENC_UNSIGNED_24, "unsigned 24 bit", "u24 ", 3 }
|
||||
};
|
||||
#define KNOWN_ENCS (sizeof(encdesc)/sizeof(struct enc_desc))
|
||||
|
||||
void audio_enclist(char** list)
|
||||
{
|
||||
size_t length = 0;
|
||||
int i;
|
||||
*list = NULL;
|
||||
for(i=0;i<KNOWN_ENCS;++i) length += encdesc[i].nlen;
|
||||
|
||||
length += KNOWN_ENCS-1; /* spaces between the encodings */
|
||||
*list = malloc(length+1); /* plus zero */
|
||||
if(*list != NULL)
|
||||
{
|
||||
size_t off = 0;
|
||||
(*list)[length] = 0;
|
||||
for(i=0;i<KNOWN_ENCS;++i)
|
||||
{
|
||||
if(i>0) (*list)[off++] = ' ';
|
||||
memcpy(*list+off, encdesc[i].name, encdesc[i].nlen);
|
||||
off += encdesc[i].nlen;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Safer as function... */
|
||||
const char* audio_encoding_name(const int encoding, const int longer)
|
||||
{
|
||||
const char *name = longer ? "unknown" : "???";
|
||||
int i;
|
||||
for(i=0;i<KNOWN_ENCS;++i)
|
||||
if(encdesc[i].code == encoding)
|
||||
name = longer ? encdesc[i].longname : encdesc[i].name;
|
||||
|
||||
return name;
|
||||
}
|
||||
|
||||
static void capline(mpg123_handle *mh, long rate)
|
||||
{
|
||||
int enci;
|
||||
const int *encs;
|
||||
size_t num_encs;
|
||||
mpg123_encodings(&encs, &num_encs);
|
||||
fprintf(stderr," %5ld |", pitch_rate(rate));
|
||||
for(enci=0; enci<num_encs; ++enci)
|
||||
{
|
||||
switch(mpg123_format_support(mh, rate, encs[enci]))
|
||||
{
|
||||
case MPG123_MONO: fprintf(stderr, " M |"); break;
|
||||
case MPG123_STEREO: fprintf(stderr, " S |"); break;
|
||||
case MPG123_MONO|MPG123_STEREO: fprintf(stderr, " M/S |"); break;
|
||||
default: fprintf(stderr, " |");
|
||||
}
|
||||
}
|
||||
fprintf(stderr, "\n");
|
||||
}
|
||||
|
||||
void print_capabilities(audio_output_t *ao, mpg123_handle *mh)
|
||||
{
|
||||
int r,e;
|
||||
const long *rates;
|
||||
size_t num_rates;
|
||||
const int *encs;
|
||||
size_t num_encs;
|
||||
const char *name = "<buffer>";
|
||||
const char *dev = "<none>";
|
||||
if(!param.usebuffer)
|
||||
{
|
||||
name = ao->module ? ao->module->name : "file/raw/test";
|
||||
if(ao->device != NULL) dev = ao->device;
|
||||
}
|
||||
mpg123_rates(&rates, &num_rates);
|
||||
mpg123_encodings(&encs, &num_encs);
|
||||
fprintf(stderr,"\nAudio driver: %s\nAudio device: %s\nAudio capabilities:\n(matrix of [S]tereo or [M]ono support for sample format and rate in Hz)\n |", name, dev);
|
||||
for(e=0;e<num_encs;e++) fprintf(stderr," %5s |",audio_encoding_name(encs[e], 0));
|
||||
|
||||
fprintf(stderr,"\n ------|");
|
||||
for(e=0;e<num_encs;e++) fprintf(stderr,"-------|");
|
||||
|
||||
fprintf(stderr, "\n");
|
||||
for(r=0; r<num_rates; ++r) capline(mh, rates[r]);
|
||||
|
||||
if(param.force_rate) capline(mh, param.force_rate);
|
||||
|
||||
fprintf(stderr,"\n");
|
||||
}
|
||||
|
||||
/* This uses the currently opened audio device, queries its caps.
|
||||
In case of buffered playback, this works _once_ by querying the buffer for the caps before entering the main loop. */
|
||||
void audio_capabilities(audio_output_t *ao, mpg123_handle *mh)
|
||||
{
|
||||
int force_fmt = 0;
|
||||
int fmts;
|
||||
size_t ri;
|
||||
/* Pitching introduces a difference between decoder rate and playback rate. */
|
||||
long rate, decode_rate;
|
||||
int channels;
|
||||
const long *rates;
|
||||
size_t num_rates, rlimit;
|
||||
debug("audio_capabilities");
|
||||
mpg123_rates(&rates, &num_rates);
|
||||
mpg123_format_none(mh); /* Start with nothing. */
|
||||
if(param.force_encoding != NULL)
|
||||
{
|
||||
int i;
|
||||
if(!param.quiet) fprintf(stderr, "Note: forcing output encoding %s\n", param.force_encoding);
|
||||
|
||||
for(i=0;i<KNOWN_ENCS;++i)
|
||||
if(!strncasecmp(encdesc[i].name, param.force_encoding, encdesc[i].nlen))
|
||||
{
|
||||
force_fmt = encdesc[i].code;
|
||||
break;
|
||||
}
|
||||
|
||||
if(i==KNOWN_ENCS)
|
||||
{
|
||||
error1("Failed to find an encoding to match requested \"%s\"!\n", param.force_encoding);
|
||||
return; /* No capabilities at all... */
|
||||
}
|
||||
else if(param.verbose > 2) fprintf(stderr, "Note: forcing encoding code 0x%x\n", force_fmt);
|
||||
}
|
||||
rlimit = param.force_rate > 0 ? num_rates+1 : num_rates;
|
||||
for(channels=1; channels<=2; channels++)
|
||||
for(ri = 0;ri<rlimit;ri++)
|
||||
{
|
||||
decode_rate = ri < num_rates ? rates[ri] : param.force_rate;
|
||||
rate = pitch_rate(decode_rate);
|
||||
if(param.verbose > 2) fprintf(stderr, "Note: checking support for %liHz/%ich.\n", rate, channels);
|
||||
#ifndef NOXFERMEM
|
||||
if(param.usebuffer)
|
||||
{ /* Ask the buffer process. It is waiting for this. */
|
||||
buffermem->rate = rate;
|
||||
buffermem->channels = channels;
|
||||
buffermem->format = 0; /* Just have it initialized safely. */
|
||||
debug2("asking for formats for %liHz/%ich", rate, channels);
|
||||
xfermem_putcmd(buffermem->fd[XF_WRITER], XF_CMD_AUDIOCAP);
|
||||
xfermem_getcmd(buffermem->fd[XF_WRITER], TRUE);
|
||||
fmts = buffermem->format;
|
||||
}
|
||||
else
|
||||
#endif
|
||||
{ /* Check myself. */
|
||||
ao->rate = rate;
|
||||
ao->channels = channels;
|
||||
fmts = ao->get_formats(ao);
|
||||
}
|
||||
if(param.verbose > 2) fprintf(stderr, "Note: result 0x%x\n", fmts);
|
||||
if(force_fmt)
|
||||
{ /* Filter for forced encoding. */
|
||||
if((fmts & force_fmt) == force_fmt) fmts = force_fmt;
|
||||
else fmts = 0; /* Nothing else! */
|
||||
|
||||
if(param.verbose > 2) fprintf(stderr, "Note: after forcing 0x%x\n", fmts);
|
||||
}
|
||||
|
||||
if(fmts < 0) continue;
|
||||
else mpg123_format(mh, decode_rate, channels, fmts);
|
||||
}
|
||||
|
||||
#ifndef NOXFERMEM
|
||||
/* Buffer loop shall start normal operation now. */
|
||||
if(param.usebuffer)
|
||||
{
|
||||
xfermem_putcmd(buffermem->fd[XF_WRITER], XF_CMD_WAKEUP);
|
||||
xfermem_getcmd(buffermem->fd[XF_WRITER], TRUE);
|
||||
}
|
||||
#endif
|
||||
|
||||
if(param.verbose > 1) print_capabilities(ao, mh);
|
||||
}
|
||||
|
||||
#if !defined(WIN32) && !defined(GENERIC)
|
||||
#ifndef NOXFERMEM
|
||||
static void catch_child(void)
|
||||
{
|
||||
while (waitpid(-1, NULL, WNOHANG) > 0);
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
/* FIXME: Old output initialization code that needs updating */
|
||||
|
||||
int init_output(audio_output_t **ao)
|
||||
{
|
||||
static int init_done = FALSE;
|
||||
|
||||
if (init_done) return 1;
|
||||
init_done = TRUE;
|
||||
|
||||
#ifndef NOXFERMEM
|
||||
if (param.usebuffer)
|
||||
{
|
||||
unsigned int bufferbytes;
|
||||
sigset_t newsigset, oldsigset;
|
||||
bufferbytes = (param.usebuffer * 1024);
|
||||
if (bufferbytes < bufferblock)
|
||||
{
|
||||
bufferbytes = 2*bufferblock;
|
||||
if(!param.quiet) fprintf(stderr, "Note: raising buffer to minimal size %liKiB\n", (unsigned long) bufferbytes>>10);
|
||||
}
|
||||
bufferbytes -= bufferbytes % bufferblock;
|
||||
/* No +1024 for NtoM rounding problems anymore! */
|
||||
xfermem_init (&buffermem, bufferbytes ,0,0);
|
||||
sigemptyset (&newsigset);
|
||||
/* ThOr: I'm not quite sure why we need to block that signal here. */
|
||||
sigaddset (&newsigset, SIGUSR1);
|
||||
sigprocmask (SIG_BLOCK, &newsigset, &oldsigset);
|
||||
#if !defined(WIN32) && !defined(GENERIC)
|
||||
catchsignal (SIGCHLD, catch_child);
|
||||
#endif
|
||||
switch ((buffer_pid = fork()))
|
||||
{
|
||||
case -1: /* error */
|
||||
error("cannot fork!");
|
||||
return -1;
|
||||
case 0: /* child */
|
||||
{
|
||||
/* Buffer process handles all audio stuff itself. */
|
||||
audio_output_t *bao = NULL; /* To be clear: That's the buffer's pointer. */
|
||||
param.usebuffer = 0; /* The buffer doesn't use the buffer. */
|
||||
/* Open audio output module */
|
||||
bao = open_output_module(param.output_module);
|
||||
if(!bao)
|
||||
{
|
||||
error("Failed to open audio output module.");
|
||||
exit(1); /* communicate failure? */
|
||||
}
|
||||
if(open_output(bao) < 0)
|
||||
{
|
||||
error("Unable to open audio output.");
|
||||
close_output_module(bao);
|
||||
exit(2);
|
||||
}
|
||||
xfermem_init_reader (buffermem);
|
||||
buffer_loop(bao, &oldsigset); /* Here the work happens. */
|
||||
xfermem_done_reader (buffermem);
|
||||
xfermem_done (buffermem);
|
||||
close_output(bao);
|
||||
close_output_module(bao);
|
||||
exit(0);
|
||||
}
|
||||
default: /* parent */
|
||||
xfermem_init_writer (buffermem);
|
||||
}
|
||||
/* ThOr: I want that USR1 signal back for control. */
|
||||
sigprocmask(SIG_UNBLOCK, &newsigset, NULL);
|
||||
}
|
||||
#else
|
||||
if(param.usebuffer)
|
||||
{
|
||||
error("Buffer not available in this build!");
|
||||
return -1;
|
||||
}
|
||||
#endif
|
||||
if(!param.usebuffer)
|
||||
{ /* Only if I handle audio device output: Get that module. */
|
||||
*ao = open_output_module(param.output_module);
|
||||
if(!(*ao))
|
||||
{
|
||||
error("Failed to open audio output module");
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
else *ao = NULL; /* That ensures we won't try to free it later... */
|
||||
#ifndef NOXFERMEM
|
||||
if(param.usebuffer)
|
||||
{ /* Check if buffer is alive. */
|
||||
int res = xfermem_getcmd(buffermem->fd[XF_WRITER], TRUE);
|
||||
if(res < 0)
|
||||
{
|
||||
error("Buffer process didn't initialize!");
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
/* This has internal protection for buffer mode. */
|
||||
if(open_output(*ao) < 0) return -1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void exit_output(audio_output_t *ao, int rude)
|
||||
{
|
||||
debug("exit output");
|
||||
#ifndef NOXFERMEM
|
||||
if (param.usebuffer)
|
||||
{
|
||||
debug("ending buffer");
|
||||
buffer_stop(); /* Puts buffer into waiting-for-command mode. */
|
||||
buffer_end(rude); /* Gives command to end operation. */
|
||||
xfermem_done_writer(buffermem);
|
||||
waitpid (buffer_pid, NULL, 0);
|
||||
xfermem_done (buffermem);
|
||||
}
|
||||
#endif
|
||||
/* Close the output... doesn't matter if buffer handled it, that's taken care of. */
|
||||
close_output(ao);
|
||||
close_output_module(ao);
|
||||
}
|
||||
|
||||
void output_pause(audio_output_t *ao)
|
||||
{
|
||||
if(param.usebuffer) buffer_stop();
|
||||
else ao->flush(ao);
|
||||
}
|
||||
|
||||
void output_unpause(audio_output_t *ao)
|
||||
{
|
||||
if(param.usebuffer) buffer_start();
|
||||
}
|
||||
|
||||
int flush_output(audio_output_t *ao, unsigned char *bytes, size_t count)
|
||||
{
|
||||
if(count)
|
||||
{
|
||||
/* Error checks? */
|
||||
#ifndef NOXFERMEM
|
||||
if(param.usebuffer){ if(xfermem_write(buffermem, bytes, count)) return -1; }
|
||||
else
|
||||
#endif
|
||||
if(param.outmode != DECODE_TEST)
|
||||
{
|
||||
int sum = 0;
|
||||
int written;
|
||||
do
|
||||
{ /* Be in a loop for SIGSTOP/CONT */
|
||||
written = ao->write(ao, bytes, (int)count);
|
||||
if(written >= 0){ sum+=written; count -= written; }
|
||||
else error1("Error in writing audio (%s?)!", strerror(errno));
|
||||
} while(count>0 && written>=0);
|
||||
return sum;
|
||||
}
|
||||
}
|
||||
return (int)count; /* That is for DECODE_TEST */
|
||||
}
|
||||
|
||||
int open_output(audio_output_t *ao)
|
||||
{
|
||||
if(param.usebuffer) return 0;
|
||||
|
||||
if(ao == NULL)
|
||||
{
|
||||
error("ao should not be NULL here!");
|
||||
exit(110);
|
||||
}
|
||||
|
||||
switch(param.outmode)
|
||||
{
|
||||
case DECODE_AUDIO:
|
||||
case DECODE_WAV:
|
||||
case DECODE_AU:
|
||||
case DECODE_CDR:
|
||||
case DECODE_FILE:
|
||||
debug("opening normal audio/file");
|
||||
ao->is_open = ao->open(ao) < 0 ? FALSE : TRUE;
|
||||
if(!ao->is_open)
|
||||
{
|
||||
if(!AOQUIET) error("failed to open audio device");
|
||||
return -1;
|
||||
}
|
||||
else return 0;
|
||||
break;
|
||||
case DECODE_TEST:
|
||||
debug("decoding to nowhere");
|
||||
return 0;
|
||||
break;
|
||||
}
|
||||
debug("nothing");
|
||||
return -1; /* That's an error ... unknown outmode? */
|
||||
}
|
||||
|
||||
/* is this used? */
|
||||
void close_output(audio_output_t *ao)
|
||||
{
|
||||
if(param.usebuffer) return;
|
||||
|
||||
debug("closing output");
|
||||
switch(param.outmode)
|
||||
{
|
||||
case DECODE_AUDIO:
|
||||
case DECODE_WAV:
|
||||
case DECODE_AU:
|
||||
case DECODE_CDR:
|
||||
/* Guard that close call; could be nasty. */
|
||||
if(ao->is_open)
|
||||
{
|
||||
ao->is_open = FALSE;
|
||||
if(ao->close != NULL) ao->close(ao);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/* Also for WAV decoding? */
|
||||
int reset_output(audio_output_t *ao)
|
||||
{
|
||||
if(!param.usebuffer)
|
||||
{
|
||||
close_output(ao);
|
||||
return open_output(ao);
|
||||
}
|
||||
else return 0;
|
||||
}
|
||||
|
||||
int set_pitch(mpg123_handle *fr, audio_output_t *ao, double new_pitch)
|
||||
{
|
||||
int ret = 1;
|
||||
double old_pitch = param.pitch;
|
||||
long rate;
|
||||
int channels, format;
|
||||
int smode = 0;
|
||||
|
||||
/* Be safe, check support. */
|
||||
if(mpg123_getformat(fr, &rate, &channels, &format) != MPG123_OK)
|
||||
{
|
||||
/* We might just not have a track handy. */
|
||||
error("There is no current audio format, cannot apply pitch. This might get fixed in future.");
|
||||
return 0;
|
||||
}
|
||||
|
||||
if(param.usebuffer)
|
||||
{
|
||||
error("No runtime pitch change with output buffer, sorry.");
|
||||
return 0;
|
||||
}
|
||||
|
||||
param.pitch = new_pitch;
|
||||
if(param.pitch < -0.99) param.pitch = -0.99;
|
||||
|
||||
if(channels == 1) smode = MPG123_MONO;
|
||||
if(channels == 2) smode = MPG123_STEREO;
|
||||
|
||||
output_pause(ao);
|
||||
/* Remember: This takes param.pitch into account. */
|
||||
audio_capabilities(ao, fr);
|
||||
if(!(mpg123_format_support(fr, rate, format) & smode))
|
||||
{
|
||||
/* Note: When using --pitch command line parameter, you can go higher
|
||||
because a lower decoder sample rate is automagically chosen.
|
||||
Here, we'd need to switch decoder rate during track... good? */
|
||||
error("Reached a hardware limit there with pitch!");
|
||||
param.pitch = old_pitch;
|
||||
audio_capabilities(ao, fr);
|
||||
ret = 0;
|
||||
}
|
||||
ao->format = format;
|
||||
ao->channels = channels;
|
||||
ao->rate = pitch_rate(rate);
|
||||
reset_output(ao);
|
||||
output_unpause(ao);
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -1,106 +0,0 @@
|
||||
/*
|
||||
audio: audio output interface
|
||||
|
||||
copyright ?-2006 by the mpg123 project - free software under the terms of the LGPL 2.1
|
||||
see COPYING and AUTHORS files in distribution or http://mpg123.org
|
||||
initially written by Michael Hipp
|
||||
*/
|
||||
|
||||
/*
|
||||
* Audio 'LIB' defines
|
||||
*/
|
||||
|
||||
|
||||
#ifndef _MPG123_AUDIO_H_
|
||||
#define _MPG123_AUDIO_H_
|
||||
|
||||
#include "compat.h"
|
||||
#include "mpg123.h"
|
||||
#include "module.h"
|
||||
|
||||
#define AUDIO_OUT_HEADPHONES 0x01
|
||||
#define AUDIO_OUT_INTERNAL_SPEAKER 0x02
|
||||
#define AUDIO_OUT_LINE_OUT 0x04
|
||||
|
||||
enum {
|
||||
DECODE_TEST,
|
||||
DECODE_AUDIO,
|
||||
DECODE_FILE,
|
||||
DECODE_BUFFER,
|
||||
DECODE_WAV,
|
||||
DECODE_AU,
|
||||
DECODE_CDR,
|
||||
DECODE_AUDIOFILE
|
||||
};
|
||||
|
||||
/* 3% rate tolerance */
|
||||
#define AUDIO_RATE_TOLERANCE 3
|
||||
|
||||
typedef struct audio_output_struct
|
||||
{
|
||||
int fn; /* filenumber */
|
||||
void *userptr; /* driver specific pointer */
|
||||
|
||||
/* Callbacks */
|
||||
int (*open)(struct audio_output_struct *);
|
||||
int (*get_formats)(struct audio_output_struct *);
|
||||
int (*write)(struct audio_output_struct *, unsigned char *,int);
|
||||
void (*flush)(struct audio_output_struct *);
|
||||
int (*close)(struct audio_output_struct *);
|
||||
int (*deinit)(struct audio_output_struct *);
|
||||
|
||||
/* the module this belongs to */
|
||||
mpg123_module_t *module;
|
||||
|
||||
char *device; /* device name */
|
||||
int flags; /* some bits; namely headphone/speaker/line */
|
||||
long rate; /* sample rate */
|
||||
long gain; /* output gain */
|
||||
int channels; /* number of channels */
|
||||
int format; /* format flags */
|
||||
int is_open; /* something opened? */
|
||||
#define MPG123_OUT_QUIET 1
|
||||
int auxflags; /* For now just one: quiet mode (for probing). */
|
||||
} audio_output_t;
|
||||
|
||||
/* Lazy. */
|
||||
#define AOQUIET (ao->auxflags & MPG123_OUT_QUIET)
|
||||
|
||||
struct audio_format_name {
|
||||
int val;
|
||||
char *name;
|
||||
char *sname;
|
||||
};
|
||||
|
||||
#define pitch_rate(rate) (param.pitch == 0 ? (rate) : (long) ((param.pitch+1.0)*(rate)))
|
||||
|
||||
/* ------ Declarations from "audio.c" ------ */
|
||||
|
||||
audio_output_t* open_output_module( const char* name );
|
||||
void close_output_module( audio_output_t* ao );
|
||||
audio_output_t* alloc_audio_output();
|
||||
void audio_capabilities(audio_output_t *ao, mpg123_handle *mh);
|
||||
int audio_fit_capabilities(audio_output_t *ao,int c,int r);
|
||||
const char* audio_encoding_name(const int encoding, const int longer);
|
||||
void print_capabilities(audio_output_t *ao, mpg123_handle *mh);
|
||||
|
||||
int init_output(audio_output_t **ao);
|
||||
void exit_output(audio_output_t *ao, int rude);
|
||||
int flush_output(audio_output_t *ao, unsigned char *bytes, size_t count);
|
||||
int open_output(audio_output_t *ao);
|
||||
void close_output(audio_output_t *ao );
|
||||
int reset_output(audio_output_t *ao);
|
||||
void output_pause(audio_output_t *ao); /* Prepare output for inactivity. */
|
||||
void output_unpause(audio_output_t *ao); /* Reactivate output (buffer process). */
|
||||
|
||||
void audio_enclist(char** list); /* Make a string of encoding names. */
|
||||
|
||||
/*
|
||||
Twiddle audio output rate to yield speedup/down (pitch) effect.
|
||||
The actually achieved pitch value is stored in param.pitch.
|
||||
Returns 1 if pitch setting succeeded, 0 otherwise.
|
||||
*/
|
||||
int set_pitch(mpg123_handle *fr, audio_output_t *ao, double new_pitch);
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1,312 +0,0 @@
|
||||
/*
|
||||
buffer.c: output buffer
|
||||
|
||||
copyright 1997-2009 by the mpg123 project - free software under the terms of the LGPL 2.1
|
||||
see COPYING and AUTHORS files in distribution or http://mpg123.org
|
||||
initially written by Oliver Fromme
|
||||
|
||||
I (ThOr) am reviewing this file at about the same daytime as Oliver's timestamp here:
|
||||
Mon Apr 14 03:53:18 MET DST 1997
|
||||
- dammed night coders;-)
|
||||
*/
|
||||
|
||||
#include "mpg123app.h"
|
||||
|
||||
#ifndef NOXFERMEM
|
||||
|
||||
#include "common.h"
|
||||
#include <errno.h>
|
||||
#include "debug.h"
|
||||
|
||||
int outburst = 32768;
|
||||
|
||||
static int intflag = FALSE;
|
||||
static int usr1flag = FALSE;
|
||||
|
||||
static void catch_interrupt (void)
|
||||
{
|
||||
intflag = TRUE;
|
||||
}
|
||||
|
||||
static void catch_usr1 (void)
|
||||
{
|
||||
usr1flag = TRUE;
|
||||
}
|
||||
|
||||
/* Interfaces to writer process */
|
||||
|
||||
extern void buffer_sig(int signal, int block);
|
||||
|
||||
void real_buffer_ignore_lowmem(void)
|
||||
{
|
||||
if (!buffermem)
|
||||
return;
|
||||
if(buffermem->wakeme[XF_READER])
|
||||
xfermem_putcmd(buffermem->fd[XF_WRITER], XF_CMD_WAKEUP);
|
||||
}
|
||||
|
||||
void real_buffer_end(int rude)
|
||||
{
|
||||
if (!buffermem)
|
||||
return;
|
||||
xfermem_putcmd(buffermem->fd[XF_WRITER], rude ? XF_CMD_ABORT : XF_CMD_TERMINATE);
|
||||
}
|
||||
|
||||
void real_buffer_resync(void)
|
||||
{
|
||||
if(buffermem->justwait)
|
||||
{
|
||||
buffermem->wakeme[XF_WRITER] = TRUE;
|
||||
xfermem_putcmd(buffermem->fd[XF_WRITER], XF_CMD_RESYNC);
|
||||
xfermem_getcmd(buffermem->fd[XF_WRITER], TRUE);
|
||||
}
|
||||
else buffer_sig(SIGINT, TRUE);
|
||||
}
|
||||
|
||||
void real_plain_buffer_resync(void)
|
||||
{
|
||||
buffer_sig(SIGINT, FALSE);
|
||||
}
|
||||
|
||||
void real_buffer_reset(void)
|
||||
{
|
||||
buffer_sig(SIGUSR1, TRUE);
|
||||
}
|
||||
|
||||
void real_buffer_start(void)
|
||||
{
|
||||
if(buffermem->justwait)
|
||||
{
|
||||
debug("ending buffer's waiting");
|
||||
buffermem->justwait = FALSE;
|
||||
xfermem_putcmd(buffermem->fd[XF_WRITER], XF_CMD_WAKEUP);
|
||||
}
|
||||
}
|
||||
|
||||
void real_buffer_stop()
|
||||
{
|
||||
buffermem->justwait = TRUE;
|
||||
buffer_sig(SIGINT, TRUE);
|
||||
}
|
||||
|
||||
extern int buffer_pid;
|
||||
|
||||
void buffer_sig(int signal, int block)
|
||||
{
|
||||
if (!buffermem) return;
|
||||
|
||||
if (!block)
|
||||
{ /* Just signal, do not wait for anything. */
|
||||
kill(buffer_pid, signal);
|
||||
return;
|
||||
}
|
||||
|
||||
/* kill() and the waiting needs to be taken care of properly for parallel execution.
|
||||
Nobody reported issues so far, but I want to be sure. */
|
||||
if(xfermem_sigblock(XF_WRITER, buffermem, buffer_pid, signal) != XF_CMD_WAKEUP)
|
||||
perror("Could not resync/reset buffers");
|
||||
return;
|
||||
}
|
||||
|
||||
void buffer_loop(audio_output_t *ao, sigset_t *oldsigset)
|
||||
{
|
||||
int bytes, outbytes;
|
||||
int my_fd = buffermem->fd[XF_READER];
|
||||
txfermem *xf = buffermem;
|
||||
int done = FALSE;
|
||||
int preload;
|
||||
|
||||
catchsignal (SIGINT, catch_interrupt);
|
||||
catchsignal (SIGUSR1, catch_usr1);
|
||||
sigprocmask (SIG_SETMASK, oldsigset, NULL);
|
||||
|
||||
xfermem_putcmd(my_fd, XF_CMD_WAKEUP);
|
||||
|
||||
debug("audio output: waiting for cap requests");
|
||||
/* wait for audio setup queries */
|
||||
while(1)
|
||||
{
|
||||
int cmd;
|
||||
cmd = xfermem_block(XF_READER, xf);
|
||||
if(cmd == XF_CMD_AUDIOCAP)
|
||||
{
|
||||
ao->rate = xf->rate;
|
||||
ao->channels = xf->channels;
|
||||
ao->format = ao->get_formats(ao);
|
||||
debug3("formats for %liHz/%ich: 0x%x", ao->rate, ao->channels, ao->format);
|
||||
xf->format = ao->format;
|
||||
xfermem_putcmd(my_fd, XF_CMD_AUDIOCAP);
|
||||
}
|
||||
else if(cmd == XF_CMD_WAKEUP)
|
||||
{
|
||||
debug("got wakeup... leaving config mode");
|
||||
xfermem_putcmd(buffermem->fd[XF_READER], XF_CMD_WAKEUP);
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
error1("unexpected command %i", cmd);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
/* Fill complete buffer on first run before starting to play.
|
||||
* Live mp3 streams constantly approach buffer underrun otherwise. [dk]
|
||||
*/
|
||||
preload = (int)(param.preload*xf->size);
|
||||
if(preload > xf->size) preload = xf->size;
|
||||
if(preload < 0) preload = 0;
|
||||
|
||||
for (;;) {
|
||||
if (intflag) {
|
||||
debug("handle intflag... flushing");
|
||||
intflag = FALSE;
|
||||
ao->flush(ao);
|
||||
/* Either prepare for waiting or empty buffer now. */
|
||||
if(!xf->justwait) xf->readindex = xf->freeindex;
|
||||
else
|
||||
{
|
||||
int cmd;
|
||||
debug("Prepare for waiting; draining command queue. (There's a lot of wakeup commands pending, usually.)");
|
||||
do
|
||||
{
|
||||
cmd = xfermem_getcmd(my_fd, FALSE);
|
||||
/* debug1("drain: %i", cmd); */
|
||||
} while(cmd > 0);
|
||||
}
|
||||
if(xf->wakeme[XF_WRITER]) xfermem_putcmd(my_fd, XF_CMD_WAKEUP);
|
||||
}
|
||||
if (usr1flag) {
|
||||
debug("handling usr1flag");
|
||||
usr1flag = FALSE;
|
||||
/* close and re-open in order to flush
|
||||
* the device's internal buffer before
|
||||
* changing the sample rate. [OF]
|
||||
*/
|
||||
/* writer must block when sending SIGUSR1
|
||||
* or we will lose all data processed
|
||||
* in the meantime! [dk]
|
||||
*/
|
||||
xf->readindex = xf->freeindex;
|
||||
/* We've nailed down the new starting location -
|
||||
* writer is now safe to go on. [dk]
|
||||
*/
|
||||
if (xf->wakeme[XF_WRITER])
|
||||
xfermem_putcmd(my_fd, XF_CMD_WAKEUP);
|
||||
ao->rate = xf->rate;
|
||||
ao->channels = xf->channels;
|
||||
ao->format = xf->format;
|
||||
if (reset_output(ao) < 0) {
|
||||
error1("failed to reset audio: %s", strerror(errno));
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
if ( (bytes = xfermem_get_usedspace(xf)) < outburst ) {
|
||||
/* if we got a buffer underrun we first
|
||||
* fill 1/8 of the buffer before continue/start
|
||||
* playing */
|
||||
if (preload < xf->size>>3)
|
||||
preload = xf->size>>3;
|
||||
if(preload < outburst)
|
||||
preload = outburst;
|
||||
}
|
||||
debug1("bytes: %i", bytes);
|
||||
if(xf->justwait || bytes < preload) {
|
||||
int cmd;
|
||||
if (done && !bytes) {
|
||||
break;
|
||||
}
|
||||
|
||||
if(xf->justwait || !done) {
|
||||
|
||||
/* Don't spill into errno check below. */
|
||||
errno = 0;
|
||||
cmd = xfermem_block(XF_READER, xf);
|
||||
debug1("got %i", cmd);
|
||||
switch(cmd) {
|
||||
|
||||
/* More input pending. */
|
||||
case XF_CMD_WAKEUP_INFO:
|
||||
continue;
|
||||
/* Yes, we know buffer is low but
|
||||
* know we don't care.
|
||||
*/
|
||||
case XF_CMD_WAKEUP:
|
||||
break; /* Proceed playing. */
|
||||
case XF_CMD_ABORT: /* Immediate end, discard buffer contents. */
|
||||
return; /* Cleanup happens outside of buffer_loop()*/
|
||||
case XF_CMD_TERMINATE: /* Graceful end, playing stuff in buffer and then return. */
|
||||
debug("going to terminate");
|
||||
done = TRUE;
|
||||
break;
|
||||
case XF_CMD_RESYNC:
|
||||
debug("ordered resync");
|
||||
if (param.outmode == DECODE_AUDIO) ao->flush(ao);
|
||||
|
||||
xf->readindex = xf->freeindex;
|
||||
if (xf->wakeme[XF_WRITER]) xfermem_putcmd(my_fd, XF_CMD_WAKEUP);
|
||||
continue;
|
||||
break;
|
||||
case -1:
|
||||
if(intflag || usr1flag) /* Got signal, handle it at top of loop... */
|
||||
{
|
||||
debug("buffer interrupted");
|
||||
continue;
|
||||
}
|
||||
if(errno)
|
||||
error1("Yuck! Error in buffer handling... or somewhere unexpected: %s", strerror(errno));
|
||||
done = TRUE;
|
||||
xf->readindex = xf->freeindex;
|
||||
xfermem_putcmd(xf->fd[XF_READER], XF_CMD_TERMINATE);
|
||||
break;
|
||||
default:
|
||||
fprintf(stderr, "\nEh!? Received unknown command 0x%x in buffer process.\n", cmd);
|
||||
}
|
||||
}
|
||||
}
|
||||
/* Hack! The writer issues XF_CMD_WAKEUP when first adjust
|
||||
* audio settings. We do not want to lower the preload mark
|
||||
* just yet!
|
||||
*/
|
||||
if (xf->justwait || !bytes)
|
||||
continue;
|
||||
preload = outburst; /* set preload to lower mark */
|
||||
if (bytes > xf->size - xf->readindex)
|
||||
bytes = xf->size - xf->readindex;
|
||||
if (bytes > outburst)
|
||||
bytes = outburst;
|
||||
|
||||
debug("write");
|
||||
outbytes = flush_output(ao, (unsigned char*) xf->data + xf->readindex, bytes);
|
||||
|
||||
if(outbytes < bytes)
|
||||
{
|
||||
if(outbytes < 0) outbytes = 0;
|
||||
if(!intflag && !usr1flag) {
|
||||
error1("Ouch ... error while writing audio data: %s", strerror(errno));
|
||||
/*
|
||||
* done==TRUE tells writer process to stop
|
||||
* sending data. There might be some latency
|
||||
* involved when resetting readindex to
|
||||
* freeindex so we might need more than one
|
||||
* cycle to terminate. (The number of cycles
|
||||
* should be finite unless I managed to mess
|
||||
* up something. ;-) [dk]
|
||||
*/
|
||||
done = TRUE;
|
||||
xf->readindex = xf->freeindex;
|
||||
xfermem_putcmd(xf->fd[XF_READER], XF_CMD_TERMINATE);
|
||||
}
|
||||
else debug("buffer interrupted");
|
||||
}
|
||||
bytes = outbytes;
|
||||
|
||||
xf->readindex = (xf->readindex + bytes) % xf->size;
|
||||
if (xf->wakeme[XF_WRITER])
|
||||
xfermem_putcmd(my_fd, XF_CMD_WAKEUP);
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
/* EOF */
|
||||
@@ -1,45 +0,0 @@
|
||||
/*
|
||||
buffer.h: output buffer
|
||||
|
||||
copyright 1999-2006 by the mpg123 project - free software under the terms of the LGPL 2.1
|
||||
see COPYING and AUTHORS files in distribution or http://mpg123.org
|
||||
initially written by Daniel Kobras / Oliver Fromme
|
||||
*/
|
||||
|
||||
/*
|
||||
* Application specific interaction between main and buffer
|
||||
* process. This is much less generic than the functions in
|
||||
* xfermem so I chose to put it in buffer.[hc].
|
||||
* 01/28/99 [dk]
|
||||
*/
|
||||
|
||||
#ifndef _MPG123_BUFFER_H_
|
||||
#define _MPG123_BUFFER_H_
|
||||
|
||||
#ifndef NOXFERMEM
|
||||
void real_buffer_ignore_lowmem(void);
|
||||
void real_buffer_end(int rude);
|
||||
void real_buffer_resync(void);
|
||||
void real_plain_buffer_resync(void);
|
||||
void real_buffer_reset(void);
|
||||
void real_buffer_start(void);
|
||||
void real_buffer_stop(void);
|
||||
/* Hm, that's funny preprocessor weirdness. */
|
||||
#define buffer_start() (param.usebuffer ? real_buffer_start(),0 : 0)
|
||||
#define buffer_stop() (param.usebuffer ? real_buffer_stop(),0 : 0)
|
||||
#define buffer_reset() (param.usebuffer ? real_buffer_reset(),0 : 0)
|
||||
#define buffer_resync() (param.usebuffer ? real_buffer_resync(),0 : 0)
|
||||
#define plain_buffer_resync() (param.usebuffer ? real_plain_buffer_resync(),0 : 0)
|
||||
#define buffer_end(a) (param.usebuffer ? real_buffer_end(a),0 : 0)
|
||||
#define buffer_ignore_lowmem() (param.usebuffer ? real_buffer_ignore_lowmem(),0 : 0)
|
||||
#else
|
||||
#define buffer_start()
|
||||
#define buffer_stop()
|
||||
#define buffer_reset()
|
||||
#define buffer_resync()
|
||||
#define plain_buffer_resync()
|
||||
#define buffer_end()
|
||||
#define buffer_ignore_lowmem()
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -1,273 +0,0 @@
|
||||
/*
|
||||
common: misc stuff... audio flush, status display...
|
||||
|
||||
copyright ?-2008 by the mpg123 project - free software under the terms of the LGPL 2.1
|
||||
see COPYING and AUTHORS files in distribution or http://mpg123.org
|
||||
initially written by Michael Hipp
|
||||
*/
|
||||
|
||||
#include "mpg123app.h"
|
||||
#include <sys/stat.h>
|
||||
#include <fcntl.h>
|
||||
#include "common.h"
|
||||
|
||||
#include "debug.h"
|
||||
|
||||
const char* rva_name[3] = { "off", "mix", "album" };
|
||||
static const char *modes[5] = {"Stereo", "Joint-Stereo", "Dual-Channel", "Single-Channel", "Invalid" };
|
||||
static const char *smodes[5] = { "stereo", "joint-stereo", "dual-channel", "mono", "invalid" };
|
||||
static const char *layers[4] = { "Unknown" , "I", "II", "III" };
|
||||
static const char *versions[4] = {"1.0", "2.0", "2.5", "x.x" };
|
||||
static const int samples_per_frame[4][4] =
|
||||
{
|
||||
{ -1,384,1152,1152 }, /* MPEG 1 */
|
||||
{ -1,384,1152,576 }, /* MPEG 2 */
|
||||
{ -1,384,1152,576 }, /* MPEG 2.5 */
|
||||
{ -1,-1,-1,-1 }, /* Unknown */
|
||||
};
|
||||
|
||||
|
||||
#if (!defined(WIN32) || defined (__CYGWIN__)) && defined(HAVE_SIGNAL_H)
|
||||
void (*catchsignal(int signum, void(*handler)()))()
|
||||
{
|
||||
struct sigaction new_sa;
|
||||
struct sigaction old_sa;
|
||||
|
||||
#ifdef DONT_CATCH_SIGNALS
|
||||
fprintf (stderr, "Not catching any signals.\n");
|
||||
return ((void (*)()) -1);
|
||||
#endif
|
||||
|
||||
new_sa.sa_handler = handler;
|
||||
sigemptyset(&new_sa.sa_mask);
|
||||
new_sa.sa_flags = 0;
|
||||
if (sigaction(signum, &new_sa, &old_sa) == -1)
|
||||
return ((void (*)()) -1);
|
||||
return (old_sa.sa_handler);
|
||||
}
|
||||
#endif
|
||||
|
||||
/* concurring to print_rheader... here for control_generic */
|
||||
const char* remote_header_help = "S <mpeg-version> <layer> <sampling freq> <mode(stereo/mono/...)> <mode_ext> <framesize> <stereo> <copyright> <error_protected> <emphasis> <bitrate> <extension> <vbr(0/1=yes/no)>";
|
||||
void print_remote_header(mpg123_handle *mh)
|
||||
{
|
||||
struct mpg123_frameinfo i;
|
||||
mpg123_info(mh, &i);
|
||||
if(i.mode >= 4 || i.mode < 0) i.mode = 4;
|
||||
if(i.version >= 3 || i.version < 0) i.version = 3;
|
||||
generic_sendmsg("S %s %d %ld %s %d %d %d %d %d %d %d %d %d",
|
||||
versions[i.version],
|
||||
i.layer,
|
||||
i.rate,
|
||||
modes[i.mode],
|
||||
i.mode_ext,
|
||||
i.framesize,
|
||||
i.mode == MPG123_M_MONO ? 1 : 2,
|
||||
i.flags & MPG123_COPYRIGHT ? 1 : 0,
|
||||
i.flags & MPG123_CRC ? 1 : 0,
|
||||
i.emphasis,
|
||||
i.bitrate,
|
||||
i.flags & MPG123_PRIVATE ? 1 : 0,
|
||||
i.vbr);
|
||||
}
|
||||
|
||||
void print_header(mpg123_handle *mh)
|
||||
{
|
||||
struct mpg123_frameinfo i;
|
||||
mpg123_info(mh, &i);
|
||||
if(i.mode > 4 || i.mode < 0) i.mode = 4;
|
||||
if(i.version > 3 || i.version < 0) i.version = 3;
|
||||
if(i.layer > 3 || i.layer < 0) i.layer = 0;
|
||||
fprintf(stderr,"MPEG %s, Layer: %s, Freq: %ld, mode: %s, modext: %d, BPF : %d\n",
|
||||
versions[i.version],
|
||||
layers[i.layer], i.rate,
|
||||
modes[i.mode],i.mode_ext,i.framesize);
|
||||
fprintf(stderr,"Channels: %d, copyright: %s, original: %s, CRC: %s, emphasis: %d.\n",
|
||||
i.mode == MPG123_M_MONO ? 1 : 2,i.flags & MPG123_COPYRIGHT ? "Yes" : "No",
|
||||
i.flags & MPG123_ORIGINAL ? "Yes" : "No", i.flags & MPG123_CRC ? "Yes" : "No",
|
||||
i.emphasis);
|
||||
fprintf(stderr,"Bitrate: ");
|
||||
switch(i.vbr)
|
||||
{
|
||||
case MPG123_CBR:
|
||||
if(i.bitrate) fprintf(stderr, "%d kbit/s", i.bitrate);
|
||||
else fprintf(stderr, "%d kbit/s (free format)", (int)((double)(i.framesize+4)*8*i.rate*0.001/samples_per_frame[i.version][i.layer]+0.5));
|
||||
break;
|
||||
case MPG123_VBR: fprintf(stderr, "VBR"); break;
|
||||
case MPG123_ABR: fprintf(stderr, "%d kbit/s ABR", i.abr_rate); break;
|
||||
default: fprintf(stderr, "???");
|
||||
}
|
||||
fprintf(stderr, " Extension value: %d\n", i.flags & MPG123_PRIVATE ? 1 : 0);
|
||||
}
|
||||
|
||||
void print_header_compact(mpg123_handle *mh)
|
||||
{
|
||||
struct mpg123_frameinfo i;
|
||||
mpg123_info(mh, &i);
|
||||
if(i.mode > 4 || i.mode < 0) i.mode = 4;
|
||||
if(i.version > 3 || i.version < 0) i.version = 3;
|
||||
if(i.layer > 3 || i.layer < 0) i.layer = 0;
|
||||
|
||||
fprintf(stderr,"MPEG %s layer %s, ", versions[i.version], layers[i.layer]);
|
||||
switch(i.vbr)
|
||||
{
|
||||
case MPG123_CBR:
|
||||
if(i.bitrate) fprintf(stderr, "%d kbit/s", i.bitrate);
|
||||
else fprintf(stderr, "%d kbit/s (free format)", (int)((double)i.framesize*8*i.rate*0.001/samples_per_frame[i.version][i.layer]+0.5));
|
||||
break;
|
||||
case MPG123_VBR: fprintf(stderr, "VBR"); break;
|
||||
case MPG123_ABR: fprintf(stderr, "%d kbit/s ABR", i.abr_rate); break;
|
||||
default: fprintf(stderr, "???");
|
||||
}
|
||||
fprintf(stderr,", %ld Hz %s\n", i.rate, smodes[i.mode]);
|
||||
}
|
||||
|
||||
#if 0
|
||||
/* removed the strndup for better portability */
|
||||
/*
|
||||
* Allocate space for a new string containing the first
|
||||
* "num" characters of "src". The resulting string is
|
||||
* always zero-terminated. Returns NULL if malloc fails.
|
||||
*/
|
||||
char *strndup (const char *src, int num)
|
||||
{
|
||||
char *dst;
|
||||
|
||||
if (!(dst = (char *) malloc(num+1)))
|
||||
return (NULL);
|
||||
dst[num] = '\0';
|
||||
return (strncpy(dst, src, num));
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Split "path" into directory and filename components.
|
||||
*
|
||||
* Return value is 0 if no directory was specified (i.e.
|
||||
* "path" does not contain a '/'), OR if the directory
|
||||
* is the same as on the previous call to this function.
|
||||
*
|
||||
* Return value is 1 if a directory was specified AND it
|
||||
* is different from the previous one (if any).
|
||||
*/
|
||||
|
||||
int split_dir_file (const char *path, char **dname, char **fname)
|
||||
{
|
||||
static char *lastdir = NULL;
|
||||
char *slashpos;
|
||||
|
||||
if ((slashpos = strrchr(path, '/'))) {
|
||||
*fname = slashpos + 1;
|
||||
*dname = strdup(path); /* , 1 + slashpos - path); */
|
||||
if(!(*dname)) {
|
||||
perror("failed to allocate memory for dir name");
|
||||
return 0;
|
||||
}
|
||||
(*dname)[1 + slashpos - path] = 0;
|
||||
if (lastdir && !strcmp(lastdir, *dname)) {
|
||||
/*** same as previous directory ***/
|
||||
free (*dname);
|
||||
*dname = lastdir;
|
||||
return 0;
|
||||
}
|
||||
else {
|
||||
/*** different directory ***/
|
||||
if (lastdir)
|
||||
free (lastdir);
|
||||
lastdir = *dname;
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
else {
|
||||
/*** no directory specified ***/
|
||||
if (lastdir) {
|
||||
free (lastdir);
|
||||
lastdir = NULL;
|
||||
};
|
||||
*dname = NULL;
|
||||
*fname = (char *)path;
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
unsigned int roundui(double val)
|
||||
{
|
||||
double base = floor(val);
|
||||
return (unsigned int) ((val-base) < 0.5 ? base : base + 1 );
|
||||
}
|
||||
|
||||
/* Split into mm:ss.xx or hh:mm:ss, depending on value. */
|
||||
static void settle_time(double tim, unsigned long *times, char *sep)
|
||||
{
|
||||
if(tim >= 3600.)
|
||||
{
|
||||
*sep = ':';
|
||||
times[0] = (unsigned long) tim/3600;
|
||||
tim -= times[0]*3600;
|
||||
times[1] = (unsigned long) tim/60;
|
||||
tim -= times[1]*60;
|
||||
times[2] = (unsigned long) tim;
|
||||
}
|
||||
else
|
||||
{
|
||||
*sep = '.';
|
||||
times[0] = (unsigned long) tim/60;
|
||||
times[1] = (unsigned long) tim%60;
|
||||
times[2] = (unsigned long) (tim*100)%100;
|
||||
}
|
||||
}
|
||||
|
||||
void print_stat(mpg123_handle *fr, long offset, long buffsize)
|
||||
{
|
||||
double tim[2];
|
||||
off_t rno, no;
|
||||
double basevol, realvol;
|
||||
char *icy;
|
||||
#ifndef WIN32
|
||||
#ifndef GENERIC
|
||||
/* Only generate new stat line when stderr is ready... don't overfill... */
|
||||
{
|
||||
struct timeval t;
|
||||
fd_set serr;
|
||||
int n,errfd = fileno(stderr);
|
||||
|
||||
t.tv_sec=t.tv_usec=0;
|
||||
|
||||
FD_ZERO(&serr);
|
||||
FD_SET(errfd,&serr);
|
||||
n = select(errfd+1,NULL,&serr,NULL,&t);
|
||||
if(n <= 0) return;
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
if( MPG123_OK == mpg123_position(fr, offset, buffsize, &no, &rno, tim, tim+1)
|
||||
&& MPG123_OK == mpg123_getvolume(fr, &basevol, &realvol, NULL) )
|
||||
{
|
||||
int ti;
|
||||
/* Deal with overly long times. */
|
||||
unsigned long times[2][3];
|
||||
char timesep[2];
|
||||
char sign[2] = {' ', ' '};
|
||||
for(ti=0; ti<2; ++ti)
|
||||
{
|
||||
if(tim[ti] < 0.){ sign[ti] = '-'; tim[ti] = -tim[ti]; }
|
||||
settle_time(tim[ti], times[ti], ×ep[ti]);
|
||||
}
|
||||
fprintf(stderr, "\rFrame# %5"OFF_P" [%5"OFF_P"], Time:%c%02lu:%02u%c%02u%c[%02u:%02u%c%02u], RVA:%6s, Vol: %3u(%3u)",
|
||||
(off_p)no, (off_p)rno,
|
||||
sign[0],
|
||||
times[0][0], times[0][1], timesep[0], times[0][2],
|
||||
sign[1],
|
||||
times[1][0], times[1][1], timesep[1], times[1][2],
|
||||
rva_name[param.rva], roundui(basevol*100), roundui(realvol*100) );
|
||||
if(param.usebuffer) fprintf(stderr,", [%8ld] ",(long)buffsize);
|
||||
}
|
||||
/* Check for changed tags here too? */
|
||||
if( mpg123_meta_check(fr) & MPG123_NEW_ICY && MPG123_OK == mpg123_icy(fr, &icy) )
|
||||
fprintf(stderr, "\nICY-META: %s\n", icy);
|
||||
}
|
||||
|
||||
void clear_stat()
|
||||
{
|
||||
fprintf(stderr, "\r \r");
|
||||
}
|
||||
@@ -1,141 +0,0 @@
|
||||
## Makefile.am: produce Makefile.in from this
|
||||
|
||||
## copyright by the mpg123 project - free software under the terms of the LGPL 2.1
|
||||
## see COPYING and AUTHORS files in distribution or http://mpg123.org
|
||||
## initially written by Nicholas J. Humfrey
|
||||
|
||||
#AM_CFLAGS = @AUDIO_CFLAGS@
|
||||
#AM_LDFLAGS =
|
||||
INCLUDES = -I$(top_srcdir)/src -I$(top_srcdir)/src/libmpg123
|
||||
|
||||
EXTRA_DIST = mpg123.h.in
|
||||
|
||||
EXTRA_PROGRAMS = testcpu
|
||||
testcpu_dependencies = getcpuflags.$(OBJEXT)
|
||||
testcpu_sources = testcpu.c
|
||||
testcpu_LDADD = getcpuflags.$(OBJEXT)
|
||||
|
||||
|
||||
CLEANFILES = *.a
|
||||
|
||||
|
||||
# The library can have different names, depending on largefile setup.
|
||||
# Libtool macros think they're smart. Because of that mpg123.la does not work, it must be libmpg123.la .
|
||||
lib_LTLIBRARIES = libmpg123.la
|
||||
nodist_include_HEADERS = mpg123.h
|
||||
|
||||
libmpg123_la_LDFLAGS = -no-undefined -version-info @LIBMPG123_VERSION@ -export-symbols-regex '^mpg123_'
|
||||
libmpg123_la_LIBADD = @DECODER_LOBJ@ @LFS_LOBJ@
|
||||
libmpg123_la_DEPENDENCIES = @DECODER_LOBJ@ @LFS_LOBJ@
|
||||
|
||||
libmpg123_la_SOURCES = \
|
||||
intsym.h \
|
||||
compat.c \
|
||||
compat.h \
|
||||
mpeghead.h \
|
||||
parse.c \
|
||||
parse.h \
|
||||
frame.c \
|
||||
format.c \
|
||||
frame.h \
|
||||
reader.h \
|
||||
debug.h \
|
||||
decode.h \
|
||||
sample.h \
|
||||
dct64.c \
|
||||
synth.h \
|
||||
synth_mono.h \
|
||||
synth_ntom.h \
|
||||
synth_8bit.h \
|
||||
synths.h \
|
||||
equalizer.c \
|
||||
huffman.h \
|
||||
icy.h \
|
||||
icy2utf8.h \
|
||||
id3.h \
|
||||
id3.c \
|
||||
true.h \
|
||||
getbits.h \
|
||||
optimize.h \
|
||||
optimize.c \
|
||||
readers.c \
|
||||
tabinit.c \
|
||||
libmpg123.c \
|
||||
gapless.h \
|
||||
mpg123lib_intern.h \
|
||||
mangle.h \
|
||||
getcpuflags.h \
|
||||
index.h \
|
||||
index.c
|
||||
|
||||
EXTRA_libmpg123_la_SOURCES = \
|
||||
lfs_alias.c \
|
||||
lfs_wrap.c \
|
||||
icy.c \
|
||||
icy2utf8.c \
|
||||
l2tables.h \
|
||||
layer1.c \
|
||||
layer2.c \
|
||||
layer3.c \
|
||||
dither.h \
|
||||
dither.c \
|
||||
feature.c \
|
||||
dct36_3dnowext.S \
|
||||
dct36_3dnow.S \
|
||||
dct64_3dnowext.S \
|
||||
dct64_3dnow.S \
|
||||
dct64_altivec.c \
|
||||
dct64_i386.c \
|
||||
dct64_i486.c \
|
||||
dct64_mmx.S \
|
||||
dct64_sse.S \
|
||||
dct64_sse_float.S \
|
||||
dct64_x86_64.S \
|
||||
dct64_x86_64_float.S \
|
||||
dct64_neon.S \
|
||||
dct64_neon_float.S \
|
||||
synth_3dnowext.S \
|
||||
synth_3dnow.S \
|
||||
synth_altivec.c \
|
||||
synth_i486.c \
|
||||
synth_i586_dither.S \
|
||||
synth_i586.S \
|
||||
synth_mmx.S \
|
||||
synth_sse3d.h \
|
||||
synth_sse.S \
|
||||
synth_sse_float.S \
|
||||
synth_sse_s32.S \
|
||||
synth_sse_accurate.S \
|
||||
synth_stereo_sse_float.S \
|
||||
synth_stereo_sse_s32.S \
|
||||
synth_stereo_sse_accurate.S \
|
||||
synth_x86_64.S \
|
||||
synth_x86_64_float.S \
|
||||
synth_x86_64_s32.S \
|
||||
synth_x86_64_accurate.S \
|
||||
synth_stereo_x86_64.S \
|
||||
synth_stereo_x86_64_float.S \
|
||||
synth_stereo_x86_64_s32.S \
|
||||
synth_stereo_x86_64_accurate.S \
|
||||
synth_arm.S \
|
||||
synth_arm_accurate.S \
|
||||
synth_neon.S \
|
||||
synth_neon_float.S \
|
||||
synth_neon_s32.S \
|
||||
synth_neon_accurate.S \
|
||||
synth_stereo_neon.S \
|
||||
synth_stereo_neon_float.S \
|
||||
synth_stereo_neon_s32.S \
|
||||
synth_stereo_neon_accurate.S \
|
||||
ntom.c \
|
||||
synth.c \
|
||||
synth_8bit.c \
|
||||
synth_real.c \
|
||||
synth_s32.c \
|
||||
equalizer_3dnow.S \
|
||||
tabinit_mmx.S \
|
||||
stringbuf.c \
|
||||
getcpuflags.S \
|
||||
l12_integer_tables.h \
|
||||
l3_integer_tables.h
|
||||
|
||||
@@ -1,922 +0,0 @@
|
||||
# Makefile.in generated by automake 1.12.2 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994-2012 Free Software Foundation, Inc.
|
||||
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
@SET_MAKE@
|
||||
|
||||
|
||||
VPATH = @srcdir@
|
||||
am__make_dryrun = \
|
||||
{ \
|
||||
am__dry=no; \
|
||||
case $$MAKEFLAGS in \
|
||||
*\\[\ \ ]*) \
|
||||
echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
|
||||
| grep '^AM OK$$' >/dev/null || am__dry=yes;; \
|
||||
*) \
|
||||
for am__flg in $$MAKEFLAGS; do \
|
||||
case $$am__flg in \
|
||||
*=*|--*) ;; \
|
||||
*n*) am__dry=yes; break;; \
|
||||
esac; \
|
||||
done;; \
|
||||
esac; \
|
||||
test $$am__dry = yes; \
|
||||
}
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkglibexecdir = $(libexecdir)/@PACKAGE@
|
||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||
install_sh_DATA = $(install_sh) -c -m 644
|
||||
install_sh_PROGRAM = $(install_sh) -c
|
||||
install_sh_SCRIPT = $(install_sh) -c
|
||||
INSTALL_HEADER = $(INSTALL_DATA)
|
||||
transform = $(program_transform_name)
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
build_triplet = @build@
|
||||
host_triplet = @host@
|
||||
EXTRA_PROGRAMS = testcpu$(EXEEXT)
|
||||
subdir = src/libmpg123
|
||||
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
|
||||
$(srcdir)/mpg123.h.in $(top_srcdir)/build/depcomp
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/m4/addrconfig.m4 \
|
||||
$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
|
||||
$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
|
||||
$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
mkinstalldirs = $(install_sh) -d
|
||||
CONFIG_HEADER = $(top_builddir)/src/config.h
|
||||
CONFIG_CLEAN_FILES = mpg123.h
|
||||
CONFIG_CLEAN_VPATH_FILES =
|
||||
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
|
||||
am__vpath_adj = case $$p in \
|
||||
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
|
||||
*) f=$$p;; \
|
||||
esac;
|
||||
am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
|
||||
am__install_max = 40
|
||||
am__nobase_strip_setup = \
|
||||
srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
|
||||
am__nobase_strip = \
|
||||
for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
|
||||
am__nobase_list = $(am__nobase_strip_setup); \
|
||||
for p in $$list; do echo "$$p $$p"; done | \
|
||||
sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
|
||||
$(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
|
||||
if (++n[$$2] == $(am__install_max)) \
|
||||
{ print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
|
||||
END { for (dir in files) print dir, files[dir] }'
|
||||
am__base_list = \
|
||||
sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
|
||||
sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
|
||||
am__uninstall_files_from_dir = { \
|
||||
test -z "$$files" \
|
||||
|| { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
|
||||
|| { echo " ( cd '$$dir' && rm -f" $$files ")"; \
|
||||
$(am__cd) "$$dir" && rm -f $$files; }; \
|
||||
}
|
||||
am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(includedir)"
|
||||
LTLIBRARIES = $(lib_LTLIBRARIES)
|
||||
am_libmpg123_la_OBJECTS = compat.lo parse.lo frame.lo format.lo \
|
||||
dct64.lo equalizer.lo id3.lo optimize.lo readers.lo tabinit.lo \
|
||||
libmpg123.lo index.lo
|
||||
libmpg123_la_OBJECTS = $(am_libmpg123_la_OBJECTS)
|
||||
libmpg123_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
|
||||
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
|
||||
$(libmpg123_la_LDFLAGS) $(LDFLAGS) -o $@
|
||||
testcpu_SOURCES = testcpu.c
|
||||
testcpu_OBJECTS = testcpu.$(OBJEXT)
|
||||
testcpu_DEPENDENCIES = getcpuflags.$(OBJEXT)
|
||||
DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/src
|
||||
depcomp = $(SHELL) $(top_srcdir)/build/depcomp
|
||||
am__depfiles_maybe = depfiles
|
||||
am__mv = mv -f
|
||||
CPPASCOMPILE = $(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
|
||||
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS)
|
||||
LTCPPASCOMPILE = $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
|
||||
--mode=compile $(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
|
||||
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS)
|
||||
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
|
||||
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
||||
LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
|
||||
--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
|
||||
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
||||
CCLD = $(CC)
|
||||
LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
|
||||
--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
|
||||
$(LDFLAGS) -o $@
|
||||
SOURCES = $(libmpg123_la_SOURCES) $(EXTRA_libmpg123_la_SOURCES) \
|
||||
testcpu.c
|
||||
DIST_SOURCES = $(libmpg123_la_SOURCES) $(EXTRA_libmpg123_la_SOURCES) \
|
||||
testcpu.c
|
||||
am__can_run_installinfo = \
|
||||
case $$AM_UPDATE_INFO_DIR in \
|
||||
n|no|NO) false;; \
|
||||
*) (install-info --version) >/dev/null 2>&1;; \
|
||||
esac
|
||||
HEADERS = $(nodist_include_HEADERS)
|
||||
ETAGS = etags
|
||||
CTAGS = ctags
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
ACLOCAL = @ACLOCAL@
|
||||
AIX_CFLAGS = @AIX_CFLAGS@
|
||||
AIX_LDFLAGS = @AIX_LDFLAGS@
|
||||
AIX_LIBS = @AIX_LIBS@
|
||||
ALIB_CFLAGS = @ALIB_CFLAGS@
|
||||
ALIB_LDFLAGS = @ALIB_LDFLAGS@
|
||||
ALIB_LIBS = @ALIB_LIBS@
|
||||
ALSA_CFLAGS = @ALSA_CFLAGS@
|
||||
ALSA_LDFLAGS = @ALSA_LDFLAGS@
|
||||
ALSA_LIBS = @ALSA_LIBS@
|
||||
AMTAR = @AMTAR@
|
||||
API_VERSION = @API_VERSION@
|
||||
AR = @AR@
|
||||
ARTS_CFLAGS = @ARTS_CFLAGS@
|
||||
ARTS_LDFLAGS = @ARTS_LDFLAGS@
|
||||
ARTS_LIBS = @ARTS_LIBS@
|
||||
AS = @AS@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AWK = @AWK@
|
||||
CC = @CC@
|
||||
CCAS = @CCAS@
|
||||
CCASDEPMODE = @CCASDEPMODE@
|
||||
CCASFLAGS = @CCASFLAGS@
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
CFLAGS = @CFLAGS@
|
||||
COREAUDIO_CFLAGS = @COREAUDIO_CFLAGS@
|
||||
COREAUDIO_LDFLAGS = @COREAUDIO_LDFLAGS@
|
||||
COREAUDIO_LIBS = @COREAUDIO_LIBS@
|
||||
CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
DECODER_LOBJ = @DECODER_LOBJ@
|
||||
DECODER_OBJ = @DECODER_OBJ@
|
||||
DEFS = @DEFS@
|
||||
DEPDIR = @DEPDIR@
|
||||
DLLTOOL = @DLLTOOL@
|
||||
DSYMUTIL = @DSYMUTIL@
|
||||
DUMMY_CFLAGS = @DUMMY_CFLAGS@
|
||||
DUMMY_LDFLAGS = @DUMMY_LDFLAGS@
|
||||
DUMMY_LIBS = @DUMMY_LIBS@
|
||||
DUMPBIN = @DUMPBIN@
|
||||
ECHO_C = @ECHO_C@
|
||||
ECHO_N = @ECHO_N@
|
||||
ECHO_T = @ECHO_T@
|
||||
EGREP = @EGREP@
|
||||
ESD_CFLAGS = @ESD_CFLAGS@
|
||||
ESD_LDFLAGS = @ESD_LDFLAGS@
|
||||
ESD_LIBS = @ESD_LIBS@
|
||||
EXEC_LT_LDFLAGS = @EXEC_LT_LDFLAGS@
|
||||
EXEEXT = @EXEEXT@
|
||||
FGREP = @FGREP@
|
||||
GREP = @GREP@
|
||||
HP_CFLAGS = @HP_CFLAGS@
|
||||
HP_LDFLAGS = @HP_LDFLAGS@
|
||||
HP_LIBS = @HP_LIBS@
|
||||
INCLUDE_STDIO_H = @INCLUDE_STDIO_H@
|
||||
INCLUDE_STDLIB_H = @INCLUDE_STDLIB_H@
|
||||
INCLUDE_SYS_TYPE_H = @INCLUDE_SYS_TYPE_H@
|
||||
INSTALL = @INSTALL@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||
JACK_CFLAGS = @JACK_CFLAGS@
|
||||
JACK_LDFLAGS = @JACK_LDFLAGS@
|
||||
JACK_LIBS = @JACK_LIBS@
|
||||
LD = @LD@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LFS_LOBJ = @LFS_LOBJ@
|
||||
LIBMPG123_VERSION = @LIBMPG123_VERSION@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
LIBS = @LIBS@
|
||||
LIBTOOL = @LIBTOOL@
|
||||
LIPO = @LIPO@
|
||||
LN_S = @LN_S@
|
||||
LTLIBOBJS = @LTLIBOBJS@
|
||||
LT_LDFLAGS = @LT_LDFLAGS@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
MANIFEST_TOOL = @MANIFEST_TOOL@
|
||||
MINT_CFLAGS = @MINT_CFLAGS@
|
||||
MINT_LDFLAGS = @MINT_LDFLAGS@
|
||||
MINT_LIBS = @MINT_LIBS@
|
||||
MKDIR_P = @MKDIR_P@
|
||||
MODULE_OBJ = @MODULE_OBJ@
|
||||
NAS_CFLAGS = @NAS_CFLAGS@
|
||||
NAS_LDFLAGS = @NAS_LDFLAGS@
|
||||
NAS_LIBS = @NAS_LIBS@
|
||||
NM = @NM@
|
||||
NMEDIT = @NMEDIT@
|
||||
OBJDUMP = @OBJDUMP@
|
||||
OBJEXT = @OBJEXT@
|
||||
OPENAL_CFLAGS = @OPENAL_CFLAGS@
|
||||
OPENAL_LDFLAGS = @OPENAL_LDFLAGS@
|
||||
OPENAL_LIBS = @OPENAL_LIBS@
|
||||
OS2_CFLAGS = @OS2_CFLAGS@
|
||||
OS2_LDFLAGS = @OS2_LDFLAGS@
|
||||
OS2_LIBS = @OS2_LIBS@
|
||||
OSS_CFLAGS = @OSS_CFLAGS@
|
||||
OSS_LDFLAGS = @OSS_LDFLAGS@
|
||||
OSS_LIBS = @OSS_LIBS@
|
||||
OTOOL = @OTOOL@
|
||||
OTOOL64 = @OTOOL64@
|
||||
OUTPUT_CFLAGS = @OUTPUT_CFLAGS@
|
||||
OUTPUT_LDFLAGS = @OUTPUT_LDFLAGS@
|
||||
OUTPUT_LIBS = @OUTPUT_LIBS@
|
||||
OUTPUT_MOD = @OUTPUT_MOD@
|
||||
OUTPUT_OBJ = @OUTPUT_OBJ@
|
||||
PACKAGE = @PACKAGE@
|
||||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||
PACKAGE_NAME = @PACKAGE_NAME@
|
||||
PACKAGE_STRING = @PACKAGE_STRING@
|
||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||
PACKAGE_URL = @PACKAGE_URL@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
PKG_CONFIG = @PKG_CONFIG@
|
||||
PORTAUDIO_CFLAGS = @PORTAUDIO_CFLAGS@
|
||||
PORTAUDIO_LDFLAGS = @PORTAUDIO_LDFLAGS@
|
||||
PORTAUDIO_LIBS = @PORTAUDIO_LIBS@
|
||||
PULSE_CFLAGS = @PULSE_CFLAGS@
|
||||
PULSE_LDFLAGS = @PULSE_LDFLAGS@
|
||||
PULSE_LIBS = @PULSE_LIBS@
|
||||
QSA_CFLAGS = @QSA_CFLAGS@
|
||||
QSA_LDFLAGS = @QSA_LDFLAGS@
|
||||
QSA_LIBS = @QSA_LIBS@
|
||||
RANLIB = @RANLIB@
|
||||
SDL_CFLAGS = @SDL_CFLAGS@
|
||||
SDL_LDFLAGS = @SDL_LDFLAGS@
|
||||
SDL_LIBS = @SDL_LIBS@
|
||||
SED = @SED@
|
||||
SET_MAKE = @SET_MAKE@
|
||||
SGI_CFLAGS = @SGI_CFLAGS@
|
||||
SGI_LDFLAGS = @SGI_LDFLAGS@
|
||||
SGI_LIBS = @SGI_LIBS@
|
||||
SHELL = @SHELL@
|
||||
SNDIO_CFLAGS = @SNDIO_CFLAGS@
|
||||
SNDIO_LDFLAGS = @SNDIO_LDFLAGS@
|
||||
SNDIO_LIBS = @SNDIO_LIBS@
|
||||
STRIP = @STRIP@
|
||||
SUN_CFLAGS = @SUN_CFLAGS@
|
||||
SUN_LDFLAGS = @SUN_LDFLAGS@
|
||||
SUN_LIBS = @SUN_LIBS@
|
||||
VERSION = @VERSION@
|
||||
WIN32_CFLAGS = @WIN32_CFLAGS@
|
||||
WIN32_LDFLAGS = @WIN32_LDFLAGS@
|
||||
WIN32_LIBS = @WIN32_LIBS@
|
||||
abs_builddir = @abs_builddir@
|
||||
abs_srcdir = @abs_srcdir@
|
||||
abs_top_builddir = @abs_top_builddir@
|
||||
abs_top_srcdir = @abs_top_srcdir@
|
||||
ac_ct_AR = @ac_ct_AR@
|
||||
ac_ct_CC = @ac_ct_CC@
|
||||
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
|
||||
am__include = @am__include@
|
||||
am__leading_dot = @am__leading_dot@
|
||||
am__quote = @am__quote@
|
||||
am__tar = @am__tar@
|
||||
am__untar = @am__untar@
|
||||
bindir = @bindir@
|
||||
build = @build@
|
||||
build_alias = @build_alias@
|
||||
build_cpu = @build_cpu@
|
||||
build_os = @build_os@
|
||||
build_vendor = @build_vendor@
|
||||
builddir = @builddir@
|
||||
datadir = @datadir@
|
||||
datarootdir = @datarootdir@
|
||||
docdir = @docdir@
|
||||
dvidir = @dvidir@
|
||||
exec_prefix = @exec_prefix@
|
||||
host = @host@
|
||||
host_alias = @host_alias@
|
||||
host_cpu = @host_cpu@
|
||||
host_os = @host_os@
|
||||
host_vendor = @host_vendor@
|
||||
htmldir = @htmldir@
|
||||
includedir = @includedir@
|
||||
infodir = @infodir@
|
||||
install_sh = @install_sh@
|
||||
libdir = @libdir@
|
||||
libexecdir = @libexecdir@
|
||||
localedir = @localedir@
|
||||
localstatedir = @localstatedir@
|
||||
mandir = @mandir@
|
||||
mkdir_p = @mkdir_p@
|
||||
oldincludedir = @oldincludedir@
|
||||
pdfdir = @pdfdir@
|
||||
prefix = @prefix@
|
||||
program_transform_name = @program_transform_name@
|
||||
psdir = @psdir@
|
||||
sbindir = @sbindir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
srcdir = @srcdir@
|
||||
sysconfdir = @sysconfdir@
|
||||
target_alias = @target_alias@
|
||||
top_build_prefix = @top_build_prefix@
|
||||
top_builddir = @top_builddir@
|
||||
top_srcdir = @top_srcdir@
|
||||
|
||||
#AM_CFLAGS = @AUDIO_CFLAGS@
|
||||
#AM_LDFLAGS =
|
||||
INCLUDES = -I$(top_srcdir)/src -I$(top_srcdir)/src/libmpg123
|
||||
EXTRA_DIST = mpg123.h.in
|
||||
testcpu_dependencies = getcpuflags.$(OBJEXT)
|
||||
testcpu_sources = testcpu.c
|
||||
testcpu_LDADD = getcpuflags.$(OBJEXT)
|
||||
CLEANFILES = *.a
|
||||
|
||||
# The library can have different names, depending on largefile setup.
|
||||
# Libtool macros think they're smart. Because of that mpg123.la does not work, it must be libmpg123.la .
|
||||
lib_LTLIBRARIES = libmpg123.la
|
||||
nodist_include_HEADERS = mpg123.h
|
||||
libmpg123_la_LDFLAGS = -no-undefined -version-info @LIBMPG123_VERSION@ -export-symbols-regex '^mpg123_'
|
||||
libmpg123_la_LIBADD = @DECODER_LOBJ@ @LFS_LOBJ@
|
||||
libmpg123_la_DEPENDENCIES = @DECODER_LOBJ@ @LFS_LOBJ@
|
||||
libmpg123_la_SOURCES = \
|
||||
intsym.h \
|
||||
compat.c \
|
||||
compat.h \
|
||||
mpeghead.h \
|
||||
parse.c \
|
||||
parse.h \
|
||||
frame.c \
|
||||
format.c \
|
||||
frame.h \
|
||||
reader.h \
|
||||
debug.h \
|
||||
decode.h \
|
||||
sample.h \
|
||||
dct64.c \
|
||||
synth.h \
|
||||
synth_mono.h \
|
||||
synth_ntom.h \
|
||||
synth_8bit.h \
|
||||
synths.h \
|
||||
equalizer.c \
|
||||
huffman.h \
|
||||
icy.h \
|
||||
icy2utf8.h \
|
||||
id3.h \
|
||||
id3.c \
|
||||
true.h \
|
||||
getbits.h \
|
||||
optimize.h \
|
||||
optimize.c \
|
||||
readers.c \
|
||||
tabinit.c \
|
||||
libmpg123.c \
|
||||
gapless.h \
|
||||
mpg123lib_intern.h \
|
||||
mangle.h \
|
||||
getcpuflags.h \
|
||||
index.h \
|
||||
index.c
|
||||
|
||||
EXTRA_libmpg123_la_SOURCES = \
|
||||
lfs_alias.c \
|
||||
lfs_wrap.c \
|
||||
icy.c \
|
||||
icy2utf8.c \
|
||||
l2tables.h \
|
||||
layer1.c \
|
||||
layer2.c \
|
||||
layer3.c \
|
||||
dither.h \
|
||||
dither.c \
|
||||
feature.c \
|
||||
dct36_3dnowext.S \
|
||||
dct36_3dnow.S \
|
||||
dct64_3dnowext.S \
|
||||
dct64_3dnow.S \
|
||||
dct64_altivec.c \
|
||||
dct64_i386.c \
|
||||
dct64_i486.c \
|
||||
dct64_mmx.S \
|
||||
dct64_sse.S \
|
||||
dct64_sse_float.S \
|
||||
dct64_x86_64.S \
|
||||
dct64_x86_64_float.S \
|
||||
dct64_neon.S \
|
||||
dct64_neon_float.S \
|
||||
synth_3dnowext.S \
|
||||
synth_3dnow.S \
|
||||
synth_altivec.c \
|
||||
synth_i486.c \
|
||||
synth_i586_dither.S \
|
||||
synth_i586.S \
|
||||
synth_mmx.S \
|
||||
synth_sse3d.h \
|
||||
synth_sse.S \
|
||||
synth_sse_float.S \
|
||||
synth_sse_s32.S \
|
||||
synth_sse_accurate.S \
|
||||
synth_stereo_sse_float.S \
|
||||
synth_stereo_sse_s32.S \
|
||||
synth_stereo_sse_accurate.S \
|
||||
synth_x86_64.S \
|
||||
synth_x86_64_float.S \
|
||||
synth_x86_64_s32.S \
|
||||
synth_x86_64_accurate.S \
|
||||
synth_stereo_x86_64.S \
|
||||
synth_stereo_x86_64_float.S \
|
||||
synth_stereo_x86_64_s32.S \
|
||||
synth_stereo_x86_64_accurate.S \
|
||||
synth_arm.S \
|
||||
synth_arm_accurate.S \
|
||||
synth_neon.S \
|
||||
synth_neon_float.S \
|
||||
synth_neon_s32.S \
|
||||
synth_neon_accurate.S \
|
||||
synth_stereo_neon.S \
|
||||
synth_stereo_neon_float.S \
|
||||
synth_stereo_neon_s32.S \
|
||||
synth_stereo_neon_accurate.S \
|
||||
ntom.c \
|
||||
synth.c \
|
||||
synth_8bit.c \
|
||||
synth_real.c \
|
||||
synth_s32.c \
|
||||
equalizer_3dnow.S \
|
||||
tabinit_mmx.S \
|
||||
stringbuf.c \
|
||||
getcpuflags.S \
|
||||
l12_integer_tables.h \
|
||||
l3_integer_tables.h
|
||||
|
||||
all: all-am
|
||||
|
||||
.SUFFIXES:
|
||||
.SUFFIXES: .S .c .lo .o .obj
|
||||
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
|
||||
@for dep in $?; do \
|
||||
case '$(am__configure_deps)' in \
|
||||
*$$dep*) \
|
||||
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
|
||||
&& { if test -f $@; then exit 0; else break; fi; }; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
done; \
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/libmpg123/Makefile'; \
|
||||
$(am__cd) $(top_srcdir) && \
|
||||
$(AUTOMAKE) --gnu src/libmpg123/Makefile
|
||||
.PRECIOUS: Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||
*) \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
|
||||
esac;
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
|
||||
$(top_srcdir)/configure: $(am__configure_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(am__aclocal_m4_deps):
|
||||
mpg123.h: $(top_builddir)/config.status $(srcdir)/mpg123.h.in
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
|
||||
install-libLTLIBRARIES: $(lib_LTLIBRARIES)
|
||||
@$(NORMAL_INSTALL)
|
||||
@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
|
||||
list2=; for p in $$list; do \
|
||||
if test -f $$p; then \
|
||||
list2="$$list2 $$p"; \
|
||||
else :; fi; \
|
||||
done; \
|
||||
test -z "$$list2" || { \
|
||||
echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \
|
||||
$(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \
|
||||
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \
|
||||
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \
|
||||
}
|
||||
|
||||
uninstall-libLTLIBRARIES:
|
||||
@$(NORMAL_UNINSTALL)
|
||||
@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
|
||||
for p in $$list; do \
|
||||
$(am__strip_dir) \
|
||||
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \
|
||||
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \
|
||||
done
|
||||
|
||||
clean-libLTLIBRARIES:
|
||||
-test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
|
||||
@list='$(lib_LTLIBRARIES)'; \
|
||||
locs=`for p in $$list; do echo $$p; done | \
|
||||
sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
|
||||
sort -u`; \
|
||||
test -z "$$locs" || { \
|
||||
echo rm -f $${locs}; \
|
||||
rm -f $${locs}; \
|
||||
}
|
||||
libmpg123.la: $(libmpg123_la_OBJECTS) $(libmpg123_la_DEPENDENCIES) $(EXTRA_libmpg123_la_DEPENDENCIES)
|
||||
$(libmpg123_la_LINK) -rpath $(libdir) $(libmpg123_la_OBJECTS) $(libmpg123_la_LIBADD) $(LIBS)
|
||||
testcpu$(EXEEXT): $(testcpu_OBJECTS) $(testcpu_DEPENDENCIES) $(EXTRA_testcpu_DEPENDENCIES)
|
||||
@rm -f testcpu$(EXEEXT)
|
||||
$(LINK) $(testcpu_OBJECTS) $(testcpu_LDADD) $(LIBS)
|
||||
|
||||
mostlyclean-compile:
|
||||
-rm -f *.$(OBJEXT)
|
||||
|
||||
distclean-compile:
|
||||
-rm -f *.tab.c
|
||||
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/compat.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dct36_3dnow.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dct36_3dnowext.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dct64.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dct64_3dnow.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dct64_3dnowext.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dct64_altivec.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dct64_i386.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dct64_i486.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dct64_mmx.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dct64_neon.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dct64_neon_float.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dct64_sse.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dct64_sse_float.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dct64_x86_64.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dct64_x86_64_float.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dither.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/equalizer.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/equalizer_3dnow.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/feature.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/format.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/frame.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getcpuflags.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/icy.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/icy2utf8.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/id3.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/index.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/layer1.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/layer2.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/layer3.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lfs_alias.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lfs_wrap.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmpg123.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ntom.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/optimize.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/parse.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/readers.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stringbuf.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/synth.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/synth_3dnow.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/synth_3dnowext.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/synth_8bit.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/synth_altivec.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/synth_arm.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/synth_arm_accurate.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/synth_i486.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/synth_i586.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/synth_i586_dither.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/synth_mmx.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/synth_neon.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/synth_neon_accurate.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/synth_neon_float.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/synth_neon_s32.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/synth_real.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/synth_s32.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/synth_sse.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/synth_sse_accurate.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/synth_sse_float.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/synth_sse_s32.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/synth_stereo_neon.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/synth_stereo_neon_accurate.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/synth_stereo_neon_float.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/synth_stereo_neon_s32.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/synth_stereo_sse_accurate.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/synth_stereo_sse_float.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/synth_stereo_sse_s32.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/synth_stereo_x86_64.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/synth_stereo_x86_64_accurate.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/synth_stereo_x86_64_float.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/synth_stereo_x86_64_s32.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/synth_x86_64.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/synth_x86_64_accurate.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/synth_x86_64_float.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/synth_x86_64_s32.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tabinit.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tabinit_mmx.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testcpu.Po@am__quote@
|
||||
|
||||
.S.o:
|
||||
@am__fastdepCCAS_TRUE@ $(CPPASCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
|
||||
@am__fastdepCCAS_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
||||
@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCCAS_FALSE@ $(CPPASCOMPILE) -c -o $@ $<
|
||||
|
||||
.S.obj:
|
||||
@am__fastdepCCAS_TRUE@ $(CPPASCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
|
||||
@am__fastdepCCAS_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
||||
@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCCAS_FALSE@ $(CPPASCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
|
||||
|
||||
.S.lo:
|
||||
@am__fastdepCCAS_TRUE@ $(LTCPPASCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
|
||||
@am__fastdepCCAS_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCCAS_FALSE@ $(LTCPPASCOMPILE) -c -o $@ $<
|
||||
|
||||
.c.o:
|
||||
@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
|
||||
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(COMPILE) -c $<
|
||||
|
||||
.c.obj:
|
||||
@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
|
||||
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
|
||||
|
||||
.c.lo:
|
||||
@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
|
||||
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
|
||||
|
||||
mostlyclean-libtool:
|
||||
-rm -f *.lo
|
||||
|
||||
clean-libtool:
|
||||
-rm -rf .libs _libs
|
||||
install-nodist_includeHEADERS: $(nodist_include_HEADERS)
|
||||
@$(NORMAL_INSTALL)
|
||||
@list='$(nodist_include_HEADERS)'; test -n "$(includedir)" || list=; \
|
||||
if test -n "$$list"; then \
|
||||
echo " $(MKDIR_P) '$(DESTDIR)$(includedir)'"; \
|
||||
$(MKDIR_P) "$(DESTDIR)$(includedir)" || exit 1; \
|
||||
fi; \
|
||||
for p in $$list; do \
|
||||
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
|
||||
echo "$$d$$p"; \
|
||||
done | $(am__base_list) | \
|
||||
while read files; do \
|
||||
echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(includedir)'"; \
|
||||
$(INSTALL_HEADER) $$files "$(DESTDIR)$(includedir)" || exit $$?; \
|
||||
done
|
||||
|
||||
uninstall-nodist_includeHEADERS:
|
||||
@$(NORMAL_UNINSTALL)
|
||||
@list='$(nodist_include_HEADERS)'; test -n "$(includedir)" || list=; \
|
||||
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
|
||||
dir='$(DESTDIR)$(includedir)'; $(am__uninstall_files_from_dir)
|
||||
|
||||
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||
mkid -fID $$unique
|
||||
tags: TAGS
|
||||
|
||||
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
set x; \
|
||||
here=`pwd`; \
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||
shift; \
|
||||
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
|
||||
test -n "$$unique" || unique=$$empty_fix; \
|
||||
if test $$# -gt 0; then \
|
||||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
"$$@" $$unique; \
|
||||
else \
|
||||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
$$unique; \
|
||||
fi; \
|
||||
fi
|
||||
ctags: CTAGS
|
||||
CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||
test -z "$(CTAGS_ARGS)$$unique" \
|
||||
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||
$$unique
|
||||
|
||||
GTAGS:
|
||||
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||
&& $(am__cd) $(top_srcdir) \
|
||||
&& gtags -i $(GTAGS_ARGS) "$$here"
|
||||
|
||||
cscopelist: $(HEADERS) $(SOURCES) $(LISP)
|
||||
list='$(SOURCES) $(HEADERS) $(LISP)'; \
|
||||
case "$(srcdir)" in \
|
||||
[\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
|
||||
*) sdir=$(subdir)/$(srcdir) ;; \
|
||||
esac; \
|
||||
for i in $$list; do \
|
||||
if test -f "$$i"; then \
|
||||
echo "$(subdir)/$$i"; \
|
||||
else \
|
||||
echo "$$sdir/$$i"; \
|
||||
fi; \
|
||||
done >> $(top_builddir)/cscope.files
|
||||
|
||||
distclean-tags:
|
||||
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
list='$(DISTFILES)'; \
|
||||
dist_files=`for file in $$list; do echo $$file; done | \
|
||||
sed -e "s|^$$srcdirstrip/||;t" \
|
||||
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
|
||||
case $$dist_files in \
|
||||
*/*) $(MKDIR_P) `echo "$$dist_files" | \
|
||||
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
|
||||
sort -u` ;; \
|
||||
esac; \
|
||||
for file in $$dist_files; do \
|
||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||
if test -d $$d/$$file; then \
|
||||
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||
if test -d "$(distdir)/$$file"; then \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
|
||||
else \
|
||||
test -f "$(distdir)/$$file" \
|
||||
|| cp -p $$d/$$file "$(distdir)/$$file" \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
check-am: all-am
|
||||
check: check-am
|
||||
all-am: Makefile $(LTLIBRARIES) $(HEADERS)
|
||||
installdirs:
|
||||
for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(includedir)"; do \
|
||||
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
|
||||
done
|
||||
install: install-am
|
||||
install-exec: install-exec-am
|
||||
install-data: install-data-am
|
||||
uninstall: uninstall-am
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
|
||||
installcheck: installcheck-am
|
||||
install-strip:
|
||||
if test -z '$(STRIP)'; then \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
install; \
|
||||
else \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
|
||||
fi
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
|
||||
|
||||
distclean-generic:
|
||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
clean: clean-am
|
||||
|
||||
clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \
|
||||
mostlyclean-am
|
||||
|
||||
distclean: distclean-am
|
||||
-rm -rf ./$(DEPDIR)
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-compile distclean-generic \
|
||||
distclean-tags
|
||||
|
||||
dvi: dvi-am
|
||||
|
||||
dvi-am:
|
||||
|
||||
html: html-am
|
||||
|
||||
html-am:
|
||||
|
||||
info: info-am
|
||||
|
||||
info-am:
|
||||
|
||||
install-data-am: install-nodist_includeHEADERS
|
||||
|
||||
install-dvi: install-dvi-am
|
||||
|
||||
install-dvi-am:
|
||||
|
||||
install-exec-am: install-libLTLIBRARIES
|
||||
|
||||
install-html: install-html-am
|
||||
|
||||
install-html-am:
|
||||
|
||||
install-info: install-info-am
|
||||
|
||||
install-info-am:
|
||||
|
||||
install-man:
|
||||
|
||||
install-pdf: install-pdf-am
|
||||
|
||||
install-pdf-am:
|
||||
|
||||
install-ps: install-ps-am
|
||||
|
||||
install-ps-am:
|
||||
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-am
|
||||
-rm -rf ./$(DEPDIR)
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
mostlyclean: mostlyclean-am
|
||||
|
||||
mostlyclean-am: mostlyclean-compile mostlyclean-generic \
|
||||
mostlyclean-libtool
|
||||
|
||||
pdf: pdf-am
|
||||
|
||||
pdf-am:
|
||||
|
||||
ps: ps-am
|
||||
|
||||
ps-am:
|
||||
|
||||
uninstall-am: uninstall-libLTLIBRARIES uninstall-nodist_includeHEADERS
|
||||
|
||||
.MAKE: install-am install-strip
|
||||
|
||||
.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
|
||||
clean-libLTLIBRARIES clean-libtool cscopelist ctags distclean \
|
||||
distclean-compile distclean-generic distclean-libtool \
|
||||
distclean-tags distdir dvi dvi-am html html-am info info-am \
|
||||
install install-am install-data install-data-am install-dvi \
|
||||
install-dvi-am install-exec install-exec-am install-html \
|
||||
install-html-am install-info install-info-am \
|
||||
install-libLTLIBRARIES install-man \
|
||||
install-nodist_includeHEADERS install-pdf install-pdf-am \
|
||||
install-ps install-ps-am install-strip installcheck \
|
||||
installcheck-am installdirs maintainer-clean \
|
||||
maintainer-clean-generic mostlyclean mostlyclean-compile \
|
||||
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
|
||||
tags uninstall uninstall-am uninstall-libLTLIBRARIES \
|
||||
uninstall-nodist_includeHEADERS
|
||||
|
||||
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
||||
@@ -1,138 +0,0 @@
|
||||
/*
|
||||
compat: Some compatibility functions.
|
||||
|
||||
The mpg123 code is determined to keep it's legacy. A legacy of old, old UNIX.
|
||||
So anything possibly somewhat advanced should be considered to be put here, with proper #ifdef;-)
|
||||
|
||||
copyright 2007-8 by the mpg123 project - free software under the terms of the LGPL 2.1
|
||||
see COPYING and AUTHORS files in distribution or http://mpg123.org
|
||||
initially written by Thomas Orgis, Windows Unicode stuff by JonY.
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
#include "compat.h"
|
||||
|
||||
#ifdef _MSC_VER
|
||||
#include <io.h>
|
||||
#else
|
||||
#include <fcntl.h>
|
||||
#endif
|
||||
#include <sys/stat.h>
|
||||
|
||||
#ifdef WANT_WIN32_UNICODE
|
||||
#include <wchar.h>
|
||||
#include <windows.h>
|
||||
#include <winnls.h>
|
||||
#endif
|
||||
|
||||
#include "debug.h"
|
||||
|
||||
/* A safe realloc also for very old systems where realloc(NULL, size) returns NULL. */
|
||||
void *safe_realloc(void *ptr, size_t size)
|
||||
{
|
||||
if(ptr == NULL) return malloc(size);
|
||||
else return realloc(ptr, size);
|
||||
}
|
||||
|
||||
#ifndef HAVE_STRERROR
|
||||
const char *strerror(int errnum)
|
||||
{
|
||||
extern int sys_nerr;
|
||||
extern char *sys_errlist[];
|
||||
|
||||
return (errnum < sys_nerr) ? sys_errlist[errnum] : "";
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifndef HAVE_STRDUP
|
||||
char *strdup(const char *src)
|
||||
{
|
||||
char *dest;
|
||||
|
||||
if (!(dest = (char *) malloc(strlen(src)+1)))
|
||||
return NULL;
|
||||
else
|
||||
return strcpy(dest, src);
|
||||
}
|
||||
#endif
|
||||
|
||||
int compat_open(const char *filename, int flags)
|
||||
{
|
||||
int ret;
|
||||
#if defined (WANT_WIN32_UNICODE)
|
||||
wchar_t *frag = NULL;
|
||||
|
||||
ret = win32_utf8_wide(filename, &frag, NULL);
|
||||
if ((frag == NULL) || (ret == 0)) goto fallback; /* Fallback to plain open when ucs-2 conversion fails */
|
||||
|
||||
ret = _wopen(frag, flags); /*Try _wopen */
|
||||
if (ret != -1 ) goto open_ok; /* msdn says -1 means failure */
|
||||
|
||||
fallback:
|
||||
#endif
|
||||
|
||||
#if (defined(WIN32) && !defined (__CYGWIN__)) /* MSDN says POSIX function is deprecated beginning in Visual C++ 2005 */
|
||||
ret = _open(filename, flags); /* Try plain old _open(), if it fails, do nothing */
|
||||
#else
|
||||
/* On UNIX, we always add a default permission mask in case flags|O_CREAT. */
|
||||
ret = open(filename, flags, S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH);
|
||||
#endif
|
||||
|
||||
#if defined (WANT_WIN32_UNICODE)
|
||||
open_ok:
|
||||
free ((void *)frag); /* Freeing a NULL should be OK */
|
||||
#endif
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
int compat_close(int infd)
|
||||
{
|
||||
#if (defined(WIN32) && !defined (__CYGWIN__)) /* MSDN says POSIX function is deprecated beginning in Visual C++ 2005 */
|
||||
return _close(infd);
|
||||
#else
|
||||
return close(infd);
|
||||
#endif
|
||||
}
|
||||
|
||||
/* Windows Unicode stuff */
|
||||
|
||||
#ifdef WANT_WIN32_UNICODE
|
||||
int win32_wide_utf8(const wchar_t * const wptr, char **mbptr, size_t * buflen)
|
||||
{
|
||||
size_t len;
|
||||
char *buf;
|
||||
int ret = 0;
|
||||
|
||||
len = WideCharToMultiByte(CP_UTF8, 0, wptr, -1, NULL, 0, NULL, NULL); /* Get utf-8 string length */
|
||||
buf = calloc(len + 1, sizeof (char)); /* Can we assume sizeof char always = 1? */
|
||||
|
||||
if(!buf) len = 0;
|
||||
else {
|
||||
if (len != 0) ret = WideCharToMultiByte(CP_UTF8, 0, wptr, -1, buf, len, NULL, NULL); /*Do actual conversion*/
|
||||
buf[len] = '0'; /* Must terminate */
|
||||
}
|
||||
*mbptr = buf; /* Set string pointer to allocated buffer */
|
||||
if(buflen != NULL) *buflen = (len) * sizeof (char); /* Give length of allocated memory if needed. */
|
||||
return ret;
|
||||
}
|
||||
|
||||
int win32_utf8_wide(const char *const mbptr, wchar_t **wptr, size_t *buflen)
|
||||
{
|
||||
size_t len;
|
||||
wchar_t *buf;
|
||||
int ret = 0;
|
||||
|
||||
len = MultiByteToWideChar(CP_UTF8, MB_ERR_INVALID_CHARS, mbptr, -1, NULL, 0); /* Get converted size */
|
||||
buf = calloc(len + 1, sizeof (wchar_t)); /* Allocate memory accordingly */
|
||||
|
||||
if(!buf) len = 0;
|
||||
else {
|
||||
if (len != 0) ret = MultiByteToWideChar (CP_UTF8, MB_ERR_INVALID_CHARS, mbptr, -1, buf, len); /* Do conversion */
|
||||
buf[len] = L'0'; /* Must terminate */
|
||||
}
|
||||
*wptr = buf; /* Set string pointer to allocated buffer */
|
||||
if (buflen != NULL) *buflen = len * sizeof (wchar_t); /* Give length of allocated memory if needed. */
|
||||
return ret; /* Number of characters written */
|
||||
}
|
||||
#endif
|
||||
@@ -1,171 +0,0 @@
|
||||
/*
|
||||
debug.h:
|
||||
if DEBUG defined: debugging macro fprintf wrappers
|
||||
else: macros defined to do nothing
|
||||
That saves typing #ifdef DEBUG all the time and still preserves
|
||||
lean code without debugging.
|
||||
|
||||
public domain (or LGPL / GPL, if you like that more;-)
|
||||
generated by debugdef.pl, what was
|
||||
trivially written by Thomas Orgis <thomas@orgis.org>
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
|
||||
/*
|
||||
I could do that with variadic macros available:
|
||||
#define sdebug(me, s) fprintf(stderr, "[location] " s "\n")
|
||||
#define debug(me, s, ...) fprintf(stderr, "[location] " s "}n", __VA_ARGS__)
|
||||
|
||||
Variadic macros are a C99 feature...
|
||||
Now just predefining stuff non-variadic for up to 15 arguments.
|
||||
It's cumbersome to have them all with different names, though...
|
||||
*/
|
||||
|
||||
#ifdef DEBUG
|
||||
#include <stdio.h>
|
||||
#define debug(s) fprintf(stderr, "[" __FILE__ ":%i] debug: " s "\n", __LINE__)
|
||||
#define debug1(s, a) fprintf(stderr, "[" __FILE__ ":%i] debug: " s "\n", __LINE__, a)
|
||||
#define debug2(s, a, b) fprintf(stderr, "[" __FILE__ ":%i] debug: " s "\n", __LINE__, a, b)
|
||||
#define debug3(s, a, b, c) fprintf(stderr, "[" __FILE__ ":%i] debug: " s "\n", __LINE__, a, b, c)
|
||||
#define debug4(s, a, b, c, d) fprintf(stderr, "[" __FILE__ ":%i] debug: " s "\n", __LINE__, a, b, c, d)
|
||||
#define debug5(s, a, b, c, d, e) fprintf(stderr, "[" __FILE__ ":%i] debug: " s "\n", __LINE__, a, b, c, d, e)
|
||||
#define debug6(s, a, b, c, d, e, f) fprintf(stderr, "[" __FILE__ ":%i] debug: " s "\n", __LINE__, a, b, c, d, e, f)
|
||||
#define debug7(s, a, b, c, d, e, f, g) fprintf(stderr, "[" __FILE__ ":%i] debug: " s "\n", __LINE__, a, b, c, d, e, f, g)
|
||||
#define debug8(s, a, b, c, d, e, f, g, h) fprintf(stderr, "[" __FILE__ ":%i] debug: " s "\n", __LINE__, a, b, c, d, e, f, g, h)
|
||||
#define debug9(s, a, b, c, d, e, f, g, h, i) fprintf(stderr, "[" __FILE__ ":%i] debug: " s "\n", __LINE__, a, b, c, d, e, f, g, h, i)
|
||||
#define debug10(s, a, b, c, d, e, f, g, h, i, j) fprintf(stderr, "[" __FILE__ ":%i] debug: " s "\n", __LINE__, a, b, c, d, e, f, g, h, i, j)
|
||||
#define debug11(s, a, b, c, d, e, f, g, h, i, j, k) fprintf(stderr, "[" __FILE__ ":%i] debug: " s "\n", __LINE__, a, b, c, d, e, f, g, h, i, j, k)
|
||||
#define debug12(s, a, b, c, d, e, f, g, h, i, j, k, l) fprintf(stderr, "[" __FILE__ ":%i] debug: " s "\n", __LINE__, a, b, c, d, e, f, g, h, i, j, k, l)
|
||||
#define debug13(s, a, b, c, d, e, f, g, h, i, j, k, l, m) fprintf(stderr, "[" __FILE__ ":%i] debug: " s "\n", __LINE__, a, b, c, d, e, f, g, h, i, j, k, l, m)
|
||||
#define debug14(s, a, b, c, d, e, f, g, h, i, j, k, l, m, n) fprintf(stderr, "[" __FILE__ ":%i] debug: " s "\n", __LINE__, a, b, c, d, e, f, g, h, i, j, k, l, m, n)
|
||||
#define debug15(s, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) fprintf(stderr, "[" __FILE__ ":%i] debug: " s "\n", __LINE__, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)
|
||||
#else
|
||||
#define debug(s)
|
||||
#define debug1(s, a)
|
||||
#define debug2(s, a, b)
|
||||
#define debug3(s, a, b, c)
|
||||
#define debug4(s, a, b, c, d)
|
||||
#define debug5(s, a, b, c, d, e)
|
||||
#define debug6(s, a, b, c, d, e, f)
|
||||
#define debug7(s, a, b, c, d, e, f, g)
|
||||
#define debug8(s, a, b, c, d, e, f, g, h)
|
||||
#define debug9(s, a, b, c, d, e, f, g, h, i)
|
||||
#define debug10(s, a, b, c, d, e, f, g, h, i, j)
|
||||
#define debug11(s, a, b, c, d, e, f, g, h, i, j, k)
|
||||
#define debug12(s, a, b, c, d, e, f, g, h, i, j, k, l)
|
||||
#define debug13(s, a, b, c, d, e, f, g, h, i, j, k, l, m)
|
||||
#define debug14(s, a, b, c, d, e, f, g, h, i, j, k, l, m, n)
|
||||
#define debug15(s, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)
|
||||
#endif
|
||||
|
||||
/* warning macros also here... */
|
||||
#ifndef NO_WARNING
|
||||
#define warning(s) fprintf(stderr, "[" __FILE__ ":%i] warning: " s "\n", __LINE__)
|
||||
#define warning1(s, a) fprintf(stderr, "[" __FILE__ ":%i] warning: " s "\n", __LINE__, a)
|
||||
#define warning2(s, a, b) fprintf(stderr, "[" __FILE__ ":%i] warning: " s "\n", __LINE__, a, b)
|
||||
#define warning3(s, a, b, c) fprintf(stderr, "[" __FILE__ ":%i] warning: " s "\n", __LINE__, a, b, c)
|
||||
#define warning4(s, a, b, c, d) fprintf(stderr, "[" __FILE__ ":%i] warning: " s "\n", __LINE__, a, b, c, d)
|
||||
#define warning5(s, a, b, c, d, e) fprintf(stderr, "[" __FILE__ ":%i] warning: " s "\n", __LINE__, a, b, c, d, e)
|
||||
#define warning6(s, a, b, c, d, e, f) fprintf(stderr, "[" __FILE__ ":%i] warning: " s "\n", __LINE__, a, b, c, d, e, f)
|
||||
#define warning7(s, a, b, c, d, e, f, g) fprintf(stderr, "[" __FILE__ ":%i] warning: " s "\n", __LINE__, a, b, c, d, e, f, g)
|
||||
#define warning8(s, a, b, c, d, e, f, g, h) fprintf(stderr, "[" __FILE__ ":%i] warning: " s "\n", __LINE__, a, b, c, d, e, f, g, h)
|
||||
#define warning9(s, a, b, c, d, e, f, g, h, i) fprintf(stderr, "[" __FILE__ ":%i] warning: " s "\n", __LINE__, a, b, c, d, e, f, g, h, i)
|
||||
#define warning10(s, a, b, c, d, e, f, g, h, i, j) fprintf(stderr, "[" __FILE__ ":%i] warning: " s "\n", __LINE__, a, b, c, d, e, f, g, h, i, j)
|
||||
#define warning11(s, a, b, c, d, e, f, g, h, i, j, k) fprintf(stderr, "[" __FILE__ ":%i] warning: " s "\n", __LINE__, a, b, c, d, e, f, g, h, i, j, k)
|
||||
#define warning12(s, a, b, c, d, e, f, g, h, i, j, k, l) fprintf(stderr, "[" __FILE__ ":%i] warning: " s "\n", __LINE__, a, b, c, d, e, f, g, h, i, j, k, l)
|
||||
#define warning13(s, a, b, c, d, e, f, g, h, i, j, k, l, m) fprintf(stderr, "[" __FILE__ ":%i] warning: " s "\n", __LINE__, a, b, c, d, e, f, g, h, i, j, k, l, m)
|
||||
#define warning14(s, a, b, c, d, e, f, g, h, i, j, k, l, m, n) fprintf(stderr, "[" __FILE__ ":%i] warning: " s "\n", __LINE__, a, b, c, d, e, f, g, h, i, j, k, l, m, n)
|
||||
#define warning15(s, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) fprintf(stderr, "[" __FILE__ ":%i] warning: " s "\n", __LINE__, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)
|
||||
#else
|
||||
#define warning(s)
|
||||
#define warning1(s, a)
|
||||
#define warning2(s, a, b)
|
||||
#define warning3(s, a, b, c)
|
||||
#define warning4(s, a, b, c, d)
|
||||
#define warning5(s, a, b, c, d, e)
|
||||
#define warning6(s, a, b, c, d, e, f)
|
||||
#define warning7(s, a, b, c, d, e, f, g)
|
||||
#define warning8(s, a, b, c, d, e, f, g, h)
|
||||
#define warning9(s, a, b, c, d, e, f, g, h, i)
|
||||
#define warning10(s, a, b, c, d, e, f, g, h, i, j)
|
||||
#define warning11(s, a, b, c, d, e, f, g, h, i, j, k)
|
||||
#define warning12(s, a, b, c, d, e, f, g, h, i, j, k, l)
|
||||
#define warning13(s, a, b, c, d, e, f, g, h, i, j, k, l, m)
|
||||
#define warning14(s, a, b, c, d, e, f, g, h, i, j, k, l, m, n)
|
||||
#define warning15(s, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)
|
||||
#endif
|
||||
|
||||
/* error macros also here... */
|
||||
#ifndef NO_ERRORMSG
|
||||
#define error(s) fprintf(stderr, "[" __FILE__ ":%i] error: " s "\n", __LINE__)
|
||||
#define error1(s, a) fprintf(stderr, "[" __FILE__ ":%i] error: " s "\n", __LINE__, a)
|
||||
#define error2(s, a, b) fprintf(stderr, "[" __FILE__ ":%i] error: " s "\n", __LINE__, a, b)
|
||||
#define error3(s, a, b, c) fprintf(stderr, "[" __FILE__ ":%i] error: " s "\n", __LINE__, a, b, c)
|
||||
#define error4(s, a, b, c, d) fprintf(stderr, "[" __FILE__ ":%i] error: " s "\n", __LINE__, a, b, c, d)
|
||||
#define error5(s, a, b, c, d, e) fprintf(stderr, "[" __FILE__ ":%i] error: " s "\n", __LINE__, a, b, c, d, e)
|
||||
#define error6(s, a, b, c, d, e, f) fprintf(stderr, "[" __FILE__ ":%i] error: " s "\n", __LINE__, a, b, c, d, e, f)
|
||||
#define error7(s, a, b, c, d, e, f, g) fprintf(stderr, "[" __FILE__ ":%i] error: " s "\n", __LINE__, a, b, c, d, e, f, g)
|
||||
#define error8(s, a, b, c, d, e, f, g, h) fprintf(stderr, "[" __FILE__ ":%i] error: " s "\n", __LINE__, a, b, c, d, e, f, g, h)
|
||||
#define error9(s, a, b, c, d, e, f, g, h, i) fprintf(stderr, "[" __FILE__ ":%i] error: " s "\n", __LINE__, a, b, c, d, e, f, g, h, i)
|
||||
#define error10(s, a, b, c, d, e, f, g, h, i, j) fprintf(stderr, "[" __FILE__ ":%i] error: " s "\n", __LINE__, a, b, c, d, e, f, g, h, i, j)
|
||||
#define error11(s, a, b, c, d, e, f, g, h, i, j, k) fprintf(stderr, "[" __FILE__ ":%i] error: " s "\n", __LINE__, a, b, c, d, e, f, g, h, i, j, k)
|
||||
#define error12(s, a, b, c, d, e, f, g, h, i, j, k, l) fprintf(stderr, "[" __FILE__ ":%i] error: " s "\n", __LINE__, a, b, c, d, e, f, g, h, i, j, k, l)
|
||||
#define error13(s, a, b, c, d, e, f, g, h, i, j, k, l, m) fprintf(stderr, "[" __FILE__ ":%i] error: " s "\n", __LINE__, a, b, c, d, e, f, g, h, i, j, k, l, m)
|
||||
#define error14(s, a, b, c, d, e, f, g, h, i, j, k, l, m, n) fprintf(stderr, "[" __FILE__ ":%i] error: " s "\n", __LINE__, a, b, c, d, e, f, g, h, i, j, k, l, m, n)
|
||||
#define error15(s, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) fprintf(stderr, "[" __FILE__ ":%i] error: " s "\n", __LINE__, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)
|
||||
#else
|
||||
#define error(s)
|
||||
#define error1(s, a)
|
||||
#define error2(s, a, b)
|
||||
#define error3(s, a, b, c)
|
||||
#define error4(s, a, b, c, d)
|
||||
#define error5(s, a, b, c, d, e)
|
||||
#define error6(s, a, b, c, d, e, f)
|
||||
#define error7(s, a, b, c, d, e, f, g)
|
||||
#define error8(s, a, b, c, d, e, f, g, h)
|
||||
#define error9(s, a, b, c, d, e, f, g, h, i)
|
||||
#define error10(s, a, b, c, d, e, f, g, h, i, j)
|
||||
#define error11(s, a, b, c, d, e, f, g, h, i, j, k)
|
||||
#define error12(s, a, b, c, d, e, f, g, h, i, j, k, l)
|
||||
#define error13(s, a, b, c, d, e, f, g, h, i, j, k, l, m)
|
||||
#define error14(s, a, b, c, d, e, f, g, h, i, j, k, l, m, n)
|
||||
#define error15(s, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)
|
||||
#endif
|
||||
|
||||
/* ereturn macros also here... */
|
||||
#ifndef NO_ERETURN
|
||||
#define ereturn(rv, s) do{ fprintf(stderr, "[" __FILE__ ":%i] ereturn: " s "\n", __LINE__); return rv; }while(0)
|
||||
#define ereturn1(rv, s, a) do{ fprintf(stderr, "[" __FILE__ ":%i] ereturn: " s "\n", __LINE__, a); return rv; }while(0)
|
||||
#define ereturn2(rv, s, a, b) do{ fprintf(stderr, "[" __FILE__ ":%i] ereturn: " s "\n", __LINE__, a, b); return rv; }while(0)
|
||||
#define ereturn3(rv, s, a, b, c) do{ fprintf(stderr, "[" __FILE__ ":%i] ereturn: " s "\n", __LINE__, a, b, c); return rv; }while(0)
|
||||
#define ereturn4(rv, s, a, b, c, d) do{ fprintf(stderr, "[" __FILE__ ":%i] ereturn: " s "\n", __LINE__, a, b, c, d); return rv; }while(0)
|
||||
#define ereturn5(rv, s, a, b, c, d, e) do{ fprintf(stderr, "[" __FILE__ ":%i] ereturn: " s "\n", __LINE__, a, b, c, d, e); return rv; }while(0)
|
||||
#define ereturn6(rv, s, a, b, c, d, e, f) do{ fprintf(stderr, "[" __FILE__ ":%i] ereturn: " s "\n", __LINE__, a, b, c, d, e, f); return rv; }while(0)
|
||||
#define ereturn7(rv, s, a, b, c, d, e, f, g) do{ fprintf(stderr, "[" __FILE__ ":%i] ereturn: " s "\n", __LINE__, a, b, c, d, e, f, g); return rv; }while(0)
|
||||
#define ereturn8(rv, s, a, b, c, d, e, f, g, h) do{ fprintf(stderr, "[" __FILE__ ":%i] ereturn: " s "\n", __LINE__, a, b, c, d, e, f, g, h); return rv; }while(0)
|
||||
#define ereturn9(rv, s, a, b, c, d, e, f, g, h, i) do{ fprintf(stderr, "[" __FILE__ ":%i] ereturn: " s "\n", __LINE__, a, b, c, d, e, f, g, h, i); return rv; }while(0)
|
||||
#define ereturn10(rv, s, a, b, c, d, e, f, g, h, i, j) do{ fprintf(stderr, "[" __FILE__ ":%i] ereturn: " s "\n", __LINE__, a, b, c, d, e, f, g, h, i, j); return rv; }while(0)
|
||||
#define ereturn11(rv, s, a, b, c, d, e, f, g, h, i, j, k) do{ fprintf(stderr, "[" __FILE__ ":%i] ereturn: " s "\n", __LINE__, a, b, c, d, e, f, g, h, i, j, k); return rv; }while(0)
|
||||
#define ereturn12(rv, s, a, b, c, d, e, f, g, h, i, j, k, l) do{ fprintf(stderr, "[" __FILE__ ":%i] ereturn: " s "\n", __LINE__, a, b, c, d, e, f, g, h, i, j, k, l); return rv; }while(0)
|
||||
#define ereturn13(rv, s, a, b, c, d, e, f, g, h, i, j, k, l, m) do{ fprintf(stderr, "[" __FILE__ ":%i] ereturn: " s "\n", __LINE__, a, b, c, d, e, f, g, h, i, j, k, l, m); return rv; }while(0)
|
||||
#define ereturn14(rv, s, a, b, c, d, e, f, g, h, i, j, k, l, m, n) do{ fprintf(stderr, "[" __FILE__ ":%i] ereturn: " s "\n", __LINE__, a, b, c, d, e, f, g, h, i, j, k, l, m, n); return rv; }while(0)
|
||||
#define ereturn15(rv, s, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) do{ fprintf(stderr, "[" __FILE__ ":%i] ereturn: " s "\n", __LINE__, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o); return rv; }while(0)
|
||||
#else
|
||||
#define ereturn(rv, s) return rv
|
||||
#define ereturn1(rv, s, a) return rv
|
||||
#define ereturn2(rv, s, a, b) return rv
|
||||
#define ereturn3(rv, s, a, b, c) return rv
|
||||
#define ereturn4(rv, s, a, b, c, d) return rv
|
||||
#define ereturn5(rv, s, a, b, c, d, e) return rv
|
||||
#define ereturn6(rv, s, a, b, c, d, e, f) return rv
|
||||
#define ereturn7(rv, s, a, b, c, d, e, f, g) return rv
|
||||
#define ereturn8(rv, s, a, b, c, d, e, f, g, h) return rv
|
||||
#define ereturn9(rv, s, a, b, c, d, e, f, g, h, i) return rv
|
||||
#define ereturn10(rv, s, a, b, c, d, e, f, g, h, i, j) return rv
|
||||
#define ereturn11(rv, s, a, b, c, d, e, f, g, h, i, j, k) return rv
|
||||
#define ereturn12(rv, s, a, b, c, d, e, f, g, h, i, j, k, l) return rv
|
||||
#define ereturn13(rv, s, a, b, c, d, e, f, g, h, i, j, k, l, m) return rv
|
||||
#define ereturn14(rv, s, a, b, c, d, e, f, g, h, i, j, k, l, m, n) return rv
|
||||
#define ereturn15(rv, s, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) return rv
|
||||
#endif
|
||||
@@ -1,252 +0,0 @@
|
||||
/*
|
||||
lfs_alias: Aliases to the small/native API functions with the size of long int as suffix.
|
||||
|
||||
copyright 2010 by the mpg123 project - free software under the terms of the LGPL 2.1
|
||||
see COPYING and AUTHORS files in distribution or http://mpg123.org
|
||||
initially written by Thomas Orgis
|
||||
|
||||
Use case: Client code on Linux/x86-64 that defines _FILE_OFFSET_BITS to 64, which is the only choice on that platform anyway. It should be no-op, but prompts the platform-agnostic header of mpg123 to define API calls with the corresponding suffix.
|
||||
This file provides the names for this case. It's cruft, but glibc does it, too -- so people rely on it.
|
||||
Oh, and it also caters for the lunatics that define _FILE_OFFSET_BITS=32 on 32 bit platforms.
|
||||
|
||||
There is also the strange case that the mpg123 build itself is configured for unnecessary _FILE_OFFSET_BITS == LFS_ALIAS_BITS =^ sizeof(long). In that case, the "native" function will have the suffix and the alias shall be provided without the suffix.
|
||||
|
||||
So, two basic cases:
|
||||
1. mpg123_bla_32 alias for mpg123_bla
|
||||
2. mpg123_bla alias for mpg123_bla_32
|
||||
Confusing, I know. It sucks.
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
|
||||
/* Hack for Solaris: Some system headers included from compat.h might force _FILE_OFFSET_BITS. Need to follow that here. */
|
||||
#include "compat.h"
|
||||
|
||||
#ifndef LFS_ALIAS_BITS
|
||||
#error "I need the count of alias bits here."
|
||||
#endif
|
||||
|
||||
#define MACROCAT_REALLY(a, b) a ## b
|
||||
#define MACROCAT(a, b) MACROCAT_REALLY(a, b)
|
||||
|
||||
/* This is wicked switchery: Decide which way the aliases are facing. */
|
||||
|
||||
#if _FILE_OFFSET_BITS+0 == LFS_ALIAS_BITS
|
||||
|
||||
/* The native functions are actually _with_ suffix, so let the mpg123 header use large file hackery to define the correct interfaces. */
|
||||
#include "mpg123.h"
|
||||
/* Don't forget to undef the function symbols before usage... */
|
||||
|
||||
/* The native functions have suffix, the aliases not. */
|
||||
#define NATIVE_SUFFIX MACROCAT(_, _FILE_OFFSET_BITS)
|
||||
#define NATIVE_NAME(func) MACROCAT(func, NATIVE_SUFFIX)
|
||||
#define ALIAS_NAME(func) func
|
||||
|
||||
#else
|
||||
|
||||
/* Native functions are without suffix... */
|
||||
#define MPG123_NO_LARGENAME
|
||||
#include "mpg123.h"
|
||||
|
||||
/* The alias functions have suffix, the native ones not. */
|
||||
#define ALIAS_SUFFIX MACROCAT(_, LFS_ALIAS_BITS)
|
||||
#define ALIAS_NAME(func) MACROCAT(func, ALIAS_SUFFIX)
|
||||
#define NATIVE_NAME(func) func
|
||||
|
||||
#endif
|
||||
|
||||
/* Now get the rest of the infrastructure on speed, namely attribute_align_arg, to stay safe. */
|
||||
#include "mpg123lib_intern.h"
|
||||
|
||||
/*
|
||||
Extract the list of functions we need wrappers for, pregenerating the wrappers for simple cases (inline script for nedit):
|
||||
perl -ne '
|
||||
if(/^\s*EXPORT\s+(\S+)\s+(mpg123_\S+)\((.*)\);\s*$/)
|
||||
{
|
||||
my $type = $1;
|
||||
my $name = $2;
|
||||
my $args = $3;
|
||||
next unless ($type =~ /off_t/ or $args =~ /off_t/ or ($name =~ /open/ and $name ne mpg123_open_feed));
|
||||
$type =~ s/off_t/long/g;
|
||||
my @nargs = ();
|
||||
$args =~ s/off_t/long/g;
|
||||
foreach my $a (split(/,/, $args))
|
||||
{
|
||||
$a =~ s/^.*\s\**([a-z_]+)$/$1/;
|
||||
push(@nargs, $a);
|
||||
}
|
||||
my $nargs = join(", ", @nargs);
|
||||
$nargs = "Human: figure me out." if($nargs =~ /\(/);
|
||||
print <<EOT
|
||||
|
||||
##ifdef $name
|
||||
##undef $name
|
||||
##endif
|
||||
$type attribute_align_arg ALIAS_NAME($name)($args)
|
||||
{
|
||||
return NATIVE_NAME($name)($nargs);
|
||||
}
|
||||
EOT
|
||||
|
||||
}' < mpg123.h.in
|
||||
*/
|
||||
|
||||
#ifdef mpg123_open
|
||||
#undef mpg123_open
|
||||
#endif
|
||||
int attribute_align_arg ALIAS_NAME(mpg123_open)(mpg123_handle *mh, const char *path)
|
||||
{
|
||||
return NATIVE_NAME(mpg123_open)(mh, path);
|
||||
}
|
||||
|
||||
#ifdef mpg123_open_fd
|
||||
#undef mpg123_open_fd
|
||||
#endif
|
||||
int attribute_align_arg ALIAS_NAME(mpg123_open_fd)(mpg123_handle *mh, int fd)
|
||||
{
|
||||
return NATIVE_NAME(mpg123_open_fd)(mh, fd);
|
||||
}
|
||||
|
||||
#ifdef mpg123_open_handle
|
||||
#undef mpg123_open_handle
|
||||
#endif
|
||||
int attribute_align_arg ALIAS_NAME(mpg123_open_handle)(mpg123_handle *mh, void *iohandle)
|
||||
{
|
||||
return NATIVE_NAME(mpg123_open_handle)(mh, iohandle);
|
||||
}
|
||||
|
||||
#ifdef mpg123_decode_frame
|
||||
#undef mpg123_decode_frame
|
||||
#endif
|
||||
int attribute_align_arg ALIAS_NAME(mpg123_decode_frame)(mpg123_handle *mh, long *num, unsigned char **audio, size_t *bytes)
|
||||
{
|
||||
return NATIVE_NAME(mpg123_decode_frame)(mh, num, audio, bytes);
|
||||
}
|
||||
|
||||
#ifdef mpg123_framebyframe_decode
|
||||
#undef mpg123_framebyframe_decode
|
||||
#endif
|
||||
int attribute_align_arg ALIAS_NAME(mpg123_framebyframe_decode)(mpg123_handle *mh, long *num, unsigned char **audio, size_t *bytes)
|
||||
{
|
||||
return NATIVE_NAME(mpg123_framebyframe_decode)(mh, num, audio, bytes);
|
||||
}
|
||||
|
||||
#ifdef mpg123_framepos
|
||||
#undef mpg123_framepos
|
||||
#endif
|
||||
long attribute_align_arg ALIAS_NAME(mpg123_framepos)(mpg123_handle *mh)
|
||||
{
|
||||
return NATIVE_NAME(mpg123_framepos)(mh);
|
||||
}
|
||||
|
||||
#ifdef mpg123_tell
|
||||
#undef mpg123_tell
|
||||
#endif
|
||||
long attribute_align_arg ALIAS_NAME(mpg123_tell)(mpg123_handle *mh)
|
||||
{
|
||||
return NATIVE_NAME(mpg123_tell)(mh);
|
||||
}
|
||||
|
||||
#ifdef mpg123_tellframe
|
||||
#undef mpg123_tellframe
|
||||
#endif
|
||||
long attribute_align_arg ALIAS_NAME(mpg123_tellframe)(mpg123_handle *mh)
|
||||
{
|
||||
return NATIVE_NAME(mpg123_tellframe)(mh);
|
||||
}
|
||||
|
||||
#ifdef mpg123_tell_stream
|
||||
#undef mpg123_tell_stream
|
||||
#endif
|
||||
long attribute_align_arg ALIAS_NAME(mpg123_tell_stream)(mpg123_handle *mh)
|
||||
{
|
||||
return NATIVE_NAME(mpg123_tell_stream)(mh);
|
||||
}
|
||||
|
||||
#ifdef mpg123_seek
|
||||
#undef mpg123_seek
|
||||
#endif
|
||||
long attribute_align_arg ALIAS_NAME(mpg123_seek)(mpg123_handle *mh, long sampleoff, int whence)
|
||||
{
|
||||
return NATIVE_NAME(mpg123_seek)(mh, sampleoff, whence);
|
||||
}
|
||||
|
||||
#ifdef mpg123_feedseek
|
||||
#undef mpg123_feedseek
|
||||
#endif
|
||||
long attribute_align_arg ALIAS_NAME(mpg123_feedseek)(mpg123_handle *mh, long sampleoff, int whence, long *input_offset)
|
||||
{
|
||||
return NATIVE_NAME(mpg123_feedseek)(mh, sampleoff, whence, input_offset);
|
||||
}
|
||||
|
||||
#ifdef mpg123_seek_frame
|
||||
#undef mpg123_seek_frame
|
||||
#endif
|
||||
long attribute_align_arg ALIAS_NAME(mpg123_seek_frame)(mpg123_handle *mh, long frameoff, int whence)
|
||||
{
|
||||
return NATIVE_NAME(mpg123_seek_frame)(mh, frameoff, whence);
|
||||
}
|
||||
|
||||
#ifdef mpg123_timeframe
|
||||
#undef mpg123_timeframe
|
||||
#endif
|
||||
long attribute_align_arg ALIAS_NAME(mpg123_timeframe)(mpg123_handle *mh, double sec)
|
||||
{
|
||||
return NATIVE_NAME(mpg123_timeframe)(mh, sec);
|
||||
}
|
||||
|
||||
#ifdef mpg123_index
|
||||
#undef mpg123_index
|
||||
#endif
|
||||
int attribute_align_arg ALIAS_NAME(mpg123_index)(mpg123_handle *mh, long **offsets, long *step, size_t *fill)
|
||||
{
|
||||
return NATIVE_NAME(mpg123_index)(mh, offsets, step, fill);
|
||||
}
|
||||
|
||||
#ifdef mpg123_set_index
|
||||
#undef mpg123_set_index
|
||||
#endif
|
||||
int attribute_align_arg ALIAS_NAME(mpg123_set_index)(mpg123_handle *mh, long *offsets, long step, size_t fill)
|
||||
{
|
||||
return NATIVE_NAME(mpg123_set_index)(mh, offsets, step, fill);
|
||||
}
|
||||
|
||||
#ifdef mpg123_position
|
||||
#undef mpg123_position
|
||||
#endif
|
||||
int attribute_align_arg ALIAS_NAME(mpg123_position)( mpg123_handle *mh, long frame_offset, long buffered_bytes, long *current_frame, long *frames_left, double *current_seconds, double *seconds_left)
|
||||
{
|
||||
return NATIVE_NAME(mpg123_position)(mh, frame_offset, buffered_bytes, current_frame, frames_left, current_seconds, seconds_left);
|
||||
}
|
||||
|
||||
#ifdef mpg123_length
|
||||
#undef mpg123_length
|
||||
#endif
|
||||
long attribute_align_arg ALIAS_NAME(mpg123_length)(mpg123_handle *mh)
|
||||
{
|
||||
return NATIVE_NAME(mpg123_length)(mh);
|
||||
}
|
||||
|
||||
#ifdef mpg123_set_filesize
|
||||
#undef mpg123_set_filesize
|
||||
#endif
|
||||
int attribute_align_arg ALIAS_NAME(mpg123_set_filesize)(mpg123_handle *mh, long size)
|
||||
{
|
||||
return NATIVE_NAME(mpg123_set_filesize)(mh, size);
|
||||
}
|
||||
|
||||
#ifdef mpg123_replace_reader
|
||||
#undef mpg123_replace_reader
|
||||
#endif
|
||||
int attribute_align_arg ALIAS_NAME(mpg123_replace_reader)(mpg123_handle *mh, ssize_t (*r_read) (int, void *, size_t), long (*r_lseek)(int, long, int))
|
||||
{
|
||||
return NATIVE_NAME(mpg123_replace_reader)(mh, r_read, r_lseek);
|
||||
}
|
||||
|
||||
#ifdef mpg123_replace_reader_handle
|
||||
#undef mpg123_replace_reader_handle
|
||||
#endif
|
||||
int attribute_align_arg ALIAS_NAME(mpg123_replace_reader_handle)(mpg123_handle *mh, ssize_t (*r_read) (void *, void *, size_t), long (*r_lseek)(void *, long, int), void (*cleanup)(void*))
|
||||
{
|
||||
return NATIVE_NAME(mpg123_replace_reader_handle)(mh, r_read, r_lseek, cleanup);
|
||||
}
|
||||
@@ -1,91 +0,0 @@
|
||||
/*
|
||||
mangle: support defines for preprocessed assembler
|
||||
|
||||
copyright 1995-2007 by the mpg123 project - free software under the terms of the LGPL 2.1
|
||||
see COPYING and AUTHORS files in distribution or http://mpg123.org
|
||||
|
||||
This once started out as mangle.h from MPlayer, but you can't really call it derived work... the small part that in principle stems from MPlayer also being not very special (once you decided to use such a header at all, it's quite obvious material).
|
||||
*/
|
||||
|
||||
#ifndef __MANGLE_H
|
||||
#define __MANGLE_H
|
||||
|
||||
#include "config.h"
|
||||
#include "intsym.h"
|
||||
|
||||
#ifdef CCALIGN
|
||||
#define MOVUAPS movaps
|
||||
#else
|
||||
#define MOVUAPS movups
|
||||
#endif
|
||||
|
||||
/*
|
||||
ALIGNX: align to X bytes
|
||||
This differs per compiler/platform in taking the byte count or an exponent for base 2.
|
||||
A way out is balign, if the assembler supports it (gas extension).
|
||||
*/
|
||||
|
||||
#ifdef ASMALIGN_BALIGN
|
||||
|
||||
#define ALIGN4 .balign 4
|
||||
#define ALIGN8 .balign 8
|
||||
#define ALIGN16 .balign 16
|
||||
#define ALIGN32 .balign 32
|
||||
|
||||
#else
|
||||
|
||||
#ifdef ASMALIGN_EXP
|
||||
#define ALIGN4 .align 2
|
||||
#define ALIGN8 .align 3
|
||||
#define ALIGN16 .align 4
|
||||
#define ALIGN32 .align 5
|
||||
#else
|
||||
#ifdef ASMALIGN_BYTE
|
||||
#define ALIGN4 .align 4
|
||||
#define ALIGN8 .align 8
|
||||
#define ALIGN16 .align 16
|
||||
#define ALIGN32 .align 32
|
||||
#else
|
||||
#error "Dunno how assembler alignment works. Please specify."
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
#define MANGLE_MACROCAT_REALLY(a, b) a ## b
|
||||
#define MANGLE_MACROCAT(a, b) MANGLE_MACROCAT_REALLY(a, b)
|
||||
/* Feel free to add more to the list, eg. a.out IMO */
|
||||
#if defined(__USER_LABEL_PREFIX__)
|
||||
#define ASM_NAME(a) MANGLE_MACROCAT(__USER_LABEL_PREFIX__,a)
|
||||
#define ASM_VALUE(a) MANGLE_MACROCAT($,ASM_NAME(a))
|
||||
#elif defined(__CYGWIN__) || defined(_WIN32) && !defined (_WIN64) || defined(__OS2__) || \
|
||||
(defined(__OpenBSD__) && !defined(__ELF__)) || defined(__APPLE__)
|
||||
#define ASM_NAME(a) MANGLE_MACROCAT(_,a)
|
||||
#define ASM_VALUE(a) MANGLE_MACROCAT($_,a)
|
||||
#else
|
||||
#define ASM_NAME(a) a
|
||||
#define ASM_VALUE(a) MANGLE_MACROCAT($,a)
|
||||
#endif
|
||||
|
||||
#if defined(__CYGWIN__) || defined(__MINGW32__) || defined(__APPLE__)
|
||||
#define COMM(a,b,c) .comm a,b
|
||||
#else
|
||||
#define COMM(a,b,c) .comm a,b,c
|
||||
#endif
|
||||
/* more hacks for macosx; no .bss ... */
|
||||
#ifdef __APPLE__
|
||||
#define BSS .data
|
||||
#else
|
||||
#define BSS .bss
|
||||
#endif
|
||||
|
||||
/* Mark non-executable stack.
|
||||
It's mainly for GNU on Linux... who else does (not) like this? */
|
||||
#if !defined(__SUNPRO_C) && defined(__linux__) && defined(__ELF__)
|
||||
#define NONEXEC_STACK .section .note.GNU-stack,"",%progbits
|
||||
#else
|
||||
#define NONEXEC_STACK
|
||||
#endif
|
||||
|
||||
#endif /* !__MANGLE_H */
|
||||
|
||||
@@ -1,6 +0,0 @@
|
||||
#include "mangle.h"
|
||||
#define MPL_DCT64 ASM_NAME(dct64_3dnowext)
|
||||
#define SYNTH_NAME ASM_NAME(synth_1to1_3dnowext_asm)
|
||||
#include "synth_sse3d.h"
|
||||
|
||||
NONEXEC_STACK
|
||||
@@ -1,6 +0,0 @@
|
||||
#include "mangle.h"
|
||||
#define MPL_DCT64 ASM_NAME(dct64_sse)
|
||||
#define SYNTH_NAME ASM_NAME(synth_1to1_sse_asm)
|
||||
#include "synth_sse3d.h"
|
||||
|
||||
NONEXEC_STACK
|
||||
@@ -1,308 +0,0 @@
|
||||
/*
|
||||
module.c: modular code loader
|
||||
|
||||
copyright 1995-2011 by the mpg123 project - free software under the terms of the LGPL 2.1
|
||||
see COPYING and AUTHORS files in distribution or http://mpg123.org
|
||||
initially written by Nicholas J Humfrey
|
||||
*/
|
||||
|
||||
#include <dirent.h>
|
||||
#include <sys/stat.h>
|
||||
#include <unistd.h>
|
||||
#include <errno.h>
|
||||
#include <ctype.h>
|
||||
#include <ltdl.h>
|
||||
|
||||
#include "mpg123app.h"
|
||||
#include "debug.h"
|
||||
|
||||
#ifndef HAVE_LTDL
|
||||
#error Cannot build without LTDL library support
|
||||
#endif
|
||||
|
||||
#define MODULE_SYMBOL_PREFIX "mpg123_"
|
||||
#define MODULE_SYMBOL_SUFFIX "_module_info"
|
||||
|
||||
/* It's nasty to hardcode that here...
|
||||
also it does need hacking around libtool's hardcoded .la paths:
|
||||
When the .la file is in the same dir as .so file, you need libdir='.' in there. */
|
||||
static const char* modulesearch[] =
|
||||
{
|
||||
"../lib/mpg123"
|
||||
,"plugins"
|
||||
};
|
||||
|
||||
static char *get_the_cwd(); /* further down... */
|
||||
static char *get_module_dir()
|
||||
{
|
||||
/* Either PKGLIBDIR is accessible right away or we search for some possible plugin dirs relative to binary path. */
|
||||
DIR* dir = NULL;
|
||||
char *moddir = NULL;
|
||||
const char *defaultdir;
|
||||
/* Compiled-in default module dir or environment variable MPG123_MODDIR. */
|
||||
defaultdir = getenv("MPG123_MODDIR");
|
||||
if(defaultdir == NULL)
|
||||
defaultdir=PKGLIBDIR;
|
||||
|
||||
dir = opendir(defaultdir);
|
||||
if(dir != NULL)
|
||||
{
|
||||
size_t l = strlen(defaultdir);
|
||||
|
||||
if(param.verbose > 1) fprintf(stderr, "Using default module dir: %s\n", defaultdir);
|
||||
moddir = malloc(l+1);
|
||||
if(moddir != NULL)
|
||||
{
|
||||
strcpy(moddir, defaultdir);
|
||||
moddir[l] = 0;
|
||||
}
|
||||
closedir(dir);
|
||||
}
|
||||
else /* Search relative to binary. */
|
||||
{
|
||||
size_t i;
|
||||
for(i=0; i<sizeof(modulesearch)/sizeof(char*); ++i)
|
||||
{
|
||||
const char *testpath = modulesearch[i];
|
||||
size_t l;
|
||||
if(binpath != NULL) l = strlen(binpath) + strlen(testpath) + 1;
|
||||
else l = strlen(testpath);
|
||||
|
||||
moddir = malloc(l+1);
|
||||
if(moddir != NULL)
|
||||
{
|
||||
if(binpath==NULL) /* a copy of testpath, when there is no prefix */
|
||||
snprintf(moddir, l+1, "%s", testpath);
|
||||
else
|
||||
snprintf(moddir, l+1, "%s/%s", binpath, testpath);
|
||||
|
||||
moddir[l] = 0;
|
||||
if(param.verbose > 1) fprintf(stderr, "Looking for module dir: %s\n", moddir);
|
||||
|
||||
dir = opendir(moddir);
|
||||
if(dir != NULL)
|
||||
{
|
||||
closedir(dir);
|
||||
break; /* found it! */
|
||||
}
|
||||
else{ free(moddir); moddir=NULL; }
|
||||
}
|
||||
}
|
||||
}
|
||||
if(param.verbose > 1) fprintf(stderr, "Module dir: %s\n", moddir != NULL ? moddir : "<nil>");
|
||||
return moddir;
|
||||
}
|
||||
|
||||
/* Open a module */
|
||||
mpg123_module_t*
|
||||
open_module( const char* type, const char* name )
|
||||
{
|
||||
lt_dlhandle handle = NULL;
|
||||
mpg123_module_t *module = NULL;
|
||||
char* module_path = NULL;
|
||||
size_t module_path_len = 0;
|
||||
char* module_symbol = NULL;
|
||||
size_t module_symbol_len = 0;
|
||||
char *workdir = NULL;
|
||||
char *moddir = NULL;
|
||||
workdir = get_the_cwd();
|
||||
moddir = get_module_dir();
|
||||
if(workdir == NULL || moddir == NULL)
|
||||
{
|
||||
error("Failure getting workdir or moddir!");
|
||||
if(workdir == NULL) fprintf(stderr, "Hint: I need to know the current working directory to be able to come back after hunting modules. I will not leave because I do not know where I am.\n");
|
||||
|
||||
if(workdir != NULL) free(workdir);
|
||||
if(moddir != NULL) free(moddir);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* Initialize libltdl */
|
||||
if (lt_dlinit()) error( "Failed to initialise libltdl" );
|
||||
|
||||
if(chdir(moddir) != 0)
|
||||
{
|
||||
error2("Failed to enter module directory %s: %s", moddir, strerror(errno));
|
||||
goto om_bad;
|
||||
}
|
||||
/* Work out the path of the module to open */
|
||||
/* Note that we need to open ./file, not just file! */
|
||||
module_path_len = 2 + strlen(type) + 1 + strlen(name) + strlen(MODULE_FILE_SUFFIX) + 1;
|
||||
module_path = malloc( module_path_len );
|
||||
if (module_path == NULL) {
|
||||
error1( "Failed to allocate memory for module name: %s", strerror(errno) );
|
||||
goto om_bad;
|
||||
}
|
||||
snprintf( module_path, module_path_len, "./%s_%s%s", type, name, MODULE_FILE_SUFFIX );
|
||||
/* Display the path of the module created */
|
||||
if(param.verbose > 1) fprintf(stderr, "Module path: %s\n", module_path );
|
||||
|
||||
/* Open the module */
|
||||
handle = lt_dlopen( module_path );
|
||||
free( module_path );
|
||||
if (handle==NULL) {
|
||||
error2( "Failed to open module %s: %s", name, lt_dlerror() );
|
||||
if(param.verbose > 1)
|
||||
fprintf(stderr, "Note: This could be because of braindead path in the .la file...\n");
|
||||
|
||||
goto om_bad;
|
||||
}
|
||||
|
||||
/* Work out the symbol name */
|
||||
module_symbol_len = strlen( MODULE_SYMBOL_PREFIX ) +
|
||||
strlen( type ) +
|
||||
strlen( MODULE_SYMBOL_SUFFIX ) + 1;
|
||||
module_symbol = malloc(module_symbol_len);
|
||||
snprintf( module_symbol, module_symbol_len, "%s%s%s", MODULE_SYMBOL_PREFIX, type, MODULE_SYMBOL_SUFFIX );
|
||||
debug1( "Module symbol: %s", module_symbol );
|
||||
|
||||
/* Get the information structure from the module */
|
||||
module = (mpg123_module_t*)lt_dlsym(handle, module_symbol );
|
||||
free( module_symbol );
|
||||
if (module==NULL) {
|
||||
error1( "Failed to get module symbol: %s", lt_dlerror() );
|
||||
goto om_latebad;
|
||||
}
|
||||
|
||||
/* Check the API version */
|
||||
if (MPG123_MODULE_API_VERSION > module->api_version) {
|
||||
error( "API version of module is too old" );
|
||||
goto om_latebad;
|
||||
} else if (MPG123_MODULE_API_VERSION > module->api_version) {
|
||||
error( "API version of module is too new" );
|
||||
goto om_latebad;
|
||||
}
|
||||
|
||||
/* Store handle in the data structure */
|
||||
module->handle = handle;
|
||||
|
||||
goto om_end;
|
||||
om_latebad:
|
||||
lt_dlclose( handle );
|
||||
om_bad:
|
||||
module = NULL;
|
||||
om_end:
|
||||
chdir(workdir);
|
||||
free(moddir);
|
||||
free(workdir);
|
||||
return module;
|
||||
}
|
||||
|
||||
|
||||
void close_module( mpg123_module_t* module )
|
||||
{
|
||||
lt_dlhandle handle = module->handle;
|
||||
int err = lt_dlclose( handle );
|
||||
|
||||
if (err) error1("Failed to close module: %s", lt_dlerror() );
|
||||
|
||||
}
|
||||
|
||||
#define PATH_STEP 50
|
||||
static char *get_the_cwd()
|
||||
{
|
||||
size_t bs = PATH_STEP;
|
||||
char *buf = malloc(bs);
|
||||
errno = 0;
|
||||
while((buf != NULL) && getcwd(buf, bs) == NULL)
|
||||
{
|
||||
char *buf2;
|
||||
if(errno != ERANGE)
|
||||
{
|
||||
error1("getcwd returned unexpected error: %s", strerror(errno));
|
||||
free(buf);
|
||||
return NULL;
|
||||
}
|
||||
buf2 = realloc(buf, bs+=PATH_STEP);
|
||||
if(buf2 == NULL){ free(buf); buf = NULL; }
|
||||
else debug1("pwd: increased buffer to %lu", (unsigned long)bs);
|
||||
|
||||
buf = buf2;
|
||||
}
|
||||
return buf;
|
||||
}
|
||||
|
||||
void list_modules()
|
||||
{
|
||||
DIR* dir = NULL;
|
||||
struct dirent *dp = NULL;
|
||||
char *workdir = NULL;
|
||||
char *moddir = NULL;
|
||||
|
||||
moddir = get_module_dir();
|
||||
/* Open the module directory */
|
||||
dir = opendir(moddir);
|
||||
if (dir==NULL) {
|
||||
error2("Failed to open the module directory (%s): %s\n", PKGLIBDIR, strerror(errno));
|
||||
free(moddir);
|
||||
exit(-1);
|
||||
}
|
||||
|
||||
workdir = get_the_cwd();
|
||||
if(chdir(moddir) != 0)
|
||||
{
|
||||
error2("Failed to enter module directory (%s): %s\n", PKGLIBDIR, strerror(errno));
|
||||
closedir( dir );
|
||||
free(workdir);
|
||||
free(moddir);
|
||||
exit(-1);
|
||||
}
|
||||
/* Display the program title */
|
||||
/* print_title(stderr); */
|
||||
|
||||
/* List the output modules */
|
||||
printf("\n");
|
||||
printf("Available modules\n");
|
||||
printf("-----------------\n");
|
||||
|
||||
while( (dp = readdir(dir)) != NULL ) {
|
||||
struct stat fst;
|
||||
if(stat(dp->d_name, &fst) != 0) continue;
|
||||
if(S_ISREG(fst.st_mode)) /* Allow links? */
|
||||
{
|
||||
char* ext = dp->d_name + strlen( dp->d_name ) - strlen( MODULE_FILE_SUFFIX );
|
||||
if (strcmp(ext, MODULE_FILE_SUFFIX) == 0)
|
||||
{
|
||||
char *module_name = NULL;
|
||||
char *module_type = NULL;
|
||||
char *uscore_pos = NULL;
|
||||
mpg123_module_t *module = NULL;
|
||||
|
||||
/* Extract the module type */
|
||||
module_type = strdup( dp->d_name );
|
||||
uscore_pos = strchr( module_type, '_' );
|
||||
if (uscore_pos==NULL || (uscore_pos>=module_type+strlen(module_type)+1) )
|
||||
{
|
||||
free(module_type);
|
||||
continue;
|
||||
}
|
||||
|
||||
*uscore_pos = '\0';
|
||||
|
||||
/* Extract the short name of the module */
|
||||
module_name = strdup( dp->d_name + strlen( module_type ) + 1 );
|
||||
module_name[ strlen( module_name ) - strlen( MODULE_FILE_SUFFIX ) ] = '\0';
|
||||
|
||||
/* Open the module */
|
||||
module = open_module( module_type, module_name );
|
||||
if (module) {
|
||||
printf("%-15s%s %s\n", module->name, module_type, module->description );
|
||||
|
||||
/* Close the module again */
|
||||
close_module( module );
|
||||
}
|
||||
|
||||
free( module_name );
|
||||
free( module_type );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
chdir(workdir);
|
||||
free(workdir);
|
||||
closedir( dir );
|
||||
free(moddir);
|
||||
exit(0);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,221 +0,0 @@
|
||||
## Makefile.am: produce Makefile.in from this
|
||||
|
||||
## copyright by the mpg123 project - free software under the terms of the LGPL 2.1
|
||||
## see COPYING and AUTHORS files in distribution or http://www.mpg123.org
|
||||
## initially written by Nicholas J. Humfrey
|
||||
|
||||
#AM_CPPFLAGS = -I$(top_srcdir)/src/libmpg123 -I$(top_srcdir)/src
|
||||
INCLUDES = $(LTDLINCL) -I$(top_builddir)/src -I$(top_builddir)/src/libmpg123 -I$(top_srcdir)/src -I$(top_srcdir)/src/libmpg123
|
||||
|
||||
#Do not include uneeded headers from mpg123app.h
|
||||
AM_CPPFLAGS = -DBUILDING_OUTPUT_MODULES=1
|
||||
|
||||
if HAVE_MODULES
|
||||
|
||||
pkglib_LTLIBRARIES =
|
||||
|
||||
# These are not tested and _very_ likely need work: aix alib hp os2 sgi mint
|
||||
|
||||
# Use that sh/perl script to generate the module entries:
|
||||
#for i in alsa coreaudio esd jack nas oss portaudio pulse sdl sndio sun win32 aix alib arts hp os2 sgi mint openal dummy; do echo $i; done |
|
||||
#perl -ne 'chomp; $big = uc($_); print <<EOT;
|
||||
#
|
||||
#if HAVE_$big
|
||||
#pkglib_LTLIBRARIES += output_$_.la
|
||||
#output_${_}_la_SOURCES = $_.c
|
||||
#output_${_}_la_LDFLAGS = -module -no-undefined -avoid-version -export-dynamic -export-symbols-regex '"'"'^mpg123_'"'"' \@${big}_LDFLAGS\@
|
||||
#output_${_}_la_CFLAGS = \@${big}_CFLAGS\@
|
||||
#output_${_}_la_LIBADD = \@${big}_LIBS\@
|
||||
#endif
|
||||
#EOT
|
||||
#'
|
||||
|
||||
if HAVE_ALSA
|
||||
pkglib_LTLIBRARIES += output_alsa.la
|
||||
output_alsa_la_SOURCES = alsa.c
|
||||
output_alsa_la_LDFLAGS = -module -no-undefined -avoid-version -export-dynamic -export-symbols-regex '^mpg123_' @ALSA_LDFLAGS@
|
||||
output_alsa_la_CFLAGS = @ALSA_CFLAGS@
|
||||
output_alsa_la_LIBADD = @ALSA_LIBS@
|
||||
endif
|
||||
|
||||
if HAVE_COREAUDIO
|
||||
pkglib_LTLIBRARIES += output_coreaudio.la
|
||||
output_coreaudio_la_SOURCES = coreaudio.c
|
||||
output_coreaudio_la_LDFLAGS = -module -no-undefined -avoid-version -export-dynamic -export-symbols-regex '^mpg123_' @COREAUDIO_LDFLAGS@
|
||||
output_coreaudio_la_CFLAGS = @COREAUDIO_CFLAGS@
|
||||
output_coreaudio_la_LIBADD = @COREAUDIO_LIBS@
|
||||
endif
|
||||
|
||||
if HAVE_ESD
|
||||
pkglib_LTLIBRARIES += output_esd.la
|
||||
output_esd_la_SOURCES = esd.c
|
||||
output_esd_la_LDFLAGS = -module -no-undefined -avoid-version -export-dynamic -export-symbols-regex '^mpg123_' @ESD_LDFLAGS@
|
||||
output_esd_la_CFLAGS = @ESD_CFLAGS@
|
||||
output_esd_la_LIBADD = @ESD_LIBS@
|
||||
endif
|
||||
|
||||
if HAVE_JACK
|
||||
pkglib_LTLIBRARIES += output_jack.la
|
||||
output_jack_la_SOURCES = jack.c
|
||||
output_jack_la_LDFLAGS = -module -no-undefined -avoid-version -export-dynamic -export-symbols-regex '^mpg123_' @JACK_LDFLAGS@
|
||||
output_jack_la_CFLAGS = @JACK_CFLAGS@
|
||||
output_jack_la_LIBADD = @JACK_LIBS@
|
||||
endif
|
||||
|
||||
if HAVE_NAS
|
||||
pkglib_LTLIBRARIES += output_nas.la
|
||||
output_nas_la_SOURCES = nas.c
|
||||
output_nas_la_LDFLAGS = -module -no-undefined -avoid-version -export-dynamic -export-symbols-regex '^mpg123_' @NAS_LDFLAGS@
|
||||
output_nas_la_CFLAGS = @NAS_CFLAGS@
|
||||
output_nas_la_LIBADD = @NAS_LIBS@
|
||||
endif
|
||||
|
||||
if HAVE_OSS
|
||||
pkglib_LTLIBRARIES += output_oss.la
|
||||
output_oss_la_SOURCES = oss.c
|
||||
output_oss_la_LDFLAGS = -module -no-undefined -avoid-version -export-dynamic -export-symbols-regex '^mpg123_' @OSS_LDFLAGS@
|
||||
output_oss_la_CFLAGS = @OSS_CFLAGS@
|
||||
output_oss_la_LIBADD = @OSS_LIBS@
|
||||
endif
|
||||
|
||||
if HAVE_PORTAUDIO
|
||||
pkglib_LTLIBRARIES += output_portaudio.la
|
||||
output_portaudio_la_SOURCES = portaudio.c
|
||||
output_portaudio_la_LDFLAGS = -module -no-undefined -avoid-version -export-dynamic -export-symbols-regex '^mpg123_' @PORTAUDIO_LDFLAGS@
|
||||
output_portaudio_la_CFLAGS = @PORTAUDIO_CFLAGS@
|
||||
output_portaudio_la_LIBADD = @PORTAUDIO_LIBS@
|
||||
endif
|
||||
|
||||
if HAVE_PULSE
|
||||
pkglib_LTLIBRARIES += output_pulse.la
|
||||
output_pulse_la_SOURCES = pulse.c
|
||||
output_pulse_la_LDFLAGS = -module -no-undefined -avoid-version -export-dynamic -export-symbols-regex '^mpg123_' @PULSE_LDFLAGS@
|
||||
output_pulse_la_CFLAGS = @PULSE_CFLAGS@
|
||||
output_pulse_la_LIBADD = @PULSE_LIBS@
|
||||
endif
|
||||
|
||||
if HAVE_QSA
|
||||
pkglib_LTLIBRARIES += output_qsa.la
|
||||
output_qsa_la_SOURCES = qsa.c
|
||||
output_qsa_la_LDFLAGS = -module -no-undefined -avoid-version -export-dynamic -export-symbols-regex '^mpg123_' @QSA_LDFLAGS@
|
||||
output_qsa_la_CFLAGS = @QSA_CFLAGS@
|
||||
output_qsa_la_LIBADD = @QSA_LIBS@
|
||||
endif
|
||||
|
||||
if HAVE_SDL
|
||||
pkglib_LTLIBRARIES += output_sdl.la
|
||||
output_sdl_la_SOURCES = sdl.c
|
||||
output_sdl_la_LDFLAGS = -module -no-undefined -avoid-version -export-dynamic -export-symbols-regex '^mpg123_' @SDL_LDFLAGS@
|
||||
output_sdl_la_CFLAGS = @SDL_CFLAGS@
|
||||
output_sdl_la_LIBADD = @SDL_LIBS@
|
||||
endif
|
||||
|
||||
if HAVE_SNDIO
|
||||
pkglib_LTLIBRARIES += output_sndio.la
|
||||
output_sndio_la_SOURCES = sndio.c
|
||||
output_sndio_la_LDFLAGS = -module -no-undefined -avoid-version -export-dynamic -export-symbols-regex '^mpg123_' @SNDIO_LDFLAGS@
|
||||
output_sndio_la_CFLAGS = @SNDIO_CFLAGS@
|
||||
output_sndio_la_LIBADD = @SNDIO_LIBS@
|
||||
endif
|
||||
|
||||
if HAVE_SUN
|
||||
pkglib_LTLIBRARIES += output_sun.la
|
||||
output_sun_la_SOURCES = sun.c
|
||||
output_sun_la_LDFLAGS = -module -no-undefined -avoid-version -export-dynamic -export-symbols-regex '^mpg123_' @SUN_LDFLAGS@
|
||||
output_sun_la_CFLAGS = @SUN_CFLAGS@
|
||||
output_sun_la_LIBADD = @SUN_LIBS@
|
||||
endif
|
||||
|
||||
if HAVE_WIN32
|
||||
pkglib_LTLIBRARIES += output_win32.la
|
||||
output_win32_la_SOURCES = win32.c
|
||||
output_win32_la_LDFLAGS = -module -no-undefined -avoid-version -export-dynamic -export-symbols-regex '^mpg123_' @WIN32_LDFLAGS@
|
||||
output_win32_la_CFLAGS = @WIN32_CFLAGS@
|
||||
output_win32_la_LIBADD = @WIN32_LIBS@
|
||||
endif
|
||||
|
||||
if HAVE_AIX
|
||||
pkglib_LTLIBRARIES += output_aix.la
|
||||
output_aix_la_SOURCES = aix.c
|
||||
output_aix_la_LDFLAGS = -module -no-undefined -avoid-version -export-dynamic -export-symbols-regex '^mpg123_' @AIX_LDFLAGS@
|
||||
output_aix_la_CFLAGS = @AIX_CFLAGS@
|
||||
output_aix_la_LIBADD = @AIX_LIBS@
|
||||
endif
|
||||
|
||||
if HAVE_ALIB
|
||||
pkglib_LTLIBRARIES += output_alib.la
|
||||
output_alib_la_SOURCES = alib.c
|
||||
output_alib_la_LDFLAGS = -module -no-undefined -avoid-version -export-dynamic -export-symbols-regex '^mpg123_' @ALIB_LDFLAGS@
|
||||
output_alib_la_CFLAGS = @ALIB_CFLAGS@
|
||||
output_alib_la_LIBADD = @ALIB_LIBS@
|
||||
endif
|
||||
|
||||
if HAVE_ARTS
|
||||
pkglib_LTLIBRARIES += output_arts.la
|
||||
output_arts_la_SOURCES = arts.c
|
||||
output_arts_la_LDFLAGS = -module -no-undefined -avoid-version -export-dynamic -export-symbols-regex '^mpg123_' @ARTS_LDFLAGS@
|
||||
output_arts_la_CFLAGS = @ARTS_CFLAGS@
|
||||
output_arts_la_LIBADD = @ARTS_LIBS@
|
||||
endif
|
||||
|
||||
if HAVE_HP
|
||||
pkglib_LTLIBRARIES += output_hp.la
|
||||
output_hp_la_SOURCES = hp.c
|
||||
output_hp_la_LDFLAGS = -module -no-undefined -avoid-version -export-dynamic -export-symbols-regex '^mpg123_' @HP_LDFLAGS@
|
||||
output_hp_la_CFLAGS = @HP_CFLAGS@
|
||||
output_hp_la_LIBADD = @HP_LIBS@
|
||||
endif
|
||||
|
||||
if HAVE_OS2
|
||||
pkglib_LTLIBRARIES += output_os2.la
|
||||
output_os2_la_SOURCES = os2.c
|
||||
output_os2_la_LDFLAGS = -module -no-undefined -avoid-version -export-dynamic -export-symbols-regex '^mpg123_' @OS2_LDFLAGS@
|
||||
output_os2_la_CFLAGS = @OS2_CFLAGS@
|
||||
output_os2_la_LIBADD = @OS2_LIBS@
|
||||
endif
|
||||
|
||||
if HAVE_SGI
|
||||
pkglib_LTLIBRARIES += output_sgi.la
|
||||
output_sgi_la_SOURCES = sgi.c
|
||||
output_sgi_la_LDFLAGS = -module -no-undefined -avoid-version -export-dynamic -export-symbols-regex '^mpg123_' @SGI_LDFLAGS@
|
||||
output_sgi_la_CFLAGS = @SGI_CFLAGS@
|
||||
output_sgi_la_LIBADD = @SGI_LIBS@
|
||||
endif
|
||||
|
||||
if HAVE_MINT
|
||||
pkglib_LTLIBRARIES += output_mint.la
|
||||
output_mint_la_SOURCES = mint.c
|
||||
output_mint_la_LDFLAGS = -module -no-undefined -avoid-version -export-dynamic -export-symbols-regex '^mpg123_' @MINT_LDFLAGS@
|
||||
output_mint_la_CFLAGS = @MINT_CFLAGS@
|
||||
output_mint_la_LIBADD = @MINT_LIBS@
|
||||
endif
|
||||
|
||||
if HAVE_OPENAL
|
||||
pkglib_LTLIBRARIES += output_openal.la
|
||||
output_openal_la_SOURCES = openal.c
|
||||
output_openal_la_LDFLAGS = -module -no-undefined -avoid-version -export-dynamic -export-symbols-regex '^mpg123_' @OPENAL_LDFLAGS@
|
||||
output_openal_la_CFLAGS = @OPENAL_CFLAGS@
|
||||
output_openal_la_LIBADD = @OPENAL_LIBS@
|
||||
endif
|
||||
|
||||
if HAVE_DUMMY
|
||||
pkglib_LTLIBRARIES += output_dummy.la
|
||||
output_dummy_la_SOURCES = dummy.c
|
||||
output_dummy_la_LDFLAGS = -module -no-undefined -avoid-version -export-dynamic -export-symbols-regex '^mpg123_' @DUMMY_LDFLAGS@
|
||||
output_dummy_la_CFLAGS = @DUMMY_CFLAGS@
|
||||
output_dummy_la_LIBADD = @DUMMY_LIBS@
|
||||
endif
|
||||
|
||||
else
|
||||
|
||||
# Static build of one module only.
|
||||
|
||||
AM_CFLAGS=@OUTPUT_CFLAGS@
|
||||
|
||||
all: @OUTPUT_MOD@.$(OBJEXT)
|
||||
|
||||
# No installation happening from here
|
||||
install: all
|
||||
|
||||
|
||||
endif
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,450 +0,0 @@
|
||||
/*
|
||||
jack: audio output via JACK Audio Connection Kit
|
||||
|
||||
copyright 2006 by the mpg123 project - free software under the terms of the LGPL 2.1
|
||||
see COPYING and AUTHORS files in distribution or http://mpg123.org
|
||||
initially written by Nicholas J. Humfrey
|
||||
*/
|
||||
|
||||
#include <math.h>
|
||||
|
||||
#include <jack/jack.h>
|
||||
#include <jack/ringbuffer.h>
|
||||
#include <sys/errno.h>
|
||||
|
||||
#include "mpg123app.h"
|
||||
#include "debug.h"
|
||||
|
||||
#define MAX_CHANNELS (2)
|
||||
|
||||
typedef struct {
|
||||
int channels;
|
||||
jack_port_t *ports[MAX_CHANNELS];
|
||||
jack_ringbuffer_t * rb[MAX_CHANNELS];
|
||||
size_t rb_size;
|
||||
jack_client_t *client;
|
||||
jack_default_audio_sample_t *tmp_buffer;
|
||||
} jack_handle_t, *jack_handle_ptr;
|
||||
|
||||
|
||||
static jack_handle_t* alloc_jack_handle()
|
||||
{
|
||||
jack_handle_t *handle=NULL;
|
||||
|
||||
handle = malloc(sizeof(jack_handle_t));
|
||||
if (!handle) {
|
||||
error("Failed to allocate memory for our handle.");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* Initialise the handle, and store for later*/
|
||||
handle->rb[0] = NULL;
|
||||
handle->rb[1] = NULL;
|
||||
handle->ports[0] = NULL;
|
||||
handle->ports[1] = NULL;
|
||||
handle->client = NULL;
|
||||
handle->tmp_buffer = NULL;
|
||||
handle->rb_size = 0;
|
||||
|
||||
|
||||
return handle;
|
||||
}
|
||||
|
||||
|
||||
static void free_jack_handle( jack_handle_t* handle )
|
||||
{
|
||||
int i;
|
||||
|
||||
warning("FIXME: One needs to wait or write some silence here to prevent the last bits of audio to vanish out of the ringbuffer.");
|
||||
|
||||
for(i=0; i<MAX_CHANNELS; i++) {
|
||||
/* Close the port for channel*/
|
||||
if ( handle->ports[i] )
|
||||
jack_port_unregister( handle->client, handle->ports[i] );
|
||||
|
||||
/* Free up the ring buffer for channel*/
|
||||
if ( handle->rb[i] )
|
||||
jack_ringbuffer_free( handle->rb[i] );
|
||||
}
|
||||
|
||||
if (handle->client)
|
||||
jack_client_close(handle->client);
|
||||
|
||||
if (handle->tmp_buffer)
|
||||
free(handle->tmp_buffer);
|
||||
|
||||
free(handle);
|
||||
}
|
||||
|
||||
|
||||
static int process_callback( jack_nframes_t nframes, void *arg )
|
||||
{
|
||||
jack_handle_t* handle = (jack_handle_t*)arg;
|
||||
size_t to_read = sizeof (jack_default_audio_sample_t) * nframes;
|
||||
unsigned int c;
|
||||
|
||||
|
||||
/* copy data to ringbuffer; one per channel*/
|
||||
for (c=0; c < handle->channels; c++)
|
||||
{
|
||||
char *buf = (char*)jack_port_get_buffer(handle->ports[c], nframes);
|
||||
size_t len = jack_ringbuffer_read(handle->rb[c], buf, to_read);
|
||||
|
||||
/* If we don't have enough audio, fill it up with silence*/
|
||||
/* (this is to deal with pausing etc.)*/
|
||||
if (to_read > len)
|
||||
bzero( buf+len, to_read - len );
|
||||
|
||||
/*if (len < to_read)*/
|
||||
/* error1("failed to read from ring buffer %d",c);*/
|
||||
}
|
||||
|
||||
/* Success*/
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void shutdown_callback( void *arg )
|
||||
{
|
||||
/* jack_handle_t* handle = (jack_handle_t*)arg; */
|
||||
|
||||
debug("shutdown_callback()");
|
||||
|
||||
}
|
||||
|
||||
/* connect to jack ports named in the NULL-terminated wishlist */
|
||||
static int real_connect_jack_ports( jack_handle_t* handle, const char** wishlist)
|
||||
{
|
||||
const char **wish = wishlist;
|
||||
int ch, err;
|
||||
|
||||
if(wish != NULL && *wish == NULL) return 1; /* success, nothing connected as wanted */
|
||||
|
||||
for(ch=0; ch<handle->channels; ++ch)
|
||||
{
|
||||
const char* in = jack_port_name( handle->ports[ch] );
|
||||
|
||||
if ((err = jack_connect(handle->client, in, *wish)) != 0 && err != EEXIST) {
|
||||
error1("connect_jack_ports(): failed to jack_connect() ports: %d",err);
|
||||
return 0;
|
||||
}
|
||||
/* Increment wish only if there is another one. Otherwise simply connect to the same port multiple times. */
|
||||
if(*(wish+1) != NULL) ++wish;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* crude way of automatically connecting up jack ports */
|
||||
/* 0 on error */
|
||||
static int autoconnect_jack_ports( jack_handle_t* handle)
|
||||
{
|
||||
const char **all_ports;
|
||||
unsigned int ch=0;
|
||||
int err,i;
|
||||
|
||||
/* Get a list of all the jack ports*/
|
||||
all_ports = jack_get_ports (handle->client, NULL, NULL, JackPortIsInput);
|
||||
if (!all_ports) {
|
||||
error("connect_jack_ports(): jack_get_ports() returned NULL.");
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Step through each port name*/
|
||||
for (i = 0; all_ports[i]; ++i) {
|
||||
|
||||
const char* in = jack_port_name( handle->ports[ch] );
|
||||
const char* out = all_ports[i];
|
||||
|
||||
if ((err = jack_connect(handle->client, in, out)) != 0 && err != EEXIST) {
|
||||
error1("connect_jack_ports(): failed to jack_connect() ports: %d",err);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Found enough ports ?*/
|
||||
if (++ch >= handle->channels) break;
|
||||
}
|
||||
|
||||
free( all_ports );
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
static int connect_jack_ports( jack_handle_t* handle, const char *dev )
|
||||
{
|
||||
if (dev==NULL || strcmp(dev, "auto")==0) {
|
||||
return autoconnect_jack_ports( handle );
|
||||
}
|
||||
else
|
||||
{
|
||||
const char* wishlist[] = { NULL, NULL, NULL }; /* Two channels and end marker. */
|
||||
char *devcopy;
|
||||
int ret;
|
||||
size_t len = strlen(dev);
|
||||
devcopy = malloc(len+1);
|
||||
if(devcopy == NULL){ error("OOM"); return 0; }
|
||||
|
||||
/* We just look out for a possible second port, comma separated
|
||||
This is really crude cruft, but it's enough. Can be replaced by something sensible later. */
|
||||
memcpy(devcopy, dev, len+1);
|
||||
if( len > 0 && strcmp(dev, "none")!=0 )
|
||||
{
|
||||
size_t i=0;
|
||||
wishlist[0] = devcopy;
|
||||
while(devcopy[i] != 0 && devcopy[i] != ',') ++i;
|
||||
|
||||
if(devcopy[i] == ',')
|
||||
{
|
||||
devcopy[i] = 0;
|
||||
wishlist[1] = devcopy+i+1;
|
||||
}
|
||||
}
|
||||
if(wishlist[0] == NULL) warning("Not connecting up jack ports as requested.");
|
||||
|
||||
ret = real_connect_jack_ports(handle, wishlist);
|
||||
free(devcopy);
|
||||
return ret;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
static int close_jack(audio_output_t *ao)
|
||||
{
|
||||
jack_handle_t *handle = (jack_handle_t*)ao->userptr;
|
||||
|
||||
debug("close_jack().");
|
||||
|
||||
/* Close and shutdown*/
|
||||
if (handle) {
|
||||
free_jack_handle( handle );
|
||||
ao->userptr = NULL;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
static int open_jack(audio_output_t *ao)
|
||||
{
|
||||
char client_name[255];
|
||||
jack_handle_t *handle=NULL;
|
||||
jack_options_t jopt = JackNullOption;
|
||||
jack_status_t jstat = 0;
|
||||
unsigned int i;
|
||||
|
||||
debug("jack open");
|
||||
if(!ao) return -1;
|
||||
|
||||
/* Return if already open*/
|
||||
if (ao->userptr) {
|
||||
error("audio device is already open.");
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* Create some storage for ourselves*/
|
||||
if((handle = alloc_jack_handle()) == NULL) return -1;
|
||||
|
||||
ao->userptr = (void*)handle;
|
||||
|
||||
/* Register with Jack*/
|
||||
snprintf(client_name, 255, "mpg123-%d", getpid());
|
||||
if ((handle->client = jack_client_open(client_name, jopt, &jstat)) == 0) {
|
||||
error1("Failed to open jack client: 0x%x", jstat);
|
||||
close_jack(ao);
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* Display the unique client name allocated to us */
|
||||
fprintf(stderr,"Registered as JACK client %s.\n",
|
||||
jack_get_client_name( handle->client ) );
|
||||
|
||||
/* The initial open lets me choose the settings. */
|
||||
if (ao->format==-1)
|
||||
{
|
||||
ao->format = MPG123_ENC_16;
|
||||
ao->rate = jack_get_sample_rate(handle->client);
|
||||
ao->channels = 2;
|
||||
}
|
||||
|
||||
/* Check the sample rate is correct*/
|
||||
if (jack_get_sample_rate( handle->client ) != (jack_nframes_t)ao->rate) {
|
||||
error("JACK Sample Rate is different to sample rate of file.");
|
||||
close_jack(ao);
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* Register ports with Jack*/
|
||||
handle->channels = ao->channels;
|
||||
if (handle->channels == 1) {
|
||||
if (!(handle->ports[0] = jack_port_register(handle->client, "mono", JACK_DEFAULT_AUDIO_TYPE, JackPortIsOutput, 0)))
|
||||
{
|
||||
error("Cannot register JACK output port 'mono'.");
|
||||
close_jack(ao);
|
||||
return -1;
|
||||
}
|
||||
} else if (handle->channels == 2) {
|
||||
if (!(handle->ports[0] = jack_port_register(handle->client, "left", JACK_DEFAULT_AUDIO_TYPE, JackPortIsOutput, 0)))
|
||||
{
|
||||
error("Cannot register JACK output port 'left'.");
|
||||
close_jack(ao);
|
||||
return -1;
|
||||
}
|
||||
if (!(handle->ports[1] = jack_port_register(handle->client, "right", JACK_DEFAULT_AUDIO_TYPE, JackPortIsOutput, 0)))
|
||||
{
|
||||
error("Cannot register JACK output port 'right'.");
|
||||
close_jack(ao);
|
||||
return -1;
|
||||
}
|
||||
} else {
|
||||
error1("invalid number of output channels (%d).", handle->channels);
|
||||
close_jack(ao);
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* Create the ring buffers (one seconds audio)*/
|
||||
handle->rb_size = jack_get_sample_rate(handle->client) * sizeof(jack_default_audio_sample_t);
|
||||
for(i=0;i<handle->channels;i++){
|
||||
handle->rb[i]=jack_ringbuffer_create(handle->rb_size);
|
||||
}
|
||||
|
||||
/* Set the callbacks*/
|
||||
jack_set_process_callback(handle->client, process_callback, (void*)handle);
|
||||
jack_on_shutdown(handle->client, shutdown_callback, (void*)handle);
|
||||
|
||||
/* Activate client*/
|
||||
if (jack_activate(handle->client)) {
|
||||
error("Can't activate client.");
|
||||
}
|
||||
|
||||
/* Connect up the portsm, return */
|
||||
if(!connect_jack_ports( handle, ao->device ))
|
||||
{
|
||||
/* deregistering of ports will not work but should just fail, then, and let the rest clean up */
|
||||
close_jack(ao);
|
||||
return -1;
|
||||
}
|
||||
|
||||
debug("Jack open successful.\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/* Jack prefers floats, I actually assume it does _only_ float/double (as it is nowadays)! */
|
||||
static int get_formats_jack(audio_output_t *ao)
|
||||
{
|
||||
if(jack_get_sample_rate( ((jack_handle_t*)(ao->userptr))->client ) != (jack_nframes_t)ao->rate) return 0;
|
||||
else return MPG123_ENC_FLOAT_32|MPG123_ENC_FLOAT_64|MPG123_ENC_SIGNED_16;
|
||||
}
|
||||
|
||||
|
||||
static int write_jack(audio_output_t *ao, unsigned char *buf, int len)
|
||||
{
|
||||
int c,n = 0;
|
||||
jack_handle_t *handle = (jack_handle_t*)ao->userptr;
|
||||
jack_nframes_t samples;
|
||||
size_t tmp_size;
|
||||
/* Only float or double is used.
|
||||
Note: I still need the tmp buffer because of de-interleaving the channels. */
|
||||
samples = len /
|
||||
(ao->format == MPG123_ENC_FLOAT_64 ? 8 : (ao->format == MPG123_ENC_SIGNED_16 ? 2 : 4))
|
||||
/ handle->channels;
|
||||
tmp_size = samples * sizeof( jack_default_audio_sample_t );
|
||||
|
||||
|
||||
/* Sanity check that ring buffer is at least twice the size of the audio we just got*/
|
||||
if (handle->rb_size/2 < len) {
|
||||
error("ring buffer is less than twice the size of audio given.");
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
/* Wait until there is space in the ring buffer*/
|
||||
while (jack_ringbuffer_write_space( handle->rb[0] ) < tmp_size) {
|
||||
/* Sleep for a quarter of the ring buffer size (1/4 second)*/
|
||||
usleep(250000);
|
||||
}
|
||||
|
||||
|
||||
/* Ensure the temporary buffer is big enough*/
|
||||
handle->tmp_buffer = (jack_default_audio_sample_t*)realloc( handle->tmp_buffer, tmp_size);
|
||||
if (!handle->tmp_buffer) {
|
||||
error("failed to realloc temporary buffer.");
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
for(c=0; c<handle->channels; c++) {
|
||||
size_t len = 0;
|
||||
|
||||
/* Hm, is that optimal? Anyhow, deinterleaving float or double ... or short. With/without conversion. */
|
||||
if(ao->format == MPG123_ENC_SIGNED_16)
|
||||
{
|
||||
short* src = (short*)buf;
|
||||
for(n=0; n<samples; n++)
|
||||
handle->tmp_buffer[n] = src[(n*handle->channels)+c] / 32768.0f;
|
||||
}
|
||||
else if(ao->format == MPG123_ENC_FLOAT_32)
|
||||
{
|
||||
float* src = (float*)buf;
|
||||
for(n=0; n<samples; n++)
|
||||
handle->tmp_buffer[n] = src[(n*handle->channels)+c];
|
||||
}
|
||||
else /* MPG123_ENC_FLOAT_64 */
|
||||
{
|
||||
double* src = (double*)buf;
|
||||
for(n=0; n<samples; n++)
|
||||
handle->tmp_buffer[n] = src[(n*handle->channels)+c];
|
||||
}
|
||||
/* Copy temporary buffer into ring buffer*/
|
||||
len = jack_ringbuffer_write(handle->rb[c], (char*)handle->tmp_buffer, tmp_size);
|
||||
if (len < tmp_size)
|
||||
{
|
||||
error("failed to write to ring ruffer.");
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return len;
|
||||
}
|
||||
|
||||
static void flush_jack(audio_output_t *ao)
|
||||
{
|
||||
jack_handle_t *handle = (jack_handle_t*)ao->userptr;
|
||||
int c;
|
||||
|
||||
warning("This way, we drop audio on pausing... there must be a better way.");
|
||||
/* Reset the ring buffers*/
|
||||
for(c=0; c<handle->channels; c++) {
|
||||
jack_ringbuffer_reset(handle->rb[c]);
|
||||
}
|
||||
}
|
||||
|
||||
static int init_jack(audio_output_t* ao)
|
||||
{
|
||||
if (ao==NULL) return -1;
|
||||
|
||||
/* Set callbacks */
|
||||
ao->open = open_jack;
|
||||
ao->flush = flush_jack;
|
||||
ao->write = write_jack;
|
||||
ao->get_formats = get_formats_jack;
|
||||
ao->close = close_jack;
|
||||
|
||||
/* Success */
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Module information data structure
|
||||
*/
|
||||
mpg123_module_t mpg123_output_module_info = {
|
||||
/* api_version */ MPG123_MODULE_API_VERSION,
|
||||
/* name */ "jack",
|
||||
/* description */ "Output audio using JACK (JACK Audio Connection Kit).",
|
||||
/* revision */ "$Rev:$",
|
||||
/* handle */ NULL,
|
||||
|
||||
/* init_output */ init_jack,
|
||||
};
|
||||
@@ -1,255 +0,0 @@
|
||||
/*
|
||||
portaudio: audio output via PortAudio cross-platform audio API
|
||||
|
||||
copyright 2006-9 by the mpg123 project - free software under the terms of the LGPL 2.1
|
||||
see COPYING and AUTHORS files in distribution or http://mpg123.org
|
||||
initially written by Nicholas J. Humfrey
|
||||
*/
|
||||
|
||||
#include <math.h>
|
||||
|
||||
#include <portaudio.h>
|
||||
|
||||
#include "audio.h"
|
||||
#include "mpg123app.h"
|
||||
|
||||
#ifdef WIN32
|
||||
#include <windows.h>
|
||||
#endif
|
||||
|
||||
/* Including the sfifo code locally, to avoid module linkage issues. */
|
||||
#define SFIFO_STATIC
|
||||
#include "sfifo.c"
|
||||
|
||||
#include "debug.h"
|
||||
|
||||
#define SAMPLE_SIZE (2)
|
||||
#define FRAMES_PER_BUFFER (256)
|
||||
#define FIFO_DURATION (0.5f)
|
||||
|
||||
|
||||
typedef struct {
|
||||
PaStream *stream;
|
||||
sfifo_t fifo;
|
||||
} mpg123_portaudio_t;
|
||||
|
||||
#ifdef PORTAUDIO18
|
||||
#define PaTime PaTimestamp
|
||||
#define Pa_IsStreamActive Pa_StreamActive
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef PORTAUDIO18
|
||||
static int paCallback( void *inputBuffer, void *outputBuffer,
|
||||
unsigned long framesPerBuffer,
|
||||
PaTime outTime, void *userData )
|
||||
#else
|
||||
static int paCallback(
|
||||
const void *inputBuffer, void *outputBuffer,
|
||||
unsigned long framesPerBuffer,
|
||||
const PaStreamCallbackTimeInfo* timeInfo,
|
||||
PaStreamCallbackFlags statusFlags,
|
||||
void *userData )
|
||||
#endif
|
||||
{
|
||||
audio_output_t *ao = userData;
|
||||
mpg123_portaudio_t *pa = (mpg123_portaudio_t*)ao->userptr;
|
||||
unsigned long bytes = framesPerBuffer * SAMPLE_SIZE * ao->channels;
|
||||
|
||||
if (sfifo_used(&pa->fifo)<bytes) {
|
||||
error("ringbuffer for PortAudio is empty");
|
||||
return 1;
|
||||
} else {
|
||||
sfifo_read( &pa->fifo, outputBuffer, bytes );
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static int open_portaudio(audio_output_t *ao)
|
||||
{
|
||||
mpg123_portaudio_t *pa = (mpg123_portaudio_t*)ao->userptr;
|
||||
PaError err;
|
||||
|
||||
/* Open an audio I/O stream. */
|
||||
if (ao->rate > 0 && ao->channels >0 ) {
|
||||
|
||||
err = Pa_OpenDefaultStream(
|
||||
&pa->stream,
|
||||
0, /* no input channels */
|
||||
ao->channels, /* number of output channels */
|
||||
paInt16, /* signed 16-bit samples */
|
||||
ao->rate, /* sample rate */
|
||||
FRAMES_PER_BUFFER, /* frames per buffer */
|
||||
#ifdef PORTAUDIO18
|
||||
0, /* number of buffers, if zero then use default minimum */
|
||||
#endif
|
||||
paCallback, /* no callback - use blocking IO */
|
||||
ao );
|
||||
|
||||
if( err != paNoError ) {
|
||||
error1("Failed to open PortAudio default stream: %s", Pa_GetErrorText( err ));
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* Initialise FIFO */
|
||||
sfifo_init( &pa->fifo, ao->rate * FIFO_DURATION * SAMPLE_SIZE *ao->channels );
|
||||
|
||||
}
|
||||
|
||||
return(0);
|
||||
}
|
||||
|
||||
|
||||
static int get_formats_portaudio(audio_output_t *ao)
|
||||
{
|
||||
/* Only implemented Signed 16-bit audio for now */
|
||||
return MPG123_ENC_SIGNED_16;
|
||||
}
|
||||
|
||||
|
||||
static int write_portaudio(audio_output_t *ao, unsigned char *buf, int len)
|
||||
{
|
||||
mpg123_portaudio_t *pa = (mpg123_portaudio_t*)ao->userptr;
|
||||
PaError err;
|
||||
int written;
|
||||
|
||||
/* Sleep for half the length of the FIFO */
|
||||
while (sfifo_space( &pa->fifo ) < len ) {
|
||||
#ifdef WIN32
|
||||
Sleep( (FIFO_DURATION/2) * 1000);
|
||||
#else
|
||||
usleep( (FIFO_DURATION/2) * 1000000 );
|
||||
#endif
|
||||
}
|
||||
|
||||
/* Write the audio to the ring buffer */
|
||||
written = sfifo_write( &pa->fifo, buf, len );
|
||||
|
||||
/* Start stream if not ative */
|
||||
err = Pa_IsStreamActive( pa->stream );
|
||||
if (err == 0) {
|
||||
err = Pa_StartStream( pa->stream );
|
||||
if( err != paNoError ) {
|
||||
error1("Failed to start PortAudio stream: %s", Pa_GetErrorText( err ));
|
||||
return -1; /* triggering exit here is not good, better handle that somehow... */
|
||||
}
|
||||
} else if (err < 0) {
|
||||
error1("Failed to check state of PortAudio stream: %s", Pa_GetErrorText( err ));
|
||||
return -1;
|
||||
}
|
||||
|
||||
return written;
|
||||
}
|
||||
|
||||
|
||||
static int close_portaudio(audio_output_t *ao)
|
||||
{
|
||||
mpg123_portaudio_t *pa = (mpg123_portaudio_t*)ao->userptr;
|
||||
PaError err;
|
||||
|
||||
if (pa->stream) {
|
||||
/* stop the stream if it is active */
|
||||
if (Pa_IsStreamActive( pa->stream ) == 1) {
|
||||
err = Pa_StopStream( pa->stream );
|
||||
if( err != paNoError ) {
|
||||
error1("Failed to stop PortAudio stream: %s", Pa_GetErrorText( err ));
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
/* and then close the stream */
|
||||
err = Pa_CloseStream( pa->stream );
|
||||
if( err != paNoError ) {
|
||||
error1("Failed to close PortAudio stream: %s", Pa_GetErrorText( err ));
|
||||
return -1;
|
||||
}
|
||||
|
||||
pa->stream = NULL;
|
||||
}
|
||||
|
||||
/* and free memory used by fifo */
|
||||
sfifo_close( &pa->fifo );
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
static void flush_portaudio(audio_output_t *ao)
|
||||
{
|
||||
mpg123_portaudio_t *pa = (mpg123_portaudio_t*)ao->userptr;
|
||||
PaError err;
|
||||
|
||||
/* throw away contents of FIFO */
|
||||
sfifo_flush( &pa->fifo );
|
||||
|
||||
/* and empty out PortAudio buffers */
|
||||
err = Pa_AbortStream( pa->stream );
|
||||
|
||||
}
|
||||
|
||||
|
||||
static int deinit_portaudio(audio_output_t* ao)
|
||||
{
|
||||
/* Free up memory */
|
||||
if (ao->userptr) {
|
||||
free( ao->userptr );
|
||||
ao->userptr = NULL;
|
||||
}
|
||||
|
||||
/* Shut down PortAudio */
|
||||
Pa_Terminate();
|
||||
|
||||
/* Success */
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
static int init_portaudio(audio_output_t* ao)
|
||||
{
|
||||
int err = paNoError;
|
||||
|
||||
if (ao==NULL) return -1;
|
||||
|
||||
/* Set callbacks */
|
||||
ao->open = open_portaudio;
|
||||
ao->flush = flush_portaudio;
|
||||
ao->write = write_portaudio;
|
||||
ao->get_formats = get_formats_portaudio;
|
||||
ao->close = close_portaudio;
|
||||
ao->deinit = deinit_portaudio;
|
||||
|
||||
/* Allocate memory for handle */
|
||||
ao->userptr = malloc( sizeof(mpg123_portaudio_t) );
|
||||
if (ao->userptr==NULL) {
|
||||
error( "Failed to allocated memory for driver structure" );
|
||||
return -1;
|
||||
}
|
||||
memset( ao->userptr, 0, sizeof(mpg123_portaudio_t) );
|
||||
|
||||
/* Initialise PortAudio */
|
||||
err = Pa_Initialize();
|
||||
if( err != paNoError ) {
|
||||
error1("Failed to initialise PortAudio: %s", Pa_GetErrorText( err ));
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* Success */
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
Module information data structure
|
||||
*/
|
||||
mpg123_module_t mpg123_output_module_info = {
|
||||
/* api_version */ MPG123_MODULE_API_VERSION,
|
||||
/* name */ "portaudio",
|
||||
/* description */ "Output audio using PortAudio",
|
||||
/* revision */ "$Rev:$",
|
||||
/* handle */ NULL,
|
||||
|
||||
/* init_output */ init_portaudio,
|
||||
};
|
||||
|
||||
@@ -1,206 +0,0 @@
|
||||
/*
|
||||
sdl: audio output via SDL cross-platform API
|
||||
|
||||
copyright 2006-9 by the mpg123 project - free software under the terms of the LGPL 2.1
|
||||
see COPYING and AUTHORS files in distribution or http://mpg123.org
|
||||
initially written by Nicholas J. Humfrey
|
||||
*/
|
||||
|
||||
#include <math.h>
|
||||
|
||||
#include <SDL.h>
|
||||
|
||||
#include "audio.h"
|
||||
#include "mpg123app.h"
|
||||
#ifdef WIN32
|
||||
#include <windows.h>
|
||||
#endif
|
||||
|
||||
/* Including the sfifo code locally, to avoid module linkage issues. */
|
||||
#define SFIFO_STATIC
|
||||
#include "sfifo.c"
|
||||
|
||||
#include "debug.h"
|
||||
|
||||
|
||||
#define SAMPLE_SIZE (2)
|
||||
#define FRAMES_PER_BUFFER (256)
|
||||
#define FIFO_DURATION (0.5f)
|
||||
|
||||
|
||||
|
||||
|
||||
/* The audio function callback takes the following parameters:
|
||||
stream: A pointer to the audio buffer to be filled
|
||||
len: The length (in bytes) of the audio buffer
|
||||
*/
|
||||
static void audio_callback_sdl(void *udata, Uint8 *stream, int len)
|
||||
{
|
||||
audio_output_t *ao = (audio_output_t*)udata;
|
||||
sfifo_t *fifo = (sfifo_t*)ao->userptr;
|
||||
int bytes_read;
|
||||
|
||||
/* Only play if we have data left */
|
||||
if ( sfifo_used( fifo ) < len ) {
|
||||
warning("Didn't have any audio data for SDL (buffer underflow)");
|
||||
SDL_PauseAudio(1);
|
||||
return;
|
||||
}
|
||||
|
||||
/* Read audio from FIFO to SDL's buffer */
|
||||
bytes_read = sfifo_read( fifo, stream, len );
|
||||
|
||||
if (len!=bytes_read)
|
||||
warning2("Error reading from the FIFO (wanted=%u, bytes_read=%u).\n", len, bytes_read);
|
||||
|
||||
}
|
||||
|
||||
static int open_sdl(audio_output_t *ao)
|
||||
{
|
||||
sfifo_t *fifo = (sfifo_t*)ao->userptr;
|
||||
|
||||
/* Open an audio I/O stream. */
|
||||
if (ao->rate > 0 && ao->channels >0 ) {
|
||||
size_t ringbuffer_len;
|
||||
SDL_AudioSpec wanted;
|
||||
|
||||
/* L16 uncompressed audio data, using 16-bit signed representation in twos
|
||||
complement notation - system endian-ness. */
|
||||
wanted.format = AUDIO_S16SYS;
|
||||
wanted.samples = 1024; /* Good low-latency value for callback */
|
||||
wanted.callback = audio_callback_sdl;
|
||||
wanted.userdata = ao;
|
||||
wanted.channels = ao->channels;
|
||||
wanted.freq = ao->rate;
|
||||
|
||||
/* Open the audio device, forcing the desired format */
|
||||
if ( SDL_OpenAudio(&wanted, NULL) ) {
|
||||
error1("Couldn't open SDL audio: %s\n", SDL_GetError());
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* Initialise FIFO */
|
||||
ringbuffer_len = ao->rate * FIFO_DURATION * SAMPLE_SIZE *ao->channels;
|
||||
debug2( "Allocating %d byte ring-buffer (%f seconds)", (int)ringbuffer_len, (float)FIFO_DURATION);
|
||||
if (sfifo_init( fifo, ringbuffer_len )) error1( "Failed to initialise FIFO of size %d bytes", (int)ringbuffer_len );
|
||||
}
|
||||
|
||||
return(0);
|
||||
}
|
||||
|
||||
|
||||
static int get_formats_sdl(audio_output_t *ao)
|
||||
{
|
||||
/* Only implemented Signed 16-bit audio for now */
|
||||
return MPG123_ENC_SIGNED_16;
|
||||
}
|
||||
|
||||
|
||||
static int write_sdl(audio_output_t *ao, unsigned char *buf, int len)
|
||||
{
|
||||
sfifo_t *fifo = (sfifo_t*)ao->userptr;
|
||||
|
||||
/* Sleep for half the length of the FIFO */
|
||||
while (sfifo_space( fifo ) < len )
|
||||
#ifdef WIN32
|
||||
Sleep( (FIFO_DURATION/2) * 1000);
|
||||
#else
|
||||
usleep( (FIFO_DURATION/2) * 1000000 );
|
||||
#endif
|
||||
|
||||
/* Bung decoded audio into the FIFO
|
||||
SDL Audio locking probably isn't actually needed
|
||||
as SFIFO claims to be thread safe...
|
||||
*/
|
||||
SDL_LockAudio();
|
||||
sfifo_write( fifo, buf, len);
|
||||
SDL_UnlockAudio();
|
||||
|
||||
|
||||
/* Unpause once the buffer is 50% full */
|
||||
if (sfifo_used(fifo) > (sfifo_size(fifo)*0.5) ) SDL_PauseAudio(0);
|
||||
|
||||
return len;
|
||||
}
|
||||
|
||||
static int close_sdl(audio_output_t *ao)
|
||||
{
|
||||
sfifo_t *fifo = (sfifo_t*)ao->userptr;
|
||||
|
||||
SDL_CloseAudio();
|
||||
|
||||
/* Free up the memory used by the FIFO */
|
||||
sfifo_close( fifo );
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void flush_sdl(audio_output_t *ao)
|
||||
{
|
||||
sfifo_t *fifo = (sfifo_t*)ao->userptr;
|
||||
|
||||
SDL_PauseAudio(1);
|
||||
|
||||
sfifo_flush( fifo );
|
||||
}
|
||||
|
||||
|
||||
static int deinit_sdl(audio_output_t* ao)
|
||||
{
|
||||
/* Free up memory */
|
||||
if (ao->userptr) {
|
||||
free( ao->userptr );
|
||||
ao->userptr = NULL;
|
||||
}
|
||||
|
||||
/* Shut down SDL */
|
||||
SDL_Quit();
|
||||
|
||||
/* Success */
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
static int init_sdl(audio_output_t* ao)
|
||||
{
|
||||
if (ao==NULL) return -1;
|
||||
|
||||
/* Set callbacks */
|
||||
ao->open = open_sdl;
|
||||
ao->flush = flush_sdl;
|
||||
ao->write = write_sdl;
|
||||
ao->get_formats = get_formats_sdl;
|
||||
ao->close = close_sdl;
|
||||
ao->deinit = deinit_sdl;
|
||||
|
||||
/* Allocate memory */
|
||||
ao->userptr = malloc( sizeof(sfifo_t) );
|
||||
if (ao->userptr==NULL) {
|
||||
error( "Failed to allocated memory for FIFO structure" );
|
||||
return -1;
|
||||
}
|
||||
memset( ao->userptr, 0, sizeof(sfifo_t) );
|
||||
|
||||
/* Initialise SDL */
|
||||
if (SDL_Init( SDL_INIT_AUDIO ) ) {
|
||||
error1("Failed to initialise SDL: %s\n", SDL_GetError());
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* Success */
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Module information data structure
|
||||
*/
|
||||
mpg123_module_t mpg123_output_module_info = {
|
||||
/* api_version */ MPG123_MODULE_API_VERSION,
|
||||
/* name */ "sdl",
|
||||
/* description */ "Output audio using SDL (Simple DirectMedia Layer).",
|
||||
/* revision */ "$Rev:$",
|
||||
/* handle */ NULL,
|
||||
|
||||
/* init_output */ init_sdl,
|
||||
};
|
||||
@@ -1,213 +0,0 @@
|
||||
/*
|
||||
sgi: audio output on SGI boxen
|
||||
|
||||
copyright ?-2006 by the mpg123 project - free software under the terms of the LGPL 2.1
|
||||
see COPYING and AUTHORS files in distribution or http://mpg123.org
|
||||
initially written (as it seems) by Thomas Woerner
|
||||
*/
|
||||
|
||||
#include <fcntl.h>
|
||||
|
||||
/* #include <audio.h> */
|
||||
#include <dmedia/audio.h>
|
||||
|
||||
#include "mpg123app.h"
|
||||
#include "debug.h"
|
||||
|
||||
|
||||
/* Analog output constant */
|
||||
static const char analog_output_res_name[] = ".AnalogOut";
|
||||
|
||||
|
||||
static int set_rate(audio_output_t *ao, ALconfig config)
|
||||
{
|
||||
int dev = alGetDevice(config);
|
||||
ALpv params[1];
|
||||
|
||||
/* Make sure the device is OK */
|
||||
if (dev < 0)
|
||||
{
|
||||
error1("set_rate: %s",alGetErrorString(oserror()));
|
||||
return 1;
|
||||
}
|
||||
|
||||
params[0].param = AL_OUTPUT_RATE;
|
||||
params[0].value.ll = alDoubleToFixed(ao->rate);
|
||||
|
||||
if (alSetParams(dev, params,1) < 0)
|
||||
error1("set_rate: %s",alGetErrorString(oserror()));
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
static int set_channels(audio_output_t *ao, ALconfig config)
|
||||
{
|
||||
int ret;
|
||||
|
||||
if(ao->channels == 2)
|
||||
ret = alSetChannels(config, AL_STEREO);
|
||||
else
|
||||
ret = alSetChannels(config, AL_MONO);
|
||||
|
||||
if (ret < 0)
|
||||
error1("set_channels : %s",alGetErrorString(oserror()));
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int set_format(audio_output_t *ao, ALconfig config)
|
||||
{
|
||||
if (alSetSampFmt(config,AL_SAMPFMT_TWOSCOMP) < 0)
|
||||
error1("set_format : %s",alGetErrorString(oserror()));
|
||||
|
||||
if (alSetWidth(config,AL_SAMPLE_16) < 0)
|
||||
error1("set_format : %s",alGetErrorString(oserror()));
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
static int open_sgi(audio_output_t *ao)
|
||||
{
|
||||
int dev = AL_DEFAULT_OUTPUT;
|
||||
ALconfig config = alNewConfig();
|
||||
ALport port = NULL;
|
||||
|
||||
/* Test for correct completion */
|
||||
if (config == 0) {
|
||||
error1("open_sgi: %s",alGetErrorString(oserror()));
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* Set port parameters */
|
||||
if(ao->channels == 2)
|
||||
alSetChannels(config, AL_STEREO);
|
||||
else
|
||||
alSetChannels(config, AL_MONO);
|
||||
|
||||
alSetWidth(config, AL_SAMPLE_16);
|
||||
alSetSampFmt(config,AL_SAMPFMT_TWOSCOMP);
|
||||
alSetQueueSize(config, 131069);
|
||||
|
||||
/* Setup output device to specified module. If there is no module
|
||||
specified in ao structure, use the default four output */
|
||||
if ((ao->device) != NULL) {
|
||||
char *dev_name;
|
||||
|
||||
dev_name=malloc((strlen(ao->device) + strlen(analog_output_res_name) + 1) *
|
||||
sizeof(char));
|
||||
|
||||
strcpy(dev_name,ao->device);
|
||||
strcat(dev_name,analog_output_res_name);
|
||||
|
||||
/* Find the asked device resource */
|
||||
dev=alGetResourceByName(AL_SYSTEM,dev_name,AL_DEVICE_TYPE);
|
||||
|
||||
/* Free allocated space */
|
||||
free(dev_name);
|
||||
|
||||
if (!dev) {
|
||||
error2("Invalid audio resource: %s (%s)",dev_name, alGetErrorString(oserror()));
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
/* Set the device */
|
||||
if (alSetDevice(config,dev) < 0)
|
||||
{
|
||||
error1("open_sgi: %s",alGetErrorString(oserror()));
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* Open the audio port */
|
||||
port = alOpenPort("mpg123-VSC", "w", config);
|
||||
if(port == NULL) {
|
||||
error1("Unable to open audio channel: %s", alGetErrorString(oserror()));
|
||||
return -1;
|
||||
}
|
||||
|
||||
ao->userptr = (void*)port;
|
||||
|
||||
|
||||
set_format(ao, config);
|
||||
set_channels(ao, config);
|
||||
set_rate(ao, config);
|
||||
|
||||
|
||||
alFreeConfig(config);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
static int get_formats_sgi(audio_output_t *ao)
|
||||
{
|
||||
return MPG123_ENC_SIGNED_16;
|
||||
}
|
||||
|
||||
|
||||
static int write_sgi(audio_output_t *ao,unsigned char *buf,int len)
|
||||
{
|
||||
ALport port = (ALport)ao->userptr;
|
||||
|
||||
if(ao->format == MPG123_ENC_SIGNED_8)
|
||||
alWriteFrames(port, buf, len>>1);
|
||||
else
|
||||
alWriteFrames(port, buf, len>>2);
|
||||
|
||||
return len;
|
||||
}
|
||||
|
||||
|
||||
static int close_sgi(audio_output_t *ao)
|
||||
{
|
||||
ALport port = (ALport)ao->userptr;
|
||||
|
||||
if (port) {
|
||||
while(alGetFilled(port) > 0) sginap(1);
|
||||
alClosePort(port);
|
||||
ao->userptr=NULL;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void flush_sgi(audio_output_t *ao)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
static int init_sgi(audio_output_t* ao)
|
||||
{
|
||||
if (ao==NULL) return -1;
|
||||
|
||||
/* Set callbacks */
|
||||
ao->open = open_sgi;
|
||||
ao->flush = flush_sgi;
|
||||
ao->write = write_sgi;
|
||||
ao->get_formats = get_formats_sgi;
|
||||
ao->close = close_sgi;
|
||||
|
||||
/* Success */
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/*
|
||||
Module information data structure
|
||||
*/
|
||||
mpg123_module_t mpg123_output_module_info = {
|
||||
/* api_version */ MPG123_MODULE_API_VERSION,
|
||||
/* name */ "sgi",
|
||||
/* description */ "Audio output for SGI.",
|
||||
/* revision */ "$Rev:$",
|
||||
/* handle */ NULL,
|
||||
|
||||
/* init_output */ init_sgi,
|
||||
};
|
||||
|
||||
|
||||
@@ -1,229 +0,0 @@
|
||||
/*
|
||||
win32: audio output for Windows 32bit
|
||||
|
||||
copyright ?-2007 by the mpg123 project - free software under the terms of the LGPL 2.1
|
||||
see COPYING and AUTHORS files in distribution or http://mpg123.org
|
||||
|
||||
initially written (as it seems) by Tony Million
|
||||
rewrite of basic functionality for callback-less and properly ringbuffered operation by ravenexp
|
||||
*/
|
||||
|
||||
#include "mpg123app.h"
|
||||
#include <windows.h>
|
||||
#include "debug.h"
|
||||
|
||||
/*
|
||||
Buffer size and number of buffers in the playback ring
|
||||
NOTE: This particular num/size combination performs best under heavy
|
||||
loads for my system, however this may not be true for any hardware/OS out there.
|
||||
Generally, BUFFER_SIZE < 8k || NUM_BUFFERS > 16 || NUM_BUFFERS < 4 are not recommended.
|
||||
*/
|
||||
#define BUFFER_SIZE 0x10000
|
||||
#define NUM_BUFFERS 8 /* total 512k roughly 2.5 sec of CD quality sound */
|
||||
|
||||
/* Buffer ring queue state */
|
||||
struct queue_state
|
||||
{
|
||||
WAVEHDR buffer_headers[NUM_BUFFERS];
|
||||
/* The next buffer to be filled and put in playback */
|
||||
int next_buffer;
|
||||
/* Buffer playback completion event */
|
||||
HANDLE play_done_event;
|
||||
HWAVEOUT waveout;
|
||||
};
|
||||
|
||||
static int open_win32(struct audio_output_struct *ao)
|
||||
{
|
||||
struct queue_state* state;
|
||||
int i;
|
||||
MMRESULT res;
|
||||
WAVEFORMATEX out_fmt;
|
||||
UINT dev_id;
|
||||
|
||||
if(!ao) return -1;
|
||||
if(ao->rate == -1) return 0;
|
||||
|
||||
/* Allocate queue state struct for this device */
|
||||
state = calloc(1, sizeof(struct queue_state));
|
||||
if(!state) return -1;
|
||||
|
||||
ao->userptr = state;
|
||||
/* Allocate playback buffers */
|
||||
for(i = 0; i < NUM_BUFFERS; i++)
|
||||
if(!(state->buffer_headers[i].lpData = malloc(BUFFER_SIZE)))
|
||||
ereturn(-1, "Out of memory for playback buffers.");
|
||||
|
||||
state->play_done_event = CreateEvent(0,FALSE,FALSE,0);
|
||||
if(state->play_done_event == INVALID_HANDLE_VALUE) return -1;
|
||||
|
||||
/* FIXME: real device enumeration by capabilities? */
|
||||
dev_id = WAVE_MAPPER; /* probably does the same thing */
|
||||
ao->device = "WaveMapper";
|
||||
/* FIXME: support for smth besides MPG123_ENC_SIGNED_16? */
|
||||
out_fmt.wFormatTag = WAVE_FORMAT_PCM;
|
||||
out_fmt.wBitsPerSample = 16;
|
||||
out_fmt.nChannels = ao->channels;
|
||||
out_fmt.nSamplesPerSec = ao->rate;
|
||||
out_fmt.nBlockAlign = out_fmt.nChannels*out_fmt.wBitsPerSample/8;
|
||||
out_fmt.nAvgBytesPerSec = out_fmt.nBlockAlign*out_fmt.nSamplesPerSec;
|
||||
out_fmt.cbSize = 0;
|
||||
|
||||
res = waveOutOpen(&state->waveout, dev_id, &out_fmt,
|
||||
(DWORD_PTR)state->play_done_event, 0, CALLBACK_EVENT);
|
||||
|
||||
switch(res)
|
||||
{
|
||||
case MMSYSERR_NOERROR:
|
||||
break;
|
||||
case MMSYSERR_ALLOCATED:
|
||||
ereturn(-1, "Audio output device is already allocated.");
|
||||
case MMSYSERR_NODRIVER:
|
||||
ereturn(-1, "No device driver is present.");
|
||||
case MMSYSERR_NOMEM:
|
||||
ereturn(-1, "Unable to allocate or lock memory.");
|
||||
case WAVERR_BADFORMAT:
|
||||
ereturn(-1, "Unsupported waveform-audio format.");
|
||||
default:
|
||||
ereturn(-1, "Unable to open wave output device.");
|
||||
}
|
||||
|
||||
/* Reset event from the "device open" message */
|
||||
ResetEvent(state->play_done_event);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int get_formats_win32(struct audio_output_struct *ao)
|
||||
{
|
||||
/* FIXME: support for smth besides MPG123_ENC_SIGNED_16? */
|
||||
return MPG123_ENC_SIGNED_16;
|
||||
}
|
||||
|
||||
/* Stores audio data to the fixed size buffers and pushes them into the playback queue.
|
||||
I have one grief with that: The last piece of a track may not reach the output,
|
||||
only full buffers sent... But we don't get smooth audio otherwise. */
|
||||
static int write_win32(struct audio_output_struct *ao, unsigned char *buf, int len)
|
||||
{
|
||||
struct queue_state* state;
|
||||
MMRESULT res;
|
||||
WAVEHDR* hdr;
|
||||
|
||||
int rest_len; /* Input data bytes left for next recursion. */
|
||||
int bufill; /* Bytes we stuff into buffer now. */
|
||||
|
||||
if(!ao || !ao->userptr) return -1;
|
||||
if(!buf || len <= 0) return 0;
|
||||
|
||||
state = (struct queue_state*)ao->userptr;
|
||||
hdr = &state->buffer_headers[state->next_buffer];
|
||||
|
||||
/* Check buffer header and wait if it's being played.
|
||||
Skip waiting if the buffer is not full yet */
|
||||
while(hdr->dwBufferLength == BUFFER_SIZE && !(hdr->dwFlags & WHDR_DONE))
|
||||
{
|
||||
/* debug1("waiting for buffer %i...", state->next_buffer); */
|
||||
WaitForSingleObject(state->play_done_event, INFINITE);
|
||||
}
|
||||
|
||||
/* If it was a full buffer being played, clean up. */
|
||||
if(hdr->dwFlags & WHDR_DONE)
|
||||
{
|
||||
waveOutUnprepareHeader(state->waveout, hdr, sizeof(WAVEHDR));
|
||||
hdr->dwFlags = 0;
|
||||
hdr->dwBufferLength = 0;
|
||||
}
|
||||
|
||||
/* Now see how much we want to stuff in and then stuff it in. */
|
||||
bufill = BUFFER_SIZE - hdr->dwBufferLength;
|
||||
if(len < bufill) bufill = len;
|
||||
|
||||
rest_len = len - bufill;
|
||||
memcpy(hdr->lpData + hdr->dwBufferLength, buf, bufill);
|
||||
hdr->dwBufferLength += bufill;
|
||||
if(hdr->dwBufferLength == BUFFER_SIZE)
|
||||
{ /* Send the buffer out when it's full. */
|
||||
res = waveOutPrepareHeader(state->waveout, hdr, sizeof(WAVEHDR));
|
||||
if(res != MMSYSERR_NOERROR) ereturn(-1, "Can't write to audio output device (prepare).");
|
||||
|
||||
res = waveOutWrite(state->waveout, hdr, sizeof(WAVEHDR));
|
||||
if(res != MMSYSERR_NOERROR) ereturn(-1, "Can't write to audio output device.");
|
||||
|
||||
/* Cycle to the next buffer in the ring queue */
|
||||
state->next_buffer = (state->next_buffer + 1) % NUM_BUFFERS;
|
||||
}
|
||||
/* I'd like to propagate error codes or something... but there are no catchable surprises left.
|
||||
Anyhow: Here is the recursion that makes ravenexp happy;-) */
|
||||
if(rest_len && write_win32(ao, buf + bufill, rest_len) < 0) /* Write the rest. */
|
||||
return -1;
|
||||
else
|
||||
return len;
|
||||
}
|
||||
|
||||
static void flush_win32(struct audio_output_struct *ao)
|
||||
{
|
||||
int i, z;
|
||||
struct queue_state* state;
|
||||
|
||||
if(!ao || !ao->userptr) return;
|
||||
state = (struct queue_state*)ao->userptr;
|
||||
|
||||
/* FIXME: The very last output buffer is not played. This could be a problem on the feeding side. */
|
||||
i = 0;
|
||||
z = state->next_buffer - 1;
|
||||
for(i = 0; i < NUM_BUFFERS; i++)
|
||||
{
|
||||
if(!state->buffer_headers[i].dwFlags & WHDR_DONE)
|
||||
WaitForSingleObject(state->play_done_event, INFINITE);
|
||||
|
||||
waveOutUnprepareHeader(state->waveout, &state->buffer_headers[i], sizeof(WAVEHDR));
|
||||
state->buffer_headers[i].dwFlags = 0;
|
||||
state->buffer_headers[i].dwBufferLength = 0;
|
||||
z = (z + 1) % NUM_BUFFERS;
|
||||
}
|
||||
}
|
||||
|
||||
static int close_win32(struct audio_output_struct *ao)
|
||||
{
|
||||
int i;
|
||||
struct queue_state* state;
|
||||
|
||||
if(!ao || !ao->userptr) return -1;
|
||||
state = (struct queue_state*)ao->userptr;
|
||||
|
||||
flush_win32(ao);
|
||||
waveOutClose(state->waveout);
|
||||
CloseHandle(state->play_done_event);
|
||||
|
||||
for(i = 0; i < NUM_BUFFERS; i++) free(state->buffer_headers[i].lpData);
|
||||
|
||||
free(ao->userptr);
|
||||
ao->userptr = 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int init_win32(audio_output_t* ao)
|
||||
{
|
||||
if(!ao) return -1;
|
||||
|
||||
/* Set callbacks */
|
||||
ao->open = open_win32;
|
||||
ao->flush = flush_win32;
|
||||
ao->write = write_win32;
|
||||
ao->get_formats = get_formats_win32;
|
||||
ao->close = close_win32;
|
||||
|
||||
/* Success */
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
Module information data structure
|
||||
*/
|
||||
mpg123_module_t mpg123_output_module_info = {
|
||||
/* api_version */ MPG123_MODULE_API_VERSION,
|
||||
/* name */ "win32",
|
||||
/* description */ "Audio output for Windows (winmm).",
|
||||
/* revision */ "$Rev:$",
|
||||
/* handle */ NULL,
|
||||
|
||||
/* init_output */ init_win32,
|
||||
};
|
||||
@@ -1,52 +0,0 @@
|
||||
/*
|
||||
playlist: playlist logic
|
||||
|
||||
copyright 1995-2007 by the mpg123 project - free software under the terms of the LGPL 2.1
|
||||
see COPYING and AUTHORS files in distribution or http://mpg123.org
|
||||
initially written by Michael Hipp, outsourced/reorganized by Thomas Orgis
|
||||
*/
|
||||
#ifndef MPG123_PLAYLIST_H
|
||||
#define MPG123_PLAYLIST_H
|
||||
|
||||
#include "mpg123app.h"
|
||||
|
||||
enum playlist_type { UNKNOWN = 0, M3U, PLS, NO_LIST };
|
||||
|
||||
typedef struct listitem
|
||||
{
|
||||
char* url; /* the filename */
|
||||
char freeit; /* if it was allocated and should be free()d here */
|
||||
size_t playcount; /* has been played as ...th track in overall counting */
|
||||
} listitem;
|
||||
|
||||
typedef struct playlist_struct
|
||||
{
|
||||
FILE* file; /* the current playlist stream */
|
||||
size_t entry; /* entry in the playlist file */
|
||||
size_t playcount; /* overall track counter for playback */
|
||||
long loop; /* repeat a track n times */
|
||||
size_t size;
|
||||
size_t fill;
|
||||
size_t pos;
|
||||
size_t alloc_step;
|
||||
struct listitem* list;
|
||||
mpg123_string linebuf;
|
||||
mpg123_string dir;
|
||||
enum playlist_type type;
|
||||
#if defined (WANT_WIN32_SOCKETS)
|
||||
int sockd; /* Is Win32 socket descriptor working? */
|
||||
#endif
|
||||
} playlist_struct;
|
||||
|
||||
extern struct playlist_struct pl;
|
||||
|
||||
/* create playlist form argv including reading of playlist file */
|
||||
void prepare_playlist(int argc, char** argv);
|
||||
/* returns the next url to play or NULL when there is none left */
|
||||
char *get_next_file();
|
||||
/* frees memory that got allocated in prepare_playlist */
|
||||
void free_playlist();
|
||||
/* Print out the playlist, with optional position indicator. */
|
||||
void print_playlist(FILE* out, int showpos);
|
||||
|
||||
#endif
|
||||
@@ -1,472 +0,0 @@
|
||||
/*
|
||||
wav.c: write wav files
|
||||
|
||||
copyright ?-2012 by the mpg123 project - free software under the terms of the LGPL 2.1
|
||||
see COPYING and AUTHORS files in distribution or http://mpg123.org
|
||||
initially written by Samuel Audet
|
||||
|
||||
Geez, why are WAV RIFF headers are so secret? I got something together,
|
||||
but wow... anyway, I hope someone will find this useful.
|
||||
- Samuel Audet
|
||||
|
||||
minor simplifications and ugly AU/CDR format stuff by MH
|
||||
|
||||
It's not a very clean code ... Fix this!
|
||||
|
||||
ThOr: The usage of stdio streams means we loose control over what data is actually written. On a full disk, fwrite() happily suceeds for ages, only a fflush fails.
|
||||
Now: Do we want to fflush() after every write? That defeats the purpose of buffered I/O. So, switching to good old write() is an option (kernel doing disk buffering anyway).
|
||||
|
||||
TODO: convert fully to tab indent
|
||||
*/
|
||||
|
||||
#include "mpg123app.h"
|
||||
#include <errno.h>
|
||||
#include "debug.h"
|
||||
|
||||
/* Create the two WAV headers. */
|
||||
|
||||
#define WAVE_FORMAT 1
|
||||
#define RIFF_NAME RIFF
|
||||
#include "wavhead.h"
|
||||
|
||||
#undef WAVE_FORMAT
|
||||
#undef RIFF_NAME
|
||||
#define WAVE_FORMAT 3
|
||||
#define RIFF_NAME RIFF_FLOAT
|
||||
#define FLOATOUT
|
||||
#include "wavhead.h"
|
||||
|
||||
/* AU header struct... */
|
||||
|
||||
struct auhead {
|
||||
byte magic[4];
|
||||
byte headlen[4];
|
||||
byte datalen[4];
|
||||
byte encoding[4];
|
||||
byte rate[4];
|
||||
byte channels[4];
|
||||
byte dummy[8];
|
||||
} auhead = {
|
||||
{ 0x2e,0x73,0x6e,0x64 } , { 0x00,0x00,0x00,0x20 } ,
|
||||
{ 0xff,0xff,0xff,0xff } , { 0,0,0,0 } , { 0,0,0,0 } , { 0,0,0,0 } ,
|
||||
{ 0,0,0,0,0,0,0,0 }};
|
||||
|
||||
|
||||
static FILE *wavfp;
|
||||
static long datalen = 0;
|
||||
static int flipendian=0;
|
||||
int bytes_per_sample = -1;
|
||||
int floatwav = 0; /* If we write a floating point WAV file. */
|
||||
|
||||
/* Open routines only prepare a header, stored here and written on first actual
|
||||
data write. If no data is written at all, proper files will still get a
|
||||
header via the update at closing; non-seekable streams will just have no
|
||||
no header if there is no data. */
|
||||
void *the_header = NULL;
|
||||
size_t the_header_size = 0;
|
||||
|
||||
/* Convertfunctions: */
|
||||
/* always little endian */
|
||||
|
||||
static void long2littleendian(long inval,byte *outval,int b)
|
||||
{
|
||||
int i;
|
||||
for(i=0;i<b;i++) {
|
||||
outval[i] = (inval>>(i*8)) & 0xff;
|
||||
}
|
||||
}
|
||||
|
||||
/* always big endian */
|
||||
static void long2bigendian(long inval,byte *outval,int b)
|
||||
{
|
||||
int i;
|
||||
for(i=0;i<b;i++) {
|
||||
outval[i] = (inval>>((b-i-1)*8)) & 0xff;
|
||||
}
|
||||
}
|
||||
|
||||
static long from_little(byte *inval, int b)
|
||||
{
|
||||
long ret = 0;
|
||||
int i;
|
||||
for(i=0;i<b;++i) ret += ((long)inval[i])<<(i*8);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int testEndian(void)
|
||||
{
|
||||
long i,a=0,b=0,c=0;
|
||||
int ret = 0;
|
||||
|
||||
for(i=0;i<sizeof(long);i++) {
|
||||
((byte *)&a)[i] = i;
|
||||
b<<=8;
|
||||
b |= i;
|
||||
c |= i << (i*8);
|
||||
}
|
||||
if(a == b)
|
||||
ret = 1;
|
||||
else if(a != c) {
|
||||
error3("Strange endianness?? %08lx %08lx %08lx\n",a,b,c);
|
||||
ret = -1;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int open_file(char *filename)
|
||||
{
|
||||
#if defined(HAVE_SETUID) && defined(HAVE_GETUID)
|
||||
setuid(getuid()); /* dunno whether this helps. I'm not a security expert */
|
||||
#endif
|
||||
if(!strcmp("-",filename)) {
|
||||
wavfp = stdout;
|
||||
/* If stdout is redirected to a file, seeks suddenly can work.
|
||||
Doing one here to ensure that such a file has the same output
|
||||
it had when opening directly as such. */
|
||||
fseek(wavfp, 0L, SEEK_SET);
|
||||
return 0;
|
||||
}
|
||||
else {
|
||||
#ifdef WANT_WIN32_UNICODE
|
||||
wchar_t *filenamew = NULL;
|
||||
win32_utf8_wide(filename, &filenamew, NULL);
|
||||
if(filenamew == NULL) {
|
||||
wavfp = NULL;
|
||||
} else {
|
||||
wavfp = _wfopen(filenamew,L"wb");
|
||||
free(filenamew);
|
||||
}
|
||||
#else
|
||||
wavfp = fopen(filename,"wb");
|
||||
#endif
|
||||
if(!wavfp)
|
||||
return -1;
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
static int close_file()
|
||||
{
|
||||
if(wavfp != NULL && wavfp != stdout)
|
||||
{
|
||||
if(fclose(wavfp))
|
||||
{
|
||||
error1("problem closing the audio file, probably because of flushing to disk: %s\n", strerror(errno));
|
||||
return -1;
|
||||
}
|
||||
else return 0;
|
||||
}
|
||||
|
||||
wavfp = NULL;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int write_header(const void*ptr, size_t size)
|
||||
{
|
||||
if(fwrite(ptr, size, 1, wavfp) != 1 || fflush(wavfp))
|
||||
{
|
||||
error1("cannot write header: %s", strerror(errno));
|
||||
return -1;
|
||||
}
|
||||
else return 0;
|
||||
}
|
||||
|
||||
int au_open(audio_output_t *ao)
|
||||
{
|
||||
if(ao->format < 0) ao->format = MPG123_ENC_SIGNED_16;
|
||||
|
||||
if(ao->format & MPG123_ENC_FLOAT)
|
||||
{
|
||||
error("AU file support for float values not there yet");
|
||||
return -1;
|
||||
}
|
||||
|
||||
flipendian = 0;
|
||||
|
||||
if(ao->rate < 0) ao->rate = 44100;
|
||||
if(ao->channels < 0) ao->channels = 2;
|
||||
|
||||
switch(ao->format) {
|
||||
case MPG123_ENC_SIGNED_16:
|
||||
{
|
||||
int endiantest = testEndian();
|
||||
if(endiantest == -1) return -1;
|
||||
flipendian = !endiantest; /* big end */
|
||||
long2bigendian(3,auhead.encoding,sizeof(auhead.encoding));
|
||||
}
|
||||
break;
|
||||
case MPG123_ENC_UNSIGNED_8:
|
||||
ao->format = MPG123_ENC_ULAW_8;
|
||||
case MPG123_ENC_ULAW_8:
|
||||
long2bigendian(1,auhead.encoding,sizeof(auhead.encoding));
|
||||
break;
|
||||
default:
|
||||
error("AU output is only a hack. This audio mode isn't supported yet.");
|
||||
return -1;
|
||||
}
|
||||
|
||||
long2bigendian(0xffffffff,auhead.datalen,sizeof(auhead.datalen));
|
||||
long2bigendian(ao->rate,auhead.rate,sizeof(auhead.rate));
|
||||
long2bigendian(ao->channels,auhead.channels,sizeof(auhead.channels));
|
||||
|
||||
if(open_file(ao->device) < 0)
|
||||
return -1;
|
||||
|
||||
datalen = 0;
|
||||
|
||||
the_header = &auhead;
|
||||
the_header_size = sizeof(auhead);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int cdr_open(audio_output_t *ao)
|
||||
{
|
||||
if(ao->format < 0 && ao->rate < 0 && ao->channels < 0)
|
||||
{
|
||||
/* param.force_stereo = 0; */
|
||||
ao->format = MPG123_ENC_SIGNED_16;
|
||||
ao->rate = 44100;
|
||||
ao->channels = 2;
|
||||
}
|
||||
if(ao->format != MPG123_ENC_SIGNED_16 || ao->rate != 44100 || ao->channels != 2) {
|
||||
fprintf(stderr,"Oops .. not forced to 16 bit, 44kHz?, stereo\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
flipendian = !testEndian(); /* big end */
|
||||
|
||||
|
||||
if(open_file(ao->device) < 0)
|
||||
return -1;
|
||||
|
||||
the_header = NULL;
|
||||
the_header_size = 0;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int wav_open(audio_output_t *ao)
|
||||
{
|
||||
int bps;
|
||||
|
||||
if(ao->format < 0) ao->format = MPG123_ENC_SIGNED_16;
|
||||
|
||||
flipendian = 0;
|
||||
|
||||
/* standard MS PCM, and its format specific is BitsPerSample */
|
||||
long2littleendian(1,RIFF.WAVE.fmt.FormatTag,sizeof(RIFF.WAVE.fmt.FormatTag));
|
||||
floatwav = 0;
|
||||
if(ao->format == MPG123_ENC_FLOAT_32)
|
||||
{
|
||||
floatwav = 1;
|
||||
long2littleendian(3,RIFF_FLOAT.WAVE.fmt.FormatTag,sizeof(RIFF_FLOAT.WAVE.fmt.FormatTag));
|
||||
long2littleendian(bps=32,RIFF_FLOAT.WAVE.fmt.BitsPerSample,sizeof(RIFF_FLOAT.WAVE.fmt.BitsPerSample));
|
||||
flipendian = testEndian();
|
||||
}
|
||||
else if(ao->format == MPG123_ENC_SIGNED_32) {
|
||||
long2littleendian(bps=32,RIFF.WAVE.fmt.BitsPerSample,sizeof(RIFF.WAVE.fmt.BitsPerSample));
|
||||
flipendian = testEndian();
|
||||
}
|
||||
else if(ao->format == MPG123_ENC_SIGNED_24) {
|
||||
long2littleendian(bps=24,RIFF.WAVE.fmt.BitsPerSample,sizeof(RIFF.WAVE.fmt.BitsPerSample));
|
||||
flipendian = testEndian();
|
||||
}
|
||||
else if(ao->format == MPG123_ENC_SIGNED_16) {
|
||||
long2littleendian(bps=16,RIFF.WAVE.fmt.BitsPerSample,sizeof(RIFF.WAVE.fmt.BitsPerSample));
|
||||
flipendian = testEndian();
|
||||
}
|
||||
else if(ao->format == MPG123_ENC_UNSIGNED_8)
|
||||
long2littleendian(bps=8,RIFF.WAVE.fmt.BitsPerSample,sizeof(RIFF.WAVE.fmt.BitsPerSample));
|
||||
else
|
||||
{
|
||||
error("Format not supported.");
|
||||
return -1;
|
||||
}
|
||||
|
||||
if(ao->rate < 0) ao->rate = 44100;
|
||||
if(ao->channels < 0) ao->channels = 2;
|
||||
|
||||
if(floatwav)
|
||||
{
|
||||
long2littleendian(ao->channels,RIFF_FLOAT.WAVE.fmt.Channels,sizeof(RIFF_FLOAT.WAVE.fmt.Channels));
|
||||
long2littleendian(ao->rate,RIFF_FLOAT.WAVE.fmt.SamplesPerSec,sizeof(RIFF_FLOAT.WAVE.fmt.SamplesPerSec));
|
||||
long2littleendian((int)(ao->channels * ao->rate * bps)>>3,
|
||||
RIFF_FLOAT.WAVE.fmt.AvgBytesPerSec,sizeof(RIFF_FLOAT.WAVE.fmt.AvgBytesPerSec));
|
||||
long2littleendian((int)(ao->channels * bps)>>3,
|
||||
RIFF_FLOAT.WAVE.fmt.BlockAlign,sizeof(RIFF_FLOAT.WAVE.fmt.BlockAlign));
|
||||
}
|
||||
else
|
||||
{
|
||||
long2littleendian(ao->channels,RIFF.WAVE.fmt.Channels,sizeof(RIFF.WAVE.fmt.Channels));
|
||||
long2littleendian(ao->rate,RIFF.WAVE.fmt.SamplesPerSec,sizeof(RIFF.WAVE.fmt.SamplesPerSec));
|
||||
long2littleendian((int)(ao->channels * ao->rate * bps)>>3,
|
||||
RIFF.WAVE.fmt.AvgBytesPerSec,sizeof(RIFF.WAVE.fmt.AvgBytesPerSec));
|
||||
long2littleendian((int)(ao->channels * bps)>>3,
|
||||
RIFF.WAVE.fmt.BlockAlign,sizeof(RIFF.WAVE.fmt.BlockAlign));
|
||||
}
|
||||
|
||||
if(open_file(ao->device) < 0)
|
||||
return -1;
|
||||
|
||||
if(floatwav)
|
||||
{
|
||||
long2littleendian(datalen,RIFF_FLOAT.WAVE.data.datalen,sizeof(RIFF_FLOAT.WAVE.data.datalen));
|
||||
long2littleendian(datalen+sizeof(RIFF_FLOAT.WAVE),RIFF_FLOAT.WAVElen,sizeof(RIFF_FLOAT.WAVElen));
|
||||
}
|
||||
else
|
||||
{
|
||||
long2littleendian(datalen,RIFF.WAVE.data.datalen,sizeof(RIFF.WAVE.data.datalen));
|
||||
long2littleendian(datalen+sizeof(RIFF.WAVE),RIFF.WAVElen,sizeof(RIFF.WAVElen));
|
||||
}
|
||||
|
||||
if(floatwav)
|
||||
{
|
||||
the_header = &RIFF_FLOAT;
|
||||
the_header_size = sizeof(RIFF_FLOAT);
|
||||
}
|
||||
else
|
||||
{
|
||||
the_header = &RIFF;
|
||||
the_header_size = sizeof(RIFF);
|
||||
}
|
||||
|
||||
datalen = 0;
|
||||
bytes_per_sample = bps>>3;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int wav_write(unsigned char *buf,int len)
|
||||
{
|
||||
int temp;
|
||||
int i;
|
||||
|
||||
if(!wavfp)
|
||||
return 0;
|
||||
|
||||
if(datalen == 0)
|
||||
{
|
||||
if(write_header(the_header, the_header_size) < 0) return 0;
|
||||
}
|
||||
|
||||
if(flipendian)
|
||||
{
|
||||
if(bytes_per_sample == 4) /* 32 bit */
|
||||
{
|
||||
if(len & 3)
|
||||
{
|
||||
error("Number of bytes no multiple of 4 (32bit)!");
|
||||
return 0;
|
||||
}
|
||||
for(i=0;i<len;i+=4)
|
||||
{
|
||||
int j;
|
||||
unsigned char tmp[4];
|
||||
for(j = 0; j<=3; ++j) tmp[j] = buf[i+j];
|
||||
for(j = 0; j<=3; ++j) buf[i+j] = tmp[3-j];
|
||||
}
|
||||
}
|
||||
else /* 16 bit */
|
||||
{
|
||||
if(len & 1)
|
||||
{
|
||||
error("Odd number of bytes!");
|
||||
return 0;
|
||||
}
|
||||
for(i=0;i<len;i+=2)
|
||||
{
|
||||
unsigned char tmp;
|
||||
tmp = buf[i+0];
|
||||
buf[i+0] = buf[i+1];
|
||||
buf[i+1] = tmp;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
temp = fwrite(buf, 1, len, wavfp);
|
||||
if(temp <= 0)
|
||||
return 0;
|
||||
/* That would kill it of early when running out of disk space. */
|
||||
#if 0
|
||||
if(fflush(wavfp))
|
||||
{
|
||||
fprintf(stderr, "flushing failed: %s\n", strerror(errno));
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
datalen += temp;
|
||||
|
||||
return temp;
|
||||
}
|
||||
|
||||
int wav_close(void)
|
||||
{
|
||||
if(!wavfp) return 0;
|
||||
|
||||
/* flush before seeking to catch out-of-disk explicitly at least at the end */
|
||||
if(fflush(wavfp))
|
||||
{
|
||||
error1("cannot flush WAV stream: %s", strerror(errno));
|
||||
fclose(wavfp);
|
||||
return -1;
|
||||
}
|
||||
if(fseek(wavfp, 0L, SEEK_SET) >= 0)
|
||||
{
|
||||
if(floatwav)
|
||||
{
|
||||
long2littleendian(datalen,RIFF_FLOAT.WAVE.data.datalen,sizeof(RIFF_FLOAT.WAVE.data.datalen));
|
||||
long2littleendian(datalen+sizeof(RIFF_FLOAT.WAVE),RIFF_FLOAT.WAVElen,sizeof(RIFF_FLOAT.WAVElen));
|
||||
long2littleendian(datalen/(from_little(RIFF_FLOAT.WAVE.fmt.Channels,2)*from_little(RIFF_FLOAT.WAVE.fmt.BitsPerSample,2)/8),
|
||||
RIFF_FLOAT.WAVE.fact.samplelen,sizeof(RIFF_FLOAT.WAVE.fact.samplelen));
|
||||
/* Always (over)writing the header here; also for stdout, when fseek worked, this overwrite works. */
|
||||
write_header(&RIFF_FLOAT, sizeof(RIFF_FLOAT));
|
||||
}
|
||||
else
|
||||
{
|
||||
long2littleendian(datalen,RIFF.WAVE.data.datalen,sizeof(RIFF.WAVE.data.datalen));
|
||||
long2littleendian(datalen+sizeof(RIFF.WAVE),RIFF.WAVElen,sizeof(RIFF.WAVElen));
|
||||
/* Always (over)writing the header here; also for stdout, when fseek worked, this overwrite works. */
|
||||
write_header(&RIFF, sizeof(RIFF));
|
||||
}
|
||||
}
|
||||
else
|
||||
warning("Cannot rewind WAV file. File-format isn't fully conform now.");
|
||||
|
||||
return close_file();
|
||||
}
|
||||
|
||||
int au_close(void)
|
||||
{
|
||||
if(!wavfp)
|
||||
return 0;
|
||||
|
||||
/* flush before seeking to catch out-of-disk explicitly at least at the end */
|
||||
if(fflush(wavfp))
|
||||
{
|
||||
error1("cannot flush WAV stream: %s", strerror(errno));
|
||||
fclose(wavfp);
|
||||
return -1;
|
||||
}
|
||||
if(fseek(wavfp, 0L, SEEK_SET) >= 0) {
|
||||
long2bigendian(datalen,auhead.datalen,sizeof(auhead.datalen));
|
||||
/* Always (over)writing the header here; also for stdout, when fseek worked, this overwrite works. */
|
||||
write_header(&auhead, sizeof(auhead));
|
||||
}
|
||||
else
|
||||
warning("Cannot rewind AU file. File-format isn't fully conform now.");
|
||||
|
||||
return close_file();
|
||||
}
|
||||
|
||||
int cdr_close(void)
|
||||
{
|
||||
if(!wavfp) return 0;
|
||||
|
||||
return close_file();
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,74 +0,0 @@
|
||||
/*
|
||||
xfermem: unidirectional fast pipe
|
||||
|
||||
copyright ?-2006 by the mpg123 project - free software under the terms of the LGPL 2.1
|
||||
see COPYING and AUTHORS files in distribution or http://mpg123.org
|
||||
initially written by Oliver Fromme
|
||||
old timestamp: Sat Mar 29 04:41:34 MET 1997
|
||||
|
||||
This is a stand-alone module which implements a unidirectional,
|
||||
fast pipe using mmap(). Its primary use is to transfer large
|
||||
amounts of data from a parent process to its child process,
|
||||
with a buffer in between which decouples blocking conditions
|
||||
on both sides. Control information is transferred between the
|
||||
processes through a socketpair. See xftest.c for an example on
|
||||
how to use this module.
|
||||
|
||||
note: xftest not there anymore
|
||||
*/
|
||||
|
||||
#ifndef _XFERMEM_H_
|
||||
#define _XFERMEM_H_
|
||||
|
||||
#ifndef TRUE
|
||||
#define FALSE 0
|
||||
#define TRUE 1
|
||||
#endif
|
||||
|
||||
typedef struct {
|
||||
size_t freeindex; /* [W] next free index */
|
||||
size_t readindex; /* [R] next index to read */
|
||||
int fd[2];
|
||||
int wakeme[2];
|
||||
byte *data;
|
||||
byte *metadata;
|
||||
size_t size;
|
||||
size_t metasize;
|
||||
long rate;
|
||||
int channels;
|
||||
int format;
|
||||
int justwait;
|
||||
} txfermem;
|
||||
/*
|
||||
* [W] -- May be written to by the writing process only!
|
||||
* [R] -- May be written to by the reading process only!
|
||||
* All other entries are initialized once.
|
||||
*/
|
||||
|
||||
void xfermem_init (txfermem **xf, size_t bufsize, size_t msize, size_t skipbuf);
|
||||
void xfermem_init_writer (txfermem *xf);
|
||||
void xfermem_init_reader (txfermem *xf);
|
||||
|
||||
size_t xfermem_get_freespace (txfermem *xf);
|
||||
size_t xfermem_get_usedspace (txfermem *xf);
|
||||
#define XF_CMD_WAKEUP_INFO 0x04
|
||||
#define XF_CMD_WAKEUP 0x02
|
||||
#define XF_CMD_TERMINATE 0x03
|
||||
#define XF_CMD_AUDIOCAP 0x05
|
||||
#define XF_CMD_RESYNC 0x06
|
||||
#define XF_CMD_ABORT 0x07
|
||||
#define XF_WRITER 0
|
||||
#define XF_READER 1
|
||||
int xfermem_getcmd (int fd, int block);
|
||||
int xfermem_putcmd (int fd, byte cmd);
|
||||
int xfermem_block (int fd, txfermem *xf);
|
||||
int xfermem_sigblock (int fd, txfermem *xf, int pid, int signal);
|
||||
/* returns TRUE for being interrupted */
|
||||
int xfermem_write(txfermem *xf, byte *buffer, size_t bytes);
|
||||
|
||||
void xfermem_done (txfermem *xf);
|
||||
#define xfermem_done_writer xfermem_init_reader
|
||||
#define xfermem_done_reader xfermem_init_writer
|
||||
|
||||
|
||||
#endif
|
||||
@@ -3,23 +3,47 @@ There are names and email addresses listed. Please use these addresses only to c
|
||||
You are explicitly not allowed to send them unwanted business offers or to question the quality of their sex life.
|
||||
--------------------
|
||||
|
||||
Being on the list of contributing authors not necessarily means that there
|
||||
is significant copyright in parts of the source code. There are obviously
|
||||
contributions of differing complexity. I try to mention people who motivated
|
||||
changes at least by suggesting some definite code changes, even if their
|
||||
code did not enter the mpg123 source verbatim. Trivial changes like pointing
|
||||
out ovbious syntax errors that make compilers cry do not land here.
|
||||
|
||||
--------------------
|
||||
|
||||
Current maintainers with various sorts of contributions:
|
||||
Thomas Orgis <thomas@orgis.org>
|
||||
Patrick Dehne <patrick@steidle.net>
|
||||
Jonathan Yong <10walls@gmail.com>
|
||||
Taihei Momma <tmkk@mac.com>
|
||||
|
||||
Co-initiator of the revived mpg123 project, but not that involved anymore:
|
||||
Nicholas J Humfrey <njh@ecs.soton.ac.uk>
|
||||
|
||||
Special thanks go to Taihei, the person who keeps the assembly optimisations alive
|
||||
and takes care of portability to OSX/iOS platforms.
|
||||
|
||||
Generic address pointing to the current maintainer (hopefully still works in future in case maintainership will change again): <maintainer@mpg123.org>
|
||||
|
||||
The creator: Michael Hipp (email: hippm@informatik.uni-tuebingen.de - please bother maintainers first)
|
||||
|
||||
Contributions/ideas Thomas Orgis era (includes backports from mhipp trunk):
|
||||
|
||||
Won-Kyu Park <wkpark@gmail.com>: patch to get rid of asm textrels (x86 PIC)
|
||||
Michael Weiser <michaelweiser@users.sf.net>: update of coreaudio output to AudioComponents API
|
||||
Bent Bisballe Nyeng <bbn@dynastrom.com>: patch for MPG123_NO_PEEK_END and MPG123_FORCE_SEEKABLE
|
||||
Eric S. Raymond <esr@thyrsus.com>: man page fixes
|
||||
Tobias Weber <tobiw@suprafluid.com>: patch for --disable-equalizer
|
||||
Hans de Goede <j.w.r.degoede@gmail.com>: patch to skip APE tags
|
||||
Stephan Vedder <stephan.vedder@gmail.com>: MSVC++ 2013 port update
|
||||
Rajeev V. Pillai <rajeevvp@users.sf.net>: pointing out/patching issues in HTTP code and behaviour of mpg123 remote/terminal control
|
||||
Jarno Lehtinen <lehtinen@sci.fi>: tinyalsa output
|
||||
Anthony Wells <borgboyone@yahoo.com>: initial version of ID3v2 APIC patch
|
||||
David Wohlferd <limegreensocks@yahoo.com>: Win32 WaveOut buffer destructor fix.
|
||||
Mike Gorchak <mike.gorchak.qnx@gmail.com>: QNX native audio output (QSA)
|
||||
Dan McGee <dpmcgee@gmail.com>: various patches (also for test suite)
|
||||
Jonathan Yong (jon_y) <10walls@gmail.com>: win32 hacking
|
||||
Jonathan Yong (jon_y) <10walls@gmail.com>: win32 hacking, win32 wasapi audio.
|
||||
Malcolm Boczek <MBoczek@terraindustries.com>: Common language runtime wrapper
|
||||
Elbert Pol (TeLLie) <elbert.pol@gmail.com>: OS/2 port fixup
|
||||
Jeroen Valkonet <jvalkon@xs4all.nl>: motivate pitch control, suggestive patch for pitch command in generic control interface
|
||||
@@ -6,7 +6,6 @@ option(MPG123_BUILD_SHARED "Build shared library" ON)
|
||||
option(MPG123_BUILD_STATIC "Build static library" OFF)
|
||||
|
||||
set(MPG123_SRC
|
||||
src/libmpg123/compat.c
|
||||
src/libmpg123/dct64.c
|
||||
src/libmpg123/equalizer.c
|
||||
src/libmpg123/feature.c
|
||||
@@ -32,7 +31,13 @@ set(MPG123_SRC
|
||||
src/libmpg123/tabinit.c
|
||||
)
|
||||
|
||||
set(MPG123_INCLUDE_DIRS src src/libmpg123)
|
||||
set(MPG123_SRC
|
||||
${MPG123_SRC}
|
||||
src/compat/compat.c
|
||||
src/compat/compat_str.c
|
||||
)
|
||||
|
||||
set(MPG123_INCLUDE_DIRS src src/libmpg123 src/compat)
|
||||
|
||||
if(MSVC)
|
||||
add_definitions(-DOPT_GENERIC)
|
||||
@@ -50,6 +55,7 @@ if (MPG123_BUILD_SHARED)
|
||||
add_library(mpg123 SHARED ${MPG123_SRC})
|
||||
target_include_directories(mpg123 PUBLIC ${MPG123_INCLUDE_DIRS})
|
||||
if(MSVC)
|
||||
target_link_libraries(mpg123 Shlwapi)
|
||||
set_property(TARGET mpg123 PROPERTY COMPILE_DEFINITIONS BUILD_MPG123_DLL)
|
||||
endif()
|
||||
install(TARGETS mpg123 RUNTIME DESTINATION . LIBRARY DESTINATION .)
|
||||
@@ -1,25 +1,24 @@
|
||||
This is the file that contains the terms of use, copying, etc. for the mpg123 distribution package.
|
||||
|
||||
Main message:
|
||||
Main message, to include in "About ..." boxes, etc:
|
||||
|
||||
Code is copyrighted by Michael Hipp, who made it free software under the terms of the LGPL 2.1.
|
||||
Copyright (c) 1995-2013 by Michael Hipp and others,
|
||||
free software under the terms of the LGPL v2.1
|
||||
|
||||
But that is not all of it.
|
||||
mpg123 is licensed under the GNU General Lesser Public License, version 2.1, and in parts under the GNU General Public License, version 2.
|
||||
That means that _all_ of mpg123 is licensed under GPL and the major part also under the LGPL.
|
||||
There is an attempt to cover the actual list of authors in the AUTHORS file.
|
||||
Project maintainer since 2006 is Thomas Orgis and many people have contributed
|
||||
since the Michael Hipp era, but he stays the initial source and it would
|
||||
be impractical to count them all individually, so it's "and others".
|
||||
Source files contain the phrase "the mpg123 project" to the same effect
|
||||
in their license boilerplate; especially those that were added after
|
||||
maintainership changed. The person mainly responsible for the first version
|
||||
is usually named in the phrase "initially written by ...".
|
||||
|
||||
Actually, the "major part" currently is the whole distributed package of mpg123. There are some files (old alsa output, libao output) that you get from our svn repository and that do not fall under LGPL.
|
||||
|
||||
When the copyright marker in a source file says "the mpg123 project" that means that the file contains code copyrighted by contributors to mpg123, the "initially written by" naming the person(s) that created the file and thus may have the largest part of copyrights on it.
|
||||
I am explaining this here to emphasize that the copyright always actually lies by the individual member (i.e. contributor to) of the mpg123 project who wrote a specific section of code.
|
||||
Usage of a source code management system like Subversion should provide keeping track of individual copyright traces...
|
||||
|
||||
Please consider that any code that is contributed to the mpg123 project shall be licensed under LGPL 2.1 .
|
||||
If you want to contribute, but don't agree to that (i.e. you want to have your code GPL only) please say so - then, we either you convince is to include your code under GPL, we convince you to make it LGPL instead or, as a last resort, you'll have to do you own GPLed fork.
|
||||
But we should try to avoid the last option...
|
||||
|
||||
All files in the distribution that don't carry a license note on their own are licensed under the terms of the LGPL 2.1; all files that do carry either a LGPL or GPL note are licensed respectively under the LGPL or GPL as follows:
|
||||
All files in the distribution that don't carry a license note on their own are
|
||||
licensed under the terms of the LGPL 2.1; exceptions may apply, especially to
|
||||
files not in the official distribution but in the revision control repository.
|
||||
|
||||
The formal license text follows.
|
||||
|
||||
=======================
|
||||
1. The LGPL version 2.1
|
||||
@@ -21,8 +21,6 @@ You want:
|
||||
|
||||
- working assembler (recent GNU binutils) if using certain CPU optimizations
|
||||
- headers and lib for certain audio output drivers (libasound for alsa, sdl for sdl...)
|
||||
- libtool's libltdl for runtime output modules (this used to be included, but now we rely on an existing install)
|
||||
|
||||
|
||||
1. Build
|
||||
|
||||
@@ -109,3 +107,9 @@ The libmpg123 API includes the generic off_t type for file offsets and thus is s
|
||||
To deal with the incompatibilities that can cause, the library needs to separate code paths for small and large off_t.
|
||||
Since version 1.12.0, a large-file-enabled libmpg123 (the default set by configure) provides a dual-mode ABI. Depending on _FILE_OFFSET_BITS, the mpg123.h header file selects different library symbols to use for your app.
|
||||
In both large-file and normal mode, the library should just work for your app.
|
||||
|
||||
6. Security
|
||||
|
||||
If you consider installing the mpg123 binary or any program using libout123 as suid root, please don't. Apart from evaluating MPG123_MODDIR from the environment and thus possibly loading any code, the purpose of libout123 is to write audio data to somewhere. That includes writing raw data to files. Any files you specify to the program. You do not install dd or gzip suid root, do you?
|
||||
|
||||
Programs using libmpg123 should be fine, as that one does not load runtime modules and also only has code to read files, not write them. Still, if your task involves decoding random MPEG audio files from anywhere, it is only sensible to limit the damage of a possible bug triggered by certain crafted files. This is not specific to libmpg123 but generally a good idea working with data from untrusted sources.
|
||||
@@ -0,0 +1,134 @@
|
||||
## Makefile.am: produce Makefile.in from this
|
||||
|
||||
## copyright by the mpg123 project - free software under the terms of the LGPL 2.1
|
||||
## see COPYING and AUTHORS files in distribution or http://mpg123.org
|
||||
## initially written by Nicholas J. Humfrey
|
||||
## reworked for non-recursive make by Thomas Orgis
|
||||
|
||||
# Mention all global variables first before including Make modules.
|
||||
ACLOCAL_AMFLAGS = -I m4
|
||||
bin_PROGRAMS =
|
||||
EXTRA_PROGRAMS =
|
||||
EXTRA_DIST =
|
||||
pkglib_LTLIBRARIES =
|
||||
lib_LTLIBRARIES =
|
||||
noinst_LIBRARIES =
|
||||
noinst_LTLIBRARIES =
|
||||
nodist_include_HEADERS =
|
||||
include_HEADERS =
|
||||
dist_man_MANS =
|
||||
CLEANFILES =
|
||||
|
||||
AM_CPPFLAGS = -DPKGLIBDIR="\"$(pkglibdir)\""
|
||||
# That can be trimmed down later when adapting the sources to
|
||||
# use relative paths for includes.
|
||||
# Watch out for generated headers (that's why top_builddir is also present).
|
||||
AM_CPPFLAGS += \
|
||||
$(LTDLINCL) \
|
||||
-I$(top_srcdir)/src \
|
||||
-I$(top_srcdir)/src/compat \
|
||||
-I$(top_srcdir)/src/libmpg123 \
|
||||
-I$(top_srcdir)/src/libout123 \
|
||||
-I$(top_builddir)/src/libmpg123 \
|
||||
-I$(top_builddir)/src/libout123
|
||||
|
||||
pkgconfigdir = $(libdir)/pkgconfig
|
||||
pkgconfig_DATA =
|
||||
|
||||
# Include Make modules from subdirectories.
|
||||
include src/Makemodule.am
|
||||
include doc/Makemodule.am
|
||||
|
||||
# Stuff from this directory.
|
||||
pkgconfig_DATA += libmpg123.pc libout123.pc
|
||||
|
||||
dist_man_MANS += man1/mpg123.1 man1/out123.1
|
||||
|
||||
# mpg123.spec is autogenerated but needs to be present in tarball!
|
||||
EXTRA_DIST += \
|
||||
mpg123.spec \
|
||||
makedll.sh \
|
||||
windows-builds.sh \
|
||||
equalize.dat \
|
||||
NEWS.libmpg123 \
|
||||
NEWS.libout123 \
|
||||
ports/MSVC++/mpg123.h \
|
||||
ports/MSVC++/config.h \
|
||||
ports/MSVC++/msvc.c \
|
||||
ports/MSVC++/examples/scan.c \
|
||||
ports/MSVC++/examples/feedseek.c \
|
||||
ports/MSVC++/2008clr/2008clr.sln \
|
||||
ports/MSVC++/2008clr/mpg123clr/advanced.cpp \
|
||||
ports/MSVC++/2008clr/mpg123clr/advanced.h \
|
||||
ports/MSVC++/2008clr/mpg123clr/AssemblyInfo.cpp \
|
||||
ports/MSVC++/2008clr/mpg123clr/dllmain.cpp \
|
||||
ports/MSVC++/2008clr/mpg123clr/enum.h \
|
||||
ports/MSVC++/2008clr/mpg123clr/error.cpp \
|
||||
ports/MSVC++/2008clr/mpg123clr/error.h \
|
||||
ports/MSVC++/2008clr/mpg123clr/id3v1.cpp \
|
||||
ports/MSVC++/2008clr/mpg123clr/id3v1.h \
|
||||
ports/MSVC++/2008clr/mpg123clr/id3v2.cpp \
|
||||
ports/MSVC++/2008clr/mpg123clr/id3v2.h \
|
||||
ports/MSVC++/2008clr/mpg123clr/mpg123clr.cpp \
|
||||
ports/MSVC++/2008clr/mpg123clr/mpg123clr.h \
|
||||
ports/MSVC++/2008clr/mpg123clr/mpg123clr.rc \
|
||||
ports/MSVC++/2008clr/mpg123clr/mpg123clr.vcproj \
|
||||
ports/MSVC++/2008clr/mpg123clr/ReadMe.txt \
|
||||
ports/MSVC++/2008clr/mpg123clr/resource.h \
|
||||
ports/MSVC++/2008clr/mpg123clr/stdafx.cpp \
|
||||
ports/MSVC++/2008clr/mpg123clr/stdafx.h \
|
||||
ports/MSVC++/2008clr/mpg123clr/string.cpp \
|
||||
ports/MSVC++/2008clr/mpg123clr/string.h \
|
||||
ports/MSVC++/2008clr/mpg123clr/targetver.h \
|
||||
ports/MSVC++/2008clr/mpg123clr/text.cpp \
|
||||
ports/MSVC++/2008clr/mpg123clr/text.h \
|
||||
ports/MSVC++/2008clr/examples/feedseekclr/feedseekclr.csproj \
|
||||
ports/MSVC++/2008clr/examples/feedseekclr/Program.cs \
|
||||
ports/MSVC++/2008clr/examples/feedseekclr/Properties/AssemblyInfo.cs \
|
||||
ports/MSVC++/2008clr/examples/ReplaceReaderclr/ReplaceReaderclr.csproj \
|
||||
ports/MSVC++/2008clr/examples/ReplaceReaderclr/Program.cs \
|
||||
ports/MSVC++/2008clr/examples/ReplaceReaderclr/Properties/AssemblyInfo.cs \
|
||||
ports/MSVC++/2008clr/examples/scanclr/scanclr.csproj \
|
||||
ports/MSVC++/2008clr/examples/scanclr/Program.cs \
|
||||
ports/MSVC++/2008clr/examples/scanclr/Properties/AssemblyInfo.cs \
|
||||
ports/MSVC++/2015/win32/feedseek \
|
||||
ports/MSVC++/2015/win32/feedseek/feedseek.vcxproj.filters \
|
||||
ports/MSVC++/2015/win32/feedseek/feedseek.vcxproj \
|
||||
ports/MSVC++/2015/win32/libmpg123 \
|
||||
ports/MSVC++/2015/win32/libmpg123/libmpg123.vcxproj \
|
||||
ports/MSVC++/2015/win32/libmpg123/libmpg123.vcxproj.filters \
|
||||
ports/MSVC++/2015/win32/mpg123.sln \
|
||||
ports/MSVC++/2015/win32/dump_seekindex \
|
||||
ports/MSVC++/2015/win32/dump_seekindex/dump_seekindex.vcxproj \
|
||||
ports/MSVC++/2015/win32/dump_seekindex/dump_seekindex.vcxproj.filters \
|
||||
ports/MSVC++/2015/win32/scan \
|
||||
ports/MSVC++/2015/win32/scan/scan.vcxproj.filters \
|
||||
ports/MSVC++/2015/win32/scan/scan.vcxproj \
|
||||
ports/MSVC++/2015/uwp/libmpg123 \
|
||||
ports/MSVC++/2015/uwp/libmpg123/libmpg123.vcxproj \
|
||||
ports/MSVC++/2015/uwp/libmpg123/libmpg123.vcxproj.filters \
|
||||
ports/MSVC++/2015/uwp/libmpg123.sln \
|
||||
ports/MSVC++/CMP3Stream/libMPG123/libMPG123.vcproj \
|
||||
ports/MSVC++/CMP3Stream/libMPG123/PLACE_LIBMPG123_SOURCES_HERE \
|
||||
ports/MSVC++/CMP3Stream/README \
|
||||
ports/MSVC++/CMP3Stream/SOURCE/CORE_Log.CPP \
|
||||
ports/MSVC++/CMP3Stream/SOURCE/CORE_FileIn.CPP \
|
||||
ports/MSVC++/CMP3Stream/SOURCE/SourceFilter_MP3Stream.CPP \
|
||||
ports/MSVC++/CMP3Stream/SOURCE/CORE_Mutex.CPP \
|
||||
ports/MSVC++/CMP3Stream/INCLUDE/CORE/CORE_FileIn.H \
|
||||
ports/MSVC++/CMP3Stream/INCLUDE/CORE/SourceFilter_MP3.H \
|
||||
ports/MSVC++/CMP3Stream/INCLUDE/IIEP_FileIn.H \
|
||||
ports/MSVC++/CMP3Stream/INCLUDE/IIEP_Def.H \
|
||||
ports/README \
|
||||
ports/Sony_PSP/config.h \
|
||||
ports/Sony_PSP/README \
|
||||
ports/Sony_PSP/Makefile.psp \
|
||||
ports/Sony_PSP/readers.c.patch \
|
||||
ports/mpg123_.pas \
|
||||
ports/Xcode/config.h \
|
||||
ports/Xcode/mpg123.h \
|
||||
ports/Xcode/mpg123.xcodeproj/project.pbxproj \
|
||||
scripts/benchmark-cpu.pl \
|
||||
scripts/tag_lyrics.py \
|
||||
scripts/conplay \
|
||||
scripts/mpg123info
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,5 +1,67 @@
|
||||
Changes in libmpg123 libtool interface versions...
|
||||
|
||||
44.0.44
|
||||
- added mpg123_getformat2()
|
||||
|
||||
43.0.43
|
||||
- added MPG123_NO_PEEK_END and MPG123_FORCE_SEEKABLE
|
||||
|
||||
42.0.42
|
||||
- added mpg123_framelength()
|
||||
Now mpg123_position() is truly obsolete!
|
||||
- hardened string API to not crash if given NULL pointers
|
||||
(except mpg123_init_string())
|
||||
- equalizer feature optional
|
||||
|
||||
41.0.41
|
||||
- Add checks for NULL handles in some API functions that missed that, changed return value in others to MPG123_BAD_HANDLE where appropriate:
|
||||
- mpg123_format_none(NULL) == MPG123_BAD_HANDLE (was: MPG123_ERR)
|
||||
- mpg123_format_all(NULL) == MPG123_BAD_HANDLE (was: MPG123_ERR)
|
||||
- mpg123_format(NULL, ...) == MPG123_BAD_HANDLE (was: MPG123_ERR)
|
||||
- mpg123_reset_eq(NULL) == MPG123_BAD_HANDLE (was: undefined)
|
||||
- mpg123_replace_buffer(NULL, ...) == MPG123_BAD_HANDLE (was: undefined)
|
||||
- mpg123_framedata(NULL, ...) == MPG123_BAD_HANDLE (was: MPG123_ERR)
|
||||
- mpg123_decoder(NULL, ...) == MPG123_BAD_HANDLE (was: MPG123_ERR)
|
||||
- mpg123_param(NULL, ...) == MPG123_BAD_HANDLE (was: MPG123_ERR)
|
||||
- mpg123_getparam(NULL, ...) == MPG123_BAD_HANDLE (was: MPG123_ERR)
|
||||
- mpg123_getstate(NULL, ...) == MPG123_BAD_HANDLE (was: MPG123_ERR)
|
||||
- mpg123_eq(NULL, ...) == MPG123_BAD_HANDLE (was: MPG123_ERR)
|
||||
- mpg123_open(NULL, ...) == MPG123_BAD_HANDLE (was: MPG123_ERR)
|
||||
- mpg123_open_handle(NULL, ...) == MPG123_BAD_HANDLE (was: MPG123_ERR)
|
||||
- mpg123_open_feed(NULL, ...) == MPG123_BAD_HANDLE (was: MPG123_ERR)
|
||||
- mpg123_replace_reader(NULL, ...) == MPG123_BAD_HANDLE (was: MPG123_ERR)
|
||||
- mpg123_replace_reader_handle(NULL, ...) == MPG123_BAD_HANDLE (was: MPG123_ERR)
|
||||
- mpg123_decode_frame(NULL, ...) == MPG123_BAD_HANDLE (was: MPG123_ERR)
|
||||
- mpg123_feed(NULL, ...) == MPG123_BAD_HANDLE (was: MPG123_ERR)
|
||||
- mpg123_decode(NULL, ...) == MPG123_BAD_HANDLE (was: MPG123_ERR)
|
||||
- mpg123_info(NULL, ...) == MPG123_BAD_HANDLE (was: MPG123_ERR)
|
||||
- mpg123_getformat(NULL, ...) == MPG123_BAD_HANDLE (was: MPG123_ERR)
|
||||
- mpg123_set_filesize(NULL, ...) == MPG123_BAD_HANDLE (was: MPG123_ERR)
|
||||
- mpg123_scan(NULL) == MPG123_BAD_HANDLE (was: MPG123_ERR)
|
||||
- mpg123_id3(NULL, ...) == MPG123_BAD_HANDLE (was: MPG123_ERR)
|
||||
- mpg123_icy(NULL, ...) == MPG123_BAD_HANDLE (was: MPG123_ERR)
|
||||
- mpg123_index(NULL, ...) == MPG123_BAD_HANDLE (was: MPG123_ERR)
|
||||
- mpg123_set_index(NULL, ...) == MPG123_BAD_HANDLE (was: MPG123_ERR)
|
||||
- mpg123_close(NULL, ...) == MPG123_BAD_HANDLE (was: MPG123_ERR)
|
||||
- Changed return value of mpg123_geteq() to 0 for NULL handle to be consistent with itself.
|
||||
|
||||
|
||||
40.0.40
|
||||
- Bump for marking the first actual implementation of A-Law encoding.
|
||||
Not that it matters to anyone, though --- I wonder why not even the
|
||||
Asterisk users wanted this. It's for telephony, dammit!
|
||||
- Added arm_fpu decoder for runtime switch between NEON and generic fpu.
|
||||
|
||||
39.2.39
|
||||
- Added more elaborate post-processing to enable 32 and 24 bit output also with low-precision decoder (16 bit, fixed-point).
|
||||
|
||||
39.0.39
|
||||
- Added MPG123_FRESH_DECODER.
|
||||
- Also containing several regression fixes.
|
||||
|
||||
38.0.38
|
||||
- Added MPG123_PICTURE and associated addition to mpg123_id3v2 struct.
|
||||
|
||||
37.0.37
|
||||
- Added mpg123_chomp_string.
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
1.0.1
|
||||
- initial version
|
||||
|
||||
2.0.2
|
||||
- added OUT123_BINDIR
|
||||
@@ -1,3 +1,8 @@
|
||||
BEFORE 1.23 RELEASE:
|
||||
|
||||
- add client name as libout123 parameter, to be used by jack backend
|
||||
PID still needed? JACK handles possibly non-unique names.
|
||||
|
||||
Things that need to be done...
|
||||
|
||||
... as always, mostly outdated.
|
||||
@@ -33,6 +38,3 @@ That being said, in the "normal" case, there is no leak.
|
||||
|
||||
5. What's about SINGLE_MIX?
|
||||
Check what is _really_ happening there, make some test file...
|
||||
|
||||
6. Ensure proper operation of free format with the feeder.
|
||||
MPG123_NEED_MORE needs to be propagated from the freeformat framesize guesser.
|
||||
Vendored
+2303
File diff suppressed because it is too large
Load Diff
+2900
-1280
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,82 @@
|
||||
Regarding largefile setup, client apps can be built three ways:
|
||||
|
||||
1. _FILE_OFFSET_BITS == 64 (header maps to mpg123_open_64)
|
||||
2. _FILE_OFFSET_BITS == 32 (header maps to mpg123_open_32)
|
||||
3. _FILE_OFFSET_BITS == <nothing> (header maps to mpg123_open)
|
||||
|
||||
The libmpg123 build needs to be prepared for everything. Also, it needs to keep
|
||||
in mind the days before introducing large file support --- binaries should still
|
||||
work with updated libmpg123. So, mpg123_open should always match what is the
|
||||
default build on a platform without added settings. Those are the platform
|
||||
variants:
|
||||
|
||||
1. 64 bit native system, long == off_t
|
||||
libmpg123: mpg123_open
|
||||
lfs_alias: mpg123_open_64 -> mpg123_open
|
||||
lfs_wrap: <none>
|
||||
|
||||
2. largefile-sensitive, long = 32, off_t = 64 (if enabled)
|
||||
libmpg123: mpg123_open_64
|
||||
lfs_alias: mpg123_open_32 -> mpg123_open
|
||||
lfs_wrap: mpg123_open -> mpg123_open_64
|
||||
|
||||
3. largefile, long = 32, off_t = 64 (FreeBSD)
|
||||
libmpg123: mpg123_open
|
||||
lfs_alias: mpg123_open_64 -> mpg123_open
|
||||
lfs_wrap: <none>
|
||||
|
||||
This is what mpg123 does in version 1.15.4 and it works. Well, for cases 1
|
||||
(Linux/Solaris x86-64) and 2 (Linux/Solaris x86). Case 3 needs to be added
|
||||
properly. Actually, let's have a second look at case 2: When mpg123 is built
|
||||
with --disable-largefile:
|
||||
|
||||
2a. largefile-sensitive, mpg123 built with off_t = 32 == long
|
||||
libmpg123: mpg123_open
|
||||
lfs_alias: mpg123_open_32 -> mpg123_open
|
||||
lfs_wrap: <none>
|
||||
|
||||
So, this is still correct. Now, what about case 3? What does mpg123 do
|
||||
currently, as of 1.15.4?
|
||||
|
||||
3a. largefile, long = 32, off_t = 64 (... and mpg123 not really aware of that)
|
||||
libmpg123: mpg123_open
|
||||
lfs_alias: mpg123_open_32(long) -> mpg123_open(off_t)
|
||||
lfs_wrap: <none>
|
||||
|
||||
This is _wrong_. Luckily, this does not cause binary compatibility issues, as
|
||||
mpg123_open_32 won't be called by anyone unless that someone tries to define
|
||||
_FILE_OFFSET_BITS=32, which is nonsense. Perhaps old FreeBSD binaries before
|
||||
LFS times? Well, back then, there was no libmpg123. So let's ignore that case.
|
||||
The issue at hand is that the alias should be from mpg123_open_64 to
|
||||
mpg123_open, for clients that insist on defining _FILE_OFFSET_BITS=64.
|
||||
|
||||
The change needed now is to fix the naming and also change the type the
|
||||
alias functions use: It is not long int anymore!
|
||||
|
||||
Let's revisit case 1 for a moment: My old lfs_alias.c provides for the case
|
||||
lfs_alias: mpg123_open -> mpg123_open_64. Is that actually possible?
|
||||
What means enforcing _FILE_OFFSET_BITS=64 from the outside, which _could_
|
||||
happen when libmpg123 is included someplace and folks are on the wrong side
|
||||
of paranoid regarding this. So, there is
|
||||
|
||||
1a. 64 bit native system, long == off_t = 64 and _FILE_OFFSET_BITS=64
|
||||
libmpg123: mpg123_open_64
|
||||
lfs_alias: mpg123_open -> mpg123_open_64
|
||||
lfs_wrap: <none>
|
||||
|
||||
(Works also for any system with long == off_t in any width)
|
||||
Likewise, there is largefile-sensitive system with enforced 32 bits:
|
||||
|
||||
2b. largefile-sensitive, mpg123 with enforced _FILE_OFFSET_BITS=32
|
||||
libmpg123: mpg123_open_32
|
||||
lfs_alias: mpg123_open -> mpg123_open_32
|
||||
lfs_wrap: <none>
|
||||
|
||||
All cases are supported with this significant change from 1.15.4:
|
||||
Make the aliases use a defined lfs_alias_t, which can be long or off_t,
|
||||
depending on what is the default type for offsets on the platform.
|
||||
Folks who try _FILE_OFFSET_BITS=32 on a system that only supports
|
||||
64 bit get a linking error during mpg123 build (from the _64 aliases),
|
||||
which I consider to be a feature.
|
||||
|
||||
I salute anyone who is not confused after reading this.
|
||||
@@ -0,0 +1,29 @@
|
||||
# Module for non-recursive mpg123 build system.
|
||||
|
||||
EXTRA_DIST += \
|
||||
doc/BENCHMARKING \
|
||||
doc/BUGS \
|
||||
doc/CONTACT \
|
||||
doc/PATENTS \
|
||||
doc/README.3DNOW \
|
||||
doc/README.gain \
|
||||
doc/README.remote \
|
||||
doc/ROAD_TO_LGPL \
|
||||
doc/TODO \
|
||||
doc/LICENSE \
|
||||
doc/THANKS \
|
||||
doc/ACCURACY \
|
||||
doc/LARGEFILE \
|
||||
doc/libmpg123_speed.txt \
|
||||
doc/doxyhead.xhtml \
|
||||
doc/doxyfoot.xhtml \
|
||||
doc/doxy_examples.c \
|
||||
doc/doxygen.conf \
|
||||
doc/examples/mpg123_to_out123.c \
|
||||
doc/examples/scan.c \
|
||||
doc/examples/mpglib.c \
|
||||
doc/examples/id3dump.c \
|
||||
doc/examples/feedseek.c \
|
||||
doc/examples/dump_seekindex.c \
|
||||
doc/examples/extract_frames.c \
|
||||
doc/examples/Makefile
|
||||
@@ -28,7 +28,7 @@ LOAD/L <trackname>: load and start playing resource <trackname>
|
||||
|
||||
LOADPAUSED/LP <trackname>: load but do not start playing resource <trackname>
|
||||
|
||||
LOADLIST <entry> <url>: load a playlist from given <url>, and display its entries, optionally load and play one of these specificed by the integer <entry> (<0: just list, 0: play last track, >0:play track with that position in list)
|
||||
LOADLIST/LL <entry> <url>: load a playlist from given <url>, and display its entries, optionally load and play one of these specificed by the integer <entry> (<0: just list, 0: play last track, >0:play track with that position in list)
|
||||
|
||||
PAUSE/P: pause playback
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
From Michael (some time after/around pre-0.59s):
|
||||
|
||||
- add CRC check.
|
||||
- optimize layer2.c:
|
||||
step_two: fraction as pointer ..
|
||||
process first channel 0 than channel 1
|
||||
copy channel 0 to channel 1 for: i >= jsbound
|
||||
- MPEG system stream decoder
|
||||
@@ -1,7 +1,7 @@
|
||||
/** \defgroup mpg123_examples example programs using libmpg123
|
||||
/** \defgroup mpg123_examples example programs using libmpg123 and libout123
|
||||
@{ */
|
||||
|
||||
/** \file mpg123_to_wav.c A simple MPEG audio to WAV converter using libmpg123 (read) and libsndfile (write).
|
||||
/** \file mpg123_to_out123.c A simple MPEG audio to WAV converter using libmpg123 (read) and libout123 (write).
|
||||
...an excersize on two simple APIs. */
|
||||
|
||||
/** \file mpglib.c Example program mimicking the old mpglib test program.
|
||||
@@ -0,0 +1 @@
|
||||
<!--#include virtual="/footer.html" -->
|
||||
@@ -3,13 +3,23 @@
|
||||
# doxygen (www.doxygen.org) for a project
|
||||
#
|
||||
|
||||
PROJECT_NAME = "libmpg123"
|
||||
PROJECT_NAME = "libmpg123 & libout123"
|
||||
OUTPUT_DIRECTORY = .
|
||||
CREATE_SUBDIRS = NO
|
||||
OUTPUT_LANGUAGE = English
|
||||
FULL_PATH_NAMES = NO
|
||||
|
||||
INPUT = doxy_examples.c examples/mpg123_to_wav.c examples/mpglib.c examples/scan.c examples/feedseek.c examples/id3dump.c ../src/libmpg123/mpg123.h
|
||||
INPUT = \
|
||||
doxy_examples.c \
|
||||
examples/mpg123_to_out123.c \
|
||||
examples/mpglib.c \
|
||||
examples/scan.c \
|
||||
examples/feedseek.c \
|
||||
examples/extract_frames.c \
|
||||
examples/id3dump.c \
|
||||
../src/libmpg123/mpg123.h \
|
||||
../src/libmpg123/fmt123.h \
|
||||
../src/libout123/out123.h
|
||||
OPTIMIZE_OUTPUT_FOR_C = YES
|
||||
EXTRACT_ALL = NO
|
||||
HIDE_UNDOC_MEMBERS = NO
|
||||
@@ -38,4 +48,5 @@ MAN_LINKS = YES
|
||||
GENERATE_XML = NO
|
||||
|
||||
HTML_HEADER = doxyhead.xhtml
|
||||
HTML_FOOTER = doxyfoot.xhtml
|
||||
HTML_FILE_EXTENSION = .shtml
|
||||
@@ -0,0 +1,17 @@
|
||||
<!--#include virtual="/header.html" -->
|
||||
<title>$title</title>
|
||||
<link href="/doxygen.css" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<!--#include virtual="/top.shtml" -->
|
||||
<h1>API documentation for libmpg123 and libout123</h1>
|
||||
<div style="padding:1em;">
|
||||
<strong>Note:</strong>
|
||||
This API doc is automatically generated from the current development version that you can get via Subversion or as a daily snapshot from <a href="http://mpg123.org/snapshot">http://mpg123.org/snapshot</a>.
|
||||
There may be differences (additions) compared to the latest stable release. See
|
||||
<a href="http://mpg123.org/cgi-bin/viewvc.cgi/trunk/NEWS.libmpg123?view=markup">NEWS.libmpg123</a>,
|
||||
<a href="http://mpg123.org/cgi-bin/viewvc.cgi/trunk/NEWS.libout123?view=markup">NEWS.libout123</a>,
|
||||
and the overall <a href="http://mpg123.org/cgi-bin/viewvc.cgi/trunk/NEWS?view=markup">NEWS</a> file on libmpg123 versions and important changes between them.<br />
|
||||
Let me emphasize that the policy for libmpg123 and libout123 is to always stay backwards compatible -- only <em>additions</em> are planned (and it's not yet planned to change the plans;-).
|
||||
</div>
|
||||
<div> <!-- for some reason, doxygen closes a div where non is open, bug in my version? -->
|
||||
+20
-6
@@ -1,4 +1,13 @@
|
||||
targets = feedseek mpg123_to_wav mpg123_to_wav_replaced_io scan id3dump mpglib dump_seekindex extract_frames
|
||||
targets = \
|
||||
mpg123_test \
|
||||
feedseek \
|
||||
mpg123_to_out123 \
|
||||
mpg123_to_wav_replaced_io \
|
||||
scan \
|
||||
id3dump \
|
||||
mpglib \
|
||||
dump_seekindex \
|
||||
extract_frames
|
||||
|
||||
all: $(targets)
|
||||
|
||||
@@ -9,22 +18,24 @@ all: $(targets)
|
||||
ifeq ($(MPG123_PREFIX),)
|
||||
MPG123_CFLAGS := $(shell pkg-config --cflags libmpg123)
|
||||
MPG123_LDFLAGS := $(shell pkg-config --libs libmpg123)
|
||||
OUT123_CFLAGS := $(shell pkg-config --cflags libout123)
|
||||
OUT123_LDFLAGS := $(shell pkg-config --libs libout123)
|
||||
else # Yeah, that's with GNU/Linux in mind, at least GNU ld ...
|
||||
MPG123_CFLAGS := -I$(MPG123_PREFIX)/include
|
||||
MPG123_LDFLAGS := -L$(MPG123_PREFIX)/lib -Wl,-rpath $(MPG123_PREFIX)/lib -lmpg123
|
||||
OUT123_CFLAGS := -I$(MPG123_PREFIX)/include
|
||||
OUT123_LDFLAGS := -L$(MPG123_PREFIX)/lib -Wl,-rpath $(MPG123_PREFIX)/lib -lout123
|
||||
endif
|
||||
SND_CFLAGS := $(shell pkg-config --cflags sndfile)
|
||||
SND_LDFLAGS := $(shell pkg-config --libs sndfile)
|
||||
|
||||
# Oder of libs not that important here...
|
||||
compile = $(CC) $(CPPFLAGS) $(CFLAGS) $(MPG123_CFLAGS)
|
||||
linkflags = $(MPG123_LDFLAGS) $(LDFLAGS)
|
||||
|
||||
mpg123_to_wav: mpg123_to_wav.c
|
||||
$(compile) -o mpg123_to_wav mpg123_to_wav.c $(SND_CFLAGS) $(SND_LDFLAGS) $(linkflags)
|
||||
mpg123_to_out123: mpg123_to_out123.c
|
||||
$(compile) -o $@ $< $(OUT123_CFLAGS) $(OUT123_LDFLAGS) $(linkflags)
|
||||
|
||||
mpg123_to_wav_replaced_io: mpg123_to_wav_replaced_io.c
|
||||
$(compile) -o $@ $< $(SND_CFLAGS) $(SND_LDFLAGS) $(linkflags)
|
||||
$(compile) -o $@ $< $(OUT123_CFLAGS) $(OUT123_LDFLAGS) $(linkflags)
|
||||
|
||||
feedseek: feedseek.c
|
||||
$(compile) -o feedseek feedseek.c $(linkflags)
|
||||
@@ -41,6 +52,9 @@ dump_seekindex: dump_seekindex.c
|
||||
mpglib: mpglib.c
|
||||
$(compile) -o mpglib mpglib.c $(linkflags)
|
||||
|
||||
mpg123_test: mpg123_test.c
|
||||
$(compile) -o $@ $< $(linkflags)
|
||||
|
||||
extract_frames: extract_frames.c
|
||||
$(compile) -o $@ $< $(linkflags)
|
||||
|
||||
+1
-1
@@ -34,7 +34,7 @@ int main(int argc, char **argv)
|
||||
}
|
||||
else
|
||||
{
|
||||
fprintf(stderr, "I'll take your dirty MPEG audio from standard input and will write the extrated pure MPEG data to stadard output.\n");
|
||||
fprintf(stderr, "I'll take your dirty MPEG audio from standard input and will write the extracted pure MPEG data to standard output.\n");
|
||||
if(argc > 1 && strcmp(argv[1], "--noinfo") == 0)
|
||||
{
|
||||
fprintf(stderr, "Enabling parsing/consuming of the Info frame so that it will not appear in output.\n");
|
||||
@@ -0,0 +1,164 @@
|
||||
/*
|
||||
mpg123_to_wav.c
|
||||
|
||||
copyright 2007-2016 by the mpg123 project - free software under the terms of the LGPL 2.1
|
||||
see COPYING and AUTHORS files in distribution or http://mpg123.org
|
||||
initially written by Nicholas Humfrey
|
||||
|
||||
The most complicated part is about the choices to make about output format,
|
||||
and prepare for the unlikely case a bastard mp3 might file change it.
|
||||
*/
|
||||
|
||||
#include <out123.h>
|
||||
#include <mpg123.h>
|
||||
#include <stdio.h>
|
||||
#include <strings.h>
|
||||
|
||||
void usage(const char *cmd)
|
||||
{
|
||||
printf("Usage: %s <input> [<driver> [<output> [encoding [buffersize]]]]\n"
|
||||
, cmd);
|
||||
printf( "\nPlay MPEG audio from intput file to output file/device using\n"
|
||||
"specified out123 driver, sample encoding and buffer size optional.\n\n" );
|
||||
exit(99);
|
||||
}
|
||||
|
||||
void cleanup(mpg123_handle *mh, out123_handle *ao)
|
||||
{
|
||||
out123_del(ao);
|
||||
/* It's really to late for error checks here;-) */
|
||||
mpg123_close(mh);
|
||||
mpg123_delete(mh);
|
||||
mpg123_exit();
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
mpg123_handle *mh = NULL;
|
||||
out123_handle *ao = NULL;
|
||||
char *infile = NULL;
|
||||
char *driver = NULL;
|
||||
char *outfile = NULL;
|
||||
unsigned char* buffer = NULL;
|
||||
const char *encname;
|
||||
size_t buffer_size = 0;
|
||||
size_t done = 0;
|
||||
int channels = 0;
|
||||
int encoding = 0;
|
||||
int framesize = 1;
|
||||
long rate = 0;
|
||||
int err = MPG123_OK;
|
||||
off_t samples = 0;
|
||||
|
||||
if(argc<2)
|
||||
usage(argv[0]);
|
||||
|
||||
infile = argv[1];
|
||||
if(argc >= 3)
|
||||
driver = argv[2];
|
||||
if(argc >= 4)
|
||||
outfile = argv[3];
|
||||
printf("Input file: %s\n", infile);
|
||||
printf("Output driver: %s\n", driver ? driver : "<nil> (default)");
|
||||
printf("Output file: %s\n", outfile ? outfile : "<nil> (default)");
|
||||
|
||||
err = mpg123_init();
|
||||
if(err != MPG123_OK || (mh = mpg123_new(NULL, &err)) == NULL)
|
||||
{
|
||||
fprintf(stderr, "Basic setup goes wrong: %s", mpg123_plain_strerror(err));
|
||||
cleanup(mh, ao);
|
||||
return -1;
|
||||
}
|
||||
|
||||
ao = out123_new();
|
||||
if(!ao)
|
||||
{
|
||||
fprintf(stderr, "Cannot create output handle.\n");
|
||||
cleanup(mh, ao);
|
||||
return -1;
|
||||
}
|
||||
|
||||
if(argc >= 5)
|
||||
{ /* Make mpg123 support the desired encoding only for all rates. */
|
||||
const long *rates;
|
||||
size_t rate_count;
|
||||
size_t i;
|
||||
int enc;
|
||||
/* If that is zero, you'll get the error soon enough from mpg123. */
|
||||
enc = out123_enc_byname(argv[4]);
|
||||
mpg123_format_none(mh);
|
||||
mpg123_rates(&rates, &rate_count);
|
||||
for(i=0; i<rate_count; ++i)
|
||||
mpg123_format(mh, rates[i], MPG123_MONO|MPG123_STEREO, enc);
|
||||
}
|
||||
|
||||
/* Let mpg123 work with the file, that excludes MPG123_NEED_MORE messages. */
|
||||
if( mpg123_open(mh, infile) != MPG123_OK
|
||||
/* Peek into track and get first output format. */
|
||||
|| mpg123_getformat(mh, &rate, &channels, &encoding) != MPG123_OK )
|
||||
{
|
||||
fprintf( stderr, "Trouble with mpg123: %s\n", mpg123_strerror(mh) );
|
||||
cleanup(mh, ao);
|
||||
return -1;
|
||||
}
|
||||
if(out123_open(ao, driver, outfile) != OUT123_OK)
|
||||
{
|
||||
fprintf(stderr, "Trouble with out123: %s\n", out123_strerror(ao));
|
||||
cleanup(mh, ao);
|
||||
return -1;
|
||||
}
|
||||
/* It makes no sense for that to give an error now. */
|
||||
out123_driver_info(ao, &driver, &outfile);
|
||||
printf("Effective output driver: %s\n", driver ? driver : "<nil> (default)");
|
||||
printf("Effective output file: %s\n", outfile ? outfile : "<nil> (default)");
|
||||
|
||||
/* Ensure that this output format will not change
|
||||
(it might, when we allow it). */
|
||||
mpg123_format_none(mh);
|
||||
mpg123_format(mh, rate, channels, encoding);
|
||||
|
||||
encname = out123_enc_name(encoding);
|
||||
printf( "Playing with %i channels and %li Hz, encoding %s.\n"
|
||||
, channels, rate, encname ? encname : "???" );
|
||||
if( out123_start(ao, rate, channels, encoding)
|
||||
|| out123_getformat(ao, NULL, NULL, NULL, &framesize) )
|
||||
{
|
||||
fprintf(stderr, "Cannot start output / get framesize: %s\n"
|
||||
, out123_strerror(ao));
|
||||
cleanup(mh, ao);
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* Buffer could be almost any size here, mpg123_outblock() is just some
|
||||
recommendation. The size should be a multiple of the PCM frame size. */
|
||||
buffer_size = argc >= 6 ? atol(argv[5]) : mpg123_outblock(mh);
|
||||
buffer = malloc( buffer_size );
|
||||
|
||||
do
|
||||
{
|
||||
size_t played;
|
||||
err = mpg123_read( mh, buffer, buffer_size, &done );
|
||||
played = out123_play(ao, buffer, done);
|
||||
if(played != done)
|
||||
{
|
||||
fprintf(stderr
|
||||
, "Warning: written less than gotten from libmpg123: %li != %li\n"
|
||||
, (long)played, (long)done);
|
||||
}
|
||||
samples += played/framesize;
|
||||
/* We are not in feeder mode, so MPG123_OK, MPG123_ERR and
|
||||
MPG123_NEW_FORMAT are the only possibilities.
|
||||
We do not handle a new format, MPG123_DONE is the end... so
|
||||
abort on anything not MPG123_OK. */
|
||||
} while (done && err==MPG123_OK);
|
||||
|
||||
free(buffer);
|
||||
|
||||
if(err != MPG123_DONE)
|
||||
fprintf( stderr, "Warning: Decoding ended prematurely because: %s\n",
|
||||
err == MPG123_ERR ? mpg123_strerror(mh) : mpg123_plain_strerror(err) );
|
||||
|
||||
printf("%li samples written.\n", (long)samples);
|
||||
cleanup(mh, ao);
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
prefix=@prefix@
|
||||
exec_prefix=@exec_prefix@
|
||||
libdir=@libdir@
|
||||
includedir=@includedir@
|
||||
|
||||
Name: libout123
|
||||
Description: A streaming audio output API derived from mpg123
|
||||
Requires:
|
||||
Version: @PACKAGE_VERSION@
|
||||
Libs: -L${libdir} -lout123
|
||||
Cflags: -I${includedir}
|
||||
+1404
-1017
File diff suppressed because it is too large
Load Diff
@@ -1,14 +1,14 @@
|
||||
# Helper functions for option handling. -*- Autoconf -*-
|
||||
#
|
||||
# Copyright (C) 2004, 2005, 2007, 2008, 2009 Free Software Foundation,
|
||||
# Inc.
|
||||
# Copyright (C) 2004-2005, 2007-2009, 2011-2015 Free Software
|
||||
# Foundation, Inc.
|
||||
# Written by Gary V. Vaughan, 2004
|
||||
#
|
||||
# This file is free software; the Free Software Foundation gives
|
||||
# unlimited permission to copy and/or distribute it, with or without
|
||||
# modifications, as long as this notice is preserved.
|
||||
|
||||
# serial 7 ltoptions.m4
|
||||
# serial 8 ltoptions.m4
|
||||
|
||||
# This is to help aclocal find these macros, as it can't see m4_define.
|
||||
AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])])
|
||||
@@ -29,7 +29,7 @@ m4_define([_LT_SET_OPTION],
|
||||
[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl
|
||||
m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]),
|
||||
_LT_MANGLE_DEFUN([$1], [$2]),
|
||||
[m4_warning([Unknown $1 option `$2'])])[]dnl
|
||||
[m4_warning([Unknown $1 option '$2'])])[]dnl
|
||||
])
|
||||
|
||||
|
||||
@@ -75,13 +75,15 @@ m4_if([$1],[LT_INIT],[
|
||||
dnl
|
||||
dnl If no reference was made to various pairs of opposing options, then
|
||||
dnl we run the default mode handler for the pair. For example, if neither
|
||||
dnl `shared' nor `disable-shared' was passed, we enable building of shared
|
||||
dnl 'shared' nor 'disable-shared' was passed, we enable building of shared
|
||||
dnl archives by default:
|
||||
_LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED])
|
||||
_LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC])
|
||||
_LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC])
|
||||
_LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install],
|
||||
[_LT_ENABLE_FAST_INSTALL])
|
||||
_LT_UNLESS_OPTIONS([LT_INIT], [aix-soname=aix aix-soname=both aix-soname=svr4],
|
||||
[_LT_WITH_AIX_SONAME([aix])])
|
||||
])
|
||||
])# _LT_SET_OPTIONS
|
||||
|
||||
@@ -112,7 +114,7 @@ AU_DEFUN([AC_LIBTOOL_DLOPEN],
|
||||
[_LT_SET_OPTION([LT_INIT], [dlopen])
|
||||
AC_DIAGNOSE([obsolete],
|
||||
[$0: Remove this warning and the call to _LT_SET_OPTION when you
|
||||
put the `dlopen' option into LT_INIT's first parameter.])
|
||||
put the 'dlopen' option into LT_INIT's first parameter.])
|
||||
])
|
||||
|
||||
dnl aclocal-1.4 backwards compatibility:
|
||||
@@ -148,7 +150,7 @@ AU_DEFUN([AC_LIBTOOL_WIN32_DLL],
|
||||
_LT_SET_OPTION([LT_INIT], [win32-dll])
|
||||
AC_DIAGNOSE([obsolete],
|
||||
[$0: Remove this warning and the call to _LT_SET_OPTION when you
|
||||
put the `win32-dll' option into LT_INIT's first parameter.])
|
||||
put the 'win32-dll' option into LT_INIT's first parameter.])
|
||||
])
|
||||
|
||||
dnl aclocal-1.4 backwards compatibility:
|
||||
@@ -157,9 +159,9 @@ dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [])
|
||||
|
||||
# _LT_ENABLE_SHARED([DEFAULT])
|
||||
# ----------------------------
|
||||
# implement the --enable-shared flag, and supports the `shared' and
|
||||
# `disable-shared' LT_INIT options.
|
||||
# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'.
|
||||
# implement the --enable-shared flag, and supports the 'shared' and
|
||||
# 'disable-shared' LT_INIT options.
|
||||
# DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'.
|
||||
m4_define([_LT_ENABLE_SHARED],
|
||||
[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl
|
||||
AC_ARG_ENABLE([shared],
|
||||
@@ -172,14 +174,14 @@ AC_ARG_ENABLE([shared],
|
||||
*)
|
||||
enable_shared=no
|
||||
# Look at the argument we got. We use all the common list separators.
|
||||
lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
|
||||
lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
|
||||
for pkg in $enableval; do
|
||||
IFS="$lt_save_ifs"
|
||||
IFS=$lt_save_ifs
|
||||
if test "X$pkg" = "X$p"; then
|
||||
enable_shared=yes
|
||||
fi
|
||||
done
|
||||
IFS="$lt_save_ifs"
|
||||
IFS=$lt_save_ifs
|
||||
;;
|
||||
esac],
|
||||
[enable_shared=]_LT_ENABLE_SHARED_DEFAULT)
|
||||
@@ -211,9 +213,9 @@ dnl AC_DEFUN([AM_DISABLE_SHARED], [])
|
||||
|
||||
# _LT_ENABLE_STATIC([DEFAULT])
|
||||
# ----------------------------
|
||||
# implement the --enable-static flag, and support the `static' and
|
||||
# `disable-static' LT_INIT options.
|
||||
# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'.
|
||||
# implement the --enable-static flag, and support the 'static' and
|
||||
# 'disable-static' LT_INIT options.
|
||||
# DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'.
|
||||
m4_define([_LT_ENABLE_STATIC],
|
||||
[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl
|
||||
AC_ARG_ENABLE([static],
|
||||
@@ -226,14 +228,14 @@ AC_ARG_ENABLE([static],
|
||||
*)
|
||||
enable_static=no
|
||||
# Look at the argument we got. We use all the common list separators.
|
||||
lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
|
||||
lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
|
||||
for pkg in $enableval; do
|
||||
IFS="$lt_save_ifs"
|
||||
IFS=$lt_save_ifs
|
||||
if test "X$pkg" = "X$p"; then
|
||||
enable_static=yes
|
||||
fi
|
||||
done
|
||||
IFS="$lt_save_ifs"
|
||||
IFS=$lt_save_ifs
|
||||
;;
|
||||
esac],
|
||||
[enable_static=]_LT_ENABLE_STATIC_DEFAULT)
|
||||
@@ -265,9 +267,9 @@ dnl AC_DEFUN([AM_DISABLE_STATIC], [])
|
||||
|
||||
# _LT_ENABLE_FAST_INSTALL([DEFAULT])
|
||||
# ----------------------------------
|
||||
# implement the --enable-fast-install flag, and support the `fast-install'
|
||||
# and `disable-fast-install' LT_INIT options.
|
||||
# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'.
|
||||
# implement the --enable-fast-install flag, and support the 'fast-install'
|
||||
# and 'disable-fast-install' LT_INIT options.
|
||||
# DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'.
|
||||
m4_define([_LT_ENABLE_FAST_INSTALL],
|
||||
[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl
|
||||
AC_ARG_ENABLE([fast-install],
|
||||
@@ -280,14 +282,14 @@ AC_ARG_ENABLE([fast-install],
|
||||
*)
|
||||
enable_fast_install=no
|
||||
# Look at the argument we got. We use all the common list separators.
|
||||
lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
|
||||
lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
|
||||
for pkg in $enableval; do
|
||||
IFS="$lt_save_ifs"
|
||||
IFS=$lt_save_ifs
|
||||
if test "X$pkg" = "X$p"; then
|
||||
enable_fast_install=yes
|
||||
fi
|
||||
done
|
||||
IFS="$lt_save_ifs"
|
||||
IFS=$lt_save_ifs
|
||||
;;
|
||||
esac],
|
||||
[enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT)
|
||||
@@ -304,14 +306,14 @@ AU_DEFUN([AC_ENABLE_FAST_INSTALL],
|
||||
[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install])
|
||||
AC_DIAGNOSE([obsolete],
|
||||
[$0: Remove this warning and the call to _LT_SET_OPTION when you put
|
||||
the `fast-install' option into LT_INIT's first parameter.])
|
||||
the 'fast-install' option into LT_INIT's first parameter.])
|
||||
])
|
||||
|
||||
AU_DEFUN([AC_DISABLE_FAST_INSTALL],
|
||||
[_LT_SET_OPTION([LT_INIT], [disable-fast-install])
|
||||
AC_DIAGNOSE([obsolete],
|
||||
[$0: Remove this warning and the call to _LT_SET_OPTION when you put
|
||||
the `disable-fast-install' option into LT_INIT's first parameter.])
|
||||
the 'disable-fast-install' option into LT_INIT's first parameter.])
|
||||
])
|
||||
|
||||
dnl aclocal-1.4 backwards compatibility:
|
||||
@@ -319,11 +321,64 @@ dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], [])
|
||||
dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], [])
|
||||
|
||||
|
||||
# _LT_WITH_AIX_SONAME([DEFAULT])
|
||||
# ----------------------------------
|
||||
# implement the --with-aix-soname flag, and support the `aix-soname=aix'
|
||||
# and `aix-soname=both' and `aix-soname=svr4' LT_INIT options. DEFAULT
|
||||
# is either `aix', `both' or `svr4'. If omitted, it defaults to `aix'.
|
||||
m4_define([_LT_WITH_AIX_SONAME],
|
||||
[m4_define([_LT_WITH_AIX_SONAME_DEFAULT], [m4_if($1, svr4, svr4, m4_if($1, both, both, aix))])dnl
|
||||
shared_archive_member_spec=
|
||||
case $host,$enable_shared in
|
||||
power*-*-aix[[5-9]]*,yes)
|
||||
AC_MSG_CHECKING([which variant of shared library versioning to provide])
|
||||
AC_ARG_WITH([aix-soname],
|
||||
[AS_HELP_STRING([--with-aix-soname=aix|svr4|both],
|
||||
[shared library versioning (aka "SONAME") variant to provide on AIX, @<:@default=]_LT_WITH_AIX_SONAME_DEFAULT[@:>@.])],
|
||||
[case $withval in
|
||||
aix|svr4|both)
|
||||
;;
|
||||
*)
|
||||
AC_MSG_ERROR([Unknown argument to --with-aix-soname])
|
||||
;;
|
||||
esac
|
||||
lt_cv_with_aix_soname=$with_aix_soname],
|
||||
[AC_CACHE_VAL([lt_cv_with_aix_soname],
|
||||
[lt_cv_with_aix_soname=]_LT_WITH_AIX_SONAME_DEFAULT)
|
||||
with_aix_soname=$lt_cv_with_aix_soname])
|
||||
AC_MSG_RESULT([$with_aix_soname])
|
||||
if test aix != "$with_aix_soname"; then
|
||||
# For the AIX way of multilib, we name the shared archive member
|
||||
# based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o',
|
||||
# and 'shr.imp' or 'shr_64.imp', respectively, for the Import File.
|
||||
# Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag,
|
||||
# the AIX toolchain works better with OBJECT_MODE set (default 32).
|
||||
if test 64 = "${OBJECT_MODE-32}"; then
|
||||
shared_archive_member_spec=shr_64
|
||||
else
|
||||
shared_archive_member_spec=shr
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
with_aix_soname=aix
|
||||
;;
|
||||
esac
|
||||
|
||||
_LT_DECL([], [shared_archive_member_spec], [0],
|
||||
[Shared archive member basename, for filename based shared library versioning on AIX])dnl
|
||||
])# _LT_WITH_AIX_SONAME
|
||||
|
||||
LT_OPTION_DEFINE([LT_INIT], [aix-soname=aix], [_LT_WITH_AIX_SONAME([aix])])
|
||||
LT_OPTION_DEFINE([LT_INIT], [aix-soname=both], [_LT_WITH_AIX_SONAME([both])])
|
||||
LT_OPTION_DEFINE([LT_INIT], [aix-soname=svr4], [_LT_WITH_AIX_SONAME([svr4])])
|
||||
|
||||
|
||||
# _LT_WITH_PIC([MODE])
|
||||
# --------------------
|
||||
# implement the --with-pic flag, and support the `pic-only' and `no-pic'
|
||||
# implement the --with-pic flag, and support the 'pic-only' and 'no-pic'
|
||||
# LT_INIT options.
|
||||
# MODE is either `yes' or `no'. If omitted, it defaults to `both'.
|
||||
# MODE is either 'yes' or 'no'. If omitted, it defaults to 'both'.
|
||||
m4_define([_LT_WITH_PIC],
|
||||
[AC_ARG_WITH([pic],
|
||||
[AS_HELP_STRING([--with-pic@<:@=PKGS@:>@],
|
||||
@@ -334,19 +389,17 @@ m4_define([_LT_WITH_PIC],
|
||||
*)
|
||||
pic_mode=default
|
||||
# Look at the argument we got. We use all the common list separators.
|
||||
lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
|
||||
lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
|
||||
for lt_pkg in $withval; do
|
||||
IFS="$lt_save_ifs"
|
||||
IFS=$lt_save_ifs
|
||||
if test "X$lt_pkg" = "X$lt_p"; then
|
||||
pic_mode=yes
|
||||
fi
|
||||
done
|
||||
IFS="$lt_save_ifs"
|
||||
IFS=$lt_save_ifs
|
||||
;;
|
||||
esac],
|
||||
[pic_mode=default])
|
||||
|
||||
test -z "$pic_mode" && pic_mode=m4_default([$1], [default])
|
||||
[pic_mode=m4_default([$1], [default])])
|
||||
|
||||
_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl
|
||||
])# _LT_WITH_PIC
|
||||
@@ -359,7 +412,7 @@ AU_DEFUN([AC_LIBTOOL_PICMODE],
|
||||
[_LT_SET_OPTION([LT_INIT], [pic-only])
|
||||
AC_DIAGNOSE([obsolete],
|
||||
[$0: Remove this warning and the call to _LT_SET_OPTION when you
|
||||
put the `pic-only' option into LT_INIT's first parameter.])
|
||||
put the 'pic-only' option into LT_INIT's first parameter.])
|
||||
])
|
||||
|
||||
dnl aclocal-1.4 backwards compatibility:
|
||||
@@ -1,6 +1,7 @@
|
||||
# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*-
|
||||
#
|
||||
# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc.
|
||||
# Copyright (C) 2004-2005, 2007-2008, 2011-2015 Free Software
|
||||
# Foundation, Inc.
|
||||
# Written by Gary V. Vaughan, 2004
|
||||
#
|
||||
# This file is free software; the Free Software Foundation gives
|
||||
@@ -33,7 +34,7 @@ m4_define([_lt_join],
|
||||
# ------------
|
||||
# Manipulate m4 lists.
|
||||
# These macros are necessary as long as will still need to support
|
||||
# Autoconf-2.59 which quotes differently.
|
||||
# Autoconf-2.59, which quotes differently.
|
||||
m4_define([lt_car], [[$1]])
|
||||
m4_define([lt_cdr],
|
||||
[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])],
|
||||
@@ -44,7 +45,7 @@ m4_define([lt_unquote], $1)
|
||||
|
||||
# lt_append(MACRO-NAME, STRING, [SEPARATOR])
|
||||
# ------------------------------------------
|
||||
# Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'.
|
||||
# Redefine MACRO-NAME to hold its former content plus 'SEPARATOR''STRING'.
|
||||
# Note that neither SEPARATOR nor STRING are expanded; they are appended
|
||||
# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked).
|
||||
# No SEPARATOR is output if MACRO-NAME was previously undefined (different
|
||||
@@ -1,6 +1,6 @@
|
||||
# ltversion.m4 -- version numbers -*- Autoconf -*-
|
||||
#
|
||||
# Copyright (C) 2004 Free Software Foundation, Inc.
|
||||
# Copyright (C) 2004, 2011-2015 Free Software Foundation, Inc.
|
||||
# Written by Scott James Remnant, 2004
|
||||
#
|
||||
# This file is free software; the Free Software Foundation gives
|
||||
@@ -9,15 +9,15 @@
|
||||
|
||||
# @configure_input@
|
||||
|
||||
# serial 3337 ltversion.m4
|
||||
# serial 4179 ltversion.m4
|
||||
# This file is part of GNU Libtool
|
||||
|
||||
m4_define([LT_PACKAGE_VERSION], [2.4.2])
|
||||
m4_define([LT_PACKAGE_REVISION], [1.3337])
|
||||
m4_define([LT_PACKAGE_VERSION], [2.4.6])
|
||||
m4_define([LT_PACKAGE_REVISION], [2.4.6])
|
||||
|
||||
AC_DEFUN([LTVERSION_VERSION],
|
||||
[macro_version='2.4.2'
|
||||
macro_revision='1.3337'
|
||||
[macro_version='2.4.6'
|
||||
macro_revision='2.4.6'
|
||||
_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?])
|
||||
_LT_DECL(, macro_revision, 0)
|
||||
])
|
||||
+3
-2
@@ -1,6 +1,7 @@
|
||||
# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*-
|
||||
#
|
||||
# Copyright (C) 2004, 2005, 2007, 2009 Free Software Foundation, Inc.
|
||||
# Copyright (C) 2004-2005, 2007, 2009, 2011-2015 Free Software
|
||||
# Foundation, Inc.
|
||||
# Written by Scott James Remnant, 2004.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation gives
|
||||
@@ -11,7 +12,7 @@
|
||||
|
||||
# These exist entirely to fool aclocal when bootstrapping libtool.
|
||||
#
|
||||
# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN)
|
||||
# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN),
|
||||
# which have later been changed to m4_define as they aren't part of the
|
||||
# exported API, or moved to Autoconf or Automake where they belong.
|
||||
#
|
||||
@@ -1,4 +1,4 @@
|
||||
.TH mpg123 1 "22 Apr 2012"
|
||||
.TH mpg123 1 "29 Feb 2016"
|
||||
.SH NAME
|
||||
mpg123 \- play audio MPEG 1.0/2.0/2.5 stream (layers 1, 2 and 3)
|
||||
.SH SYNOPSIS
|
||||
@@ -6,8 +6,7 @@ mpg123 \- play audio MPEG 1.0/2.0/2.5 stream (layers 1, 2 and 3)
|
||||
[
|
||||
.B options
|
||||
]
|
||||
.IR file " ... | " URL " ... | "
|
||||
.B \-
|
||||
.IR file-or-URL ...
|
||||
.SH DESCRIPTION
|
||||
.B mpg123
|
||||
reads one or more
|
||||
@@ -83,6 +82,14 @@ from the respective servers. See also the
|
||||
HTTP authentication to use when recieving files via HTTP.
|
||||
The format used is user:password.
|
||||
.TP
|
||||
\fB\-\^\-ignore\-mime
|
||||
Ignore MIME types given by HTTP server. If you know better and want mpg123
|
||||
to decode something the server thinks is image/png, then just do it.
|
||||
.TP
|
||||
\fB\-\^\-no\-seekbuffer
|
||||
Disable the default micro-buffering of non-seekable streams that gives the
|
||||
parser a safer footing.
|
||||
.TP
|
||||
\fB\-@ \fIfile\fR, \fB\-\^\-list \fIfile
|
||||
Read filenames and/or URLs of MPEG audio streams from the specified
|
||||
.I file
|
||||
@@ -128,7 +135,7 @@ plays individual songs more than once.
|
||||
\fB\-\^\-no\-icy\-meta
|
||||
Do not accept ICY meta data.
|
||||
.TP
|
||||
\fB\-i, \-\^-\index
|
||||
\fB\-i, \-\^-index
|
||||
Index / scan through the track before playback.
|
||||
This fills the index table for seeking (if enabled in libmpg123) and may make the operating system cache the file contents for smoother operating on playback.
|
||||
.TP
|
||||
@@ -251,7 +258,7 @@ Forces 8bit output
|
||||
\fB\-\^\-float
|
||||
Forces f32 encoding
|
||||
.TP
|
||||
\fp\-e \fIenc\fR, \fB\-\^\-encoding \fIenc
|
||||
\fB\-e \fIenc\fR, \fB\-\^\-encoding \fIenc
|
||||
Choose output sample encoding. Possible values look like f32 (32-bit floating point), s32 (32-bit signed integer), u32 (32-bit unsigned integer) and the variants with different numbers of bits (s24, u24, s16, u16, s8, u8) and also special variants like ulaw and alaw 8-bit.
|
||||
See the output of mpg123's longhelp for actually available encodings.
|
||||
.TP
|
||||
@@ -298,6 +305,10 @@ This is enabled per default beginning with mpg123 version 1.0.0 .
|
||||
\fB\-\^\-no\-gapless
|
||||
Disable the gapless code. That gives you MP3 decodings that include encoder delay and padding plus mpg123's decoder delay.
|
||||
.TP
|
||||
\fB\-\^\-no\-infoframe
|
||||
Do not parse the Xing/Lame/VBR/Info frame, decode it instead just like a stupid old MP3 hardware player.
|
||||
This implies disabling of gapless playback as the necessary information is in said metadata frame.
|
||||
.TP
|
||||
\fB\-D \fIn\fR, \fB\-\-delay \fIn
|
||||
Insert a delay of \fIn\fR seconds before each track.
|
||||
.TP
|
||||
@@ -325,7 +336,11 @@ which turns buffering off.
|
||||
Wait for the buffer to be filled to
|
||||
.I fraction
|
||||
before starting playback (fraction between 0 and 1). You can tune this prebuffering to either get faster sound to your ears or safer uninterrupted web radio.
|
||||
Default is 1 (wait for full buffer before playback).
|
||||
Default is 0.2 (wait for 20 % of buffer to be full, changed from 1 in version 1.23).
|
||||
.TP
|
||||
\fB\-\^\-devbuffer \fIseconds
|
||||
Set device buffer in seconds; <= 0 means default value. This is the small buffer between the
|
||||
application and the audio backend, possibly directly related to hardware buffers.
|
||||
.TP
|
||||
\fB\-\^\-smooth
|
||||
Keep buffer over track boundaries -- meaning, do not empty the buffer between tracks for possibly some added smoothness.
|
||||
@@ -348,14 +363,21 @@ numbers during decoding.
|
||||
Quiet. Suppress diagnostic messages.
|
||||
.TP
|
||||
.BR \-C ", " \-\^\-control
|
||||
Enable terminal control keys. By default use 's' or the space bar to stop/restart (pause, unpause) playback, 'f' to jump forward to the next song, 'b' to jump back to the
|
||||
Enable terminal control keys. This is enabled automatically if a terminal is detected.
|
||||
By default use 's' or the space bar to stop/restart (pause, unpause) playback, 'f' to jump forward to the next song, 'b' to jump back to the
|
||||
beginning of the song, ',' to rewind, '.' to fast forward, and 'q' to quit.
|
||||
Type 'h' for a full list of available controls.
|
||||
.TP
|
||||
\fB\-\^\-no\-control
|
||||
Disable terminal control even if terminal is detected.
|
||||
.TP
|
||||
\fB\-\^\-title
|
||||
In an xterm, or rxvt (compatible, TERM environment variable is examined), change the window's title to the name of song currently
|
||||
In an xterm, rxvt, screen, iris-ansi (compatible, TERM environment variable is examined), change the window's title to the name of song currently
|
||||
playing.
|
||||
.TP
|
||||
\fB\-\^\-name \fIname
|
||||
Set the name of this instance, possibly used in various places. This sets the client name for JACK output.
|
||||
.TP
|
||||
\fB\-\^\-long\-tag
|
||||
Display ID3 tag info always in long format with one line per item (artist, title, ...)
|
||||
.TP
|
||||
@@ -373,7 +395,7 @@ Issue ``help'' to get a full list of commands and syntax.
|
||||
Print responses for generic control mode to standard error, not standard out.
|
||||
This is automatically triggered when using
|
||||
.B -s
|
||||
\fN.
|
||||
N.
|
||||
.TP
|
||||
\fB\-\-fifo \fIpath
|
||||
Create a fifo / named pipe on the given path and use that for reading commands instead of standard input.
|
||||
@@ -451,9 +473,53 @@ pressing Ctrl-C might not be audible
|
||||
immediately, due to audio data buffering in the audio device.
|
||||
This delay is system dependent, but it is usually not more
|
||||
than one or two seconds.
|
||||
.SH "SEE ALSO"
|
||||
.BR wget (1),
|
||||
.BR sox (1),
|
||||
|
||||
.SH PLAYBACK STATUS LINE
|
||||
In verbose mode, mpg123 updates a line with various information centering around
|
||||
the current playback position. On any decent terminal, the line also works
|
||||
as a progress bar in the current file by reversing video for a fraction of the
|
||||
line according to the current position. An example for a full line is this:
|
||||
|
||||
> 0291+0955 00:01.68+00:28.22 [00:05.30] mix 100=085 192 kb/s 576 B acc 18 clip p+0.014
|
||||
|
||||
The information consists of, in order:
|
||||
.TP
|
||||
.BR >
|
||||
single-character playback state (``>'' for playing, ``='' for pausing/looping, ``_'' for stopped)
|
||||
.TP
|
||||
.BR 0291+0955
|
||||
current frame offset and number of remaining frames after the plus sign
|
||||
.TP
|
||||
.BR 00:01.68+00:28.22
|
||||
current position from and remaining time in human terms
|
||||
(hours, minutes, seconds)
|
||||
.TP
|
||||
.BR [00:05.30]
|
||||
fill of the output buffer in terms of playback time, if the buffer is enabled
|
||||
.TP
|
||||
.BR mix
|
||||
selected RVA mode (possible values: mix, alb (album), and \-\^\-\^\- (neutral, off))
|
||||
.TP
|
||||
.BR 100=085
|
||||
set volume and the RVA-modified effective volume after the equal sign
|
||||
.TP
|
||||
.BR 192\ kb/s
|
||||
current bitrate
|
||||
.TP
|
||||
.BR 576\ B
|
||||
size of current frame in bytes
|
||||
.TP
|
||||
.BR acc
|
||||
if positions are accurate, possible values are ``acc'' for accurate positions or ``fuz'' for fuzzy
|
||||
(with guessed byte offsets using mean frame size)
|
||||
.TP
|
||||
.BR 18\ clip
|
||||
amount of clipped samples, non-zero only if decoder reports that
|
||||
(generic does, some optimized ones not)
|
||||
.TP
|
||||
.BR p+0.014
|
||||
pitch change (increased/decreased playback sampling rate on user request)
|
||||
|
||||
.SH NOTES
|
||||
MPEG audio decoding requires a good deal of CPU performance,
|
||||
especially layer-3. To decode it in realtime, you should
|
||||
@@ -465,14 +531,10 @@ somewhat for layer-3 streams. See also the
|
||||
.BR \-2 " and " \-4
|
||||
options.
|
||||
.P
|
||||
If everything else fails, use the
|
||||
.B \-s
|
||||
option to decode to standard output, direct it into a file
|
||||
and then use an appropriate utility to play that file.
|
||||
You might have to use a tool such as
|
||||
.BR sox (1)
|
||||
to convert the output to an audio format suitable for
|
||||
your audio player.
|
||||
If everything else fails, have mpg123 decode to a file
|
||||
and then use an appropriate utility to play that file with less CPU load.
|
||||
Most probably you can configure mpg123 to produce a format suitable
|
||||
for your audio device (see above about encodings and sampling rates).
|
||||
.P
|
||||
If your system is generally fast enough to decode in
|
||||
realtime, but there are sometimes periods of heavy
|
||||
@@ -487,26 +549,21 @@ option to use a buffer of reasonable size (at least 1000 Kbytes).
|
||||
Mostly MPEG-1 layer 2 and 3 are tested in real life.
|
||||
Please report any issues and provide test files to help fixing them.
|
||||
.P
|
||||
Free format streams are not supported, but they could be (there is some code).
|
||||
.P
|
||||
No CRC error checking is performed.
|
||||
.P
|
||||
Some platforms lack audio hardware support; you may be able to use the
|
||||
.B -s
|
||||
switch to feed the decoded data to a program that can play it on your audio device.
|
||||
Notably, this includes Tru64 with MME, but you should be able to install and use OSS there (it perhaps will perform better as MME would anyway).
|
||||
.SH AUTHORS
|
||||
.TP
|
||||
Maintainers:
|
||||
Maintainer:
|
||||
.br
|
||||
Thomas Orgis <maintainer@mpg123.org>, <thomas@orgis.org>
|
||||
.br
|
||||
Nicholas J. Humfrey
|
||||
.TP
|
||||
Creator:
|
||||
Original Creator:
|
||||
.br
|
||||
Michael Hipp
|
||||
.TP
|
||||
.PP
|
||||
Uses code or ideas from various people, see the AUTHORS file accompanying the source code.
|
||||
.SH LICENSE
|
||||
.B mpg123
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user