Enable using libsndfile for sound file loading.
SVN revision: 78308
This commit is contained in:
parent
8909a89c48
commit
05b03f4204
42
configure.ac
42
configure.ac
|
@ -92,19 +92,31 @@ if test "x$enable_sound" = "xyes"; then
|
||||||
AC_ARG_ENABLE(sound_esound,
|
AC_ARG_ENABLE(sound_esound,
|
||||||
[ --enable-sound-esound compile with EsounD sound support @<:@default=yes@:>@],,
|
[ --enable-sound-esound compile with EsounD sound support @<:@default=yes@:>@],,
|
||||||
enable_sound_esound=yes)
|
enable_sound_esound=yes)
|
||||||
|
AC_ARG_WITH(sndldr,
|
||||||
|
[ --with-sndldr select sound loader (audiofile/sndfile/none) @<:@default=audiofile@:>@],,
|
||||||
|
with_sndldr=audiofile)
|
||||||
fi
|
fi
|
||||||
enable_sound=no
|
enable_sound=no
|
||||||
|
|
||||||
if test "x$enable_sound_pulse" = "xyes"; then
|
if test "x$with_sndldr" = "xsndfile"; then
|
||||||
PKG_CHECK_MODULES(PA, libpulse,, enable_sound_pulse=no)
|
PKG_CHECK_MODULES(SNDFILE, sndfile,
|
||||||
|
AC_DEFINE(USE_SOUND_LOADER_SNDFILE, 1, [Use sndfile sound loader]),
|
||||||
|
with_sndldr=none)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if test "x$with_sndldr" = "xaudiofile"; then
|
||||||
|
PKG_CHECK_MODULES(AUDIOFILE, audiofile,
|
||||||
|
AC_DEFINE(USE_SOUND_LOADER_AUDIOFILE, 1, [Use audiofile sound loader]),
|
||||||
|
with_sndldr=none)
|
||||||
|
fi
|
||||||
|
|
||||||
if test "x$enable_sound_pulse" = "xyes"; then
|
if test "x$enable_sound_pulse" = "xyes"; then
|
||||||
AC_DEFINE(HAVE_SOUND, 1, [Sound support])
|
PKG_CHECK_MODULES(PA, libpulse,
|
||||||
AC_DEFINE(HAVE_SOUND_PA, 1, [PulseAudio sound support])
|
AC_DEFINE(HAVE_SOUND, 1, [Sound support])
|
||||||
AC_DEFINE(USE_SOUND_LOADER_AUDIOFILE, 1, [Use audiofile sound loader])
|
AC_DEFINE(HAVE_SOUND_PA, 1, [PulseAudio sound support])
|
||||||
PKG_CHECK_MODULES(AUDIOFILE, audiofile,,)
|
enable_sound=pulseaudio
|
||||||
enable_sound=pulseaudio
|
enable_sound_esound=no,
|
||||||
enable_sound_esound=no
|
enable_sound_pulse=no)
|
||||||
fi
|
fi
|
||||||
AM_CONDITIONAL(USE_LIBPA, test "x$enable_sound_pulse" = "xyes")
|
AM_CONDITIONAL(USE_LIBPA, test "x$enable_sound_pulse" = "xyes")
|
||||||
|
|
||||||
|
@ -113,14 +125,11 @@ if test "x$enable_sound_esound" = "xyes"; then
|
||||||
enable_sound_esound=no
|
enable_sound_esound=no
|
||||||
AC_MSG_WARN([EsounD sound support was requested but not found.])
|
AC_MSG_WARN([EsounD sound support was requested but not found.])
|
||||||
])
|
])
|
||||||
AC_CHECK_HEADERS(audiofile.h,, enable_sound_esound=no)
|
if test "x$enable_sound_esound" = "xyes"; then
|
||||||
fi
|
AC_DEFINE(HAVE_SOUND, 1, [Sound support])
|
||||||
if test "x$enable_sound_esound" = "xyes"; then
|
AC_DEFINE(HAVE_SOUND_ESD, 1, [EsounD sound support])
|
||||||
AC_DEFINE(HAVE_SOUND, 1, [Sound support])
|
enable_sound=esound
|
||||||
AC_DEFINE(HAVE_SOUND_ESD, 1, [EsounD sound support])
|
fi
|
||||||
AC_DEFINE(USE_SOUND_LOADER_AUDIOFILE, 1, [Use audiofile sound loader])
|
|
||||||
PKG_CHECK_MODULES(AUDIOFILE, audiofile,,)
|
|
||||||
enable_sound=esound
|
|
||||||
fi
|
fi
|
||||||
AM_CONDITIONAL(USE_LIBESD, test "x$enable_sound_esound" = "xyes")
|
AM_CONDITIONAL(USE_LIBESD, test "x$enable_sound_esound" = "xyes")
|
||||||
|
|
||||||
|
@ -479,6 +488,7 @@ echo
|
||||||
echo "Support for"
|
echo "Support for"
|
||||||
echo " Localisation ................. $USE_NLS"
|
echo " Localisation ................. $USE_NLS"
|
||||||
echo " Sound ........................ $enable_sound"
|
echo " Sound ........................ $enable_sound"
|
||||||
|
echo " Sound loader ................. $with_sndldr"
|
||||||
echo " Old GNOME hints .............. $enable_hints_gnome"
|
echo " Old GNOME hints .............. $enable_hints_gnome"
|
||||||
echo " Session management ........... $enable_sm"
|
echo " Session management ........... $enable_sm"
|
||||||
echo " Zoom ......................... $enable_zoom"
|
echo " Zoom ......................... $enable_zoom"
|
||||||
|
|
|
@ -156,6 +156,9 @@ LDADD = \
|
||||||
$(CLOCK_LIBS) \
|
$(CLOCK_LIBS) \
|
||||||
-lX11 -lm
|
-lX11 -lm
|
||||||
|
|
||||||
|
SNDLDR_CFLAGS = $(AUDIOFILE_CFLAGS) $(SNDFILE_CFLAGS)
|
||||||
|
SNDLDR_LIBS = $(AUDIOFILE_LIBS) $(SNDFILE_LIBS)
|
||||||
|
|
||||||
if BUILD_MODULES
|
if BUILD_MODULES
|
||||||
|
|
||||||
e16_LDFLAGS = -export-dynamic
|
e16_LDFLAGS = -export-dynamic
|
||||||
|
@ -168,16 +171,16 @@ libe16_LTLIBRARIES = $(LIBSND_ESD) $(LIBSND_PA) $(LIBFNT_IFT) $(LIBFNT_XFT) $(LI
|
||||||
if USE_LIBESD
|
if USE_LIBESD
|
||||||
LIBSND_ESD = libsound_esd.la
|
LIBSND_ESD = libsound_esd.la
|
||||||
libsound_esd_la_SOURCES = sound_esd.c sound_load.c
|
libsound_esd_la_SOURCES = sound_esd.c sound_load.c
|
||||||
libsound_esd_la_CFLAGS = $(ESD_CFLAGS) $(AUDIOFILE_CFLAGS) $(CWARNFLAGS)
|
libsound_esd_la_CFLAGS = $(ESD_CFLAGS) $(SNDLDR_CFLAGS) $(CWARNFLAGS)
|
||||||
libsound_esd_la_LIBADD = $(ESD_LIBS) $(AUDIOFILE_LIBS)
|
libsound_esd_la_LIBADD = $(ESD_LIBS) $(SNDLDR_LIBS)
|
||||||
libsound_esd_la_LDFLAGS = -module -avoid-version
|
libsound_esd_la_LDFLAGS = -module -avoid-version
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if USE_LIBPA
|
if USE_LIBPA
|
||||||
LIBSND_PA = libsound_pa.la
|
LIBSND_PA = libsound_pa.la
|
||||||
libsound_pa_la_SOURCES = sound_pa.c sound_load.c
|
libsound_pa_la_SOURCES = sound_pa.c sound_load.c
|
||||||
libsound_pa_la_CFLAGS = $(PA_CFLAGS) $(AUDIOFILE_CFLAGS) $(CWARNFLAGS)
|
libsound_pa_la_CFLAGS = $(PA_CFLAGS) $(SNDLDR_CFLAGS) $(CWARNFLAGS)
|
||||||
libsound_pa_la_LIBADD = $(PA_LIBS) $(AUDIOFILE_LIBS)
|
libsound_pa_la_LIBADD = $(PA_LIBS) $(SNDLDR_LIBS)
|
||||||
libsound_pa_la_LDFLAGS = -module -avoid-version
|
libsound_pa_la_LDFLAGS = -module -avoid-version
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
@ -206,8 +209,8 @@ endif
|
||||||
else
|
else
|
||||||
|
|
||||||
MODULE_SRCS = sound_esd.c sound_pa.c sound_load.c ttfont.c text_xft.c text_pango.c
|
MODULE_SRCS = sound_esd.c sound_pa.c sound_load.c ttfont.c text_xft.c text_pango.c
|
||||||
MODULE_LIBS = $(ESD_LIBS) $(PA_LIBS) $(AUDIOFILE_LIBS) $(PANGO_LIBS) $(XFT_LIBS)
|
MODULE_LIBS = $(ESD_LIBS) $(PA_LIBS) $(SNDLDR_LIBS) $(PANGO_LIBS) $(XFT_LIBS)
|
||||||
MODULE_CFLAGS = $(ESD_CFLAGS) $(PA_CFLAGS) $(AUDIOFILE_CFLAGS) $(PANGO_CFLAGS) $(XFT_CFLAGS)
|
MODULE_CFLAGS = $(ESD_CFLAGS) $(PA_CFLAGS) $(SNDLDR_CFLAGS) $(PANGO_CFLAGS) $(XFT_CFLAGS)
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (C) 2000-2007 Carsten Haitzler, Geoff Harrison and various contributors
|
* Copyright (C) 2000-2007 Carsten Haitzler, Geoff Harrison and various contributors
|
||||||
* Copyright (C) 2004-2008 Kim Woelders
|
* Copyright (C) 2004-2012 Kim Woelders
|
||||||
*
|
*
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
* of this software and associated documentation files (the "Software"), to
|
* of this software and associated documentation files (the "Software"), to
|
||||||
|
@ -22,9 +22,11 @@
|
||||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
*/
|
*/
|
||||||
#include "E.h"
|
#include "E.h"
|
||||||
|
|
||||||
#if HAVE_SOUND
|
#if HAVE_SOUND
|
||||||
#if USE_SOUND_LOADER_AUDIOFILE
|
|
||||||
#include "sound.h"
|
#include "sound.h"
|
||||||
|
|
||||||
|
#if USE_SOUND_LOADER_AUDIOFILE
|
||||||
#include <audiofile.h>
|
#include <audiofile.h>
|
||||||
|
|
||||||
int
|
int
|
||||||
|
@ -48,14 +50,15 @@ SoundSampleGetData(const char *file, SoundSampleData * ssd)
|
||||||
#else
|
#else
|
||||||
afSetVirtualByteOrder(in_file, AF_DEFAULT_TRACK, AF_BYTEORDER_LITTLEENDIAN);
|
afSetVirtualByteOrder(in_file, AF_DEFAULT_TRACK, AF_BYTEORDER_LITTLEENDIAN);
|
||||||
#endif
|
#endif
|
||||||
if (EDebug(EDBUG_TYPE_SOUND))
|
|
||||||
Eprintf("SoundSampleGetData chan=%d width=%d rate=%d\n", ssd->channels,
|
|
||||||
ssd->bit_per_sample, ssd->rate);
|
|
||||||
|
|
||||||
bytes_per_frame = (ssd->bit_per_sample * ssd->channels) / 8;
|
bytes_per_frame = (ssd->bit_per_sample * ssd->channels) / 8;
|
||||||
ssd->size = frame_count * bytes_per_frame;
|
ssd->size = frame_count * bytes_per_frame;
|
||||||
ssd->data = EMALLOC(unsigned char, ssd->size);
|
ssd->data = EMALLOC(unsigned char, ssd->size);
|
||||||
|
|
||||||
|
if (EDebug(EDBUG_TYPE_SOUND))
|
||||||
|
Eprintf("SoundSampleGetData frames=%u chan=%u width=%u rate=%u\n",
|
||||||
|
frame_count, ssd->channels, ssd->bit_per_sample, ssd->rate);
|
||||||
|
|
||||||
frames_read =
|
frames_read =
|
||||||
afReadFrames(in_file, AF_DEFAULT_TRACK, ssd->data, frame_count);
|
afReadFrames(in_file, AF_DEFAULT_TRACK, ssd->data, frame_count);
|
||||||
|
|
||||||
|
@ -73,4 +76,49 @@ SoundSampleGetData(const char *file, SoundSampleData * ssd)
|
||||||
|
|
||||||
#endif /* USE_SOUND_LOADER_AUDIOFILE */
|
#endif /* USE_SOUND_LOADER_AUDIOFILE */
|
||||||
|
|
||||||
|
#if USE_SOUND_LOADER_SNDFILE
|
||||||
|
#include <sndfile.h>
|
||||||
|
|
||||||
|
int
|
||||||
|
SoundSampleGetData(const char *file, SoundSampleData * ssd)
|
||||||
|
{
|
||||||
|
SNDFILE *sf;
|
||||||
|
SF_INFO sf_info;
|
||||||
|
int bytes_per_frame, frame_count, frames_read;
|
||||||
|
|
||||||
|
sf = sf_open(file, SFM_READ, &sf_info);
|
||||||
|
if (!sf)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
ssd->channels = (unsigned int)sf_info.channels;
|
||||||
|
ssd->rate = (unsigned int)sf_info.samplerate;
|
||||||
|
ssd->bit_per_sample = 16;
|
||||||
|
|
||||||
|
frame_count = sf_info.frames;
|
||||||
|
bytes_per_frame = (ssd->bit_per_sample * ssd->channels) / 8;
|
||||||
|
ssd->size = frame_count * bytes_per_frame;
|
||||||
|
ssd->data = EMALLOC(unsigned char, ssd->size);
|
||||||
|
|
||||||
|
if (EDebug(EDBUG_TYPE_SOUND))
|
||||||
|
Eprintf("SoundSampleGetData frames=%u chan=%u width=%u rate=%u\n",
|
||||||
|
frame_count, ssd->channels, ssd->bit_per_sample, ssd->rate);
|
||||||
|
|
||||||
|
frames_read = sf_readf_short(sf, ssd->data, frame_count);
|
||||||
|
|
||||||
|
sf_close(sf);
|
||||||
|
|
||||||
|
if (frames_read <= 0)
|
||||||
|
{
|
||||||
|
ssd->size = 0;
|
||||||
|
_EFREE(ssd->data);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
ssd->size = frames_read * bytes_per_frame;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* USE_SOUND_LOADER_SNDFILE */
|
||||||
|
|
||||||
#endif /* HAVE_SOUND */
|
#endif /* HAVE_SOUND */
|
||||||
|
|
Loading…
Reference in New Issue