From 5e05f47d61ebad8aee6c3831912b21ad5dcc36e3 Mon Sep 17 00:00:00 2001 From: "B. Bogart" Date: Sat, 13 Aug 2005 01:16:59 +0000 Subject: Initial commit of readanysf~ 0.13.1 for August svn path=/trunk/externals/august/readanysf~/; revision=3426 --- include/Fifo.h | 31 ++++++ include/Input.h | 56 +++++++++++ include/InputFile.h | 29 ++++++ include/InputStream.h | 83 +++++++++++++++++ include/Makefile | 223 ++++++++++++++++++++++++++++++++++++++++++++ include/Makefile.am | 21 +++++ include/Makefile.in | 223 ++++++++++++++++++++++++++++++++++++++++++++ include/ReadFlac.h | 88 +++++++++++++++++ include/ReadFlac.h.seekable | 93 ++++++++++++++++++ include/ReadMad.h | 125 +++++++++++++++++++++++++ include/ReadRaw.h | 154 ++++++++++++++++++++++++++++++ include/ReadVorbis.h | 99 ++++++++++++++++++++ include/Readsf.h | 62 ++++++++++++ include/generic.h | 48 ++++++++++ include/main.h | 158 +++++++++++++++++++++++++++++++ include/stamp-h2.in | 0 16 files changed, 1493 insertions(+) create mode 100644 include/Fifo.h create mode 100644 include/Input.h create mode 100644 include/InputFile.h create mode 100644 include/InputStream.h create mode 100644 include/Makefile create mode 100644 include/Makefile.am create mode 100644 include/Makefile.in create mode 100644 include/ReadFlac.h create mode 100644 include/ReadFlac.h.seekable create mode 100644 include/ReadMad.h create mode 100644 include/ReadRaw.h create mode 100644 include/ReadVorbis.h create mode 100644 include/Readsf.h create mode 100644 include/generic.h create mode 100644 include/main.h create mode 100644 include/stamp-h2.in (limited to 'include') diff --git a/include/Fifo.h b/include/Fifo.h new file mode 100644 index 0000000..c060079 --- /dev/null +++ b/include/Fifo.h @@ -0,0 +1,31 @@ +#ifndef _FIFO_H_ +#define _FIFO_H_ + +#ifdef HAVE_CONFIG_H +#include +#endif + + +#include +#include + +class Fifo +{ + public: + Fifo(); + Fifo(unsigned int size); + ~Fifo(); + void Flush(); + int IsAlloc(void) { return astate; } + int ReAlloc(unsigned int size); + void * Read(void *buf, unsigned int &len); + int Write(void *buf, unsigned int len); + unsigned int FreeSpace(void); + unsigned int UsedSpace(void); + private: + char *buffer; + unsigned int astate; + unsigned int totsize, start, datasize; + pthread_mutex_t mut; +}; +#endif diff --git a/include/Input.h b/include/Input.h new file mode 100644 index 0000000..960bbb0 --- /dev/null +++ b/include/Input.h @@ -0,0 +1,56 @@ +#ifndef _INPUT_H_ +#define _INPUT_H_ + +#ifdef HAVE_CONFIG_H +#include +#endif + +#include // open +#include // open +#include // open +#include // read +#include // for gethostbyname +#include // socket + +#include +#include +#include + + +#include // save filename +using namespace std; +#include "generic.h" + +class Input { + public: + Input(); + virtual ~ Input(); + + virtual int Open(const char *pathname); // open file or stream and return formt + virtual int Close(); // close or disconnect + virtual int Read(void *buf, unsigned int count); //read into buf count times. + + virtual long SeekSet(long offset); // lseek using SEEK_SET + virtual long SeekCur(long offset); // lseek using SEEK_CUR + virtual long SeekEnd(long offset); // lseek using SEEK_END + //int getEof() { return eof(fd); } + virtual float get_cachesize(); // return amount of buffer that is used. 0.0 for InputFile + + virtual bool get_recover( ) { return recover; } + void set_recover( bool x) { recover =x;} + + + void SetVerbosity(int d) { verbosity = d; } // set debug level 0-3 protected: + int get_fd() { return fd;} + int get_format() { return format;} + const char * get_filename() { return filename.c_str(); } + + protected: + int fd; //file descriptor for files and sockets + int format; //what format? OGG,MP3,NEXT etc. see defines above + int verbosity; //how much debugging/info to print + //we need to be able to set this dynamically for http + bool recover; // whether to recover connections on the net + string filename; // store the path/filename of what is opened for reading +}; +#endif diff --git a/include/InputFile.h b/include/InputFile.h new file mode 100644 index 0000000..35f180c --- /dev/null +++ b/include/InputFile.h @@ -0,0 +1,29 @@ +#ifndef _INPUTFILE_H_ +#define _INPUTFILE_H_ + +#ifdef HAVE_CONFIG_H +#include +#endif + + +#include "Input.h" + +class InputFile : public Input { + public: + InputFile(); + virtual ~InputFile(); + + virtual int Open( const char *pathname ); + virtual int Close(); + virtual int Read( void *buf, unsigned int count ); + + virtual long SeekSet ( long offset ); + virtual long SeekCur ( long offset ); + virtual long SeekEnd ( long offset ); + virtual float get_cachesize() { return 0.0; }; + virtual bool get_recover( ) { return false; } + private: + + +}; +#endif diff --git a/include/InputStream.h b/include/InputStream.h new file mode 100644 index 0000000..704fed1 --- /dev/null +++ b/include/InputStream.h @@ -0,0 +1,83 @@ +#ifndef _INPUTSTREAM_H_ +#define _INPUTSTREAM_H_ + +#ifdef HAVE_CONFIG_H +#include +#endif + +#include "Input.h" +#include "Fifo.h" + +#include +#include +#include + + +#include +#include +#include +#include +#include +#ifdef UNIX +#include +#include +#include +#include +#include +#define SOCKET_ERROR -1 +#else +#include +#endif + +using namespace std; + +class InputStream : public Input { + public: + InputStream (); + virtual ~InputStream(); + + virtual int Open( const char *pathname ); + virtual int Close(); + virtual int Read( void *buf, unsigned int count ); + + virtual long SeekSet ( long offset ); + virtual long SeekCur ( long offset ); + virtual long SeekEnd ( long offset ); + virtual float get_cachesize(); + virtual bool get_recover( ) { return recover; } + + pthread_mutex_t *get_mutex() { return &mut;} + pthread_cond_t *get_condition(){ return &cond;} + + void set_threaded( bool b ) { threaded = b;} + + Fifo * get_fifo() { return infifo;} + bool get_quit() { return quit;} + + int socket_connect ( ); + + private: + //int socket_connect (string hostname, string mountpoint, int portno); + //int socket_connect (char *hostname, char *mountpoint, int portno); + // connects to socket and checks for ice or shout + // returns type of stream(ogg, mp3) or -1 for failure + + string ParseHttp( string str, string parse ); // parse x-audio* vars from icecast + int SetUrl (const char *url); // breaks http://server:port/mount down to hostname,port,mountpoint + // return 1 for success, 0 for failure + + int get_line( char * str, int sock, int maxget); + + Fifo *infifo; // fifo for thread buffering + string hostname; // hostname of URL + string mountpoint; // mountpoint for Icecast URL + int port; // port number URL + bool threaded; // if thread is running or not, true if running + bool quit; // if we should quit thread or not + + pthread_mutex_t mut; + pthread_cond_t cond; + pthread_t childthread; + +}; +#endif diff --git a/include/Makefile b/include/Makefile new file mode 100644 index 0000000..6db9da2 --- /dev/null +++ b/include/Makefile @@ -0,0 +1,223 @@ +# Generated automatically from Makefile.in by configure. +# Makefile.in generated automatically by automake 1.4-p6 from Makefile.am + +# Copyright (C) 1994, 1995-8, 1999, 2001 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. + + +SHELL = /bin/sh + +srcdir = . +top_srcdir = .. +prefix = /usr/local +exec_prefix = ${prefix} + +bindir = ${exec_prefix}/bin +sbindir = ${exec_prefix}/sbin +libexecdir = ${exec_prefix}/libexec +datadir = ${prefix}/share +sysconfdir = ${prefix}/etc +sharedstatedir = ${prefix}/com +localstatedir = ${prefix}/var +libdir = ${exec_prefix}/lib +infodir = ${prefix}/info +mandir = ${prefix}/man +includedir = ${prefix}/include +oldincludedir = /usr/include + +DESTDIR = + +pkgdatadir = $(datadir)/readanysf +pkglibdir = $(libdir)/readanysf +pkgincludedir = $(includedir)/readanysf + +top_builddir = .. + +ACLOCAL = aclocal-1.4 +AUTOCONF = autoconf +AUTOMAKE = automake-1.4 +AUTOHEADER = autoheader + +INSTALL = /bin/install -c +INSTALL_PROGRAM = ${INSTALL} $(AM_INSTALL_PROGRAM_FLAGS) +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_SCRIPT = ${INSTALL_PROGRAM} +transform = s,x,x, + +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +host_alias = i686-pc-linux-gnu +host_triplet = i686-pc-linux-gnu +AS = @AS@ +CC = gcc +CXX = g++ +DLLTOOL = @DLLTOOL@ +ECHO = echo +EXEEXT = +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LN_S = ln -s +MAKEINFO = makeinfo +NO_PREFIX_PACKAGE_DATA_DIR = share/readanysf +NO_PREFIX_PACKAGE_DOC_DIR = doc/readanysf +NO_PREFIX_PACKAGE_HELP_DIR = share/readanysf/help +NO_PREFIX_PACKAGE_MENU_DIR = share/readanysf +NO_PREFIX_PACKAGE_PIXMAPS_DIR = share/readanysf/pixmaps +OBJDUMP = @OBJDUMP@ +OBJEXT = o +PACKAGE = readanysf +PACKAGE_DATA_DIR = /usr/local/share/readanysf +PACKAGE_DOC_DIR = /usr/local/doc/readanysf +PACKAGE_HELP_DIR = /usr/local/share/readanysf/help +PACKAGE_MENU_DIR = /usr/local/share/readanysf +PACKAGE_PIXMAPS_DIR = /usr/local/share/readanysf/pixmaps +RANLIB = ranlib +STRIP = strip +VERSION = 0.13 + +readanysf_includedir = $(pkgincludedir) + +readanysf_include_DATA = Fifo.h Input.h InputFile.h InputStream.h Readsf.h ReadRaw.h generic.h main.h ReadMad.h ReadVorbis.h + + +EXTRA_DIST = $(readanysf_include_DATA) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = ../config.h +CONFIG_CLEAN_FILES = +DATA = $(readanysf_include_DATA) + +DIST_COMMON = Makefile.am Makefile.in + + +DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) + +TAR = tar +GZIP_ENV = --best +all: all-redirect +.SUFFIXES: +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && $(AUTOMAKE) --gnu include/Makefile + +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES) + cd $(top_builddir) \ + && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status + + +install-readanysf_includeDATA: $(readanysf_include_DATA) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(readanysf_includedir) + @list='$(readanysf_include_DATA)'; for p in $$list; do \ + if test -f $(srcdir)/$$p; then \ + echo " $(INSTALL_DATA) $(srcdir)/$$p $(DESTDIR)$(readanysf_includedir)/$$p"; \ + $(INSTALL_DATA) $(srcdir)/$$p $(DESTDIR)$(readanysf_includedir)/$$p; \ + else if test -f $$p; then \ + echo " $(INSTALL_DATA) $$p $(DESTDIR)$(readanysf_includedir)/$$p"; \ + $(INSTALL_DATA) $$p $(DESTDIR)$(readanysf_includedir)/$$p; \ + fi; fi; \ + done + +uninstall-readanysf_includeDATA: + @$(NORMAL_UNINSTALL) + list='$(readanysf_include_DATA)'; for p in $$list; do \ + rm -f $(DESTDIR)$(readanysf_includedir)/$$p; \ + done +tags: TAGS +TAGS: + + +distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) + +subdir = include + +distdir: $(DISTFILES) + here=`cd $(top_builddir) && pwd`; \ + top_distdir=`cd $(top_distdir) && pwd`; \ + distdir=`cd $(distdir) && pwd`; \ + cd $(top_srcdir) \ + && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu include/Makefile + @for file in $(DISTFILES); do \ + d=$(srcdir); \ + if test -d $$d/$$file; then \ + cp -pr $$d/$$file $(distdir)/$$file; \ + else \ + test -f $(distdir)/$$file \ + || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ + || cp -p $$d/$$file $(distdir)/$$file || :; \ + fi; \ + done +info-am: +info: info-am +dvi-am: +dvi: dvi-am +check-am: all-am +check: check-am +installcheck-am: +installcheck: installcheck-am +install-exec-am: +install-exec: install-exec-am + +install-data-am: install-readanysf_includeDATA +install-data: install-data-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am +install: install-am +uninstall-am: uninstall-readanysf_includeDATA +uninstall: uninstall-am +all-am: Makefile $(DATA) +all-redirect: all-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install +installdirs: + $(mkinstalldirs) $(DESTDIR)$(readanysf_includedir) + + +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_FILES) + -rm -f config.cache config.log stamp-h stamp-h[0-9]* + +maintainer-clean-generic: +mostlyclean-am: mostlyclean-generic + +mostlyclean: mostlyclean-am + +clean-am: clean-generic mostlyclean-am + +clean: clean-am + +distclean-am: distclean-generic clean-am + -rm -f libtool + +distclean: distclean-am + +maintainer-clean-am: maintainer-clean-generic distclean-am + @echo "This command is intended for maintainers to use;" + @echo "it deletes files that may require special tools to rebuild." + +maintainer-clean: maintainer-clean-am + +.PHONY: uninstall-readanysf_includeDATA install-readanysf_includeDATA \ +tags distdir info-am info dvi-am dvi check check-am installcheck-am \ +installcheck install-exec-am install-exec install-data-am install-data \ +install-am install uninstall-am uninstall all-redirect all-am all \ +installdirs mostlyclean-generic distclean-generic clean-generic \ +maintainer-clean-generic clean mostlyclean distclean maintainer-clean + + +# 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: diff --git a/include/Makefile.am b/include/Makefile.am new file mode 100644 index 0000000..f82066e --- /dev/null +++ b/include/Makefile.am @@ -0,0 +1,21 @@ +## Process this file with automake to produce Makefile.in + +## Created by Anjuta - will be overwritten +## If you don't want it to overwrite it, +## Please disable it in the Anjuta project configuration + +readanysf_includedir = $(pkgincludedir) + +readanysf_include_DATA = \ + Fifo.h\ + Input.h\ + InputFile.h\ + InputStream.h\ + Readsf.h\ + ReadRaw.h\ + generic.h\ + main.h\ + ReadMad.h\ + ReadVorbis.h + +EXTRA_DIST = $(readanysf_include_DATA) diff --git a/include/Makefile.in b/include/Makefile.in new file mode 100644 index 0000000..607c754 --- /dev/null +++ b/include/Makefile.in @@ -0,0 +1,223 @@ +# Makefile.in generated automatically by automake 1.4-p6 from Makefile.am + +# Copyright (C) 1994, 1995-8, 1999, 2001 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. + + +SHELL = @SHELL@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +prefix = @prefix@ +exec_prefix = @exec_prefix@ + +bindir = @bindir@ +sbindir = @sbindir@ +libexecdir = @libexecdir@ +datadir = @datadir@ +sysconfdir = @sysconfdir@ +sharedstatedir = @sharedstatedir@ +localstatedir = @localstatedir@ +libdir = @libdir@ +infodir = @infodir@ +mandir = @mandir@ +includedir = @includedir@ +oldincludedir = /usr/include + +DESTDIR = + +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ + +top_builddir = .. + +ACLOCAL = @ACLOCAL@ +AUTOCONF = @AUTOCONF@ +AUTOMAKE = @AUTOMAKE@ +AUTOHEADER = @AUTOHEADER@ + +INSTALL = @INSTALL@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +transform = @program_transform_name@ + +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +host_alias = @host_alias@ +host_triplet = @host@ +AS = @AS@ +CC = @CC@ +CXX = @CXX@ +DLLTOOL = @DLLTOOL@ +ECHO = @ECHO@ +EXEEXT = @EXEEXT@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +MAKEINFO = @MAKEINFO@ +NO_PREFIX_PACKAGE_DATA_DIR = @NO_PREFIX_PACKAGE_DATA_DIR@ +NO_PREFIX_PACKAGE_DOC_DIR = @NO_PREFIX_PACKAGE_DOC_DIR@ +NO_PREFIX_PACKAGE_HELP_DIR = @NO_PREFIX_PACKAGE_HELP_DIR@ +NO_PREFIX_PACKAGE_MENU_DIR = @NO_PREFIX_PACKAGE_MENU_DIR@ +NO_PREFIX_PACKAGE_PIXMAPS_DIR = @NO_PREFIX_PACKAGE_PIXMAPS_DIR@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_DATA_DIR = @PACKAGE_DATA_DIR@ +PACKAGE_DOC_DIR = @PACKAGE_DOC_DIR@ +PACKAGE_HELP_DIR = @PACKAGE_HELP_DIR@ +PACKAGE_MENU_DIR = @PACKAGE_MENU_DIR@ +PACKAGE_PIXMAPS_DIR = @PACKAGE_PIXMAPS_DIR@ +RANLIB = @RANLIB@ +STRIP = @STRIP@ +VERSION = @VERSION@ + +readanysf_includedir = $(pkgincludedir) + +readanysf_include_DATA = Fifo.h Input.h InputFile.h InputStream.h Readsf.h ReadRaw.h generic.h main.h ReadMad.h ReadVorbis.h + + +EXTRA_DIST = $(readanysf_include_DATA) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = ../config.h +CONFIG_CLEAN_FILES = +DATA = $(readanysf_include_DATA) + +DIST_COMMON = Makefile.am Makefile.in + + +DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) + +TAR = tar +GZIP_ENV = --best +all: all-redirect +.SUFFIXES: +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && $(AUTOMAKE) --gnu include/Makefile + +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES) + cd $(top_builddir) \ + && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status + + +install-readanysf_includeDATA: $(readanysf_include_DATA) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(readanysf_includedir) + @list='$(readanysf_include_DATA)'; for p in $$list; do \ + if test -f $(srcdir)/$$p; then \ + echo " $(INSTALL_DATA) $(srcdir)/$$p $(DESTDIR)$(readanysf_includedir)/$$p"; \ + $(INSTALL_DATA) $(srcdir)/$$p $(DESTDIR)$(readanysf_includedir)/$$p; \ + else if test -f $$p; then \ + echo " $(INSTALL_DATA) $$p $(DESTDIR)$(readanysf_includedir)/$$p"; \ + $(INSTALL_DATA) $$p $(DESTDIR)$(readanysf_includedir)/$$p; \ + fi; fi; \ + done + +uninstall-readanysf_includeDATA: + @$(NORMAL_UNINSTALL) + list='$(readanysf_include_DATA)'; for p in $$list; do \ + rm -f $(DESTDIR)$(readanysf_includedir)/$$p; \ + done +tags: TAGS +TAGS: + + +distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) + +subdir = include + +distdir: $(DISTFILES) + here=`cd $(top_builddir) && pwd`; \ + top_distdir=`cd $(top_distdir) && pwd`; \ + distdir=`cd $(distdir) && pwd`; \ + cd $(top_srcdir) \ + && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu include/Makefile + @for file in $(DISTFILES); do \ + d=$(srcdir); \ + if test -d $$d/$$file; then \ + cp -pr $$d/$$file $(distdir)/$$file; \ + else \ + test -f $(distdir)/$$file \ + || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ + || cp -p $$d/$$file $(distdir)/$$file || :; \ + fi; \ + done +info-am: +info: info-am +dvi-am: +dvi: dvi-am +check-am: all-am +check: check-am +installcheck-am: +installcheck: installcheck-am +install-exec-am: +install-exec: install-exec-am + +install-data-am: install-readanysf_includeDATA +install-data: install-data-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am +install: install-am +uninstall-am: uninstall-readanysf_includeDATA +uninstall: uninstall-am +all-am: Makefile $(DATA) +all-redirect: all-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install +installdirs: + $(mkinstalldirs) $(DESTDIR)$(readanysf_includedir) + + +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_FILES) + -rm -f config.cache config.log stamp-h stamp-h[0-9]* + +maintainer-clean-generic: +mostlyclean-am: mostlyclean-generic + +mostlyclean: mostlyclean-am + +clean-am: clean-generic mostlyclean-am + +clean: clean-am + +distclean-am: distclean-generic clean-am + -rm -f libtool + +distclean: distclean-am + +maintainer-clean-am: maintainer-clean-generic distclean-am + @echo "This command is intended for maintainers to use;" + @echo "it deletes files that may require special tools to rebuild." + +maintainer-clean: maintainer-clean-am + +.PHONY: uninstall-readanysf_includeDATA install-readanysf_includeDATA \ +tags distdir info-am info dvi-am dvi check check-am installcheck-am \ +installcheck install-exec-am install-exec install-data-am install-data \ +install-am install uninstall-am uninstall all-redirect all-am all \ +installdirs mostlyclean-generic distclean-generic clean-generic \ +maintainer-clean-generic clean mostlyclean distclean maintainer-clean + + +# 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: diff --git a/include/ReadFlac.h b/include/ReadFlac.h new file mode 100644 index 0000000..0d75e60 --- /dev/null +++ b/include/ReadFlac.h @@ -0,0 +1,88 @@ +/* + * readanysf~ external for pd. + * + * Copyright (C) 2003, 2004 August Black + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * ReadFlac.h + */ +#ifdef HAVE_CONFIG_H +#include +#endif + +#ifdef READ_FLAC + +#ifndef _READFLAC_H +#define _READFLAC_H + +extern "C" { +#include "FLAC/stream_decoder.h" +}; + +#include "Readsf.h" +#include "generic.h" + +class ReadFlac : public Readsf { + public: + ReadFlac( Input *input); + virtual ~ReadFlac(); + virtual bool Initialize(); + virtual int Decode(float *buffer, int size); + virtual bool Rewind(); + virtual bool PCM_seek(long bytes); + virtual bool TIME_seek(double seconds); + + protected: + bool needs_seek; + FLAC__uint64 seek_sample; + unsigned samples_in_reservoir; + bool abort_flag; + FLAC__StreamDecoder *decoder; + FLAC__StreamMetadata streaminfo; + FLAC__int16 reservoir[FLAC__MAX_BLOCK_SIZE * 2 * 2]; // *2 for max channels, another *2 for overflow + //unsigned char output[576 * 2 * (16/8)]; // *2 for max channels, (16/8) for max bytes per sample + + unsigned lengthInMsec() { return (unsigned)((FLAC__uint64)1000 * streaminfo.data.stream_info.total_samples / streaminfo.data.stream_info.sample_rate); } + private: + void ErrorCheck(int state); + long filelength; + void cleanup(); + + + + static FLAC__StreamDecoderReadStatus readCallback_(const FLAC__StreamDecoder *decoder, + FLAC__byte buffer[], + unsigned *bytes, + void *client_data); + + static FLAC__StreamDecoderWriteStatus writeCallback_(const FLAC__StreamDecoder *decoder, + const FLAC__Frame *frame, + const FLAC__int32 * const buffer[], + void *client_data); + + + static FLAC__bool eofCallback_(const FLAC__StreamDecoder *decoder, void *client_data); + + static void metadataCallback_(const FLAC__StreamDecoder *decoder, + const FLAC__StreamMetadata *metadata, + void *client_data); + static void errorCallback_(const FLAC__StreamDecoder *decoder, + FLAC__StreamDecoderErrorStatus status, + void *client_data); +}; + +#endif +#endif //#ifdef READ_FLAC diff --git a/include/ReadFlac.h.seekable b/include/ReadFlac.h.seekable new file mode 100644 index 0000000..c4cdfcf --- /dev/null +++ b/include/ReadFlac.h.seekable @@ -0,0 +1,93 @@ +/* + * readanysf~ external for pd. + * + * Copyright (C) 2003, 2004 August Black + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * ReadFlac.h + */ +#ifdef HAVE_CONFIG_H +#include +#endif + +#ifdef READ_FLAC + +#ifndef _READFLAC_H +#define _READFLAC_H + +extern "C" { +#include "FLAC/seekable_stream_decoder.h" +}; + +#include "Readsf.h" +#include "generic.h" + +class ReadFlac : public Readsf { + public: + ReadFlac( Input *input); + virtual ~ReadFlac(); + virtual bool Initialize(); + virtual int Decode(float *buffer, int size); + virtual bool Rewind(); + virtual bool PCM_seek(long bytes); + virtual bool TIME_seek(double seconds); + + protected: + bool needs_seek; + FLAC__uint64 seek_sample; + unsigned samples_in_reservoir; + bool abort_flag; + FLAC__SeekableStreamDecoder *decoder; + FLAC__StreamMetadata streaminfo; + FLAC__int16 reservoir[FLAC__MAX_BLOCK_SIZE * 2 * 2]; // *2 for max channels, another *2 for overflow + //unsigned char output[576 * 2 * (16/8)]; // *2 for max channels, (16/8) for max bytes per sample + + unsigned lengthInMsec() { return (unsigned)((FLAC__uint64)1000 * streaminfo.data.stream_info.total_samples / streaminfo.data.stream_info.sample_rate); } + private: + void ErrorCheck(int state); + long filelength; + void cleanup(); + + + + static FLAC__SeekableStreamDecoderReadStatus readCallback_(const FLAC__SeekableStreamDecoder *decoder, + FLAC__byte buffer[], + unsigned *bytes, + void *client_data); + static FLAC__SeekableStreamDecoderSeekStatus seekCallback_(const FLAC__SeekableStreamDecoder *decoder, + FLAC__uint64 absolute_byte_offset, + void *client_data); + static FLAC__SeekableStreamDecoderTellStatus tellCallback_(const FLAC__SeekableStreamDecoder *decoder, + FLAC__uint64 *absolute_byte_offset, + void *client_data); + static FLAC__SeekableStreamDecoderLengthStatus lengthCallback_(const FLAC__SeekableStreamDecoder *decoder, + FLAC__uint64 *stream_length, + void *client_data); + static FLAC__bool eofCallback_(const FLAC__SeekableStreamDecoder *decoder, void *client_data); + static FLAC__StreamDecoderWriteStatus writeCallback_(const FLAC__SeekableStreamDecoder *decoder, + const FLAC__Frame *frame, + const FLAC__int32 * const buffer[], + void *client_data); + static void metadataCallback_(const FLAC__SeekableStreamDecoder *decoder, + const FLAC__StreamMetadata *metadata, + void *client_data); + static void errorCallback_(const FLAC__SeekableStreamDecoder *decoder, + FLAC__StreamDecoderErrorStatus status, + void *client_data); +}; + +#endif +#endif //#ifdef READ_FLAC diff --git a/include/ReadMad.h b/include/ReadMad.h new file mode 100644 index 0000000..bf0bc27 --- /dev/null +++ b/include/ReadMad.h @@ -0,0 +1,125 @@ +/* + * readanysf~ external for pd. + * + * Copyright (C) 2003 August Black + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * ReadMad.cpp || much code studied from Andy Lo-A-Foe + */ + + +#ifdef HAVE_CONFIG_H +#include +#endif + + +#ifdef READ_MAD + +#ifndef _READMAD_H_ +#define _READMAD_H_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#define MAD_BUFSIZE (4 * 1024) +#define XING_MAGIC (('X' << 24) | ('i' << 16) | ('n' << 8) | 'g') + +extern "C" { +#include +} + +//#include "xing.h" +#include "Readsf.h" +#include "Input.h" + + +#define FRAME_RESERVE 2000 + + +struct xing { + long flags; /* valid fields (see below) */ + unsigned long frames; /* total number of frames */ + unsigned long bytes; /* total number of bytes */ + unsigned char toc[100]; /* 100-point seek table */ + long scale; /* ?? */ +}; + +enum { + XING_FRAMES = 0x00000001L, + XING_BYTES = 0x00000002L, + XING_TOC = 0x00000004L, + XING_SCALE = 0x00000008L +}; + +# define xing_finish(xing) /* nothing */ + + +class ReadMad : public Readsf { + + private: + //FILE *mad_fd; + uint8_t mad_map[MAD_BUFSIZE]; + long map_offset; + int bytes_avail; + + struct mad_synth synth; + struct mad_stream stream; + struct mad_frame frame; + mad_timer_t timer; + struct xing xing; + + int mad_init; + ssize_t offset; + ssize_t filesize; + // int samplerate; + int bitrate; + int samplesperframe; + long samplestotal; + long time; + int seekable; + int nr_frames; + + //float my_scale(mad_fixed_t sample); + bool fill_buffer( ); + bool fill_buffer( long newoffset ); + int mad_frame_seek( int frame ); + ssize_t find_initial_frame(uint8_t *buf, int size); + void seek_bytes(long byte_offset); + + void xing_init(struct xing *); + int xing_parse(struct xing *, struct mad_bitptr, unsigned int); + + public: + ReadMad(); + ReadMad( Input *input ); + virtual ~ReadMad(); + virtual bool Initialize(); + virtual int Decode(float *buffer, int size); + virtual bool Rewind(); + virtual bool PCM_seek(long bytes); + virtual bool TIME_seek(double seconds); +}; + +#endif +#endif //ifdef READ_MAD diff --git a/include/ReadRaw.h b/include/ReadRaw.h new file mode 100644 index 0000000..9906ecf --- /dev/null +++ b/include/ReadRaw.h @@ -0,0 +1,154 @@ +/* + * readanysf~ external for pd. + * + * Copyright (C) 2003 August Black + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * ReadRaw.h + */ + +#ifdef HAVE_CONFIG_H +#include +#endif + + +#ifndef _READRAW_H_ +#define _READRAW_H_ + +#include +#include +#include +#include "Readsf.h" + +typedef struct _nextstep +{ + char ns_fileid[4]; /* magic number '.snd' if file is big-endian */ + unsigned int ns_onset; /* byte offset of first sample */ + unsigned int ns_length; /* length of sound in bytes */ + unsigned int ns_format; /* format; see below */ + unsigned int ns_sr; /* sample rate */ + unsigned int ns_nchans; /* number of channels */ + char ns_info[4]; /* comment */ +} t_nextstep; + +typedef struct _wave +{ + char w_fileid[4]; /* chunk id 'RIFF' */ + unsigned int w_chunksize; /* chunk size */ + char w_waveid[4]; /* wave chunk id 'WAVE' */ + char w_fmtid[4]; /* format chunk id 'fmt ' */ + unsigned int w_fmtchunksize; /* format chunk size */ + unsigned short w_fmttag; /* format tag, 1 for PCM */ + unsigned short w_nchannels; /* number of channels */ + unsigned int w_samplespersec; /* sample rate in hz */ + unsigned int w_navgbytespersec; /* average bytes per second */ + unsigned short w_nblockalign; /* number of bytes per frame */ + unsigned short w_nbitspersample; /* number of bits in a sample */ + char w_datachunkid[4]; /* data chunk id 'data' */ + unsigned int w_datachunksize; /* length of data chunk */ +} t_wave; + +typedef struct _fmt /* format chunk */ +{ + unsigned short f_fmttag; /* format tag, 1 for PCM */ + unsigned short f_nchannels; /* number of channels */ + unsigned int f_samplespersec; /* sample rate in hz */ + unsigned int f_navgbytespersec; /* average bytes per second */ + unsigned short f_nblockalign; /* number of bytes per frame */ + unsigned short f_nbitspersample; /* number of bits in a sample */ +} t_fmt; + +typedef struct _wavechunk /* ... and the last two items */ +{ + char wc_id[4]; /* data chunk id, e.g., 'data' or 'fmt ' */ + unsigned int wc_size; /* length of data chunk */ +} t_wavechunk; + +/* the AIFF header. I'm assuming AIFC is compatible but don't really know + that. */ + +typedef struct _datachunk +{ + char dc_id[4]; /* data chunk id 'SSND' */ + unsigned int dc_size; /* length of data chunk */ +} t_datachunk; + +typedef struct _comm +{ + unsigned short c_nchannels; /* number of channels */ + unsigned short c_nframeshi; /* # of sample frames (hi) */ + unsigned short c_nframeslo; /* # of sample frames (lo) */ + unsigned short c_bitspersamp; /* bits per sample */ + unsigned char c_samprate[10]; /* sample rate, 80-bit float! */ +} t_comm; + + /* this version is more convenient for writing them out: */ +typedef struct _aiff +{ + char a_fileid[4]; /* chunk id 'FORM' */ + unsigned int a_chunksize; /* chunk size */ + char a_aiffid[4]; /* aiff chunk id 'AIFF' */ + char a_fmtid[4]; /* format chunk id 'COMM' */ + unsigned int a_fmtchunksize; /* format chunk size, 18 */ + unsigned short a_nchannels; /* number of channels */ + unsigned short a_nframeshi; /* # of sample frames (hi) */ + unsigned short a_nframeslo; /* # of sample frames (lo) */ + unsigned short a_bitspersamp; /* bits per sample */ + unsigned char a_samprate[10]; /* sample rate, 80-bit float! */ +} t_aiff; + + +#define NS_FORMAT_LINEAR_16 3 +#define NS_FORMAT_LINEAR_24 4 +#define NS_FORMAT_FLOAT 6 +#define SCALE (1./(1024. * 1024. * 1024. * 2.)) + + +#define AIFFHDRSIZE 38 /* probably not what sizeof() gives */ +#define AIFFPLUS (AIFFHDRSIZE + 8) /* header size including first chunk hdr */ + +#define WHDR1 sizeof(t_nextstep) +#define WHDR2 (sizeof(t_wave) > WHDR1 ? sizeof (t_wave) : WHDR1) +#define WRITEHDRSIZE (AIFFPLUS > WHDR2 ? AIFFPLUS : WHDR2) + +#define READHDRSIZE (16 > WHDR2 + 2 ? 16 : WHDR2 + 2) + + +class ReadRaw : public Readsf { + private: + + long ret; + unsigned char data[WAVCHUNKSIZE * 4 * 2]; //WAVCHUNKSIZE * bytespersamp * num_channels; + + int headersize; + int bytespersamp; + int bigendian; + public: + ReadRaw ( ); + ReadRaw( Input *input ); + virtual ~ReadRaw(); + virtual bool Initialize(); + virtual int Decode(float *buffer,int size); + virtual bool Rewind(); + virtual bool PCM_seek(long bytes); + virtual bool TIME_seek(double seconds); +}; + + + + + +#endif diff --git a/include/ReadVorbis.h b/include/ReadVorbis.h new file mode 100644 index 0000000..bf42a23 --- /dev/null +++ b/include/ReadVorbis.h @@ -0,0 +1,99 @@ +/* + * readanysf~ external for pd. + * + * Copyright (C) 2003 August Black + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * ReadVorbisUrl.h + */ + +#ifdef HAVE_CONFIG_H +#include +#endif + +#ifdef READ_VORBIS + +#ifndef _READVORBISURL_H_ +#define _READVORBISURL_H_ + +#include "Readsf.h" +#include "generic.h" + +extern "C" { +#include +#include +} + +#include +#include +#include + +#include +#include +#include + +//#include +//#include + +#ifdef NT +#include /* for 'write' in pute-function only */ +#include +#include +#else +#include +#include +#include +#include +#include +#include +#include +#define SOCKET_ERROR -1 +#endif + + + +//#define VSTREAM_FIFOSIZE (32 * 1024) +//#define VSTREAM_BUFFERSIZE (4 * 1024) +//#define VSOCKET_READSIZE 1024 +//#define STRBUF_SIZE 1024 + + +class ReadVorbis : public Readsf { + private: + + OggVorbis_File vf; + ov_callbacks callbacks; + + static size_t read_func(void *ptr, size_t size, size_t nmemb, void *datasource); + static int seek_func(void *datasource, ogg_int64_t offset, int whence); + static int close_func(void *datasource); + static long tell_func(void *datasource); + bool seekable; + + public: + ReadVorbis( Input *input ); + virtual ~ReadVorbis(); + virtual bool Initialize(); + virtual int Decode(float *buffer, int size); + virtual bool Rewind(); + virtual bool PCM_seek(long bytes); + virtual bool TIME_seek(double seconds); + bool is_seekable() { return seekable;}; + +}; + +#endif +#endif //ifdef READVORBIS diff --git a/include/Readsf.h b/include/Readsf.h new file mode 100644 index 0000000..ea09384 --- /dev/null +++ b/include/Readsf.h @@ -0,0 +1,62 @@ +/* + * readanysf~ external for pd. + * + * Copyright (C) 2003 August Black + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * Readsf.h + */ + +#ifdef HAVE_CONFIG_H +#include +#endif + +#ifndef _READSF_H_ +#define _READSF_H_ + +#include +#include +#include +#include "Input.h" + +class Readsf { + +private: + + + public: + Readsf(); + Readsf( Input *input ); + + virtual ~Readsf(); + virtual bool Initialize(); + virtual int Decode(float *buffer, int size); + virtual bool Rewind(); + virtual bool PCM_seek(long bytes); + virtual bool TIME_seek(double seconds); + double get_samplerate() { return samplerate;} + int get_channels() { return num_channels;} + float get_lengthinseconds() { return lengthinseconds; } + + protected: + Input *in; + double samplerate; + int num_channels; + float lengthinseconds; + bool eof; +}; + +#endif diff --git a/include/generic.h b/include/generic.h new file mode 100644 index 0000000..c165f2f --- /dev/null +++ b/include/generic.h @@ -0,0 +1,48 @@ +#ifndef _GENERIC_H_ +#define _GENERIC_H_ + + +#define FLOATSIZE sizeof(float) +#define SHORTSIZE sizeof(short) +#define CHUNKSIZE 4096*FLOATSIZE +#define WAVCHUNKSIZE 1024 +//#define MAD_CHUNKSIZE 2016*FLOATSIZE //576 +#define INOUTSIZE (CHUNKSIZE*4)+1 + +#define FIFOSIZE (CHUNKSIZE*16) +#define FIFOSECONDS (FIFOSIZE/FLOATSIZE/44100) //assume samplerate +#define READBUFFER (1024*16) + +#define R_NOTHING 0 +#define R_OPEN 1 +#define R_CLOSE 2 +#define R_QUIT 3 +#define R_PROCESS 4 +#define R_STOP 5 + +#define STATE_IDLE 0 +#define STATE_STARTUP 1 +#define STATE_STREAM 2 +#define STATE_IDLE_CLOSED 3 + +#define FORMAT_WAVE 0 +#define FORMAT_AIFF 1 +#define FORMAT_NEXT 2 +#define FORMAT_VORBIS 3 +#define FORMAT_MAD 4 +#define FORMAT_FLAC 5 +#define FORMAT_HTTP_MP3 6 +#define FORMAT_HTTP_VORBIS 7 + + + +#define STREAM_FIFOSIZE (32 * 1152) +#define SOCKET_READSIZE 1024 //1152/4 +#define sys_closesocket close // windows uses sys_closesocket +#define STRBUF_SIZE 1024 + +//#define STREAM_BUFFERSIZE (4 * 1152) +//#define FRAME_RESERVE 2000 +//#define STRDUP strdup + +#endif diff --git a/include/main.h b/include/main.h new file mode 100644 index 0000000..ea1093f --- /dev/null +++ b/include/main.h @@ -0,0 +1,158 @@ +/* + * readanysf~ external for pd. + * + * Copyright (C) 2003 August Black + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * main.h + */ + + +#ifdef HAVE_CONFIG_H +#include +#endif + + +#include +#include + + +extern "C" { +#include //libsamplerate +} + +#include "Readsf.h" +#include "ReadRaw.h" +#ifdef READ_VORBIS +#include "ReadVorbis.h" +#endif +#ifdef READ_MAD +#include "ReadMad.h" +#endif +#ifdef READ_MAD_URL +#include "ReadMadUrl.h" +#endif +#ifdef READ_FLAC +#include "ReadFlac.h" +#endif + +#include "Fifo.h" +#include "generic.h" +#include "Input.h" +#include "InputFile.h" +#include "InputStream.h" + +// check for appropriate flext version +#if !defined(FLEXT_VERSION) || (FLEXT_VERSION < 400) +#error You need at least flext version 0.4.0 +#endif + + +class readanysf: public flext_dsp +{ + // obligatory flext header (class name,base class name) + FLEXT_HEADER(readanysf, flext_dsp) + +public: + + readanysf(); + ~readanysf(); + + +protected: + // here we declare the virtual DSP function + virtual void m_signal(int n, float *const *in, float *const *out); + + void m_open(t_symbol *s); // open file Input; set req = R_OPEN + void m_reopen(); // re open a file Input; set req = R_OPEN + void m_start(); // set state = S_PROCESS + void m_pause(); // set state = S_IDLE + void m_stop(); // set state = S_STATE; cond.signal(); + + void m_child(); + void FillFifo(); + + //void m_loop_s(t_symbol *s); + void m_recover(float f); + void m_loop_f(float f); + void m_set_tick(int i); + void m_pcm_seek(int i); + void m_time_seek(float f); + void m_src_factor(float f); + + void m_bang(); + + int m_resample(int frames); + + int getState(); + int getRequest(); + void setState(int i); + void setRequest(int i); + void setSys(int state, int request); +private: + FLEXT_CALLBACK_S(m_open) + FLEXT_CALLBACK(m_reopen) + + + FLEXT_CALLBACK_F(m_loop_f) + FLEXT_CALLBACK_F(m_recover) + FLEXT_CALLBACK_I(m_set_tick) + FLEXT_CALLBACK(m_start) + FLEXT_CALLBACK(m_pause) + FLEXT_CALLBACK(m_stop) + + FLEXT_CALLBACK_I(m_pcm_seek) + FLEXT_CALLBACK_F(m_time_seek) + + FLEXT_CALLBACK_F(m_src_factor) + + FLEXT_THREAD(m_child) + FLEXT_CALLBACK(m_bang) + + + Readsf *readsf; + ThrCond cond; + ThrMutex sysmut; + ThrMutex varmutex; + Fifo *fifo; + Input *in; + int format; + int outtick, counttick; + int fifosecondsize; + + volatile int state, request; + volatile bool loop, eof, quit, sendout; + volatile float floatmsg, cachemsg, lengthinseconds; + + char filename[1024]; + int num_channels; + double samplerate; + + volatile long pcmseek; + volatile double timeseek; + + float read_buffer[READBUFFER]; + float pd_buffer[1024*2*FLOATSIZE]; + + ///Secret Rabbit Code stuff + int src_channels; + float *src_buffer; + SRC_STATE * src_state; + SRC_DATA src_data; + double src_factor; + int src_error; + int src_mode; +}; diff --git a/include/stamp-h2.in b/include/stamp-h2.in new file mode 100644 index 0000000..e69de29 -- cgit v1.2.1