Commit a4c9f545 authored by Jonathan Wilkes's avatar Jonathan Wilkes
Browse files

add 0.25.2 changes from svn plus more recent bugfixes:

[r16947] by eighthave: merge in Win32 UTF-8 file/path support
[r16123] by eighthave: pad link fields with -headerpad_max_install_names so the Pd-extended packaging can rewrite the link paths
[r16033] by eighthave: replace verbose() with logpost() since verbose() adds extraneous carraige returns to messages that have been filtered out by the log level
[r15977] by eighthave: bumped to v0.25.2
[r15918] by eighthave: post version message using verbose(0)
[r15472] by eighthave: updated to template/Makefile 1.0.11
[r15186] by eighthave: replace .x%x 32-bit only canvas id with .x%lx canvas id which supports 32-bit and 64-bit
parent c60efd48
## Pd library template version 1.0.3
## Pd library template version 1.0.11
# For instructions on how to use this template, see:
# http://puredata.info/docs/developer/MakefileTemplate
#
# the name of this library
# must not contain any spaces or weird characters (as it's used for
# filenames,...)
LIBRARY_NAME = pdogg
# add your .c source files, one object per file, to the SOURCES
# variable, help files will be included automatically
# variable, help files will be included automatically, and for GUI
# objects, the matching .tcl file too
SOURCES = oggamp~.c oggcast~.c oggread~.c oggwrite~.c
# list all pd objects (i.e. myobject.pd) files here, and their helpfiles will
......@@ -23,7 +29,6 @@ MANUAL =
# automatically included
EXTRA_DIST = pdogg.c makefile.msvc HISTORY
# special case: pthread lib was added below
#------------------------------------------------------------------------------#
......@@ -32,9 +37,12 @@ EXTRA_DIST = pdogg.c makefile.msvc HISTORY
#
#------------------------------------------------------------------------------#
CFLAGS = -DPD -I"$(PD_INCLUDE)"/pd -Wall -W -g
LDFLAGS =
LIBS =
ALL_CFLAGS = -I"$(PD_INCLUDE)"
ALL_LDFLAGS =
SHARED_LDFLAGS =
ALL_LIBS = $(shell pkg-config --libs vorbis vorbisenc vorbisfile)
LIBS_windows = -lpthread
#------------------------------------------------------------------------------#
#
......@@ -42,12 +50,17 @@ LIBS =
#
#------------------------------------------------------------------------------#
# these can be set from outside without (usually) breaking the build
CFLAGS = -Wall -W -g
LDFLAGS =
LIBS =
# get library version from meta file
LIBRARY_VERSION = $(shell sed -n 's|^\#X text [0-9][0-9]* [0-9][0-9]* VERSION \(.*\);|\1|p' $(LIBRARY_NAME)-meta.pd)
CFLAGS += -DVERSION='"$(LIBRARY_VERSION)"'
ALL_CFLAGS += -DPD -DVERSION='"$(LIBRARY_VERSION)"'
PD_INCLUDE = $(PD_PATH)/include
PD_INCLUDE = $(PD_PATH)/include/pd
# where to install the library, overridden below depending on platform
prefix = /usr/local
libdir = $(prefix)/lib
......@@ -63,7 +76,7 @@ ALLSOURCES := $(SOURCES) $(SOURCES_android) $(SOURCES_cygwin) $(SOURCES_macosx)
$(SOURCES_iphoneos) $(SOURCES_linux) $(SOURCES_windows)
DISTDIR=$(LIBRARY_NAME)-$(LIBRARY_VERSION)
ORIGDIR=pd-$(LIBRARY_NAME)_$(LIBRARY_VERSION)
ORIGDIR=pd-$(LIBRARY_NAME:~=)_$(LIBRARY_VERSION)
UNAME := $(shell uname -s)
ifeq ($(UNAME),Darwin)
......@@ -71,6 +84,7 @@ ifeq ($(UNAME),Darwin)
ifeq ($(CPU),arm) # iPhone/iPod Touch
SOURCES += $(SOURCES_iphoneos)
EXTENSION = pd_darwin
SHARED_EXTENSION = dylib
OS = iphoneos
PD_PATH = /Applications/Pd-extended.app/Contents/Resources
IPHONE_BASE=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin
......@@ -80,14 +94,16 @@ ifeq ($(UNAME),Darwin)
ISYSROOT = -isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.0.sdk
IPHONE_CFLAGS = -miphoneos-version-min=3.0 $(ISYSROOT) -arch armv6
OPT_CFLAGS = -fast -funroll-loops -fomit-frame-pointer
CFLAGS := $(IPHONE_CFLAGS) $(OPT_CFLAGS) $(CFLAGS)
LDFLAGS += -arch armv6 -bundle -undefined dynamic_lookup $(ISYSROOT)
LIBS += -lc
ALL_CFLAGS := $(IPHONE_CFLAGS) $(ALL_CFLAGS)
ALL_LDFLAGS += -arch armv6 -bundle -undefined dynamic_lookup $(ISYSROOT)
SHARED_LDFLAGS += -arch armv6 -dynamiclib -undefined dynamic_lookup $(ISYSROOT)
ALL_LIBS += -lc $(LIBS_iphoneos)
STRIP = strip -x
DISTBINDIR=$(DISTDIR)-$(OS)
else # Mac OS X
SOURCES += $(SOURCES_macosx)
EXTENSION = pd_darwin
SHARED_EXTENSION = dylib
OS = macosx
PD_PATH = /Applications/Pd-extended.app/Contents/Resources
OPT_CFLAGS = -ftree-vectorize -ftree-vectorizer-verbose=2 -fast
......@@ -98,27 +114,88 @@ ifeq ($(UNAME),Darwin)
FAT_FLAGS = -arch ppc -arch i386 -arch x86_64 -mmacosx-version-min=10.4
SOURCES += $(SOURCES_iphoneos)
endif
CFLAGS += $(FAT_FLAGS) -fPIC -I/sw/include
LDFLAGS += $(FAT_FLAGS) -bundle -undefined dynamic_lookup -L/sw/lib
ALL_CFLAGS += $(FAT_FLAGS) -fPIC -I/sw/include
# if the 'pd' binary exists, check the linking against it to aid with stripping
LDFLAGS += $(shell test -e $(PD_PATH)/bin/pd && echo -bundle_loader $(PD_PATH)/bin/pd)
LIBS += -lc `pkg-config --libs vorbis vorbisenc`
BUNDLE_LOADER = $(shell test ! -e $(PD_PATH)/bin/pd || echo -bundle_loader $(PD_PATH)/bin/pd)
ALL_LDFLAGS += $(FAT_FLAGS) -headerpad_max_install_names -bundle $(BUNDLE_LOADER) \
-undefined dynamic_lookup -L/sw/lib
SHARED_LDFLAGS += $(FAT_FLAGS) -dynamiclib -undefined dynamic_lookup \
-install_name @loader_path/$(SHARED_LIB) -compatibility_version 1 -current_version 1.0
ALL_LIBS += -lc $(LIBS_macosx)
STRIP = strip -x
DISTBINDIR=$(DISTDIR)-$(OS)
# install into ~/Library/Pd on Mac OS X since /usr/local isn't used much
pkglibdir=$(HOME)/Library/Pd
endif
endif
# Tho Android uses Linux, we use this fake uname to provide an easy way to
# setup all this things needed to cross-compile for Android using the NDK
ifeq ($(UNAME),ANDROID)
CPU := arm
SOURCES += $(SOURCES_android)
EXTENSION = pd_linux
SHARED_EXTENSION = so
OS = android
PD_PATH = /usr
NDK_BASE := /usr/local/android-ndk
NDK_PLATFORM_VERSION := 5
NDK_SYSROOT=$(NDK_BASE)/platforms/android-$(NDK_PLATFORM_VERSION)/arch-arm
NDK_UNAME := $(shell uname -s | tr '[A-Z]' '[a-z]')
NDK_TOOLCHAIN_BASE=$(NDK_BASE)/toolchains/arm-linux-androideabi-4.4.3/prebuilt/$(NDK_UNAME)-x86
CC := $(NDK_TOOLCHAIN_BASE)/bin/arm-linux-androideabi-gcc --sysroot=$(NDK_SYSROOT)
OPT_CFLAGS = -O6 -funroll-loops -fomit-frame-pointer
CFLAGS +=
LDFLAGS += -rdynamic -shared
SHARED_LDFLAGS += -Wl,-soname,$(SHARED_LIB) -shared
LIBS += -lc $(LIBS_android)
STRIP := $(NDK_TOOLCHAIN_BASE)/bin/arm-linux-androideabi-strip \
--strip-unneeded -R .note -R .comment
DISTBINDIR=$(DISTDIR)-$(OS)-$(shell uname -m)
endif
ifeq ($(UNAME),Linux)
CPU := $(shell uname -m)
SOURCES += $(SOURCES_linux)
EXTENSION = pd_linux
SHARED_EXTENSION = so
OS = linux
PD_PATH = /usr
OPT_CFLAGS = -O6 -funroll-loops -fomit-frame-pointer
ALL_CFLAGS += -fPIC
ALL_LDFLAGS += -rdynamic -shared -fPIC
SHARED_LDFLAGS += -Wl,-soname,$(SHARED_LIB) -shared
ALL_LIBS += -lc $(LIBS_linux)
STRIP = strip --strip-unneeded -R .note -R .comment
DISTBINDIR=$(DISTDIR)-$(OS)-$(shell uname -m)
endif
ifeq ($(UNAME),GNU)
# GNU/Hurd, should work like GNU/Linux for basically all externals
CPU := $(shell uname -m)
SOURCES += $(SOURCES_linux)
EXTENSION = pd_linux
SHARED_EXTENSION = so
OS = linux
PD_PATH = /usr
OPT_CFLAGS = -O6 -funroll-loops -fomit-frame-pointer
ALL_CFLAGS += -fPIC
ALL_LDFLAGS += -rdynamic -shared -fPIC
SHARED_LDFLAGS += -shared -Wl,-soname,$(SHARED_LIB)
ALL_LIBS += -lc $(LIBS_linux)
STRIP = strip --strip-unneeded -R .note -R .comment
DISTBINDIR=$(DISTDIR)-$(OS)-$(shell uname -m)
endif
ifeq ($(UNAME),GNU/kFreeBSD)
# Debian GNU/kFreeBSD, should work like GNU/Linux for basically all externals
CPU := $(shell uname -m)
SOURCES += $(SOURCES_linux)
EXTENSION = pd_linux
SHARED_EXTENSION = so
OS = linux
PD_PATH = /usr
OPT_CFLAGS = -O6 -funroll-loops -fomit-frame-pointer
CFLAGS += -fPIC
LDFLAGS += -Wl,--export-dynamic -shared -fPIC
LIBS += -lc `pkg-config --libs vorbis vorbisenc`
ALL_CFLAGS += -fPIC
ALL_LDFLAGS += -rdynamic -shared -fPIC
SHARED_LDFLAGS += -shared -Wl,-soname,$(SHARED_LIB)
ALL_LIBS += -lc $(LIBS_linux)
STRIP = strip --strip-unneeded -R .note -R .comment
DISTBINDIR=$(DISTDIR)-$(OS)-$(shell uname -m)
endif
......@@ -126,12 +203,14 @@ ifeq (CYGWIN,$(findstring CYGWIN,$(UNAME)))
CPU := $(shell uname -m)
SOURCES += $(SOURCES_cygwin)
EXTENSION = dll
SHARED_EXTENSION = dll
OS = cygwin
PD_PATH = $(cygpath $(PROGRAMFILES))/pd
PD_PATH = $(shell cygpath $$PROGRAMFILES)/pd
OPT_CFLAGS = -O6 -funroll-loops -fomit-frame-pointer
CFLAGS +=
LDFLAGS += -Wl,--export-dynamic -shared -L"$(PD_PATH)/src" -L"$(PD_PATH)/bin"
LIBS += -lc -lpd -lvorbis -lvorbisenc -logg
ALL_CFLAGS +=
ALL_LDFLAGS += -rdynamic -shared -L"$(PD_PATH)/src" -L"$(PD_PATH)/bin"
SHARED_LDFLAGS += -shared -Wl,-soname,$(SHARED_LIB)
ALL_LIBS += -lc -lpd $(LIBS_cygwin)
STRIP = strip --strip-unneeded -R .note -R .comment
DISTBINDIR=$(DISTDIR)-$(OS)
endif
......@@ -139,12 +218,16 @@ ifeq (MINGW,$(findstring MINGW,$(UNAME)))
CPU := $(shell uname -m)
SOURCES += $(SOURCES_windows)
EXTENSION = dll
SHARED_EXTENSION = dll
OS = windows
PD_PATH = $(shell cd "$(PROGRAMFILES)"/pd && pwd)
PD_PATH = $(shell cd "$$PROGRAMFILES/pd" && pwd)
# MinGW doesn't seem to include cc so force gcc
CC=gcc
OPT_CFLAGS = -O3 -funroll-loops -fomit-frame-pointer
CFLAGS += -mms-bitfields
LDFLAGS += -s -shared -Wl,--enable-auto-import
LIBS += -L"$(PD_PATH)/src" -L"$(PD_PATH)/bin" -L"$(PD_PATH)/obj" -lpd -lwsock32 -lkernel32 -luser32 -lgdi32 -lpthread -lvorbis -lvorbisfile -lvorbisenc -logg
ALL_CFLAGS += -mms-bitfields
ALL_LDFLAGS += -s -shared -Wl,--enable-auto-import -L"$(PD_PATH)/src" -L"$(PD_PATH)/bin" -L"$(PD_PATH)/obj"
SHARED_LDFLAGS += -shared
ALL_LIBS += -lpd -lwsock32 -lkernel32 -luser32 -lgdi32 $(LIBS_windows)
STRIP = strip --strip-unneeded -R .note -R .comment
DISTBINDIR=$(DISTDIR)-$(OS)
endif
......@@ -152,42 +235,57 @@ endif
# in case somebody manually set the HELPPATCHES above
HELPPATCHES ?= $(SOURCES:.c=-help.pd) $(PDOBJECTS:.pd=-help.pd)
CFLAGS += $(OPT_CFLAGS)
ALL_CFLAGS := $(ALL_CFLAGS) $(CFLAGS) $(OPT_CFLAGS)
ALL_LDFLAGS := $(LDFLAGS) $(ALL_LDFLAGS)
ALL_LIBS := $(LIBS) $(ALL_LIBS)
SHARED_SOURCE ?= $(shell test ! -e lib$(LIBRARY_NAME).c || \
echo lib$(LIBRARY_NAME).c )
SHARED_HEADER ?= $(shell test ! -e $(LIBRARY_NAME).h || echo $(LIBRARY_NAME).h)
SHARED_LIB = $(SHARED_SOURCE:.c=.$(SHARED_EXTENSION))
.PHONY = install libdir_install single_install install-doc install-exec install-examples install-manual clean dist etags $(LIBRARY_NAME)
.PHONY = install libdir_install single_install install-doc install-examples install-manual clean distclean dist etags $(LIBRARY_NAME)
all: $(SOURCES:.c=.$(EXTENSION))
all: $(SOURCES:.c=.$(EXTENSION)) $(SHARED_LIB)
%.o: %.c
$(CC) $(CFLAGS) -o "$*.o" -c "$*.c"
$(CC) $(ALL_CFLAGS) -o "$*.o" -c "$*.c"
%.$(EXTENSION): %.o
$(CC) $(LDFLAGS) -o "$*.$(EXTENSION)" "$*.o" $(LIBS)
%.$(EXTENSION): %.o $(SHARED_LIB)
$(CC) $(ALL_LDFLAGS) -o "$*.$(EXTENSION)" "$*.o" $(ALL_LIBS) $(SHARED_LIB)
chmod a-x "$*.$(EXTENSION)"
# this links everything into a single binary file
$(LIBRARY_NAME): $(SOURCES:.c=.o) $(LIBRARY_NAME).o
$(CC) $(LDFLAGS) -o $(LIBRARY_NAME).$(EXTENSION) $(SOURCES:.c=.o) $(LIBRARY_NAME).o $(LIBS)
$(CC) $(ALL_LDFLAGS) -o $(LIBRARY_NAME).$(EXTENSION) $(SOURCES:.c=.o) $(LIBRARY_NAME).o $(ALL_LIBS)
chmod a-x $(LIBRARY_NAME).$(EXTENSION)
$(SHARED_LIB): $(SHARED_SOURCE:.c=.o)
$(CC) $(SHARED_LDFLAGS) -o $(SHARED_LIB) $(SHARED_SOURCE:.c=.o) $(LIBS)
install: libdir_install
# The meta and help files are explicitly installed to make sure they are
# actually there. Those files are not optional, then need to be there.
libdir_install: $(SOURCES:.c=.$(EXTENSION)) install-doc install-examples install-manual
libdir_install: $(SOURCES:.c=.$(EXTENSION)) $(SHARED_LIB) install-doc install-examples install-manual
$(INSTALL_DIR) $(DESTDIR)$(objectsdir)/$(LIBRARY_NAME)
$(INSTALL_DATA) $(LIBRARY_NAME)-meta.pd \
$(DESTDIR)$(objectsdir)/$(LIBRARY_NAME)
test -z "$(strip $(SOURCES))" || (\
$(INSTALL_PROGRAM) $(SOURCES:.c=.$(EXTENSION)) $(DESTDIR)$(objectsdir)/$(LIBRARY_NAME) && \
$(STRIP) $(addprefix $(DESTDIR)$(objectsdir)/$(LIBRARY_NAME)/,$(SOURCES:.c=.$(EXTENSION))))
test -z "$(strip $(SHARED_LIB))" || \
$(INSTALL_DATA) $(SHARED_LIB) \
$(DESTDIR)$(objectsdir)/$(LIBRARY_NAME)
test -z "$(strip $(wildcard $(SOURCES:.c=.tcl)))" || \
$(INSTALL_DATA) $(wildcard $(SOURCES:.c=.tcl)) \
$(DESTDIR)$(objectsdir)/$(LIBRARY_NAME)
test -z "$(strip $(PDOBJECTS))" || \
$(INSTALL_DATA) $(PDOBJECTS) \
$(DESTDIR)$(objectsdir)/$(LIBRARY_NAME)
# install library linked as single binary
single_install: $(LIBRARY_NAME) install-doc install-exec
single_install: $(LIBRARY_NAME) install-doc install-examples install-manual
$(INSTALL_DIR) $(DESTDIR)$(objectsdir)/$(LIBRARY_NAME)
$(INSTALL_PROGRAM) $(LIBRARY_NAME).$(EXTENSION) $(DESTDIR)$(objectsdir)/$(LIBRARY_NAME)
$(STRIP) $(DESTDIR)$(objectsdir)/$(LIBRARY_NAME)/$(LIBRARY_NAME).$(EXTENSION)
......@@ -216,10 +314,11 @@ install-manual:
clean:
-rm -f -- $(SOURCES:.c=.o) $(SOURCES_LIB:.c=.o)
-rm -f -- $(SOURCES:.c=.o) $(SOURCES_LIB:.c=.o) $(SHARED_SOURCE:.c=.o)
-rm -f -- $(SOURCES:.c=.$(EXTENSION))
-rm -f -- $(LIBRARY_NAME).o
-rm -f -- $(LIBRARY_NAME).$(EXTENSION)
-rm -f -- $(SHARED_LIB)
distclean: clean
-rm -f -- $(DISTBINDIR).tar.gz
......@@ -235,7 +334,7 @@ $(DISTBINDIR):
libdir: all $(DISTBINDIR)
$(INSTALL_DATA) $(LIBRARY_NAME)-meta.pd $(DISTBINDIR)
$(INSTALL_DATA) $(SOURCES) $(DISTBINDIR)
$(INSTALL_DATA) $(SOURCES) $(SHARED_SOURCE) $(SHARED_HEADER) $(DISTBINDIR)
$(INSTALL_DATA) $(HELPPATCHES) $(DISTBINDIR)
test -z "$(strip $(EXTRA_DIST))" || \
$(INSTALL_DATA) $(EXTRA_DIST) $(DISTBINDIR)
......@@ -254,6 +353,12 @@ dist: $(DISTDIR)
$(INSTALL_DATA) $(LIBRARY_NAME)-meta.pd $(DISTDIR)
test -z "$(strip $(ALLSOURCES))" || \
$(INSTALL_DATA) $(ALLSOURCES) $(DISTDIR)
test -z "$(strip $(wildcard $(ALLSOURCES:.c=.tcl)))" || \
$(INSTALL_DATA) $(wildcard $(ALLSOURCES:.c=.tcl)) $(DISTDIR)
test -z "$(strip $(SHARED_HEADER))" || \
$(INSTALL_DATA) $(SHARED_HEADER) $(DISTDIR)
test -z "$(strip $(SHARED_SOURCE))" || \
$(INSTALL_DATA) $(SHARED_SOURCE) $(DISTDIR)
test -z "$(strip $(PDOBJECTS))" || \
$(INSTALL_DATA) $(PDOBJECTS) $(DISTDIR)
test -z "$(strip $(HELPPATCHES))" || \
......@@ -286,17 +391,25 @@ etags:
etags *.h $(SOURCES) ../../pd/src/*.[ch] /usr/include/*.h /usr/include/*/*.h
showsetup:
@echo "CC: $(CC)"
@echo "CFLAGS: $(CFLAGS)"
@echo "LDFLAGS: $(LDFLAGS)"
@echo "LIBS: $(LIBS)"
@echo "ALL_CFLAGS: $(ALL_CFLAGS)"
@echo "ALL_LDFLAGS: $(ALL_LDFLAGS)"
@echo "ALL_LIBS: $(ALL_LIBS)"
@echo "PD_INCLUDE: $(PD_INCLUDE)"
@echo "PD_PATH: $(PD_PATH)"
@echo "objectsdir: $(objectsdir)"
@echo "LIBRARY_NAME: $(LIBRARY_NAME)"
@echo "LIBRARY_VERSION: $(LIBRARY_VERSION)"
@echo "SOURCES: $(SOURCES)"
@echo "SHARED_HEADER: $(SHARED_HEADER)"
@echo "SHARED_SOURCE: $(SHARED_SOURCE)"
@echo "SHARED_LIB: $(SHARED_LIB)"
@echo "PDOBJECTS: $(PDOBJECTS)"
@echo "ALLSOURCES: $(ALLSOURCES)"
@echo "ALLSOURCES TCL: $(wildcard $(ALLSOURCES:.c=.tcl))"
@echo "UNAME: $(UNAME)"
@echo "CPU: $(CPU)"
@echo "pkglibdir: $(pkglibdir)"
......
Version 0.25
copyright (c) 2002-2004 by Olaf Matthes
pdogg~ is a collection of ogg/vorbis externals for pd (by Miller
pdogg~ is a collection of Ogg/Vorbis externals for Pd (by Miller
Puckette).
It includes:
......@@ -10,10 +10,10 @@ It includes:
- oggread~ : reads files from disk
- oggwrite~ : writes files to disk
To use pdogg start pd with '-lib path\to\pdogg' flag.
To use pdogg start Pd with '-lib path\to\pdogg' flag.
On Win32 systems Pd 0.35 test 17 or later is necessary to get it working!
To compile pdogg~ you need the ogg/vorbis library from
To compile pdogg~ you need the Ogg/Vorbis library from
http://www.vorbis.com/ and under win additionally Pthreads-win32 from
http://sources.redhat.com/pthreads-win32/.
You have to modify the makefile to make it point to the place where the
......@@ -28,8 +28,8 @@ due to a bug or for other reasons.
*****************************************************************************
pdogg~ uses the ogg/vorbis library to encode audio data.
The latest version of ogg/vorbis can be found at http://www.vorbis.com/
pdogg~ uses the Ogg/Vorbis library to encode audio data.
The latest version of Ogg/Vorbis can be found at http://www.vorbis.com/
The original version was found at:
http://www.akustische-kunst.de/puredata/
......@@ -45,13 +45,13 @@ displayed, use [oggamp~ 1].
Message "connect <host> <mountpoint> <port>" connects to an IceCast2 server.
Note that no response about succesfull connection is send by the server. All
messages in the pd console window about connection status depend on the ability
messages in the Pd console window about connection status depend on the ability
to receive data from the server.
Use "connecturl <url>" to use url-like server adresses (like http://host:post/
stream.ogg).
Known bugs and other things:
- pd halts for a moment when oggamp~ connects to the server. This results in a
- Pd halts for a moment when oggamp~ connects to the server. This results in a
short audio drop out of sound currently played back.
- resampling not jet supported
- playback does not stop on a buffer underrun
......@@ -62,9 +62,9 @@ Known bugs and other things:
oggcast~ Usage:
Use message "vbr <samplerate> <channels> <quality>" to set the vorbis
Use message "vbr <samplerate> <channels> <quality>" to set the Vorbis
encoding parameters. Resampling is currently not supported, so 'samplerate'
should be the one pd is running at. 'channels' specyfies the number of channels
should be the one Pd is running at. 'channels' specyfies the number of channels
to stream. This can be set to 2 (default) or 1 which means mono stream taking
the leftmost audio input only. 'quality' can be a value between 0.0 and 1.0
giving the quality of the stream. 0.4 (default) results in a stream that's
......@@ -82,16 +82,16 @@ constant bitrate stream. Values are in kbps!
Message "connect <host> <mountpoint> <port>" connects to the IceCast2 server.
Note that no response about succesfull connection is send by the server. All
messages in the pd console window about connection status depend on the ability
messages in the Pd console window about connection status depend on the ability
to send data to the server.
The mountpoint should end with '.ogg' to indiocate to the player/client that
it is an ogg/vorbis encoded stream.
it is an Ogg/Vorbis encoded stream.
Use "passwd <passwort>" to set your password (default is 'letmein') and
"disconnect" to disconnect from the server. "print" prints out the current
vorbis encoder settings.
Vorbis encoder settings.
To set the comment tags in the ogg/vorbis header (which can be displayed by
To set the comment tags in the Ogg/Vorbis header (which can be displayed by
the receiving client) use message "<NAMEOFTAG> <comment>". Supported tags are:
TITLE, ARTIST, GENRE, PERFORMER, LOCATION, COPYRIGHT, CONTACT, DESCRIPTION and
DATE (which is automatically set to the date/time the broadcast started). To
......@@ -101,7 +101,7 @@ from the patch after saving!!!
Listening to it:
To listen to ogg/vorbis encoded livestreams many player need an extra plug-in.
To listen to Ogg/Vorbis encoded livestreams many player need an extra plug-in.
Have a look at http://www.vorbis.com/ to find the appropiate plug-in for your
player.
To play back the stream just open lacation http://<server>:<port>/<mountpoint>.
......
......@@ -634,7 +634,7 @@ static void oggamp_child_dographics(t_oggamp *x)
/* do graphics stuff :: create rectangle */
if ( x->x_graphic && glist_isvisible( x->x_canvas ) )
{
sys_vgui(".x%x.c create rectangle %d %d %d %d -fill lightblue -tags %xPBAR\n",
sys_vgui(".x%lx.c create rectangle %d %d %d %d -fill lightblue -tags %xPBAR\n",
x->x_canvas, x->x_obj.te_xpix, x->x_obj.te_ypix-OBJHEIGHT-1,
x->x_obj.te_xpix + OBJWIDTH, x->x_obj.te_ypix - 1, x );
}
......@@ -648,7 +648,7 @@ static void oggamp_child_updategraphics(t_oggamp *x)
/* update graphical read status */
char color[32];
sys_vgui(".x%x.c delete rectangle %xSTATUS\n", x->x_canvas, x);
sys_vgui(".x%lx.c delete rectangle %xSTATUS\n", x->x_canvas, x);
if(x->x_fifobytes < (x->x_fifosize / 8))
{
strcpy(color, "red");
......@@ -657,7 +657,7 @@ static void oggamp_child_updategraphics(t_oggamp *x)
{
strcpy(color, "lightgreen");
}
sys_vgui(".x%x.c create rectangle %d %d %d %d -fill %s -tags %xSTATUS\n",
sys_vgui(".x%lx.c create rectangle %d %d %d %d -fill %s -tags %xSTATUS\n",
x->x_canvas, x->x_obj.te_xpix, x->x_obj.te_ypix-OBJHEIGHT-1,
x->x_obj.te_xpix+((x->x_fifobytes*OBJWIDTH)/x->x_fifosize),
x->x_obj.te_ypix - 1, color, x);
......@@ -667,8 +667,8 @@ static void oggamp_child_delgraphics(t_oggamp *x)
{
if(x->x_graphic) /* delete graphics */
{
sys_vgui(".x%x.c delete rectangle %xPBAR\n", x->x_canvas, x );
sys_vgui(".x%x.c delete rectangle %xSTATUS\n", x->x_canvas, x );
sys_vgui(".x%lx.c delete rectangle %xPBAR\n", x->x_canvas, x );
sys_vgui(".x%lx.c delete rectangle %xSTATUS\n", x->x_canvas, x );
}
}
......@@ -1056,7 +1056,7 @@ static void *oggamp_new(t_floatarg fdographics, t_floatarg fnchannels, t_floatar
x->x_graphic = (int)fdographics;
x->x_canvas = canvas_getcurrent();
post(oggamp_version);
logpost(NULL, 4, oggamp_version);
post("oggamp~: set buffer to %dk bytes", bufsize/1024);
/* start child thread */
......
......@@ -1070,7 +1070,7 @@ static void *oggcast_new(t_floatarg fnchannels, t_floatarg fbufsize)
x->x_mountpoint = "puredata.ogg";
x->x_servertype = 1; /* HTTP/1.0 protocol for Icecast2 */
post(oggcast_version);
logpost(NULL, 4, oggcast_version);
post("oggcast~: set buffer to %dk bytes", bufsize / 1024);
post("oggcast~: encoding %d channels @ %d Hz", x->x_channels, x->x_samplerate);
......
......@@ -290,11 +290,7 @@ static void oggread_open(t_oggread *x, t_symbol *filename)
post("oggread~: previous file closed");
}
/* open file for reading */
#ifdef WIN32
if((x->x_file = fopen(filename->s_name, "rb")) < 0)
#else
if((x->x_file = fopen(filename->s_name, "r")) < 0)
#endif
if((x->x_file = sys_fopen(filename->s_name, "r")) < 0)
{
post("oggread~: could not open file \"%s\"", filename->s_name);
x->x_eos = 1;
......@@ -394,7 +390,7 @@ static void *oggread_new(t_floatarg fdographics)
x->x_outunread = 0;
x->x_decoded = 0;
post(oggread_version);
logpost(NULL, 4, oggread_version);
return (x);
}
......
......@@ -466,11 +466,7 @@ static void oggwrite_open(t_oggwrite *x, t_symbol *sfile)
x->x_recflag = 0;
}
#ifdef WIN32
if((x->x_fd = _open( sfile->s_name, x->x_file_open_mode, _S_IREAD|_S_IWRITE)) < 0)
#else
if((x->x_fd = open( sfile->s_name, x->x_file_open_mode, S_IRWXU|S_IRWXG|S_IRWXO )) < 0)
#endif
if((x->x_fd = sys_open( sfile->s_name, x->x_file_open_mode, 0666 )) < 0)
{
error( "oggwrite~: can not open \"%s\"", sfile->s_name);
x->x_fd=-1;
......@@ -729,7 +725,7 @@ static void *oggwrite_new(void)
x->x_bcperformer = "";
x->x_bccontact = "";
x->x_bcdate = "";
post(oggwrite_version);
logpost(NULL, 4, oggwrite_version);
return(x);
}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment