summaryrefslogtreecommitdiff
path: root/libraries/audiere
diff options
context:
space:
mode:
Diffstat (limited to 'libraries/audiere')
-rw-r--r--libraries/audiere/README9
-rw-r--r--libraries/audiere/audiere.SlackBuild83
-rw-r--r--libraries/audiere/audiere.info10
-rw-r--r--libraries/audiere/patches/audiere-1.9.4-flac.patch359
-rw-r--r--libraries/audiere/patches/audiere-1.9.4-gcc43.patch30
-rw-r--r--libraries/audiere/patches/audiere-1.9.4-speex.patch42
-rw-r--r--libraries/audiere/slack-desc19
7 files changed, 552 insertions, 0 deletions
diff --git a/libraries/audiere/README b/libraries/audiere/README
new file mode 100644
index 0000000000..4cdd1bdeb0
--- /dev/null
+++ b/libraries/audiere/README
@@ -0,0 +1,9 @@
+audiere (High-level audio API)
+
+Audiere is a high-level audio API. It can play Ogg Vorbis, MP3,
+FLAC, uncompressed WAV, AIFF, MOD, S3M, XM, and IT files. For
+audio output, Audiere supports DirectSound or WinMM in Windows,
+OSS on Linux and Cygwin, and SGI AL on IRIX.
+
+Optional requirements are speex (available in SlackBuilds) and
+libcdaudio and dumb (which are not available in SlackBuilds).
diff --git a/libraries/audiere/audiere.SlackBuild b/libraries/audiere/audiere.SlackBuild
new file mode 100644
index 0000000000..432c2caea4
--- /dev/null
+++ b/libraries/audiere/audiere.SlackBuild
@@ -0,0 +1,83 @@
+#!/bin/sh
+
+# Slackware build script for audiere
+
+# Written by Pablo Santamaria (pablosantamaria@gmail.com)
+
+PRGNAM=audiere
+VERSION=${VERSION:-1.9.4}
+ARCH=${ARCH:-i486}
+BUILD=${BUILD:-1}
+TAG=${TAG:-_SBo}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp/SBo}
+PKG=$TMP/package-$PRGNAM
+OUTPUT=${OUTPUT:-/tmp}
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "i686" ]; then
+ SLKCFLAGS="-O2 -march=i686 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+fi
+
+set -e
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+cd $TMP
+rm -rf $PRGNAM-$VERSION
+tar xvf $CWD/$PRGNAM-$VERSION-src.tar.bz2
+cd $PRGNAM
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+patch -p1 < $CWD/patches/audiere-1.9.4-gcc43.patch
+patch -p1 < $CWD/patches/audiere-1.9.4-flac.patch
+patch -p1 < $CWD/patches/audiere-1.9.4-speex.patch
+
+sh bootstrap
+CFLAGS="$SLKCFLAGS" \
+CXXFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --mandir=/usr/man \
+ --enable-shared \
+ --disable-static \
+ --docdir=/usr/doc/$PRGNAM-$VERSION \
+ --build=$ARCH-slackware-linux
+
+# Not build examples
+sed -i s/"SUBDIRS = doc src examples test"/"SUBDIRS = doc src test"/ Makefile
+make
+make install DESTDIR=$PKG
+
+( cd $PKG
+ find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | \
+ xargs strip --strip-unneeded 2> /dev/null || true
+ find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | \
+ xargs strip --strip-unneeded 2> /dev/null || true
+)
+
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a doc/*.txt $PKG/usr/doc/$PRGNAM-$VERSION
+find $PKG/usr/doc/$PRGNAM-$VERSION -type f | xargs chmod 644
+cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
diff --git a/libraries/audiere/audiere.info b/libraries/audiere/audiere.info
new file mode 100644
index 0000000000..7ea7b09156
--- /dev/null
+++ b/libraries/audiere/audiere.info
@@ -0,0 +1,10 @@
+PRGNAM="audiere"
+VERSION="1.9.4"
+HOMEPAGE="http://audiere.sourceforge.net/"
+DOWNLOAD="http://sourceforge.net/projects/audiere/files/audiere/1.9.4/audiere-1.9.4-src.tar.bz2/download"
+MD5SUM="46cb9aec011546166c8f78794a13021b"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+MAINTAINER="Pablo Santamaria"
+EMAIL="pablosantamaria@gmail.com"
+APPROVED="rworkman"
diff --git a/libraries/audiere/patches/audiere-1.9.4-flac.patch b/libraries/audiere/patches/audiere-1.9.4-flac.patch
new file mode 100644
index 0000000000..96fb199897
--- /dev/null
+++ b/libraries/audiere/patches/audiere-1.9.4-flac.patch
@@ -0,0 +1,359 @@
+diff -Naur audiere/configure.in audiere.tpg/configure.in
+--- audiere/configure.in 2004-11-07 23:41:37.000000000 +0000
++++ audiere.tpg/configure.in 2008-06-03 18:13:32.000000000 +0000
+@@ -66,7 +66,7 @@
+ AC_MSG_ERROR(could not find pthread library))
+
+ dnl Look for FLAC
+-AC_CHECK_LIB(FLAC, FLAC__seekable_stream_decoder_process_single,
++AC_CHECK_LIB(FLAC, FLAC__stream_decoder_process_single,
+ LIBS="-lFLAC -lm $LIBS"
+ EXTRA_LIBS="-lFLAC -lm $EXTRA_LIBS"
+ HAVE_FLAC=true
+diff -Naur audiere/src/debug.h audiere.tpg/src/debug.h
+--- audiere/src/debug.h 2004-04-09 09:33:50.000000000 +0000
++++ audiere.tpg/src/debug.h 2008-06-03 18:38:53.000000000 +0000
+@@ -60,7 +60,8 @@
+ #define ADR_IF_DEBUG if (true)
+
+ #ifdef _MSC_VER
+- #define ADR_ASSERT(condition, label) if (!(condition)) { __asm int 3 }
++ #include <intrin.h>
++ #define ADR_ASSERT(condition, label) if (!(condition)) { __debugbreak(); }
+ #else // assume x86 gcc
+ #define ADR_ASSERT(condition, label) assert(condition && label);
+ #endif
+diff -Naur audiere/src/input_flac.cpp audiere.tpg/src/input_flac.cpp
+--- audiere/src/input_flac.cpp 2003-10-23 03:41:17.000000000 +0000
++++ audiere.tpg/src/input_flac.cpp 2008-06-03 18:39:53.000000000 +0000
+@@ -19,8 +19,8 @@
+
+ FLACInputStream::~FLACInputStream() {
+ if (m_decoder) {
+- FLAC__seekable_stream_decoder_finish(m_decoder);
+- FLAC__seekable_stream_decoder_delete(m_decoder);
++ FLAC__stream_decoder_finish(m_decoder);
++ FLAC__stream_decoder_delete(m_decoder);
+ m_decoder = 0;
+ }
+ }
+@@ -31,19 +31,19 @@
+ m_file = file;
+
+ // initialize the decoder
+- m_decoder = FLAC__seekable_stream_decoder_new();
++ m_decoder = FLAC__stream_decoder_new();
+ if (!m_decoder) {
+ m_file = 0;
+ return false;
+ }
+-
++/*
+ #define SET_CALLBACK(name) \
+- FLAC__seekable_stream_decoder_set_##name##_callback( \
++ FLAC__stream_decoder_set_##name##_callback( \
+ m_decoder, \
+ name##_callback)
+
+ // set callbacks
+- FLAC__seekable_stream_decoder_set_client_data (m_decoder, this);
++ FLAC__stream_decoder_set_client_data (m_decoder, this);
+ SET_CALLBACK(read);
+ SET_CALLBACK(seek);
+ SET_CALLBACK(tell);
+@@ -52,39 +52,50 @@
+ SET_CALLBACK(write);
+ SET_CALLBACK(metadata);
+ SET_CALLBACK(error);
+-
+- FLAC__SeekableStreamDecoderState state =
+- FLAC__seekable_stream_decoder_init(m_decoder);
+- if (state != FLAC__SEEKABLE_STREAM_DECODER_OK) {
+- FLAC__seekable_stream_decoder_finish(m_decoder);
+- FLAC__seekable_stream_decoder_delete(m_decoder);
++*/
++ FLAC__StreamDecoderInitStatus state = FLAC__stream_decoder_init_stream(
++ m_decoder,
++ read_callback,
++ seek_callback,
++ tell_callback,
++ length_callback,
++ eof_callback,
++ write_callback,
++ metadata_callback,
++ error_callback,
++ this
++ );
++
++ if (state != FLAC__STREAM_DECODER_INIT_STATUS_OK) {
++ FLAC__stream_decoder_finish(m_decoder);
++ FLAC__stream_decoder_delete(m_decoder);
+ m_decoder = 0;
+ m_file = 0;
+ return false;
+ }
+
+ // make sure we have metadata before we return!
+- if (!FLAC__seekable_stream_decoder_process_until_end_of_metadata(m_decoder)) {
+- FLAC__seekable_stream_decoder_finish(m_decoder);
+- FLAC__seekable_stream_decoder_delete(m_decoder);
++ if (!FLAC__stream_decoder_process_until_end_of_metadata(m_decoder)) {
++ FLAC__stream_decoder_finish(m_decoder);
++ FLAC__stream_decoder_delete(m_decoder);
+ m_decoder = 0;
+ m_file = 0;
+ return false;
+ }
+
+ // process one frame so we can do something!
+- if (!FLAC__seekable_stream_decoder_process_single(m_decoder)) {
+- FLAC__seekable_stream_decoder_finish(m_decoder);
+- FLAC__seekable_stream_decoder_delete(m_decoder);
++ if (!FLAC__stream_decoder_process_single(m_decoder)) {
++ FLAC__stream_decoder_finish(m_decoder);
++ FLAC__stream_decoder_delete(m_decoder);
+ m_decoder = 0;
+ m_file = 0;
+ return false;
+ }
+
+ // get info about the flac file
+- m_channel_count = FLAC__seekable_stream_decoder_get_channels(m_decoder);
+- m_sample_rate = FLAC__seekable_stream_decoder_get_sample_rate(m_decoder);
+- int bps = FLAC__seekable_stream_decoder_get_bits_per_sample(m_decoder);
++ m_channel_count = FLAC__stream_decoder_get_channels(m_decoder);
++ m_sample_rate = FLAC__stream_decoder_get_sample_rate(m_decoder);
++ int bps = FLAC__stream_decoder_get_bits_per_sample(m_decoder);
+ if (bps == 16) {
+ m_sample_format = SF_S16;
+ } else if (bps == 8) {
+@@ -120,7 +131,7 @@
+
+ // if the buffer is empty, ask FLAC to fill it p
+ if (m_buffer.getSize() < frame_size) {
+- if (!FLAC__seekable_stream_decoder_process_single(m_decoder)) {
++ if (!FLAC__stream_decoder_process_single(m_decoder)) {
+ return frames_read;
+ }
+
+@@ -147,7 +158,7 @@
+ void
+ FLACInputStream::reset() {
+ m_file->seek(0, File::BEGIN);
+- FLAC__seekable_stream_decoder_seek_absolute(m_decoder, 0);
++ FLAC__stream_decoder_seek_absolute(m_decoder, 0);
+ m_position = 0;
+ m_buffer.clear();
+ }
+@@ -167,7 +178,7 @@
+
+ void
+ FLACInputStream::setPosition(int position) {
+- if (FLAC__seekable_stream_decoder_seek_absolute(m_decoder, position)) {
++ if (FLAC__stream_decoder_seek_absolute(m_decoder, position)) {
+ m_position = position;
+ }
+ }
+@@ -218,56 +229,58 @@
+ }
+
+
+- FLAC__SeekableStreamDecoderReadStatus FLACInputStream::read_callback(
+- const FLAC__SeekableStreamDecoder* decoder,
++ FLAC__StreamDecoderReadStatus FLACInputStream::read_callback(
++ const FLAC__StreamDecoder* decoder,
+ FLAC__byte buffer[],
+- unsigned *bytes,
++ size_t *bytes,
+ void* client_data)
+ {
+ *bytes = getFile(client_data)->read(buffer, *bytes);
+ if (*bytes == 0) {
+- return FLAC__SEEKABLE_STREAM_DECODER_READ_STATUS_ERROR;
++ // was: FLAC__STREAM_DECODER_READ_STATUS_ERROR
++ return FLAC__STREAM_DECODER_READ_STATUS_END_OF_STREAM;
+ } else {
+- return FLAC__SEEKABLE_STREAM_DECODER_READ_STATUS_OK;
++ // was: FLAC__STREAM_DECODER_READ_STATUS_OK
++ return FLAC__STREAM_DECODER_READ_STATUS_CONTINUE;
+ }
+ }
+
+
+- FLAC__SeekableStreamDecoderSeekStatus FLACInputStream::seek_callback(
+- const FLAC__SeekableStreamDecoder* decoder,
++ FLAC__StreamDecoderSeekStatus FLACInputStream::seek_callback(
++ const FLAC__StreamDecoder* decoder,
+ FLAC__uint64 absolute_byte_offset,
+ void* client_data)
+ {
+ if (getFile(client_data)->seek(static_cast<int>(absolute_byte_offset), File::BEGIN)) {
+- return FLAC__SEEKABLE_STREAM_DECODER_SEEK_STATUS_OK;
++ return FLAC__STREAM_DECODER_SEEK_STATUS_OK;
+ } else {
+- return FLAC__SEEKABLE_STREAM_DECODER_SEEK_STATUS_ERROR;
++ return FLAC__STREAM_DECODER_SEEK_STATUS_ERROR;
+ }
+ }
+
+
+- FLAC__SeekableStreamDecoderTellStatus FLACInputStream::tell_callback(
+- const FLAC__SeekableStreamDecoder* decoder,
++ FLAC__StreamDecoderTellStatus FLACInputStream::tell_callback(
++ const FLAC__StreamDecoder* decoder,
+ FLAC__uint64* absolute_byte_offset,
+ void* client_data)
+ {
+ *absolute_byte_offset = getFile(client_data)->tell();
+- return FLAC__SEEKABLE_STREAM_DECODER_TELL_STATUS_OK;
++ return FLAC__STREAM_DECODER_TELL_STATUS_OK;
+ }
+
+
+- FLAC__SeekableStreamDecoderLengthStatus FLACInputStream::length_callback(
+- const FLAC__SeekableStreamDecoder* decoder,
++ FLAC__StreamDecoderLengthStatus FLACInputStream::length_callback(
++ const FLAC__StreamDecoder* decoder,
+ FLAC__uint64* stream_length,
+ void* client_data)
+ {
+ *stream_length = GetFileLength(getFile(client_data));
+- return FLAC__SEEKABLE_STREAM_DECODER_LENGTH_STATUS_OK;
++ return FLAC__STREAM_DECODER_LENGTH_STATUS_OK;
+ }
+
+
+ FLAC__bool FLACInputStream::eof_callback(
+- const FLAC__SeekableStreamDecoder* decoder,
++ const FLAC__StreamDecoder* decoder,
+ void* client_data)
+ {
+ File* file = getFile(client_data);
+@@ -276,7 +289,7 @@
+
+
+ FLAC__StreamDecoderWriteStatus FLACInputStream::write_callback(
+- const FLAC__SeekableStreamDecoder* decoder,
++ const FLAC__StreamDecoder* decoder,
+ const FLAC__Frame* frame,
+ const FLAC__int32* const buffer[],
+ void* client_data)
+@@ -286,7 +299,7 @@
+
+
+ void FLACInputStream::metadata_callback(
+- const FLAC__SeekableStreamDecoder* decoder,
++ const FLAC__StreamDecoder* decoder,
+ const FLAC__StreamMetadata *metadata,
+ void* client_data)
+ {
+@@ -298,7 +311,7 @@
+
+
+ void FLACInputStream::error_callback(
+- const FLAC__SeekableStreamDecoder* decoder,
++ const FLAC__StreamDecoder* decoder,
+ FLAC__StreamDecoderErrorStatus status,
+ void* client_data)
+ {
+diff -Naur audiere/src/input_flac.h audiere.tpg/src/input_flac.h
+--- audiere/src/input_flac.h 2003-07-01 18:45:44.000000000 +0000
++++ audiere.tpg/src/input_flac.h 2008-06-03 18:42:04.000000000 +0000
+@@ -2,7 +2,7 @@
+ #define INPUT_FLAC_H
+
+
+-#include <FLAC/seekable_stream_decoder.h>
++#include <FLAC/stream_decoder.h>
+ #include "audiere.h"
+ #include "basic_source.h"
+ #include "utility.h"
+@@ -34,37 +34,37 @@
+ const FLAC__Frame* frame,
+ const FLAC__int32* const buffer[]);
+
+- static FLAC__SeekableStreamDecoderReadStatus read_callback(
+- const FLAC__SeekableStreamDecoder* decoder,
++ static FLAC__StreamDecoderReadStatus read_callback(
++ const FLAC__StreamDecoder* decoder,
+ FLAC__byte buffer[],
+- unsigned* bytes,
++ size_t* bytes,
+ void* client_data);
+- static FLAC__SeekableStreamDecoderSeekStatus seek_callback(
+- const FLAC__SeekableStreamDecoder* decoder,
++ static FLAC__StreamDecoderSeekStatus seek_callback(
++ const FLAC__StreamDecoder* decoder,
+ FLAC__uint64 absolute_byte_offset,
+ void* client_data);
+- static FLAC__SeekableStreamDecoderTellStatus tell_callback(
+- const FLAC__SeekableStreamDecoder* decoder,
++ static FLAC__StreamDecoderTellStatus tell_callback(
++ const FLAC__StreamDecoder* decoder,
+ FLAC__uint64* absolute_byte_offset,
+ void* client_data);
+- static FLAC__SeekableStreamDecoderLengthStatus length_callback(
+- const FLAC__SeekableStreamDecoder* decoder,
++ static FLAC__StreamDecoderLengthStatus length_callback(
++ const FLAC__StreamDecoder* decoder,
+ FLAC__uint64* stream_length,
+ void* client_data);
+ static FLAC__bool eof_callback(
+- const FLAC__SeekableStreamDecoder* decoder,
++ const FLAC__StreamDecoder* decoder,
+ void* client_data);
+ static FLAC__StreamDecoderWriteStatus write_callback(
+- const FLAC__SeekableStreamDecoder* decoder,
++ const FLAC__StreamDecoder* decoder,
+ const FLAC__Frame* frame,
+ const FLAC__int32* const buffer[],
+ void* client_data);
+ static void metadata_callback(
+- const FLAC__SeekableStreamDecoder* decoder,
++ const FLAC__StreamDecoder* decoder,
+ const FLAC__StreamMetadata* metadata,
+ void* client_data);
+ static void error_callback(
+- const FLAC__SeekableStreamDecoder* decoder,
++ const FLAC__StreamDecoder* decoder,
+ FLAC__StreamDecoderErrorStatus status,
+ void* client_data);
+
+@@ -74,7 +74,7 @@
+
+ FilePtr m_file;
+
+- FLAC__SeekableStreamDecoder* m_decoder;
++ FLAC__StreamDecoder* m_decoder;
+
+ /**
+ * This is the buffer used to combine the different channels from FLAC
+diff -Naur audiere/src/mci_device.h audiere.tpg/src/mci_device.h
+--- audiere/src/mci_device.h 2004-07-30 02:30:47.000000000 +0000
++++ audiere.tpg/src/mci_device.h 2008-06-03 18:43:02.000000000 +0000
+@@ -41,7 +41,11 @@
+ 0, 0, 0, 0,
+ NULL, NULL, GetModuleHandle(NULL), NULL);
+ if (m_window) {
++ #if defined(_M_X64)
++ SetWindowLongPtr(m_window, GWLP_USERDATA, reinterpret_cast<LONG_PTR>(this));
++ #else
+ SetWindowLong(m_window, GWL_USERDATA, reinterpret_cast<LONG>(this));
++ #endif
+ } else {
+ ADR_LOG("MCI notification window creation failed");
+ }
+@@ -96,7 +100,13 @@
+ static LRESULT CALLBACK notifyWindowProc(HWND window, UINT msg, WPARAM wparam, LPARAM lparam) {
+ switch (msg) {
+ case MM_MCINOTIFY: {
++ #if defined(_M_X64)
++ MCIDevice* This = reinterpret_cast<MCIDevice*>(
++ GetWindowLongPtr(window, GWLP_USERDATA)
++ );
++ #else
+ MCIDevice* This = reinterpret_cast<MCIDevice*>(GetWindowLong(window, GWL_USERDATA));
++ #endif
+ if (This) {
+ This->notify(wparam);
+ }
diff --git a/libraries/audiere/patches/audiere-1.9.4-gcc43.patch b/libraries/audiere/patches/audiere-1.9.4-gcc43.patch
new file mode 100644
index 0000000000..865c820dd2
--- /dev/null
+++ b/libraries/audiere/patches/audiere-1.9.4-gcc43.patch
@@ -0,0 +1,30 @@
+diff -Naur audiere/src/audiere.h audiere.tpg/src/audiere.h
+--- audiere/src/audiere.h 2004-11-28 01:41:59.000000000 +0000
++++ audiere.tpg/src/audiere.h 2008-06-03 17:39:43.000000000 +0000
+@@ -29,6 +29,13 @@
+ #include <vector>
+ #include <string>
+
++/* Headers for gcc-4.3 */
++
++/* strlen, strchr, etc. */
++#include <cstring>
++/* getenv, atexit, etc. */
++#include <cstdlib>
++
+ #ifdef _MSC_VER
+ #pragma warning(disable : 4786)
+ #endif
+diff -Naur audiere/src/debug.h audiere.tpg/src/debug.h
+--- audiere/src/debug.h 2004-04-09 09:33:50.000000000 +0000
++++ audiere.tpg/src/debug.h 2008-06-03 17:39:43.000000000 +0000
+@@ -6,6 +6,9 @@
+ #include <stdio.h>
+ #include <string>
+
++/* Headers for gcc-4.3 */
++#include <cstring>
++#include <cstdlib>
+
+ namespace audiere {
+
diff --git a/libraries/audiere/patches/audiere-1.9.4-speex.patch b/libraries/audiere/patches/audiere-1.9.4-speex.patch
new file mode 100644
index 0000000000..b7098ed9c6
--- /dev/null
+++ b/libraries/audiere/patches/audiere-1.9.4-speex.patch
@@ -0,0 +1,42 @@
+diff -Naur audiere/configure.in audiere.tpg/configure.in
+--- audiere/configure.in 2004-11-07 23:41:37.000000000 +0000
++++ audiere.tpg/configure.in 2008-06-03 17:52:17.000000000 +0000
+@@ -174,7 +174,7 @@
+ AC_DEFINE(NO_OGG))
+ AM_CONDITIONAL(HAVE_OGG, test "x$HAVE_OGG" = "xtrue")
+
+-AC_CHECK_HEADER(speex.h,
++AC_CHECK_HEADER(speex/speex.h,
+ HAVE_SPEEX=true
+ LIBS="-lspeex $LIBS"
+ EXTRA_LIBS="-lspeex $EXTRA_LIBS"
+diff -Naur audiere/src/speexfile/speexfile.cpp audiere.tpg/src/speexfile/speexfile.cpp
+--- audiere/src/speexfile/speexfile.cpp 2004-01-11 03:36:25.000000000 +0000
++++ audiere.tpg/src/speexfile/speexfile.cpp 2008-06-03 17:51:38.000000000 +0000
+@@ -871,7 +871,7 @@
+ void *speexfile::header_to_decoder ( SpeexHeader *header, int enh_enabled, int *frame_size, int *rate, int *nframes, int forceMode, int *channels, SpeexStereoState *stereo )
+ {
+ void *st;
+- SpeexMode *mode;
++ const SpeexMode *mode;
+ SpeexCallback callback;
+ int modeID;
+
+diff -Naur audiere/src/speexfile/speexfile.h audiere.tpg/src/speexfile/speexfile.h
+--- audiere/src/speexfile/speexfile.h 2004-01-11 03:32:14.000000000 +0000
++++ audiere.tpg/src/speexfile/speexfile.h 2008-06-03 17:51:06.000000000 +0000
+@@ -13,10 +13,10 @@
+ //#define SL_READER // uncomment to provide own reader
+
+ extern "C" {
+-#include <speex.h>
+-#include <speex_header.h>
+-#include <speex_stereo.h>
+-#include <speex_callbacks.h>
++#include <speex/speex.h>
++#include <speex/speex_header.h>
++#include <speex/speex_stereo.h>
++#include <speex/speex_callbacks.h>
+ //#include <misc.h>
+ #include <ogg/ogg.h>
+ }
diff --git a/libraries/audiere/slack-desc b/libraries/audiere/slack-desc
new file mode 100644
index 0000000000..820330423b
--- /dev/null
+++ b/libraries/audiere/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler-------------------------------------------------------|
+audiere: audiere (High-level audio API)
+audiere:
+audiere: Audiere is a high-level audio API. It can play Ogg Vorbis, MP3,
+audiere: FLAC, uncompressed WAV, AIFF, MOD, S3M, XM, and IT files. For
+audiere: audio output, Audiere supports DirectSound or WinMM in Windows,
+audiere: OSS on Linux and Cygwin, and SGI AL on IRIX.
+audiere:
+audiere:
+audiere:
+audiere:
+audiere: