mirror of
https://github.com/cookiengineer/audacity
synced 2025-10-10 16:43:33 +02:00
Move library tree where it belongs
This commit is contained in:
10
lib-src/twolame/frontend/Makefile.am
Normal file
10
lib-src/twolame/frontend/Makefile.am
Normal file
@@ -0,0 +1,10 @@
|
||||
|
||||
AM_CFLAGS = -I$(top_srcdir)/build/ -I$(top_srcdir)/libtwolame/ @SNDFILE_CFLAGS@
|
||||
AM_LDFLAGS = @SNDFILE_LIBS@
|
||||
|
||||
|
||||
bin_PROGRAMS = @TWOLAME_BIN@
|
||||
EXTRA_PROGRAMS = twolame
|
||||
|
||||
twolame_SOURCES = frontend.c frontend.h audioin_raw.c audioin_sndfile.c
|
||||
twolame_LDADD = $(top_srcdir)/libtwolame/libtwolame.la
|
478
lib-src/twolame/frontend/Makefile.in
Normal file
478
lib-src/twolame/frontend/Makefile.in
Normal file
@@ -0,0 +1,478 @@
|
||||
# Makefile.in generated by automake 1.10.2 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||
# 2003, 2004, 2005, 2006, 2007, 2008 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@
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@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@
|
||||
target_triplet = @target@
|
||||
EXTRA_PROGRAMS = twolame$(EXEEXT)
|
||||
subdir = frontend
|
||||
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/build/m4/libtool.m4 \
|
||||
$(top_srcdir)/build/m4/pkg.m4 $(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
mkinstalldirs = $(SHELL) $(top_srcdir)/build/mkinstalldirs
|
||||
CONFIG_HEADER = $(top_builddir)/build/config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
am__installdirs = "$(DESTDIR)$(bindir)"
|
||||
binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
|
||||
PROGRAMS = $(bin_PROGRAMS)
|
||||
am_twolame_OBJECTS = frontend.$(OBJEXT) audioin_raw.$(OBJEXT) \
|
||||
audioin_sndfile.$(OBJEXT)
|
||||
twolame_OBJECTS = $(am_twolame_OBJECTS)
|
||||
twolame_DEPENDENCIES = $(top_srcdir)/libtwolame/libtwolame.la
|
||||
DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/build
|
||||
depcomp = $(SHELL) $(top_srcdir)/build/depcomp
|
||||
am__depfiles_maybe = depfiles
|
||||
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 = $(twolame_SOURCES)
|
||||
DIST_SOURCES = $(twolame_SOURCES)
|
||||
ETAGS = etags
|
||||
CTAGS = ctags
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
ACLOCAL = @ACLOCAL@
|
||||
AMTAR = @AMTAR@
|
||||
AR = @AR@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AWK = @AWK@
|
||||
CC = @CC@
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
CFLAGS = @CFLAGS@
|
||||
CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CXX = @CXX@
|
||||
CXXCPP = @CXXCPP@
|
||||
CXXDEPMODE = @CXXDEPMODE@
|
||||
CXXFLAGS = @CXXFLAGS@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
DEFS = @DEFS@
|
||||
DEPDIR = @DEPDIR@
|
||||
DSYMUTIL = @DSYMUTIL@
|
||||
ECHO = @ECHO@
|
||||
ECHO_C = @ECHO_C@
|
||||
ECHO_N = @ECHO_N@
|
||||
ECHO_T = @ECHO_T@
|
||||
EGREP = @EGREP@
|
||||
EXEEXT = @EXEEXT@
|
||||
F77 = @F77@
|
||||
FFLAGS = @FFLAGS@
|
||||
GREP = @GREP@
|
||||
INSTALL = @INSTALL@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
LIBS = @LIBS@
|
||||
LIBTOOL = @LIBTOOL@
|
||||
LN_S = @LN_S@
|
||||
LTLIBOBJS = @LTLIBOBJS@
|
||||
MAINT = @MAINT@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
MKDIR_P = @MKDIR_P@
|
||||
NMEDIT = @NMEDIT@
|
||||
OBJEXT = @OBJEXT@
|
||||
PACKAGE = @PACKAGE@
|
||||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||
PACKAGE_NAME = @PACKAGE_NAME@
|
||||
PACKAGE_STRING = @PACKAGE_STRING@
|
||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
PKG_CONFIG = @PKG_CONFIG@
|
||||
RANLIB = @RANLIB@
|
||||
SED = @SED@
|
||||
SET_MAKE = @SET_MAKE@
|
||||
SHELL = @SHELL@
|
||||
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
|
||||
SNDFILE_LIBS = @SNDFILE_LIBS@
|
||||
STRIP = @STRIP@
|
||||
STWOLAME_BIN = @STWOLAME_BIN@
|
||||
TWOLAME_BIN = @TWOLAME_BIN@
|
||||
TWOLAME_SO_VERSION = @TWOLAME_SO_VERSION@
|
||||
VERSION = @VERSION@
|
||||
abs_builddir = @abs_builddir@
|
||||
abs_srcdir = @abs_srcdir@
|
||||
abs_top_builddir = @abs_top_builddir@
|
||||
abs_top_srcdir = @abs_top_srcdir@
|
||||
ac_ct_CC = @ac_ct_CC@
|
||||
ac_ct_CXX = @ac_ct_CXX@
|
||||
ac_ct_F77 = @ac_ct_F77@
|
||||
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 = @target@
|
||||
target_alias = @target_alias@
|
||||
target_cpu = @target_cpu@
|
||||
target_os = @target_os@
|
||||
target_vendor = @target_vendor@
|
||||
top_build_prefix = @top_build_prefix@
|
||||
top_builddir = @top_builddir@
|
||||
top_srcdir = @top_srcdir@
|
||||
AM_CFLAGS = -I$(top_srcdir)/build/ -I$(top_srcdir)/libtwolame/ @SNDFILE_CFLAGS@
|
||||
AM_LDFLAGS = @SNDFILE_LIBS@
|
||||
bin_PROGRAMS = @TWOLAME_BIN@
|
||||
twolame_SOURCES = frontend.c frontend.h audioin_raw.c audioin_sndfile.c
|
||||
twolame_LDADD = $(top_srcdir)/libtwolame/libtwolame.la
|
||||
all: all-am
|
||||
|
||||
.SUFFIXES:
|
||||
.SUFFIXES: .c .lo .o .obj
|
||||
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(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 frontend/Makefile'; \
|
||||
cd $(top_srcdir) && \
|
||||
$(AUTOMAKE) --gnu frontend/Makefile
|
||||
.PRECIOUS: Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||
*) \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
|
||||
esac;
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
|
||||
$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
install-binPROGRAMS: $(bin_PROGRAMS)
|
||||
@$(NORMAL_INSTALL)
|
||||
test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
|
||||
@list='$(bin_PROGRAMS)'; for p in $$list; do \
|
||||
p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
|
||||
if test -f $$p \
|
||||
|| test -f $$p1 \
|
||||
; then \
|
||||
f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \
|
||||
echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \
|
||||
$(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \
|
||||
else :; fi; \
|
||||
done
|
||||
|
||||
uninstall-binPROGRAMS:
|
||||
@$(NORMAL_UNINSTALL)
|
||||
@list='$(bin_PROGRAMS)'; for p in $$list; do \
|
||||
f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
|
||||
echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \
|
||||
rm -f "$(DESTDIR)$(bindir)/$$f"; \
|
||||
done
|
||||
|
||||
clean-binPROGRAMS:
|
||||
@list='$(bin_PROGRAMS)'; for p in $$list; do \
|
||||
f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
|
||||
echo " rm -f $$p $$f"; \
|
||||
rm -f $$p $$f ; \
|
||||
done
|
||||
twolame$(EXEEXT): $(twolame_OBJECTS) $(twolame_DEPENDENCIES)
|
||||
@rm -f twolame$(EXEEXT)
|
||||
$(LINK) $(twolame_OBJECTS) $(twolame_LDADD) $(LIBS)
|
||||
|
||||
mostlyclean-compile:
|
||||
-rm -f *.$(OBJEXT)
|
||||
|
||||
distclean-compile:
|
||||
-rm -f *.tab.c
|
||||
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/audioin_raw.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/audioin_sndfile.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/frontend.Po@am__quote@
|
||||
|
||||
.c.o:
|
||||
@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
|
||||
@am__fastdepCC_TRUE@ mv -f $(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@ mv -f $(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@ mv -f $(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
|
||||
|
||||
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)
|
||||
tags=; \
|
||||
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; }; }'`; \
|
||||
if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
|
||||
test -n "$$unique" || unique=$$empty_fix; \
|
||||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
$$tags $$unique; \
|
||||
fi
|
||||
ctags: CTAGS
|
||||
CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
tags=; \
|
||||
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)$$tags$$unique" \
|
||||
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||
$$tags $$unique
|
||||
|
||||
GTAGS:
|
||||
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||
&& cd $(top_srcdir) \
|
||||
&& gtags -i $(GTAGS_ARGS) $$here
|
||||
|
||||
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 $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
|
||||
fi; \
|
||||
cp -pR $$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 $(PROGRAMS)
|
||||
installdirs:
|
||||
for dir in "$(DESTDIR)$(bindir)"; 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:
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
`test -z '$(STRIP)' || \
|
||||
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
|
||||
distclean-generic:
|
||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_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-binPROGRAMS clean-generic 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
|
||||
|
||||
info: info-am
|
||||
|
||||
info-am:
|
||||
|
||||
install-data-am:
|
||||
|
||||
install-dvi: install-dvi-am
|
||||
|
||||
install-exec-am: install-binPROGRAMS
|
||||
|
||||
install-html: install-html-am
|
||||
|
||||
install-info: install-info-am
|
||||
|
||||
install-man:
|
||||
|
||||
install-pdf: install-pdf-am
|
||||
|
||||
install-ps: 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-binPROGRAMS
|
||||
|
||||
.MAKE: install-am install-strip
|
||||
|
||||
.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
|
||||
clean-generic clean-libtool ctags distclean distclean-compile \
|
||||
distclean-generic distclean-libtool distclean-tags distdir dvi \
|
||||
dvi-am html html-am info info-am install install-am \
|
||||
install-binPROGRAMS 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-compile mostlyclean-generic mostlyclean-libtool \
|
||||
pdf pdf-am ps ps-am tags uninstall uninstall-am \
|
||||
uninstall-binPROGRAMS
|
||||
|
||||
# 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:
|
116
lib-src/twolame/frontend/audioin_raw.c
Normal file
116
lib-src/twolame/frontend/audioin_raw.c
Normal file
@@ -0,0 +1,116 @@
|
||||
/*
|
||||
* TwoLAME: an optimized MPEG Audio Layer Two encoder
|
||||
*
|
||||
* Copyright (C) 2004-2007 The TwoLAME Project
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
* $Id: audioin_raw.c,v 1.1 2008-02-01 19:44:25 richardash1981 Exp $
|
||||
*
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <errno.h>
|
||||
#include "frontend.h"
|
||||
|
||||
|
||||
/* We still use libsndfiles' SF_INFO structure for convenience */
|
||||
|
||||
|
||||
static void print_info_raw(struct audioin_s *audioin )
|
||||
{
|
||||
|
||||
fprintf(stderr, "Raw input format: %d channels, %d-bit, %d Hz\n",
|
||||
audioin->sfinfo->channels, audioin->samplesize, audioin->sfinfo->samplerate );
|
||||
|
||||
}
|
||||
|
||||
|
||||
/* Read in some audio samples into buffer */
|
||||
static int read_raw( audioin_t* audioin, short *buffer, int samples)
|
||||
{
|
||||
FILE* file = audioin->file;
|
||||
|
||||
if (audioin->samplesize==16) {
|
||||
return fread( buffer, 2, samples, file );
|
||||
} else {
|
||||
fprintf(stderr, "Error: sorry %d-bit samples are not supported at the moment.\n", audioin->samplesize);
|
||||
}
|
||||
|
||||
// Error
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
/* Return error string (or NULL) */
|
||||
static const char* error_str_raw( audioin_t* audioin )
|
||||
{
|
||||
FILE* file = audioin->file;
|
||||
int error = ferror( file );
|
||||
if (error==0) return NULL;
|
||||
return strerror(error);
|
||||
}
|
||||
|
||||
|
||||
static int close_raw( audioin_t* audioin )
|
||||
{
|
||||
FILE* file = audioin->file;
|
||||
|
||||
free( audioin );
|
||||
|
||||
return fclose( file );
|
||||
}
|
||||
|
||||
|
||||
audioin_t* open_audioin_raw( char* filename, SF_INFO *sfinfo, int samplesize )
|
||||
{
|
||||
audioin_t* audioin = NULL;
|
||||
|
||||
|
||||
// Allocate memory for structure
|
||||
audioin = malloc( sizeof( audioin_t ) );
|
||||
if (audioin==NULL) {
|
||||
fprintf(stderr, "Failed to allocate memory for audioin_t structure.\n");
|
||||
exit(ERR_MEM_ALLOC);
|
||||
}
|
||||
|
||||
// Open the input file by filename
|
||||
if (strcmp(filename, "-") == 0) {
|
||||
// Use STDIN
|
||||
audioin->file = stdin;
|
||||
} else {
|
||||
audioin->file = fopen(filename, "rb");
|
||||
}
|
||||
|
||||
// Check for errors
|
||||
if (audioin->file == NULL) {
|
||||
fprintf(stderr, "Failed to open input file (%s):\n", filename);
|
||||
fprintf(stderr, " %s\n", strerror(errno));
|
||||
exit(ERR_OPENING_INPUT);
|
||||
}
|
||||
|
||||
// Fill-in data structure
|
||||
audioin->samplesize = samplesize;
|
||||
audioin->sfinfo = sfinfo;
|
||||
audioin->print_info = print_info_raw;
|
||||
audioin->read = read_raw;
|
||||
audioin->error_str = error_str_raw;
|
||||
audioin->close = close_raw;
|
||||
|
||||
|
||||
return audioin;
|
||||
}
|
157
lib-src/twolame/frontend/audioin_sndfile.c
Normal file
157
lib-src/twolame/frontend/audioin_sndfile.c
Normal file
@@ -0,0 +1,157 @@
|
||||
/*
|
||||
* TwoLAME: an optimized MPEG Audio Layer Two encoder
|
||||
*
|
||||
* Copyright (C) 2004-2007 The TwoLAME Project
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
* $Id: audioin_sndfile.c,v 1.1 2008-02-01 19:44:26 richardash1981 Exp $
|
||||
*
|
||||
*/
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
#include <sndfile.h>
|
||||
#include "frontend.h"
|
||||
|
||||
|
||||
|
||||
/*
|
||||
format_duration_string()
|
||||
Create human readable duration string from libsndfile info
|
||||
*/
|
||||
static char* format_duration_string( SF_INFO *sfinfo )
|
||||
{
|
||||
float seconds;
|
||||
int minutes;
|
||||
char * string = malloc( MAX_NAME_SIZE );
|
||||
|
||||
if (sfinfo->frames==0 || sfinfo->samplerate==0) {
|
||||
snprintf( string, MAX_NAME_SIZE, "Unknown" );
|
||||
return string;
|
||||
}
|
||||
|
||||
// Calculate the number of minutes and seconds
|
||||
seconds = sfinfo->frames / sfinfo->samplerate;
|
||||
minutes = (seconds / 60 );
|
||||
seconds -= (minutes * 60);
|
||||
|
||||
// Create a string out of it
|
||||
snprintf( string, MAX_NAME_SIZE, "%imin %1.1fsec", minutes, seconds);
|
||||
|
||||
return string;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
print_info_sndfile()
|
||||
Display information about input file
|
||||
*/
|
||||
static void print_info_sndfile(struct audioin_s *audioin )
|
||||
{
|
||||
SNDFILE* file = audioin->file;
|
||||
SF_FORMAT_INFO format_info;
|
||||
SF_FORMAT_INFO subformat_info;
|
||||
char sndlibver[128];
|
||||
char *duration = NULL;
|
||||
|
||||
// Get the format
|
||||
format_info.format = audioin->sfinfo->format & SF_FORMAT_TYPEMASK;
|
||||
sf_command (file, SFC_GET_FORMAT_INFO, &format_info, sizeof(format_info)) ;
|
||||
|
||||
// Get the sub-format info
|
||||
subformat_info.format = audioin->sfinfo->format & SF_FORMAT_SUBMASK;
|
||||
sf_command (file, SFC_GET_FORMAT_INFO, &subformat_info, sizeof(subformat_info)) ;
|
||||
|
||||
// Get the version of libsndfile
|
||||
sf_command (file, SFC_GET_LIB_VERSION, sndlibver, sizeof(sndlibver));
|
||||
|
||||
// Get human readable duration of the input file
|
||||
duration = format_duration_string( audioin->sfinfo );
|
||||
|
||||
fprintf(stderr, "Input Format: %s, %s\n", format_info.name, subformat_info.name );
|
||||
fprintf(stderr, "Input Duration: %s\n", duration );
|
||||
fprintf(stderr, "Input Library: %s\n", sndlibver);
|
||||
|
||||
free( duration );
|
||||
|
||||
}
|
||||
|
||||
|
||||
/* Read in some audio samples into buffer */
|
||||
static int read_sndfile( audioin_t* audioin, short *buffer, int samples)
|
||||
{
|
||||
SNDFILE* file = audioin->file;
|
||||
return sf_read_short( file, buffer, samples );
|
||||
}
|
||||
|
||||
|
||||
/* Return error string (or NULL) */
|
||||
static const char* error_str_sndfile( audioin_t* audioin )
|
||||
{
|
||||
SNDFILE* file = audioin->file;
|
||||
|
||||
if (sf_error(file) == SF_ERR_NO_ERROR) {
|
||||
// No error
|
||||
return NULL;
|
||||
} else {
|
||||
// Return error string
|
||||
return sf_strerror( file );
|
||||
}
|
||||
}
|
||||
|
||||
static int close_sndfile( audioin_t* audioin )
|
||||
{
|
||||
SNDFILE* file = audioin->file;
|
||||
|
||||
free( audioin );
|
||||
|
||||
return sf_close( file );
|
||||
}
|
||||
|
||||
audioin_t* open_audioin_sndfile( char* filename, SF_INFO *sfinfo )
|
||||
{
|
||||
audioin_t* audioin = NULL;
|
||||
|
||||
// Allocate memory for structure
|
||||
audioin = malloc( sizeof( audioin_t ) );
|
||||
if (audioin==NULL) {
|
||||
fprintf(stderr, "Failed to allocate memory for audioin_t structure.\n");
|
||||
exit(ERR_MEM_ALLOC);
|
||||
}
|
||||
|
||||
// Open the input file by filename
|
||||
audioin->file = sf_open(filename, SFM_READ, sfinfo);
|
||||
|
||||
// Check for errors
|
||||
if (audioin->file == NULL) {
|
||||
fprintf(stderr, "Failed to open input file (%s):\n", filename);
|
||||
fprintf(stderr, " %s\n", sf_strerror(NULL));
|
||||
exit(ERR_OPENING_INPUT);
|
||||
}
|
||||
|
||||
// Fill-in data structure
|
||||
audioin->samplesize = 0;
|
||||
audioin->sfinfo = sfinfo;
|
||||
audioin->print_info = print_info_sndfile;
|
||||
audioin->read = read_sndfile;
|
||||
audioin->error_str = error_str_sndfile;
|
||||
audioin->close = close_sndfile;
|
||||
|
||||
|
||||
return audioin;
|
||||
}
|
774
lib-src/twolame/frontend/frontend.c
Normal file
774
lib-src/twolame/frontend/frontend.c
Normal file
@@ -0,0 +1,774 @@
|
||||
/*
|
||||
* TwoLAME: an optimized MPEG Audio Layer Two encoder
|
||||
*
|
||||
* Copyright (C) 2004-2007 The TwoLAME Project
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
* $Id: frontend.c,v 1.3 2008-02-01 19:44:26 richardash1981 Exp $
|
||||
*
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
#include <getopt.h>
|
||||
|
||||
#include <twolame.h>
|
||||
#include <sndfile.h>
|
||||
#include "frontend.h"
|
||||
|
||||
|
||||
|
||||
/*
|
||||
Global Variables
|
||||
*/
|
||||
int use_raw = FALSE; // use raw input?
|
||||
int sample_size = 16; // number of bits per sample for raw input
|
||||
int single_frame_mode = FALSE; // only encode a single frame of MPEG audio ?
|
||||
int byteswap = FALSE; // swap endian on input audio ?
|
||||
int channelswap = FALSE; // swap left and right channels ?
|
||||
SF_INFO sfinfo; // contains information about input file format
|
||||
|
||||
char inputfilename[MAX_NAME_SIZE] = "\0";
|
||||
char outputfilename[MAX_NAME_SIZE] = "\0";
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/*
|
||||
new_extension()
|
||||
Puts a new extension name on a file name <filename>.
|
||||
Removes the last extension name, if any.
|
||||
*/
|
||||
static void
|
||||
new_extension(char *filename, char *extname, char *newname)
|
||||
{
|
||||
int found, dotpos;
|
||||
|
||||
// First, strip the old extension
|
||||
dotpos = strlen(filename);
|
||||
found = 0;
|
||||
do {
|
||||
switch (filename[dotpos]) {
|
||||
case '.':
|
||||
found = 1;
|
||||
break;
|
||||
case '\\':
|
||||
case '/':
|
||||
case ':':
|
||||
found = -1;
|
||||
break;
|
||||
default:
|
||||
dotpos--;
|
||||
if (dotpos < 0)
|
||||
found = -1;
|
||||
break;
|
||||
}
|
||||
} while (found == 0);
|
||||
|
||||
if (found == -1) {
|
||||
strncpy(newname, filename, MAX_NAME_SIZE);
|
||||
}
|
||||
if (found == 1) {
|
||||
strncpy(newname, filename, dotpos);
|
||||
newname[dotpos] = '\0';
|
||||
}
|
||||
|
||||
// Make sure there is room in the string for the
|
||||
// new filename and the extension
|
||||
if (strlen(newname)+strlen(extname)+1<MAX_NAME_SIZE) {
|
||||
strcat(newname, extname);
|
||||
}
|
||||
}
|
||||
|
||||
static char* format_filesize_string( int filesize )
|
||||
{
|
||||
static const int constKB = 1024; // Kilobyte
|
||||
static const int constMB = 1024 * 1024; // Megabyte
|
||||
static const int constGB = 1024 * 1024 * 1024; // Gigabyte
|
||||
char* string = malloc( MAX_NAME_SIZE );
|
||||
|
||||
if (filesize < constKB)
|
||||
{
|
||||
snprintf(string, MAX_NAME_SIZE, "%d bytes", filesize);
|
||||
}
|
||||
else if (filesize < constMB)
|
||||
{
|
||||
snprintf(string, MAX_NAME_SIZE, "%2.2f MB", (float)filesize/constKB);
|
||||
}
|
||||
else if (filesize < constGB)
|
||||
{
|
||||
snprintf(string, MAX_NAME_SIZE, "%2.2f MB", (float)filesize/constMB);
|
||||
}
|
||||
else
|
||||
{
|
||||
snprintf(string, MAX_NAME_SIZE, "%2.2f GB", (float)filesize/constGB);
|
||||
}
|
||||
|
||||
return string;
|
||||
}
|
||||
|
||||
/*
|
||||
print_filenames()
|
||||
Display the input and output filenames
|
||||
*/
|
||||
static void print_filenames( int verbosity )
|
||||
{
|
||||
char *ifn, *ofn;
|
||||
|
||||
if (strcmp(inputfilename, "-")==0) ifn = "STDIN";
|
||||
else ifn = inputfilename;
|
||||
|
||||
if (strcmp(outputfilename, "-")==0) ofn = "STDOUT";
|
||||
else ofn = outputfilename;
|
||||
|
||||
|
||||
if (verbosity==1) {
|
||||
fprintf(stderr, "Encoding %s to %s\n", ifn, ofn);
|
||||
} else if (verbosity>1) {
|
||||
fprintf(stderr, "---------------------------------------------------------\n");
|
||||
fprintf(stderr, "Input Filename: %s\n", ifn);
|
||||
fprintf(stderr, "Output Filename: %s\n", ofn);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
usage_long()
|
||||
Display the extended usage information
|
||||
*/
|
||||
static void usage_long()
|
||||
{
|
||||
|
||||
fprintf(stdout, "TwoLAME version %s (%s)\n", get_twolame_version(), get_twolame_url());
|
||||
fprintf(stdout, "MPEG Audio Layer II (MP2) encoder\n");
|
||||
fprintf(stdout, "Usage: \n");
|
||||
|
||||
fprintf(stdout, "\ttwolame [options] <infile> [outfile]\n");
|
||||
fprintf(stdout, "\n");
|
||||
fprintf(stdout, "Both input and output filenames can be set to - to use stdin/stdout.\n");
|
||||
fprintf(stdout, " <infile> input sound file (any format supported by libsndfile)\n");
|
||||
fprintf(stdout, " <outfile> output bit stream of encoded audio\n");
|
||||
|
||||
fprintf(stdout, "\nInput Options\n");
|
||||
fprintf(stdout, "\t-r, --raw-input input is raw signed PCM audio\n");
|
||||
fprintf(stdout, "\t-x, --byte-swap force byte-swapping of input\n");
|
||||
fprintf(stdout, "\t-s, --samplerate srate sampling frequency of raw input (Hz)\n");
|
||||
fprintf(stdout, "\t --samplesize bits size of raw input samples in bits (default 16-bit)\n");
|
||||
fprintf(stdout, "\t-N, --channels nch number of channels in raw input\n");
|
||||
fprintf(stdout, "\t-g, --swap-channels swap channels of input file\n");
|
||||
fprintf(stdout, "\t --scale value scale input (multiply PCM data)\n");
|
||||
fprintf(stdout, "\t --scale-l value scale channel 0 (left) input\n");
|
||||
fprintf(stdout, "\t --scale-r value scale channel 1 (right) input\n");
|
||||
|
||||
|
||||
fprintf(stdout, "\nOutput Options\n");
|
||||
fprintf(stdout, "\t-m, --mode mode (s)tereo, (j)oint, (d)ual, (m)ono or (a)uto\n");
|
||||
fprintf(stdout, "\t-a, --downmix downmix from stereo to mono file for mono encoding\n");
|
||||
fprintf(stdout, "\t-b, --bitrate br total bitrate in kbps (default 192 for 44.1kHz)\n");
|
||||
fprintf(stdout, "\t-P, --psyc-mode psyc psychoacoustic model -1 to 4 (default 3)\n");
|
||||
fprintf(stdout, "\t-v, --vbr enable VBR mode\n");
|
||||
fprintf(stdout, "\t-V, --vbr-level lev enable VBR and set VBR level -50 to 50 (default 5)\n");
|
||||
fprintf(stdout, "\t-B, --max-bitrate rate set the upper bitrate when in VBR mode\n");
|
||||
fprintf(stdout, "\t-l, --ath lev ATH level (default 0.0)\n");
|
||||
fprintf(stdout, "\t-q, --quick num only calculate psy model every num frames\n");
|
||||
fprintf(stdout, "\t-S, --single-frame only encode a single frame of MPEG Audio\n");
|
||||
|
||||
|
||||
fprintf(stdout, "\nMiscellaneous Options\n");
|
||||
fprintf(stdout, "\t-c, --copyright mark as copyright\n");
|
||||
fprintf(stdout, "\t-o, --non-original mark as non-original\n");
|
||||
fprintf(stdout, "\t --original mark as original (default)\n");
|
||||
fprintf(stdout, "\t-p, --protect enable CRC error protection\n");
|
||||
fprintf(stdout, "\t-d, --padding force padding bit/frame on\n");
|
||||
fprintf(stdout, "\t-R, --reserve-bits num set number of reserved bits in each frame\n");
|
||||
fprintf(stdout, "\t-e, --deemphasis emp de-emphasis n/5/c (default: (n)one)\n");
|
||||
fprintf(stdout, "\t-E, --energy turn on energy level extensions\n");
|
||||
|
||||
fprintf(stdout, "\nVerbosity Options\n");
|
||||
fprintf(stdout, "\t-t, --talkativity num talkativity 0-10 (default is 2)\n");
|
||||
fprintf(stdout, "\t --quiet same as --talkativity=0\n");
|
||||
fprintf(stdout, "\t --brief same as --talkativity=1\n");
|
||||
fprintf(stdout, "\t --verbose same as --talkativity=4\n");
|
||||
|
||||
|
||||
fprintf(stdout, "\n");
|
||||
fprintf(stdout, "\nAllowable bitrates for 32, 44.1 and 48kHz sample input (MPEG-1)\n");
|
||||
fprintf(stdout, " 32, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 384\n");
|
||||
fprintf(stdout, "\nAllowable bitrates for 16, 22.05 and 24kHz sample input (MPEG-2)\n");
|
||||
fprintf(stdout, " 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160\n");
|
||||
|
||||
fprintf(stdout, "\n");
|
||||
exit(ERR_NO_ENCODE);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
usage_short()
|
||||
Display the short usage information
|
||||
*/
|
||||
void
|
||||
usage_short()
|
||||
{
|
||||
/* print a bit of info about the program */
|
||||
fprintf(stdout, "TwoLAME version %s (%s)\n", get_twolame_version(), get_twolame_url());
|
||||
fprintf(stderr, "MPEG Audio Layer II (MP2) encoder\n\n");
|
||||
fprintf(stderr, "Usage: twolame [options] <infile> [outfile]\n\n");
|
||||
fprintf(stderr, "Try \"twolame --help\" for more information.\n");
|
||||
exit(ERR_NO_ENCODE);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
build_shortopt_string()
|
||||
Creates a short args string from the options structure
|
||||
for use with getopt_long
|
||||
*/
|
||||
char*
|
||||
build_shortopt_string( struct option* opts )
|
||||
{
|
||||
int count=0;
|
||||
char *shortstr = NULL;
|
||||
int c=0, n=0;
|
||||
|
||||
// Start by counting the number of options
|
||||
while( opts[count].val!=0 ) { count++; }
|
||||
|
||||
|
||||
// Allocate memory for the string
|
||||
shortstr = malloc( (count * 2) + 1 );
|
||||
|
||||
// And loop through the options again
|
||||
for(n=0; opts[n].val!=0; n++ ) {
|
||||
if (opts[n].val > 0 && opts[n].val < 127) {
|
||||
shortstr[c++] = opts[n].val;
|
||||
if (opts[n].has_arg == optional_argument) {
|
||||
fprintf(stderr, "gah: can't do optional arguments\n");
|
||||
} else if (opts[n].has_arg == required_argument) {
|
||||
shortstr[c++] = ':';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Finally - terminate the string
|
||||
shortstr[c] = '\0';
|
||||
|
||||
return shortstr;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
parse_args()
|
||||
Parse the command line arguments
|
||||
*/
|
||||
void
|
||||
parse_args(int argc, char **argv, twolame_options * encopts )
|
||||
{
|
||||
int ch=0;
|
||||
|
||||
// process args
|
||||
struct option longopts[] = {
|
||||
|
||||
// Input
|
||||
{ "raw-input", no_argument, NULL, 'r' },
|
||||
{ "byte-swap", no_argument, NULL, 'x' },
|
||||
{ "samplerate", required_argument, NULL, 's' },
|
||||
{ "samplesize", required_argument, NULL, 1000 },
|
||||
{ "channels", required_argument, NULL, 'N' },
|
||||
{ "swap-channels", no_argument, NULL, 'g' },
|
||||
{ "scale", required_argument, NULL, 1001 },
|
||||
{ "scale-l", required_argument, NULL, 1002 },
|
||||
{ "scale-r", required_argument, NULL, 1003 },
|
||||
|
||||
// Output
|
||||
{ "mode", required_argument, NULL, 'm' },
|
||||
{ "downmix", no_argument, NULL, 'a' },
|
||||
{ "bitrate", required_argument, NULL, 'b' },
|
||||
{ "psyc-mode", required_argument, NULL, 'P' },
|
||||
{ "vbr", no_argument, NULL, 'v' },
|
||||
{ "vbr-level", required_argument, NULL, 'V' },
|
||||
{ "max-bitrate", required_argument, NULL, 'B' },
|
||||
{ "ath", required_argument, NULL, 'l' },
|
||||
{ "quick", required_argument, NULL, 'q' },
|
||||
{ "single-frame", no_argument, NULL, 'S' },
|
||||
|
||||
// Misc
|
||||
{ "copyright", no_argument, NULL, 'c' },
|
||||
{ "non-original", no_argument, NULL, 'o' },
|
||||
{ "original", no_argument, NULL, 1004 },
|
||||
{ "protect", no_argument, NULL, 'p' },
|
||||
{ "padding", no_argument, NULL, 'd' },
|
||||
{ "reserve-bits", required_argument, NULL, 'R' },
|
||||
{ "deemphasis", required_argument, NULL, 'e' },
|
||||
{ "energy", no_argument, NULL, 'E' },
|
||||
|
||||
// Verbosity
|
||||
{ "talkativity", required_argument, NULL, 't' },
|
||||
{ "quiet", no_argument, NULL, 1005 },
|
||||
{ "brief", no_argument, NULL, 1006 },
|
||||
{ "verbose", no_argument, NULL, 1007 },
|
||||
{ "help", no_argument, NULL, 'h' },
|
||||
|
||||
{ NULL, 0, NULL, 0 }
|
||||
};
|
||||
|
||||
|
||||
// Create a short options structure from the long one
|
||||
char* shortopts = build_shortopt_string( longopts );
|
||||
//printf("shortopts: %s\n", shortopts);
|
||||
|
||||
|
||||
// Input format defaults
|
||||
memset( &sfinfo, 0, sizeof(sfinfo) );
|
||||
sfinfo.format = 0;
|
||||
sfinfo.samplerate = DEFAULT_SAMPLERATE;
|
||||
sfinfo.channels = DEFAULT_CHANNELS;
|
||||
sfinfo.frames = 0;
|
||||
|
||||
|
||||
while( (ch = getopt_long( argc, argv, shortopts, longopts, NULL )) != -1)
|
||||
{
|
||||
switch(ch) {
|
||||
|
||||
// Input
|
||||
case 'r':
|
||||
use_raw = 1;
|
||||
break;
|
||||
|
||||
case 'x':
|
||||
byteswap = TRUE;
|
||||
break;
|
||||
|
||||
case 's':
|
||||
twolame_set_out_samplerate(encopts, atoi(optarg));
|
||||
sfinfo.samplerate = atoi(optarg);
|
||||
break;
|
||||
|
||||
case 1000: // --samplesize
|
||||
sample_size = atoi(optarg);
|
||||
break;
|
||||
|
||||
case 'N':
|
||||
sfinfo.channels = atoi(optarg);
|
||||
break;
|
||||
|
||||
case 'g':
|
||||
channelswap = TRUE;
|
||||
break;
|
||||
|
||||
case 1001: // --scale
|
||||
twolame_set_scale( encopts, atof(optarg) );
|
||||
break;
|
||||
|
||||
case 1002: // --scale-l
|
||||
twolame_set_scale_left( encopts, atof(optarg) );
|
||||
break;
|
||||
|
||||
case 1003: // --scale-r
|
||||
twolame_set_scale_right( encopts, atof(optarg) );
|
||||
break;
|
||||
|
||||
|
||||
|
||||
// Output
|
||||
case 'm':
|
||||
if (*optarg == 's') {
|
||||
twolame_set_mode(encopts, TWOLAME_STEREO);
|
||||
} else if (*optarg == 'd') {
|
||||
twolame_set_mode(encopts, TWOLAME_DUAL_CHANNEL);
|
||||
} else if (*optarg == 'j') {
|
||||
twolame_set_mode(encopts, TWOLAME_JOINT_STEREO);
|
||||
} else if (*optarg == 'm') {
|
||||
twolame_set_mode(encopts, TWOLAME_MONO);
|
||||
} else if (*optarg == 'a') {
|
||||
twolame_set_mode(encopts, TWOLAME_AUTO_MODE);
|
||||
} else {
|
||||
fprintf(stderr, "Error: mode must be a/s/d/j/m not '%s'\n\n", optarg);
|
||||
usage_long();
|
||||
}
|
||||
break;
|
||||
|
||||
case 'a': // downmix
|
||||
twolame_set_mode(encopts, TWOLAME_MONO);
|
||||
break;
|
||||
|
||||
case 'b':
|
||||
twolame_set_bitrate(encopts, atoi(optarg));
|
||||
break;
|
||||
|
||||
case 'P':
|
||||
twolame_set_psymodel(encopts, atoi(optarg));
|
||||
break;
|
||||
|
||||
case 'v':
|
||||
twolame_set_VBR(encopts, TRUE);
|
||||
break;
|
||||
|
||||
case 'V':
|
||||
twolame_set_VBR(encopts, TRUE);
|
||||
twolame_set_VBR_level(encopts, atof(optarg));
|
||||
break;
|
||||
|
||||
case 'B':
|
||||
twolame_set_VBR_max_bitrate_kbps(encopts, atoi(optarg));
|
||||
break;
|
||||
|
||||
case 'l':
|
||||
twolame_set_ATH_level(encopts, atof(optarg));
|
||||
break;
|
||||
|
||||
case 'q':
|
||||
twolame_set_quick_mode(encopts, TRUE);
|
||||
twolame_set_quick_count(encopts, atoi(optarg));
|
||||
break;
|
||||
|
||||
case 'S':
|
||||
single_frame_mode = TRUE;
|
||||
break;
|
||||
|
||||
|
||||
// Miscellaneous
|
||||
case 'c':
|
||||
twolame_set_copyright(encopts, TRUE);
|
||||
break;
|
||||
case 'o': // --non-original
|
||||
twolame_set_original(encopts, FALSE);
|
||||
break;
|
||||
case 1004: // --original
|
||||
twolame_set_original(encopts, TRUE);
|
||||
break;
|
||||
case 'p':
|
||||
twolame_set_error_protection(encopts, TRUE);
|
||||
break;
|
||||
case 'd':
|
||||
twolame_set_padding(encopts, TWOLAME_PAD_ALL);
|
||||
break;
|
||||
case 'R':
|
||||
twolame_set_num_ancillary_bits(encopts, atoi(optarg));
|
||||
break;
|
||||
case 'e':
|
||||
if (*optarg == 'n')
|
||||
twolame_set_emphasis(encopts, TWOLAME_EMPHASIS_N);
|
||||
else if (*optarg == '5')
|
||||
twolame_set_emphasis(encopts, TWOLAME_EMPHASIS_5);
|
||||
else if (*optarg == 'c')
|
||||
twolame_set_emphasis(encopts, TWOLAME_EMPHASIS_C);
|
||||
else {
|
||||
fprintf(stderr, "Error: emphasis must be n/5/c not '%s'\n\n", optarg);
|
||||
usage_long();
|
||||
}
|
||||
break;
|
||||
case 'E':
|
||||
twolame_set_energy_levels(encopts, TRUE);
|
||||
break;
|
||||
|
||||
|
||||
// Verbosity
|
||||
case 't':
|
||||
twolame_set_verbosity(encopts, atoi(optarg));
|
||||
break;
|
||||
|
||||
case 1005: // --quiet
|
||||
twolame_set_verbosity(encopts, 0);
|
||||
break;
|
||||
|
||||
case 1006: // --brief
|
||||
twolame_set_verbosity(encopts, 1);
|
||||
break;
|
||||
|
||||
case 1007: // --verbose
|
||||
twolame_set_verbosity(encopts, 4);
|
||||
break;
|
||||
|
||||
case 'h':
|
||||
usage_long();
|
||||
break;
|
||||
|
||||
default:
|
||||
usage_short();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
// Look for the input and output file names
|
||||
argc -= optind;
|
||||
argv += optind;
|
||||
while( argc ) {
|
||||
if (inputfilename[0] == '\0')
|
||||
strncpy(inputfilename, *argv, MAX_NAME_SIZE);
|
||||
else if (outputfilename[0] == '\0')
|
||||
strncpy(outputfilename, *argv, MAX_NAME_SIZE);
|
||||
else {
|
||||
fprintf(stderr, "excess argument: %s\n", *argv);
|
||||
usage_short();
|
||||
}
|
||||
|
||||
argv++;
|
||||
argc--;
|
||||
}
|
||||
|
||||
|
||||
// Check that we now have input and output file names ok
|
||||
if ( inputfilename[0] == '\0') {
|
||||
fprintf(stderr, "Missing input filename.\n");
|
||||
usage_short();
|
||||
}
|
||||
if ( outputfilename[0] == '\0' && strcmp(inputfilename, "-") !=0 ) {
|
||||
// Create output filename from the inputfilename
|
||||
// and change the suffix
|
||||
new_extension( inputfilename, OUTPUT_SUFFIX, outputfilename );
|
||||
}
|
||||
if ( outputfilename[0] == '\0') {
|
||||
fprintf(stderr, "Missing output filename.\n");
|
||||
usage_short();
|
||||
}
|
||||
|
||||
// Check -r is supplied when reading from STDIN
|
||||
if ( strcmp(inputfilename, "-")==0 && !use_raw ) {
|
||||
fprintf(stderr, "Error: please use RAW audio '-r' switch when reading from STDIN.\n");
|
||||
usage_short();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
FILE*
|
||||
open_output_file( char* filename )
|
||||
{
|
||||
FILE* file;
|
||||
|
||||
|
||||
// Do they want STDOUT ?
|
||||
if (strncmp( filename, "-", 1 )==0) {
|
||||
file = stdout;
|
||||
} else {
|
||||
file = fopen(filename, "w");
|
||||
}
|
||||
|
||||
// Check for errors
|
||||
if (file == NULL) {
|
||||
perror("Failed to open output file");
|
||||
exit(ERR_OPENING_OUTPUT);
|
||||
}
|
||||
|
||||
return file;
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
main(int argc, char **argv)
|
||||
{
|
||||
twolame_options *encopts = NULL;
|
||||
audioin_t *inputfile = NULL;
|
||||
FILE *outputfile = NULL;
|
||||
short int *pcmaudio = NULL;
|
||||
unsigned int frame_count = 0;
|
||||
unsigned int total_frames = 0;
|
||||
unsigned int frame_len = 0;
|
||||
unsigned int total_bytes = 0;
|
||||
unsigned char *mp2buffer = NULL;
|
||||
int samples_read = 0;
|
||||
int mp2fill_size = 0;
|
||||
int audioReadSize = 0;
|
||||
|
||||
|
||||
// Allocate memory for the PCM audio data
|
||||
if ((pcmaudio = (short int *) calloc(AUDIO_BUF_SIZE, sizeof(short int))) == NULL) {
|
||||
fprintf(stderr, "Error: pcmaudio memory allocation failed\n");
|
||||
exit(ERR_MEM_ALLOC);
|
||||
}
|
||||
|
||||
// Allocate memory for the encoded MP2 audio data
|
||||
if ((mp2buffer = (unsigned char *) calloc(MP2_BUF_SIZE, sizeof(unsigned char))) == NULL) {
|
||||
fprintf(stderr, "Error: mp2buffer memory allocation failed\n");
|
||||
exit(ERR_MEM_ALLOC);
|
||||
}
|
||||
|
||||
// Initialise Encoder Options Structure
|
||||
encopts = twolame_init();
|
||||
if (encopts == NULL) {
|
||||
fprintf(stderr, "Error: initializing libtwolame encoder failed.\n");
|
||||
exit(ERR_MEM_ALLOC);
|
||||
}
|
||||
|
||||
|
||||
// Get options and parameters from the command line
|
||||
parse_args(argc, argv, encopts);
|
||||
|
||||
// Display the filenames
|
||||
print_filenames( twolame_get_verbosity(encopts) );
|
||||
|
||||
// Open the input file
|
||||
if (use_raw) {
|
||||
// use raw input handler
|
||||
inputfile = open_audioin_raw( inputfilename, &sfinfo, sample_size );
|
||||
} else {
|
||||
// use libsndfile
|
||||
inputfile = open_audioin_sndfile( inputfilename, &sfinfo );
|
||||
}
|
||||
|
||||
// Display input information
|
||||
if (twolame_get_verbosity(encopts)>1) {
|
||||
inputfile->print_info( inputfile );
|
||||
}
|
||||
|
||||
// Use information from input file to configure libtwolame
|
||||
twolame_set_num_channels( encopts, sfinfo.channels );
|
||||
twolame_set_in_samplerate( encopts, sfinfo.samplerate );
|
||||
|
||||
|
||||
// Open the output file
|
||||
outputfile = open_output_file( outputfilename );
|
||||
|
||||
// initialise twolame with this set of options
|
||||
if (twolame_init_params( encopts ) != 0) {
|
||||
fprintf(stderr, "Error: configuring libtwolame encoder failed.\n");
|
||||
exit(ERR_INVALID_PARAM);
|
||||
}
|
||||
|
||||
// display encoder settings
|
||||
twolame_print_config( encopts );
|
||||
|
||||
|
||||
// Only encode a single frame of mpeg audio ?
|
||||
if (single_frame_mode) audioReadSize = TWOLAME_SAMPLES_PER_FRAME;
|
||||
else audioReadSize = AUDIO_BUF_SIZE;
|
||||
|
||||
// Calculate the size and number of frames we are going to encode
|
||||
frame_len = twolame_get_framelength( encopts );
|
||||
if (sfinfo.frames) total_frames = sfinfo.frames / TWOLAME_SAMPLES_PER_FRAME;
|
||||
|
||||
|
||||
// Now do the reading/encoding/writing
|
||||
while ((samples_read = inputfile->read( inputfile, pcmaudio, audioReadSize )) > 0) {
|
||||
int bytes_out = 0;
|
||||
|
||||
// Force byte swapping if requested
|
||||
if (byteswap) {
|
||||
int i;
|
||||
for (i = 0; i<samples_read; i++) {
|
||||
short tmp = pcmaudio[i];
|
||||
char *src = (char*)&tmp;
|
||||
char *dst = (char*)&pcmaudio[i];
|
||||
dst[0] = src[1];
|
||||
dst[1] = src[0];
|
||||
}
|
||||
}
|
||||
|
||||
// Calculate the number of samples we have (per channel)
|
||||
samples_read /= sfinfo.channels;
|
||||
|
||||
// Do swapping of left and right channels if requested
|
||||
if (channelswap && sfinfo.channels == 2) {
|
||||
int i;
|
||||
for(i=0; i<samples_read; i++) {
|
||||
short tmp = pcmaudio[(2*i)];
|
||||
pcmaudio[(2*i)] = pcmaudio[(2*i)+1];
|
||||
pcmaudio[(2*i)+1] = tmp;
|
||||
}
|
||||
}
|
||||
|
||||
// Encode the audio to MP2
|
||||
mp2fill_size = twolame_encode_buffer_interleaved( encopts, pcmaudio, samples_read, mp2buffer, MP2_BUF_SIZE);
|
||||
|
||||
// Stop if we don't have any bytes (probably don't have enough audio for a full frame of mpeg audio)
|
||||
if (mp2fill_size==0) break;
|
||||
if (mp2fill_size<0) {
|
||||
fprintf(stderr,"error while encoding audio: %d\n", mp2fill_size);
|
||||
exit(ERR_ENCODING);
|
||||
}
|
||||
|
||||
// Check that a whole number of frame was written
|
||||
//if (mp2fill_size % frame_len != 0) {
|
||||
// fprintf(stderr,"error while encoding audio: non-whole number of frames written\n");
|
||||
// exit(ERR_ENCODING);
|
||||
//}
|
||||
|
||||
// Write the encoded audio out
|
||||
bytes_out = fwrite(mp2buffer, sizeof(unsigned char), mp2fill_size, outputfile);
|
||||
if (bytes_out != mp2fill_size) {
|
||||
perror("error while writing to output file");
|
||||
exit(ERR_WRITING_OUTPUT);
|
||||
}
|
||||
total_bytes += bytes_out;
|
||||
|
||||
// Only single frame ?
|
||||
if (single_frame_mode) break;
|
||||
|
||||
|
||||
// Display Progress
|
||||
frame_count += (mp2fill_size / frame_len);
|
||||
if (twolame_get_verbosity(encopts)>0) {
|
||||
fprintf(stderr, "\rEncoding frame: %i", frame_count );
|
||||
if (total_frames) {
|
||||
fprintf(stderr, "/%i (%i%%)", total_frames, (frame_count*100)/total_frames);
|
||||
}
|
||||
fflush(stderr);
|
||||
}
|
||||
}
|
||||
|
||||
// Was there an error reading the audio?
|
||||
if (inputfile->error_str( inputfile )) {
|
||||
fprintf(stderr, "Error reading from input file: %s\n", inputfile->error_str(inputfile) );
|
||||
}
|
||||
|
||||
//
|
||||
// flush any remaining audio. (don't send any new audio data) There
|
||||
// should only ever be a max of 1 frame on a flush. There may be zero
|
||||
// frames if the audio data was an exact multiple of 1152
|
||||
//
|
||||
mp2fill_size = twolame_encode_flush( encopts, mp2buffer, MP2_BUF_SIZE);
|
||||
if (mp2fill_size>0) {
|
||||
frame_count++;
|
||||
int bytes_out = fwrite(mp2buffer, sizeof(unsigned char), mp2fill_size, outputfile);
|
||||
if (bytes_out<=0) {
|
||||
perror("error while writing to output file");
|
||||
exit(ERR_WRITING_OUTPUT);
|
||||
}
|
||||
total_bytes += bytes_out;
|
||||
}
|
||||
|
||||
if (twolame_get_verbosity(encopts)>1) {
|
||||
char* filesize = format_filesize_string( total_bytes );
|
||||
fprintf(stderr, "\nEncoding Finished.\n");
|
||||
fprintf(stderr, "Total bytes written: %s.\n",filesize);
|
||||
free(filesize);
|
||||
}
|
||||
|
||||
// Close input and output streams
|
||||
inputfile->close( inputfile );
|
||||
fclose( outputfile );
|
||||
|
||||
// Close the libtwolame encoder
|
||||
twolame_close(&encopts);
|
||||
|
||||
|
||||
// Free up memory
|
||||
free(pcmaudio);
|
||||
free(mp2buffer);
|
||||
|
||||
return (ERR_NO_ERROR);
|
||||
}
|
||||
|
||||
/* vim:ts=4:sw=4:nowrap: */
|
85
lib-src/twolame/frontend/frontend.h
Normal file
85
lib-src/twolame/frontend/frontend.h
Normal file
@@ -0,0 +1,85 @@
|
||||
/*
|
||||
* TwoLAME: an optimized MPEG Audio Layer Two encoder
|
||||
*
|
||||
* Copyright (C) 2004-2007 The TwoLAME Project
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
* $Id: frontend.h,v 1.1 2008-02-01 19:44:26 richardash1981 Exp $
|
||||
*
|
||||
*/
|
||||
|
||||
#include <sndfile.h>
|
||||
|
||||
|
||||
/*
|
||||
Constants
|
||||
*/
|
||||
#define MP2_BUF_SIZE (16384)
|
||||
#define AUDIO_BUF_SIZE (9210)
|
||||
#define MAX_NAME_SIZE (1024)
|
||||
#define OUTPUT_SUFFIX ".mp2"
|
||||
#define DEFAULT_CHANNELS (2)
|
||||
#define DEFAULT_SAMPLERATE (44100)
|
||||
|
||||
|
||||
/*
|
||||
Result codes
|
||||
*/
|
||||
#define ERR_NO_ERROR (0) // No Error (encoded ok)
|
||||
#define ERR_NO_ENCODE (1) // No Error (no encoding performed)
|
||||
#define ERR_OPENING_INPUT (2) // Error opening input file
|
||||
#define ERR_OPENING_OUTPUT (4) // Error opening output file
|
||||
#define ERR_MEM_ALLOC (6) // Error allocating memory
|
||||
#define ERR_INVALID_PARAM (8) // Error in chosen encoding parameters
|
||||
#define ERR_READING_INPUT (10) // Error reading input
|
||||
#define ERR_ENCODING (12) // Error occured during encoding
|
||||
#define ERR_WRITING_OUTPUT (14) // Error occured writing to output file
|
||||
|
||||
|
||||
|
||||
|
||||
typedef struct audioin_s {
|
||||
|
||||
// Display information about input stream
|
||||
void (*print_info)(struct audioin_s *);
|
||||
|
||||
// Read in some audio
|
||||
int (*read)(struct audioin_s *, short *buffer, int samples);
|
||||
|
||||
// Return error string (if any)
|
||||
const char* (*error_str)(struct audioin_s *);
|
||||
|
||||
// Close the inout stream
|
||||
int (*close)(struct audioin_s *);
|
||||
|
||||
|
||||
// Pointer to file / input stream
|
||||
void* file;
|
||||
|
||||
// Pointer to linsndfile info structure
|
||||
SF_INFO* sfinfo;
|
||||
|
||||
// Size of the samples (in bits)
|
||||
int samplesize;
|
||||
|
||||
} audioin_t;
|
||||
|
||||
|
||||
|
||||
/* Initialisers */
|
||||
audioin_t* open_audioin_sndfile( char* filename, SF_INFO *sfinfo );
|
||||
audioin_t* open_audioin_raw( char* filename, SF_INFO *sfinfo, int samplesize);
|
||||
|
Reference in New Issue
Block a user