EXTRA_DIST += src/config.h.in src/test_endswap.tpl src/test_endswap.def \
$(SYMBOL_FILES) src/create_symbols_file.py src/binheader_writef_check.py \
- src/GSM610/README src/GSM610/COPYRIGHT src/GSM610/ChangeLog \
- src/G72x/README src/G72x/README.original src/G72x/ChangeLog \
src/make-static-lib-hidden-privates.sh \
src/config.h.cmake
src_libsndfile_la_CFLAGS = $(EXTERNAL_XIPH_CFLAGS) $(MPEG_CFLAGS)
# MinGW requires -no-undefined if a DLL is to be built.
src_libsndfile_la_LDFLAGS = -no-undefined -version-info $(SHARED_VERSION_INFO) $(SHLIB_VERSION_ARG)
-src_libsndfile_la_SOURCES = src/sndfile.c src/aiff.c src/au.c src/avr.c src/caf.c src/dwd.c src/flac.c src/g72x.c src/htk.c src/ircam.c \
+src_libsndfile_la_SOURCES = src/sndfile.c src/aiff.c src/au.c src/avr.c src/dwd.c src/flac.c src/htk.c src/ircam.c \
src/macos.c src/mat4.c src/mat5.c src/nist.c src/paf.c src/pvf.c src/raw.c src/rx2.c src/sd2.c \
src/sds.c src/svx.c src/txw.c src/voc.c src/wve.c src/w64.c src/wavlike.c src/wav.c src/xi.c src/mpc2k.c src/rf64.c \
src/ogg.c src/ogg.h src/ogg_vorbis.c src/ogg_speex.c src/ogg_pcm.c src/ogg_opus.c src/ogg_vcomment.c src/ogg_vcomment.h \
src/common.h src/sfconfig.h src/sfendian.h src/wavlike.h src/sf_unistd.h src/chanmap.h src/mpeg.c
nodist_src_libsndfile_la_SOURCES = $(nodist_include_HEADERS)
-src_libsndfile_la_LIBADD = src/GSM610/libgsm.la src/G72x/libg72x.la src/ALAC/libalac.la \
+src_libsndfile_la_LIBADD = \
src/libcommon.la $(EXTERNAL_XIPH_LIBS) -lm $(MPEG_LIBS)
EXTRA_src_libsndfile_la_DEPENDENCIES = $(SYMBOL_FILES)
noinst_LTLIBRARIES = src/libcommon.la
src_libcommon_la_CFLAGS = $(EXTERNAL_XIPH_CFLAGS) $(MPEG_CFLAGS)
src_libcommon_la_SOURCES = src/common.c src/file_io.c src/command.c src/pcm.c src/ulaw.c src/alaw.c \
- src/float32.c src/double64.c src/ima_adpcm.c src/ms_adpcm.c src/gsm610.c src/dwvw.c src/vox_adpcm.c \
+ src/float32.c src/double64.c src/ima_adpcm.c src/ms_adpcm.c src/dwvw.c src/vox_adpcm.c \
src/interleave.c src/strings.c src/dither.c src/cart.c src/broadcast.c src/audio_detect.c \
- src/ima_oki_adpcm.c src/ima_oki_adpcm.h src/alac.c src/chunk.c src/chanmap.c \
+ src/ima_oki_adpcm.c src/ima_oki_adpcm.h src/chunk.c src/chanmap.c \
src/windows.c src/id3.c src/id3.h src/nms_adpcm.c src/mpeg_decode.c src/mpeg_l3_encode.c src/mpeg.h $(WIN_VERSION_FILE)
check_PROGRAMS = src/test_main
src/test_binheader_writef.c src/test_nms_adpcm.c
src_test_main_LDADD = src/libcommon.la
-##############
-# src/GSM610 #
-##############
-
-noinst_LTLIBRARIES += src/GSM610/libgsm.la
-src_GSM610_libgsm_la_SOURCES = src/GSM610/config.h src/GSM610/gsm.h src/GSM610/gsm610_priv.h \
- src/GSM610/add.c src/GSM610/code.c src/GSM610/decode.c src/GSM610/gsm_create.c \
- src/GSM610/gsm_decode.c src/GSM610/gsm_destroy.c src/GSM610/gsm_encode.c \
- src/GSM610/gsm_option.c src/GSM610/long_term.c src/GSM610/lpc.c src/GSM610/preprocess.c \
- src/GSM610/rpe.c src/GSM610/short_term.c src/GSM610/table.c
-
-############
-# src/G72x #
-############
-
-noinst_LTLIBRARIES += src/G72x/libg72x.la
-src_G72x_libg72x_la_SOURCES = src/G72x/g72x.h src/G72x/g72x_priv.h \
- src/G72x/g721.c src/G72x/g723_16.c src/G72x/g723_24.c src/G72x/g723_40.c src/G72x/g72x.c
-
-check_PROGRAMS += src/G72x/g72x_test
-src_G72x_g72x_test_SOURCES = src/G72x/g72x_test.c
-src_G72x_g72x_test_LDADD = src/G72x/libg72x.la
-
-############
-# src/ALAC #
-############
-
-noinst_LTLIBRARIES += src/ALAC/libalac.la
-src_ALAC_libalac_la_SOURCES = src/ALAC/ALACAudioTypes.h src/ALAC/ALACBitUtilities.h \
- src/ALAC/EndianPortable.h src/ALAC/aglib.h src/ALAC/dplib.h src/ALAC/matrixlib.h \
- src/ALAC/alac_codec.h src/ALAC/shift.h \
- src/ALAC/ALACBitUtilities.c src/ALAC/ag_dec.c \
- src/ALAC/ag_enc.c src/ALAC/dp_dec.c src/ALAC/dp_enc.c src/ALAC/matrix_dec.c \
- src/ALAC/matrix_enc.c src/ALAC/alac_decoder.c src/ALAC/alac_encoder.c
-
#===============================================================================
# Generate an OS specific Symbols files. This is done when the author
# builds the distribution tarball. There should be not need for the
[AS_HELP_STRING([--disable-alsa], [disable ALSA support (default=autodetect)])], [], [enable_alsa=auto])
AC_ARG_ENABLE([external-libs],
- [AS_HELP_STRING([--disable-external-libs], [disable use of FLAC, Ogg and Vorbis [[default=no]]])])
+ [AS_HELP_STRING([--disable-external-libs], [disable use of Ogg and Vorbis [[default=no]]])])
AC_ARG_ENABLE([mpeg],
[AS_HELP_STRING([--disable-mpeg], [disable use of LAME/MPG123 for MPEG (MP3) [[defaults=no]]])])
])
dnl ====================================================================================
-dnl Check for Ogg, Vorbis and FLAC.
+dnl Check for Ogg, Vorbis.
HAVE_EXTERNAL_XIPH_LIBS=0
EXTERNAL_XIPH_CFLAGS=""
AS_IF([test -n "$PKG_CONFIG"], [
AS_IF([test "x$enable_external_libs" = "xno"], [
- AC_MSG_WARN([[*** External libs (FLAC, Ogg, Vorbis) disabled. ***]])
+ AC_MSG_WARN([[*** External libs (Ogg, Vorbis) disabled. ***]])
], [
- PKG_CHECK_MOD_VERSION(FLAC, flac >= 1.3.1, ac_cv_flac=yes, ac_cv_flac=no)
-
- dnl Make sure the FLAC_CFLAGS value is sane.
- FLAC_CFLAGS=`echo $FLAC_CFLAGS | $SED "s|include/FLAC|include|"`
-
PKG_CHECK_MOD_VERSION(OGG, ogg >= 1.3.0, ac_cv_ogg=yes, ac_cv_ogg=no)
AS_IF([test "x$enable_experimental" = "xyes"], [
enable_external_libs=yes
])
- AS_IF([test "x$ac_cv_flac$ac_cv_ogg$ac_cv_vorbis$ac_cv_vorbisenc$ac_cv_opus" = "xyesyesyesyesyes"], [
+ AS_IF([test "x$ac_cv_ogg$ac_cv_vorbis$ac_cv_vorbisenc$ac_cv_opus" = "xyesyesyesyes"], [
HAVE_EXTERNAL_XIPH_LIBS=1
enable_external_libs=yes
- EXTERNAL_XIPH_CFLAGS="$FLAC_CFLAGS $VORBIS_CFLAGS $VORBISENC_CFLAGS $SPEEX_CFLAGS $OPUS_CFLAGS $OGG_CFLAGS "
- EXTERNAL_XIPH_LIBS="$FLAC_LIBS $VORBIS_LIBS $VORBISENC_LIBS $SPEEX_LIBS $OPUS_LIBS $OGG_LIBS "
- EXTERNAL_XIPH_REQUIRE="flac ogg vorbis vorbisenc opus"
+ EXTERNAL_XIPH_CFLAGS="$VORBIS_CFLAGS $VORBISENC_CFLAGS $SPEEX_CFLAGS $OPUS_CFLAGS $OGG_CFLAGS "
+ EXTERNAL_XIPH_LIBS="$VORBIS_LIBS $VORBISENC_LIBS $SPEEX_LIBS $OPUS_LIBS $OGG_LIBS "
+ EXTERNAL_XIPH_REQUIRE="ogg vorbis vorbisenc opus"
if test x$ac_cv_speex = "xyes" ; then
EXTERNAL_XIPH_REQUIRE="$EXTERNAL_XIPH_REQUIRE speex"
fi
], [
AS_ECHO([""])
- AC_MSG_WARN([[*** One or more of the external libraries (ie libflac, libogg,]])
+ AC_MSG_WARN([[*** One or more of the external libraries (ie libogg,]])
AC_MSG_WARN([[*** libvorbis and libopus) is either missing (possibly only the development]])
AC_MSG_WARN([[*** headers) or is of an unsupported version.]])
AC_MSG_WARN([[***]])
])
])
-AC_DEFINE_UNQUOTED([HAVE_EXTERNAL_XIPH_LIBS], [$HAVE_EXTERNAL_XIPH_LIBS], [Will be set to 1 if flac, ogg, vorbis, and opus are available.])
+AC_DEFINE_UNQUOTED([HAVE_EXTERNAL_XIPH_LIBS], [$HAVE_EXTERNAL_XIPH_LIBS], [Will be set to 1 if ogg, vorbis, and opus are available.])
dnl ====================================================================================
dnl Check for MPEG libraris liblame
AS_IF([test -z "$PKG_CONFIG"], [
AS_ECHO([" *****************************************************************"])
AS_ECHO([" *** The pkg-config program is missing. ***"])
- AS_ECHO([" *** External FLAC/Ogg/Vorbis libs cannot be found without it. ***"])
+ AS_ECHO([" *** External Ogg/Vorbis libs cannot be found without it. ***"])
AS_ECHO([" *** http://pkg-config.freedesktop.org/wiki/ ***"])
AS_ECHO([" *****************************************************************"])
])
Experimental code : ................... ${enable_experimental:-no}
Using ALSA in example programs : ...... ${enable_alsa:-no}
- External FLAC/Ogg/Vorbis/Opus : ....... ${enable_external_libs:-no}
+ External Ogg/Vorbis/Opus : ............ ${enable_external_libs:-no}
External MPEG Lame/MPG123 : ........... ${enable_mpeg:-no}
Building Octave interface : ........... ${OCTAVE_BUILD}
encode_file (argv [1], "imaadpcm.wav", SF_FORMAT_WAV | SF_FORMAT_MS_ADPCM) ;
encode_file (argv [1], "msadpcm.wav", SF_FORMAT_WAV | SF_FORMAT_IMA_ADPCM) ;
encode_file (argv [1], "gsm610.wav" , SF_FORMAT_WAV | SF_FORMAT_GSM610) ;
+#if 0 /* For temporal testing of encoding ogg/vorbis functionality */
+ encode_file (argv [1], "pcm16.ogg" , SF_FORMAT_OGG | SF_FORMAT_VORBIS) ;
+#endif
/* Soundforge W64. */
encode_file (argv [1], "pcmu8.w64" , SF_FORMAT_W64 | SF_FORMAT_PCM_U8) ;
--- /dev/null
+<manifest>
+ <request>
+ <domain name="_"/>
+ </request>
+</manifest>
--- /dev/null
+%define __spec_check_pre exit 0
+Name: libsndfile
+Version: 1.2.0
+Release: 0
+License: LGPL-2.1+
+Summary: C library for reading and writing sound files
+Group: Multimedia/Audio
+BuildRequires: gcc-c++
+BuildRequires: libtool
+BuildRequires: python
+BuildRequires: pkg-config
+BuildRequires: autogen
+BuildRequires: pkgconfig(ogg)
+BuildRequires: pkgconfig(vorbis)
+BuildRequires: pkgconfig(opus)
+Requires: opus
+Url: https://github.com/libsndfile/libsndfile
+Source: libsndfile-%{version}.tar.gz
+Source1001: libsndfile.manifest
+
+%description
+Libsndfile is a C library for reading and writing sound files, such as
+AIFF, AU, and WAV files, through one standard interface. It can
+currently read and write 8, 16, 24, and 32-bit PCM files as well as
+32-bit floating point WAV files and a number of compressed formats.
+
+
+%package devel
+Summary: Development package for the libsndfile library
+Group: Development/Libraries
+Requires: %{name} = %{version}
+Requires: glibc-devel
+Requires: libstdc++-devel
+
+%description devel
+This package contains the files needed to compile programs that use the
+libsndfile library.
+
+%prep
+%setup -q
+cp %{SOURCE1001} .
+
+%build
+%define warn_flags -W -Wall -Wstrict-prototypes -Wpointer-arith -Wno-unused-parameter
+autoreconf --force --install
+CFLAGS="%{optflags} %{warn_flags} -D__TIZEN__"
+export CFLAGS
+LDFLAGS="-ldl"
+export LDFLAGS
+%configure --disable-static \
+ --disable-dependency-tracking \
+ --disable-sqlite --disable-alsa
+make %{?_smp_mflags}
+
+%check
+pushd src
+make check
+popd
+
+%install
+
+%make_install
+# remove programs; built in another spec file
+rm -rf %{buildroot}%{_bindir}
+rm -rf %{buildroot}%{_mandir}/man1
+# remove binaries from examples directory
+rm -rf %{buildroot}%{_datadir}/doc/libsndfile
+
+%post -p /sbin/ldconfig
+
+%postun -p /sbin/ldconfig
+
+%files
+%manifest %{name}.manifest
+%defattr(-, root, root)
+%license COPYING
+%{_libdir}/libsndfile.so.1*
+
+%files devel
+%manifest %{name}.manifest
+%defattr(-, root, root)
+%{_libdir}/libsndfile.so
+%{_includedir}/sndfile.h
+%{_includedir}/sndfile.hh
+%{_libdir}/pkgconfig/*.pc
+
+%changelog
break ;
/* Lite remove end */
- case SF_FORMAT_GSM610 :
- error = gsm610_init (psf) ;
- if (psf->sf.frames > comm_fmt.numSampleFrames)
- psf->sf.frames = comm_fmt.numSampleFrames ;
- break ;
-
default : return SFE_UNIMPLEMENTED ;
} ;
error = double64_init (psf) ;
break ;
- case SF_FORMAT_G721_32 :
- error = g72x_init (psf) ;
- psf->sf.seekable = SF_FALSE ;
- break ;
-
- case SF_FORMAT_G723_24 :
- error = g72x_init (psf) ;
- psf->sf.seekable = SF_FALSE ;
- break ;
-
- case SF_FORMAT_G723_40 :
- error = g72x_init (psf) ;
- psf->sf.seekable = SF_FALSE ;
- break ;
/* Lite remove end */
default : break ;
int wav_open (SF_PRIVATE *psf) ;
int xi_open (SF_PRIVATE *psf) ;
int flac_open (SF_PRIVATE *psf) ;
-int caf_open (SF_PRIVATE *psf) ;
int mpc2k_open (SF_PRIVATE *psf) ;
int rf64_open (SF_PRIVATE *psf) ;
int float32_init (SF_PRIVATE *psf) ;
int double64_init (SF_PRIVATE *psf) ;
int dwvw_init (SF_PRIVATE *psf, int bitwidth) ;
-int gsm610_init (SF_PRIVATE *psf) ;
int nms_adpcm_init (SF_PRIVATE *psf) ;
int vox_adpcm_init (SF_PRIVATE *psf) ;
int flac_init (SF_PRIVATE *psf) ;
-int g72x_init (SF_PRIVATE * psf) ;
-int alac_init (SF_PRIVATE *psf, const ALAC_DECODER_INFO * info) ;
int mpeg_init (SF_PRIVATE *psf, int bitrate_mode, int write_metadata) ;
int dither_init (SF_PRIVATE *psf, int mode) ;
int id3_skip (SF_PRIVATE * psf) ;
const char *id3_lookup_v1_genre (int number) ;
-void alac_get_desc_chunk_items (int subformat, uint32_t *fmt_flags, uint32_t *frames_per_packet) ;
FILE * psf_open_tmpfile (char * fname, size_t fnamelen) ;
/*
-** Copyright (C) 2004-2017 Erik de Castro Lopo <erikd@mega-nerd.com>
+** Copyright (C) 2004-2014 Erik de Castro Lopo <erikd@mega-nerd.com>
** Copyright (C) 2004 Tobias Gehrig <tgehrig@ira.uka.de>
**
** This program is free software ; you can redistribute it and/or modify
#include "sndfile.h"
#include "common.h"
-#if HAVE_EXTERNAL_XIPH_LIBS
+#if 0 /* HAVE_EXTERNAL_XIPH_LIBS : Disable for TIZEN */
#include <FLAC/stream_decoder.h>
#include <FLAC/stream_encoder.h>
#if HAVE_EXTERNAL_XIPH_LIBS
+
#include <ogg/ogg.h>
#include <vorbis/codec.h>
+
+#ifdef __TIZEN__
+#include <dlfcn.h> /* for dlopen */
+#else
#include <vorbis/vorbisenc.h>
+#endif
#include "ogg.h"
uint64_t pcm_end ;
/* File offset of the start of the last page. */
sf_count_t last_page ;
+#ifdef __TIZEN__
+ /* func ptr for encoder */
+ void *dl;
+#endif
} VORBIS_PRIVATE ;
static int
return 0 ;
} /* vorbis_read_header */
+
+#ifdef __TIZEN__
+#define VORBIS_ENC_SO_NAME "/usr/lib/libvorbisenc.so.2" /* FIXME : Any good way to avoid hardcoding? */
+#define VORBIS_ENC_INIT_VBR "vorbis_encode_init_vbr"
+
+static int
+_vorbis_encode_init(SF_PRIVATE *psf)
+{
+ int (*fn) (vorbis_info *, long, long, float);
+ void *dl = NULL;
+ VORBIS_PRIVATE *vdata = (VORBIS_PRIVATE *) psf->codec_data ;
+
+ /* load so */
+ dl = dlopen(VORBIS_ENC_SO_NAME, RTLD_GLOBAL | RTLD_NOW);
+ if (!dl) {
+ psf_log_printf (psf, "failed to dlopen [%s], error [%s]\n", VORBIS_ENC_SO_NAME, dlerror());
+ return -1;
+ }
+ dlerror();
+
+ vdata->dl = dl;
+
+ /* load symbol */
+ fn = dlsym(dl, VORBIS_ENC_INIT_VBR);
+ if (!fn) {
+ psf_log_printf (psf, "failed to dlsym [%s], error [%s]\n", VORBIS_ENC_INIT_VBR, dlerror());
+ return -1;
+ }
+ dlerror();
+
+ /* call function */
+ return fn(&vdata->vinfo, psf->sf.channels, psf->sf.samplerate, vdata->quality);
+}
+#endif /* __TIZEN__ */
+
static int
vorbis_write_header (SF_PRIVATE *psf, int UNUSED (calc_length))
{
vorbis_info_init (&vdata->vinfo) ;
/* The style of encoding should be selectable here, VBR quality mode. */
+#ifdef __TIZEN__
+ ret = _vorbis_encode_init(psf);
+#else
ret = vorbis_encode_init_vbr (&vdata->vinfo, psf->sf.channels, psf->sf.samplerate, vdata->quality) ;
+#endif
#if 0
ret = vorbis_encode_init (&vdata->vinfo, psf->sf.channels, psf->sf.samplerate, -1, 128000, -1) ; /* average bitrate mode */
vorbis_comment_clear (&vdata->vcomment) ;
vorbis_info_clear (&vdata->vinfo) ;
+#ifdef __TIZEN__
+ if (vdata->dl) {
+ dlclose(vdata->dl);
+ vdata->dl = NULL;
+ }
+#endif
+
return 0 ;
} /* vorbis_close */
error = alaw_init (psf) ;
break ;
- case SF_FORMAT_GSM610 :
- error = gsm610_init (psf) ;
- break ;
-
/* Lite remove start */
case SF_FORMAT_NMS_ADPCM_16 :
error = flac_open (psf) ;
break ;
- case SF_FORMAT_CAF :
- error = caf_open (psf) ;
- break ;
-
case SF_FORMAT_MPC2K :
error = mpc2k_open (psf) ;
break ;
break ;
/* Lite remove end */
- case SF_FORMAT_GSM610 :
- error = gsm610_init (psf) ;
- break ;
-
default : return SFE_UNIMPLEMENTED ;
} ;
error = wavlike_msadpcm_init (psf, blockalign, framesperblock) ;
break ;
- case SF_FORMAT_G721_32 :
- error = g72x_init (psf) ;
- break ;
-
case SF_FORMAT_NMS_ADPCM_16 :
case SF_FORMAT_NMS_ADPCM_24 :
case SF_FORMAT_NMS_ADPCM_32 :
/* Lite remove end */
- case SF_FORMAT_GSM610 :
- error = gsm610_init (psf) ;
- break ;
-
case SF_FORMAT_MPEG_LAYER_III :
error = mpeg_init (psf, SF_BITRATE_MODE_CONSTANT, SF_FALSE) ;
break ;