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,
|
||||
[ --enable-sound-esound compile with EsounD sound support @<:@default=yes@:>@],,
|
||||
enable_sound_esound=yes)
|
||||
AC_ARG_WITH(sndldr,
|
||||
[ --with-sndldr select sound loader (audiofile/sndfile/none) @<:@default=audiofile@:>@],,
|
||||
with_sndldr=audiofile)
|
||||
fi
|
||||
enable_sound=no
|
||||
|
||||
if test "x$enable_sound_pulse" = "xyes"; then
|
||||
PKG_CHECK_MODULES(PA, libpulse,, enable_sound_pulse=no)
|
||||
if test "x$with_sndldr" = "xsndfile"; then
|
||||
PKG_CHECK_MODULES(SNDFILE, sndfile,
|
||||
AC_DEFINE(USE_SOUND_LOADER_SNDFILE, 1, [Use sndfile sound loader]),
|
||||
with_sndldr=none)
|
||||
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
|
||||
AC_DEFINE(HAVE_SOUND, 1, [Sound support])
|
||||
AC_DEFINE(HAVE_SOUND_PA, 1, [PulseAudio sound support])
|
||||
AC_DEFINE(USE_SOUND_LOADER_AUDIOFILE, 1, [Use audiofile sound loader])
|
||||
PKG_CHECK_MODULES(AUDIOFILE, audiofile,,)
|
||||
enable_sound=pulseaudio
|
||||
enable_sound_esound=no
|
||||
PKG_CHECK_MODULES(PA, libpulse,
|
||||
AC_DEFINE(HAVE_SOUND, 1, [Sound support])
|
||||
AC_DEFINE(HAVE_SOUND_PA, 1, [PulseAudio sound support])
|
||||
enable_sound=pulseaudio
|
||||
enable_sound_esound=no,
|
||||
enable_sound_pulse=no)
|
||||
fi
|
||||
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
|
||||
AC_MSG_WARN([EsounD sound support was requested but not found.])
|
||||
])
|
||||
AC_CHECK_HEADERS(audiofile.h,, enable_sound_esound=no)
|
||||
fi
|
||||
if test "x$enable_sound_esound" = "xyes"; then
|
||||
AC_DEFINE(HAVE_SOUND, 1, [Sound support])
|
||||
AC_DEFINE(HAVE_SOUND_ESD, 1, [EsounD sound support])
|
||||
AC_DEFINE(USE_SOUND_LOADER_AUDIOFILE, 1, [Use audiofile sound loader])
|
||||
PKG_CHECK_MODULES(AUDIOFILE, audiofile,,)
|
||||
enable_sound=esound
|
||||
if test "x$enable_sound_esound" = "xyes"; then
|
||||
AC_DEFINE(HAVE_SOUND, 1, [Sound support])
|
||||
AC_DEFINE(HAVE_SOUND_ESD, 1, [EsounD sound support])
|
||||
enable_sound=esound
|
||||
fi
|
||||
fi
|
||||
AM_CONDITIONAL(USE_LIBESD, test "x$enable_sound_esound" = "xyes")
|
||||
|
||||
|
@ -479,6 +488,7 @@ echo
|
|||
echo "Support for"
|
||||
echo " Localisation ................. $USE_NLS"
|
||||
echo " Sound ........................ $enable_sound"
|
||||
echo " Sound loader ................. $with_sndldr"
|
||||
echo " Old GNOME hints .............. $enable_hints_gnome"
|
||||
echo " Session management ........... $enable_sm"
|
||||
echo " Zoom ......................... $enable_zoom"
|
||||
|
|
|
@ -156,6 +156,9 @@ LDADD = \
|
|||
$(CLOCK_LIBS) \
|
||||
-lX11 -lm
|
||||
|
||||
SNDLDR_CFLAGS = $(AUDIOFILE_CFLAGS) $(SNDFILE_CFLAGS)
|
||||
SNDLDR_LIBS = $(AUDIOFILE_LIBS) $(SNDFILE_LIBS)
|
||||
|
||||
if BUILD_MODULES
|
||||
|
||||
e16_LDFLAGS = -export-dynamic
|
||||
|
@ -168,16 +171,16 @@ libe16_LTLIBRARIES = $(LIBSND_ESD) $(LIBSND_PA) $(LIBFNT_IFT) $(LIBFNT_XFT) $(LI
|
|||
if USE_LIBESD
|
||||
LIBSND_ESD = libsound_esd.la
|
||||
libsound_esd_la_SOURCES = sound_esd.c sound_load.c
|
||||
libsound_esd_la_CFLAGS = $(ESD_CFLAGS) $(AUDIOFILE_CFLAGS) $(CWARNFLAGS)
|
||||
libsound_esd_la_LIBADD = $(ESD_LIBS) $(AUDIOFILE_LIBS)
|
||||
libsound_esd_la_CFLAGS = $(ESD_CFLAGS) $(SNDLDR_CFLAGS) $(CWARNFLAGS)
|
||||
libsound_esd_la_LIBADD = $(ESD_LIBS) $(SNDLDR_LIBS)
|
||||
libsound_esd_la_LDFLAGS = -module -avoid-version
|
||||
endif
|
||||
|
||||
if USE_LIBPA
|
||||
LIBSND_PA = libsound_pa.la
|
||||
libsound_pa_la_SOURCES = sound_pa.c sound_load.c
|
||||
libsound_pa_la_CFLAGS = $(PA_CFLAGS) $(AUDIOFILE_CFLAGS) $(CWARNFLAGS)
|
||||
libsound_pa_la_LIBADD = $(PA_LIBS) $(AUDIOFILE_LIBS)
|
||||
libsound_pa_la_CFLAGS = $(PA_CFLAGS) $(SNDLDR_CFLAGS) $(CWARNFLAGS)
|
||||
libsound_pa_la_LIBADD = $(PA_LIBS) $(SNDLDR_LIBS)
|
||||
libsound_pa_la_LDFLAGS = -module -avoid-version
|
||||
endif
|
||||
|
||||
|
@ -206,8 +209,8 @@ endif
|
|||
else
|
||||
|
||||
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_CFLAGS = $(ESD_CFLAGS) $(PA_CFLAGS) $(AUDIOFILE_CFLAGS) $(PANGO_CFLAGS) $(XFT_CFLAGS)
|
||||
MODULE_LIBS = $(ESD_LIBS) $(PA_LIBS) $(SNDLDR_LIBS) $(PANGO_LIBS) $(XFT_LIBS)
|
||||
MODULE_CFLAGS = $(ESD_CFLAGS) $(PA_CFLAGS) $(SNDLDR_CFLAGS) $(PANGO_CFLAGS) $(XFT_CFLAGS)
|
||||
|
||||
endif
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* 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
|
||||
* 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.
|
||||
*/
|
||||
#include "E.h"
|
||||
|
||||
#if HAVE_SOUND
|
||||
#if USE_SOUND_LOADER_AUDIOFILE
|
||||
#include "sound.h"
|
||||
|
||||
#if USE_SOUND_LOADER_AUDIOFILE
|
||||
#include <audiofile.h>
|
||||
|
||||
int
|
||||
|
@ -48,14 +50,15 @@ SoundSampleGetData(const char *file, SoundSampleData * ssd)
|
|||
#else
|
||||
afSetVirtualByteOrder(in_file, AF_DEFAULT_TRACK, AF_BYTEORDER_LITTLEENDIAN);
|
||||
#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;
|
||||
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 =
|
||||
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 */
|
||||
|
||||
#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 */
|
||||
|
|
Loading…
Reference in New Issue