summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2009-10-01 15:33:23 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2009-10-01 15:33:23 +0000
commita0d4c9b392d021218f5a0e1b79d0011f7191134c (patch)
tree0ef3e66e19869e5f25507db488e93903c03726f2
parent49a9fa20a56c6f5607e7bcf209985a67972c3f31 (diff)
merge 5674:5682 and 5689-5694 from mixbus branch
git-svn-id: svn://localhost/ardour2/branches/2.0-ongoing@5695 d708f5d6-7413-0410-9779-e7cbd77b26cf
-rw-r--r--SConstruct53
-rw-r--r--gtk2_ardour/SConscript3
-rw-r--r--gtk2_ardour/ardour_ui.cc5
-rw-r--r--gtk2_ardour/editor_canvas.cc6
-rw-r--r--gtk2_ardour/export_dialog.cc130
-rw-r--r--gtk2_ardour/export_dialog.h1
-rw-r--r--gtk2_ardour/main.cc40
-rw-r--r--gtk2_ardour/ui_config.cc4
-rw-r--r--libs/ardour/SConscript2
-rw-r--r--libs/ardour/ardour/audioengine.h34
-rw-r--r--libs/ardour/ardour/sndfile_helpers.h2
-rw-r--r--libs/ardour/audioengine.cc360
-rw-r--r--libs/ardour/audiofilesource.cc3
-rw-r--r--libs/ardour/session_export.cc5
-rw-r--r--libs/ardour/sndfile_helpers.cc6
-rw-r--r--libs/libsndfile/AUTHORS14
-rw-r--r--libs/libsndfile/ChangeLog6107
-rwxr-xr-xlibs/libsndfile/Mingw-make-dist.sh113
-rw-r--r--libs/libsndfile/NEWS126
-rw-r--r--libs/libsndfile/README71
-rw-r--r--libs/libsndfile/SConscript55
-rw-r--r--libs/libsndfile/acinclude.m4579
-rw-r--r--libs/libsndfile/aclocal.m472
-rwxr-xr-xlibs/libsndfile/compile107
-rwxr-xr-xlibs/libsndfile/config.guess1497
-rwxr-xr-xlibs/libsndfile/config.sub1608
-rwxr-xr-xlibs/libsndfile/configure13933
-rw-r--r--libs/libsndfile/configure.ac541
-rwxr-xr-xlibs/libsndfile/depcomp479
-rwxr-xr-xlibs/libsndfile/install-sh294
-rw-r--r--libs/libsndfile/libsndfile.spec.in69
-rwxr-xr-xlibs/libsndfile/missing336
-rwxr-xr-xlibs/libsndfile/mkinstalldirs111
-rw-r--r--libs/libsndfile/sndfile.pc.in11
-rw-r--r--libs/libsndfile/src/G72x/ChangeLog50
-rw-r--r--libs/libsndfile/src/G72x/README0
-rw-r--r--libs/libsndfile/src/G72x/README.original94
-rw-r--r--libs/libsndfile/src/G72x/g721.c162
-rw-r--r--libs/libsndfile/src/G72x/g723_16.c169
-rw-r--r--libs/libsndfile/src/G72x/g723_24.c146
-rw-r--r--libs/libsndfile/src/G72x/g723_40.c160
-rw-r--r--libs/libsndfile/src/G72x/g72x.c652
-rw-r--r--libs/libsndfile/src/G72x/g72x.h99
-rw-r--r--libs/libsndfile/src/G72x/g72x_priv.h118
-rw-r--r--libs/libsndfile/src/G72x/g72x_test.c222
-rw-r--r--libs/libsndfile/src/GSM610/COPYRIGHT16
-rw-r--r--libs/libsndfile/src/GSM610/ChangeLog56
-rw-r--r--libs/libsndfile/src/GSM610/README36
-rw-r--r--libs/libsndfile/src/GSM610/add.c248
-rw-r--r--libs/libsndfile/src/GSM610/code.c97
-rw-r--r--libs/libsndfile/src/GSM610/config.h33
-rw-r--r--libs/libsndfile/src/GSM610/decode.c67
-rw-r--r--libs/libsndfile/src/GSM610/gsm.h58
-rw-r--r--libs/libsndfile/src/GSM610/gsm610_priv.h308
-rw-r--r--libs/libsndfile/src/GSM610/gsm_create.c44
-rw-r--r--libs/libsndfile/src/GSM610/gsm_decode.c366
-rw-r--r--libs/libsndfile/src/GSM610/gsm_destroy.c31
-rw-r--r--libs/libsndfile/src/GSM610/gsm_encode.c456
-rw-r--r--libs/libsndfile/src/GSM610/gsm_option.c74
-rw-r--r--libs/libsndfile/src/GSM610/long_term.c951
-rw-r--r--libs/libsndfile/src/GSM610/lpc.c341
-rw-r--r--libs/libsndfile/src/GSM610/preprocess.c115
-rw-r--r--libs/libsndfile/src/GSM610/rpe.c490
-rw-r--r--libs/libsndfile/src/GSM610/short_term.c427
-rw-r--r--libs/libsndfile/src/GSM610/table.c69
-rw-r--r--libs/libsndfile/src/Symbols.darwin36
-rw-r--r--libs/libsndfile/src/Symbols.linux42
-rw-r--r--libs/libsndfile/src/aiff.c1482
-rw-r--r--libs/libsndfile/src/alaw.c544
-rw-r--r--libs/libsndfile/src/au.c453
-rw-r--r--libs/libsndfile/src/avr.c254
-rw-r--r--libs/libsndfile/src/broadcast.c89
-rw-r--r--libs/libsndfile/src/caf.c538
-rw-r--r--libs/libsndfile/src/command.c367
-rw-r--r--libs/libsndfile/src/common.c1290
-rw-r--r--libs/libsndfile/src/common.h766
-rw-r--r--libs/libsndfile/src/config.h.in247
-rw-r--r--libs/libsndfile/src/cygsndfile.def39
-rw-r--r--libs/libsndfile/src/dither.c535
-rw-r--r--libs/libsndfile/src/double64.c1009
-rw-r--r--libs/libsndfile/src/dwd.c210
-rw-r--r--libs/libsndfile/src/dwvw.c671
-rw-r--r--libs/libsndfile/src/file_io.c1537
-rw-r--r--libs/libsndfile/src/flac.c1356
-rw-r--r--libs/libsndfile/src/float32.c961
-rw-r--r--libs/libsndfile/src/float_cast.h262
-rw-r--r--libs/libsndfile/src/g72x.c615
-rw-r--r--libs/libsndfile/src/gsm610.c628
-rw-r--r--libs/libsndfile/src/htk.c225
-rw-r--r--libs/libsndfile/src/ima_adpcm.c976
-rw-r--r--libs/libsndfile/src/interleave.c306
-rw-r--r--libs/libsndfile/src/ircam.c331
-rw-r--r--libs/libsndfile/src/libsndfile.def39
-rw-r--r--libs/libsndfile/src/macbinary3.c58
-rw-r--r--libs/libsndfile/src/macos.c63
-rw-r--r--libs/libsndfile/src/mat4.c394
-rw-r--r--libs/libsndfile/src/mat5.c507
-rw-r--r--libs/libsndfile/src/ms_adpcm.c834
-rw-r--r--libs/libsndfile/src/nist.c367
-rw-r--r--libs/libsndfile/src/ogg.c44
-rw-r--r--libs/libsndfile/src/paf.c843
-rw-r--r--libs/libsndfile/src/pcm.c2899
-rw-r--r--libs/libsndfile/src/pvf.c199
-rw-r--r--libs/libsndfile/src/raw.c111
-rw-r--r--libs/libsndfile/src/rx2.c326
-rw-r--r--libs/libsndfile/src/sd2.c613
-rw-r--r--libs/libsndfile/src/sds.c993
-rw-r--r--libs/libsndfile/src/sf_unistd.h67
-rw-r--r--libs/libsndfile/src/sfconfig.h108
-rw-r--r--libs/libsndfile/src/sfendian.h256
-rw-r--r--libs/libsndfile/src/sndfile.c2709
-rw-r--r--libs/libsndfile/src/sndfile.h.in554
-rw-r--r--libs/libsndfile/src/stamp-h11
-rw-r--r--libs/libsndfile/src/strings.c204
-rw-r--r--libs/libsndfile/src/svx.c410
-rw-r--r--libs/libsndfile/src/txw.c379
-rw-r--r--libs/libsndfile/src/ulaw.c1047
-rw-r--r--libs/libsndfile/src/voc.c878
-rw-r--r--libs/libsndfile/src/vox_adpcm.c537
-rw-r--r--libs/libsndfile/src/w64.c578
-rw-r--r--libs/libsndfile/src/wav.c1632
-rw-r--r--libs/libsndfile/src/wav_w64.c494
-rw-r--r--libs/libsndfile/src/wav_w64.h283
-rw-r--r--libs/libsndfile/src/wve.c125
-rw-r--r--libs/libsndfile/src/xi.c1204
-rw-r--r--libs/rubberband/SConscript2
-rw-r--r--libs/surfaces/control_protocol/SConscript2
-rw-r--r--libs/surfaces/generic_midi/SConscript2
-rw-r--r--libs/surfaces/mackie/SConscript2
-rw-r--r--libs/surfaces/tranzport/SConscript2
-rw-r--r--libs/surfaces/wiimote/SConscript2
-rwxr-xr-xtools/osx_packaging/osx_build21
-rw-r--r--vst/SConscript3
133 files changed, 388 insertions, 68105 deletions
diff --git a/SConstruct b/SConstruct
index 24fc84f096..151912b494 100644
--- a/SConstruct
+++ b/SConstruct
@@ -433,7 +433,8 @@ deps = \
'raptor' : '1.4.2',
'lrdf' : '0.4.0',
'jack' : '0.109.0',
- 'libgnomecanvas-2.0' : '2.0'
+ 'libgnomecanvas-2.0' : '2.0',
+ 'sndfile' : '1.0.18'
}
def DependenciesRequiredMessage():
@@ -565,6 +566,9 @@ libraries['lrdf'].ParseConfig('pkg-config --cflags --libs lrdf')
libraries['raptor'] = LibraryInfo()
libraries['raptor'].ParseConfig('pkg-config --cflags --libs raptor')
+libraries['sndfile'] = LibraryInfo()
+libraries['sndfile'].ParseConfig ('pkg-config --cflags --libs sndfile')
+
libraries['samplerate'] = LibraryInfo()
libraries['samplerate'].ParseConfig('pkg-config --cflags --libs samplerate')
@@ -660,6 +664,12 @@ if env['DIST_TARGET'] == 'auto':
print "detected DIST_TARGET = " + env['DIST_TARGET']
print "*******************************\n"
+if env['DIST_TARGET'] != 'tiger' and env['DIST_TARGET'] != 'leopard':
+ # make sure this is all disabled for non-OS X builds
+ env['GTKOSX'] = 0
+ env['COREAUDIO'] = 0
+ env['AUDIOUNITS'] = 0
+ env['AUSTATE'] = 0
if config[config_cpu] == 'powerpc' and env['DIST_TARGET'] != 'none':
#
@@ -922,29 +932,9 @@ if env['WIIMOTE']:
#
-# Check for FLAC
-
-libraries['flac'] = LibraryInfo ()
-prep_libcheck(env, libraries['flac'])
-libraries['flac'].Append(CPPPATH="/usr/local/include", LIBPATH="/usr/local/lib")
-
-#
-# june 1st 2007: look for a function that is in FLAC 1.1.2 and not in later versions
-# since the version of libsndfile we have internally does not support
-# the new API that libFLAC has adopted
-#
-
-conf = Configure (libraries['flac'])
-if conf.CheckLib ('FLAC', 'FLAC__seekable_stream_decoder_init', language='CXX'):
- conf.env.Append(CCFLAGS='-DHAVE_FLAC')
- use_flac = True
-else:
- use_flac = False
-
-libraries['flac'] = conf.Finish ()
-
-# or if that fails...
-#libraries['flac'] = LibraryInfo (LIBS='FLAC')
+# need a way to see if the installed version of libsndfile supports
+# FLAC ....
+#
# boost (we don't link against boost, just use some header files)
@@ -1081,14 +1071,6 @@ if env['SYSLIBS']:
libraries['libgnomecanvasmm'] = LibraryInfo()
libraries['libgnomecanvasmm'].ParseConfig ('pkg-config --cflags --libs libgnomecanvasmm-2.6')
-#
-# cannot use system one for the time being
-#
-
- libraries['sndfile-ardour'] = LibraryInfo(LIBS='libsndfile-ardour',
- LIBPATH='#libs/libsndfile',
- CPPPATH=['#libs/libsndfile/src'])
-
# libraries['libglademm'] = LibraryInfo()
# libraries['libglademm'].ParseConfig ('pkg-config --cflags --libs libglademm-2.4')
@@ -1108,7 +1090,6 @@ if env['SYSLIBS']:
]
subdirs = [
- 'libs/libsndfile',
'libs/pbd',
'libs/midi++2',
'libs/ardour',
@@ -1161,9 +1142,6 @@ else:
libraries['soundtouch'] = LibraryInfo(LIBS='soundtouch',
LIBPATH='#libs/soundtouch',
CPPPATH=['#libs', '#libs/soundtouch'])
- libraries['sndfile-ardour'] = LibraryInfo(LIBS='libsndfile-ardour',
- LIBPATH='#libs/libsndfile',
- CPPPATH=['#libs/libsndfile', '#libs/libsndfile/src'])
# libraries['libglademm'] = LibraryInfo(LIBS='libglademm',
# LIBPATH='#libs/libglademm',
# CPPPATH='#libs/libglademm')
@@ -1178,7 +1156,6 @@ else:
subdirs = [
'libs/sigc++2',
- 'libs/libsndfile',
'libs/pbd',
'libs/midi++2',
'libs/ardour',
@@ -1312,7 +1289,7 @@ env = conf.Finish()
if env['NLS'] == 1:
env.Append(CCFLAGS="-DENABLE_NLS")
-Export('env install_prefix final_prefix config_prefix final_config_prefix libraries i18n ardour_version subst_dict use_flac')
+Export('env install_prefix final_prefix config_prefix final_config_prefix libraries i18n ardour_version subst_dict')
#
# the configuration file may be system dependent
diff --git a/gtk2_ardour/SConscript b/gtk2_ardour/SConscript
index 2e7beabbd7..8aaffc042e 100644
--- a/gtk2_ardour/SConscript
+++ b/gtk2_ardour/SConscript
@@ -33,7 +33,6 @@ gtkardour.Merge ([
libraries['atkmm'],
libraries['fftw3'],
libraries['fftw3f'],
- libraries['flac'],
libraries['freetype2'],
libraries['gdkmm2'],
libraries['glib2'],
@@ -50,7 +49,7 @@ gtkardour.Merge ([
libraries['pbd'],
libraries['samplerate'],
libraries['sigc2'],
- libraries['sndfile-ardour'],
+ libraries['sndfile'],
libraries['sysmidi'],
libraries['vamphost'],
libraries['vamp'],
diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc
index 4e16c40ab1..0ea691b7d8 100644
--- a/gtk2_ardour/ardour_ui.cc
+++ b/gtk2_ardour/ardour_ui.cc
@@ -1161,6 +1161,7 @@ ARDOUR_UI::check_audioengine ()
MessageDialog msg (_("Ardour is not connected to JACK\n"
"You cannot open or close sessions in this condition"));
pop_back_splash ();
+ msg.set_position (WIN_POS_CENTER);
msg.run ();
return false;
}
@@ -1985,6 +1986,9 @@ ARDOUR_UI::save_template ()
void
ARDOUR_UI::fontconfig_dialog ()
{
+#if 0
+ /* this issue seems to have gone away with changes to font handling in GTK/Quartz
+ */
#ifdef GTKOSX
/* X11 users will always have fontconfig info around, but new GTK-OSX users
may not and it can take a while to build it. Warn them.
@@ -2008,6 +2012,7 @@ ARDOUR_UI::fontconfig_dialog ()
msg.run ();
}
#endif
+#endif
}
void
diff --git a/gtk2_ardour/editor_canvas.cc b/gtk2_ardour/editor_canvas.cc
index b83f39fbc8..13ff108135 100644
--- a/gtk2_ardour/editor_canvas.cc
+++ b/gtk2_ardour/editor_canvas.cc
@@ -17,6 +17,12 @@
*/
+#ifdef __APPLE__
+#define Rect AppleHasItsOwnRect
+#include <CoreServices/../Frameworks/CarbonCore.framework/Headers/MacTypes.h>
+#undef Rect
+#endif /* __APPLE__ */
+
#include <libgnomecanvasmm/init.h>
#include <libgnomecanvasmm/pixbuf.h>
#include <jack/types.h>
diff --git a/gtk2_ardour/export_dialog.cc b/gtk2_ardour/export_dialog.cc
index e7ad83b836..6e9fb683ee 100644
--- a/gtk2_ardour/export_dialog.cc
+++ b/gtk2_ardour/export_dialog.cc
@@ -976,12 +976,77 @@ ExportDialog::do_export_cd_markers (const string& path,const string& cuefile_typ
}
}
+string
+ExportDialog::get_suffixed_filepath ()
+{
+ string filepath = file_entry.get_text();
+
+ if (wants_dir()) {
+ return filepath;
+ }
+
+ string::size_type dotpos;
+
+ /* maybe add suffix */
+
+ int file_format = sndfile_header_format_from_string (header_format_combo.get_active_text ());
+
+ if ((file_format & SF_FORMAT_TYPEMASK) == SF_FORMAT_WAV) {
+ if (filepath.find (".wav") != filepath.length() - 4) {
+ if ((dotpos = filepath.rfind ('.')) != string::npos) {
+ filepath = filepath.substr (0, dotpos);
+ }
+ filepath += ".wav";
+ }
+ } else if ((file_format & SF_FORMAT_TYPEMASK) == SF_FORMAT_AIFF) {
+ if (filepath.find (".aiff") != filepath.length() - 5) {
+ if ((dotpos = filepath.rfind ('.')) != string::npos) {
+ filepath = filepath.substr (0, dotpos);
+ }
+ filepath += ".aiff";
+ }
+ } else if ((file_format & SF_FORMAT_TYPEMASK) == SF_FORMAT_CAF) {
+ if (filepath.find (".caf") != filepath.length() - 4) {
+ if ((dotpos = filepath.rfind ('.')) != string::npos) {
+ filepath = filepath.substr (0, dotpos);
+ }
+ filepath += ".caf";
+ }
+ } else if ((file_format & SF_FORMAT_TYPEMASK) == SF_FORMAT_W64) {
+ if (filepath.find (".w64") != filepath.length() - 4) {
+ if ((dotpos = filepath.rfind ('.')) != string::npos) {
+ filepath = filepath.substr (0, dotpos);
+ }
+ filepath += ".w64";
+ }
+ } else if ((file_format & SF_FORMAT_TYPEMASK) == SF_FORMAT_FLAC) {
+ if (filepath.find (".flac") != filepath.length() - 5) {
+ if ((dotpos = filepath.rfind ('.')) != string::npos) {
+ filepath = filepath.substr (0, dotpos);
+ }
+ filepath += ".flac";
+ }
+ } else if ((file_format & SF_FORMAT_TYPEMASK) == SF_FORMAT_OGG) {
+ if (filepath.find (".ogg") != filepath.length() - 4) {
+ if ((dotpos = filepath.rfind ('.')) != string::npos) {
+ filepath = filepath.substr (0, dotpos);
+ }
+ filepath += ".ogg";
+ }
+ } else if ((file_format & SF_FORMAT_TYPEMASK) == SF_FORMAT_RAW) {
+ if (filepath.find (".raw") != filepath.length() - 4) {
+ if ((dotpos = filepath.rfind ('.')) != string::npos) {
+ filepath = filepath.substr (0, dotpos);
+ }
+ filepath += ".raw";
+ }
+ }
+ return filepath;
+}
void
ExportDialog::do_export ()
{
- string filepath = file_entry.get_text();
-
if (!ARDOUR_UI::instance()->the_engine().connected()) {
MessageDialog msg (*this,
_("Not connected to audioengine"),
@@ -994,36 +1059,9 @@ ExportDialog::do_export ()
return;
}
- if (!wants_dir()) {
-
- /* maybe add suffix */
-
- int file_format = sndfile_header_format_from_string (header_format_combo.get_active_text ());
-
- if ((file_format & SF_FORMAT_TYPEMASK) == SF_FORMAT_WAV) {
- if (filepath.find (".wav") != filepath.length() - 4) {
- filepath += ".wav";
- }
- } else if ((file_format & SF_FORMAT_TYPEMASK) == SF_FORMAT_AIFF) {
- if (filepath.find (".aiff") != filepath.length() - 5) {
- filepath += ".aiff";
- }
- } else if ((file_format & SF_FORMAT_TYPEMASK) == SF_FORMAT_W64) {
- if (filepath.find (".w64") != filepath.length() - 4) {
- filepath += ".w64";
- }
- } else if ((file_format & SF_FORMAT_TYPEMASK) == SF_FORMAT_FLAC) {
- if (filepath.find (".flac") != filepath.length() - 5) {
- filepath += ".flac";
- }
- } else if ((file_format & SF_FORMAT_TYPEMASK) == SF_FORMAT_CAF) {
- if (filepath.find (".caf") != filepath.length() - 4) {
- filepath += ".caf";
- }
- }
+ string filepath;
- /* others ? */
- }
+ filepath = get_suffixed_filepath ();
if(!is_filepath_valid(filepath)){
return;
@@ -1132,11 +1170,21 @@ ExportDialog::start_export ()
void
ExportDialog::header_chosen ()
{
- if (sndfile_header_format_from_string (header_format_combo.get_active_text ()) == SF_FORMAT_WAV) {
+ int fmt = sndfile_header_format_from_string (header_format_combo.get_active_text ());
+
+ if ((fmt & SF_FORMAT_TYPEMASK) == SF_FORMAT_OGG) {
endian_format_combo.set_sensitive (false);
- } else {
- endian_format_combo.set_sensitive (true);
+ bitdepth_format_combo.set_sensitive (false);
+ } else {
+ if ((fmt & SF_FORMAT_TYPEMASK) == SF_FORMAT_WAV) {
+ endian_format_combo.set_sensitive (false);
+ } else {
+ endian_format_combo.set_sensitive (true);
+ }
+ bitdepth_format_combo.set_sensitive (true);
}
+
+ file_entry.set_text (get_suffixed_filepath());
}
void
@@ -1333,14 +1381,22 @@ ExportDialog::initSpec(string &filepath)
spec.format |= sndfile_header_format_from_string (header_format_combo.get_active_text ());
+ /* if they picked Ogg, give them Ogg/Vorbis */
+
+ if ((spec.format & SF_FORMAT_TYPEMASK) == SF_FORMAT_OGG) {
+ spec.format |= SF_FORMAT_VORBIS;
+ }
+
if (!Profile->get_sae()) {
- if (((spec.format & SF_FORMAT_TYPEMASK) != SF_FORMAT_WAV)) {
- /* RIFF/WAV specifies endianess */
+ if (((spec.format & SF_FORMAT_TYPEMASK) != SF_FORMAT_WAV) && ((spec.format & SF_FORMAT_TYPEMASK) != SF_FORMAT_OGG)) {
+ /* RIFF/WAV specifies endianess and O/V has no such concept */
spec.format |= sndfile_endian_format_from_string (endian_format_combo.get_active_text ());
}
}
- spec.format |= sndfile_bitdepth_format_from_string (bitdepth_format_combo.get_active_text ());
+ if ((spec.format & SF_FORMAT_TYPEMASK) != SF_FORMAT_OGG) {
+ spec.format |= sndfile_bitdepth_format_from_string (bitdepth_format_combo.get_active_text ());
+ }
string sr_str = sample_rate_combo.get_active_text();
if (sr_str == N_("22.05kHz")) {
diff --git a/gtk2_ardour/export_dialog.h b/gtk2_ardour/export_dialog.h
index f99f6d237e..9a15f441e0 100644
--- a/gtk2_ardour/export_dialog.h
+++ b/gtk2_ardour/export_dialog.h
@@ -168,6 +168,7 @@ class ExportDialog : public ArdourDialog
void export_toc_file (ARDOUR::Locations::LocationList& locations, const string& path);
void do_export ();
gint window_closed (GdkEventAny *ignored);
+ std::string get_suffixed_filepath ();
void track_selector_button_click ();
diff --git a/gtk2_ardour/main.cc b/gtk2_ardour/main.cc
index 5d79cf038d..e0df2eadcf 100644
--- a/gtk2_ardour/main.cc
+++ b/gtk2_ardour/main.cc
@@ -241,10 +241,48 @@ fixup_bundle_environment ()
#endif
+static gboolean
+tell_about_jack_death (void* /* ignored */)
+{
+ if (AudioEngine::instance()->processed_frames() == 0) {
+ /* died during startup */
+ MessageDialog msg (_("JACK exited"), false, Gtk::MESSAGE_INFO, Gtk::BUTTONS_OK);
+ msg.set_position (Gtk::WIN_POS_CENTER);
+ msg.set_secondary_text (_(
+ "JACK exited unexpectedly, and without notifying Ardour.\n\
+\n\
+This could be due to misconfiguration or to an error inside JACK.\n\
+\n\
+Click OK to exit Ardour."));
+
+ msg.run ();
+ _exit (0);
+
+ } else {
+
+ /* engine has already run, so this is a mid-session JACK death */
+
+ MessageDialog* msg = manage (new MessageDialog (_("JACK exited"), false, Gtk::MESSAGE_INFO, Gtk::BUTTONS_NONE));
+ msg->set_secondary_text (_(
+"JACK exited unexpectedly, and without notifying Ardour.\n\
+\n\
+This is probably due to an error inside JACK. You should restart JACK\n\
+and reconnect Ardour to it, or exit Ardour now. You cannot save your\n\
+session at this time, because we would lose your connection information.\n"));
+ msg->present ();
+ }
+}
+
static void
sigpipe_handler (int sig)
{
- cerr << _("SIGPIPE received - JACK has probably died") << endl;
+ static bool done_the_jack_thing = false;
+
+ if (!done_the_jack_thing) {
+ AudioEngine::instance()->died ();
+ g_idle_add (tell_about_jack_death, 0);
+ done_the_jack_thing = true;
+ }
}
#ifdef VST_SUPPORT
diff --git a/gtk2_ardour/ui_config.cc b/gtk2_ardour/ui_config.cc
index ce9fbce172..edfa541f08 100644
--- a/gtk2_ardour/ui_config.cc
+++ b/gtk2_ardour/ui_config.cc
@@ -106,7 +106,7 @@ UIConfiguration::load_state ()
found = true;
cerr << string_compose (_("loading user ui configuration file %1"), rcfile) << endl;
-
+
if (!tree.read (rcfile)) {
error << string_compose(_("Ardour: cannot read ui configuration file \"%1\""), rcfile) << endmsg;
return -1;
@@ -118,7 +118,7 @@ UIConfiguration::load_state ()
}
}
- if (!found)
+ if (found != 1)
error << "Ardour: could not find any ui configuration file, canvas will look broken." << endmsg;
pack_canvasvars();
diff --git a/libs/ardour/SConscript b/libs/ardour/SConscript
index 100986b5db..6dfc62ecbc 100644
--- a/libs/ardour/SConscript
+++ b/libs/ardour/SConscript
@@ -281,7 +281,7 @@ ardour.Merge ([
libraries['raptor'],
libraries['samplerate'],
libraries['sigc2'],
- libraries['sndfile-ardour'],
+ libraries['sndfile'],
libraries['vamp'],
libraries['vamphost'],
libraries['xml']
diff --git a/libs/ardour/ardour/audioengine.h b/libs/ardour/ardour/audioengine.h
index 6ba141248c..2d2acfed27 100644
--- a/libs/ardour/ardour/audioengine.h
+++ b/libs/ardour/ardour/audioengine.h
@@ -76,26 +76,31 @@ class AudioEngine : public sigc::trackable
bool get_sync_offset (nframes_t& offset) const;
nframes_t frames_since_cycle_start () {
- if (!_running || !_jack) return 0;
- return jack_frames_since_cycle_start (_jack);
+ jack_client_t* _priv_jack = _jack;
+ if (!_running || !_priv_jack) return 0;
+ return jack_frames_since_cycle_start (_priv_jack);
}
nframes_t frame_time () {
- if (!_running || !_jack) return 0;
- return jack_frame_time (_jack);
+ jack_client_t* _priv_jack = _jack;
+ if (!_running || !_priv_jack) return 0;
+ return jack_frame_time (_priv_jack);
}
nframes_t transport_frame () const {
- if (!_running || !_jack) return 0;
- return jack_get_current_transport_frame (_jack);
+ const jack_client_t* _priv_jack = _jack;
+ if (!_running || !_priv_jack) return 0;
+ return jack_get_current_transport_frame (_priv_jack);
}
int request_buffer_size (nframes_t);
nframes_t set_monitor_check_interval (nframes_t);
+ nframes_t processed_frames() const { return _processed_frames; }
float get_cpu_load() {
- if (!_running || !_jack) return 0;
- return jack_cpu_load (_jack);
+ jack_client_t* _priv_jack = _jack;
+ if (!_running || !_priv_jack) return 0;
+ return jack_cpu_load (_priv_jack);
}
void set_session (Session *);
@@ -172,7 +177,7 @@ class AudioEngine : public sigc::trackable
bool freewheeling() const { return _freewheeling; }
/* this signal is sent for every process() cycle while freewheeling.
- the regular process() call to session->process() is not made.
+_ the regular process() call to session->process() is not made.
*/
sigc::signal<int,nframes_t> Freewheel;
@@ -201,9 +206,14 @@ class AudioEngine : public sigc::trackable
std::string make_port_name_relative (std::string);
std::string make_port_name_non_relative (std::string);
+ static AudioEngine* instance() { return _instance; }
+ void died ();
+
private:
+ static AudioEngine* _instance;
+
ARDOUR::Session* session;
- jack_client_t* _jack;
+ jack_client_t* volatile _jack; /* could be reset to null by SIGPIPE or another thread */
std::string jack_client_name;
Glib::Mutex _process_lock;
Glib::Cond session_removed;
@@ -252,10 +262,10 @@ class AudioEngine : public sigc::trackable
int jack_bufsize_callback (nframes_t);
int jack_sample_rate_callback (nframes_t);
- static void halted (void *);
-
int connect_to_jack (std::string client_name);
+ static void halted (void *);
+
void meter_thread ();
void start_metering_thread ();
void stop_metering_thread ();
diff --git a/libs/ardour/ardour/sndfile_helpers.h b/libs/ardour/ardour/sndfile_helpers.h
index cf6b15f3a4..26a93ad124 100644
--- a/libs/ardour/ardour/sndfile_helpers.h
+++ b/libs/ardour/ardour/sndfile_helpers.h
@@ -28,7 +28,7 @@ using std::string;
// Use this define when initializing arrarys for use in sndfile_*_format()
#define SNDFILE_STR_LENGTH 32
-#define SNDFILE_HEADER_FORMATS 5
+#define SNDFILE_HEADER_FORMATS 7
extern const char * const sndfile_header_formats_strings[SNDFILE_HEADER_FORMATS+1];
extern const char * const sndfile_file_endings_strings[SNDFILE_HEADER_FORMATS+1];
diff --git a/libs/ardour/audioengine.cc b/libs/ardour/audioengine.cc
index 4e9960c7bd..bc528b2146 100644
--- a/libs/ardour/audioengine.cc
+++ b/libs/ardour/audioengine.cc
@@ -43,6 +43,10 @@ using namespace ARDOUR;
using namespace PBD;
gint AudioEngine::m_meter_exit;
+AudioEngine* AudioEngine::_instance = 0;
+
+#define GET_PRIVATE_JACK_POINTER(j) jack_client_t* _priv_jack = (jack_client_t*) (j); if (!_priv_jack) { return; }
+#define GET_PRIVATE_JACK_POINTER_RET(j,r) jack_client_t* _priv_jack = (jack_client_t*) (j); if (!_priv_jack) { return r; }
static void
ardour_jack_error (const char* msg)
@@ -54,6 +58,8 @@ ardour_jack_error (const char* msg)
AudioEngine::AudioEngine (string client_name)
: ports (new Ports)
{
+ _instance = this; /* singleton */
+
session = 0;
session_remove_pending = false;
_running = false;
@@ -104,14 +110,11 @@ _thread_init_callback (void *arg)
int
AudioEngine::start ()
{
- if (!_jack) {
- error << _("AudioEngine::start() called while disconnected from JACK") << endmsg;
- return -1;
- }
+ GET_PRIVATE_JACK_POINTER_RET (_jack, -1);
if (!_running) {
- nframes_t blocksize = jack_get_buffer_size (_jack);
+ nframes_t blocksize = jack_get_buffer_size (_priv_jack);
Port::set_buffer_size (blocksize);
if (session) {
@@ -119,7 +122,7 @@ AudioEngine::start ()
BootMessage (_("Connect session to engine"));
session->set_block_size (blocksize);
- session->set_frame_rate (jack_get_sample_rate (_jack));
+ session->set_frame_rate (jack_get_sample_rate (_priv_jack));
/* page in as much of the session process code as we
can before we really start running.
@@ -138,21 +141,21 @@ AudioEngine::start ()
_processed_frames = 0;
last_monitor_check = 0;
- jack_on_shutdown (_jack, halted, this);
- jack_set_graph_order_callback (_jack, _graph_order_callback, this);
- jack_set_thread_init_callback (_jack, _thread_init_callback, this);
- jack_set_process_callback (_jack, _process_callback, this);
- jack_set_sample_rate_callback (_jack, _sample_rate_callback, this);
- jack_set_buffer_size_callback (_jack, _bufsize_callback, this);
- jack_set_xrun_callback (_jack, _xrun_callback, this);
- jack_set_sync_callback (_jack, _jack_sync_callback, this);
- jack_set_freewheel_callback (_jack, _freewheel_callback, this);
+ jack_on_shutdown (_priv_jack, halted, this);
+ jack_set_graph_order_callback (_priv_jack, _graph_order_callback, this);
+ jack_set_thread_init_callback (_priv_jack, _thread_init_callback, this);
+ jack_set_process_callback (_priv_jack, _process_callback, this);
+ jack_set_sample_rate_callback (_priv_jack, _sample_rate_callback, this);
+ jack_set_buffer_size_callback (_priv_jack, _bufsize_callback, this);
+ jack_set_xrun_callback (_priv_jack, _xrun_callback, this);
+ jack_set_sync_callback (_priv_jack, _jack_sync_callback, this);
+ jack_set_freewheel_callback (_priv_jack, _freewheel_callback, this);
if (Config->get_jack_time_master()) {
- jack_set_timebase_callback (_jack, 0, _jack_timebase_callback, this);
+ jack_set_timebase_callback (_priv_jack, 0, _jack_timebase_callback, this);
}
- if (jack_activate (_jack) == 0) {
+ if (jack_activate (_priv_jack) == 0) {
_running = true;
_has_run = true;
Running(); /* EMIT SIGNAL */
@@ -169,11 +172,13 @@ AudioEngine::start ()
int
AudioEngine::stop (bool forever)
{
- if (_jack) {
+ GET_PRIVATE_JACK_POINTER_RET (_jack, -1);
+
+ if (_priv_jack) {
if (forever) {
disconnect_from_jack ();
} else {
- jack_deactivate (_jack);
+ jack_deactivate (_priv_jack);
Stopped(); /* EMIT SIGNAL */
}
}
@@ -188,10 +193,12 @@ AudioEngine::get_sync_offset (nframes_t& offset) const
#ifdef HAVE_JACK_VIDEO_SUPPORT
+ GET_PRIVATE_JACK_POINTER_RET (_jack, false);
+
jack_position_t pos;
- if (_jack) {
- (void) jack_transport_query (_jack, &pos);
+ if (_priv_jack) {
+ (void) jack_transport_query (_priv_jack, &pos);
if (pos.valid & JackVideoFrameOffset) {
offset = pos.video_offset;
@@ -272,6 +279,7 @@ int
AudioEngine::process_callback (nframes_t nframes)
{
// CycleTimer ct ("AudioEngine::process");
+ GET_PRIVATE_JACK_POINTER_RET (_jack, -1);
Glib::Mutex::Lock tm (_process_lock, Glib::TRY_LOCK);
nframes_t next_processed_frames;
@@ -306,7 +314,7 @@ AudioEngine::process_callback (nframes_t nframes)
if (_freewheeling) {
if (Freewheel (nframes)) {
- jack_set_freewheel (_jack, false);
+ jack_set_freewheel (_priv_jack, false);
}
return 0;
}
@@ -498,12 +506,13 @@ AudioEngine::remove_session ()
void
AudioEngine::port_registration_failure (const std::string& portname)
{
+ GET_PRIVATE_JACK_POINTER (_jack);
string full_portname = jack_client_name;
full_portname += ':';
full_portname += portname;
- jack_port_t* p = jack_port_by_name (_jack, full_portname.c_str());
+ jack_port_t* p = jack_port_by_name (_priv_jack, full_portname.c_str());
string reason;
if (p) {
@@ -518,6 +527,7 @@ AudioEngine::port_registration_failure (const std::string& portname)
Port *
AudioEngine::register_input_port (DataType type, const string& portname)
{
+ GET_PRIVATE_JACK_POINTER_RET (_jack, 0);
if (!_running) {
if (!_has_run) {
fatal << _("register input port called before engine was started") << endmsg;
@@ -527,7 +537,7 @@ AudioEngine::register_input_port (DataType type, const string& portname)
}
}
- jack_port_t *p = jack_port_register (_jack, portname.c_str(), type.to_jack_type(), JackPortIsInput, 0);
+ jack_port_t *p = jack_port_register (_priv_jack, portname.c_str(), type.to_jack_type(), JackPortIsInput, 0);
if (p) {
@@ -552,6 +562,8 @@ AudioEngine::register_input_port (DataType type, const string& portname)
Port *
AudioEngine::register_output_port (DataType type, const string& portname)
{
+ GET_PRIVATE_JACK_POINTER_RET (_jack, 0);
+
if (!_running) {
if (!_has_run) {
fatal << _("register output port called before engine was started") << endmsg;
@@ -563,7 +575,7 @@ AudioEngine::register_output_port (DataType type, const string& portname)
jack_port_t *p;
- if ((p = jack_port_register (_jack, portname.c_str(),
+ if ((p = jack_port_register (_priv_jack, portname.c_str(),
type.to_jack_type(), JackPortIsOutput, 0)) != 0) {
Port *newport = 0;
@@ -591,6 +603,8 @@ AudioEngine::register_output_port (DataType type, const string& portname)
int
AudioEngine::unregister_port (Port *port)
{
+ GET_PRIVATE_JACK_POINTER_RET (_jack,-1);
+
if (!_running) {
/* probably happening when the engine has been halted by JACK,
in which case, there is nothing we can do here.
@@ -600,7 +614,7 @@ AudioEngine::unregister_port (Port *port)
if (port) {
- int ret = jack_port_unregister (_jack, port->_port);
+ int ret = jack_port_unregister (_priv_jack, port->_port);
if (ret == 0) {
@@ -632,19 +646,12 @@ AudioEngine::unregister_port (Port *port)
int
AudioEngine::connect (const string& source, const string& destination)
{
- if (!_running) {
- if (!_has_run) {
- fatal << _("connect called before engine was started") << endmsg;
- /*NOTREACHED*/
- } else {
- return -1;
- }
- }
+ GET_PRIVATE_JACK_POINTER_RET (_jack, -1);
string s = make_port_name_non_relative (source);
string d = make_port_name_non_relative (destination);
- int ret = jack_connect (_jack, s.c_str(), d.c_str());
+ int ret = jack_connect (_priv_jack, s.c_str(), d.c_str());
if (ret == 0) {
pair<string,string> c (s, d);
@@ -665,6 +672,8 @@ AudioEngine::connect (const string& source, const string& destination)
int
AudioEngine::disconnect (const string& source, const string& destination)
{
+ GET_PRIVATE_JACK_POINTER_RET (_jack,-1);
+
if (!_running) {
if (!_has_run) {
fatal << _("disconnect called before engine was started") << endmsg;
@@ -677,7 +686,7 @@ AudioEngine::disconnect (const string& source, const string& destination)
string s = make_port_name_non_relative (source);
string d = make_port_name_non_relative (destination);
- int ret = jack_disconnect (_jack, s.c_str(), d.c_str());
+ int ret = jack_disconnect (_priv_jack, s.c_str(), d.c_str());
if (ret == 0) {
pair<string,string> c (s, d);
@@ -694,6 +703,8 @@ AudioEngine::disconnect (const string& source, const string& destination)
int
AudioEngine::disconnect (Port *port)
{
+ GET_PRIVATE_JACK_POINTER_RET (_jack,-1);
+
if (!_running) {
if (!_has_run) {
fatal << _("disconnect called before engine was started") << endmsg;
@@ -703,7 +714,7 @@ AudioEngine::disconnect (Port *port)
}
}
- int ret = jack_port_disconnect (_jack, port->_port);
+ int ret = jack_port_disconnect (_priv_jack, port->_port);
if (ret == 0) {
remove_connections_for (port);
@@ -716,34 +727,22 @@ AudioEngine::disconnect (Port *port)
nframes_t
AudioEngine::frame_rate ()
{
- if (_jack) {
- if (_frame_rate == 0) {
- return (_frame_rate = jack_get_sample_rate (_jack));
- } else {
- return _frame_rate;
- }
+ GET_PRIVATE_JACK_POINTER_RET (_jack,0);
+ if (_frame_rate == 0) {
+ return (_frame_rate = jack_get_sample_rate (_priv_jack));
} else {
- fatal << X_("programming error: AudioEngine::frame_rate() called while disconnected from JACK")
- << endmsg;
- /*NOTREACHED*/
- return 0;
+ return _frame_rate;
}
}
nframes_t
AudioEngine::frames_per_cycle ()
{
- if (_jack) {
- if (_buffer_size == 0) {
- return (_buffer_size = jack_get_buffer_size (_jack));
- } else {
- return _buffer_size;
- }
+ GET_PRIVATE_JACK_POINTER_RET (_jack,0);
+ if (_buffer_size == 0) {
+ return (_buffer_size = jack_get_buffer_size (_jack));
} else {
- fatal << X_("programming error: AudioEngine::frame_rate() called while disconnected from JACK")
- << endmsg;
- /*NOTREACHED*/
- return 0;
+ return _buffer_size;
}
}
@@ -751,6 +750,7 @@ Port *
AudioEngine::get_port_by_name (const string& portname, bool keep)
{
Glib::Mutex::Lock lm (_process_lock);
+ GET_PRIVATE_JACK_POINTER_RET (_jack,0);
if (!_running) {
if (!_has_run) {
@@ -773,7 +773,7 @@ AudioEngine::get_port_by_name (const string& portname, bool keep)
jack_port_t *p;
- if ((p = jack_port_by_name (_jack, portname.c_str())) != 0) {
+ if ((p = jack_port_by_name (_priv_jack, portname.c_str())) != 0) {
Port *newport = new Port (p);
{
@@ -796,6 +796,7 @@ AudioEngine::get_port_by_name (const string& portname, bool keep)
const char **
AudioEngine::get_ports (const string& port_name_pattern, const string& type_name_pattern, uint32_t flags)
{
+ GET_PRIVATE_JACK_POINTER_RET (_jack,0);
if (!_running) {
if (!_has_run) {
fatal << _("get_ports called before engine was started") << endmsg;
@@ -804,12 +805,14 @@ AudioEngine::get_ports (const string& port_name_pattern, const string& type_name
return 0;
}
}
- return jack_get_ports (_jack, port_name_pattern.c_str(), type_name_pattern.c_str(), flags);
+ return jack_get_ports (_priv_jack, port_name_pattern.c_str(), type_name_pattern.c_str(), flags);
}
void
AudioEngine::halted (void *arg)
{
+ /* called from jack shutdown handler */
+
AudioEngine* ae = static_cast<AudioEngine *> (arg);
bool was_running = ae->_running;
@@ -825,16 +828,26 @@ AudioEngine::halted (void *arg)
}
}
+void
+AudioEngine::died ()
+{
+ /* called from a signal handler for SIGPIPE */
+
+ stop_metering_thread ();
+
+ _running = false;
+ _buffer_size = 0;
+ _frame_rate = 0;
+ _jack = 0;
+}
+
bool
AudioEngine::can_request_hardware_monitoring ()
{
+ GET_PRIVATE_JACK_POINTER_RET (_jack,false);
const char ** ports;
- if (!_jack) {
- return 0;
- }
-
- if ((ports = jack_get_ports (_jack, NULL, JACK_DEFAULT_AUDIO_TYPE, JackPortCanMonitor)) == 0) {
+ if ((ports = jack_get_ports (_priv_jack, NULL, JACK_DEFAULT_AUDIO_TYPE, JackPortCanMonitor)) == 0) {
return false;
}
@@ -847,14 +860,11 @@ AudioEngine::can_request_hardware_monitoring ()
uint32_t
AudioEngine::n_physical_audio_outputs () const
{
+ GET_PRIVATE_JACK_POINTER_RET (_jack,0);
const char ** ports;
uint32_t i = 0;
- if (!_jack) {
- return 0;
- }
-
- if ((ports = jack_get_ports (_jack, NULL, JACK_DEFAULT_AUDIO_TYPE, JackPortIsPhysical|JackPortIsInput)) == 0) {
+ if ((ports = jack_get_ports (_priv_jack, NULL, JACK_DEFAULT_AUDIO_TYPE, JackPortIsPhysical|JackPortIsInput)) == 0) {
return 0;
}
@@ -867,14 +877,11 @@ AudioEngine::n_physical_audio_outputs () const
uint32_t
AudioEngine::n_physical_audio_inputs () const
{
+ GET_PRIVATE_JACK_POINTER_RET (_jack,0);
const char ** ports;
uint32_t i = 0;
- if (!_jack) {
- return 0;
- }
-
- if ((ports = jack_get_ports (_jack, NULL, JACK_DEFAULT_AUDIO_TYPE, JackPortIsPhysical|JackPortIsOutput)) == 0) {
+ if ((ports = jack_get_ports (_priv_jack, NULL, JACK_DEFAULT_AUDIO_TYPE, JackPortIsPhysical|JackPortIsOutput)) == 0) {
return 0;
}
@@ -888,14 +895,11 @@ AudioEngine::n_physical_audio_inputs () const
void
AudioEngine::get_physical_audio_inputs (vector<string>& ins)
{
+ GET_PRIVATE_JACK_POINTER (_jack);
const char ** ports;
uint32_t i = 0;
- if (!_jack) {
- return;
- }
-
- if ((ports = jack_get_ports (_jack, NULL, JACK_DEFAULT_AUDIO_TYPE, JackPortIsPhysical|JackPortIsOutput)) == 0) {
+ if ((ports = jack_get_ports (_priv_jack, NULL, JACK_DEFAULT_AUDIO_TYPE, JackPortIsPhysical|JackPortIsOutput)) == 0) {
return;
}
@@ -910,14 +914,11 @@ AudioEngine::get_physical_audio_inputs (vector<string>& ins)
void
AudioEngine::get_physical_audio_outputs (vector<string>& outs)
{
+ GET_PRIVATE_JACK_POINTER (_jack);
const char ** ports;
uint32_t i = 0;
- if (!_jack) {
- return;
- }
-
- if ((ports = jack_get_ports (_jack, NULL, JACK_DEFAULT_AUDIO_TYPE, JackPortIsPhysical|JackPortIsInput)) == 0) {
+ if ((ports = jack_get_ports (_priv_jack, NULL, JACK_DEFAULT_AUDIO_TYPE, JackPortIsPhysical|JackPortIsInput)) == 0) {
return;
}
@@ -932,21 +933,13 @@ AudioEngine::get_physical_audio_outputs (vector<string>& outs)
string
AudioEngine::get_nth_physical_audio (uint32_t n, int flag)
{
+ GET_PRIVATE_JACK_POINTER_RET (_jack,"");
const char ** ports;
uint32_t i;
string ret;
- if (!_jack) {
- fatal << _("get_nth_physical called before engine was connected") << endmsg;
- /*NOTREACHED*/
- }
-
- ports = jack_get_ports (_jack, NULL, JACK_DEFAULT_AUDIO_TYPE, JackPortIsPhysical|flag);
+ ports = jack_get_ports (_priv_jack, NULL, JACK_DEFAULT_AUDIO_TYPE, JackPortIsPhysical|flag);
- if (ports == 0) {
- return "";
- }
-
for (i = 0; i < n && ports[i]; ++i);
if (ports[i]) {
@@ -961,106 +954,93 @@ AudioEngine::get_nth_physical_audio (uint32_t n, int flag)
nframes_t
AudioEngine::get_port_total_latency (const Port& port)
{
- if (!_jack) {
- return 0;
- }
+ GET_PRIVATE_JACK_POINTER_RET (_jack,0);
- return jack_port_get_total_latency (_jack, port._port);
+ return jack_port_get_total_latency (_priv_jack, port._port);
}
void
AudioEngine::transport_stop ()
{
- if (_jack) {
- jack_transport_stop (_jack);
- }
+ GET_PRIVATE_JACK_POINTER (_jack);
+ jack_transport_stop (_priv_jack);
}
void
AudioEngine::transport_start ()
{
- if (_jack) {
- jack_transport_start (_jack);
- }
+ GET_PRIVATE_JACK_POINTER (_jack);
+ jack_transport_start (_priv_jack);
}
void
AudioEngine::transport_locate (nframes_t where)
{
+ GET_PRIVATE_JACK_POINTER (_jack);
// cerr << "tell JACK to locate to " << where << endl;
- if (_jack) {
- jack_transport_locate (_jack, where);
- }
+ jack_transport_locate (_priv_jack, where);
}
AudioEngine::TransportState
AudioEngine::transport_state ()
{
- if (_jack) {
- jack_position_t pos;
- return (TransportState) jack_transport_query (_jack, &pos);
- } else {
- return (TransportState) JackTransportStopped;
- }
+ GET_PRIVATE_JACK_POINTER_RET (_jack, ((TransportState) JackTransportStopped));
+ jack_position_t pos;
+ return (TransportState) jack_transport_query (_priv_jack, &pos);
}
int
AudioEngine::reset_timebase ()
{
- if (_jack) {
- if (Config->get_jack_time_master()) {
- return jack_set_timebase_callback (_jack, 0, _jack_timebase_callback, this);
- } else {
- return jack_release_timebase (_jack);
- }
+ GET_PRIVATE_JACK_POINTER_RET (_jack, -1);
+ if (Config->get_jack_time_master()) {
+ return jack_set_timebase_callback (_priv_jack, 0, _jack_timebase_callback, this);
} else {
- return -1;
+ return jack_release_timebase (_jack);
}
}
int
AudioEngine::freewheel (bool onoff)
{
- if (_jack) {
-
- if (onoff != _freewheeling) {
-
- if (onoff) {
- _freewheel_thread_registered = false;
- }
-
- return jack_set_freewheel (_jack, onoff);
-
- } else {
- /* already doing what has been asked for */
- return 0;
- }
-
+ GET_PRIVATE_JACK_POINTER_RET (_jack, -1);
+
+ if (onoff != _freewheeling) {
+
+ if (onoff) {
+ _freewheel_thread_registered = false;
+ }
+
+ return jack_set_freewheel (_priv_jack, onoff);
+
} else {
- return -1;
+ /* already doing what has been asked for */
+ return 0;
}
}
void
AudioEngine::remove_all_ports ()
{
- /* process lock MUST be held */
-
- if (_jack) {
- boost::shared_ptr<Ports> p = ports.reader();
+ jack_client_t* _priv_jack = _jack;
- for (Ports::iterator i = p->begin(); i != p->end(); ++i) {
- jack_port_unregister (_jack, (*i)->_port);
- }
- }
+ /* process lock MUST be held */
- {
- RCUWriter<Ports> writer (ports);
- boost::shared_ptr<Ports> ps = writer.get_copy ();
- ps->clear ();
- }
+ if (_priv_jack) {
- port_connections.clear ();
+ boost::shared_ptr<Ports> p = ports.reader();
+
+ for (Ports::iterator i = p->begin(); i != p->end(); ++i) {
+ jack_port_unregister (_priv_jack, (*i)->_port);
+ }
+ }
+ {
+ RCUWriter<Ports> writer (ports);
+ boost::shared_ptr<Ports> ps = writer.get_copy ();
+ ps->clear ();
+ }
+
+ port_connections.clear ();
}
void
@@ -1097,8 +1077,10 @@ AudioEngine::connect_to_jack (string client_name)
return -1;
}
+ GET_PRIVATE_JACK_POINTER_RET (_jack, -1);
+
if (status & JackNameNotUnique) {
- jack_client_name = jack_get_client_name (_jack);
+ jack_client_name = jack_get_client_name (_priv_jack);
}
jack_set_error_function (ardour_jack_error);
@@ -1125,10 +1107,7 @@ AudioEngine::connect_to_jack (string client_name)
int
AudioEngine::disconnect_from_jack ()
{
- if (!_jack) {
- return 0;
- }
-
+ GET_PRIVATE_JACK_POINTER_RET (_jack, 0);
if (_running) {
stop_metering_thread ();
@@ -1136,7 +1115,7 @@ AudioEngine::disconnect_from_jack ()
{
Glib::Mutex::Lock lm (_process_lock);
- jack_client_close (_jack);
+ jack_client_close (_priv_jack);
_jack = 0;
}
@@ -1154,6 +1133,8 @@ AudioEngine::disconnect_from_jack ()
int
AudioEngine::reconnect_to_jack ()
{
+ GET_PRIVATE_JACK_POINTER_RET (_jack,-1);
+
if (_running) {
disconnect_from_jack ();
/* XXX give jackd a chance */
@@ -1178,7 +1159,7 @@ AudioEngine::reconnect_to_jack ()
short_name = long_name.substr (long_name.find_last_of (':') + 1);
- if (((*i)->_port = jack_port_register (_jack, short_name.c_str(), (*i)->type(), (*i)->flags(), 0)) == 0) {
+ if (((*i)->_port = jack_port_register (_priv_jack, short_name.c_str(), (*i)->type(), (*i)->flags(), 0)) == 0) {
error << string_compose (_("could not reregister %1"), (*i)->name()) << endmsg;
break;
} else {
@@ -1187,44 +1168,44 @@ AudioEngine::reconnect_to_jack ()
(*i)->reset ();
if ((*i)->flags() & JackPortIsOutput) {
- (*i)->silence (jack_get_buffer_size (_jack));
+ (*i)->silence (jack_get_buffer_size (_priv_jack));
}
}
if (i != p->end()) {
/* failed */
for (Ports::iterator i = p->begin(); i != p->end(); ++i) {
- jack_port_unregister (_jack, (*i)->_port);
+ jack_port_unregister (_priv_jack, (*i)->_port);
}
return -1;
}
if (session) {
- session->reset_jack_connection (_jack);
- nframes_t blocksize = jack_get_buffer_size (_jack);
+ session->reset_jack_connection (_priv_jack);
+ nframes_t blocksize = jack_get_buffer_size (_priv_jack);
Port::set_buffer_size (blocksize);
session->set_block_size (blocksize);
- session->set_frame_rate (jack_get_sample_rate (_jack));
+ session->set_frame_rate (jack_get_sample_rate (_priv_jack));
}
last_monitor_check = 0;
- jack_on_shutdown (_jack, halted, this);
- jack_set_graph_order_callback (_jack, _graph_order_callback, this);
- jack_set_thread_init_callback (_jack, _thread_init_callback, this);
- jack_set_process_callback (_jack, _process_callback, this);
- jack_set_sample_rate_callback (_jack, _sample_rate_callback, this);
- jack_set_buffer_size_callback (_jack, _bufsize_callback, this);
- jack_set_xrun_callback (_jack, _xrun_callback, this);
- jack_set_sync_callback (_jack, _jack_sync_callback, this);
- jack_set_freewheel_callback (_jack, _freewheel_callback, this);
+ jack_on_shutdown (_priv_jack, halted, this);
+ jack_set_graph_order_callback (_priv_jack, _graph_order_callback, this);
+ jack_set_thread_init_callback (_priv_jack, _thread_init_callback, this);
+ jack_set_process_callback (_priv_jack, _process_callback, this);
+ jack_set_sample_rate_callback (_priv_jack, _sample_rate_callback, this);
+ jack_set_buffer_size_callback (_priv_jack, _bufsize_callback, this);
+ jack_set_xrun_callback (_priv_jack, _xrun_callback, this);
+ jack_set_sync_callback (_priv_jack, _jack_sync_callback, this);
+ jack_set_freewheel_callback (_priv_jack, _freewheel_callback, this);
if (Config->get_jack_time_master()) {
- jack_set_timebase_callback (_jack, 0, _jack_timebase_callback, this);
+ jack_set_timebase_callback (_priv_jack, 0, _jack_timebase_callback, this);
}
- if (jack_activate (_jack) == 0) {
+ if (jack_activate (_priv_jack) == 0) {
_running = true;
_has_run = true;
} else {
@@ -1236,16 +1217,13 @@ AudioEngine::reconnect_to_jack ()
for (PortConnections::iterator i = port_connections.begin(); i != port_connections.end(); ++i) {
int err;
- jack_client_t* j = _jack;
-
- /* JACK could have zombified us. */
- if (!j) {
+ if (!_jack) {
error << _("Disconnected from JACK while reconnecting. You should quit Ardour now.") << endmsg;
return -1;
}
- if ((err = jack_connect (j, (*i).first.c_str(), (*i).second.c_str())) != 0) {
+ if ((err = jack_connect (_priv_jack, (*i).first.c_str(), (*i).second.c_str())) != 0) {
if (err != EEXIST) {
error << string_compose (_("could not reconnect %1 and %2 (err = %3)"),
(*i).first, (*i).second, err)
@@ -1264,26 +1242,21 @@ AudioEngine::reconnect_to_jack ()
int
AudioEngine::request_buffer_size (nframes_t nframes)
{
- if (_jack) {
+ GET_PRIVATE_JACK_POINTER_RET (_jack, -1);
- if (nframes == jack_get_buffer_size (_jack)) {
- return 0;
- }
-
- return jack_set_buffer_size (_jack, nframes);
-
- } else {
- return -1;
+ if (nframes == jack_get_buffer_size (_priv_jack)) {
+ return 0;
}
+
+ return jack_set_buffer_size (_priv_jack, nframes);
}
void
AudioEngine::update_total_latencies ()
{
#ifdef HAVE_JACK_RECOMPUTE_LATENCIES
- if (_jack) {
- jack_recompute_total_latencies (_jack);
- }
+ GET_PRIVATE_JACK_POINTER (_jack);
+ jack_recompute_total_latencies (_priv_jack);
#endif
}
@@ -1327,9 +1300,6 @@ AudioEngine::make_port_name_non_relative (string portname)
bool
AudioEngine::is_realtime () const
{
- if (_jack) {
- return jack_is_realtime (_jack);
- } else {
- return false;
- }
+ GET_PRIVATE_JACK_POINTER_RET (_jack,false);
+ return jack_is_realtime (_priv_jack);
}
diff --git a/libs/ardour/audiofilesource.cc b/libs/ardour/audiofilesource.cc
index ad132f219f..b1ec8a3baa 100644
--- a/libs/ardour/audiofilesource.cc
+++ b/libs/ardour/audiofilesource.cc
@@ -734,9 +734,8 @@ AudioFileSource::safe_file_extension(ustring file)
".maud", ".MAUD",
".vwe", ".VWE",
".paf",
-#ifdef HAVE_FLAC
".flac", ".FLAC",
-#endif // HAVE_FLAC
+ ".ogg", ".OGG",
#ifdef HAVE_COREAUDIO
".mp3", ".MP3",
".aac", ".AAC",
diff --git a/libs/ardour/session_export.cc b/libs/ardour/session_export.cc
index db11c61276..e7c2596fe1 100644
--- a/libs/ardour/session_export.cc
+++ b/libs/ardour/session_export.cc
@@ -88,6 +88,7 @@ AudioExportSpecification::~AudioExportSpecification ()
void
AudioExportSpecification::init ()
{
+ memset (&sfinfo, 0, sizeof (sfinfo));
src_state = 0;
pos = 0;
total_frames = 0;
@@ -169,7 +170,7 @@ AudioExportSpecification::prepare (nframes_t blocksize, nframes_t frate)
return -1;
}
- if ((data_width = sndfile_data_width(format)) == 0) {
+ if (((format & SF_FORMAT_TYPEMASK) != SF_FORMAT_OGG) && (data_width = sndfile_data_width(format)) == 0) {
error << _("Bad data width size. Report me!") << endmsg;
return -1;
}
@@ -197,7 +198,7 @@ AudioExportSpecification::prepare (nframes_t blocksize, nframes_t frate)
}
/* XXX make sure we have enough disk space for the output */
-
+
if ((out = sf_open (path.c_str(), SFM_WRITE, &sfinfo)) == 0) {
sf_error_str (0, errbuf, sizeof (errbuf) - 1);
error << string_compose(_("Export: cannot open output file \"%1\" (%2)"), path, errbuf) << endmsg;
diff --git a/libs/ardour/sndfile_helpers.cc b/libs/ardour/sndfile_helpers.cc
index 22a1b3555e..4a85b712f1 100644
--- a/libs/ardour/sndfile_helpers.cc
+++ b/libs/ardour/sndfile_helpers.cc
@@ -35,6 +35,8 @@ const char * const sndfile_header_formats_strings[SNDFILE_HEADER_FORMATS+1] = {
N_("AIFF"),
N_("CAF"),
N_("W64 (64 bit WAV)"),
+ N_("FLAC"),
+ N_("Ogg/Vorbis"),
N_("raw (no header)"),
0
};
@@ -44,6 +46,8 @@ const char* const sndfile_file_endings_strings[SNDFILE_HEADER_FORMATS+1] = {
N_(".aiff"),
N_(".caf"),
N_(".w64"),
+ N_(".flac"),
+ N_(".ogg"),
N_(".raw"),
0
};
@@ -53,6 +57,8 @@ int sndfile_header_formats[SNDFILE_HEADER_FORMATS] = {
SF_FORMAT_AIFF,
SF_FORMAT_CAF,
SF_FORMAT_W64,
+ SF_FORMAT_FLAC,
+ SF_FORMAT_OGG,
SF_FORMAT_RAW
};
diff --git a/libs/libsndfile/AUTHORS b/libs/libsndfile/AUTHORS
deleted file mode 100644
index 95770ab52d..0000000000
--- a/libs/libsndfile/AUTHORS
+++ /dev/null
@@ -1,14 +0,0 @@
-The main author of libsndfile is Erik de Castro Lopo <erikd@mega-nerd.com>.
-
-The code in the src/GSM610 directory was written by Jutta Degener
-<jutta@cs.tu-berlin.de> and Carsten Bormann <cabo@cs.tu-berlin.de>.
-They should not be contacted in relation to libsndfile or the GSM 6.10 code
-that is part of libsndfile. Their original code can be found at:
-
- http://kbs.cs.tu-berlin.de/~jutta/toast.html
-
-Code in the src/G72x directory was released by Sun Microsystems, Inc. to the
-public domain. Minor modifications were required to integrate these files
-into libsndfile. The changes are listed in src/G72x/ChangeLog.
-
-
diff --git a/libs/libsndfile/ChangeLog b/libs/libsndfile/ChangeLog
deleted file mode 100644
index df89771c7a..0000000000
--- a/libs/libsndfile/ChangeLog
+++ /dev/null
@@ -1,6107 +0,0 @@
-2006-04-29 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * tests/util.tpl
- Add function testing function exit_if_true().
-
- * tests/floating_point_test.tpl
- Fix a problem where the test program was not exiting when the test failed.
-
-2006-04-15 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/sndfile.h.in src/sndfile.c src/common.h src/command.c
- Implement new commands SFC_GET_SIGNAL_MAX and SFC_GET_MAX_ALL_CHANNELS.
-
- * doc/commands.html
- Document new commands. Other minor updates.
-
- * tests/peak_chunk_test.c
- Update tests for new commands.
-
-2006-04-02 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * tests/peak_chunk_test.c
- Add test for RIFX and WAVEX files.
- Try and confuse the PEAK chunk writing by enabling and disabling it.
-
- * src/sndfile.c
- Fix a bug where enabling and disabling PEAK chunk was screwing up.
-
-2006-03-31 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/sndfile.h.in
- Add the block of 190 reserved bytes into this struct to allow for
- future expansion.
-
- * src/wav.c src/sndfile.c src/broadcast.c
- Significant cleanup of broadcast wave stuff.
-
- * examples/sndfile-info.c
- Fix print message.
-
- * tests/command_test.c tests/Makefile.am
- Complete bext tests, hook test in test suite.
-
-2006-03-30 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/sndfile.h.in
- Make coding_history field of SF_BROADCAST_INFO struct a char array instead
- of a char pointer.
-
- * src/sndfile.c src/common.h src/wav.c
- Clean up knock on effects of above chnage.
-
- * examples/sndfile-info.c
- Add -b command line option to usage message.
- Clean up output of broadcast wave info.
-
- * src/wav.c
- Ignore and skip the 'levl' chunk.
-
-2006-03-26 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * configure.ac
- Fix handling of --enable and --disable configure args. Thanks to Diego
- 'Flameeyes' Pettenò who sent the patch.
-
-2006-03-22 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * doc/win32.html
- Make it really clear that although the MSVC++ cannot compile libsndfile,
- the precompiled DLL can be used in C++ programs compiled with MSVC++.
-
-2006-03-18 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/aiff.c
- Fix bug in writing of INST chunk in AIFF files.
- Fix potential bug in writing MARK chunks.
-
- * src/sndfile.c
- Make sure the instrument chunk can only be written at the start of the file.
-
- * tests/command_test.c
- Add check of log buffer.
-
- * tests/utils.tpl
- Add usage of space character to psf_binheader_writef.
-
-2006-03-17 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/Makefile.am tests/Makefile.am
- Remove --source-time argument from autogen command lines.
-
- * src/broadcast.c
- New file for EBU Broadcast chunk in WAV files.
-
- * src/sndfile.c src/sndfile.h.in src/wav.c src/common.h
- Add patch from Paul Davis implementing read/write of the BEXT chunk.
-
-2006-03-16 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * Win32/README-precompiled-dll.txt
- New file descibing how to use the precompiled DLL.
-
- * Win32/Makefile.am
- Add Win32/README-precompiled-dll.txt to EXTRA_DIST files.
-
- * configure.ac
- Bump version to 1.0.15.
-
-2006-03-11 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/wav.c
- On read, only add the endian flag if the file is big endian.
-
- * src/ms_adpcm.c
- Fixed writing of APDCM coeffs in RIFX files.
-
- * tests/write_read_test.tpl tests/lossy_comp_test.c
- Add tests for RIFX files.
-
-2006-03-10 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * Mingw-make-dist.sh
- Bunch of improvements.
-
- * doc/win32.html
- Update MinGW program versions.
-
-2006-03-09 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/create_symbols_file.py
- Fix the library name in created win32 DEF file. Add correct DLL name for
- Cygwin DLL.
-
- * Win32/Makefile.am tests/Makefile.am
- Remove redundant files, add win32_ordinal_test to test suite.
-
- * tests/win32_ordinal_test.c
- Update to do test in cygsndfile-1.dll as well.
-
- * doc/win32.html
- Fix typo, mention that -mno-cygwin with the Cygwin compiler does not work.
-
- * src/wav.c src/wav_w64.c src/sndfile.c src/sndfile.h.in
- Apply large patch from Jesse Chappell which adds support for RIFX files.
-
-2006-03-08 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * Makefile.am
- Add Mingw-make-dist.sh to the extra dist files.
-
- * configure.ac
- Fix setting SHLIB_VERSION_ARG for MinGW.
-
- * tests/win32_ordinal_test.c
- New test program to test that the win32 DLL ordinals agree with the DEF
- file.
-
-2006-03-04 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/common.h
- Add a static inline function to convert an int to a size_t. This will be
- a compile to nothing on 32 bit CPUs and a sign extension on 64 bit CPUs.
-
- * src/aiff.c src/avr.c src/common.c src/xi.c src/gsm610.c
- Fix an ia64 problem where a varargs function was being passed an int in
- some places and a size_t in other places.
-
- * src/sd2.c
- Add a workaround for situations where OSX seems to add an extra 0x52 bytes
- to the start of the resource fork.
-
-2006-02-19 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * Mingw-make-dist.sh
- Add a shell script to build the windows binary/source ZIP file.
-
- * doc/index.html
- Add download link for windows binary/source ZIP file. Add links for GPG
- signatures.
-
- * doc/win32.html
- Remove info about building using microsoft compiler.
-
- * configure.ac
- Bump version to 1.0.14.
-
-2006-02-11 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/sd2.c
- Improve logging of errors in resource fork parser.
-
-2006-01-31 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * Win32/Makefile.msvc
- Replace au_g72x.* with g72x.*. Thanks to ussell Borogove.
-
-2006-01-29 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/common.c
- Make sure return values are initialised header buffer is full.
-
- * src/wav.c
- Add workarounds for messed up WAV files.
-
-2006-01-21 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * Win32/config.h
- Undef HAVE_INTTYPES_H for win32.
-
- * tests/command_test.c
- Don't exit on error in instrument test for XI files.
-
- * configure.ac
- Bump version to 1.0.13.
-
- * doc/*.html NEWS README
- Update version numbers.
-
-2006-01-19 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/xi.c
- Start work on add read/write of instrument chunks.
-
- * src/command_test.c
- Add tests for XI instrument chunk.
-
- * tests/largefile_test.c tests/Makefile.am
- Add new test and hook it into the build system. This test will not be run
- automatically because it requires 3 Gig of disk space and takes 3 minutes
- to run.
-
-2006-01-10 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * examples/sndfile-play.c
- Fix calculation of samples remaining in win32 code. Thanks Axel Roebel.
-
- * src/common.h
- Make sure length of header buffer can hold header plus strings. Thanks Axel
- Roebel.
-
-2006-01-09 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/sndfile.h.in src/aiff.c src/wav.c
- Apply a patch from John Fitch (Csound project).
- Add detune field to SF_INSTRUMENT struct.
- Add reading/writing instrument chunks to WAV files.
-
- * tests/command_test.c
- Update SF_INSTRUMENT tests.
-
- * tests/Makefile.am
- Hook instrument tests into test suite.
-
-2006-01-05 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * configure.ac
- Check for <inttypes.h> because some broken systems (like Solaris) don't have
- <stdint.h> which is the 1999 ISO C standard file containing int64_t.
-
- * src/sfendian.h src/common.h
- Use <inttypes.h> if <stdint.h> is not available.
-
-2005-12-30 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * tests/peak_chunk_test.c
- Extend and clean up tests.
-
- * src/sndfile.c
- Fix a bug that prevented the turning off of PEAK chunks.
-
-2005-12-29 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * tests/error_test.c
- Make the test distclean correct.
-
- * src/file_io.c
- Fix an SD2 MacOSX bug (reported by vince schwarzinger).
-
-2005-12-28 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/aiff.c tests/command_test.c
- Apply a big patch from John ffitch (Csound project) to add reading and
- writing of instrument chunks to AIFF files. Also update the test.
-
-2005-12-10 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * tests/aiff_rw_test.c tests/virtual_io_test.c tests/utils.tpl
- Move test function dump_data_to_file() to utils.tpl.
-
- * tests/error_test.c tests/Makefile.am
- Updates, including a new test to test that sf_error() returns a valid error
- number.
-
-2005-12-07 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * examples/list_formats.c
- Make sure the SF_INFO struct is memset to all zero before being used.
- Thanks to Stephen F. Booth.
-
- * src/sndfile.c
- Make the return value of sf_error() match the API documentation.
-
-2005-11-19 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * examples/sndfile-convert.c
- Allow conversion to raw gsm610.
-
- * src/common.h src/sndfile.c src/au.c
- Remove au_nh_open() and all references to it (wasn't working anyway).
-
- * tests/headerless_test.c
- Add new test for file extension based detection.
-
- * src/sndfile.c
- Rejig file extension based file type detection.
-
-2005-11-16 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/sndfile.c
- Add "gsm" as a recognised file extension when no magic number can be found.
-
- * tests/lossy_comp_test.c tests/Makefile.am
- Test headerless GSM610.
-
-2005-11-13 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * doc/api.html
- Fix a minor typo and a minor error. Thanks Christoph Kobe and John Pavel.
-
-2005-10-30 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/wav_w64.c
- Add more reporting of 'fmt ' chunk for G721 encoded files.
-
- * src/wav.c
- Gernerate a more correct 20 byte 'fmt ' chunk rather than a 16 byte one.
-
-2005-10-29 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/G72x/g72x.[ch]
- Minor cleanup of interface.
-
-2005-10-28 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/ogg.c
- Removed the horribly broken and non-functional OGG implementation when
- --enable-experimental was enabled. When OGG does finally work it will be
- merged.
-
- * src/caf.c
- Fix a memory leak.
-
-2005-10-27 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/g72x.c src/G72x/*.(c|h) src/common.h src/sndfile.c src/wav.c src/au.c
- Add support for G721 encoded WAV files.
-
- * doc/index.html
- Update support matrix.
-
- * tests/lossy_comp_test.c
- For file formats that support it, add string data after the audio data and
- make sure it isn't treated as audio data on read.
-
- * src/gsm610.c
- Add code to ensure that the container close function (ie for WAV files) gets
- called after the codec's close function. This allows GSM610 encoded WAV files
- to have string data following the audio data.
- Add an AIFF specific check on psf->datalength.
-
- * src/wav.c
- Simplify wav_close function.
-
- * src/aiff.c
- Make sure the tailer data gets written at an even file offset. Pad if
- necessary.
-
- * src/common.h
- Replace the close function pointer in SF_PRIVATE with separate functions
- codec_close and container_close. The former is always called first.
-
- * src/*.c
- Fix knock on effects of above.
-
-2005-10-26 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * examples/sndfile-info.c
- Complete dumping SF_INSTRUMENT data.
-
- * src/dwvw.c src/ima_adpcm.c src/gsm610.c src/ms_adpcm.c
- Add extra checks in *_init function.
-
- * tests/lossy_comp_test.c
- Add a string comment to the end of the files to make sure that the decoder
- doesn't decode beyond the end of the audio data section.
-
-2005-10-25 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * examples/sndfile-info.c
- Minor code cleanup.
- Start work on dumping SF_INSTRUMENT data.
-
-2005-10-23 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/sndfile.h.in src/common.h src/common.c
- Update definition of SF_INSTRUMENT struct and create a function to allocate
- and initialize the struct (input from David Viens).
- Clean up definition of SF_INSTRUMENT struct.
-
- * src/wav.c src/wav_w64.c
- Add support for Ambisoncs B WAVEX files (David Viens).
-
- * src/aiff.c src/wav.c src/wav_w64.c
- Start work on reading/writing the SF_INSTRUMENT data.
-
- * src/sndfile.c
- Add code to get and set SF_INSTRUMENT data.
-
- * tests/command_test.* tests/Makefile.am
- Add test for set and getof SF_INSTRUMENT data.
- The file command_test.c is no longer autogen generated.
-
-2005-10-15 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/gsm610.c
- Minor cleanup.
-
-2005-10-14 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * tests/lossy_comp_test.c
- Minor cleanup.
-
-2005-10-13 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/*.c
- Ensure sfconfig.h is included before any other header file.
-
- * src/file_io.c
- Add comments documenting the three sections of the file.
-
- * src/gsm610.c
- Make sure SF_FORMAT_WAVEX are handled correctly.
-
-2005-10-07 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * configure.ac
- Add options to allow disabling of FLAC and ALSA. Suggested by Ben Greear.
-
-2005-09-30 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * tests/locale_test.c
- Modify the way the unicode strings were encoded so that older compilers
- do not complain. Thanks Axel Roebel.
-
- * configure.ac
- Bump the version to 1.0.12 for release.
-
- * NEWS README Win32/config.h doc/(FAQ|index.html|command|api).html
- Update version numbers.
-
-2005-09-26 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/flac.c
- Fix valgrind error and minor cleanup.
-
-2005-09-25 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/(au|paf|aiff|w64|wav|svx).c
- Make sure structs are initialised.
-
-2005-09-24 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * configure.ac
- Make -Wdeclaration-after-statement work with --enable-gcc-werror configure
- option.
- Add -std=gnu99 (C99 plus posix style stuff like gmtime_r) to CFLAGS if the
- compiler supports it.
-
-2005-09-23 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * configure.ac acinclude.m4
- Add -Wdeclaration-after-statement to CFLAGS if the compilers supports it.
-
-2005-09-22 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * tests/util.(tpl|def)
- Make the test_write_*_or_die() functions const safe.
-
-2005-09-21 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/nist.c
- Make sure the data offset is read from the file header. Thanks to
- David A. van Leeuwen for a patch.
-
-2005-09-20 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * configure.ac src/sfconfig.h
- Check for <locale.h> and the function setlocale().
- Set config variables to zero if not found.
-
- * tests/locale_test.c tests/Makefile.am
- Add new test program and hook into build/test system.
-
-2005-09-18 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/common.h src/file_io.c
- On windows, use windows specific types for file handles.
- Add functions psf_init_files() and psf_use_rsrc().
-
- * src/sd2.c
- Make resource fork handling independant of file desciptor/handles.
-
- * src/sndfile.c src/test_file_io.c
- Fix knock on effects.
-
-2005-09-06 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/float_cast.h
- The lrint and lrintf implementations in Cygwin are both buggy and slow.
- Add replacements which were pulled from the Public Domain MinGW math.h
- header file.
-
-2005-09-05 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * tests/(lossy_comp_test|virtual_io_test).c
- More Valgrind fixups.
-
- * configure.ac
- Simplify and correct configuring for Cygwin.
-
- * Win32/config.h Win32/sndfile.h Win32/Makefile.msvc
- Update build for MSVC.
-
-2005-09-04 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * tests/lossy_comp_test.c
- Make sure to close SNDFILE when exiting test when file format is not seekable.
-
- * tests/(aiff_rw_test|virtual_io_test).c
- Do a few valgrind fix ups.
-
-2005-09-03 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/float32.c src/double64.c
- Replace floating point equality comparisons with greater/less comparisons.
- Found by John Pavel using the Intel compiler.
-
- * src/sfconfig.h
- New file to clean up issues surrounding autoconf generated preprocessor
- symbols.
-
- * src/*.(c|h) tests/*.(c|tpl) examples/*.c
- Fixed a bunch of other stuff found by John Pavel using the Intel compiler.
-
- * src/file_io.c
- Remove Mac OS9 Metrowerks compiler specific hacks.
-
-2005-08-31 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/w64.c
- Cast integer literal to sf_count_t in call to psf_binheader_writef() to
- prevent Valgrind error.
-
-2005-08-30 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * doc/command.html
- Improve documentation of SF_GET_FORMAT_SUBTYPE.
-
-2005-08-26 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * examples/sndfile-convert.c
- Allow files to be converted to SD2 format.
-
- * src/sd2.c
- Fix a bug in reading and writing of SD2 files on little endian CPUs.
- Thanks to Matthew Willis for finding this.
-
-2005-08-25 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * doc/api.html
- Update Note2 to point to SFC_SET_SCALE_FLOAT_INT_READ.
-
-2005-08-16 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * configure.ac
- Use $host_os instead of $target_os (thanks to Mo De Jong).
-
-2005-08-15 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/Makefile.am
- Apply a patch from Mo DeJong to allow building outside of the source dir.
-
- * src/file_io.c
- Fix psf_fsync() for win32.
-
- * src/wav.c src/wav_w64.(c|h)
- Move some code from wav.c to wav_w64.c to improve the log output of files of
- type WAVE_FORMAT_EXTENSIBLE.
-
-2005-08-10 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/create_symbols_file.py
- Make sure sf_write_fsync is an exported symbol.
-
- * examples/sndfile-convert.c
- Add support for writing VOX adpcm files.
-
-2005-07-31 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * doc/api.html
- Document the new function sf_write_sync().
-
- * doc/FAQ.html
- Do you plan to support XYZ codec.
-
-2005-07-28 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/sndfile.h.in src/sndfile.c
- Add function sf_write_sync() to the API.
-
- * src/common.h src/file_io.c
- Low level implementation (win32 not done yet).
-
- * tests/write_read_test.tpl
- Use the new function in the tests.
-
-2005-07-24 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/common.h src/double64.c src/float32.c src/sndfile.c
- Change the way PEAK chunk info is stored. Peaks now stored as an sf_count_t
- for position and a double as the value.
-
- * src/aiff.c src/caf.c src/wav.c
- Fix knock on effects of above changes.
-
- * src/caf.c
- Implement 'peak' chunk for file wuth data in SF_FORMAT_FLOAT or
- SF_FORMAT_DOUBLE format.
-
-2005-07-23 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/nist.c
- Fix a bug where a variable was being used without being initialized.
-
- * src/flac.c
- Add extra debug in sf_flac_meta_callback.
- Make a bunch of private functions static.
-
- * src/aiff.c src/wav.c
- Fix allocation for PEAK_CHUNK (bug found using valgrind).
-
-2005-07-21 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/common.h
- Move the peak_loc field of SF_PRIVATE to the PEAK_CHUNK struct.
- Remove had_peak field of SF_PRIVATE, use pchunk != NULL instead.
- Rename PEAK_CHUNK and PEAK_POS to PEAK_CHUNK_32 and PEAK_POS_32.
-
- * src/aiff.c src/caf.c src/wav.c src/float32.c src/double64.c
- Fix knock on effects from above.
-
-2005-07-19 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/wav.c
- Prevent files with unknown chunks from being opened read/write.
-
-2005-07-14 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/flac.c
- Do not use psf->end_of_file because it never gets set to anything.
-
- * src/common.h
- Remove unused SF_PRIVATE field end_of_file.
-
-2005-07-12 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/common.c
- Change the 'S' format specifier of psf_binheader_writef() to write AIFF
- style strings (no terminating character).
-
- * src/aiff.c
- Move to new (correct) AIFF string style. Thanks to Axel Roebel for being
- so persistent on this issue.
-
-2005-07-11 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/sndfile.c
- Allow SFE_UNSUPPORTED_FORMAT as an error from sf_open().
-
- * doc/api.html doc/command.html
- Documentation updates (thanks to Kyroz for promoting these updates).
-
- * src/mat5.c
- Modify the way the header is written.
-
-2005-07-10 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/caf.c
- Add a 'free' chunk to the written file so that the audio data starts at
- an offset of 0x1000.
-
- * src/sndfile.c
- Allow SFE_UNSUPPORTED_FORMAT as an error from sf_open().
-
-2005-07-09 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/caf.c src/sndfile.c
- Add support for signed 8 bit integers.
-
- * tests/write_read_test.tpl
- Add test for signed 8 bit integers in CAF files.
-
- * doc/index.html
- Update matrix for signed 8 bit integers in CAF files.
-
-2005-07-08 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/sndfile.c
- Update sf_check_format() to support CAF.
-
- * examples/sndfile-convert.c
- Add support for ".caf" file extension.
-
- * doc/index.html
- Add Apple CAF to the support matrix.
-
- * src/caf.c
- Add file write support.
-
- * src/common.c
- Fix printing of Frames.
-
- * tests/Makefile.am tests/write_read_test.tpl tests/lossy_comp_test.c
- tests/header_test.tpl misc_test.c
- Add tests for CAF files.
-
-2005-07-07 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * doc/FAQ.html
- Fix Q/A about reading/writing memory buffers.
-
- * src/caf.c
- Bunch of work to support reading of CAF files.
-
-2005-07-04 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/(aiff|ima_adpcm|mat4|mat5|ms_adpcm).c examples/sndfile-play.c
- Fix sign conversion errors reported by gcc-4.0.
-
- * src/caf.c
- New file for Apple's Core Audio File format.
-
- * src/sndfile.c src/common.h src/sndfile.h.in src/Makefile.am
- Hook new file into build system.
-
-2005-06-21 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src_wav_w64.c
- Fix handling of stupidly large 'fmt ' chunks. Thanks to Vadim Berezniker
- for supplying an example file.
-
- * src/common.h src/sndfile.c
- Remove redundant error code SFE_WAV_FMT_TOO_BIG.
-
-2005-06-20 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/sndfile.h.in src/common.h src/sndfile.c
- Add public error value SF_ERR_MALFORMED_FILE.
-
- * src/sndfile.c
- When parsing a file header fails and we don't have a system error, then set
- the error number to SF_ERR_MALFORMED_FILE (suggested by Kyroz).
-
- * configure.ac
- Allow sqlite support to be disabled in configure script.
-
- * regtest/database.c regtest/sndfile-regtest.c
- Fix compiling when sqlite is missing.
-
-2005-06-11 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/file_io.c
- Fix psf_is_pipe() and return value of psf_fread() when using virtual i/o.
-
- * src/sndfile.c
- Fix VALIDATE_AND_ASSIGN_PSF macro for virtual i/o.
-
- * tests/virtual_io_test.c
- Fill in skeleton test program.
-
- * tests/Makefile.am
- Move virtual i/o tests to end of tests with stdio/pipe tests.
-
- * src/(sndfile.h.in|file_io.c|common.h|sndfile.c) tests/virtual_io_test.c
- Rename some of the virtual i/o functions and data types.
-
-2005-06-10 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/sndfile.c
- Fix the return values of sf_commands : SFC_SET_NORM_DOUBLE,
- SFC_SET_NORM_FLOAT, SFC_GET_LIB_VERSION and SFC_GET_LOG_INFO. Thanks to
- Kyroz for pointing out these errors.
-
- * doc/command.html
- Correct documented return values for SFC_SET_NORM_DOUBLE and
- SFC_SET_NORM_FLOAT. Thanks to Kyroz again.
-
-2005-05-17 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * regtest/*
- Add new files for sndfile-regtest program.
-
- * configure.ac Makefile.am
- Hook regetest into build.
-
- * src/wav.c src/common.c
- Fix a regression where long ICMT chunks were causing the WAV parser
- to exit.
-
-2005-05-15 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * libsndfile.spec.in
- Add html docs to the files section as suggested by Karsten Jeppesen.
-
- * src/aiff.c
- Fix parsing of odd length ANNO chunks.
-
-2005-05-13 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/common.h
- Change the include guard to prevent clashes with other code.
-
-2005-05-12 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * examples/sndfile-play.c
- Improve error handling in code for playback under Linux/ALSA.
-
-2005-05-10 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/ircam.c
- Fix writing of IRCAM files on big endian systems (thanks to Axel Roebel).
-
- * src/wav.c
- Add workaround for files created by the Peak audio editor on Mac which can
- produce files with very short LIST chunks (thanks to Jonathan Segel who
- supplied the file).
-
-2005-04-30 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/aiff.c
- Apply a patch From David Viens to make the parsing of basc chunks more
- robust.
-
- * src/wav.c
- Another patch from David Viens to write correct wavex channel masks for
- the most common channel configurations.
-
-2005-04-08 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/command.c
- Only allow FLAC in the format arrays if FLAC is enabled. Thanks to
- Leigh Smith.
-
-2005-03-09 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/common.h
- Add a directory field for storing the file directory to the SF_PRIVATE
- struct.
-
- * src/sndfile.c
- Grab the directory name when copying the file path.
-
- * src/file_io.c
- Cleanup psf_open_rsrc() and also check for resource fork in
- .AppleDouble/filename.
-
-2005-03-01 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/svx.c
- Fix a bug in the printing of the channel count. Bug reported by Michael
- Schwendt. Thanks.
-
-2005-01-26 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/paf.c
- Fix a seek bug for 24 bit PAF files.
-
- * tests/write_read_test.tpl
- Update write_read_test to trigger the previously hidden PAF seek bug.
-
-2005-01-25 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/aiff.c src/w64.c src/wav.c
- Do not return a header parse error when the log buffer overflows.
- Continuing parsing works even on files where the log buffer does overflow.
- This avoids a bug on some weirdo WAV (and other) files.
-
- * src/common.h src/sndfile.c
- Remove SFE_LOG_OVERRIN error and its associated error message.
-
- * src/file_io.c
- Fix a rsrc fork problem on MacOSX.
-
-2004-12-31 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/sndfile-play.c
- In the ALSA output code, added call to snd_pcm_drain() just before
- snd_pcm_close() as suggested by Thomas Kaeding.
- In the OSS output code, added two ioctls (SNDCTL_DSP_POST and
- SNDCTL_DSP_SYNC) just before the close of the audio device.
-
- * tests/virtual_io_test.c tests/Makefile.am
- Add a new test program (currently empty) and add it to the build.
-
-2004-12-29 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/sndfile.h.in src/sndfile.h src/common.h src/file_io.c
- src/create_symbols_file.py
- Apply patch from Steve Baker which is the beginnings of a virtual
- I/O interface.
-
-2004-12-23 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/*.c src/sndfile.h.in
- Const-ify the write path throughout the library.
-
-2004-12-14 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * doc/development.html
- Minor improvements.
-
-2004-11-29 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * doc/bugs.html
- Minor improvements.
-
-2004-11-18 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/aiff.c
- Add workaround for Logic Platinum AIFF files with broken COMT chunks.
-
-2004-11-16 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * doc/FAQ.html
- Remove some ambiguities in the SD2 FAQ answer.
-
-2004-11-15 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * Win32/sndfile.h Win32/config.h MacOS9/sndfile.h MacOS9/config.h
- Updates from autoconfig versions.
-
-2004-11-13 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/aiff.c
- Fix parsing of COMT chunks. Store SF_STR_COMMENT data in ANNO chunks
- instead of COMT chunk.
-
-2004-11-07 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/file_io.c src/common.h
- Change the ptr argument to psf_write() from "void*" to a "const void*".
- Thanks to Tobias Gehrig for suggesting this.
-
-2004-10-31 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/file_io.c src/common.h
- Add functions psf_close_rsrc() and read length of resourse fork into
- rsrclength field of SF_PRIVATE.
-
- * src/sd2.c
- Make sure resource fork gets closed.
-
- * tests/util.tpl
- Add functions to check for file descriptor leakage.
-
- * src/write_read_test.tpl
- Use the file descriptor leak checks.
-
- * src/sndfile.h.in
- Add SFC_GET_LOOP_INFO and SF_LOOP_INFO struct.
-
- * src/common.h
- Add SF_LOOP_INFO pointer to SF_PRIVATE.
-
- * src/wav.c src/aiff.c
- Improve and add parsing of 'ACID' and 'basc' chunks, filling in
- SF_LOOP_INFO data in SF_PRIVATE.
-
-2004-10-30 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/sd2.c
- Further cleanup: remove printfs, change snprintf to LSF_SNPRINTF.
-
- * Win32/config.h Win32/sndfile.h
- Updates.
-
- * tests/util.tpl
- Add win32 macro for snprintf.
-
-2004-10-29 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/sfendian.h
- Add macros : H2BE_SHORT, H2BE_INT, H2LE_SHORT and H2LE_INT.
-
- * src/sd2.c
- Use macros to make sure writing SD2 files on little endian machines works
- correctly.
-
- * tests/util.tpl
- Add a delete_file() function which also deletes the resource fork of SD2
- files.
-
- * tests/write_read_test.tpl
- Use delete_file() so that "make distcheck" works.
-
-2004-10-28 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/sndfile.c src/file_io.c
- Move resource filename construction and testing to psf_open_rsrc().
-
- * src/common.h src/sndfile.c
- Add error SFE_SD2_FD_DISALLOWED.
-
- * tests/util.tpl tests/*.(c|tpl)
- Add and allow_fd parameter to test_open_file_or_die() so that use of
- sf_open_fd() can be avoided when opening SD2 files.
-
-2004-10-27 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/wav.c
- Update ACID chunk parsing.
-
- * src/sd2.c
- More fixes for files with large resource forks.
-
-2004-10-23 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/common.h src/sndfile.c
- Add error numbers and messages for sd2 files.
-
- * src/sd2.c
- Reading of sd2 (resource fork version) now seems to be working.
-
-2004-10-17 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/file_io.h
- Update file_io.c to include win32 psf_rsrc_open().
-
- * tests/floating_point_test.tpl
- Remove use of __func__ in test programs (MSVC++ doesn't grok this).
-
- * Win32/(config|sndfile).h MacOS9/(config|sndfile).h
- Updates.
-
-2004-10-13 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/sfendian.h
- Fix endswap_int64_t_(array|copy).
-
- * src/test_endswap.(tpl|def)
- Add tests for above and inprove all tests.
-
-2004-10-12 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/sfendian.h
- Improve type safety, add endswap_double_array().
-
- * src/double64.c
- Use endswap_double_array() instead of endswap_long_array().
-
- * src/test_endswap.(tpl|def) src/Makefile.am
- Add preliminary endswap tests and hook into build system.
-
-2004-10-06 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/configure.ac src/makefile.am
- Finally fix the bulding of DLLs on Win32/MinGW.
-
- * tests/makefile.am
- Fix running of tests on Win32/MinGW.
-
-2004-10-01 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/sndfile.h.in src/sndfile.c tests/floating_point_test.tpl
- Rename SFC_SET_FLOAT_INT_MULTIPLIER to SFC_SET_SCALE_FLOAT_INT_READ.
-
- * doc/command.html
- Document SFC_SET_SCALE_FLOAT_INT_READ.
-
-2004-09-30 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * tests/floating_point_test.(tpl|def)
- Derived from floating_point_test.c.
- Add (float|double)_(short|int)_test functions.
-
- * tests/util.(tpl|def)
- Make separate float and double versions of gen_windowed_sine().
-
- * tests/write_read_test.tpl
- Fix after changes to gen_windowed_sine().
-
- * src/(float32|double64).c
- Implement SFC_SET_FLOAT_INT_MULTIPPLIER.
-
-2004-09-29 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * acinclude.m4
- Fix warnings from automake 1.8 and later.
-
- * examples/sndfile-info.c
- Add a "fflush (stdout)" after printing Win32 message.
-
-2004-09-28 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * Win32/Makefile.mingw.in
- Add a "make install" target.
-
-2004-09-24 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/sndfile.h.in src/common.h src/sndfile.c src/command.c
- Start work on adding command SFC_SET_FLOAT_INT_MULTIPLIER.
-
-2004-09-22 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * examples/sndfile-convert.c
- Fix a bug converting stereo integer PCM files to float.
-
-2004-09-22 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * examples/sndfile-play.c
- Appy patch from Conrad Parker to make Mac OSX error messages more
- consistent and informative.
-
- * doc/api.html
- Fix a HTML HREF which was wrong.
-
- * doc/win32.html
- Add information about when nmake fails.
-
-2004-09-05 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * examples/sndfile-play.c
- Another patch from Denis Cote to prevent race conditions.
-
-2004-09-02 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/common.h src/ms_adpcm.c src/ima_adpcm.c
- Fix alternative to ISO standard flexible struct array feature for broken
- compilers.
-
-2004-08-31 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/common.h src/string.c src/sndfile.c
- Make sf_set_string() return an error if trying to set a string when in
- read mode.
-
-2004-08-29 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/common.h
- Change the unnamed union into a named union so gcc-2.95 will compile it.
-
- * src/*.c
- Fixes to allow for the above change.
-
-2004-08-20 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * examples/sndfile-play.c
- Fixes for Win32. Thanks to Denis Cote.
-
- * Win32/Win32/Makefile.(msvc|mingw.in)
- Fix build system after removal of sfendian.h.
- Build sndfile-convert.
-
- * src/Makefile.am
- Remove sfendian.c from dependancies.
-
-2004-08-10 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/sndfile.h.in
- Fix typo in comments (thanks Tommi Sakari Uimonen).
-
-2004-07-31 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * tests/(a|u)law_test.c
- Minor cleanup.
-
-2004-07-29 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/(pcm|float|double64|ulaw|alaw|xi).c
- Optimise read/write loops by removing a redundant variable.
-
-2004-07-24 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/file_io.c
- Remove call to fsync() in psf_close().
-
-2004-07-19 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/pcm.c
- Inline x2y_array() functions where possible.
-
- * configure.ac
- Detect presence of type int64_t.
-
- * src/sfendian.c src/sfendian.h
- Move functions in the first file to the sfendian.h as static inline
- functions.
- Improve endswap_long_*() where possible.
-
-2004-07-17 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/pcm.c
- When converting from unsigned char to float or double, subtract 128 before
- converting to float/double rather than after to save a floating point
- operation as suggested by Stefan Briesenick.
-
- * src/(pcm|sfendian|alaw|ulaw|double64|float32).c
- Optimize inner loops by changing the loop counting slightly as suggested
- by Stefan Briesenick.
-
- * configure.ac
- Detect presence of <byteswap.h>.
-
- * src/sfendian.h
- Use <byteswap.h> if present as suggested by Stefan Briesenick.
-
- * src/pcm.c
- Update bytewapping.
-
-2004-07-02 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/common.h src/*.c
- Change the psf->buffer field of SF_PRIVATE into a more type safe union with
- double, float, int etc elements.
-
-2004-06-28 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * examples/sndfile-play.c
- Merge slightly modifed patch from Stanko Juzbasic which allows playback of
- mono files on MacOSX.
-
-2004-06-25 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * examples/sndfile-convert.c
- Move copy_metadata() after the second sf_open().
-
-2004-06-21 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * examples/sndfile-convert.c
- Fix a bug which caused the program to go into an infinite loop if the source
- file has no meta-data. Thanks to Ron Parker for reporting this.
-
- * src/sndfile.h.in
- Add SF_STR_FIRST and SF_STR_LAST to allow enumeration of string types.
-
- * Win32/sndfile.h MacOS9/sndfile.h
- Update these as per the above file.
-
-2004-06-17 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * configure.ac src/common.h src/ogg.c src/sndfile.c src/sndfile.h.in
- src/Makefile.am
- Apply large patch from Conrad Parker implementing Ogg Vorbis, Ogg Speex and
- Annodex support via liboggz and libfishsound. Thanks Conrad.
-
-2004-06-15 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/avr.c src/ircam.c src/nist.c src/paf.c src/xi.c
- Add cast to size_t for some parameters passed to psf_binheader_writef. This
- is Debian bug number 253490. Thanks to Anand Kumria and Andreas Jochens.
-
- * src/w64.c
- Found and fixed a bug resulting from use of size_t when writing W64 'fmt '
- chunk.
-
-2004-06-14 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * configure.ac
- Bump version to 1.0.10 ready for release.
-
- * Makefile.am
- Remove redundant files (check_libsndfile.py libsndfile_version_convert.py)
- from distribution tarball.
-
- * tests/header_test.tpl
- Fix uninitialised variable.
-
- * src/GSM610/short_term.c
- Fix compiler warning on MSVC++.
-
-2004-05-23 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/wav.c
- Improve record keeping of chunks seen and return an error if a file with
- unusual chunks is opened in mode SFM_RDWR.
-
- * src/mmreg.h
- This file not needed so remove it.
-
-2004-05-22 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * tests/header_test.tpl
- Add extra_header_test().
-
- * src/common.h src/sndfile.c
- Add SFE_RDWR_BAD_HEADER error number and string.
-
-2004-05-21 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * tests/utils.tpl tests/*.c tests/*.tpl
- Add a line number argument to check_log_buffer_or_die() and update all
- files that use that function.
-
- * tests/header_test.tpl
- Modify/update tests for files opened SFM_RDWR and SFC_UPDATE_HEADER_AUTO.
-
- * src/aiff.c src/wav.c
- Fix another bug in AIFF and WAV files opened in SFM_RDWR and using
- SFC_UPDATE_HEADER_AUTO.
-
- * src/test_file_io.c
- Add a test for psf_ftruncate() function.
-
-2004-05-19 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/sndfile.c
- Fix another weird corner case bug found by Martin Rumori. Thanks.
-
- * tests/header_test.(tpl|def)
- Two new files to test for the absence of the above bug and include tests
- moved from tests/misc_test.c.
-
- * tests/Makefile.am
- Hook new tests into build/test system.
-
- * tests/misc_test.c
- Remove update_header_test() which has been moved to the new files above.
-
-2004-05-16 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/aiff.c
- Fixed a bug reported by Martin Rumori on the LAD list. If a file created
- with a format of SF_FORMAT_FLOAT and then closed before any data is written
- to it, the header can get screwed up (PEAK chunk gets overwritten).
-
- * tests/write_read_test.tpl
- Add a test (empty_file_test) for the above bug.
-
-2004-05-13 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * Win32/Makefile.mingw.in
- Added a Makefile for MinGW (needs to be processed by configure).
-
- * src/mmsystem.h src/mmreg.h
- Add files from the Wine project (under the LGPL) to allow build of
- sndfile-play.exe under MinGW.
-
-2004-05-12 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/GSM610/gsm610_priv.h
- Replace ugly macros with inline functions.
-
- * src/GSM610/*.c
- Remove temporary variables used by macros and other minor fixes required by
- above change.
-
-2004-05-10 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * tests/pipe_test.tpl tests/stdio_test.c Win32/Makefile.msvc
- Make sure these programs compile (even though they do nothing) on Win32
- and add them to the "make check" target.
-
- * src/sfendian.h
- Fix warning on Sparc CPU and code cleanup.
-
-2004-05-09 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/file_io.c
- Fix warning messages when compiling under MinGW.
-
-2004-05-01 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * configure.ac
- Set HAVE_FLEXIBLE_ARRAY in src/config.h depending on whether the compiler
- accepts the flexible array struct member as per 1999 ISO C standard.
-
- * src/common.h src/ima_adpcm.c src/paf.c src/ms_adpcm.c
- Added ugly #if HAVE_FLEXIBLE_ARRAY and provided a non-standards compliant
- hack for non 1999 ISO C compliant compilers.
-
-2004-04-26 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/strings.c
- If adding an SF_STR_SOFTWARE string, only append libsndfile-X.Y.Z if the
- string does not already have libsndfile in the string. Thanks to Conrad
- Parker.
-
- * tests/string_test.c
- Add test to verify the above.
-
- * examples/sndfile-convert.c
- Add ability to transcode meta data as well (Conrad Parker).
-
-2004-04-25 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * doc/command.html
- Fix minor error. Thanks to Simon Burton.
-
- * doc/win32.html
- Started adding instructions for compiling libsndfile under MinGW.
-
- * configure.ac
- Add --enable-bow-docs to enable black text on a white background HTML docs.
-
- * doc/libsndfile.css.in
- This is now a template file for configure which sets the foreground and
- background colours.
-
-2004-04-20 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * configure.ac
- Do some MinGW fixes.
-
- * configure.ac doc/Makefile.am
- Install HTML docs when doing make install.
-
-2004-04-19 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * examples/sndfile-info.c
- Print out the dB level with the signal max.
-
-2004-04-15 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/file_io.c
- Define S_ISSOCK in src/file_io.c if required.
-
-2004-04-03 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * configure.ac
- Improve printout configuration summary (as suggested by Axel Röbel).
-
- * doc/index.html
- Add link to pre-release location.
-
- * src/sndfile.h.in
- Remove comma after last element of enum.
-
- * src/float32.c src/double64.c
- Fix read/write of float/double encoded raw files to/from pipes.
-
- * tests/pipe_test.c tests/pipe_test.tpl tests/pipe_test.def
- Turn pipe_test.c into an autogenerated file and add tests for reading/
- writing floats and doubles.
-
- * tests/Makefile.am
- Hook tests/pipe_test.* into build system.
-
-2004-04-02 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * configure.ac acinclude.m4
- Rename AC_C_STRUCT_HACK macro to AC_C99_FLEXIBLE_ARRAY.
-
-2004-03-31 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * tests/misc_test.c
- Perform update_header_test in RDWR mode as well.
-
- * src/aiff.c
- Fix problems when updating header in RDWR mode.
-
-2004-03-30 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/wav.c src/w64.c src/wav_w64.c
- Integrate code supplied by David Viens for supporting microsoft's
- WAVEFORMATEXTENSIBLE stuff. Thanks David for supplying this.
-
- * configure.ac doc/*.html
- Bump version to 1.0.9.
-
-2004-03-28 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/command.c src/sndfile.c src/sndfile.h.in src/wav.c
- Started work on supporting microsoft's WAVEFORMATEXTENSIBLE gunk.
-
-2004-03-26 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/avr.c
- New file to handle Audio Visual Resaerch files.
-
- * src/sndfile.h.in src/common.h src/sndfile.c src/command.c
- Hook AVR into everything else.
-
- * tests/Makefile.am tests/write_read_test.tpl tests/misc_test.c
- Add testing for AVR files.
-
-2004-03-22 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/file_io.c
- Fix psf_set_file() for win32. Thanks to Vincent Trussart (Plogue Art et
- Technologie) for coming up with the solution.
-
-2004-03-21 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * tests/write_read_test.tpl
- Fixed a bug that was causing valgrind to report a memory leak. The bug was
- in the test code itself, not the library.
-
-2004-03-20 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * examples/generate.cs
- An example showing how to use libsndfile from C#. Thanks to James Robson
- for providing this.
-
-2004-03-19 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/common.c
- Fix problems with WAV files containing large chunks after the 'data'
- chunk. Thanks to Koen Tanghe for providing a sample file.
-
-2004-03-17 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * configure.ac
- Detect presense of ALSA (Advanced Linux Sound Architecture).
-
- * examples/sndfile-play.c
- Add ALSA output support.
-
- * examples/Makefile.am
- Add ALSA_LIBS to link line of sndfile-play.c.
-
-2004-03-15 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * acinclude.m4
- Add new macro (AC_C_STRUCT_HACK) to detect whether the C compiler allows
- the use of the what is known as the struct hack introduced by the 1999 ISO
- C Standard.
-
- * configure.ac
- The last release would not compile with gcc-2.95 due to the use of features
- (ie struct hack) introduced by the 1999 ISO C Standard.
- Add check to make sure compiler handles this and bomb out if it doesn't.
-
-2004-03-14 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * tests/write_read_test.tpl
- Fix compiler warning on Win32.
-
- * src/file_io.c
- Fix use of an un-initialised variable in Win32 stuff.
-
- * Win32/config.h examples/sndfile-play.c
- Win32 fixes.
-
-2004-03-10 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * configure.ac
- Fix bug which occurres when configuring for MinGW.
- If compiler is gcc and cross compiling use -nostdinc.
-
-2004-03-09 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/common.h src/aiff.c src/wav.c src/float32.c src/double64.c
- src/sndfile.c
- Fix a bug with PEAK chunk handling for files with more than 16 channels.
- Thanks to Remy Bruno for finding this.
-
-2004-03-08 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/common.c
- Fix a bug which was preventing WAV files being openned correctly if the
- file had a very large header. Thanks to Eldad Zack for finding this.
-
-2004-03-04 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * configure.ac src/file_io.c
- Fix cross-compiling from Linux to Win32 using the MinGW tools.
-
-2004-03-01 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/create_symbols_file.sh
- Christian Weisgerber pointed out that the shell script did not run on a
- real Bourne shell although it did run under Bash in Bourne shell mode.
-
- * src/create_symbols_file.py
- Rewrite of above in Python. Also add support for writing Win32 .def files.
- The Python script generates Symbols.linux, Symbols.darwin and
- libsndfile.def (Win32 version). These files get shipped with the tarball
- so there should not be necessary to run the Python script when building
- the code from the tarball.
-
- * configure.ac src/Makefile.am Win32/Makefile.am
- Hook new Python script into the build system.
-
-2004-02-25 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/configure.ac
- Add --enable-gcc-werror option and move GCC specific stuff down.
-
-2004-02-24 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * acinclude.m4 configure.ac
- Fix clip mode detection (tested in one of HP's testdrive Itanium II boxes).
-
- * src/file_io.c
- Added check for sizeof (off_t) != sizeof (sf_count_t) to prevent recurrence
- of missing large file support on Linux and Solaris.
-
-2004-02-19 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * examples/sndfile-play.c
- Fix a MacOSX specific bug which was caused by a space being inserted in
- the middle of a file name.
-
- * configure.ac src/Makefile.am examples/Makefile.am
- Fix a couple of MacOSX build issues.
-
-2004-02-17 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * doc/command.html
- Document SFC_SET_CLIPPING and SFC_GET_CLIPPING.
-
-2004-02-14 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * doc/*.html
- Applied patch from Frank Neumann (author of lakai) which fixes many minor
- typos in documentation. Thanks Frank.
-
-2004-02-13 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * ChangeLog
- Changed my email address throughout source and docs.
-
-2004-02-08 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/file_io.c
- Make sure config.h is included before stdio.h to make sure large file
- support is enabled on Linux (and Solaris).
-
- * tests/misc_test.c
- Disable update_header test on Win32. This should work but doesn't and
- I'm not sure why.
-
- * Make.bat Win32/Makefile.msvc
- Updates.
-
-2004-01-07 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/common.h
- Changed logindex, headindex and headend files of SF_PRIVATE from unsigned
- int to int to prevent weird arithmetic bugs.
-
- * src/common.c src/aiff.c src/wav.c src/w64.c
- Fixed compiler warnings resulting from above change.
-
-2004-01-06 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/common.c
- Fixed a bug in header reader for some files with data after the sample data.
-
-2003-12-29 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * tests/lossy_comp_test.c tests/Makefile.am
- Add tests for AIFF/IMA files.
-
-2003-12-26 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/macbinary3.c src/macos.c
- Two new files required for handling SD2 files.
-
- * src/common.h
- Add prototypes for functions in above two files.
-
- * src/Makefile.am
- Hook new files into build system.
-
-2003-12-21 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * configure.ac
- Add checks for mmap() and getpagesize() which might be used at some time
- for faster file reads.
- Add detection of MacOSX.
-
-2003-12-13 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * doc/FAQ.html
- Minor mods to pkg-config section.
-
-2003-12-12 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/create_symbols_file.sh
- Andre Pang (also known as Ozone) pointed out that on MacOSX, all non
- static symbols are exported causing troubles when trying to link
- libsndfile with another library which has any of the same symbols.
- He fixed this by supplying the MacOSX linker with a file containing
- all the public symbols so that only they would be exported and then
- supplied a patch for libsndfile.
- This wasn't quite ideal, because I would have to maintain two (3 if
- you include Win32) separate files containing the exported symbols.
- A better solution was to create this script which can generate a
- Symbols file for Linux, MacoSX and any other OS that supports
- minimising the number of exported symbols.
-
- * configure.ac src/Makefile.am
- Hook the new script into the build process.
-
-2003-12-10 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * doc/index.html
- Added comments about Steve Dekorte's SoundConverter scam.
-
-2003-12-07 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/file_io.c
- Axel Roebel pointed out that on Mac OSX a pipe is not considered a fifo
- (S_ISFIFO (st.st_mode) is false) but a socket (S_ISSOCK (st.st_mode) is
- true). The test has therefore been changed to is S_ISREG and anything
- which which does not return true for S_ISREG is considered a pipe.
-
-2003-11-25 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * tests/misc_test.c
- Fix update_header_test to pass SDS.
-
- * src/sds.c
- More minor fixes.
-
- * tests/floating_point_test.c
- Add test for SDS files.
-
- * src/command.c
- Add SDS to major_formats array.
-
-2003-11-24 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * tests/write_read_test.tpl tests/misc_test.c
- Add tests for SDS files.
-
- * src/sds.c
- Fix a bug in header update code.
-
-2003-11-23 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/sds.c
- Get file write working.
-
- * src/paf.c
- Fix a potential bug in paf24_seek().
-
-2003-11-04 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * doc/FAQ.html
- Add Q/A about u-law encoded WAV files.
-
- * Win32/*.h
- Updated so it compiles on Win32.
-
-2003-11-03 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * examples/sndfile-convert.c
- Add -alaw and -ulaw command line arguments.
-
- * configure.ac
- Add library versioning comments.
- Add arguments to AC_INIT.
-
-2003-10-28 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/file_io.c
- Ross Bencina has contributed code to replace all of the (mostly broken)
- Win32 POSIX emulation calls with calls the native Win32 file I/O API.
- This code still needs testing but is likely to be a huge improvemnt
- of support for Win32. Thanks Ross.
-
-2003-10-27 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/dwvw.c
- Removed filedes field from the DWVW_PRIVATE struct.
-
- * src/file_io.c
- Change psf_fopen() so it returns psf->error instead of the file descriptor.
- Add new functions psf_set_stdio() and psf_set_file().
-
- * src/sndfile.c
- Change these to work with changed psf_fopen() return value.
- Remove all uses of psf->filedes from sndfile, making it easier to slot native
- Win32 API file handling functions.
-
- * src/test_file_io.c
- Minor changes to make it compile with new file_io.c stuff.
-
-2003-10-26 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/gsm610.h
- Rename a variable from true to true_flag. As Ross Bencina points out,
- true is defined in the C99 header <stdbool.h>.
-
- * src/file_io.c
- If fstat() fails, return SF_TRUE instead of -1 (Ross Bencina).
-
-2003-10-09 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/common.h
- Increase the size of SF_BUFFER_LEN and SF_HEADER_LEN.
-
- * src/sndfile.c
- Fix sf_read/write_raw which were dividing by psf->bytwidth and
- psf->blockwidth which can both be zero.
-
- * examples/sndfile-info.c
- Increase size of BUFFER_LEN.
-
-2003-09-21 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * configure.ac
- Add checks for <sys/wait.h> and ssize_t.
- Other Win32/MinGW checks.
-
- * src/aiff.c src/au_g72x.c src/file_io.c src/gsm610.c src/interleave.c
- src/paf.c src/sds.c src/svx.c src/voc.c src/w64.c src/wav.c src/xi.c
- Fix compiler warnings.
-
-2003-09-20 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * tests/scale_clip_test.tpl
- Add definition of M_PI if needed.
-
-2003-09-19 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * configure.ac
- Detect if S_IRGRP is declared in <unistd.h>.
-
- * src/file_io.c tests/*.tpl tests/*.c
- More fixes for Win32/MSVC++ and MinGW. MinGW does have <unistd.h> but that
- file doesn't declare S_IRGRP.
-
-2003-10-18 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/config.h.in
- Add comment stating that the sf_count_t typedef is determined when
- libsndfile is being compiled.
-
- * tests/utils.tpl
- Modified so that utils.c gets one copy of the GPL and not two.
-
-
-2003-09-17 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * Win32/unistd.h src/sf_unistd.h
- Move first file to the second. This will help for Win32/MSVC++ and MinGW.
-
- * Win32/Makefile.am src/Makefile.am
- Changed in line with above.
-
- * Win32/Makefile.msvc
- Removed "/I Win32" which is no longer required.
-
- * src/file_io.c src/test_file_io.c tests/*.tpl tests/*.c
- If HAVE_UNISTD_H include <unistd.h> else include <sf_unistd.h>. This should
- work for Win32, MinGW and other fakes Unix-like OSes.
-
- * src/*.c
- Removed #include <unistd.h> from files which didn't need it.
-
-2003-09-16 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * libsndfile.spec.in
- Apply fix from Andrew Schultz.
-
-2003-09-07 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/vox_adpcm.c
- Only set psf->sf.samplerate if the existing value is invalid.
-
-2003-09-06 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * examples/sndfile-play.c
- Started adding support for ALSA output.
-
-2003-09-04 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/sndfile.h.in
- Removed <stdlib.h> from sndfile.h.
-
- * src/*.c examples/*.c tests/*.c tests/*.tpl
- Added <stdlib.h> where needed.
-
-2003-09-02 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/common.h
- Added ARRAY_LEN, SF_MAX and SF_MIN macros.
-
-2003-08-19 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * doc/index.html
- Remove statements about alternative licensing arrangements.
-
-2003-08-17 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * MacOS MacOS9 Makefile.am configure.ac
- Change directory name from MacOS to MacOS9
-
- * MacOS9/MacOS9-readme.txt
- Change name to make it really obvious, add text to top of file to make it
- still more obvious again.
-
-2003-08-16 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/test_log_printf.c
- Add tests for %u conversions.
-
- * src/common.c
- Fix psf_log_printf() %u conversions.
-
-2003-08-15 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/aiff.c
- Fixed a bug where opening a file with a non-trival header in SFM_RDWR mode
- would over-write part of the header. Thanks to Axel Roebel for pointing
- this out. Axel also provided a patch to fix this but I came up with a
- neater and more general solution.
- Return error when openning an AIFF file with data after the SSND chunk
- (Thanks Axel Roebel).
-
- * tests/aiff_rw_test.c
- Improvements to test program which will later allow it to be generalised to
- test WAV, SVX and others as required.
-
-2003-08-14 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * tests/pipe_test.c
- Add useek_pipe_rw_test() submitted by Russell Francis.
-
- * src/sndfile.c
- In sf_open_fd(), check if input file descriptor is a pipe.
-
- * src/sndfile.[ch]
- Fix typo in variable name do_not_close_descriptor.
-
-2003-08-13 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/test_log_printf.c
- Improve the tests for %d and %s conversions.
-
- * src/common.c
- Fixed a few problems in psf_log_printf() found using new tests.
-
-2003-08-06 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * configure.ac
- Add -Wwrite-strings warning to CFLAGS if the compiler is GCC. Thanks to
- Peter Miller (Aegis author) for suggesting this and supplying a patch.
-
- * src/*.c examples/*.c tests/*.c
- Fix all compiler warnings arising from the above.
-
-2003-08-02
-
- * tests/aiff_rw_test.c tests/Makefile.am
- New test program to check for errors re-writing the headers of AIFC files
- opened in mode SFM_RDWR.
-
-2003-07-21 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * examples/sndfile-play.c
- Applied a patch from Tero Pelander to allow this program to run on systems
- using devfs which used /dev/sound/dsp instead of /dev/dsp.
-
-2003-07-11 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * doc/new_file_type.HOWTO
- Updated document. Still incomplete.
-
-2003-06-29 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/sndfile.c
- Fix VALIDATE_SNDFILE_AND_ASSIGN_PSF which was returning an error rather
- than saving it and returning zero.
-
-2003-06-25 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/file_io.c
- Two fixes for Mac OS9.
- Fix all casts from sf_count_t to ssize_t (not size_t).
-
-2003-06-22 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/wav.c
- Fix for reading files with RIFF length of 8 and data length of 0.
-
-2003-06-14 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/*.c tests/*.c tests/*.tpl
- Added comments to mark code for removal when make Lite version of
- libsndfile.
-
-2003-06-09 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * examples/sndfile-convert.c
- Add extra error checking for unrecognised arguments.
-
-2003-06-08 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/ima_adpcm.c
- Started adding code to write IMA ADPCM encoded AIFF files.
-
- * src/test_log_printf.c src/Makefile.am
- New file to test psf_log_printf() function and add hooks into build system.
-
- * src/common.c
- Move psf_log_printf() function to top of the file and only compile the rest
- of the file if if PSF_LOG_PRINTF_ONLY is not defined.
-
-2003-06-03 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * Win32/config.h Win32/sndfile.h
- Updated with new config variables.
-
- * Win32/unistd.h src/file_io.c
- Added implementation of S_ISFIFO macro which Win32 seems to lack and is
- used in src/file_io.c.
-
- * tests/utils.tpl
- Added #include <unitstd.h> to pull in Win32/unistd.h so it compiles for
- Win32.
-
- * src/Makefile.msvc
- Added src\test_file_io.exe build target and run this as the very first
- test.
-
- * tests/win32_test.c
- Add support for testing Cygwin32.
-
- * configure.ac
- Detect POSIX fsync() and fdatasync() functions.
-
- * src/file_io.c
- If compiling for Cygwin, call fsync() before calling fstat() to retrieve
- file length.
-
- * tests/pcm_test.tpl
- Add a test for lrintf() function. This was required to detect a really
- broken lrint() and lrintf() on Cygwin.
-
- * tests/misc_test.c
- Don't run permission test when compiling under Cygwin.
-
- * src/float_cast.h
- Fix fallback macro for lrint() and lrintf() to cast to long instead of int
- to match official function prototypes.
-
-2003-06-02 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * examples/sndfile-convert.c
- Modifications to improve accuracy of conversions; use double data for
- floating point and int for everything else.
-
- * src/ima_apdcm.c
- Completed work on decoding IMA ADPCM encoded AIFF files. Still need to
- get encoding working.
-
-2003-05-28 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/aiff.c src/ima_adpcm.c
- Start working on getting IMA ADPCM encoded AIFF files working.
-
-2003-05-27 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * configure.ac
- Fixed the touch command for when the autogen program is not found (Matt
- Flax).
-
- * src/ulaw.c src/alaw.c
- Made these pipe-able.
-
-2003-05-24 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/paf.c src/ircam.c
- Fixed writing to pipe.
-
- * src/wav.c src/aiff.c src/nist.c src/mat*.c src/svx.c src/w64.c
- Return SFE_NO_PIPE_WRITE if an attempt is made to write to a pipe.
-
-2003-05-23 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * examples/sndfile-info.c
- Modified to detect unknown file lengths.
-
- * src/mat4.c
- Fix reading from a pipe.
-
-2003-05-22 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * tests/pipe_test.c
- Add more file types to tests.
-
- * src/mat4.c
- Removed explicit setting of psf->sf.seekable to SF_TRUE.
-
- * tests/utils.tpl
- Add macro for generating and check data in the stdio and pipe tests.
-
- * tests/stdout_test.c tests/stdin_test.c
- Use the above macro to generate known data on output and check data on
- input.
-
- * src/voc.c src/htk.c common.h sndfile.c
- Disallow reading/writing VOC and HTK files from/to pipes be returning new
- error values.
-
- * src/w64.c
- Fixes to allow reading from a pipe.
-
-2003-05-21 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * configure.ac src/sndfile.h.in
- When the configure script determines the sizeof (sf_count_t), also set the
- value of SF_COUNT_MAX in sndfile.h.
-
- * configure.ac
- Remove -pedantic flag from default GCC compiler flags.
-
- * tests/pipe_test.c
- Add a pipe_read_test() before doing pipe_write_test().
-
- * tests/scale_clip_test.c
- Add test to make sure non-normalized values also clip in the right way.
-
-2003-05-18 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * configure.ac
- Add test to detect processor clipping capabilities.
-
- * tests/stdin_test.c tests/stdout_test.c
- Fix a pair of compiler warnings.
-
- * src/common.h
- Add new pipeoffset field to SF_PRIVATE. This will contain the current file
- offset when operating on a pipe.
-
- * src/common.c
- Removed direct calls to psf_fread()/psf_fseek()/psf_fgets() etc from
- psf_binheader_readf and redirect them to new buffered versions
- header_read(), header_seek() and header_gets().
- Add "G" format specifier to emulate fgets() functionality with buffering.
- This will allow reading some file types from pipes.
-
- * src/file_io.c
- When the file descriptor is a pipe, manintain psf->pipeoffset.
-
- * src/pvf.c
- Change use of psf_fgets() to psf_binheader_readf() as required but changes to header re
-
- * src/au.c
- Fix reading from a pipe.
-
-2003-05-17 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/pcm.c
- Add clipping versions of the f2XXX_array() functions to allow option of
- clipping data that would otherwise overflow.
-
- * tests/scale_clip_test.tpl tests/scale_clip_test.def
- New files test that clipping option does actually work.
-
-2003-05-14 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * doc/index.html
- Fixed a typo ("OS(" instead of "OS9").
-
-2003-05-13 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * tests/open_fail_test.c
- Include <string.h> to prevent warning message of missing declaration of
- memset().
-
-2003-05-12 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/common.h
- Add new "add_clipping" field to SF_PRIVATE.
-
- * src/sndfile.h.in src/sndfile.c
- Add command SFC_SET_CLIPPING which sets/resets add_clipping field.
-
-2003-05-11 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * doc/api.html
- Add docs for sf_set_string() and sf_get_string().
-
- * src/common.h src/sndfile.c
- Add new SFE_STR_BAD_STRING error.
-
- * tests/stdin_test.c tests/stdout_test.c
- Removed all non-error print statements.
-
- * tests/stdio_test.c tests/pipe_test.c tests/Makefile.am
- Add print statements removed from two files above.
-
-2003-05-10 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * libsndfile.spec.in
- Fixed a coulpe of minor errors discovered by someone calling themselves
- Agent Smith.
-
- * src/common.c src/common.h src/file_io.h
- Added is_pipe field to SF_PRIVATE and declaration of psf_is_pipe()
- function. (Axel Roebel)
-
- * src/sndfile.c
- Fixed determination of whether the file is a pipe. (Axel Roebel)
-
- * src/paf.c
- Force paf24 to start with undefined mode. (Axel Roebel)
-
- * tests/pipe_test.c
- Mods to make this test work and actually do the test on RAW files. (Axel
- Roebel).
-
-2003-05-05 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/sndfile.c
- Fixed a potential bug where psf->sf.seekable was being set to FALSE when
- operating on stdin or stdout but then the default initialiser was reseting
- it to TRUE. Thanks to Axel Roebel.
-
- * src/aiff.c
- Fixed a bug in the header parser where it was not handling an odd length
- COMM chunk correctly. Thanks to Axel Roebel.
-
- * src/test_file_io.c
- Add more tests.
-
- * tests/win32_test.c
- New file for showing the bugs in the Win32 implementation of the POSIX API.
- It also runs on Linux for sanity checking.
-
- * tests/Makefile.am Win32/Makefile.msvc
- Hook the new test program into the build system.
-
-2003-05-04 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/test_file_io.c
- New test program to test operation of functions defined in file_io.c. This
- should make supporting win32 significantly easier.
-
- * src/Makefile.am
- Hook new test program into the build system.
-
- * src/file_io.c
- Add compile/run time check that sizeof statbuf.st_size and sf_count_t are
- the same.
-
- * src/common.h src/sndfile.c
- Added new error code and error message for new check.
-
- * tests/benchmark.tpl
- Fix to use frames instead of samples in SF_INFO.
-
-2003-05-03 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/file_io.c
- More stuffing about working around PLAIN OLD-FASHIONED **BUGS** in Win32.
-
- * examples/sndfile-info.c
- Applied patch from Conrad Parker to add "--help" and "-h" options as
- well as an improved usage message.
-
-2003-05-02 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/au.c
- Added embedded file support.
-
- * tests/multi_file_test.c
- Added tests for embedded AU files.
- Added verbose testing mode.
-
- * src/common.h src/sndfile.c
- Added an embedded AU specific error code and message.
-
- * src/wav.c
- Added patch from Conrad Parker which filled in a little more information
- about ACIDized WAV files.
-
-2003-04-30 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/file_io.c
- Fixed Win32 version of psf_fseek() which was calling psf_get_filelen()
- which was in turn calling psf_fseek() which in the end blew the stack.
- Now of course this would have been easy to find on Linux, but this blow
- up was happening in kernel32.dll and the fscking MSVC++ debugger couldn't
- figure out what call caused this (it couldn't even tell me the stack had
- overflowed) and was absolutley useless for this debugging exercise.
- On top of that, the reason I got into this mess was that windoze doesn't
- have a working fstat() function which can return file lengths > 2 Gig. It
- HAS a fscking _fstati64() but the file length value is only updated AFTER
- the bloody file is closed. That makes it completely useless.
- How the hell do people stand working on this crap excuse of an OS?
-
-2003-04-29 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * Win32/unistd.h src/file_io.c
- Moved definitions of S_IGRP etc from file_io.c to unistd.h so that these
- can be used in the test programs.
-
- * Win32/libsndfile.def
- Added sf_open_fd.
-
- * Win32/sndfile.h
- Updated to match src/sndfile.h.in.
-
- * Win32/Makefile.msvc
- Added dither.c and htk.c to libsndfile.dll target.
-
-2003-04-28 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/file_io.c
- First attempt at getting the Win32 versions of the these functions working.
- They still need to be tested.
-
-2003-04-27 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/strings.c
- Found and fixed a bug which was causing psf_store_string() to fail on
- Motorola 68k processors. Many thanks fo Joshua Haberman (Debian maintainer
- of libsndfile) for compiling and running debug code to help me debug the
- problem.
-
-2003-04-26 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/sndfile.c src/file_io.c src/wav.c src/aiff.c
- Much hacking to get reading and writing of embedded files working (ie sound
- files at a non-zero files offset).
-
- * doc/embedded_files.html
- First pass atempt at documenting reading/writing embedded files.
-
-2003-04-21 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * doc/FAQ.html
- Updated answer to "Why doesn't libsndfile do interleaving/de-interleaving?"
-
-2003-04-19 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/wav.c src/aiff.c
- Fix retrieving and storing of string data from files. Need to be careful
- about using psf->buffer for strings.
-
-2003-04-18 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/file_io.c
- Fix psf_fseek() for seeks withing embedded files.
-
-2003-04-15 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/sndfile.h.in
- Changed the definition of SNDFILE slightly to produce warnings when it isn't
- used correctly. This should have zero affect in code which uses the SNDFILE
- type correctly.
-
- * src/sndfile.c
- Fixed a few compiler warnings cause by the changes to the SNDFILE type.
-
-2003-04-12 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * doc/FAQ.html
- Added question and answer to the question "How about adding the ability
- to write/read sound files to/from memory buffers?".
-
-2003-04-08 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * tests/write_read_test.tpl
- Removed un-needed enums declaring TRUE and FALSE and replaced usage of
- these with SF_TRUE and SF_FALSE.
-
- * tests/multi_file_test.c
- New test program to test sf_open_fd() on files containing data other than
- a single sound file.
-
-2003-04-06 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/file_io.c
- When creating files, set the readable by others flag. This still allows
- further restrictions to be enforced by use of the user's umask. Fix
- suggested by Eric Lyon.
-
-2003-04-05 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/sndfile.h.in src/sndfile.c
- Changed sf_open_fd(). Dropped offset parameter and added a close_desc
- parameter. If close desc is TRUE, the file descritpor passed into the
- library will be closed when sf_close() is called.
-
- * tests/utils.tpl
- Modified call to sf_open_fd() to set close_desc parameter to SF_TRUE.
-
-2003-04-04 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * tests/write_read_test.tpl
- Add a string (using sf_set_string() function) before and after data section
- of all files. This will make sure that if string data can be added, it
- doesn't overwrite real audio data.
-
-2003-04-02 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/sndfile.c
- Started work on supporting a non-zero offset parameter for sf_open_fd ().
-
- * src/<file header parsers>.c
- Removed many uses of psf_fseek (SEEK_END) which to allow for future use of
- sf_open_fd() with non-zero offset.
- Associated refactoring.
-
- * src/aiff.c
- Implemented functionality required to get sf_get_string() and
- sf_set_string() working for AIFF files.
-
-2003-04-01 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * tests/utils.tpl
- Modified test_open_file_or_die() to alternately use sf_open() and
- sf_open_fd().
-
- * src/svx.c
- Fixed a bug which occurred when openning an existing file for read/write
- using sf_open_fd(). In this case, the existing NAME chunk needs to be
- read into psf->filename.
- Fixed printing of sf_count_t types to logbuffer.
-
-2003-03-31 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/sndfile.h.in
- Added prototype for new function sf_open_fd().
-
- * src/sndfile.c
- Moved most of the code in sf_open() to a new function psf_open_file().
- Created new function sf_open_fd() which also uses psf_open_file() but
- does not currently support the offset parameter.
-
- * doc/api.html
- Document sf_open_fd().
-
-2003-03-09 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/sndfile.c
- Fixed a memory leak reported by Evgeny Karpov. Memory leak only occurred
- when an attempt was made to read and the open() call fails.
-
-2003-03-08 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * tests/open_fail_test.c
- New test program to check for memory leaks when sf_open fails on a valid
- file. Currently this must be run manually under valgrid.
-
- * tests/Makefile.am
- Hook new test program into build.
-
-2003-03-03 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * Octave/sndfile_save.m Octave/sndfile_play.m
- Added a -mat-binary option to the octave save command to force the output
- to binary mode even if the user has set ascii data as the default. Found
- by Christopher Moore.
-
-2003-02-27 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * doc/dither.html
- New file which will document the interface which allows the addition of
- audio dither when sample word sizes are being reduced.
-
- * src/dither.c
- More work.
-
-2003-02-26 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * tests/misc_test.c
- In update_header_test(), make HTK files a special case.
-
- * doc/index.html
- Added HTK to the feature matrix.
-
-2003-02-25 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/htk.c
- New file for reading/writing HMM Tool Kit files.
-
- * src/sndfile.h.in src/sndfile.c src/command.c src/Makefile.am
- Hook in htk.c
-
- * tests/write_read_test.tpl tests/misc_test.c tests/Makefile.am
- Add tests for HTK files.
-
-2003-02-22 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/wav.c
- Fixed a bug where the LIST chunk length was being written incorrectly.
-
- * tests/string_test.c
- Added call to check_log_buffer().
- Minor cleanups.
-
-2003-02-10 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/wav_w64.h
- Applied patch from Antoine Mathys to add extra WAV format definitions and
- a G72x_ADPCM_WAV_FMT struct definition.
-
- * src/wav_w64.c
- Applied patch from Antoine Mathys which converts wav_w64_format_str() from
- one huge inefficient switch statement to a binary search.
-
- * tests/string_test.c
- Dump log buffer if tests fail.
-
-2003-02-07 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * tests/string_test.c
- David Viens supplied some modifications to this file which showed up a bug
- when using sf_set_string() and the sf_writef_float() functions.
-
- * src/sndfile.c
- Fixed the above bug.
-
-2003-02-06 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * doc/FAQ.html
- Added Q and A on how to detect libsndfile in configure.in (at the suggestion
- of Davy Durham).
-
-2003-02-05 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/sndfile.h.in
- Add enums and typedefs for dither.
- Deprecate SFC_SET_ADD_DITHER_ON_WRITE and SFC_SET_ADD_DITHER_ON_READ, to be
- replaced with SFC_SET_DITHER_ON_WRITE and SFC_SET_DITHER_ON_READ which will
- allow different dither algorithms to be enabled.
- Added SFC_GET_DITHER_INFO_COUNT and SFC_GET_DITHER_INFO.
-
- * src/sndfile.h.in src/Version_script.in Win32/libsndfile.def.
- Added public sf_dither_*() functions.
-
- * src/sndfile.c
- Implement commands above.
-
- * src/dither.c
- More work. Framework and external hooks into dither algorithms complete.
-
-2003-02-03 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * doc/version-1.html libsndfile_version_convert.py
- Remove redundant files.
-
- * doc/index.html doc/api.html
- Remove links to version-1.html.
-
- * src/dither.c
- New file to allow the addition of audio dither on input and output.
-
- * src/common.h
- Add prototype for dither_init() function.
-
- * Makefile.am doc/Makefile.am
- Changes for added and removed files.
-
-2003-02-02 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * Win32/Makefile.msvc
- Changes to force example binaries to be placed in the top level directory
- instead of the examples/ directory.
- Add src/strings.c and src/xi.c to the build.
- Add string_test to build and to tests on WAV files.
-
- * doc/index.html
- Added XI to support matrix.
-
-2003-01-27 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/sndfile.h.in
- Added prototypes for sf_get_string() and sf_set_string() and SF_STR_*
- enum values.
-
- * src/sndfile.c
- Added public interface to sf_get_string() and sf_set_string().
-
- * src/wav.c
- Added code for setting and getting strings in WAV files.
-
- * tests/string_test.c
- New test program for sf_get_string() and sf_set_string() functionality.
-
- * tests/Makefile.am
- Hook new test program into build and test framework.
-
-2003-01-26 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/common.h
- Added fields to SF_PRIVATE for string data needed to implement
- sf_get_string() and sf_set_string().
-
- * src/strings.c
- New file for storing and retrieving strings to/from files.
-
- * src/Makefile.am
- Added strings.c to build.
-
-2003-01-25 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/xi.c
- Read seems to be working so looking at write.
-
- * src/sndfile.h.in
- Added SF_FORMAT_XI, SF_FORMAT_DPCM_8 and SF_FORMAT_DPCM_16 enum values.
-
- * tests/floating_point_test.c tests/lossy_comp_test.c tests/Makefile.am
- Added test for 8 and 16 bit XI format files.
-
-2003-01-24 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * doc/index.html
- Added a non-lawyer readable summary of the licensing provisions as
- suggested by Steve Dekorte.
-
-2003-01-23 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/wav.c
- Fixed a compiler warning found by Alexander Lerch.
-
-2003-01-18 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * configure.ac
- Fixed the multiple linking of libm.
-
-2003-01-17 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * Win32/Makefile.mcvs
- Added comments on the correct way to set up the MSVCDir environment
- variable.
-
- * doc/win32.html
- Add on how to set up the MSVCDir environment variable.
-
-2003-01-15 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * examples/sndfile-play.c examples/sndfile-info.c
- When run on Win32 without any command line parameters print a message and
- then sleep for 5 seconds. This means the when somebody double clicks on
- these programs in explorer the user will actually see the message.
-
-2003-01-14 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * tests/misc_test.c
- Bypass permission test if running as root because root is allowed to open
- a readonly file for write.
-
-2003-01-08 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * Win32/Makefile.msvc
- Added pvf.c and xi.c source files to project.
-
- * src/sndfile.h
- Updated for PVF files.
-
-2003-01-07 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/sndfile.c
- Modified validate_sfinfo() to force samplerate, channels and sections
- to be >= 1.
- In format_from_extension() replaced calls to does_extension_match()
- with strcmp().
-
- * src/xi.c
- More work.
-
-2003-01-06 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * doc/Makefile.am
- Added octave.html which had been left out. Found by Jan Weil.
-
-2003-01-05 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/pvf.c src/common.h src/sndfile.c
- Fixed error handling for PVF files.
-
- * src/xi.c
- New file for handling Fasttracker 2 Extended Instrument files. Not working
- yet and included when configured with --enable-experimental.
-
- * src/sndfile.c src/common.h
- Hooked in new file xi.c.
-
-2002-12-30 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/rx2.c
- Added a patch from Marek Peteraj which sheds a little more light on the
- slices within an RX2 file. Still need to find out data encoding.
-
-2002-12-20 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/wav.c
- Started work on decoding 'acid' and 'strc' chunks.
-
-2002-12-14 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * tests/peak_check_test.c
- Minor cleanup.
-
-2002-12-12 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * tests/write_read_test.tpl
- Added check to make sure no error was generated when an attempt was made to
- read past the end of the file.
-
-2002-12-11 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * doc/lists.html
- Added "mailto" links for all three lists.
-
- * src/pvf.c
- New file for Portable Voice Format files.
-
- * src/sndfile.h.in src/sndfile.c src/common.h src/command.c src/Makefile.am
- Added hooks for SF_FORMAT_PVF format files.
-
- * tests/write_read_test.tpl tests/std*.c
- Add tests for SF_FORMAT_PVF.
-
- * doc/index.html
- Add PVF to the compatibility matrix.
-
- * src/pcm.c src/alaw.c src/ulaw.c src/float32.c src/double64.c
- Previously, attempts to read beyond the end of a file would set psf->error
- to SFE_SHORT_ERROR. This behaviour diverged from the behaviour of the POSIX
- read() call but has now been fixed.
- Attempts to read beyond the end of the file will return a short read count
- but will not longer set any error.
-
-2002-12-09 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/sndfile.c
- Add more sanity checking when opening a RAW file for read. When format is
- not RAW, zero out all members of the SF_INFO struct.
-
- * tests/raw_test.c
- Add bad_raw_test() to check for above problem.
-
- * tests/stdin_test.c examples/sndfile-info.c
- Set the format field of the SF_INFO struct to zero before calling
- sf_open().
-
- * doc/api.html
- Add information about the need to set the format field of the SF_INFO struct
- to zero when opening non-RAW files for read.
-
- * configure.ac
- Removed use of conversion script on Solaris. Not all Solaris versions
- support it.
-
- * doc/lists.html
- New file containg details of the mailing lists.
-
- * doc/index.html
- Add a link to the above new file.
-
-2002-12-04 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * tests/dft_cmp.c
- Fixed a SIGFPE on Alpha caused by a log10 (0.0). Thanks to Joshua Haberman
- for providing the gdb traceback.
-
-2002-11-28 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/wav.c
- Added more capabilities to 'smpl' chunk parser.
-
- * src/sndfile.c
- Fixed some (not all) possible problems found with Flawfinder.
-
-2002-11-24 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/sndfile.c
- Fixed a bug in sf_seek(). This bug could only occur when an attempt was
- made to read beyond the end and then sf_seek() was called with a whence
- parameter of SEEK_CUR.
-
- * src/file_io.c
- Win32's _fstati64() does not work, it returns BS. Re-implemented
- psf_get_filelen() in terms of psf_fseek().
-
- * tests/write_read_test.tpl
- Add a test to detect above bug.
-
- * src/float_cast.h
- Modification to prevent compiler warnings on Mac OS X.
-
- * src/file_io.c
- Fixes for windows (what a f**ked OS).
-
-2002-11-08 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * configure.ac
- Disable use of native lrint()/lrintf() on Mac OSX. These functions exist on
- Mac OSX 10.2 but not on 10.1. Forcing the use of the versions in
- src/float_cast.h means that a library compiled on 10.2 will still work on
- 10.1.
-
-2002-11-06 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * configure.in configure.ac
- Renamed configure.in to configure.ac as expected by later versions of
- autoconf.
- Slight hacking of configure.ac to work with version 2.54 of autoconf.
- Changed to using -dumpversion instead of --version for determining GCC
- version numer as suggested by Anand Kumria.
-
- * src/G72x/Makefile.am
- Slight hacking required for operation with automake 1.6.3.
-
-2002-11-05 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/common.c
- In psf_binheader_readf() changed type parameter type "b" type from size_t
- to int to prevent errors on IA64 CPU where sizeof (size_t) != sizeof (int).
- Thanks to Enrique Robledo Arnuncio for debugging this.
-
-2002-11-04 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * test/command_test.tpl
- Changed test value so test would pass on Solaris.
-
- * src/Version_script.in
- Modified version numbering so that later versions of 1.0.X can replace
- earlier versions without recompilation.
-
- * src/vox_adpcm.c
- Fixed bug causing short reads.
-
-2002-11-03 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * test/floating_point_test.c
- Code cleanup using functions from util.c.
- Add test for IEEE replacement floats and doubles.
-
-2002-11-01 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/wav.c
- Fixed a possible divide by zero error when read the 'smpl' chunk. Thanks to
- Serg Repalov for the example file.
-
- * tests/pcm_test.tpl
- Used sf_command (SFC_TEST_IEEE_FLOAT_REPLACE) to test IEEE replacement code.
- Clean up pcm_double_test().
-
- * src/float32.c src/double64.c
- Force use of IEEE replacement code using psf->ieee_replace is TRUE,
- Print message to log_buffer as well.
- Rename all broken_read_* and broken_write* functions to replace_read_* and
- replace_write_*.
-
- * tests/util.tpl
- Added string_in_log_buffer().
-
- * tests/pcm_test.tpl
- Use string_in_log_buffer() to ensure that IEEE replacement code has been
- used.
-
- * configure.in
- Removed --enable-force-broken-float option. IEEE replacement code is now
- always tested.
-
-2002-10-31 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/double64.c
- Implement code for read/writing IEEE doubles on platforms where the native
- double format is not IEEE.
-
- * src/float32.c src/common.h
- Remove float32_read() and float32_write(). Replace with float32_le_read(),
- float32_be_read(), float32_le_write() and float32_be_write() to match stuff
- in src/double64.c.
-
- * src/common.c
- Fix all usage of float32_write().
-
- * src/sndfile.h.in
- Added SFC_TEST_IEEE_FLOAT_REPLACE command (testing only).
-
- * src/common.h
- Added SF_PRIVATE field ieee_replace.
-
- * src/sndfile.c
- In sf_command() set/reset psf->ieee_replace.
-
-2002-10-26 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * tests/pcm_test.tpl
- Fixed a problem when testing with --enable-force-broken-float. The test was
- generating a value of negative zero and the broken float code is not able
- to write negative zero. Removing the negative zero fixed the test.
-
-2002-10-25 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/file_io.c
- Added fix for Cygwin (suggested by Maros Michalik).
-
-2002-10-23 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/file_io.c
- Improved error detection and handling.
-
- * src/file_io.c src/common.h
- Removed functions psf_ferror() and psf_clearerr() which were redundant
- after above improvements.
-
- * src/aiff.c src/svx.c src/w64.c src/wav.c
- Removed all use of psf_ferror() and psf_clearerr().
-
- * src/sndfile.c
- Removed #include of <stdio.h>, <unistd.h>, <fcntl.h> and <math.h> which
- are no longer needed.
-
- * tests/misc_test.c
- Added test to make sure the correct error message is returned with an
- existing read-only file is openned for write.
-
-2002-10-21 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * doc/index.html doc/api.html
- Updated for OKI Dialogic ADPCM files.
-
- * src/command.c
- Added VOX ADPCM to sub_fomats.
-
-2002-10-20 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/vox_adpcm.c src/Makefile.am
- New file for handling OKI Dialogic ADPCM files.
-
- * src/sndfile.h
- Add new subtype SF_FORMAT_VOX_ADPCM.
-
- * src/sndfile.c
- Renamed function is_au_snd_file () to format_from_extenstion () and expanded
- its functionality to detect headerless VOX files.
-
- * src/raw.c
- Added hooks for SF_FORMAT_VOX_ADPCM.
-
- * examples/sndfile-info.c
- Print out file duration (suggested by Conrad Parker).
-
- * libsndfile.spec.in
- Force installation of sndfile.pc file (found by John Thompson).
-
- * tests/Makefile.am tests/lossy_comp_test.c tests/floating_point_test.c
- Add tests for SF_FORMAT_VOX_ADPCM.
-
-2002-10-18 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * tests/misc_test.c
- Add test which attempts to write to /dev/full (on Linux anyway) to check
- for correct handling of writing to a full filesystem.
-
- * src/sndfile.c
- Return correct error message if the header cannot be written because the
- filesystem is full.
-
- * tests/util.tpl
- Corrected printing of file mode in error reporting.
-
- * src/mat5.c
- Fixed a bug where a MAT5 file written by libsndfile could not be opened by
- Octave 2.1.36.
-
-2002-10-13 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/common.h src/file_io.c
- All low level file I/O have been modified to be better able to report
- system errors resulting from calling system level open/read/write etc.
-
- * src/*.c
- Updated for compatibility with above changes.
-
- * examples/cooledit-fixer.c
- New example program which fixes badly broken file created by Syntrillium's
- Cooledit which are marked as containing PCM samples but actually contain
- floating point data.
-
- * examples/Makefile.am
- Hooked cooledit-fixer into the build system.
-
-2002-10-10 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * doc/command.html
- Document SFC_GET_FORMAT_INFO.
-
-2002-10-09 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * examples/wav32_aiff24.c examples/sndfile2oct.c examples/sfhexdump.c
- examples/sfdump.c
- Removed these files because they weren't interesting.
-
- * examples/sfconvert.c examples/sndfile-convert.c
- Renamed the first to the latter.
-
- * examples/Makefile.am
- Added sndfile-convert to the bin_PROGRAMS, so it is installed when the lib
- is installed.
- Removed old programs wav32_aiff24 and sndfile2oct.
-
- * man/sndfile-convert.1
- New man page.
-
- * examples/sndfile-convert.c
- Added some gloss now that sndfile-convert.c is an installed program.
-
- * src/sndfile.h.in src/sndfile.c src/common.h src/command.h
- Added command SFC_GET_FORMAT_INFO.
-
- * tests/command_test.c
- Added tests form SFC_GET_FORMAT_INFO.
-
-2002-10-08 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/sndfile.c
- In sf_format_check() return error if samplerate < 0.
-
-2002-10-07 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/aiff.c
- Fixed bug in handling of COMM chunks with a 4 byte encoding byte but no
- encoding string.
-
-2002-10-06 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/sndfile.c
- Fixed repeated word in an error message.
-
-2002-10-05 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * doc/index.html
- Improved advertising in Features section.
-
-2002-10-04 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/wav.c
- Added decoding of 'labl' chunks within 'LIST' chunks.
-
- * src/common.h
- Added (experimental only) SF_FORMAT_OGG and SF_FORMAT_VORBIS and definition
- of ogg_open(). This is nowhere near working yet.
-
- * src/sndfile.c
- Added detection of 'OggS' file marker and added call to ogg_open() to
- switch statement.
-
- * src/ogg.c
- New file. Very early start of Ogg Vorbis support.
-
- * src/wav.c
- Added handling of brain-damaged and broken Cooledit "32 bit 24.0 float
- type 1" files. These files are marked as being 24 bit WAVE_FORMAT_PCM with
- a block alignment of 4 times the numbers of channels but are in fact 32 bit
- floating point.
-
-2002-10-02 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * configure.in
- Modified option --enable-experimental to set ENABLE_EXPERIMENTAL_CODE in
- config.h to either 0 or 1.
-
- * src/sndfile.c
- Modify sf_command (SFC_GET_LIB_VERSION) to append "-exp" to the version
- string if experimental code has been enabled.
-
-2002-10-01 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/Makefile.am
- Added -lm to libsndfile_la_LIBADD. This means that -lm is not longer needed
- in the link line when linking something to libsndfile.
-
- * tests/Makefile.am examples/Makefile.am
- Removed -lm from all link lines.
-
- * sndfile.pc.in
- Removed -lm from Libs line.
-
-2002-09-24 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/file_io.c
- Removed all perror() calls.
-
- * src/nist.c
- Removed calls to exit() function.
- Added check to detect NIST files dammaged from Unix CR -> Win32 CRLF
- conversion process.
-
-2002-09-24 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/sndfile.h.in src/sndfile.c
- New function sf_strerror() which will eventually replace functions
- sf_perror() and sf_error_str().
- Function sf_error_number() has also been changed, but this was documented
- as being for testing only.
-
- * doc/api.html
- Documented above changes.
-
- * tests/*.c examples/*.c
- Changed to new error functions.
-
-2002-09-22 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * configure.in
- Detect GCC version, and print a warning message about writeable strings
- it GCC major version number is less than 3.
-
-2002-09-21 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/sndfile.h.in doc/api.html
- Documentation fixes.
-
-2002-09-19 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/Version_script.in src/Makefile.am configure.in
- Use the version script to prevent the exporting of all non public symbols.
- This currently only works with Linux. Will test on Solaris as well.
-
- * src/float_cast.h
- Added #ifndef to prevent the #warning directives killing the SGI MIPSpro
- compiler.
-
- * src/au_g72x.c src/double64.c src/float32.c src/gsm610.c src/ima_adpcm.c
- src/ms_adpcm.c
- Fix benign compiler warnings arising from previously added compiler
- flags.
-
-2002-09-18 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/sndfile.c
- Fixed a bug in sf_error_str() where errnum was used as the index instead
- of k. Found by Tim Hockin.
-
- * examples/sndfile-play.c
- Fixed a compiler warning resulting from a variable shadowing a previously
- defined local.
-
-2002-09-17 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/sndfile.h.in src/sndfile.c
- Added command SFC_SET_RAW_START_OFFSET.
-
- * doc/command.html
- Document SFC_SET_RAW_START_OFFSET.
-
- * tests/raw_test.c tests/Makefile.am
- Add new file for for testing SF_FORMAT_RAW specific functionality.
-
- * tests/dwvw_test.c
- Updates.
-
-2002-09-16 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/wav.c
- Modified reading of 'smpl' chunk to take account of the sampler data field.
-
- * tests/utils.tpl tests/utils.h
- Added function print_test_name().
-
- * tests/misc_test.c tests/write_read_test.tpl tests/lossy_comp_test.c
- tests/pcm_test.tpl tests/command_test.tpl tests/floating_point_test.c
- Convert to use function print_test_name().
-
-2002-09-15 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * doc/octave.html
- Added a link to some other Octave scripts for reading and writing sound
- files.
-
- * src/paf.c
- Change type of dummy data field to int. This should fix a benign compiler
- warning on some CPUs.
- Removed superfluous casts resulting from the above change.
-
- * src/rx2.c
- More hacking.
-
-2002-09-14 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/mat5.c src/common.c
- Changed usage of snprintf() to LSF_SNPRINTF().
-
- * Win32/Makefile.msvc
- Updated to include new files and add new tests.
-
- * Win32/config.h Win32/sndfile.h
- Updated.
-
- * doc/api.html
- Added note about the possibility of "missing" features actually being
- implemented as an sf_command().
-
-2002-09-13 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * tests/misc_test.c
- Added previously missing update_header_test and zero_data_tests for PAF,
- MAT4 and MAT5 formats.
-
- * src/paf.c src/mat4.c src/mat5.c
- Fixed bugs uncovered by new tests above.
-
- * src/mat5.c
- Generalised parsing of name fields of MAT5 files.
-
- * src/mat5.c src/sndfile.c
- Added support for unsigned 8 bit PCM MAT5 files.
-
- * tests/write_read_test.tpl
- Added test for unsigned 8 bit PCM MAT5 files.
-
- * doc/index.html
- Added unsigned 8 bit PCM MAT5 to capabilities matrix.
-
-2002-09-12 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * test/update_header_test.c tests/misc_test.c
- Renamed update_header_test.c to misc_test.c.
- Added zero_data_test() to check for case where file is opened for write and
- closed immediately. The resulting file can be left in a state where
- libsndfile cannot open it. Problem reported by Werner Schweer, the author
- of Muse.
-
- * src/aiff.c
- Removed superfluous cast.
-
- * src/wav.c src/svx.c
- Fixed case of file generated with no data.
- Removed superfluous cast.
-
- * src/sndfile.c
- Fixed error on IA64 platform caused by incorrect termination of
- SndfileErrors struct array. This problem was found in the Debian buildd
- logs (http://buildd.debian.org/).
-
- * configure.in
- Added Octave directory.
-
- * Octave/Makefile.ma
- New Makfile.am for Octave directory.
-
- * Octave/sndfile_load.m Octave/sndfile_save.m Octave/sndfile_play.m
- New files for working with Octave.
-
- * doc/octave.html
- Document explaining the use of the above three Octave scripts.
-
-2002-09-10 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/sndfile.c
- Fixed bug in RDWR mode.
-
-2002-09-09 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/common.c
- Fixed psf_get_date_str() for systems which don't have gmtime_r() or
- gmtime().
-
- * src/file_io.c
- Added #include <io.h> for Win32. Reported by Koen Tanghe.
-
-2002-09-08 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/common.c
- Added 'S' format specifier for psf_binheader_writef() which writes a C
- string, including single null terminator to the header.
- Added 'j' format specifier to allow jumping forwards or backwards in the
- header.
- Added function psf_get_date_str().
-
- * src/mat5.c
- Complete read and write support.
-
- * doc/index.html
- Added entries for MAT4 and MAT5 in capabilities matrix.
-
-2002-09-06 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/mat4.c
- Completed read and write support.
-
- * src/common.h src/sndfile.c
- Added MAT4 and MAT5 specific error messages.
-
- * tests/write_read_test.tpl tests/Makefile.am
- Added tests for MAT4 and MAT5 files.
-
- * tests/stdio_test.c tests/stdout_test.c tests/stdin_test.c
- Added tests for MAT4 and MAT5 files.
-
-2002-09-05 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/command.c
- Added elements for SF_FORMAT_MAT4 and SF_FORMAT_MAT5 to major_formats
- array.
-
- * examples/sfconvert.c
- Added mat4 and mat5 output targets.
-
-2002-09-04 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/sndfile.c
- Added check to prevent errors openning read only formats for read/write.
-
- * src/interleave.c
- New file for interleaving non-interleaved data. Non-interleaved data is
- only supported on read.
-
- * src/Makefile.am
- Added src/interleave.c to build.
-
-2002-09-03 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/double64.c src/common.h
- Added double64_be_read(), double64_le_read(), double64_be_write() and
- double64_le_write() which replace double64_read() and double64_write().
-
- * src/common.c
- Cleanup of psf_binheader_readf() and add ability to read big and little
- endian doubles (required by mat4.c and mat5.c).
- Add ability for psf_binheader_writef() to write doubles to sound file
- headers.
-
-2002-09-01 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/mat5.c
- New file for reading Matlab (tm) version 5 data files. This is also the
- native binary file format for version 2.1.X of GNU Octave which will be
- used for testing.
- Not complete yet.
-
- * src/mat4.c
- New file for reading Matlab (tm) version 4.2 data files. This is also the
- native binary file format for version 2.0.X of GNU Octave which will be
- used for testing.
- Not complete yet.
-
- * src/sndfile.h.in src/sndfile.c src/common.h src/command.c src/Makefile.am
- Mods to add Matlab files.
-
- * src/common.[ch]
- Added readf_endian field to SF_PRIVATE struct allowing endianness to
- remembered across calls to sf_binheader_readf().
- Fixed bug in width_specifier behaviour for printing hex values.
-
-2002-08-31 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/file_io.c
- Check return value of close() call in psf_fclose().
-
-2002-08-24 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/ms_adpcm.c
- Commented out some code where 0x10000 was being subtracted from a short
- and the result assigned to a short again. Andrew Zaja found this.
-
-2002-08-23 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * doc/command.html
- Fixed typo found by Tommi Ilmonen.
-
- * src/ima_adpcm.c
- Changed type of diff from short to int to prevent errors which can occur
- during very rare circumstances. Thanks to FUWAFUWA.
-
-2002-08-16 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * tests/floating_point_test.c
- Disable testing on machines without lrintf().
-
- * Win32/Makefile.msvc
- Added dwd.c and wve.c to build.
-
- * configure.in
- Bumped version to 1.0.0.
-
-2002-08-15 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/file_io.c
- Add a #include for Mac OS 9. Thanks to Stephane Letz.
-
- * src/wav.c
- Changed an snprintf to LSF_SNPRINTF.
-
- * doc/Makefile.am
- Added version-1.html.
-
-2002-08-14 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * configure.in
- Bumped version to 1.0.rc6.
-
- * src/*.c
- Modified scaling of normalised floats and doubles to integers. Until now
- this has been done by multiplying by 0x8000 for short output, 0x80000000
- for 32 bit ints and so on. Unfortunately this can cause an overflow and
- wrap around in the target value. All thes values have therefore been
- reduced to 0x7FFF, 0x7FFFFFFF and so on. The conversion from ints to
- normalised floats and doubles remains unchanged. This does mean that for
- repeated conversions normalised float -> pcm16 -> normalised float would
- result in a decrease in amplitude of 0x7FFF/0x8000 on every round trip.
- This is undesirable but less undesireable than the wrap around I am trying
- to avoid.
-
- * tests/floating_point_test.c
- Removed file hash checking because new float scaling procedure introduced
- above prevented the ability to crate a has on both x86 and PowerPC systems.
-
-2002-08-13 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/txw.c
- Completed reading of TXW files. Seek doesn't work yet.
-
- * src/file_io.c
- Added a MacOS 9 replacement for ftruncate().
-
- * MacOS/sndfile.h
- Added MacOS 9 header file. This should be copied into src/ to compile
- libsndfile for MacOS9.
-
-2002-08-12 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/sndfile.c
- Fixed commands SF_SET_NORM_DOUBLE and SFC_SET_NORM_FLOAT to return their
- values after being set. Reported by Jussi Laako.
-
- * configure.in
- If autogen is not found, touch all .c and .h files in tests/.
-
- * src/common.c
- Added format width specifier to psf_log_printf() for %u, %d, %D and %X.
-
- * src/dwd.c
- Completed implementation of read only access to these files.
-
- * src/common.h src/*.c src/pcm.c
- Removed redundant field chars from SF_PRIVATE struct and modified
- pcm_init() to do without it.
-
-2002-08-11 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/wve.c
- New file implementing read of Psion Alaw files. This will be a read only
- format. Implementation complete.
-
- * src/dwd/c
- Started implementation of DiamondWare Digitized files. Also read only, not
- complete.
-
- * src/wav.c
- Add parsing of 'smpl' chunk.
-
- * src/paf.c
- Fixed reading on un-normalized doubles and floats from 24 bit PAF files.
- This brings it into line with the reading of 8 bit files into
- un-normalized doubles which returns values in the range [-128, 127].
-
- * src/common.c
- Modified psf_log_printf() to accept the %% conversion specifier to allow
- printing of a single '%'.
-
- * src/sds.c
- Read only of 16 bit samples is working. Need to build a test harness for
- this and other read only formats.
-
-2002-08-10 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * configure.in
- Added --enable-experimental configure option.
- Removed pkg-config message at the end of the configure process.
-
- * src/sds.c src/txw.c src/rx2.c src/sd2.c
- Moved all the code in these files inside #if ENABLE_EXPERIMENTAL_CODE
- blocks and added new *_open() function for the case where experimental is
- not enabled. These new functions just return SFE_UNIMPLMENTED.
-
- * Win32/sndfile.h src/sndfile.h.in src/common.h
- Removed un-necessary #pragma pack commands.
-
- * src/file_io.c
- Implemented psf_ftruncate() and much other hacking for Win32.
-
- * Win32/Makefile.msvc
- Updated.
-
- * doc/win32.html
- Updated to include the copying of the sndfile.h file from the Win32/
- directory to the src/ directory.
-
- * Make.bat
- Batch file to make compiling on Wi32 a little easier. Implements "make" and
- "make check".
-
-2002-08-09 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/file_io.c
- Add place holder for ftruncate() on Win32 which doesn't have ftruncate().
- This will need to be fixed later.
-
- * src/sndfile.h.in
- New file (copy of sndfile.h) with sets up @TYPEOF_SF_COUNT_T@ which will be
- replaced by the correct type during configure.
-
- * configure.in
- Modified to find a good type for TYPEOF_SF_COUNT_T.
-
- * src/aiff.c
- Fixed a bug when reading malformed headers.
-
- * src/common.c
- Set read values to zero before performing read.
-
-2002-08-08 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * doc/command.html
- Fixed some HTML tags which were not allowing jumps to links within the
- page.
-
- * src/sds.c
- Massive hacking on this.
-
- * src/wav.c
- Added recognition of 'clm ' tag.
-
-2002-08-07 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * doc/index.html
- Added beginning of a capabilities list beyond simple file formats which
- can be read/written.
-
- * src/aiff.c
- Added parsing of INST and MARK chunks of AIFF files. At the moment this
- data is simply recorded in the log buffer. Later it will be possible to
- read this data from an application using sf_command().
-
- * src/wav.c
- Added parsing of 'cue ' chunk which contains loop information in WAV files.
-
- * exampes/sndfile-info.c
- Changed reporting of Samples to Frames.
-
- * src/wav.c src/w64.c src/aiff.c src/wav_w64.h
- Moved from a samples to a frames nomenclature to avoid confusion.
-
- * doc/FAQ.html
- What's the best format for storing temporary files?
-
- * src/sds.c
- New file for reading/writing Midi Sample Dump Standard files.
-
- * src/Makefile.am src/sndfile.c src/common.[ch]
- Added hooks for sds.c.
-
- * examples/sndfile-info.c
- Changed from using sf_perror() to using sf_error_str().
-
-2002-08-06 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * doc/api.html
- Added explanation of mode parameter for sf_open().
- Added explanation of usage of SFM_* values in sf_seek().
-
- * src/sndfile.[ch] src/command.c src/file_io.c src/common.h
- Implemented SFC_FILE_TRUNCATE to allow a file to be truncated. File
- truncation was suggested by James McCartney.
-
- * src/command.html
- Documented SFC_FILE_TRUNCATE.
-
- * tests/command_test.c
- Add tests for SFC_FILE_TRUNCATE.
-
- * src/sndfile.c
- Added a thrid parameter to the VALIDATE_SNDFILE_AND_ASSIGN_PSF macro to
- make resetting the error number optional. All uses of the macro other than
- in error reporting functions were changed to reset the error number.
-
- * src/pcm.c
- Fixed a bug were sf_read_* was logging an SFE_SHORT_READ even when no error
- occurred.
-
- * tests/write_read_test.tpl
- Added tests of internal error state.
-
-2002-08-05 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/GSM610/private.h src/GSM610/*.c src/GSM610/Makefile.am
- Renamed private.h to gsm610_priv.h to prevent clash with other headers
- named private.h in other directories. (Probably only a problem on MacOS 9).
-
- * src/G72x/private.h src/G72x/*.c src/G72x/Makefile.am
- Renamed private.h to g72x_priv.h to prevent clash with other headers
- named private.h in other directories. (Probably only a problem on MacOS 9).
-
- * MacOS/config.h
- Changed values of HAVE_LRINT and HAVE_LRINTF to force use of code in
- float_cash.h.
-
- * src/sndfile.h
- Changes the name of samples field of the SF_INFO to frames. The old name
- had caused too much confusion and it simply had to be changed. There will
- be at least one more pre-release.
-
-2002-08-04 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * doc/index.html
- Updated formats matrix to include RAW (header-less) GSM 6.10.
- Fix specificaltion of table and spelling mistakes.
-
- * src/sndfile.c src/command.c
- Fixed bug in SFC_CALC_MAX_SIGNAL family and psf_calc_signal_max ().
-
- * tests/command.c
- Removed cruft.
- Added test for SFC_CALC_MAX_SIGNAL and SFC_CALC_NORM_MAX_SIGNAL.
-
- * configure.in
- Update version to 1.0.0rc5.
-
- * sfendian.h
- Removed inclusion of un-necessary header.
-
-2002-08-03 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/aiff.c
- Minor fixes of info written to log buffer.
-
- * src/float_cast.h
- Add definition of HAVE_LRINT_REPLACEMENT.
-
- * tests/floating_point_test.c
- Fix file hash check on systems without lrint/lrintf.
-
- * tests/dft_cmp.c
- Limit SNR to less than -500.0dB.
-
- * examples/sndfile2oct.c
- Fixed compiler warnings.
-
- * doc/api.html
- Fixed error where last parameter of sf_error_str() was sf_count_t instead
- of size_t.
-
-2002-08-02 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * doc/FAQ.html
- Why doesn't libsndfile do interleaving/de-interleaving.
-
- * tests/pcm_test.tpl
- On Win32 do not perform hash check on files containing doubles.
-
-2002-08-01 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/common.h
- Defined SF_COUNT_MAX_POSITIVE() macro, a portable way of setting variables
- of type sf_count_t to their maximum positive value.
-
- * src/dwvw.c src/w64.c
- Used SF_COUNT_MAX_POSITIVE().
-
-2002-07-31 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/paf.c
- Fixed bug in reading/writing of 24 bit PCM PAF files on big endian systems.
-
- * tests/floating_point_tests.c
- Fixed hash values for 24 bit PCM PAF files.
- Disabled file has check if lrintf() function is not available and added
- warning.
- Decreased level of signal from a peak of 1.0 to a value of 0.95 to prevent
- problems on platforms without lrintf() ie Solaris.
-
-2002-07-30 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/wav.c
- Fixed a problem with two different kinds of mal-formed WAV file header. The
- first had the 'fact' chunk before the 'fmt ' chunk, the other had an
- incomplete 'INFO' chunk at the end of the file.
-
- * src/w64.c
- Added fix to allow differentiation between W64 files and ACID files.
-
- * src/au_g72x.c src/common.h src/sndfile.c
- Added error for G72x encoded files with more than one channel.
-
- * tests/pcm_test.tpl tests/utils.tpl
- Moved function check_file_hash_or_die() to utils.tpl. Function was then
- modified to calculate the has of the whole file.
-
- * src/wav.c
- Fixed problem writing the 'fact' chunk on big endian systems.
-
- * tests/sfconvert.c
- Fixed bug where .paf files were being written as Sphere NIST.
-
-2002-07-29 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/voc.c
- Fix for reading headers generated using SFC_UPDATE_HEADER_NOW.
-
- * doc/command.html
- Add docs for SFC_UPDATE_HEADER_NOW and SFC_SET_UPDATE_HEADER_AUTO.
-
-2002-07-28 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * man/sndfile-info.1 man/sndfile-play.1
- Added manpages supplied by Joshua Haberman the Debian maintainer for
- libsndfile. Additional tweaks by me.
-
- * configure.in man/Makefile.am
- Hooked manpages into autoconf/automake system.
-
- * src/sndfile.c
- Added hooks for SFC_SET_UPDATE_HEADER_AUTO.
-
- * tests/update_header_test.c
- Improved rigor of testing.
-
- * src/*.c
- Fixed problem with *_write_header() functions.
-
-2002-07-27 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * doc/*.html
- Updates to documentation to fix problems found by wdg-html-validator.
-
- * src/common.h src/command.c
- Added normalize parameter to calls to psf_calc_signal_max() and
- psf_calc_max_all_channels().
-
- * src/sndfile.c
- Added handling for commands SFC_CALC_NORM_SIGNAL_MAX and
- SFC_CALC_NORM_MAX_ALL_CHANNELS.
-
- * doc/command.html
- Added entry for SFC_CALC_NORM_SIGNAL_MAX and SFC_CALC_NORM_MAX_ALL_CHANNELS.
-
-2002-07-26 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * examples/sndfile-play.c Win32/Makefile.msvc
- Get sndfile-play program working on Win32. The Win32 PCM sample I/O API
- sucks. The sndfile-play program now works on Linux, MacOSX, Solaris and
- Win32.
-
-2002-07-25 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * doc/FAQ.html
- New file for frequently asked questsions.
-
-2002-07-22 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * doc/api.html
- Documentation fixes.
-
- * src/au.[ch] src/au_g72x.c src/G72x/g72x.h
- Add support of 40kbps G723 ADPCM encoding.
-
- * tests/lossy_comp_test.c tests/floating_point_test.c
- Add tests for 40kbps G723 ADPCM encoding.
-
- * doc/index.html
- Update support matrix.
-
-2002-07-21 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * doc/command.html
- Documented SFC_GET_SIMPLE_FORMAT_COUNT, SFC_GET_SIMPLE_FORMAT,
- SFC_GET_FORMAT_* and SFC_SET_ADD_PEAK_CHUNK.
-
- * src/sndfile.c src/pcm.c
- Add ability to turn on and off the addition of a PEAK chunk for floating
- point WAV and AIFF files.
-
- * src/sndfile.[ch] src/common.h src/command.c
- Added sf_command SFC_CALC_MAX_ALL_CHANNELS. Implemented by Maurizio Umberto
- Puxeddu.
-
- * doc/command.html
- Docs for SFC_CALC_MAX_ALL_CHANNELS (assisted by Maurizio Umberto Puxeddu).
-
-2002-07-18 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/sndfile.c src/gsm610.c
- Finalised support for GSM 6.10 AIFF files and added support for GSM 6.10
- encoded RAW (header-less) files.
-
- * src/wav.c
- Add support for IBM_FORMAT_MULAW and IBM_FORMAT_ALAW encodings.
-
- * src/api.html
- Fixed more documentation bugs.
-
-2002-07-17 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/sndfile.h src/common.h
- Moved some yet-to-be-implelmented values for SF_FORMAT_* from the public
- header file sndfile.h to the private header file common.h to avoid
- confusion about the actual capabilities of libsndfile.
-
-2002-07-16 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/aiff.c src/wav.c
- Fixed file parsing for WAV and AIFF files containing non-audio data after
- the data chunk.
-
- * src/aiff.c src/sndfile.c
- Add support for GSM 6.10 encoded AIFF files.
-
- * tests/lossy_comp_test.c tests/Makefile.am
- Add tests for GSM 6.10 encoded AIFF files.
-
- * src/*.c
- Fix compiler warnings.
-
-2002-07-15 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * tests/command_test.c
- For SFC_SET_NORM_* tests, change the file format from SF_FORMAT_WAV to
- SF_FORMAT_RAW.
-
- * src/sndfile.c
- Added sf_command(SFC_TEST_ADD_TRAILING_DATA) to allow testing of reading
- from AIFF and WAV files with non-audio data after the audio chunk.
-
- * src/common.h
- Add test commands SFC_TEST_WAV_ADD_INFO_CHUNK and
- SFC_TEST_AIFF_ADD_INST_CHUNK. When these commands are working, they will be
- moved to src/sndfile.h
-
- * src/aiff.c src/wav.c
- Begin implementation of XXXX_command() hook for sf_command().
-
- * tests/write_read_test.tpl
- Added sf_command (SFC_TEST_ADD_TRAILING_DATA) to ensure above new code was
- working.
-
-2002-07-13 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * tests/update_header_test.c
- Allow read sample count == write sample count - 1 to fix problems with VOC
- files.
-
- * tests/write_read_test.tpl tests/pcm_test.tpl
- Fixed some problems in the test suite discovered by using Valgrind.
-
-2002-07-12 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * tests/utils.[ch] tests/*.c
- Renamed check_log_buffer() to check_log_buffer_or_die().
-
- * src/sndfile.c
- SFC_UPDATE_HEADER_NOW and SFC_SETUPDATE_HEADER_AUTO almost finished. Works
- for all file formats other than VOC.
-
-2002-07-11 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/sndfile.[ch] src/common.h
- Started adding functionality to allow the file header to be updated before
- the file is closed on files open for SFM_WRITE. This was requested by
- Maurizio Umberto Puxeddu who is using libsndfile for file I/O in iCSound.
-
- * tests/update_header_test.c
- New test program to test that the above functionality is working correctly.
-
- * tests/peak_chunk_test.c tests/floating_point_test.c
- Cleanups.
-
-2002-07-10 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/sfendian.[ch]
- Changed length count parameters for all endswap_XXX() functions from
- sf_count_t (which can be 64 bit even on 32 bit architectures) to int. These
- functions are only called frin inside the library, are always called with
- integer parameters and doing the actual calculation on 64 bit values is
- slow in comparision to doing it on ints.
-
- * examples/sndfile-play.c
- More playback hacking for Win32.
-
-2002-07-09 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/common.c
- In psf_log_printf(), changed %D format conversion specifier to %M (marker) and
- added %D specifier for printing the sf_count_t type.
-
- * src/*.c
- Changed all usage of psf_log_printf() with %D format conversion specifiers
- to use %M conversion instead.
-
- * tests/pcm_test.tpl tests/pcm_test.def
- New files to autogen pcm_test.c.
-
- * src/pcm.c
- Fixed bug in scaling floats and doubles to 24 bit PCM and vice versa.
-
-2002-07-08 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * configure.in
- Fix setup of $ac_cv_sys_largefile_CFLAGS so that sndfile.pc gets valid
- values for CFLAGS.
-
- * examples/sndfile-play.c
- Start adding playback support for Win32.
-
-2002-07-07 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/*.c
- Worked to removed compiler warnings.
- Extensive refactoring.
-
- * src/common.[ch]
- Added function psf_memset() which works like the standard C function memset
- but takes and sf_count_t as the length parameter.
-
- * src/sndfile.c
- Replaced calls to memset(0 with calls to psf_memset() as required.
-
-2002-07-06 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/sndfile.c
- Added "libsndfile : " to the start of all error messages. This was suggested
- by Conrad Parker author of Sweep ( http://sweep.sourceforge.net/ ).
-
- * src/sfendian.[ch]
- Added endswap_XXXX_copy() functions.
-
- * src/pcm.c src/float32.c src/double64.c
- Use endswap_XXXX_copy() functions and removed dead code.
- Cleanups and optimisations.
-
-2002-07-05 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/sndfile.c src/sndfile.h
- Gave values to all the SFC_* enum values to allow better control of the
- interface as commands are added and removed.
- Added new command SFC_SET_ADD_PEAK_CHUNK.
-
- * src/wav.c src/aiff.c
- Modified wav_write_header and aiff_write_header to make addition of a PEAK
- chunk optional, even on floating point files.
-
- * tests/benchmark.tpl
- Added call to sf_command(SFC_SET_ADD_PEAK_CHUNK) to turn off addition of a
- PEAK chunk for the benchmark where we are trying to miximize speed.
-
- * src.pcm.c
- Changed tribyte typedef to something more sensible.
- Further conversion speed ups.
-
-2002-07-03 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/command.c
- In major_formats rename "Sphere NIST" to "NIST Sphere".
-
- * src/common.c src/sfendian.c
- Moved all endswap_XXX_array() functions to sfendian.c. These functions will
- be tweaked to provide maximum performance. Since maximum performance on one
- platform does not guarantee maximum performance on another, a small set of
- functions will be written and the optimal one chosen at compile time.
-
- * src/common.h src/sfendian.h
- Declarations of all endswap_XXX_array() functions moved to sfendian.h.
-
- * src/Makefile.am
- Add sfendian.c to build targets.
-
-2002-07-01 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/pcm.c src/sfendian.h
- Re-coded PCM encoders and decoders to match or better the speed of
- libsndfile version 0.0.28.
-
-2002-06-30 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/wav.c
- Add checking for WAVPACK data in standard PCM WAV file. Return error if
- found. This WAVPACK is *WAY* broken. It uses the same PCM WAV file header
- and then stores non-PCM data.
-
- * tests/benchmark.tpl
- Added more tests.
-
-2002-06-29 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * tests/benchmark.tpl
- Added conditional definition of M_PI.
- For Win32, set WRITE_PERMS to 0777.
-
- * Win32/Makefile.msvc
- Added target to make generate program on Win32.
-
- * src/samplitude.c
- Removed handler for Samplitude RAP file format. This file type seems rarer
- than hens teeth and is completely undocumented.
-
- * src/common.h src/sndfile.c src/Makefile.am Win32/Makefile.msvc
- Removed references to sampltiude RAP format.
-
- * tests/benchmark.tpl
- Benchmark program now prints the libsndfile version number when run. This
- program was also backported to version 0 to compare results. Version
- 1.0.0rc2 is faster than version 0.0.28 on most conversions but slower on
- some. The slow ones need to be fixed before final release.
-
-2002-06-28 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * tests/benchmark.def tests/benchmark.tpl
- New files which generate tests/benchmark.c using Autogen. Added int ->
- SF_FORMAT_PCM_24 test.
-
- * tests/benchmark.c
- Now and Autogen output file.
-
- * tests/Makefile.am
- Updated for above changes.
-
-2002-06-27 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * tests/benchmark.c
- Basic benchmark program complete. Need to convert it to Autogen.
-
- * Win32/Makefile.msvc
- Added benchmark.exe target.
-
-2002-06-26 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * examples/generate.c
- New program to generate a number of different output file formats from a
- single input file. This allows testing of the created files.
-
- * tests/benchmark.c
- New test program to benchmark libsndfile. Nowhere near complete yet.
-
- * examples/Makefile.am tests/Makefile.am
- New make rules for the two new programs.
-
-2002-06-25 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * Win32/libsndfile.def
- Removed definition for sf_signal_max().
-
- * src/sndfile.c
- Removed cruft.
-
- * doc/index.html
- A number of documentation bugs were fixed. Thanks to Anand Kumria.
-
- * doc/version-1.html
- Minor doc updates.
-
- * configure.in
- Bumped version to 1.0.0rc2.
-
- * src/sf_command.h src/Makefile.am
- Removed the header file as it was no longer being used. Thanks to Anand
- Kunria for spotting this.
-
- * doc/index.html
- A number of documentation bugs were fixed. Thanks to Anand Kumria.
-
-2002-06-24 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/common.h
- Test for Win32 before testing SIZEOF_OFF_T so that it works correctly
- on Win32..
-
- * src/file_io.c
- Win32 fixes to ensure O_BINARY is used for file open.
-
- * doc/win32.html
- New file documenting the building libsndfile on Win32.
-
- * doc/*.html
- Updating of documentation.
-
-2002-06-23 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * tests/pcm_test.c
- Minor changes to allow easier determination of test file name.
-
- * src/sndfile.[ch]
- Removed function sf_signal_max().
-
- * examples/sndfile-play.c
- Changed call to sf_signal_max() to a call to sf_command().
-
-2002-06-22 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/format.c src/command.c
- Renamed format.c to command.c which will now include code for sf_command()
- calls to perform operations other than format commands.
-
- * src/sndfile.c src/sndfile.h
- Removed function sf_get_signal_max() which is replaced by commands passed
- to sf_command().
-
- * src/command.c
- Implement commands SFC_CALC_SIGNAL_MAX.
-
- * doc/command.html
- Documented SFC_CALC_SIGNAL_MAX.
-
-2002-06-21 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * examples/sndfile-play.c
- Mods to make sndfile-play work on Solaris. The program sndfile-play now
- runs on Linux, MaxOSX and Solaris. Win32 to come.
-
- * src/format.c
- Added SF_FORMAT_DWVW_* to subtype_formats array.
-
- * src/nist.c
- Added support for 8 bit NIST Sphere files. Example file supplied by Anand
- Kumria.
-
-2002-06-20 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * examples/sndfile-info.c
- Tidy up of output format.
-
- * examnples/sndfile-play.c
- Mods to make sndfile-play work on MacOSX using Apple's CoreAudio API.
-
- * configure.in
- Add new variables OS_SPECIFIC_INCLUDES and OS_SPECIFIC_LINKS which were
- required to supply extra include paths and link parameters to get
- sndfile-play working on MacOSX.
-
- * examples/Makefile.am
- Use OS_SPOECIFIC_INCLUDES and OS_SPECIFIC_LINKS to build commands for
- sndfile-play.
-
-2002-06-19 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/nist.c
- Added ability to read/write new NIST Sphere file types (A-law, u-law).
- Header parser was re-written from scratch. Example files supplied by Anand
- Kumria.
-
- * src/sndfile.c
- Support for A-law and u-law NIST files.
-
- * tests/Makefile.am tests/lossy_comp_test.c
- Tests for A-law and u-law NIST files.
-
-2002-06-18 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * tests/utils.c
- Fixed an error in error string.
-
-2002-06-17 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * acinclude.m4
- Removed exit command to allow cross-compiling.
-
- * Win32/unistd.h src/file_io.c
- Moved contents of first file into the second file (enclosed in #ifdef).
- Win32/unistd.h is now an empty file but still must be there for libsndfile
- to compile on Win32.
-
- * src/sd2.c, src/sndfile.c:
- Fixes for Sound Designer II files on big endian systems.
-
-2002-06-16 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * configure.in
- Modified to work around problems with crappy MacOSX version of sed.
- Added sanity check for proper values for CFLAGS.
-
-2002-06-14 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/sndfile.c
- Code clean up in sf_open ().
-
- * Win32/Makefile.msvc
- Michael Fink's contributed MSVC++ makefile was hacked to bits and put back
- together in a new improved form.
-
- * src/file_io.c
- Fixes for Win32; _lseeki64() returns an invalid argument for calls like
- _lseeki64(fd, 0, SEEK_CUR) so need to use _telli64 (fd) instead.
-
- * src/common.h src/sndfile.c src/wav.c src/aiff.c
- Added SFE_LOG_OVERRUN error.
- Added termination for potential infinite loop when parsing file headers.
-
- * src/wav.c src/w64.c
- Fixed bug casuing incorrect header generation when opening file read/write.
-
-2002-06-12 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * doc/api.html
- Improved the documentation to make it clearer that the file read method
- and the underlying file format are completely disconnected. Suggested
- by Josh Green.
-
- * doc/command.html
- Started correcting docs to take into account changes made to the
- operations of the sf_command () function. Not complete yet.
-
- * src/sndfile.c
- Reverted some changes which had broken the partially working SDII header
- parsing. Now have access to an iBook with OS X so reading and writing SDII
- files on all platforms should be a reality in the near future. On Mac this
- will involve reading the resource fork via the standard MacOS API. To move
- a file from Mac to another OS, the resource and data forks will need to be
- combined before transfer. The combined file will be read on both Mac and
- other OSes like any other file.
-
-2002-06-08 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * ltmain.sh
- Applied a patch from http://fink.sourceforge.net/doc/porting/libtool.php
- which allows libsndfile to compile on MacOSX 10.1. This patch should not
- interfere with compiling on other OSes.
-
- * src/GSM610/private.h
- Changes to fix compile problems on MacOSX (see src/GSM610/ChangeLog).
-
- * src/float_cast.h
- Added MacOSX replacements for lrint() and lrintf().
-
-2002-06-05 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/sndfile.c
- Replaced the code to print the filename to the log buffer when a file is
- opened. This code seems to have been left out during the merge of
- sf_open_read() and sf_open_write() to make a single functions sf_open().
-
-2002-06-01 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/wav.c
- Fixed a bug where the WAV header parser was going into an infinite loop
- on a badly formed LIST chunk. File supplied by David Viens.
-
-2002-05-25 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * configure.in
- Added a message at the end of the configuration process to warn about the
- need for the use of pkg-config when linking programs against version 1 of
- libsndfile.
-
- * doc/pkg-config.html
- New documentation file containing details of how to use pkg-config to
- retrieve settings for CFLAGS and library locations for linking files
- against version 1 of libsndfile.
-
-2002-05-17 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/wav.c
- Fixed minor bug in handling of so-called ACIDized WAV files.
-
-2002-05-16 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * Win32/libsndfile.def Win32/Makefile.msvc
- Two new files contributed by Michael Fink (from the winLAME project)
- which allows libsndfile to be built on windows in a MSDOS box by doing
- "nmake -f Makefile.msvc". Way cool!
-
-2002-05-15 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * configure.in
- MacOSX is SSSOOOOOOO screwed up!!! I can't believe how hard it is to
- generate a tarball which will configure and compile on that platform.
- Joined the libtool mailing list to try and get some answers.
-
-2002-05-13 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * configure.in
- Changed to autoconf version 2.50. MacOSX uses autoconf version 2.53 which
- is incompatible with with version 2.13 which had been using until now.
- The AC_SYS_LARGE_FILE macro distributed withe autoconf 2.50 is missing a
- few features so AC_SYS_EXTRA_LARGE file was defined to replace it.
-
- * configure.in
- Changed to automake version 1.5 to try and make a tarball which will
- work on MacOSX.
-
-2002-05-12 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/wav_gsm610.c
- Changed name to gsm610.c. Added reading/writing of headerless files.
-
- * src/sndfile.c src/raw.c
- Added ability to read/write headerless (SF_FORMAT_RAW) GSM 6.10 files.
-
-2002-05-11 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * tests/lossy_comp_test.c
- Clean up in preparation for Autogen-ing this file.
-
- * src/GSM610/*.[ch]
- Code cleanup and prepartion forgetting file seek working. Details in
- src/GSM610/ChangeLog.
-
- * sndfile.pc.in
- Testing complete. Is sndfile.m4 still needed?
-
-2002-05-09 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * tests/write_read_test.tpl tests/rdwr_test.tpl
- Merged tests from these two programs into write_read_test.tpl and deleted
- rdwr_test.tpl.
-
-2002-05-08 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/w64.c src/svx.c src/paf.c
- Fixed bugs in read/write mode.
-
-2002-05-07 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * examples/Makefile.am
- Renamed sfplay.c to sndfile-play.c and sndfile_info.c to sndfile-info.c for
- consistency when these programs become part of the Debian package
- sndfile-programs.
-
- * sndfile.pc.in
- New file to replace sndfile-config.in. Libsndfile now uses the pkg-config
- model for providing installation parameters to dependant programs.
-
- * src/sndfile.c
- Cleanup of code in sf_open().
-
-2002-05-06 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * tests/utils.tpl tests/write_read_test.tpl
- More conversion to Autogen fixes and enchancements.
-
- * src/*.c
- Read/write mode is now working for 16, 24 and 32 bit PCM as well as 32
- bit float and 64 bit double data. More tests still required.
-
- * src/Makefile.am
- Added DISTCLEANFILES target to remove config.status and config.last.
-
- * Win32/Makefile.am MacOS/Makefile.am
- Added DISTCLEANFILES target to remove Makefile.
-
-2002-05-05 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/*.[ch] tests/rdwr_test.c
- More verifying workings of read/write mode. Fixing bugs found.
-
- * tests/utils.[ch]
- Made these files Autogen generated files.
-
- * tests/util.tpl tests/util.def
- New Autogen files to generate utils.[ch]. Moved some generic test functions
- into this file. Autogen is such a great tool!
-
-2002-05-03 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/pcm.c src/float_cast.h Win32/config.h
- Fixed a couple of Win32 specific bugs pointed out by Michael Fink
- (maintainer of WinLAME) and David Viens.
-
- * tests/check_log_buffer.[ch] tests/utils.[ch]
- Moved check_log_buffer() to utils.[ch] and deleted old file.
-
-2002-05-02 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/common.[ch] src/sndfile.c
- New function psf_default_seek() which will be the default seek function
- for things like PCM and floating point data. This default is set for
- both read and write in sf_open() but can be over-ridden by any codec
- during it's initialisation.
-
-2002-05-01 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/au.c
- AU files use a data size value of -1 to mean unknown. Fixed au_open_read()
- to allow opening files like this.
-
- * tests/rdwr_test .c
- Added more tests.
-
- * src/sndfile.c
- Fixed bugs in read/write mode found due to improvements in the test
- program.
-
-2002-04-30 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * tests/rdwr_test .c
- New file for testing read/write mode.
-
-2002-04-29 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * m4/*
- Removed all m4 macros from this directory as they get concatenated to form
- the file aclocal.m4 anyway.
-
- * sndfile.m4
- Moved this from the m4 directory to the root directory asn this is part of
- the distribution and is installed during "make install".
-
-2002-04-29 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/float32.c
- Removed logging of peaks for all file formats other than AIFF and WAV.
-
- * tests/write_read_test.tpl tests/write_read_test.def
- New files which autogen uses to generate write_read_test.c. Doing it this
- way makes write_read_test.c far easier to maintain. Other test programs
- will be converted to autogen in the near future.
-
- * src/*.c
- Fixed a few bugs found when testing on Sparc (bug endian) Solaris.
-
-2002-04-28 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * doc/*.html
- Fixed documention versioning.
-
- * configure.in
- Fixed a bug in the routines which search for Large File Support on systems
- which have large file support by defualt.
-
-2002-04-27 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/*.[ch]
- Found and fixed an issue which can cause a bug in other software (I was
- porting Conrad Parker's Sweep program from version 0 of the library to
- version 1). When opening a file for write, the libsndfile code would
- set the sfinfo.samples field to a maximum value.
-
- * tests/write_read_test.c
- Added tests to detect the above problem.
-
-2002-04-25 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/*.[ch]
- Finished base implementation of read/write mode. Much more testing still
- needed.
-
- * m4/largefile.m4
- Macro for detecting Large File Standard capabilities. This macro was ripped
- out of the aclocal.m4 file of GNU tar-1.13.
-
- * configure.in
- Added detection of large file support. Files larger than 2 Gigabytes should
- now be supported on 64 bit platforms and many 32 bit platforms including
- Linux (2.4 kernel, glibc-2.2), *BSD, MacOS, Win32.
-
- * libsndfile_convert_version.py
- A Python script which attempts to autoconvert code written to use version 0
- to version 1.
-
-2002-04-24 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/*.[ch]
- Finished base implementation of read/write mode. Much more testing still
- needed.
-
- * tests/write_read_test.c
- Preliminary tests for read/write mode added. More needed.
-
-2002-04-20 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/sndfile.[ch]
- Removed sf_open_read() and sf_open_write() functions,replacting them with
- sf_open() which takes an extra mode parameter (SF_OPEN_READ, SF_OPEN_WRITE,
- or SF_OPEN_RDWR). This new function sf_open can now be modified to allow
- opening a file formodification (RDWR).
-
-2002-04-19 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/*.c
- Completed merging of separate xxx_open_read() and xxx_open_write()
- functions. All tests pass.
-
-2002-04-18 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/au.c
- Massive refactoring required to merge au_open_read() with au_open_write()
- to create au_open().
-
-2002-04-17 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/*.c
- Started changes required to allow a sound file to be opened in read/write
- mode, with separate file pointers for read and write. This involves merging
- of encoder/decoder functions like pcm_read_init() and pcm_write_init()
- int a new function pcm_init() as well as doing something similar for all
- the file type specific functions ie aiff_open_read() and aiff_open_write()
- were merged to make the function aiff_open().
-
-2002-04-15 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/file_io.c
- New file containing psf_fopen(), psf_fread(), psf_fwrite(), psf_fseek() and
- psf_ftell() functions. These function will replace use of fopen/fread/fwrite
- etc and allow access to files larger than 2 gigabytes on a number of 32 bit
- OSes (Linux on x86, 32 bit Solaris user space apps, Win32 and MacOS).
-
- * src/*.c
- Replaced all instances of fopen with psf_open, fread with psd_read, fwrite
- with psf_write and so on.
-
-2002-03-11 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/dwvw.c
- Finally fixed all known problems with 12, 16 and 24 bit DWVW encoding.
-
- * tests/floating_point_test.c
- Added tests for 12, 16 and 24 bit DWVW encoding.
-
-2002-03-03 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * m4/endian.m4
- Defines a new m4 macro AC_C_FIND_ENDIAN, for determining the endian-ness of
- the target CPU. It first checks for the definition of BYTE_ORDER in
- <endian.h>, then in <sys/types.h> and <sys/param.h>. If none of these work
- and the C compiler is not a cross compiler it compiles and runs a program
- to test for endian-ness. If the compiler is a cross compiler it makes a
- guess based on $target_cpu.
-
- * configure.in
- Modified to use AC_C_FIND_ENDIAN.
-
- * src/sfendian.h
- Simplified.
-
-2002-02-23 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * tests/floating_point_test.c
- Tests completely rewritten using the dft_cmp function. Now able to
- calculate a quick guesstimate of the Signal to Noise Ratio of the encoder.
-
-2002-02-15 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * tests/dft_cmp.[ch]
- New files containing functions for comparing pre and post lossily
- compressed data using a quickly hacked DFT.
-
- * tests/utils.[ch]
- New files containing functions for saving pre and post encoded data in a
- file readable by the GNU Octave package.
-
-2002-02-13 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * m4/lrint.m4 m4/lrintf.m4
- Fixed m4 macros to define HAVE_LRINT and HAVE_LRINTF even when the test
- is cached.
-
-2002-02-12 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * tests/floating_point_test.c
- Fixed improper use of strncat ().
-
-2002-02-11 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * tests/headerless_test.c
- New test program to test the ability to open and read a known file type as a
- RAW header-less file.
-
-2002-02-07 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * tests/losy_comp_test.c
- Added a test to ensure that the data read from a file is not all zeros.
-
- * examples/sfconvert.c
- Added "-gsm610" encoding types.
-
-2002-01-29 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * examples/sfconvert.c
- Added "-dwvw12", "-dwvw16" and "-dwvw24" encoding types.
-
- * tests/dwvw_test.c
- New file for testing DWVW encoder/decoder.
-
-2002-01-28 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/dwvw.c
- Implemented writing of DWVW. 12 bit seems to work, 16 and 24 bit still broken.
-
- * src/aiff.c
- Improved reporting of encoding types.
-
- * src/voc.c
- Clean up.
-
-2002-01-27 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/dwvw.c
- New file implementing lossless Delta Word Variable Width (DWVW) encoding.
- Reading 12 bit DWVW is now working.
-
- * src/aiff.c common.h sndfile.c
- Added hooks for DWVW encoded AIFF and RAW files.
-
-2002-01-15 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/w64.c
- Robustify header parsing.
-
- * src/wav_w64.h
- Header file wav.h was renamed to wav_w64.h to signify sharing of
- definitions across the two file types.
-
- * src/wav.c src/w64.c src/wav_w64.c
- Refactoring.
- Modified and moved functions with a high degree of similarity between
- wav.c and w64.c to wav_w64.c.
-
-2002-01-14 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/w64.c
- Completed work on getting read and write working.
-
- * examples/sfplay.c
- Added code to scale floating point data so it plays at a reasonable volume.
-
- * tests/Makefile.am tests/write_read_test.c
- Added tests for W64 files.
-
-2002-01-13 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/*.c
- Modded all code in file header writing routines to use
- psf_new_binheader_writef().
- Removed psf_binheader_writef() from src/common.c.
- Globally replaced psf_new_binheader_writef with psf_binheader_writef.
-
-2002-01-12 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/*.c
- Modded all code in file parsing routines to use psf_new_binheader_readf().
- Removed psf_binheader_readf() from src/common.c.
- Globally replaced psf_new_binheader_readf with psf_binheader_readf.
-
- * src/common.[ch]
- Added new function psf_new_binheader_writef () which will soon replace
- psf_binheader_writef (). The new function has basically the same function
- as the original but has a more flexible and capable interface. It also
- allows the writing of 64 bit integer values for files contains 64 bit file
- offsets.
-
-2002-01-11 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/formats.c src/sndfile.c src/sndfile.h
- Added code allowing full enumeration of supported file formats via the
- sf_command () interface.
- This feature will allow applications to avoid needing recompilation when
- support for new file formats are added to libsndfile.
-
- * tests/command_test.c
- Added test code for the above feature.
-
- * examples/list_formats.c
- New file. An example of the use of the supported file enumeration
- interface. This program lists all the major formats and for each major
- format the supported subformats.
-
-2002-01-10 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/*.[ch] tests/*.c
- Changed command parameter of sf_command () function from a test string to
- an int. The valid values for the command parameter begin with SFC_ and are
- listed in src/sndfile.h.
-
-2001-12-20 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/formats.c src/sndfile.c
- Added an way of enumerating a set of common file formats using the
- sf_command () interface. This interface was suggested by Dominic Mazzoni,
- one of the main authors of Audacity (http://audacity.sourceforge.net/).
-
-2001-12-26 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/sndfile.c
- Added checking of filename parameter in sf_open_read (). Previousy, if a
- NULL pointer was passed the library would segfault.
-
-2001-12-18 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/common.c src/common.h
- Changed the len parameter of the endswap_*_array () functions from type
- int to type long.
-
- * src/pcm.c
- Fixed a problem which
-
-2001-12-15 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/sndfile.c
- Added conditional #include <sys/types.h> for EMX/gcc on OS/2. Thanks to
- Paul Hartman for pointing this out.
-
- * tests/lossy_comp_test.c tests/floating_point_test.c
- Added definitions for M_PI for when it isn't defined in <math.h>.
-
-2001-11-30 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/ircam.c
- Re-implemented the header reader. Old version was making incorrect
- assumptions about the endian-ness of the file from the magic number at the
- start of the file. The new code looks at the integer which holds the
- number of channels and determines the endian-ness from that.
-
-2001-11-30 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/aiff.c
- Added support for other AIFC types ('raw ', 'in32', '23ni').
- Further work on IMA ADPCM encoding.
-
-2001-11-29 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/ima_adpcm.c
- Renamed from wav_ima_adpcm.c. This file will soon handle IMA ADPCM
- encodings for both WAV and AIFF files.
-
- * src/aiff.c
- Started adding IMA ADPCM support.
-
-2001-11-28 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/double.c
- New file for handling double precision floating point (SF_FORMAT_DOUBLE)
- data.
-
- * src/wav.c src/aiff.c src/au.c src/raw.c
- Added support for SF_FORMAT_DOUBLE data.
-
- * src/common.[ch]
- Addition of endswap_long_array () for endian swapping 64 bit integers. This
- function will work correctly on processors with 32 bit and 64 bit longs.
- Optimised endswap_short_array () and endswap_int_array ().
-
- * tests/pcm_test.c
- Added and extra check. After the first file of each type is written to disk
- a checksum is performed of the first 64 bytes and checked against a pre-
- calculated value. This will work whatever the endian-ness of the host
- machine.
-
-2001-11-27 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/aiff.c
- Added handling of u-law, A-law encoded AIFF files. Thanks to Tom Erbe for
- supplying example files.
-
- * tests/lossy_comp_test.c
- Added tests for above.
-
- * src/common.h src/*.c
- Removed function typedefs from common.h and function pointer casting in all
- the other files. This allows the compiler to perform proper type checking.
- Hopefully this will prevernt problems like the sf_seek bug for OpenBSD,
- BeOS etc.
-
- * src/common.[ch]
- Added new function psf_new_binheader_readf () which will eventually replace
- psf_binheader_readf (). The new function has basically the same function as
- the original but has a more flexible and capable interface. It also allows
- the reading of 64 bit integer values for files contains 64 bit file
- offsets.
-
-2001-11-26 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/voc.c
- Completed implementation of VOC file handling. Can now handle 8 and 16 bit
- PCM, u-law and A-law files with one or two channels.
-
- * src/write_read_test.c tests/lossy_comp_test.c
- Added tests for VOC files.
-
-2001-11-22 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/float_cast.h
- Added inline asm version of lrint/lrintf for MacOS. Solution provided by
- Stephane Letz.
-
- * src/voc.c
- More work on this braindamaged format. The VOC files produced by SoX also
- have a number of inconsistencies.
-
-2001-11-19 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/paf.c
- Added support for 8 bit PCM PAF files.
-
- * tests/write_read_test.c
- Added tests for 8 bit PAF files.
-
-2001-11-18 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * tests/pcm_test.c
- New test program to test for correct scaling of integer values between
- different sized integer containers (ie short -> int).
- The new specs for libsndfile state that when the source and destination
- containers are of a different size, the most significant bit of the source
- value becomes the most significant bit of the destination container.
-
- * src/pcm.c src/paf.c
- Modified to pass the above test program.
-
- * tests/write_read_test.c tests/lossy_comp_test.c
- Modified to work with the new scaling rules.
-
-2001-11-17 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/raw.c tests/write_read_test.c tests/write_read_test.c
- Added ability to do raw reads/writes of float, u-law and A-law files.
-
- * src/*.[ch] examples/*.[ch] tests/*.[ch]
- Removed dependance on pcmbitwidth field of SF_INFO struct and moved to new
- SF_FORMAT_* types and use of SF_ENDIAN_BIG/LITTLE/CPU.
-
-2001-11-12 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/*.[ch]
- Started implmentation of major changes documented in doc/version1.html.
-
- Removed all usage of off_t which is not part of the ISO C standard. All
- places which were using it are now using type long which is the type of
- the offset parameter for the fseek function.
- This should fix problems on BeOS, MacOS and *BSD like systems which were
- failing "make check" because sizeof (long) != sizeof (off_t).
-
---------------------------------------------------------------------------------
-This is the boundary between version 1 of the library above and version 0 below.
---------------------------------------------------------------------------------
-
-2001-11-11 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * examples/sfplay_beos.cpp
- Added BeOS version of sfplay.c. This needs to be compiled using a C++
- compiler so is therefore not built by default. Thanks to Marcus Overhagen
- for providing this.
-
-2001-11-10 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * examples/sfplay.c
- New example file showing how libsndfile can be used to read and play a
- sound file.
- At the moment on Linux is supported. Others will follow in the near future.
-
-2001-11-09 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/pcm.c
- Fixed problem with normalisation code where a value of 1.0 could map to
- a value greater than MAX_SHORT or MAX_INT. Thanks to Roger Dannenberg for
- pointing this out.
-
-2001-11-08 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/pcm.c
- Fixed scaling issue when reading/writing 8 bit files using
- sf_read/sf_write_short ().
- On read, values are scaled so that the most significant bit in the char
- ends up in the most significant bit of the short. On write, values are
- scaled so that most significant bit in the short ends up as the most
- significant bit in the char.
-
-2001-11-07 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/au.c src/sndfile.c
- Added support for 32 bit float data in big and little endian AU files.
-
- * tests/write_read_test.c
- Added tests for 32 bit float data in AU files.
-
-2001-11-06 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * tests/lossy_comp_test.c
- Finalised testing of stereo files where possible.
-
-2001-11-05 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/wav_ms_adpcm.c
- Fixed bug in writing stereo MS ADPCM WAV files. Thanks to Xu Xin for
- pointing out this problem.
-
-2001-10-24 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/wav_ms_adpcm.c
- Modified function srate2blocksize () to handle 44k1Hz stereo files.
-
-2001-10-21 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/w64.c
- Added support for Sonic Foundry 64 bit WAV format. As Linux (my main
- development platform) does not yet support 64 bit file offsets by default,
- current handling of this file format treats everything as 32 bit and fails
- openning the file, if it finds anything that goes beyond 32 bit values.
-
- * src/sndfile.[hc] src/common.h src/Makefile.am
- Added hooks for W64 support.
-
-2001-10-21 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * configure.in
- Added more warnings options to CFLAGS when the gcc compiler is detected.
-
- * src/*.[ch] tests/*.c examples/*.c
- Started fixing the warning messages due to the new CFLASG.
-
- * src/voc.c
- More work on VOC file read/writing.
-
- * src/paf.c
- Found that PAF files were not checking the normalisation flag when reading
- or writing floats and doubles. Fixed it.
-
- * tests/floating_point_test.c
- Added specific test for the above problem.
-
- * src/float_cast.h src/pcm.c
- Added a section for Win32 to define lrint () and lrintf () in the header
- and implement it in the pcm.c
-
-2001-10-20 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * sndfile-config.in m4/sndfile.m4
- These files were donated by Conrad Parker who also provided instructions
- on how to install them using autoconf/automake.
-
- * src/float_cast.h
- Fiddled around with this file some more. On Linux and other gcc supported
- OSes use the C99 functions lrintf() and lrint() for casting from floating
- point to int without incurring the huge perfromance penalty (particularly
- on the i386 family) caused by the regular C cast from float to int.
- These new C99 functions replace the FLOAT_TO_* and DOUBLE_TO_* macros which
- I had been playing with.
-
- * configure.in m4/lrint.m4 m4/lrintf.m4
- Add detection of these functions.
-
-2001-10-17 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/voc.c
- Completed code for reading VOC files containing a single audio data
- segment.
- Started implementing code to handle files with multiple VOC_SOUND_DATA
- segments but couldn't be bothered finishing it. Multiple segment files can
- have different sample rates for different sections and other nasties like
- silence and repeat segments.
-
-2001-10-16 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/common.h src/*.c
- Removed SF_PRIVATE struct field fdata and replaced it with extra_data.
-
- * src/voc.c
- Further development of the read part of this woefult file format.
-
-2001-10-04 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/float_cast.h
- Implemented gcc and i386 floating point to int cast macros. Standard cast
- will be used when not on gcc for i385.
-
- * src/pcm.c
- Modified all uses of FLOAT/DOUBLE_TO_INT and FLOAT/DOUBLE_TO_SHORT casts to
- comply with macros in float_cast.h.
-
-2001-10-04 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/voc.c
- Changed the TYPE_xxx enum names to VOC_TYPE_xxx to prevent name clashes
- on MacOS with CodeWarrior 6.0.
-
- * MacOS/MacOS-readme.txt
- Updated the compile instructions. Probably still need work as I don't have
- access to a Mac.
-
-2001-10-01 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/wav.c src/aiff.c common.c
- Changed all references to snprintf to LSF_SNPRINTF and all vsnprintf to
- LSF_VSNPRINTF. LSF_VSNPRINTF and LSF_VSNPRINTF are defined in common.h.
-
- * src/common.h
- Added checking of HAVE_SNPRINTF and HAVE_VSNPRINTF and defining
- LSF_VSNPRINTF and LSF_VSNPRINTF to appropriate values.
-
- * src/missing.c
- New file containing a minimal implementation of snprintf and vsnprintf
- functions named missing_snprintf and missing_vsnprintf respectively. These
- are only compliled into the binary if snprintf and/or vsnprintf are not
- available.
-
-2001-09-29 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/ircam.c
- New file to handle Berkeley/IRCAM/CARL files.
-
- * src/sndfile.c src/common.h
- Modified for IRCAM handling.
-
- * tests/*.c
- Added tests for IRCAM files.
-
-2001-09-27 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/wav.c
- Apparently microsoft windows (tm) doesn't like ulaw and Alaw WAV files with
- 20 byte format chunks (contrary to ms's own documentation). Fixed the WAV
- header writing code to generate smaller ms compliant ulaw and Alaw WAV
- files.
-
-2001-09-17 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * tests/stdio_test.sh tests/stdio_test.c
- Shell script was rewritten as a C program due to incompatibilities of the
- sh shell on Linux and Solaris.
-
-2001-09-16 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * tests/stdio_test.sh tests/stdout_test.c tests/stdin_test.c
- New test programs to verify the correct operation of reading from stdin and
- writing to stdout.
-
- * src/sndfile.c wav.c au.c nist.c paf.c
- Fixed a bugs uncovered by the new test programs above.
-
-2001-09-15 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/sndfile.c wav.c
- Fixed a bug preventing reading a file from stdin. Found by T. Narita.
-
-2001-09-12 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/common.h
- Fixed a problem on OpenBSD 2.9 which was causing sf_seek() to fail on IMA
- WAV files. Root cause was the declaration of the func_seek typedef not
- matching the functions it was actually being used to point to. In OpenBSD
- sizeof (off_t) != sizeof (int). Thanks to Heikki Korpela for allowing me
- to log into his OpenBSD machine to debug this problem.
-
-2001-09-03 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/sndfile.c
- Implemented sf_command ("norm float").
-
- * src/*.c
- Implemented handling of sf_command ("set-norm-float"). Float normalization
- can now be turned on and off.
-
- * tests/double_test.c
- Renamed to floating_point_test.c. Modified to include tests for all scaled
- reads and writes of floats and doubles.
-
- * src/au_g72x.c
- Fixed bug in normalization code found with improved floating_point_test
- program.
-
- * src/wav.c
- Added code for parsing 'INFO' and 'LIST' chunks. Will be used for extract
- text annotations from WAV files.
-
- * src/aiff.c
- Added code for parsing '(c) ' and 'ANNO' chunks. Will be used for extract
- text annotations from WAV files.
-
-2001-09-02 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * examples/sf_info.c example/Makefile.am
- Renamed to sndfile_info.c. The program sndfile_info will now be installed
- when the library is installed.
-
- * src/float_cast.h
- New file defining floating point to short and int casts. These casts will
- eventually replace all flot and double casts to short and int. See comments
- at the top of the file for the reasoning.
-
- * src/*.c
- Changed all default float and double casts to short or int with macros
- defined in floatcast.h. At the moment these casts do nothing. They will be
- replaced with faster float to int cast operations in the near future.
-
-2001-08-31 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * tests/command_test.c
- New file for testing sf_command () functionality.
-
- * src/sndfile.c
- Revisiting of error return values of some functions.
- Started implementing sf_command () a new function will allow on-the-fly
- modification of library behaviour, or instance, sample value scaling.
-
- * src/common.h
- Added hook for format specific sf_command () calls to SNDFILE struct.
-
- * doc/api.html
- Updated and errors corrected.
-
- * doc/command.html
- New documentation file explaining new sf_command () function.
-
-2001-08-11 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/sndfile.c
- Fixed error return values from sf_read*() and sf_write*(). There were
- numerous instances of -1 being returned through size_t. These now all set
- error int the SF_PRIVATE struct and return 0. Thanks to David Viens for
- spotting this.
-
-2001-08-01 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/common.c
- Fixed use of va_arg() calls that were causing warning messages with the
- latest version of gcc (thanks Maurizio Umberto Puxeddu).
-
-2001-07-25 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/*.c src/sfendian.h
- Moved definition of MAKE_MARKER macro to sfendian.h
-
-2001-07-23 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/sndfile.c
- Modified sf_get_lib_version () so that version string will be visible using
- the Unix strings command.
-
- * examples/Makefile.am examples/sfinfo.c
- Renamed sfinfo program and source code to sf_info. This prevents a name
- clash with the program included with libaudiofile.
-
-2001-07-22 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * tests/read_seek_test.c tests/lossy_comp_test.c
- Added tests for sf_read_float () and sf_readf_float ().
-
- * src/voc.c
- New files for handling Creative Voice files (not complete).
-
- * src/samplitude.c
- New files for handling Samplitude files (not complete).
-
-2001-07-21 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/aiff.c src/au.c src/paf.c src/svx.c src/wav.c
- Converted these files to using psf_binheader_readf() function. Will soon be
- ready to attempt to make reading writing from pipes work reliably.
-
- * src/*.[ch]
- Added code for sf_read_float () and sf_readf_float () methods of accessing
- file data.
-
-2001-07-20 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/paf.c src/wav_gsm610.c
- Removed two printf()s which had escaped notice for some time (thanks
- Sigbjørn Skjæret).
-
-2001-07-19 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/wav_gsm610.c
- Fixed a bug which prevented GSM 6.10 encoded WAV files generated by
- libsndfile from being played in Windoze (thanks klay).
-
-2001-07-18 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/common.[ch]
- Implemented psf_binheader_readf() which will do for file header reading what
- psf_binheader_writef() did for writing headers. Will eventually allow
- libsndfile to read and write from pipes, including named pipes.
-
-2001-07-16 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * MacOS/config.h Win32/config.h
- Attempted to bring these two files uptodate with src/config.h. As I don't
- have access to either of these systems support for them may be completely
- broken.
-
-2001-06-18 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/float32.c
- Fixed bug for big endian processors that can't read 32 bit IEEE floats. Now
- tested on Intel x86 and UltraSparc processors.
-
-2001-06-13 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/aiff.c
- Modified to allow REX files (from Propellorhead's Recycle and Reason
- programs) to be read.
- REX files are basically an AIFF file with slightly unusual sequence of
- chunks (AIFF files are supposed to allow any sequence) and some extra
- application specific information.
- Not yet able to write a REX file as the details of the application specific
- data is unknown.
-
-2001-06-12 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/wav.c
- Fixed endian bug when reading PEAK chunk on big endian machines.
-
- * src/common.c
- Fixed endian bug when reading PEAK chunk on big endian machines with
- --enable-force-broken-float configure option.
- Fix psf_binheader_writef for (FORCE_BROKEN_FLOAT ||______)
-
-2001-06-07 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * configure.in src/config.h.in
- Removed old CAN_READ_WRITE_x86_IEEE configure variable now that float
- capabilities are detected at run time.
- Added FORCE_BROKEN_FLOAT to allow testing of broken float code on machines
- where the processor can in fact handle floats correctly.
-
- * src/float32.c
- Rejigged code reading and writing of floats on broken processors.
-
- * m4/
- Removed this directory and all its files as they are no longer needed.
-
-2001-06-05 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * tests/peak_chunk_test.c
- New test to validate reading and writing of peak chunk.
-
- * examples/sfconvert
- Added -float32 option.
-
- * src/*.c
- Changed all error return values to negative values (ie the negative of what
- they were).
-
- * src/sndfile.c tests/error_test.c
- Modified to take account of the previous change.
-
-2001-06-04 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/float32.c
- File renamed from wav_float.c and renamed function to something more
- general.
- Added runtime detection of floating point capabilities.
- Added recording of peaks during write for generation of PEAK chunk.
-
- * src/wav.c src/aiff.c
- Added handing for PEAK chunk for floating point files. PEAK is read when the
- file headers are read and generated when the file is closed. Logic is in
- place for adding PEAK chunk to end of file when writing to a pipe (reading
- and writing from/to pipe to be implemented soon).
-
- * src/sndfile.c
- Modified sf_signal_max () to use PEAK values if present.
-
-2001-06-03 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/*.c
- Added pcm_read_init () and pcm_write_init () to src/pcm.c and removed all
- other calls to functions in this file from the filetype specific files.
-
- * src/*.c
- Added alaw_read_init (), alaw_write_int (), ulaw_read_init () and
- ulaw_write_init () and removed all other calls to functions in alaw.c and
- ulaw.c from the filetype specific files.
-
- * tests/write_read_test.c
- Added tests to validate sf_seek () on all file types.
-
- * src/raw.c
- Implemented raw_seek () function to fix a bug where
- sf_seek (file, 0, SEEK_SET) on a RAW file failed.
-
- * src/paf.c
- Fixed a bug in paf24_seek () found due to added seeks tests in
- tests/write_read_test.c
-
-2001-06-01 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * tests/read_seek_test.c
- Fixed a couple of broken binary files.
-
- * src/aiff.c src/wav.c
- Added handling of PEAK chunks on file read.
-
-2001-05-31 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * check_libsndfile.py
- New file for the regression testing of libsndfile.
- check_libsndfile.py is a Python script which reads in a file containing
- filenames of audio files. Each file is checked by running the examples/sfinfo
- program on them and checking for error or warning messages in the libsndfile
- log buffer.
-
- * check_libsndfile.list
- This is an example list of audio files for use with check_libsndfile.py
-
- * tests/lossy_comp_test.c
- Changed the defined value of M_PI for math header files which don't have it.
- This fixed validation test failures on MetroWerks compilers. Thanks to Lord
- Praetor Satanus of Acheron for bringing this to my attention.
-
-2001-05-30 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/common.[ch]
- Removed psf_header_setf () which was no longer required after refactoring
- and simplification of header writing.
- Added 'z' format specifier to psf_binheader_writef () for zero filling header
- with N bytes. Used by paf.c and nist.c
-
- * tests/check_log_buffer.c
- New file implementing check_log_buffer () which reads the log buffer of a
- SNDFILE* object and searches for error and warning messages. Calls exit ()
- if any are found.
-
- * tests/*.c
- Added calls to check_log_buffer () after each call to sf_open_XXX ().
-
-2001-05-29 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/wav.c src/wav_ms_adpcm.c src/wav_gsm610.c
- Major rehack of header writing using psf_binheader_writef ().
-
-2001-05-28 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/wav.c src/wav_ima_adpcm.c
- Major rehack of header writing using psf_binheader_writef ().
-
-2001-05-27 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/wav.c
- Changed return type of get_encoding_str () to prevent compiler warnings on
- Mac OSX.
-
- * src/aiff.c src/au.c
- Major rehack of header writing using psf_binheader_writef ().
-
-2001-05-25 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/common.h src/common.c
- Added comments.
- Name of log buffer changed from strbuffer to logbuffer.
- Name of log buffer index variable changed from strindex to logindex.
-
- * src/*.[ch]
- Changed name of internal logging function from psf_sprintf () to
- psf_log_printf ().
- Changed name of internal header generation functions from
- psf_[ab]h_printf () to psf_asciiheader_printf () and
- psf_binheader_writef ().
- Changed name of internal header manipulation function psf_hsetf () to
- psf_header_setf ().
-
-2001-05-24 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/nist.c
- Fixed reading and writing of sample_byte_format header. "01" means little
- endian and "10" means big endian regardless of bit width.
-
- * configure.in
- Detect Mac OSX and disable -Wall and -pedantic gcc options. Mac OSX is
- way screwed up and spews out buckets of warning messages from the system
- headers.
- Added --disable-gcc-opt configure option (sets gcc optimisation to -O0 ) for
- easier debugging.
- Made decision to harmonise source code version number and .so library
- version number. Future releases will stick to this rule.
-
- * doc/new_file_type.HOWTO
- New file to document the addition of new file types to libsndfile.
-
-2001-05-23 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/nist.c
- New file for reading/writing Sphere NIST audio file format.
- Originally requested by Elis Pomales in 1999.
- Retrieved from unstable (and untouched for 18 months) branch of libsndfile.
- Some vital information gleaned from the source code to Bill Schottstaedt's
- sndlib library : ftp://ccrma-ftp.stanford.edu/pub/Lisp/sndlib.tar.gz
- Currently reading and writing 16, 24 and 32 bit, big-endian and little
- endian, stereo and mono files.
-
- * src/common.h src/common.c
- Added psf_ah_printf () function to help construction of ASCII headers (ie NIST).
-
- * configure.in
- Added test for vsnprintf () required by psf_ah_printf ().
-
- * tests/write_read_test.c
- Added tests for supported NIST files.
-
-2001-05-22 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * tests/write_read_test.c
- Added tests for little endian AIFC files.
-
- * src/aiff.c
- Minor re-working of aiff_open_write ().
- Added write support for little endian PCM encoded AIFC files.
-
-2001-05-13 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/aiff.c
- Minor re-working of aiff_open_read ().
- Added read support for little endian PCM encoded AIFC files from the Mac
- OSX CD ripper program. Guillaume Lessard provided a couple of sample files
- and a working patch.
- The patch was not used as is but gave a good guide as to what to do.
-
-2001-05-11 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/sndfile.h
- Fixed comments about endian-ness of WAV and AIFF files. Guillaume Lessard
- pointed out the error.
-
-2001-04-23 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * examples/make_sine.c
- Re-write of this example using sample rate and required frequency in Hz.
-
-2001-02-11 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/sndfile.c
- Fixed bug that prevented known file types from being read as RAW PCM data.
-
-2000-12-16 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/aiff.c
- Added handing of COMT chunk.
-
-2000-11-16 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * examples/sfconvert.c
- Fixed bug in normalisatio code. Pointed out by Johnny Wu.
-
-2000-11-08 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * Win32/config.h
- Fixed the incorrect setting of HAVE_ENDIAN_H parameter. Win32 only issue.
-
-2000-10-27 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * tests/Makefile.am
- Added -lm for write_read_test_LDADD.
-
-2000-10-16 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/sndfile.c src/au.c
- Fixed bug which prevented writing of G723 24kbps AU files.
-
- * tests/lossy_comp_test.c
- Corrrection to options for G723 tests.
-
- * configure.in
- Added --disable-gcc-pipe option for DJGPP compiler (gcc on MS-DOS) which
- doesn't allow gcc -pipe option.
-
-2000-09-03 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/ulaw.c src/alaw.c src/wav_imaadpcm.c src/msadpcm.c src/wav_gsm610.c
- Fixed normailsation bugs shown up by new double_test program.
-
-2000-08-31 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/pcm.c
- Fixed bug in normalisation code (spotted by Steve Lhomme).
-
- * tests/double_test.c
- New file to test scaled and unscaled sf_read_double() and sf_write_double()
- functions.
-
-2000-08-28 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * COPYING
- Changed to the LGPL COPYING file (spotted by H. S. Teoh).
-
-2000-08-21 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/sndfile.h
- Removed prototype of unimplemented function sf_get_info(). Added prototype
- for sf_error_number() Thanks to Sigbjørn Skjæret for spotting these.
-
-2000-08-18 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/newpcm.h
- New file to contain a complete rewrite of the PCM data handling.
-
-2000-08-15 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/sndfile.c
- Fixed a leak of FILE* pointers in sf_open_write(). Thanks to Sigbjørn
- Skjæret for spotting this one.
-
-2000-08-13 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/au_g72x.c src/G72x/g72x.c
- Added G723 encoded AU file support.
-
- * tests/lossy_comp_test.c
- Added tests for G721 and G723 encoded AU files.
-
-2000-08-06 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * all files
- Changed the license to LGPL. Albert Faber who had copyright on
- Win32/unistd.h gave his permission to change the license on that file. All
- other files were either copyright erikd AT mega-nerd DOT com or copyright
- under a GPL/LGPL compatible license.
-
-2000-08-06 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * tests/lossy_comp_test.c
- Fixed incorrect error message.
-
- * src/au_g72x.c src/G72x/*
- G721 encoded AU files now working.
-
- * Win32/README-Win32.txt
- Replaced this file with a new one which gives a full explanation
- of how to build libsndfile under Win32. Thanks to Mike Ricos.
-
-2000-08-05 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/*.[ch]
- Removed double leading underscores from the start of all variable and
- function names. Identifiers with a leading underscores are reserved
- for use by the compiler.
-
- * src/au_g72x.c src/G72x/*
- Continued work on G721 encoded AU files.
-
-2000-07-12 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/G72x/*
- New files for reading/writing G721 and G723 ADPCM audio. These files
- are from a Sun Microsystems reference implementation released under a
- free software licence.
- Extensive changes to this code to make it fit in with libsndfile.
- See the ChangeLog in this directory for details.
-
- * src/au_g72x.c
- New file for G721 encoded AU files.
-
-2000-07-08 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * libsndfile.spec.in
- Added a spec file for making RPMs. Thanks to Josh Green for supplying this.
-
-2000-06-28 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/sndfile.c src/sndfile.h
- Add checking for and handling of header-less u-law encoded AU/SND files.
- Any file with a ".au" or ".snd" file extension and without the normal
- AU file header is treated as an 8kHz, u-law encoded file.
-
- * src/au.h
- New function for opening a headerless u-law encoded file for read.
-
-2000-06-04 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/paf.c
- Add checking for files shorter than minimal PAF file header length.
-
-2000-06-02 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * tests/write_read_test.c
- Added extra sf_perror() calls when sf_write_XXXX fails.
-
-2000-05-29 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/common.c
- Modified usage of va_arg() macro to work correctly on PowerPC
- Linux. Thanks to Kyle Wheeler for giving me ssh access to his
- machine while I was trying to track this down.
-
- * configure.in src/*.[ch]
- Sorted out some endian-ness issues brought up by PowerPC Linux.
-
- * tests/read_seek_test.c
- Added extra debugging for when tests fail.
-
-2000-05-18 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/wav.c
- Fixed bug in GSM 6.10 handling for big-endian machines. Thanks
- to Sigbjørn Skjæret for reporting this.
-
-2000-04-25 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/sndfile.c src/wav.c src/wav_gsm610.c
- Finallised writing of GSM 6.10 WAV files.
-
- * tests/lossy_comp_test.c
- Wrote new test code for GSM 6.10 files.
-
- * examples/sfinfo.c
- Fixed incorrect format in printf() statement.
-
-2000-04-06 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/sndfile.h.in
- Fixed comments about sf_perror () and sf_error_str ().
-
-2000-03-14 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * configure.in
- Fixed --enable-justsrc option.
-
-2000-03-07 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * wav.c
- Fixed checking of bytespersec field of header. Still some weirdness
- with some files.
-
-2000-03-05 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * tests/lossy_comp_test.c
- Added option to test PCM WAV files (sanity check).
- Fixed bug in sf_seek() tests.
-
-2000-02-29 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/sndfile.c src/wav.c
- Minor changes to allow writing of GSM 6.10 WAV files.
-
-2000-02-28 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * configure.in Makefile.am src/Makefile.am
- Finally got around to figuring out how to build a single library from
- multiple source directories.
- Reading GSM 6.10 files now seems to work.
-
-2000-01-03 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/wav.c
- Added more error reporting in read_fmt_chunk().
-
-1999-12-21 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * examples/sfinfo.c
- Modified program to accept multiple filenames from the command line.
-
-1999-11-27 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/wav_ima_adpcm.c
- Moved code around in preparation to adding ability to read/write IMA ADPCM
- encoded AIFF files.
-
-1999-11-16 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/common.c
- Fixed put_int() and put_short() macros used by _psf_hprintf() which were
- causing seg. faults on Sparc Solaris.
-
-1999-11-15 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/common.c
- Added string.h to includes. Thanks to Sigbjxrn Skjfret.
-
- * src/svx.c
- Fixed __svx_close() function to ensure FORM and BODY chunks are correctly
- set.
-
-1999-10-01 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/au.c
- Fixed handling of incorrect size field in AU header on read. Thanks to
- Christoph Lauer for finding this problem.
-
-1999-09-28 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/aiff.c
- Fixed a bug with incorrect SSND chunk length being written. This also lead
- to finding an minor error in AIFF header parsing. Thanks to Dan Timis for
- pointing this out.
-
-1999-09-24 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/paf.c
- Fixed a bug with reading and writing 24 bit stereo PAF files. This problem
- came to light when implementing tests for the new functions which operate
- in terms of frames rather than items.
-
-1999-09-23 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/sndfile.c
- Modified file type detection to use first 12 bytes of file rather than
- file name extension. Required this because NIST files use the same
- filename extension as Microsoft WAV files.
-
- * src/sndfile.c src/sndfile.h
- Added short, int and double read/write functions which work in frames
- rather than items. This was originally suggested by Maurizio Umberto
- Puxeddu.
-
-1999-09-22 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/svx.c
- Finished off implementation of write using __psf_hprintf().
-
-1999-09-21 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/common.h
- Added a buffer to SF_PRIVATE for writing the header. This is required
- to make generating headers for IFF/SVX files easier as well as making
- it easier to do re-write the headers which will be required when
- sf_rewrite_header() is implemented.
-
- * src/common.c
- Implemented __psf_hprintf() function. This is an internal function
- which is documented briefly just above the code.
-
-1999-09-05 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/sndfile.c
- Fixed a bug in sf_write_raw() where it was returning incorrect values
- (thanks to Richard Dobson for finding this one). Must put in a test
- routine for sf_read_raw and sf_write_raw.
-
- * src/aiff.c
- Fixed default FORMsize in __aiff_open_write ().
-
- * src/sndfile.c
- Added copy of filename to internal data structure. IFF/SVX files
- contain a NAME header chunk. Both sf_open_read() and sf_open_write()
- copy the file name (less the leading path information) to the
- filename field.
-
- * src/svx.c
- Started implementing writing of files.
-
-1999-08-04 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/svx.c
- New file for reading/writing 8SVX and 16SVX files.
-
- * src/sndfile.[ch] src/common.h
- Changes for SVX files.
-
- * src/aiff.c
- Fixed header parsing when unknown chunk is found.
-
-1999-08-01 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/paf.c
- New file for reading/writing Ensoniq PARIS audio file format.
-
- * src/sndfile.[ch] src/common.h
- Changes for PAF files.
-
- * src/sndfile.[ch]
- Added stuff for sf_get_lib_version() function.
-
-
-1999-07-31 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/sndfile.h MacOS/config.h
- Fixed minor MacOS configuration issues.
-
-1999-07-30 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * MacOS/
- Added a new directory for the MacOS config.h file and the
- readme file.
-
- * src/aiff.c
- Fixed calculation of datalength when reading SSND chunk. Thanks to
- Sigbjørn Skjæret for pointing out this error.
-
-1999-07-29 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/sndfile.c src/sndfile.h src/raw.c
- Further fixing of #includes for MacOS.
-
-1999-07-25 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/wav.c src/aiff.c
- Added call to ferror () in main header parsing loop of __XXX_open_read
- functions. This should fix problems on platforms (MacOS, AmigaOS) where
- fseek()ing or fread()ing beyond the end of the file puts the FILE*
- stream in an error state until clearerr() is called.
-
- * tests/write_read_test.c
- Added tests for RAW header-less PCM files.
-
- * src/common.h
- Moved definition of struct tribyte to pcm.c which is the only place
- which needs it.
-
- * src/pcm.c
- Modified all code which assumed sizeof (struct tribyte) == 3. This code
- did not work on MacOS. Thanks to Ben "Jacobs" for pointing this out.
-
- * src/au.c
- Removed <sys/stat.h> from list of #includes (not being used).
-
- * src/sndfile.c
- Added MacOS specific #ifdef to replace <sys/stat.h>.
-
- * src/sndfile.h
- Added MacOS specific #ifdef to replace <sys/stat.h>.
-
- * src/sndfile.h
- Added MacOS specific typedef for off_t.
-
- * MacOS-readme.txt
- New file with instructions for building libsndfile under MacOS. Thanks
- to Ben "Jacobs" for supplying these instructions.
-
-1999-07-24 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * configure.in
- Removed sndfile.h from generated file list as there were no longer
- any autoconf substitutions being made.
-
- * src/raw.c
- New file for handling raw header-less PCM files. In order to open these
- for read, the user must specify format, pcmbitwidth and channels in the
- SF_INFO struct when calling sf_open_read ().
-
- * src/sndfile.c
- Added support for raw header-less PCM files.
-
-1999-07-22 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * examples/sfinfo.c
- Removed options so the sfinfo program always prints out all the information.
-
-1999-07-19 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/alaw.c
- New file for A-law encoding (similar to u-law).
-
- * tests/alaw_test.c
- New test program to test the A-law encode/decode lookup tables.
-
- * tests/lossy_comp_test.c
- Added tests for a-law encoded WAV, AU and AULE files.
-
-1999-07-18 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/sndfile.c src/au.c
- Removed second "#include <unistd.h>". Thanks to Ben "Jacobs" for pointing
- this out.
-
-1999-07-18 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * tests/ulaw_test.c
- New test program to test the u-law encode/decode lookup tables.
-
-1999-07-16 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/sndfile.h
- Made corrections to comments on the return values from sf_seek ().
-
- * src/sndfile.c
- Fixed boundary condition checking bug and accounting bug in sf_read_raw ().
-
-1999-07-15 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/au.c src/ulaw.c
- Finished implementation of u-law encoded AU files.
-
- * src/wav.c
- Implemented reading and writing of u-law encoded WAV files.
-
- * tests/
- Changed name of adpcm_test.c to lossy_comp_test.c. This test program
- will now be used to test Ulaw and Alaw encoding as well as APDCM.
- Added tests for Ulaw encoded WAV files.
-
-1999-07-14 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * tests/adpcm_test.c
- Initialised amp variable in gen_signal() to remove compiler warning.
-
-1999-07-12 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/aiff.c
- In __aiff_open_read () prevented fseek()ing beyond end of file which
- was causing trouble on MacOS with the MetroWerks compiler. Thanks to
- Ben "Jacobs" for pointing this out.
-
- *src/wav.c
- Fixed as above in __wav_open_read ().
-
-1999-07-01 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/wav_ms_adpcm.c
- Implemented MS ADPCM encoding. Code cleanup of decoder.
-
- * tests/adpcm_test.c
- Added tests for MS ADPCM WAV files.
-
- * src/wav_ima_adpcm.c
- Fixed incorrect parameter in call to srate2blocksize () from
- __ima_writer_init ().
-
-1999-06-23 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * tests/read_seek_test.c
- Added test for 8 bit AIFF files.
-
-1999-06-18 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * tests/write_read_test.c
- Removed test for IMA ADPCM WAV files which is now done in adpcm_test.c
-
- * configure.in
- Added -Wconversion to CFLAGS.
-
- * src/*.c tests/*.c examples/*.c
- Fixed all warnings resulting from use of -Wconversion.
-
-1999-06-17 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/wav.c
- Added fact chunk handling on read and write for all non WAVE_FORMAT_PCM
- WAV files.
-
- * src/wav_ima.c
- Changed block alignment to be dependant on sample rate. This should make
- WAV files created with libsndfile compatible with the MS Windows media
- players.
-
- * tests/adpcm_test.c
- Reimplemented adpcm_test_short and implemented adpcm_test_int and
- adpcm_test_double.
- Now have full testing of IMA ADPCM WAV file read, write and seek.
-
-1999-06-15 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/wav_float.c
- Fixed function prototype for x86f2d_array () which was causing ocassional
- seg. faults on Sparc Solaris machines.
-
-1999-06-14 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/aiff.c
- Fixed bug in __aiff_close where the length fields in the header were
- not being correctly calculated before writing.
-
- * tests/write_read_test.c
- Modified to detect the above bug in WAV, AIFF and AU files.
-
-1999-06-12 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * Win32/*
- Added a contribution from Albert Faber to allow libsndfile to compile
- under Win32 systems. libsndfile will now be used as part of LAME the
- the MPEG 1 Layer 3 encoder (http://internet.roadrunner.com/~mt/mp3/).
-
-1999-06-11 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * configure.in
- Changed to reflect previous changes.
-
- * src/wav_ima_adpcm.c
- Fixed incorrect calculation of bytespersec header field (IMA ADPCM only).
-
- Fixed bug when writing from int or double data to IMA ADPCM file. Will need
- to write test code for this.
-
- Fixed bug in __ima_write () whereby the length of the current block was
- calculated incorrectly. Thanks to Jongcheon Park for pointing this out.
-
-1999-03-27 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/*.c
- Changed all read/write/lseek function calls to fread/fwrite/
- fseek/ftell and added error checking of return values from
- fread and fwrite in critical areas of the code.
-
- * src/au.c
- Fixed incorrect datasize element in AU header on write.
-
- * tests/error_test.c
- Add new test to check all error values have an associated error
- string. This will avoid embarrassing real world core dumps.
-
-1999-03-23 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/wav.c src/aiff.c
- Added handling for unknown chunk markers in the file.
-
-1999-03-22 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/sndfile.c
- Filled in missing error strings in SndfileErrors array. Missing entries
- can cause core dumps when calling sf_error-str (). Thanks to Sam
- <mrsam at-sign geocities.com> for finding this problem.
-
-1999-03-21 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/wav_ima_adpcm.c
- Work on wav_ms_adpcm.c uncovered a bug in __ima_read () when reading
- stereo files. Caused by not adjusting offset into buffer of decoded
- samples for 2 channels. A similar bug existed in __ima_write ().
- Need a test for stereo ADPCM files.
-
- * src/wav_ms_adpcm.c
- Decoder working correctly.
-
-1999-03-18 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * configure.in Makefile.am
- Added --enable-justsrc configuration variable sent by Sam
- <mrsam at-sign geocities.com>.
-
- * src/wav_ima_adpcm.c
- Fixed bug when reading beyond end of data section due to not
- checking pima->blockcount.
- This uncovered __ima_seek () bug due to pima->blockcount being set
- before calling __ima_init_block ().
-
-1999-03-17 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/wav.c
- Started implementing MS ADPCM decoder.
- If file is WAVE_FORMAT_ADPCM and length of data chunk is odd, this
- encoder seems to add an extra byte. Why not just give an even data
- length?
-
-1999-03-16 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/wav.c
- Split code out of wav.c to create wav_float.c and wav_ima_adpcm.c.
- This will make it easier to add and debug other kinds of WAV files
- in future.
-
-1999-03-14 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * tests/
- Added adpcm_test.c which implements test functions for
- IMA ADPCM reading/writing/seeking etc.
-
- * src/wav.c
- Fixed many bugs in IMA ADPCM encoder and decoder.
-
-1999-03-11 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/wav.c
- Finished implementing IMA ADPCM encoder and decoder (what a bitch!).
-
-1999-03-03 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/wav.c
- Started implementing IMA ADPCM decoder.
-
-1999-03-02 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/sndfile.c
- Fixed bug where the sf_read_XXX functions were returning a
- incorrect read count when reading past end of file.
- Fixed bug in sf_seek () when seeking backwards from end of file.
-
- * tests/read_seek_test.c
- Added multiple read test to short_test(), int_test () and
- double_test ().
- Added extra chunk to all test WAV files to test that reading
- stops at end of 'data' chunk.
-
-1999-02-21 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * tests/write_read_test.c
- Added tests for little DEC endian AU files.
-
- * src/au.c
- Add handling for DEC format little endian AU files.
-
-1999-02-20 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/aiff.c src/au.c src/wav.c
- Add __psf_sprintf calls during header parsing.
-
- * src/sndfile.c src/common.c
- Implement sf_header_info (sndfile.c) function and __psf_sprintf (common.c).
-
- * tests/write_read_test.c
- Added tests for 8 bit PCM files (WAV, AIFF and AU).
-
- * src/au.c src/aiff.c
- Add handling of 8 bit PCM data format.
-
- * src/aiff.c
- On write, set blocksize in SSND chunk to zero like everybody else.
-
-1999-02-16 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/pcm.c:
- Fixed bug in let2s_array (cptr was not being initialised).
-
- * src/sndfile.c:
- Fixed bug in sf_read_raw and sf_write_raw. sf_seek should
- now work when using these functions.
-
-1999-02-15 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * tests/write_read_test.c:
- Force test_buffer array to be double aligned. Sparc Solaris
- requires this.
-
-1999-02-14 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/pcm.c:
- Fixed a bug which was causing errors in the reading
- and writing of 24 bit PCM files.
-
- * doc/api.html
- Finished of preliminary documentaion.
-
-1999-02-13 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * src/aiff.c:
- Changed reading of 'COMM' chunk to avoid reading an int
- which overlaps an int (4 byte) boundary.
-
diff --git a/libs/libsndfile/Mingw-make-dist.sh b/libs/libsndfile/Mingw-make-dist.sh
deleted file mode 100755
index fef4ba8cf9..0000000000
--- a/libs/libsndfile/Mingw-make-dist.sh
+++ /dev/null
@@ -1,113 +0,0 @@
-#!/bin/sh
-
-# Copyright (C) 2006 Erik de Castro Lopo <erikd@mega-nerd.com>
-#
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-# * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in
-# the documentation and/or other materials provided with the
-# distribution.
-# * Neither the author nor the names of any contributors may be used
-# to endorse or promote products derived from this software without
-# specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
-# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
-# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
-# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-set -e
-
-if [ $# -lt 1 ] || [ $# -gt 2 ]; then
- echo "Usage : Mingw-make-dist.sh <source tarball>."
- exit 1
- fi
-
-TARGZ=$1
-if [ ! -f $TARGZ ]; then
- echo "Can't find source tarball."
- fi
-
-TARGZ=$1
-if [ ! -f $TARGZ.asc ]; then
- echo "Can't find source tarball signature."
- fi
-
-UNAME=`uname -s`
-if [ x$UNAME != "xMINGW32_NT-5.1" ]; then
- echo "Not able to build Win32 binaries on this platform."
- fi
-
-echo "Building MinGW binary/source zip file."
-
-VERSION=`pwd | sed -e "s#.*/##" | sed -e s/libsndfile-//`
-BUILD=`echo $VERSION | sed -e "s/\./_/g"`
-INSTALL="libsndfile-$BUILD"
-ZIPNAME="$INSTALL.zip"
-
-if [ -z "$BUILD" ]; then
- echo "Bad BUILD variable : '$BUILD'"
- exit 1
- fi
-
-if [ ! -d $INSTALL/ ]; then
- mkdir $INSTALL
- fi
-
-if [ ! -f config.status ]; then
- ./configure --prefix=`pwd`/$INSTALL/
-else
- teststr=`grep "with options" config.status | grep -- --prefix=`
- if [ -z "$teststr" ]; then
- # --disable-static doesn't work.
- ./configure --prefix=`pwd`/$INSTALL/
- fi
- fi
-
-if [ ! -f src/.libs/libsndfile-1.dll ]; then
- make all check
- fi
-
-if [ ! -f $INSTALL/bin/libsndfile-1.dll ]; then
- make install
- rm -f $INSTALL/bin/sndfile-regtest.exe
- strip $INSTALL/bin/*.*
- mv $INSTALL/bin/*.* $INSTALL/include/*.* $INSTALL/
- rmdir $INSTALL/bin
- rm -rf $INSTALL/lib
- rmdir $INSTALL/include
- cp src/libsndfile.def $INSTALL/
- cp Win32/README-precompiled-dll.txt $INSTALL/
- fi
-
-if [ ! -f $INSTALL/libsndfile-$VERSION.tar.gz ]; then
- cp $TARGZ $INSTALL/
- if [ -f $TARGZ.asc ]; then
- cp $TARGZ.asc $INSTALL/
- fi
- fi
-
-if [ ! -f $ZIPNAME ]; then
- zip -r $ZIPNAME $INSTALL/
- fi
-
-
-# Do not edit or modify anything in this comment block.
-# The following line is a file identity tag for the GNU Arch
-# revision control system.
-#
-# arch-tag: 3f82cd8a-f800-48d7-9646-2cdcf03c81a0
diff --git a/libs/libsndfile/NEWS b/libs/libsndfile/NEWS
deleted file mode 100644
index 540a2d6413..0000000000
--- a/libs/libsndfile/NEWS
+++ /dev/null
@@ -1,126 +0,0 @@
-Version 1.0.16 (2006-04-30)
- * Add support for Broadcast (BEXT) chunks in WAV files.
- * Implement new commands SFC_GET_SIGNAL_MAX and SFC_GET_MAX_ALL_CHANNELS.
- * Add support for RIFX (big endian WAV variant).
- * Fix configure script bugs.
- * Fix bug in INST and MARK chunk writing for AIFF files.
-
-Version 1.0.15 (2006-03-16)
- * Fix some ia64 issues.
- * Fix precompiled DLL.
- * Minor bug fixes.
-
-Version 1.0.14 (2006-02-19)
- * Really fix MinGW compile problems.
- * Minor bug fixes.
-
-Version 1.0.13 (2006-01-21)
- * Fix for MinGW compiler problems.
- * Allow readin/write of instrument chunks from WAV and AIFF files.
- * Compile problem fix for Solaris compiler.
- * Minor cleanups and bug fixes.
-
-Version 1.0.12 (2005-09-30)
- * Add support for FLAC and Apple's Core Audio Format (CAF).
- * Add virtual I/O interface (still needs docs).
- * Cygwin and other Win32 fixes.
- * Minor bug fixes and cleanups.
-
-Version 1.0.11 (2004-11-15)
- * Add support for SD2 files.
- * Add read support for loop info in WAV and AIFF files.
- * Add more tests.
- * Improve type safety.
- * Minor optimisations and bug fixes.
-
-Version 1.0.10 (2004-06-15)
- * Fix AIFF read/write mode bugs.
- * Add support for compiling Win32 DLLS using MinGW.
- * Fix problems resulting in failed compiles with gcc-2.95.
- * Improve test suite.
- * Minor bug fixes.
-
-Version 1.0.9 (2004-03-30)
- * Add handling of AVR (Audio Visual Research) files.
- * Improve handling of WAVEFORMATEXTENSIBLE WAV files.
- * Fix for using pipes on Win32.
-
-Version 1.0.8 (2004-03-14)
- * Correct peak chunk handing for files with > 16 tracks.
- * Fix for WAV files with huge number of CUE chunks.
-
-Version 1.0.7 (2004-02-25)
- * Fix clip mode detection on ia64, MIPS and other CPUs.
- * Fix two MacOSX build problems.
-
-Version 1.0.6 (2004-02-08)
- * Added support for native Win32 file access API (Ross Bencina).
- * New mode to add clippling then a converting from float/double to integer
- would otherwise wrap around.
- * Fixed a bug in reading/writing files > 2Gig on Linux, Solaris and others.
- * Many minor bug fixes.
- * Other random fixes for Win32.
-
-Version 1.0.5 (2003-05-03)
- * Added support for HTK files.
- * Added new function sf_open_fd() to allow for secure opening of temporary
- files as well as reading/writing sound files embedded within larger
- container files.
- * Added string support for AIFF files.
- * Minor bug fixes and code cleanups.
-
-Version 1.0.4 (2003-02-02)
- * Added suport of PVF and XI files.
- * Added functionality for setting and retreiving strings from sound files.
- * Minor code cleanups and bug fixes.
-
-Version 1.0.3 (2002-12-09)
- * Minor bug fixes.
-
-Version 1.0.2 (2002-11-24)
- * Added support for VOX ADPCM.
- * Improved error reporting.
- * Added version scripting on Linux and Solaris.
- * Minor bug fixes.
-
-Version 1.0.1 (2002-09-14)
- * Added MAT and MAT5 file formats.
- * Minor bug fixes.
-
-Version 1.0.0 (2002-08-16)
- * Final release for 1.0.0.
-
-Version 1.0.0rc6 (2002-08-14)
- * Release candidate 6 for the 1.0.0 series.
- * MacOS9 fixes.
-
-Version 1.0.0rc5 (2002-08-10)
- * Release candidate 5 for the 1.0.0 series.
- * Changed the definition of sf_count_t which was causing problems when
- libsndfile was compiled with other libraries (ie WxWindows).
- * Minor bug fixes.
- * Documentation cleanup.
-
-Version 1.0.0rc4 (2002-08-03)
- * Release candidate 4 for the 1.0.0 series.
- * Minor bug fixes.
- * Fix broken Win32 "make check".
-
-Version 1.0.0rc3 (2002-08-02)
- * Release candidate 3 for the 1.0.0 series.
- * Fix bug where libsndfile was reading beyond the end of the data chunk.
- * Added on-the-fly header updates on write.
- * Fix a couple of documentation issues.
-
-Version 1.0.0rc2 (2002-06-24)
- * Release candidate 2 for the 1.0.0 series.
- * Fix compile problem for Win32.
-
-Version 1.0.0rc1 (2002-06-24)
- * Release candidate 1 for the 1.0.0 series.
-
-Version 0.0.28 (2002-04-27)
- * Last offical release of 0.0.X series of the library.
-
-Version 0.0.8 (1999-02-16)
- * First offical release.
diff --git a/libs/libsndfile/README b/libs/libsndfile/README
deleted file mode 100644
index d93edfd5bd..0000000000
--- a/libs/libsndfile/README
+++ /dev/null
@@ -1,71 +0,0 @@
-This is libsndfile, 1.0.16
-
-libsndfile is a library of C routines for reading and writing
-files containing sampled audio data.
-
-The src/ directory contains the source code for library itself.
-
-The doc/ directory contains the libsndfile documentation.
-
-The examples/ directory contains examples of how to write code using
-libsndfile. 'wav32_aiff24' converts a WAV file containing 32 bit floating
-point data into a 24 bit PCM AIFF file. 'sndfile2oct' dumps the audio
-data of a file in a human readable format. 'sfconvert' is the beginnings
-of a audio file format conversion utility. 'make_sine' generates a WAV
-file containing one cycle of a sine wave with 4096 sample points in
-32 bit floating point format. 'sfinfo' opens a sound file and prints
-out information about that file.
-
-The tests/ directory contains programs which link against libsndfile
-and test its functionality.
-
-The Win32/ directory contains files and documentation to allow libsndfile
-to compile under Win32 with the Microsoft Visual C++ compiler.
-
-The src/GSM610 directory contains code written by Jutta Degener and Carsten
-Bormann. Their original code can be found at :
- http://kbs.cs.tu-berlin.de/~jutta/toast.html
-
-The src/G72x directory contains code written and released by Sun Microsystems
-under a suitably free license.
-
-
-Win32
------
-There are detailed instructions for building libsndfile on Win32 in the file
-
- doc/win32.html
-
-
-MacOSX
-------
-Building on MacOSX should be the same as building it on any other Unix.
-
-
-OTHER PLATFORMS
----------------
-To compile libsndfile on platforms which have a Bourne Shell compatible
-shell, an ANSI C compiler and a make utility should require no more that
-the following three commands :
- ./configure
- make
- make install
-
-For platforms without the required shell, it is usually sufficient to
-create an approriate config.h file in the src/ directory with correct
-values for the following #defines (this would work for AmigaOS) :
-
-#define HAVE_ENDIAN_H 0
-#define GUESS_BIG_ENDIAN 1
-#define GUESS_LITTLE_ENDIAN 0
-#define FORCE_BROKEN_FLOAT 0
-
-
-CONTACTS
---------
-
-libsndfile was written by Erik de Castro Lopo (erikd AT mega-nerd DOT com).
-The libsndfile home page is at :
-
- http://www.mega-nerd.com/libsndfile/
-
diff --git a/libs/libsndfile/SConscript b/libs/libsndfile/SConscript
deleted file mode 100644
index 6f0651007e..0000000000
--- a/libs/libsndfile/SConscript
+++ /dev/null
@@ -1,55 +0,0 @@
-# -*- python -*-
-
-import os
-import os.path
-import glob
-
-sndfile_files = glob.glob('src/*.c') + glob.glob('src/GSM610/*.c') + glob.glob('src/G72x/*.c')
-
-Import('env install_prefix libraries use_flac')
-sndfile = env.Clone()
-sndfile.Merge([libraries['flac'] ])
-
-domain = 'libsndfile'
-
-sndfile.Append(CCFLAGS = "-DPACKAGE=\\\"" + domain + "\\\"")
-sndfile.Append(CCFLAGS = "-DVERSION=\\\"ardour-special\\\"")
-# mingw may need this
-#sndfile.Append(CCFLAGS="-no-undefined")
-sndfile.Append(PACKAGE = domain)
-sndfile.Append(POTFILE = domain + '.pot')
-
-conf = Configure(sndfile)
-
-if conf.CheckCHeader('/System/Library/Frameworks/CoreServices.framework/Headers/CoreServices.h'):
- sndfile.Append(LINKFLAGS = "-framework CoreServices")
-
-sndfile = conf.Finish()
-
-libsndfile = sndfile.SharedLibrary('sndfile-ardour', sndfile_files)
-
-if use_flac:
- sndfile_h = sndfile.Command('src/sndfile.h', ['src/sndfile.h.in'], 'cd libs/libsndfile && ./configure && cd -', ENV=os.environ)
-else:
- sndfile_h = sndfile.Command('src/sndfile.h', ['src/sndfile.h.in'], 'cd libs/libsndfile && ./configure --disable-flac && cd -', ENV=os.environ)
-
-Default([sndfile_h,libsndfile])
-
-env.Alias('install', env.Install(os.path.join(install_prefix, env['LIBDIR'], 'ardour2'), libsndfile))
-
-env.Alias('tarball', env.Distribute (env['DISTTREE'],
- [ 'NEWS', 'README', 'AUTHORS', 'ChangeLog',
- 'configure', 'SConscript',
- 'install-sh',
- 'libsndfile.spec.in',
- 'sndfile.pc.in',
- 'config.sub',
- 'config.guess'
- ] +
- sndfile_files +
- glob.glob('src/*.h') +
- glob.glob('src/GSM610/*.h') +
- glob.glob('src/G72x/*.h') +
- [ 'src/sndfile.h.in', 'src/config.h.in', 'src/Symbols.linux', 'src/Symbols.darwin', 'src/libsndfile.def', 'src/cygsndfile.def' ]
- ))
-
diff --git a/libs/libsndfile/acinclude.m4 b/libs/libsndfile/acinclude.m4
deleted file mode 100644
index 37f8c0c2a1..0000000000
--- a/libs/libsndfile/acinclude.m4
+++ /dev/null
@@ -1,579 +0,0 @@
-dnl By default, many hosts won't let programs access large files;
-dnl one must use special compiler options to get large-file access to work.
-dnl For more details about this brain damage please see:
-dnl http://www.sas.com/standards/large.file/x_open.20Mar96.html
-
-dnl Written by Paul Eggert <eggert@twinsun.com>.
-
-dnl Internal subroutine of AC_SYS_EXTRA_LARGEFILE.
-dnl AC_SYS_EXTRA_LARGEFILE_FLAGS(FLAGSNAME)
-AC_DEFUN([AC_SYS_EXTRA_LARGEFILE_FLAGS],
- [AC_CACHE_CHECK([for $1 value to request large file support],
- ac_cv_sys_largefile_$1,
- [ac_cv_sys_largefile_$1=`($GETCONF LFS_$1) 2>/dev/null` || {
- ac_cv_sys_largefile_$1=no
- ifelse($1, CFLAGS,
- [case "$host_os" in
- # IRIX 6.2 and later require cc -n32.
-changequote(, )dnl
- irix6.[2-9]* | irix6.1[0-9]* | irix[7-9].* | irix[1-9][0-9]*)
-changequote([, ])dnl
- if test "$GCC" != yes; then
- ac_cv_sys_largefile_CFLAGS=-n32
- fi
- ac_save_CC="$CC"
- CC="$CC $ac_cv_sys_largefile_CFLAGS"
- AC_TRY_LINK(, , , ac_cv_sys_largefile_CFLAGS=no)
- CC="$ac_save_CC"
- esac])
- }])])
-
-dnl Internal subroutine of AC_SYS_EXTRA_LARGEFILE.
-dnl AC_SYS_EXTRA_LARGEFILE_SPACE_APPEND(VAR, VAL)
-AC_DEFUN([AC_SYS_EXTRA_LARGEFILE_SPACE_APPEND],
- [case $2 in
- no) ;;
- ?*)
- case "[$]$1" in
- '') $1=$2 ;;
- *) $1=[$]$1' '$2 ;;
- esac ;;
- esac])
-
-dnl Internal subroutine of AC_SYS_EXTRA_LARGEFILE.
-dnl AC_SYS_EXTRA_LARGEFILE_MACRO_VALUE(C-MACRO, CACHE-VAR, COMMENT, CODE-TO-SET-DEFAULT)
-AC_DEFUN([AC_SYS_EXTRA_LARGEFILE_MACRO_VALUE],
- [AC_CACHE_CHECK([for $1], $2,
- [$2=no
-changequote(, )dnl
- $4
- for ac_flag in $ac_cv_sys_largefile_CFLAGS no; do
- case "$ac_flag" in
- -D$1)
- $2=1 ;;
- -D$1=*)
- $2=`expr " $ac_flag" : '[^=]*=\(.*\)'` ;;
- esac
- done
-changequote([, ])dnl
- ])
- if test "[$]$2" != no; then
- AC_DEFINE_UNQUOTED([$1], [$]$2, [$3])
- fi])
-
-AC_DEFUN([AC_SYS_EXTRA_LARGEFILE],
- [AC_REQUIRE([AC_CANONICAL_HOST])
- AC_ARG_ENABLE(largefile,
- [ --disable-largefile omit support for large files])
- if test "$enable_largefile" != no; then
- AC_CHECK_TOOL(GETCONF, getconf)
- AC_SYS_EXTRA_LARGEFILE_FLAGS(CFLAGS)
- AC_SYS_EXTRA_LARGEFILE_FLAGS(LDFLAGS)
- AC_SYS_EXTRA_LARGEFILE_FLAGS(LIBS)
-
- for ac_flag in $ac_cv_sys_largefile_CFLAGS no; do
- case "$ac_flag" in
- no) ;;
- -D_FILE_OFFSET_BITS=*) ;;
- -D_LARGEFILE_SOURCE | -D_LARGEFILE_SOURCE=*) ;;
- -D_LARGE_FILES | -D_LARGE_FILES=*) ;;
- -D?* | -I?*)
- AC_SYS_EXTRA_LARGEFILE_SPACE_APPEND(CPPFLAGS, "$ac_flag") ;;
- *)
- AC_SYS_EXTRA_LARGEFILE_SPACE_APPEND(CFLAGS, "$ac_flag") ;;
- esac
- done
- AC_SYS_EXTRA_LARGEFILE_SPACE_APPEND(LDFLAGS, "$ac_cv_sys_largefile_LDFLAGS")
- AC_SYS_EXTRA_LARGEFILE_SPACE_APPEND(LIBS, "$ac_cv_sys_largefile_LIBS")
- AC_SYS_EXTRA_LARGEFILE_MACRO_VALUE(_FILE_OFFSET_BITS,
- ac_cv_sys_file_offset_bits,
- [Number of bits in a file offset, on hosts where this is settable.])
- [case "$host_os" in
- # HP-UX 10.20 and later
- hpux10.[2-9][0-9]* | hpux1[1-9]* | hpux[2-9][0-9]*)
- ac_cv_sys_file_offset_bits=64 ;;
- esac]
- AC_SYS_EXTRA_LARGEFILE_MACRO_VALUE(_LARGEFILE_SOURCE,
- ac_cv_sys_largefile_source,
- [Define to make fseeko etc. visible, on some hosts.],
- [case "$host_os" in
- # HP-UX 10.20 and later
- hpux10.[2-9][0-9]* | hpux1[1-9]* | hpux[2-9][0-9]*)
- ac_cv_sys_largefile_source=1 ;;
- esac])
- AC_SYS_EXTRA_LARGEFILE_MACRO_VALUE(_LARGE_FILES,
- ac_cv_sys_large_files,
- [Define for large files, on AIX-style hosts.],
- [case "$host_os" in
- # AIX 4.2 and later
- aix4.[2-9]* | aix4.1[0-9]* | aix[5-9].* | aix[1-9][0-9]*)
- ac_cv_sys_large_files=1 ;;
- esac])
- fi
- ])
-
-
-
-
-
-
-dnl @synopsis AC_C_FIND_ENDIAN
-dnl
-dnl Determine endian-ness of target processor.
-dnl @version 1.1 Mar 03 2002
-dnl @author Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-dnl
-dnl Majority written from scratch to replace the standard autoconf macro
-dnl AC_C_BIGENDIAN. Only part remaining from the original it the invocation
-dnl of the AC_TRY_RUN macro.
-dnl
-dnl Permission to use, copy, modify, distribute, and sell this file for any
-dnl purpose is hereby granted without fee, provided that the above copyright
-dnl and this permission notice appear in all copies. No representations are
-dnl made about the suitability of this software for any purpose. It is
-dnl provided "as is" without express or implied warranty.
-
-dnl Find endian-ness in the following way:
-dnl 1) Look in <endian.h>.
-dnl 2) If 1) fails, look in <sys/types.h> and <sys/param.h>.
-dnl 3) If 1) and 2) fails and not cross compiling run a test program.
-dnl 4) If 1) and 2) fails and cross compiling then guess based on target.
-
-AC_DEFUN([AC_C_FIND_ENDIAN],
-[AC_CACHE_CHECK(processor byte ordering,
- ac_cv_c_byte_order,
-
-# Initialize to unknown
-ac_cv_c_byte_order=unknown
-
-if test x$ac_cv_header_endian_h = xyes ; then
-
- # First try <endian.h> which should set BYTE_ORDER.
-
- [AC_TRY_LINK([
- #include <endian.h>
- #if BYTE_ORDER != LITTLE_ENDIAN
- not big endian
- #endif
- ], return 0 ;,
- ac_cv_c_byte_order=little
- )]
-
- [AC_TRY_LINK([
- #include <endian.h>
- #if BYTE_ORDER != BIG_ENDIAN
- not big endian
- #endif
- ], return 0 ;,
- ac_cv_c_byte_order=big
- )]
-
- fi
-
-if test $ac_cv_c_byte_order = unknown ; then
-
- [AC_TRY_LINK([
- #include <sys/types.h>
- #include <sys/param.h>
- #if !BYTE_ORDER || !BIG_ENDIAN || !LITTLE_ENDIAN
- bogus endian macros
- #endif
- ], return 0 ;,
-
- [AC_TRY_LINK([
- #include <sys/types.h>
- #include <sys/param.h>
- #if BYTE_ORDER != LITTLE_ENDIAN
- not big endian
- #endif
- ], return 0 ;,
- ac_cv_c_byte_order=little
- )]
-
- [AC_TRY_LINK([
- #include <sys/types.h>
- #include <sys/param.h>
- #if BYTE_ORDER != LITTLE_ENDIAN
- not big endian
- #endif
- ], return 0 ;,
- ac_cv_c_byte_order=little
- )]
-
- )]
-
- fi
-
-if test $ac_cv_c_byte_order = unknown ; then
- if test $cross_compiling = yes ; then
- # This is the last resort. Try to guess the target processor endian-ness
- # by looking at the target CPU type.
- [
- case "$target_cpu" in
- alpha* | i?86* | mipsel* | ia64*)
- ac_cv_c_big_endian=0
- ac_cv_c_little_endian=1
- ;;
-
- m68* | mips* | powerpc* | hppa* | sparc*)
- ac_cv_c_big_endian=1
- ac_cv_c_little_endian=0
- ;;
-
- esac
- ]
- else
- AC_TRY_RUN(
- [[
- int main (void)
- { /* Are we little or big endian? From Harbison&Steele. */
- union
- { long l ;
- char c [sizeof (long)] ;
- } u ;
- u.l = 1 ;
- return (u.c [sizeof (long) - 1] == 1);
- }
- ]], , ac_cv_c_byte_order=big,
- ac_cv_c_byte_order=unknown
- )
-
- AC_TRY_RUN(
- [[int main (void)
- { /* Are we little or big endian? From Harbison&Steele. */
- union
- { long l ;
- char c [sizeof (long)] ;
- } u ;
- u.l = 1 ;
- return (u.c [0] == 1);
- }]], , ac_cv_c_byte_order=little,
- ac_cv_c_byte_order=unknown
- )
- fi
- fi
-
-)
-]
-
-if test $ac_cv_c_byte_order = big ; then
- ac_cv_c_big_endian=1
- ac_cv_c_little_endian=0
-elif test $ac_cv_c_byte_order = little ; then
- ac_cv_c_big_endian=0
- ac_cv_c_little_endian=1
-else
- ac_cv_c_big_endian=0
- ac_cv_c_little_endian=0
-
- AC_MSG_WARN([[*****************************************************************]])
- AC_MSG_WARN([[*** Not able to determine endian-ness of target processor. ]])
- AC_MSG_WARN([[*** The constants CPU_IS_BIG_ENDIAN and CPU_IS_LITTLE_ENDIAN in ]])
- AC_MSG_WARN([[*** src/config.h may need to be hand editied. ]])
- AC_MSG_WARN([[*****************************************************************]])
- fi
-
-)# AC_C_FIND_ENDIAN
-
-
-
-
-
-dnl @synopsis AC_C99_FLEXIBLE_ARRAY
-dnl
-dnl Dose the compiler support the 1999 ISO C Standard "stuct hack".
-dnl @version 1.1 Mar 15 2004
-dnl @author Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-dnl
-dnl Permission to use, copy, modify, distribute, and sell this file for any
-dnl purpose is hereby granted without fee, provided that the above copyright
-dnl and this permission notice appear in all copies. No representations are
-dnl made about the suitability of this software for any purpose. It is
-dnl provided "as is" without express or implied warranty.
-
-AC_DEFUN([AC_C99_FLEXIBLE_ARRAY],
-[AC_CACHE_CHECK(C99 struct flexible array support,
- ac_cv_c99_flexible_array,
-
-# Initialize to unknown
-ac_cv_c99_flexible_array=no
-
-AC_TRY_LINK([[
- #include <stdlib.h>
- typedef struct {
- int k;
- char buffer [] ;
- } MY_STRUCT ;
- ]],
- [ MY_STRUCT *p = calloc (1, sizeof (MY_STRUCT) + 42); ],
- ac_cv_c99_flexible_array=yes,
- ac_cv_c99_flexible_array=no
- ))]
-) # AC_C99_FLEXIBLE_ARRAY
-
-
-
-
-
-dnl @synopsis AC_C99_FUNC_LRINT
-dnl
-dnl Check whether C99's lrint function is available.
-dnl @version 1.3 Feb 12 2002
-dnl @author Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-dnl
-dnl Permission to use, copy, modify, distribute, and sell this file for any
-dnl purpose is hereby granted without fee, provided that the above copyright
-dnl and this permission notice appear in all copies. No representations are
-dnl made about the suitability of this software for any purpose. It is
-dnl provided "as is" without express or implied warranty.
-dnl
-AC_DEFUN([AC_C99_FUNC_LRINT],
-[AC_CACHE_CHECK(for lrint,
- ac_cv_c99_lrint,
-[
-lrint_save_CFLAGS=$CFLAGS
-CFLAGS="-O2 -lm"
-AC_TRY_LINK([
-#define _ISOC9X_SOURCE 1
-#define _ISOC99_SOURCE 1
-#define __USE_ISOC99 1
-#define __USE_ISOC9X 1
-
-#include <math.h>
-], if (!lrint(3.14159)) lrint(2.7183);, ac_cv_c99_lrint=yes, ac_cv_c99_lrint=no)
-
-CFLAGS=$lrint_save_CFLAGS
-
-])
-
-if test "$ac_cv_c99_lrint" = yes; then
- AC_DEFINE(HAVE_LRINT, 1,
- [Define if you have C99's lrint function.])
-fi
-])# AC_C99_FUNC_LRINT
-dnl @synopsis AC_C99_FUNC_LRINTF
-dnl
-dnl Check whether C99's lrintf function is available.
-dnl @version 1.3 Feb 12 2002
-dnl @author Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-dnl
-dnl Permission to use, copy, modify, distribute, and sell this file for any
-dnl purpose is hereby granted without fee, provided that the above copyright
-dnl and this permission notice appear in all copies. No representations are
-dnl made about the suitability of this software for any purpose. It is
-dnl provided "as is" without express or implied warranty.
-dnl
-AC_DEFUN([AC_C99_FUNC_LRINTF],
-[AC_CACHE_CHECK(for lrintf,
- ac_cv_c99_lrintf,
-[
-lrintf_save_CFLAGS=$CFLAGS
-CFLAGS="-O2 -lm"
-AC_TRY_LINK([
-#define _ISOC9X_SOURCE 1
-#define _ISOC99_SOURCE 1
-#define __USE_ISOC99 1
-#define __USE_ISOC9X 1
-
-#include <math.h>
-], if (!lrintf(3.14159)) lrintf(2.7183);, ac_cv_c99_lrintf=yes, ac_cv_c99_lrintf=no)
-
-CFLAGS=$lrintf_save_CFLAGS
-
-])
-
-if test "$ac_cv_c99_lrintf" = yes; then
- AC_DEFINE(HAVE_LRINTF, 1,
- [Define if you have C99's lrintf function.])
-fi
-])# AC_C99_FUNC_LRINTF
-
-
-
-
-dnl @synopsis AC_C99_FUNC_LLRINT
-dnl
-dnl Check whether C99's llrint function is available.
-dnl @version 1.1 Sep 30 2002
-dnl @author Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-dnl
-dnl Permission to use, copy, modify, distribute, and sell this file for any
-dnl purpose is hereby granted without fee, provided that the above copyright
-dnl and this permission notice appear in all copies. No representations are
-dnl made about the suitability of this software for any purpose. It is
-dnl provided "as is" without express or implied warranty.
-dnl
-AC_DEFUN([AC_C99_FUNC_LLRINT],
-[AC_CACHE_CHECK(for llrint,
- ac_cv_c99_llrint,
-[
-llrint_save_CFLAGS=$CFLAGS
-CFLAGS="-O2 -lm"
-AC_TRY_LINK([
-#define _ISOC9X_SOURCE 1
-#define _ISOC99_SOURCE 1
-#define __USE_ISOC99 1
-#define __USE_ISOC9X 1
-
-#include <math.h>
-#include <stdint.h>
-], int64_t x ; x = llrint(3.14159) ;, ac_cv_c99_llrint=yes, ac_cv_c99_llrint=no)
-
-CFLAGS=$llrint_save_CFLAGS
-
-])
-
-if test "$ac_cv_c99_llrint" = yes; then
- AC_DEFINE(HAVE_LLRINT, 1,
- [Define if you have C99's llrint function.])
-fi
-])# AC_C99_FUNC_LLRINT
-
-
-
-dnl @synopsis AC_C_CLIP_MODE
-dnl
-dnl Determine the clipping mode when converting float to int.
-dnl @version 1.0 May 17 2003
-dnl @author Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-dnl
-dnl Permission to use, copy, modify, distribute, and sell this file for any
-dnl purpose is hereby granted without fee, provided that the above copyright
-dnl and this permission notice appear in all copies. No representations are
-dnl made about the suitability of this software for any purpose. It is
-dnl provided "as is" without express or implied warranty.
-
-
-
-dnl Find the clipping mode in the following way:
-dnl 1) If we are not cross compiling test it.
-dnl 2) IF we are cross compiling, assume that clipping isn't done correctly.
-
-AC_DEFUN([AC_C_CLIP_MODE],
-[AC_CACHE_CHECK(processor clipping capabilities,
- ac_cv_c_clip_type,
-
-# Initialize to unknown
-ac_cv_c_clip_positive=unknown
-ac_cv_c_clip_negative=unknown
-
-if test $ac_cv_c_clip_positive = unknown ; then
- AC_TRY_RUN(
- [[
- #define _ISOC9X_SOURCE 1
- #define _ISOC99_SOURCE 1
- #define __USE_ISOC99 1
- #define __USE_ISOC9X 1
- #include <math.h>
- int main (void)
- { double fval ;
- int k, ival ;
-
- fval = 1.0 * 0x7FFFFFFF ;
- for (k = 0 ; k < 100 ; k++)
- { ival = (lrint (fval)) >> 24 ;
- if (ival != 127)
- return 1 ;
-
- fval *= 1.2499999 ;
- } ;
-
- return 0 ;
- }
- ]],
- ac_cv_c_clip_positive=yes,
- ac_cv_c_clip_positive=no,
- ac_cv_c_clip_positive=unknown
- )
-
- AC_TRY_RUN(
- [[
- #define _ISOC9X_SOURCE 1
- #define _ISOC99_SOURCE 1
- #define __USE_ISOC99 1
- #define __USE_ISOC9X 1
- #include <math.h>
- int main (void)
- { double fval ;
- int k, ival ;
-
- fval = -8.0 * 0x10000000 ;
- for (k = 0 ; k < 100 ; k++)
- { ival = (lrint (fval)) >> 24 ;
- if (ival != -128)
- return 1 ;
-
- fval *= 1.2499999 ;
- } ;
-
- return 0 ;
- }
- ]],
- ac_cv_c_clip_negative=yes,
- ac_cv_c_clip_negative=no,
- ac_cv_c_clip_negative=unknown
- )
- fi
-
-if test $ac_cv_c_clip_positive = yes ; then
- ac_cv_c_clip_positive=1
-else
- ac_cv_c_clip_positive=0
- fi
-
-if test $ac_cv_c_clip_negative = yes ; then
- ac_cv_c_clip_negative=1
-else
- ac_cv_c_clip_negative=0
- fi
-
-[[
-case "$ac_cv_c_clip_positive$ac_cv_c_clip_negative" in
- "00")
- ac_cv_c_clip_type="none"
- ;;
- "10")
- ac_cv_c_clip_type="positive"
- ;;
- "01")
- ac_cv_c_clip_type="negative"
- ;;
- "11")
- ac_cv_c_clip_type="both"
- ;;
- esac
- ]]
-
-)
-]
-
-)# AC_C_CLIP_MODE
-
-
-dnl @synopsis AC_ADD_CFLAGS
-dnl
-dnl Add the given option to CFLAGS, if it doesn't break the compiler
-
-AC_DEFUN([AC_ADD_CFLAGS],
-[AC_MSG_CHECKING([if $CC accepts $1])
- ac_add_cflags__old_cflags="$CFLAGS"
- CFLAGS="$CFLAGS $1"
- AC_TRY_LINK([#include <stdio.h>],
- [printf("Hello, World!\n"); return 0;],
- AC_MSG_RESULT([yes]),
- AC_MSG_RESULT([no])
- CFLAGS="$ac_add_cflags__old_cflags")
-])
-
-
-
-
-ifelse(dnl
-
- Do not edit or modify anything in this comment block.
- The arch-tag line is a file identity tag for the GNU Arch
- revision control system.
-
- arch-tag: bc38294d-bb5c-42ad-90b9-779def5eaab7
-
-)dnl
diff --git a/libs/libsndfile/aclocal.m4 b/libs/libsndfile/aclocal.m4
deleted file mode 100644
index e406d1a01b..0000000000
--- a/libs/libsndfile/aclocal.m4
+++ /dev/null
@@ -1,72 +0,0 @@
-# generated automatically by aclocal 1.9.2 -*- Autoconf -*-
-
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
-# Free Software Foundation, Inc.
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-
-dnl PKG_CHECK_MODULES(GSTUFF, gtk+-2.0 >= 1.3 glib = 1.3.4, action-if, action-not)
-dnl defines GSTUFF_LIBS, GSTUFF_CFLAGS, see pkg-config man page
-dnl also defines GSTUFF_PKG_ERRORS on error
-AC_DEFUN([PKG_CHECK_MODULES], [
- succeeded=no
-
- if test -z "$PKG_CONFIG"; then
- AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
- fi
-
- if test "$PKG_CONFIG" = "no" ; then
- echo "*** The pkg-config script could not be found. Make sure it is"
- echo "*** in your path, or set the PKG_CONFIG environment variable"
- echo "*** to the full path to pkg-config."
- echo "*** Or see http://www.freedesktop.org/software/pkgconfig to get pkg-config."
- else
- PKG_CONFIG_MIN_VERSION=0.9.0
- if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then
- AC_MSG_CHECKING(for $2)
-
- if $PKG_CONFIG --exists "$2" ; then
- AC_MSG_RESULT(yes)
- succeeded=yes
-
- AC_MSG_CHECKING($1_CFLAGS)
- $1_CFLAGS=`$PKG_CONFIG --cflags "$2"`
- AC_MSG_RESULT($$1_CFLAGS)
-
- AC_MSG_CHECKING($1_LIBS)
- $1_LIBS=`$PKG_CONFIG --libs "$2"`
- AC_MSG_RESULT($$1_LIBS)
- else
- $1_CFLAGS=""
- $1_LIBS=""
- ## If we have a custom action on failure, don't print errors, but
- ## do set a variable so people can do so.
- $1_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$2"`
- ifelse([$4], ,echo $$1_PKG_ERRORS,)
- fi
-
- AC_SUBST($1_CFLAGS)
- AC_SUBST($1_LIBS)
- else
- echo "*** Your version of pkg-config is too old. You need version $PKG_CONFIG_MIN_VERSION or newer."
- echo "*** See http://www.freedesktop.org/software/pkgconfig"
- fi
- fi
-
- if test $succeeded = yes; then
- ifelse([$3], , :, [$3])
- else
- ifelse([$4], , AC_MSG_ERROR([Library requirements ($2) not met; consider adjusting the PKG_CONFIG_PATH environment variable if your libraries are in a nonstandard prefix so pkg-config can find them.]), [$4])
- fi
-])
-
-
-
-m4_include([acinclude.m4])
diff --git a/libs/libsndfile/compile b/libs/libsndfile/compile
deleted file mode 100755
index ac07cc5414..0000000000
--- a/libs/libsndfile/compile
+++ /dev/null
@@ -1,107 +0,0 @@
-#! /bin/sh
-
-# Wrapper for compilers which do not understand `-c -o'.
-
-# Copyright 1999, 2000 Free Software Foundation, Inc.
-# Written by Tom Tromey <tromey@cygnus.com>.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-# Usage:
-# compile PROGRAM [ARGS]...
-# `-o FOO.o' is removed from the args passed to the actual compile.
-
-# Usage statement added by Billy Biggs <vektor@dumbterm.net>.
-if [ -z $1 ]; then
- echo "Wrapper for compilers which do not understand '-c -o'."
- echo "usage: compile PROGRAM [ARGS]..."
- echo "'-o FOO.o' is removed from the args passed to the actual compile."
- exit 1
-fi
-
-prog=$1
-shift
-
-ofile=
-cfile=
-args=
-while test $# -gt 0; do
- case "$1" in
- -o)
- # configure might choose to run compile as `compile cc -o foo foo.c'.
- # So we do something ugly here.
- ofile=$2
- shift
- case "$ofile" in
- *.o | *.obj)
- ;;
- *)
- args="$args -o $ofile"
- ofile=
- ;;
- esac
- ;;
- *.c)
- cfile=$1
- args="$args $1"
- ;;
- *)
- args="$args $1"
- ;;
- esac
- shift
-done
-
-if test -z "$ofile" || test -z "$cfile"; then
- # If no `-o' option was seen then we might have been invoked from a
- # pattern rule where we don't need one. That is ok -- this is a
- # normal compilation that the losing compiler can handle. If no
- # `.c' file was seen then we are probably linking. That is also
- # ok.
- exec "$prog" $args
-fi
-
-# Name of file we expect compiler to create.
-cofile=`echo $cfile | sed -e 's|^.*/||' -e 's/\.c$/.o/'`
-
-# Create the lock directory.
-# Note: use `[/.-]' here to ensure that we don't use the same name
-# that we are using for the .o file. Also, base the name on the expected
-# object file name, since that is what matters with a parallel build.
-lockdir=`echo $cofile | sed -e 's|[/.-]|_|g'`.d
-while true; do
- if mkdir $lockdir > /dev/null 2>&1; then
- break
- fi
- sleep 1
-done
-# FIXME: race condition here if user kills between mkdir and trap.
-trap "rmdir $lockdir; exit 1" 1 2 15
-
-# Run the compile.
-"$prog" $args
-status=$?
-
-if test -f "$cofile"; then
- mv "$cofile" "$ofile"
-fi
-
-rmdir $lockdir
-exit $status
diff --git a/libs/libsndfile/config.guess b/libs/libsndfile/config.guess
deleted file mode 100755
index c38553dc74..0000000000
--- a/libs/libsndfile/config.guess
+++ /dev/null
@@ -1,1497 +0,0 @@
-#! /bin/sh
-# Attempt to guess a canonical system name.
-# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-# 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
-
-timestamp='2006-02-23'
-
-# This file is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
-# 02110-1301, USA.
-#
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-
-# Originally written by Per Bothner <per@bothner.com>.
-# Please send patches to <config-patches@gnu.org>. Submit a context
-# diff and a properly formatted ChangeLog entry.
-#
-# This script attempts to guess a canonical system name similar to
-# config.sub. If it succeeds, it prints the system name on stdout, and
-# exits with 0. Otherwise, it exits with 1.
-#
-# The plan is that this can be called by configure scripts if you
-# don't specify an explicit build system type.
-
-me=`echo "$0" | sed -e 's,.*/,,'`
-
-usage="\
-Usage: $0 [OPTION]
-
-Output the configuration name of the system \`$me' is run on.
-
-Operation modes:
- -h, --help print this help, then exit
- -t, --time-stamp print date of last modification, then exit
- -v, --version print version number, then exit
-
-Report bugs and patches to <config-patches@gnu.org>."
-
-version="\
-GNU config.guess ($timestamp)
-
-Originally written by Per Bothner.
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
-Free Software Foundation, Inc.
-
-This is free software; see the source for copying conditions. There is NO
-warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
-
-help="
-Try \`$me --help' for more information."
-
-# Parse command line
-while test $# -gt 0 ; do
- case $1 in
- --time-stamp | --time* | -t )
- echo "$timestamp" ; exit ;;
- --version | -v )
- echo "$version" ; exit ;;
- --help | --h* | -h )
- echo "$usage"; exit ;;
- -- ) # Stop option processing
- shift; break ;;
- - ) # Use stdin as input.
- break ;;
- -* )
- echo "$me: invalid option $1$help" >&2
- exit 1 ;;
- * )
- break ;;
- esac
-done
-
-if test $# != 0; then
- echo "$me: too many arguments$help" >&2
- exit 1
-fi
-
-trap 'exit 1' 1 2 15
-
-# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
-# compiler to aid in system detection is discouraged as it requires
-# temporary files to be created and, as you can see below, it is a
-# headache to deal with in a portable fashion.
-
-# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
-# use `HOST_CC' if defined, but it is deprecated.
-
-# Portable tmp directory creation inspired by the Autoconf team.
-
-set_cc_for_build='
-trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
-trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
-: ${TMPDIR=/tmp} ;
- { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
- { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
- { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
- { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
-dummy=$tmp/dummy ;
-tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
-case $CC_FOR_BUILD,$HOST_CC,$CC in
- ,,) echo "int x;" > $dummy.c ;
- for c in cc gcc c89 c99 ; do
- if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then
- CC_FOR_BUILD="$c"; break ;
- fi ;
- done ;
- if test x"$CC_FOR_BUILD" = x ; then
- CC_FOR_BUILD=no_compiler_found ;
- fi
- ;;
- ,,*) CC_FOR_BUILD=$CC ;;
- ,*,*) CC_FOR_BUILD=$HOST_CC ;;
-esac ; set_cc_for_build= ;'
-
-# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
-# (ghazi@noc.rutgers.edu 1994-08-24)
-if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
- PATH=$PATH:/.attbin ; export PATH
-fi
-
-UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
-UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
-UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
-UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
-
-# Note: order is significant - the case branches are not exclusive.
-
-case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
- *:NetBSD:*:*)
- # NetBSD (nbsd) targets should (where applicable) match one or
- # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*,
- # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently
- # switched to ELF, *-*-netbsd* would select the old
- # object file format. This provides both forward
- # compatibility and a consistent mechanism for selecting the
- # object file format.
- #
- # Note: NetBSD doesn't particularly care about the vendor
- # portion of the name. We always set it to "unknown".
- sysctl="sysctl -n hw.machine_arch"
- UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \
- /usr/sbin/$sysctl 2>/dev/null || echo unknown)`
- case "${UNAME_MACHINE_ARCH}" in
- armeb) machine=armeb-unknown ;;
- arm*) machine=arm-unknown ;;
- sh3el) machine=shl-unknown ;;
- sh3eb) machine=sh-unknown ;;
- *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
- esac
- # The Operating System including object format, if it has switched
- # to ELF recently, or will in the future.
- case "${UNAME_MACHINE_ARCH}" in
- arm*|i386|m68k|ns32k|sh3*|sparc|vax)
- eval $set_cc_for_build
- if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
- | grep __ELF__ >/dev/null
- then
- # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
- # Return netbsd for either. FIX?
- os=netbsd
- else
- os=netbsdelf
- fi
- ;;
- *)
- os=netbsd
- ;;
- esac
- # The OS release
- # Debian GNU/NetBSD machines have a different userland, and
- # thus, need a distinct triplet. However, they do not need
- # kernel version information, so it can be replaced with a
- # suitable tag, in the style of linux-gnu.
- case "${UNAME_VERSION}" in
- Debian*)
- release='-gnu'
- ;;
- *)
- release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
- ;;
- esac
- # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
- # contains redundant information, the shorter form:
- # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
- echo "${machine}-${os}${release}"
- exit ;;
- *:OpenBSD:*:*)
- UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
- echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
- exit ;;
- *:ekkoBSD:*:*)
- echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
- exit ;;
- *:SolidBSD:*:*)
- echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE}
- exit ;;
- macppc:MirBSD:*:*)
- echo powerppc-unknown-mirbsd${UNAME_RELEASE}
- exit ;;
- *:MirBSD:*:*)
- echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
- exit ;;
- alpha:OSF1:*:*)
- case $UNAME_RELEASE in
- *4.0)
- UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
- ;;
- *5.*)
- UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
- ;;
- esac
- # According to Compaq, /usr/sbin/psrinfo has been available on
- # OSF/1 and Tru64 systems produced since 1995. I hope that
- # covers most systems running today. This code pipes the CPU
- # types through head -n 1, so we only detect the type of CPU 0.
- ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1`
- case "$ALPHA_CPU_TYPE" in
- "EV4 (21064)")
- UNAME_MACHINE="alpha" ;;
- "EV4.5 (21064)")
- UNAME_MACHINE="alpha" ;;
- "LCA4 (21066/21068)")
- UNAME_MACHINE="alpha" ;;
- "EV5 (21164)")
- UNAME_MACHINE="alphaev5" ;;
- "EV5.6 (21164A)")
- UNAME_MACHINE="alphaev56" ;;
- "EV5.6 (21164PC)")
- UNAME_MACHINE="alphapca56" ;;
- "EV5.7 (21164PC)")
- UNAME_MACHINE="alphapca57" ;;
- "EV6 (21264)")
- UNAME_MACHINE="alphaev6" ;;
- "EV6.7 (21264A)")
- UNAME_MACHINE="alphaev67" ;;
- "EV6.8CB (21264C)")
- UNAME_MACHINE="alphaev68" ;;
- "EV6.8AL (21264B)")
- UNAME_MACHINE="alphaev68" ;;
- "EV6.8CX (21264D)")
- UNAME_MACHINE="alphaev68" ;;
- "EV6.9A (21264/EV69A)")
- UNAME_MACHINE="alphaev69" ;;
- "EV7 (21364)")
- UNAME_MACHINE="alphaev7" ;;
- "EV7.9 (21364A)")
- UNAME_MACHINE="alphaev79" ;;
- esac
- # A Pn.n version is a patched version.
- # A Vn.n version is a released version.
- # A Tn.n version is a released field test version.
- # A Xn.n version is an unreleased experimental baselevel.
- # 1.2 uses "1.2" for uname -r.
- echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- exit ;;
- Alpha\ *:Windows_NT*:*)
- # How do we know it's Interix rather than the generic POSIX subsystem?
- # Should we change UNAME_MACHINE based on the output of uname instead
- # of the specific Alpha model?
- echo alpha-pc-interix
- exit ;;
- 21064:Windows_NT:50:3)
- echo alpha-dec-winnt3.5
- exit ;;
- Amiga*:UNIX_System_V:4.0:*)
- echo m68k-unknown-sysv4
- exit ;;
- *:[Aa]miga[Oo][Ss]:*:*)
- echo ${UNAME_MACHINE}-unknown-amigaos
- exit ;;
- *:[Mm]orph[Oo][Ss]:*:*)
- echo ${UNAME_MACHINE}-unknown-morphos
- exit ;;
- *:OS/390:*:*)
- echo i370-ibm-openedition
- exit ;;
- *:z/VM:*:*)
- echo s390-ibm-zvmoe
- exit ;;
- *:OS400:*:*)
- echo powerpc-ibm-os400
- exit ;;
- arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
- echo arm-acorn-riscix${UNAME_RELEASE}
- exit ;;
- arm:riscos:*:*|arm:RISCOS:*:*)
- echo arm-unknown-riscos
- exit ;;
- SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
- echo hppa1.1-hitachi-hiuxmpp
- exit ;;
- Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
- # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
- if test "`(/bin/universe) 2>/dev/null`" = att ; then
- echo pyramid-pyramid-sysv3
- else
- echo pyramid-pyramid-bsd
- fi
- exit ;;
- NILE*:*:*:dcosx)
- echo pyramid-pyramid-svr4
- exit ;;
- DRS?6000:unix:4.0:6*)
- echo sparc-icl-nx6
- exit ;;
- DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
- case `/usr/bin/uname -p` in
- sparc) echo sparc-icl-nx7; exit ;;
- esac ;;
- sun4H:SunOS:5.*:*)
- echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit ;;
- sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
- echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit ;;
- i86pc:SunOS:5.*:*)
- echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit ;;
- sun4*:SunOS:6*:*)
- # According to config.sub, this is the proper way to canonicalize
- # SunOS6. Hard to guess exactly what SunOS6 will be like, but
- # it's likely to be more like Solaris than SunOS4.
- echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit ;;
- sun4*:SunOS:*:*)
- case "`/usr/bin/arch -k`" in
- Series*|S4*)
- UNAME_RELEASE=`uname -v`
- ;;
- esac
- # Japanese Language versions have a version number like `4.1.3-JL'.
- echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
- exit ;;
- sun3*:SunOS:*:*)
- echo m68k-sun-sunos${UNAME_RELEASE}
- exit ;;
- sun*:*:4.2BSD:*)
- UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
- test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
- case "`/bin/arch`" in
- sun3)
- echo m68k-sun-sunos${UNAME_RELEASE}
- ;;
- sun4)
- echo sparc-sun-sunos${UNAME_RELEASE}
- ;;
- esac
- exit ;;
- aushp:SunOS:*:*)
- echo sparc-auspex-sunos${UNAME_RELEASE}
- exit ;;
- # The situation for MiNT is a little confusing. The machine name
- # can be virtually everything (everything which is not
- # "atarist" or "atariste" at least should have a processor
- # > m68000). The system name ranges from "MiNT" over "FreeMiNT"
- # to the lowercase version "mint" (or "freemint"). Finally
- # the system name "TOS" denotes a system which is actually not
- # MiNT. But MiNT is downward compatible to TOS, so this should
- # be no problem.
- atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
- echo m68k-atari-mint${UNAME_RELEASE}
- exit ;;
- atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
- echo m68k-atari-mint${UNAME_RELEASE}
- exit ;;
- *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
- echo m68k-atari-mint${UNAME_RELEASE}
- exit ;;
- milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
- echo m68k-milan-mint${UNAME_RELEASE}
- exit ;;
- hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
- echo m68k-hades-mint${UNAME_RELEASE}
- exit ;;
- *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
- echo m68k-unknown-mint${UNAME_RELEASE}
- exit ;;
- m68k:machten:*:*)
- echo m68k-apple-machten${UNAME_RELEASE}
- exit ;;
- powerpc:machten:*:*)
- echo powerpc-apple-machten${UNAME_RELEASE}
- exit ;;
- RISC*:Mach:*:*)
- echo mips-dec-mach_bsd4.3
- exit ;;
- RISC*:ULTRIX:*:*)
- echo mips-dec-ultrix${UNAME_RELEASE}
- exit ;;
- VAX*:ULTRIX*:*:*)
- echo vax-dec-ultrix${UNAME_RELEASE}
- exit ;;
- 2020:CLIX:*:* | 2430:CLIX:*:*)
- echo clipper-intergraph-clix${UNAME_RELEASE}
- exit ;;
- mips:*:*:UMIPS | mips:*:*:RISCos)
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
-#ifdef __cplusplus
-#include <stdio.h> /* for printf() prototype */
- int main (int argc, char *argv[]) {
-#else
- int main (argc, argv) int argc; char *argv[]; {
-#endif
- #if defined (host_mips) && defined (MIPSEB)
- #if defined (SYSTYPE_SYSV)
- printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
- #endif
- #if defined (SYSTYPE_SVR4)
- printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
- #endif
- #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
- printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
- #endif
- #endif
- exit (-1);
- }
-EOF
- $CC_FOR_BUILD -o $dummy $dummy.c &&
- dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` &&
- SYSTEM_NAME=`$dummy $dummyarg` &&
- { echo "$SYSTEM_NAME"; exit; }
- echo mips-mips-riscos${UNAME_RELEASE}
- exit ;;
- Motorola:PowerMAX_OS:*:*)
- echo powerpc-motorola-powermax
- exit ;;
- Motorola:*:4.3:PL8-*)
- echo powerpc-harris-powermax
- exit ;;
- Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
- echo powerpc-harris-powermax
- exit ;;
- Night_Hawk:Power_UNIX:*:*)
- echo powerpc-harris-powerunix
- exit ;;
- m88k:CX/UX:7*:*)
- echo m88k-harris-cxux7
- exit ;;
- m88k:*:4*:R4*)
- echo m88k-motorola-sysv4
- exit ;;
- m88k:*:3*:R3*)
- echo m88k-motorola-sysv3
- exit ;;
- AViiON:dgux:*:*)
- # DG/UX returns AViiON for all architectures
- UNAME_PROCESSOR=`/usr/bin/uname -p`
- if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
- then
- if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
- [ ${TARGET_BINARY_INTERFACE}x = x ]
- then
- echo m88k-dg-dgux${UNAME_RELEASE}
- else
- echo m88k-dg-dguxbcs${UNAME_RELEASE}
- fi
- else
- echo i586-dg-dgux${UNAME_RELEASE}
- fi
- exit ;;
- M88*:DolphinOS:*:*) # DolphinOS (SVR3)
- echo m88k-dolphin-sysv3
- exit ;;
- M88*:*:R3*:*)
- # Delta 88k system running SVR3
- echo m88k-motorola-sysv3
- exit ;;
- XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
- echo m88k-tektronix-sysv3
- exit ;;
- Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
- echo m68k-tektronix-bsd
- exit ;;
- *:IRIX*:*:*)
- echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
- exit ;;
- ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
- echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id
- exit ;; # Note that: echo "'`uname -s`'" gives 'AIX '
- i*86:AIX:*:*)
- echo i386-ibm-aix
- exit ;;
- ia64:AIX:*:*)
- if [ -x /usr/bin/oslevel ] ; then
- IBM_REV=`/usr/bin/oslevel`
- else
- IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
- fi
- echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
- exit ;;
- *:AIX:2:3)
- if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
- #include <sys/systemcfg.h>
-
- main()
- {
- if (!__power_pc())
- exit(1);
- puts("powerpc-ibm-aix3.2.5");
- exit(0);
- }
-EOF
- if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy`
- then
- echo "$SYSTEM_NAME"
- else
- echo rs6000-ibm-aix3.2.5
- fi
- elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
- echo rs6000-ibm-aix3.2.4
- else
- echo rs6000-ibm-aix3.2
- fi
- exit ;;
- *:AIX:*:[45])
- IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
- if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
- IBM_ARCH=rs6000
- else
- IBM_ARCH=powerpc
- fi
- if [ -x /usr/bin/oslevel ] ; then
- IBM_REV=`/usr/bin/oslevel`
- else
- IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
- fi
- echo ${IBM_ARCH}-ibm-aix${IBM_REV}
- exit ;;
- *:AIX:*:*)
- echo rs6000-ibm-aix
- exit ;;
- ibmrt:4.4BSD:*|romp-ibm:BSD:*)
- echo romp-ibm-bsd4.4
- exit ;;
- ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and
- echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to
- exit ;; # report: romp-ibm BSD 4.3
- *:BOSX:*:*)
- echo rs6000-bull-bosx
- exit ;;
- DPX/2?00:B.O.S.:*:*)
- echo m68k-bull-sysv3
- exit ;;
- 9000/[34]??:4.3bsd:1.*:*)
- echo m68k-hp-bsd
- exit ;;
- hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
- echo m68k-hp-bsd4.4
- exit ;;
- 9000/[34678]??:HP-UX:*:*)
- HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
- case "${UNAME_MACHINE}" in
- 9000/31? ) HP_ARCH=m68000 ;;
- 9000/[34]?? ) HP_ARCH=m68k ;;
- 9000/[678][0-9][0-9])
- if [ -x /usr/bin/getconf ]; then
- sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
- sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
- case "${sc_cpu_version}" in
- 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
- 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
- 532) # CPU_PA_RISC2_0
- case "${sc_kernel_bits}" in
- 32) HP_ARCH="hppa2.0n" ;;
- 64) HP_ARCH="hppa2.0w" ;;
- '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20
- esac ;;
- esac
- fi
- if [ "${HP_ARCH}" = "" ]; then
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
-
- #define _HPUX_SOURCE
- #include <stdlib.h>
- #include <unistd.h>
-
- int main ()
- {
- #if defined(_SC_KERNEL_BITS)
- long bits = sysconf(_SC_KERNEL_BITS);
- #endif
- long cpu = sysconf (_SC_CPU_VERSION);
-
- switch (cpu)
- {
- case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
- case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
- case CPU_PA_RISC2_0:
- #if defined(_SC_KERNEL_BITS)
- switch (bits)
- {
- case 64: puts ("hppa2.0w"); break;
- case 32: puts ("hppa2.0n"); break;
- default: puts ("hppa2.0"); break;
- } break;
- #else /* !defined(_SC_KERNEL_BITS) */
- puts ("hppa2.0"); break;
- #endif
- default: puts ("hppa1.0"); break;
- }
- exit (0);
- }
-EOF
- (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
- test -z "$HP_ARCH" && HP_ARCH=hppa
- fi ;;
- esac
- if [ ${HP_ARCH} = "hppa2.0w" ]
- then
- eval $set_cc_for_build
-
- # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
- # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler
- # generating 64-bit code. GNU and HP use different nomenclature:
- #
- # $ CC_FOR_BUILD=cc ./config.guess
- # => hppa2.0w-hp-hpux11.23
- # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
- # => hppa64-hp-hpux11.23
-
- if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
- grep __LP64__ >/dev/null
- then
- HP_ARCH="hppa2.0w"
- else
- HP_ARCH="hppa64"
- fi
- fi
- echo ${HP_ARCH}-hp-hpux${HPUX_REV}
- exit ;;
- ia64:HP-UX:*:*)
- HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
- echo ia64-hp-hpux${HPUX_REV}
- exit ;;
- 3050*:HI-UX:*:*)
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
- #include <unistd.h>
- int
- main ()
- {
- long cpu = sysconf (_SC_CPU_VERSION);
- /* The order matters, because CPU_IS_HP_MC68K erroneously returns
- true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct
- results, however. */
- if (CPU_IS_PA_RISC (cpu))
- {
- switch (cpu)
- {
- case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
- case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
- case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
- default: puts ("hppa-hitachi-hiuxwe2"); break;
- }
- }
- else if (CPU_IS_HP_MC68K (cpu))
- puts ("m68k-hitachi-hiuxwe2");
- else puts ("unknown-hitachi-hiuxwe2");
- exit (0);
- }
-EOF
- $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` &&
- { echo "$SYSTEM_NAME"; exit; }
- echo unknown-hitachi-hiuxwe2
- exit ;;
- 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
- echo hppa1.1-hp-bsd
- exit ;;
- 9000/8??:4.3bsd:*:*)
- echo hppa1.0-hp-bsd
- exit ;;
- *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
- echo hppa1.0-hp-mpeix
- exit ;;
- hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
- echo hppa1.1-hp-osf
- exit ;;
- hp8??:OSF1:*:*)
- echo hppa1.0-hp-osf
- exit ;;
- i*86:OSF1:*:*)
- if [ -x /usr/sbin/sysversion ] ; then
- echo ${UNAME_MACHINE}-unknown-osf1mk
- else
- echo ${UNAME_MACHINE}-unknown-osf1
- fi
- exit ;;
- parisc*:Lites*:*:*)
- echo hppa1.1-hp-lites
- exit ;;
- C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
- echo c1-convex-bsd
- exit ;;
- C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
- if getsysinfo -f scalar_acc
- then echo c32-convex-bsd
- else echo c2-convex-bsd
- fi
- exit ;;
- C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
- echo c34-convex-bsd
- exit ;;
- C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
- echo c38-convex-bsd
- exit ;;
- C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
- echo c4-convex-bsd
- exit ;;
- CRAY*Y-MP:*:*:*)
- echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- exit ;;
- CRAY*[A-Z]90:*:*:*)
- echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
- | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
- -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
- -e 's/\.[^.]*$/.X/'
- exit ;;
- CRAY*TS:*:*:*)
- echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- exit ;;
- CRAY*T3E:*:*:*)
- echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- exit ;;
- CRAY*SV1:*:*:*)
- echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- exit ;;
- *:UNICOS/mp:*:*)
- echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- exit ;;
- F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
- FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
- FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
- echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
- exit ;;
- 5000:UNIX_System_V:4.*:*)
- FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
- FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
- echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
- exit ;;
- i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
- echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
- exit ;;
- sparc*:BSD/OS:*:*)
- echo sparc-unknown-bsdi${UNAME_RELEASE}
- exit ;;
- *:BSD/OS:*:*)
- echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
- exit ;;
- *:FreeBSD:*:*)
- case ${UNAME_MACHINE} in
- pc98)
- echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
- *)
- echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
- esac
- exit ;;
- i*:CYGWIN*:*)
- echo ${UNAME_MACHINE}-pc-cygwin
- exit ;;
- i*:MINGW*:*)
- echo ${UNAME_MACHINE}-pc-mingw32
- exit ;;
- i*:MSYS_NT-*:*:*)
- echo ${UNAME_MACHINE}-pc-mingw32
- exit ;;
- i*:windows32*:*)
- # uname -m includes "-pc" on this system.
- echo ${UNAME_MACHINE}-mingw32
- exit ;;
- i*:PW*:*)
- echo ${UNAME_MACHINE}-pc-pw32
- exit ;;
- x86:Interix*:[345]*)
- echo i586-pc-interix${UNAME_RELEASE}
- exit ;;
- EM64T:Interix*:[345]*)
- echo x86_64-unknown-interix${UNAME_RELEASE}
- exit ;;
- [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
- echo i${UNAME_MACHINE}-pc-mks
- exit ;;
- i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
- # How do we know it's Interix rather than the generic POSIX subsystem?
- # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
- # UNAME_MACHINE based on the output of uname instead of i386?
- echo i586-pc-interix
- exit ;;
- i*:UWIN*:*)
- echo ${UNAME_MACHINE}-pc-uwin
- exit ;;
- amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
- echo x86_64-unknown-cygwin
- exit ;;
- p*:CYGWIN*:*)
- echo powerpcle-unknown-cygwin
- exit ;;
- prep*:SunOS:5.*:*)
- echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit ;;
- *:GNU:*:*)
- # the GNU system
- echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
- exit ;;
- *:GNU/*:*:*)
- # other systems with GNU libc and userland
- echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
- exit ;;
- i*86:Minix:*:*)
- echo ${UNAME_MACHINE}-pc-minix
- exit ;;
- arm*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit ;;
- cris:Linux:*:*)
- echo cris-axis-linux-gnu
- exit ;;
- crisv32:Linux:*:*)
- echo crisv32-axis-linux-gnu
- exit ;;
- frv:Linux:*:*)
- echo frv-unknown-linux-gnu
- exit ;;
- ia64:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit ;;
- m32r*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit ;;
- m68*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit ;;
- mips:Linux:*:*)
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
- #undef CPU
- #undef mips
- #undef mipsel
- #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
- CPU=mipsel
- #else
- #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
- CPU=mips
- #else
- CPU=
- #endif
- #endif
-EOF
- eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
- /^CPU/{
- s: ::g
- p
- }'`"
- test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
- ;;
- mips64:Linux:*:*)
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
- #undef CPU
- #undef mips64
- #undef mips64el
- #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
- CPU=mips64el
- #else
- #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
- CPU=mips64
- #else
- CPU=
- #endif
- #endif
-EOF
- eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
- /^CPU/{
- s: ::g
- p
- }'`"
- test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
- ;;
- or32:Linux:*:*)
- echo or32-unknown-linux-gnu
- exit ;;
- ppc:Linux:*:*)
- echo powerpc-unknown-linux-gnu
- exit ;;
- ppc64:Linux:*:*)
- echo powerpc64-unknown-linux-gnu
- exit ;;
- alpha:Linux:*:*)
- case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
- EV5) UNAME_MACHINE=alphaev5 ;;
- EV56) UNAME_MACHINE=alphaev56 ;;
- PCA56) UNAME_MACHINE=alphapca56 ;;
- PCA57) UNAME_MACHINE=alphapca56 ;;
- EV6) UNAME_MACHINE=alphaev6 ;;
- EV67) UNAME_MACHINE=alphaev67 ;;
- EV68*) UNAME_MACHINE=alphaev68 ;;
- esac
- objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null
- if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
- echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
- exit ;;
- parisc:Linux:*:* | hppa:Linux:*:*)
- # Look for CPU level
- case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
- PA7*) echo hppa1.1-unknown-linux-gnu ;;
- PA8*) echo hppa2.0-unknown-linux-gnu ;;
- *) echo hppa-unknown-linux-gnu ;;
- esac
- exit ;;
- parisc64:Linux:*:* | hppa64:Linux:*:*)
- echo hppa64-unknown-linux-gnu
- exit ;;
- s390:Linux:*:* | s390x:Linux:*:*)
- echo ${UNAME_MACHINE}-ibm-linux
- exit ;;
- sh64*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit ;;
- sh*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit ;;
- sparc:Linux:*:* | sparc64:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit ;;
- vax:Linux:*:*)
- echo ${UNAME_MACHINE}-dec-linux-gnu
- exit ;;
- x86_64:Linux:*:*)
- echo x86_64-unknown-linux-gnu
- exit ;;
- i*86:Linux:*:*)
- # The BFD linker knows what the default object file format is, so
- # first see if it will tell us. cd to the root directory to prevent
- # problems with other programs or directories called `ld' in the path.
- # Set LC_ALL=C to ensure ld outputs messages in English.
- ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \
- | sed -ne '/supported targets:/!d
- s/[ ][ ]*/ /g
- s/.*supported targets: *//
- s/ .*//
- p'`
- case "$ld_supported_targets" in
- elf32-i386)
- TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu"
- ;;
- a.out-i386-linux)
- echo "${UNAME_MACHINE}-pc-linux-gnuaout"
- exit ;;
- coff-i386)
- echo "${UNAME_MACHINE}-pc-linux-gnucoff"
- exit ;;
- "")
- # Either a pre-BFD a.out linker (linux-gnuoldld) or
- # one that does not give us useful --help.
- echo "${UNAME_MACHINE}-pc-linux-gnuoldld"
- exit ;;
- esac
- # Determine whether the default compiler is a.out or elf
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
- #include <features.h>
- #ifdef __ELF__
- # ifdef __GLIBC__
- # if __GLIBC__ >= 2
- LIBC=gnu
- # else
- LIBC=gnulibc1
- # endif
- # else
- LIBC=gnulibc1
- # endif
- #else
- #if defined(__INTEL_COMPILER) || defined(__PGI) || defined(__sun)
- LIBC=gnu
- #else
- LIBC=gnuaout
- #endif
- #endif
- #ifdef __dietlibc__
- LIBC=dietlibc
- #endif
-EOF
- eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
- /^LIBC/{
- s: ::g
- p
- }'`"
- test x"${LIBC}" != x && {
- echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
- exit
- }
- test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; }
- ;;
- i*86:DYNIX/ptx:4*:*)
- # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
- # earlier versions are messed up and put the nodename in both
- # sysname and nodename.
- echo i386-sequent-sysv4
- exit ;;
- i*86:UNIX_SV:4.2MP:2.*)
- # Unixware is an offshoot of SVR4, but it has its own version
- # number series starting with 2...
- # I am not positive that other SVR4 systems won't match this,
- # I just have to hope. -- rms.
- # Use sysv4.2uw... so that sysv4* matches it.
- echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
- exit ;;
- i*86:OS/2:*:*)
- # If we were able to find `uname', then EMX Unix compatibility
- # is probably installed.
- echo ${UNAME_MACHINE}-pc-os2-emx
- exit ;;
- i*86:XTS-300:*:STOP)
- echo ${UNAME_MACHINE}-unknown-stop
- exit ;;
- i*86:atheos:*:*)
- echo ${UNAME_MACHINE}-unknown-atheos
- exit ;;
- i*86:syllable:*:*)
- echo ${UNAME_MACHINE}-pc-syllable
- exit ;;
- i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
- echo i386-unknown-lynxos${UNAME_RELEASE}
- exit ;;
- i*86:*DOS:*:*)
- echo ${UNAME_MACHINE}-pc-msdosdjgpp
- exit ;;
- i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
- UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
- if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
- echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
- else
- echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
- fi
- exit ;;
- i*86:*:5:[678]*)
- # UnixWare 7.x, OpenUNIX and OpenServer 6.
- case `/bin/uname -X | grep "^Machine"` in
- *486*) UNAME_MACHINE=i486 ;;
- *Pentium) UNAME_MACHINE=i586 ;;
- *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
- esac
- echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
- exit ;;
- i*86:*:3.2:*)
- if test -f /usr/options/cb.name; then
- UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
- echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
- elif /bin/uname -X 2>/dev/null >/dev/null ; then
- UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
- (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
- (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
- && UNAME_MACHINE=i586
- (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \
- && UNAME_MACHINE=i686
- (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
- && UNAME_MACHINE=i686
- echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
- else
- echo ${UNAME_MACHINE}-pc-sysv32
- fi
- exit ;;
- pc:*:*:*)
- # Left here for compatibility:
- # uname -m prints for DJGPP always 'pc', but it prints nothing about
- # the processor, so we play safe by assuming i386.
- echo i386-pc-msdosdjgpp
- exit ;;
- Intel:Mach:3*:*)
- echo i386-pc-mach3
- exit ;;
- paragon:*:*:*)
- echo i860-intel-osf1
- exit ;;
- i860:*:4.*:*) # i860-SVR4
- if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
- echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
- else # Add other i860-SVR4 vendors below as they are discovered.
- echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4
- fi
- exit ;;
- mini*:CTIX:SYS*5:*)
- # "miniframe"
- echo m68010-convergent-sysv
- exit ;;
- mc68k:UNIX:SYSTEM5:3.51m)
- echo m68k-convergent-sysv
- exit ;;
- M680?0:D-NIX:5.3:*)
- echo m68k-diab-dnix
- exit ;;
- M68*:*:R3V[5678]*:*)
- test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
- 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
- OS_REL=''
- test -r /etc/.relid \
- && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
- /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
- && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
- /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
- && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
- 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
- /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
- && { echo i486-ncr-sysv4; exit; } ;;
- m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
- echo m68k-unknown-lynxos${UNAME_RELEASE}
- exit ;;
- mc68030:UNIX_System_V:4.*:*)
- echo m68k-atari-sysv4
- exit ;;
- TSUNAMI:LynxOS:2.*:*)
- echo sparc-unknown-lynxos${UNAME_RELEASE}
- exit ;;
- rs6000:LynxOS:2.*:*)
- echo rs6000-unknown-lynxos${UNAME_RELEASE}
- exit ;;
- PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*)
- echo powerpc-unknown-lynxos${UNAME_RELEASE}
- exit ;;
- SM[BE]S:UNIX_SV:*:*)
- echo mips-dde-sysv${UNAME_RELEASE}
- exit ;;
- RM*:ReliantUNIX-*:*:*)
- echo mips-sni-sysv4
- exit ;;
- RM*:SINIX-*:*:*)
- echo mips-sni-sysv4
- exit ;;
- *:SINIX-*:*:*)
- if uname -p 2>/dev/null >/dev/null ; then
- UNAME_MACHINE=`(uname -p) 2>/dev/null`
- echo ${UNAME_MACHINE}-sni-sysv4
- else
- echo ns32k-sni-sysv
- fi
- exit ;;
- PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
- # says <Richard.M.Bartel@ccMail.Census.GOV>
- echo i586-unisys-sysv4
- exit ;;
- *:UNIX_System_V:4*:FTX*)
- # From Gerald Hewes <hewes@openmarket.com>.
- # How about differentiating between stratus architectures? -djm
- echo hppa1.1-stratus-sysv4
- exit ;;
- *:*:*:FTX*)
- # From seanf@swdc.stratus.com.
- echo i860-stratus-sysv4
- exit ;;
- i*86:VOS:*:*)
- # From Paul.Green@stratus.com.
- echo ${UNAME_MACHINE}-stratus-vos
- exit ;;
- *:VOS:*:*)
- # From Paul.Green@stratus.com.
- echo hppa1.1-stratus-vos
- exit ;;
- mc68*:A/UX:*:*)
- echo m68k-apple-aux${UNAME_RELEASE}
- exit ;;
- news*:NEWS-OS:6*:*)
- echo mips-sony-newsos6
- exit ;;
- R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
- if [ -d /usr/nec ]; then
- echo mips-nec-sysv${UNAME_RELEASE}
- else
- echo mips-unknown-sysv${UNAME_RELEASE}
- fi
- exit ;;
- BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only.
- echo powerpc-be-beos
- exit ;;
- BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only.
- echo powerpc-apple-beos
- exit ;;
- BePC:BeOS:*:*) # BeOS running on Intel PC compatible.
- echo i586-pc-beos
- exit ;;
- SX-4:SUPER-UX:*:*)
- echo sx4-nec-superux${UNAME_RELEASE}
- exit ;;
- SX-5:SUPER-UX:*:*)
- echo sx5-nec-superux${UNAME_RELEASE}
- exit ;;
- SX-6:SUPER-UX:*:*)
- echo sx6-nec-superux${UNAME_RELEASE}
- exit ;;
- Power*:Rhapsody:*:*)
- echo powerpc-apple-rhapsody${UNAME_RELEASE}
- exit ;;
- *:Rhapsody:*:*)
- echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
- exit ;;
- *:Darwin:*:*)
- UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
- case $UNAME_PROCESSOR in
- unknown) UNAME_PROCESSOR=powerpc ;;
- esac
- echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
- exit ;;
- *:procnto*:*:* | *:QNX:[0123456789]*:*)
- UNAME_PROCESSOR=`uname -p`
- if test "$UNAME_PROCESSOR" = "x86"; then
- UNAME_PROCESSOR=i386
- UNAME_MACHINE=pc
- fi
- echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
- exit ;;
- *:QNX:*:4*)
- echo i386-pc-qnx
- exit ;;
- NSE-?:NONSTOP_KERNEL:*:*)
- echo nse-tandem-nsk${UNAME_RELEASE}
- exit ;;
- NSR-?:NONSTOP_KERNEL:*:*)
- echo nsr-tandem-nsk${UNAME_RELEASE}
- exit ;;
- *:NonStop-UX:*:*)
- echo mips-compaq-nonstopux
- exit ;;
- BS2000:POSIX*:*:*)
- echo bs2000-siemens-sysv
- exit ;;
- DS/*:UNIX_System_V:*:*)
- echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
- exit ;;
- *:Plan9:*:*)
- # "uname -m" is not consistent, so use $cputype instead. 386
- # is converted to i386 for consistency with other x86
- # operating systems.
- if test "$cputype" = "386"; then
- UNAME_MACHINE=i386
- else
- UNAME_MACHINE="$cputype"
- fi
- echo ${UNAME_MACHINE}-unknown-plan9
- exit ;;
- *:TOPS-10:*:*)
- echo pdp10-unknown-tops10
- exit ;;
- *:TENEX:*:*)
- echo pdp10-unknown-tenex
- exit ;;
- KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
- echo pdp10-dec-tops20
- exit ;;
- XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
- echo pdp10-xkl-tops20
- exit ;;
- *:TOPS-20:*:*)
- echo pdp10-unknown-tops20
- exit ;;
- *:ITS:*:*)
- echo pdp10-unknown-its
- exit ;;
- SEI:*:*:SEIUX)
- echo mips-sei-seiux${UNAME_RELEASE}
- exit ;;
- *:DragonFly:*:*)
- echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
- exit ;;
- *:*VMS:*:*)
- UNAME_MACHINE=`(uname -p) 2>/dev/null`
- case "${UNAME_MACHINE}" in
- A*) echo alpha-dec-vms ; exit ;;
- I*) echo ia64-dec-vms ; exit ;;
- V*) echo vax-dec-vms ; exit ;;
- esac ;;
- *:XENIX:*:SysV)
- echo i386-pc-xenix
- exit ;;
- i*86:skyos:*:*)
- echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//'
- exit ;;
- i*86:rdos:*:*)
- echo ${UNAME_MACHINE}-pc-rdos
- exit ;;
-esac
-
-#echo '(No uname command or uname output not recognized.)' 1>&2
-#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
-
-eval $set_cc_for_build
-cat >$dummy.c <<EOF
-#ifdef _SEQUENT_
-# include <sys/types.h>
-# include <sys/utsname.h>
-#endif
-main ()
-{
-#if defined (sony)
-#if defined (MIPSEB)
- /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed,
- I don't know.... */
- printf ("mips-sony-bsd\n"); exit (0);
-#else
-#include <sys/param.h>
- printf ("m68k-sony-newsos%s\n",
-#ifdef NEWSOS4
- "4"
-#else
- ""
-#endif
- ); exit (0);
-#endif
-#endif
-
-#if defined (__arm) && defined (__acorn) && defined (__unix)
- printf ("arm-acorn-riscix\n"); exit (0);
-#endif
-
-#if defined (hp300) && !defined (hpux)
- printf ("m68k-hp-bsd\n"); exit (0);
-#endif
-
-#if defined (NeXT)
-#if !defined (__ARCHITECTURE__)
-#define __ARCHITECTURE__ "m68k"
-#endif
- int version;
- version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
- if (version < 4)
- printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
- else
- printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
- exit (0);
-#endif
-
-#if defined (MULTIMAX) || defined (n16)
-#if defined (UMAXV)
- printf ("ns32k-encore-sysv\n"); exit (0);
-#else
-#if defined (CMU)
- printf ("ns32k-encore-mach\n"); exit (0);
-#else
- printf ("ns32k-encore-bsd\n"); exit (0);
-#endif
-#endif
-#endif
-
-#if defined (__386BSD__)
- printf ("i386-pc-bsd\n"); exit (0);
-#endif
-
-#if defined (sequent)
-#if defined (i386)
- printf ("i386-sequent-dynix\n"); exit (0);
-#endif
-#if defined (ns32000)
- printf ("ns32k-sequent-dynix\n"); exit (0);
-#endif
-#endif
-
-#if defined (_SEQUENT_)
- struct utsname un;
-
- uname(&un);
-
- if (strncmp(un.version, "V2", 2) == 0) {
- printf ("i386-sequent-ptx2\n"); exit (0);
- }
- if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
- printf ("i386-sequent-ptx1\n"); exit (0);
- }
- printf ("i386-sequent-ptx\n"); exit (0);
-
-#endif
-
-#if defined (vax)
-# if !defined (ultrix)
-# include <sys/param.h>
-# if defined (BSD)
-# if BSD == 43
- printf ("vax-dec-bsd4.3\n"); exit (0);
-# else
-# if BSD == 199006
- printf ("vax-dec-bsd4.3reno\n"); exit (0);
-# else
- printf ("vax-dec-bsd\n"); exit (0);
-# endif
-# endif
-# else
- printf ("vax-dec-bsd\n"); exit (0);
-# endif
-# else
- printf ("vax-dec-ultrix\n"); exit (0);
-# endif
-#endif
-
-#if defined (alliant) && defined (i860)
- printf ("i860-alliant-bsd\n"); exit (0);
-#endif
-
- exit (1);
-}
-EOF
-
-$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` &&
- { echo "$SYSTEM_NAME"; exit; }
-
-# Apollos put the system type in the environment.
-
-test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; }
-
-# Convex versions that predate uname can use getsysinfo(1)
-
-if [ -x /usr/convex/getsysinfo ]
-then
- case `getsysinfo -f cpu_type` in
- c1*)
- echo c1-convex-bsd
- exit ;;
- c2*)
- if getsysinfo -f scalar_acc
- then echo c32-convex-bsd
- else echo c2-convex-bsd
- fi
- exit ;;
- c34*)
- echo c34-convex-bsd
- exit ;;
- c38*)
- echo c38-convex-bsd
- exit ;;
- c4*)
- echo c4-convex-bsd
- exit ;;
- esac
-fi
-
-cat >&2 <<EOF
-$0: unable to guess system type
-
-This script, last modified $timestamp, has failed to recognize
-the operating system you are using. It is advised that you
-download the most up to date version of the config scripts from
-
- http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.guess
-and
- http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.sub
-
-If the version you run ($0) is already up to date, please
-send the following data and any information you think might be
-pertinent to <config-patches@gnu.org> in order to provide the needed
-information to handle your system.
-
-config.guess timestamp = $timestamp
-
-uname -m = `(uname -m) 2>/dev/null || echo unknown`
-uname -r = `(uname -r) 2>/dev/null || echo unknown`
-uname -s = `(uname -s) 2>/dev/null || echo unknown`
-uname -v = `(uname -v) 2>/dev/null || echo unknown`
-
-/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
-/bin/uname -X = `(/bin/uname -X) 2>/dev/null`
-
-hostinfo = `(hostinfo) 2>/dev/null`
-/bin/universe = `(/bin/universe) 2>/dev/null`
-/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null`
-/bin/arch = `(/bin/arch) 2>/dev/null`
-/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null`
-/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
-
-UNAME_MACHINE = ${UNAME_MACHINE}
-UNAME_RELEASE = ${UNAME_RELEASE}
-UNAME_SYSTEM = ${UNAME_SYSTEM}
-UNAME_VERSION = ${UNAME_VERSION}
-EOF
-
-exit 1
-
-# Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "timestamp='"
-# time-stamp-format: "%:y-%02m-%02d"
-# time-stamp-end: "'"
-# End:
diff --git a/libs/libsndfile/config.sub b/libs/libsndfile/config.sub
deleted file mode 100755
index ad9f395711..0000000000
--- a/libs/libsndfile/config.sub
+++ /dev/null
@@ -1,1608 +0,0 @@
-#! /bin/sh
-# Configuration validation subroutine script.
-# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-# 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
-
-timestamp='2006-02-23'
-
-# This file is (in principle) common to ALL GNU software.
-# The presence of a machine in this file suggests that SOME GNU software
-# can handle that machine. It does not imply ALL GNU software can.
-#
-# This file is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
-# 02110-1301, USA.
-#
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-
-# Please send patches to <config-patches@gnu.org>. Submit a context
-# diff and a properly formatted ChangeLog entry.
-#
-# Configuration subroutine to validate and canonicalize a configuration type.
-# Supply the specified configuration type as an argument.
-# If it is invalid, we print an error message on stderr and exit with code 1.
-# Otherwise, we print the canonical config type on stdout and succeed.
-
-# This file is supposed to be the same for all GNU packages
-# and recognize all the CPU types, system types and aliases
-# that are meaningful with *any* GNU software.
-# Each package is responsible for reporting which valid configurations
-# it does not support. The user should be able to distinguish
-# a failure to support a valid configuration from a meaningless
-# configuration.
-
-# The goal of this file is to map all the various variations of a given
-# machine specification into a single specification in the form:
-# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
-# or in some cases, the newer four-part form:
-# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
-# It is wrong to echo any other type of specification.
-
-me=`echo "$0" | sed -e 's,.*/,,'`
-
-usage="\
-Usage: $0 [OPTION] CPU-MFR-OPSYS
- $0 [OPTION] ALIAS
-
-Canonicalize a configuration name.
-
-Operation modes:
- -h, --help print this help, then exit
- -t, --time-stamp print date of last modification, then exit
- -v, --version print version number, then exit
-
-Report bugs and patches to <config-patches@gnu.org>."
-
-version="\
-GNU config.sub ($timestamp)
-
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
-Free Software Foundation, Inc.
-
-This is free software; see the source for copying conditions. There is NO
-warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
-
-help="
-Try \`$me --help' for more information."
-
-# Parse command line
-while test $# -gt 0 ; do
- case $1 in
- --time-stamp | --time* | -t )
- echo "$timestamp" ; exit ;;
- --version | -v )
- echo "$version" ; exit ;;
- --help | --h* | -h )
- echo "$usage"; exit ;;
- -- ) # Stop option processing
- shift; break ;;
- - ) # Use stdin as input.
- break ;;
- -* )
- echo "$me: invalid option $1$help"
- exit 1 ;;
-
- *local*)
- # First pass through any local machine types.
- echo $1
- exit ;;
-
- * )
- break ;;
- esac
-done
-
-case $# in
- 0) echo "$me: missing argument$help" >&2
- exit 1;;
- 1) ;;
- *) echo "$me: too many arguments$help" >&2
- exit 1;;
-esac
-
-# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
-# Here we must recognize all the valid KERNEL-OS combinations.
-maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
-case $maybe_os in
- nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \
- uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \
- storm-chaos* | os2-emx* | rtmk-nova*)
- os=-$maybe_os
- basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
- ;;
- *)
- basic_machine=`echo $1 | sed 's/-[^-]*$//'`
- if [ $basic_machine != $1 ]
- then os=`echo $1 | sed 's/.*-/-/'`
- else os=; fi
- ;;
-esac
-
-### Let's recognize common machines as not being operating systems so
-### that things like config.sub decstation-3100 work. We also
-### recognize some manufacturers as not being operating systems, so we
-### can provide default operating systems below.
-case $os in
- -sun*os*)
- # Prevent following clause from handling this invalid input.
- ;;
- -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
- -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
- -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
- -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
- -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
- -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
- -apple | -axis | -knuth | -cray)
- os=
- basic_machine=$1
- ;;
- -sim | -cisco | -oki | -wec | -winbond)
- os=
- basic_machine=$1
- ;;
- -scout)
- ;;
- -wrs)
- os=-vxworks
- basic_machine=$1
- ;;
- -chorusos*)
- os=-chorusos
- basic_machine=$1
- ;;
- -chorusrdb)
- os=-chorusrdb
- basic_machine=$1
- ;;
- -hiux*)
- os=-hiuxwe2
- ;;
- -sco6)
- os=-sco5v6
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco5)
- os=-sco3.2v5
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco4)
- os=-sco3.2v4
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco3.2.[4-9]*)
- os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco3.2v[4-9]*)
- # Don't forget version if it is 3.2v4 or newer.
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco5v6*)
- # Don't forget version if it is 3.2v4 or newer.
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco*)
- os=-sco3.2v2
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -udk*)
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -isc)
- os=-isc2.2
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -clix*)
- basic_machine=clipper-intergraph
- ;;
- -isc*)
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -lynx*)
- os=-lynxos
- ;;
- -ptx*)
- basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
- ;;
- -windowsnt*)
- os=`echo $os | sed -e 's/windowsnt/winnt/'`
- ;;
- -psos*)
- os=-psos
- ;;
- -mint | -mint[0-9]*)
- basic_machine=m68k-atari
- os=-mint
- ;;
-esac
-
-# Decode aliases for certain CPU-COMPANY combinations.
-case $basic_machine in
- # Recognize the basic CPU types without company name.
- # Some are omitted here because they have special meanings below.
- 1750a | 580 \
- | a29k \
- | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
- | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
- | am33_2.0 \
- | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \
- | bfin \
- | c4x | clipper \
- | d10v | d30v | dlx | dsp16xx \
- | fr30 | frv \
- | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
- | i370 | i860 | i960 | ia64 \
- | ip2k | iq2000 \
- | m32r | m32rle | m68000 | m68k | m88k | maxq | mb | microblaze | mcore \
- | mips | mipsbe | mipseb | mipsel | mipsle \
- | mips16 \
- | mips64 | mips64el \
- | mips64vr | mips64vrel \
- | mips64orion | mips64orionel \
- | mips64vr4100 | mips64vr4100el \
- | mips64vr4300 | mips64vr4300el \
- | mips64vr5000 | mips64vr5000el \
- | mips64vr5900 | mips64vr5900el \
- | mipsisa32 | mipsisa32el \
- | mipsisa32r2 | mipsisa32r2el \
- | mipsisa64 | mipsisa64el \
- | mipsisa64r2 | mipsisa64r2el \
- | mipsisa64sb1 | mipsisa64sb1el \
- | mipsisa64sr71k | mipsisa64sr71kel \
- | mipstx39 | mipstx39el \
- | mn10200 | mn10300 \
- | mt \
- | msp430 \
- | nios | nios2 \
- | ns16k | ns32k \
- | or32 \
- | pdp10 | pdp11 | pj | pjl \
- | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
- | pyramid \
- | sh | sh[1234] | sh[24]a | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \
- | sh64 | sh64le \
- | sparc | sparc64 | sparc64b | sparc86x | sparclet | sparclite \
- | sparcv8 | sparcv9 | sparcv9b \
- | strongarm \
- | tahoe | thumb | tic4x | tic80 | tron \
- | v850 | v850e \
- | we32k \
- | x86 | xscale | xscalee[bl] | xstormy16 | xtensa \
- | z8k)
- basic_machine=$basic_machine-unknown
- ;;
- m32c)
- basic_machine=$basic_machine-unknown
- ;;
- m6811 | m68hc11 | m6812 | m68hc12)
- # Motorola 68HC11/12.
- basic_machine=$basic_machine-unknown
- os=-none
- ;;
- m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
- ;;
- ms1)
- basic_machine=mt-unknown
- ;;
-
- # We use `pc' rather than `unknown'
- # because (1) that's what they normally are, and
- # (2) the word "unknown" tends to confuse beginning users.
- i*86 | x86_64)
- basic_machine=$basic_machine-pc
- ;;
- # Object if more than one company name word.
- *-*-*)
- echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
- exit 1
- ;;
- # Recognize the basic CPU types with company name.
- 580-* \
- | a29k-* \
- | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
- | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
- | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
- | arm-* | armbe-* | armle-* | armeb-* | armv*-* \
- | avr-* \
- | bfin-* | bs2000-* \
- | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
- | clipper-* | craynv-* | cydra-* \
- | d10v-* | d30v-* | dlx-* \
- | elxsi-* \
- | f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \
- | h8300-* | h8500-* \
- | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
- | i*86-* | i860-* | i960-* | ia64-* \
- | ip2k-* | iq2000-* \
- | m32r-* | m32rle-* \
- | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
- | m88110-* | m88k-* | maxq-* | mcore-* \
- | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
- | mips16-* \
- | mips64-* | mips64el-* \
- | mips64vr-* | mips64vrel-* \
- | mips64orion-* | mips64orionel-* \
- | mips64vr4100-* | mips64vr4100el-* \
- | mips64vr4300-* | mips64vr4300el-* \
- | mips64vr5000-* | mips64vr5000el-* \
- | mips64vr5900-* | mips64vr5900el-* \
- | mipsisa32-* | mipsisa32el-* \
- | mipsisa32r2-* | mipsisa32r2el-* \
- | mipsisa64-* | mipsisa64el-* \
- | mipsisa64r2-* | mipsisa64r2el-* \
- | mipsisa64sb1-* | mipsisa64sb1el-* \
- | mipsisa64sr71k-* | mipsisa64sr71kel-* \
- | mipstx39-* | mipstx39el-* \
- | mmix-* \
- | mt-* \
- | msp430-* \
- | nios-* | nios2-* \
- | none-* | np1-* | ns16k-* | ns32k-* \
- | orion-* \
- | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
- | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
- | pyramid-* \
- | romp-* | rs6000-* \
- | sh-* | sh[1234]-* | sh[24]a-* | sh[23]e-* | sh[34]eb-* | shbe-* \
- | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
- | sparc-* | sparc64-* | sparc64b-* | sparc86x-* | sparclet-* \
- | sparclite-* \
- | sparcv8-* | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \
- | tahoe-* | thumb-* \
- | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
- | tron-* \
- | v850-* | v850e-* | vax-* \
- | we32k-* \
- | x86-* | x86_64-* | xps100-* | xscale-* | xscalee[bl]-* \
- | xstormy16-* | xtensa-* \
- | ymp-* \
- | z8k-*)
- ;;
- m32c-*)
- ;;
- # Recognize the various machine names and aliases which stand
- # for a CPU type and a company and sometimes even an OS.
- 386bsd)
- basic_machine=i386-unknown
- os=-bsd
- ;;
- 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
- basic_machine=m68000-att
- ;;
- 3b*)
- basic_machine=we32k-att
- ;;
- a29khif)
- basic_machine=a29k-amd
- os=-udi
- ;;
- abacus)
- basic_machine=abacus-unknown
- ;;
- adobe68k)
- basic_machine=m68010-adobe
- os=-scout
- ;;
- alliant | fx80)
- basic_machine=fx80-alliant
- ;;
- altos | altos3068)
- basic_machine=m68k-altos
- ;;
- am29k)
- basic_machine=a29k-none
- os=-bsd
- ;;
- amd64)
- basic_machine=x86_64-pc
- ;;
- amd64-*)
- basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- amdahl)
- basic_machine=580-amdahl
- os=-sysv
- ;;
- amiga | amiga-*)
- basic_machine=m68k-unknown
- ;;
- amigaos | amigados)
- basic_machine=m68k-unknown
- os=-amigaos
- ;;
- amigaunix | amix)
- basic_machine=m68k-unknown
- os=-sysv4
- ;;
- apollo68)
- basic_machine=m68k-apollo
- os=-sysv
- ;;
- apollo68bsd)
- basic_machine=m68k-apollo
- os=-bsd
- ;;
- aux)
- basic_machine=m68k-apple
- os=-aux
- ;;
- balance)
- basic_machine=ns32k-sequent
- os=-dynix
- ;;
- c90)
- basic_machine=c90-cray
- os=-unicos
- ;;
- convex-c1)
- basic_machine=c1-convex
- os=-bsd
- ;;
- convex-c2)
- basic_machine=c2-convex
- os=-bsd
- ;;
- convex-c32)
- basic_machine=c32-convex
- os=-bsd
- ;;
- convex-c34)
- basic_machine=c34-convex
- os=-bsd
- ;;
- convex-c38)
- basic_machine=c38-convex
- os=-bsd
- ;;
- cray | j90)
- basic_machine=j90-cray
- os=-unicos
- ;;
- craynv)
- basic_machine=craynv-cray
- os=-unicosmp
- ;;
- cr16c)
- basic_machine=cr16c-unknown
- os=-elf
- ;;
- crds | unos)
- basic_machine=m68k-crds
- ;;
- crisv32 | crisv32-* | etraxfs*)
- basic_machine=crisv32-axis
- ;;
- cris | cris-* | etrax*)
- basic_machine=cris-axis
- ;;
- crx)
- basic_machine=crx-unknown
- os=-elf
- ;;
- da30 | da30-*)
- basic_machine=m68k-da30
- ;;
- decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
- basic_machine=mips-dec
- ;;
- decsystem10* | dec10*)
- basic_machine=pdp10-dec
- os=-tops10
- ;;
- decsystem20* | dec20*)
- basic_machine=pdp10-dec
- os=-tops20
- ;;
- delta | 3300 | motorola-3300 | motorola-delta \
- | 3300-motorola | delta-motorola)
- basic_machine=m68k-motorola
- ;;
- delta88)
- basic_machine=m88k-motorola
- os=-sysv3
- ;;
- djgpp)
- basic_machine=i586-pc
- os=-msdosdjgpp
- ;;
- dpx20 | dpx20-*)
- basic_machine=rs6000-bull
- os=-bosx
- ;;
- dpx2* | dpx2*-bull)
- basic_machine=m68k-bull
- os=-sysv3
- ;;
- ebmon29k)
- basic_machine=a29k-amd
- os=-ebmon
- ;;
- elxsi)
- basic_machine=elxsi-elxsi
- os=-bsd
- ;;
- encore | umax | mmax)
- basic_machine=ns32k-encore
- ;;
- es1800 | OSE68k | ose68k | ose | OSE)
- basic_machine=m68k-ericsson
- os=-ose
- ;;
- fx2800)
- basic_machine=i860-alliant
- ;;
- genix)
- basic_machine=ns32k-ns
- ;;
- gmicro)
- basic_machine=tron-gmicro
- os=-sysv
- ;;
- go32)
- basic_machine=i386-pc
- os=-go32
- ;;
- h3050r* | hiux*)
- basic_machine=hppa1.1-hitachi
- os=-hiuxwe2
- ;;
- h8300hms)
- basic_machine=h8300-hitachi
- os=-hms
- ;;
- h8300xray)
- basic_machine=h8300-hitachi
- os=-xray
- ;;
- h8500hms)
- basic_machine=h8500-hitachi
- os=-hms
- ;;
- harris)
- basic_machine=m88k-harris
- os=-sysv3
- ;;
- hp300-*)
- basic_machine=m68k-hp
- ;;
- hp300bsd)
- basic_machine=m68k-hp
- os=-bsd
- ;;
- hp300hpux)
- basic_machine=m68k-hp
- os=-hpux
- ;;
- hp3k9[0-9][0-9] | hp9[0-9][0-9])
- basic_machine=hppa1.0-hp
- ;;
- hp9k2[0-9][0-9] | hp9k31[0-9])
- basic_machine=m68000-hp
- ;;
- hp9k3[2-9][0-9])
- basic_machine=m68k-hp
- ;;
- hp9k6[0-9][0-9] | hp6[0-9][0-9])
- basic_machine=hppa1.0-hp
- ;;
- hp9k7[0-79][0-9] | hp7[0-79][0-9])
- basic_machine=hppa1.1-hp
- ;;
- hp9k78[0-9] | hp78[0-9])
- # FIXME: really hppa2.0-hp
- basic_machine=hppa1.1-hp
- ;;
- hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
- # FIXME: really hppa2.0-hp
- basic_machine=hppa1.1-hp
- ;;
- hp9k8[0-9][13679] | hp8[0-9][13679])
- basic_machine=hppa1.1-hp
- ;;
- hp9k8[0-9][0-9] | hp8[0-9][0-9])
- basic_machine=hppa1.0-hp
- ;;
- hppa-next)
- os=-nextstep3
- ;;
- hppaosf)
- basic_machine=hppa1.1-hp
- os=-osf
- ;;
- hppro)
- basic_machine=hppa1.1-hp
- os=-proelf
- ;;
- i370-ibm* | ibm*)
- basic_machine=i370-ibm
- ;;
-# I'm not sure what "Sysv32" means. Should this be sysv3.2?
- i*86v32)
- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
- os=-sysv32
- ;;
- i*86v4*)
- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
- os=-sysv4
- ;;
- i*86v)
- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
- os=-sysv
- ;;
- i*86sol2)
- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
- os=-solaris2
- ;;
- i386mach)
- basic_machine=i386-mach
- os=-mach
- ;;
- i386-vsta | vsta)
- basic_machine=i386-unknown
- os=-vsta
- ;;
- iris | iris4d)
- basic_machine=mips-sgi
- case $os in
- -irix*)
- ;;
- *)
- os=-irix4
- ;;
- esac
- ;;
- isi68 | isi)
- basic_machine=m68k-isi
- os=-sysv
- ;;
- m88k-omron*)
- basic_machine=m88k-omron
- ;;
- magnum | m3230)
- basic_machine=mips-mips
- os=-sysv
- ;;
- merlin)
- basic_machine=ns32k-utek
- os=-sysv
- ;;
- mingw32)
- basic_machine=i386-pc
- os=-mingw32
- ;;
- miniframe)
- basic_machine=m68000-convergent
- ;;
- *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
- basic_machine=m68k-atari
- os=-mint
- ;;
- mips3*-*)
- basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
- ;;
- mips3*)
- basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
- ;;
- monitor)
- basic_machine=m68k-rom68k
- os=-coff
- ;;
- morphos)
- basic_machine=powerpc-unknown
- os=-morphos
- ;;
- msdos)
- basic_machine=i386-pc
- os=-msdos
- ;;
- ms1-*)
- basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
- ;;
- mvs)
- basic_machine=i370-ibm
- os=-mvs
- ;;
- ncr3000)
- basic_machine=i486-ncr
- os=-sysv4
- ;;
- netbsd386)
- basic_machine=i386-unknown
- os=-netbsd
- ;;
- netwinder)
- basic_machine=armv4l-rebel
- os=-linux
- ;;
- news | news700 | news800 | news900)
- basic_machine=m68k-sony
- os=-newsos
- ;;
- news1000)
- basic_machine=m68030-sony
- os=-newsos
- ;;
- news-3600 | risc-news)
- basic_machine=mips-sony
- os=-newsos
- ;;
- necv70)
- basic_machine=v70-nec
- os=-sysv
- ;;
- next | m*-next )
- basic_machine=m68k-next
- case $os in
- -nextstep* )
- ;;
- -ns2*)
- os=-nextstep2
- ;;
- *)
- os=-nextstep3
- ;;
- esac
- ;;
- nh3000)
- basic_machine=m68k-harris
- os=-cxux
- ;;
- nh[45]000)
- basic_machine=m88k-harris
- os=-cxux
- ;;
- nindy960)
- basic_machine=i960-intel
- os=-nindy
- ;;
- mon960)
- basic_machine=i960-intel
- os=-mon960
- ;;
- nonstopux)
- basic_machine=mips-compaq
- os=-nonstopux
- ;;
- np1)
- basic_machine=np1-gould
- ;;
- nsr-tandem)
- basic_machine=nsr-tandem
- ;;
- op50n-* | op60c-*)
- basic_machine=hppa1.1-oki
- os=-proelf
- ;;
- openrisc | openrisc-*)
- basic_machine=or32-unknown
- ;;
- os400)
- basic_machine=powerpc-ibm
- os=-os400
- ;;
- OSE68000 | ose68000)
- basic_machine=m68000-ericsson
- os=-ose
- ;;
- os68k)
- basic_machine=m68k-none
- os=-os68k
- ;;
- pa-hitachi)
- basic_machine=hppa1.1-hitachi
- os=-hiuxwe2
- ;;
- paragon)
- basic_machine=i860-intel
- os=-osf
- ;;
- pbd)
- basic_machine=sparc-tti
- ;;
- pbb)
- basic_machine=m68k-tti
- ;;
- pc532 | pc532-*)
- basic_machine=ns32k-pc532
- ;;
- pc98)
- basic_machine=i386-pc
- ;;
- pc98-*)
- basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- pentium | p5 | k5 | k6 | nexgen | viac3)
- basic_machine=i586-pc
- ;;
- pentiumpro | p6 | 6x86 | athlon | athlon_*)
- basic_machine=i686-pc
- ;;
- pentiumii | pentium2 | pentiumiii | pentium3)
- basic_machine=i686-pc
- ;;
- pentium4)
- basic_machine=i786-pc
- ;;
- pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
- basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- pentiumpro-* | p6-* | 6x86-* | athlon-*)
- basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
- basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- pentium4-*)
- basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- pn)
- basic_machine=pn-gould
- ;;
- power) basic_machine=power-ibm
- ;;
- ppc) basic_machine=powerpc-unknown
- ;;
- ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- ppcle | powerpclittle | ppc-le | powerpc-little)
- basic_machine=powerpcle-unknown
- ;;
- ppcle-* | powerpclittle-*)
- basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- ppc64) basic_machine=powerpc64-unknown
- ;;
- ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- ppc64le | powerpc64little | ppc64-le | powerpc64-little)
- basic_machine=powerpc64le-unknown
- ;;
- ppc64le-* | powerpc64little-*)
- basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- ps2)
- basic_machine=i386-ibm
- ;;
- pw32)
- basic_machine=i586-unknown
- os=-pw32
- ;;
- rdos)
- basic_machine=i386-pc
- os=-rdos
- ;;
- rom68k)
- basic_machine=m68k-rom68k
- os=-coff
- ;;
- rm[46]00)
- basic_machine=mips-siemens
- ;;
- rtpc | rtpc-*)
- basic_machine=romp-ibm
- ;;
- s390 | s390-*)
- basic_machine=s390-ibm
- ;;
- s390x | s390x-*)
- basic_machine=s390x-ibm
- ;;
- sa29200)
- basic_machine=a29k-amd
- os=-udi
- ;;
- sb1)
- basic_machine=mipsisa64sb1-unknown
- ;;
- sb1el)
- basic_machine=mipsisa64sb1el-unknown
- ;;
- sei)
- basic_machine=mips-sei
- os=-seiux
- ;;
- sequent)
- basic_machine=i386-sequent
- ;;
- sh)
- basic_machine=sh-hitachi
- os=-hms
- ;;
- sh64)
- basic_machine=sh64-unknown
- ;;
- sparclite-wrs | simso-wrs)
- basic_machine=sparclite-wrs
- os=-vxworks
- ;;
- sps7)
- basic_machine=m68k-bull
- os=-sysv2
- ;;
- spur)
- basic_machine=spur-unknown
- ;;
- st2000)
- basic_machine=m68k-tandem
- ;;
- stratus)
- basic_machine=i860-stratus
- os=-sysv4
- ;;
- sun2)
- basic_machine=m68000-sun
- ;;
- sun2os3)
- basic_machine=m68000-sun
- os=-sunos3
- ;;
- sun2os4)
- basic_machine=m68000-sun
- os=-sunos4
- ;;
- sun3os3)
- basic_machine=m68k-sun
- os=-sunos3
- ;;
- sun3os4)
- basic_machine=m68k-sun
- os=-sunos4
- ;;
- sun4os3)
- basic_machine=sparc-sun
- os=-sunos3
- ;;
- sun4os4)
- basic_machine=sparc-sun
- os=-sunos4
- ;;
- sun4sol2)
- basic_machine=sparc-sun
- os=-solaris2
- ;;
- sun3 | sun3-*)
- basic_machine=m68k-sun
- ;;
- sun4)
- basic_machine=sparc-sun
- ;;
- sun386 | sun386i | roadrunner)
- basic_machine=i386-sun
- ;;
- sv1)
- basic_machine=sv1-cray
- os=-unicos
- ;;
- symmetry)
- basic_machine=i386-sequent
- os=-dynix
- ;;
- t3e)
- basic_machine=alphaev5-cray
- os=-unicos
- ;;
- t90)
- basic_machine=t90-cray
- os=-unicos
- ;;
- tic54x | c54x*)
- basic_machine=tic54x-unknown
- os=-coff
- ;;
- tic55x | c55x*)
- basic_machine=tic55x-unknown
- os=-coff
- ;;
- tic6x | c6x*)
- basic_machine=tic6x-unknown
- os=-coff
- ;;
- tx39)
- basic_machine=mipstx39-unknown
- ;;
- tx39el)
- basic_machine=mipstx39el-unknown
- ;;
- toad1)
- basic_machine=pdp10-xkl
- os=-tops20
- ;;
- tower | tower-32)
- basic_machine=m68k-ncr
- ;;
- tpf)
- basic_machine=s390x-ibm
- os=-tpf
- ;;
- udi29k)
- basic_machine=a29k-amd
- os=-udi
- ;;
- ultra3)
- basic_machine=a29k-nyu
- os=-sym1
- ;;
- v810 | necv810)
- basic_machine=v810-nec
- os=-none
- ;;
- vaxv)
- basic_machine=vax-dec
- os=-sysv
- ;;
- vms)
- basic_machine=vax-dec
- os=-vms
- ;;
- vpp*|vx|vx-*)
- basic_machine=f301-fujitsu
- ;;
- vxworks960)
- basic_machine=i960-wrs
- os=-vxworks
- ;;
- vxworks68)
- basic_machine=m68k-wrs
- os=-vxworks
- ;;
- vxworks29k)
- basic_machine=a29k-wrs
- os=-vxworks
- ;;
- w65*)
- basic_machine=w65-wdc
- os=-none
- ;;
- w89k-*)
- basic_machine=hppa1.1-winbond
- os=-proelf
- ;;
- xbox)
- basic_machine=i686-pc
- os=-mingw32
- ;;
- xps | xps100)
- basic_machine=xps100-honeywell
- ;;
- ymp)
- basic_machine=ymp-cray
- os=-unicos
- ;;
- z8k-*-coff)
- basic_machine=z8k-unknown
- os=-sim
- ;;
- none)
- basic_machine=none-none
- os=-none
- ;;
-
-# Here we handle the default manufacturer of certain CPU types. It is in
-# some cases the only manufacturer, in others, it is the most popular.
- w89k)
- basic_machine=hppa1.1-winbond
- ;;
- op50n)
- basic_machine=hppa1.1-oki
- ;;
- op60c)
- basic_machine=hppa1.1-oki
- ;;
- romp)
- basic_machine=romp-ibm
- ;;
- mmix)
- basic_machine=mmix-knuth
- ;;
- rs6000)
- basic_machine=rs6000-ibm
- ;;
- vax)
- basic_machine=vax-dec
- ;;
- pdp10)
- # there are many clones, so DEC is not a safe bet
- basic_machine=pdp10-unknown
- ;;
- pdp11)
- basic_machine=pdp11-dec
- ;;
- we32k)
- basic_machine=we32k-att
- ;;
- sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele)
- basic_machine=sh-unknown
- ;;
- sparc | sparcv8 | sparcv9 | sparcv9b)
- basic_machine=sparc-sun
- ;;
- cydra)
- basic_machine=cydra-cydrome
- ;;
- orion)
- basic_machine=orion-highlevel
- ;;
- orion105)
- basic_machine=clipper-highlevel
- ;;
- mac | mpw | mac-mpw)
- basic_machine=m68k-apple
- ;;
- pmac | pmac-mpw)
- basic_machine=powerpc-apple
- ;;
- *-unknown)
- # Make sure to match an already-canonicalized machine name.
- ;;
- *)
- echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
- exit 1
- ;;
-esac
-
-# Here we canonicalize certain aliases for manufacturers.
-case $basic_machine in
- *-digital*)
- basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
- ;;
- *-commodore*)
- basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
- ;;
- *)
- ;;
-esac
-
-# Decode manufacturer-specific aliases for certain operating systems.
-
-if [ x"$os" != x"" ]
-then
-case $os in
- # First match some system type aliases
- # that might get confused with valid system types.
- # -solaris* is a basic system type, with this one exception.
- -solaris1 | -solaris1.*)
- os=`echo $os | sed -e 's|solaris1|sunos4|'`
- ;;
- -solaris)
- os=-solaris2
- ;;
- -svr4*)
- os=-sysv4
- ;;
- -unixware*)
- os=-sysv4.2uw
- ;;
- -gnu/linux*)
- os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
- ;;
- # First accept the basic system types.
- # The portable systems comes first.
- # Each alternative MUST END IN A *, to match a version number.
- # -sysv* is not here because it comes later, after sysvr4.
- -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
- | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\
- | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
- | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
- | -aos* \
- | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
- | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
- | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
- | -openbsd* | -solidbsd* \
- | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
- | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
- | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
- | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
- | -chorusos* | -chorusrdb* \
- | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
- | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \
- | -uxpv* | -beos* | -mpeix* | -udk* \
- | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
- | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
- | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
- | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
- | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
- | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
- | -skyos* | -haiku* | -rdos*)
- # Remember, each alternative MUST END IN *, to match a version number.
- ;;
- -qnx*)
- case $basic_machine in
- x86-* | i*86-*)
- ;;
- *)
- os=-nto$os
- ;;
- esac
- ;;
- -nto-qnx*)
- ;;
- -nto*)
- os=`echo $os | sed -e 's|nto|nto-qnx|'`
- ;;
- -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
- | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \
- | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
- ;;
- -mac*)
- os=`echo $os | sed -e 's|mac|macos|'`
- ;;
- -linux-dietlibc)
- os=-linux-dietlibc
- ;;
- -linux*)
- os=`echo $os | sed -e 's|linux|linux-gnu|'`
- ;;
- -sunos5*)
- os=`echo $os | sed -e 's|sunos5|solaris2|'`
- ;;
- -sunos6*)
- os=`echo $os | sed -e 's|sunos6|solaris3|'`
- ;;
- -opened*)
- os=-openedition
- ;;
- -os400*)
- os=-os400
- ;;
- -wince*)
- os=-wince
- ;;
- -osfrose*)
- os=-osfrose
- ;;
- -osf*)
- os=-osf
- ;;
- -utek*)
- os=-bsd
- ;;
- -dynix*)
- os=-bsd
- ;;
- -acis*)
- os=-aos
- ;;
- -atheos*)
- os=-atheos
- ;;
- -syllable*)
- os=-syllable
- ;;
- -386bsd)
- os=-bsd
- ;;
- -ctix* | -uts*)
- os=-sysv
- ;;
- -nova*)
- os=-rtmk-nova
- ;;
- -ns2 )
- os=-nextstep2
- ;;
- -nsk*)
- os=-nsk
- ;;
- # Preserve the version number of sinix5.
- -sinix5.*)
- os=`echo $os | sed -e 's|sinix|sysv|'`
- ;;
- -sinix*)
- os=-sysv4
- ;;
- -tpf*)
- os=-tpf
- ;;
- -triton*)
- os=-sysv3
- ;;
- -oss*)
- os=-sysv3
- ;;
- -svr4)
- os=-sysv4
- ;;
- -svr3)
- os=-sysv3
- ;;
- -sysvr4)
- os=-sysv4
- ;;
- # This must come after -sysvr4.
- -sysv*)
- ;;
- -ose*)
- os=-ose
- ;;
- -es1800*)
- os=-ose
- ;;
- -xenix)
- os=-xenix
- ;;
- -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
- os=-mint
- ;;
- -aros*)
- os=-aros
- ;;
- -kaos*)
- os=-kaos
- ;;
- -zvmoe)
- os=-zvmoe
- ;;
- -none)
- ;;
- *)
- # Get rid of the `-' at the beginning of $os.
- os=`echo $os | sed 's/[^-]*-//'`
- echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
- exit 1
- ;;
-esac
-else
-
-# Here we handle the default operating systems that come with various machines.
-# The value should be what the vendor currently ships out the door with their
-# machine or put another way, the most popular os provided with the machine.
-
-# Note that if you're going to try to match "-MANUFACTURER" here (say,
-# "-sun"), then you have to tell the case statement up towards the top
-# that MANUFACTURER isn't an operating system. Otherwise, code above
-# will signal an error saying that MANUFACTURER isn't an operating
-# system, and we'll never get to this point.
-
-case $basic_machine in
- *-acorn)
- os=-riscix1.2
- ;;
- arm*-rebel)
- os=-linux
- ;;
- arm*-semi)
- os=-aout
- ;;
- c4x-* | tic4x-*)
- os=-coff
- ;;
- # This must come before the *-dec entry.
- pdp10-*)
- os=-tops20
- ;;
- pdp11-*)
- os=-none
- ;;
- *-dec | vax-*)
- os=-ultrix4.2
- ;;
- m68*-apollo)
- os=-domain
- ;;
- i386-sun)
- os=-sunos4.0.2
- ;;
- m68000-sun)
- os=-sunos3
- # This also exists in the configure program, but was not the
- # default.
- # os=-sunos4
- ;;
- m68*-cisco)
- os=-aout
- ;;
- mips*-cisco)
- os=-elf
- ;;
- mips*-*)
- os=-elf
- ;;
- or32-*)
- os=-coff
- ;;
- *-tti) # must be before sparc entry or we get the wrong os.
- os=-sysv3
- ;;
- sparc-* | *-sun)
- os=-sunos4.1.1
- ;;
- *-be)
- os=-beos
- ;;
- *-haiku)
- os=-haiku
- ;;
- *-ibm)
- os=-aix
- ;;
- *-knuth)
- os=-mmixware
- ;;
- *-wec)
- os=-proelf
- ;;
- *-winbond)
- os=-proelf
- ;;
- *-oki)
- os=-proelf
- ;;
- *-hp)
- os=-hpux
- ;;
- *-hitachi)
- os=-hiux
- ;;
- i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
- os=-sysv
- ;;
- *-cbm)
- os=-amigaos
- ;;
- *-dg)
- os=-dgux
- ;;
- *-dolphin)
- os=-sysv3
- ;;
- m68k-ccur)
- os=-rtu
- ;;
- m88k-omron*)
- os=-luna
- ;;
- *-next )
- os=-nextstep
- ;;
- *-sequent)
- os=-ptx
- ;;
- *-crds)
- os=-unos
- ;;
- *-ns)
- os=-genix
- ;;
- i370-*)
- os=-mvs
- ;;
- *-next)
- os=-nextstep3
- ;;
- *-gould)
- os=-sysv
- ;;
- *-highlevel)
- os=-bsd
- ;;
- *-encore)
- os=-bsd
- ;;
- *-sgi)
- os=-irix
- ;;
- *-siemens)
- os=-sysv4
- ;;
- *-masscomp)
- os=-rtu
- ;;
- f30[01]-fujitsu | f700-fujitsu)
- os=-uxpv
- ;;
- *-rom68k)
- os=-coff
- ;;
- *-*bug)
- os=-coff
- ;;
- *-apple)
- os=-macos
- ;;
- *-atari*)
- os=-mint
- ;;
- *)
- os=-none
- ;;
-esac
-fi
-
-# Here we handle the case where we know the os, and the CPU type, but not the
-# manufacturer. We pick the logical manufacturer.
-vendor=unknown
-case $basic_machine in
- *-unknown)
- case $os in
- -riscix*)
- vendor=acorn
- ;;
- -sunos*)
- vendor=sun
- ;;
- -aix*)
- vendor=ibm
- ;;
- -beos*)
- vendor=be
- ;;
- -hpux*)
- vendor=hp
- ;;
- -mpeix*)
- vendor=hp
- ;;
- -hiux*)
- vendor=hitachi
- ;;
- -unos*)
- vendor=crds
- ;;
- -dgux*)
- vendor=dg
- ;;
- -luna*)
- vendor=omron
- ;;
- -genix*)
- vendor=ns
- ;;
- -mvs* | -opened*)
- vendor=ibm
- ;;
- -os400*)
- vendor=ibm
- ;;
- -ptx*)
- vendor=sequent
- ;;
- -tpf*)
- vendor=ibm
- ;;
- -vxsim* | -vxworks* | -windiss*)
- vendor=wrs
- ;;
- -aux*)
- vendor=apple
- ;;
- -hms*)
- vendor=hitachi
- ;;
- -mpw* | -macos*)
- vendor=apple
- ;;
- -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
- vendor=atari
- ;;
- -vos*)
- vendor=stratus
- ;;
- esac
- basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
- ;;
-esac
-
-echo $basic_machine$os
-exit
-
-# Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "timestamp='"
-# time-stamp-format: "%:y-%02m-%02d"
-# time-stamp-end: "'"
-# End:
diff --git a/libs/libsndfile/configure b/libs/libsndfile/configure
deleted file mode 100755
index bfa95c3aac..0000000000
--- a/libs/libsndfile/configure
+++ /dev/null
@@ -1,13933 +0,0 @@
-#! /bin/sh
-# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.59 for libsndfile ardour-special.
-#
-# Report bugs to <ardour@ardour.org>.
-#
-# Copyright (C) 2003 Free Software Foundation, Inc.
-# This configure script is free software; the Free Software Foundation
-# gives unlimited permission to copy, distribute and modify it.
-## --------------------- ##
-## M4sh Initialization. ##
-## --------------------- ##
-
-# Be Bourne compatible
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
- emulate sh
- NULLCMD=:
- # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
- # is contrary to our usage. Disable this feature.
- alias -g '${1+"$@"}'='"$@"'
-elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
- set -o posix
-fi
-DUALCASE=1; export DUALCASE # for MKS sh
-
-# Support unset when possible.
-if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
- as_unset=unset
-else
- as_unset=false
-fi
-
-
-# Work around bugs in pre-3.0 UWIN ksh.
-$as_unset ENV MAIL MAILPATH
-PS1='$ '
-PS2='> '
-PS4='+ '
-
-# NLS nuisances.
-for as_var in \
- LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
- LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
- LC_TELEPHONE LC_TIME
-do
- if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
- eval $as_var=C; export $as_var
- else
- $as_unset $as_var
- fi
-done
-
-# Required to use basename.
-if expr a : '\(a\)' >/dev/null 2>&1; then
- as_expr=expr
-else
- as_expr=false
-fi
-
-if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then
- as_basename=basename
-else
- as_basename=false
-fi
-
-
-# Name of the executable.
-as_me=`$as_basename "$0" ||
-$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
- X"$0" : 'X\(//\)$' \| \
- X"$0" : 'X\(/\)$' \| \
- . : '\(.\)' 2>/dev/null ||
-echo X/"$0" |
- sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
- /^X\/\(\/\/\)$/{ s//\1/; q; }
- /^X\/\(\/\).*/{ s//\1/; q; }
- s/.*/./; q'`
-
-
-# PATH needs CR, and LINENO needs CR and PATH.
-# Avoid depending upon Character Ranges.
-as_cr_letters='abcdefghijklmnopqrstuvwxyz'
-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-as_cr_Letters=$as_cr_letters$as_cr_LETTERS
-as_cr_digits='0123456789'
-as_cr_alnum=$as_cr_Letters$as_cr_digits
-
-# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
- echo "#! /bin/sh" >conf$$.sh
- echo "exit 0" >>conf$$.sh
- chmod +x conf$$.sh
- if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
- PATH_SEPARATOR=';'
- else
- PATH_SEPARATOR=:
- fi
- rm -f conf$$.sh
-fi
-
-
- as_lineno_1=$LINENO
- as_lineno_2=$LINENO
- as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
- test "x$as_lineno_1" != "x$as_lineno_2" &&
- test "x$as_lineno_3" = "x$as_lineno_2" || {
- # Find who we are. Look in the path if we contain no path at all
- # relative or not.
- case $0 in
- *[\\/]* ) as_myself=$0 ;;
- *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
-done
-
- ;;
- esac
- # We did not find ourselves, most probably we were run as `sh COMMAND'
- # in which case we are not to be found in the path.
- if test "x$as_myself" = x; then
- as_myself=$0
- fi
- if test ! -f "$as_myself"; then
- { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2
- { (exit 1); exit 1; }; }
- fi
- case $CONFIG_SHELL in
- '')
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for as_base in sh bash ksh sh5; do
- case $as_dir in
- /*)
- if ("$as_dir/$as_base" -c '
- as_lineno_1=$LINENO
- as_lineno_2=$LINENO
- as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
- test "x$as_lineno_1" != "x$as_lineno_2" &&
- test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then
- $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; }
- $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; }
- CONFIG_SHELL=$as_dir/$as_base
- export CONFIG_SHELL
- exec "$CONFIG_SHELL" "$0" ${1+"$@"}
- fi;;
- esac
- done
-done
-;;
- esac
-
- # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
- # uniformly replaced by the line number. The first 'sed' inserts a
- # line-number line before each line; the second 'sed' does the real
- # work. The second script uses 'N' to pair each line-number line
- # with the numbered line, and appends trailing '-' during
- # substitution so that $LINENO is not a special case at line end.
- # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
- # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-)
- sed '=' <$as_myself |
- sed '
- N
- s,$,-,
- : loop
- s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
- t loop
- s,-$,,
- s,^['$as_cr_digits']*\n,,
- ' >$as_me.lineno &&
- chmod +x $as_me.lineno ||
- { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
- { (exit 1); exit 1; }; }
-
- # Don't try to exec as it changes $[0], causing all sort of problems
- # (the dirname of $[0] is not the place where we might find the
- # original and so on. Autoconf is especially sensible to this).
- . ./$as_me.lineno
- # Exit status is that of the last command.
- exit
-}
-
-
-case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
- *c*,-n*) ECHO_N= ECHO_C='
-' ECHO_T=' ' ;;
- *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;;
- *) ECHO_N= ECHO_C='\c' ECHO_T= ;;
-esac
-
-if expr a : '\(a\)' >/dev/null 2>&1; then
- as_expr=expr
-else
- as_expr=false
-fi
-
-rm -f conf$$ conf$$.exe conf$$.file
-echo >conf$$.file
-if ln -s conf$$.file conf$$ 2>/dev/null; then
- # We could just check for DJGPP; but this test a) works b) is more generic
- # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
- if test -f conf$$.exe; then
- # Don't use ln at all; we don't have any links
- as_ln_s='cp -p'
- else
- as_ln_s='ln -s'
- fi
-elif ln conf$$.file conf$$ 2>/dev/null; then
- as_ln_s=ln
-else
- as_ln_s='cp -p'
-fi
-rm -f conf$$ conf$$.exe conf$$.file
-
-if mkdir -p . 2>/dev/null; then
- as_mkdir_p=:
-else
- test -d ./-p && rmdir ./-p
- as_mkdir_p=false
-fi
-
-as_executable_p="test -f"
-
-# Sed expression to map a string onto a valid CPP name.
-as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
-
-# Sed expression to map a string onto a valid variable name.
-as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
-
-
-# IFS
-# We need space, tab and new line, in precisely that order.
-as_nl='
-'
-IFS=" $as_nl"
-
-# CDPATH.
-$as_unset CDPATH
-
-
-# Name of the host.
-# hostname on some systems (SVR3.2, Linux) returns a bogus exit status,
-# so uname gets run too.
-ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
-
-exec 6>&1
-
-#
-# Initializations.
-#
-ac_default_prefix=/usr/local
-ac_config_libobj_dir=.
-cross_compiling=no
-subdirs=
-MFLAGS=
-MAKEFLAGS=
-SHELL=${CONFIG_SHELL-/bin/sh}
-
-# Maximum number of lines to put in a shell here document.
-# This variable seems obsolete. It should probably be removed, and
-# only ac_max_sed_lines should be used.
-: ${ac_max_here_lines=38}
-
-# Identity of this package.
-PACKAGE_NAME='libsndfile'
-PACKAGE_TARNAME='libsndfile'
-PACKAGE_VERSION='ardour-special'
-PACKAGE_STRING='libsndfile ardour-special'
-PACKAGE_BUGREPORT='ardour@ardour.org'
-
-ac_unique_file="src/sndfile.c"
-# Factoring default headers for most tests.
-ac_includes_default="\
-#include <stdio.h>
-#if HAVE_SYS_TYPES_H
-# include <sys/types.h>
-#endif
-#if HAVE_SYS_STAT_H
-# include <sys/stat.h>
-#endif
-#if STDC_HEADERS
-# include <stdlib.h>
-# include <stddef.h>
-#else
-# if HAVE_STDLIB_H
-# include <stdlib.h>
-# endif
-#endif
-#if HAVE_STRING_H
-# if !STDC_HEADERS && HAVE_MEMORY_H
-# include <memory.h>
-# endif
-# include <string.h>
-#endif
-#if HAVE_STRINGS_H
-# include <strings.h>
-#endif
-#if HAVE_INTTYPES_H
-# include <inttypes.h>
-#else
-# if HAVE_STDINT_H
-# include <stdint.h>
-# endif
-#endif
-#if HAVE_UNISTD_H
-# include <unistd.h>
-#endif"
-
-ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT autogen INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA LN_S CPP EGREP GETCONF ac_ct_GETCONF TYPEOF_SF_COUNT_T SIZEOF_SF_COUNT_T SF_COUNT_MAX PKG_CONFIG SQLITE3_CFLAGS SQLITE3_LIBS htmldocdir HTML_BGCOLOUR HTML_FGCOLOUR SHLIB_VERSION_ARG SHARED_VERSION_INFO OS_SPECIFIC_CFLAGS OS_SPECIFIC_LINKS ALSA_LIBS FLAC_LIBS ENABLE_EXPERIMENTAL_CODE COMPILER_IS_GCC GCC_MAJOR_VERSION LIBTOOL_DEPS LIBOBJS LTLIBOBJS'
-ac_subst_files=''
-
-# Initialize some variables set by options.
-ac_init_help=
-ac_init_version=false
-# The variables have the same names as the options, with
-# dashes changed to underlines.
-cache_file=/dev/null
-exec_prefix=NONE
-no_create=
-no_recursion=
-prefix=NONE
-program_prefix=NONE
-program_suffix=NONE
-program_transform_name=s,x,x,
-silent=
-site=
-srcdir=
-verbose=
-x_includes=NONE
-x_libraries=NONE
-
-# Installation directory options.
-# These are left unexpanded so users can "make install exec_prefix=/foo"
-# and all the variables that are supposed to be based on exec_prefix
-# by default will actually change.
-# Use braces instead of parens because sh, perl, etc. also accept them.
-bindir='${exec_prefix}/bin'
-sbindir='${exec_prefix}/sbin'
-libexecdir='${exec_prefix}/libexec'
-datadir='${prefix}/share'
-sysconfdir='${prefix}/etc'
-sharedstatedir='${prefix}/com'
-localstatedir='${prefix}/var'
-libdir='${exec_prefix}/lib'
-includedir='${prefix}/include'
-oldincludedir='/usr/include'
-infodir='${prefix}/info'
-mandir='${prefix}/man'
-
-ac_prev=
-for ac_option
-do
- # If the previous option needs an argument, assign it.
- if test -n "$ac_prev"; then
- eval "$ac_prev=\$ac_option"
- ac_prev=
- continue
- fi
-
- ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'`
-
- # Accept the important Cygnus configure options, so we can diagnose typos.
-
- case $ac_option in
-
- -bindir | --bindir | --bindi | --bind | --bin | --bi)
- ac_prev=bindir ;;
- -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
- bindir=$ac_optarg ;;
-
- -build | --build | --buil | --bui | --bu)
- ac_prev=build_alias ;;
- -build=* | --build=* | --buil=* | --bui=* | --bu=*)
- build_alias=$ac_optarg ;;
-
- -cache-file | --cache-file | --cache-fil | --cache-fi \
- | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
- ac_prev=cache_file ;;
- -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
- | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
- cache_file=$ac_optarg ;;
-
- --config-cache | -C)
- cache_file=config.cache ;;
-
- -datadir | --datadir | --datadi | --datad | --data | --dat | --da)
- ac_prev=datadir ;;
- -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
- | --da=*)
- datadir=$ac_optarg ;;
-
- -disable-* | --disable-*)
- ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
- # Reject names that are not valid shell variable names.
- expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
- { echo "$as_me: error: invalid feature name: $ac_feature" >&2
- { (exit 1); exit 1; }; }
- ac_feature=`echo $ac_feature | sed 's/-/_/g'`
- eval "enable_$ac_feature=no" ;;
-
- -enable-* | --enable-*)
- ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
- # Reject names that are not valid shell variable names.
- expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
- { echo "$as_me: error: invalid feature name: $ac_feature" >&2
- { (exit 1); exit 1; }; }
- ac_feature=`echo $ac_feature | sed 's/-/_/g'`
- case $ac_option in
- *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
- *) ac_optarg=yes ;;
- esac
- eval "enable_$ac_feature='$ac_optarg'" ;;
-
- -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
- | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
- | --exec | --exe | --ex)
- ac_prev=exec_prefix ;;
- -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
- | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
- | --exec=* | --exe=* | --ex=*)
- exec_prefix=$ac_optarg ;;
-
- -gas | --gas | --ga | --g)
- # Obsolete; use --with-gas.
- with_gas=yes ;;
-
- -help | --help | --hel | --he | -h)
- ac_init_help=long ;;
- -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
- ac_init_help=recursive ;;
- -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
- ac_init_help=short ;;
-
- -host | --host | --hos | --ho)
- ac_prev=host_alias ;;
- -host=* | --host=* | --hos=* | --ho=*)
- host_alias=$ac_optarg ;;
-
- -includedir | --includedir | --includedi | --included | --include \
- | --includ | --inclu | --incl | --inc)
- ac_prev=includedir ;;
- -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
- | --includ=* | --inclu=* | --incl=* | --inc=*)
- includedir=$ac_optarg ;;
-
- -infodir | --infodir | --infodi | --infod | --info | --inf)
- ac_prev=infodir ;;
- -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
- infodir=$ac_optarg ;;
-
- -libdir | --libdir | --libdi | --libd)
- ac_prev=libdir ;;
- -libdir=* | --libdir=* | --libdi=* | --libd=*)
- libdir=$ac_optarg ;;
-
- -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
- | --libexe | --libex | --libe)
- ac_prev=libexecdir ;;
- -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
- | --libexe=* | --libex=* | --libe=*)
- libexecdir=$ac_optarg ;;
-
- -localstatedir | --localstatedir | --localstatedi | --localstated \
- | --localstate | --localstat | --localsta | --localst \
- | --locals | --local | --loca | --loc | --lo)
- ac_prev=localstatedir ;;
- -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
- | --localstate=* | --localstat=* | --localsta=* | --localst=* \
- | --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
- localstatedir=$ac_optarg ;;
-
- -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
- ac_prev=mandir ;;
- -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
- mandir=$ac_optarg ;;
-
- -nfp | --nfp | --nf)
- # Obsolete; use --without-fp.
- with_fp=no ;;
-
- -no-create | --no-create | --no-creat | --no-crea | --no-cre \
- | --no-cr | --no-c | -n)
- no_create=yes ;;
-
- -no-recursion | --no-recursion | --no-recursio | --no-recursi \
- | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
- no_recursion=yes ;;
-
- -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
- | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
- | --oldin | --oldi | --old | --ol | --o)
- ac_prev=oldincludedir ;;
- -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
- | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
- | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
- oldincludedir=$ac_optarg ;;
-
- -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
- ac_prev=prefix ;;
- -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
- prefix=$ac_optarg ;;
-
- -program-prefix | --program-prefix | --program-prefi | --program-pref \
- | --program-pre | --program-pr | --program-p)
- ac_prev=program_prefix ;;
- -program-prefix=* | --program-prefix=* | --program-prefi=* \
- | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
- program_prefix=$ac_optarg ;;
-
- -program-suffix | --program-suffix | --program-suffi | --program-suff \
- | --program-suf | --program-su | --program-s)
- ac_prev=program_suffix ;;
- -program-suffix=* | --program-suffix=* | --program-suffi=* \
- | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
- program_suffix=$ac_optarg ;;
-
- -program-transform-name | --program-transform-name \
- | --program-transform-nam | --program-transform-na \
- | --program-transform-n | --program-transform- \
- | --program-transform | --program-transfor \
- | --program-transfo | --program-transf \
- | --program-trans | --program-tran \
- | --progr-tra | --program-tr | --program-t)
- ac_prev=program_transform_name ;;
- -program-transform-name=* | --program-transform-name=* \
- | --program-transform-nam=* | --program-transform-na=* \
- | --program-transform-n=* | --program-transform-=* \
- | --program-transform=* | --program-transfor=* \
- | --program-transfo=* | --program-transf=* \
- | --program-trans=* | --program-tran=* \
- | --progr-tra=* | --program-tr=* | --program-t=*)
- program_transform_name=$ac_optarg ;;
-
- -q | -quiet | --quiet | --quie | --qui | --qu | --q \
- | -silent | --silent | --silen | --sile | --sil)
- silent=yes ;;
-
- -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
- ac_prev=sbindir ;;
- -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
- | --sbi=* | --sb=*)
- sbindir=$ac_optarg ;;
-
- -sharedstatedir | --sharedstatedir | --sharedstatedi \
- | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
- | --sharedst | --shareds | --shared | --share | --shar \
- | --sha | --sh)
- ac_prev=sharedstatedir ;;
- -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
- | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
- | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
- | --sha=* | --sh=*)
- sharedstatedir=$ac_optarg ;;
-
- -site | --site | --sit)
- ac_prev=site ;;
- -site=* | --site=* | --sit=*)
- site=$ac_optarg ;;
-
- -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
- ac_prev=srcdir ;;
- -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
- srcdir=$ac_optarg ;;
-
- -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
- | --syscon | --sysco | --sysc | --sys | --sy)
- ac_prev=sysconfdir ;;
- -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
- | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
- sysconfdir=$ac_optarg ;;
-
- -target | --target | --targe | --targ | --tar | --ta | --t)
- ac_prev=target_alias ;;
- -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
- target_alias=$ac_optarg ;;
-
- -v | -verbose | --verbose | --verbos | --verbo | --verb)
- verbose=yes ;;
-
- -version | --version | --versio | --versi | --vers | -V)
- ac_init_version=: ;;
-
- -with-* | --with-*)
- ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
- # Reject names that are not valid shell variable names.
- expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
- { echo "$as_me: error: invalid package name: $ac_package" >&2
- { (exit 1); exit 1; }; }
- ac_package=`echo $ac_package| sed 's/-/_/g'`
- case $ac_option in
- *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
- *) ac_optarg=yes ;;
- esac
- eval "with_$ac_package='$ac_optarg'" ;;
-
- -without-* | --without-*)
- ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'`
- # Reject names that are not valid shell variable names.
- expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
- { echo "$as_me: error: invalid package name: $ac_package" >&2
- { (exit 1); exit 1; }; }
- ac_package=`echo $ac_package | sed 's/-/_/g'`
- eval "with_$ac_package=no" ;;
-
- --x)
- # Obsolete; use --with-x.
- with_x=yes ;;
-
- -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
- | --x-incl | --x-inc | --x-in | --x-i)
- ac_prev=x_includes ;;
- -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
- | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
- x_includes=$ac_optarg ;;
-
- -x-libraries | --x-libraries | --x-librarie | --x-librari \
- | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
- ac_prev=x_libraries ;;
- -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
- | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
- x_libraries=$ac_optarg ;;
-
- -*) { echo "$as_me: error: unrecognized option: $ac_option
-Try \`$0 --help' for more information." >&2
- { (exit 1); exit 1; }; }
- ;;
-
- *=*)
- ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
- # Reject names that are not valid shell variable names.
- expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null &&
- { echo "$as_me: error: invalid variable name: $ac_envvar" >&2
- { (exit 1); exit 1; }; }
- ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`
- eval "$ac_envvar='$ac_optarg'"
- export $ac_envvar ;;
-
- *)
- # FIXME: should be removed in autoconf 3.0.
- echo "$as_me: WARNING: you should use --build, --host, --target" >&2
- expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
- echo "$as_me: WARNING: invalid host type: $ac_option" >&2
- : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}
- ;;
-
- esac
-done
-
-if test -n "$ac_prev"; then
- ac_option=--`echo $ac_prev | sed 's/_/-/g'`
- { echo "$as_me: error: missing argument to $ac_option" >&2
- { (exit 1); exit 1; }; }
-fi
-
-# Be sure to have absolute paths.
-for ac_var in exec_prefix prefix
-do
- eval ac_val=$`echo $ac_var`
- case $ac_val in
- [\\/$]* | ?:[\\/]* | NONE | '' ) ;;
- *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
- { (exit 1); exit 1; }; };;
- esac
-done
-
-# Be sure to have absolute paths.
-for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \
- localstatedir libdir includedir oldincludedir infodir mandir
-do
- eval ac_val=$`echo $ac_var`
- case $ac_val in
- [\\/$]* | ?:[\\/]* ) ;;
- *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
- { (exit 1); exit 1; }; };;
- esac
-done
-
-# There might be people who depend on the old broken behavior: `$host'
-# used to hold the argument of --host etc.
-# FIXME: To remove some day.
-build=$build_alias
-host=$host_alias
-target=$target_alias
-
-# FIXME: To remove some day.
-if test "x$host_alias" != x; then
- if test "x$build_alias" = x; then
- cross_compiling=maybe
- echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.
- If a cross compiler is detected then cross compile mode will be used." >&2
- elif test "x$build_alias" != "x$host_alias"; then
- cross_compiling=yes
- fi
-fi
-
-ac_tool_prefix=
-test -n "$host_alias" && ac_tool_prefix=$host_alias-
-
-test "$silent" = yes && exec 6>/dev/null
-
-
-# Find the source files, if location was not specified.
-if test -z "$srcdir"; then
- ac_srcdir_defaulted=yes
- # Try the directory containing this script, then its parent.
- ac_confdir=`(dirname "$0") 2>/dev/null ||
-$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$0" : 'X\(//\)[^/]' \| \
- X"$0" : 'X\(//\)$' \| \
- X"$0" : 'X\(/\)' \| \
- . : '\(.\)' 2>/dev/null ||
-echo X"$0" |
- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
- /^X\(\/\/\)[^/].*/{ s//\1/; q; }
- /^X\(\/\/\)$/{ s//\1/; q; }
- /^X\(\/\).*/{ s//\1/; q; }
- s/.*/./; q'`
- srcdir=$ac_confdir
- if test ! -r $srcdir/$ac_unique_file; then
- srcdir=..
- fi
-else
- ac_srcdir_defaulted=no
-fi
-if test ! -r $srcdir/$ac_unique_file; then
- if test "$ac_srcdir_defaulted" = yes; then
- { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2
- { (exit 1); exit 1; }; }
- else
- { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2
- { (exit 1); exit 1; }; }
- fi
-fi
-(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null ||
- { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2
- { (exit 1); exit 1; }; }
-srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'`
-ac_env_build_alias_set=${build_alias+set}
-ac_env_build_alias_value=$build_alias
-ac_cv_env_build_alias_set=${build_alias+set}
-ac_cv_env_build_alias_value=$build_alias
-ac_env_host_alias_set=${host_alias+set}
-ac_env_host_alias_value=$host_alias
-ac_cv_env_host_alias_set=${host_alias+set}
-ac_cv_env_host_alias_value=$host_alias
-ac_env_target_alias_set=${target_alias+set}
-ac_env_target_alias_value=$target_alias
-ac_cv_env_target_alias_set=${target_alias+set}
-ac_cv_env_target_alias_value=$target_alias
-ac_env_CC_set=${CC+set}
-ac_env_CC_value=$CC
-ac_cv_env_CC_set=${CC+set}
-ac_cv_env_CC_value=$CC
-ac_env_CFLAGS_set=${CFLAGS+set}
-ac_env_CFLAGS_value=$CFLAGS
-ac_cv_env_CFLAGS_set=${CFLAGS+set}
-ac_cv_env_CFLAGS_value=$CFLAGS
-ac_env_LDFLAGS_set=${LDFLAGS+set}
-ac_env_LDFLAGS_value=$LDFLAGS
-ac_cv_env_LDFLAGS_set=${LDFLAGS+set}
-ac_cv_env_LDFLAGS_value=$LDFLAGS
-ac_env_CPPFLAGS_set=${CPPFLAGS+set}
-ac_env_CPPFLAGS_value=$CPPFLAGS
-ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set}
-ac_cv_env_CPPFLAGS_value=$CPPFLAGS
-ac_env_CPP_set=${CPP+set}
-ac_env_CPP_value=$CPP
-ac_cv_env_CPP_set=${CPP+set}
-ac_cv_env_CPP_value=$CPP
-
-#
-# Report the --help message.
-#
-if test "$ac_init_help" = "long"; then
- # Omit some internal or obsolete options to make the list less imposing.
- # This message is too long to be a string in the A/UX 3.1 sh.
- cat <<_ACEOF
-\`configure' configures libsndfile ardour-special to adapt to many kinds of systems.
-
-Usage: $0 [OPTION]... [VAR=VALUE]...
-
-To assign environment variables (e.g., CC, CFLAGS...), specify them as
-VAR=VALUE. See below for descriptions of some of the useful variables.
-
-Defaults for the options are specified in brackets.
-
-Configuration:
- -h, --help display this help and exit
- --help=short display options specific to this package
- --help=recursive display the short help of all the included packages
- -V, --version display version information and exit
- -q, --quiet, --silent do not print \`checking...' messages
- --cache-file=FILE cache test results in FILE [disabled]
- -C, --config-cache alias for \`--cache-file=config.cache'
- -n, --no-create do not create output files
- --srcdir=DIR find the sources in DIR [configure dir or \`..']
-
-_ACEOF
-
- cat <<_ACEOF
-Installation directories:
- --prefix=PREFIX install architecture-independent files in PREFIX
- [$ac_default_prefix]
- --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
- [PREFIX]
-
-By default, \`make install' will install all the files in
-\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify
-an installation prefix other than \`$ac_default_prefix' using \`--prefix',
-for instance \`--prefix=\$HOME'.
-
-For better control, use the options below.
-
-Fine tuning of the installation directories:
- --bindir=DIR user executables [EPREFIX/bin]
- --sbindir=DIR system admin executables [EPREFIX/sbin]
- --libexecdir=DIR program executables [EPREFIX/libexec]
- --datadir=DIR read-only architecture-independent data [PREFIX/share]
- --sysconfdir=DIR read-only single-machine data [PREFIX/etc]
- --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
- --localstatedir=DIR modifiable single-machine data [PREFIX/var]
- --libdir=DIR object code libraries [EPREFIX/lib]
- --includedir=DIR C header files [PREFIX/include]
- --oldincludedir=DIR C header files for non-gcc [/usr/include]
- --infodir=DIR info documentation [PREFIX/info]
- --mandir=DIR man documentation [PREFIX/man]
-_ACEOF
-
- cat <<\_ACEOF
-
-System types:
- --build=BUILD configure for building on BUILD [guessed]
- --host=HOST cross-compile to build programs to run on HOST [BUILD]
- --target=TARGET configure for building compilers for TARGET [HOST]
-_ACEOF
-fi
-
-if test -n "$ac_init_help"; then
- case $ac_init_help in
- short | recursive ) echo "Configuration of libsndfile ardour-special:";;
- esac
- cat <<\_ACEOF
-
-Optional Features:
- --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
- --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
- --enable-experimental enable experimental code
- --enable-gcc-werror enable -Werror in all Makefiles
- --disable-gcc-pipe disable gcc -pipe option
- --disable-gcc-opt disable gcc optimisations
- --disable-cpu-clip disable tricky cpu specific clipper
- --enable-bow-docs enable black-on-white html docs
- --disable-sqlite disable use of sqlite
- --disable-flac disable use of FLAC
- --disable-alsa disable use of ALSA
- --disable-largefile omit support for large files
-
-Some influential environment variables:
- CC C compiler command
- CFLAGS C compiler flags
- LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a
- nonstandard directory <lib dir>
- CPPFLAGS C/C++ preprocessor flags, e.g. -I<include dir> if you have
- headers in a nonstandard directory <include dir>
- CPP C preprocessor
-
-Use these variables to override the choices made by `configure' or to help
-it to find libraries and programs with nonstandard names/locations.
-
-Report bugs to <ardour@ardour.org>.
-_ACEOF
-fi
-
-if test "$ac_init_help" = "recursive"; then
- # If there are subdirs, report their specific --help.
- ac_popdir=`pwd`
- for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
- test -d $ac_dir || continue
- ac_builddir=.
-
-if test "$ac_dir" != .; then
- ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
- # A "../" for each directory in $ac_dir_suffix.
- ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
-else
- ac_dir_suffix= ac_top_builddir=
-fi
-
-case $srcdir in
- .) # No --srcdir option. We are building in place.
- ac_srcdir=.
- if test -z "$ac_top_builddir"; then
- ac_top_srcdir=.
- else
- ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
- fi ;;
- [\\/]* | ?:[\\/]* ) # Absolute path.
- ac_srcdir=$srcdir$ac_dir_suffix;
- ac_top_srcdir=$srcdir ;;
- *) # Relative path.
- ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
- ac_top_srcdir=$ac_top_builddir$srcdir ;;
-esac
-
-# Do not use `cd foo && pwd` to compute absolute paths, because
-# the directories may not exist.
-case `pwd` in
-.) ac_abs_builddir="$ac_dir";;
-*)
- case "$ac_dir" in
- .) ac_abs_builddir=`pwd`;;
- [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
- *) ac_abs_builddir=`pwd`/"$ac_dir";;
- esac;;
-esac
-case $ac_abs_builddir in
-.) ac_abs_top_builddir=${ac_top_builddir}.;;
-*)
- case ${ac_top_builddir}. in
- .) ac_abs_top_builddir=$ac_abs_builddir;;
- [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
- *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
- esac;;
-esac
-case $ac_abs_builddir in
-.) ac_abs_srcdir=$ac_srcdir;;
-*)
- case $ac_srcdir in
- .) ac_abs_srcdir=$ac_abs_builddir;;
- [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
- *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
- esac;;
-esac
-case $ac_abs_builddir in
-.) ac_abs_top_srcdir=$ac_top_srcdir;;
-*)
- case $ac_top_srcdir in
- .) ac_abs_top_srcdir=$ac_abs_builddir;;
- [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
- *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
- esac;;
-esac
-
- cd $ac_dir
- # Check for guested configure; otherwise get Cygnus style configure.
- if test -f $ac_srcdir/configure.gnu; then
- echo
- $SHELL $ac_srcdir/configure.gnu --help=recursive
- elif test -f $ac_srcdir/configure; then
- echo
- $SHELL $ac_srcdir/configure --help=recursive
- elif test -f $ac_srcdir/configure.ac ||
- test -f $ac_srcdir/configure.in; then
- echo
- $ac_configure --help
- else
- echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
- fi
- cd $ac_popdir
- done
-fi
-
-test -n "$ac_init_help" && exit 0
-if $ac_init_version; then
- cat <<\_ACEOF
-libsndfile configure ardour-special
-generated by GNU Autoconf 2.59
-
-Copyright (C) 2003 Free Software Foundation, Inc.
-This configure script is free software; the Free Software Foundation
-gives unlimited permission to copy, distribute and modify it.
-_ACEOF
- exit 0
-fi
-exec 5>config.log
-cat >&5 <<_ACEOF
-This file contains any messages produced by compilers while
-running configure, to aid debugging if configure makes a mistake.
-
-It was created by libsndfile $as_me ardour-special, which was
-generated by GNU Autoconf 2.59. Invocation command line was
-
- $ $0 $@
-
-_ACEOF
-{
-cat <<_ASUNAME
-## --------- ##
-## Platform. ##
-## --------- ##
-
-hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
-uname -m = `(uname -m) 2>/dev/null || echo unknown`
-uname -r = `(uname -r) 2>/dev/null || echo unknown`
-uname -s = `(uname -s) 2>/dev/null || echo unknown`
-uname -v = `(uname -v) 2>/dev/null || echo unknown`
-
-/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
-/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown`
-
-/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown`
-/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown`
-/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
-hostinfo = `(hostinfo) 2>/dev/null || echo unknown`
-/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown`
-/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown`
-/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown`
-
-_ASUNAME
-
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- echo "PATH: $as_dir"
-done
-
-} >&5
-
-cat >&5 <<_ACEOF
-
-
-## ----------- ##
-## Core tests. ##
-## ----------- ##
-
-_ACEOF
-
-
-# Keep a trace of the command line.
-# Strip out --no-create and --no-recursion so they do not pile up.
-# Strip out --silent because we don't want to record it for future runs.
-# Also quote any args containing shell meta-characters.
-# Make two passes to allow for proper duplicate-argument suppression.
-ac_configure_args=
-ac_configure_args0=
-ac_configure_args1=
-ac_sep=
-ac_must_keep_next=false
-for ac_pass in 1 2
-do
- for ac_arg
- do
- case $ac_arg in
- -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
- -q | -quiet | --quiet | --quie | --qui | --qu | --q \
- | -silent | --silent | --silen | --sile | --sil)
- continue ;;
- *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)
- ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
- esac
- case $ac_pass in
- 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;;
- 2)
- ac_configure_args1="$ac_configure_args1 '$ac_arg'"
- if test $ac_must_keep_next = true; then
- ac_must_keep_next=false # Got value, back to normal.
- else
- case $ac_arg in
- *=* | --config-cache | -C | -disable-* | --disable-* \
- | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
- | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
- | -with-* | --with-* | -without-* | --without-* | --x)
- case "$ac_configure_args0 " in
- "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
- esac
- ;;
- -* ) ac_must_keep_next=true ;;
- esac
- fi
- ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'"
- # Get rid of the leading space.
- ac_sep=" "
- ;;
- esac
- done
-done
-$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; }
-$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; }
-
-# When interrupted or exit'd, cleanup temporary files, and complete
-# config.log. We remove comments because anyway the quotes in there
-# would cause problems or look ugly.
-# WARNING: Be sure not to use single quotes in there, as some shells,
-# such as our DU 5.0 friend, will then `close' the trap.
-trap 'exit_status=$?
- # Save into config.log some information that might help in debugging.
- {
- echo
-
- cat <<\_ASBOX
-## ---------------- ##
-## Cache variables. ##
-## ---------------- ##
-_ASBOX
- echo
- # The following way of writing the cache mishandles newlines in values,
-{
- (set) 2>&1 |
- case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in
- *ac_space=\ *)
- sed -n \
- "s/'"'"'/'"'"'\\\\'"'"''"'"'/g;
- s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p"
- ;;
- *)
- sed -n \
- "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
- ;;
- esac;
-}
- echo
-
- cat <<\_ASBOX
-## ----------------- ##
-## Output variables. ##
-## ----------------- ##
-_ASBOX
- echo
- for ac_var in $ac_subst_vars
- do
- eval ac_val=$`echo $ac_var`
- echo "$ac_var='"'"'$ac_val'"'"'"
- done | sort
- echo
-
- if test -n "$ac_subst_files"; then
- cat <<\_ASBOX
-## ------------- ##
-## Output files. ##
-## ------------- ##
-_ASBOX
- echo
- for ac_var in $ac_subst_files
- do
- eval ac_val=$`echo $ac_var`
- echo "$ac_var='"'"'$ac_val'"'"'"
- done | sort
- echo
- fi
-
- if test -s confdefs.h; then
- cat <<\_ASBOX
-## ----------- ##
-## confdefs.h. ##
-## ----------- ##
-_ASBOX
- echo
- sed "/^$/d" confdefs.h | sort
- echo
- fi
- test "$ac_signal" != 0 &&
- echo "$as_me: caught signal $ac_signal"
- echo "$as_me: exit $exit_status"
- } >&5
- rm -f core *.core &&
- rm -rf conftest* confdefs* conf$$* $ac_clean_files &&
- exit $exit_status
- ' 0
-for ac_signal in 1 2 13 15; do
- trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal
-done
-ac_signal=0
-
-# confdefs.h avoids OS command line length limits that DEFS can exceed.
-rm -rf conftest* confdefs.h
-# AIX cpp loses on an empty file, so make sure it contains at least a newline.
-echo >confdefs.h
-
-# Predefined preprocessor variables.
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_NAME "$PACKAGE_NAME"
-_ACEOF
-
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
-_ACEOF
-
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_VERSION "$PACKAGE_VERSION"
-_ACEOF
-
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_STRING "$PACKAGE_STRING"
-_ACEOF
-
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
-_ACEOF
-
-
-# Let the site file select an alternate cache file if it wants to.
-# Prefer explicitly selected file to automatically selected ones.
-if test -z "$CONFIG_SITE"; then
- if test "x$prefix" != xNONE; then
- CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site"
- else
- CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
- fi
-fi
-for ac_site_file in $CONFIG_SITE; do
- if test -r "$ac_site_file"; then
- { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5
-echo "$as_me: loading site script $ac_site_file" >&6;}
- sed 's/^/| /' "$ac_site_file" >&5
- . "$ac_site_file"
- fi
-done
-
-if test -r "$cache_file"; then
- # Some versions of bash will fail to source /dev/null (special
- # files actually), so we avoid doing that.
- if test -f "$cache_file"; then
- { echo "$as_me:$LINENO: loading cache $cache_file" >&5
-echo "$as_me: loading cache $cache_file" >&6;}
- case $cache_file in
- [\\/]* | ?:[\\/]* ) . $cache_file;;
- *) . ./$cache_file;;
- esac
- fi
-else
- { echo "$as_me:$LINENO: creating cache $cache_file" >&5
-echo "$as_me: creating cache $cache_file" >&6;}
- >$cache_file
-fi
-
-# Check that the precious variables saved in the cache have kept the same
-# value.
-ac_cache_corrupted=false
-for ac_var in `(set) 2>&1 |
- sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do
- eval ac_old_set=\$ac_cv_env_${ac_var}_set
- eval ac_new_set=\$ac_env_${ac_var}_set
- eval ac_old_val="\$ac_cv_env_${ac_var}_value"
- eval ac_new_val="\$ac_env_${ac_var}_value"
- case $ac_old_set,$ac_new_set in
- set,)
- { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
-echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
- ac_cache_corrupted=: ;;
- ,set)
- { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5
-echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
- ac_cache_corrupted=: ;;
- ,);;
- *)
- if test "x$ac_old_val" != "x$ac_new_val"; then
- { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5
-echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
- { echo "$as_me:$LINENO: former value: $ac_old_val" >&5
-echo "$as_me: former value: $ac_old_val" >&2;}
- { echo "$as_me:$LINENO: current value: $ac_new_val" >&5
-echo "$as_me: current value: $ac_new_val" >&2;}
- ac_cache_corrupted=:
- fi;;
- esac
- # Pass precious variables to config.status.
- if test "$ac_new_set" = set; then
- case $ac_new_val in
- *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)
- ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
- *) ac_arg=$ac_var=$ac_new_val ;;
- esac
- case " $ac_configure_args " in
- *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy.
- *) ac_configure_args="$ac_configure_args '$ac_arg'" ;;
- esac
- fi
-done
-if $ac_cache_corrupted; then
- { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5
-echo "$as_me: error: changes in the environment can compromise the build" >&2;}
- { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5
-echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;}
- { (exit 1); exit 1; }; }
-fi
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-ac_aux_dir=
-for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do
- if test -f $ac_dir/install-sh; then
- ac_aux_dir=$ac_dir
- ac_install_sh="$ac_aux_dir/install-sh -c"
- break
- elif test -f $ac_dir/install.sh; then
- ac_aux_dir=$ac_dir
- ac_install_sh="$ac_aux_dir/install.sh -c"
- break
- elif test -f $ac_dir/shtool; then
- ac_aux_dir=$ac_dir
- ac_install_sh="$ac_aux_dir/shtool install -c"
- break
- fi
-done
-if test -z "$ac_aux_dir"; then
- { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5
-echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;}
- { (exit 1); exit 1; }; }
-fi
-ac_config_guess="$SHELL $ac_aux_dir/config.guess"
-ac_config_sub="$SHELL $ac_aux_dir/config.sub"
-ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure.
-
-# Make sure we can run config.sub.
-$ac_config_sub sun4 >/dev/null 2>&1 ||
- { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5
-echo "$as_me: error: cannot run $ac_config_sub" >&2;}
- { (exit 1); exit 1; }; }
-
-echo "$as_me:$LINENO: checking build system type" >&5
-echo $ECHO_N "checking build system type... $ECHO_C" >&6
-if test "${ac_cv_build+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- ac_cv_build_alias=$build_alias
-test -z "$ac_cv_build_alias" &&
- ac_cv_build_alias=`$ac_config_guess`
-test -z "$ac_cv_build_alias" &&
- { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5
-echo "$as_me: error: cannot guess build type; you must specify one" >&2;}
- { (exit 1); exit 1; }; }
-ac_cv_build=`$ac_config_sub $ac_cv_build_alias` ||
- { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5
-echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;}
- { (exit 1); exit 1; }; }
-
-fi
-echo "$as_me:$LINENO: result: $ac_cv_build" >&5
-echo "${ECHO_T}$ac_cv_build" >&6
-build=$ac_cv_build
-build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
-build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
-build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
-
-
-echo "$as_me:$LINENO: checking host system type" >&5
-echo $ECHO_N "checking host system type... $ECHO_C" >&6
-if test "${ac_cv_host+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- ac_cv_host_alias=$host_alias
-test -z "$ac_cv_host_alias" &&
- ac_cv_host_alias=$ac_cv_build_alias
-ac_cv_host=`$ac_config_sub $ac_cv_host_alias` ||
- { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5
-echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;}
- { (exit 1); exit 1; }; }
-
-fi
-echo "$as_me:$LINENO: result: $ac_cv_host" >&5
-echo "${ECHO_T}$ac_cv_host" >&6
-host=$ac_cv_host
-host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
-host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
-host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
-
-
-echo "$as_me:$LINENO: checking target system type" >&5
-echo $ECHO_N "checking target system type... $ECHO_C" >&6
-if test "${ac_cv_target+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- ac_cv_target_alias=$target_alias
-test "x$ac_cv_target_alias" = "x" &&
- ac_cv_target_alias=$ac_cv_host_alias
-ac_cv_target=`$ac_config_sub $ac_cv_target_alias` ||
- { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_target_alias failed" >&5
-echo "$as_me: error: $ac_config_sub $ac_cv_target_alias failed" >&2;}
- { (exit 1); exit 1; }; }
-
-fi
-echo "$as_me:$LINENO: result: $ac_cv_target" >&5
-echo "${ECHO_T}$ac_cv_target" >&6
-target=$ac_cv_target
-target_cpu=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
-target_vendor=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
-target_os=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
-
-
-# The aliases save the names the user supplied, while $host etc.
-# will get canonicalized.
-test -n "$target_alias" &&
- test "$program_prefix$program_suffix$program_transform_name" = \
- NONENONEs,x,x, &&
- program_prefix=${target_alias}-
-
- ac_config_headers="$ac_config_headers src/config.h"
-
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-#------------------------------------------------------------------------------------
-# Rules for library version information:
-#
-# 1. Start with version information of `0:0:0' for each libtool library.
-# 2. Update the version information only immediately before a public release of
-# your software. More frequent updates are unnecessary, and only guarantee
-# that the current interface number gets larger faster.
-# 3. If the library source code has changed at all since the last update, then
-# increment revision (`c:r:a' becomes `c:r+1:a').
-# 4. If any interfaces have been added, removed, or changed since the last update,
-# increment current, and set revision to 0.
-# 5. If any interfaces have been added since the last public release, then increment
-# age.
-# 6. If any interfaces have been removed since the last public release, then set age
-# to 0.
-
-SHARED_VERSION_INFO="1:16:0"
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
-set dummy ${ac_tool_prefix}gcc; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_CC+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if test -n "$CC"; then
- ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_CC="${ac_tool_prefix}gcc"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
- echo "$as_me:$LINENO: result: $CC" >&5
-echo "${ECHO_T}$CC" >&6
-else
- echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-fi
-if test -z "$ac_cv_prog_CC"; then
- ac_ct_CC=$CC
- # Extract the first word of "gcc", so it can be a program name with args.
-set dummy gcc; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if test -n "$ac_ct_CC"; then
- ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_ac_ct_CC="gcc"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-
-fi
-fi
-ac_ct_CC=$ac_cv_prog_ac_ct_CC
-if test -n "$ac_ct_CC"; then
- echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
-echo "${ECHO_T}$ac_ct_CC" >&6
-else
- echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
- CC=$ac_ct_CC
-else
- CC="$ac_cv_prog_CC"
-fi
-
-if test -z "$CC"; then
- if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
-set dummy ${ac_tool_prefix}cc; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_CC+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if test -n "$CC"; then
- ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_CC="${ac_tool_prefix}cc"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
- echo "$as_me:$LINENO: result: $CC" >&5
-echo "${ECHO_T}$CC" >&6
-else
- echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-fi
-if test -z "$ac_cv_prog_CC"; then
- ac_ct_CC=$CC
- # Extract the first word of "cc", so it can be a program name with args.
-set dummy cc; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if test -n "$ac_ct_CC"; then
- ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_ac_ct_CC="cc"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-
-fi
-fi
-ac_ct_CC=$ac_cv_prog_ac_ct_CC
-if test -n "$ac_ct_CC"; then
- echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
-echo "${ECHO_T}$ac_ct_CC" >&6
-else
- echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
- CC=$ac_ct_CC
-else
- CC="$ac_cv_prog_CC"
-fi
-
-fi
-if test -z "$CC"; then
- # Extract the first word of "cc", so it can be a program name with args.
-set dummy cc; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_CC+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if test -n "$CC"; then
- ac_cv_prog_CC="$CC" # Let the user override the test.
-else
- ac_prog_rejected=no
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
- ac_prog_rejected=yes
- continue
- fi
- ac_cv_prog_CC="cc"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-
-if test $ac_prog_rejected = yes; then
- # We found a bogon in the path, so make sure we never use it.
- set dummy $ac_cv_prog_CC
- shift
- if test $# != 0; then
- # We chose a different compiler from the bogus one.
- # However, it has the same basename, so the bogon will be chosen
- # first if we set CC to just the basename; use the full file name.
- shift
- ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
- fi
-fi
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
- echo "$as_me:$LINENO: result: $CC" >&5
-echo "${ECHO_T}$CC" >&6
-else
- echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-fi
-if test -z "$CC"; then
- if test -n "$ac_tool_prefix"; then
- for ac_prog in cl
- do
- # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_CC+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if test -n "$CC"; then
- ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
- echo "$as_me:$LINENO: result: $CC" >&5
-echo "${ECHO_T}$CC" >&6
-else
- echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
- test -n "$CC" && break
- done
-fi
-if test -z "$CC"; then
- ac_ct_CC=$CC
- for ac_prog in cl
-do
- # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if test -n "$ac_ct_CC"; then
- ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_ac_ct_CC="$ac_prog"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-
-fi
-fi
-ac_ct_CC=$ac_cv_prog_ac_ct_CC
-if test -n "$ac_ct_CC"; then
- echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
-echo "${ECHO_T}$ac_ct_CC" >&6
-else
- echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
- test -n "$ac_ct_CC" && break
-done
-
- CC=$ac_ct_CC
-fi
-
-fi
-
-
-test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH
-See \`config.log' for more details." >&5
-echo "$as_me: error: no acceptable C compiler found in \$PATH
-See \`config.log' for more details." >&2;}
- { (exit 1); exit 1; }; }
-
-# Provide some information about the compiler.
-echo "$as_me:$LINENO:" \
- "checking for C compiler version" >&5
-ac_compiler=`set X $ac_compile; echo $2`
-{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5
- (eval $ac_compiler --version </dev/null >&5) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }
-{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5
- (eval $ac_compiler -v </dev/null >&5) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }
-{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5
- (eval $ac_compiler -V </dev/null >&5) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }
-
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-ac_clean_files_save=$ac_clean_files
-ac_clean_files="$ac_clean_files a.out a.exe b.out"
-# Try to create an executable without -o first, disregard a.out.
-# It will help us diagnose broken compilers, and finding out an intuition
-# of exeext.
-echo "$as_me:$LINENO: checking for C compiler default output file name" >&5
-echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6
-ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
-if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5
- (eval $ac_link_default) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; then
- # Find the output, starting from the most likely. This scheme is
-# not robust to junk in `.', hence go to wildcards (a.*) only as a last
-# resort.
-
-# Be careful to initialize this variable, since it used to be cached.
-# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile.
-ac_cv_exeext=
-# b.out is created by i960 compilers.
-for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out
-do
- test -f "$ac_file" || continue
- case $ac_file in
- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj )
- ;;
- conftest.$ac_ext )
- # This is the source file.
- ;;
- [ab].out )
- # We found the default executable, but exeext='' is most
- # certainly right.
- break;;
- *.* )
- ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
- # FIXME: I believe we export ac_cv_exeext for Libtool,
- # but it would be cool to find out if it's true. Does anybody
- # maintain Libtool? --akim.
- export ac_cv_exeext
- break;;
- * )
- break;;
- esac
-done
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-{ { echo "$as_me:$LINENO: error: C compiler cannot create executables
-See \`config.log' for more details." >&5
-echo "$as_me: error: C compiler cannot create executables
-See \`config.log' for more details." >&2;}
- { (exit 77); exit 77; }; }
-fi
-
-ac_exeext=$ac_cv_exeext
-echo "$as_me:$LINENO: result: $ac_file" >&5
-echo "${ECHO_T}$ac_file" >&6
-
-# Check the compiler produces executables we can run. If not, either
-# the compiler is broken, or we cross compile.
-echo "$as_me:$LINENO: checking whether the C compiler works" >&5
-echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6
-# FIXME: These cross compiler hacks should be removed for Autoconf 3.0
-# If not cross compiling, check that we can run a simple program.
-if test "$cross_compiling" != yes; then
- if { ac_try='./$ac_file'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- cross_compiling=no
- else
- if test "$cross_compiling" = maybe; then
- cross_compiling=yes
- else
- { { echo "$as_me:$LINENO: error: cannot run C compiled programs.
-If you meant to cross compile, use \`--host'.
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot run C compiled programs.
-If you meant to cross compile, use \`--host'.
-See \`config.log' for more details." >&2;}
- { (exit 1); exit 1; }; }
- fi
- fi
-fi
-echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-
-rm -f a.out a.exe conftest$ac_cv_exeext b.out
-ac_clean_files=$ac_clean_files_save
-# Check the compiler produces executables we can run. If not, either
-# the compiler is broken, or we cross compile.
-echo "$as_me:$LINENO: checking whether we are cross compiling" >&5
-echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6
-echo "$as_me:$LINENO: result: $cross_compiling" >&5
-echo "${ECHO_T}$cross_compiling" >&6
-
-echo "$as_me:$LINENO: checking for suffix of executables" >&5
-echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; then
- # If both `conftest.exe' and `conftest' are `present' (well, observable)
-# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will
-# work properly (i.e., refer to `conftest.exe'), while it won't with
-# `rm'.
-for ac_file in conftest.exe conftest conftest.*; do
- test -f "$ac_file" || continue
- case $ac_file in
- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;;
- *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
- export ac_cv_exeext
- break;;
- * ) break;;
- esac
-done
-else
- { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot compute suffix of executables: cannot compile and link
-See \`config.log' for more details." >&2;}
- { (exit 1); exit 1; }; }
-fi
-
-rm -f conftest$ac_cv_exeext
-echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5
-echo "${ECHO_T}$ac_cv_exeext" >&6
-
-rm -f conftest.$ac_ext
-EXEEXT=$ac_cv_exeext
-ac_exeext=$EXEEXT
-echo "$as_me:$LINENO: checking for suffix of object files" >&5
-echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6
-if test "${ac_cv_objext+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.o conftest.obj
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; then
- for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do
- case $ac_file in
- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;;
- *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
- break;;
- esac
-done
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot compute suffix of object files: cannot compile
-See \`config.log' for more details." >&2;}
- { (exit 1); exit 1; }; }
-fi
-
-rm -f conftest.$ac_cv_objext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_objext" >&5
-echo "${ECHO_T}$ac_cv_objext" >&6
-OBJEXT=$ac_cv_objext
-ac_objext=$OBJEXT
-echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5
-echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6
-if test "${ac_cv_c_compiler_gnu+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-
-int
-main ()
-{
-#ifndef __GNUC__
- choke me
-#endif
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_compiler_gnu=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_compiler_gnu=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-ac_cv_c_compiler_gnu=$ac_compiler_gnu
-
-fi
-echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5
-echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6
-GCC=`test $ac_compiler_gnu = yes && echo yes`
-ac_test_CFLAGS=${CFLAGS+set}
-ac_save_CFLAGS=$CFLAGS
-CFLAGS="-g"
-echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
-echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6
-if test "${ac_cv_prog_cc_g+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_prog_cc_g=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_prog_cc_g=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
-echo "${ECHO_T}$ac_cv_prog_cc_g" >&6
-if test "$ac_test_CFLAGS" = set; then
- CFLAGS=$ac_save_CFLAGS
-elif test $ac_cv_prog_cc_g = yes; then
- if test "$GCC" = yes; then
- CFLAGS="-g -O2"
- else
- CFLAGS="-g"
- fi
-else
- if test "$GCC" = yes; then
- CFLAGS="-O2"
- else
- CFLAGS=
- fi
-fi
-echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5
-echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6
-if test "${ac_cv_prog_cc_stdc+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- ac_cv_prog_cc_stdc=no
-ac_save_CC=$CC
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <stdarg.h>
-#include <stdio.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
-struct buf { int x; };
-FILE * (*rcsopen) (struct buf *, struct stat *, int);
-static char *e (p, i)
- char **p;
- int i;
-{
- return p[i];
-}
-static char *f (char * (*g) (char **, int), char **p, ...)
-{
- char *s;
- va_list v;
- va_start (v,p);
- s = g (p, va_arg (v,int));
- va_end (v);
- return s;
-}
-
-/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has
- function prototypes and stuff, but not '\xHH' hex character constants.
- These don't provoke an error unfortunately, instead are silently treated
- as 'x'. The following induces an error, until -std1 is added to get
- proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an
- array size at least. It's necessary to write '\x00'==0 to get something
- that's true only with -std1. */
-int osf4_cc_array ['\x00' == 0 ? 1 : -1];
-
-int test (int i, double x);
-struct s1 {int (*f) (int a);};
-struct s2 {int (*f) (double a);};
-int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
-int argc;
-char **argv;
-int
-main ()
-{
-return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1];
- ;
- return 0;
-}
-_ACEOF
-# Don't try gcc -ansi; that turns off useful extensions and
-# breaks some systems' header files.
-# AIX -qlanglvl=ansi
-# Ultrix and OSF/1 -std1
-# HP-UX 10.20 and later -Ae
-# HP-UX older versions -Aa -D_HPUX_SOURCE
-# SVR4 -Xc -D__EXTENSIONS__
-for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
-do
- CC="$ac_save_CC $ac_arg"
- rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_prog_cc_stdc=$ac_arg
-break
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-fi
-rm -f conftest.err conftest.$ac_objext
-done
-rm -f conftest.$ac_ext conftest.$ac_objext
-CC=$ac_save_CC
-
-fi
-
-case "x$ac_cv_prog_cc_stdc" in
- x|xno)
- echo "$as_me:$LINENO: result: none needed" >&5
-echo "${ECHO_T}none needed" >&6 ;;
- *)
- echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5
-echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6
- CC="$CC $ac_cv_prog_cc_stdc" ;;
-esac
-
-# Some people use a C++ compiler to compile C. Since we use `exit',
-# in C++ we need to declare it. In case someone uses the same compiler
-# for both compiling C and C++ we need to have the C++ compiler decide
-# the declaration of exit, since it's the most demanding environment.
-cat >conftest.$ac_ext <<_ACEOF
-#ifndef __cplusplus
- choke me
-#endif
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- for ac_declaration in \
- '' \
- 'extern "C" void std::exit (int) throw (); using std::exit;' \
- 'extern "C" void std::exit (int); using std::exit;' \
- 'extern "C" void exit (int) throw ();' \
- 'extern "C" void exit (int);' \
- 'void exit (int);'
-do
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_declaration
-#include <stdlib.h>
-int
-main ()
-{
-exit (42);
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- :
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-continue
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_declaration
-int
-main ()
-{
-exit (42);
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- break
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-done
-rm -f conftest*
-if test -n "$ac_declaration"; then
- echo '#ifdef __cplusplus' >>confdefs.h
- echo $ac_declaration >>confdefs.h
- echo '#endif' >>confdefs.h
-fi
-
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-#AM_PROG_LIBTOOL
-
-# Extract the first word of "autogen", so it can be a program name with args.
-set dummy autogen; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_autogen+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if test -n "$autogen"; then
- ac_cv_prog_autogen="$autogen" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_autogen="yes"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-
- test -z "$ac_cv_prog_autogen" && ac_cv_prog_autogen="no"
-fi
-fi
-autogen=$ac_cv_prog_autogen
-if test -n "$autogen"; then
- echo "$as_me:$LINENO: result: $autogen" >&5
-echo "${ECHO_T}$autogen" >&6
-else
- echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-
-# Find a good install program. We prefer a C program (faster),
-# so one script is as good as another. But avoid the broken or
-# incompatible versions:
-# SysV /etc/install, /usr/sbin/install
-# SunOS /usr/etc/install
-# IRIX /sbin/install
-# AIX /bin/install
-# AmigaOS /C/install, which installs bootblocks on floppy discs
-# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
-# AFS /usr/afsws/bin/install, which mishandles nonexistent args
-# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
-# OS/2's system install, which has a completely different semantic
-# ./install, which can be erroneously created by make from ./install.sh.
-echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
-echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6
-if test -z "$INSTALL"; then
-if test "${ac_cv_path_install+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- # Account for people who put trailing slashes in PATH elements.
-case $as_dir/ in
- ./ | .// | /cC/* | \
- /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
- ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \
- /usr/ucb/* ) ;;
- *)
- # OSF1 and SCO ODT 3.0 have their own names for install.
- # Don't use installbsd from OSF since it installs stuff as root
- # by default.
- for ac_prog in ginstall scoinst install; do
- for ac_exec_ext in '' $ac_executable_extensions; do
- if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
- if test $ac_prog = install &&
- grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
- # AIX install. It has an incompatible calling convention.
- :
- elif test $ac_prog = install &&
- grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
- # program-specific install script used by HP pwplus--don't use.
- :
- else
- ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
- break 3
- fi
- fi
- done
- done
- ;;
-esac
-done
-
-
-fi
- if test "${ac_cv_path_install+set}" = set; then
- INSTALL=$ac_cv_path_install
- else
- # As a last resort, use the slow shell script. We don't cache a
- # path for INSTALL within a source directory, because that will
- # break other packages using the cache if that directory is
- # removed, or if the path is relative.
- INSTALL=$ac_install_sh
- fi
-fi
-echo "$as_me:$LINENO: result: $INSTALL" >&5
-echo "${ECHO_T}$INSTALL" >&6
-
-# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
-# It thinks the first close brace ends the variable substitution.
-test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
-
-test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
-
-test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
-
-echo "$as_me:$LINENO: checking whether ln -s works" >&5
-echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6
-LN_S=$as_ln_s
-if test "$LN_S" = "ln -s"; then
- echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-else
- echo "$as_me:$LINENO: result: no, using $LN_S" >&5
-echo "${ECHO_T}no, using $LN_S" >&6
-fi
-
-
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5
-echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6
-# On Suns, sometimes $CPP names a directory.
-if test -n "$CPP" && test -d "$CPP"; then
- CPP=
-fi
-if test -z "$CPP"; then
- if test "${ac_cv_prog_CPP+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- # Double quotes because CPP needs to be expanded
- for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
- do
- ac_preproc_ok=false
-for ac_c_preproc_warn_flag in '' yes
-do
- # Use a header file that comes with gcc, so configuring glibc
- # with a fresh cross-compiler works.
- # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
- # <limits.h> exists even on freestanding compilers.
- # On the NeXT, cc -E runs the code through the compiler's parser,
- # not just through cpp. "Syntax error" is here to catch this case.
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
- Syntax error
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_c_preproc_warn_flag
- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
- else
- ac_cpp_err=
- fi
-else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
- :
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- # Broken: fails on valid input.
-continue
-fi
-rm -f conftest.err conftest.$ac_ext
-
- # OK, works on sane cases. Now check whether non-existent headers
- # can be detected and how.
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <ac_nonexistent.h>
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_c_preproc_warn_flag
- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
- else
- ac_cpp_err=
- fi
-else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
- # Broken: success on invalid input.
-continue
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- # Passes both tests.
-ac_preproc_ok=:
-break
-fi
-rm -f conftest.err conftest.$ac_ext
-
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then
- break
-fi
-
- done
- ac_cv_prog_CPP=$CPP
-
-fi
- CPP=$ac_cv_prog_CPP
-else
- ac_cv_prog_CPP=$CPP
-fi
-echo "$as_me:$LINENO: result: $CPP" >&5
-echo "${ECHO_T}$CPP" >&6
-ac_preproc_ok=false
-for ac_c_preproc_warn_flag in '' yes
-do
- # Use a header file that comes with gcc, so configuring glibc
- # with a fresh cross-compiler works.
- # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
- # <limits.h> exists even on freestanding compilers.
- # On the NeXT, cc -E runs the code through the compiler's parser,
- # not just through cpp. "Syntax error" is here to catch this case.
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
- Syntax error
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_c_preproc_warn_flag
- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
- else
- ac_cpp_err=
- fi
-else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
- :
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- # Broken: fails on valid input.
-continue
-fi
-rm -f conftest.err conftest.$ac_ext
-
- # OK, works on sane cases. Now check whether non-existent headers
- # can be detected and how.
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <ac_nonexistent.h>
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_c_preproc_warn_flag
- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
- else
- ac_cpp_err=
- fi
-else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
- # Broken: success on invalid input.
-continue
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- # Passes both tests.
-ac_preproc_ok=:
-break
-fi
-rm -f conftest.err conftest.$ac_ext
-
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then
- :
-else
- { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check
-See \`config.log' for more details." >&5
-echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check
-See \`config.log' for more details." >&2;}
- { (exit 1); exit 1; }; }
-fi
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-echo "$as_me:$LINENO: checking for egrep" >&5
-echo $ECHO_N "checking for egrep... $ECHO_C" >&6
-if test "${ac_cv_prog_egrep+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if echo a | (grep -E '(a|b)') >/dev/null 2>&1
- then ac_cv_prog_egrep='grep -E'
- else ac_cv_prog_egrep='egrep'
- fi
-fi
-echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5
-echo "${ECHO_T}$ac_cv_prog_egrep" >&6
- EGREP=$ac_cv_prog_egrep
-
-
-echo "$as_me:$LINENO: checking for ANSI C header files" >&5
-echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6
-if test "${ac_cv_header_stdc+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <stdlib.h>
-#include <stdarg.h>
-#include <string.h>
-#include <float.h>
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_header_stdc=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_header_stdc=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-
-if test $ac_cv_header_stdc = yes; then
- # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <string.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "memchr" >/dev/null 2>&1; then
- :
-else
- ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
- # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <stdlib.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "free" >/dev/null 2>&1; then
- :
-else
- ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
- # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
- if test "$cross_compiling" = yes; then
- :
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <ctype.h>
-#if ((' ' & 0x0FF) == 0x020)
-# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
-# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
-#else
-# define ISLOWER(c) \
- (('a' <= (c) && (c) <= 'i') \
- || ('j' <= (c) && (c) <= 'r') \
- || ('s' <= (c) && (c) <= 'z'))
-# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
-#endif
-
-#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
-int
-main ()
-{
- int i;
- for (i = 0; i < 256; i++)
- if (XOR (islower (i), ISLOWER (i))
- || toupper (i) != TOUPPER (i))
- exit(2);
- exit (0);
-}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- :
-else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-( exit $ac_status )
-ac_cv_header_stdc=no
-fi
-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-fi
-fi
-echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5
-echo "${ECHO_T}$ac_cv_header_stdc" >&6
-if test $ac_cv_header_stdc = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define STDC_HEADERS 1
-_ACEOF
-
-fi
-
-
-# On IRIX 5.3, sys/types and inttypes.h are conflicting.
-
-
-
-
-
-
-
-
-
-for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
- inttypes.h stdint.h unistd.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- eval "$as_ac_Header=yes"
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_Header=no"
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
- cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-
-
-for ac_header in endian.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
- echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-else
- # Is the header compilable?
-echo "$as_me:$LINENO: checking $ac_header usability" >&5
-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_header_compiler=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_header_compiler=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
-
-# Is the header present?
-echo "$as_me:$LINENO: checking $ac_header presence" >&5
-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <$ac_header>
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_c_preproc_warn_flag
- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
- else
- ac_cpp_err=
- fi
-else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
- ac_header_preproc=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
-
-# So? What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
- yes:no: )
- { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
- ac_header_preproc=yes
- ;;
- no:yes:* )
- { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
- (
- cat <<\_ASBOX
-## -------------------------------- ##
-## Report this to ardour@ardour.org ##
-## -------------------------------- ##
-_ASBOX
- ) |
- sed "s/^/$as_me: WARNING: /" >&2
- ;;
-esac
-echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- eval "$as_ac_Header=\$ac_header_preproc"
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-
-fi
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
- cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-
-for ac_header in byteswap.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
- echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-else
- # Is the header compilable?
-echo "$as_me:$LINENO: checking $ac_header usability" >&5
-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_header_compiler=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_header_compiler=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
-
-# Is the header present?
-echo "$as_me:$LINENO: checking $ac_header presence" >&5
-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <$ac_header>
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_c_preproc_warn_flag
- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
- else
- ac_cpp_err=
- fi
-else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
- ac_header_preproc=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
-
-# So? What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
- yes:no: )
- { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
- ac_header_preproc=yes
- ;;
- no:yes:* )
- { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
- (
- cat <<\_ASBOX
-## -------------------------------- ##
-## Report this to ardour@ardour.org ##
-## -------------------------------- ##
-_ASBOX
- ) |
- sed "s/^/$as_me: WARNING: /" >&2
- ;;
-esac
-echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- eval "$as_ac_Header=\$ac_header_preproc"
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-
-fi
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
- cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-
-for ac_header in locale.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
- echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-else
- # Is the header compilable?
-echo "$as_me:$LINENO: checking $ac_header usability" >&5
-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_header_compiler=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_header_compiler=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
-
-# Is the header present?
-echo "$as_me:$LINENO: checking $ac_header presence" >&5
-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <$ac_header>
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_c_preproc_warn_flag
- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
- else
- ac_cpp_err=
- fi
-else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
- ac_header_preproc=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
-
-# So? What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
- yes:no: )
- { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
- ac_header_preproc=yes
- ;;
- no:yes:* )
- { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
- (
- cat <<\_ASBOX
-## -------------------------------- ##
-## Report this to ardour@ardour.org ##
-## -------------------------------- ##
-_ASBOX
- ) |
- sed "s/^/$as_me: WARNING: /" >&2
- ;;
-esac
-echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- eval "$as_ac_Header=\$ac_header_preproc"
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-
-fi
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
- cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-
-for ac_header in inttypes.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
- echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-else
- # Is the header compilable?
-echo "$as_me:$LINENO: checking $ac_header usability" >&5
-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_header_compiler=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_header_compiler=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
-
-# Is the header present?
-echo "$as_me:$LINENO: checking $ac_header presence" >&5
-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <$ac_header>
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_c_preproc_warn_flag
- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
- else
- ac_cpp_err=
- fi
-else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
- ac_header_preproc=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
-
-# So? What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
- yes:no: )
- { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
- ac_header_preproc=yes
- ;;
- no:yes:* )
- { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
- (
- cat <<\_ASBOX
-## -------------------------------- ##
-## Report this to ardour@ardour.org ##
-## -------------------------------- ##
-_ASBOX
- ) |
- sed "s/^/$as_me: WARNING: /" >&2
- ;;
-esac
-echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- eval "$as_ac_Header=\$ac_header_preproc"
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-
-fi
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
- cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-
-echo "$as_me:$LINENO: checking for sys/wait.h that is POSIX.1 compatible" >&5
-echo $ECHO_N "checking for sys/wait.h that is POSIX.1 compatible... $ECHO_C" >&6
-if test "${ac_cv_header_sys_wait_h+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <sys/types.h>
-#include <sys/wait.h>
-#ifndef WEXITSTATUS
-# define WEXITSTATUS(stat_val) ((unsigned)(stat_val) >> 8)
-#endif
-#ifndef WIFEXITED
-# define WIFEXITED(stat_val) (((stat_val) & 255) == 0)
-#endif
-
-int
-main ()
-{
- int s;
- wait (&s);
- s = WIFEXITED (s) ? WEXITSTATUS (s) : 1;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_header_sys_wait_h=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_header_sys_wait_h=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_header_sys_wait_h" >&5
-echo "${ECHO_T}$ac_cv_header_sys_wait_h" >&6
-if test $ac_cv_header_sys_wait_h = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_SYS_WAIT_H 1
-_ACEOF
-
-fi
-
-
-echo "$as_me:$LINENO: checking whether S_IRGRP is declared" >&5
-echo $ECHO_N "checking whether S_IRGRP is declared... $ECHO_C" >&6
-if test "${ac_cv_have_decl_S_IRGRP+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-#ifndef S_IRGRP
- char *p = (char *) S_IRGRP;
-#endif
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_have_decl_S_IRGRP=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_have_decl_S_IRGRP=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_have_decl_S_IRGRP" >&5
-echo "${ECHO_T}$ac_cv_have_decl_S_IRGRP" >&6
-if test $ac_cv_have_decl_S_IRGRP = yes; then
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_S_IRGRP 1
-_ACEOF
-
-
-else
- cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_S_IRGRP 0
-_ACEOF
-
-
-fi
-
-
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_S_IRGRP ${HAVE_DECL_S_IRGRP}
-_ACEOF
-
-
-#====================================================================================
-# Check for support of the struct hack.
-
-echo "$as_me:$LINENO: checking C99 struct flexible array support" >&5
-echo $ECHO_N "checking C99 struct flexible array support... $ECHO_C" >&6
-if test "${ac_cv_c99_flexible_array+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- # Initialize to unknown
-ac_cv_c99_flexible_array=no
-
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-
- #include <stdlib.h>
- typedef struct {
- int k;
- char buffer [] ;
- } MY_STRUCT ;
-
-int
-main ()
-{
- MY_STRUCT *p = calloc (1, sizeof (MY_STRUCT) + 42);
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_c99_flexible_array=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_c99_flexible_array=no
-
-fi
-rm -f conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_c99_flexible_array" >&5
-echo "${ECHO_T}$ac_cv_c99_flexible_array" >&6
-
-
-if test x$ac_cv_c99_flexible_array = xyes ; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_FLEXIBLE_ARRAY 1
-_ACEOF
-
-else
- { echo "$as_me:$LINENO: WARNING: *** This compiler does not support the 1999 ISO C Standard ***" >&5
-echo "$as_me: WARNING: *** This compiler does not support the 1999 ISO C Standard ***" >&2;}
- { echo "$as_me:$LINENO: WARNING: *** feature known as the flexible array struct member. ***" >&5
-echo "$as_me: WARNING: *** feature known as the flexible array struct member. ***" >&2;}
- cat >>confdefs.h <<\_ACEOF
-#define HAVE_FLEXIBLE_ARRAY 0
-_ACEOF
-
- fi
-
-#====================================================================================
-# Couple of initializations here. Fill in real values later.
-
-SHLIB_VERSION_ARG=""
-
-#====================================================================================
-# Finished checking, handle options.
-
-# Check whether --enable-experimental or --disable-experimental was given.
-if test "${enable_experimental+set}" = set; then
- enableval="$enable_experimental"
-
-fi;
-
-EXPERIMENTAL_CODE=0
-if test x$enable_experimental = xyes ; then
- EXPERIMENTAL_CODE=1
- fi
-
-cat >>confdefs.h <<_ACEOF
-#define ENABLE_EXPERIMENTAL_CODE ${EXPERIMENTAL_CODE}
-_ACEOF
-
-
-# Check whether --enable-gcc-werror or --disable-gcc-werror was given.
-if test "${enable_gcc_werror+set}" = set; then
- enableval="$enable_gcc_werror"
-
-fi;
-
-# Check whether --enable-gcc-pipe or --disable-gcc-pipe was given.
-if test "${enable_gcc_pipe+set}" = set; then
- enableval="$enable_gcc_pipe"
-
-fi;
-
-# Check whether --enable-gcc-opt or --disable-gcc-opt was given.
-if test "${enable_gcc_opt+set}" = set; then
- enableval="$enable_gcc_opt"
-
-fi;
-
-# Check whether --enable-cpu-clip or --disable-cpu-clip was given.
-if test "${enable_cpu_clip+set}" = set; then
- enableval="$enable_cpu_clip"
-
-fi;
-
-# Check whether --enable-bow-docs or --disable-bow-docs was given.
-if test "${enable_bow_docs+set}" = set; then
- enableval="$enable_bow_docs"
-
-fi;
-
-# Check whether --enable-sqlite or --disable-sqlite was given.
-if test "${enable_sqlite+set}" = set; then
- enableval="$enable_sqlite"
-
-fi;
-
-# Check whether --enable-flac or --disable-flac was given.
-if test "${enable_flac+set}" = set; then
- enableval="$enable_flac"
-
-fi;
-
-# Check whether --enable-alsa or --disable-alsa was given.
-if test "${enable_alsa+set}" = set; then
- enableval="$enable_alsa"
-
-fi;
-
-#====================================================================================
-# Check types and their sizes.
-
-echo "$as_me:$LINENO: checking for short" >&5
-echo $ECHO_N "checking for short... $ECHO_C" >&6
-if test "${ac_cv_type_short+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-if ((short *) 0)
- return 0;
-if (sizeof (short))
- return 0;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_type_short=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_type_short=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_type_short" >&5
-echo "${ECHO_T}$ac_cv_type_short" >&6
-
-echo "$as_me:$LINENO: checking size of short" >&5
-echo $ECHO_N "checking size of short... $ECHO_C" >&6
-if test "${ac_cv_sizeof_short+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if test "$ac_cv_type_short" = yes; then
- # The cast to unsigned long works around a bug in the HP C Compiler
- # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
- # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
- # This bug is HP SR number 8606223364.
- if test "$cross_compiling" = yes; then
- # Depending upon the size, compute the lo and hi bounds.
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long) (sizeof (short))) >= 0)];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_lo=0 ac_mid=0
- while :; do
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long) (sizeof (short))) <= $ac_mid)];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_hi=$ac_mid; break
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_lo=`expr $ac_mid + 1`
- if test $ac_lo -le $ac_mid; then
- ac_lo= ac_hi=
- break
- fi
- ac_mid=`expr 2 '*' $ac_mid + 1`
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
- done
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long) (sizeof (short))) < 0)];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_hi=-1 ac_mid=-1
- while :; do
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long) (sizeof (short))) >= $ac_mid)];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_lo=$ac_mid; break
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_hi=`expr '(' $ac_mid ')' - 1`
- if test $ac_mid -le $ac_hi; then
- ac_lo= ac_hi=
- break
- fi
- ac_mid=`expr 2 '*' $ac_mid`
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
- done
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_lo= ac_hi=
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-# Binary search between lo and hi bounds.
-while test "x$ac_lo" != "x$ac_hi"; do
- ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long) (sizeof (short))) <= $ac_mid)];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_hi=$ac_mid
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_lo=`expr '(' $ac_mid ')' + 1`
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-done
-case $ac_lo in
-?*) ac_cv_sizeof_short=$ac_lo;;
-'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (short), 77
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot compute sizeof (short), 77
-See \`config.log' for more details." >&2;}
- { (exit 1); exit 1; }; } ;;
-esac
-else
- if test "$cross_compiling" = yes; then
- { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot run test program while cross compiling
-See \`config.log' for more details." >&2;}
- { (exit 1); exit 1; }; }
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-long longval () { return (long) (sizeof (short)); }
-unsigned long ulongval () { return (long) (sizeof (short)); }
-#include <stdio.h>
-#include <stdlib.h>
-int
-main ()
-{
-
- FILE *f = fopen ("conftest.val", "w");
- if (! f)
- exit (1);
- if (((long) (sizeof (short))) < 0)
- {
- long i = longval ();
- if (i != ((long) (sizeof (short))))
- exit (1);
- fprintf (f, "%ld\n", i);
- }
- else
- {
- unsigned long i = ulongval ();
- if (i != ((long) (sizeof (short))))
- exit (1);
- fprintf (f, "%lu\n", i);
- }
- exit (ferror (f) || fclose (f) != 0);
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_sizeof_short=`cat conftest.val`
-else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-( exit $ac_status )
-{ { echo "$as_me:$LINENO: error: cannot compute sizeof (short), 77
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot compute sizeof (short), 77
-See \`config.log' for more details." >&2;}
- { (exit 1); exit 1; }; }
-fi
-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-fi
-rm -f conftest.val
-else
- ac_cv_sizeof_short=0
-fi
-fi
-echo "$as_me:$LINENO: result: $ac_cv_sizeof_short" >&5
-echo "${ECHO_T}$ac_cv_sizeof_short" >&6
-cat >>confdefs.h <<_ACEOF
-#define SIZEOF_SHORT $ac_cv_sizeof_short
-_ACEOF
-
-
-echo "$as_me:$LINENO: checking for int" >&5
-echo $ECHO_N "checking for int... $ECHO_C" >&6
-if test "${ac_cv_type_int+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-if ((int *) 0)
- return 0;
-if (sizeof (int))
- return 0;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_type_int=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_type_int=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_type_int" >&5
-echo "${ECHO_T}$ac_cv_type_int" >&6
-
-echo "$as_me:$LINENO: checking size of int" >&5
-echo $ECHO_N "checking size of int... $ECHO_C" >&6
-if test "${ac_cv_sizeof_int+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if test "$ac_cv_type_int" = yes; then
- # The cast to unsigned long works around a bug in the HP C Compiler
- # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
- # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
- # This bug is HP SR number 8606223364.
- if test "$cross_compiling" = yes; then
- # Depending upon the size, compute the lo and hi bounds.
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long) (sizeof (int))) >= 0)];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_lo=0 ac_mid=0
- while :; do
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long) (sizeof (int))) <= $ac_mid)];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_hi=$ac_mid; break
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_lo=`expr $ac_mid + 1`
- if test $ac_lo -le $ac_mid; then
- ac_lo= ac_hi=
- break
- fi
- ac_mid=`expr 2 '*' $ac_mid + 1`
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
- done
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long) (sizeof (int))) < 0)];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_hi=-1 ac_mid=-1
- while :; do
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long) (sizeof (int))) >= $ac_mid)];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_lo=$ac_mid; break
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_hi=`expr '(' $ac_mid ')' - 1`
- if test $ac_mid -le $ac_hi; then
- ac_lo= ac_hi=
- break
- fi
- ac_mid=`expr 2 '*' $ac_mid`
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
- done
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_lo= ac_hi=
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-# Binary search between lo and hi bounds.
-while test "x$ac_lo" != "x$ac_hi"; do
- ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long) (sizeof (int))) <= $ac_mid)];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_hi=$ac_mid
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_lo=`expr '(' $ac_mid ')' + 1`
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-done
-case $ac_lo in
-?*) ac_cv_sizeof_int=$ac_lo;;
-'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (int), 77
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot compute sizeof (int), 77
-See \`config.log' for more details." >&2;}
- { (exit 1); exit 1; }; } ;;
-esac
-else
- if test "$cross_compiling" = yes; then
- { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot run test program while cross compiling
-See \`config.log' for more details." >&2;}
- { (exit 1); exit 1; }; }
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-long longval () { return (long) (sizeof (int)); }
-unsigned long ulongval () { return (long) (sizeof (int)); }
-#include <stdio.h>
-#include <stdlib.h>
-int
-main ()
-{
-
- FILE *f = fopen ("conftest.val", "w");
- if (! f)
- exit (1);
- if (((long) (sizeof (int))) < 0)
- {
- long i = longval ();
- if (i != ((long) (sizeof (int))))
- exit (1);
- fprintf (f, "%ld\n", i);
- }
- else
- {
- unsigned long i = ulongval ();
- if (i != ((long) (sizeof (int))))
- exit (1);
- fprintf (f, "%lu\n", i);
- }
- exit (ferror (f) || fclose (f) != 0);
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_sizeof_int=`cat conftest.val`
-else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-( exit $ac_status )
-{ { echo "$as_me:$LINENO: error: cannot compute sizeof (int), 77
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot compute sizeof (int), 77
-See \`config.log' for more details." >&2;}
- { (exit 1); exit 1; }; }
-fi
-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-fi
-rm -f conftest.val
-else
- ac_cv_sizeof_int=0
-fi
-fi
-echo "$as_me:$LINENO: result: $ac_cv_sizeof_int" >&5
-echo "${ECHO_T}$ac_cv_sizeof_int" >&6
-cat >>confdefs.h <<_ACEOF
-#define SIZEOF_INT $ac_cv_sizeof_int
-_ACEOF
-
-
-echo "$as_me:$LINENO: checking for long" >&5
-echo $ECHO_N "checking for long... $ECHO_C" >&6
-if test "${ac_cv_type_long+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-if ((long *) 0)
- return 0;
-if (sizeof (long))
- return 0;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_type_long=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_type_long=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_type_long" >&5
-echo "${ECHO_T}$ac_cv_type_long" >&6
-
-echo "$as_me:$LINENO: checking size of long" >&5
-echo $ECHO_N "checking size of long... $ECHO_C" >&6
-if test "${ac_cv_sizeof_long+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if test "$ac_cv_type_long" = yes; then
- # The cast to unsigned long works around a bug in the HP C Compiler
- # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
- # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
- # This bug is HP SR number 8606223364.
- if test "$cross_compiling" = yes; then
- # Depending upon the size, compute the lo and hi bounds.
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long) (sizeof (long))) >= 0)];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_lo=0 ac_mid=0
- while :; do
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long) (sizeof (long))) <= $ac_mid)];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_hi=$ac_mid; break
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_lo=`expr $ac_mid + 1`
- if test $ac_lo -le $ac_mid; then
- ac_lo= ac_hi=
- break
- fi
- ac_mid=`expr 2 '*' $ac_mid + 1`
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
- done
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long) (sizeof (long))) < 0)];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_hi=-1 ac_mid=-1
- while :; do
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long) (sizeof (long))) >= $ac_mid)];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_lo=$ac_mid; break
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_hi=`expr '(' $ac_mid ')' - 1`
- if test $ac_mid -le $ac_hi; then
- ac_lo= ac_hi=
- break
- fi
- ac_mid=`expr 2 '*' $ac_mid`
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
- done
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_lo= ac_hi=
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-# Binary search between lo and hi bounds.
-while test "x$ac_lo" != "x$ac_hi"; do
- ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long) (sizeof (long))) <= $ac_mid)];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_hi=$ac_mid
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_lo=`expr '(' $ac_mid ')' + 1`
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-done
-case $ac_lo in
-?*) ac_cv_sizeof_long=$ac_lo;;
-'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (long), 77
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot compute sizeof (long), 77
-See \`config.log' for more details." >&2;}
- { (exit 1); exit 1; }; } ;;
-esac
-else
- if test "$cross_compiling" = yes; then
- { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot run test program while cross compiling
-See \`config.log' for more details." >&2;}
- { (exit 1); exit 1; }; }
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-long longval () { return (long) (sizeof (long)); }
-unsigned long ulongval () { return (long) (sizeof (long)); }
-#include <stdio.h>
-#include <stdlib.h>
-int
-main ()
-{
-
- FILE *f = fopen ("conftest.val", "w");
- if (! f)
- exit (1);
- if (((long) (sizeof (long))) < 0)
- {
- long i = longval ();
- if (i != ((long) (sizeof (long))))
- exit (1);
- fprintf (f, "%ld\n", i);
- }
- else
- {
- unsigned long i = ulongval ();
- if (i != ((long) (sizeof (long))))
- exit (1);
- fprintf (f, "%lu\n", i);
- }
- exit (ferror (f) || fclose (f) != 0);
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_sizeof_long=`cat conftest.val`
-else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-( exit $ac_status )
-{ { echo "$as_me:$LINENO: error: cannot compute sizeof (long), 77
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot compute sizeof (long), 77
-See \`config.log' for more details." >&2;}
- { (exit 1); exit 1; }; }
-fi
-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-fi
-rm -f conftest.val
-else
- ac_cv_sizeof_long=0
-fi
-fi
-echo "$as_me:$LINENO: result: $ac_cv_sizeof_long" >&5
-echo "${ECHO_T}$ac_cv_sizeof_long" >&6
-cat >>confdefs.h <<_ACEOF
-#define SIZEOF_LONG $ac_cv_sizeof_long
-_ACEOF
-
-
-echo "$as_me:$LINENO: checking for float" >&5
-echo $ECHO_N "checking for float... $ECHO_C" >&6
-if test "${ac_cv_type_float+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-if ((float *) 0)
- return 0;
-if (sizeof (float))
- return 0;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_type_float=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_type_float=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_type_float" >&5
-echo "${ECHO_T}$ac_cv_type_float" >&6
-
-echo "$as_me:$LINENO: checking size of float" >&5
-echo $ECHO_N "checking size of float... $ECHO_C" >&6
-if test "${ac_cv_sizeof_float+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if test "$ac_cv_type_float" = yes; then
- # The cast to unsigned long works around a bug in the HP C Compiler
- # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
- # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
- # This bug is HP SR number 8606223364.
- if test "$cross_compiling" = yes; then
- # Depending upon the size, compute the lo and hi bounds.
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long) (sizeof (float))) >= 0)];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_lo=0 ac_mid=0
- while :; do
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long) (sizeof (float))) <= $ac_mid)];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_hi=$ac_mid; break
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_lo=`expr $ac_mid + 1`
- if test $ac_lo -le $ac_mid; then
- ac_lo= ac_hi=
- break
- fi
- ac_mid=`expr 2 '*' $ac_mid + 1`
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
- done
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long) (sizeof (float))) < 0)];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_hi=-1 ac_mid=-1
- while :; do
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long) (sizeof (float))) >= $ac_mid)];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_lo=$ac_mid; break
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_hi=`expr '(' $ac_mid ')' - 1`
- if test $ac_mid -le $ac_hi; then
- ac_lo= ac_hi=
- break
- fi
- ac_mid=`expr 2 '*' $ac_mid`
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
- done
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_lo= ac_hi=
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-# Binary search between lo and hi bounds.
-while test "x$ac_lo" != "x$ac_hi"; do
- ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long) (sizeof (float))) <= $ac_mid)];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_hi=$ac_mid
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_lo=`expr '(' $ac_mid ')' + 1`
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-done
-case $ac_lo in
-?*) ac_cv_sizeof_float=$ac_lo;;
-'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (float), 77
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot compute sizeof (float), 77
-See \`config.log' for more details." >&2;}
- { (exit 1); exit 1; }; } ;;
-esac
-else
- if test "$cross_compiling" = yes; then
- { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot run test program while cross compiling
-See \`config.log' for more details." >&2;}
- { (exit 1); exit 1; }; }
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-long longval () { return (long) (sizeof (float)); }
-unsigned long ulongval () { return (long) (sizeof (float)); }
-#include <stdio.h>
-#include <stdlib.h>
-int
-main ()
-{
-
- FILE *f = fopen ("conftest.val", "w");
- if (! f)
- exit (1);
- if (((long) (sizeof (float))) < 0)
- {
- long i = longval ();
- if (i != ((long) (sizeof (float))))
- exit (1);
- fprintf (f, "%ld\n", i);
- }
- else
- {
- unsigned long i = ulongval ();
- if (i != ((long) (sizeof (float))))
- exit (1);
- fprintf (f, "%lu\n", i);
- }
- exit (ferror (f) || fclose (f) != 0);
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_sizeof_float=`cat conftest.val`
-else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-( exit $ac_status )
-{ { echo "$as_me:$LINENO: error: cannot compute sizeof (float), 77
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot compute sizeof (float), 77
-See \`config.log' for more details." >&2;}
- { (exit 1); exit 1; }; }
-fi
-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-fi
-rm -f conftest.val
-else
- ac_cv_sizeof_float=0
-fi
-fi
-echo "$as_me:$LINENO: result: $ac_cv_sizeof_float" >&5
-echo "${ECHO_T}$ac_cv_sizeof_float" >&6
-cat >>confdefs.h <<_ACEOF
-#define SIZEOF_FLOAT $ac_cv_sizeof_float
-_ACEOF
-
-
-echo "$as_me:$LINENO: checking for double" >&5
-echo $ECHO_N "checking for double... $ECHO_C" >&6
-if test "${ac_cv_type_double+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-if ((double *) 0)
- return 0;
-if (sizeof (double))
- return 0;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_type_double=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_type_double=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_type_double" >&5
-echo "${ECHO_T}$ac_cv_type_double" >&6
-
-echo "$as_me:$LINENO: checking size of double" >&5
-echo $ECHO_N "checking size of double... $ECHO_C" >&6
-if test "${ac_cv_sizeof_double+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if test "$ac_cv_type_double" = yes; then
- # The cast to unsigned long works around a bug in the HP C Compiler
- # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
- # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
- # This bug is HP SR number 8606223364.
- if test "$cross_compiling" = yes; then
- # Depending upon the size, compute the lo and hi bounds.
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long) (sizeof (double))) >= 0)];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_lo=0 ac_mid=0
- while :; do
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long) (sizeof (double))) <= $ac_mid)];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_hi=$ac_mid; break
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_lo=`expr $ac_mid + 1`
- if test $ac_lo -le $ac_mid; then
- ac_lo= ac_hi=
- break
- fi
- ac_mid=`expr 2 '*' $ac_mid + 1`
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
- done
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long) (sizeof (double))) < 0)];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_hi=-1 ac_mid=-1
- while :; do
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long) (sizeof (double))) >= $ac_mid)];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_lo=$ac_mid; break
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_hi=`expr '(' $ac_mid ')' - 1`
- if test $ac_mid -le $ac_hi; then
- ac_lo= ac_hi=
- break
- fi
- ac_mid=`expr 2 '*' $ac_mid`
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
- done
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_lo= ac_hi=
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-# Binary search between lo and hi bounds.
-while test "x$ac_lo" != "x$ac_hi"; do
- ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long) (sizeof (double))) <= $ac_mid)];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_hi=$ac_mid
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_lo=`expr '(' $ac_mid ')' + 1`
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-done
-case $ac_lo in
-?*) ac_cv_sizeof_double=$ac_lo;;
-'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (double), 77
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot compute sizeof (double), 77
-See \`config.log' for more details." >&2;}
- { (exit 1); exit 1; }; } ;;
-esac
-else
- if test "$cross_compiling" = yes; then
- { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot run test program while cross compiling
-See \`config.log' for more details." >&2;}
- { (exit 1); exit 1; }; }
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-long longval () { return (long) (sizeof (double)); }
-unsigned long ulongval () { return (long) (sizeof (double)); }
-#include <stdio.h>
-#include <stdlib.h>
-int
-main ()
-{
-
- FILE *f = fopen ("conftest.val", "w");
- if (! f)
- exit (1);
- if (((long) (sizeof (double))) < 0)
- {
- long i = longval ();
- if (i != ((long) (sizeof (double))))
- exit (1);
- fprintf (f, "%ld\n", i);
- }
- else
- {
- unsigned long i = ulongval ();
- if (i != ((long) (sizeof (double))))
- exit (1);
- fprintf (f, "%lu\n", i);
- }
- exit (ferror (f) || fclose (f) != 0);
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_sizeof_double=`cat conftest.val`
-else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-( exit $ac_status )
-{ { echo "$as_me:$LINENO: error: cannot compute sizeof (double), 77
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot compute sizeof (double), 77
-See \`config.log' for more details." >&2;}
- { (exit 1); exit 1; }; }
-fi
-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-fi
-rm -f conftest.val
-else
- ac_cv_sizeof_double=0
-fi
-fi
-echo "$as_me:$LINENO: result: $ac_cv_sizeof_double" >&5
-echo "${ECHO_T}$ac_cv_sizeof_double" >&6
-cat >>confdefs.h <<_ACEOF
-#define SIZEOF_DOUBLE $ac_cv_sizeof_double
-_ACEOF
-
-
-echo "$as_me:$LINENO: checking for void*" >&5
-echo $ECHO_N "checking for void*... $ECHO_C" >&6
-if test "${ac_cv_type_voidp+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-if ((void* *) 0)
- return 0;
-if (sizeof (void*))
- return 0;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_type_voidp=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_type_voidp=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_type_voidp" >&5
-echo "${ECHO_T}$ac_cv_type_voidp" >&6
-
-echo "$as_me:$LINENO: checking size of void*" >&5
-echo $ECHO_N "checking size of void*... $ECHO_C" >&6
-if test "${ac_cv_sizeof_voidp+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if test "$ac_cv_type_voidp" = yes; then
- # The cast to unsigned long works around a bug in the HP C Compiler
- # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
- # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
- # This bug is HP SR number 8606223364.
- if test "$cross_compiling" = yes; then
- # Depending upon the size, compute the lo and hi bounds.
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long) (sizeof (void*))) >= 0)];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_lo=0 ac_mid=0
- while :; do
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long) (sizeof (void*))) <= $ac_mid)];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_hi=$ac_mid; break
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_lo=`expr $ac_mid + 1`
- if test $ac_lo -le $ac_mid; then
- ac_lo= ac_hi=
- break
- fi
- ac_mid=`expr 2 '*' $ac_mid + 1`
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
- done
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long) (sizeof (void*))) < 0)];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_hi=-1 ac_mid=-1
- while :; do
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long) (sizeof (void*))) >= $ac_mid)];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_lo=$ac_mid; break
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_hi=`expr '(' $ac_mid ')' - 1`
- if test $ac_mid -le $ac_hi; then
- ac_lo= ac_hi=
- break
- fi
- ac_mid=`expr 2 '*' $ac_mid`
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
- done
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_lo= ac_hi=
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-# Binary search between lo and hi bounds.
-while test "x$ac_lo" != "x$ac_hi"; do
- ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long) (sizeof (void*))) <= $ac_mid)];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_hi=$ac_mid
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_lo=`expr '(' $ac_mid ')' + 1`
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-done
-case $ac_lo in
-?*) ac_cv_sizeof_voidp=$ac_lo;;
-'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (void*), 77
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot compute sizeof (void*), 77
-See \`config.log' for more details." >&2;}
- { (exit 1); exit 1; }; } ;;
-esac
-else
- if test "$cross_compiling" = yes; then
- { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot run test program while cross compiling
-See \`config.log' for more details." >&2;}
- { (exit 1); exit 1; }; }
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-long longval () { return (long) (sizeof (void*)); }
-unsigned long ulongval () { return (long) (sizeof (void*)); }
-#include <stdio.h>
-#include <stdlib.h>
-int
-main ()
-{
-
- FILE *f = fopen ("conftest.val", "w");
- if (! f)
- exit (1);
- if (((long) (sizeof (void*))) < 0)
- {
- long i = longval ();
- if (i != ((long) (sizeof (void*))))
- exit (1);
- fprintf (f, "%ld\n", i);
- }
- else
- {
- unsigned long i = ulongval ();
- if (i != ((long) (sizeof (void*))))
- exit (1);
- fprintf (f, "%lu\n", i);
- }
- exit (ferror (f) || fclose (f) != 0);
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_sizeof_voidp=`cat conftest.val`
-else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-( exit $ac_status )
-{ { echo "$as_me:$LINENO: error: cannot compute sizeof (void*), 77
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot compute sizeof (void*), 77
-See \`config.log' for more details." >&2;}
- { (exit 1); exit 1; }; }
-fi
-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-fi
-rm -f conftest.val
-else
- ac_cv_sizeof_voidp=0
-fi
-fi
-echo "$as_me:$LINENO: result: $ac_cv_sizeof_voidp" >&5
-echo "${ECHO_T}$ac_cv_sizeof_voidp" >&6
-cat >>confdefs.h <<_ACEOF
-#define SIZEOF_VOIDP $ac_cv_sizeof_voidp
-_ACEOF
-
-
-echo "$as_me:$LINENO: checking for size_t" >&5
-echo $ECHO_N "checking for size_t... $ECHO_C" >&6
-if test "${ac_cv_type_size_t+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-if ((size_t *) 0)
- return 0;
-if (sizeof (size_t))
- return 0;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_type_size_t=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_type_size_t=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5
-echo "${ECHO_T}$ac_cv_type_size_t" >&6
-
-echo "$as_me:$LINENO: checking size of size_t" >&5
-echo $ECHO_N "checking size of size_t... $ECHO_C" >&6
-if test "${ac_cv_sizeof_size_t+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if test "$ac_cv_type_size_t" = yes; then
- # The cast to unsigned long works around a bug in the HP C Compiler
- # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
- # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
- # This bug is HP SR number 8606223364.
- if test "$cross_compiling" = yes; then
- # Depending upon the size, compute the lo and hi bounds.
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long) (sizeof (size_t))) >= 0)];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_lo=0 ac_mid=0
- while :; do
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long) (sizeof (size_t))) <= $ac_mid)];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_hi=$ac_mid; break
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_lo=`expr $ac_mid + 1`
- if test $ac_lo -le $ac_mid; then
- ac_lo= ac_hi=
- break
- fi
- ac_mid=`expr 2 '*' $ac_mid + 1`
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
- done
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long) (sizeof (size_t))) < 0)];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_hi=-1 ac_mid=-1
- while :; do
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long) (sizeof (size_t))) >= $ac_mid)];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_lo=$ac_mid; break
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_hi=`expr '(' $ac_mid ')' - 1`
- if test $ac_mid -le $ac_hi; then
- ac_lo= ac_hi=
- break
- fi
- ac_mid=`expr 2 '*' $ac_mid`
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
- done
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_lo= ac_hi=
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-# Binary search between lo and hi bounds.
-while test "x$ac_lo" != "x$ac_hi"; do
- ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long) (sizeof (size_t))) <= $ac_mid)];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_hi=$ac_mid
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_lo=`expr '(' $ac_mid ')' + 1`
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-done
-case $ac_lo in
-?*) ac_cv_sizeof_size_t=$ac_lo;;
-'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (size_t), 77
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot compute sizeof (size_t), 77
-See \`config.log' for more details." >&2;}
- { (exit 1); exit 1; }; } ;;
-esac
-else
- if test "$cross_compiling" = yes; then
- { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot run test program while cross compiling
-See \`config.log' for more details." >&2;}
- { (exit 1); exit 1; }; }
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-long longval () { return (long) (sizeof (size_t)); }
-unsigned long ulongval () { return (long) (sizeof (size_t)); }
-#include <stdio.h>
-#include <stdlib.h>
-int
-main ()
-{
-
- FILE *f = fopen ("conftest.val", "w");
- if (! f)
- exit (1);
- if (((long) (sizeof (size_t))) < 0)
- {
- long i = longval ();
- if (i != ((long) (sizeof (size_t))))
- exit (1);
- fprintf (f, "%ld\n", i);
- }
- else
- {
- unsigned long i = ulongval ();
- if (i != ((long) (sizeof (size_t))))
- exit (1);
- fprintf (f, "%lu\n", i);
- }
- exit (ferror (f) || fclose (f) != 0);
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_sizeof_size_t=`cat conftest.val`
-else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-( exit $ac_status )
-{ { echo "$as_me:$LINENO: error: cannot compute sizeof (size_t), 77
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot compute sizeof (size_t), 77
-See \`config.log' for more details." >&2;}
- { (exit 1); exit 1; }; }
-fi
-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-fi
-rm -f conftest.val
-else
- ac_cv_sizeof_size_t=0
-fi
-fi
-echo "$as_me:$LINENO: result: $ac_cv_sizeof_size_t" >&5
-echo "${ECHO_T}$ac_cv_sizeof_size_t" >&6
-cat >>confdefs.h <<_ACEOF
-#define SIZEOF_SIZE_T $ac_cv_sizeof_size_t
-_ACEOF
-
-
-echo "$as_me:$LINENO: checking for int64_t" >&5
-echo $ECHO_N "checking for int64_t... $ECHO_C" >&6
-if test "${ac_cv_type_int64_t+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-if ((int64_t *) 0)
- return 0;
-if (sizeof (int64_t))
- return 0;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_type_int64_t=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_type_int64_t=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_type_int64_t" >&5
-echo "${ECHO_T}$ac_cv_type_int64_t" >&6
-
-echo "$as_me:$LINENO: checking size of int64_t" >&5
-echo $ECHO_N "checking size of int64_t... $ECHO_C" >&6
-if test "${ac_cv_sizeof_int64_t+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if test "$ac_cv_type_int64_t" = yes; then
- # The cast to unsigned long works around a bug in the HP C Compiler
- # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
- # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
- # This bug is HP SR number 8606223364.
- if test "$cross_compiling" = yes; then
- # Depending upon the size, compute the lo and hi bounds.
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long) (sizeof (int64_t))) >= 0)];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_lo=0 ac_mid=0
- while :; do
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long) (sizeof (int64_t))) <= $ac_mid)];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_hi=$ac_mid; break
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_lo=`expr $ac_mid + 1`
- if test $ac_lo -le $ac_mid; then
- ac_lo= ac_hi=
- break
- fi
- ac_mid=`expr 2 '*' $ac_mid + 1`
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
- done
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long) (sizeof (int64_t))) < 0)];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_hi=-1 ac_mid=-1
- while :; do
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long) (sizeof (int64_t))) >= $ac_mid)];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_lo=$ac_mid; break
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_hi=`expr '(' $ac_mid ')' - 1`
- if test $ac_mid -le $ac_hi; then
- ac_lo= ac_hi=
- break
- fi
- ac_mid=`expr 2 '*' $ac_mid`
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
- done
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_lo= ac_hi=
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-# Binary search between lo and hi bounds.
-while test "x$ac_lo" != "x$ac_hi"; do
- ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long) (sizeof (int64_t))) <= $ac_mid)];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_hi=$ac_mid
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_lo=`expr '(' $ac_mid ')' + 1`
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-done
-case $ac_lo in
-?*) ac_cv_sizeof_int64_t=$ac_lo;;
-'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (int64_t), 77
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot compute sizeof (int64_t), 77
-See \`config.log' for more details." >&2;}
- { (exit 1); exit 1; }; } ;;
-esac
-else
- if test "$cross_compiling" = yes; then
- { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot run test program while cross compiling
-See \`config.log' for more details." >&2;}
- { (exit 1); exit 1; }; }
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-long longval () { return (long) (sizeof (int64_t)); }
-unsigned long ulongval () { return (long) (sizeof (int64_t)); }
-#include <stdio.h>
-#include <stdlib.h>
-int
-main ()
-{
-
- FILE *f = fopen ("conftest.val", "w");
- if (! f)
- exit (1);
- if (((long) (sizeof (int64_t))) < 0)
- {
- long i = longval ();
- if (i != ((long) (sizeof (int64_t))))
- exit (1);
- fprintf (f, "%ld\n", i);
- }
- else
- {
- unsigned long i = ulongval ();
- if (i != ((long) (sizeof (int64_t))))
- exit (1);
- fprintf (f, "%lu\n", i);
- }
- exit (ferror (f) || fclose (f) != 0);
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_sizeof_int64_t=`cat conftest.val`
-else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-( exit $ac_status )
-{ { echo "$as_me:$LINENO: error: cannot compute sizeof (int64_t), 77
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot compute sizeof (int64_t), 77
-See \`config.log' for more details." >&2;}
- { (exit 1); exit 1; }; }
-fi
-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-fi
-rm -f conftest.val
-else
- ac_cv_sizeof_int64_t=0
-fi
-fi
-echo "$as_me:$LINENO: result: $ac_cv_sizeof_int64_t" >&5
-echo "${ECHO_T}$ac_cv_sizeof_int64_t" >&6
-cat >>confdefs.h <<_ACEOF
-#define SIZEOF_INT64_T $ac_cv_sizeof_int64_t
-_ACEOF
-
-
-echo "$as_me:$LINENO: checking for long long" >&5
-echo $ECHO_N "checking for long long... $ECHO_C" >&6
-if test "${ac_cv_type_long_long+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-if ((long long *) 0)
- return 0;
-if (sizeof (long long))
- return 0;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_type_long_long=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_type_long_long=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_type_long_long" >&5
-echo "${ECHO_T}$ac_cv_type_long_long" >&6
-
-echo "$as_me:$LINENO: checking size of long long" >&5
-echo $ECHO_N "checking size of long long... $ECHO_C" >&6
-if test "${ac_cv_sizeof_long_long+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if test "$ac_cv_type_long_long" = yes; then
- # The cast to unsigned long works around a bug in the HP C Compiler
- # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
- # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
- # This bug is HP SR number 8606223364.
- if test "$cross_compiling" = yes; then
- # Depending upon the size, compute the lo and hi bounds.
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long) (sizeof (long long))) >= 0)];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_lo=0 ac_mid=0
- while :; do
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long) (sizeof (long long))) <= $ac_mid)];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_hi=$ac_mid; break
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_lo=`expr $ac_mid + 1`
- if test $ac_lo -le $ac_mid; then
- ac_lo= ac_hi=
- break
- fi
- ac_mid=`expr 2 '*' $ac_mid + 1`
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
- done
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long) (sizeof (long long))) < 0)];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_hi=-1 ac_mid=-1
- while :; do
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long) (sizeof (long long))) >= $ac_mid)];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_lo=$ac_mid; break
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_hi=`expr '(' $ac_mid ')' - 1`
- if test $ac_mid -le $ac_hi; then
- ac_lo= ac_hi=
- break
- fi
- ac_mid=`expr 2 '*' $ac_mid`
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
- done
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_lo= ac_hi=
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-# Binary search between lo and hi bounds.
-while test "x$ac_lo" != "x$ac_hi"; do
- ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long) (sizeof (long long))) <= $ac_mid)];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_hi=$ac_mid
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_lo=`expr '(' $ac_mid ')' + 1`
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-done
-case $ac_lo in
-?*) ac_cv_sizeof_long_long=$ac_lo;;
-'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (long long), 77
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot compute sizeof (long long), 77
-See \`config.log' for more details." >&2;}
- { (exit 1); exit 1; }; } ;;
-esac
-else
- if test "$cross_compiling" = yes; then
- { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot run test program while cross compiling
-See \`config.log' for more details." >&2;}
- { (exit 1); exit 1; }; }
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-long longval () { return (long) (sizeof (long long)); }
-unsigned long ulongval () { return (long) (sizeof (long long)); }
-#include <stdio.h>
-#include <stdlib.h>
-int
-main ()
-{
-
- FILE *f = fopen ("conftest.val", "w");
- if (! f)
- exit (1);
- if (((long) (sizeof (long long))) < 0)
- {
- long i = longval ();
- if (i != ((long) (sizeof (long long))))
- exit (1);
- fprintf (f, "%ld\n", i);
- }
- else
- {
- unsigned long i = ulongval ();
- if (i != ((long) (sizeof (long long))))
- exit (1);
- fprintf (f, "%lu\n", i);
- }
- exit (ferror (f) || fclose (f) != 0);
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_sizeof_long_long=`cat conftest.val`
-else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-( exit $ac_status )
-{ { echo "$as_me:$LINENO: error: cannot compute sizeof (long long), 77
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot compute sizeof (long long), 77
-See \`config.log' for more details." >&2;}
- { (exit 1); exit 1; }; }
-fi
-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-fi
-rm -f conftest.val
-else
- ac_cv_sizeof_long_long=0
-fi
-fi
-echo "$as_me:$LINENO: result: $ac_cv_sizeof_long_long" >&5
-echo "${ECHO_T}$ac_cv_sizeof_long_long" >&6
-cat >>confdefs.h <<_ACEOF
-#define SIZEOF_LONG_LONG $ac_cv_sizeof_long_long
-_ACEOF
-
-
-
-#====================================================================================
-# Find an appropriate type for sf_count_t.
-# On systems supporting files larger than 2 Gig, sf_count_t must be a 64 bit value.
-# Unfortunately there is more than one way of ensuring this so need to do some
-# pretty rigourous testing here.
-
-unset ac_cv_sizeof_off_t
-
-echo "$as_me:$LINENO: checking for off_t" >&5
-echo $ECHO_N "checking for off_t... $ECHO_C" >&6
-if test "${ac_cv_type_off_t+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-if ((off_t *) 0)
- return 0;
-if (sizeof (off_t))
- return 0;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_type_off_t=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_type_off_t=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_type_off_t" >&5
-echo "${ECHO_T}$ac_cv_type_off_t" >&6
-
-echo "$as_me:$LINENO: checking size of off_t" >&5
-echo $ECHO_N "checking size of off_t... $ECHO_C" >&6
-if test "${ac_cv_sizeof_off_t+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if test "$ac_cv_type_off_t" = yes; then
- # The cast to unsigned long works around a bug in the HP C Compiler
- # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
- # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
- # This bug is HP SR number 8606223364.
- if test "$cross_compiling" = yes; then
- # Depending upon the size, compute the lo and hi bounds.
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long) (sizeof (off_t))) >= 0)];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_lo=0 ac_mid=0
- while :; do
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long) (sizeof (off_t))) <= $ac_mid)];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_hi=$ac_mid; break
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_lo=`expr $ac_mid + 1`
- if test $ac_lo -le $ac_mid; then
- ac_lo= ac_hi=
- break
- fi
- ac_mid=`expr 2 '*' $ac_mid + 1`
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
- done
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long) (sizeof (off_t))) < 0)];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_hi=-1 ac_mid=-1
- while :; do
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long) (sizeof (off_t))) >= $ac_mid)];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_lo=$ac_mid; break
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_hi=`expr '(' $ac_mid ')' - 1`
- if test $ac_mid -le $ac_hi; then
- ac_lo= ac_hi=
- break
- fi
- ac_mid=`expr 2 '*' $ac_mid`
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
- done
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_lo= ac_hi=
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-# Binary search between lo and hi bounds.
-while test "x$ac_lo" != "x$ac_hi"; do
- ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long) (sizeof (off_t))) <= $ac_mid)];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_hi=$ac_mid
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_lo=`expr '(' $ac_mid ')' + 1`
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-done
-case $ac_lo in
-?*) ac_cv_sizeof_off_t=$ac_lo;;
-'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (off_t), 77
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot compute sizeof (off_t), 77
-See \`config.log' for more details." >&2;}
- { (exit 1); exit 1; }; } ;;
-esac
-else
- if test "$cross_compiling" = yes; then
- { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot run test program while cross compiling
-See \`config.log' for more details." >&2;}
- { (exit 1); exit 1; }; }
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-long longval () { return (long) (sizeof (off_t)); }
-unsigned long ulongval () { return (long) (sizeof (off_t)); }
-#include <stdio.h>
-#include <stdlib.h>
-int
-main ()
-{
-
- FILE *f = fopen ("conftest.val", "w");
- if (! f)
- exit (1);
- if (((long) (sizeof (off_t))) < 0)
- {
- long i = longval ();
- if (i != ((long) (sizeof (off_t))))
- exit (1);
- fprintf (f, "%ld\n", i);
- }
- else
- {
- unsigned long i = ulongval ();
- if (i != ((long) (sizeof (off_t))))
- exit (1);
- fprintf (f, "%lu\n", i);
- }
- exit (ferror (f) || fclose (f) != 0);
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_sizeof_off_t=`cat conftest.val`
-else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-( exit $ac_status )
-{ { echo "$as_me:$LINENO: error: cannot compute sizeof (off_t), 77
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot compute sizeof (off_t), 77
-See \`config.log' for more details." >&2;}
- { (exit 1); exit 1; }; }
-fi
-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-fi
-rm -f conftest.val
-else
- ac_cv_sizeof_off_t=0
-fi
-fi
-echo "$as_me:$LINENO: result: $ac_cv_sizeof_off_t" >&5
-echo "${ECHO_T}$ac_cv_sizeof_off_t" >&6
-cat >>confdefs.h <<_ACEOF
-#define SIZEOF_OFF_T $ac_cv_sizeof_off_t
-_ACEOF
-
- # Fake default value.
-
-case "$host_os" in
- mingw*)
- TYPEOF_SF_COUNT_T="__int64"
- SF_COUNT_MAX="0x7FFFFFFFFFFFFFFFLL"
- SIZEOF_SF_COUNT_T=8
- ;;
- *)
- if test "x$ac_cv_sizeof_off_t" = "x8" ; then
- # If sizeof (off_t) is 8, no further checking is needed.
- TYPEOF_SF_COUNT_T="off_t"
- SF_COUNT_MAX="0x7FFFFFFFFFFFFFFFLL"
- SIZEOF_SF_COUNT_T=8
- else
- # Check for common 64 bit file offset types.
- echo "$as_me:$LINENO: checking for loff_t" >&5
-echo $ECHO_N "checking for loff_t... $ECHO_C" >&6
-if test "${ac_cv_type_loff_t+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-if ((loff_t *) 0)
- return 0;
-if (sizeof (loff_t))
- return 0;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_type_loff_t=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_type_loff_t=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_type_loff_t" >&5
-echo "${ECHO_T}$ac_cv_type_loff_t" >&6
-
-echo "$as_me:$LINENO: checking size of loff_t" >&5
-echo $ECHO_N "checking size of loff_t... $ECHO_C" >&6
-if test "${ac_cv_sizeof_loff_t+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if test "$ac_cv_type_loff_t" = yes; then
- # The cast to unsigned long works around a bug in the HP C Compiler
- # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
- # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
- # This bug is HP SR number 8606223364.
- if test "$cross_compiling" = yes; then
- # Depending upon the size, compute the lo and hi bounds.
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long) (sizeof (loff_t))) >= 0)];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_lo=0 ac_mid=0
- while :; do
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long) (sizeof (loff_t))) <= $ac_mid)];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_hi=$ac_mid; break
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_lo=`expr $ac_mid + 1`
- if test $ac_lo -le $ac_mid; then
- ac_lo= ac_hi=
- break
- fi
- ac_mid=`expr 2 '*' $ac_mid + 1`
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
- done
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long) (sizeof (loff_t))) < 0)];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_hi=-1 ac_mid=-1
- while :; do
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long) (sizeof (loff_t))) >= $ac_mid)];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_lo=$ac_mid; break
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_hi=`expr '(' $ac_mid ')' - 1`
- if test $ac_mid -le $ac_hi; then
- ac_lo= ac_hi=
- break
- fi
- ac_mid=`expr 2 '*' $ac_mid`
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
- done
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_lo= ac_hi=
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-# Binary search between lo and hi bounds.
-while test "x$ac_lo" != "x$ac_hi"; do
- ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long) (sizeof (loff_t))) <= $ac_mid)];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_hi=$ac_mid
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_lo=`expr '(' $ac_mid ')' + 1`
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-done
-case $ac_lo in
-?*) ac_cv_sizeof_loff_t=$ac_lo;;
-'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (loff_t), 77
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot compute sizeof (loff_t), 77
-See \`config.log' for more details." >&2;}
- { (exit 1); exit 1; }; } ;;
-esac
-else
- if test "$cross_compiling" = yes; then
- { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot run test program while cross compiling
-See \`config.log' for more details." >&2;}
- { (exit 1); exit 1; }; }
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-long longval () { return (long) (sizeof (loff_t)); }
-unsigned long ulongval () { return (long) (sizeof (loff_t)); }
-#include <stdio.h>
-#include <stdlib.h>
-int
-main ()
-{
-
- FILE *f = fopen ("conftest.val", "w");
- if (! f)
- exit (1);
- if (((long) (sizeof (loff_t))) < 0)
- {
- long i = longval ();
- if (i != ((long) (sizeof (loff_t))))
- exit (1);
- fprintf (f, "%ld\n", i);
- }
- else
- {
- unsigned long i = ulongval ();
- if (i != ((long) (sizeof (loff_t))))
- exit (1);
- fprintf (f, "%lu\n", i);
- }
- exit (ferror (f) || fclose (f) != 0);
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_sizeof_loff_t=`cat conftest.val`
-else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-( exit $ac_status )
-{ { echo "$as_me:$LINENO: error: cannot compute sizeof (loff_t), 77
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot compute sizeof (loff_t), 77
-See \`config.log' for more details." >&2;}
- { (exit 1); exit 1; }; }
-fi
-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-fi
-rm -f conftest.val
-else
- ac_cv_sizeof_loff_t=0
-fi
-fi
-echo "$as_me:$LINENO: result: $ac_cv_sizeof_loff_t" >&5
-echo "${ECHO_T}$ac_cv_sizeof_loff_t" >&6
-cat >>confdefs.h <<_ACEOF
-#define SIZEOF_LOFF_T $ac_cv_sizeof_loff_t
-_ACEOF
-
- # Fake default value.
- echo "$as_me:$LINENO: checking for off64_t" >&5
-echo $ECHO_N "checking for off64_t... $ECHO_C" >&6
-if test "${ac_cv_type_off64_t+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-if ((off64_t *) 0)
- return 0;
-if (sizeof (off64_t))
- return 0;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_type_off64_t=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_type_off64_t=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_type_off64_t" >&5
-echo "${ECHO_T}$ac_cv_type_off64_t" >&6
-
-echo "$as_me:$LINENO: checking size of off64_t" >&5
-echo $ECHO_N "checking size of off64_t... $ECHO_C" >&6
-if test "${ac_cv_sizeof_off64_t+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if test "$ac_cv_type_off64_t" = yes; then
- # The cast to unsigned long works around a bug in the HP C Compiler
- # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
- # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
- # This bug is HP SR number 8606223364.
- if test "$cross_compiling" = yes; then
- # Depending upon the size, compute the lo and hi bounds.
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long) (sizeof (off64_t))) >= 0)];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_lo=0 ac_mid=0
- while :; do
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long) (sizeof (off64_t))) <= $ac_mid)];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_hi=$ac_mid; break
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_lo=`expr $ac_mid + 1`
- if test $ac_lo -le $ac_mid; then
- ac_lo= ac_hi=
- break
- fi
- ac_mid=`expr 2 '*' $ac_mid + 1`
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
- done
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long) (sizeof (off64_t))) < 0)];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_hi=-1 ac_mid=-1
- while :; do
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long) (sizeof (off64_t))) >= $ac_mid)];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_lo=$ac_mid; break
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_hi=`expr '(' $ac_mid ')' - 1`
- if test $ac_mid -le $ac_hi; then
- ac_lo= ac_hi=
- break
- fi
- ac_mid=`expr 2 '*' $ac_mid`
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
- done
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_lo= ac_hi=
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-# Binary search between lo and hi bounds.
-while test "x$ac_lo" != "x$ac_hi"; do
- ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long) (sizeof (off64_t))) <= $ac_mid)];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_hi=$ac_mid
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_lo=`expr '(' $ac_mid ')' + 1`
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-done
-case $ac_lo in
-?*) ac_cv_sizeof_off64_t=$ac_lo;;
-'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (off64_t), 77
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot compute sizeof (off64_t), 77
-See \`config.log' for more details." >&2;}
- { (exit 1); exit 1; }; } ;;
-esac
-else
- if test "$cross_compiling" = yes; then
- { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot run test program while cross compiling
-See \`config.log' for more details." >&2;}
- { (exit 1); exit 1; }; }
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-long longval () { return (long) (sizeof (off64_t)); }
-unsigned long ulongval () { return (long) (sizeof (off64_t)); }
-#include <stdio.h>
-#include <stdlib.h>
-int
-main ()
-{
-
- FILE *f = fopen ("conftest.val", "w");
- if (! f)
- exit (1);
- if (((long) (sizeof (off64_t))) < 0)
- {
- long i = longval ();
- if (i != ((long) (sizeof (off64_t))))
- exit (1);
- fprintf (f, "%ld\n", i);
- }
- else
- {
- unsigned long i = ulongval ();
- if (i != ((long) (sizeof (off64_t))))
- exit (1);
- fprintf (f, "%lu\n", i);
- }
- exit (ferror (f) || fclose (f) != 0);
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_sizeof_off64_t=`cat conftest.val`
-else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-( exit $ac_status )
-{ { echo "$as_me:$LINENO: error: cannot compute sizeof (off64_t), 77
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot compute sizeof (off64_t), 77
-See \`config.log' for more details." >&2;}
- { (exit 1); exit 1; }; }
-fi
-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-fi
-rm -f conftest.val
-else
- ac_cv_sizeof_off64_t=0
-fi
-fi
-echo "$as_me:$LINENO: result: $ac_cv_sizeof_off64_t" >&5
-echo "${ECHO_T}$ac_cv_sizeof_off64_t" >&6
-cat >>confdefs.h <<_ACEOF
-#define SIZEOF_OFF64_T $ac_cv_sizeof_off64_t
-_ACEOF
-
- # Fake default value.
-
- TYPEOF_SF_COUNT_T="unknown"
- if test "x$ac_cv_sizeof_loff_t" = "x8" ; then
- TYPEOF_SF_COUNT_T="loff_t"
- SIZEOF_SF_COUNT_T=8
- elif test "x$ac_cv_sizeof_off64_t" = "x8" ; then
- TYPEOF_SF_COUNT_T="off64_t"
- SIZEOF_SF_COUNT_T=8
- fi
-
- # Save the old sizeof (off_t) value and then unset it to see if it
- # changes when Large File Support is enabled.
-
- pre_largefile_sizeof_off_t=$ac_cv_sizeof_off_t
- unset ac_cv_sizeof_off_t
-
-
- # Check whether --enable-largefile or --disable-largefile was given.
-if test "${enable_largefile+set}" = set; then
- enableval="$enable_largefile"
-
-fi;
- if test "$enable_largefile" != no; then
- if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}getconf", so it can be a program name with args.
-set dummy ${ac_tool_prefix}getconf; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_GETCONF+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if test -n "$GETCONF"; then
- ac_cv_prog_GETCONF="$GETCONF" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_GETCONF="${ac_tool_prefix}getconf"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-
-fi
-fi
-GETCONF=$ac_cv_prog_GETCONF
-if test -n "$GETCONF"; then
- echo "$as_me:$LINENO: result: $GETCONF" >&5
-echo "${ECHO_T}$GETCONF" >&6
-else
- echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-fi
-if test -z "$ac_cv_prog_GETCONF"; then
- ac_ct_GETCONF=$GETCONF
- # Extract the first word of "getconf", so it can be a program name with args.
-set dummy getconf; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_ac_ct_GETCONF+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if test -n "$ac_ct_GETCONF"; then
- ac_cv_prog_ac_ct_GETCONF="$ac_ct_GETCONF" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_ac_ct_GETCONF="getconf"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-
-fi
-fi
-ac_ct_GETCONF=$ac_cv_prog_ac_ct_GETCONF
-if test -n "$ac_ct_GETCONF"; then
- echo "$as_me:$LINENO: result: $ac_ct_GETCONF" >&5
-echo "${ECHO_T}$ac_ct_GETCONF" >&6
-else
- echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
- GETCONF=$ac_ct_GETCONF
-else
- GETCONF="$ac_cv_prog_GETCONF"
-fi
-
- echo "$as_me:$LINENO: checking for CFLAGS value to request large file support" >&5
-echo $ECHO_N "checking for CFLAGS value to request large file support... $ECHO_C" >&6
-if test "${ac_cv_sys_largefile_CFLAGS+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- ac_cv_sys_largefile_CFLAGS=`($GETCONF LFS_CFLAGS) 2>/dev/null` || {
- ac_cv_sys_largefile_CFLAGS=no
- case "$host_os" in
- # IRIX 6.2 and later require cc -n32.
- irix6.[2-9]* | irix6.1[0-9]* | irix[7-9].* | irix[1-9][0-9]*)
- if test "$GCC" != yes; then
- ac_cv_sys_largefile_CFLAGS=-n32
- fi
- ac_save_CC="$CC"
- CC="$CC $ac_cv_sys_largefile_CFLAGS"
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- :
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_sys_largefile_CFLAGS=no
-fi
-rm -f conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
- CC="$ac_save_CC"
- esac
- }
-fi
-echo "$as_me:$LINENO: result: $ac_cv_sys_largefile_CFLAGS" >&5
-echo "${ECHO_T}$ac_cv_sys_largefile_CFLAGS" >&6
- echo "$as_me:$LINENO: checking for LDFLAGS value to request large file support" >&5
-echo $ECHO_N "checking for LDFLAGS value to request large file support... $ECHO_C" >&6
-if test "${ac_cv_sys_largefile_LDFLAGS+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- ac_cv_sys_largefile_LDFLAGS=`($GETCONF LFS_LDFLAGS) 2>/dev/null` || {
- ac_cv_sys_largefile_LDFLAGS=no
-
- }
-fi
-echo "$as_me:$LINENO: result: $ac_cv_sys_largefile_LDFLAGS" >&5
-echo "${ECHO_T}$ac_cv_sys_largefile_LDFLAGS" >&6
- echo "$as_me:$LINENO: checking for LIBS value to request large file support" >&5
-echo $ECHO_N "checking for LIBS value to request large file support... $ECHO_C" >&6
-if test "${ac_cv_sys_largefile_LIBS+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- ac_cv_sys_largefile_LIBS=`($GETCONF LFS_LIBS) 2>/dev/null` || {
- ac_cv_sys_largefile_LIBS=no
-
- }
-fi
-echo "$as_me:$LINENO: result: $ac_cv_sys_largefile_LIBS" >&5
-echo "${ECHO_T}$ac_cv_sys_largefile_LIBS" >&6
-
- for ac_flag in $ac_cv_sys_largefile_CFLAGS no; do
- case "$ac_flag" in
- no) ;;
- -D_FILE_OFFSET_BITS=*) ;;
- -D_LARGEFILE_SOURCE | -D_LARGEFILE_SOURCE=*) ;;
- -D_LARGE_FILES | -D_LARGE_FILES=*) ;;
- -D?* | -I?*)
- case "$ac_flag" in
- no) ;;
- ?*)
- case "$CPPFLAGS" in
- '') CPPFLAGS="$ac_flag" ;;
- *) CPPFLAGS=$CPPFLAGS' '"$ac_flag" ;;
- esac ;;
- esac ;;
- *)
- case "$ac_flag" in
- no) ;;
- ?*)
- case "$CFLAGS" in
- '') CFLAGS="$ac_flag" ;;
- *) CFLAGS=$CFLAGS' '"$ac_flag" ;;
- esac ;;
- esac ;;
- esac
- done
- case "$ac_cv_sys_largefile_LDFLAGS" in
- no) ;;
- ?*)
- case "$LDFLAGS" in
- '') LDFLAGS="$ac_cv_sys_largefile_LDFLAGS" ;;
- *) LDFLAGS=$LDFLAGS' '"$ac_cv_sys_largefile_LDFLAGS" ;;
- esac ;;
- esac
- case "$ac_cv_sys_largefile_LIBS" in
- no) ;;
- ?*)
- case "$LIBS" in
- '') LIBS="$ac_cv_sys_largefile_LIBS" ;;
- *) LIBS=$LIBS' '"$ac_cv_sys_largefile_LIBS" ;;
- esac ;;
- esac
- echo "$as_me:$LINENO: checking for _FILE_OFFSET_BITS" >&5
-echo $ECHO_N "checking for _FILE_OFFSET_BITS... $ECHO_C" >&6
-if test "${ac_cv_sys_file_offset_bits+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- ac_cv_sys_file_offset_bits=no
-
- for ac_flag in $ac_cv_sys_largefile_CFLAGS no; do
- case "$ac_flag" in
- -D_FILE_OFFSET_BITS)
- ac_cv_sys_file_offset_bits=1 ;;
- -D_FILE_OFFSET_BITS=*)
- ac_cv_sys_file_offset_bits=`expr " $ac_flag" : '[^=]*=\(.*\)'` ;;
- esac
- done
-
-fi
-echo "$as_me:$LINENO: result: $ac_cv_sys_file_offset_bits" >&5
-echo "${ECHO_T}$ac_cv_sys_file_offset_bits" >&6
- if test "$ac_cv_sys_file_offset_bits" != no; then
-
-cat >>confdefs.h <<_ACEOF
-#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits
-_ACEOF
-
- fi
- case "$host_os" in
- # HP-UX 10.20 and later
- hpux10.[2-9][0-9]* | hpux1[1-9]* | hpux[2-9][0-9]*)
- ac_cv_sys_file_offset_bits=64 ;;
- esac
- echo "$as_me:$LINENO: checking for _LARGEFILE_SOURCE" >&5
-echo $ECHO_N "checking for _LARGEFILE_SOURCE... $ECHO_C" >&6
-if test "${ac_cv_sys_largefile_source+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- ac_cv_sys_largefile_source=no
- case "$host_os" in
- # HP-UX 10.20 and later
- hpux10.[2-9][0-9]* | hpux1[1-9]* | hpux[2-9][0-9]*)
- ac_cv_sys_largefile_source=1 ;;
- esac
- for ac_flag in $ac_cv_sys_largefile_CFLAGS no; do
- case "$ac_flag" in
- -D_LARGEFILE_SOURCE)
- ac_cv_sys_largefile_source=1 ;;
- -D_LARGEFILE_SOURCE=*)
- ac_cv_sys_largefile_source=`expr " $ac_flag" : '[^=]*=\(.*\)'` ;;
- esac
- done
-
-fi
-echo "$as_me:$LINENO: result: $ac_cv_sys_largefile_source" >&5
-echo "${ECHO_T}$ac_cv_sys_largefile_source" >&6
- if test "$ac_cv_sys_largefile_source" != no; then
-
-cat >>confdefs.h <<_ACEOF
-#define _LARGEFILE_SOURCE $ac_cv_sys_largefile_source
-_ACEOF
-
- fi
- echo "$as_me:$LINENO: checking for _LARGE_FILES" >&5
-echo $ECHO_N "checking for _LARGE_FILES... $ECHO_C" >&6
-if test "${ac_cv_sys_large_files+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- ac_cv_sys_large_files=no
- case "$host_os" in
- # AIX 4.2 and later
- aix4.[2-9]* | aix4.1[0-9]* | aix[5-9].* | aix[1-9][0-9]*)
- ac_cv_sys_large_files=1 ;;
- esac
- for ac_flag in $ac_cv_sys_largefile_CFLAGS no; do
- case "$ac_flag" in
- -D_LARGE_FILES)
- ac_cv_sys_large_files=1 ;;
- -D_LARGE_FILES=*)
- ac_cv_sys_large_files=`expr " $ac_flag" : '[^=]*=\(.*\)'` ;;
- esac
- done
-
-fi
-echo "$as_me:$LINENO: result: $ac_cv_sys_large_files" >&5
-echo "${ECHO_T}$ac_cv_sys_large_files" >&6
- if test "$ac_cv_sys_large_files" != no; then
-
-cat >>confdefs.h <<_ACEOF
-#define _LARGE_FILES $ac_cv_sys_large_files
-_ACEOF
-
- fi
- fi
-
-
- if test "x$ac_cv_sys_largefile_CFLAGS" = "xno" ; then
- ac_cv_sys_largefile_CFLAGS=""
- fi
- if test "x$ac_cv_sys_largefile_LDFLAGS" = "xno" ; then
- ac_cv_sys_largefile_LDFLAGS=""
- fi
- if test "x$ac_cv_sys_largefile_LIBS" = "xno" ; then
- ac_cv_sys_largefile_LIBS=""
- fi
-
- echo "$as_me:$LINENO: checking for off_t" >&5
-echo $ECHO_N "checking for off_t... $ECHO_C" >&6
-if test "${ac_cv_type_off_t+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-if ((off_t *) 0)
- return 0;
-if (sizeof (off_t))
- return 0;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_type_off_t=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_type_off_t=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_type_off_t" >&5
-echo "${ECHO_T}$ac_cv_type_off_t" >&6
-
-echo "$as_me:$LINENO: checking size of off_t" >&5
-echo $ECHO_N "checking size of off_t... $ECHO_C" >&6
-if test "${ac_cv_sizeof_off_t+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if test "$ac_cv_type_off_t" = yes; then
- # The cast to unsigned long works around a bug in the HP C Compiler
- # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
- # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
- # This bug is HP SR number 8606223364.
- if test "$cross_compiling" = yes; then
- # Depending upon the size, compute the lo and hi bounds.
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long) (sizeof (off_t))) >= 0)];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_lo=0 ac_mid=0
- while :; do
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long) (sizeof (off_t))) <= $ac_mid)];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_hi=$ac_mid; break
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_lo=`expr $ac_mid + 1`
- if test $ac_lo -le $ac_mid; then
- ac_lo= ac_hi=
- break
- fi
- ac_mid=`expr 2 '*' $ac_mid + 1`
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
- done
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long) (sizeof (off_t))) < 0)];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_hi=-1 ac_mid=-1
- while :; do
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long) (sizeof (off_t))) >= $ac_mid)];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_lo=$ac_mid; break
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_hi=`expr '(' $ac_mid ')' - 1`
- if test $ac_mid -le $ac_hi; then
- ac_lo= ac_hi=
- break
- fi
- ac_mid=`expr 2 '*' $ac_mid`
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
- done
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_lo= ac_hi=
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-# Binary search between lo and hi bounds.
-while test "x$ac_lo" != "x$ac_hi"; do
- ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long) (sizeof (off_t))) <= $ac_mid)];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_hi=$ac_mid
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_lo=`expr '(' $ac_mid ')' + 1`
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-done
-case $ac_lo in
-?*) ac_cv_sizeof_off_t=$ac_lo;;
-'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (off_t), 77
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot compute sizeof (off_t), 77
-See \`config.log' for more details." >&2;}
- { (exit 1); exit 1; }; } ;;
-esac
-else
- if test "$cross_compiling" = yes; then
- { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot run test program while cross compiling
-See \`config.log' for more details." >&2;}
- { (exit 1); exit 1; }; }
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-long longval () { return (long) (sizeof (off_t)); }
-unsigned long ulongval () { return (long) (sizeof (off_t)); }
-#include <stdio.h>
-#include <stdlib.h>
-int
-main ()
-{
-
- FILE *f = fopen ("conftest.val", "w");
- if (! f)
- exit (1);
- if (((long) (sizeof (off_t))) < 0)
- {
- long i = longval ();
- if (i != ((long) (sizeof (off_t))))
- exit (1);
- fprintf (f, "%ld\n", i);
- }
- else
- {
- unsigned long i = ulongval ();
- if (i != ((long) (sizeof (off_t))))
- exit (1);
- fprintf (f, "%lu\n", i);
- }
- exit (ferror (f) || fclose (f) != 0);
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_sizeof_off_t=`cat conftest.val`
-else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-( exit $ac_status )
-{ { echo "$as_me:$LINENO: error: cannot compute sizeof (off_t), 77
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot compute sizeof (off_t), 77
-See \`config.log' for more details." >&2;}
- { (exit 1); exit 1; }; }
-fi
-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-fi
-rm -f conftest.val
-else
- ac_cv_sizeof_off_t=0
-fi
-fi
-echo "$as_me:$LINENO: result: $ac_cv_sizeof_off_t" >&5
-echo "${ECHO_T}$ac_cv_sizeof_off_t" >&6
-cat >>confdefs.h <<_ACEOF
-#define SIZEOF_OFF_T $ac_cv_sizeof_off_t
-_ACEOF
-
- # Fake default value.
-
- if test "x$ac_cv_sizeof_off_t" = "x8" ; then
- SF_COUNT_MAX="0x7FFFFFFFFFFFFFFFLL"
- elif test "x$ac_cv_sizeof_off_t" = "x$pre_largefile_sizeof_off_t" ; then
- { echo "$as_me:$LINENO: WARNING: This machine does not seem to support 64 bit file offsets." >&5
-echo "$as_me: WARNING: This machine does not seem to support 64 bit file offsets." >&2;}
- TYPEOF_SF_COUNT_T="off_t"
- SIZEOF_SF_COUNT_T=$ac_cv_sizeof_off_t
- elif test "x$TYPEOF_SF_COUNT_T" = "xunknown" ; then
- echo
- echo "*** The configure process has determined that this system is capable"
- echo "*** of Large File Support but has not been able to find a type which"
- echo "*** is an unambiguous 64 bit file offset."
- echo "*** Please contact the author to help resolve this problem."
- echo
- { { echo "$as_me:$LINENO: error: Bad file offset type." >&5
-echo "$as_me: error: Bad file offset type." >&2;}
- { (exit 1); exit 1; }; }
- fi
- fi
- ;;
- esac
-
-if test $SIZEOF_SF_COUNT_T = 4 ; then
- SF_COUNT_MAX="0x7FFFFFFF"
- fi
-
-
-cat >>confdefs.h <<_ACEOF
-#define TYPEOF_SF_COUNT_T ${TYPEOF_SF_COUNT_T}
-_ACEOF
-
-
-
-
-cat >>confdefs.h <<_ACEOF
-#define SIZEOF_SF_COUNT_T ${SIZEOF_SF_COUNT_T}
-_ACEOF
-
-
-
-
-cat >>confdefs.h <<_ACEOF
-#define SF_COUNT_MAX ${SF_COUNT_MAX}
-_ACEOF
-
-
-
-echo "$as_me:$LINENO: checking for ssize_t" >&5
-echo $ECHO_N "checking for ssize_t... $ECHO_C" >&6
-if test "${ac_cv_type_ssize_t+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-if ((ssize_t *) 0)
- return 0;
-if (sizeof (ssize_t))
- return 0;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_type_ssize_t=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_type_ssize_t=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_type_ssize_t" >&5
-echo "${ECHO_T}$ac_cv_type_ssize_t" >&6
-if test $ac_cv_type_ssize_t = yes; then
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_SSIZE_T 1
-_ACEOF
-
-
-fi
-
-echo "$as_me:$LINENO: checking for ssize_t" >&5
-echo $ECHO_N "checking for ssize_t... $ECHO_C" >&6
-if test "${ac_cv_type_ssize_t+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-if ((ssize_t *) 0)
- return 0;
-if (sizeof (ssize_t))
- return 0;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_type_ssize_t=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_type_ssize_t=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_type_ssize_t" >&5
-echo "${ECHO_T}$ac_cv_type_ssize_t" >&6
-
-echo "$as_me:$LINENO: checking size of ssize_t" >&5
-echo $ECHO_N "checking size of ssize_t... $ECHO_C" >&6
-if test "${ac_cv_sizeof_ssize_t+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if test "$ac_cv_type_ssize_t" = yes; then
- # The cast to unsigned long works around a bug in the HP C Compiler
- # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
- # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
- # This bug is HP SR number 8606223364.
- if test "$cross_compiling" = yes; then
- # Depending upon the size, compute the lo and hi bounds.
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long) (sizeof (ssize_t))) >= 0)];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_lo=0 ac_mid=0
- while :; do
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long) (sizeof (ssize_t))) <= $ac_mid)];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_hi=$ac_mid; break
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_lo=`expr $ac_mid + 1`
- if test $ac_lo -le $ac_mid; then
- ac_lo= ac_hi=
- break
- fi
- ac_mid=`expr 2 '*' $ac_mid + 1`
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
- done
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long) (sizeof (ssize_t))) < 0)];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_hi=-1 ac_mid=-1
- while :; do
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long) (sizeof (ssize_t))) >= $ac_mid)];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_lo=$ac_mid; break
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_hi=`expr '(' $ac_mid ')' - 1`
- if test $ac_mid -le $ac_hi; then
- ac_lo= ac_hi=
- break
- fi
- ac_mid=`expr 2 '*' $ac_mid`
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
- done
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_lo= ac_hi=
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-# Binary search between lo and hi bounds.
-while test "x$ac_lo" != "x$ac_hi"; do
- ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long) (sizeof (ssize_t))) <= $ac_mid)];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_hi=$ac_mid
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_lo=`expr '(' $ac_mid ')' + 1`
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-done
-case $ac_lo in
-?*) ac_cv_sizeof_ssize_t=$ac_lo;;
-'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (ssize_t), 77
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot compute sizeof (ssize_t), 77
-See \`config.log' for more details." >&2;}
- { (exit 1); exit 1; }; } ;;
-esac
-else
- if test "$cross_compiling" = yes; then
- { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot run test program while cross compiling
-See \`config.log' for more details." >&2;}
- { (exit 1); exit 1; }; }
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-long longval () { return (long) (sizeof (ssize_t)); }
-unsigned long ulongval () { return (long) (sizeof (ssize_t)); }
-#include <stdio.h>
-#include <stdlib.h>
-int
-main ()
-{
-
- FILE *f = fopen ("conftest.val", "w");
- if (! f)
- exit (1);
- if (((long) (sizeof (ssize_t))) < 0)
- {
- long i = longval ();
- if (i != ((long) (sizeof (ssize_t))))
- exit (1);
- fprintf (f, "%ld\n", i);
- }
- else
- {
- unsigned long i = ulongval ();
- if (i != ((long) (sizeof (ssize_t))))
- exit (1);
- fprintf (f, "%lu\n", i);
- }
- exit (ferror (f) || fclose (f) != 0);
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_sizeof_ssize_t=`cat conftest.val`
-else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-( exit $ac_status )
-{ { echo "$as_me:$LINENO: error: cannot compute sizeof (ssize_t), 77
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot compute sizeof (ssize_t), 77
-See \`config.log' for more details." >&2;}
- { (exit 1); exit 1; }; }
-fi
-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-fi
-rm -f conftest.val
-else
- ac_cv_sizeof_ssize_t=0
-fi
-fi
-echo "$as_me:$LINENO: result: $ac_cv_sizeof_ssize_t" >&5
-echo "${ECHO_T}$ac_cv_sizeof_ssize_t" >&6
-cat >>confdefs.h <<_ACEOF
-#define SIZEOF_SSIZE_T $ac_cv_sizeof_ssize_t
-_ACEOF
-
-
-
-#====================================================================================
-# Determine endian-ness of target processor.
-
-echo "$as_me:$LINENO: checking processor byte ordering" >&5
-echo $ECHO_N "checking processor byte ordering... $ECHO_C" >&6
-if test "${ac_cv_c_byte_order+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- # Initialize to unknown
-ac_cv_c_byte_order=unknown
-
-if test x$ac_cv_header_endian_h = xyes ; then
-
- # First try <endian.h> which should set BYTE_ORDER.
-
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-
- #include <endian.h>
- #if BYTE_ORDER != LITTLE_ENDIAN
- not big endian
- #endif
-
-int
-main ()
-{
-return 0 ;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_c_byte_order=little
-
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-fi
-rm -f conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-
- #include <endian.h>
- #if BYTE_ORDER != BIG_ENDIAN
- not big endian
- #endif
-
-int
-main ()
-{
-return 0 ;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_c_byte_order=big
-
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-fi
-rm -f conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-
- fi
-
-if test $ac_cv_c_byte_order = unknown ; then
-
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-
- #include <sys/types.h>
- #include <sys/param.h>
- #if !BYTE_ORDER || !BIG_ENDIAN || !LITTLE_ENDIAN
- bogus endian macros
- #endif
-
-int
-main ()
-{
-return 0 ;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-
- #include <sys/types.h>
- #include <sys/param.h>
- #if BYTE_ORDER != LITTLE_ENDIAN
- not big endian
- #endif
-
-int
-main ()
-{
-return 0 ;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_c_byte_order=little
-
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-fi
-rm -f conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-
- #include <sys/types.h>
- #include <sys/param.h>
- #if BYTE_ORDER != LITTLE_ENDIAN
- not big endian
- #endif
-
-int
-main ()
-{
-return 0 ;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_c_byte_order=little
-
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-fi
-rm -f conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-
-
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-fi
-rm -f conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-
- fi
-
-if test $ac_cv_c_byte_order = unknown ; then
- if test $cross_compiling = yes ; then
- # This is the last resort. Try to guess the target processor endian-ness
- # by looking at the target CPU type.
-
- case "$target_cpu" in
- alpha* | i?86* | mipsel* | ia64*)
- ac_cv_c_big_endian=0
- ac_cv_c_little_endian=1
- ;;
-
- m68* | mips* | powerpc* | hppa* | sparc*)
- ac_cv_c_big_endian=1
- ac_cv_c_little_endian=0
- ;;
-
- esac
-
- else
- if test "$cross_compiling" = yes; then
- ac_cv_c_byte_order=unknown
-
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-
- int main (void)
- { /* Are we little or big endian? From Harbison&Steele. */
- union
- { long l ;
- char c [sizeof (long)] ;
- } u ;
- u.l = 1 ;
- return (u.c [sizeof (long) - 1] == 1);
- }
-
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- :
-else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-( exit $ac_status )
-ac_cv_c_byte_order=big
-fi
-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-
- if test "$cross_compiling" = yes; then
- ac_cv_c_byte_order=unknown
-
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-int main (void)
- { /* Are we little or big endian? From Harbison&Steele. */
- union
- { long l ;
- char c [sizeof (long)] ;
- } u ;
- u.l = 1 ;
- return (u.c [0] == 1);
- }
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- :
-else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-( exit $ac_status )
-ac_cv_c_byte_order=little
-fi
-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
- fi
- fi
-
-
-fi
-echo "$as_me:$LINENO: result: $ac_cv_c_byte_order" >&5
-echo "${ECHO_T}$ac_cv_c_byte_order" >&6
-
-
-if test $ac_cv_c_byte_order = big ; then
- ac_cv_c_big_endian=1
- ac_cv_c_little_endian=0
-elif test $ac_cv_c_byte_order = little ; then
- ac_cv_c_big_endian=0
- ac_cv_c_little_endian=1
-else
- ac_cv_c_big_endian=0
- ac_cv_c_little_endian=0
-
- echo "$as_me: WARNING: *****************************************************************" >&2
- echo "$as_me: WARNING: *** Not able to determine endian-ness of target processor. " >&2
- echo "$as_me: WARNING: *** The constants CPU_IS_BIG_ENDIAN and CPU_IS_LITTLE_ENDIAN in " >&2
- echo "$as_me: WARNING: *** src/config.h may need to be hand editied. " >&2
- echo "$as_me: WARNING: *****************************************************************" >&2
- fi
-
-
-
-
-cat >>confdefs.h <<_ACEOF
-#define CPU_IS_BIG_ENDIAN ${ac_cv_c_big_endian}
-_ACEOF
-
-
-cat >>confdefs.h <<_ACEOF
-#define CPU_IS_LITTLE_ENDIAN ${ac_cv_c_little_endian}
-_ACEOF
-
-
-#====================================================================================
-# Check for functions.
-
-
-
-
-
-for ac_func in malloc calloc realloc free
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
- For example, HP-UX 11i <limits.h> declares gettimeofday. */
-#define $ac_func innocuous_$ac_func
-
-/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func (); below.
- Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
- <limits.h> exists even on freestanding compilers. */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char $ac_func ();
-/* The GNU C library defines this for functions which it implements
- to always fail with ENOSYS. Some functions are actually named
- something starting with __ and the normal name is an alias. */
-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- eval "$as_ac_var=yes"
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
- cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-
-
-
-
-
-
-for ac_func in open read write lseek pread pwrite
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
- For example, HP-UX 11i <limits.h> declares gettimeofday. */
-#define $ac_func innocuous_$ac_func
-
-/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func (); below.
- Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
- <limits.h> exists even on freestanding compilers. */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char $ac_func ();
-/* The GNU C library defines this for functions which it implements
- to always fail with ENOSYS. Some functions are actually named
- something starting with __ and the normal name is an alias. */
-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- eval "$as_ac_var=yes"
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
- cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-
-
-
-
-for ac_func in fstat ftruncate fsync fdatasync
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
- For example, HP-UX 11i <limits.h> declares gettimeofday. */
-#define $ac_func innocuous_$ac_func
-
-/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func (); below.
- Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
- <limits.h> exists even on freestanding compilers. */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char $ac_func ();
-/* The GNU C library defines this for functions which it implements
- to always fail with ENOSYS. Some functions are actually named
- something starting with __ and the normal name is an alias. */
-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- eval "$as_ac_var=yes"
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
- cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-
-
-for ac_func in snprintf vsnprintf
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
- For example, HP-UX 11i <limits.h> declares gettimeofday. */
-#define $ac_func innocuous_$ac_func
-
-/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func (); below.
- Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
- <limits.h> exists even on freestanding compilers. */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char $ac_func ();
-/* The GNU C library defines this for functions which it implements
- to always fail with ENOSYS. Some functions are actually named
- something starting with __ and the normal name is an alias. */
-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- eval "$as_ac_var=yes"
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
- cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-
-
-for ac_func in gmtime gmtime_r
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
- For example, HP-UX 11i <limits.h> declares gettimeofday. */
-#define $ac_func innocuous_$ac_func
-
-/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func (); below.
- Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
- <limits.h> exists even on freestanding compilers. */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char $ac_func ();
-/* The GNU C library defines this for functions which it implements
- to always fail with ENOSYS. Some functions are actually named
- something starting with __ and the normal name is an alias. */
-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- eval "$as_ac_var=yes"
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
- cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-
-
-for ac_func in mmap getpagesize
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
- For example, HP-UX 11i <limits.h> declares gettimeofday. */
-#define $ac_func innocuous_$ac_func
-
-/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func (); below.
- Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
- <limits.h> exists even on freestanding compilers. */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char $ac_func ();
-/* The GNU C library defines this for functions which it implements
- to always fail with ENOSYS. Some functions are actually named
- something starting with __ and the normal name is an alias. */
-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- eval "$as_ac_var=yes"
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
- cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-
-for ac_func in setlocale
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
- For example, HP-UX 11i <limits.h> declares gettimeofday. */
-#define $ac_func innocuous_$ac_func
-
-/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func (); below.
- Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
- <limits.h> exists even on freestanding compilers. */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char $ac_func ();
-/* The GNU C library defines this for functions which it implements
- to always fail with ENOSYS. Some functions are actually named
- something starting with __ and the normal name is an alias. */
-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- eval "$as_ac_var=yes"
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
- cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-
-
-echo "$as_me:$LINENO: checking for floor in -lm" >&5
-echo $ECHO_N "checking for floor in -lm... $ECHO_C" >&6
-if test "${ac_cv_lib_m_floor+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-lm $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-
-/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char floor ();
-int
-main ()
-{
-floor ();
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_lib_m_floor=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_lib_m_floor=no
-fi
-rm -f conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_m_floor" >&5
-echo "${ECHO_T}$ac_cv_lib_m_floor" >&6
-if test $ac_cv_lib_m_floor = yes; then
- cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBM 1
-_ACEOF
-
- LIBS="-lm $LIBS"
-
-fi
-
-
-
-
-for ac_func in floor ceil fmod
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
- For example, HP-UX 11i <limits.h> declares gettimeofday. */
-#define $ac_func innocuous_$ac_func
-
-/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func (); below.
- Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
- <limits.h> exists even on freestanding compilers. */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char $ac_func ();
-/* The GNU C library defines this for functions which it implements
- to always fail with ENOSYS. Some functions are actually named
- something starting with __ and the normal name is an alias. */
-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- eval "$as_ac_var=yes"
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
- cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-
-case "$host_os" in
- cygwin*)
- { echo "$as_me:$LINENO: WARNING: Not using built-in lrint() and lrintf() because they are broken on Cygwin." >&5
-echo "$as_me: WARNING: Not using built-in lrint() and lrintf() because they are broken on Cygwin." >&2;}
- ;;
- *)
- echo "$as_me:$LINENO: checking for lrint" >&5
-echo $ECHO_N "checking for lrint... $ECHO_C" >&6
-if test "${ac_cv_c99_lrint+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-lrint_save_CFLAGS=$CFLAGS
-CFLAGS="-O2 -lm"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-
-#define _ISOC9X_SOURCE 1
-#define _ISOC99_SOURCE 1
-#define __USE_ISOC99 1
-#define __USE_ISOC9X 1
-
-#include <math.h>
-
-int
-main ()
-{
-if (!lrint(3.14159)) lrint(2.7183);
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_c99_lrint=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_c99_lrint=no
-fi
-rm -f conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-
-CFLAGS=$lrint_save_CFLAGS
-
-
-fi
-echo "$as_me:$LINENO: result: $ac_cv_c99_lrint" >&5
-echo "${ECHO_T}$ac_cv_c99_lrint" >&6
-
-if test "$ac_cv_c99_lrint" = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_LRINT 1
-_ACEOF
-
-fi
-
- echo "$as_me:$LINENO: checking for lrintf" >&5
-echo $ECHO_N "checking for lrintf... $ECHO_C" >&6
-if test "${ac_cv_c99_lrintf+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-lrintf_save_CFLAGS=$CFLAGS
-CFLAGS="-O2 -lm"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-
-#define _ISOC9X_SOURCE 1
-#define _ISOC99_SOURCE 1
-#define __USE_ISOC99 1
-#define __USE_ISOC9X 1
-
-#include <math.h>
-
-int
-main ()
-{
-if (!lrintf(3.14159)) lrintf(2.7183);
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_c99_lrintf=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_c99_lrintf=no
-fi
-rm -f conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-
-CFLAGS=$lrintf_save_CFLAGS
-
-
-fi
-echo "$as_me:$LINENO: result: $ac_cv_c99_lrintf" >&5
-echo "${ECHO_T}$ac_cv_c99_lrintf" >&6
-
-if test "$ac_cv_c99_lrintf" = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_LRINTF 1
-_ACEOF
-
-fi
-
-
- if test "x$ac_cv_c99_lrint" = "xno" ; then
- if test "x$ac_cv_c99_lrintf" = "xno" ; then
- { echo "$as_me:$LINENO: WARNING: *** Missing C99 standard functions lrint() and lrintf()." >&5
-echo "$as_me: WARNING: *** Missing C99 standard functions lrint() and lrintf()." >&2;}
- { echo "$as_me:$LINENO: WARNING: *** This may cause benign compiler warnings on some systems (ie Solaris)." >&5
-echo "$as_me: WARNING: *** This may cause benign compiler warnings on some systems (ie Solaris)." >&2;}
- fi
- fi
- ;;
- esac
-
-#====================================================================================
-# Check for libsqlite3 (only used in regtest).
-
-ac_cv_sqlite3=no
-if test x$enable_sqlite != xno ; then
-
- succeeded=no
-
- if test -z "$PKG_CONFIG"; then
- # Extract the first word of "pkg-config", so it can be a program name with args.
-set dummy pkg-config; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_path_PKG_CONFIG+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- case $PKG_CONFIG in
- [\\/]* | ?:[\\/]*)
- ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
- ;;
- *)
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-
- test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no"
- ;;
-esac
-fi
-PKG_CONFIG=$ac_cv_path_PKG_CONFIG
-
-if test -n "$PKG_CONFIG"; then
- echo "$as_me:$LINENO: result: $PKG_CONFIG" >&5
-echo "${ECHO_T}$PKG_CONFIG" >&6
-else
- echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
- fi
-
- if test "$PKG_CONFIG" = "no" ; then
- echo "*** The pkg-config script could not be found. Make sure it is"
- echo "*** in your path, or set the PKG_CONFIG environment variable"
- echo "*** to the full path to pkg-config."
- echo "*** Or see http://www.freedesktop.org/software/pkgconfig to get pkg-config."
- else
- PKG_CONFIG_MIN_VERSION=0.9.0
- if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then
- echo "$as_me:$LINENO: checking for sqlite3 >= 3.2" >&5
-echo $ECHO_N "checking for sqlite3 >= 3.2... $ECHO_C" >&6
-
- if $PKG_CONFIG --exists "sqlite3 >= 3.2" ; then
- echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
- succeeded=yes
-
- echo "$as_me:$LINENO: checking SQLITE3_CFLAGS" >&5
-echo $ECHO_N "checking SQLITE3_CFLAGS... $ECHO_C" >&6
- SQLITE3_CFLAGS=`$PKG_CONFIG --cflags "sqlite3 >= 3.2"`
- echo "$as_me:$LINENO: result: $SQLITE3_CFLAGS" >&5
-echo "${ECHO_T}$SQLITE3_CFLAGS" >&6
-
- echo "$as_me:$LINENO: checking SQLITE3_LIBS" >&5
-echo $ECHO_N "checking SQLITE3_LIBS... $ECHO_C" >&6
- SQLITE3_LIBS=`$PKG_CONFIG --libs "sqlite3 >= 3.2"`
- echo "$as_me:$LINENO: result: $SQLITE3_LIBS" >&5
-echo "${ECHO_T}$SQLITE3_LIBS" >&6
- else
- SQLITE3_CFLAGS=""
- SQLITE3_LIBS=""
- ## If we have a custom action on failure, don't print errors, but
- ## do set a variable so people can do so.
- SQLITE3_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "sqlite3 >= 3.2"`
-
- fi
-
-
-
- else
- echo "*** Your version of pkg-config is too old. You need version $PKG_CONFIG_MIN_VERSION or newer."
- echo "*** See http://www.freedesktop.org/software/pkgconfig"
- fi
- fi
-
- if test $succeeded = yes; then
- ac_cv_sqlite3=yes
- else
- ac_cv_sqlite3=no
- fi
-
- fi
-
-if test x$ac_cv_sqlite3 = "xyes" ; then
- HAVE_SQLITE3=1
-else
- HAVE_SQLITE3=0
- fi
-
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_SQLITE3 $HAVE_SQLITE3
-_ACEOF
-
-
-#====================================================================================
-# Determine if the processor can do clipping on float to int conversions.
-
-if test x$enable_cpu_clip != "xno" ; then
- echo "$as_me:$LINENO: checking processor clipping capabilities" >&5
-echo $ECHO_N "checking processor clipping capabilities... $ECHO_C" >&6
-if test "${ac_cv_c_clip_type+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- # Initialize to unknown
-ac_cv_c_clip_positive=unknown
-ac_cv_c_clip_negative=unknown
-
-if test $ac_cv_c_clip_positive = unknown ; then
- if test "$cross_compiling" = yes; then
- ac_cv_c_clip_positive=unknown
-
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-
- #define _ISOC9X_SOURCE 1
- #define _ISOC99_SOURCE 1
- #define __USE_ISOC99 1
- #define __USE_ISOC9X 1
- #include <math.h>
- int main (void)
- { double fval ;
- int k, ival ;
-
- fval = 1.0 * 0x7FFFFFFF ;
- for (k = 0 ; k < 100 ; k++)
- { ival = (lrint (fval)) >> 24 ;
- if (ival != 127)
- return 1 ;
-
- fval *= 1.2499999 ;
- } ;
-
- return 0 ;
- }
-
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_c_clip_positive=yes
-else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-( exit $ac_status )
-ac_cv_c_clip_positive=no
-fi
-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-
- if test "$cross_compiling" = yes; then
- ac_cv_c_clip_negative=unknown
-
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-
- #define _ISOC9X_SOURCE 1
- #define _ISOC99_SOURCE 1
- #define __USE_ISOC99 1
- #define __USE_ISOC9X 1
- #include <math.h>
- int main (void)
- { double fval ;
- int k, ival ;
-
- fval = -8.0 * 0x10000000 ;
- for (k = 0 ; k < 100 ; k++)
- { ival = (lrint (fval)) >> 24 ;
- if (ival != -128)
- return 1 ;
-
- fval *= 1.2499999 ;
- } ;
-
- return 0 ;
- }
-
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_c_clip_negative=yes
-else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-( exit $ac_status )
-ac_cv_c_clip_negative=no
-fi
-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
- fi
-
-if test $ac_cv_c_clip_positive = yes ; then
- ac_cv_c_clip_positive=1
-else
- ac_cv_c_clip_positive=0
- fi
-
-if test $ac_cv_c_clip_negative = yes ; then
- ac_cv_c_clip_negative=1
-else
- ac_cv_c_clip_negative=0
- fi
-
-
-case "$ac_cv_c_clip_positive$ac_cv_c_clip_negative" in
- "00")
- ac_cv_c_clip_type="none"
- ;;
- "10")
- ac_cv_c_clip_type="positive"
- ;;
- "01")
- ac_cv_c_clip_type="negative"
- ;;
- "11")
- ac_cv_c_clip_type="both"
- ;;
- esac
-
-
-
-fi
-echo "$as_me:$LINENO: result: $ac_cv_c_clip_type" >&5
-echo "${ECHO_T}$ac_cv_c_clip_type" >&6
-
-
-
-else
- echo "checking processor clipping capabilities... disabled"
- ac_cv_c_clip_positive=0
- ac_cv_c_clip_negative=0
- fi
-
-
-cat >>confdefs.h <<_ACEOF
-#define CPU_CLIPS_POSITIVE ${ac_cv_c_clip_positive}
-_ACEOF
-
-
-cat >>confdefs.h <<_ACEOF
-#define CPU_CLIPS_NEGATIVE ${ac_cv_c_clip_negative}
-_ACEOF
-
-
-#====================================================================================
-# Target OS specific stuff.
-
-OS_SPECIFIC_CFLAGS=""
-OS_SPECIFIC_LINKS=""
-os_is_win32=0
-os_is_macosx=0
-use_windows_api=0
-
-case "$host_os" in
- darwin* | rhapsody*)
- os_is_macosx=1
- OS_SPECIFIC_CFLAGS="-fpascal-strings -I/Developer/Headers/FlatCarbon"
- OS_SPECIFIC_LINKS="-framework CoreAudio"
- ;;
- mingw*)
- os_is_win32=1
- use_windows_api=1
- OS_SPECIFIC_LINKS="-lwinmm"
- ;;
- cygwin*)
- os_is_win32=1
- OS_SPECIFIC_LINKS="-lwinmm"
- ;;
- esac
-
-
-cat >>confdefs.h <<_ACEOF
-#define OS_IS_WIN32 ${os_is_win32}
-_ACEOF
-
-
-cat >>confdefs.h <<_ACEOF
-#define OS_IS_MACOSX ${os_is_macosx}
-_ACEOF
-
-
-cat >>confdefs.h <<_ACEOF
-#define USE_WINDOWS_API ${use_windows_api}
-_ACEOF
-
-
-#====================================================================================
-# Check for ALSA.
-
-ALSA_LIBS=""
-
-if test x$enable_alsa != xno ; then
-
-for ac_header in alsa/asoundlib.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
- echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-else
- # Is the header compilable?
-echo "$as_me:$LINENO: checking $ac_header usability" >&5
-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_header_compiler=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_header_compiler=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
-
-# Is the header present?
-echo "$as_me:$LINENO: checking $ac_header presence" >&5
-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <$ac_header>
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_c_preproc_warn_flag
- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
- else
- ac_cpp_err=
- fi
-else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
- ac_header_preproc=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
-
-# So? What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
- yes:no: )
- { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
- ac_header_preproc=yes
- ;;
- no:yes:* )
- { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
- (
- cat <<\_ASBOX
-## -------------------------------- ##
-## Report this to ardour@ardour.org ##
-## -------------------------------- ##
-_ASBOX
- ) |
- sed "s/^/$as_me: WARNING: /" >&2
- ;;
-esac
-echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- eval "$as_ac_Header=\$ac_header_preproc"
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-
-fi
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
- cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
- if test x$ac_cv_header_alsa_asoundlib_h = xyes ; then
- ALSA_LIBS="-lasound"
- fi
- fi
-
-#====================================================================================
-# Check for FLAC
-
-FLAC_LIBS=""
-
-if test x$enable_flac != xno ; then
-
-for ac_header in FLAC/all.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
- echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-else
- # Is the header compilable?
-echo "$as_me:$LINENO: checking $ac_header usability" >&5
-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
-
- cat conftest.$ac_ext > blah1.c
-
- echo $CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext > blah1
-
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
-
- cat conftest.err > blah2
-
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_header_compiler=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_header_compiler=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
-
-# Is the header present?
-echo "$as_me:$LINENO: checking $ac_header presence" >&5
-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <$ac_header>
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_c_preproc_warn_flag
- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
- else
- ac_cpp_err=
- fi
-else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
- ac_header_preproc=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
-
-# So? What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
- yes:no: )
- { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
- ac_header_preproc=yes
- ;;
- no:yes:* )
- { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
- (
- cat <<\_ASBOX
-## -------------------------------- ##
-## Report this to ardour@ardour.org ##
-## -------------------------------- ##
-_ASBOX
- ) |
- sed "s/^/$as_me: WARNING: /" >&2
- ;;
-esac
-echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- eval "$as_ac_Header=\$ac_header_preproc"
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-
-fi
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
- cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
- if test x$ac_cv_header_FLAC_all_h = xyes ; then
- echo "$as_me:$LINENO: checking for FLAC__seekable_stream_encoder_set_tell_callback in -lFLAC" >&5
-echo $ECHO_N "checking for FLAC__seekable_stream_encoder_set_tell_callback in -lFLAC... $ECHO_C" >&6
-if test "${ac_cv_lib_FLAC_FLAC__seekable_stream_encoder_set_tell_callback+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-lFLAC $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-
-/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char FLAC__seekable_stream_encoder_set_tell_callback ();
-int
-main ()
-{
-FLAC__seekable_stream_encoder_set_tell_callback ();
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_lib_FLAC_FLAC__seekable_stream_encoder_set_tell_callback=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_lib_FLAC_FLAC__seekable_stream_encoder_set_tell_callback=no
-fi
-rm -f conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_FLAC_FLAC__seekable_stream_encoder_set_tell_callback" >&5
-echo "${ECHO_T}$ac_cv_lib_FLAC_FLAC__seekable_stream_encoder_set_tell_callback" >&6
-if test $ac_cv_lib_FLAC_FLAC__seekable_stream_encoder_set_tell_callback = yes; then
- HAVE_FLAC_1_1_1="yes"
-fi
-
- if test "x$HAVE_FLAC_1_1_1" = xyes ; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_FLAC_1_1_1 1
-_ACEOF
-
- fi
- FLAC_LIBS="-lFLAC"
- fi
- fi
-
-#====================================================================================
-# Test for sanity when cross-compiling.
-
-if test x$cross_compiling = xyes ; then
- { echo "$as_me:$LINENO: WARNING: ******************************************************************" >&5
-echo "$as_me: WARNING: ******************************************************************" >&2;}
- { echo "$as_me:$LINENO: WARNING: *** We are cross-compiling, so have to assume sizeof (short) == 2 " >&5
-echo "$as_me: WARNING: *** We are cross-compiling, so have to assume sizeof (short) == 2 " >&2;}
- { echo "$as_me:$LINENO: WARNING: *** and sizeof (int) == 4. If this is not the case there is no " >&5
-echo "$as_me: WARNING: *** and sizeof (int) == 4. If this is not the case there is no " >&2;}
- { echo "$as_me:$LINENO: WARNING: *** chance of this working. Please contact the mantainer. " >&5
-echo "$as_me: WARNING: *** chance of this working. Please contact the mantainer. " >&2;}
- { echo "$as_me:$LINENO: WARNING: ******************************************************************" >&5
-echo "$as_me: WARNING: ******************************************************************" >&2;}
- fi
-
-if test $ac_cv_sizeof_short != 2 ; then
- { echo "$as_me:$LINENO: WARNING: ******************************************************************" >&5
-echo "$as_me: WARNING: ******************************************************************" >&2;}
- { echo "$as_me:$LINENO: WARNING: *** sizeof (short) != 2. " >&5
-echo "$as_me: WARNING: *** sizeof (short) != 2. " >&2;}
- { echo "$as_me:$LINENO: WARNING: ******************************************************************" >&5
-echo "$as_me: WARNING: ******************************************************************" >&2;}
- fi
-
-if test $ac_cv_sizeof_int != 4 ; then
- { echo "$as_me:$LINENO: WARNING: ******************************************************************" >&5
-echo "$as_me: WARNING: ******************************************************************" >&2;}
- { echo "$as_me:$LINENO: WARNING: *** sizeof (int) != 4 " >&5
-echo "$as_me: WARNING: *** sizeof (int) != 4 " >&2;}
- { echo "$as_me:$LINENO: WARNING: ******************************************************************" >&5
-echo "$as_me: WARNING: ******************************************************************" >&2;}
- fi
-
-if test $ac_cv_sizeof_float != 4 ; then
- { echo "$as_me:$LINENO: WARNING: ******************************************************************" >&5
-echo "$as_me: WARNING: ******************************************************************" >&2;}
- { echo "$as_me:$LINENO: WARNING: *** sizeof (float) != 4. " >&5
-echo "$as_me: WARNING: *** sizeof (float) != 4. " >&2;}
- { echo "$as_me:$LINENO: WARNING: ******************************************************************" >&5
-echo "$as_me: WARNING: ******************************************************************" >&2;}
- fi
-
-if test $ac_cv_sizeof_double != 8 ; then
- { echo "$as_me:$LINENO: WARNING: ******************************************************************" >&5
-echo "$as_me: WARNING: ******************************************************************" >&2;}
- { echo "$as_me:$LINENO: WARNING: *** sizeof (double) != 8. " >&5
-echo "$as_me: WARNING: *** sizeof (double) != 8. " >&2;}
- { echo "$as_me:$LINENO: WARNING: ******************************************************************" >&5
-echo "$as_me: WARNING: ******************************************************************" >&2;}
- fi
-
-if test x"$ac_cv_prog_autogen" = "xno" ; then
- { echo "$as_me:$LINENO: WARNING: Touching files in directory tests/." >&5
-echo "$as_me: WARNING: Touching files in directory tests/." >&2;}
- touch tests/*.c tests/*.h
- fi
-
-#====================================================================================
-# Settings for the HTML documentation.
-
-htmldocdir=$prefix/share/doc/libsndfile1-dev/html
-
-if test $prefix = "NONE" ; then
- htmldocdir=/usr/local/share/doc/libsndfile1-dev/html
-else
- htmldocdir=$prefix/share/doc/libsndfile1-dev/html
- fi
-
-if test x$enable_bow_docs = "xyes" ; then
- HTML_BGCOLOUR="white"
- HTML_FGCOLOUR="black"
-else
- HTML_BGCOLOUR="black"
- HTML_FGCOLOUR="white"
- fi
-
-#====================================================================================
-# Now use the information from the checking stage.
-
-if test x$ac_cv_c_compiler_gnu = xyes ; then
- echo "$as_me:$LINENO: checking if $CC accepts -std=gnu99" >&5
-echo $ECHO_N "checking if $CC accepts -std=gnu99... $ECHO_C" >&6
- ac_add_cflags__old_cflags="$CFLAGS"
- CFLAGS="$CFLAGS -std=gnu99"
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <stdio.h>
-int
-main ()
-{
-printf("Hello, World!\n"); return 0;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
- CFLAGS="$ac_add_cflags__old_cflags"
-fi
-rm -f conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-
-
- CFLAGS="$CFLAGS -W -Wall"
-
- echo "$as_me:$LINENO: checking if $CC accepts -Wdeclaration-after-statement" >&5
-echo $ECHO_N "checking if $CC accepts -Wdeclaration-after-statement... $ECHO_C" >&6
- ac_add_cflags__old_cflags="$CFLAGS"
- CFLAGS="$CFLAGS -Wdeclaration-after-statement"
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <stdio.h>
-int
-main ()
-{
-printf("Hello, World!\n"); return 0;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
- CFLAGS="$ac_add_cflags__old_cflags"
-fi
-rm -f conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-
-
- if test x$enable_gcc_werror = "xyes" ; then
- CFLAGS="-Werror $CFLAGS"
- fi
-
- CFLAGS="$CFLAGS -Wstrict-prototypes -Wmissing-prototypes -Waggregate-return -Wcast-align -Wcast-qual -Wnested-externs -Wshadow -Wbad-function-cast -Wwrite-strings"
- # -Wpointer-arith -Wundef -Wmissing-declarations -Winline -Wconversion"
-
- if test "x$enable_gcc_opt" = "xno" ; then
- temp_CFLAGS=`echo $CFLAGS | sed "s/O2/O0/"`
- CFLAGS=$temp_CFLAGS
- { echo "$as_me:$LINENO: WARNING: *** Compiler optimisations switched off. ***" >&5
-echo "$as_me: WARNING: *** Compiler optimisations switched off. ***" >&2;}
- fi
-
- # OS specific tweaks.
- case "$host_os" in
- darwin* | rhapsody*)
- # Disable -Wall, -pedantic and -Wshadow for Apple Darwin/Rhapsody.
- # System headers on these systems are broken.
- temp_CFLAGS=`echo $CFLAGS | sed "s/-Wall -pedantic//" | sed "s/-Wshadow//" | sed "s/-Waggregate-return//"`
- CFLAGS=$temp_CFLAGS
- SHLIB_VERSION_ARG="-Wl,-exported_symbols_list -Wl,\$(srcdir)/Symbols.darwin"
- ;;
- linux*)
- SHLIB_VERSION_ARG="-Wl,--version-script=\$(srcdir)/Symbols.linux"
- ;;
- mingw*)
- SHLIB_VERSION_ARG="-Wl,\$(srcdir)/libsndfile.def"
- ;;
- cygwin*)
- SHLIB_VERSION_ARG="-Wl,\$(srcdir)/cygsndfile.def"
- ;;
- *)
- ;;
- esac
- if test x$enable_gcc_pipe != "xno" ; then
- CFLAGS="$CFLAGS -pipe"
- fi
-
-
-cat >>confdefs.h <<\_ACEOF
-#define COMPILER_IS_GCC 1
-_ACEOF
-
- GCC_MAJOR_VERSION=`$CC -dumpversion | sed "s/\..*//"`
-
-cat >>confdefs.h <<_ACEOF
-#define GCC_MAJOR_VERSION ${GCC_MAJOR_VERSION}
-_ACEOF
-
- fi
-
-CFLAGS="$CFLAGS $OS_SPECIFIC_CFLAGS"
-
-if test x"$CFLAGS" = x ; then
- echo "Error in configure script. CFLAGS has been screwed up."
- exit
- fi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ac_config_files="$ac_config_files src/sndfile.h sndfile.pc"
-
-cat >confcache <<\_ACEOF
-# This file is a shell script that caches the results of configure
-# tests run on this system so they can be shared between configure
-# scripts and configure runs, see configure's option --config-cache.
-# It is not useful on other systems. If it contains results you don't
-# want to keep, you may remove or edit it.
-#
-# config.status only pays attention to the cache file if you give it
-# the --recheck option to rerun configure.
-#
-# `ac_cv_env_foo' variables (set or unset) will be overridden when
-# loading this file, other *unset* `ac_cv_foo' will be assigned the
-# following values.
-
-_ACEOF
-
-# The following way of writing the cache mishandles newlines in values,
-# but we know of no workaround that is simple, portable, and efficient.
-# So, don't put newlines in cache variables' values.
-# Ultrix sh set writes to stderr and can't be redirected directly,
-# and sets the high bit in the cache file unless we assign to the vars.
-{
- (set) 2>&1 |
- case `(ac_space=' '; set | grep ac_space) 2>&1` in
- *ac_space=\ *)
- # `set' does not quote correctly, so add quotes (double-quote
- # substitution turns \\\\ into \\, and sed turns \\ into \).
- sed -n \
- "s/'/'\\\\''/g;
- s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
- ;;
- *)
- # `set' quotes correctly as required by POSIX, so do not add quotes.
- sed -n \
- "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
- ;;
- esac;
-} |
- sed '
- t clear
- : clear
- s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
- t end
- /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
- : end' >>confcache
-if diff $cache_file confcache >/dev/null 2>&1; then :; else
- if test -w $cache_file; then
- test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file"
- cat confcache >$cache_file
- else
- echo "not updating unwritable cache $cache_file"
- fi
-fi
-rm -f confcache
-
-test "x$prefix" = xNONE && prefix=$ac_default_prefix
-# Let make expand exec_prefix.
-test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
-
-# VPATH may cause trouble with some makes, so we remove $(srcdir),
-# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
-# trailing colons and then remove the whole line if VPATH becomes empty
-# (actually we leave an empty line to preserve line numbers).
-if test "x$srcdir" = x.; then
- ac_vpsub='/^[ ]*VPATH[ ]*=/{
-s/:*\$(srcdir):*/:/;
-s/:*\${srcdir}:*/:/;
-s/:*@srcdir@:*/:/;
-s/^\([^=]*=[ ]*\):*/\1/;
-s/:*$//;
-s/^[^=]*=[ ]*$//;
-}'
-fi
-
-DEFS=-DHAVE_CONFIG_H
-
-ac_libobjs=
-ac_ltlibobjs=
-for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
- # 1. Remove the extension, and $U if already installed.
- ac_i=`echo "$ac_i" |
- sed 's/\$U\././;s/\.o$//;s/\.obj$//'`
- # 2. Add them.
- ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext"
- ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo'
-done
-LIBOBJS=$ac_libobjs
-
-LTLIBOBJS=$ac_ltlibobjs
-
-
-
-: ${CONFIG_STATUS=./config.status}
-ac_clean_files_save=$ac_clean_files
-ac_clean_files="$ac_clean_files $CONFIG_STATUS"
-{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5
-echo "$as_me: creating $CONFIG_STATUS" >&6;}
-cat >$CONFIG_STATUS <<_ACEOF
-#! $SHELL
-# Generated by $as_me.
-# Run this file to recreate the current configuration.
-# Compiler output produced by configure, useful for debugging
-# configure, is in config.log if it exists.
-
-debug=false
-ac_cs_recheck=false
-ac_cs_silent=false
-SHELL=\${CONFIG_SHELL-$SHELL}
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF
-## --------------------- ##
-## M4sh Initialization. ##
-## --------------------- ##
-
-# Be Bourne compatible
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
- emulate sh
- NULLCMD=:
- # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
- # is contrary to our usage. Disable this feature.
- alias -g '${1+"$@"}'='"$@"'
-elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
- set -o posix
-fi
-DUALCASE=1; export DUALCASE # for MKS sh
-
-# Support unset when possible.
-if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
- as_unset=unset
-else
- as_unset=false
-fi
-
-
-# Work around bugs in pre-3.0 UWIN ksh.
-$as_unset ENV MAIL MAILPATH
-PS1='$ '
-PS2='> '
-PS4='+ '
-
-# NLS nuisances.
-for as_var in \
- LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
- LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
- LC_TELEPHONE LC_TIME
-do
- if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
- eval $as_var=C; export $as_var
- else
- $as_unset $as_var
- fi
-done
-
-# Required to use basename.
-if expr a : '\(a\)' >/dev/null 2>&1; then
- as_expr=expr
-else
- as_expr=false
-fi
-
-if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then
- as_basename=basename
-else
- as_basename=false
-fi
-
-
-# Name of the executable.
-as_me=`$as_basename "$0" ||
-$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
- X"$0" : 'X\(//\)$' \| \
- X"$0" : 'X\(/\)$' \| \
- . : '\(.\)' 2>/dev/null ||
-echo X/"$0" |
- sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
- /^X\/\(\/\/\)$/{ s//\1/; q; }
- /^X\/\(\/\).*/{ s//\1/; q; }
- s/.*/./; q'`
-
-
-# PATH needs CR, and LINENO needs CR and PATH.
-# Avoid depending upon Character Ranges.
-as_cr_letters='abcdefghijklmnopqrstuvwxyz'
-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-as_cr_Letters=$as_cr_letters$as_cr_LETTERS
-as_cr_digits='0123456789'
-as_cr_alnum=$as_cr_Letters$as_cr_digits
-
-# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
- echo "#! /bin/sh" >conf$$.sh
- echo "exit 0" >>conf$$.sh
- chmod +x conf$$.sh
- if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
- PATH_SEPARATOR=';'
- else
- PATH_SEPARATOR=:
- fi
- rm -f conf$$.sh
-fi
-
-
- as_lineno_1=$LINENO
- as_lineno_2=$LINENO
- as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
- test "x$as_lineno_1" != "x$as_lineno_2" &&
- test "x$as_lineno_3" = "x$as_lineno_2" || {
- # Find who we are. Look in the path if we contain no path at all
- # relative or not.
- case $0 in
- *[\\/]* ) as_myself=$0 ;;
- *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
-done
-
- ;;
- esac
- # We did not find ourselves, most probably we were run as `sh COMMAND'
- # in which case we are not to be found in the path.
- if test "x$as_myself" = x; then
- as_myself=$0
- fi
- if test ! -f "$as_myself"; then
- { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5
-echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;}
- { (exit 1); exit 1; }; }
- fi
- case $CONFIG_SHELL in
- '')
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for as_base in sh bash ksh sh5; do
- case $as_dir in
- /*)
- if ("$as_dir/$as_base" -c '
- as_lineno_1=$LINENO
- as_lineno_2=$LINENO
- as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
- test "x$as_lineno_1" != "x$as_lineno_2" &&
- test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then
- $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; }
- $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; }
- CONFIG_SHELL=$as_dir/$as_base
- export CONFIG_SHELL
- exec "$CONFIG_SHELL" "$0" ${1+"$@"}
- fi;;
- esac
- done
-done
-;;
- esac
-
- # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
- # uniformly replaced by the line number. The first 'sed' inserts a
- # line-number line before each line; the second 'sed' does the real
- # work. The second script uses 'N' to pair each line-number line
- # with the numbered line, and appends trailing '-' during
- # substitution so that $LINENO is not a special case at line end.
- # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
- # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-)
- sed '=' <$as_myself |
- sed '
- N
- s,$,-,
- : loop
- s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
- t loop
- s,-$,,
- s,^['$as_cr_digits']*\n,,
- ' >$as_me.lineno &&
- chmod +x $as_me.lineno ||
- { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5
-echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;}
- { (exit 1); exit 1; }; }
-
- # Don't try to exec as it changes $[0], causing all sort of problems
- # (the dirname of $[0] is not the place where we might find the
- # original and so on. Autoconf is especially sensible to this).
- . ./$as_me.lineno
- # Exit status is that of the last command.
- exit
-}
-
-
-case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
- *c*,-n*) ECHO_N= ECHO_C='
-' ECHO_T=' ' ;;
- *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;;
- *) ECHO_N= ECHO_C='\c' ECHO_T= ;;
-esac
-
-if expr a : '\(a\)' >/dev/null 2>&1; then
- as_expr=expr
-else
- as_expr=false
-fi
-
-rm -f conf$$ conf$$.exe conf$$.file
-echo >conf$$.file
-if ln -s conf$$.file conf$$ 2>/dev/null; then
- # We could just check for DJGPP; but this test a) works b) is more generic
- # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
- if test -f conf$$.exe; then
- # Don't use ln at all; we don't have any links
- as_ln_s='cp -p'
- else
- as_ln_s='ln -s'
- fi
-elif ln conf$$.file conf$$ 2>/dev/null; then
- as_ln_s=ln
-else
- as_ln_s='cp -p'
-fi
-rm -f conf$$ conf$$.exe conf$$.file
-
-if mkdir -p . 2>/dev/null; then
- as_mkdir_p=:
-else
- test -d ./-p && rmdir ./-p
- as_mkdir_p=false
-fi
-
-as_executable_p="test -f"
-
-# Sed expression to map a string onto a valid CPP name.
-as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
-
-# Sed expression to map a string onto a valid variable name.
-as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
-
-
-# IFS
-# We need space, tab and new line, in precisely that order.
-as_nl='
-'
-IFS=" $as_nl"
-
-# CDPATH.
-$as_unset CDPATH
-
-exec 6>&1
-
-# Open the log real soon, to keep \$[0] and so on meaningful, and to
-# report actual input values of CONFIG_FILES etc. instead of their
-# values after options handling. Logging --version etc. is OK.
-exec 5>>config.log
-{
- echo
- sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
-## Running $as_me. ##
-_ASBOX
-} >&5
-cat >&5 <<_CSEOF
-
-This file was extended by libsndfile $as_me ardour-special, which was
-generated by GNU Autoconf 2.59. Invocation command line was
-
- CONFIG_FILES = $CONFIG_FILES
- CONFIG_HEADERS = $CONFIG_HEADERS
- CONFIG_LINKS = $CONFIG_LINKS
- CONFIG_COMMANDS = $CONFIG_COMMANDS
- $ $0 $@
-
-_CSEOF
-echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5
-echo >&5
-_ACEOF
-
-# Files that config.status was made for.
-if test -n "$ac_config_files"; then
- echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS
-fi
-
-if test -n "$ac_config_headers"; then
- echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS
-fi
-
-if test -n "$ac_config_links"; then
- echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS
-fi
-
-if test -n "$ac_config_commands"; then
- echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS
-fi
-
-cat >>$CONFIG_STATUS <<\_ACEOF
-
-ac_cs_usage="\
-\`$as_me' instantiates files from templates according to the
-current configuration.
-
-Usage: $0 [OPTIONS] [FILE]...
-
- -h, --help print this help, then exit
- -V, --version print version number, then exit
- -q, --quiet do not print progress messages
- -d, --debug don't remove temporary files
- --recheck update $as_me by reconfiguring in the same conditions
- --file=FILE[:TEMPLATE]
- instantiate the configuration file FILE
- --header=FILE[:TEMPLATE]
- instantiate the configuration header FILE
-
-Configuration files:
-$config_files
-
-Configuration headers:
-$config_headers
-
-Report bugs to <bug-autoconf@gnu.org>."
-_ACEOF
-
-cat >>$CONFIG_STATUS <<_ACEOF
-ac_cs_version="\\
-libsndfile config.status ardour-special
-configured by $0, generated by GNU Autoconf 2.59,
- with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
-
-Copyright (C) 2003 Free Software Foundation, Inc.
-This config.status script is free software; the Free Software Foundation
-gives unlimited permission to copy, distribute and modify it."
-srcdir=$srcdir
-INSTALL="$INSTALL"
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF
-# If no file are specified by the user, then we need to provide default
-# value. By we need to know if files were specified by the user.
-ac_need_defaults=:
-while test $# != 0
-do
- case $1 in
- --*=*)
- ac_option=`expr "x$1" : 'x\([^=]*\)='`
- ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'`
- ac_shift=:
- ;;
- -*)
- ac_option=$1
- ac_optarg=$2
- ac_shift=shift
- ;;
- *) # This is not an option, so the user has probably given explicit
- # arguments.
- ac_option=$1
- ac_need_defaults=false;;
- esac
-
- case $ac_option in
- # Handling of the options.
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF
- -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
- ac_cs_recheck=: ;;
- --version | --vers* | -V )
- echo "$ac_cs_version"; exit 0 ;;
- --he | --h)
- # Conflict between --help and --header
- { { echo "$as_me:$LINENO: error: ambiguous option: $1
-Try \`$0 --help' for more information." >&5
-echo "$as_me: error: ambiguous option: $1
-Try \`$0 --help' for more information." >&2;}
- { (exit 1); exit 1; }; };;
- --help | --hel | -h )
- echo "$ac_cs_usage"; exit 0 ;;
- --debug | --d* | -d )
- debug=: ;;
- --file | --fil | --fi | --f )
- $ac_shift
- CONFIG_FILES="$CONFIG_FILES $ac_optarg"
- ac_need_defaults=false;;
- --header | --heade | --head | --hea )
- $ac_shift
- CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg"
- ac_need_defaults=false;;
- -q | -quiet | --quiet | --quie | --qui | --qu | --q \
- | -silent | --silent | --silen | --sile | --sil | --si | --s)
- ac_cs_silent=: ;;
-
- # This is an error.
- -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1
-Try \`$0 --help' for more information." >&5
-echo "$as_me: error: unrecognized option: $1
-Try \`$0 --help' for more information." >&2;}
- { (exit 1); exit 1; }; } ;;
-
- *) ac_config_targets="$ac_config_targets $1" ;;
-
- esac
- shift
-done
-
-ac_configure_extra_args=
-
-if $ac_cs_silent; then
- exec 6>/dev/null
- ac_configure_extra_args="$ac_configure_extra_args --silent"
-fi
-
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF
-if \$ac_cs_recheck; then
- echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6
- exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
-fi
-
-_ACEOF
-
-
-
-
-
-cat >>$CONFIG_STATUS <<\_ACEOF
-for ac_config_target in $ac_config_targets
-do
- case "$ac_config_target" in
- # Handling of arguments.
- "src/sndfile.h" ) CONFIG_FILES="$CONFIG_FILES src/sndfile.h" ;;
- "sndfile.pc" ) CONFIG_FILES="$CONFIG_FILES sndfile.pc" ;;
- "src/config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS src/config.h" ;;
- *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
-echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
- { (exit 1); exit 1; }; };;
- esac
-done
-
-# If the user did not use the arguments to specify the items to instantiate,
-# then the envvar interface is used. Set only those that are not.
-# We use the long form for the default assignment because of an extremely
-# bizarre bug on SunOS 4.1.3.
-if $ac_need_defaults; then
- test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
- test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
-fi
-
-# Have a temporary directory for convenience. Make it in the build tree
-# simply because there is no reason to put it here, and in addition,
-# creating and moving files from /tmp can sometimes cause problems.
-# Create a temporary directory, and hook for its removal unless debugging.
-$debug ||
-{
- trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0
- trap '{ (exit 1); exit 1; }' 1 2 13 15
-}
-
-# Create a (secure) tmp directory for tmp files.
-
-{
- tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` &&
- test -n "$tmp" && test -d "$tmp"
-} ||
-{
- tmp=./confstat$$-$RANDOM
- (umask 077 && mkdir $tmp)
-} ||
-{
- echo "$me: cannot create a temporary directory in ." >&2
- { (exit 1); exit 1; }
-}
-
-_ACEOF
-
-cat >>$CONFIG_STATUS <<_ACEOF
-
-#
-# CONFIG_FILES section.
-#
-
-# No need to generate the scripts if there are no CONFIG_FILES.
-# This happens for instance when ./config.status config.h
-if test -n "\$CONFIG_FILES"; then
- # Protect against being on the right side of a sed subst in config.status.
- sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g;
- s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF
-s,@SHELL@,$SHELL,;t t
-s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t
-s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t
-s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t
-s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t
-s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t
-s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t
-s,@exec_prefix@,$exec_prefix,;t t
-s,@prefix@,$prefix,;t t
-s,@program_transform_name@,$program_transform_name,;t t
-s,@bindir@,$bindir,;t t
-s,@sbindir@,$sbindir,;t t
-s,@libexecdir@,$libexecdir,;t t
-s,@datadir@,$datadir,;t t
-s,@sysconfdir@,$sysconfdir,;t t
-s,@sharedstatedir@,$sharedstatedir,;t t
-s,@localstatedir@,$localstatedir,;t t
-s,@libdir@,$libdir,;t t
-s,@includedir@,$includedir,;t t
-s,@oldincludedir@,$oldincludedir,;t t
-s,@infodir@,$infodir,;t t
-s,@mandir@,$mandir,;t t
-s,@build_alias@,$build_alias,;t t
-s,@host_alias@,$host_alias,;t t
-s,@target_alias@,$target_alias,;t t
-s,@DEFS@,$DEFS,;t t
-s,@ECHO_C@,$ECHO_C,;t t
-s,@ECHO_N@,$ECHO_N,;t t
-s,@ECHO_T@,$ECHO_T,;t t
-s,@LIBS@,$LIBS,;t t
-s,@build@,$build,;t t
-s,@build_cpu@,$build_cpu,;t t
-s,@build_vendor@,$build_vendor,;t t
-s,@build_os@,$build_os,;t t
-s,@host@,$host,;t t
-s,@host_cpu@,$host_cpu,;t t
-s,@host_vendor@,$host_vendor,;t t
-s,@host_os@,$host_os,;t t
-s,@target@,$target,;t t
-s,@target_cpu@,$target_cpu,;t t
-s,@target_vendor@,$target_vendor,;t t
-s,@target_os@,$target_os,;t t
-s,@CC@,$CC,;t t
-s,@CFLAGS@,$CFLAGS,;t t
-s,@LDFLAGS@,$LDFLAGS,;t t
-s,@CPPFLAGS@,$CPPFLAGS,;t t
-s,@ac_ct_CC@,$ac_ct_CC,;t t
-s,@EXEEXT@,$EXEEXT,;t t
-s,@OBJEXT@,$OBJEXT,;t t
-s,@autogen@,$autogen,;t t
-s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t
-s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t
-s,@INSTALL_DATA@,$INSTALL_DATA,;t t
-s,@LN_S@,$LN_S,;t t
-s,@CPP@,$CPP,;t t
-s,@EGREP@,$EGREP,;t t
-s,@GETCONF@,$GETCONF,;t t
-s,@ac_ct_GETCONF@,$ac_ct_GETCONF,;t t
-s,@TYPEOF_SF_COUNT_T@,$TYPEOF_SF_COUNT_T,;t t
-s,@SIZEOF_SF_COUNT_T@,$SIZEOF_SF_COUNT_T,;t t
-s,@SF_COUNT_MAX@,$SF_COUNT_MAX,;t t
-s,@PKG_CONFIG@,$PKG_CONFIG,;t t
-s,@SQLITE3_CFLAGS@,$SQLITE3_CFLAGS,;t t
-s,@SQLITE3_LIBS@,$SQLITE3_LIBS,;t t
-s,@htmldocdir@,$htmldocdir,;t t
-s,@HTML_BGCOLOUR@,$HTML_BGCOLOUR,;t t
-s,@HTML_FGCOLOUR@,$HTML_FGCOLOUR,;t t
-s,@SHLIB_VERSION_ARG@,$SHLIB_VERSION_ARG,;t t
-s,@SHARED_VERSION_INFO@,$SHARED_VERSION_INFO,;t t
-s,@OS_SPECIFIC_CFLAGS@,$OS_SPECIFIC_CFLAGS,;t t
-s,@OS_SPECIFIC_LINKS@,$OS_SPECIFIC_LINKS,;t t
-s,@ALSA_LIBS@,$ALSA_LIBS,;t t
-s,@FLAC_LIBS@,$FLAC_LIBS,;t t
-s,@ENABLE_EXPERIMENTAL_CODE@,$ENABLE_EXPERIMENTAL_CODE,;t t
-s,@COMPILER_IS_GCC@,$COMPILER_IS_GCC,;t t
-s,@GCC_MAJOR_VERSION@,$GCC_MAJOR_VERSION,;t t
-s,@LIBTOOL_DEPS@,$LIBTOOL_DEPS,;t t
-s,@LIBOBJS@,$LIBOBJS,;t t
-s,@LTLIBOBJS@,$LTLIBOBJS,;t t
-CEOF
-
-_ACEOF
-
- cat >>$CONFIG_STATUS <<\_ACEOF
- # Split the substitutions into bite-sized pieces for seds with
- # small command number limits, like on Digital OSF/1 and HP-UX.
- ac_max_sed_lines=48
- ac_sed_frag=1 # Number of current file.
- ac_beg=1 # First line for current file.
- ac_end=$ac_max_sed_lines # Line after last line for current file.
- ac_more_lines=:
- ac_sed_cmds=
- while $ac_more_lines; do
- if test $ac_beg -gt 1; then
- sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
- else
- sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
- fi
- if test ! -s $tmp/subs.frag; then
- ac_more_lines=false
- else
- # The purpose of the label and of the branching condition is to
- # speed up the sed processing (if there are no `@' at all, there
- # is no need to browse any of the substitutions).
- # These are the two extra sed commands mentioned above.
- (echo ':t
- /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed
- if test -z "$ac_sed_cmds"; then
- ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed"
- else
- ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed"
- fi
- ac_sed_frag=`expr $ac_sed_frag + 1`
- ac_beg=$ac_end
- ac_end=`expr $ac_end + $ac_max_sed_lines`
- fi
- done
- if test -z "$ac_sed_cmds"; then
- ac_sed_cmds=cat
- fi
-fi # test -n "$CONFIG_FILES"
-
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF
-for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue
- # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
- case $ac_file in
- - | *:- | *:-:* ) # input from stdin
- cat >$tmp/stdin
- ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
- *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
- * ) ac_file_in=$ac_file.in ;;
- esac
-
- # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories.
- ac_dir=`(dirname "$ac_file") 2>/dev/null ||
-$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$ac_file" : 'X\(//\)[^/]' \| \
- X"$ac_file" : 'X\(//\)$' \| \
- X"$ac_file" : 'X\(/\)' \| \
- . : '\(.\)' 2>/dev/null ||
-echo X"$ac_file" |
- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
- /^X\(\/\/\)[^/].*/{ s//\1/; q; }
- /^X\(\/\/\)$/{ s//\1/; q; }
- /^X\(\/\).*/{ s//\1/; q; }
- s/.*/./; q'`
- { if $as_mkdir_p; then
- mkdir -p "$ac_dir"
- else
- as_dir="$ac_dir"
- as_dirs=
- while test ! -d "$as_dir"; do
- as_dirs="$as_dir $as_dirs"
- as_dir=`(dirname "$as_dir") 2>/dev/null ||
-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$as_dir" : 'X\(//\)[^/]' \| \
- X"$as_dir" : 'X\(//\)$' \| \
- X"$as_dir" : 'X\(/\)' \| \
- . : '\(.\)' 2>/dev/null ||
-echo X"$as_dir" |
- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
- /^X\(\/\/\)[^/].*/{ s//\1/; q; }
- /^X\(\/\/\)$/{ s//\1/; q; }
- /^X\(\/\).*/{ s//\1/; q; }
- s/.*/./; q'`
- done
- test ! -n "$as_dirs" || mkdir $as_dirs
- fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
-echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
- { (exit 1); exit 1; }; }; }
-
- ac_builddir=.
-
-if test "$ac_dir" != .; then
- ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
- # A "../" for each directory in $ac_dir_suffix.
- ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
-else
- ac_dir_suffix= ac_top_builddir=
-fi
-
-case $srcdir in
- .) # No --srcdir option. We are building in place.
- ac_srcdir=.
- if test -z "$ac_top_builddir"; then
- ac_top_srcdir=.
- else
- ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
- fi ;;
- [\\/]* | ?:[\\/]* ) # Absolute path.
- ac_srcdir=$srcdir$ac_dir_suffix;
- ac_top_srcdir=$srcdir ;;
- *) # Relative path.
- ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
- ac_top_srcdir=$ac_top_builddir$srcdir ;;
-esac
-
-# Do not use `cd foo && pwd` to compute absolute paths, because
-# the directories may not exist.
-case `pwd` in
-.) ac_abs_builddir="$ac_dir";;
-*)
- case "$ac_dir" in
- .) ac_abs_builddir=`pwd`;;
- [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
- *) ac_abs_builddir=`pwd`/"$ac_dir";;
- esac;;
-esac
-case $ac_abs_builddir in
-.) ac_abs_top_builddir=${ac_top_builddir}.;;
-*)
- case ${ac_top_builddir}. in
- .) ac_abs_top_builddir=$ac_abs_builddir;;
- [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
- *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
- esac;;
-esac
-case $ac_abs_builddir in
-.) ac_abs_srcdir=$ac_srcdir;;
-*)
- case $ac_srcdir in
- .) ac_abs_srcdir=$ac_abs_builddir;;
- [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
- *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
- esac;;
-esac
-case $ac_abs_builddir in
-.) ac_abs_top_srcdir=$ac_top_srcdir;;
-*)
- case $ac_top_srcdir in
- .) ac_abs_top_srcdir=$ac_abs_builddir;;
- [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
- *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
- esac;;
-esac
-
-
- case $INSTALL in
- [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
- *) ac_INSTALL=$ac_top_builddir$INSTALL ;;
- esac
-
- if test x"$ac_file" != x-; then
- { echo "$as_me:$LINENO: creating $ac_file" >&5
-echo "$as_me: creating $ac_file" >&6;}
- rm -f "$ac_file"
- fi
- # Let's still pretend it is `configure' which instantiates (i.e., don't
- # use $as_me), people would be surprised to read:
- # /* config.h. Generated by config.status. */
- if test x"$ac_file" = x-; then
- configure_input=
- else
- configure_input="$ac_file. "
- fi
- configure_input=$configure_input"Generated from `echo $ac_file_in |
- sed 's,.*/,,'` by configure."
-
- # First look for the input files in the build tree, otherwise in the
- # src tree.
- ac_file_inputs=`IFS=:
- for f in $ac_file_in; do
- case $f in
- -) echo $tmp/stdin ;;
- [\\/$]*)
- # Absolute (can't be DOS-style, as IFS=:)
- test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
-echo "$as_me: error: cannot find input file: $f" >&2;}
- { (exit 1); exit 1; }; }
- echo "$f";;
- *) # Relative
- if test -f "$f"; then
- # Build tree
- echo "$f"
- elif test -f "$srcdir/$f"; then
- # Source tree
- echo "$srcdir/$f"
- else
- # /dev/null tree
- { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
-echo "$as_me: error: cannot find input file: $f" >&2;}
- { (exit 1); exit 1; }; }
- fi;;
- esac
- done` || { (exit 1); exit 1; }
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF
- sed "$ac_vpsub
-$extrasub
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF
-:t
-/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
-s,@configure_input@,$configure_input,;t t
-s,@srcdir@,$ac_srcdir,;t t
-s,@abs_srcdir@,$ac_abs_srcdir,;t t
-s,@top_srcdir@,$ac_top_srcdir,;t t
-s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t
-s,@builddir@,$ac_builddir,;t t
-s,@abs_builddir@,$ac_abs_builddir,;t t
-s,@top_builddir@,$ac_top_builddir,;t t
-s,@abs_top_builddir@,$ac_abs_top_builddir,;t t
-s,@INSTALL@,$ac_INSTALL,;t t
-" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out
- rm -f $tmp/stdin
- if test x"$ac_file" != x-; then
- mv $tmp/out $ac_file
- else
- cat $tmp/out
- rm -f $tmp/out
- fi
-
-done
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF
-
-#
-# CONFIG_HEADER section.
-#
-
-# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where
-# NAME is the cpp macro being defined and VALUE is the value it is being given.
-#
-# ac_d sets the value in "#define NAME VALUE" lines.
-ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)'
-ac_dB='[ ].*$,\1#\2'
-ac_dC=' '
-ac_dD=',;t'
-# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE".
-ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)'
-ac_uB='$,\1#\2define\3'
-ac_uC=' '
-ac_uD=',;t'
-
-for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue
- # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
- case $ac_file in
- - | *:- | *:-:* ) # input from stdin
- cat >$tmp/stdin
- ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
- *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
- * ) ac_file_in=$ac_file.in ;;
- esac
-
- test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5
-echo "$as_me: creating $ac_file" >&6;}
-
- # First look for the input files in the build tree, otherwise in the
- # src tree.
- ac_file_inputs=`IFS=:
- for f in $ac_file_in; do
- case $f in
- -) echo $tmp/stdin ;;
- [\\/$]*)
- # Absolute (can't be DOS-style, as IFS=:)
- test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
-echo "$as_me: error: cannot find input file: $f" >&2;}
- { (exit 1); exit 1; }; }
- # Do quote $f, to prevent DOS paths from being IFS'd.
- echo "$f";;
- *) # Relative
- if test -f "$f"; then
- # Build tree
- echo "$f"
- elif test -f "$srcdir/$f"; then
- # Source tree
- echo "$srcdir/$f"
- else
- # /dev/null tree
- { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
-echo "$as_me: error: cannot find input file: $f" >&2;}
- { (exit 1); exit 1; }; }
- fi;;
- esac
- done` || { (exit 1); exit 1; }
- # Remove the trailing spaces.
- sed 's/[ ]*$//' $ac_file_inputs >$tmp/in
-
-_ACEOF
-
-# Transform confdefs.h into two sed scripts, `conftest.defines' and
-# `conftest.undefs', that substitutes the proper values into
-# config.h.in to produce config.h. The first handles `#define'
-# templates, and the second `#undef' templates.
-# And first: Protect against being on the right side of a sed subst in
-# config.status. Protect against being in an unquoted here document
-# in config.status.
-rm -f conftest.defines conftest.undefs
-# Using a here document instead of a string reduces the quoting nightmare.
-# Putting comments in sed scripts is not portable.
-#
-# `end' is used to avoid that the second main sed command (meant for
-# 0-ary CPP macros) applies to n-ary macro definitions.
-# See the Autoconf documentation for `clear'.
-cat >confdef2sed.sed <<\_ACEOF
-s/[\\&,]/\\&/g
-s,[\\$`],\\&,g
-t clear
-: clear
-s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp
-t end
-s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp
-: end
-_ACEOF
-# If some macros were called several times there might be several times
-# the same #defines, which is useless. Nevertheless, we may not want to
-# sort them, since we want the *last* AC-DEFINE to be honored.
-uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines
-sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs
-rm -f confdef2sed.sed
-
-# This sed command replaces #undef with comments. This is necessary, for
-# example, in the case of _POSIX_SOURCE, which is predefined and required
-# on some systems where configure will not decide to define it.
-cat >>conftest.undefs <<\_ACEOF
-s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */,
-_ACEOF
-
-# Break up conftest.defines because some shells have a limit on the size
-# of here documents, and old seds have small limits too (100 cmds).
-echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS
-echo ' if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS
-echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS
-echo ' :' >>$CONFIG_STATUS
-rm -f conftest.tail
-while grep . conftest.defines >/dev/null
-do
- # Write a limited-size here document to $tmp/defines.sed.
- echo ' cat >$tmp/defines.sed <<CEOF' >>$CONFIG_STATUS
- # Speed up: don't consider the non `#define' lines.
- echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS
- # Work around the forget-to-reset-the-flag bug.
- echo 't clr' >>$CONFIG_STATUS
- echo ': clr' >>$CONFIG_STATUS
- sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS
- echo 'CEOF
- sed -f $tmp/defines.sed $tmp/in >$tmp/out
- rm -f $tmp/in
- mv $tmp/out $tmp/in
-' >>$CONFIG_STATUS
- sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail
- rm -f conftest.defines
- mv conftest.tail conftest.defines
-done
-rm -f conftest.defines
-echo ' fi # grep' >>$CONFIG_STATUS
-echo >>$CONFIG_STATUS
-
-# Break up conftest.undefs because some shells have a limit on the size
-# of here documents, and old seds have small limits too (100 cmds).
-echo ' # Handle all the #undef templates' >>$CONFIG_STATUS
-rm -f conftest.tail
-while grep . conftest.undefs >/dev/null
-do
- # Write a limited-size here document to $tmp/undefs.sed.
- echo ' cat >$tmp/undefs.sed <<CEOF' >>$CONFIG_STATUS
- # Speed up: don't consider the non `#undef'
- echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS
- # Work around the forget-to-reset-the-flag bug.
- echo 't clr' >>$CONFIG_STATUS
- echo ': clr' >>$CONFIG_STATUS
- sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS
- echo 'CEOF
- sed -f $tmp/undefs.sed $tmp/in >$tmp/out
- rm -f $tmp/in
- mv $tmp/out $tmp/in
-' >>$CONFIG_STATUS
- sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail
- rm -f conftest.undefs
- mv conftest.tail conftest.undefs
-done
-rm -f conftest.undefs
-
-cat >>$CONFIG_STATUS <<\_ACEOF
- # Let's still pretend it is `configure' which instantiates (i.e., don't
- # use $as_me), people would be surprised to read:
- # /* config.h. Generated by config.status. */
- if test x"$ac_file" = x-; then
- echo "/* Generated by configure. */" >$tmp/config.h
- else
- echo "/* $ac_file. Generated by configure. */" >$tmp/config.h
- fi
- cat $tmp/in >>$tmp/config.h
- rm -f $tmp/in
- if test x"$ac_file" != x-; then
- if diff $ac_file $tmp/config.h >/dev/null 2>&1; then
- { echo "$as_me:$LINENO: $ac_file is unchanged" >&5
-echo "$as_me: $ac_file is unchanged" >&6;}
- else
- ac_dir=`(dirname "$ac_file") 2>/dev/null ||
-$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$ac_file" : 'X\(//\)[^/]' \| \
- X"$ac_file" : 'X\(//\)$' \| \
- X"$ac_file" : 'X\(/\)' \| \
- . : '\(.\)' 2>/dev/null ||
-echo X"$ac_file" |
- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
- /^X\(\/\/\)[^/].*/{ s//\1/; q; }
- /^X\(\/\/\)$/{ s//\1/; q; }
- /^X\(\/\).*/{ s//\1/; q; }
- s/.*/./; q'`
- { if $as_mkdir_p; then
- mkdir -p "$ac_dir"
- else
- as_dir="$ac_dir"
- as_dirs=
- while test ! -d "$as_dir"; do
- as_dirs="$as_dir $as_dirs"
- as_dir=`(dirname "$as_dir") 2>/dev/null ||
-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$as_dir" : 'X\(//\)[^/]' \| \
- X"$as_dir" : 'X\(//\)$' \| \
- X"$as_dir" : 'X\(/\)' \| \
- . : '\(.\)' 2>/dev/null ||
-echo X"$as_dir" |
- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
- /^X\(\/\/\)[^/].*/{ s//\1/; q; }
- /^X\(\/\/\)$/{ s//\1/; q; }
- /^X\(\/\).*/{ s//\1/; q; }
- s/.*/./; q'`
- done
- test ! -n "$as_dirs" || mkdir $as_dirs
- fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
-echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
- { (exit 1); exit 1; }; }; }
-
- rm -f $ac_file
- mv $tmp/config.h $ac_file
- fi
- else
- cat $tmp/config.h
- rm -f $tmp/config.h
- fi
-done
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF
-
-{ (exit 0); exit 0; }
-_ACEOF
-chmod +x $CONFIG_STATUS
-ac_clean_files=$ac_clean_files_save
-
-
-# configure is writing to config.log, and then calls config.status.
-# config.status does its own redirection, appending to config.log.
-# Unfortunately, on DOS this fails, as config.log is still kept open
-# by configure, so config.status won't be able to write to it; its
-# output is simply discarded. So we exec the FD to /dev/null,
-# effectively closing config.log, so it can be properly (re)opened and
-# appended to by config.status. When coming back to configure, we
-# need to make the FD available again.
-if test "$no_create" != yes; then
- ac_cs_success=:
- ac_config_status_args=
- test "$silent" = yes &&
- ac_config_status_args="$ac_config_status_args --quiet"
- exec 5>/dev/null
- $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
- exec 5>>config.log
- # Use ||, not &&, to avoid exiting from the if with $? = 1, which
- # would make configure fail if this is the last instruction.
- $ac_cs_success || { (exit 1); exit 1; }
-fi
-
-
-#====================================================================================
-
-echo "$as_me:$LINENO: result:
--=-=-=-=-=-=-=-=-=-= Configuration Complete =-=-=-=-=-=-=-=-=-=-
-
- Configuration summary :
-
- Version : ..................... ${VERSION}
- Experimental code : ........... ${enable_experimental:-no}
-" >&5
-echo "${ECHO_T}
--=-=-=-=-=-=-=-=-=-= Configuration Complete =-=-=-=-=-=-=-=-=-=-
-
- Configuration summary :
-
- Version : ..................... ${VERSION}
- Experimental code : ........... ${enable_experimental:-no}
-" >&6
-
-if test x$ac_cv_c_compiler_gnu = xyes ; then
- echo -e " Tools :\n"
- echo " Compiler is GCC : ............. ${ac_cv_c_compiler_gnu}"
- echo " GCC major version : ........... ${GCC_MAJOR_VERSION}"
- if test $GCC_MAJOR_VERSION -lt 3 ; then
- echo -e "\n ** This compiler version allows applications to write"
- echo " ** to static strings within the library."
- echo " ** Compile with GCC version 3.X to avoid this problem."
- fi
- fi
-
-if test $libdir = "\${exec_prefix}/lib" ; then
- libdir="$prefix/lib"
- fi
-
-if test $bindir = "\${exec_prefix}/bin" ; then
- bindir="$prefix/bin"
- fi
-
-echo "$as_me:$LINENO: result:
- Installation directories :
-
- Library directory : ........... $libdir
- Program directory : ........... $bindir
- Pkgconfig directory : ......... $libdir/pkgconfig
- HTML docs directory : ......... $htmldocdir
-" >&5
-echo "${ECHO_T}
- Installation directories :
-
- Library directory : ........... $libdir
- Program directory : ........... $bindir
- Pkgconfig directory : ......... $libdir/pkgconfig
- HTML docs directory : ......... $htmldocdir
-" >&6
-
-if test x$prefix != "x/usr" ; then
- echo "Compiling some other packages against libsndfile may require"
- echo -e "the addition of \"$libdir/pkgconfig\" to the"
- echo -e "PKG_CONFIG_PATH environment variable.\n"
- fi
-
-#====================================================================================
-
diff --git a/libs/libsndfile/configure.ac b/libs/libsndfile/configure.ac
deleted file mode 100644
index c6cb55f36d..0000000000
--- a/libs/libsndfile/configure.ac
+++ /dev/null
@@ -1,541 +0,0 @@
-# Copyright (C) 1999-2006 Erik de Castro Lopo (erikd AT mega-nerd DOT com).
-
-dnl Require autoconf version
-AC_PREREQ(2.59)
-
-AC_INIT([libsndfile],[ardour-special],[ardour@ardour.org])
-AC_CONFIG_SRCDIR([src/sndfile.c])
-AC_CANONICAL_TARGET([])
-
-AC_CONFIG_HEADERS(src/config.h)
-
-AC_LANG([C])
-
-#------------------------------------------------------------------------------------
-# Rules for library version information:
-#
-# 1. Start with version information of `0:0:0' for each libtool library.
-# 2. Update the version information only immediately before a public release of
-# your software. More frequent updates are unnecessary, and only guarantee
-# that the current interface number gets larger faster.
-# 3. If the library source code has changed at all since the last update, then
-# increment revision (`c:r:a' becomes `c:r+1:a').
-# 4. If any interfaces have been added, removed, or changed since the last update,
-# increment current, and set revision to 0.
-# 5. If any interfaces have been added since the last public release, then increment
-# age.
-# 6. If any interfaces have been removed since the last public release, then set age
-# to 0.
-
-SHARED_VERSION_INFO="1:16:0"
-
-AC_PROG_CC
-#AM_PROG_LIBTOOL
-
-AC_CHECK_PROG(autogen, autogen, yes, no)
-
-AC_PROG_INSTALL
-AC_PROG_LN_S
-
-AC_HEADER_STDC
-
-AC_CHECK_HEADERS(endian.h)
-AC_CHECK_HEADERS(byteswap.h)
-AC_CHECK_HEADERS(locale.h)
-AC_CHECK_HEADERS(inttypes.h)
-
-AC_HEADER_SYS_WAIT
-
-AC_CHECK_DECLS(S_IRGRP)
-AC_DEFINE_UNQUOTED([HAVE_DECL_S_IRGRP],${HAVE_DECL_S_IRGRP},
- [Set to 1 if S_IRGRP is defined.])
-
-#====================================================================================
-# Check for support of the struct hack.
-
-AC_C99_FLEXIBLE_ARRAY
-
-if test x$ac_cv_c99_flexible_array = xyes ; then
- AC_DEFINE([HAVE_FLEXIBLE_ARRAY],1, [Set to 1 if the compile supports the struct hack.])
-else
- AC_MSG_WARN([[*** This compiler does not support the 1999 ISO C Standard ***]])
- AC_MSG_WARN([[*** feature known as the flexible array struct member. ***]])
- AC_DEFINE([HAVE_FLEXIBLE_ARRAY],0)
- fi
-
-#====================================================================================
-# Couple of initializations here. Fill in real values later.
-
-SHLIB_VERSION_ARG=""
-
-#====================================================================================
-# Finished checking, handle options.
-
-AC_ARG_ENABLE(experimental,
- AC_HELP_STRING([--enable-experimental], [enable experimental code]))
-
-EXPERIMENTAL_CODE=0
-if test x$enable_experimental = xyes ; then
- EXPERIMENTAL_CODE=1
- fi
-AC_DEFINE_UNQUOTED([ENABLE_EXPERIMENTAL_CODE],${EXPERIMENTAL_CODE}, [Set to 1 to enable experimental code.])
-
-AC_ARG_ENABLE(gcc-werror,
- AC_HELP_STRING([--enable-gcc-werror], [enable -Werror in all Makefiles]))
-
-AC_ARG_ENABLE(gcc-pipe,
- AC_HELP_STRING([--disable-gcc-pipe], [disable gcc -pipe option]))
-
-AC_ARG_ENABLE(gcc-opt,
- AC_HELP_STRING([--disable-gcc-opt], [disable gcc optimisations]))
-
-AC_ARG_ENABLE(cpu-clip,
- AC_HELP_STRING([--disable-cpu-clip], [disable tricky cpu specific clipper]))
-
-AC_ARG_ENABLE(bow-docs,
- AC_HELP_STRING([--enable-bow-docs], [enable black-on-white html docs]))
-
-AC_ARG_ENABLE(sqlite,
- AC_HELP_STRING([--disable-sqlite], [disable use of sqlite]))
-
-AC_ARG_ENABLE(flac,
- AC_HELP_STRING([--disable-flac], [disable use of FLAC]))
-
-AC_ARG_ENABLE(alsa,
- AC_HELP_STRING([--disable-alsa], [disable use of ALSA]))
-
-#====================================================================================
-# Check types and their sizes.
-
-AC_CHECK_SIZEOF(short,2)
-AC_CHECK_SIZEOF(int,4)
-AC_CHECK_SIZEOF(long,4)
-AC_CHECK_SIZEOF(float,4)
-AC_CHECK_SIZEOF(double,4)
-AC_CHECK_SIZEOF(void*,8)
-AC_CHECK_SIZEOF(size_t,4)
-AC_CHECK_SIZEOF(int64_t,8)
-AC_CHECK_SIZEOF(long long,8)
-
-#====================================================================================
-# Find an appropriate type for sf_count_t.
-# On systems supporting files larger than 2 Gig, sf_count_t must be a 64 bit value.
-# Unfortunately there is more than one way of ensuring this so need to do some
-# pretty rigourous testing here.
-
-unset ac_cv_sizeof_off_t
-
-AC_CHECK_SIZEOF(off_t,1) # Fake default value.
-
-case "$host_os" in
- mingw*)
- TYPEOF_SF_COUNT_T="__int64"
- SF_COUNT_MAX="0x7FFFFFFFFFFFFFFFLL"
- SIZEOF_SF_COUNT_T=8
- ;;
- *)
- if test "x$ac_cv_sizeof_off_t" = "x8" ; then
- # If sizeof (off_t) is 8, no further checking is needed.
- TYPEOF_SF_COUNT_T="off_t"
- SF_COUNT_MAX="0x7FFFFFFFFFFFFFFFLL"
- SIZEOF_SF_COUNT_T=8
- else
- # Check for common 64 bit file offset types.
- AC_CHECK_SIZEOF(loff_t,1) # Fake default value.
- AC_CHECK_SIZEOF(off64_t,1) # Fake default value.
-
- TYPEOF_SF_COUNT_T="unknown"
- if test "x$ac_cv_sizeof_loff_t" = "x8" ; then
- TYPEOF_SF_COUNT_T="loff_t"
- SIZEOF_SF_COUNT_T=8
- elif test "x$ac_cv_sizeof_off64_t" = "x8" ; then
- TYPEOF_SF_COUNT_T="off64_t"
- SIZEOF_SF_COUNT_T=8
- fi
-
- # Save the old sizeof (off_t) value and then unset it to see if it
- # changes when Large File Support is enabled.
-
- pre_largefile_sizeof_off_t=$ac_cv_sizeof_off_t
- unset ac_cv_sizeof_off_t
-
- AC_SYS_EXTRA_LARGEFILE
-
- if test "x$ac_cv_sys_largefile_CFLAGS" = "xno" ; then
- ac_cv_sys_largefile_CFLAGS=""
- fi
- if test "x$ac_cv_sys_largefile_LDFLAGS" = "xno" ; then
- ac_cv_sys_largefile_LDFLAGS=""
- fi
- if test "x$ac_cv_sys_largefile_LIBS" = "xno" ; then
- ac_cv_sys_largefile_LIBS=""
- fi
-
- AC_CHECK_SIZEOF(off_t,1) # Fake default value.
-
- if test "x$ac_cv_sizeof_off_t" = "x8" ; then
- SF_COUNT_MAX="0x7FFFFFFFFFFFFFFFLL"
- elif test "x$ac_cv_sizeof_off_t" = "x$pre_largefile_sizeof_off_t" ; then
- AC_MSG_WARN([[This machine does not seem to support 64 bit file offsets.]])
- TYPEOF_SF_COUNT_T="off_t"
- SIZEOF_SF_COUNT_T=$ac_cv_sizeof_off_t
- elif test "x$TYPEOF_SF_COUNT_T" = "xunknown" ; then
- echo
- echo "*** The configure process has determined that this system is capable"
- echo "*** of Large File Support but has not been able to find a type which"
- echo "*** is an unambiguous 64 bit file offset."
- echo "*** Please contact the author to help resolve this problem."
- echo
- AC_MSG_ERROR([[Bad file offset type.]])
- fi
- fi
- ;;
- esac
-
-if test $SIZEOF_SF_COUNT_T = 4 ; then
- SF_COUNT_MAX="0x7FFFFFFF"
- fi
-
-AC_DEFINE_UNQUOTED([TYPEOF_SF_COUNT_T],${TYPEOF_SF_COUNT_T}, [Set to long if unknown.])
-AC_SUBST(TYPEOF_SF_COUNT_T)
-
-AC_DEFINE_UNQUOTED([SIZEOF_SF_COUNT_T],${SIZEOF_SF_COUNT_T}, [Set to sizeof (long) if unknown.])
-AC_SUBST(SIZEOF_SF_COUNT_T)
-
-AC_DEFINE_UNQUOTED([SF_COUNT_MAX],${SF_COUNT_MAX}, [Set to maximum allowed value of sf_count_t type.])
-AC_SUBST(SF_COUNT_MAX)
-
-AC_CHECK_TYPES(ssize_t)
-AC_CHECK_SIZEOF(ssize_t,4)
-
-#====================================================================================
-# Determine endian-ness of target processor.
-
-AC_C_FIND_ENDIAN
-
-AC_DEFINE_UNQUOTED(CPU_IS_BIG_ENDIAN, ${ac_cv_c_big_endian},
- [Target processor is big endian.])
-AC_DEFINE_UNQUOTED(CPU_IS_LITTLE_ENDIAN, ${ac_cv_c_little_endian},
- [Target processor is little endian.])
-
-#====================================================================================
-# Check for functions.
-
-AC_CHECK_FUNCS(malloc calloc realloc free)
-AC_CHECK_FUNCS(open read write lseek pread pwrite)
-AC_CHECK_FUNCS(fstat ftruncate fsync fdatasync)
-AC_CHECK_FUNCS(snprintf vsnprintf)
-AC_CHECK_FUNCS(gmtime gmtime_r)
-AC_CHECK_FUNCS(mmap getpagesize)
-AC_CHECK_FUNCS(setlocale)
-
-AC_CHECK_LIB([m],floor)
-AC_CHECK_FUNCS(floor ceil fmod)
-
-case "$host_os" in
- cygwin*)
- AC_MSG_WARN([[Not using built-in lrint() and lrintf() because they are broken on Cygwin.]])
- ;;
- *)
- AC_C99_FUNC_LRINT
- AC_C99_FUNC_LRINTF
-
- if test "x$ac_cv_c99_lrint" = "xno" ; then
- if test "x$ac_cv_c99_lrintf" = "xno" ; then
- AC_MSG_WARN([[*** Missing C99 standard functions lrint() and lrintf().]])
- AC_MSG_WARN([[*** This may cause benign compiler warnings on some systems (ie Solaris).]])
- fi
- fi
- ;;
- esac
-
-#====================================================================================
-# Check for libsqlite3 (only used in regtest).
-
-ac_cv_sqlite3=no
-if test x$enable_sqlite != xno ; then
- PKG_CHECK_MODULES(SQLITE3, sqlite3 >= 3.2, ac_cv_sqlite3=yes, ac_cv_sqlite3=no)
- fi
-
-if test x$ac_cv_sqlite3 = "xyes" ; then
- HAVE_SQLITE3=1
-else
- HAVE_SQLITE3=0
- fi
-
-AC_DEFINE_UNQUOTED([HAVE_SQLITE3],$HAVE_SQLITE3,[Set to 1 if you have libsqlite3.])
-
-#====================================================================================
-# Determine if the processor can do clipping on float to int conversions.
-
-if test x$enable_cpu_clip != "xno" ; then
- AC_C_CLIP_MODE
-else
- echo "checking processor clipping capabilities... disabled"
- ac_cv_c_clip_positive=0
- ac_cv_c_clip_negative=0
- fi
-
-AC_DEFINE_UNQUOTED(CPU_CLIPS_POSITIVE, ${ac_cv_c_clip_positive},
- [Target processor clips on positive float to int conversion.])
-AC_DEFINE_UNQUOTED(CPU_CLIPS_NEGATIVE, ${ac_cv_c_clip_negative},
- [Target processor clips on negative float to int conversion.])
-
-#====================================================================================
-# Target OS specific stuff.
-
-OS_SPECIFIC_CFLAGS=""
-OS_SPECIFIC_LINKS=""
-os_is_win32=0
-os_is_macosx=0
-use_windows_api=0
-
-case "$host_os" in
- darwin* | rhapsody*)
- os_is_macosx=1
- OS_SPECIFIC_CFLAGS="-fpascal-strings -I/Developer/Headers/FlatCarbon"
- OS_SPECIFIC_LINKS="-framework CoreAudio"
- ;;
- mingw*)
- os_is_win32=1
- use_windows_api=1
- OS_SPECIFIC_LINKS="-lwinmm"
- ;;
- cygwin*)
- os_is_win32=1
- OS_SPECIFIC_LINKS="-lwinmm"
- ;;
- esac
-
-AC_DEFINE_UNQUOTED(OS_IS_WIN32, ${os_is_win32}, [Set to 1 if compiling for Win32])
-AC_DEFINE_UNQUOTED(OS_IS_MACOSX, ${os_is_macosx}, [Set to 1 if compiling for MacOSX])
-AC_DEFINE_UNQUOTED(USE_WINDOWS_API, ${use_windows_api}, [Set to 1 to use the native windows API])
-
-#====================================================================================
-# Check for ALSA.
-
-ALSA_LIBS=""
-
-if test x$enable_alsa != xno ; then
- AC_CHECK_HEADERS(alsa/asoundlib.h)
- if test x$ac_cv_header_alsa_asoundlib_h = xyes ; then
- ALSA_LIBS="-lasound"
- fi
- fi
-
-#====================================================================================
-# Check for FLAC
-
-FLAC_LIBS=""
-
-if test x$enable_flac != xno ; then
- AC_CHECK_HEADERS(FLAC/all.h)
- if test x$ac_cv_header_FLAC_all_h = xyes ; then
- AC_CHECK_LIB(FLAC, FLAC__seekable_stream_encoder_set_tell_callback, HAVE_FLAC_1_1_1="yes")
- if test "x$HAVE_FLAC_1_1_1" = xyes ; then
- AC_DEFINE(HAVE_FLAC_1_1_1, [1], [Define to 1 if you have libflac 1.1.1])
- fi
- FLAC_LIBS="-lFLAC"
- fi
- fi
-
-#====================================================================================
-# Test for sanity when cross-compiling.
-
-if test x$cross_compiling = xyes ; then
- AC_MSG_WARN([[******************************************************************]])
- AC_MSG_WARN([[*** We are cross-compiling, so have to assume sizeof (short) == 2 ]])
- AC_MSG_WARN([[*** and sizeof (int) == 4. If this is not the case there is no ]])
- AC_MSG_WARN([[*** chance of this working. Please contact the mantainer. ]])
- AC_MSG_WARN([[******************************************************************]])
- fi
-
-if test $ac_cv_sizeof_short != 2 ; then
- AC_MSG_WARN([[******************************************************************]])
- AC_MSG_WARN([[*** sizeof (short) != 2. ]])
- AC_MSG_WARN([[******************************************************************]])
- fi
-
-if test $ac_cv_sizeof_int != 4 ; then
- AC_MSG_WARN([[******************************************************************]])
- AC_MSG_WARN([[*** sizeof (int) != 4 ]])
- AC_MSG_WARN([[******************************************************************]])
- fi
-
-if test $ac_cv_sizeof_float != 4 ; then
- AC_MSG_WARN([[******************************************************************]])
- AC_MSG_WARN([[*** sizeof (float) != 4. ]])
- AC_MSG_WARN([[******************************************************************]])
- fi
-
-if test $ac_cv_sizeof_double != 8 ; then
- AC_MSG_WARN([[******************************************************************]])
- AC_MSG_WARN([[*** sizeof (double) != 8. ]])
- AC_MSG_WARN([[******************************************************************]])
- fi
-
-if test x"$ac_cv_prog_autogen" = "xno" ; then
- AC_MSG_WARN([[Touching files in directory tests/.]])
- touch tests/*.c tests/*.h
- fi
-
-#====================================================================================
-# Settings for the HTML documentation.
-
-htmldocdir=$prefix/share/doc/libsndfile1-dev/html
-
-if test $prefix = "NONE" ; then
- htmldocdir=/usr/local/share/doc/libsndfile1-dev/html
-else
- htmldocdir=$prefix/share/doc/libsndfile1-dev/html
- fi
-
-if test x$enable_bow_docs = "xyes" ; then
- HTML_BGCOLOUR="white"
- HTML_FGCOLOUR="black"
-else
- HTML_BGCOLOUR="black"
- HTML_FGCOLOUR="white"
- fi
-
-#====================================================================================
-# Now use the information from the checking stage.
-
-if test x$ac_cv_c_compiler_gnu = xyes ; then
- AC_ADD_CFLAGS(-std=gnu99)
-
- CFLAGS="$CFLAGS -W -Wall"
-
- AC_ADD_CFLAGS(-Wdeclaration-after-statement)
-
- if test x$enable_gcc_werror = "xyes" ; then
- CFLAGS="-Werror $CFLAGS"
- fi
-
- CFLAGS="$CFLAGS -Wstrict-prototypes -Wmissing-prototypes -Waggregate-return -Wcast-align -Wcast-qual -Wnested-externs -Wshadow -Wbad-function-cast -Wwrite-strings"
- # -Wpointer-arith -Wundef -Wmissing-declarations -Winline -Wconversion"
-
- if test "x$enable_gcc_opt" = "xno" ; then
- temp_CFLAGS=`echo $CFLAGS | sed "s/O2/O0/"`
- CFLAGS=$temp_CFLAGS
- AC_MSG_WARN([[*** Compiler optimisations switched off. ***]])
- fi
-
- # OS specific tweaks.
- case "$host_os" in
- darwin* | rhapsody*)
- # Disable -Wall, -pedantic and -Wshadow for Apple Darwin/Rhapsody.
- # System headers on these systems are broken.
- temp_CFLAGS=`echo $CFLAGS | sed "s/-Wall -pedantic//" | sed "s/-Wshadow//" | sed "s/-Waggregate-return//"`
- CFLAGS=$temp_CFLAGS
- SHLIB_VERSION_ARG="-Wl,-exported_symbols_list -Wl,\$(srcdir)/Symbols.darwin"
- ;;
- linux*)
- SHLIB_VERSION_ARG="-Wl,--version-script=\$(srcdir)/Symbols.linux"
- ;;
- mingw*)
- SHLIB_VERSION_ARG="-Wl,\$(srcdir)/libsndfile.def"
- ;;
- cygwin*)
- SHLIB_VERSION_ARG="-Wl,\$(srcdir)/cygsndfile.def"
- ;;
- *)
- ;;
- esac
- if test x$enable_gcc_pipe != "xno" ; then
- CFLAGS="$CFLAGS -pipe"
- fi
-
- AC_DEFINE([COMPILER_IS_GCC],1, [Set to 1 if the compile is GNU GCC.])
- GCC_MAJOR_VERSION=`$CC -dumpversion | sed "s/\..*//"`
- AC_DEFINE_UNQUOTED([GCC_MAJOR_VERSION],${GCC_MAJOR_VERSION}, [Major version of GCC or 3 otherwise.])
- fi
-
-CFLAGS="$CFLAGS $OS_SPECIFIC_CFLAGS"
-
-if test x"$CFLAGS" = x ; then
- echo "Error in configure script. CFLAGS has been screwed up."
- exit
- fi
-
-AC_SUBST(htmldocdir)
-AC_SUBST(HTML_BGCOLOUR)
-AC_SUBST(HTML_FGCOLOUR)
-
-AC_SUBST(SHLIB_VERSION_ARG)
-AC_SUBST(SHARED_VERSION_INFO)
-AC_SUBST(OS_SPECIFIC_CFLAGS)
-AC_SUBST(OS_SPECIFIC_LINKS)
-AC_SUBST(ALSA_LIBS)
-AC_SUBST(FLAC_LIBS)
-AC_SUBST(ENABLE_EXPERIMENTAL_CODE)
-
-AC_SUBST(COMPILER_IS_GCC)
-AC_SUBST(GCC_MAJOR_VERSION)
-
-dnl The following line causes the libtool distributed with the source
-dnl to be replaced if the build system has a more recent version.
-AC_SUBST(LIBTOOL_DEPS)
-
-AC_CONFIG_FILES([ \
- src/sndfile.h
- sndfile.pc \
- ])
-AC_OUTPUT
-
-#====================================================================================
-
-AC_MSG_RESULT([
--=-=-=-=-=-=-=-=-=-= Configuration Complete =-=-=-=-=-=-=-=-=-=-
-
- Configuration summary :
-
- Version : ..................... ${VERSION}
- Experimental code : ........... ${enable_experimental:-no}
-])
-
-if test x$ac_cv_c_compiler_gnu = xyes ; then
- echo -e " Tools :\n"
- echo " Compiler is GCC : ............. ${ac_cv_c_compiler_gnu}"
- echo " GCC major version : ........... ${GCC_MAJOR_VERSION}"
- if test $GCC_MAJOR_VERSION -lt 3 ; then
- echo -e "\n ** This compiler version allows applications to write"
- echo " ** to static strings within the library."
- echo " ** Compile with GCC version 3.X to avoid this problem."
- fi
- fi
-
-if test $libdir = "\${exec_prefix}/lib" ; then
- libdir="$prefix/lib"
- fi
-
-if test $bindir = "\${exec_prefix}/bin" ; then
- bindir="$prefix/bin"
- fi
-
-AC_MSG_RESULT([[
- Installation directories :
-
- Library directory : ........... $libdir
- Program directory : ........... $bindir
- Pkgconfig directory : ......... $libdir/pkgconfig
- HTML docs directory : ......... $htmldocdir
-]])
-
-if test x$prefix != "x/usr" ; then
- echo "Compiling some other packages against libsndfile may require"
- echo -e "the addition of \"$libdir/pkgconfig\" to the"
- echo -e "PKG_CONFIG_PATH environment variable.\n"
- fi
-
-#====================================================================================
-
-ifelse(dnl
-
- Do not edit or modify anything in this comment block.
- The arch-tag line is a file identity tag for the GNU Arch
- revision control system.
-
- arch-tag: 6391b316-6cfc-43c2-a18a-8defdc4ee359
-
-)dnl
diff --git a/libs/libsndfile/depcomp b/libs/libsndfile/depcomp
deleted file mode 100755
index edb5d38efd..0000000000
--- a/libs/libsndfile/depcomp
+++ /dev/null
@@ -1,479 +0,0 @@
-#! /bin/sh
-
-# depcomp - compile a program generating dependencies as side-effects
-# Copyright 1999, 2000, 2003 Free Software Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
-
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
-
-if test -z "$depmode" || test -z "$source" || test -z "$object"; then
- echo "depcomp: Variables source, object and depmode must be set" 1>&2
- exit 1
-fi
-# `libtool' can also be set to `yes' or `no'.
-
-if test -z "$depfile"; then
- base=`echo "$object" | sed -e 's,^.*/,,' -e 's,\.\([^.]*\)$,.P\1,'`
- dir=`echo "$object" | sed 's,/.*$,/,'`
- if test "$dir" = "$object"; then
- dir=
- fi
- # FIXME: should be _deps on DOS.
- depfile="$dir.deps/$base"
-fi
-
-tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
-
-rm -f "$tmpdepfile"
-
-# Some modes work just like other modes, but use different flags. We
-# parameterize here, but still list the modes in the big case below,
-# to make depend.m4 easier to write. Note that we *cannot* use a case
-# here, because this file can only contain one case statement.
-if test "$depmode" = hp; then
- # HP compiler uses -M and no extra arg.
- gccflag=-M
- depmode=gcc
-fi
-
-if test "$depmode" = dashXmstdout; then
- # This is just like dashmstdout with a different argument.
- dashmflag=-xM
- depmode=dashmstdout
-fi
-
-case "$depmode" in
-gcc3)
-## gcc 3 implements dependency tracking that does exactly what
-## we want. Yay! Note: for some reason libtool 1.4 doesn't like
-## it if -MD -MP comes after the -MF stuff. Hmm.
- "$@" -MT "$object" -MD -MP -MF "$tmpdepfile"
- stat=$?
- if test $stat -eq 0; then :
- else
- rm -f "$tmpdepfile"
- exit $stat
- fi
- mv "$tmpdepfile" "$depfile"
- ;;
-
-gcc)
-## There are various ways to get dependency output from gcc. Here's
-## why we pick this rather obscure method:
-## - Don't want to use -MD because we'd like the dependencies to end
-## up in a subdir. Having to rename by hand is ugly.
-## (We might end up doing this anyway to support other compilers.)
-## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
-## -MM, not -M (despite what the docs say).
-## - Using -M directly means running the compiler twice (even worse
-## than renaming).
- if test -z "$gccflag"; then
- gccflag=-MD,
- fi
- "$@" -Wp,"$gccflag$tmpdepfile"
- stat=$?
- if test $stat -eq 0; then :
- else
- rm -f "$tmpdepfile"
- exit $stat
- fi
- rm -f "$depfile"
- echo "$object : \\" > "$depfile"
- alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
-## The second -e expression handles DOS-style file names with drive letters.
- sed -e 's/^[^:]*: / /' \
- -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
-## This next piece of magic avoids the `deleted header file' problem.
-## The problem is that when a header file which appears in a .P file
-## is deleted, the dependency causes make to die (because there is
-## typically no way to rebuild the header). We avoid this by adding
-## dummy dependencies for each header file. Too bad gcc doesn't do
-## this for us directly.
- tr ' ' '
-' < "$tmpdepfile" |
-## Some versions of gcc put a space before the `:'. On the theory
-## that the space means something, we add a space to the output as
-## well.
-## Some versions of the HPUX 10.20 sed can't process this invocation
-## correctly. Breaking it into two sed invocations is a workaround.
- sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
- rm -f "$tmpdepfile"
- ;;
-
-hp)
- # This case exists only to let depend.m4 do its work. It works by
- # looking at the text of this script. This case will never be run,
- # since it is checked for above.
- exit 1
- ;;
-
-sgi)
- if test "$libtool" = yes; then
- "$@" "-Wp,-MDupdate,$tmpdepfile"
- else
- "$@" -MDupdate "$tmpdepfile"
- fi
- stat=$?
- if test $stat -eq 0; then :
- else
- rm -f "$tmpdepfile"
- exit $stat
- fi
- rm -f "$depfile"
-
- if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files
- echo "$object : \\" > "$depfile"
-
- # Clip off the initial element (the dependent). Don't try to be
- # clever and replace this with sed code, as IRIX sed won't handle
- # lines with more than a fixed number of characters (4096 in
- # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines;
- # the IRIX cc adds comments like `#:fec' to the end of the
- # dependency line.
- tr ' ' '
-' < "$tmpdepfile" \
- | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
- tr '
-' ' ' >> $depfile
- echo >> $depfile
-
- # The second pass generates a dummy entry for each header file.
- tr ' ' '
-' < "$tmpdepfile" \
- | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
- >> $depfile
- else
- # The sourcefile does not contain any dependencies, so just
- # store a dummy comment line, to avoid errors with the Makefile
- # "include basename.Plo" scheme.
- echo "#dummy" > "$depfile"
- fi
- rm -f "$tmpdepfile"
- ;;
-
-aix)
- # The C for AIX Compiler uses -M and outputs the dependencies
- # in a .u file. In older versions, this file always lives in the
- # current directory. Also, the AIX compiler puts `$object:' at the
- # start of each line; $object doesn't have directory information.
- # Version 6 uses the directory in both cases.
- stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'`
- tmpdepfile="$stripped.u"
- if test "$libtool" = yes; then
- "$@" -Wc,-M
- else
- "$@" -M
- fi
- stat=$?
-
- if test -f "$tmpdepfile"; then :
- else
- stripped=`echo "$stripped" | sed 's,^.*/,,'`
- tmpdepfile="$stripped.u"
- fi
-
- if test $stat -eq 0; then :
- else
- rm -f "$tmpdepfile"
- exit $stat
- fi
-
- if test -f "$tmpdepfile"; then
- outname="$stripped.o"
- # Each line is of the form `foo.o: dependent.h'.
- # Do two passes, one to just change these to
- # `$object: dependent.h' and one to simply `dependent.h:'.
- sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile"
- sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile"
- else
- # The sourcefile does not contain any dependencies, so just
- # store a dummy comment line, to avoid errors with the Makefile
- # "include basename.Plo" scheme.
- echo "#dummy" > "$depfile"
- fi
- rm -f "$tmpdepfile"
- ;;
-
-icc)
- # Intel's C compiler understands `-MD -MF file'. However on
- # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
- # ICC 7.0 will fill foo.d with something like
- # foo.o: sub/foo.c
- # foo.o: sub/foo.h
- # which is wrong. We want:
- # sub/foo.o: sub/foo.c
- # sub/foo.o: sub/foo.h
- # sub/foo.c:
- # sub/foo.h:
- # ICC 7.1 will output
- # foo.o: sub/foo.c sub/foo.h
- # and will wrap long lines using \ :
- # foo.o: sub/foo.c ... \
- # sub/foo.h ... \
- # ...
-
- "$@" -MD -MF "$tmpdepfile"
- stat=$?
- if test $stat -eq 0; then :
- else
- rm -f "$tmpdepfile"
- exit $stat
- fi
- rm -f "$depfile"
- # Each line is of the form `foo.o: dependent.h',
- # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
- # Do two passes, one to just change these to
- # `$object: dependent.h' and one to simply `dependent.h:'.
- sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
- # Some versions of the HPUX 10.20 sed can't process this invocation
- # correctly. Breaking it into two sed invocations is a workaround.
- sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
- sed -e 's/$/ :/' >> "$depfile"
- rm -f "$tmpdepfile"
- ;;
-
-tru64)
- # The Tru64 compiler uses -MD to generate dependencies as a side
- # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
- # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
- # dependencies in `foo.d' instead, so we check for that too.
- # Subdirectories are respected.
- dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
- test "x$dir" = "x$object" && dir=
- base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
-
- if test "$libtool" = yes; then
- tmpdepfile1="$dir.libs/$base.lo.d"
- tmpdepfile2="$dir.libs/$base.d"
- "$@" -Wc,-MD
- else
- tmpdepfile1="$dir$base.o.d"
- tmpdepfile2="$dir$base.d"
- "$@" -MD
- fi
-
- stat=$?
- if test $stat -eq 0; then :
- else
- rm -f "$tmpdepfile1" "$tmpdepfile2"
- exit $stat
- fi
-
- if test -f "$tmpdepfile1"; then
- tmpdepfile="$tmpdepfile1"
- else
- tmpdepfile="$tmpdepfile2"
- fi
- if test -f "$tmpdepfile"; then
- sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
- # That's a tab and a space in the [].
- sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
- else
- echo "#dummy" > "$depfile"
- fi
- rm -f "$tmpdepfile"
- ;;
-
-#nosideeffect)
- # This comment above is used by automake to tell side-effect
- # dependency tracking mechanisms from slower ones.
-
-dashmstdout)
- # Important note: in order to support this mode, a compiler *must*
- # always write the preprocessed file to stdout, regardless of -o.
- "$@" || exit $?
-
- # Remove the call to Libtool.
- if test "$libtool" = yes; then
- while test $1 != '--mode=compile'; do
- shift
- done
- shift
- fi
-
- # Remove `-o $object'.
- IFS=" "
- for arg
- do
- case $arg in
- -o)
- shift
- ;;
- $object)
- shift
- ;;
- *)
- set fnord "$@" "$arg"
- shift # fnord
- shift # $arg
- ;;
- esac
- done
-
- test -z "$dashmflag" && dashmflag=-M
- # Require at least two characters before searching for `:'
- # in the target name. This is to cope with DOS-style filenames:
- # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
- "$@" $dashmflag |
- sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile"
- rm -f "$depfile"
- cat < "$tmpdepfile" > "$depfile"
- tr ' ' '
-' < "$tmpdepfile" | \
-## Some versions of the HPUX 10.20 sed can't process this invocation
-## correctly. Breaking it into two sed invocations is a workaround.
- sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
- rm -f "$tmpdepfile"
- ;;
-
-dashXmstdout)
- # This case only exists to satisfy depend.m4. It is never actually
- # run, as this mode is specially recognized in the preamble.
- exit 1
- ;;
-
-makedepend)
- "$@" || exit $?
- # Remove any Libtool call
- if test "$libtool" = yes; then
- while test $1 != '--mode=compile'; do
- shift
- done
- shift
- fi
- # X makedepend
- shift
- cleared=no
- for arg in "$@"; do
- case $cleared in
- no)
- set ""; shift
- cleared=yes ;;
- esac
- case "$arg" in
- -D*|-I*)
- set fnord "$@" "$arg"; shift ;;
- # Strip any option that makedepend may not understand. Remove
- # the object too, otherwise makedepend will parse it as a source file.
- -*|$object)
- ;;
- *)
- set fnord "$@" "$arg"; shift ;;
- esac
- done
- obj_suffix="`echo $object | sed 's/^.*\././'`"
- touch "$tmpdepfile"
- ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
- rm -f "$depfile"
- cat < "$tmpdepfile" > "$depfile"
- sed '1,2d' "$tmpdepfile" | tr ' ' '
-' | \
-## Some versions of the HPUX 10.20 sed can't process this invocation
-## correctly. Breaking it into two sed invocations is a workaround.
- sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
- rm -f "$tmpdepfile" "$tmpdepfile".bak
- ;;
-
-cpp)
- # Important note: in order to support this mode, a compiler *must*
- # always write the preprocessed file to stdout.
- "$@" || exit $?
-
- # Remove the call to Libtool.
- if test "$libtool" = yes; then
- while test $1 != '--mode=compile'; do
- shift
- done
- shift
- fi
-
- # Remove `-o $object'.
- IFS=" "
- for arg
- do
- case $arg in
- -o)
- shift
- ;;
- $object)
- shift
- ;;
- *)
- set fnord "$@" "$arg"
- shift # fnord
- shift # $arg
- ;;
- esac
- done
-
- "$@" -E |
- sed -n '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
- sed '$ s: \\$::' > "$tmpdepfile"
- rm -f "$depfile"
- echo "$object : \\" > "$depfile"
- cat < "$tmpdepfile" >> "$depfile"
- sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
- rm -f "$tmpdepfile"
- ;;
-
-msvisualcpp)
- # Important note: in order to support this mode, a compiler *must*
- # always write the preprocessed file to stdout, regardless of -o,
- # because we must use -o when running libtool.
- "$@" || exit $?
- IFS=" "
- for arg
- do
- case "$arg" in
- "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
- set fnord "$@"
- shift
- shift
- ;;
- *)
- set fnord "$@" "$arg"
- shift
- shift
- ;;
- esac
- done
- "$@" -E |
- sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile"
- rm -f "$depfile"
- echo "$object : \\" > "$depfile"
- . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile"
- echo " " >> "$depfile"
- . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile"
- rm -f "$tmpdepfile"
- ;;
-
-none)
- exec "$@"
- ;;
-
-*)
- echo "Unknown depmode $depmode" 1>&2
- exit 1
- ;;
-esac
-
-exit 0
diff --git a/libs/libsndfile/install-sh b/libs/libsndfile/install-sh
deleted file mode 100755
index 6ce63b9f76..0000000000
--- a/libs/libsndfile/install-sh
+++ /dev/null
@@ -1,294 +0,0 @@
-#!/bin/sh
-#
-# install - install a program, script, or datafile
-#
-# This originates from X11R5 (mit/util/scripts/install.sh), which was
-# later released in X11R6 (xc/config/util/install.sh) with the
-# following copyright and license.
-#
-# Copyright (C) 1994 X Consortium
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to
-# deal in the Software without restriction, including without limitation the
-# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
-# sell copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
-# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-# Except as contained in this notice, the name of the X Consortium shall not
-# be used in advertising or otherwise to promote the sale, use or other deal-
-# ings in this Software without prior written authorization from the X Consor-
-# tium.
-#
-#
-# FSF changes to this file are in the public domain.
-#
-# Calling this script install-sh is preferred over install.sh, to prevent
-# `make' implicit rules from creating a file called install from it
-# when there is no Makefile.
-#
-# This script is compatible with the BSD install script, but was written
-# from scratch. It can only install one file at a time, a restriction
-# shared with many OS's install programs.
-
-
-# set DOITPROG to echo to test this script
-
-# Don't use :- since 4.3BSD and earlier shells don't like it.
-doit="${DOITPROG-}"
-
-
-# put in absolute paths if you don't have them in your path; or use env. vars.
-
-mvprog="${MVPROG-mv}"
-cpprog="${CPPROG-cp}"
-chmodprog="${CHMODPROG-chmod}"
-chownprog="${CHOWNPROG-chown}"
-chgrpprog="${CHGRPPROG-chgrp}"
-stripprog="${STRIPPROG-strip}"
-rmprog="${RMPROG-rm}"
-mkdirprog="${MKDIRPROG-mkdir}"
-
-transformbasename=""
-transform_arg=""
-instcmd="$mvprog"
-chmodcmd="$chmodprog 0755"
-chowncmd=""
-chgrpcmd=""
-stripcmd=""
-rmcmd="$rmprog -f"
-mvcmd="$mvprog"
-src=""
-dst=""
-dir_arg=""
-
-while [ x"$1" != x ]; do
- case $1 in
- -c) instcmd=$cpprog
- shift
- continue;;
-
- -d) dir_arg=true
- shift
- continue;;
-
- -m) chmodcmd="$chmodprog $2"
- shift
- shift
- continue;;
-
- -o) chowncmd="$chownprog $2"
- shift
- shift
- continue;;
-
- -g) chgrpcmd="$chgrpprog $2"
- shift
- shift
- continue;;
-
- -s) stripcmd=$stripprog
- shift
- continue;;
-
- -t=*) transformarg=`echo $1 | sed 's/-t=//'`
- shift
- continue;;
-
- -b=*) transformbasename=`echo $1 | sed 's/-b=//'`
- shift
- continue;;
-
- *) if [ x"$src" = x ]
- then
- src=$1
- else
- # this colon is to work around a 386BSD /bin/sh bug
- :
- dst=$1
- fi
- shift
- continue;;
- esac
-done
-
-if [ x"$src" = x ]
-then
- echo "$0: no input file specified" >&2
- exit 1
-else
- :
-fi
-
-if [ x"$dir_arg" != x ]; then
- dst=$src
- src=""
-
- if [ -d "$dst" ]; then
- instcmd=:
- chmodcmd=""
- else
- instcmd=$mkdirprog
- fi
-else
-
-# Waiting for this to be detected by the "$instcmd $src $dsttmp" command
-# might cause directories to be created, which would be especially bad
-# if $src (and thus $dsttmp) contains '*'.
-
- if [ -f "$src" ] || [ -d "$src" ]
- then
- :
- else
- echo "$0: $src does not exist" >&2
- exit 1
- fi
-
- if [ x"$dst" = x ]
- then
- echo "$0: no destination specified" >&2
- exit 1
- else
- :
- fi
-
-# If destination is a directory, append the input filename; if your system
-# does not like double slashes in filenames, you may need to add some logic
-
- if [ -d "$dst" ]
- then
- dst=$dst/`basename "$src"`
- else
- :
- fi
-fi
-
-## this sed command emulates the dirname command
-dstdir=`echo "$dst" | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
-
-# Make sure that the destination directory exists.
-# this part is taken from Noah Friedman's mkinstalldirs script
-
-# Skip lots of stat calls in the usual case.
-if [ ! -d "$dstdir" ]; then
-defaultIFS='
- '
-IFS="${IFS-$defaultIFS}"
-
-oIFS=$IFS
-# Some sh's can't handle IFS=/ for some reason.
-IFS='%'
-set - `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'`
-IFS=$oIFS
-
-pathcomp=''
-
-while [ $# -ne 0 ] ; do
- pathcomp=$pathcomp$1
- shift
-
- if [ ! -d "$pathcomp" ] ;
- then
- $mkdirprog "$pathcomp"
- else
- :
- fi
-
- pathcomp=$pathcomp/
-done
-fi
-
-if [ x"$dir_arg" != x ]
-then
- $doit $instcmd "$dst" &&
-
- if [ x"$chowncmd" != x ]; then $doit $chowncmd "$dst"; else : ; fi &&
- if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd "$dst"; else : ; fi &&
- if [ x"$stripcmd" != x ]; then $doit $stripcmd "$dst"; else : ; fi &&
- if [ x"$chmodcmd" != x ]; then $doit $chmodcmd "$dst"; else : ; fi
-else
-
-# If we're going to rename the final executable, determine the name now.
-
- if [ x"$transformarg" = x ]
- then
- dstfile=`basename "$dst"`
- else
- dstfile=`basename "$dst" $transformbasename |
- sed $transformarg`$transformbasename
- fi
-
-# don't allow the sed command to completely eliminate the filename
-
- if [ x"$dstfile" = x ]
- then
- dstfile=`basename "$dst"`
- else
- :
- fi
-
-# Make a couple of temp file names in the proper directory.
-
- dsttmp=$dstdir/_inst.$$_
- rmtmp=$dstdir/_rm.$$_
-
-# Trap to clean up temp files at exit.
-
- trap 'status=$?; rm -f "$dsttmp" "$rmtmp" && exit $status' 0
- trap '(exit $?); exit' 1 2 13 15
-
-# Move or copy the file name to the temp name
-
- $doit $instcmd "$src" "$dsttmp" &&
-
-# and set any options; do chmod last to preserve setuid bits
-
-# If any of these fail, we abort the whole thing. If we want to
-# ignore errors from any of these, just make sure not to ignore
-# errors from the above "$doit $instcmd $src $dsttmp" command.
-
- if [ x"$chowncmd" != x ]; then $doit $chowncmd "$dsttmp"; else :;fi &&
- if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd "$dsttmp"; else :;fi &&
- if [ x"$stripcmd" != x ]; then $doit $stripcmd "$dsttmp"; else :;fi &&
- if [ x"$chmodcmd" != x ]; then $doit $chmodcmd "$dsttmp"; else :;fi &&
-
-# Now remove or move aside any old file at destination location. We try this
-# two ways since rm can't unlink itself on some systems and the destination
-# file might be busy for other reasons. In this case, the final cleanup
-# might fail but the new file should still install successfully.
-
-{
- if [ -f "$dstdir/$dstfile" ]
- then
- $doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null ||
- $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null ||
- {
- echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2
- (exit 1); exit
- }
- else
- :
- fi
-} &&
-
-# Now rename the file to the real destination.
-
- $doit $mvcmd "$dsttmp" "$dstdir/$dstfile"
-
-fi &&
-
-# The final little trick to "correctly" pass the exit status to the exit trap.
-
-{
- (exit 0); exit
-}
diff --git a/libs/libsndfile/libsndfile.spec.in b/libs/libsndfile/libsndfile.spec.in
deleted file mode 100644
index ad47a5f3f8..0000000000
--- a/libs/libsndfile/libsndfile.spec.in
+++ /dev/null
@@ -1,69 +0,0 @@
-
-%define name @PACKAGE@
-%define version @VERSION@
-%define release 1
-
-Summary: A library to handle various audio file formats.
-Name: %{name}
-Version: %{version}
-Release: %{release}
-Copyright: LGPL
-Group: Libraries/Sound
-Source: http://www.mega-nerd.com/libsndfile/libsndfile-%{version}.tar.gz
-URL: http://www.mega-nerd.com/libsndfile/
-BuildRoot: /var/tmp/%{name}-%{version}
-
-%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/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: Libraries, includes, etc to develop libsndfile applications
-Group: Libraries
-
-%description devel
-Libraries, include files, etc you can use to develop libsndfile applications.
-
-%prep
-%setup
-
-%build
-%configure
-make
-
-%install
-if [ -d $RPM_BUILD_ROOT ]; then rm -rf $RPM_BUILD_ROOT; fi
-mkdir -p $RPM_BUILD_ROOT
-make DESTDIR=$RPM_BUILD_ROOT install
-%clean
-if [ -d $RPM_BUILD_ROOT ]; then rm -rf $RPM_BUILD_ROOT; fi
-
-%files
-%defattr(-,root,root)
-%doc AUTHORS COPYING ChangeLog INSTALL NEWS README TODO doc
-%{_libdir}/libsndfile.so.*
-%{_bindir}/*
-%{_mandir}/man1/*
-%{_datadir}/octave/site/m/*
-%{_defaultdocdir}/libsndfile1-dev/html/*
-
-%files devel
-%defattr(-,root,root)
-%{_libdir}/libsndfile.a
-%{_libdir}/libsndfile.la
-%{_libdir}/libsndfile.so
-%{_includedir}/sndfile.h
-%{_libdir}/pkgconfig/sndfile.pc
-
-%changelog
-* Sun May 15 2005 Erik de Castro Lopo <erikd@mega-nerd.com>
-- Add html files to the files section.
-* Tue Sep 16 2003 Erik de Castro Lopo <erikd@mega-nerd.com>
-- Apply corrections from Andrew Schultz.
-* Mon Oct 21 2002 Erik de Castro Lopo <erikd@mega-nerd.com>
-- Force installation of sndfile.pc file.
-* Thu Jul 6 2000 Josh Green <jgreen@users.sourceforge.net>
-- Created libsndfile.spec.in
-
diff --git a/libs/libsndfile/missing b/libs/libsndfile/missing
deleted file mode 100755
index fc54c64ec9..0000000000
--- a/libs/libsndfile/missing
+++ /dev/null
@@ -1,336 +0,0 @@
-#! /bin/sh
-# Common stub for a few missing GNU programs while installing.
-# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003 Free Software Foundation, Inc.
-# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
-
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-if test $# -eq 0; then
- echo 1>&2 "Try \`$0 --help' for more information"
- exit 1
-fi
-
-run=:
-
-# In the cases where this matters, `missing' is being run in the
-# srcdir already.
-if test -f configure.ac; then
- configure_ac=configure.ac
-else
- configure_ac=configure.in
-fi
-
-case "$1" in
---run)
- # Try to run requested program, and just exit if it succeeds.
- run=
- shift
- "$@" && exit 0
- ;;
-esac
-
-# If it does not exist, or fails to run (possibly an outdated version),
-# try to emulate it.
-case "$1" in
-
- -h|--h|--he|--hel|--help)
- echo "\
-$0 [OPTION]... PROGRAM [ARGUMENT]...
-
-Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
-error status if there is no known handling for PROGRAM.
-
-Options:
- -h, --help display this help and exit
- -v, --version output version information and exit
- --run try to run the given command, and emulate it if it fails
-
-Supported PROGRAM values:
- aclocal touch file \`aclocal.m4'
- autoconf touch file \`configure'
- autoheader touch file \`config.h.in'
- automake touch all \`Makefile.in' files
- bison create \`y.tab.[ch]', if possible, from existing .[ch]
- flex create \`lex.yy.c', if possible, from existing .c
- help2man touch the output file
- lex create \`lex.yy.c', if possible, from existing .c
- makeinfo touch the output file
- tar try tar, gnutar, gtar, then tar without non-portable flags
- yacc create \`y.tab.[ch]', if possible, from existing .[ch]"
- ;;
-
- -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
- echo "missing 0.4 - GNU automake"
- ;;
-
- -*)
- echo 1>&2 "$0: Unknown \`$1' option"
- echo 1>&2 "Try \`$0 --help' for more information"
- exit 1
- ;;
-
- aclocal*)
- if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
- # We have it, but it failed.
- exit 1
- fi
-
- echo 1>&2 "\
-WARNING: \`$1' is missing on your system. You should only need it if
- you modified \`acinclude.m4' or \`${configure_ac}'. You might want
- to install the \`Automake' and \`Perl' packages. Grab them from
- any GNU archive site."
- touch aclocal.m4
- ;;
-
- autoconf)
- if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
- # We have it, but it failed.
- exit 1
- fi
-
- echo 1>&2 "\
-WARNING: \`$1' is missing on your system. You should only need it if
- you modified \`${configure_ac}'. You might want to install the
- \`Autoconf' and \`GNU m4' packages. Grab them from any GNU
- archive site."
- touch configure
- ;;
-
- autoheader)
- if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
- # We have it, but it failed.
- exit 1
- fi
-
- echo 1>&2 "\
-WARNING: \`$1' is missing on your system. You should only need it if
- you modified \`acconfig.h' or \`${configure_ac}'. You might want
- to install the \`Autoconf' and \`GNU m4' packages. Grab them
- from any GNU archive site."
- files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
- test -z "$files" && files="config.h"
- touch_files=
- for f in $files; do
- case "$f" in
- *:*) touch_files="$touch_files "`echo "$f" |
- sed -e 's/^[^:]*://' -e 's/:.*//'`;;
- *) touch_files="$touch_files $f.in";;
- esac
- done
- touch $touch_files
- ;;
-
- automake*)
- if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
- # We have it, but it failed.
- exit 1
- fi
-
- echo 1>&2 "\
-WARNING: \`$1' is missing on your system. You should only need it if
- you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
- You might want to install the \`Automake' and \`Perl' packages.
- Grab them from any GNU archive site."
- find . -type f -name Makefile.am -print |
- sed 's/\.am$/.in/' |
- while read f; do touch "$f"; done
- ;;
-
- autom4te)
- if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
- # We have it, but it failed.
- exit 1
- fi
-
- echo 1>&2 "\
-WARNING: \`$1' is needed, and you do not seem to have it handy on your
- system. You might have modified some files without having the
- proper tools for further handling them.
- You can get \`$1' as part of \`Autoconf' from any GNU
- archive site."
-
- file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'`
- test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'`
- if test -f "$file"; then
- touch $file
- else
- test -z "$file" || exec >$file
- echo "#! /bin/sh"
- echo "# Created by GNU Automake missing as a replacement of"
- echo "# $ $@"
- echo "exit 0"
- chmod +x $file
- exit 1
- fi
- ;;
-
- bison|yacc)
- echo 1>&2 "\
-WARNING: \`$1' is missing on your system. You should only need it if
- you modified a \`.y' file. You may need the \`Bison' package
- in order for those modifications to take effect. You can get
- \`Bison' from any GNU archive site."
- rm -f y.tab.c y.tab.h
- if [ $# -ne 1 ]; then
- eval LASTARG="\${$#}"
- case "$LASTARG" in
- *.y)
- SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
- if [ -f "$SRCFILE" ]; then
- cp "$SRCFILE" y.tab.c
- fi
- SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
- if [ -f "$SRCFILE" ]; then
- cp "$SRCFILE" y.tab.h
- fi
- ;;
- esac
- fi
- if [ ! -f y.tab.h ]; then
- echo >y.tab.h
- fi
- if [ ! -f y.tab.c ]; then
- echo 'main() { return 0; }' >y.tab.c
- fi
- ;;
-
- lex|flex)
- echo 1>&2 "\
-WARNING: \`$1' is missing on your system. You should only need it if
- you modified a \`.l' file. You may need the \`Flex' package
- in order for those modifications to take effect. You can get
- \`Flex' from any GNU archive site."
- rm -f lex.yy.c
- if [ $# -ne 1 ]; then
- eval LASTARG="\${$#}"
- case "$LASTARG" in
- *.l)
- SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
- if [ -f "$SRCFILE" ]; then
- cp "$SRCFILE" lex.yy.c
- fi
- ;;
- esac
- fi
- if [ ! -f lex.yy.c ]; then
- echo 'main() { return 0; }' >lex.yy.c
- fi
- ;;
-
- help2man)
- if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
- # We have it, but it failed.
- exit 1
- fi
-
- echo 1>&2 "\
-WARNING: \`$1' is missing on your system. You should only need it if
- you modified a dependency of a manual page. You may need the
- \`Help2man' package in order for those modifications to take
- effect. You can get \`Help2man' from any GNU archive site."
-
- file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
- if test -z "$file"; then
- file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'`
- fi
- if [ -f "$file" ]; then
- touch $file
- else
- test -z "$file" || exec >$file
- echo ".ab help2man is required to generate this page"
- exit 1
- fi
- ;;
-
- makeinfo)
- if test -z "$run" && (makeinfo --version) > /dev/null 2>&1; then
- # We have makeinfo, but it failed.
- exit 1
- fi
-
- echo 1>&2 "\
-WARNING: \`$1' is missing on your system. You should only need it if
- you modified a \`.texi' or \`.texinfo' file, or any other file
- indirectly affecting the aspect of the manual. The spurious
- call might also be the consequence of using a buggy \`make' (AIX,
- DU, IRIX). You might want to install the \`Texinfo' package or
- the \`GNU make' package. Grab either from any GNU archive site."
- file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
- if test -z "$file"; then
- file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
- file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file`
- fi
- touch $file
- ;;
-
- tar)
- shift
- if test -n "$run"; then
- echo 1>&2 "ERROR: \`tar' requires --run"
- exit 1
- fi
-
- # We have already tried tar in the generic part.
- # Look for gnutar/gtar before invocation to avoid ugly error
- # messages.
- if (gnutar --version > /dev/null 2>&1); then
- gnutar "$@" && exit 0
- fi
- if (gtar --version > /dev/null 2>&1); then
- gtar "$@" && exit 0
- fi
- firstarg="$1"
- if shift; then
- case "$firstarg" in
- *o*)
- firstarg=`echo "$firstarg" | sed s/o//`
- tar "$firstarg" "$@" && exit 0
- ;;
- esac
- case "$firstarg" in
- *h*)
- firstarg=`echo "$firstarg" | sed s/h//`
- tar "$firstarg" "$@" && exit 0
- ;;
- esac
- fi
-
- echo 1>&2 "\
-WARNING: I can't seem to be able to run \`tar' with the given arguments.
- You may want to install GNU tar or Free paxutils, or check the
- command line arguments."
- exit 1
- ;;
-
- *)
- echo 1>&2 "\
-WARNING: \`$1' is needed, and you do not seem to have it handy on your
- system. You might have modified some files without having the
- proper tools for further handling them. Check the \`README' file,
- it often tells you about the needed prerequisites for installing
- this package. You may also peek at any GNU archive site, in case
- some other package would contain this missing \`$1' program."
- exit 1
- ;;
-esac
-
-exit 0
diff --git a/libs/libsndfile/mkinstalldirs b/libs/libsndfile/mkinstalldirs
deleted file mode 100755
index d2d5f21b61..0000000000
--- a/libs/libsndfile/mkinstalldirs
+++ /dev/null
@@ -1,111 +0,0 @@
-#! /bin/sh
-# mkinstalldirs --- make directory hierarchy
-# Author: Noah Friedman <friedman@prep.ai.mit.edu>
-# Created: 1993-05-16
-# Public domain
-
-errstatus=0
-dirmode=""
-
-usage="\
-Usage: mkinstalldirs [-h] [--help] [-m mode] dir ..."
-
-# process command line arguments
-while test $# -gt 0 ; do
- case $1 in
- -h | --help | --h*) # -h for help
- echo "$usage" 1>&2
- exit 0
- ;;
- -m) # -m PERM arg
- shift
- test $# -eq 0 && { echo "$usage" 1>&2; exit 1; }
- dirmode=$1
- shift
- ;;
- --) # stop option processing
- shift
- break
- ;;
- -*) # unknown option
- echo "$usage" 1>&2
- exit 1
- ;;
- *) # first non-opt arg
- break
- ;;
- esac
-done
-
-for file
-do
- if test -d "$file"; then
- shift
- else
- break
- fi
-done
-
-case $# in
- 0) exit 0 ;;
-esac
-
-case $dirmode in
- '')
- if mkdir -p -- . 2>/dev/null; then
- echo "mkdir -p -- $*"
- exec mkdir -p -- "$@"
- fi
- ;;
- *)
- if mkdir -m "$dirmode" -p -- . 2>/dev/null; then
- echo "mkdir -m $dirmode -p -- $*"
- exec mkdir -m "$dirmode" -p -- "$@"
- fi
- ;;
-esac
-
-for file
-do
- set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`
- shift
-
- pathcomp=
- for d
- do
- pathcomp="$pathcomp$d"
- case $pathcomp in
- -*) pathcomp=./$pathcomp ;;
- esac
-
- if test ! -d "$pathcomp"; then
- echo "mkdir $pathcomp"
-
- mkdir "$pathcomp" || lasterr=$?
-
- if test ! -d "$pathcomp"; then
- errstatus=$lasterr
- else
- if test ! -z "$dirmode"; then
- echo "chmod $dirmode $pathcomp"
- lasterr=""
- chmod "$dirmode" "$pathcomp" || lasterr=$?
-
- if test ! -z "$lasterr"; then
- errstatus=$lasterr
- fi
- fi
- fi
- fi
-
- pathcomp="$pathcomp/"
- done
-done
-
-exit $errstatus
-
-# Local Variables:
-# mode: shell-script
-# sh-indentation: 2
-# End:
-# mkinstalldirs ends here
diff --git a/libs/libsndfile/sndfile.pc.in b/libs/libsndfile/sndfile.pc.in
deleted file mode 100644
index f2a833bddb..0000000000
--- a/libs/libsndfile/sndfile.pc.in
+++ /dev/null
@@ -1,11 +0,0 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-
-Name: sndfile
-Description: A library for reading and writing audio files
-Requires:
-Version: @VERSION@
-Libs: -L${libdir} -lsndfile
-Cflags: -I${includedir}
diff --git a/libs/libsndfile/src/G72x/ChangeLog b/libs/libsndfile/src/G72x/ChangeLog
deleted file mode 100644
index aa108dff7f..0000000000
--- a/libs/libsndfile/src/G72x/ChangeLog
+++ /dev/null
@@ -1,50 +0,0 @@
-2001-06-05 Erik de Castro Lopo <erikd@mega-nerd.com>
-
- * g72x.c
- Added {} in function update () to prevent 'ambiguous else' warning messages.
-
-2000-07-14 Erik de Castro Lopo <erikd@mega-nerd.com>
-
- * g72x.c
- Modified g72x_init_state () to fit in with the new structure of the code.
- Implemented g72x_encode_block () and g72x_decode_block ().
-
-2000-07-12 Erik de Castro Lopo <erikd@mega-nerd.com>
-
- * g72x.h
- Moved nearly all definitions and function prototypes from this file have been
- moved to private.h.
- Added an enum defining the 4 different G72x ADPCM codecs.
- Added new function prototypes to define a cleaner interface to the encoder
- and decoder. This new interface also allows samples to be processed in blocks
- rather than on a sample by sample basis like the original code.
-
- * private.h
- Added prototypes moved from g72x.h.
- Changed struct g72x_state to a typedef struct { .. } G72x_PRIVATE.
- Added fields to G72x_PRIVATE required for working on blocks of samples.
-
-2000-06-07 Erik de Castro Lopo <erikd@mega-nerd.com>
-
- * g72x.c
- Fixed all compiler warnings.
- Removed functions tandem_adjust() which is not required by libsndfile.
-
- * g721.c
- Fixed all compiler warnings.
- Removed functions tandem_adjust_alaw() and tandem_adjust_ulaw () which are not
- required by libsndfile.
- Removed second parameter to g721_encoder () which is not required.
-
- * g72x.h
- Removed in_coding and out_coding parameters from all functions. These allowed
- g72x encoding/decoding to/from A-law or u-law and are not required by libsndfile.
- Removed unneeded defines for A-law, u-law and linear encoding.
-
- * g723_16.c
- Removed second parameter (in_coding) for g723_16_encoder().
- Removed second parameter (out_coding) for g723_16_decoder().
-
- * private.h
- New file containing prototypes and tyepdefs private to G72x code.
-
diff --git a/libs/libsndfile/src/G72x/README b/libs/libsndfile/src/G72x/README
deleted file mode 100644
index e69de29bb2..0000000000
--- a/libs/libsndfile/src/G72x/README
+++ /dev/null
diff --git a/libs/libsndfile/src/G72x/README.original b/libs/libsndfile/src/G72x/README.original
deleted file mode 100644
index 23b0e7dd50..0000000000
--- a/libs/libsndfile/src/G72x/README.original
+++ /dev/null
@@ -1,94 +0,0 @@
-The files in this directory comprise ANSI-C language reference implementations
-of the CCITT (International Telegraph and Telephone Consultative Committee)
-G.711, G.721 and G.723 voice compressions. They have been tested on Sun
-SPARCstations and passed 82 out of 84 test vectors published by CCITT
-(Dec. 20, 1988) for G.721 and G.723. [The two remaining test vectors,
-which the G.721 decoder implementation for u-law samples did not pass,
-may be in error because they are identical to two other vectors for G.723_40.]
-
-This source code is released by Sun Microsystems, Inc. to the public domain.
-Please give your acknowledgement in product literature if this code is used
-in your product implementation.
-
-Sun Microsystems supports some CCITT audio formats in Solaris 2.0 system
-software. However, Sun's implementations have been optimized for higher
-performance on SPARCstations.
-
-
-The source files for CCITT conversion routines in this directory are:
-
- g72x.h header file for g721.c, g723_24.c and g723_40.c
- g711.c CCITT G.711 u-law and A-law compression
- g72x.c common denominator of G.721 and G.723 ADPCM codes
- g721.c CCITT G.721 32Kbps ADPCM coder (with g72x.c)
- g723_24.c CCITT G.723 24Kbps ADPCM coder (with g72x.c)
- g723_40.c CCITT G.723 40Kbps ADPCM coder (with g72x.c)
-
-
-Simple conversions between u-law, A-law, and 16-bit linear PCM are invoked
-as follows:
-
- unsigned char ucode, acode;
- short pcm_val;
-
- ucode = linear2ulaw(pcm_val);
- ucode = alaw2ulaw(acode);
-
- acode = linear2alaw(pcm_val);
- acode = ulaw2alaw(ucode);
-
- pcm_val = ulaw2linear(ucode);
- pcm_val = alaw2linear(acode);
-
-
-The other CCITT compression routines are invoked as follows:
-
- #include "g72x.h"
-
- struct g72x_state state;
- int sample, code;
-
- g72x_init_state(&state);
- code = {g721,g723_24,g723_40}_encoder(sample, coding, &state);
- sample = {g721,g723_24,g723_40}_decoder(code, coding, &state);
-
-where
- coding = AUDIO_ENCODING_ULAW for 8-bit u-law samples
- AUDIO_ENCODING_ALAW for 8-bit A-law samples
- AUDIO_ENCODING_LINEAR for 16-bit linear PCM samples
-
-
-
-This directory also includes the following sample programs:
-
- encode.c CCITT ADPCM encoder
- decode.c CCITT ADPCM decoder
- Makefile makefile for the sample programs
-
-
-The sample programs contain examples of how to call the various compression
-routines and pack/unpack the bits. The sample programs read byte streams from
-stdin and write to stdout. The input/output data is raw data (no file header
-or other identifying information is embedded). The sample programs are
-invoked as follows:
-
- encode [-3|4|5] [-a|u|l] <infile >outfile
- decode [-3|4|5] [-a|u|l] <infile >outfile
-where:
- -3 encode to (decode from) G.723 24kbps (3-bit) data
- -4 encode to (decode from) G.721 32kbps (4-bit) data [the default]
- -5 encode to (decode from) G.723 40kbps (5-bit) data
- -a encode from (decode to) A-law data
- -u encode from (decode to) u-law data [the default]
- -l encode from (decode to) 16-bit linear data
-
-Examples:
- # Read 16-bit linear and output G.721
- encode -4 -l <pcmfile >g721file
-
- # Read 40Kbps G.723 and output A-law
- decode -5 -a <g723file >alawfile
-
- # Compress and then decompress u-law data using 24Kbps G.723
- encode -3 <ulawin | deoced -3 >ulawout
-
diff --git a/libs/libsndfile/src/G72x/g721.c b/libs/libsndfile/src/G72x/g721.c
deleted file mode 100644
index 4f51bb1977..0000000000
--- a/libs/libsndfile/src/G72x/g721.c
+++ /dev/null
@@ -1,162 +0,0 @@
-/*
- * This source code is a product of Sun Microsystems, Inc. and is provided
- * for unrestricted use. Users may copy or modify this source code without
- * charge.
- *
- * SUN SOURCE CODE IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING
- * THE WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
- *
- * Sun source code is provided with no support and without any obligation on
- * the part of Sun Microsystems, Inc. to assist in its use, correction,
- * modification or enhancement.
- *
- * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY THIS SOFTWARE
- * OR ANY PART THEREOF.
- *
- * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- * or profits or other special, indirect and consequential damages, even if
- * Sun has been advised of the possibility of such damages.
- *
- * Sun Microsystems, Inc.
- * 2550 Garcia Avenue
- * Mountain View, California 94043
- */
-
-/*
- * g721.c
- *
- * Description:
- *
- * g721_encoder(), g721_decoder()
- *
- * These routines comprise an implementation of the CCITT G.721 ADPCM
- * coding algorithm. Essentially, this implementation is identical to
- * the bit level description except for a few deviations which
- * take advantage of work station attributes, such as hardware 2's
- * complement arithmetic and large memory. Specifically, certain time
- * consuming operations such as multiplications are replaced
- * with lookup tables and software 2's complement operations are
- * replaced with hardware 2's complement.
- *
- * The deviation from the bit level specification (lookup tables)
- * preserves the bit level performance specifications.
- *
- * As outlined in the G.721 Recommendation, the algorithm is broken
- * down into modules. Each section of code below is preceded by
- * the name of the module which it is implementing.
- *
- */
-
-#include "g72x.h"
-#include "g72x_priv.h"
-
-static short qtab_721[7] = {-124, 80, 178, 246, 300, 349, 400};
-/*
- * Maps G.721 code word to reconstructed scale factor normalized log
- * magnitude values.
- */
-static short _dqlntab[16] = {-2048, 4, 135, 213, 273, 323, 373, 425,
- 425, 373, 323, 273, 213, 135, 4, -2048};
-
-/* Maps G.721 code word to log of scale factor multiplier. */
-static short _witab[16] = {-12, 18, 41, 64, 112, 198, 355, 1122,
- 1122, 355, 198, 112, 64, 41, 18, -12};
-/*
- * Maps G.721 code words to a set of values whose long and short
- * term averages are computed and then compared to give an indication
- * how stationary (steady state) the signal is.
- */
-static short _fitab[16] = {0, 0, 0, 0x200, 0x200, 0x200, 0x600, 0xE00,
- 0xE00, 0x600, 0x200, 0x200, 0x200, 0, 0, 0};
-
-/*
- * g721_encoder()
- *
- * Encodes the input vale of linear PCM, A-law or u-law data sl and returns
- * the resulting code. -1 is returned for unknown input coding value.
- */
-int
-g721_encoder(
- int sl,
- G72x_STATE *state_ptr)
-{
- short sezi, se, sez; /* ACCUM */
- short d; /* SUBTA */
- short sr; /* ADDB */
- short y; /* MIX */
- short dqsez; /* ADDC */
- short dq, i;
-
- /* linearize input sample to 14-bit PCM */
- sl >>= 2; /* 14-bit dynamic range */
-
- sezi = predictor_zero(state_ptr);
- sez = sezi >> 1;
- se = (sezi + predictor_pole(state_ptr)) >> 1; /* estimated signal */
-
- d = sl - se; /* estimation difference */
-
- /* quantize the prediction difference */
- y = step_size(state_ptr); /* quantizer step size */
- i = quantize(d, y, qtab_721, 7); /* i = ADPCM code */
-
- dq = reconstruct(i & 8, _dqlntab[i], y); /* quantized est diff */
-
- sr = (dq < 0) ? se - (dq & 0x3FFF) : se + dq; /* reconst. signal */
-
- dqsez = sr + sez - se; /* pole prediction diff. */
-
- update(4, y, _witab[i] << 5, _fitab[i], dq, sr, dqsez, state_ptr);
-
- return (i);
-}
-
-/*
- * g721_decoder()
- *
- * Description:
- *
- * Decodes a 4-bit code of G.721 encoded data of i and
- * returns the resulting linear PCM, A-law or u-law value.
- * return -1 for unknown out_coding value.
- */
-int
-g721_decoder(
- int i,
- G72x_STATE *state_ptr)
-{
- short sezi, sei, sez, se; /* ACCUM */
- short y; /* MIX */
- short sr; /* ADDB */
- short dq;
- short dqsez;
-
- i &= 0x0f; /* mask to get proper bits */
- sezi = predictor_zero(state_ptr);
- sez = sezi >> 1;
- sei = sezi + predictor_pole(state_ptr);
- se = sei >> 1; /* se = estimated signal */
-
- y = step_size(state_ptr); /* dynamic quantizer step size */
-
- dq = reconstruct(i & 0x08, _dqlntab[i], y); /* quantized diff. */
-
- sr = (dq < 0) ? (se - (dq & 0x3FFF)) : se + dq; /* reconst. signal */
-
- dqsez = sr - se + sez; /* pole prediction diff. */
-
- update(4, y, _witab[i] << 5, _fitab[i], dq, sr, dqsez, state_ptr);
-
- /* sr was 14-bit dynamic range */
- return (sr << 2);
-}
-/*
-** Do not edit or modify anything in this comment block.
-** The arch-tag line is a file identity tag for the GNU Arch
-** revision control system.
-**
-** arch-tag: 101b6e25-457d-490a-99ae-e2e74a26ea24
-*/
-
diff --git a/libs/libsndfile/src/G72x/g723_16.c b/libs/libsndfile/src/G72x/g723_16.c
deleted file mode 100644
index 0c3174501c..0000000000
--- a/libs/libsndfile/src/G72x/g723_16.c
+++ /dev/null
@@ -1,169 +0,0 @@
-/*
- * This source code is a product of Sun Microsystems, Inc. and is provided
- * for unrestricted use. Users may copy or modify this source code without
- * charge.
- *
- * SUN SOURCE CODE IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING
- * THE WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
- *
- * Sun source code is provided with no support and without any obligation on
- * the part of Sun Microsystems, Inc. to assist in its use, correction,
- * modification or enhancement.
- *
- * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY THIS SOFTWARE
- * OR ANY PART THEREOF.
- *
- * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- * or profits or other special, indirect and consequential damages, even if
- * Sun has been advised of the possibility of such damages.
- *
- * Sun Microsystems, Inc.
- * 2550 Garcia Avenue
- * Mountain View, California 94043
- */
-/* 16kbps version created, used 24kbps code and changing as little as possible.
- * G.726 specs are available from ITU's gopher or WWW site (http://www.itu.ch)
- * If any errors are found, please contact me at mrand@tamu.edu
- * -Marc Randolph
- */
-
-/*
- * g723_16.c
- *
- * Description:
- *
- * g723_16_encoder(), g723_16_decoder()
- *
- * These routines comprise an implementation of the CCITT G.726 16 Kbps
- * ADPCM coding algorithm. Essentially, this implementation is identical to
- * the bit level description except for a few deviations which take advantage
- * of workstation attributes, such as hardware 2's complement arithmetic.
- *
- */
-
-#include "g72x.h"
-#include "g72x_priv.h"
-
-/*
- * Maps G.723_16 code word to reconstructed scale factor normalized log
- * magnitude values. Comes from Table 11/G.726
- */
-static short _dqlntab[4] = { 116, 365, 365, 116};
-
-/* Maps G.723_16 code word to log of scale factor multiplier.
- *
- * _witab[4] is actually {-22 , 439, 439, -22}, but FILTD wants it
- * as WI << 5 (multiplied by 32), so we'll do that here
- */
-static short _witab[4] = {-704, 14048, 14048, -704};
-
-/*
- * Maps G.723_16 code words to a set of values whose long and short
- * term averages are computed and then compared to give an indication
- * how stationary (steady state) the signal is.
- */
-
-/* Comes from FUNCTF */
-static short _fitab[4] = {0, 0xE00, 0xE00, 0};
-
-/* Comes from quantizer decision level tables (Table 7/G.726)
- */
-static short qtab_723_16[1] = {261};
-
-
-/*
- * g723_16_encoder()
- *
- * Encodes a linear PCM, A-law or u-law input sample and returns its 2-bit code.
- * Returns -1 if invalid input coding value.
- */
-int
-g723_16_encoder(
- int sl,
- G72x_STATE *state_ptr)
-{
- short sei, sezi, se, sez; /* ACCUM */
- short d; /* SUBTA */
- short y; /* MIX */
- short sr; /* ADDB */
- short dqsez; /* ADDC */
- short dq, i;
-
- /* linearize input sample to 14-bit PCM */
- sl >>= 2; /* sl of 14-bit dynamic range */
-
- sezi = predictor_zero(state_ptr);
- sez = sezi >> 1;
- sei = sezi + predictor_pole(state_ptr);
- se = sei >> 1; /* se = estimated signal */
-
- d = sl - se; /* d = estimation diff. */
-
- /* quantize prediction difference d */
- y = step_size(state_ptr); /* quantizer step size */
- i = quantize(d, y, qtab_723_16, 1); /* i = ADPCM code */
-
- /* Since quantize() only produces a three level output
- * (1, 2, or 3), we must create the fourth one on our own
- */
- if (i == 3) /* i code for the zero region */
- if ((d & 0x8000) == 0) /* If d > 0, i=3 isn't right... */
- i = 0;
-
- dq = reconstruct(i & 2, _dqlntab[i], y); /* quantized diff. */
-
- sr = (dq < 0) ? se - (dq & 0x3FFF) : se + dq; /* reconstructed signal */
-
- dqsez = sr + sez - se; /* pole prediction diff. */
-
- update(2, y, _witab[i], _fitab[i], dq, sr, dqsez, state_ptr);
-
- return (i);
-}
-
-/*
- * g723_16_decoder()
- *
- * Decodes a 2-bit CCITT G.723_16 ADPCM code and returns
- * the resulting 16-bit linear PCM, A-law or u-law sample value.
- * -1 is returned if the output coding is unknown.
- */
-int
-g723_16_decoder(
- int i,
- G72x_STATE *state_ptr)
-{
- short sezi, sei, sez, se; /* ACCUM */
- short y; /* MIX */
- short sr; /* ADDB */
- short dq;
- short dqsez;
-
- i &= 0x03; /* mask to get proper bits */
- sezi = predictor_zero(state_ptr);
- sez = sezi >> 1;
- sei = sezi + predictor_pole(state_ptr);
- se = sei >> 1; /* se = estimated signal */
-
- y = step_size(state_ptr); /* adaptive quantizer step size */
- dq = reconstruct(i & 0x02, _dqlntab[i], y); /* unquantize pred diff */
-
- sr = (dq < 0) ? (se - (dq & 0x3FFF)) : (se + dq); /* reconst. signal */
-
- dqsez = sr - se + sez; /* pole prediction diff. */
-
- update(2, y, _witab[i], _fitab[i], dq, sr, dqsez, state_ptr);
-
- /* sr was of 14-bit dynamic range */
- return (sr << 2);
-}
-/*
-** Do not edit or modify anything in this comment block.
-** The arch-tag line is a file identity tag for the GNU Arch
-** revision control system.
-**
-** arch-tag: ae265466-c3fc-4f83-bb32-edae488a5ca5
-*/
-
diff --git a/libs/libsndfile/src/G72x/g723_24.c b/libs/libsndfile/src/G72x/g723_24.c
deleted file mode 100644
index 8748459ac4..0000000000
--- a/libs/libsndfile/src/G72x/g723_24.c
+++ /dev/null
@@ -1,146 +0,0 @@
-/*
- * This source code is a product of Sun Microsystems, Inc. and is provided
- * for unrestricted use. Users may copy or modify this source code without
- * charge.
- *
- * SUN SOURCE CODE IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING
- * THE WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
- *
- * Sun source code is provided with no support and without any obligation on
- * the part of Sun Microsystems, Inc. to assist in its use, correction,
- * modification or enhancement.
- *
- * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY THIS SOFTWARE
- * OR ANY PART THEREOF.
- *
- * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- * or profits or other special, indirect and consequential damages, even if
- * Sun has been advised of the possibility of such damages.
- *
- * Sun Microsystems, Inc.
- * 2550 Garcia Avenue
- * Mountain View, California 94043
- */
-
-/*
- * g723_24.c
- *
- * Description:
- *
- * g723_24_encoder(), g723_24_decoder()
- *
- * These routines comprise an implementation of the CCITT G.723 24 Kbps
- * ADPCM coding algorithm. Essentially, this implementation is identical to
- * the bit level description except for a few deviations which take advantage
- * of workstation attributes, such as hardware 2's complement arithmetic.
- *
- */
-
-#include "g72x.h"
-#include "g72x_priv.h"
-
-/*
- * Maps G.723_24 code word to reconstructed scale factor normalized log
- * magnitude values.
- */
-static short _dqlntab[8] = {-2048, 135, 273, 373, 373, 273, 135, -2048};
-
-/* Maps G.723_24 code word to log of scale factor multiplier. */
-static short _witab[8] = {-128, 960, 4384, 18624, 18624, 4384, 960, -128};
-
-/*
- * Maps G.723_24 code words to a set of values whose long and short
- * term averages are computed and then compared to give an indication
- * how stationary (steady state) the signal is.
- */
-static short _fitab[8] = {0, 0x200, 0x400, 0xE00, 0xE00, 0x400, 0x200, 0};
-
-static short qtab_723_24[3] = {8, 218, 331};
-
-/*
- * g723_24_encoder()
- *
- * Encodes a linear PCM, A-law or u-law input sample and returns its 3-bit code.
- * Returns -1 if invalid input coding value.
- */
-int
-g723_24_encoder(
- int sl,
- G72x_STATE *state_ptr)
-{
- short sei, sezi, se, sez; /* ACCUM */
- short d; /* SUBTA */
- short y; /* MIX */
- short sr; /* ADDB */
- short dqsez; /* ADDC */
- short dq, i;
-
- /* linearize input sample to 14-bit PCM */
- sl >>= 2; /* sl of 14-bit dynamic range */
-
- sezi = predictor_zero(state_ptr);
- sez = sezi >> 1;
- sei = sezi + predictor_pole(state_ptr);
- se = sei >> 1; /* se = estimated signal */
-
- d = sl - se; /* d = estimation diff. */
-
- /* quantize prediction difference d */
- y = step_size(state_ptr); /* quantizer step size */
- i = quantize(d, y, qtab_723_24, 3); /* i = ADPCM code */
- dq = reconstruct(i & 4, _dqlntab[i], y); /* quantized diff. */
-
- sr = (dq < 0) ? se - (dq & 0x3FFF) : se + dq; /* reconstructed signal */
-
- dqsez = sr + sez - se; /* pole prediction diff. */
-
- update(3, y, _witab[i], _fitab[i], dq, sr, dqsez, state_ptr);
-
- return (i);
-}
-
-/*
- * g723_24_decoder()
- *
- * Decodes a 3-bit CCITT G.723_24 ADPCM code and returns
- * the resulting 16-bit linear PCM, A-law or u-law sample value.
- * -1 is returned if the output coding is unknown.
- */
-int
-g723_24_decoder(
- int i,
- G72x_STATE *state_ptr)
-{
- short sezi, sei, sez, se; /* ACCUM */
- short y; /* MIX */
- short sr; /* ADDB */
- short dq;
- short dqsez;
-
- i &= 0x07; /* mask to get proper bits */
- sezi = predictor_zero(state_ptr);
- sez = sezi >> 1;
- sei = sezi + predictor_pole(state_ptr);
- se = sei >> 1; /* se = estimated signal */
-
- y = step_size(state_ptr); /* adaptive quantizer step size */
- dq = reconstruct(i & 0x04, _dqlntab[i], y); /* unquantize pred diff */
-
- sr = (dq < 0) ? (se - (dq & 0x3FFF)) : (se + dq); /* reconst. signal */
-
- dqsez = sr - se + sez; /* pole prediction diff. */
-
- update(3, y, _witab[i], _fitab[i], dq, sr, dqsez, state_ptr);
-
- return (sr << 2); /* sr was of 14-bit dynamic range */
-}
-/*
-** Do not edit or modify anything in this comment block.
-** The arch-tag line is a file identity tag for the GNU Arch
-** revision control system.
-**
-** arch-tag: 75389236-650b-4427-98f3-0df6e8fb24bc
-*/
-
diff --git a/libs/libsndfile/src/G72x/g723_40.c b/libs/libsndfile/src/G72x/g723_40.c
deleted file mode 100644
index 6ddb577dfb..0000000000
--- a/libs/libsndfile/src/G72x/g723_40.c
+++ /dev/null
@@ -1,160 +0,0 @@
-/*
- * This source code is a product of Sun Microsystems, Inc. and is provided
- * for unrestricted use. Users may copy or modify this source code without
- * charge.
- *
- * SUN SOURCE CODE IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING
- * THE WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
- *
- * Sun source code is provided with no support and without any obligation on
- * the part of Sun Microsystems, Inc. to assist in its use, correction,
- * modification or enhancement.
- *
- * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY THIS SOFTWARE
- * OR ANY PART THEREOF.
- *
- * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- * or profits or other special, indirect and consequential damages, even if
- * Sun has been advised of the possibility of such damages.
- *
- * Sun Microsystems, Inc.
- * 2550 Garcia Avenue
- * Mountain View, California 94043
- */
-
-/*
- * g723_40.c
- *
- * Description:
- *
- * g723_40_encoder(), g723_40_decoder()
- *
- * These routines comprise an implementation of the CCITT G.723 40Kbps
- * ADPCM coding algorithm. Essentially, this implementation is identical to
- * the bit level description except for a few deviations which
- * take advantage of workstation attributes, such as hardware 2's
- * complement arithmetic.
- *
- * The deviation from the bit level specification (lookup tables),
- * preserves the bit level performance specifications.
- *
- * As outlined in the G.723 Recommendation, the algorithm is broken
- * down into modules. Each section of code below is preceded by
- * the name of the module which it is implementing.
- *
- */
-
-#include "g72x.h"
-#include "g72x_priv.h"
-
-/*
- * Maps G.723_40 code word to ructeconstructed scale factor normalized log
- * magnitude values.
- */
-static short _dqlntab[32] = {-2048, -66, 28, 104, 169, 224, 274, 318,
- 358, 395, 429, 459, 488, 514, 539, 566,
- 566, 539, 514, 488, 459, 429, 395, 358,
- 318, 274, 224, 169, 104, 28, -66, -2048};
-
-/* Maps G.723_40 code word to log of scale factor multiplier. */
-static short _witab[32] = {448, 448, 768, 1248, 1280, 1312, 1856, 3200,
- 4512, 5728, 7008, 8960, 11456, 14080, 16928, 22272,
- 22272, 16928, 14080, 11456, 8960, 7008, 5728, 4512,
- 3200, 1856, 1312, 1280, 1248, 768, 448, 448};
-
-/*
- * Maps G.723_40 code words to a set of values whose long and short
- * term averages are computed and then compared to give an indication
- * how stationary (steady state) the signal is.
- */
-static short _fitab[32] = {0, 0, 0, 0, 0, 0x200, 0x200, 0x200,
- 0x200, 0x200, 0x400, 0x600, 0x800, 0xA00, 0xC00, 0xC00,
- 0xC00, 0xC00, 0xA00, 0x800, 0x600, 0x400, 0x200, 0x200,
- 0x200, 0x200, 0x200, 0, 0, 0, 0, 0};
-
-static short qtab_723_40[15] = {-122, -16, 68, 139, 198, 250, 298, 339,
- 378, 413, 445, 475, 502, 528, 553};
-
-/*
- * g723_40_encoder()
- *
- * Encodes a 16-bit linear PCM, A-law or u-law input sample and retuens
- * the resulting 5-bit CCITT G.723 40Kbps code.
- * Returns -1 if the input coding value is invalid.
- */
-int g723_40_encoder (int sl, G72x_STATE *state_ptr)
-{
- short sei, sezi, se, sez; /* ACCUM */
- short d; /* SUBTA */
- short y; /* MIX */
- short sr; /* ADDB */
- short dqsez; /* ADDC */
- short dq, i;
-
- /* linearize input sample to 14-bit PCM */
- sl >>= 2; /* sl of 14-bit dynamic range */
-
- sezi = predictor_zero(state_ptr);
- sez = sezi >> 1;
- sei = sezi + predictor_pole(state_ptr);
- se = sei >> 1; /* se = estimated signal */
-
- d = sl - se; /* d = estimation difference */
-
- /* quantize prediction difference */
- y = step_size(state_ptr); /* adaptive quantizer step size */
- i = quantize(d, y, qtab_723_40, 15); /* i = ADPCM code */
-
- dq = reconstruct(i & 0x10, _dqlntab[i], y); /* quantized diff */
-
- sr = (dq < 0) ? se - (dq & 0x7FFF) : se + dq; /* reconstructed signal */
-
- dqsez = sr + sez - se; /* dqsez = pole prediction diff. */
-
- update(5, y, _witab[i], _fitab[i], dq, sr, dqsez, state_ptr);
-
- return (i);
-}
-
-/*
- * g723_40_decoder()
- *
- * Decodes a 5-bit CCITT G.723 40Kbps code and returns
- * the resulting 16-bit linear PCM, A-law or u-law sample value.
- * -1 is returned if the output coding is unknown.
- */
-int g723_40_decoder (int i, G72x_STATE *state_ptr)
-{
- short sezi, sei, sez, se; /* ACCUM */
- short y ; /* MIX */
- short sr; /* ADDB */
- short dq;
- short dqsez;
-
- i &= 0x1f; /* mask to get proper bits */
- sezi = predictor_zero(state_ptr);
- sez = sezi >> 1;
- sei = sezi + predictor_pole(state_ptr);
- se = sei >> 1; /* se = estimated signal */
-
- y = step_size(state_ptr); /* adaptive quantizer step size */
- dq = reconstruct(i & 0x10, _dqlntab[i], y); /* estimation diff. */
-
- sr = (dq < 0) ? (se - (dq & 0x7FFF)) : (se + dq); /* reconst. signal */
-
- dqsez = sr - se + sez; /* pole prediction diff. */
-
- update(5, y, _witab[i], _fitab[i], dq, sr, dqsez, state_ptr);
-
- return (sr << 2); /* sr was of 14-bit dynamic range */
-}
-/*
-** Do not edit or modify anything in this comment block.
-** The arch-tag line is a file identity tag for the GNU Arch
-** revision control system.
-**
-** arch-tag: eb8d9a00-32bf-4dd2-b287-01b0336d72bf
-*/
-
diff --git a/libs/libsndfile/src/G72x/g72x.c b/libs/libsndfile/src/G72x/g72x.c
deleted file mode 100644
index ea01d793d0..0000000000
--- a/libs/libsndfile/src/G72x/g72x.c
+++ /dev/null
@@ -1,652 +0,0 @@
-/*
- * This source code is a product of Sun Microsystems, Inc. and is provided
- * for unrestricted use. Users may copy or modify this source code without
- * charge.
- *
- * SUN SOURCE CODE IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING
- * THE WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
- *
- * Sun source code is provided with no support and without any obligation on
- * the part of Sun Microsystems, Inc. to assist in its use, correction,
- * modification or enhancement.
- *
- * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY THIS SOFTWARE
- * OR ANY PART THEREOF.
- *
- * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- * or profits or other special, indirect and consequential damages, even if
- * Sun has been advised of the possibility of such damages.
- *
- * Sun Microsystems, Inc.
- * 2550 Garcia Avenue
- * Mountain View, California 94043
- */
-
-/*
- * g72x.c
- *
- * Common routines for G.721 and G.723 conversions.
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "g72x.h"
-#include "g72x_priv.h"
-
-static G72x_STATE * g72x_state_new (void) ;
-static int unpack_bytes (int bits, int blocksize, const unsigned char * block, short * samples) ;
-static int pack_bytes (int bits, const short * samples, unsigned char * block) ;
-
-static
-short power2 [15] =
-{ 1, 2, 4, 8, 0x10, 0x20, 0x40, 0x80,
- 0x100, 0x200, 0x400, 0x800, 0x1000, 0x2000, 0x4000
-} ;
-
-/*
- * quan()
- *
- * quantizes the input val against the table of size short integers.
- * It returns i if table[i - 1] <= val < table[i].
- *
- * Using linear search for simple coding.
- */
-static
-int quan (int val, short *table, int size)
-{
- int i;
-
- for (i = 0; i < size; i++)
- if (val < *table++)
- break;
- return (i);
-}
-
-/*
- * fmult()
- *
- * returns the integer product of the 14-bit integer "an" and
- * "floating point" representation (4-bit exponent, 6-bit mantessa) "srn".
- */
-static
-int fmult (int an, int srn)
-{
- short anmag, anexp, anmant;
- short wanexp, wanmant;
- short retval;
-
- anmag = (an > 0) ? an : ((-an) & 0x1FFF);
- anexp = quan(anmag, power2, 15) - 6;
- anmant = (anmag == 0) ? 32 :
- (anexp >= 0) ? anmag >> anexp : anmag << -anexp;
- wanexp = anexp + ((srn >> 6) & 0xF) - 13;
-
- /*
- ** The original was :
- ** wanmant = (anmant * (srn & 0x37) + 0x30) >> 4 ;
- ** but could see no valid reason for the + 0x30.
- ** Removed it and it improved the SNR of the codec.
- */
-
- wanmant = (anmant * (srn & 0x37)) >> 4 ;
-
- retval = (wanexp >= 0) ? ((wanmant << wanexp) & 0x7FFF) :
- (wanmant >> -wanexp);
-
- return (((an ^ srn) < 0) ? -retval : retval);
-}
-
-static G72x_STATE * g72x_state_new (void)
-{ return calloc (1, sizeof (G72x_STATE)) ;
-}
-
-/*
- * private_init_state()
- *
- * This routine initializes and/or resets the G72x_PRIVATE structure
- * pointed to by 'state_ptr'.
- * All the initial state values are specified in the CCITT G.721 document.
- */
-void private_init_state (G72x_STATE *state_ptr)
-{
- int cnta;
-
- state_ptr->yl = 34816;
- state_ptr->yu = 544;
- state_ptr->dms = 0;
- state_ptr->dml = 0;
- state_ptr->ap = 0;
- for (cnta = 0; cnta < 2; cnta++) {
- state_ptr->a[cnta] = 0;
- state_ptr->pk[cnta] = 0;
- state_ptr->sr[cnta] = 32;
- }
- for (cnta = 0; cnta < 6; cnta++) {
- state_ptr->b[cnta] = 0;
- state_ptr->dq[cnta] = 32;
- }
- state_ptr->td = 0;
-} /* private_init_state */
-
-struct g72x_state * g72x_reader_init (int codec, int *blocksize, int *samplesperblock)
-{ G72x_STATE *pstate ;
-
- if ((pstate = g72x_state_new ()) == NULL)
- return NULL ;
-
- private_init_state (pstate) ;
-
- pstate->encoder = NULL ;
-
- switch (codec)
- { case G723_16_BITS_PER_SAMPLE : /* 2 bits per sample. */
- pstate->decoder = g723_16_decoder ;
- *blocksize = G723_16_BYTES_PER_BLOCK ;
- *samplesperblock = G723_16_SAMPLES_PER_BLOCK ;
- pstate->codec_bits = 2 ;
- pstate->blocksize = G723_16_BYTES_PER_BLOCK ;
- pstate->samplesperblock = G723_16_SAMPLES_PER_BLOCK ;
- break ;
-
- case G723_24_BITS_PER_SAMPLE : /* 3 bits per sample. */
- pstate->decoder = g723_24_decoder ;
- *blocksize = G723_24_BYTES_PER_BLOCK ;
- *samplesperblock = G723_24_SAMPLES_PER_BLOCK ;
- pstate->codec_bits = 3 ;
- pstate->blocksize = G723_24_BYTES_PER_BLOCK ;
- pstate->samplesperblock = G723_24_SAMPLES_PER_BLOCK ;
- break ;
-
- case G721_32_BITS_PER_SAMPLE : /* 4 bits per sample. */
- pstate->decoder = g721_decoder ;
- *blocksize = G721_32_BYTES_PER_BLOCK ;
- *samplesperblock = G721_32_SAMPLES_PER_BLOCK ;
- pstate->codec_bits = 4 ;
- pstate->blocksize = G721_32_BYTES_PER_BLOCK ;
- pstate->samplesperblock = G721_32_SAMPLES_PER_BLOCK ;
- break ;
-
- case G721_40_BITS_PER_SAMPLE : /* 5 bits per sample. */
- pstate->decoder = g723_40_decoder ;
- *blocksize = G721_40_BYTES_PER_BLOCK ;
- *samplesperblock = G721_40_SAMPLES_PER_BLOCK ;
- pstate->codec_bits = 5 ;
- pstate->blocksize = G721_40_BYTES_PER_BLOCK ;
- pstate->samplesperblock = G721_40_SAMPLES_PER_BLOCK ;
- break ;
-
- default :
- free (pstate) ;
- return NULL ;
- } ;
-
- return pstate ;
-} /* g72x_reader_init */
-
-struct g72x_state * g72x_writer_init (int codec, int *blocksize, int *samplesperblock)
-{ G72x_STATE *pstate ;
-
- if ((pstate = g72x_state_new ()) == NULL)
- return NULL ;
-
- private_init_state (pstate) ;
- pstate->decoder = NULL ;
-
- switch (codec)
- { case G723_16_BITS_PER_SAMPLE : /* 2 bits per sample. */
- pstate->encoder = g723_16_encoder ;
- *blocksize = G723_16_BYTES_PER_BLOCK ;
- *samplesperblock = G723_16_SAMPLES_PER_BLOCK ;
- pstate->codec_bits = 2 ;
- pstate->blocksize = G723_16_BYTES_PER_BLOCK ;
- pstate->samplesperblock = G723_16_SAMPLES_PER_BLOCK ;
- break ;
-
- case G723_24_BITS_PER_SAMPLE : /* 3 bits per sample. */
- pstate->encoder = g723_24_encoder ;
- *blocksize = G723_24_BYTES_PER_BLOCK ;
- *samplesperblock = G723_24_SAMPLES_PER_BLOCK ;
- pstate->codec_bits = 3 ;
- pstate->blocksize = G723_24_BYTES_PER_BLOCK ;
- pstate->samplesperblock = G723_24_SAMPLES_PER_BLOCK ;
- break ;
-
- case G721_32_BITS_PER_SAMPLE : /* 4 bits per sample. */
- pstate->encoder = g721_encoder ;
- *blocksize = G721_32_BYTES_PER_BLOCK ;
- *samplesperblock = G721_32_SAMPLES_PER_BLOCK ;
- pstate->codec_bits = 4 ;
- pstate->blocksize = G721_32_BYTES_PER_BLOCK ;
- pstate->samplesperblock = G721_32_SAMPLES_PER_BLOCK ;
- break ;
-
- case G721_40_BITS_PER_SAMPLE : /* 5 bits per sample. */
- pstate->encoder = g723_40_encoder ;
- *blocksize = G721_40_BYTES_PER_BLOCK ;
- *samplesperblock = G721_40_SAMPLES_PER_BLOCK ;
- pstate->codec_bits = 5 ;
- pstate->blocksize = G721_40_BYTES_PER_BLOCK ;
- pstate->samplesperblock = G721_40_SAMPLES_PER_BLOCK ;
- break ;
-
- default :
- free (pstate) ;
- return NULL ;
- } ;
-
- return pstate ;
-} /* g72x_writer_init */
-
-int g72x_decode_block (G72x_STATE *pstate, const unsigned char *block, short *samples)
-{ int k, count ;
-
- count = unpack_bytes (pstate->codec_bits, pstate->blocksize, block, samples) ;
-
- for (k = 0 ; k < count ; k++)
- samples [k] = pstate->decoder (samples [k], pstate) ;
-
- return 0 ;
-} /* g72x_decode_block */
-
-int g72x_encode_block (G72x_STATE *pstate, short *samples, unsigned char *block)
-{ int k, count ;
-
- for (k = 0 ; k < pstate->samplesperblock ; k++)
- samples [k] = pstate->encoder (samples [k], pstate) ;
-
- count = pack_bytes (pstate->codec_bits, samples, block) ;
-
- return count ;
-} /* g72x_encode_block */
-
-/*
- * predictor_zero()
- *
- * computes the estimated signal from 6-zero predictor.
- *
- */
-int predictor_zero (G72x_STATE *state_ptr)
-{
- int i;
- int sezi;
-
- sezi = fmult(state_ptr->b[0] >> 2, state_ptr->dq[0]);
- for (i = 1; i < 6; i++) /* ACCUM */
- sezi += fmult(state_ptr->b[i] >> 2, state_ptr->dq[i]);
- return (sezi);
-}
-/*
- * predictor_pole()
- *
- * computes the estimated signal from 2-pole predictor.
- *
- */
-int predictor_pole(G72x_STATE *state_ptr)
-{
- return (fmult(state_ptr->a[1] >> 2, state_ptr->sr[1]) +
- fmult(state_ptr->a[0] >> 2, state_ptr->sr[0]));
-}
-/*
- * step_size()
- *
- * computes the quantization step size of the adaptive quantizer.
- *
- */
-int step_size (G72x_STATE *state_ptr)
-{
- int y;
- int dif;
- int al;
-
- if (state_ptr->ap >= 256)
- return (state_ptr->yu);
- else {
- y = state_ptr->yl >> 6;
- dif = state_ptr->yu - y;
- al = state_ptr->ap >> 2;
- if (dif > 0)
- y += (dif * al) >> 6;
- else if (dif < 0)
- y += (dif * al + 0x3F) >> 6;
- return (y);
- }
-}
-
-/*
- * quantize()
- *
- * Given a raw sample, 'd', of the difference signal and a
- * quantization step size scale factor, 'y', this routine returns the
- * ADPCM codeword to which that sample gets quantized. The step
- * size scale factor division operation is done in the log base 2 domain
- * as a subtraction.
- */
-int quantize(
- int d, /* Raw difference signal sample */
- int y, /* Step size multiplier */
- short *table, /* quantization table */
- int size) /* table size of short integers */
-{
- short dqm; /* Magnitude of 'd' */
- short expon; /* Integer part of base 2 log of 'd' */
- short mant; /* Fractional part of base 2 log */
- short dl; /* Log of magnitude of 'd' */
- short dln; /* Step size scale factor normalized log */
- int i;
-
- /*
- * LOG
- *
- * Compute base 2 log of 'd', and store in 'dl'.
- */
- dqm = abs(d);
- expon = quan(dqm >> 1, power2, 15);
- mant = ((dqm << 7) >> expon) & 0x7F; /* Fractional portion. */
- dl = (expon << 7) + mant;
-
- /*
- * SUBTB
- *
- * "Divide" by step size multiplier.
- */
- dln = dl - (y >> 2);
-
- /*
- * QUAN
- *
- * Obtain codword i for 'd'.
- */
- i = quan(dln, table, size);
- if (d < 0) /* take 1's complement of i */
- return ((size << 1) + 1 - i);
- else if (i == 0) /* take 1's complement of 0 */
- return ((size << 1) + 1); /* new in 1988 */
- else
- return (i);
-}
-/*
- * reconstruct()
- *
- * Returns reconstructed difference signal 'dq' obtained from
- * codeword 'i' and quantization step size scale factor 'y'.
- * Multiplication is performed in log base 2 domain as addition.
- */
-int
-reconstruct(
- int sign, /* 0 for non-negative value */
- int dqln, /* G.72x codeword */
- int y) /* Step size multiplier */
-{
- short dql; /* Log of 'dq' magnitude */
- short dex; /* Integer part of log */
- short dqt;
- short dq; /* Reconstructed difference signal sample */
-
- dql = dqln + (y >> 2); /* ADDA */
-
- if (dql < 0) {
- return ((sign) ? -0x8000 : 0);
- } else { /* ANTILOG */
- dex = (dql >> 7) & 15;
- dqt = 128 + (dql & 127);
- dq = (dqt << 7) >> (14 - dex);
- return ((sign) ? (dq - 0x8000) : dq);
- }
-}
-
-
-/*
- * update()
- *
- * updates the state variables for each output code
- */
-void
-update(
- int code_size, /* distinguish 723_40 with others */
- int y, /* quantizer step size */
- int wi, /* scale factor multiplier */
- int fi, /* for long/short term energies */
- int dq, /* quantized prediction difference */
- int sr, /* reconstructed signal */
- int dqsez, /* difference from 2-pole predictor */
- G72x_STATE *state_ptr) /* coder state pointer */
-{
- int cnt;
- short mag, expon; /* Adaptive predictor, FLOAT A */
- short a2p = 0; /* LIMC */
- short a1ul; /* UPA1 */
- short pks1; /* UPA2 */
- short fa1;
- char tr; /* tone/transition detector */
- short ylint, thr2, dqthr;
- short ylfrac, thr1;
- short pk0;
-
- pk0 = (dqsez < 0) ? 1 : 0; /* needed in updating predictor poles */
-
- mag = dq & 0x7FFF; /* prediction difference magnitude */
- /* TRANS */
- ylint = state_ptr->yl >> 15; /* exponent part of yl */
- ylfrac = (state_ptr->yl >> 10) & 0x1F; /* fractional part of yl */
- thr1 = (32 + ylfrac) << ylint; /* threshold */
- thr2 = (ylint > 9) ? 31 << 10 : thr1; /* limit thr2 to 31 << 10 */
- dqthr = (thr2 + (thr2 >> 1)) >> 1; /* dqthr = 0.75 * thr2 */
- if (state_ptr->td == 0) /* signal supposed voice */
- tr = 0;
- else if (mag <= dqthr) /* supposed data, but small mag */
- tr = 0; /* treated as voice */
- else /* signal is data (modem) */
- tr = 1;
-
- /*
- * Quantizer scale factor adaptation.
- */
-
- /* FUNCTW & FILTD & DELAY */
- /* update non-steady state step size multiplier */
- state_ptr->yu = y + ((wi - y) >> 5);
-
- /* LIMB */
- if (state_ptr->yu < 544) /* 544 <= yu <= 5120 */
- state_ptr->yu = 544;
- else if (state_ptr->yu > 5120)
- state_ptr->yu = 5120;
-
- /* FILTE & DELAY */
- /* update steady state step size multiplier */
- state_ptr->yl += state_ptr->yu + ((-state_ptr->yl) >> 6);
-
- /*
- * Adaptive predictor coefficients.
- */
- if (tr == 1) { /* reset a's and b's for modem signal */
- state_ptr->a[0] = 0;
- state_ptr->a[1] = 0;
- state_ptr->b[0] = 0;
- state_ptr->b[1] = 0;
- state_ptr->b[2] = 0;
- state_ptr->b[3] = 0;
- state_ptr->b[4] = 0;
- state_ptr->b[5] = 0;
- } else { /* update a's and b's */
- pks1 = pk0 ^ state_ptr->pk[0]; /* UPA2 */
-
- /* update predictor pole a[1] */
- a2p = state_ptr->a[1] - (state_ptr->a[1] >> 7);
- if (dqsez != 0) {
- fa1 = (pks1) ? state_ptr->a[0] : -state_ptr->a[0];
- if (fa1 < -8191) /* a2p = function of fa1 */
- a2p -= 0x100;
- else if (fa1 > 8191)
- a2p += 0xFF;
- else
- a2p += fa1 >> 5;
-
- if (pk0 ^ state_ptr->pk[1])
- { /* LIMC */
- if (a2p <= -12160)
- a2p = -12288;
- else if (a2p >= 12416)
- a2p = 12288;
- else
- a2p -= 0x80;
- }
- else if (a2p <= -12416)
- a2p = -12288;
- else if (a2p >= 12160)
- a2p = 12288;
- else
- a2p += 0x80;
- }
-
- /* TRIGB & DELAY */
- state_ptr->a[1] = a2p;
-
- /* UPA1 */
- /* update predictor pole a[0] */
- state_ptr->a[0] -= state_ptr->a[0] >> 8;
- if (dqsez != 0)
- { if (pks1 == 0)
- state_ptr->a[0] += 192;
- else
- state_ptr->a[0] -= 192;
- } ;
-
- /* LIMD */
- a1ul = 15360 - a2p;
- if (state_ptr->a[0] < -a1ul)
- state_ptr->a[0] = -a1ul;
- else if (state_ptr->a[0] > a1ul)
- state_ptr->a[0] = a1ul;
-
- /* UPB : update predictor zeros b[6] */
- for (cnt = 0; cnt < 6; cnt++) {
- if (code_size == 5) /* for 40Kbps G.723 */
- state_ptr->b[cnt] -= state_ptr->b[cnt] >> 9;
- else /* for G.721 and 24Kbps G.723 */
- state_ptr->b[cnt] -= state_ptr->b[cnt] >> 8;
- if (dq & 0x7FFF) { /* XOR */
- if ((dq ^ state_ptr->dq[cnt]) >= 0)
- state_ptr->b[cnt] += 128;
- else
- state_ptr->b[cnt] -= 128;
- }
- }
- }
-
- for (cnt = 5; cnt > 0; cnt--)
- state_ptr->dq[cnt] = state_ptr->dq[cnt-1];
- /* FLOAT A : convert dq[0] to 4-bit exp, 6-bit mantissa f.p. */
- if (mag == 0) {
- state_ptr->dq[0] = (dq >= 0) ? 0x20 : 0xFC20;
- } else {
- expon = quan(mag, power2, 15);
- state_ptr->dq[0] = (dq >= 0) ?
- (expon << 6) + ((mag << 6) >> expon) :
- (expon << 6) + ((mag << 6) >> expon) - 0x400;
- }
-
- state_ptr->sr[1] = state_ptr->sr[0];
- /* FLOAT B : convert sr to 4-bit exp., 6-bit mantissa f.p. */
- if (sr == 0) {
- state_ptr->sr[0] = 0x20;
- } else if (sr > 0) {
- expon = quan(sr, power2, 15);
- state_ptr->sr[0] = (expon << 6) + ((sr << 6) >> expon);
- } else if (sr > -32768) {
- mag = -sr;
- expon = quan(mag, power2, 15);
- state_ptr->sr[0] = (expon << 6) + ((mag << 6) >> expon) - 0x400;
- } else
- state_ptr->sr[0] = (short) 0xFC20;
-
- /* DELAY A */
- state_ptr->pk[1] = state_ptr->pk[0];
- state_ptr->pk[0] = pk0;
-
- /* TONE */
- if (tr == 1) /* this sample has been treated as data */
- state_ptr->td = 0; /* next one will be treated as voice */
- else if (a2p < -11776) /* small sample-to-sample correlation */
- state_ptr->td = 1; /* signal may be data */
- else /* signal is voice */
- state_ptr->td = 0;
-
- /*
- * Adaptation speed control.
- */
- state_ptr->dms += (fi - state_ptr->dms) >> 5; /* FILTA */
- state_ptr->dml += (((fi << 2) - state_ptr->dml) >> 7); /* FILTB */
-
- if (tr == 1)
- state_ptr->ap = 256;
- else if (y < 1536) /* SUBTC */
- state_ptr->ap += (0x200 - state_ptr->ap) >> 4;
- else if (state_ptr->td == 1)
- state_ptr->ap += (0x200 - state_ptr->ap) >> 4;
- else if (abs((state_ptr->dms << 2) - state_ptr->dml) >=
- (state_ptr->dml >> 3))
- state_ptr->ap += (0x200 - state_ptr->ap) >> 4;
- else
- state_ptr->ap += (-state_ptr->ap) >> 4;
-
- return ;
-} /* update */
-
-/*------------------------------------------------------------------------------
-*/
-
-static int
-unpack_bytes (int bits, int blocksize, const unsigned char * block, short * samples)
-{ unsigned int in_buffer = 0 ;
- unsigned char in_byte ;
- int k, in_bits = 0, bindex = 0 ;
-
- for (k = 0 ; bindex <= blocksize && k < G72x_BLOCK_SIZE ; k++)
- { if (in_bits < bits)
- { in_byte = block [bindex++] ;
-
- in_buffer |= (in_byte << in_bits);
- in_bits += 8;
- }
- samples [k] = in_buffer & ((1 << bits) - 1);
- in_buffer >>= bits;
- in_bits -= bits;
- } ;
-
- return k ;
-} /* unpack_bytes */
-
-static int
-pack_bytes (int bits, const short * samples, unsigned char * block)
-{
- unsigned int out_buffer = 0 ;
- int k, bindex = 0, out_bits = 0 ;
- unsigned char out_byte ;
-
- for (k = 0 ; k < G72x_BLOCK_SIZE ; k++)
- { out_buffer |= (samples [k] << out_bits) ;
- out_bits += bits ;
- if (out_bits >= 8)
- { out_byte = out_buffer & 0xFF ;
- out_bits -= 8 ;
- out_buffer >>= 8 ;
- block [bindex++] = out_byte ;
- }
- } ;
-
- return bindex ;
-} /* pack_bytes */
-
-/*
-** Do not edit or modify anything in this comment block.
-** The arch-tag line is a file identity tag for the GNU Arch
-** revision control system.
-**
-** arch-tag: 6298dc75-fd0f-4062-9b90-f73ed69f22d4
-*/
-
diff --git a/libs/libsndfile/src/G72x/g72x.h b/libs/libsndfile/src/G72x/g72x.h
deleted file mode 100644
index e6319e6248..0000000000
--- a/libs/libsndfile/src/G72x/g72x.h
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
-** Copyright (C) 1999-2005 Erik de Castro Lopo <erikd@mega-nerd.com>
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU Lesser General Public License as published by
-** the Free Software Foundation; either version 2.1 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU Lesser General Public License for more details.
-**
-** You should have received a copy of the GNU Lesser General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-*/
-
-/*
-** This file is not the same as the original file from Sun Microsystems. Nearly
-** all the original definitions and function prototypes that were in the file
-** of this name have been moved to g72x_priv.h.
-*/
-
-#ifndef G72X_HEADER_FILE
-#define G72X_HEADER_FILE
-
-/*
-** Number of samples per block to process.
-** Must be a common multiple of possible bits per sample : 2, 3, 4, 5 and 8.
-*/
-#define G72x_BLOCK_SIZE (3 * 5 * 8)
-
-/*
-** Identifiers for the differing kinds of G72x ADPCM codecs.
-** The identifiers also define the number of encoded bits per sample.
-*/
-
-enum
-{ G723_16_BITS_PER_SAMPLE = 2,
- G723_24_BITS_PER_SAMPLE = 3,
- G723_40_BITS_PER_SAMPLE = 5,
-
- G721_32_BITS_PER_SAMPLE = 4,
- G721_40_BITS_PER_SAMPLE = 5,
-
- G723_16_SAMPLES_PER_BLOCK = G72x_BLOCK_SIZE,
- G723_24_SAMPLES_PER_BLOCK = G723_24_BITS_PER_SAMPLE * (G72x_BLOCK_SIZE / G723_24_BITS_PER_SAMPLE),
- G723_40_SAMPLES_PER_BLOCK = G723_40_BITS_PER_SAMPLE * (G72x_BLOCK_SIZE / G723_40_BITS_PER_SAMPLE),
-
- G721_32_SAMPLES_PER_BLOCK = G72x_BLOCK_SIZE,
- G721_40_SAMPLES_PER_BLOCK = G721_40_BITS_PER_SAMPLE * (G72x_BLOCK_SIZE / G721_40_BITS_PER_SAMPLE),
-
- G723_16_BYTES_PER_BLOCK = (G723_16_BITS_PER_SAMPLE * G72x_BLOCK_SIZE) / 8,
- G723_24_BYTES_PER_BLOCK = (G723_24_BITS_PER_SAMPLE * G72x_BLOCK_SIZE) / 8,
- G723_40_BYTES_PER_BLOCK = (G723_40_BITS_PER_SAMPLE * G72x_BLOCK_SIZE) / 8,
-
- G721_32_BYTES_PER_BLOCK = (G721_32_BITS_PER_SAMPLE * G72x_BLOCK_SIZE) / 8,
- G721_40_BYTES_PER_BLOCK = (G721_40_BITS_PER_SAMPLE * G72x_BLOCK_SIZE) / 8
-} ;
-
-/* Forward declaration of of g72x_state. */
-
-struct g72x_state ;
-
-/* External function definitions. */
-
-struct g72x_state * g72x_reader_init (int codec, int *blocksize, int *samplesperblock) ;
-struct g72x_state * g72x_writer_init (int codec, int *blocksize, int *samplesperblock) ;
-/*
-** Initialize the ADPCM state table for the given codec.
-** Return 0 on success, 1 on fail.
-*/
-
-int g72x_decode_block (struct g72x_state *pstate, const unsigned char *block, short *samples) ;
-/*
-** The caller fills data->block with data->bytes bytes before calling the
-** function. The value data->bytes must be an integer multiple of
-** data->blocksize and be <= data->max_bytes.
-** When it returns, the caller can read out data->samples samples.
-*/
-
-int g72x_encode_block (struct g72x_state *pstate, short *samples, unsigned char *block) ;
-/*
-** The caller fills state->samples some integer multiple data->samples_per_block
-** (up to G72x_BLOCK_SIZE) samples before calling the function.
-** When it returns, the caller can read out bytes encoded bytes.
-*/
-
-#endif /* !G72X_HEADER_FILE */
-
-/*
-** Do not edit or modify anything in this comment block.
-** The arch-tag line is a file identity tag for the GNU Arch
-** revision control system.
-**
-** arch-tag: 6ca84e5f-f932-4ba1-87ee-37056d921621
-*/
-
diff --git a/libs/libsndfile/src/G72x/g72x_priv.h b/libs/libsndfile/src/G72x/g72x_priv.h
deleted file mode 100644
index a88e96d0da..0000000000
--- a/libs/libsndfile/src/G72x/g72x_priv.h
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- * This source code is a product of Sun Microsystems, Inc. and is provided
- * for unrestricted use. Users may copy or modify this source code without
- * charge.
- *
- * SUN SOURCE CODE IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING
- * THE WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
- *
- * Sun source code is provided with no support and without any obligation on
- * the part of Sun Microsystems, Inc. to assist in its use, correction,
- * modification or enhancement.
- *
- * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY THIS SOFTWARE
- * OR ANY PART THEREOF.
- *
- * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- * or profits or other special, indirect and consequential damages, even if
- * Sun has been advised of the possibility of such damages.
- *
- * Sun Microsystems, Inc.
- * 2550 Garcia Avenue
- * Mountain View, California 94043
- */
-
-#ifndef G72X_PRIVATE_H
-#define G72X_PRIVATE_H
-
-#ifdef __cplusplus
-#error "This code is not designed to be compiled with a C++ compiler."
-#endif
-
-/*
-** The following is the definition of the state structure used by the
-** G.721/G.723 encoder and decoder to preserve their internal state
-** between successive calls. The meanings of the majority of the state
-** structure fields are explained in detail in the CCITT Recommendation
-** G.721. The field names are essentially identical to variable names
-** in the bit level description of the coding algorithm included in this
-** Recommendation.
-*/
-
-struct g72x_state
-{ long yl; /* Locked or steady state step size multiplier. */
- short yu; /* Unlocked or non-steady state step size multiplier. */
- short dms; /* Short term energy estimate. */
- short dml; /* Long term energy estimate. */
- short ap; /* Linear weighting coefficient of 'yl' and 'yu'. */
-
- short a[2]; /* Coefficients of pole portion of prediction filter. */
- short b[6]; /* Coefficients of zero portion of prediction filter. */
- short pk[2]; /*
- ** Signs of previous two samples of a partially
- ** reconstructed signal.
- **/
- short dq[6]; /*
- ** Previous 6 samples of the quantized difference
- ** signal represented in an internal floating point
- ** format.
- **/
- short sr[2]; /*
- ** Previous 2 samples of the quantized difference
- ** signal represented in an internal floating point
- ** format.
- */
- char td; /* delayed tone detect, new in 1988 version */
-
- /* The following struct members were added for libsndfile. The original
- ** code worked by calling a set of functions on a sample by sample basis
- ** which is slow on architectures like Intel x86. For libsndfile, this
- ** was changed so that the encoding and decoding routines could work on
- ** a block of samples at a time to reduce the function call overhead.
- */
- int (*encoder) (int, struct g72x_state* state) ;
- int (*decoder) (int, struct g72x_state* state) ;
-
- int codec_bits, blocksize, samplesperblock ;
-} ;
-
-typedef struct g72x_state G72x_STATE ;
-
-int predictor_zero (G72x_STATE *state_ptr);
-
-int predictor_pole (G72x_STATE *state_ptr);
-
-int step_size (G72x_STATE *state_ptr);
-
-int quantize (int d, int y, short *table, int size);
-
-int reconstruct (int sign, int dqln, int y);
-
-void update (int code_size, int y, int wi, int fi, int dq, int sr, int dqsez, G72x_STATE *state_ptr);
-
-int g721_encoder (int sample, G72x_STATE *state_ptr);
-int g721_decoder (int code, G72x_STATE *state_ptr);
-
-int g723_16_encoder (int sample, G72x_STATE *state_ptr);
-int g723_16_decoder (int code, G72x_STATE *state_ptr);
-
-int g723_24_encoder (int sample, G72x_STATE *state_ptr);
-int g723_24_decoder (int code, G72x_STATE *state_ptr);
-
-int g723_40_encoder (int sample, G72x_STATE *state_ptr);
-int g723_40_decoder (int code, G72x_STATE *state_ptr);
-
-void private_init_state (G72x_STATE *state_ptr) ;
-
-#endif /* G72X_PRIVATE_H */
-
-/*
-** Do not edit or modify anything in this comment block.
-** The arch-tag line is a file identity tag for the GNU Arch
-** revision control system.
-**
-** arch-tag: d9ad4da7-0fa3-471d-8020-720b5cfb5e5b
-*/
-
diff --git a/libs/libsndfile/src/G72x/g72x_test.c b/libs/libsndfile/src/G72x/g72x_test.c
deleted file mode 100644
index caf58467b7..0000000000
--- a/libs/libsndfile/src/G72x/g72x_test.c
+++ /dev/null
@@ -1,222 +0,0 @@
-/*
-** Copyright (C) 1999-2004 Erik de Castro Lopo <erikd@mega-nerd.com>
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU General Public License for more details.
-**
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-*/
-
-#include <stdio.h>
-#include <unistd.h>
-#include <stdlib.h>
-#include <string.h>
-#include <math.h>
-
-#include "g72x.h"
-#include "g72x_priv.h"
-
-#ifndef M_PI
-#define M_PI 3.14159265358979323846264338
-#endif
-
-#define BUFFER_SIZE (1<<14) /* Should be (1<<14) */
-#define SAMPLE_RATE 11025
-
-
-static void g721_test (void) ;
-static void g723_test (double margin) ;
-
-static void gen_signal_double (double *data, double scale, int datalen) ;
-static int error_function (double data, double orig, double margin) ;
-
-static int oct_save_short (short *a, short *b, int len) ;
-
-int
-main (int argc, char *argv [])
-{ int bDoAll = 0 ;
- int nTests = 0 ;
-
- if (argc != 2)
- { printf ("Usage : %s <test>\n", argv [0]) ;
- printf (" Where <test> is one of the following:\n") ;
- printf (" g721 - test G721 encoder and decoder\n") ;
- printf (" g723 - test G721 encoder and decoder\n") ;
- printf (" all - perform all tests\n") ;
- exit (1) ;
- } ;
-
- bDoAll=!strcmp (argv [1], "all");
-
- if (bDoAll || ! strcmp (argv [1], "g721"))
- { g721_test () ;
- nTests++ ;
- } ;
-
- if (bDoAll || ! strcmp (argv [1], "g723"))
- { g723_test (0.53) ;
- nTests++ ;
- } ;
-
- if (nTests == 0)
- { printf ("Mono : ************************************\n") ;
- printf ("Mono : * No '%s' test defined.\n", argv [1]) ;
- printf ("Mono : ************************************\n") ;
- return 1 ;
- } ;
-
- return 0 ;
-} /* main */
-
-static void
-g721_test (void)
-{
- return ;
-} /* g721_test */
-
-static void
-g723_test (double margin)
-{ static double orig_buffer [BUFFER_SIZE] ;
- static short orig [BUFFER_SIZE] ;
- static short data [BUFFER_SIZE] ;
-
- G72x_STATE encoder_state, decoder_state ;
-
- long k ;
- int code, position, max_err ;
-
- private_init_state (&encoder_state) ;
- encoder_state.encoder = g723_24_encoder ;
- encoder_state.codec_bits = 3 ;
-
- private_init_state (&decoder_state) ;
- decoder_state.decoder = g723_24_decoder ;
- decoder_state.codec_bits = 3 ;
-
- memset (data, 0, BUFFER_SIZE * sizeof (short)) ;
- memset (orig, 0, BUFFER_SIZE * sizeof (short)) ;
-
- printf (" g723_test : ") ;
- fflush (stdout) ;
-
- gen_signal_double (orig_buffer, 32000.0, BUFFER_SIZE) ;
- for (k = 0 ; k < BUFFER_SIZE ; k++)
- orig [k] = (short) orig_buffer [k] ;
-
- /* Write and read data here. */
- position = 0 ;
- max_err = 0 ;
- for (k = 0 ; k < BUFFER_SIZE ; k++)
- { code = encoder_state.encoder (orig [k], &encoder_state) ;
- data [k] = decoder_state.decoder (code, &decoder_state) ;
- if (abs (orig [k] - data [k]) > max_err)
- { position = k ;
- max_err = abs (orig [k] - data [k]) ;
- } ;
- } ;
-
- printf ("\n\nMax error of %d at postion %d.\n", max_err, position) ;
-
- for (k = 0 ; k < BUFFER_SIZE ; k++)
- { if (error_function (data [k], orig [k], margin))
- { printf ("Line %d: Incorrect sample A (#%ld : %d should be %d).\n", __LINE__, k, data [k], orig [k]) ;
- oct_save_short (orig, data, BUFFER_SIZE) ;
- exit (1) ;
- } ;
- } ;
-
-
- printf ("ok\n") ;
-
- return ;
-} /* g723_test */
-
-
-#define SIGNAL_MAXVAL 30000.0
-#define DECAY_COUNT 1000
-
-static void
-gen_signal_double (double *gendata, double scale, int gendatalen)
-{ int k, ramplen ;
- double amp = 0.0 ;
-
- ramplen = DECAY_COUNT ;
-
- for (k = 0 ; k < gendatalen ; k++)
- { if (k <= ramplen)
- amp = scale * k / ((double) ramplen) ;
- else if (k > gendatalen - ramplen)
- amp = scale * (gendatalen - k) / ((double) ramplen) ;
-
- gendata [k] = amp * (0.4 * sin (33.3 * 2.0 * M_PI * ((double) (k+1)) / ((double) SAMPLE_RATE))
- + 0.3 * cos (201.1 * 2.0 * M_PI * ((double) (k+1)) / ((double) SAMPLE_RATE))) ;
- } ;
-
- return ;
-} /* gen_signal_double */
-
-static int
-error_function (double data, double orig, double margin)
-{ double error ;
-
- if (fabs (orig) <= 500.0)
- error = fabs (fabs (data) - fabs(orig)) / 2000.0 ;
- else if (fabs (orig) <= 1000.0)
- error = fabs (data - orig) / 3000.0 ;
- else
- error = fabs (data - orig) / fabs (orig) ;
-
- if (error > margin)
- { printf ("\n\n*******************\nError : %f\n", error) ;
- return 1 ;
- } ;
- return 0 ;
-} /* error_function */
-
-static int
-oct_save_short (short *a, short *b, int len)
-{ FILE *file ;
- int k ;
-
- if (! (file = fopen ("error.dat", "w")))
- return 1 ;
-
- fprintf (file, "# Not created by Octave\n") ;
-
- fprintf (file, "# name: a\n") ;
- fprintf (file, "# type: matrix\n") ;
- fprintf (file, "# rows: %d\n", len) ;
- fprintf (file, "# columns: 1\n") ;
-
- for (k = 0 ; k < len ; k++)
- fprintf (file, "% d\n", a [k]) ;
-
- fprintf (file, "# name: b\n") ;
- fprintf (file, "# type: matrix\n") ;
- fprintf (file, "# rows: %d\n", len) ;
- fprintf (file, "# columns: 1\n") ;
-
- for (k = 0 ; k < len ; k++)
- fprintf (file, "% d\n", b [k]) ;
-
- fclose (file) ;
- return 0 ;
-} /* oct_save_short */
-
-/*
-** Do not edit or modify anything in this comment block.
-** The arch-tag line is a file identity tag for the GNU Arch
-** revision control system.
-**
-** arch-tag: 0597b442-a5b0-4abf-92a4-92f6c24e85a6
-*/
-
diff --git a/libs/libsndfile/src/GSM610/COPYRIGHT b/libs/libsndfile/src/GSM610/COPYRIGHT
deleted file mode 100644
index eba0e523bb..0000000000
--- a/libs/libsndfile/src/GSM610/COPYRIGHT
+++ /dev/null
@@ -1,16 +0,0 @@
-Copyright 1992, 1993, 1994 by Jutta Degener and Carsten Bormann,
-Technische Universitaet Berlin
-
-Any use of this software is permitted provided that this notice is not
-removed and that neither the authors nor the Technische Universitaet Berlin
-are deemed to have made any representations as to the suitability of this
-software for any purpose nor are held responsible for any defects of
-this software. THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE.
-
-As a matter of courtesy, the authors request to be informed about uses
-this software has found, about bugs in this software, and about any
-improvements that may be of general interest.
-
-Berlin, 28.11.1994
-Jutta Degener
-Carsten Bormann
diff --git a/libs/libsndfile/src/GSM610/ChangeLog b/libs/libsndfile/src/GSM610/ChangeLog
deleted file mode 100644
index 24f524882d..0000000000
--- a/libs/libsndfile/src/GSM610/ChangeLog
+++ /dev/null
@@ -1,56 +0,0 @@
-2004-05-12 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * gsm610_priv.h
- Replace ugly macros with inline functions.
-
- * *.c
- Remove temporary variables used by macros and other minor fixes required by
- above change.
-
-2003-06-02 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * rpe.c
- Renamed variables "exp" to "expon" to avoid shadowed parameter warnigns.
-
-2002-06-08 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * long_term.c
- Changes tp removed compiler warnings about shadowed parameters.
-
-2002-06-08 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * private.h
- Made declarations of gsm_A, gsm_B, gsm_MIC etc extern. This fixed a compile
- problem on MacOSX.
-
-2002-05-10 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * *.[ch]
- Removed all pre-ANSI prototype kludges. Removed proto.h and unproto.h.
- Started work on making GSM 6.10 files seekable. Currently they are not.
-
- * code.c private.h
- Function Gsm_Coder () used a statically defined array. This was obviously
- not re-entrant so moved it to struct gsm_state.
-
-2001-09-16 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * code.c
- Added #includes for string.h and stdlib.h.
-
-2000-10-27 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * config.h
- Removed some commented out #defines (ie //*efine) which were causing problems on
- the Sun cc compiler.
-
-2000-02-29 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * private.h
- Added #defines to emulate normal compile time options.
-
-2000-02-28 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
-
- * everthing
- Created this directory and copied files from libgsm.
- http://kbs.cs.tu-berlin.de/~jutta/toast.html
diff --git a/libs/libsndfile/src/GSM610/README b/libs/libsndfile/src/GSM610/README
deleted file mode 100644
index b57132b051..0000000000
--- a/libs/libsndfile/src/GSM610/README
+++ /dev/null
@@ -1,36 +0,0 @@
-GSM 06.10 13 kbit/s RPE/LTP speech codec
-----------------------------------------
-
-All the file in this directory were written by Jutta Degener
-and Carsten Borman for The Communications and Operating Systems
-Research Group (KBS) at the Technische Universitaet Berlin.
-
-Their work was released under the following license which is
-assumed to be compatible with The GNU Lesser General Public License.
-
-----------------------------------------------------------------------------
-
-Copyright 1992, 1993, 1994 by Jutta Degener and Carsten Bormann,
-Technische Universitaet Berlin
-
-Any use of this software is permitted provided that this notice is not
-removed and that neither the authors nor the Technische Universitaet Berlin
-are deemed to have made any representations as to the suitability of this
-software for any purpose nor are held responsible for any defects of
-this software. THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE.
-
-As a matter of courtesy, the authors request to be informed about uses
-this software has found, about bugs in this software, and about any
-improvements that may be of general interest.
-
-Berlin, 28.11.1994
-Jutta Degener (jutta@cs.tu-berlin.de)
-Carsten Bormann (cabo@cs.tu-berlin.de)
-
-----------------------------------------------------------------------------
-
-Jutta Degener and Carsten Bormann's work can be found on their homepage
-at:
-
- http://kbs.cs.tu-berlin.de/~jutta/toast.html
-
diff --git a/libs/libsndfile/src/GSM610/add.c b/libs/libsndfile/src/GSM610/add.c
deleted file mode 100644
index fbf7cf147d..0000000000
--- a/libs/libsndfile/src/GSM610/add.c
+++ /dev/null
@@ -1,248 +0,0 @@
-/*
- * Copyright 1992 by Jutta Degener and Carsten Bormann, Technische
- * Universitaet Berlin. See the accompanying file "COPYRIGHT" for
- * details. THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE.
- */
-
-/*
- * See private.h for the more commonly used macro versions.
- */
-
-#include <stdio.h>
-#include <assert.h>
-
-#include "gsm610_priv.h"
-#include "gsm.h"
-
-#define saturate(x) \
- ((x) < MIN_WORD ? MIN_WORD : (x) > MAX_WORD ? MAX_WORD: (x))
-
-word gsm_add ( word a, word b)
-{
- longword sum = (longword)a + (longword)b;
- return saturate(sum);
-}
-
-word gsm_sub ( word a, word b)
-{
- longword diff = (longword)a - (longword)b;
- return saturate(diff);
-}
-
-word gsm_mult ( word a, word b)
-{
- if (a == MIN_WORD && b == MIN_WORD)
- return MAX_WORD;
-
- return SASR_L( (longword)a * (longword)b, 15 );
-}
-
-word gsm_mult_r ( word a, word b)
-{
- if (b == MIN_WORD && a == MIN_WORD) return MAX_WORD;
- else {
- longword prod = (longword)a * (longword)b + 16384;
- prod >>= 15;
- return prod & 0xFFFF;
- }
-}
-
-word gsm_abs (word a)
-{
- return a < 0 ? (a == MIN_WORD ? MAX_WORD : -a) : a;
-}
-
-longword gsm_L_mult (word a, word b)
-{
- assert( a != MIN_WORD || b != MIN_WORD );
- return ((longword)a * (longword)b) << 1;
-}
-
-longword gsm_L_add ( longword a, longword b)
-{
- if (a < 0) {
- if (b >= 0) return a + b;
- else {
- ulongword A = (ulongword)-(a + 1) + (ulongword)-(b + 1);
- return A >= MAX_LONGWORD ? MIN_LONGWORD :-(longword)A-2;
- }
- }
- else if (b <= 0) return a + b;
- else {
- ulongword A = (ulongword)a + (ulongword)b;
- return A > MAX_LONGWORD ? MAX_LONGWORD : A;
- }
-}
-
-longword gsm_L_sub ( longword a, longword b)
-{
- if (a >= 0) {
- if (b >= 0) return a - b;
- else {
- /* a>=0, b<0 */
-
- ulongword A = (ulongword)a + -(b + 1);
- return A >= MAX_LONGWORD ? MAX_LONGWORD : (A + 1);
- }
- }
- else if (b <= 0) return a - b;
- else {
- /* a<0, b>0 */
-
- ulongword A = (ulongword)-(a + 1) + b;
- return A >= MAX_LONGWORD ? MIN_LONGWORD : -(longword)A - 1;
- }
-}
-
-static unsigned char const bitoff[ 256 ] = {
- 8, 7, 6, 6, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 4, 4,
- 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-};
-
-word gsm_norm (longword a )
-/*
- * the number of left shifts needed to normalize the 32 bit
- * variable L_var1 for positive values on the interval
- *
- * with minimum of
- * minimum of 1073741824 (01000000000000000000000000000000) and
- * maximum of 2147483647 (01111111111111111111111111111111)
- *
- *
- * and for negative values on the interval with
- * minimum of -2147483648 (-10000000000000000000000000000000) and
- * maximum of -1073741824 ( -1000000000000000000000000000000).
- *
- * in order to normalize the result, the following
- * operation must be done: L_norm_var1 = L_var1 << norm( L_var1 );
- *
- * (That's 'ffs', only from the left, not the right..)
- */
-{
- assert(a != 0);
-
- if (a < 0) {
- if (a <= -1073741824) return 0;
- a = ~a;
- }
-
- return a & 0xffff0000
- ? ( a & 0xff000000
- ? -1 + bitoff[ 0xFF & (a >> 24) ]
- : 7 + bitoff[ 0xFF & (a >> 16) ] )
- : ( a & 0xff00
- ? 15 + bitoff[ 0xFF & (a >> 8) ]
- : 23 + bitoff[ 0xFF & a ] );
-}
-
-longword gsm_L_asl (longword a, int n)
-{
- if (n >= 32) return 0;
- if (n <= -32) return -(a < 0);
- if (n < 0) return gsm_L_asr(a, -n);
- return a << n;
-}
-
-word gsm_asr (word a, int n)
-{
- if (n >= 16) return -(a < 0);
- if (n <= -16) return 0;
- if (n < 0) return a << -n;
-
- return SASR_W (a, (word) n);
-}
-
-word gsm_asl (word a, int n)
-{
- if (n >= 16) return 0;
- if (n <= -16) return -(a < 0);
- if (n < 0) return gsm_asr(a, -n);
- return a << n;
-}
-
-longword gsm_L_asr (longword a, int n)
-{
- if (n >= 32) return -(a < 0);
- if (n <= -32) return 0;
- if (n < 0) return a << -n;
-
- return SASR_L (a, (word) n);
-}
-
-/*
-** word gsm_asr (word a, int n)
-** {
-** if (n >= 16) return -(a < 0);
-** if (n <= -16) return 0;
-** if (n < 0) return a << -n;
-**
-** # ifdef SASR_W
-** return a >> n;
-** # else
-** if (a >= 0) return a >> n;
-** else return -(word)( -(uword)a >> n );
-** # endif
-** }
-**
-*/
-/*
- * (From p. 46, end of section 4.2.5)
- *
- * NOTE: The following lines gives [sic] one correct implementation
- * of the div(num, denum) arithmetic operation. Compute div
- * which is the integer division of num by denum: with denum
- * >= num > 0
- */
-
-word gsm_div (word num, word denum)
-{
- longword L_num = num;
- longword L_denum = denum;
- word div = 0;
- int k = 15;
-
- /* The parameter num sometimes becomes zero.
- * Although this is explicitly guarded against in 4.2.5,
- * we assume that the result should then be zero as well.
- */
-
- /* assert(num != 0); */
-
- assert(num >= 0 && denum >= num);
- if (num == 0)
- return 0;
-
- while (k--) {
- div <<= 1;
- L_num <<= 1;
-
- if (L_num >= L_denum) {
- L_num -= L_denum;
- div++;
- }
- }
-
- return div;
-}
-/*
-** Do not edit or modify anything in this comment block.
-** The arch-tag line is a file identity tag for the GNU Arch
-** revision control system.
-**
-** arch-tag: a7398579-e2e1-4733-aa2d-4c6efc0c58ff
-*/
-
diff --git a/libs/libsndfile/src/GSM610/code.c b/libs/libsndfile/src/GSM610/code.c
deleted file mode 100644
index 02ec75bf12..0000000000
--- a/libs/libsndfile/src/GSM610/code.c
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * Copyright 1992 by Jutta Degener and Carsten Bormann, Technische
- * Universitaet Berlin. See the accompanying file "COPYRIGHT" for
- * details. THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE.
- */
-
-
-#include <stdlib.h>
-#include <string.h>
-
-#include "config.h"
-
-#include "gsm610_priv.h"
-#include "gsm.h"
-
-/*
- * 4.2 FIXED POINT IMPLEMENTATION OF THE RPE-LTP CODER
- */
-
-void Gsm_Coder (
-
- struct gsm_state * State,
-
- word * s, /* [0..159] samples IN */
-
-/*
- * The RPE-LTD coder works on a frame by frame basis. The length of
- * the frame is equal to 160 samples. Some computations are done
- * once per frame to produce at the output of the coder the
- * LARc[1..8] parameters which are the coded LAR coefficients and
- * also to realize the inverse filtering operation for the entire
- * frame (160 samples of signal d[0..159]). These parts produce at
- * the output of the coder:
- */
-
- word * LARc, /* [0..7] LAR coefficients OUT */
-
-/*
- * Procedure 4.2.11 to 4.2.18 are to be executed four times per
- * frame. That means once for each sub-segment RPE-LTP analysis of
- * 40 samples. These parts produce at the output of the coder:
- */
-
- word * Nc, /* [0..3] LTP lag OUT */
- word * bc, /* [0..3] coded LTP gain OUT */
- word * Mc, /* [0..3] RPE grid selection OUT */
- word * xmaxc,/* [0..3] Coded maximum amplitude OUT */
- word * xMc /* [13*4] normalized RPE samples OUT */
-)
-{
- int k;
- word * dp = State->dp0 + 120; /* [ -120...-1 ] */
- word * dpp = dp; /* [ 0...39 ] */
-
- word so[160];
-
- Gsm_Preprocess (State, s, so);
- Gsm_LPC_Analysis (State, so, LARc);
- Gsm_Short_Term_Analysis_Filter (State, LARc, so);
-
- for (k = 0; k <= 3; k++, xMc += 13) {
-
- Gsm_Long_Term_Predictor ( State,
- so+k*40, /* d [0..39] IN */
- dp, /* dp [-120..-1] IN */
- State->e + 5, /* e [0..39] OUT */
- dpp, /* dpp [0..39] OUT */
- Nc++,
- bc++);
-
- Gsm_RPE_Encoding ( /*-S,-*/
- State->e + 5, /* e ][0..39][ IN/OUT */
- xmaxc++, Mc++, xMc );
- /*
- * Gsm_Update_of_reconstructed_short_time_residual_signal
- * ( dpp, e + 5, dp );
- */
-
- { register int i;
- for (i = 0; i <= 39; i++)
- dp[ i ] = GSM_ADD( State->e[5 + i], dpp[i] );
- }
- dp += 40;
- dpp += 40;
-
- }
- (void)memcpy( (char *)State->dp0, (char *)(State->dp0 + 160),
- 120 * sizeof(*State->dp0) );
-}
-/*
-** Do not edit or modify anything in this comment block.
-** The arch-tag line is a file identity tag for the GNU Arch
-** revision control system.
-**
-** arch-tag: ae8ef1b2-5a1e-4263-94cd-42b15dca81a3
-*/
-
diff --git a/libs/libsndfile/src/GSM610/config.h b/libs/libsndfile/src/GSM610/config.h
deleted file mode 100644
index 23ac5ad08d..0000000000
--- a/libs/libsndfile/src/GSM610/config.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Copyright 1992 by Jutta Degener and Carsten Bormann, Technische
- * Universitaet Berlin. See the accompanying file "COPYRIGHT" for
- * details. THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE.
- */
-
-#ifndef CONFIG_H
-#define CONFIG_H
-
-#define HAS_STDLIB_H 1 /* /usr/include/stdlib.h */
-#define HAS_FCNTL_H 1 /* /usr/include/fcntl.h */
-
-#define HAS_FSTAT 1 /* fstat syscall */
-#define HAS_FCHMOD 1 /* fchmod syscall */
-#define HAS_CHMOD 1 /* chmod syscall */
-#define HAS_FCHOWN 1 /* fchown syscall */
-#define HAS_CHOWN 1 /* chown syscall */
-
-#define HAS_STRING_H 1 /* /usr/include/string.h */
-
-#define HAS_UNISTD_H 1 /* /usr/include/unistd.h */
-#define HAS_UTIME 1 /* POSIX utime(path, times) */
-#define HAS_UTIME_H 1 /* UTIME header file */
-
-#endif /* CONFIG_H */
-/*
-** Do not edit or modify anything in this comment block.
-** The arch-tag line is a file identity tag for the GNU Arch
-** revision control system.
-**
-** arch-tag: 5338dfef-8e59-4f51-af47-627c9ea85353
-*/
-
diff --git a/libs/libsndfile/src/GSM610/decode.c b/libs/libsndfile/src/GSM610/decode.c
deleted file mode 100644
index 46db31825b..0000000000
--- a/libs/libsndfile/src/GSM610/decode.c
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Copyright 1992 by Jutta Degener and Carsten Bormann, Technische
- * Universitaet Berlin. See the accompanying file "COPYRIGHT" for
- * details. THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE.
- */
-
-#include <stdio.h>
-
-#include "gsm610_priv.h"
-#include "gsm.h"
-
-/*
- * 4.3 FIXED POINT IMPLEMENTATION OF THE RPE-LTP DECODER
- */
-
-static void Postprocessing (
- struct gsm_state * S,
- register word * s)
-{
- register int k;
- register word msr = S->msr;
- register word tmp;
-
- for (k = 160; k--; s++) {
- tmp = GSM_MULT_R( msr, 28180 );
- msr = GSM_ADD(*s, tmp); /* Deemphasis */
- *s = GSM_ADD(msr, msr) & 0xFFF8; /* Truncation & Upscaling */
- }
- S->msr = msr;
-}
-
-void Gsm_Decoder (
- struct gsm_state * S,
-
- word * LARcr, /* [0..7] IN */
-
- word * Ncr, /* [0..3] IN */
- word * bcr, /* [0..3] IN */
- word * Mcr, /* [0..3] IN */
- word * xmaxcr, /* [0..3] IN */
- word * xMcr, /* [0..13*4] IN */
-
- word * s) /* [0..159] OUT */
-{
- int j, k;
- word erp[40], wt[160];
- word * drp = S->dp0 + 120;
-
- for (j=0; j <= 3; j++, xmaxcr++, bcr++, Ncr++, Mcr++, xMcr += 13) {
-
- Gsm_RPE_Decoding( /*-S,-*/ *xmaxcr, *Mcr, xMcr, erp );
- Gsm_Long_Term_Synthesis_Filtering( S, *Ncr, *bcr, erp, drp );
-
- for (k = 0; k <= 39; k++) wt[ j * 40 + k ] = drp[ k ];
- }
-
- Gsm_Short_Term_Synthesis_Filter( S, LARcr, wt, s );
- Postprocessing(S, s);
-}
-/*
-** Do not edit or modify anything in this comment block.
-** The arch-tag line is a file identity tag for the GNU Arch
-** revision control system.
-**
-** arch-tag: 11ae5b90-2e8b-400b-ac64-a69a1fc6cc41
-*/
-
diff --git a/libs/libsndfile/src/GSM610/gsm.h b/libs/libsndfile/src/GSM610/gsm.h
deleted file mode 100644
index a13a606147..0000000000
--- a/libs/libsndfile/src/GSM610/gsm.h
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Copyright 1992 by Jutta Degener and Carsten Bormann, Technische
- * Universitaet Berlin. See the accompanying file "COPYRIGHT" for
- * details. THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE.
- */
-
-#ifndef GSM_H
-#define GSM_H
-
-#include <stdio.h> /* for FILE * */
-
-/*
- * Interface
- */
-
-typedef struct gsm_state * gsm;
-typedef short gsm_signal; /* signed 16 bit */
-typedef unsigned char gsm_byte;
-typedef gsm_byte gsm_frame[33]; /* 33 * 8 bits */
-
-#define GSM_MAGIC 0xD /* 13 kbit/s RPE-LTP */
-
-#define GSM_PATCHLEVEL 10
-#define GSM_MINOR 0
-#define GSM_MAJOR 1
-
-#define GSM_OPT_VERBOSE 1
-#define GSM_OPT_FAST 2
-#define GSM_OPT_LTP_CUT 3
-#define GSM_OPT_WAV49 4
-#define GSM_OPT_FRAME_INDEX 5
-#define GSM_OPT_FRAME_CHAIN 6
-
-gsm gsm_create (void);
-
-/* Added for libsndfile : May 6, 2002 */
-void gsm_init (gsm);
-
-void gsm_destroy (gsm);
-
-int gsm_print (FILE *, gsm, gsm_byte *);
-int gsm_option (gsm, int, int *);
-
-void gsm_encode (gsm, gsm_signal *, gsm_byte *);
-int gsm_decode (gsm, gsm_byte *, gsm_signal *);
-
-int gsm_explode (gsm, gsm_byte *, gsm_signal *);
-void gsm_implode (gsm, gsm_signal *, gsm_byte *);
-
-#endif /* GSM_H */
-/*
-** Do not edit or modify anything in this comment block.
-** The arch-tag line is a file identity tag for the GNU Arch
-** revision control system.
-**
-** arch-tag: 8cfc7698-5433-4b6f-aeca-967c6fda4dec
-*/
-
diff --git a/libs/libsndfile/src/GSM610/gsm610_priv.h b/libs/libsndfile/src/GSM610/gsm610_priv.h
deleted file mode 100644
index c9ab3f25eb..0000000000
--- a/libs/libsndfile/src/GSM610/gsm610_priv.h
+++ /dev/null
@@ -1,308 +0,0 @@
-/*
- * Copyright 1992 by Jutta Degener and Carsten Bormann, Technische
- * Universitaet Berlin. See the accompanying file "COPYRIGHT" for
- * details. THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE.
- */
-
-#ifndef PRIVATE_H
-#define PRIVATE_H
-
-/* Added by Erik de Castro Lopo */
-#define USE_FLOAT_MUL
-#define FAST
-#define WAV49
-
-#ifdef __cplusplus
-#error "This code is not designed to be compiled with a C++ compiler."
-#endif
-/* Added by Erik de Castro Lopo */
-
-
-
-typedef short word; /* 16 bit signed int */
-typedef int longword; /* 32 bit signed int */
-
-typedef unsigned short uword; /* unsigned word */
-typedef unsigned int ulongword; /* unsigned longword */
-
-struct gsm_state
-{ word dp0[ 280 ] ;
-
- word z1; /* preprocessing.c, Offset_com. */
- longword L_z2; /* Offset_com. */
- int mp; /* Preemphasis */
-
- word u[8] ; /* short_term_aly_filter.c */
- word LARpp[2][8] ; /* */
- word j; /* */
-
- word ltp_cut; /* long_term.c, LTP crosscorr. */
- word nrp; /* 40 */ /* long_term.c, synthesis */
- word v[9] ; /* short_term.c, synthesis */
- word msr; /* decoder.c, Postprocessing */
-
- char verbose; /* only used if !NDEBUG */
- char fast; /* only used if FAST */
-
- char wav_fmt; /* only used if WAV49 defined */
- unsigned char frame_index; /* odd/even chaining */
- unsigned char frame_chain; /* half-byte to carry forward */
-
- /* Moved here from code.c where it was defined as static */
- word e[50] ;
-} ;
-
-typedef struct gsm_state GSM_STATE ;
-
-#define MIN_WORD (-32767 - 1)
-#define MAX_WORD 32767
-
-#define MIN_LONGWORD (-2147483647 - 1)
-#define MAX_LONGWORD 2147483647
-
-/* Signed arithmetic shift right. */
-static inline word
-SASR_W (word x, word by)
-{ return (x >> by) ;
-} /* SASR */
-
-static inline longword
-SASR_L (longword x, word by)
-{ return (x >> by) ;
-} /* SASR */
-
-/*
- * Prototypes from add.c
- */
-word gsm_mult (word a, word b) ;
-longword gsm_L_mult (word a, word b) ;
-word gsm_mult_r (word a, word b) ;
-
-word gsm_div (word num, word denum) ;
-
-word gsm_add (word a, word b ) ;
-longword gsm_L_add (longword a, longword b ) ;
-
-word gsm_sub (word a, word b) ;
-longword gsm_L_sub (longword a, longword b) ;
-
-word gsm_abs (word a) ;
-
-word gsm_norm (longword a ) ;
-
-longword gsm_L_asl (longword a, int n) ;
-word gsm_asl (word a, int n) ;
-
-longword gsm_L_asr (longword a, int n) ;
-word gsm_asr (word a, int n) ;
-
-/*
- * Inlined functions from add.h
- */
-
-static inline longword
-GSM_MULT_R (word a, word b)
-{ return (((longword) (a)) * ((longword) (b)) + 16384) >> 15 ;
-} /* GSM_MULT_R */
-
-static inline longword
-GSM_MULT (word a, word b)
-{ return (((longword) (a)) * ((longword) (b))) >> 15 ;
-} /* GSM_MULT */
-
-static inline longword
-GSM_L_MULT (word a, word b)
-{ return ((longword) (a)) * ((longword) (b)) << 1 ;
-} /* GSM_L_MULT */
-
-static inline longword
-GSM_L_ADD (longword a, longword b)
-{ ulongword utmp ;
-
- if (a < 0 && b < 0)
- { utmp = (ulongword)-((a) + 1) + (ulongword)-((b) + 1) ;
- return (utmp >= (ulongword) MAX_LONGWORD) ? MIN_LONGWORD : -(longword)utmp-2 ;
- } ;
-
- if (a > 0 && b > 0)
- { utmp = (ulongword) a + (ulongword) b ;
- return (utmp >= (ulongword) MAX_LONGWORD) ? MAX_LONGWORD : utmp ;
- } ;
-
- return a + b ;
-} /* GSM_L_ADD */
-
-static inline longword
-GSM_ADD (word a, word b)
-{ longword ltmp ;
-
- ltmp = ((longword) a) + ((longword) b) ;
-
- if (ltmp >= MAX_WORD)
- return MAX_WORD ;
- if (ltmp <= MIN_WORD)
- return MIN_WORD ;
-
- return ltmp ;
-} /* GSM_ADD */
-
-static inline longword
-GSM_SUB (word a, word b)
-{ longword ltmp ;
-
- ltmp = ((longword) a) - ((longword) b) ;
-
- if (ltmp >= MAX_WORD)
- ltmp = MAX_WORD ;
- else if (ltmp <= MIN_WORD)
- ltmp = MIN_WORD ;
-
- return ltmp ;
-} /* GSM_SUB */
-
-static inline word
-GSM_ABS (word a)
-{
- if (a > 0)
- return a ;
- if (a == MIN_WORD)
- return MAX_WORD ;
- return -a ;
-} /* GSM_ADD */
-
-
-/*
- * More prototypes from implementations..
- */
-void Gsm_Coder (
- struct gsm_state * S,
- word * s, /* [0..159] samples IN */
- word * LARc, /* [0..7] LAR coefficients OUT */
- word * Nc, /* [0..3] LTP lag OUT */
- word * bc, /* [0..3] coded LTP gain OUT */
- word * Mc, /* [0..3] RPE grid selection OUT */
- word * xmaxc,/* [0..3] Coded maximum amplitude OUT */
- word * xMc) ;/* [13*4] normalized RPE samples OUT */
-
-void Gsm_Long_Term_Predictor ( /* 4x for 160 samples */
- struct gsm_state * S,
- word * d, /* [0..39] residual signal IN */
- word * dp, /* [-120..-1] d' IN */
- word * e, /* [0..40] OUT */
- word * dpp, /* [0..40] OUT */
- word * Nc, /* correlation lag OUT */
- word * bc) ; /* gain factor OUT */
-
-void Gsm_LPC_Analysis (
- struct gsm_state * S,
- word * s, /* 0..159 signals IN/OUT */
- word * LARc) ; /* 0..7 LARc's OUT */
-
-void Gsm_Preprocess (
- struct gsm_state * S,
- word * s, word * so) ;
-
-void Gsm_Encoding (
- struct gsm_state * S,
- word * e,
- word * ep,
- word * xmaxc,
- word * Mc,
- word * xMc) ;
-
-void Gsm_Short_Term_Analysis_Filter (
- struct gsm_state * S,
- word * LARc, /* coded log area ratio [0..7] IN */
- word * d) ; /* st res. signal [0..159] IN/OUT */
-
-void Gsm_Decoder (
- struct gsm_state * S,
- word * LARcr, /* [0..7] IN */
- word * Ncr, /* [0..3] IN */
- word * bcr, /* [0..3] IN */
- word * Mcr, /* [0..3] IN */
- word * xmaxcr, /* [0..3] IN */
- word * xMcr, /* [0..13*4] IN */
- word * s) ; /* [0..159] OUT */
-
-void Gsm_Decoding (
- struct gsm_state * S,
- word xmaxcr,
- word Mcr,
- word * xMcr, /* [0..12] IN */
- word * erp) ; /* [0..39] OUT */
-
-void Gsm_Long_Term_Synthesis_Filtering (
- struct gsm_state* S,
- word Ncr,
- word bcr,
- word * erp, /* [0..39] IN */
- word * drp) ; /* [-120..-1] IN, [0..40] OUT */
-
-void Gsm_RPE_Decoding (
- /*-struct gsm_state *S,-*/
- word xmaxcr,
- word Mcr,
- word * xMcr, /* [0..12], 3 bits IN */
- word * erp) ; /* [0..39] OUT */
-
-void Gsm_RPE_Encoding (
- /*-struct gsm_state * S,-*/
- word * e, /* -5..-1][0..39][40..44 IN/OUT */
- word * xmaxc, /* OUT */
- word * Mc, /* OUT */
- word * xMc) ; /* [0..12] OUT */
-
-void Gsm_Short_Term_Synthesis_Filter (
- struct gsm_state * S,
- word * LARcr, /* log area ratios [0..7] IN */
- word * drp, /* received d [0...39] IN */
- word * s) ; /* signal s [0..159] OUT */
-
-void Gsm_Update_of_reconstructed_short_time_residual_signal (
- word * dpp, /* [0...39] IN */
- word * ep, /* [0...39] IN */
- word * dp) ; /* [-120...-1] IN/OUT */
-
-/*
- * Tables from table.c
- */
-#ifndef GSM_TABLE_C
-
-extern word gsm_A [8], gsm_B [8], gsm_MIC [8], gsm_MAC [8] ;
-extern word gsm_INVA [8] ;
-extern word gsm_DLB [4], gsm_QLB [4] ;
-extern word gsm_H [11] ;
-extern word gsm_NRFAC [8] ;
-extern word gsm_FAC [8] ;
-
-#endif /* GSM_TABLE_C */
-
-/*
- * Debugging
- */
-#ifdef NDEBUG
-
-# define gsm_debug_words(a, b, c, d) /* nil */
-# define gsm_debug_longwords(a, b, c, d) /* nil */
-# define gsm_debug_word(a, b) /* nil */
-# define gsm_debug_longword(a, b) /* nil */
-
-#else /* !NDEBUG => DEBUG */
-
- void gsm_debug_words (char * name, int, int, word *) ;
- void gsm_debug_longwords (char * name, int, int, longword *) ;
- void gsm_debug_longword (char * name, longword) ;
- void gsm_debug_word (char * name, word) ;
-
-#endif /* !NDEBUG */
-
-#endif /* PRIVATE_H */
-/*
-** Do not edit or modify anything in this comment block.
-** The arch-tag line is a file identity tag for the GNU Arch
-** revision control system.
-**
-** arch-tag: 8bc5fdf2-e8c8-4686-9bd7-a30b512bef0c
-*/
-
diff --git a/libs/libsndfile/src/GSM610/gsm_create.c b/libs/libsndfile/src/GSM610/gsm_create.c
deleted file mode 100644
index 94e8d7d70c..0000000000
--- a/libs/libsndfile/src/GSM610/gsm_create.c
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Copyright 1992 by Jutta Degener and Carsten Bormann, Technische
- * Universitaet Berlin. See the accompanying file "COPYRIGHT" for
- * details. THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE.
- */
-
-#include "config.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-
-
-#include "gsm.h"
-#include "gsm610_priv.h"
-
-gsm gsm_create (void)
-{
- gsm r;
-
- r = malloc (sizeof(struct gsm_state));
- if (!r) return r;
-
- memset((char *)r, 0, sizeof (struct gsm_state));
- r->nrp = 40;
-
- return r;
-}
-
-/* Added for libsndfile : May 6, 2002. Not sure if it works. */
-void gsm_init (gsm state)
-{
- memset (state, 0, sizeof (struct gsm_state)) ;
- state->nrp = 40 ;
-}
-/*
-** Do not edit or modify anything in this comment block.
-** The arch-tag line is a file identity tag for the GNU Arch
-** revision control system.
-**
-** arch-tag: 9fedb6b3-ed99-40c2-aac1-484c536261fe
-*/
-
diff --git a/libs/libsndfile/src/GSM610/gsm_decode.c b/libs/libsndfile/src/GSM610/gsm_decode.c
deleted file mode 100644
index e6425587ce..0000000000
--- a/libs/libsndfile/src/GSM610/gsm_decode.c
+++ /dev/null
@@ -1,366 +0,0 @@
-/*
- * Copyright 1992 by Jutta Degener and Carsten Bormann, Technische
- * Universitaet Berlin. See the accompanying file "COPYRIGHT" for
- * details. THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE.
- */
-
-#include "gsm610_priv.h"
-
-#include "gsm.h"
-
-int gsm_decode (gsm s, gsm_byte * c, gsm_signal * target)
-{
- word LARc[8], Nc[4], Mc[4], bc[4], xmaxc[4], xmc[13*4];
-
-#ifdef WAV49
- if (s->wav_fmt) {
-
- uword sr = 0;
-
- s->frame_index = !s->frame_index;
- if (s->frame_index) {
-
- sr = *c++;
- LARc[0] = sr & 0x3f; sr >>= 6;
- sr |= (uword)*c++ << 2;
- LARc[1] = sr & 0x3f; sr >>= 6;
- sr |= (uword)*c++ << 4;
- LARc[2] = sr & 0x1f; sr >>= 5;
- LARc[3] = sr & 0x1f; sr >>= 5;
- sr |= (uword)*c++ << 2;
- LARc[4] = sr & 0xf; sr >>= 4;
- LARc[5] = sr & 0xf; sr >>= 4;
- sr |= (uword)*c++ << 2; /* 5 */
- LARc[6] = sr & 0x7; sr >>= 3;
- LARc[7] = sr & 0x7; sr >>= 3;
- sr |= (uword)*c++ << 4;
- Nc[0] = sr & 0x7f; sr >>= 7;
- bc[0] = sr & 0x3; sr >>= 2;
- Mc[0] = sr & 0x3; sr >>= 2;
- sr |= (uword)*c++ << 1;
- xmaxc[0] = sr & 0x3f; sr >>= 6;
- xmc[0] = sr & 0x7; sr >>= 3;
- sr = *c++;
- xmc[1] = sr & 0x7; sr >>= 3;
- xmc[2] = sr & 0x7; sr >>= 3;
- sr |= (uword)*c++ << 2;
- xmc[3] = sr & 0x7; sr >>= 3;
- xmc[4] = sr & 0x7; sr >>= 3;
- xmc[5] = sr & 0x7; sr >>= 3;
- sr |= (uword)*c++ << 1; /* 10 */
- xmc[6] = sr & 0x7; sr >>= 3;
- xmc[7] = sr & 0x7; sr >>= 3;
- xmc[8] = sr & 0x7; sr >>= 3;
- sr = *c++;
- xmc[9] = sr & 0x7; sr >>= 3;
- xmc[10] = sr & 0x7; sr >>= 3;
- sr |= (uword)*c++ << 2;
- xmc[11] = sr & 0x7; sr >>= 3;
- xmc[12] = sr & 0x7; sr >>= 3;
- sr |= (uword)*c++ << 4;
- Nc[1] = sr & 0x7f; sr >>= 7;
- bc[1] = sr & 0x3; sr >>= 2;
- Mc[1] = sr & 0x3; sr >>= 2;
- sr |= (uword)*c++ << 1;
- xmaxc[1] = sr & 0x3f; sr >>= 6;
- xmc[13] = sr & 0x7; sr >>= 3;
- sr = *c++; /* 15 */
- xmc[14] = sr & 0x7; sr >>= 3;
- xmc[15] = sr & 0x7; sr >>= 3;
- sr |= (uword)*c++ << 2;
- xmc[16] = sr & 0x7; sr >>= 3;
- xmc[17] = sr & 0x7; sr >>= 3;
- xmc[18] = sr & 0x7; sr >>= 3;
- sr |= (uword)*c++ << 1;
- xmc[19] = sr & 0x7; sr >>= 3;
- xmc[20] = sr & 0x7; sr >>= 3;
- xmc[21] = sr & 0x7; sr >>= 3;
- sr = *c++;
- xmc[22] = sr & 0x7; sr >>= 3;
- xmc[23] = sr & 0x7; sr >>= 3;
- sr |= (uword)*c++ << 2;
- xmc[24] = sr & 0x7; sr >>= 3;
- xmc[25] = sr & 0x7; sr >>= 3;
- sr |= (uword)*c++ << 4; /* 20 */
- Nc[2] = sr & 0x7f; sr >>= 7;
- bc[2] = sr & 0x3; sr >>= 2;
- Mc[2] = sr & 0x3; sr >>= 2;
- sr |= (uword)*c++ << 1;
- xmaxc[2] = sr & 0x3f; sr >>= 6;
- xmc[26] = sr & 0x7; sr >>= 3;
- sr = *c++;
- xmc[27] = sr & 0x7; sr >>= 3;
- xmc[28] = sr & 0x7; sr >>= 3;
- sr |= (uword)*c++ << 2;
- xmc[29] = sr & 0x7; sr >>= 3;
- xmc[30] = sr & 0x7; sr >>= 3;
- xmc[31] = sr & 0x7; sr >>= 3;
- sr |= (uword)*c++ << 1;
- xmc[32] = sr & 0x7; sr >>= 3;
- xmc[33] = sr & 0x7; sr >>= 3;
- xmc[34] = sr & 0x7; sr >>= 3;
- sr = *c++; /* 25 */
- xmc[35] = sr & 0x7; sr >>= 3;
- xmc[36] = sr & 0x7; sr >>= 3;
- sr |= (uword)*c++ << 2;
- xmc[37] = sr & 0x7; sr >>= 3;
- xmc[38] = sr & 0x7; sr >>= 3;
- sr |= (uword)*c++ << 4;
- Nc[3] = sr & 0x7f; sr >>= 7;
- bc[3] = sr & 0x3; sr >>= 2;
- Mc[3] = sr & 0x3; sr >>= 2;
- sr |= (uword)*c++ << 1;
- xmaxc[3] = sr & 0x3f; sr >>= 6;
- xmc[39] = sr & 0x7; sr >>= 3;
- sr = *c++;
- xmc[40] = sr & 0x7; sr >>= 3;
- xmc[41] = sr & 0x7; sr >>= 3;
- sr |= (uword)*c++ << 2; /* 30 */
- xmc[42] = sr & 0x7; sr >>= 3;
- xmc[43] = sr & 0x7; sr >>= 3;
- xmc[44] = sr & 0x7; sr >>= 3;
- sr |= (uword)*c++ << 1;
- xmc[45] = sr & 0x7; sr >>= 3;
- xmc[46] = sr & 0x7; sr >>= 3;
- xmc[47] = sr & 0x7; sr >>= 3;
- sr = *c++;
- xmc[48] = sr & 0x7; sr >>= 3;
- xmc[49] = sr & 0x7; sr >>= 3;
- sr |= (uword)*c++ << 2;
- xmc[50] = sr & 0x7; sr >>= 3;
- xmc[51] = sr & 0x7; sr >>= 3;
-
- s->frame_chain = sr & 0xf;
- }
- else {
- sr = s->frame_chain;
- sr |= (uword)*c++ << 4; /* 1 */
- LARc[0] = sr & 0x3f; sr >>= 6;
- LARc[1] = sr & 0x3f; sr >>= 6;
- sr = *c++;
- LARc[2] = sr & 0x1f; sr >>= 5;
- sr |= (uword)*c++ << 3;
- LARc[3] = sr & 0x1f; sr >>= 5;
- LARc[4] = sr & 0xf; sr >>= 4;
- sr |= (uword)*c++ << 2;
- LARc[5] = sr & 0xf; sr >>= 4;
- LARc[6] = sr & 0x7; sr >>= 3;
- LARc[7] = sr & 0x7; sr >>= 3;
- sr = *c++; /* 5 */
- Nc[0] = sr & 0x7f; sr >>= 7;
- sr |= (uword)*c++ << 1;
- bc[0] = sr & 0x3; sr >>= 2;
- Mc[0] = sr & 0x3; sr >>= 2;
- sr |= (uword)*c++ << 5;
- xmaxc[0] = sr & 0x3f; sr >>= 6;
- xmc[0] = sr & 0x7; sr >>= 3;
- xmc[1] = sr & 0x7; sr >>= 3;
- sr |= (uword)*c++ << 1;
- xmc[2] = sr & 0x7; sr >>= 3;
- xmc[3] = sr & 0x7; sr >>= 3;
- xmc[4] = sr & 0x7; sr >>= 3;
- sr = *c++;
- xmc[5] = sr & 0x7; sr >>= 3;
- xmc[6] = sr & 0x7; sr >>= 3;
- sr |= (uword)*c++ << 2; /* 10 */
- xmc[7] = sr & 0x7; sr >>= 3;
- xmc[8] = sr & 0x7; sr >>= 3;
- xmc[9] = sr & 0x7; sr >>= 3;
- sr |= (uword)*c++ << 1;
- xmc[10] = sr & 0x7; sr >>= 3;
- xmc[11] = sr & 0x7; sr >>= 3;
- xmc[12] = sr & 0x7; sr >>= 3;
- sr = *c++;
- Nc[1] = sr & 0x7f; sr >>= 7;
- sr |= (uword)*c++ << 1;
- bc[1] = sr & 0x3; sr >>= 2;
- Mc[1] = sr & 0x3; sr >>= 2;
- sr |= (uword)*c++ << 5;
- xmaxc[1] = sr & 0x3f; sr >>= 6;
- xmc[13] = sr & 0x7; sr >>= 3;
- xmc[14] = sr & 0x7; sr >>= 3;
- sr |= (uword)*c++ << 1; /* 15 */
- xmc[15] = sr & 0x7; sr >>= 3;
- xmc[16] = sr & 0x7; sr >>= 3;
- xmc[17] = sr & 0x7; sr >>= 3;
- sr = *c++;
- xmc[18] = sr & 0x7; sr >>= 3;
- xmc[19] = sr & 0x7; sr >>= 3;
- sr |= (uword)*c++ << 2;
- xmc[20] = sr & 0x7; sr >>= 3;
- xmc[21] = sr & 0x7; sr >>= 3;
- xmc[22] = sr & 0x7; sr >>= 3;
- sr |= (uword)*c++ << 1;
- xmc[23] = sr & 0x7; sr >>= 3;
- xmc[24] = sr & 0x7; sr >>= 3;
- xmc[25] = sr & 0x7; sr >>= 3;
- sr = *c++;
- Nc[2] = sr & 0x7f; sr >>= 7;
- sr |= (uword)*c++ << 1; /* 20 */
- bc[2] = sr & 0x3; sr >>= 2;
- Mc[2] = sr & 0x3; sr >>= 2;
- sr |= (uword)*c++ << 5;
- xmaxc[2] = sr & 0x3f; sr >>= 6;
- xmc[26] = sr & 0x7; sr >>= 3;
- xmc[27] = sr & 0x7; sr >>= 3;
- sr |= (uword)*c++ << 1;
- xmc[28] = sr & 0x7; sr >>= 3;
- xmc[29] = sr & 0x7; sr >>= 3;
- xmc[30] = sr & 0x7; sr >>= 3;
- sr = *c++;
- xmc[31] = sr & 0x7; sr >>= 3;
- xmc[32] = sr & 0x7; sr >>= 3;
- sr |= (uword)*c++ << 2;
- xmc[33] = sr & 0x7; sr >>= 3;
- xmc[34] = sr & 0x7; sr >>= 3;
- xmc[35] = sr & 0x7; sr >>= 3;
- sr |= (uword)*c++ << 1; /* 25 */
- xmc[36] = sr & 0x7; sr >>= 3;
- xmc[37] = sr & 0x7; sr >>= 3;
- xmc[38] = sr & 0x7; sr >>= 3;
- sr = *c++;
- Nc[3] = sr & 0x7f; sr >>= 7;
- sr |= (uword)*c++ << 1;
- bc[3] = sr & 0x3; sr >>= 2;
- Mc[3] = sr & 0x3; sr >>= 2;
- sr |= (uword)*c++ << 5;
- xmaxc[3] = sr & 0x3f; sr >>= 6;
- xmc[39] = sr & 0x7; sr >>= 3;
- xmc[40] = sr & 0x7; sr >>= 3;
- sr |= (uword)*c++ << 1;
- xmc[41] = sr & 0x7; sr >>= 3;
- xmc[42] = sr & 0x7; sr >>= 3;
- xmc[43] = sr & 0x7; sr >>= 3;
- sr = *c++; /* 30 */
- xmc[44] = sr & 0x7; sr >>= 3;
- xmc[45] = sr & 0x7; sr >>= 3;
- sr |= (uword)*c++ << 2;
- xmc[46] = sr & 0x7; sr >>= 3;
- xmc[47] = sr & 0x7; sr >>= 3;
- xmc[48] = sr & 0x7; sr >>= 3;
- sr |= (uword)*c++ << 1;
- xmc[49] = sr & 0x7; sr >>= 3;
- xmc[50] = sr & 0x7; sr >>= 3;
- xmc[51] = sr & 0x7; sr >>= 3;
- }
- }
- else
-#endif
- {
- /* GSM_MAGIC = (*c >> 4) & 0xF; */
-
- if (((*c >> 4) & 0x0F) != GSM_MAGIC) return -1;
-
- LARc[0] = (*c++ & 0xF) << 2; /* 1 */
- LARc[0] |= (*c >> 6) & 0x3;
- LARc[1] = *c++ & 0x3F;
- LARc[2] = (*c >> 3) & 0x1F;
- LARc[3] = (*c++ & 0x7) << 2;
- LARc[3] |= (*c >> 6) & 0x3;
- LARc[4] = (*c >> 2) & 0xF;
- LARc[5] = (*c++ & 0x3) << 2;
- LARc[5] |= (*c >> 6) & 0x3;
- LARc[6] = (*c >> 3) & 0x7;
- LARc[7] = *c++ & 0x7;
- Nc[0] = (*c >> 1) & 0x7F;
- bc[0] = (*c++ & 0x1) << 1;
- bc[0] |= (*c >> 7) & 0x1;
- Mc[0] = (*c >> 5) & 0x3;
- xmaxc[0] = (*c++ & 0x1F) << 1;
- xmaxc[0] |= (*c >> 7) & 0x1;
- xmc[0] = (*c >> 4) & 0x7;
- xmc[1] = (*c >> 1) & 0x7;
- xmc[2] = (*c++ & 0x1) << 2;
- xmc[2] |= (*c >> 6) & 0x3;
- xmc[3] = (*c >> 3) & 0x7;
- xmc[4] = *c++ & 0x7;
- xmc[5] = (*c >> 5) & 0x7;
- xmc[6] = (*c >> 2) & 0x7;
- xmc[7] = (*c++ & 0x3) << 1; /* 10 */
- xmc[7] |= (*c >> 7) & 0x1;
- xmc[8] = (*c >> 4) & 0x7;
- xmc[9] = (*c >> 1) & 0x7;
- xmc[10] = (*c++ & 0x1) << 2;
- xmc[10] |= (*c >> 6) & 0x3;
- xmc[11] = (*c >> 3) & 0x7;
- xmc[12] = *c++ & 0x7;
- Nc[1] = (*c >> 1) & 0x7F;
- bc[1] = (*c++ & 0x1) << 1;
- bc[1] |= (*c >> 7) & 0x1;
- Mc[1] = (*c >> 5) & 0x3;
- xmaxc[1] = (*c++ & 0x1F) << 1;
- xmaxc[1] |= (*c >> 7) & 0x1;
- xmc[13] = (*c >> 4) & 0x7;
- xmc[14] = (*c >> 1) & 0x7;
- xmc[15] = (*c++ & 0x1) << 2;
- xmc[15] |= (*c >> 6) & 0x3;
- xmc[16] = (*c >> 3) & 0x7;
- xmc[17] = *c++ & 0x7;
- xmc[18] = (*c >> 5) & 0x7;
- xmc[19] = (*c >> 2) & 0x7;
- xmc[20] = (*c++ & 0x3) << 1;
- xmc[20] |= (*c >> 7) & 0x1;
- xmc[21] = (*c >> 4) & 0x7;
- xmc[22] = (*c >> 1) & 0x7;
- xmc[23] = (*c++ & 0x1) << 2;
- xmc[23] |= (*c >> 6) & 0x3;
- xmc[24] = (*c >> 3) & 0x7;
- xmc[25] = *c++ & 0x7;
- Nc[2] = (*c >> 1) & 0x7F;
- bc[2] = (*c++ & 0x1) << 1; /* 20 */
- bc[2] |= (*c >> 7) & 0x1;
- Mc[2] = (*c >> 5) & 0x3;
- xmaxc[2] = (*c++ & 0x1F) << 1;
- xmaxc[2] |= (*c >> 7) & 0x1;
- xmc[26] = (*c >> 4) & 0x7;
- xmc[27] = (*c >> 1) & 0x7;
- xmc[28] = (*c++ & 0x1) << 2;
- xmc[28] |= (*c >> 6) & 0x3;
- xmc[29] = (*c >> 3) & 0x7;
- xmc[30] = *c++ & 0x7;
- xmc[31] = (*c >> 5) & 0x7;
- xmc[32] = (*c >> 2) & 0x7;
- xmc[33] = (*c++ & 0x3) << 1;
- xmc[33] |= (*c >> 7) & 0x1;
- xmc[34] = (*c >> 4) & 0x7;
- xmc[35] = (*c >> 1) & 0x7;
- xmc[36] = (*c++ & 0x1) << 2;
- xmc[36] |= (*c >> 6) & 0x3;
- xmc[37] = (*c >> 3) & 0x7;
- xmc[38] = *c++ & 0x7;
- Nc[3] = (*c >> 1) & 0x7F;
- bc[3] = (*c++ & 0x1) << 1;
- bc[3] |= (*c >> 7) & 0x1;
- Mc[3] = (*c >> 5) & 0x3;
- xmaxc[3] = (*c++ & 0x1F) << 1;
- xmaxc[3] |= (*c >> 7) & 0x1;
- xmc[39] = (*c >> 4) & 0x7;
- xmc[40] = (*c >> 1) & 0x7;
- xmc[41] = (*c++ & 0x1) << 2;
- xmc[41] |= (*c >> 6) & 0x3;
- xmc[42] = (*c >> 3) & 0x7;
- xmc[43] = *c++ & 0x7; /* 30 */
- xmc[44] = (*c >> 5) & 0x7;
- xmc[45] = (*c >> 2) & 0x7;
- xmc[46] = (*c++ & 0x3) << 1;
- xmc[46] |= (*c >> 7) & 0x1;
- xmc[47] = (*c >> 4) & 0x7;
- xmc[48] = (*c >> 1) & 0x7;
- xmc[49] = (*c++ & 0x1) << 2;
- xmc[49] |= (*c >> 6) & 0x3;
- xmc[50] = (*c >> 3) & 0x7;
- xmc[51] = *c & 0x7; /* 33 */
- }
-
- Gsm_Decoder(s, LARc, Nc, bc, Mc, xmaxc, xmc, target);
-
- return 0;
-}
-/*
-** Do not edit or modify anything in this comment block.
-** The arch-tag line is a file identity tag for the GNU Arch
-** revision control system.
-**
-** arch-tag: 6a9b6628-821c-4a96-84c1-485ebd35f170
-*/
-
diff --git a/libs/libsndfile/src/GSM610/gsm_destroy.c b/libs/libsndfile/src/GSM610/gsm_destroy.c
deleted file mode 100644
index 9e2d6a49b7..0000000000
--- a/libs/libsndfile/src/GSM610/gsm_destroy.c
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Copyright 1992 by Jutta Degener and Carsten Bormann, Technische
- * Universitaet Berlin. See the accompanying file "COPYRIGHT" for
- * details. THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE.
- */
-
-#include "gsm.h"
-#include "config.h"
-
-#ifdef HAS_STDLIB_H
-# include <stdlib.h>
-#else
-# ifdef HAS_MALLOC_H
-# include <malloc.h>
-# else
- extern void free();
-# endif
-#endif
-
-void gsm_destroy (gsm S)
-{
- if (S) free((char *)S);
-}
-/*
-** Do not edit or modify anything in this comment block.
-** The arch-tag line is a file identity tag for the GNU Arch
-** revision control system.
-**
-** arch-tag: f423d09b-6ccc-47e0-9b18-ee1cf7a8e473
-*/
-
diff --git a/libs/libsndfile/src/GSM610/gsm_encode.c b/libs/libsndfile/src/GSM610/gsm_encode.c
deleted file mode 100644
index 02af4ba282..0000000000
--- a/libs/libsndfile/src/GSM610/gsm_encode.c
+++ /dev/null
@@ -1,456 +0,0 @@
-/*
- * Copyright 1992 by Jutta Degener and Carsten Bormann, Technische
- * Universitaet Berlin. See the accompanying file "COPYRIGHT" for
- * details. THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE.
- */
-
-#include "gsm610_priv.h"
-#include "gsm.h"
-
-void gsm_encode (gsm s, gsm_signal * source, gsm_byte * c)
-{
- word LARc[8], Nc[4], Mc[4], bc[4], xmaxc[4], xmc[13*4];
-
- Gsm_Coder(s, source, LARc, Nc, bc, Mc, xmaxc, xmc);
-
-
- /* variable size
-
- GSM_MAGIC 4
-
- LARc[0] 6
- LARc[1] 6
- LARc[2] 5
- LARc[3] 5
- LARc[4] 4
- LARc[5] 4
- LARc[6] 3
- LARc[7] 3
-
- Nc[0] 7
- bc[0] 2
- Mc[0] 2
- xmaxc[0] 6
- xmc[0] 3
- xmc[1] 3
- xmc[2] 3
- xmc[3] 3
- xmc[4] 3
- xmc[5] 3
- xmc[6] 3
- xmc[7] 3
- xmc[8] 3
- xmc[9] 3
- xmc[10] 3
- xmc[11] 3
- xmc[12] 3
-
- Nc[1] 7
- bc[1] 2
- Mc[1] 2
- xmaxc[1] 6
- xmc[13] 3
- xmc[14] 3
- xmc[15] 3
- xmc[16] 3
- xmc[17] 3
- xmc[18] 3
- xmc[19] 3
- xmc[20] 3
- xmc[21] 3
- xmc[22] 3
- xmc[23] 3
- xmc[24] 3
- xmc[25] 3
-
- Nc[2] 7
- bc[2] 2
- Mc[2] 2
- xmaxc[2] 6
- xmc[26] 3
- xmc[27] 3
- xmc[28] 3
- xmc[29] 3
- xmc[30] 3
- xmc[31] 3
- xmc[32] 3
- xmc[33] 3
- xmc[34] 3
- xmc[35] 3
- xmc[36] 3
- xmc[37] 3
- xmc[38] 3
-
- Nc[3] 7
- bc[3] 2
- Mc[3] 2
- xmaxc[3] 6
- xmc[39] 3
- xmc[40] 3
- xmc[41] 3
- xmc[42] 3
- xmc[43] 3
- xmc[44] 3
- xmc[45] 3
- xmc[46] 3
- xmc[47] 3
- xmc[48] 3
- xmc[49] 3
- xmc[50] 3
- xmc[51] 3
- */
-
-#ifdef WAV49
-
- if (s->wav_fmt) {
- s->frame_index = !s->frame_index;
- if (s->frame_index) {
-
- uword sr;
-
- sr = 0;
- sr = sr >> 6 | LARc[0] << 10;
- sr = sr >> 6 | LARc[1] << 10;
- *c++ = sr >> 4;
- sr = sr >> 5 | LARc[2] << 11;
- *c++ = sr >> 7;
- sr = sr >> 5 | LARc[3] << 11;
- sr = sr >> 4 | LARc[4] << 12;
- *c++ = sr >> 6;
- sr = sr >> 4 | LARc[5] << 12;
- sr = sr >> 3 | LARc[6] << 13;
- *c++ = sr >> 7;
- sr = sr >> 3 | LARc[7] << 13;
- sr = sr >> 7 | Nc[0] << 9;
- *c++ = sr >> 5;
- sr = sr >> 2 | bc[0] << 14;
- sr = sr >> 2 | Mc[0] << 14;
- sr = sr >> 6 | xmaxc[0] << 10;
- *c++ = sr >> 3;
- sr = sr >> 3 | xmc[0] << 13;
- *c++ = sr >> 8;
- sr = sr >> 3 | xmc[1] << 13;
- sr = sr >> 3 | xmc[2] << 13;
- sr = sr >> 3 | xmc[3] << 13;
- *c++ = sr >> 7;
- sr = sr >> 3 | xmc[4] << 13;
- sr = sr >> 3 | xmc[5] << 13;
- sr = sr >> 3 | xmc[6] << 13;
- *c++ = sr >> 6;
- sr = sr >> 3 | xmc[7] << 13;
- sr = sr >> 3 | xmc[8] << 13;
- *c++ = sr >> 8;
- sr = sr >> 3 | xmc[9] << 13;
- sr = sr >> 3 | xmc[10] << 13;
- sr = sr >> 3 | xmc[11] << 13;
- *c++ = sr >> 7;
- sr = sr >> 3 | xmc[12] << 13;
- sr = sr >> 7 | Nc[1] << 9;
- *c++ = sr >> 5;
- sr = sr >> 2 | bc[1] << 14;
- sr = sr >> 2 | Mc[1] << 14;
- sr = sr >> 6 | xmaxc[1] << 10;
- *c++ = sr >> 3;
- sr = sr >> 3 | xmc[13] << 13;
- *c++ = sr >> 8;
- sr = sr >> 3 | xmc[14] << 13;
- sr = sr >> 3 | xmc[15] << 13;
- sr = sr >> 3 | xmc[16] << 13;
- *c++ = sr >> 7;
- sr = sr >> 3 | xmc[17] << 13;
- sr = sr >> 3 | xmc[18] << 13;
- sr = sr >> 3 | xmc[19] << 13;
- *c++ = sr >> 6;
- sr = sr >> 3 | xmc[20] << 13;
- sr = sr >> 3 | xmc[21] << 13;
- *c++ = sr >> 8;
- sr = sr >> 3 | xmc[22] << 13;
- sr = sr >> 3 | xmc[23] << 13;
- sr = sr >> 3 | xmc[24] << 13;
- *c++ = sr >> 7;
- sr = sr >> 3 | xmc[25] << 13;
- sr = sr >> 7 | Nc[2] << 9;
- *c++ = sr >> 5;
- sr = sr >> 2 | bc[2] << 14;
- sr = sr >> 2 | Mc[2] << 14;
- sr = sr >> 6 | xmaxc[2] << 10;
- *c++ = sr >> 3;
- sr = sr >> 3 | xmc[26] << 13;
- *c++ = sr >> 8;
- sr = sr >> 3 | xmc[27] << 13;
- sr = sr >> 3 | xmc[28] << 13;
- sr = sr >> 3 | xmc[29] << 13;
- *c++ = sr >> 7;
- sr = sr >> 3 | xmc[30] << 13;
- sr = sr >> 3 | xmc[31] << 13;
- sr = sr >> 3 | xmc[32] << 13;
- *c++ = sr >> 6;
- sr = sr >> 3 | xmc[33] << 13;
- sr = sr >> 3 | xmc[34] << 13;
- *c++ = sr >> 8;
- sr = sr >> 3 | xmc[35] << 13;
- sr = sr >> 3 | xmc[36] << 13;
- sr = sr >> 3 | xmc[37] << 13;
- *c++ = sr >> 7;
- sr = sr >> 3 | xmc[38] << 13;
- sr = sr >> 7 | Nc[3] << 9;
- *c++ = sr >> 5;
- sr = sr >> 2 | bc[3] << 14;
- sr = sr >> 2 | Mc[3] << 14;
- sr = sr >> 6 | xmaxc[3] << 10;
- *c++ = sr >> 3;
- sr = sr >> 3 | xmc[39] << 13;
- *c++ = sr >> 8;
- sr = sr >> 3 | xmc[40] << 13;
- sr = sr >> 3 | xmc[41] << 13;
- sr = sr >> 3 | xmc[42] << 13;
- *c++ = sr >> 7;
- sr = sr >> 3 | xmc[43] << 13;
- sr = sr >> 3 | xmc[44] << 13;
- sr = sr >> 3 | xmc[45] << 13;
- *c++ = sr >> 6;
- sr = sr >> 3 | xmc[46] << 13;
- sr = sr >> 3 | xmc[47] << 13;
- *c++ = sr >> 8;
- sr = sr >> 3 | xmc[48] << 13;
- sr = sr >> 3 | xmc[49] << 13;
- sr = sr >> 3 | xmc[50] << 13;
- *c++ = sr >> 7;
- sr = sr >> 3 | xmc[51] << 13;
- sr = sr >> 4;
- *c = sr >> 8;
- s->frame_chain = *c;
- }
- else {
- uword sr;
-
- sr = 0;
- sr = sr >> 4 | s->frame_chain << 12;
- sr = sr >> 6 | LARc[0] << 10;
- *c++ = sr >> 6;
- sr = sr >> 6 | LARc[1] << 10;
- *c++ = sr >> 8;
- sr = sr >> 5 | LARc[2] << 11;
- sr = sr >> 5 | LARc[3] << 11;
- *c++ = sr >> 6;
- sr = sr >> 4 | LARc[4] << 12;
- sr = sr >> 4 | LARc[5] << 12;
- *c++ = sr >> 6;
- sr = sr >> 3 | LARc[6] << 13;
- sr = sr >> 3 | LARc[7] << 13;
- *c++ = sr >> 8;
- sr = sr >> 7 | Nc[0] << 9;
- sr = sr >> 2 | bc[0] << 14;
- *c++ = sr >> 7;
- sr = sr >> 2 | Mc[0] << 14;
- sr = sr >> 6 | xmaxc[0] << 10;
- *c++ = sr >> 7;
- sr = sr >> 3 | xmc[0] << 13;
- sr = sr >> 3 | xmc[1] << 13;
- sr = sr >> 3 | xmc[2] << 13;
- *c++ = sr >> 6;
- sr = sr >> 3 | xmc[3] << 13;
- sr = sr >> 3 | xmc[4] << 13;
- *c++ = sr >> 8;
- sr = sr >> 3 | xmc[5] << 13;
- sr = sr >> 3 | xmc[6] << 13;
- sr = sr >> 3 | xmc[7] << 13;
- *c++ = sr >> 7;
- sr = sr >> 3 | xmc[8] << 13;
- sr = sr >> 3 | xmc[9] << 13;
- sr = sr >> 3 | xmc[10] << 13;
- *c++ = sr >> 6;
- sr = sr >> 3 | xmc[11] << 13;
- sr = sr >> 3 | xmc[12] << 13;
- *c++ = sr >> 8;
- sr = sr >> 7 | Nc[1] << 9;
- sr = sr >> 2 | bc[1] << 14;
- *c++ = sr >> 7;
- sr = sr >> 2 | Mc[1] << 14;
- sr = sr >> 6 | xmaxc[1] << 10;
- *c++ = sr >> 7;
- sr = sr >> 3 | xmc[13] << 13;
- sr = sr >> 3 | xmc[14] << 13;
- sr = sr >> 3 | xmc[15] << 13;
- *c++ = sr >> 6;
- sr = sr >> 3 | xmc[16] << 13;
- sr = sr >> 3 | xmc[17] << 13;
- *c++ = sr >> 8;
- sr = sr >> 3 | xmc[18] << 13;
- sr = sr >> 3 | xmc[19] << 13;
- sr = sr >> 3 | xmc[20] << 13;
- *c++ = sr >> 7;
- sr = sr >> 3 | xmc[21] << 13;
- sr = sr >> 3 | xmc[22] << 13;
- sr = sr >> 3 | xmc[23] << 13;
- *c++ = sr >> 6;
- sr = sr >> 3 | xmc[24] << 13;
- sr = sr >> 3 | xmc[25] << 13;
- *c++ = sr >> 8;
- sr = sr >> 7 | Nc[2] << 9;
- sr = sr >> 2 | bc[2] << 14;
- *c++ = sr >> 7;
- sr = sr >> 2 | Mc[2] << 14;
- sr = sr >> 6 | xmaxc[2] << 10;
- *c++ = sr >> 7;
- sr = sr >> 3 | xmc[26] << 13;
- sr = sr >> 3 | xmc[27] << 13;
- sr = sr >> 3 | xmc[28] << 13;
- *c++ = sr >> 6;
- sr = sr >> 3 | xmc[29] << 13;
- sr = sr >> 3 | xmc[30] << 13;
- *c++ = sr >> 8;
- sr = sr >> 3 | xmc[31] << 13;
- sr = sr >> 3 | xmc[32] << 13;
- sr = sr >> 3 | xmc[33] << 13;
- *c++ = sr >> 7;
- sr = sr >> 3 | xmc[34] << 13;
- sr = sr >> 3 | xmc[35] << 13;
- sr = sr >> 3 | xmc[36] << 13;
- *c++ = sr >> 6;
- sr = sr >> 3 | xmc[37] << 13;
- sr = sr >> 3 | xmc[38] << 13;
- *c++ = sr >> 8;
- sr = sr >> 7 | Nc[3] << 9;
- sr = sr >> 2 | bc[3] << 14;
- *c++ = sr >> 7;
- sr = sr >> 2 | Mc[3] << 14;
- sr = sr >> 6 | xmaxc[3] << 10;
- *c++ = sr >> 7;
- sr = sr >> 3 | xmc[39] << 13;
- sr = sr >> 3 | xmc[40] << 13;
- sr = sr >> 3 | xmc[41] << 13;
- *c++ = sr >> 6;
- sr = sr >> 3 | xmc[42] << 13;
- sr = sr >> 3 | xmc[43] << 13;
- *c++ = sr >> 8;
- sr = sr >> 3 | xmc[44] << 13;
- sr = sr >> 3 | xmc[45] << 13;
- sr = sr >> 3 | xmc[46] << 13;
- *c++ = sr >> 7;
- sr = sr >> 3 | xmc[47] << 13;
- sr = sr >> 3 | xmc[48] << 13;
- sr = sr >> 3 | xmc[49] << 13;
- *c++ = sr >> 6;
- sr = sr >> 3 | xmc[50] << 13;
- sr = sr >> 3 | xmc[51] << 13;
- *c++ = sr >> 8;
- }
- }
-
- else
-
-#endif /* WAV49 */
- {
-
- *c++ = ((GSM_MAGIC & 0xF) << 4) /* 1 */
- | ((LARc[0] >> 2) & 0xF);
- *c++ = ((LARc[0] & 0x3) << 6)
- | (LARc[1] & 0x3F);
- *c++ = ((LARc[2] & 0x1F) << 3)
- | ((LARc[3] >> 2) & 0x7);
- *c++ = ((LARc[3] & 0x3) << 6)
- | ((LARc[4] & 0xF) << 2)
- | ((LARc[5] >> 2) & 0x3);
- *c++ = ((LARc[5] & 0x3) << 6)
- | ((LARc[6] & 0x7) << 3)
- | (LARc[7] & 0x7);
- *c++ = ((Nc[0] & 0x7F) << 1)
- | ((bc[0] >> 1) & 0x1);
- *c++ = ((bc[0] & 0x1) << 7)
- | ((Mc[0] & 0x3) << 5)
- | ((xmaxc[0] >> 1) & 0x1F);
- *c++ = ((xmaxc[0] & 0x1) << 7)
- | ((xmc[0] & 0x7) << 4)
- | ((xmc[1] & 0x7) << 1)
- | ((xmc[2] >> 2) & 0x1);
- *c++ = ((xmc[2] & 0x3) << 6)
- | ((xmc[3] & 0x7) << 3)
- | (xmc[4] & 0x7);
- *c++ = ((xmc[5] & 0x7) << 5) /* 10 */
- | ((xmc[6] & 0x7) << 2)
- | ((xmc[7] >> 1) & 0x3);
- *c++ = ((xmc[7] & 0x1) << 7)
- | ((xmc[8] & 0x7) << 4)
- | ((xmc[9] & 0x7) << 1)
- | ((xmc[10] >> 2) & 0x1);
- *c++ = ((xmc[10] & 0x3) << 6)
- | ((xmc[11] & 0x7) << 3)
- | (xmc[12] & 0x7);
- *c++ = ((Nc[1] & 0x7F) << 1)
- | ((bc[1] >> 1) & 0x1);
- *c++ = ((bc[1] & 0x1) << 7)
- | ((Mc[1] & 0x3) << 5)
- | ((xmaxc[1] >> 1) & 0x1F);
- *c++ = ((xmaxc[1] & 0x1) << 7)
- | ((xmc[13] & 0x7) << 4)
- | ((xmc[14] & 0x7) << 1)
- | ((xmc[15] >> 2) & 0x1);
- *c++ = ((xmc[15] & 0x3) << 6)
- | ((xmc[16] & 0x7) << 3)
- | (xmc[17] & 0x7);
- *c++ = ((xmc[18] & 0x7) << 5)
- | ((xmc[19] & 0x7) << 2)
- | ((xmc[20] >> 1) & 0x3);
- *c++ = ((xmc[20] & 0x1) << 7)
- | ((xmc[21] & 0x7) << 4)
- | ((xmc[22] & 0x7) << 1)
- | ((xmc[23] >> 2) & 0x1);
- *c++ = ((xmc[23] & 0x3) << 6)
- | ((xmc[24] & 0x7) << 3)
- | (xmc[25] & 0x7);
- *c++ = ((Nc[2] & 0x7F) << 1) /* 20 */
- | ((bc[2] >> 1) & 0x1);
- *c++ = ((bc[2] & 0x1) << 7)
- | ((Mc[2] & 0x3) << 5)
- | ((xmaxc[2] >> 1) & 0x1F);
- *c++ = ((xmaxc[2] & 0x1) << 7)
- | ((xmc[26] & 0x7) << 4)
- | ((xmc[27] & 0x7) << 1)
- | ((xmc[28] >> 2) & 0x1);
- *c++ = ((xmc[28] & 0x3) << 6)
- | ((xmc[29] & 0x7) << 3)
- | (xmc[30] & 0x7);
- *c++ = ((xmc[31] & 0x7) << 5)
- | ((xmc[32] & 0x7) << 2)
- | ((xmc[33] >> 1) & 0x3);
- *c++ = ((xmc[33] & 0x1) << 7)
- | ((xmc[34] & 0x7) << 4)
- | ((xmc[35] & 0x7) << 1)
- | ((xmc[36] >> 2) & 0x1);
- *c++ = ((xmc[36] & 0x3) << 6)
- | ((xmc[37] & 0x7) << 3)
- | (xmc[38] & 0x7);
- *c++ = ((Nc[3] & 0x7F) << 1)
- | ((bc[3] >> 1) & 0x1);
- *c++ = ((bc[3] & 0x1) << 7)
- | ((Mc[3] & 0x3) << 5)
- | ((xmaxc[3] >> 1) & 0x1F);
- *c++ = ((xmaxc[3] & 0x1) << 7)
- | ((xmc[39] & 0x7) << 4)
- | ((xmc[40] & 0x7) << 1)
- | ((xmc[41] >> 2) & 0x1);
- *c++ = ((xmc[41] & 0x3) << 6) /* 30 */
- | ((xmc[42] & 0x7) << 3)
- | (xmc[43] & 0x7);
- *c++ = ((xmc[44] & 0x7) << 5)
- | ((xmc[45] & 0x7) << 2)
- | ((xmc[46] >> 1) & 0x3);
- *c++ = ((xmc[46] & 0x1) << 7)
- | ((xmc[47] & 0x7) << 4)
- | ((xmc[48] & 0x7) << 1)
- | ((xmc[49] >> 2) & 0x1);
- *c++ = ((xmc[49] & 0x3) << 6)
- | ((xmc[50] & 0x7) << 3)
- | (xmc[51] & 0x7);
-
- }
-}
-/*
-** Do not edit or modify anything in this comment block.
-** The arch-tag line is a file identity tag for the GNU Arch
-** revision control system.
-**
-** arch-tag: cfe9c43d-d97c-4216-b5e5-ccd6a25b582b
-*/
-
diff --git a/libs/libsndfile/src/GSM610/gsm_option.c b/libs/libsndfile/src/GSM610/gsm_option.c
deleted file mode 100644
index 5c56d78df2..0000000000
--- a/libs/libsndfile/src/GSM610/gsm_option.c
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Copyright 1992 by Jutta Degener and Carsten Bormann, Technische
- * Universitaet Berlin. See the accompanying file "COPYRIGHT" for
- * details. THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE.
- */
-
-#include "gsm610_priv.h"
-
-#include "gsm.h"
-
-int gsm_option (gsm r, int opt, int * val)
-{
- int result = -1;
-
- switch (opt) {
- case GSM_OPT_LTP_CUT:
-#ifdef LTP_CUT
- result = r->ltp_cut;
- if (val) r->ltp_cut = *val;
-#endif
- break;
-
- case GSM_OPT_VERBOSE:
-#ifndef NDEBUG
- result = r->verbose;
- if (val) r->verbose = *val;
-#endif
- break;
-
- case GSM_OPT_FAST:
-
-#if defined(FAST) && defined(USE_FLOAT_MUL)
- result = r->fast;
- if (val) r->fast = !!*val;
-#endif
- break;
-
- case GSM_OPT_FRAME_CHAIN:
-
-#ifdef WAV49
- result = r->frame_chain;
- if (val) r->frame_chain = *val;
-#endif
- break;
-
- case GSM_OPT_FRAME_INDEX:
-
-#ifdef WAV49
- result = r->frame_index;
- if (val) r->frame_index = *val;
-#endif
- break;
-
- case GSM_OPT_WAV49:
-
-#ifdef WAV49
- result = r->wav_fmt;
- if (val) r->wav_fmt = !!*val;
-#endif
- break;
-
- default:
- break;
- }
- return result;
-}
-/*
-** Do not edit or modify anything in this comment block.
-** The arch-tag line is a file identity tag for the GNU Arch
-** revision control system.
-**
-** arch-tag: 963ff156-506f-4359-9145-371e9060b030
-*/
-
diff --git a/libs/libsndfile/src/GSM610/long_term.c b/libs/libsndfile/src/GSM610/long_term.c
deleted file mode 100644
index 5179d1d09b..0000000000
--- a/libs/libsndfile/src/GSM610/long_term.c
+++ /dev/null
@@ -1,951 +0,0 @@
-/*
- * Copyright 1992 by Jutta Degener and Carsten Bormann, Technische
- * Universitaet Berlin. See the accompanying file "COPYRIGHT" for
- * details. THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE.
- */
-
-#include <stdio.h>
-#include <assert.h>
-
-#include "gsm610_priv.h"
-
-#include "gsm.h"
-
-/*
- * 4.2.11 .. 4.2.12 LONG TERM PREDICTOR (LTP) SECTION
- */
-
-
-/*
- * This module computes the LTP gain (bc) and the LTP lag (Nc)
- * for the long term analysis filter. This is done by calculating a
- * maximum of the cross-correlation function between the current
- * sub-segment short term residual signal d[0..39] (output of
- * the short term analysis filter; for simplification the index
- * of this array begins at 0 and ends at 39 for each sub-segment of the
- * RPE-LTP analysis) and the previous reconstructed short term
- * residual signal dp[ -120 .. -1 ]. A dynamic scaling must be
- * performed to avoid overflow.
- */
-
- /* The next procedure exists in six versions. First two integer
- * version (if USE_FLOAT_MUL is not defined); then four floating
- * point versions, twice with proper scaling (USE_FLOAT_MUL defined),
- * once without (USE_FLOAT_MUL and FAST defined, and fast run-time
- * option used). Every pair has first a Cut version (see the -C
- * option to toast or the LTP_CUT option to gsm_option()), then the
- * uncut one. (For a detailed explanation of why this is altogether
- * a bad idea, see Henry Spencer and Geoff Collyer, ``#ifdef Considered
- * Harmful''.)
- */
-
-#ifndef USE_FLOAT_MUL
-
-#ifdef LTP_CUT
-
-static void Cut_Calculation_of_the_LTP_parameters (
-
- struct gsm_state * st,
-
- register word * d, /* [0..39] IN */
- register word * dp, /* [-120..-1] IN */
- word * bc_out, /* OUT */
- word * Nc_out /* OUT */
-)
-{
- register int k, lambda;
- word Nc, bc;
- word wt[40];
-
- longword L_result;
- longword L_max, L_power;
- word R, S, dmax, scal, best_k;
- word ltp_cut;
-
- register word temp, wt_k;
-
- /* Search of the optimum scaling of d[0..39].
- */
- dmax = 0;
- for (k = 0; k <= 39; k++) {
- temp = d[k];
- temp = GSM_ABS( temp );
- if (temp > dmax) {
- dmax = temp;
- best_k = k;
- }
- }
- temp = 0;
- if (dmax == 0) scal = 0;
- else {
- assert(dmax > 0);
- temp = gsm_norm( (longword)dmax << 16 );
- }
- if (temp > 6) scal = 0;
- else scal = 6 - temp;
- assert(scal >= 0);
-
- /* Search for the maximum cross-correlation and coding of the LTP lag
- */
- L_max = 0;
- Nc = 40; /* index for the maximum cross-correlation */
- wt_k = SASR_W(d[best_k], scal);
-
- for (lambda = 40; lambda <= 120; lambda++) {
- L_result = (longword)wt_k * dp[best_k - lambda];
- if (L_result > L_max) {
- Nc = lambda;
- L_max = L_result;
- }
- }
- *Nc_out = Nc;
- L_max <<= 1;
-
- /* Rescaling of L_max
- */
- assert(scal <= 100 && scal >= -100);
- L_max = L_max >> (6 - scal); /* sub(6, scal) */
-
- assert( Nc <= 120 && Nc >= 40);
-
- /* Compute the power of the reconstructed short term residual
- * signal dp[..]
- */
- L_power = 0;
- for (k = 0; k <= 39; k++) {
-
- register longword L_temp;
-
- L_temp = SASR_W( dp[k - Nc], 3 );
- L_power += L_temp * L_temp;
- }
- L_power <<= 1; /* from L_MULT */
-
- /* Normalization of L_max and L_power
- */
-
- if (L_max <= 0) {
- *bc_out = 0;
- return;
- }
- if (L_max >= L_power) {
- *bc_out = 3;
- return;
- }
-
- temp = gsm_norm( L_power );
-
- R = SASR( L_max << temp, 16 );
- S = SASR( L_power << temp, 16 );
-
- /* Coding of the LTP gain
- */
-
- /* Table 4.3a must be used to obtain the level DLB[i] for the
- * quantization of the LTP gain b to get the coded version bc.
- */
- for (bc = 0; bc <= 2; bc++) if (R <= gsm_mult(S, gsm_DLB[bc])) break;
- *bc_out = bc;
-}
-
-#endif /* LTP_CUT */
-
-static void Calculation_of_the_LTP_parameters (
- register word * d, /* [0..39] IN */
- register word * dp, /* [-120..-1] IN */
- word * bc_out, /* OUT */
- word * Nc_out /* OUT */
-)
-{
- register int k, lambda;
- word Nc, bc;
- word wt[40];
-
- longword L_max, L_power;
- word R, S, dmax, scal;
- register word temp;
-
- /* Search of the optimum scaling of d[0..39].
- */
- dmax = 0;
-
- for (k = 0; k <= 39; k++) {
- temp = d[k];
- temp = GSM_ABS( temp );
- if (temp > dmax) dmax = temp;
- }
-
- temp = 0;
- if (dmax == 0) scal = 0;
- else {
- assert(dmax > 0);
- temp = gsm_norm( (longword)dmax << 16 );
- }
-
- if (temp > 6) scal = 0;
- else scal = 6 - temp;
-
- assert(scal >= 0);
-
- /* Initialization of a working array wt
- */
-
- for (k = 0; k <= 39; k++) wt[k] = SASR_W( d[k], scal );
-
- /* Search for the maximum cross-correlation and coding of the LTP lag
- */
- L_max = 0;
- Nc = 40; /* index for the maximum cross-correlation */
-
- for (lambda = 40; lambda <= 120; lambda++) {
-
-# undef STEP
-# define STEP(k) (longword)wt[k] * dp[k - lambda]
-
- register longword L_result;
-
- L_result = STEP(0) ; L_result += STEP(1) ;
- L_result += STEP(2) ; L_result += STEP(3) ;
- L_result += STEP(4) ; L_result += STEP(5) ;
- L_result += STEP(6) ; L_result += STEP(7) ;
- L_result += STEP(8) ; L_result += STEP(9) ;
- L_result += STEP(10) ; L_result += STEP(11) ;
- L_result += STEP(12) ; L_result += STEP(13) ;
- L_result += STEP(14) ; L_result += STEP(15) ;
- L_result += STEP(16) ; L_result += STEP(17) ;
- L_result += STEP(18) ; L_result += STEP(19) ;
- L_result += STEP(20) ; L_result += STEP(21) ;
- L_result += STEP(22) ; L_result += STEP(23) ;
- L_result += STEP(24) ; L_result += STEP(25) ;
- L_result += STEP(26) ; L_result += STEP(27) ;
- L_result += STEP(28) ; L_result += STEP(29) ;
- L_result += STEP(30) ; L_result += STEP(31) ;
- L_result += STEP(32) ; L_result += STEP(33) ;
- L_result += STEP(34) ; L_result += STEP(35) ;
- L_result += STEP(36) ; L_result += STEP(37) ;
- L_result += STEP(38) ; L_result += STEP(39) ;
-
- if (L_result > L_max) {
-
- Nc = lambda;
- L_max = L_result;
- }
- }
-
- *Nc_out = Nc;
-
- L_max <<= 1;
-
- /* Rescaling of L_max
- */
- assert(scal <= 100 && scal >= -100);
- L_max = L_max >> (6 - scal); /* sub(6, scal) */
-
- assert( Nc <= 120 && Nc >= 40);
-
- /* Compute the power of the reconstructed short term residual
- * signal dp[..]
- */
- L_power = 0;
- for (k = 0; k <= 39; k++) {
-
- register longword L_temp;
-
- L_temp = SASR_W( dp[k - Nc], 3 );
- L_power += L_temp * L_temp;
- }
- L_power <<= 1; /* from L_MULT */
-
- /* Normalization of L_max and L_power
- */
-
- if (L_max <= 0) {
- *bc_out = 0;
- return;
- }
- if (L_max >= L_power) {
- *bc_out = 3;
- return;
- }
-
- temp = gsm_norm( L_power );
-
- R = SASR_L( L_max << temp, 16 );
- S = SASR_L( L_power << temp, 16 );
-
- /* Coding of the LTP gain
- */
-
- /* Table 4.3a must be used to obtain the level DLB[i] for the
- * quantization of the LTP gain b to get the coded version bc.
- */
- for (bc = 0; bc <= 2; bc++) if (R <= gsm_mult(S, gsm_DLB[bc])) break;
- *bc_out = bc;
-}
-
-#else /* USE_FLOAT_MUL */
-
-#ifdef LTP_CUT
-
-static void Cut_Calculation_of_the_LTP_parameters (
- struct gsm_state * st, /* IN */
- register word * d, /* [0..39] IN */
- register word * dp, /* [-120..-1] IN */
- word * bc_out, /* OUT */
- word * Nc_out /* OUT */
-)
-{
- register int k, lambda;
- word Nc, bc;
- word ltp_cut;
-
- float wt_float[40];
- float dp_float_base[120], * dp_float = dp_float_base + 120;
-
- longword L_max, L_power;
- word R, S, dmax, scal;
- register word temp;
-
- /* Search of the optimum scaling of d[0..39].
- */
- dmax = 0;
-
- for (k = 0; k <= 39; k++) {
- temp = d[k];
- temp = GSM_ABS( temp );
- if (temp > dmax) dmax = temp;
- }
-
- temp = 0;
- if (dmax == 0) scal = 0;
- else {
- assert(dmax > 0);
- temp = gsm_norm( (longword)dmax << 16 );
- }
-
- if (temp > 6) scal = 0;
- else scal = 6 - temp;
-
- assert(scal >= 0);
- ltp_cut = (longword)SASR_W(dmax, scal) * st->ltp_cut / 100;
-
-
- /* Initialization of a working array wt
- */
-
- for (k = 0; k < 40; k++) {
- register word w = SASR_W( d[k], scal );
- if (w < 0 ? w > -ltp_cut : w < ltp_cut) {
- wt_float[k] = 0.0;
- }
- else {
- wt_float[k] = w;
- }
- }
- for (k = -120; k < 0; k++) dp_float[k] = dp[k];
-
- /* Search for the maximum cross-correlation and coding of the LTP lag
- */
- L_max = 0;
- Nc = 40; /* index for the maximum cross-correlation */
-
- for (lambda = 40; lambda <= 120; lambda += 9) {
-
- /* Calculate L_result for l = lambda .. lambda + 9.
- */
- register float *lp = dp_float - lambda;
-
- register float W;
- register float a = lp[-8], b = lp[-7], c = lp[-6],
- d = lp[-5], e = lp[-4], f = lp[-3],
- g = lp[-2], h = lp[-1];
- register float E;
- register float S0 = 0, S1 = 0, S2 = 0, S3 = 0, S4 = 0,
- S5 = 0, S6 = 0, S7 = 0, S8 = 0;
-
-# undef STEP
-# define STEP(K, a, b, c, d, e, f, g, h) \
- if ((W = wt_float[K]) != 0.0) { \
- E = W * a; S8 += E; \
- E = W * b; S7 += E; \
- E = W * c; S6 += E; \
- E = W * d; S5 += E; \
- E = W * e; S4 += E; \
- E = W * f; S3 += E; \
- E = W * g; S2 += E; \
- E = W * h; S1 += E; \
- a = lp[K]; \
- E = W * a; S0 += E; } else (a = lp[K])
-
-# define STEP_A(K) STEP(K, a, b, c, d, e, f, g, h)
-# define STEP_B(K) STEP(K, b, c, d, e, f, g, h, a)
-# define STEP_C(K) STEP(K, c, d, e, f, g, h, a, b)
-# define STEP_D(K) STEP(K, d, e, f, g, h, a, b, c)
-# define STEP_E(K) STEP(K, e, f, g, h, a, b, c, d)
-# define STEP_F(K) STEP(K, f, g, h, a, b, c, d, e)
-# define STEP_G(K) STEP(K, g, h, a, b, c, d, e, f)
-# define STEP_H(K) STEP(K, h, a, b, c, d, e, f, g)
-
- STEP_A( 0); STEP_B( 1); STEP_C( 2); STEP_D( 3);
- STEP_E( 4); STEP_F( 5); STEP_G( 6); STEP_H( 7);
-
- STEP_A( 8); STEP_B( 9); STEP_C(10); STEP_D(11);
- STEP_E(12); STEP_F(13); STEP_G(14); STEP_H(15);
-
- STEP_A(16); STEP_B(17); STEP_C(18); STEP_D(19);
- STEP_E(20); STEP_F(21); STEP_G(22); STEP_H(23);
-
- STEP_A(24); STEP_B(25); STEP_C(26); STEP_D(27);
- STEP_E(28); STEP_F(29); STEP_G(30); STEP_H(31);
-
- STEP_A(32); STEP_B(33); STEP_C(34); STEP_D(35);
- STEP_E(36); STEP_F(37); STEP_G(38); STEP_H(39);
-
- if (S0 > L_max) { L_max = S0; Nc = lambda; }
- if (S1 > L_max) { L_max = S1; Nc = lambda + 1; }
- if (S2 > L_max) { L_max = S2; Nc = lambda + 2; }
- if (S3 > L_max) { L_max = S3; Nc = lambda + 3; }
- if (S4 > L_max) { L_max = S4; Nc = lambda + 4; }
- if (S5 > L_max) { L_max = S5; Nc = lambda + 5; }
- if (S6 > L_max) { L_max = S6; Nc = lambda + 6; }
- if (S7 > L_max) { L_max = S7; Nc = lambda + 7; }
- if (S8 > L_max) { L_max = S8; Nc = lambda + 8; }
-
- }
- *Nc_out = Nc;
-
- L_max <<= 1;
-
- /* Rescaling of L_max
- */
- assert(scal <= 100 && scal >= -100);
- L_max = L_max >> (6 - scal); /* sub(6, scal) */
-
- assert( Nc <= 120 && Nc >= 40);
-
- /* Compute the power of the reconstructed short term residual
- * signal dp[..]
- */
- L_power = 0;
- for (k = 0; k <= 39; k++) {
-
- register longword L_temp;
-
- L_temp = SASR_W( dp[k - Nc], 3 );
- L_power += L_temp * L_temp;
- }
- L_power <<= 1; /* from L_MULT */
-
- /* Normalization of L_max and L_power
- */
-
- if (L_max <= 0) {
- *bc_out = 0;
- return;
- }
- if (L_max >= L_power) {
- *bc_out = 3;
- return;
- }
-
- temp = gsm_norm( L_power );
-
- R = SASR( L_max << temp, 16 );
- S = SASR( L_power << temp, 16 );
-
- /* Coding of the LTP gain
- */
-
- /* Table 4.3a must be used to obtain the level DLB[i] for the
- * quantization of the LTP gain b to get the coded version bc.
- */
- for (bc = 0; bc <= 2; bc++) if (R <= gsm_mult(S, gsm_DLB[bc])) break;
- *bc_out = bc;
-}
-
-#endif /* LTP_CUT */
-
-static void Calculation_of_the_LTP_parameters (
- register word * din, /* [0..39] IN */
- register word * dp, /* [-120..-1] IN */
- word * bc_out, /* OUT */
- word * Nc_out /* OUT */
-)
-{
- register int k, lambda;
- word Nc, bc;
-
- float wt_float[40];
- float dp_float_base[120], * dp_float = dp_float_base + 120;
-
- longword L_max, L_power;
- word R, S, dmax, scal;
- register word temp;
-
- /* Search of the optimum scaling of d[0..39].
- */
- dmax = 0;
-
- for (k = 0; k <= 39; k++) {
- temp = din [k] ;
- temp = GSM_ABS (temp) ;
- if (temp > dmax) dmax = temp;
- }
-
- temp = 0;
- if (dmax == 0) scal = 0;
- else {
- assert(dmax > 0);
- temp = gsm_norm( (longword)dmax << 16 );
- }
-
- if (temp > 6) scal = 0;
- else scal = 6 - temp;
-
- assert(scal >= 0);
-
- /* Initialization of a working array wt
- */
-
- for (k = 0; k < 40; k++) wt_float[k] = SASR_W (din [k], scal) ;
- for (k = -120; k < 0; k++) dp_float[k] = dp[k];
-
- /* Search for the maximum cross-correlation and coding of the LTP lag
- */
- L_max = 0;
- Nc = 40; /* index for the maximum cross-correlation */
-
- for (lambda = 40; lambda <= 120; lambda += 9) {
-
- /* Calculate L_result for l = lambda .. lambda + 9.
- */
- register float *lp = dp_float - lambda;
-
- register float W;
- register float a = lp[-8], b = lp[-7], c = lp[-6],
- d = lp[-5], e = lp[-4], f = lp[-3],
- g = lp[-2], h = lp[-1];
- register float E;
- register float S0 = 0, S1 = 0, S2 = 0, S3 = 0, S4 = 0,
- S5 = 0, S6 = 0, S7 = 0, S8 = 0;
-
-# undef STEP
-# define STEP(K, a, b, c, d, e, f, g, h) \
- W = wt_float[K]; \
- E = W * a; S8 += E; \
- E = W * b; S7 += E; \
- E = W * c; S6 += E; \
- E = W * d; S5 += E; \
- E = W * e; S4 += E; \
- E = W * f; S3 += E; \
- E = W * g; S2 += E; \
- E = W * h; S1 += E; \
- a = lp[K]; \
- E = W * a; S0 += E
-
-# define STEP_A(K) STEP(K, a, b, c, d, e, f, g, h)
-# define STEP_B(K) STEP(K, b, c, d, e, f, g, h, a)
-# define STEP_C(K) STEP(K, c, d, e, f, g, h, a, b)
-# define STEP_D(K) STEP(K, d, e, f, g, h, a, b, c)
-# define STEP_E(K) STEP(K, e, f, g, h, a, b, c, d)
-# define STEP_F(K) STEP(K, f, g, h, a, b, c, d, e)
-# define STEP_G(K) STEP(K, g, h, a, b, c, d, e, f)
-# define STEP_H(K) STEP(K, h, a, b, c, d, e, f, g)
-
- STEP_A( 0); STEP_B( 1); STEP_C( 2); STEP_D( 3);
- STEP_E( 4); STEP_F( 5); STEP_G( 6); STEP_H( 7);
-
- STEP_A( 8); STEP_B( 9); STEP_C(10); STEP_D(11);
- STEP_E(12); STEP_F(13); STEP_G(14); STEP_H(15);
-
- STEP_A(16); STEP_B(17); STEP_C(18); STEP_D(19);
- STEP_E(20); STEP_F(21); STEP_G(22); STEP_H(23);
-
- STEP_A(24); STEP_B(25); STEP_C(26); STEP_D(27);
- STEP_E(28); STEP_F(29); STEP_G(30); STEP_H(31);
-
- STEP_A(32); STEP_B(33); STEP_C(34); STEP_D(35);
- STEP_E(36); STEP_F(37); STEP_G(38); STEP_H(39);
-
- if (S0 > L_max) { L_max = S0; Nc = lambda; }
- if (S1 > L_max) { L_max = S1; Nc = lambda + 1; }
- if (S2 > L_max) { L_max = S2; Nc = lambda + 2; }
- if (S3 > L_max) { L_max = S3; Nc = lambda + 3; }
- if (S4 > L_max) { L_max = S4; Nc = lambda + 4; }
- if (S5 > L_max) { L_max = S5; Nc = lambda + 5; }
- if (S6 > L_max) { L_max = S6; Nc = lambda + 6; }
- if (S7 > L_max) { L_max = S7; Nc = lambda + 7; }
- if (S8 > L_max) { L_max = S8; Nc = lambda + 8; }
- }
- *Nc_out = Nc;
-
- L_max <<= 1;
-
- /* Rescaling of L_max
- */
- assert(scal <= 100 && scal >= -100);
- L_max = L_max >> (6 - scal); /* sub(6, scal) */
-
- assert( Nc <= 120 && Nc >= 40);
-
- /* Compute the power of the reconstructed short term residual
- * signal dp[..]
- */
- L_power = 0;
- for (k = 0; k <= 39; k++) {
-
- register longword L_temp;
-
- L_temp = SASR_W( dp[k - Nc], 3 );
- L_power += L_temp * L_temp;
- }
- L_power <<= 1; /* from L_MULT */
-
- /* Normalization of L_max and L_power
- */
-
- if (L_max <= 0) {
- *bc_out = 0;
- return;
- }
- if (L_max >= L_power) {
- *bc_out = 3;
- return;
- }
-
- temp = gsm_norm( L_power );
-
- R = SASR_L ( L_max << temp, 16 );
- S = SASR_L ( L_power << temp, 16 );
-
- /* Coding of the LTP gain
- */
-
- /* Table 4.3a must be used to obtain the level DLB[i] for the
- * quantization of the LTP gain b to get the coded version bc.
- */
- for (bc = 0; bc <= 2; bc++) if (R <= gsm_mult(S, gsm_DLB[bc])) break;
- *bc_out = bc;
-}
-
-#ifdef FAST
-#ifdef LTP_CUT
-
-static void Cut_Fast_Calculation_of_the_LTP_parameters (
- struct gsm_state * st, /* IN */
- register word * d, /* [0..39] IN */
- register word * dp, /* [-120..-1] IN */
- word * bc_out, /* OUT */
- word * Nc_out /* OUT */
-)
-{
- register int k, lambda;
- register float wt_float;
- word Nc, bc;
- word wt_max, best_k, ltp_cut;
-
- float dp_float_base[120], * dp_float = dp_float_base + 120;
-
- register float L_result, L_max, L_power;
-
- wt_max = 0;
-
- for (k = 0; k < 40; ++k) {
- if ( d[k] > wt_max) wt_max = d[best_k = k];
- else if (-d[k] > wt_max) wt_max = -d[best_k = k];
- }
-
- assert(wt_max >= 0);
- wt_float = (float)wt_max;
-
- for (k = -120; k < 0; ++k) dp_float[k] = (float)dp[k];
-
- /* Search for the maximum cross-correlation and coding of the LTP lag
- */
- L_max = 0;
- Nc = 40; /* index for the maximum cross-correlation */
-
- for (lambda = 40; lambda <= 120; lambda++) {
- L_result = wt_float * dp_float[best_k - lambda];
- if (L_result > L_max) {
- Nc = lambda;
- L_max = L_result;
- }
- }
-
- *Nc_out = Nc;
- if (L_max <= 0.) {
- *bc_out = 0;
- return;
- }
-
- /* Compute the power of the reconstructed short term residual
- * signal dp[..]
- */
- dp_float -= Nc;
- L_power = 0;
- for (k = 0; k < 40; ++k) {
- register float f = dp_float[k];
- L_power += f * f;
- }
-
- if (L_max >= L_power) {
- *bc_out = 3;
- return;
- }
-
- /* Coding of the LTP gain
- * Table 4.3a must be used to obtain the level DLB[i] for the
- * quantization of the LTP gain b to get the coded version bc.
- */
- lambda = L_max / L_power * 32768.;
- for (bc = 0; bc <= 2; ++bc) if (lambda <= gsm_DLB[bc]) break;
- *bc_out = bc;
-}
-
-#endif /* LTP_CUT */
-
-static void Fast_Calculation_of_the_LTP_parameters (
- register word * din, /* [0..39] IN */
- register word * dp, /* [-120..-1] IN */
- word * bc_out, /* OUT */
- word * Nc_out /* OUT */
-)
-{
- register int k, lambda;
- word Nc, bc;
-
- float wt_float[40];
- float dp_float_base[120], * dp_float = dp_float_base + 120;
-
- register float L_max, L_power;
-
- for (k = 0; k < 40; ++k) wt_float[k] = (float) din [k] ;
- for (k = -120; k < 0; ++k) dp_float[k] = (float) dp [k] ;
-
- /* Search for the maximum cross-correlation and coding of the LTP lag
- */
- L_max = 0;
- Nc = 40; /* index for the maximum cross-correlation */
-
- for (lambda = 40; lambda <= 120; lambda += 9) {
-
- /* Calculate L_result for l = lambda .. lambda + 9.
- */
- register float *lp = dp_float - lambda;
-
- register float W;
- register float a = lp[-8], b = lp[-7], c = lp[-6],
- d = lp[-5], e = lp[-4], f = lp[-3],
- g = lp[-2], h = lp[-1];
- register float E;
- register float S0 = 0, S1 = 0, S2 = 0, S3 = 0, S4 = 0,
- S5 = 0, S6 = 0, S7 = 0, S8 = 0;
-
-# undef STEP
-# define STEP(K, a, b, c, d, e, f, g, h) \
- W = wt_float[K]; \
- E = W * a; S8 += E; \
- E = W * b; S7 += E; \
- E = W * c; S6 += E; \
- E = W * d; S5 += E; \
- E = W * e; S4 += E; \
- E = W * f; S3 += E; \
- E = W * g; S2 += E; \
- E = W * h; S1 += E; \
- a = lp[K]; \
- E = W * a; S0 += E
-
-# define STEP_A(K) STEP(K, a, b, c, d, e, f, g, h)
-# define STEP_B(K) STEP(K, b, c, d, e, f, g, h, a)
-# define STEP_C(K) STEP(K, c, d, e, f, g, h, a, b)
-# define STEP_D(K) STEP(K, d, e, f, g, h, a, b, c)
-# define STEP_E(K) STEP(K, e, f, g, h, a, b, c, d)
-# define STEP_F(K) STEP(K, f, g, h, a, b, c, d, e)
-# define STEP_G(K) STEP(K, g, h, a, b, c, d, e, f)
-# define STEP_H(K) STEP(K, h, a, b, c, d, e, f, g)
-
- STEP_A( 0); STEP_B( 1); STEP_C( 2); STEP_D( 3);
- STEP_E( 4); STEP_F( 5); STEP_G( 6); STEP_H( 7);
-
- STEP_A( 8); STEP_B( 9); STEP_C(10); STEP_D(11);
- STEP_E(12); STEP_F(13); STEP_G(14); STEP_H(15);
-
- STEP_A(16); STEP_B(17); STEP_C(18); STEP_D(19);
- STEP_E(20); STEP_F(21); STEP_G(22); STEP_H(23);
-
- STEP_A(24); STEP_B(25); STEP_C(26); STEP_D(27);
- STEP_E(28); STEP_F(29); STEP_G(30); STEP_H(31);
-
- STEP_A(32); STEP_B(33); STEP_C(34); STEP_D(35);
- STEP_E(36); STEP_F(37); STEP_G(38); STEP_H(39);
-
- if (S0 > L_max) { L_max = S0; Nc = lambda; }
- if (S1 > L_max) { L_max = S1; Nc = lambda + 1; }
- if (S2 > L_max) { L_max = S2; Nc = lambda + 2; }
- if (S3 > L_max) { L_max = S3; Nc = lambda + 3; }
- if (S4 > L_max) { L_max = S4; Nc = lambda + 4; }
- if (S5 > L_max) { L_max = S5; Nc = lambda + 5; }
- if (S6 > L_max) { L_max = S6; Nc = lambda + 6; }
- if (S7 > L_max) { L_max = S7; Nc = lambda + 7; }
- if (S8 > L_max) { L_max = S8; Nc = lambda + 8; }
- }
- *Nc_out = Nc;
-
- if (L_max <= 0.) {
- *bc_out = 0;
- return;
- }
-
- /* Compute the power of the reconstructed short term residual
- * signal dp[..]
- */
- dp_float -= Nc;
- L_power = 0;
- for (k = 0; k < 40; ++k) {
- register float f = dp_float[k];
- L_power += f * f;
- }
-
- if (L_max >= L_power) {
- *bc_out = 3;
- return;
- }
-
- /* Coding of the LTP gain
- * Table 4.3a must be used to obtain the level DLB[i] for the
- * quantization of the LTP gain b to get the coded version bc.
- */
- lambda = L_max / L_power * 32768.;
- for (bc = 0; bc <= 2; ++bc) if (lambda <= gsm_DLB[bc]) break;
- *bc_out = bc;
-}
-
-#endif /* FAST */
-#endif /* USE_FLOAT_MUL */
-
-
-/* 4.2.12 */
-
-static void Long_term_analysis_filtering (
- word bc, /* IN */
- word Nc, /* IN */
- register word * dp, /* previous d [-120..-1] IN */
- register word * d, /* d [0..39] IN */
- register word * dpp, /* estimate [0..39] OUT */
- register word * e /* long term res. signal [0..39] OUT */
-)
-/*
- * In this part, we have to decode the bc parameter to compute
- * the samples of the estimate dpp[0..39]. The decoding of bc needs the
- * use of table 4.3b. The long term residual signal e[0..39]
- * is then calculated to be fed to the RPE encoding section.
- */
-{
- register int k;
-
-# undef STEP
-# define STEP(BP) \
- for (k = 0; k <= 39; k++) { \
- dpp[k] = GSM_MULT_R( BP, dp[k - Nc]); \
- e[k] = GSM_SUB( d[k], dpp[k] ); \
- }
-
- switch (bc) {
- case 0: STEP( 3277 ); break;
- case 1: STEP( 11469 ); break;
- case 2: STEP( 21299 ); break;
- case 3: STEP( 32767 ); break;
- }
-}
-
-void Gsm_Long_Term_Predictor ( /* 4x for 160 samples */
-
- struct gsm_state * S,
-
- word * d, /* [0..39] residual signal IN */
- word * dp, /* [-120..-1] d' IN */
-
- word * e, /* [0..39] OUT */
- word * dpp, /* [0..39] OUT */
- word * Nc, /* correlation lag OUT */
- word * bc /* gain factor OUT */
-)
-{
- assert( d ); assert( dp ); assert( e );
- assert( dpp); assert( Nc ); assert( bc );
-
-#if defined(FAST) && defined(USE_FLOAT_MUL)
- if (S->fast)
-#if defined (LTP_CUT)
- if (S->ltp_cut)
- Cut_Fast_Calculation_of_the_LTP_parameters(S,
- d, dp, bc, Nc);
- else
-#endif /* LTP_CUT */
- Fast_Calculation_of_the_LTP_parameters(d, dp, bc, Nc );
- else
-#endif /* FAST & USE_FLOAT_MUL */
-#ifdef LTP_CUT
- if (S->ltp_cut)
- Cut_Calculation_of_the_LTP_parameters(S, d, dp, bc, Nc);
- else
-#endif
- Calculation_of_the_LTP_parameters(d, dp, bc, Nc);
-
- Long_term_analysis_filtering( *bc, *Nc, dp, d, dpp, e );
-}
-
-/* 4.3.2 */
-void Gsm_Long_Term_Synthesis_Filtering (
- struct gsm_state * S,
-
- word Ncr,
- word bcr,
- register word * erp, /* [0..39] IN */
- register word * drp /* [-120..-1] IN, [-120..40] OUT */
-)
-/*
- * This procedure uses the bcr and Ncr parameter to realize the
- * long term synthesis filtering. The decoding of bcr needs
- * table 4.3b.
- */
-{
- register int k;
- word brp, drpp, Nr;
-
- /* Check the limits of Nr.
- */
- Nr = Ncr < 40 || Ncr > 120 ? S->nrp : Ncr;
- S->nrp = Nr;
- assert(Nr >= 40 && Nr <= 120);
-
- /* Decoding of the LTP gain bcr
- */
- brp = gsm_QLB[ bcr ];
-
- /* Computation of the reconstructed short term residual
- * signal drp[0..39]
- */
- assert(brp != MIN_WORD);
-
- for (k = 0; k <= 39; k++) {
- drpp = GSM_MULT_R( brp, drp[ k - Nr ] );
- drp[k] = GSM_ADD( erp[k], drpp );
- }
-
- /*
- * Update of the reconstructed short term residual signal
- * drp[ -1..-120 ]
- */
-
- for (k = 0; k <= 119; k++) drp[ -120 + k ] = drp[ -80 + k ];
-}
-/*
-** Do not edit or modify anything in this comment block.
-** The arch-tag line is a file identity tag for the GNU Arch
-** revision control system.
-**
-** arch-tag: b369b90d-0284-42a0-87b0-99a25bbd93ac
-*/
-
diff --git a/libs/libsndfile/src/GSM610/lpc.c b/libs/libsndfile/src/GSM610/lpc.c
deleted file mode 100644
index 0a879f354a..0000000000
--- a/libs/libsndfile/src/GSM610/lpc.c
+++ /dev/null
@@ -1,341 +0,0 @@
-/*
- * Copyright 1992 by Jutta Degener and Carsten Bormann, Technische
- * Universitaet Berlin. See the accompanying file "COPYRIGHT" for
- * details. THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE.
- */
-
-#include <stdio.h>
-#include <assert.h>
-
-#include "gsm610_priv.h"
-
-#include "gsm.h"
-
-/*
- * 4.2.4 .. 4.2.7 LPC ANALYSIS SECTION
- */
-
-/* 4.2.4 */
-
-
-static void Autocorrelation (
- word * s, /* [0..159] IN/OUT */
- longword * L_ACF) /* [0..8] OUT */
-/*
- * The goal is to compute the array L_ACF[k]. The signal s[i] must
- * be scaled in order to avoid an overflow situation.
- */
-{
- register int k, i;
-
- word temp, smax, scalauto;
-
-#ifdef USE_FLOAT_MUL
- float float_s[160];
-#endif
-
- /* Dynamic scaling of the array s[0..159]
- */
-
- /* Search for the maximum.
- */
- smax = 0;
- for (k = 0; k <= 159; k++) {
- temp = GSM_ABS( s[k] );
- if (temp > smax) smax = temp;
- }
-
- /* Computation of the scaling factor.
- */
- if (smax == 0) scalauto = 0;
- else {
- assert(smax > 0);
- scalauto = 4 - gsm_norm( (longword)smax << 16 );/* sub(4,..) */
- }
-
- /* Scaling of the array s[0...159]
- */
-
- if (scalauto > 0) {
-
-# ifdef USE_FLOAT_MUL
-# define SCALE(n) \
- case n: for (k = 0; k <= 159; k++) \
- float_s[k] = (float) \
- (s[k] = GSM_MULT_R(s[k], 16384 >> (n-1)));\
- break;
-# else
-# define SCALE(n) \
- case n: for (k = 0; k <= 159; k++) \
- s[k] = GSM_MULT_R( s[k], 16384 >> (n-1) );\
- break;
-# endif /* USE_FLOAT_MUL */
-
- switch (scalauto) {
- SCALE(1)
- SCALE(2)
- SCALE(3)
- SCALE(4)
- }
-# undef SCALE
- }
-# ifdef USE_FLOAT_MUL
- else for (k = 0; k <= 159; k++) float_s[k] = (float) s[k];
-# endif
-
- /* Compute the L_ACF[..].
- */
- {
-# ifdef USE_FLOAT_MUL
- register float * sp = float_s;
- register float sl = *sp;
-
-# define STEP(k) L_ACF[k] += (longword)(sl * sp[ -(k) ]);
-# else
- word * sp = s;
- word sl = *sp;
-
-# define STEP(k) L_ACF[k] += ((longword)sl * sp[ -(k) ]);
-# endif
-
-# define NEXTI sl = *++sp
-
-
- for (k = 9; k--; L_ACF[k] = 0) ;
-
- STEP (0);
- NEXTI;
- STEP(0); STEP(1);
- NEXTI;
- STEP(0); STEP(1); STEP(2);
- NEXTI;
- STEP(0); STEP(1); STEP(2); STEP(3);
- NEXTI;
- STEP(0); STEP(1); STEP(2); STEP(3); STEP(4);
- NEXTI;
- STEP(0); STEP(1); STEP(2); STEP(3); STEP(4); STEP(5);
- NEXTI;
- STEP(0); STEP(1); STEP(2); STEP(3); STEP(4); STEP(5); STEP(6);
- NEXTI;
- STEP(0); STEP(1); STEP(2); STEP(3); STEP(4); STEP(5); STEP(6); STEP(7);
-
- for (i = 8; i <= 159; i++) {
-
- NEXTI;
-
- STEP(0);
- STEP(1); STEP(2); STEP(3); STEP(4);
- STEP(5); STEP(6); STEP(7); STEP(8);
- }
-
- for (k = 9; k--; L_ACF[k] <<= 1) ;
-
- }
- /* Rescaling of the array s[0..159]
- */
- if (scalauto > 0) {
- assert(scalauto <= 4);
- for (k = 160; k--; *s++ <<= scalauto) ;
- }
-}
-
-#if defined(USE_FLOAT_MUL) && defined(FAST)
-
-static void Fast_Autocorrelation (
- word * s, /* [0..159] IN/OUT */
- longword * L_ACF) /* [0..8] OUT */
-{
- register int k, i;
- float f_L_ACF[9];
- float scale;
-
- float s_f[160];
- register float *sf = s_f;
-
- for (i = 0; i < 160; ++i) sf[i] = s[i];
- for (k = 0; k <= 8; k++) {
- register float L_temp2 = 0;
- register float *sfl = sf - k;
- for (i = k; i < 160; ++i) L_temp2 += sf[i] * sfl[i];
- f_L_ACF[k] = L_temp2;
- }
- scale = MAX_LONGWORD / f_L_ACF[0];
-
- for (k = 0; k <= 8; k++) {
- L_ACF[k] = f_L_ACF[k] * scale;
- }
-}
-#endif /* defined (USE_FLOAT_MUL) && defined (FAST) */
-
-/* 4.2.5 */
-
-static void Reflection_coefficients (
- longword * L_ACF, /* 0...8 IN */
- register word * r /* 0...7 OUT */
-)
-{
- register int i, m, n;
- register word temp;
- word ACF[9]; /* 0..8 */
- word P[ 9]; /* 0..8 */
- word K[ 9]; /* 2..8 */
-
- /* Schur recursion with 16 bits arithmetic.
- */
-
- if (L_ACF[0] == 0) {
- for (i = 8; i--; *r++ = 0) ;
- return;
- }
-
- assert( L_ACF[0] != 0 );
- temp = gsm_norm( L_ACF[0] );
-
- assert(temp >= 0 && temp < 32);
-
- /* ? overflow ? */
- for (i = 0; i <= 8; i++) ACF[i] = SASR_L( L_ACF[i] << temp, 16 );
-
- /* Initialize array P[..] and K[..] for the recursion.
- */
-
- for (i = 1; i <= 7; i++) K[ i ] = ACF[ i ];
- for (i = 0; i <= 8; i++) P[ i ] = ACF[ i ];
-
- /* Compute reflection coefficients
- */
- for (n = 1; n <= 8; n++, r++) {
-
- temp = P[1];
- temp = GSM_ABS(temp);
- if (P[0] < temp) {
- for (i = n; i <= 8; i++) *r++ = 0;
- return;
- }
-
- *r = gsm_div( temp, P[0] );
-
- assert(*r >= 0);
- if (P[1] > 0) *r = -*r; /* r[n] = sub(0, r[n]) */
- assert (*r != MIN_WORD);
- if (n == 8) return;
-
- /* Schur recursion
- */
- temp = GSM_MULT_R( P[1], *r );
- P[0] = GSM_ADD( P[0], temp );
-
- for (m = 1; m <= 8 - n; m++) {
- temp = GSM_MULT_R( K[ m ], *r );
- P[m] = GSM_ADD( P[ m+1 ], temp );
-
- temp = GSM_MULT_R( P[ m+1 ], *r );
- K[m] = GSM_ADD( K[ m ], temp );
- }
- }
-}
-
-/* 4.2.6 */
-
-static void Transformation_to_Log_Area_Ratios (
- register word * r /* 0..7 IN/OUT */
-)
-/*
- * The following scaling for r[..] and LAR[..] has been used:
- *
- * r[..] = integer( real_r[..]*32768. ); -1 <= real_r < 1.
- * LAR[..] = integer( real_LAR[..] * 16384 );
- * with -1.625 <= real_LAR <= 1.625
- */
-{
- register word temp;
- register int i;
-
-
- /* Computation of the LAR[0..7] from the r[0..7]
- */
- for (i = 1; i <= 8; i++, r++) {
-
- temp = *r;
- temp = GSM_ABS(temp);
- assert(temp >= 0);
-
- if (temp < 22118) {
- temp >>= 1;
- } else if (temp < 31130) {
- assert( temp >= 11059 );
- temp -= 11059;
- } else {
- assert( temp >= 26112 );
- temp -= 26112;
- temp <<= 2;
- }
-
- *r = *r < 0 ? -temp : temp;
- assert( *r != MIN_WORD );
- }
-}
-
-/* 4.2.7 */
-
-static void Quantization_and_coding (
- register word * LAR /* [0..7] IN/OUT */
-)
-{
- register word temp;
-
- /* This procedure needs four tables; the following equations
- * give the optimum scaling for the constants:
- *
- * A[0..7] = integer( real_A[0..7] * 1024 )
- * B[0..7] = integer( real_B[0..7] * 512 )
- * MAC[0..7] = maximum of the LARc[0..7]
- * MIC[0..7] = minimum of the LARc[0..7]
- */
-
-# undef STEP
-# define STEP( A, B, MAC, MIC ) \
- temp = GSM_MULT( A, *LAR ); \
- temp = GSM_ADD( temp, B ); \
- temp = GSM_ADD( temp, 256 ); \
- temp = SASR_W( temp, 9 ); \
- *LAR = temp>MAC ? MAC - MIC : (temp<MIC ? 0 : temp - MIC); \
- LAR++;
-
- STEP( 20480, 0, 31, -32 );
- STEP( 20480, 0, 31, -32 );
- STEP( 20480, 2048, 15, -16 );
- STEP( 20480, -2560, 15, -16 );
-
- STEP( 13964, 94, 7, -8 );
- STEP( 15360, -1792, 7, -8 );
- STEP( 8534, -341, 3, -4 );
- STEP( 9036, -1144, 3, -4 );
-
-# undef STEP
-}
-
-void Gsm_LPC_Analysis (
- struct gsm_state *S,
- word * s, /* 0..159 signals IN/OUT */
- word * LARc) /* 0..7 LARc's OUT */
-{
- longword L_ACF[9];
-
-#if defined(USE_FLOAT_MUL) && defined(FAST)
- if (S->fast) Fast_Autocorrelation (s, L_ACF );
- else
-#endif
- Autocorrelation (s, L_ACF );
- Reflection_coefficients (L_ACF, LARc );
- Transformation_to_Log_Area_Ratios (LARc);
- Quantization_and_coding (LARc);
-}
-/*
-** Do not edit or modify anything in this comment block.
-** The arch-tag line is a file identity tag for the GNU Arch
-** revision control system.
-**
-** arch-tag: 63146664-a002-4e1e-8b7b-f0cc8a6a53da
-*/
-
diff --git a/libs/libsndfile/src/GSM610/preprocess.c b/libs/libsndfile/src/GSM610/preprocess.c
deleted file mode 100644
index d1b473d693..0000000000
--- a/libs/libsndfile/src/GSM610/preprocess.c
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
- * Copyright 1992 by Jutta Degener and Carsten Bormann, Technische
- * Universitaet Berlin. See the accompanying file "COPYRIGHT" for
- * details. THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE.
- */
-
-#include <stdio.h>
-#include <assert.h>
-
-#include "gsm610_priv.h"
-
-#include "gsm.h"
-
-/* 4.2.0 .. 4.2.3 PREPROCESSING SECTION
- *
- * After A-law to linear conversion (or directly from the
- * Ato D converter) the following scaling is assumed for
- * input to the RPE-LTP algorithm:
- *
- * in: 0.1.....................12
- * S.v.v.v.v.v.v.v.v.v.v.v.v.*.*.*
- *
- * Where S is the sign bit, v a valid bit, and * a "don't care" bit.
- * The original signal is called sop[..]
- *
- * out: 0.1................... 12
- * S.S.v.v.v.v.v.v.v.v.v.v.v.v.0.0
- */
-
-
-void Gsm_Preprocess (
- struct gsm_state * S,
- word * s,
- word * so ) /* [0..159] IN/OUT */
-{
-
- word z1 = S->z1;
- longword L_z2 = S->L_z2;
- word mp = S->mp;
-
- word s1;
- longword L_s2;
-
- longword L_temp;
-
- word msp, lsp;
- word SO;
-
- register int k = 160;
-
- while (k--) {
-
- /* 4.2.1 Downscaling of the input signal
- */
- SO = SASR_W( *s, 3 ) << 2;
- s++;
-
- assert (SO >= -0x4000); /* downscaled by */
- assert (SO <= 0x3FFC); /* previous routine. */
-
-
- /* 4.2.2 Offset compensation
- *
- * This part implements a high-pass filter and requires extended
- * arithmetic precision for the recursive part of this filter.
- * The input of this procedure is the array so[0...159] and the
- * output the array sof[ 0...159 ].
- */
- /* Compute the non-recursive part
- */
-
- s1 = SO - z1; /* s1 = gsm_sub( *so, z1 ); */
- z1 = SO;
-
- assert(s1 != MIN_WORD);
-
- /* Compute the recursive part
- */
- L_s2 = s1;
- L_s2 <<= 15;
-
- /* Execution of a 31 bv 16 bits multiplication
- */
-
- msp = SASR_L( L_z2, 15 );
- lsp = L_z2-((longword)msp<<15); /* gsm_L_sub(L_z2,(msp<<15)); */
-
- L_s2 += GSM_MULT_R( lsp, 32735 );
- L_temp = (longword)msp * 32735; /* GSM_L_MULT(msp,32735) >> 1;*/
- L_z2 = GSM_L_ADD( L_temp, L_s2 );
-
- /* Compute sof[k] with rounding
- */
- L_temp = GSM_L_ADD( L_z2, 16384 );
-
- /* 4.2.3 Preemphasis
- */
-
- msp = GSM_MULT_R( mp, -28180 );
- mp = SASR_L( L_temp, 15 );
- *so++ = GSM_ADD( mp, msp );
- }
-
- S->z1 = z1;
- S->L_z2 = L_z2;
- S->mp = mp;
-}
-/*
-** Do not edit or modify anything in this comment block.
-** The arch-tag line is a file identity tag for the GNU Arch
-** revision control system.
-**
-** arch-tag: b760b0d9-3a05-4da3-9dc9-441ffb905d87
-*/
-
diff --git a/libs/libsndfile/src/GSM610/rpe.c b/libs/libsndfile/src/GSM610/rpe.c
deleted file mode 100644
index 1d91f38be0..0000000000
--- a/libs/libsndfile/src/GSM610/rpe.c
+++ /dev/null
@@ -1,490 +0,0 @@
-/*
- * Copyright 1992 by Jutta Degener and Carsten Bormann, Technische
- * Universitaet Berlin. See the accompanying file "COPYRIGHT" for
- * details. THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE.
- */
-
-#include <stdio.h>
-#include <assert.h>
-
-#include "gsm610_priv.h"
-
-#include "gsm.h"
-
-/* 4.2.13 .. 4.2.17 RPE ENCODING SECTION
- */
-
-/* 4.2.13 */
-
-static void Weighting_filter (
- register word * e, /* signal [-5..0.39.44] IN */
- word * x /* signal [0..39] OUT */
-)
-/*
- * The coefficients of the weighting filter are stored in a table
- * (see table 4.4). The following scaling is used:
- *
- * H[0..10] = integer( real_H[ 0..10] * 8192 );
- */
-{
- /* word wt[ 50 ]; */
-
- register longword L_result;
- register int k /* , i */ ;
-
- /* Initialization of a temporary working array wt[0...49]
- */
-
- /* for (k = 0; k <= 4; k++) wt[k] = 0;
- * for (k = 5; k <= 44; k++) wt[k] = *e++;
- * for (k = 45; k <= 49; k++) wt[k] = 0;
- *
- * (e[-5..-1] and e[40..44] are allocated by the caller,
- * are initially zero and are not written anywhere.)
- */
- e -= 5;
-
- /* Compute the signal x[0..39]
- */
- for (k = 0; k <= 39; k++) {
-
- L_result = 8192 >> 1;
-
- /* for (i = 0; i <= 10; i++) {
- * L_temp = GSM_L_MULT( wt[k+i], gsm_H[i] );
- * L_result = GSM_L_ADD( L_result, L_temp );
- * }
- */
-
-#undef STEP
-#define STEP( i, H ) (e[ k + i ] * (longword)H)
-
- /* Every one of these multiplications is done twice --
- * but I don't see an elegant way to optimize this.
- * Do you?
- */
-
-#ifdef STUPID_COMPILER
- L_result += STEP( 0, -134 ) ;
- L_result += STEP( 1, -374 ) ;
- /* + STEP( 2, 0 ) */
- L_result += STEP( 3, 2054 ) ;
- L_result += STEP( 4, 5741 ) ;
- L_result += STEP( 5, 8192 ) ;
- L_result += STEP( 6, 5741 ) ;
- L_result += STEP( 7, 2054 ) ;
- /* + STEP( 8, 0 ) */
- L_result += STEP( 9, -374 ) ;
- L_result += STEP( 10, -134 ) ;
-#else
- L_result +=
- STEP( 0, -134 )
- + STEP( 1, -374 )
- /* + STEP( 2, 0 ) */
- + STEP( 3, 2054 )
- + STEP( 4, 5741 )
- + STEP( 5, 8192 )
- + STEP( 6, 5741 )
- + STEP( 7, 2054 )
- /* + STEP( 8, 0 ) */
- + STEP( 9, -374 )
- + STEP(10, -134 )
- ;
-#endif
-
- /* L_result = GSM_L_ADD( L_result, L_result ); (* scaling(x2) *)
- * L_result = GSM_L_ADD( L_result, L_result ); (* scaling(x4) *)
- *
- * x[k] = SASR( L_result, 16 );
- */
-
- /* 2 adds vs. >>16 => 14, minus one shift to compensate for
- * those we lost when replacing L_MULT by '*'.
- */
-
- L_result = SASR_L( L_result, 13 );
- x[k] = ( L_result < MIN_WORD ? MIN_WORD
- : (L_result > MAX_WORD ? MAX_WORD : L_result ));
- }
-}
-
-/* 4.2.14 */
-
-static void RPE_grid_selection (
- word * x, /* [0..39] IN */
- word * xM, /* [0..12] OUT */
- word * Mc_out /* OUT */
-)
-/*
- * The signal x[0..39] is used to select the RPE grid which is
- * represented by Mc.
- */
-{
- /* register word temp1; */
- register int /* m, */ i;
- register longword L_result, L_temp;
- longword EM; /* xxx should be L_EM? */
- word Mc;
-
- longword L_common_0_3;
-
- EM = 0;
- Mc = 0;
-
- /* for (m = 0; m <= 3; m++) {
- * L_result = 0;
- *
- *
- * for (i = 0; i <= 12; i++) {
- *
- * temp1 = SASR_W( x[m + 3*i], 2 );
- *
- * assert(temp1 != MIN_WORD);
- *
- * L_temp = GSM_L_MULT( temp1, temp1 );
- * L_result = GSM_L_ADD( L_temp, L_result );
- * }
- *
- * if (L_result > EM) {
- * Mc = m;
- * EM = L_result;
- * }
- * }
- */
-
-#undef STEP
-#define STEP( m, i ) L_temp = SASR_W( x[m + 3 * i], 2 ); \
- L_result += L_temp * L_temp;
-
- /* common part of 0 and 3 */
-
- L_result = 0;
- STEP( 0, 1 ); STEP( 0, 2 ); STEP( 0, 3 ); STEP( 0, 4 );
- STEP( 0, 5 ); STEP( 0, 6 ); STEP( 0, 7 ); STEP( 0, 8 );
- STEP( 0, 9 ); STEP( 0, 10); STEP( 0, 11); STEP( 0, 12);
- L_common_0_3 = L_result;
-
- /* i = 0 */
-
- STEP( 0, 0 );
- L_result <<= 1; /* implicit in L_MULT */
- EM = L_result;
-
- /* i = 1 */
-
- L_result = 0;
- STEP( 1, 0 );
- STEP( 1, 1 ); STEP( 1, 2 ); STEP( 1, 3 ); STEP( 1, 4 );
- STEP( 1, 5 ); STEP( 1, 6 ); STEP( 1, 7 ); STEP( 1, 8 );
- STEP( 1, 9 ); STEP( 1, 10); STEP( 1, 11); STEP( 1, 12);
- L_result <<= 1;
- if (L_result > EM) {
- Mc = 1;
- EM = L_result;
- }
-
- /* i = 2 */
-
- L_result = 0;
- STEP( 2, 0 );
- STEP( 2, 1 ); STEP( 2, 2 ); STEP( 2, 3 ); STEP( 2, 4 );
- STEP( 2, 5 ); STEP( 2, 6 ); STEP( 2, 7 ); STEP( 2, 8 );
- STEP( 2, 9 ); STEP( 2, 10); STEP( 2, 11); STEP( 2, 12);
- L_result <<= 1;
- if (L_result > EM) {
- Mc = 2;
- EM = L_result;
- }
-
- /* i = 3 */
-
- L_result = L_common_0_3;
- STEP( 3, 12 );
- L_result <<= 1;
- if (L_result > EM) {
- Mc = 3;
- EM = L_result;
- }
-
- /**/
-
- /* Down-sampling by a factor 3 to get the selected xM[0..12]
- * RPE sequence.
- */
- for (i = 0; i <= 12; i ++) xM[i] = x[Mc + 3*i];
- *Mc_out = Mc;
-}
-
-/* 4.12.15 */
-
-static void APCM_quantization_xmaxc_to_exp_mant (
- word xmaxc, /* IN */
- word * expon_out, /* OUT */
- word * mant_out ) /* OUT */
-{
- word expon, mant;
-
- /* Compute expononent and mantissa of the decoded version of xmaxc
- */
-
- expon = 0;
- if (xmaxc > 15) expon = SASR_W(xmaxc, 3) - 1;
- mant = xmaxc - (expon << 3);
-
- if (mant == 0) {
- expon = -4;
- mant = 7;
- }
- else {
- while (mant <= 7) {
- mant = mant << 1 | 1;
- expon--;
- }
- mant -= 8;
- }
-
- assert( expon >= -4 && expon <= 6 );
- assert( mant >= 0 && mant <= 7 );
-
- *expon_out = expon;
- *mant_out = mant;
-}
-
-static void APCM_quantization (
- word * xM, /* [0..12] IN */
- word * xMc, /* [0..12] OUT */
- word * mant_out, /* OUT */
- word * expon_out, /* OUT */
- word * xmaxc_out /* OUT */
-)
-{
- int i, itest;
-
- word xmax, xmaxc, temp, temp1, temp2;
- word expon, mant;
-
-
- /* Find the maximum absolute value xmax of xM[0..12].
- */
-
- xmax = 0;
- for (i = 0; i <= 12; i++) {
- temp = xM[i];
- temp = GSM_ABS(temp);
- if (temp > xmax) xmax = temp;
- }
-
- /* Qantizing and coding of xmax to get xmaxc.
- */
-
- expon = 0;
- temp = SASR_W( xmax, 9 );
- itest = 0;
-
- for (i = 0; i <= 5; i++) {
-
- itest |= (temp <= 0);
- temp = SASR_W( temp, 1 );
-
- assert(expon <= 5);
- if (itest == 0) expon++; /* expon = add (expon, 1) */
- }
-
- assert(expon <= 6 && expon >= 0);
- temp = expon + 5;
-
- assert(temp <= 11 && temp >= 0);
- xmaxc = gsm_add( SASR_W(xmax, temp), (word) (expon << 3) );
-
- /* Quantizing and coding of the xM[0..12] RPE sequence
- * to get the xMc[0..12]
- */
-
- APCM_quantization_xmaxc_to_exp_mant( xmaxc, &expon, &mant );
-
- /* This computation uses the fact that the decoded version of xmaxc
- * can be calculated by using the expononent and the mantissa part of
- * xmaxc (logarithmic table).
- * So, this method avoids any division and uses only a scaling
- * of the RPE samples by a function of the expononent. A direct
- * multiplication by the inverse of the mantissa (NRFAC[0..7]
- * found in table 4.5) gives the 3 bit coded version xMc[0..12]
- * of the RPE samples.
- */
-
-
- /* Direct computation of xMc[0..12] using table 4.5
- */
-
- assert( expon <= 4096 && expon >= -4096);
- assert( mant >= 0 && mant <= 7 );
-
- temp1 = 6 - expon; /* normalization by the expononent */
- temp2 = gsm_NRFAC[ mant ]; /* inverse mantissa */
-
- for (i = 0; i <= 12; i++) {
-
- assert(temp1 >= 0 && temp1 < 16);
-
- temp = xM[i] << temp1;
- temp = GSM_MULT( temp, temp2 );
- temp = SASR_W(temp, 12);
- xMc[i] = temp + 4; /* see note below */
- }
-
- /* NOTE: This equation is used to make all the xMc[i] positive.
- */
-
- *mant_out = mant;
- *expon_out = expon;
- *xmaxc_out = xmaxc;
-}
-
-/* 4.2.16 */
-
-static void APCM_inverse_quantization (
- register word * xMc, /* [0..12] IN */
- word mant,
- word expon,
- register word * xMp) /* [0..12] OUT */
-/*
- * This part is for decoding the RPE sequence of coded xMc[0..12]
- * samples to obtain the xMp[0..12] array. Table 4.6 is used to get
- * the mantissa of xmaxc (FAC[0..7]).
- */
-{
- int i;
- word temp, temp1, temp2, temp3;
-
- assert( mant >= 0 && mant <= 7 );
-
- temp1 = gsm_FAC[ mant ]; /* see 4.2-15 for mant */
- temp2 = gsm_sub( 6, expon ); /* see 4.2-15 for exp */
- temp3 = gsm_asl( 1, gsm_sub( temp2, 1 ));
-
- for (i = 13; i--;) {
-
- assert( *xMc <= 7 && *xMc >= 0 ); /* 3 bit unsigned */
-
- /* temp = gsm_sub( *xMc++ << 1, 7 ); */
- temp = (*xMc++ << 1) - 7; /* restore sign */
- assert( temp <= 7 && temp >= -7 ); /* 4 bit signed */
-
- temp <<= 12; /* 16 bit signed */
- temp = GSM_MULT_R( temp1, temp );
- temp = GSM_ADD( temp, temp3 );
- *xMp++ = gsm_asr( temp, temp2 );
- }
-}
-
-/* 4.2.17 */
-
-static void RPE_grid_positioning (
- word Mc, /* grid position IN */
- register word * xMp, /* [0..12] IN */
- register word * ep /* [0..39] OUT */
-)
-/*
- * This procedure computes the reconstructed long term residual signal
- * ep[0..39] for the LTP analysis filter. The inputs are the Mc
- * which is the grid position selection and the xMp[0..12] decoded
- * RPE samples which are upsampled by a factor of 3 by inserting zero
- * values.
- */
-{
- int i = 13;
-
- assert(0 <= Mc && Mc <= 3);
-
- switch (Mc) {
- case 3: *ep++ = 0;
- case 2: do {
- *ep++ = 0;
- case 1: *ep++ = 0;
- case 0: *ep++ = *xMp++;
- } while (--i);
- }
- while (++Mc < 4) *ep++ = 0;
-
- /*
-
- int i, k;
- for (k = 0; k <= 39; k++) ep[k] = 0;
- for (i = 0; i <= 12; i++) {
- ep[ Mc + (3*i) ] = xMp[i];
- }
- */
-}
-
-/* 4.2.18 */
-
-/* This procedure adds the reconstructed long term residual signal
- * ep[0..39] to the estimated signal dpp[0..39] from the long term
- * analysis filter to compute the reconstructed short term residual
- * signal dp[-40..-1]; also the reconstructed short term residual
- * array dp[-120..-41] is updated.
- */
-
-#if 0 /* Has been inlined in code.c */
-void Gsm_Update_of_reconstructed_short_time_residual_signal (
- word * dpp, /* [0...39] IN */
- word * ep, /* [0...39] IN */
- word * dp) /* [-120...-1] IN/OUT */
-{
- int k;
-
- for (k = 0; k <= 79; k++)
- dp[ -120 + k ] = dp[ -80 + k ];
-
- for (k = 0; k <= 39; k++)
- dp[ -40 + k ] = gsm_add( ep[k], dpp[k] );
-}
-#endif /* Has been inlined in code.c */
-
-void Gsm_RPE_Encoding (
- /*-struct gsm_state * S,-*/
-
- word * e, /* -5..-1][0..39][40..44 IN/OUT */
- word * xmaxc, /* OUT */
- word * Mc, /* OUT */
- word * xMc) /* [0..12] OUT */
-{
- word x[40];
- word xM[13], xMp[13];
- word mant, expon;
-
- Weighting_filter(e, x);
- RPE_grid_selection(x, xM, Mc);
-
- APCM_quantization( xM, xMc, &mant, &expon, xmaxc);
- APCM_inverse_quantization( xMc, mant, expon, xMp);
-
- RPE_grid_positioning( *Mc, xMp, e );
-
-}
-
-void Gsm_RPE_Decoding (
- /*-struct gsm_state * S,-*/
-
- word xmaxcr,
- word Mcr,
- word * xMcr, /* [0..12], 3 bits IN */
- word * erp /* [0..39] OUT */
-)
-{
- word expon, mant;
- word xMp[ 13 ];
-
- APCM_quantization_xmaxc_to_exp_mant( xmaxcr, &expon, &mant );
- APCM_inverse_quantization( xMcr, mant, expon, xMp );
- RPE_grid_positioning( Mcr, xMp, erp );
-
-}
-/*
-** Do not edit or modify anything in this comment block.
-** The arch-tag line is a file identity tag for the GNU Arch
-** revision control system.
-**
-** arch-tag: 82005b9e-1560-4e94-9ddb-00cb14867295
-*/
-
diff --git a/libs/libsndfile/src/GSM610/short_term.c b/libs/libsndfile/src/GSM610/short_term.c
deleted file mode 100644
index 0174b05232..0000000000
--- a/libs/libsndfile/src/GSM610/short_term.c
+++ /dev/null
@@ -1,427 +0,0 @@
-/*
- * Copyright 1992 by Jutta Degener and Carsten Bormann, Technische
- * Universitaet Berlin. See the accompanying file "COPYRIGHT" for
- * details. THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE.
- */
-
-#include <stdio.h>
-#include <assert.h>
-
-#include "gsm610_priv.h"
-
-#include "gsm.h"
-
-/*
- * SHORT TERM ANALYSIS FILTERING SECTION
- */
-
-/* 4.2.8 */
-
-static void Decoding_of_the_coded_Log_Area_Ratios (
- word * LARc, /* coded log area ratio [0..7] IN */
- word * LARpp) /* out: decoded .. */
-{
- register word temp1 /* , temp2 */;
-
- /* This procedure requires for efficient implementation
- * two tables.
- *
- * INVA[1..8] = integer( (32768 * 8) / real_A[1..8])
- * MIC[1..8] = minimum value of the LARc[1..8]
- */
-
- /* Compute the LARpp[1..8]
- */
-
- /* for (i = 1; i <= 8; i++, B++, MIC++, INVA++, LARc++, LARpp++) {
- *
- * temp1 = GSM_ADD( *LARc, *MIC ) << 10;
- * temp2 = *B << 1;
- * temp1 = GSM_SUB( temp1, temp2 );
- *
- * assert(*INVA != MIN_WORD);
- *
- * temp1 = GSM_MULT_R( *INVA, temp1 );
- * *LARpp = GSM_ADD( temp1, temp1 );
- * }
- */
-
-#undef STEP
-#define STEP( B, MIC, INVA ) \
- temp1 = GSM_ADD( *LARc++, MIC ) << 10; \
- temp1 = GSM_SUB( temp1, B << 1 ); \
- temp1 = GSM_MULT_R( INVA, temp1 ); \
- *LARpp++ = GSM_ADD( temp1, temp1 );
-
- STEP( 0, -32, 13107 );
- STEP( 0, -32, 13107 );
- STEP( 2048, -16, 13107 );
- STEP( -2560, -16, 13107 );
-
- STEP( 94, -8, 19223 );
- STEP( -1792, -8, 17476 );
- STEP( -341, -4, 31454 );
- STEP( -1144, -4, 29708 );
-
- /* NOTE: the addition of *MIC is used to restore
- * the sign of *LARc.
- */
-}
-
-/* 4.2.9 */
-/* Computation of the quantized reflection coefficients
- */
-
-/* 4.2.9.1 Interpolation of the LARpp[1..8] to get the LARp[1..8]
- */
-
-/*
- * Within each frame of 160 analyzed speech samples the short term
- * analysis and synthesis filters operate with four different sets of
- * coefficients, derived from the previous set of decoded LARs(LARpp(j-1))
- * and the actual set of decoded LARs (LARpp(j))
- *
- * (Initial value: LARpp(j-1)[1..8] = 0.)
- */
-
-static void Coefficients_0_12 (
- register word * LARpp_j_1,
- register word * LARpp_j,
- register word * LARp)
-{
- register int i;
-
- for (i = 1; i <= 8; i++, LARp++, LARpp_j_1++, LARpp_j++) {
- *LARp = GSM_ADD( SASR_W( *LARpp_j_1, 2 ), SASR_W( *LARpp_j, 2 ));
- *LARp = GSM_ADD( *LARp, SASR_W( *LARpp_j_1, 1));
- }
-}
-
-static void Coefficients_13_26 (
- register word * LARpp_j_1,
- register word * LARpp_j,
- register word * LARp)
-{
- register int i;
- for (i = 1; i <= 8; i++, LARpp_j_1++, LARpp_j++, LARp++) {
- *LARp = GSM_ADD( SASR_W( *LARpp_j_1, 1), SASR_W( *LARpp_j, 1 ));
- }
-}
-
-static void Coefficients_27_39 (
- register word * LARpp_j_1,
- register word * LARpp_j,
- register word * LARp)
-{
- register int i;
-
- for (i = 1; i <= 8; i++, LARpp_j_1++, LARpp_j++, LARp++) {
- *LARp = GSM_ADD( SASR_W( *LARpp_j_1, 2 ), SASR_W( *LARpp_j, 2 ));
- *LARp = GSM_ADD( *LARp, SASR_W( *LARpp_j, 1 ));
- }
-}
-
-
-static void Coefficients_40_159 (
- register word * LARpp_j,
- register word * LARp)
-{
- register int i;
-
- for (i = 1; i <= 8; i++, LARp++, LARpp_j++)
- *LARp = *LARpp_j;
-}
-
-/* 4.2.9.2 */
-
-static void LARp_to_rp (
- register word * LARp) /* [0..7] IN/OUT */
-/*
- * The input of this procedure is the interpolated LARp[0..7] array.
- * The reflection coefficients, rp[i], are used in the analysis
- * filter and in the synthesis filter.
- */
-{
- register int i;
- register word temp;
-
- for (i = 1; i <= 8; i++, LARp++) {
-
- /* temp = GSM_ABS( *LARp );
- *
- * if (temp < 11059) temp <<= 1;
- * else if (temp < 20070) temp += 11059;
- * else temp = GSM_ADD( temp >> 2, 26112 );
- *
- * *LARp = *LARp < 0 ? -temp : temp;
- */
-
- if (*LARp < 0) {
- temp = *LARp == MIN_WORD ? MAX_WORD : -(*LARp);
- *LARp = - ((temp < 11059) ? temp << 1
- : ((temp < 20070) ? temp + 11059
- : GSM_ADD( (word) (temp >> 2), (word) 26112 )));
- } else {
- temp = *LARp;
- *LARp = (temp < 11059) ? temp << 1
- : ((temp < 20070) ? temp + 11059
- : GSM_ADD( (word) (temp >> 2), (word) 26112 ));
- }
- }
-}
-
-
-/* 4.2.10 */
-static void Short_term_analysis_filtering (
- struct gsm_state * S,
- register word * rp, /* [0..7] IN */
- register int k_n, /* k_end - k_start */
- register word * s /* [0..n-1] IN/OUT */
-)
-/*
- * This procedure computes the short term residual signal d[..] to be fed
- * to the RPE-LTP loop from the s[..] signal and from the local rp[..]
- * array (quantized reflection coefficients). As the call of this
- * procedure can be done in many ways (see the interpolation of the LAR
- * coefficient), it is assumed that the computation begins with index
- * k_start (for arrays d[..] and s[..]) and stops with index k_end
- * (k_start and k_end are defined in 4.2.9.1). This procedure also
- * needs to keep the array u[0..7] in memory for each call.
- */
-{
- register word * u = S->u;
- register int i;
- register word di, zzz, ui, sav, rpi;
-
- for (; k_n--; s++) {
-
- di = sav = *s;
-
- for (i = 0; i < 8; i++) { /* YYY */
-
- ui = u[i];
- rpi = rp[i];
- u[i] = sav;
-
- zzz = GSM_MULT_R(rpi, di);
- sav = GSM_ADD( ui, zzz);
-
- zzz = GSM_MULT_R(rpi, ui);
- di = GSM_ADD( di, zzz );
- }
-
- *s = di;
- }
-}
-
-#if defined(USE_FLOAT_MUL) && defined(FAST)
-
-static void Fast_Short_term_analysis_filtering (
- struct gsm_state * S,
- register word * rp, /* [0..7] IN */
- register int k_n, /* k_end - k_start */
- register word * s /* [0..n-1] IN/OUT */
-)
-{
- register word * u = S->u;
- register int i;
-
- float uf[8],
- rpf[8];
-
- register float scalef = 3.0517578125e-5;
- register float sav, di, temp;
-
- for (i = 0; i < 8; ++i) {
- uf[i] = u[i];
- rpf[i] = rp[i] * scalef;
- }
- for (; k_n--; s++) {
- sav = di = *s;
- for (i = 0; i < 8; ++i) {
- register float rpfi = rpf[i];
- register float ufi = uf[i];
-
- uf[i] = sav;
- temp = rpfi * di + ufi;
- di += rpfi * ufi;
- sav = temp;
- }
- *s = di;
- }
- for (i = 0; i < 8; ++i) u[i] = uf[i];
-}
-#endif /* ! (defined (USE_FLOAT_MUL) && defined (FAST)) */
-
-static void Short_term_synthesis_filtering (
- struct gsm_state * S,
- register word * rrp, /* [0..7] IN */
- register int k, /* k_end - k_start */
- register word * wt, /* [0..k-1] IN */
- register word * sr /* [0..k-1] OUT */
-)
-{
- register word * v = S->v;
- register int i;
- register word sri, tmp1, tmp2;
-
- while (k--) {
- sri = *wt++;
- for (i = 8; i--;) {
-
- /* sri = GSM_SUB( sri, gsm_mult_r( rrp[i], v[i] ) );
- */
- tmp1 = rrp[i];
- tmp2 = v[i];
- tmp2 = ( tmp1 == MIN_WORD && tmp2 == MIN_WORD
- ? MAX_WORD
- : 0x0FFFF & (( (longword)tmp1 * (longword)tmp2
- + 16384) >> 15)) ;
-
- sri = GSM_SUB( sri, tmp2 );
-
- /* v[i+1] = GSM_ADD( v[i], gsm_mult_r( rrp[i], sri ) );
- */
- tmp1 = ( tmp1 == MIN_WORD && sri == MIN_WORD
- ? MAX_WORD
- : 0x0FFFF & (( (longword)tmp1 * (longword)sri
- + 16384) >> 15)) ;
-
- v[i+1] = GSM_ADD( v[i], tmp1);
- }
- *sr++ = v[0] = sri;
- }
-}
-
-
-#if defined(FAST) && defined(USE_FLOAT_MUL)
-
-static void Fast_Short_term_synthesis_filtering (
- struct gsm_state * S,
- register word * rrp, /* [0..7] IN */
- register int k, /* k_end - k_start */
- register word * wt, /* [0..k-1] IN */
- register word * sr /* [0..k-1] OUT */
-)
-{
- register word * v = S->v;
- register int i;
-
- float va[9], rrpa[8];
- register float scalef = 3.0517578125e-5, temp;
-
- for (i = 0; i < 8; ++i) {
- va[i] = v[i];
- rrpa[i] = (float)rrp[i] * scalef;
- }
- while (k--) {
- register float sri = *wt++;
- for (i = 8; i--;) {
- sri -= rrpa[i] * va[i];
- if (sri < -32768.) sri = -32768.;
- else if (sri > 32767.) sri = 32767.;
-
- temp = va[i] + rrpa[i] * sri;
- if (temp < -32768.) temp = -32768.;
- else if (temp > 32767.) temp = 32767.;
- va[i+1] = temp;
- }
- *sr++ = va[0] = sri;
- }
- for (i = 0; i < 9; ++i) v[i] = va[i];
-}
-
-#endif /* defined(FAST) && defined(USE_FLOAT_MUL) */
-
-void Gsm_Short_Term_Analysis_Filter (
-
- struct gsm_state * S,
-
- word * LARc, /* coded log area ratio [0..7] IN */
- word * s /* signal [0..159] IN/OUT */
-)
-{
- word * LARpp_j = S->LARpp[ S->j ];
- word * LARpp_j_1 = S->LARpp[ S->j ^= 1 ];
-
- word LARp[8];
-
-#undef FILTER
-#if defined(FAST) && defined(USE_FLOAT_MUL)
-# define FILTER (* (S->fast \
- ? Fast_Short_term_analysis_filtering \
- : Short_term_analysis_filtering ))
-
-#else
-# define FILTER Short_term_analysis_filtering
-#endif
-
- Decoding_of_the_coded_Log_Area_Ratios( LARc, LARpp_j );
-
- Coefficients_0_12( LARpp_j_1, LARpp_j, LARp );
- LARp_to_rp( LARp );
- FILTER( S, LARp, 13, s);
-
- Coefficients_13_26( LARpp_j_1, LARpp_j, LARp);
- LARp_to_rp( LARp );
- FILTER( S, LARp, 14, s + 13);
-
- Coefficients_27_39( LARpp_j_1, LARpp_j, LARp);
- LARp_to_rp( LARp );
- FILTER( S, LARp, 13, s + 27);
-
- Coefficients_40_159( LARpp_j, LARp);
- LARp_to_rp( LARp );
- FILTER( S, LARp, 120, s + 40);
-}
-
-void Gsm_Short_Term_Synthesis_Filter (
- struct gsm_state * S,
-
- word * LARcr, /* received log area ratios [0..7] IN */
- word * wt, /* received d [0..159] IN */
-
- word * s /* signal s [0..159] OUT */
-)
-{
- word * LARpp_j = S->LARpp[ S->j ];
- word * LARpp_j_1 = S->LARpp[ S->j ^=1 ];
-
- word LARp[8];
-
-#undef FILTER
-#if defined(FAST) && defined(USE_FLOAT_MUL)
-
-# define FILTER (* (S->fast \
- ? Fast_Short_term_synthesis_filtering \
- : Short_term_synthesis_filtering ))
-#else
-# define FILTER Short_term_synthesis_filtering
-#endif
-
- Decoding_of_the_coded_Log_Area_Ratios( LARcr, LARpp_j );
-
- Coefficients_0_12( LARpp_j_1, LARpp_j, LARp );
- LARp_to_rp( LARp );
- FILTER( S, LARp, 13, wt, s );
-
- Coefficients_13_26( LARpp_j_1, LARpp_j, LARp);
- LARp_to_rp( LARp );
- FILTER( S, LARp, 14, wt + 13, s + 13 );
-
- Coefficients_27_39( LARpp_j_1, LARpp_j, LARp);
- LARp_to_rp( LARp );
- FILTER( S, LARp, 13, wt + 27, s + 27 );
-
- Coefficients_40_159( LARpp_j, LARp );
- LARp_to_rp( LARp );
- FILTER(S, LARp, 120, wt + 40, s + 40);
-}
-/*
-** Do not edit or modify anything in this comment block.
-** The arch-tag line is a file identity tag for the GNU Arch
-** revision control system.
-**
-** arch-tag: 019ac7ba-c6dd-4540-abf0-8644b6c4a633
-*/
-
diff --git a/libs/libsndfile/src/GSM610/table.c b/libs/libsndfile/src/GSM610/table.c
deleted file mode 100644
index b5aa881eac..0000000000
--- a/libs/libsndfile/src/GSM610/table.c
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Copyright 1992 by Jutta Degener and Carsten Bormann, Technische
- * Universitaet Berlin. See the accompanying file "COPYRIGHT" for
- * details. THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE.
- */
-
-/* Most of these tables are inlined at their point of use.
- */
-
-/* 4.4 TABLES USED IN THE FIXED POINT IMPLEMENTATION OF THE RPE-LTP
- * CODER AND DECODER
- *
- * (Most of them inlined, so watch out.)
- */
-
-#define GSM_TABLE_C
-#include "gsm610_priv.h"
-#include "gsm.h"
-
-/* Table 4.1 Quantization of the Log.-Area Ratios
- */
-/* i 1 2 3 4 5 6 7 8 */
-word gsm_A[8] = {20480, 20480, 20480, 20480, 13964, 15360, 8534, 9036};
-word gsm_B[8] = { 0, 0, 2048, -2560, 94, -1792, -341, -1144};
-word gsm_MIC[8] = { -32, -32, -16, -16, -8, -8, -4, -4 };
-word gsm_MAC[8] = { 31, 31, 15, 15, 7, 7, 3, 3 };
-
-
-/* Table 4.2 Tabulation of 1/A[1..8]
- */
-word gsm_INVA[8]={ 13107, 13107, 13107, 13107, 19223, 17476, 31454, 29708 };
-
-
-/* Table 4.3a Decision level of the LTP gain quantizer
- */
-/* bc 0 1 2 3 */
-word gsm_DLB[4] = { 6554, 16384, 26214, 32767 };
-
-
-/* Table 4.3b Quantization levels of the LTP gain quantizer
- */
-/* bc 0 1 2 3 */
-word gsm_QLB[4] = { 3277, 11469, 21299, 32767 };
-
-
-/* Table 4.4 Coefficients of the weighting filter
- */
-/* i 0 1 2 3 4 5 6 7 8 9 10 */
-word gsm_H[11] = {-134, -374, 0, 2054, 5741, 8192, 5741, 2054, 0, -374, -134 };
-
-
-/* Table 4.5 Normalized inverse mantissa used to compute xM/xmax
- */
-/* i 0 1 2 3 4 5 6 7 */
-word gsm_NRFAC[8] = { 29128, 26215, 23832, 21846, 20165, 18725, 17476, 16384 };
-
-
-/* Table 4.6 Normalized direct mantissa used to compute xM/xmax
- */
-/* i 0 1 2 3 4 5 6 7 */
-word gsm_FAC[8] = { 18431, 20479, 22527, 24575, 26623, 28671, 30719, 32767 };
-/*
-** Do not edit or modify anything in this comment block.
-** The arch-tag line is a file identity tag for the GNU Arch
-** revision control system.
-**
-** arch-tag: 8957c531-e6b0-4097-9202-da7ca42729ca
-*/
-
diff --git a/libs/libsndfile/src/Symbols.darwin b/libs/libsndfile/src/Symbols.darwin
deleted file mode 100644
index 271e0b0c87..0000000000
--- a/libs/libsndfile/src/Symbols.darwin
+++ /dev/null
@@ -1,36 +0,0 @@
-# Auto-generated by create_symbols_file.py
-
-_sf_command
-_sf_open
-_sf_close
-_sf_seek
-_sf_error
-_sf_perror
-_sf_error_str
-_sf_error_number
-_sf_format_check
-_sf_read_raw
-_sf_readf_short
-_sf_readf_int
-_sf_readf_float
-_sf_readf_double
-_sf_read_short
-_sf_read_int
-_sf_read_float
-_sf_read_double
-_sf_write_raw
-_sf_writef_short
-_sf_writef_int
-_sf_writef_float
-_sf_writef_double
-_sf_write_short
-_sf_write_int
-_sf_write_float
-_sf_write_double
-_sf_strerror
-_sf_get_string
-_sf_set_string
-_sf_open_fd
-_sf_open_virtual
-_sf_write_sync
-
diff --git a/libs/libsndfile/src/Symbols.linux b/libs/libsndfile/src/Symbols.linux
deleted file mode 100644
index 163346f700..0000000000
--- a/libs/libsndfile/src/Symbols.linux
+++ /dev/null
@@ -1,42 +0,0 @@
-# Auto-generated by create_symbols_file.py
-
-libsndfile.so.1.0
-{
- global:
- sf_command ;
- sf_open ;
- sf_close ;
- sf_seek ;
- sf_error ;
- sf_perror ;
- sf_error_str ;
- sf_error_number ;
- sf_format_check ;
- sf_read_raw ;
- sf_readf_short ;
- sf_readf_int ;
- sf_readf_float ;
- sf_readf_double ;
- sf_read_short ;
- sf_read_int ;
- sf_read_float ;
- sf_read_double ;
- sf_write_raw ;
- sf_writef_short ;
- sf_writef_int ;
- sf_writef_float ;
- sf_writef_double ;
- sf_write_short ;
- sf_write_int ;
- sf_write_float ;
- sf_write_double ;
- sf_strerror ;
- sf_get_string ;
- sf_set_string ;
- sf_open_fd ;
- sf_open_virtual ;
- sf_write_sync ;
- local:
- * ;
-} ;
-
diff --git a/libs/libsndfile/src/aiff.c b/libs/libsndfile/src/aiff.c
deleted file mode 100644
index 129d79ca6d..0000000000
--- a/libs/libsndfile/src/aiff.c
+++ /dev/null
@@ -1,1482 +0,0 @@
-/*
-** Copyright (C) 1999-2006 Erik de Castro Lopo <erikd@mega-nerd.com>
-** Copyright (C) 2005 David Viens <davidv@plogue.com>
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU Lesser General Public License as published by
-** the Free Software Foundation; either version 2.1 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU Lesser General Public License for more details.
-**
-** You should have received a copy of the GNU Lesser General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-*/
-
-#include "sfconfig.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <time.h>
-#include <ctype.h>
-
-#include "sndfile.h"
-#include "sfendian.h"
-#include "common.h"
-
-/*------------------------------------------------------------------------------
- * Macros to handle big/little endian issues.
- */
-
-#define FORM_MARKER (MAKE_MARKER ('F', 'O', 'R', 'M'))
-#define AIFF_MARKER (MAKE_MARKER ('A', 'I', 'F', 'F'))
-#define AIFC_MARKER (MAKE_MARKER ('A', 'I', 'F', 'C'))
-#define COMM_MARKER (MAKE_MARKER ('C', 'O', 'M', 'M'))
-#define SSND_MARKER (MAKE_MARKER ('S', 'S', 'N', 'D'))
-#define MARK_MARKER (MAKE_MARKER ('M', 'A', 'R', 'K'))
-#define INST_MARKER (MAKE_MARKER ('I', 'N', 'S', 'T'))
-#define APPL_MARKER (MAKE_MARKER ('A', 'P', 'P', 'L'))
-
-#define c_MARKER (MAKE_MARKER ('(', 'c', ')', ' '))
-#define NAME_MARKER (MAKE_MARKER ('N', 'A', 'M', 'E'))
-#define AUTH_MARKER (MAKE_MARKER ('A', 'U', 'T', 'H'))
-#define ANNO_MARKER (MAKE_MARKER ('A', 'N', 'N', 'O'))
-#define COMT_MARKER (MAKE_MARKER ('C', 'O', 'M', 'T'))
-#define FVER_MARKER (MAKE_MARKER ('F', 'V', 'E', 'R'))
-#define SFX_MARKER (MAKE_MARKER ('S', 'F', 'X', '!'))
-
-#define PEAK_MARKER (MAKE_MARKER ('P', 'E', 'A', 'K'))
-#define basc_MARKER (MAKE_MARKER ('b', 'a', 's', 'c'))
-
-/* Supported AIFC encodings.*/
-#define NONE_MARKER (MAKE_MARKER ('N', 'O', 'N', 'E'))
-#define sowt_MARKER (MAKE_MARKER ('s', 'o', 'w', 't'))
-#define twos_MARKER (MAKE_MARKER ('t', 'w', 'o', 's'))
-#define raw_MARKER (MAKE_MARKER ('r', 'a', 'w', ' '))
-#define in32_MARKER (MAKE_MARKER ('i', 'n', '3', '2'))
-#define ni32_MARKER (MAKE_MARKER ('2', '3', 'n', 'i'))
-
-#define fl32_MARKER (MAKE_MARKER ('f', 'l', '3', '2'))
-#define FL32_MARKER (MAKE_MARKER ('F', 'L', '3', '2'))
-#define fl64_MARKER (MAKE_MARKER ('f', 'l', '6', '4'))
-#define FL64_MARKER (MAKE_MARKER ('F', 'L', '6', '4'))
-
-#define ulaw_MARKER (MAKE_MARKER ('u', 'l', 'a', 'w'))
-#define ULAW_MARKER (MAKE_MARKER ('U', 'L', 'A', 'W'))
-#define alaw_MARKER (MAKE_MARKER ('a', 'l', 'a', 'w'))
-#define ALAW_MARKER (MAKE_MARKER ('A', 'L', 'A', 'W'))
-
-#define DWVW_MARKER (MAKE_MARKER ('D', 'W', 'V', 'W'))
-#define GSM_MARKER (MAKE_MARKER ('G', 'S', 'M', ' '))
-#define ima4_MARKER (MAKE_MARKER ('i', 'm', 'a', '4'))
-
-/* Unsupported AIFC encodings.*/
-
-#define MAC3_MARKER (MAKE_MARKER ('M', 'A', 'C', '3'))
-#define MAC6_MARKER (MAKE_MARKER ('M', 'A', 'C', '6'))
-#define ADP4_MARKER (MAKE_MARKER ('A', 'D', 'P', '4'))
-
-/* Predfined chunk sizes. */
-#define SIZEOF_AIFF_COMM 18
-#define SIZEOF_AIFC_COMM_MIN 22
-#define SIZEOF_AIFC_COMM 24
-#define SIZEOF_SSND_CHUNK 8
-#define SIZEOF_INST_CHUNK 20
-
-/* Is it constant? */
-
-/* AIFC/IMA4 defines. */
-#define AIFC_IMA4_BLOCK_LEN 34
-#define AIFC_IMA4_SAMPLES_PER_BLOCK 64
-
-#define AIFF_PEAK_CHUNK_SIZE(ch) (2 * sizeof (int) + ch * (sizeof (float) + sizeof (int)))
-
-/*------------------------------------------------------------------------------
- * Typedefs for file chunks.
- */
-
-enum
-{ HAVE_FORM = 0x01,
- HAVE_AIFF = 0x02,
- HAVE_COMM = 0x04,
- HAVE_SSND = 0x08
-} ;
-
-typedef struct
-{ unsigned int size ;
- short numChannels ;
- unsigned int numSampleFrames ;
- short sampleSize ;
- unsigned char sampleRate [10] ;
- unsigned int encoding ;
- char zero_bytes [2] ;
-} COMM_CHUNK ;
-
-typedef struct
-{ unsigned int offset ;
- unsigned int blocksize ;
-} SSND_CHUNK ;
-
-typedef struct
-{ short playMode ;
- unsigned short beginLoop ;
- unsigned short endLoop ;
-} INST_LOOP ;
-
-typedef struct
-{ char baseNote ; /* all notes are MIDI note numbers */
- char detune ; /* cents off, only -50 to +50 are significant */
- char lowNote ;
- char highNote ;
- char lowVelocity ; /* 1 to 127 */
- char highVelocity ; /* 1 to 127 */
- short gain ; /* in dB, 0 is normal */
- INST_LOOP sustain_loop ;
- INST_LOOP release_loop ;
-} INST_CHUNK ;
-
-
-enum
-{ basc_SCALE_MINOR = 1,
- basc_SCALE_MAJOR,
- basc_SCALE_NEITHER,
- basc_SCALE_BOTH
-} ;
-
-enum
-{ basc_TYPE_LOOP = 0,
- basc_TYPE_ONE_SHOT
-} ;
-
-
-typedef struct
-{ unsigned int version ;
- unsigned int numBeats ;
- unsigned short rootNote ;
- unsigned short scaleType ;
- unsigned short sigNumerator ;
- unsigned short sigDenominator ;
- unsigned short loopType ;
-} basc_CHUNK ;
-
-typedef struct
-{ unsigned short markerID ;
- unsigned int position ;
-} MARK_ID_POS ;
-
-/*------------------------------------------------------------------------------
- * Private static functions.
- */
-
-static int aiff_close (SF_PRIVATE *psf) ;
-
-static int tenbytefloat2int (unsigned char *bytes) ;
-static void uint2tenbytefloat (unsigned int num, unsigned char *bytes) ;
-
-static int aiff_read_comm_chunk (SF_PRIVATE *psf, COMM_CHUNK *comm_fmt) ;
-
-static int aiff_read_header (SF_PRIVATE *psf, COMM_CHUNK *comm_fmt) ;
-
-static int aiff_write_header (SF_PRIVATE *psf, int calc_length) ;
-static int aiff_write_tailer (SF_PRIVATE *psf) ;
-static void aiff_write_strings (SF_PRIVATE *psf, int location) ;
-
-static int aiff_command (SF_PRIVATE *psf, int command, void *data, int datasize) ;
-
-static const char *get_loop_mode_str (short mode) ;
-
-static short get_loop_mode (short mode) ;
-
-static int aiff_read_basc_chunk (SF_PRIVATE * psf, int) ;
-
-static unsigned int marker_to_position (const MARK_ID_POS *m, unsigned short n, int marksize) ;
-
-/*------------------------------------------------------------------------------
-** Public function.
-*/
-
-int
-aiff_open (SF_PRIVATE *psf)
-{ COMM_CHUNK comm_fmt ;
- int error, subformat ;
-
- memset (&comm_fmt, 0, sizeof (comm_fmt)) ;
-
- subformat = psf->sf.format & SF_FORMAT_SUBMASK ;
-
- if (psf->mode == SFM_READ || (psf->mode == SFM_RDWR && psf->filelength > 0))
- { if ((error = aiff_read_header (psf, &comm_fmt)))
- return error ;
-
- psf_fseek (psf, psf->dataoffset, SEEK_SET) ;
- } ;
-
- if (psf->mode == SFM_WRITE || psf->mode == SFM_RDWR)
- { if (psf->is_pipe)
- return SFE_NO_PIPE_WRITE ;
-
- if ((psf->sf.format & SF_FORMAT_TYPEMASK) != SF_FORMAT_AIFF)
- return SFE_BAD_OPEN_FORMAT ;
-
- if (psf->mode == SFM_WRITE && (subformat == SF_FORMAT_FLOAT || subformat == SF_FORMAT_DOUBLE))
- { if ((psf->peak_info = peak_info_calloc (psf->sf.channels)) == NULL)
- return SFE_MALLOC_FAILED ;
- psf->peak_info->peak_loc = SF_PEAK_START ;
- } ;
-
- if (psf->mode != SFM_RDWR || psf->filelength < 40)
- { psf->filelength = 0 ;
- psf->datalength = 0 ;
- psf->dataoffset = 0 ;
- psf->sf.frames = 0 ;
- } ;
-
- psf->str_flags = SF_STR_ALLOW_START | SF_STR_ALLOW_END ;
-
- if ((error = aiff_write_header (psf, SF_FALSE)))
- return error ;
-
- psf->write_header = aiff_write_header ;
- } ;
-
- psf->container_close = aiff_close ;
- psf->command = aiff_command ;
-
- switch (psf->sf.format & SF_FORMAT_SUBMASK)
- { case SF_FORMAT_PCM_U8 :
- error = pcm_init (psf) ;
- break ;
-
- case SF_FORMAT_PCM_S8 :
- error = pcm_init (psf) ;
- break ;
-
- case SF_FORMAT_PCM_16 :
- case SF_FORMAT_PCM_24 :
- case SF_FORMAT_PCM_32 :
- error = pcm_init (psf) ;
- break ;
-
- case SF_FORMAT_ULAW :
- error = ulaw_init (psf) ;
- break ;
-
- case SF_FORMAT_ALAW :
- error = alaw_init (psf) ;
- break ;
-
- /* Lite remove start */
- case SF_FORMAT_FLOAT :
- error = float32_init (psf) ;
- break ;
-
- case SF_FORMAT_DOUBLE :
- error = double64_init (psf) ;
- break ;
-
- case SF_FORMAT_DWVW_12 :
- error = dwvw_init (psf, 12) ;
- break ;
-
- case SF_FORMAT_DWVW_16 :
- error = dwvw_init (psf, 16) ;
- break ;
-
- case SF_FORMAT_DWVW_24 :
- error = dwvw_init (psf, 24) ;
- break ;
-
- case SF_FORMAT_DWVW_N :
- if (psf->mode != SFM_READ)
- { error = SFE_DWVW_BAD_BITWIDTH ;
- break ;
- } ;
- if (comm_fmt.sampleSize >= 8 && comm_fmt.sampleSize < 24)
- { error = dwvw_init (psf, comm_fmt.sampleSize) ;
- psf->sf.frames = comm_fmt.numSampleFrames ;
- break ;
- } ;
- psf_log_printf (psf, "AIFC/DWVW : Bad bitwidth %d\n", comm_fmt.sampleSize) ;
- error = SFE_DWVW_BAD_BITWIDTH ;
- break ;
-
- case SF_FORMAT_IMA_ADPCM :
- /*
- ** IMA ADPCM encoded AIFF files always have a block length
- ** of 34 which decodes to 64 samples.
- */
- error = aiff_ima_init (psf, AIFC_IMA4_BLOCK_LEN, AIFC_IMA4_SAMPLES_PER_BLOCK) ;
- break ;
- /* Lite remove end */
-
- case SF_FORMAT_GSM610 :
- error = gsm610_init (psf) ;
- break ;
-
- default : return SFE_UNIMPLEMENTED ;
- } ;
-
-
- return error ;
-} /* aiff_open */
-
-/*==========================================================================================
-** Private functions.
-*/
-
-/* This function ought to check size */
-static unsigned int
-marker_to_position (const MARK_ID_POS *m, unsigned short n, int marksize)
-{ int i ;
-
- for (i = 0 ; i < marksize ; i++)
- if (m [i].markerID == n)
- return m [i].position ;
- return 0 ;
-} /* marker_to_position */
-
-static int
-aiff_read_header (SF_PRIVATE *psf, COMM_CHUNK *comm_fmt)
-{ SSND_CHUNK ssnd_fmt ;
- MARK_ID_POS *markstr = NULL ;
- unsigned marker, dword, FORMsize, SSNDsize, bytesread ;
- int k, found_chunk = 0, done = 0, error = 0 ;
- char *cptr, byte ;
- int instr_found = 0, mark_found = 0, mark_count = 0 ;
-
- /* Set position to start of file to begin reading header. */
- psf_binheader_readf (psf, "p", 0) ;
-
- memset (comm_fmt, 0, sizeof (COMM_CHUNK)) ;
-
- /* Until recently AIF* file were all BIG endian. */
- psf->endian = SF_ENDIAN_BIG ;
-
- /* AIFF files can apparently have their chunks in any order. However, they
- ** must have a FORM chunk. Approach here is to read all the chunks one by
- ** one and then check for the mandatory chunks at the end.
- */
- while (! done)
- { psf_binheader_readf (psf, "m", &marker) ;
-
- if (psf->mode == SFM_RDWR && (found_chunk & HAVE_SSND))
- return SFE_AIFF_RW_SSND_NOT_LAST ;
-
- switch (marker)
- { case FORM_MARKER :
- if (found_chunk)
- return SFE_AIFF_NO_FORM ;
-
- psf_binheader_readf (psf, "E4", &FORMsize) ;
-
- if (psf->fileoffset > 0 && psf->filelength > FORMsize + 8)
- { /* Set file length. */
- psf->filelength = FORMsize + 8 ;
- psf_log_printf (psf, "FORM : %u\n", FORMsize) ;
- }
- else if (FORMsize != psf->filelength - 2 * SIGNED_SIZEOF (dword))
- { dword = psf->filelength - 2 * sizeof (dword) ;
- psf_log_printf (psf, "FORM : %u (should be %u)\n", FORMsize, dword) ;
- FORMsize = dword ;
- }
- else
- psf_log_printf (psf, "FORM : %u\n", FORMsize) ;
- found_chunk |= HAVE_FORM ;
- break ;
-
- case AIFC_MARKER :
- case AIFF_MARKER :
- if ((found_chunk & HAVE_FORM) == 0)
- return SFE_AIFF_AIFF_NO_FORM ;
- psf_log_printf (psf, " %M\n", marker) ;
- found_chunk |= HAVE_AIFF ;
- break ;
-
- case COMM_MARKER :
- error = aiff_read_comm_chunk (psf, comm_fmt) ;
-
- psf->sf.samplerate = tenbytefloat2int (comm_fmt->sampleRate) ;
- psf->sf.frames = comm_fmt->numSampleFrames ;
- psf->sf.channels = comm_fmt->numChannels ;
- psf->bytewidth = BITWIDTH2BYTES (comm_fmt->sampleSize) ;
-
- if (error)
- return error ;
-
- found_chunk |= HAVE_COMM ;
- break ;
-
- case PEAK_MARKER :
- /* Must have COMM chunk before PEAK chunk. */
- if ((found_chunk & (HAVE_FORM | HAVE_AIFF | HAVE_COMM)) != (HAVE_FORM | HAVE_AIFF | HAVE_COMM))
- return SFE_AIFF_PEAK_B4_COMM ;
-
- psf_binheader_readf (psf, "E4", &dword) ;
-
- psf_log_printf (psf, "%M : %d\n", marker, dword) ;
- if (dword != AIFF_PEAK_CHUNK_SIZE (psf->sf.channels))
- { psf_binheader_readf (psf, "j", dword) ;
- psf_log_printf (psf, "*** File PEAK chunk too big.\n") ;
- return SFE_WAV_BAD_PEAK ;
- } ;
-
- if ((psf->peak_info = peak_info_calloc (psf->sf.channels)) == NULL)
- return SFE_MALLOC_FAILED ;
-
- /* read in rest of PEAK chunk. */
- psf_binheader_readf (psf, "E44", &(psf->peak_info->version), &(psf->peak_info->timestamp)) ;
-
- if (psf->peak_info->version != 1)
- psf_log_printf (psf, " version : %d *** (should be version 1)\n", psf->peak_info->version) ;
- else
- psf_log_printf (psf, " version : %d\n", psf->peak_info->version) ;
-
- psf_log_printf (psf, " time stamp : %d\n", psf->peak_info->timestamp) ;
- psf_log_printf (psf, " Ch Position Value\n") ;
-
- cptr = psf->u.cbuf ;
- for (dword = 0 ; dword < (unsigned) psf->sf.channels ; dword++)
- { float value ;
- unsigned int position ;
-
- psf_binheader_readf (psf, "Ef4", &value, &position) ;
- psf->peak_info->peaks [dword].value = value ;
- psf->peak_info->peaks [dword].position = position ;
-
- LSF_SNPRINTF (cptr, sizeof (psf->u.scbuf), " %2d %-12ld %g\n",
- dword, (long) psf->peak_info->peaks [dword].position, psf->peak_info->peaks [dword].value) ;
- cptr [sizeof (psf->u.scbuf) - 1] = 0 ;
- psf_log_printf (psf, cptr) ;
- } ;
-
- break ;
-
- case SSND_MARKER :
- psf_binheader_readf (psf, "E444", &SSNDsize, &(ssnd_fmt.offset), &(ssnd_fmt.blocksize)) ;
-
- psf->datalength = SSNDsize - sizeof (ssnd_fmt) ;
- psf->dataoffset = psf_ftell (psf) ;
-
- if (psf->datalength > psf->filelength - psf->dataoffset || psf->datalength < 0)
- { psf_log_printf (psf, " SSND : %u (should be %D)\n", SSNDsize, psf->filelength - psf->dataoffset + sizeof (SSND_CHUNK)) ;
- psf->datalength = psf->filelength - psf->dataoffset ;
- }
- else
- psf_log_printf (psf, " SSND : %u\n", SSNDsize) ;
-
- /* Only set dataend if there really is data at the end. */
- if (psf->datalength + psf->dataoffset < psf->filelength)
- psf->dataend = psf->datalength + psf->dataoffset ;
-
- psf_log_printf (psf, " Offset : %u\n", ssnd_fmt.offset) ;
- psf_log_printf (psf, " Block Size : %u\n", ssnd_fmt.blocksize) ;
-
- found_chunk |= HAVE_SSND ;
-
- if (! psf->sf.seekable)
- break ;
-
- /* Seek to end of SSND chunk. */
- psf_fseek (psf, psf->dataoffset + psf->datalength + (SSNDsize & 1), SEEK_SET) ;
- break ;
-
- case c_MARKER :
- psf_binheader_readf (psf, "E4", &dword) ;
- if (dword == 0)
- break ;
- if (dword > SIGNED_SIZEOF (psf->u.scbuf) - 1)
- { psf_log_printf (psf, " %M : %d (too big)\n", marker, dword) ;
- return SFE_INTERNAL ;
- } ;
-
- cptr = psf->u.cbuf ;
- psf_binheader_readf (psf, "b", cptr, dword + (dword & 1)) ;
- cptr [dword] = 0 ;
- psf_log_printf (psf, " %M : %s\n", marker, cptr) ;
- psf_store_string (psf, SF_STR_COPYRIGHT, cptr) ;
- break ;
-
- case AUTH_MARKER :
- psf_binheader_readf (psf, "E4", &dword) ;
- if (dword == 0)
- break ;
- if (dword > SIGNED_SIZEOF (psf->u.scbuf) - 1)
- { psf_log_printf (psf, " %M : %d (too big)\n", marker, dword) ;
- return SFE_INTERNAL ;
- } ;
-
- cptr = psf->u.cbuf ;
- psf_binheader_readf (psf, "b", cptr, dword + (dword & 1)) ;
- cptr [dword] = 0 ;
- psf_log_printf (psf, " %M : %s\n", marker, cptr) ;
- psf_store_string (psf, SF_STR_ARTIST, cptr) ;
- break ;
-
- case COMT_MARKER :
- { unsigned short count, id, len ;
- unsigned int timestamp ;
-
- psf_binheader_readf (psf, "E42", &dword, &count) ;
- psf_log_printf (psf, " %M : %d\n count : %d\n", marker, dword, count) ;
- dword += (dword & 1) ;
- if (dword == 0)
- break ;
- dword -= 2 ;
-
- for (k = 0 ; k < count ; k++)
- { dword -= psf_binheader_readf (psf, "E422", &timestamp, &id, &len) ;
- psf_log_printf (psf, " time : 0x%x\n marker : %x\n length : %d\n", timestamp, id, len) ;
-
- if (len + 1 > SIGNED_SIZEOF (psf->u.scbuf))
- { psf_log_printf (psf, "\nError : string length (%d) too big.\n", len) ;
- return SFE_INTERNAL ;
- } ;
-
- cptr = psf->u.cbuf ;
- dword -= psf_binheader_readf (psf, "b", cptr, len) ;
- cptr [len] = 0 ;
- psf_log_printf (psf, " string : %s\n", cptr) ;
- } ;
-
- if (dword > 0)
- psf_binheader_readf (psf, "j", dword) ;
- } ;
- break ;
-
- case APPL_MARKER :
- psf_binheader_readf (psf, "E4", &dword) ;
- if (dword == 0)
- break ;
- if (dword >= SIGNED_SIZEOF (psf->u.scbuf) - 1)
- { psf_log_printf (psf, " %M : %d (too big, skipping)\n", marker, dword) ;
- psf_binheader_readf (psf, "j", dword + (dword & 1)) ;
- break ;
- } ;
-
- cptr = psf->u.cbuf ;
- psf_binheader_readf (psf, "b", cptr, dword + (dword & 1)) ;
- cptr [dword] = 0 ;
-
- for (k = 0 ; k < (int) dword ; k++)
- if (! isprint (cptr [k]))
- { cptr [k] = 0 ;
- break ;
- } ;
-
- psf_log_printf (psf, " %M : %s\n", marker, cptr) ;
- psf_store_string (psf, SF_STR_SOFTWARE, cptr) ;
- break ;
-
- case NAME_MARKER :
- psf_binheader_readf (psf, "E4", &dword) ;
- if (dword == 0)
- break ;
- if (dword > SIGNED_SIZEOF (psf->u.scbuf) - 2)
- { psf_log_printf (psf, " %M : %d (too big)\n", marker, dword) ;
- return SFE_INTERNAL ;
- } ;
-
- cptr = psf->u.cbuf ;
- psf_binheader_readf (psf, "b", cptr, dword + (dword & 1)) ;
- cptr [dword] = 0 ;
- psf_log_printf (psf, " %M : %s\n", marker, cptr) ;
- psf_store_string (psf, SF_STR_TITLE, cptr) ;
- break ;
-
- case ANNO_MARKER :
- psf_binheader_readf (psf, "E4", &dword) ;
- if (dword == 0)
- break ;
- if (dword > SIGNED_SIZEOF (psf->u.scbuf) - 2)
- { psf_log_printf (psf, " %M : %d (too big)\n", marker, dword) ;
- return SFE_INTERNAL ;
- } ;
-
- cptr = psf->u.cbuf ;
- psf_binheader_readf (psf, "b", cptr, dword + (dword & 1)) ;
- cptr [dword] = 0 ;
- psf_log_printf (psf, " %M : %s\n", marker, cptr) ;
- psf_store_string (psf, SF_STR_COMMENT, cptr) ;
- break ;
-
- case INST_MARKER :
- psf_binheader_readf (psf, "E4", &dword) ;
- if (dword != SIZEOF_INST_CHUNK)
- { psf_log_printf (psf, " %M : %d (should be %d)\n", marker, dword, SIZEOF_INST_CHUNK) ;
- psf_binheader_readf (psf, "j", dword) ;
- break ;
- } ;
- psf_log_printf (psf, " %M : %d\n", marker, dword) ;
- { unsigned char bytes [6] ;
- short gain ;
-
- if (psf->instrument == NULL && (psf->instrument = psf_instrument_alloc ()) == NULL)
- return SFE_MALLOC_FAILED ;
-
- psf_binheader_readf (psf, "b", bytes, 6) ;
- psf_log_printf (psf, " Base Note : %u\n Detune : %u\n"
- " Low Note : %u\n High Note : %u\n"
- " Low Vel. : %u\n High Vel. : %u\n",
- bytes [0], bytes [1], bytes [2], bytes [3], bytes [4], bytes [5]) ;
- psf->instrument->basenote = bytes [0] ;
- psf->instrument->detune = bytes [1] ;
- psf->instrument->key_lo = bytes [2] ;
- psf->instrument->key_hi = bytes [3] ;
- psf->instrument->velocity_lo = bytes [4] ;
- psf->instrument->velocity_hi = bytes [5] ;
- psf_binheader_readf (psf, "E2", &gain) ;
- psf->instrument->gain = gain ;
- psf_log_printf (psf, " Gain (dB) : %d\n", gain) ;
- } ;
- { short mode ; /* 0 - no loop, 1 - forward looping, 2 - backward looping */
- const char *loop_mode ;
- unsigned short begin, end ;
-
- psf_binheader_readf (psf, "E222", &mode, &begin, &end) ;
- loop_mode = get_loop_mode_str (mode) ;
- mode = get_loop_mode (mode) ;
- if (mode == SF_LOOP_NONE)
- { psf->instrument->loop_count = 0 ;
- psf->instrument->loops [0].mode = SF_LOOP_NONE ;
- }
- else
- { psf->instrument->loop_count = 1 ;
- psf->instrument->loops [0].mode = SF_LOOP_FORWARD ;
- psf->instrument->loops [0].start = begin ;
- psf->instrument->loops [0].end = end ;
- psf->instrument->loops [0].count = 0 ;
- } ;
- psf_log_printf (psf, " Sustain\n mode : %d => %s\n begin : %u\n end : %u\n",
- mode, loop_mode, begin, end) ;
- psf_binheader_readf (psf, "E222", &mode, &begin, &end) ;
- loop_mode = get_loop_mode_str (mode) ;
- mode = get_loop_mode (mode) ;
- if (mode == SF_LOOP_NONE)
- psf->instrument->loops [0].mode = SF_LOOP_NONE ;
- else
- { psf->instrument->loop_count += 1 ;
- psf->instrument->loops [1].mode = SF_LOOP_FORWARD ;
- psf->instrument->loops [1].start = begin ;
- psf->instrument->loops [1].end = end ;
- psf->instrument->loops [1].count = 0 ;
- } ;
- psf_log_printf (psf, " Release\n mode : %d => %s\n begin : %u\n end : %u\n",
- mode, loop_mode, begin, end) ;
- } ;
- instr_found++ ;
- break ;
-
- case basc_MARKER :
- psf_binheader_readf (psf, "E4", &dword) ;
- psf_log_printf (psf, " basc : %u\n", dword) ;
-
- if ((error = aiff_read_basc_chunk (psf, dword)))
- return error ;
- break ;
-
- case MARK_MARKER :
- psf_binheader_readf (psf, "E4", &dword) ;
- psf_log_printf (psf, " %M : %d\n", marker, dword) ;
- { unsigned short mark_id, n = 0 ;
- unsigned char pstr_len ;
- unsigned int position ;
-
- bytesread = psf_binheader_readf (psf, "E2", &n) ;
- mark_count = n ;
- markstr = calloc (mark_count, sizeof (MARK_ID_POS)) ;
- psf_log_printf (psf, " Count : %d\n", mark_count) ;
-
- for (n = 0 ; n < mark_count && bytesread < dword ; n++)
- { bytesread += psf_binheader_readf (psf, "E241", &mark_id, &position, &pstr_len) ;
- psf_log_printf (psf, " Mark ID : %u\n Position : %u\n", mark_id, position) ;
-
- pstr_len += (pstr_len & 1) + 1 ; /* fudgy, fudgy, hack, hack */
-
- bytesread += psf_binheader_readf (psf, "b", psf->u.scbuf, pstr_len) ;
- psf_log_printf (psf, " Name : %s\n", psf->u.scbuf) ;
-
- markstr [n].markerID = mark_id ;
- markstr [n].position = position ;
- /*
- ** TODO if psf->u.scbuf is equal to
- ** either Beg_loop, Beg loop or beg loop and spam
- ** if (psf->instrument == NULL && (psf->instrument = psf_instrument_alloc ()) == NULL)
- ** return SFE_MALLOC_FAILED ;
- */
- } ;
- } ;
- mark_found++ ;
- psf_binheader_readf (psf, "j", dword - bytesread) ;
- break ;
-
- case FVER_MARKER :
- case SFX_MARKER :
- psf_binheader_readf (psf, "E4", &dword) ;
- psf_log_printf (psf, " %M : %d\n", marker, dword) ;
-
- psf_binheader_readf (psf, "j", dword) ;
- break ;
-
- case NONE_MARKER :
- /* Fix for broken AIFC files with incorrect COMM chunk length. */
- psf_binheader_readf (psf, "1", &byte) ;
- dword = byte ;
- psf_binheader_readf (psf, "j", dword) ;
- break ;
-
- default :
- if (isprint ((marker >> 24) & 0xFF) && isprint ((marker >> 16) & 0xFF)
- && isprint ((marker >> 8) & 0xFF) && isprint (marker & 0xFF))
- { psf_binheader_readf (psf, "E4", &dword) ;
- psf_log_printf (psf, " %M : %d (unknown marker)\n", marker, dword) ;
-
- psf_binheader_readf (psf, "j", dword) ;
- break ;
- } ;
- if ((dword = psf_ftell (psf)) & 0x03)
- { psf_log_printf (psf, " Unknown chunk marker %X at position %d. Resyncing.\n", marker, dword - 4) ;
-
- psf_binheader_readf (psf, "j", -3) ;
- break ;
- } ;
- psf_log_printf (psf, "*** Unknown chunk marker %X at position %D. Exiting parser.\n", marker, psf_ftell (psf)) ;
- done = 1 ;
- break ;
- } ; /* switch (marker) */
-
- if ((! psf->sf.seekable) && (found_chunk & HAVE_SSND))
- break ;
-
- if (psf_ftell (psf) >= psf->filelength - (2 * SIGNED_SIZEOF (dword)))
- break ;
- } ; /* while (1) */
-
- if (instr_found && mark_found)
- { int j ;
-
- for (j = 0 ; j<psf->instrument->loop_count ; j ++)
- { if (j < ARRAY_LEN (psf->instrument->loops))
- { psf->instrument->loops [j].start = marker_to_position (markstr, psf->instrument->loops [j].start, mark_count) ;
- psf->instrument->loops [j].end = marker_to_position (markstr, psf->instrument->loops [j].end, mark_count) ;
- psf->instrument->loops [j].mode = SF_LOOP_FORWARD ;
- } ;
- } ;
- } ;
-
- if (markstr)
- free (markstr) ;
-
- if (! (found_chunk & HAVE_FORM))
- return SFE_AIFF_NO_FORM ;
-
- if (! (found_chunk & HAVE_AIFF))
- return SFE_AIFF_COMM_NO_FORM ;
-
- if (! (found_chunk & HAVE_COMM))
- return SFE_AIFF_SSND_NO_COMM ;
-
- if (! psf->dataoffset)
- return SFE_AIFF_NO_DATA ;
-
- return 0 ;
-} /* aiff_read_header */
-
-static int
-aiff_close (SF_PRIVATE *psf)
-{
- if (psf->mode == SFM_WRITE || psf->mode == SFM_RDWR)
- { aiff_write_tailer (psf) ;
-
- aiff_write_header (psf, SF_TRUE) ;
- } ;
-
- return 0 ;
-} /* aiff_close */
-
-static int
-aiff_read_comm_chunk (SF_PRIVATE *psf, COMM_CHUNK *comm_fmt)
-{ int error = 0, bytesread, subformat ;
-
- psf->u.scbuf [0] = 0 ;
-
- bytesread = psf_binheader_readf (psf, "E4", &(comm_fmt->size)) ;
-
- /* The COMM chunk has an int aligned to an odd word boundary. Some
- ** procesors are not able to deal with this (ie bus fault) so we have
- ** to take special care.
- */
- comm_fmt->size += comm_fmt->size & 1 ;
-
- bytesread +=
- psf_binheader_readf (psf, "E242b", &(comm_fmt->numChannels), &(comm_fmt->numSampleFrames),
- &(comm_fmt->sampleSize), &(comm_fmt->sampleRate), SIGNED_SIZEOF (comm_fmt->sampleRate)) ;
-
- if (comm_fmt->size == SIZEOF_AIFF_COMM)
- comm_fmt->encoding = NONE_MARKER ;
- else if (comm_fmt->size == SIZEOF_AIFC_COMM_MIN)
- bytesread += psf_binheader_readf (psf, "Em", &(comm_fmt->encoding)) ;
- else if (comm_fmt->size >= SIZEOF_AIFC_COMM)
- { unsigned char encoding_len ;
-
- bytesread += psf_binheader_readf (psf, "Em1", &(comm_fmt->encoding), &encoding_len) ;
-
- memset (psf->u.scbuf, 0, comm_fmt->size) ;
-
- bytesread += psf_binheader_readf (psf, "b", psf->u.scbuf,
- comm_fmt->size - SIZEOF_AIFC_COMM + 1) ;
- psf->u.scbuf [encoding_len] = 0 ;
- } ;
-
- psf_log_printf (psf, " COMM : %d\n", comm_fmt->size) ;
- psf_log_printf (psf, " Sample Rate : %d\n", tenbytefloat2int (comm_fmt->sampleRate)) ;
- psf_log_printf (psf, " Frames : %u%s\n", comm_fmt->numSampleFrames, (comm_fmt->numSampleFrames == 0 && psf->filelength > 100) ? " (Should not be 0)" : "") ;
- psf_log_printf (psf, " Channels : %d\n", comm_fmt->numChannels) ;
-
- /* Found some broken 'fl32' files with comm.samplesize == 16. Fix it here. */
-
- if ((comm_fmt->encoding == fl32_MARKER || comm_fmt->encoding == FL32_MARKER) && comm_fmt->sampleSize != 32)
- { psf_log_printf (psf, " Sample Size : %d (should be 32)\n", comm_fmt->sampleSize) ;
- comm_fmt->sampleSize = 32 ;
- }
- else if ((comm_fmt->encoding == fl64_MARKER || comm_fmt->encoding == FL64_MARKER) && comm_fmt->sampleSize != 64)
- { psf_log_printf (psf, " Sample Size : %d (should be 64)\n", comm_fmt->sampleSize) ;
- comm_fmt->sampleSize = 64 ;
- }
- else
- psf_log_printf (psf, " Sample Size : %d\n", comm_fmt->sampleSize) ;
-
- subformat = s_bitwidth_to_subformat (comm_fmt->sampleSize) ;
-
- psf->endian = SF_ENDIAN_BIG ;
-
- switch (comm_fmt->encoding)
- { case NONE_MARKER :
- psf->sf.format = (SF_FORMAT_AIFF | subformat) ;
- break ;
-
- case twos_MARKER :
- case in32_MARKER :
- psf->sf.format = (SF_ENDIAN_BIG | SF_FORMAT_AIFF | subformat) ;
- break ;
-
- case sowt_MARKER :
- case ni32_MARKER :
- psf->endian = SF_ENDIAN_LITTLE ;
- psf->sf.format = (SF_ENDIAN_LITTLE | SF_FORMAT_AIFF | subformat) ;
- break ;
-
- case fl32_MARKER :
- case FL32_MARKER :
- psf->sf.format = (SF_FORMAT_AIFF | SF_FORMAT_FLOAT) ;
- break ;
-
- case ulaw_MARKER :
- case ULAW_MARKER :
- psf->sf.format = (SF_FORMAT_AIFF | SF_FORMAT_ULAW) ;
- break ;
-
- case alaw_MARKER :
- case ALAW_MARKER :
- psf->sf.format = (SF_FORMAT_AIFF | SF_FORMAT_ALAW) ;
- break ;
-
- case fl64_MARKER :
- case FL64_MARKER :
- psf->sf.format = (SF_FORMAT_AIFF | SF_FORMAT_DOUBLE) ;
- break ;
-
- case raw_MARKER :
- psf->sf.format = (SF_FORMAT_AIFF | SF_FORMAT_PCM_U8) ;
- break ;
-
- case DWVW_MARKER :
- psf->sf.format = SF_FORMAT_AIFF ;
- switch (comm_fmt->sampleSize)
- { case 12 :
- psf->sf.format |= SF_FORMAT_DWVW_12 ;
- break ;
- case 16 :
- psf->sf.format |= SF_FORMAT_DWVW_16 ;
- break ;
- case 24 :
- psf->sf.format |= SF_FORMAT_DWVW_24 ;
- break ;
-
- default :
- psf->sf.format |= SF_FORMAT_DWVW_N ;
- break ;
- } ;
- break ;
-
- case GSM_MARKER :
- psf->sf.format = SF_FORMAT_AIFF ;
- psf->sf.format = (SF_FORMAT_AIFF | SF_FORMAT_GSM610) ;
- break ;
-
-
- case ima4_MARKER :
- psf->endian = SF_ENDIAN_BIG ;
- psf->sf.format = (SF_FORMAT_AIFF | SF_FORMAT_IMA_ADPCM) ;
- break ;
-
- default :
- psf_log_printf (psf, "AIFC : Unimplemented format : %M\n", comm_fmt->encoding) ;
- error = SFE_UNIMPLEMENTED ;
- } ;
-
- if (! psf->u.scbuf [0])
- psf_log_printf (psf, " Encoding : %M\n", comm_fmt->encoding) ;
- else
- psf_log_printf (psf, " Encoding : %M => %s\n", comm_fmt->encoding, psf->u.scbuf) ;
-
- return error ;
-} /* aiff_read_comm_chunk */
-
-
-static int
-aiff_write_header (SF_PRIVATE *psf, int calc_length)
-{ sf_count_t current ;
- unsigned char comm_sample_rate [10], comm_zero_bytes [2] = { 0, 0 } ;
- unsigned int comm_type, comm_size, comm_encoding, comm_frames ;
- int k, endian ;
- short bit_width ;
-
- current = psf_ftell (psf) ;
-
- if (calc_length)
- { psf->filelength = psf_get_filelen (psf) ;
-
- psf->datalength = psf->filelength - psf->dataoffset ;
- if (psf->dataend)
- psf->datalength -= psf->filelength - psf->dataend ;
-
- if (psf->bytewidth > 0)
- psf->sf.frames = psf->datalength / (psf->bytewidth * psf->sf.channels) ;
- } ;
-
- if (psf->mode == SFM_RDWR && psf->dataoffset > 0)
- { /* Assuming here that the header has already been written and just
- ** needs to be corrected for new data length. That means that we
- ** only change the length fields of the FORM and SSND chunks ;
- ** everything else can be skipped over.
- */
-
- /* First write new FORM chunk. */
- psf->headindex = 0 ;
- psf_fseek (psf, 0, SEEK_SET) ;
-
- psf_binheader_writef (psf, "Etm8", FORM_MARKER, psf->filelength - 8) ;
- psf_fwrite (psf->header, psf->headindex, 1, psf) ;
-
- /* Now write frame count field of COMM chunk header. */
- psf->headindex = 0 ;
- psf_fseek (psf, 22, SEEK_SET) ;
-
- psf_binheader_writef (psf, "Et8", psf->sf.frames) ;
- psf_fwrite (psf->header, psf->headindex, 1, psf) ;
-
- /* Now write new SSND chunk header. */
- psf->headindex = 0 ;
- psf_fseek (psf, psf->dataoffset - 16, SEEK_SET) ;
-
- psf_binheader_writef (psf, "Etm8", SSND_MARKER, psf->datalength + SIZEOF_SSND_CHUNK) ;
- psf_fwrite (psf->header, psf->headindex, 1, psf) ;
-
- if (current < psf->dataoffset)
- psf_fseek (psf, psf->dataoffset, SEEK_SET) ;
- else if (current > 0)
- psf_fseek (psf, current, SEEK_SET) ;
-
- return 0 ;
- } ;
-
- endian = psf->sf.format & SF_FORMAT_ENDMASK ;
- if (CPU_IS_LITTLE_ENDIAN && endian == SF_ENDIAN_CPU)
- endian = SF_ENDIAN_LITTLE ;
-
- /* Standard value here. */
- bit_width = psf->bytewidth * 8 ;
- comm_frames = (psf->sf.frames > 0xFFFFFFFF) ? 0xFFFFFFFF : psf->sf.frames ;
-
- switch (psf->sf.format & SF_FORMAT_SUBMASK)
- { case SF_FORMAT_PCM_S8 :
- case SF_FORMAT_PCM_16 :
- case SF_FORMAT_PCM_24 :
- case SF_FORMAT_PCM_32 :
- switch (endian)
- { case SF_ENDIAN_BIG :
- psf->endian = SF_ENDIAN_BIG ;
- comm_type = AIFC_MARKER ;
- comm_size = SIZEOF_AIFC_COMM ;
- comm_encoding = twos_MARKER ;
- break ;
-
- case SF_ENDIAN_LITTLE :
- psf->endian = SF_ENDIAN_LITTLE ;
- comm_type = AIFC_MARKER ;
- comm_size = SIZEOF_AIFC_COMM ;
- comm_encoding = sowt_MARKER ;
- break ;
-
- default : /* SF_ENDIAN_FILE */
- psf->endian = SF_ENDIAN_BIG ;
- comm_type = AIFF_MARKER ;
- comm_size = SIZEOF_AIFF_COMM ;
- comm_encoding = 0 ;
- break ;
- } ;
- break ;
-
- case SF_FORMAT_FLOAT : /* Big endian floating point. */
- psf->endian = SF_ENDIAN_BIG ;
- comm_type = AIFC_MARKER ;
- comm_size = SIZEOF_AIFC_COMM ;
- comm_encoding = FL32_MARKER ; /* Use 'FL32' because its easier to read. */
- break ;
-
- case SF_FORMAT_DOUBLE : /* Big endian double precision floating point. */
- psf->endian = SF_ENDIAN_BIG ;
- comm_type = AIFC_MARKER ;
- comm_size = SIZEOF_AIFC_COMM ;
- comm_encoding = FL64_MARKER ; /* Use 'FL64' because its easier to read. */
- break ;
-
- case SF_FORMAT_ULAW :
- psf->endian = SF_ENDIAN_BIG ;
- comm_type = AIFC_MARKER ;
- comm_size = SIZEOF_AIFC_COMM ;
- comm_encoding = ulaw_MARKER ;
- break ;
-
- case SF_FORMAT_ALAW :
- psf->endian = SF_ENDIAN_BIG ;
- comm_type = AIFC_MARKER ;
- comm_size = SIZEOF_AIFC_COMM ;
- comm_encoding = alaw_MARKER ;
- break ;
-
- case SF_FORMAT_PCM_U8 :
- psf->endian = SF_ENDIAN_BIG ;
- comm_type = AIFC_MARKER ;
- comm_size = SIZEOF_AIFC_COMM ;
- comm_encoding = raw_MARKER ;
- break ;
-
- case SF_FORMAT_DWVW_12 :
- psf->endian = SF_ENDIAN_BIG ;
- comm_type = AIFC_MARKER ;
- comm_size = SIZEOF_AIFC_COMM ;
- comm_encoding = DWVW_MARKER ;
-
- /* Override standard value here.*/
- bit_width = 12 ;
- break ;
-
- case SF_FORMAT_DWVW_16 :
- psf->endian = SF_ENDIAN_BIG ;
- comm_type = AIFC_MARKER ;
- comm_size = SIZEOF_AIFC_COMM ;
- comm_encoding = DWVW_MARKER ;
-
- /* Override standard value here.*/
- bit_width = 16 ;
- break ;
-
- case SF_FORMAT_DWVW_24 :
- psf->endian = SF_ENDIAN_BIG ;
- comm_type = AIFC_MARKER ;
- comm_size = SIZEOF_AIFC_COMM ;
- comm_encoding = DWVW_MARKER ;
-
- /* Override standard value here.*/
- bit_width = 24 ;
- break ;
-
- case SF_FORMAT_GSM610 :
- psf->endian = SF_ENDIAN_BIG ;
- comm_type = AIFC_MARKER ;
- comm_size = SIZEOF_AIFC_COMM ;
- comm_encoding = GSM_MARKER ;
-
- /* Override standard value here.*/
- bit_width = 16 ;
- break ;
-
- case SF_FORMAT_IMA_ADPCM :
- psf->endian = SF_ENDIAN_BIG ;
- comm_type = AIFC_MARKER ;
- comm_size = SIZEOF_AIFC_COMM ;
- comm_encoding = ima4_MARKER ;
-
- /* Override standard value here.*/
- bit_width = 16 ;
- comm_frames = psf->sf.frames / AIFC_IMA4_SAMPLES_PER_BLOCK ;
- break ;
-
- default : return SFE_BAD_OPEN_FORMAT ;
- } ;
-
- /* Reset the current header length to zero. */
- psf->header [0] = 0 ;
- psf->headindex = 0 ;
- psf_fseek (psf, 0, SEEK_SET) ;
-
- psf_binheader_writef (psf, "Etm8", FORM_MARKER, psf->filelength - 8) ;
-
- /* Write COMM chunk. */
- psf_binheader_writef (psf, "Emm4", comm_type, COMM_MARKER, comm_size) ;
-
- memset (comm_sample_rate, 0, sizeof (comm_sample_rate)) ;
- uint2tenbytefloat (psf->sf.samplerate, comm_sample_rate) ;
-
- psf_binheader_writef (psf, "Et242", psf->sf.channels, comm_frames, bit_width) ;
- psf_binheader_writef (psf, "b", comm_sample_rate, sizeof (comm_sample_rate)) ;
-
- /* AIFC chunks have some extra data. */
- if (comm_type == AIFC_MARKER)
- psf_binheader_writef (psf, "mb", comm_encoding, comm_zero_bytes, sizeof (comm_zero_bytes)) ;
-
- if (psf->instrument != NULL)
- { MARK_ID_POS m [4] ;
- INST_CHUNK ch ;
- unsigned short ct = 0 ;
-
- memset (m, 0, sizeof (m)) ;
- memset (&ch, 0, sizeof (ch)) ;
-
- ch.baseNote = psf->instrument->basenote ;
- ch.detune = psf->instrument->detune ;
- ch.lowNote = psf->instrument->key_lo ;
- ch.highNote = psf->instrument->key_hi ;
- ch.lowVelocity = psf->instrument->velocity_lo ;
- ch.highVelocity = psf->instrument->velocity_hi ;
- ch.gain = psf->instrument->gain ;
- if (psf->instrument->loops [0].mode != SF_LOOP_NONE)
- { ch.sustain_loop.playMode = 1 ;
- ch.sustain_loop.beginLoop = ct ;
- m [0].markerID = ct++ ;
- m [0].position = psf->instrument->loops [0].start ;
- ch.sustain_loop.endLoop = ct ;
- m [1].markerID = ct++ ;
- m [1].position = psf->instrument->loops [0].end ;
- } ;
- if (psf->instrument->loops [1].mode != SF_LOOP_NONE)
- { ch.release_loop.playMode = 1 ;
- ch.release_loop.beginLoop = ct ;
- m [2].markerID = ct++ ;
- m [2].position = psf->instrument->loops [1].start ;
- ch.release_loop.endLoop = ct ;
- m [3].markerID = ct++ ;
- m [3].position = psf->instrument->loops [1].end ;
- }
- else
- { ch.release_loop.playMode = 0 ;
- ch.release_loop.beginLoop = 0 ;
- ch.release_loop.endLoop = 0 ;
- } ;
-
- psf_binheader_writef (psf, "Em4111111", INST_MARKER, SIZEOF_INST_CHUNK, ch.baseNote, ch.detune,
- ch.lowNote, ch.highNote, ch.lowVelocity, ch.highVelocity) ;
- psf_binheader_writef (psf, "2222222", ch.gain, ch.sustain_loop.playMode,
- ch.sustain_loop.beginLoop, ch.sustain_loop.endLoop, ch.release_loop.playMode,
- ch.release_loop.beginLoop, ch.release_loop.endLoop) ;
-
- if (ct == 2)
- psf_binheader_writef (psf, "Em42241b241b",
- MARK_MARKER, 2 + 2 * (2 + 4 + 1 + 9), 2,
- m [0].markerID, m [0].position, 8, "beg loop", make_size_t (9),
- m [1].markerID, m [1].position, 8, "end loop", make_size_t (9)) ;
- else if (ct == 4)
- psf_binheader_writef (psf, "Em42 241b 241b 241b 241b",
- MARK_MARKER, 2 + 4 * (2 + 4 + 1 + 9), 4,
- m [0].markerID, m [0].position, 8, "beg loop", make_size_t (9),
- m [1].markerID, m [1].position, 8, "end loop", make_size_t (9),
- m [2].markerID, m [2].position, 8, "beg loop", make_size_t (9),
- m [3].markerID, m [3].position, 8, "end loop", make_size_t (9)) ;
- } ;
-
- if (psf->str_flags & SF_STR_LOCATE_START)
- aiff_write_strings (psf, SF_STR_LOCATE_START) ;
-
- if (psf->peak_info != NULL && psf->peak_info->peak_loc == SF_PEAK_START)
- { psf_binheader_writef (psf, "Em4", PEAK_MARKER, AIFF_PEAK_CHUNK_SIZE (psf->sf.channels)) ;
- psf_binheader_writef (psf, "E44", 1, time (NULL)) ;
- for (k = 0 ; k < psf->sf.channels ; k++)
- psf_binheader_writef (psf, "Eft8", (float) psf->peak_info->peaks [k].value, psf->peak_info->peaks [k].position) ;
- } ;
-
- /* Write SSND chunk. */
- psf_binheader_writef (psf, "Etm844", SSND_MARKER, psf->datalength + SIZEOF_SSND_CHUNK, 0, 0) ;
-
- /* Header construction complete so write it out. */
- psf_fwrite (psf->header, psf->headindex, 1, psf) ;
-
- if (psf->error)
- return psf->error ;
-
- psf->dataoffset = psf->headindex ;
-
- if (current < psf->dataoffset)
- psf_fseek (psf, psf->dataoffset, SEEK_SET) ;
- else if (current > 0)
- psf_fseek (psf, current, SEEK_SET) ;
-
- return psf->error ;
-} /* aiff_write_header */
-
-static int
-aiff_write_tailer (SF_PRIVATE *psf)
-{ int k ;
-
- /* Reset the current header length to zero. */
- psf->header [0] = 0 ;
- psf->headindex = 0 ;
-
- psf->dataend = psf_fseek (psf, 0, SEEK_END) ;
-
- /* Make sure tailer data starts at even byte offset. Pad if necessary. */
- if (psf->dataend % 2 == 1)
- { psf_fwrite (psf->header, 1, 1, psf) ;
- psf->dataend ++ ;
- } ;
-
- if (psf->peak_info != NULL && psf->peak_info->peak_loc == SF_PEAK_END)
- { psf_binheader_writef (psf, "Em4", PEAK_MARKER, AIFF_PEAK_CHUNK_SIZE (psf->sf.channels)) ;
- psf_binheader_writef (psf, "E44", 1, time (NULL)) ;
- for (k = 0 ; k < psf->sf.channels ; k++)
- psf_binheader_writef (psf, "Eft8", (float) psf->peak_info->peaks [k].value, psf->peak_info->peaks [k].position) ;
- } ;
-
- if (psf->str_flags & SF_STR_LOCATE_END)
- aiff_write_strings (psf, SF_STR_LOCATE_END) ;
-
- /* Write the tailer. */
- if (psf->headindex > 0)
- psf_fwrite (psf->header, psf->headindex, 1, psf) ;
-
- return 0 ;
-} /* aiff_write_tailer */
-
-static void
-aiff_write_strings (SF_PRIVATE *psf, int location)
-{ int k ;
-
- for (k = 0 ; k < SF_MAX_STRINGS ; k++)
- { if (psf->strings [k].type == 0)
- break ;
-
- if (psf->strings [k].flags != location)
- continue ;
-
- switch (psf->strings [k].type)
- { case SF_STR_SOFTWARE :
- psf_binheader_writef (psf, "EmS", APPL_MARKER, psf->strings [k].str) ;
- break ;
-
- case SF_STR_TITLE :
- psf_binheader_writef (psf, "EmS", NAME_MARKER, psf->strings [k].str) ;
- break ;
-
- case SF_STR_COPYRIGHT :
- psf_binheader_writef (psf, "EmS", c_MARKER, psf->strings [k].str) ;
- break ;
-
- case SF_STR_ARTIST :
- psf_binheader_writef (psf, "EmS", AUTH_MARKER, psf->strings [k].str) ;
- break ;
-
- case SF_STR_COMMENT :
- psf_binheader_writef (psf, "EmS", ANNO_MARKER, psf->strings [k].str) ;
- break ;
-
- /*
- case SF_STR_DATE :
- psf_binheader_writef (psf, "Ems", ICRD_MARKER, psf->strings [k].str) ;
- break ;
- */
- } ;
- } ;
-
- return ;
-} /* aiff_write_strings */
-
-static int
-aiff_command (SF_PRIVATE *psf, int command, void *data, int datasize)
-{
- /* Avoid compiler warnings. */
- psf = psf ;
- data = data ;
- datasize = datasize ;
-
- switch (command)
- { default : break ;
- } ;
-
- return 0 ;
-} /* aiff_command */
-
-static const char*
-get_loop_mode_str (short mode)
-{ switch (mode)
- { case 0 : return "none" ;
- case 1 : return "forward" ;
- case 2 : return "backward" ;
- } ;
-
- return "*** unknown" ;
-} /* get_loop_mode_str */
-
-static short
-get_loop_mode (short mode)
-{ switch (mode)
- { case 0 : return SF_LOOP_NONE ;
- case 1 : return SF_LOOP_FORWARD ;
- case 2 : return SF_LOOP_BACKWARD ;
- } ;
-
- return SF_LOOP_NONE ;
-} /* get_loop_mode */
-
-/*==========================================================================================
-** Rough hack at converting from 80 bit IEEE float in AIFF header to an int and
-** back again. It assumes that all sample rates are between 1 and 800MHz, which
-** should be OK as other sound file formats use a 32 bit integer to store sample
-** rate.
-** There is another (probably better) version in the source code to the SoX but it
-** has a copyright which probably prevents it from being allowable as GPL/LGPL.
-*/
-
-static int
-tenbytefloat2int (unsigned char *bytes)
-{ int val = 3 ;
-
- if (bytes [0] & 0x80) /* Negative number. */
- return 0 ;
-
- if (bytes [0] <= 0x3F) /* Less than 1. */
- return 1 ;
-
- if (bytes [0] > 0x40) /* Way too big. */
- return 0x4000000 ;
-
- if (bytes [0] == 0x40 && bytes [1] > 0x1C) /* Too big. */
- return 800000000 ;
-
- /* Ok, can handle it. */
-
- val = (bytes [2] << 23) | (bytes [3] << 15) | (bytes [4] << 7) | (bytes [5] >> 1) ;
-
- val >>= (29 - bytes [1]) ;
-
- return val ;
-} /* tenbytefloat2int */
-
-static void
-uint2tenbytefloat (unsigned int num, unsigned char *bytes)
-{ unsigned int mask = 0x40000000 ;
- int count ;
-
- if (num <= 1)
- { bytes [0] = 0x3F ;
- bytes [1] = 0xFF ;
- bytes [2] = 0x80 ;
- return ;
- } ;
-
- bytes [0] = 0x40 ;
-
- if (num >= mask)
- { bytes [1] = 0x1D ;
- return ;
- } ;
-
- for (count = 0 ; count <= 32 ; count ++)
- { if (num & mask)
- break ;
- mask >>= 1 ;
- } ;
-
- num <<= count + 1 ;
- bytes [1] = 29 - count ;
- bytes [2] = (num >> 24) & 0xFF ;
- bytes [3] = (num >> 16) & 0xFF ;
- bytes [4] = (num >> 8) & 0xFF ;
- bytes [5] = num & 0xFF ;
-
-} /* uint2tenbytefloat */
-
-static int
-aiff_read_basc_chunk (SF_PRIVATE * psf, int datasize)
-{ const char * type_str ;
- basc_CHUNK bc ;
-
- psf_binheader_readf (psf, "E442", &bc.version, &bc.numBeats, &bc.rootNote) ;
- psf_binheader_readf (psf, "E222", &bc.scaleType, &bc.sigNumerator, &bc.sigDenominator) ;
- psf_binheader_readf (psf, "E2j", &bc.loopType, datasize - sizeof (bc)) ;
-
- psf_log_printf (psf, " Version ? : %u\n Num Beats : %u\n Root Note : 0x%x\n",
- bc.version, bc.numBeats, bc.rootNote) ;
-
- switch (bc.scaleType)
- { case basc_SCALE_MINOR :
- type_str = "MINOR" ;
- break ;
- case basc_SCALE_MAJOR :
- type_str = "MAJOR" ;
- break ;
- case basc_SCALE_NEITHER :
- type_str = "NEITHER" ;
- break ;
- case basc_SCALE_BOTH :
- type_str = "BOTH" ;
- break ;
- default :
- type_str = "!!WRONG!!" ;
- break ;
- } ;
-
- psf_log_printf (psf, " ScaleType : 0x%x (%s)\n", bc.scaleType, type_str) ;
- psf_log_printf (psf, " Time Sig : %d/%d\n", bc.sigNumerator, bc.sigDenominator) ;
-
- switch (bc.loopType)
- { case basc_TYPE_ONE_SHOT :
- type_str = "One Shot" ;
- break ;
- case basc_TYPE_LOOP :
- type_str = "Loop" ;
- break ;
- default:
- type_str = "!!WRONG!!" ;
- break ;
- } ;
-
- psf_log_printf (psf, " Loop Type : 0x%x (%s)\n", bc.loopType, type_str) ;
-
- if ((psf->loop_info = calloc (1, sizeof (SF_LOOP_INFO))) == NULL)
- return SFE_MALLOC_FAILED ;
-
- psf->loop_info->time_sig_num = bc.sigNumerator ;
- psf->loop_info->time_sig_den = bc.sigDenominator ;
- psf->loop_info->loop_mode = (bc.loopType == basc_TYPE_ONE_SHOT) ? SF_LOOP_NONE : SF_LOOP_FORWARD ;
- psf->loop_info->num_beats = bc.numBeats ;
-
- /* Can always be recalculated from other known fields. */
- psf->loop_info->bpm = (1.0 / psf->sf.frames) * psf->sf.samplerate
- * ((bc.numBeats * 4.0) / bc.sigDenominator) * 60.0 ;
- psf->loop_info->root_key = bc.rootNote ;
-
- return 0 ;
-} /* aiff_read_basc_chunk */
-
-/*
-** Do not edit or modify anything in this comment block.
-** The arch-tag line is a file identity tag for the GNU Arch
-** revision control system.
-**
-** arch-tag: 7dec56ca-d6f2-48cf-863b-a72e7e17a5d9
-*/
diff --git a/libs/libsndfile/src/alaw.c b/libs/libsndfile/src/alaw.c
deleted file mode 100644
index a2d27cb58c..0000000000
--- a/libs/libsndfile/src/alaw.c
+++ /dev/null
@@ -1,544 +0,0 @@
-/*
-** Copyright (C) 1999-2005 Erik de Castro Lopo <erikd@mega-nerd.com>
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU Lesser General Public License as published by
-** the Free Software Foundation; either version 2.1 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU Lesser General Public License for more details.
-**
-** You should have received a copy of the GNU Lesser General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-*/
-
-#include "sndfile.h"
-#include "float_cast.h"
-#include "common.h"
-
-static sf_count_t alaw_read_alaw2s (SF_PRIVATE *psf, short *ptr, sf_count_t len) ;
-static sf_count_t alaw_read_alaw2i (SF_PRIVATE *psf, int *ptr, sf_count_t len) ;
-static sf_count_t alaw_read_alaw2f (SF_PRIVATE *psf, float *ptr, sf_count_t len) ;
-static sf_count_t alaw_read_alaw2d (SF_PRIVATE *psf, double *ptr, sf_count_t len) ;
-
-static sf_count_t alaw_write_s2alaw (SF_PRIVATE *psf, const short *ptr, sf_count_t len) ;
-static sf_count_t alaw_write_i2alaw (SF_PRIVATE *psf, const int *ptr, sf_count_t len) ;
-static sf_count_t alaw_write_f2alaw (SF_PRIVATE *psf, const float *ptr, sf_count_t len) ;
-static sf_count_t alaw_write_d2alaw (SF_PRIVATE *psf, const double *ptr, sf_count_t len) ;
-
-static void alaw2s_array (unsigned char *buffer, int count, short *ptr) ;
-static void alaw2i_array (unsigned char *buffer, int count, int *ptr) ;
-static void alaw2f_array (unsigned char *buffer, int count, float *ptr, float normfact) ;
-static void alaw2d_array (unsigned char *buffer, int count, double *ptr, double normfact) ;
-
-static void s2alaw_array (const short *buffer, int count, unsigned char *ptr) ;
-static void i2alaw_array (const int *buffer, int count, unsigned char *ptr) ;
-static void f2alaw_array (const float *buffer, int count, unsigned char *ptr, float normfact) ;
-static void d2alaw_array (const double *buffer, int count, unsigned char *ptr, double normfact) ;
-
-
-int
-alaw_init (SF_PRIVATE *psf)
-{
- if (psf->mode == SFM_READ || psf->mode == SFM_RDWR)
- { psf->read_short = alaw_read_alaw2s ;
- psf->read_int = alaw_read_alaw2i ;
- psf->read_float = alaw_read_alaw2f ;
- psf->read_double = alaw_read_alaw2d ;
- } ;
-
- if (psf->mode == SFM_WRITE || psf->mode == SFM_RDWR)
- { psf->write_short = alaw_write_s2alaw ;
- psf->write_int = alaw_write_i2alaw ;
- psf->write_float = alaw_write_f2alaw ;
- psf->write_double = alaw_write_d2alaw ;
- } ;
-
- psf->bytewidth = 1 ;
- psf->blockwidth = psf->sf.channels ;
-
- if (psf->filelength > psf->dataoffset)
- psf->datalength = (psf->dataend) ? psf->dataend - psf->dataoffset : psf->filelength - psf->dataoffset ;
- else
- psf->datalength = 0 ;
-
- psf->sf.frames = psf->datalength / psf->blockwidth ;
-
- return 0 ;
-} /* alaw_init */
-
-/*==============================================================================
- * Private static functions and data.
- */
-
-static
-short alaw_decode [256] =
-{ -5504, -5248, -6016, -5760, -4480, -4224, -4992, -4736,
- -7552, -7296, -8064, -7808, -6528, -6272, -7040, -6784,
- -2752, -2624, -3008, -2880, -2240, -2112, -2496, -2368,
- -3776, -3648, -4032, -3904, -3264, -3136, -3520, -3392,
- -22016, -20992, -24064, -23040, -17920, -16896, -19968, -18944,
- -30208, -29184, -32256, -31232, -26112, -25088, -28160, -27136,
- -11008, -10496, -12032, -11520, -8960, -8448, -9984, -9472,
- -15104, -14592, -16128, -15616, -13056, -12544, -14080, -13568,
- -344, -328, -376, -360, -280, -264, -312, -296,
- -472, -456, -504, -488, -408, -392, -440, -424,
- -88, -72, -120, -104, -24, -8, -56, -40,
- -216, -200, -248, -232, -152, -136, -184, -168,
- -1376, -1312, -1504, -1440, -1120, -1056, -1248, -1184,
- -1888, -1824, -2016, -1952, -1632, -1568, -1760, -1696,
- -688, -656, -752, -720, -560, -528, -624, -592,
- -944, -912, -1008, -976, -816, -784, -880, -848,
- 5504, 5248, 6016, 5760, 4480, 4224, 4992, 4736,
- 7552, 7296, 8064, 7808, 6528, 6272, 7040, 6784,
- 2752, 2624, 3008, 2880, 2240, 2112, 2496, 2368,
- 3776, 3648, 4032, 3904, 3264, 3136, 3520, 3392,
- 22016, 20992, 24064, 23040, 17920, 16896, 19968, 18944,
- 30208, 29184, 32256, 31232, 26112, 25088, 28160, 27136,
- 11008, 10496, 12032, 11520, 8960, 8448, 9984, 9472,
- 15104, 14592, 16128, 15616, 13056, 12544, 14080, 13568,
- 344, 328, 376, 360, 280, 264, 312, 296,
- 472, 456, 504, 488, 408, 392, 440, 424,
- 88, 72, 120, 104, 24, 8, 56, 40,
- 216, 200, 248, 232, 152, 136, 184, 168,
- 1376, 1312, 1504, 1440, 1120, 1056, 1248, 1184,
- 1888, 1824, 2016, 1952, 1632, 1568, 1760, 1696,
- 688, 656, 752, 720, 560, 528, 624, 592,
- 944, 912, 1008, 976, 816, 784, 880, 848
-} ; /* alaw_decode */
-
-static
-unsigned char alaw_encode [2048 + 1] =
-{ 0xd5, 0xd4, 0xd7, 0xd6, 0xd1, 0xd0, 0xd3, 0xd2, 0xdd, 0xdc, 0xdf, 0xde,
- 0xd9, 0xd8, 0xdb, 0xda, 0xc5, 0xc4, 0xc7, 0xc6, 0xc1, 0xc0, 0xc3, 0xc2,
- 0xcd, 0xcc, 0xcf, 0xce, 0xc9, 0xc8, 0xcb, 0xca, 0xf5, 0xf5, 0xf4, 0xf4,
- 0xf7, 0xf7, 0xf6, 0xf6, 0xf1, 0xf1, 0xf0, 0xf0, 0xf3, 0xf3, 0xf2, 0xf2,
- 0xfd, 0xfd, 0xfc, 0xfc, 0xff, 0xff, 0xfe, 0xfe, 0xf9, 0xf9, 0xf8, 0xf8,
- 0xfb, 0xfb, 0xfa, 0xfa, 0xe5, 0xe5, 0xe5, 0xe5, 0xe4, 0xe4, 0xe4, 0xe4,
- 0xe7, 0xe7, 0xe7, 0xe7, 0xe6, 0xe6, 0xe6, 0xe6, 0xe1, 0xe1, 0xe1, 0xe1,
- 0xe0, 0xe0, 0xe0, 0xe0, 0xe3, 0xe3, 0xe3, 0xe3, 0xe2, 0xe2, 0xe2, 0xe2,
- 0xed, 0xed, 0xed, 0xed, 0xec, 0xec, 0xec, 0xec, 0xef, 0xef, 0xef, 0xef,
- 0xee, 0xee, 0xee, 0xee, 0xe9, 0xe9, 0xe9, 0xe9, 0xe8, 0xe8, 0xe8, 0xe8,
- 0xeb, 0xeb, 0xeb, 0xeb, 0xea, 0xea, 0xea, 0xea, 0x95, 0x95, 0x95, 0x95,
- 0x95, 0x95, 0x95, 0x95, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94,
- 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x96, 0x96, 0x96, 0x96,
- 0x96, 0x96, 0x96, 0x96, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91,
- 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x93, 0x93, 0x93, 0x93,
- 0x93, 0x93, 0x93, 0x93, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92,
- 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9c, 0x9c, 0x9c, 0x9c,
- 0x9c, 0x9c, 0x9c, 0x9c, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f,
- 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x99, 0x99, 0x99, 0x99,
- 0x99, 0x99, 0x99, 0x99, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98,
- 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9a, 0x9a, 0x9a, 0x9a,
- 0x9a, 0x9a, 0x9a, 0x9a, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85,
- 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x84, 0x84, 0x84, 0x84,
- 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84,
- 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87,
- 0x87, 0x87, 0x87, 0x87, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86,
- 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x81, 0x81, 0x81, 0x81,
- 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81,
- 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
- 0x80, 0x80, 0x80, 0x80, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83,
- 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x82, 0x82, 0x82, 0x82,
- 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82,
- 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d,
- 0x8d, 0x8d, 0x8d, 0x8d, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c,
- 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8f, 0x8f, 0x8f, 0x8f,
- 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f,
- 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e,
- 0x8e, 0x8e, 0x8e, 0x8e, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89,
- 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x88, 0x88, 0x88, 0x88,
- 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88,
- 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b,
- 0x8b, 0x8b, 0x8b, 0x8b, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a,
- 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0xb5, 0xb5, 0xb5, 0xb5,
- 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5,
- 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5,
- 0xb5, 0xb5, 0xb5, 0xb5, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4,
- 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4,
- 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4,
- 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7,
- 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7,
- 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb6, 0xb6, 0xb6, 0xb6,
- 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6,
- 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6,
- 0xb6, 0xb6, 0xb6, 0xb6, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1,
- 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1,
- 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1,
- 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0,
- 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0,
- 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb3, 0xb3, 0xb3, 0xb3,
- 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3,
- 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3,
- 0xb3, 0xb3, 0xb3, 0xb3, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2,
- 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2,
- 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2,
- 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd,
- 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd,
- 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbc, 0xbc, 0xbc, 0xbc,
- 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc,
- 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc,
- 0xbc, 0xbc, 0xbc, 0xbc, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf,
- 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf,
- 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf,
- 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe,
- 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe,
- 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xb9, 0xb9, 0xb9, 0xb9,
- 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9,
- 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9,
- 0xb9, 0xb9, 0xb9, 0xb9, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8,
- 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8,
- 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8,
- 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb,
- 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb,
- 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xba, 0xba, 0xba, 0xba,
- 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba,
- 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba,
- 0xba, 0xba, 0xba, 0xba, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5,
- 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5,
- 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5,
- 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5,
- 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5,
- 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa4, 0xa4, 0xa4, 0xa4,
- 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4,
- 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4,
- 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4,
- 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4,
- 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4,
- 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7,
- 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7,
- 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7,
- 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7,
- 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7,
- 0xa7, 0xa7, 0xa7, 0xa7, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6,
- 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6,
- 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6,
- 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6,
- 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6,
- 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa1, 0xa1, 0xa1, 0xa1,
- 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1,
- 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1,
- 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1,
- 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1,
- 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1,
- 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0,
- 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0,
- 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0,
- 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0,
- 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0,
- 0xa0, 0xa0, 0xa0, 0xa0, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3,
- 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3,
- 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3,
- 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3,
- 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3,
- 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa2, 0xa2, 0xa2, 0xa2,
- 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2,
- 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2,
- 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2,
- 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2,
- 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2,
- 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad,
- 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad,
- 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad,
- 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad,
- 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad,
- 0xad, 0xad, 0xad, 0xad, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac,
- 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac,
- 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac,
- 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac,
- 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac,
- 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xaf, 0xaf, 0xaf, 0xaf,
- 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf,
- 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf,
- 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf,
- 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf,
- 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf,
- 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae,
- 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae,
- 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae,
- 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae,
- 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae,
- 0xae, 0xae, 0xae, 0xae, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9,
- 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9,
- 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9,
- 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9,
- 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9,
- 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa8, 0xa8, 0xa8, 0xa8,
- 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8,
- 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8,
- 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8,
- 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8,
- 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8,
- 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab,
- 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab,
- 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab,
- 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab,
- 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab,
- 0xab, 0xab, 0xab, 0xab, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
- 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
- 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
- 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
- 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
- 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x2a
-} ; /* alaw_encode */
-
-static inline void
-alaw2s_array (unsigned char *buffer, int count, short *ptr)
-{ while (--count >= 0)
- ptr [count] = alaw_decode [(int) buffer [count]] ;
-} /* alaw2s_array */
-
-static inline void
-alaw2i_array (unsigned char *buffer, int count, int *ptr)
-{ while (--count >= 0)
- ptr [count] = alaw_decode [(int) buffer [count]] << 16 ;
-} /* alaw2i_array */
-
-static inline void
-alaw2f_array (unsigned char *buffer, int count, float *ptr, float normfact)
-{ while (--count >= 0)
- ptr [count] = normfact * alaw_decode [(int) buffer [count]] ;
-} /* alaw2f_array */
-
-static inline void
-alaw2d_array (unsigned char *buffer, int count, double *ptr, double normfact)
-{ while (--count >= 0)
- ptr [count] = normfact * alaw_decode [(int) buffer [count]] ;
-} /* alaw2d_array */
-
-static inline void
-s2alaw_array (const short *ptr, int count, unsigned char *buffer)
-{ while (--count >= 0)
- { if (ptr [count] >= 0)
- buffer [count] = alaw_encode [ptr [count] / 16] ;
- else
- buffer [count] = 0x7F & alaw_encode [ptr [count] / -16] ;
- } ;
-} /* s2alaw_array */
-
-static inline void
-i2alaw_array (const int *ptr, int count, unsigned char *buffer)
-{ while (--count >= 0)
- { if (ptr [count] >= 0)
- buffer [count] = alaw_encode [ptr [count] >> (16 + 4)] ;
- else
- buffer [count] = 0x7F & alaw_encode [- ptr [count] >> (16 + 4)] ;
- } ;
-} /* i2alaw_array */
-
-static inline void
-f2alaw_array (const float *ptr, int count, unsigned char *buffer, float normfact)
-{ while (--count >= 0)
- { if (ptr [count] >= 0)
- buffer [count] = alaw_encode [lrintf (normfact * ptr [count])] ;
- else
- buffer [count] = 0x7F & alaw_encode [- lrintf (normfact * ptr [count])] ;
- } ;
-} /* f2alaw_array */
-
-static inline void
-d2alaw_array (const double *ptr, int count, unsigned char *buffer, double normfact)
-{ while (--count >= 0)
- { if (ptr [count] >= 0)
- buffer [count] = alaw_encode [lrint (normfact * ptr [count])] ;
- else
- buffer [count] = 0x7F & alaw_encode [- lrint (normfact * ptr [count])] ;
- } ;
-} /* d2alaw_array */
-
-/*==============================================================================
-*/
-
-static sf_count_t
-alaw_read_alaw2s (SF_PRIVATE *psf, short *ptr, sf_count_t len)
-{ int bufferlen, readcount ;
- sf_count_t total = 0 ;
-
- bufferlen = ARRAY_LEN (psf->u.ucbuf) ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- readcount = psf_fread (psf->u.ucbuf, 1, bufferlen, psf) ;
- alaw2s_array (psf->u.ucbuf, readcount, ptr + total) ;
- total += readcount ;
- if (readcount < bufferlen)
- break ;
- len -= readcount ;
- } ;
-
- return total ;
-} /* alaw_read_alaw2s */
-
-static sf_count_t
-alaw_read_alaw2i (SF_PRIVATE *psf, int *ptr, sf_count_t len)
-{ int bufferlen, readcount ;
- sf_count_t total = 0 ;
-
- bufferlen = ARRAY_LEN (psf->u.ucbuf) ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- readcount = psf_fread (psf->u.ucbuf, 1, bufferlen, psf) ;
- alaw2i_array (psf->u.ucbuf, readcount, ptr + total) ;
- total += readcount ;
- if (readcount < bufferlen)
- break ;
- len -= readcount ;
- } ;
-
- return total ;
-} /* alaw_read_alaw2i */
-
-static sf_count_t
-alaw_read_alaw2f (SF_PRIVATE *psf, float *ptr, sf_count_t len)
-{ int bufferlen, readcount ;
- sf_count_t total = 0 ;
- float normfact ;
-
- normfact = (psf->norm_float == SF_TRUE) ? 1.0 / ((float) 0x8000) : 1.0 ;
-
- bufferlen = ARRAY_LEN (psf->u.ucbuf) ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- readcount = psf_fread (psf->u.ucbuf, 1, bufferlen, psf) ;
- alaw2f_array (psf->u.ucbuf, readcount, ptr + total, normfact) ;
- total += readcount ;
- if (readcount < bufferlen)
- break ;
- len -= readcount ;
- } ;
-
- return total ;
-} /* alaw_read_alaw2f */
-
-static sf_count_t
-alaw_read_alaw2d (SF_PRIVATE *psf, double *ptr, sf_count_t len)
-{ int bufferlen, readcount ;
- sf_count_t total = 0 ;
- double normfact ;
-
- normfact = (psf->norm_double) ? 1.0 / ((double) 0x8000) : 1.0 ;
- bufferlen = ARRAY_LEN (psf->u.ucbuf) ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- readcount = psf_fread (psf->u.ucbuf, 1, bufferlen, psf) ;
- alaw2d_array (psf->u.ucbuf, readcount, ptr + total, normfact) ;
- total += readcount ;
- if (readcount < bufferlen)
- break ;
- len -= readcount ;
- } ;
-
- return total ;
-} /* alaw_read_alaw2d */
-
-/*=============================================================================================
-*/
-
-static sf_count_t
-alaw_write_s2alaw (SF_PRIVATE *psf, const short *ptr, sf_count_t len)
-{ int bufferlen, writecount ;
- sf_count_t total = 0 ;
-
- bufferlen = ARRAY_LEN (psf->u.ucbuf) ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- s2alaw_array (ptr + total, bufferlen, psf->u.ucbuf) ;
- writecount = psf_fwrite (psf->u.ucbuf, 1, bufferlen, psf) ;
- total += writecount ;
- if (writecount < bufferlen)
- break ;
- len -= writecount ;
- } ;
-
- return total ;
-} /* alaw_write_s2alaw */
-
-static sf_count_t
-alaw_write_i2alaw (SF_PRIVATE *psf, const int *ptr, sf_count_t len)
-{ int bufferlen, writecount ;
- sf_count_t total = 0 ;
-
- bufferlen = ARRAY_LEN (psf->u.ucbuf) ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- i2alaw_array (ptr + total, bufferlen, psf->u.ucbuf) ;
- writecount = psf_fwrite (psf->u.ucbuf, 1, bufferlen, psf) ;
- total += writecount ;
- if (writecount < bufferlen)
- break ;
- len -= writecount ;
- } ;
-
- return total ;
-} /* alaw_write_i2alaw */
-
-static sf_count_t
-alaw_write_f2alaw (SF_PRIVATE *psf, const float *ptr, sf_count_t len)
-{ int bufferlen, writecount ;
- sf_count_t total = 0 ;
- float normfact ;
-
- normfact = (psf->norm_float == SF_TRUE) ? (1.0 * 0x7FFF) / 16.0 : 1.0 / 16 ;
-
- bufferlen = ARRAY_LEN (psf->u.ucbuf) ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- f2alaw_array (ptr + total, bufferlen, psf->u.ucbuf, normfact) ;
- writecount = psf_fwrite (psf->u.ucbuf, 1, bufferlen, psf) ;
- total += writecount ;
- if (writecount < bufferlen)
- break ;
- len -= writecount ;
- } ;
-
- return total ;
-} /* alaw_write_f2alaw */
-
-static sf_count_t
-alaw_write_d2alaw (SF_PRIVATE *psf, const double *ptr, sf_count_t len)
-{ int bufferlen, writecount ;
- sf_count_t total = 0 ;
- double normfact ;
-
- normfact = (psf->norm_double) ? (1.0 * 0x7FFF) / 16.0 : 1.0 / 16.0 ;
-
- bufferlen = ARRAY_LEN (psf->u.ucbuf) ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- d2alaw_array (ptr + total, bufferlen, psf->u.ucbuf, normfact) ;
- writecount = psf_fwrite (psf->u.ucbuf, 1, bufferlen, psf) ;
- total += writecount ;
- if (writecount < bufferlen)
- break ;
- len -= writecount ;
- } ;
-
- return total ;
-} /* alaw_write_d2alaw */
-
-/*
-** Do not edit or modify anything in this comment block.
-** The arch-tag line is a file identity tag for the GNU Arch
-** revision control system.
-**
-** arch-tag: 289ccfc2-42a6-4f1f-a29f-4dcc9bfa8752
-*/
diff --git a/libs/libsndfile/src/au.c b/libs/libsndfile/src/au.c
deleted file mode 100644
index 3a5f93bd90..0000000000
--- a/libs/libsndfile/src/au.c
+++ /dev/null
@@ -1,453 +0,0 @@
-/*
-** Copyright (C) 1999-2004 Erik de Castro Lopo <erikd@mega-nerd.com>
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU Lesser General Public License as published by
-** the Free Software Foundation; either version 2.1 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU Lesser General Public License for more details.
-**
-** You should have received a copy of the GNU Lesser General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-*/
-
-#include "sfconfig.h"
-
-#include <stdio.h>
-#include <fcntl.h>
-#include <string.h>
-#include <ctype.h>
-
-#include "sndfile.h"
-#include "sfendian.h"
-#include "common.h"
-
-/*------------------------------------------------------------------------------
-** Macros to handle big/little endian issues.
-*/
-
-#define DOTSND_MARKER (MAKE_MARKER ('.', 's', 'n', 'd'))
-#define DNSDOT_MARKER (MAKE_MARKER ('d', 'n', 's', '.'))
-
-#define AU_DATA_OFFSET 24
-
-/*------------------------------------------------------------------------------
-** Known AU file encoding types.
-*/
-
-enum
-{ AU_ENCODING_ULAW_8 = 1, /* 8-bit u-law samples */
- AU_ENCODING_PCM_8 = 2, /* 8-bit linear samples */
- AU_ENCODING_PCM_16 = 3, /* 16-bit linear samples */
- AU_ENCODING_PCM_24 = 4, /* 24-bit linear samples */
- AU_ENCODING_PCM_32 = 5, /* 32-bit linear samples */
-
- AU_ENCODING_FLOAT = 6, /* floating-point samples */
- AU_ENCODING_DOUBLE = 7, /* double-precision float samples */
- AU_ENCODING_INDIRECT = 8, /* fragmented sampled data */
- AU_ENCODING_NESTED = 9, /* ? */
- AU_ENCODING_DSP_CORE = 10, /* DSP program */
- AU_ENCODING_DSP_DATA_8 = 11, /* 8-bit fixed-point samples */
- AU_ENCODING_DSP_DATA_16 = 12, /* 16-bit fixed-point samples */
- AU_ENCODING_DSP_DATA_24 = 13, /* 24-bit fixed-point samples */
- AU_ENCODING_DSP_DATA_32 = 14, /* 32-bit fixed-point samples */
-
- AU_ENCODING_DISPLAY = 16, /* non-audio display data */
- AU_ENCODING_MULAW_SQUELCH = 17, /* ? */
- AU_ENCODING_EMPHASIZED = 18, /* 16-bit linear with emphasis */
- AU_ENCODING_NEXT = 19, /* 16-bit linear with compression (NEXT) */
- AU_ENCODING_COMPRESSED_EMPHASIZED = 20, /* A combination of the two above */
- AU_ENCODING_DSP_COMMANDS = 21, /* Music Kit DSP commands */
- AU_ENCODING_DSP_COMMANDS_SAMPLES = 22, /* ? */
-
- AU_ENCODING_ADPCM_G721_32 = 23, /* G721 32 kbs ADPCM - 4 bits per sample. */
- AU_ENCODING_ADPCM_G722 = 24, /* G722 64 kbs ADPCM */
- AU_ENCODING_ADPCM_G723_24 = 25, /* G723 24 kbs ADPCM - 3 bits per sample. */
- AU_ENCODING_ADPCM_G723_40 = 26, /* G723 40 kbs ADPCM - 5 bits per sample. */
-
- AU_ENCODING_ALAW_8 = 27
-} ;
-
-/*------------------------------------------------------------------------------
-** Typedefs.
-*/
-
-typedef struct
-{ int dataoffset ;
- int datasize ;
- int encoding ;
- int samplerate ;
- int channels ;
-} AU_FMT ;
-
-
-/*------------------------------------------------------------------------------
-** Private static functions.
-*/
-
-static int au_close (SF_PRIVATE *psf) ;
-
-static int au_format_to_encoding (int format) ;
-
-static int au_write_header (SF_PRIVATE *psf, int calc_length) ;
-static int au_read_header (SF_PRIVATE *psf) ;
-
-/*------------------------------------------------------------------------------
-** Public function.
-*/
-
-int
-au_open (SF_PRIVATE *psf)
-{ int subformat ;
- int error = 0 ;
-
- if (psf->mode == SFM_READ || (psf->mode == SFM_RDWR && psf->filelength > 0))
- { if ((error = au_read_header (psf)))
- return error ;
- } ;
-
- if ((psf->sf.format & SF_FORMAT_TYPEMASK) != SF_FORMAT_AU)
- return SFE_BAD_OPEN_FORMAT ;
-
- subformat = psf->sf.format & SF_FORMAT_SUBMASK ;
-
- if (psf->mode == SFM_WRITE || psf->mode == SFM_RDWR)
- { psf->endian = psf->sf.format & SF_FORMAT_ENDMASK ;
- if (CPU_IS_LITTLE_ENDIAN && psf->endian == SF_ENDIAN_CPU)
- psf->endian = SF_ENDIAN_LITTLE ;
- else if (psf->endian != SF_ENDIAN_LITTLE)
- psf->endian = SF_ENDIAN_BIG ;
-
- if (au_write_header (psf, SF_FALSE))
- return psf->error ;
-
- psf->write_header = au_write_header ;
- } ;
-
- psf->container_close = au_close ;
-
- psf->blockwidth = psf->bytewidth * psf->sf.channels ;
-
- switch (subformat)
- { case SF_FORMAT_ULAW : /* 8-bit Ulaw encoding. */
- ulaw_init (psf) ;
- break ;
-
- case SF_FORMAT_PCM_S8 : /* 8-bit linear PCM. */
- error = pcm_init (psf) ;
- break ;
-
- case SF_FORMAT_PCM_16 : /* 16-bit linear PCM. */
- case SF_FORMAT_PCM_24 : /* 24-bit linear PCM */
- case SF_FORMAT_PCM_32 : /* 32-bit linear PCM. */
- error = pcm_init (psf) ;
- break ;
-
- case SF_FORMAT_ALAW : /* 8-bit Alaw encoding. */
- alaw_init (psf) ;
- break ;
-
- /* Lite remove start */
- case SF_FORMAT_FLOAT : /* 32-bit floats. */
- error = float32_init (psf) ;
- break ;
-
- case SF_FORMAT_DOUBLE : /* 64-bit double precision floats. */
- 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 ;
- } ;
-
- return error ;
-} /* au_open */
-
-/*------------------------------------------------------------------------------
-*/
-
-static int
-au_close (SF_PRIVATE *psf)
-{
- if (psf->mode == SFM_WRITE || psf->mode == SFM_RDWR)
- au_write_header (psf, SF_TRUE) ;
-
- return 0 ;
-} /* au_close */
-
-static int
-au_write_header (SF_PRIVATE *psf, int calc_length)
-{ sf_count_t current ;
- int encoding, datalength ;
-
- if (psf->pipeoffset > 0)
- return 0 ;
-
- current = psf_ftell (psf) ;
-
- if (calc_length)
- { psf->filelength = psf_get_filelen (psf) ;
-
- psf->datalength = psf->filelength - psf->dataoffset ;
- if (psf->dataend)
- psf->datalength -= psf->filelength - psf->dataend ;
-
- psf->sf.frames = psf->datalength / (psf->bytewidth * psf->sf.channels) ;
- } ;
-
- encoding = au_format_to_encoding (psf->sf.format & SF_FORMAT_SUBMASK) ;
- if (! encoding)
- return (psf->error = SFE_BAD_OPEN_FORMAT) ;
-
- /* Reset the current header length to zero. */
- psf->header [0] = 0 ;
- psf->headindex = 0 ;
-
- /*
- ** Only attempt to seek if we are not writng to a pipe. If we are
- ** writing to a pipe we shouldn't be here anyway.
- */
- if (psf->is_pipe == SF_FALSE)
- psf_fseek (psf, 0, SEEK_SET) ;
-
- /*
- ** AU format files allow a datalength value of -1 if the datalength
- ** is not know at the time the header is written.
- ** Also use this value of -1 if the datalength > 2 gigabytes.
- */
- if (psf->datalength < 0 || psf->datalength > 0x7FFFFFFF)
- datalength = -1 ;
- else
- datalength = (int) (psf->datalength & 0x7FFFFFFF) ;
-
- if (psf->endian == SF_ENDIAN_BIG)
- { psf_binheader_writef (psf, "Em4", DOTSND_MARKER, AU_DATA_OFFSET) ;
- psf_binheader_writef (psf, "E4444", datalength, encoding, psf->sf.samplerate, psf->sf.channels) ;
- }
- else if (psf->endian == SF_ENDIAN_LITTLE)
- { psf_binheader_writef (psf, "em4", DNSDOT_MARKER, AU_DATA_OFFSET) ;
- psf_binheader_writef (psf, "e4444", datalength, encoding, psf->sf.samplerate, psf->sf.channels) ;
- }
- else
- return (psf->error = SFE_BAD_OPEN_FORMAT) ;
-
- /* Header construction complete so write it out. */
- psf_fwrite (psf->header, psf->headindex, 1, psf) ;
-
- if (psf->error)
- return psf->error ;
-
- psf->dataoffset = psf->headindex ;
-
- if (current > 0)
- psf_fseek (psf, current, SEEK_SET) ;
-
- return psf->error ;
-} /* au_write_header */
-
-static int
-au_format_to_encoding (int format)
-{
- switch (format)
- { case SF_FORMAT_PCM_S8 : return AU_ENCODING_PCM_8 ;
- case SF_FORMAT_PCM_16 : return AU_ENCODING_PCM_16 ;
- case SF_FORMAT_PCM_24 : return AU_ENCODING_PCM_24 ;
- case SF_FORMAT_PCM_32 : return AU_ENCODING_PCM_32 ;
-
- case SF_FORMAT_FLOAT : return AU_ENCODING_FLOAT ;
- case SF_FORMAT_DOUBLE : return AU_ENCODING_DOUBLE ;
-
- case SF_FORMAT_ULAW : return AU_ENCODING_ULAW_8 ;
- case SF_FORMAT_ALAW : return AU_ENCODING_ALAW_8 ;
-
- case SF_FORMAT_G721_32 : return AU_ENCODING_ADPCM_G721_32 ;
- case SF_FORMAT_G723_24 : return AU_ENCODING_ADPCM_G723_24 ;
- case SF_FORMAT_G723_40 : return AU_ENCODING_ADPCM_G723_40 ;
-
- default : break ;
- } ;
- return 0 ;
-} /* au_format_to_encoding */
-
-static int
-au_read_header (SF_PRIVATE *psf)
-{ AU_FMT au_fmt ;
- int marker, dword ;
-
- memset (&au_fmt, 0, sizeof (au_fmt)) ;
- psf_binheader_readf (psf, "pm", 0, &marker) ;
- psf_log_printf (psf, "%M\n", marker) ;
-
- if (marker == DOTSND_MARKER)
- { psf->endian = SF_ENDIAN_BIG ;
-
- psf_binheader_readf (psf, "E44444", &(au_fmt.dataoffset), &(au_fmt.datasize),
- &(au_fmt.encoding), &(au_fmt.samplerate), &(au_fmt.channels)) ;
- }
- else if (marker == DNSDOT_MARKER)
- { psf->endian = SF_ENDIAN_LITTLE ;
- psf_binheader_readf (psf, "e44444", &(au_fmt.dataoffset), &(au_fmt.datasize),
- &(au_fmt.encoding), &(au_fmt.samplerate), &(au_fmt.channels)) ;
- }
- else
- return SFE_AU_NO_DOTSND ;
-
- psf_log_printf (psf, " Data Offset : %d\n", au_fmt.dataoffset) ;
-
- if (psf->fileoffset > 0 && au_fmt.datasize == -1)
- { psf_log_printf (psf, " Data Size : -1\n") ;
- return SFE_AU_EMBED_BAD_LEN ;
- } ;
-
- if (psf->fileoffset > 0)
- { psf->filelength = au_fmt.dataoffset + au_fmt.datasize ;
- psf_log_printf (psf, " Data Size : %d\n", au_fmt.datasize) ;
- }
- else if (au_fmt.datasize == -1 || au_fmt.dataoffset + au_fmt.datasize == psf->filelength)
- psf_log_printf (psf, " Data Size : %d\n", au_fmt.datasize) ;
- else if (au_fmt.dataoffset + au_fmt.datasize < psf->filelength)
- { psf->filelength = au_fmt.dataoffset + au_fmt.datasize ;
- psf_log_printf (psf, " Data Size : %d\n", au_fmt.datasize) ;
- }
- else
- { dword = psf->filelength - au_fmt.dataoffset ;
- psf_log_printf (psf, " Data Size : %d (should be %d)\n", au_fmt.datasize, dword) ;
- au_fmt.datasize = dword ;
- } ;
-
- psf->dataoffset = au_fmt.dataoffset ;
- psf->datalength = psf->filelength - psf->dataoffset ;
-
- if (psf_ftell (psf) < psf->dataoffset)
- psf_binheader_readf (psf, "j", psf->dataoffset - psf_ftell (psf)) ;
-
- psf->sf.samplerate = au_fmt.samplerate ;
- psf->sf.channels = au_fmt.channels ;
-
- /* Only fill in type major. */
- if (psf->endian == SF_ENDIAN_BIG)
- psf->sf.format = SF_FORMAT_AU ;
- else if (psf->endian == SF_ENDIAN_LITTLE)
- psf->sf.format = SF_ENDIAN_LITTLE | SF_FORMAT_AU ;
-
- psf_log_printf (psf, " Encoding : %d => ", au_fmt.encoding) ;
-
- psf->sf.format = psf->sf.format & SF_FORMAT_ENDMASK ;
-
- switch (au_fmt.encoding)
- { case AU_ENCODING_ULAW_8 :
- psf->sf.format |= SF_FORMAT_AU | SF_FORMAT_ULAW ;
- psf->bytewidth = 1 ; /* Before decoding */
- psf_log_printf (psf, "8-bit ISDN u-law\n") ;
- break ;
-
- case AU_ENCODING_PCM_8 :
- psf->sf.format |= SF_FORMAT_AU | SF_FORMAT_PCM_S8 ;
- psf->bytewidth = 1 ;
- psf_log_printf (psf, "8-bit linear PCM\n") ;
- break ;
-
- case AU_ENCODING_PCM_16 :
- psf->sf.format |= SF_FORMAT_AU | SF_FORMAT_PCM_16 ;
- psf->bytewidth = 2 ;
- psf_log_printf (psf, "16-bit linear PCM\n") ;
- break ;
-
- case AU_ENCODING_PCM_24 :
- psf->sf.format |= SF_FORMAT_AU | SF_FORMAT_PCM_24 ;
- psf->bytewidth = 3 ;
- psf_log_printf (psf, "24-bit linear PCM\n") ;
- break ;
-
- case AU_ENCODING_PCM_32 :
- psf->sf.format |= SF_FORMAT_AU | SF_FORMAT_PCM_32 ;
- psf->bytewidth = 4 ;
- psf_log_printf (psf, "32-bit linear PCM\n") ;
- break ;
-
- case AU_ENCODING_FLOAT :
- psf->sf.format |= SF_FORMAT_AU | SF_FORMAT_FLOAT ;
- psf->bytewidth = 4 ;
- psf_log_printf (psf, "32-bit float\n") ;
- break ;
-
- case AU_ENCODING_DOUBLE :
- psf->sf.format |= SF_FORMAT_AU | SF_FORMAT_DOUBLE ;
- psf->bytewidth = 8 ;
- psf_log_printf (psf, "64-bit double precision float\n") ;
- break ;
-
- case AU_ENCODING_ALAW_8 :
- psf->sf.format |= SF_FORMAT_AU | SF_FORMAT_ALAW ;
- psf->bytewidth = 1 ; /* Before decoding */
- psf_log_printf (psf, "8-bit ISDN A-law\n") ;
- break ;
-
- case AU_ENCODING_ADPCM_G721_32 :
- psf->sf.format |= SF_FORMAT_AU | SF_FORMAT_G721_32 ;
- psf->bytewidth = 0 ;
- psf_log_printf (psf, "G721 32kbs ADPCM\n") ;
- break ;
-
- case AU_ENCODING_ADPCM_G723_24 :
- psf->sf.format |= SF_FORMAT_AU | SF_FORMAT_G723_24 ;
- psf->bytewidth = 0 ;
- psf_log_printf (psf, "G723 24kbs ADPCM\n") ;
- break ;
-
- case AU_ENCODING_ADPCM_G723_40 :
- psf->sf.format |= SF_FORMAT_AU | SF_FORMAT_G723_40 ;
- psf->bytewidth = 0 ;
- psf_log_printf (psf, "G723 40kbs ADPCM\n") ;
- break ;
-
- case AU_ENCODING_ADPCM_G722 :
- psf_log_printf (psf, "G722 64 kbs ADPCM (unsupported)\n") ;
- break ;
-
- case AU_ENCODING_NEXT :
- psf_log_printf (psf, "Weird NeXT encoding format (unsupported)\n") ;
- break ;
-
- default :
- psf_log_printf (psf, "Unknown!!\n") ;
- break ;
- } ;
-
- psf_log_printf (psf, " Sample Rate : %d\n", au_fmt.samplerate) ;
- psf_log_printf (psf, " Channels : %d\n", au_fmt.channels) ;
-
- psf->blockwidth = psf->sf.channels * psf->bytewidth ;
-
- if (! psf->sf.frames && psf->blockwidth)
- psf->sf.frames = (psf->filelength - psf->dataoffset) / psf->blockwidth ;
-
- return 0 ;
-} /* au_read_header */
-/*
-** Do not edit or modify anything in this comment block.
-** The arch-tag line is a file identity tag for the GNU Arch
-** revision control system.
-**
-** arch-tag: 31f691b1-cde9-4ed2-9469-6bca60fb9cd0
-*/
diff --git a/libs/libsndfile/src/avr.c b/libs/libsndfile/src/avr.c
deleted file mode 100644
index ad02c048ac..0000000000
--- a/libs/libsndfile/src/avr.c
+++ /dev/null
@@ -1,254 +0,0 @@
-/*
-** Copyright (C) 2004-2006 Erik de Castro Lopo <erikd@mega-nerd.com>
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU Lesser General Public License as published by
-** the Free Software Foundation; either version 2.1 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU Lesser General Public License for more details.
-**
-** You should have received a copy of the GNU Lesser General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-*/
-
-#include "sfconfig.h"
-
-#include <stdio.h>
-#include <string.h>
-
-#include "sndfile.h"
-#include "sfendian.h"
-#include "common.h"
-
-#define TWOBIT_MARKER (MAKE_MARKER ('2', 'B', 'I', 'T'))
-#define AVR_HDR_SIZE 128
-
-#define SFE_AVR_X 666
-
-/*
-** From: hyc@hanauma.Jpl.Nasa.Gov (Howard Chu)
-**
-** A lot of PD software exists to play Mac .snd files on the ST. One other
-** format that seems pretty popular (used by a number of commercial packages)
-** is the AVR format (from Audio Visual Research). This format has a 128 byte
-** header that looks like this (its actually packed, but thats not portable):
-*/
-
-typedef struct
-{ int marker ; /* 2BIT */
- char name [8] ; /* null-padded sample name */
- short mono ; /* 0 = mono, 0xffff = stereo */
- short rez ; /* 8 = 8 bit, 16 = 16 bit */
- short sign ; /* 0 = unsigned, 0xffff = signed */
-
- short loop ; /* 0 = no loop, 0xffff = looping sample */
- short midi ; /* 0xffff = no MIDI note assigned, */
- /* 0xffXX = single key note assignment */
- /* 0xLLHH = key split, low/hi note */
- int srate ; /* sample frequency in hertz */
- int frames ; /* sample length in bytes or words (see rez) */
- int lbeg ; /* offset to start of loop in bytes or words. */
- /* set to zero if unused */
- int lend ; /* offset to end of loop in bytes or words. */
- /* set to sample length if unused */
- short res1 ; /* Reserved, MIDI keyboard split */
- short res2 ; /* Reserved, sample compression */
- short res3 ; /* Reserved */
- char ext [20] ; /* Additional filename space, used if (name[7] != 0) */
- char user [64] ; /* User defined. Typically ASCII message */
-} AVR_HEADER ;
-
-/*------------------------------------------------------------------------------
-** Private static functions.
-*/
-
-static int avr_close (SF_PRIVATE *psf) ;
-
-static int avr_read_header (SF_PRIVATE *psf) ;
-static int avr_write_header (SF_PRIVATE *psf, int calc_length) ;
-
-/*------------------------------------------------------------------------------
-** Public function.
-*/
-
-int
-avr_open (SF_PRIVATE *psf)
-{ int error = 0 ;
-
- if (psf->mode == SFM_READ || (psf->mode == SFM_RDWR && psf->filelength > 0))
- { if ((error = avr_read_header (psf)))
- return error ;
- } ;
-
- if ((psf->sf.format & SF_FORMAT_TYPEMASK) != SF_FORMAT_AVR)
- return SFE_BAD_OPEN_FORMAT ;
-
- if (psf->mode == SFM_WRITE || psf->mode == SFM_RDWR)
- { psf->endian = psf->sf.format & SF_FORMAT_ENDMASK ;
- psf->endian = SF_ENDIAN_BIG ;
-
- if (avr_write_header (psf, SF_FALSE))
- return psf->error ;
-
- psf->write_header = avr_write_header ;
- } ;
-
- psf->container_close = avr_close ;
-
- psf->blockwidth = psf->bytewidth * psf->sf.channels ;
-
- error = pcm_init (psf) ;
-
- return error ;
-} /* avr_open */
-
-static int
-avr_read_header (SF_PRIVATE *psf)
-{ AVR_HEADER hdr ;
-
- memset (&hdr, 0, sizeof (hdr)) ;
-
- psf_binheader_readf (psf, "pmb", 0, &hdr.marker, &hdr.name, sizeof (hdr.name)) ;
- psf_log_printf (psf, "%M\n", hdr.marker) ;
-
- if (hdr.marker != TWOBIT_MARKER)
- return SFE_AVR_X ;
-
- psf_log_printf (psf, " Name : %s\n", hdr.name) ;
-
- psf_binheader_readf (psf, "E22222", &hdr.mono, &hdr.rez, &hdr.sign, &hdr.loop, &hdr.midi) ;
-
- psf->sf.channels = (hdr.mono & 1) + 1 ;
-
- psf_log_printf (psf, " Channels : %d\n Bit width : %d\n Signed : %s\n",
- (hdr.mono & 1) + 1, hdr.rez, hdr.sign ? "yes" : "no") ;
-
- switch ((hdr.rez << 16) + (hdr.sign & 1))
- { case ((8 << 16) + 0) :
- psf->sf.format = SF_FORMAT_AVR | SF_FORMAT_PCM_U8 ;
- psf->bytewidth = 1 ;
- break ;
-
- case ((8 << 16) + 1) :
- psf->sf.format = SF_FORMAT_AVR | SF_FORMAT_PCM_S8 ;
- psf->bytewidth = 1 ;
- break ;
-
- case ((16 << 16) + 1) :
- psf->sf.format = SF_FORMAT_AVR | SF_FORMAT_PCM_16 ;
- psf->bytewidth = 2 ;
- break ;
-
- default :
- psf_log_printf (psf, "Error : bad rez/sign combination.\n") ;
- return SFE_AVR_X ;
- } ;
-
- psf_binheader_readf (psf, "E4444", &hdr.srate, &hdr.frames, &hdr.lbeg, &hdr.lend) ;
-
- psf->sf.frames = hdr.frames ;
- psf->sf.samplerate = hdr.srate ;
-
- psf_log_printf (psf, " Frames : %D\n", psf->sf.frames) ;
- psf_log_printf (psf, " Sample rate : %d\n", psf->sf.samplerate) ;
-
- psf_binheader_readf (psf, "E222", &hdr.res1, &hdr.res2, &hdr.res3) ;
- psf_binheader_readf (psf, "bb", hdr.ext, sizeof (hdr.ext), hdr.user, sizeof (hdr.user)) ;
-
- psf_log_printf (psf, " Ext : %s\n User : %s\n", hdr.ext, hdr.user) ;
-
- psf->endian = SF_ENDIAN_BIG ;
-
- psf->dataoffset = AVR_HDR_SIZE ;
- psf->datalength = hdr.frames * (hdr.rez / 8) ;
-
- if (psf->fileoffset > 0)
- psf->filelength = AVR_HDR_SIZE + psf->datalength ;
-
- if (psf_ftell (psf) != psf->dataoffset)
- psf_binheader_readf (psf, "j", psf->dataoffset - psf_ftell (psf)) ;
-
- psf->blockwidth = psf->sf.channels * psf->bytewidth ;
-
- if (psf->sf.frames == 0 && psf->blockwidth)
- psf->sf.frames = (psf->filelength - psf->dataoffset) / psf->blockwidth ;
-
- return 0 ;
-} /* avr_read_header */
-
-static int
-avr_write_header (SF_PRIVATE *psf, int calc_length)
-{ sf_count_t current ;
- int sign ;
-
- if (psf->pipeoffset > 0)
- return 0 ;
-
- current = psf_ftell (psf) ;
-
- if (calc_length)
- { psf->filelength = psf_get_filelen (psf) ;
-
- psf->datalength = psf->filelength - psf->dataoffset ;
- if (psf->dataend)
- psf->datalength -= psf->filelength - psf->dataend ;
-
- psf->sf.frames = psf->datalength / (psf->bytewidth * psf->sf.channels) ;
- } ;
-
- /* Reset the current header length to zero. */
- psf->header [0] = 0 ;
- psf->headindex = 0 ;
-
- /*
- ** Only attempt to seek if we are not writng to a pipe. If we are
- ** writing to a pipe we shouldn't be here anyway.
- */
- if (psf->is_pipe == SF_FALSE)
- psf_fseek (psf, 0, SEEK_SET) ;
-
- psf_binheader_writef (psf, "Emz22", TWOBIT_MARKER, make_size_t (8),
- psf->sf.channels == 2 ? 0xFFFF : 0, psf->bytewidth * 8) ;
-
- sign = ((psf->sf.format & SF_FORMAT_SUBMASK) == SF_FORMAT_PCM_U8) ? 0 : 0xFFFF ;
-
- psf_binheader_writef (psf, "E222", sign, 0, 0xFFFF) ;
- psf_binheader_writef (psf, "E4444", psf->sf.samplerate, psf->sf.frames, 0, 0) ;
-
- psf_binheader_writef (psf, "E222zz", 0, 0, 0, make_size_t (20), make_size_t (64)) ;
-
- /* Header construction complete so write it out. */
- psf_fwrite (psf->header, psf->headindex, 1, psf) ;
-
- if (psf->error)
- return psf->error ;
-
- psf->dataoffset = psf->headindex ;
-
- if (current > 0)
- psf_fseek (psf, current, SEEK_SET) ;
-
- return psf->error ;
-} /* avr_write_header */
-
-static int
-avr_close (SF_PRIVATE *psf)
-{
- if (psf->mode == SFM_WRITE || psf->mode == SFM_RDWR)
- avr_write_header (psf, SF_TRUE) ;
-
- return 0 ;
-} /* avr_close */
-
-/*
-** Do not edit or modify anything in this comment block.
-** The arch-tag line is a file identity tag for the GNU Arch
-** revision control system.
-**
-** arch-tag: 0823d454-f39a-4a28-a776-607f1ef33b52
-*/
diff --git a/libs/libsndfile/src/broadcast.c b/libs/libsndfile/src/broadcast.c
deleted file mode 100644
index e33227778d..0000000000
--- a/libs/libsndfile/src/broadcast.c
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
-** Copyright (C) 2006 Paul Davis <paul@linuxaudiosystems.com>
-** Copyright (C) 2006 Erik de Castro Lopo <erikd@mega-nerd.com>
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU Lesser General Public License as published by
-** the Free Software Foundation; either version 2.1 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU Lesser General Public License for more details.
-**
-** You should have received a copy of the GNU Lesser General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-*/
-
-#include <stdio.h>
-#include <string.h>
-
-#include "common.h"
-
-/*
-** Allocate and initialize a broadcast info structure.
-*/
-
-SF_BROADCAST_INFO*
-broadcast_info_alloc (void)
-{ SF_BROADCAST_INFO* bext ;
-
- if ((bext = calloc (1, sizeof (SF_BROADCAST_INFO))) == NULL)
- return NULL ;
-
- return bext ;
-} /* broadcast_info_alloc */
-
-int
-broadcast_info_copy (SF_BROADCAST_INFO* dst, SF_BROADCAST_INFO* src)
-{ memcpy (dst, src, sizeof (SF_BROADCAST_INFO)) ;
-
- /* Currently writing this version. */
- dst->version = 1 ;
-
- return SF_TRUE ;
-} /* broadcast_info_copy */
-
-int
-broadcast_add_coding_history (SF_BROADCAST_INFO* bext, unsigned int channels, unsigned int samplerate)
-{ char chnstr [16] ;
- int count ;
-
- switch (channels)
- { case 0 :
- return SF_FALSE ;
-
- case 1 :
- strncpy (chnstr, "mono", sizeof (chnstr)) ;
- break ;
-
- case 2 :
- strncpy (chnstr, "stereo", sizeof (chnstr)) ;
- break ;
-
- default :
- LSF_SNPRINTF (chnstr, sizeof (chnstr), "%uchn", channels) ;
- break ;
- }
-
- count = LSF_SNPRINTF (bext->coding_history, sizeof (bext->coding_history), "F=%u,A=PCM,M=%s,W=24,T=%s-%s", samplerate, chnstr, PACKAGE, VERSION) ;
-
- if (count >= SIGNED_SIZEOF (bext->coding_history))
- bext->coding_history_size = sizeof (bext->coding_history) ;
- else
- { count += count & 1 ;
- bext->coding_history_size = count ;
- } ;
-
- return SF_TRUE ;
-} /* broadcast_add_coding_history */
-
-/*
-** Do not edit or modify anything in this comment block.
-** The following line is a file identity tag for the GNU Arch
-** revision control system.
-**
-** arch-tag: 4b3b69c7-d710-4424-9da0-5048534a0beb
-*/
diff --git a/libs/libsndfile/src/caf.c b/libs/libsndfile/src/caf.c
deleted file mode 100644
index 01f3719897..0000000000
--- a/libs/libsndfile/src/caf.c
+++ /dev/null
@@ -1,538 +0,0 @@
-/*
-** Copyright (C) 2005 Erik de Castro Lopo <erikd@mega-nerd.com>
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU Lesser General Public License as published by
-** the Free Software Foundation; either version 2.1 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU Lesser General Public License for more details.
-**
-** You should have received a copy of the GNU Lesser General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-*/
-
-#include "sfconfig.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <ctype.h>
-
-#include "sndfile.h"
-#include "sfendian.h"
-#include "float_cast.h"
-#include "common.h"
-
-/*------------------------------------------------------------------------------
-** Macros to handle big/little endian issues.
-*/
-
-#define aac_MARKER MAKE_MARKER ('a', 'a', 'c', ' ')
-#define alac_MARKER MAKE_MARKER ('a', 'l', 'a', 'c')
-#define alaw_MARKER MAKE_MARKER ('a', 'l', 'a', 'w')
-#define caff_MARKER MAKE_MARKER ('c', 'a', 'f', 'f')
-#define chan_MARKER MAKE_MARKER ('c', 'h', 'a', 'n')
-#define data_MARKER MAKE_MARKER ('d', 'a', 't', 'a')
-#define desc_MARKER MAKE_MARKER ('d', 'e', 's', 'c')
-#define edct_MARKER MAKE_MARKER ('e', 'd', 'c', 't')
-#define free_MARKER MAKE_MARKER ('f', 'r', 'e', 'e')
-#define ima4_MARKER MAKE_MARKER ('i', 'm', 'a', '4')
-#define info_MARKER MAKE_MARKER ('i', 'n', 'f', 'o')
-#define inst_MARKER MAKE_MARKER ('i', 'n', 's', 't')
-#define kuki_MARKER MAKE_MARKER ('k', 'u', 'k', 'i')
-#define lpcm_MARKER MAKE_MARKER ('l', 'p', 'c', 'm')
-#define mark_MARKER MAKE_MARKER ('m', 'a', 'r', 'k')
-#define midi_MARKER MAKE_MARKER ('m', 'i', 'd', 'i')
-#define mp1_MARKER MAKE_MARKER ('.', 'm', 'p', '1')
-#define mp2_MARKER MAKE_MARKER ('.', 'm', 'p', '2')
-#define mp3_MARKER MAKE_MARKER ('.', 'm', 'p', '3')
-#define ovvw_MARKER MAKE_MARKER ('o', 'v', 'v', 'w')
-#define pakt_MARKER MAKE_MARKER ('p', 'a', 'k', 't')
-#define peak_MARKER MAKE_MARKER ('p', 'e', 'a', 'k')
-#define regn_MARKER MAKE_MARKER ('r', 'e', 'g', 'n')
-#define strg_MARKER MAKE_MARKER ('s', 't', 'r', 'g')
-#define umid_MARKER MAKE_MARKER ('u', 'm', 'i', 'd')
-#define uuid_MARKER MAKE_MARKER ('u', 'u', 'i', 'd')
-#define ulaw_MARKER MAKE_MARKER ('u', 'l', 'a', 'w')
-#define MAC3_MARKER MAKE_MARKER ('M', 'A', 'C', '3')
-#define MAC6_MARKER MAKE_MARKER ('M', 'A', 'C', '6')
-
-#define CAF_PEAK_CHUNK_SIZE(ch) (sizeof (int) + ch * (sizeof (float) + 8))
-
-#define SFE_CAF_NOT_CAF 666
-#define SFE_CAF_NO_DESC 667
-#define SFE_CAF_BAD_PEAK 668
-
-/*------------------------------------------------------------------------------
-** Typedefs.
-*/
-
-typedef struct
-{ unsigned char srate [8] ;
- unsigned int fmt_id ;
- unsigned int fmt_flags ;
- unsigned int pkt_bytes ;
- unsigned int pkt_frames ;
- unsigned int channels_per_frame ;
- unsigned int bits_per_chan ;
-} DESC_CHUNK ;
-
-/*------------------------------------------------------------------------------
-** Private static functions.
-*/
-
-static int caf_close (SF_PRIVATE *psf) ;
-static int caf_read_header (SF_PRIVATE *psf) ;
-static int caf_write_header (SF_PRIVATE *psf, int calc_length) ;
-
-/*------------------------------------------------------------------------------
-** Public function.
-*/
-
-int
-caf_open (SF_PRIVATE *psf)
-{ int subformat, format, error = 0 ;
-
- if (psf->mode == SFM_READ || (psf->mode == SFM_RDWR && psf->filelength > 0))
- { if ((error = caf_read_header (psf)))
- return error ;
- } ;
-
- subformat = psf->sf.format & SF_FORMAT_SUBMASK ;
-
- if (psf->mode == SFM_WRITE || psf->mode == SFM_RDWR)
- { if (psf->is_pipe)
- return SFE_NO_PIPE_WRITE ;
-
- format = psf->sf.format & SF_FORMAT_TYPEMASK ;
- if (format != SF_FORMAT_CAF)
- return SFE_BAD_OPEN_FORMAT ;
-
- psf->blockwidth = psf->bytewidth * psf->sf.channels ;
-
- if (psf->mode != SFM_RDWR || psf->filelength < 44)
- { psf->filelength = 0 ;
- psf->datalength = 0 ;
- psf->dataoffset = 0 ;
- psf->sf.frames = 0 ;
- } ;
-
- psf->str_flags = SF_STR_ALLOW_START ;
-
- /*
- ** By default, add the peak chunk to floating point files. Default behaviour
- ** can be switched off using sf_command (SFC_SET_PEAK_CHUNK, SF_FALSE).
- */
- if (psf->mode == SFM_WRITE && (subformat == SF_FORMAT_FLOAT || subformat == SF_FORMAT_DOUBLE))
- { if ((psf->peak_info = peak_info_calloc (psf->sf.channels)) == NULL)
- return SFE_MALLOC_FAILED ;
- psf->peak_info->peak_loc = SF_PEAK_START ;
- } ;
-
- if ((error = caf_write_header (psf, SF_FALSE)) != 0)
- return error ;
-
- psf->write_header = caf_write_header ;
- } ;
-
- psf->container_close = caf_close ;
- /*psf->command = caf_command ;*/
-
- switch (subformat)
- { case SF_FORMAT_PCM_S8 :
- case SF_FORMAT_PCM_16 :
- case SF_FORMAT_PCM_24 :
- case SF_FORMAT_PCM_32 :
- error = pcm_init (psf) ;
- break ;
-
- case SF_FORMAT_ULAW :
- error = ulaw_init (psf) ;
- break ;
-
- case SF_FORMAT_ALAW :
- error = alaw_init (psf) ;
- break ;
-
- /* Lite remove start */
- case SF_FORMAT_FLOAT :
- error = float32_init (psf) ;
- break ;
-
- case SF_FORMAT_DOUBLE :
- error = double64_init (psf) ;
- break ;
- /* Lite remove end */
-
- default :
- return SFE_UNSUPPORTED_ENCODING ;
- } ;
-
- return error ;
-} /* caf_open */
-
-static int
-caf_close (SF_PRIVATE *psf)
-{
- if (psf->mode == SFM_WRITE || psf->mode == SFM_RDWR)
- caf_write_header (psf, SF_TRUE) ;
-
- return 0 ;
-} /* caf_close */
-
-/*------------------------------------------------------------------------------
-*/
-
-static int
-decode_desc_chunk (SF_PRIVATE *psf, const DESC_CHUNK *desc)
-{ int format ;
-
- psf->sf.channels = desc->channels_per_frame ;
-
- format = SF_FORMAT_CAF | (psf->endian == SF_ENDIAN_LITTLE ? SF_ENDIAN_LITTLE : 0) ;
-
- if (desc->fmt_id == lpcm_MARKER && desc->fmt_flags & 1)
- { /* Floating point data. */
- if (desc->bits_per_chan == 32 && desc->pkt_bytes == 4 * desc->channels_per_frame)
- { psf->bytewidth = 4 ;
- return format | SF_FORMAT_FLOAT ;
- } ;
- if (desc->bits_per_chan == 64 && desc->pkt_bytes == 8 * desc->channels_per_frame)
- { psf->bytewidth = 8 ;
- return format | SF_FORMAT_DOUBLE ;
- } ;
- } ;
-
- if ((desc->fmt_flags & 1) != 0)
- { psf_log_printf (psf, "**** Ooops, 'desc' chunk suggests float data, but other info invalid.\n") ;
- return 0 ;
- } ;
-
- if (desc->fmt_id == lpcm_MARKER)
- { /* Integer data. */
- if (desc->bits_per_chan == 32 && desc->pkt_bytes == 4 * desc->channels_per_frame)
- { psf->bytewidth = 4 ;
- return format | SF_FORMAT_PCM_32 ;
- } ;
- if (desc->bits_per_chan == 24 && desc->pkt_bytes == 3 * desc->channels_per_frame)
- { psf->bytewidth = 3 ;
- return format | SF_FORMAT_PCM_24 ;
- } ;
- if (desc->bits_per_chan == 16 && desc->pkt_bytes == 2 * desc->channels_per_frame)
- { psf->bytewidth = 2 ;
- return format | SF_FORMAT_PCM_16 ;
- } ;
- if (desc->bits_per_chan == 8 && desc->pkt_bytes == 1 * desc->channels_per_frame)
- { psf->bytewidth = 1 ;
- return format | SF_FORMAT_PCM_S8 ;
- } ;
- } ;
-
- if (desc->fmt_id == alaw_MARKER && desc->bits_per_chan == 8)
- { psf->bytewidth = 1 ;
- return format | SF_FORMAT_ALAW ;
- } ;
-
- if (desc->fmt_id == ulaw_MARKER && desc->bits_per_chan == 8)
- { psf->bytewidth = 1 ;
- return format | SF_FORMAT_ULAW ;
- } ;
-
- return 0 ;
-} /* decode_desc_chunk */
-
-static int
-caf_read_header (SF_PRIVATE *psf)
-{ DESC_CHUNK desc ;
- sf_count_t chunk_size ;
- double srate ;
- short version, flags ;
- int marker, k, have_data = 0 ;
-
- memset (&desc, 0, sizeof (desc)) ;
-
- /* Set position to start of file to begin reading header. */
- psf_binheader_readf (psf, "pmE2E2", 0, &marker, &version, &flags) ;
- psf_log_printf (psf, "%M\n Version : %d\n Flags : %x\n", marker, version, flags) ;
- if (marker != caff_MARKER)
- return SFE_CAF_NOT_CAF ;
-
- psf_binheader_readf (psf, "mE8b", &marker, &chunk_size, psf->u.ucbuf, 8) ;
- srate = double64_be_read (psf->u.ucbuf) ;
- LSF_SNPRINTF (psf->u.cbuf, sizeof (psf->u.cbuf), "%5.3f", srate) ;
- psf_log_printf (psf, "%M : %D\n Sample rate : %s\n", marker, chunk_size, psf->u.cbuf) ;
- if (marker != desc_MARKER)
- return SFE_CAF_NO_DESC ;
-
- if (chunk_size < sizeof (DESC_CHUNK))
- { psf_log_printf (psf, "**** Chunk size too small. Should be > 32 bytes.\n") ;
- return SFE_MALFORMED_FILE ;
- } ;
-
- psf->sf.samplerate = lrint (srate) ;
-
- psf_binheader_readf (psf, "mE44444", &desc.fmt_id, &desc.fmt_flags, &desc.pkt_bytes, &desc.pkt_frames,
- &desc.channels_per_frame, &desc.bits_per_chan) ;
- psf_log_printf (psf, " Format id : %M\n Format flags : %x\n Bytes / packet : %u\n"
- " Frames / packet : %u\n Channels / frame : %u\n Bits / channel : %u\n",
- desc.fmt_id, desc.fmt_flags, desc.pkt_bytes, desc.pkt_frames, desc.channels_per_frame, desc.bits_per_chan) ;
-
- if (chunk_size > sizeof (DESC_CHUNK))
- psf_binheader_readf (psf, "j", (int) (chunk_size - sizeof (DESC_CHUNK))) ;
-
- psf->sf.channels = desc.channels_per_frame ;
-
- while (have_data == 0 && psf_ftell (psf) < psf->filelength - SIGNED_SIZEOF (marker))
- { psf_binheader_readf (psf, "mE8", &marker, &chunk_size) ;
-
- switch (marker)
- { case peak_MARKER :
- psf_log_printf (psf, "%M : %D\n", marker, chunk_size) ;
- if (chunk_size != CAF_PEAK_CHUNK_SIZE (psf->sf.channels))
- { psf_binheader_readf (psf, "j", (int) chunk_size) ;
- psf_log_printf (psf, "*** File PEAK chunk %D should be %d.\n", chunk_size, CAF_PEAK_CHUNK_SIZE (psf->sf.channels)) ;
- return SFE_CAF_BAD_PEAK ;
- } ;
-
- if ((psf->peak_info = peak_info_calloc (psf->sf.channels)) == NULL)
- return SFE_MALLOC_FAILED ;
-
- /* read in rest of PEAK chunk. */
- psf_binheader_readf (psf, "E4", & (psf->peak_info->edit_number)) ;
- psf_log_printf (psf, " edit count : %d\n", psf->peak_info->edit_number) ;
-
- psf_log_printf (psf, " Ch Position Value\n") ;
- for (k = 0 ; k < psf->sf.channels ; k++)
- { sf_count_t position ;
- float value ;
-
- psf_binheader_readf (psf, "Ef8", &value, &position) ;
- psf->peak_info->peaks [k].value = value ;
- psf->peak_info->peaks [k].position = position ;
-
- LSF_SNPRINTF (psf->u.cbuf, sizeof (psf->u.cbuf), " %2d %-12ld %g\n", k, (long) position, value) ;
- psf_log_printf (psf, psf->u.cbuf) ;
- } ;
-
- psf->peak_info->peak_loc = SF_PEAK_START ;
- break ;
-
- case free_MARKER :
- psf_log_printf (psf, "%M : %D\n", marker, chunk_size) ;
- psf_binheader_readf (psf, "j", (int) chunk_size) ;
- break ;
-
- case data_MARKER :
- psf_log_printf (psf, "%M : %D\n", marker, chunk_size) ;
- psf_binheader_readf (psf, "E4", &k) ;
- psf_log_printf (psf, " edit : %u\n", k) ;
- have_data = 1 ;
- break ;
-
- default :
- psf_log_printf (psf, " %M : %D (skipped)\n", marker, chunk_size) ;
- psf_binheader_readf (psf, "j", (int) chunk_size) ;
- break ;
- } ;
- } ;
-
- if (have_data == 0)
- { psf_log_printf (psf, "**** Error, could not find 'data' chunk.\n") ;
- return SFE_MALFORMED_FILE ;
- } ;
-
- psf_log_printf (psf, "End\n") ;
-
- psf->dataoffset = psf_ftell (psf) ;
- psf->datalength = psf->filelength - psf->dataoffset ;
- psf->endian = (desc.fmt_flags & 2) ? SF_ENDIAN_LITTLE : SF_ENDIAN_BIG ;
-
- if ((psf->sf.format = decode_desc_chunk (psf, &desc)) == 0)
- return SFE_UNSUPPORTED_ENCODING ;
-
- if (psf->bytewidth > 0)
- psf->sf.frames = psf->datalength / psf->bytewidth ;
-
- return 0 ;
-} /* caf_read_header */
-
-/*------------------------------------------------------------------------------
-*/
-
-static int
-caf_write_header (SF_PRIVATE *psf, int calc_length)
-{ DESC_CHUNK desc ;
- sf_count_t current, free_len ;
- int subformat ;
-
- memset (&desc, 0, sizeof (desc)) ;
-
- current = psf_ftell (psf) ;
-
- if (calc_length)
- { psf->filelength = psf_get_filelen (psf) ;
-
- psf->datalength = psf->filelength - psf->dataoffset ;
-
- if (psf->dataend)
- psf->datalength -= psf->filelength - psf->dataend ;
-
- if (psf->bytewidth > 0)
- psf->sf.frames = psf->datalength / (psf->bytewidth * psf->sf.channels) ;
- } ;
-
- /* Reset the current header length to zero. */
- psf->header [0] = 0 ;
- psf->headindex = 0 ;
- psf_fseek (psf, 0, SEEK_SET) ;
-
- /* 'caff' marker, version and flags. */
- psf_binheader_writef (psf, "Em22", caff_MARKER, 1, 0) ;
-
- /* 'desc' marker and chunk size. */
- psf_binheader_writef (psf, "Em8", desc_MARKER, (sf_count_t) (sizeof (DESC_CHUNK))) ;
-
- double64_be_write (1.0 * psf->sf.samplerate, psf->u.ucbuf) ;
- psf_binheader_writef (psf, "b", psf->u.ucbuf, 8) ;
-
- subformat = psf->sf.format & SF_FORMAT_SUBMASK ;
-
- psf->endian = psf->sf.format & SF_FORMAT_ENDMASK ;
-
- if (CPU_IS_BIG_ENDIAN && (psf->endian == 0 || psf->endian == SF_ENDIAN_CPU))
- psf->endian = SF_ENDIAN_BIG ;
- else if (CPU_IS_LITTLE_ENDIAN && (psf->endian == SF_ENDIAN_LITTLE || psf->endian == SF_ENDIAN_CPU))
- psf->endian = SF_ENDIAN_LITTLE ;
-
- if (psf->endian == SF_ENDIAN_LITTLE)
- desc.fmt_flags = 2 ;
- else
- psf->endian = SF_ENDIAN_BIG ;
-
- /* initial section (same for all, it appears) */
- switch (subformat)
- { case SF_FORMAT_PCM_S8 :
- desc.fmt_id = lpcm_MARKER ;
- psf->bytewidth = 1 ;
- desc.pkt_bytes = psf->bytewidth * psf->sf.channels ;
- desc.pkt_frames = 1 ;
- desc.channels_per_frame = psf->sf.channels ;
- desc.bits_per_chan = 8 ;
- break ;
-
- case SF_FORMAT_PCM_16 :
- desc.fmt_id = lpcm_MARKER ;
- psf->bytewidth = 2 ;
- desc.pkt_bytes = psf->bytewidth * psf->sf.channels ;
- desc.pkt_frames = 1 ;
- desc.channels_per_frame = psf->sf.channels ;
- desc.bits_per_chan = 16 ;
- break ;
-
- case SF_FORMAT_PCM_24 :
- psf->bytewidth = 3 ;
- desc.pkt_bytes = psf->bytewidth * psf->sf.channels ;
- desc.pkt_frames = 1 ;
- desc.channels_per_frame = psf->sf.channels ;
- desc.bits_per_chan = 24 ;
- desc.fmt_id = lpcm_MARKER ;
- break ;
-
- case SF_FORMAT_PCM_32 :
- desc.fmt_id = lpcm_MARKER ;
- psf->bytewidth = 4 ;
- desc.pkt_bytes = psf->bytewidth * psf->sf.channels ;
- desc.pkt_frames = 1 ;
- desc.channels_per_frame = psf->sf.channels ;
- desc.bits_per_chan = 32 ;
- break ;
-
- case SF_FORMAT_FLOAT :
- desc.fmt_id = lpcm_MARKER ;
- desc.fmt_flags |= 1 ;
- psf->bytewidth = 4 ;
- desc.pkt_bytes = psf->bytewidth * psf->sf.channels ;
- desc.pkt_frames = 1 ;
- desc.channels_per_frame = psf->sf.channels ;
- desc.bits_per_chan = 32 ;
- break ;
-
- case SF_FORMAT_DOUBLE :
- desc.fmt_id = lpcm_MARKER ;
- desc.fmt_flags |= 1 ;
- psf->bytewidth = 8 ;
- desc.pkt_bytes = psf->bytewidth * psf->sf.channels ;
- desc.pkt_frames = 1 ;
- desc.channels_per_frame = psf->sf.channels ;
- desc.bits_per_chan = 64 ;
- break ;
-
- case SF_FORMAT_ALAW :
- desc.fmt_id = alaw_MARKER ;
- psf->bytewidth = 1 ;
- desc.pkt_bytes = psf->bytewidth * psf->sf.channels ;
- desc.pkt_frames = 1 ;
- desc.channels_per_frame = psf->sf.channels ;
- desc.bits_per_chan = 8 ;
- break ;
-
- case SF_FORMAT_ULAW :
- desc.fmt_id = ulaw_MARKER ;
- psf->bytewidth = 1 ;
- desc.pkt_bytes = psf->bytewidth * psf->sf.channels ;
- desc.pkt_frames = 1 ;
- desc.channels_per_frame = psf->sf.channels ;
- desc.bits_per_chan = 8 ;
- break ;
-
- default :
- return SFE_UNIMPLEMENTED ;
- } ;
-
- psf_binheader_writef (psf, "mE44444", desc.fmt_id, desc.fmt_flags, desc.pkt_bytes, desc.pkt_frames, desc.channels_per_frame, desc.bits_per_chan) ;
-
-#if 0
- if (psf->str_flags & SF_STR_LOCATE_START)
- caf_write_strings (psf, SF_STR_LOCATE_START) ;
-#endif
-
- if (psf->peak_info != NULL)
- { int k ;
- psf_binheader_writef (psf, "Em84", peak_MARKER, (sf_count_t) CAF_PEAK_CHUNK_SIZE (psf->sf.channels), psf->peak_info->edit_number) ;
- for (k = 0 ; k < psf->sf.channels ; k++)
- psf_binheader_writef (psf, "Ef8", (float) psf->peak_info->peaks [k].value, psf->peak_info->peaks [k].position) ;
- } ;
-
- /* Add free chunk so that the actual audio data starts at a multiple 0x1000. */
- free_len = 0x1000 - psf->headindex - 16 - 12 ;
- while (free_len < 0)
- free_len += 0x1000 ;
- psf_binheader_writef (psf, "Em8z", free_MARKER, free_len, (int) free_len) ;
-
- psf_binheader_writef (psf, "Em84", data_MARKER, psf->datalength, 0) ;
-
- psf_fwrite (psf->header, psf->headindex, 1, psf) ;
- if (psf->error)
- return psf->error ;
-
- psf->dataoffset = psf->headindex ;
- if (current < psf->dataoffset)
- psf_fseek (psf, psf->dataoffset, SEEK_SET) ;
- else if (current > 0)
- psf_fseek (psf, current, SEEK_SET) ;
-
- return psf->error ;
-} /* caf_write_header */
-
-/*
-** Do not edit or modify anything in this comment block.
-** The arch-tag line is a file identity tag for the GNU Arch
-** revision control system.
-**
-** arch-tag: 65883e65-bd3c-4618-9241-d3c02fd630bd
-*/
diff --git a/libs/libsndfile/src/command.c b/libs/libsndfile/src/command.c
deleted file mode 100644
index edb793f215..0000000000
--- a/libs/libsndfile/src/command.c
+++ /dev/null
@@ -1,367 +0,0 @@
-/*
-** Copyright (C) 2001-2004 Erik de Castro Lopo <erikd@mega-nerd.com>
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU Lesser General Public License as published by
-** the Free Software Foundation; either version 2.1 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU Lesser General Public License for more details.
-**
-** You should have received a copy of the GNU Lesser General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-*/
-
-#include "sfconfig.h"
-
-#include <stdio.h>
-#include <string.h>
-#include <math.h>
-
-#include "sndfile.h"
-#include "common.h"
-
-static SF_FORMAT_INFO const simple_formats [] =
-{
- { SF_FORMAT_AIFF | SF_FORMAT_PCM_16,
- "AIFF (Apple/SGI 16 bit PCM)", "aiff"
- },
-
- { SF_FORMAT_AIFF | SF_FORMAT_FLOAT,
- "AIFF (Apple/SGI 32 bit float)", "aifc"
- },
-
- { SF_FORMAT_AIFF | SF_FORMAT_PCM_S8,
- "AIFF (Apple/SGI 8 bit PCM)", "aiff"
- },
-
- { SF_FORMAT_AU | SF_FORMAT_PCM_16,
- "AU (Sun/Next 16 bit PCM)", "au"
- },
-
- { SF_FORMAT_AU | SF_FORMAT_ULAW,
- "AU (Sun/Next 8-bit u-law)", "au"
- },
-
- { SF_FORMAT_CAF | SF_FORMAT_PCM_16,
- "CAF (Apple 16 bit PCM)", "caf"
- },
-
-#ifdef HAVE_FLAC_ALL_H
- { SF_FORMAT_FLAC | SF_FORMAT_PCM_16,
- "FLAC 16 bit", "flac"
- },
-#endif
-
- { SF_FORMAT_RAW | SF_FORMAT_VOX_ADPCM,
- "OKI Dialogic VOX ADPCM", "vox"
- },
-
- { SF_FORMAT_WAV | SF_FORMAT_PCM_16,
- "WAV (Microsoft 16 bit PCM)", "wav"
- },
-
- { SF_FORMAT_WAV | SF_FORMAT_FLOAT,
- "WAV (Microsoft 32 bit float)", "wav"
- },
-
- { SF_FORMAT_WAV | SF_FORMAT_IMA_ADPCM,
- "WAV (Microsoft 4 bit IMA ADPCM)", "wav"
- },
-
- { SF_FORMAT_WAV | SF_FORMAT_MS_ADPCM,
- "WAV (Microsoft 4 bit MS ADPCM)", "wav"
- },
-
- { SF_FORMAT_WAV | SF_FORMAT_PCM_U8,
- "WAV (Microsoft 8 bit PCM)", "wav"
- },
-
-} ; /* simple_formats */
-
-int
-psf_get_format_simple_count (void)
-{ return (sizeof (simple_formats) / sizeof (SF_FORMAT_INFO)) ;
-} /* psf_get_format_simple_count */
-
-int
-psf_get_format_simple (SF_FORMAT_INFO *data)
-{ int indx ;
-
- if (data->format < 0 || data->format >= (SIGNED_SIZEOF (simple_formats) / SIGNED_SIZEOF (SF_FORMAT_INFO)))
- return SFE_BAD_CONTROL_CMD ;
-
- indx = data->format ;
- memcpy (data, &(simple_formats [indx]), SIGNED_SIZEOF (SF_FORMAT_INFO)) ;
-
- return 0 ;
-} /* psf_get_format_simple */
-
-/*============================================================================
-** Major format info.
-*/
-
-static SF_FORMAT_INFO const major_formats [] =
-{
- { SF_FORMAT_AIFF, "AIFF (Apple/SGI)", "aiff" },
- { SF_FORMAT_AU, "AU (Sun/NeXT)", "au" },
- { SF_FORMAT_AVR, "AVR (Audio Visual Research)", "avr" },
- { SF_FORMAT_CAF, "CAF (Apple Core Audio File)", "caf" },
-#ifdef HAVE_FLAC_ALL_H
- { SF_FORMAT_FLAC, "FLAC (FLAC Lossless Audio Codec)", "flac" },
-#endif
- { SF_FORMAT_HTK, "HTK (HMM Tool Kit)", "htk" },
- { SF_FORMAT_SVX, "IFF (Amiga IFF/SVX8/SV16)", "iff" },
- { SF_FORMAT_MAT4, "MAT4 (GNU Octave 2.0 / Matlab 4.2)", "mat" },
- { SF_FORMAT_MAT5, "MAT5 (GNU Octave 2.1 / Matlab 5.0)", "mat" },
- { SF_FORMAT_PAF, "PAF (Ensoniq PARIS)", "paf" },
- { SF_FORMAT_PVF, "PVF (Portable Voice Format)", "pvf" },
- { SF_FORMAT_RAW, "RAW (header-less)", "raw" },
- { SF_FORMAT_SD2, "SD2 (Sound Designer II)", "sd2" },
- { SF_FORMAT_SDS, "SDS (Midi Sample Dump Standard)", "sds" },
- { SF_FORMAT_IRCAM, "SF (Berkeley/IRCAM/CARL)", "sf" },
- { SF_FORMAT_VOC, "VOC (Creative Labs)", "voc" },
- { SF_FORMAT_W64, "W64 (SoundFoundry WAVE 64)", "w64" },
- { SF_FORMAT_WAV, "WAV (Microsoft)", "wav" },
- { SF_FORMAT_NIST, "WAV (NIST Sphere)", "wav" },
- { SF_FORMAT_WAVEX, "WAVEX (Microsoft)", "wav" },
- { SF_FORMAT_XI, "XI (FastTracker 2)", "xi" },
-
-} ; /* major_formats */
-
-int
-psf_get_format_major_count (void)
-{ return (sizeof (major_formats) / sizeof (SF_FORMAT_INFO)) ;
-} /* psf_get_format_major_count */
-
-int
-psf_get_format_major (SF_FORMAT_INFO *data)
-{ int indx ;
-
- if (data->format < 0 || data->format >= (SIGNED_SIZEOF (major_formats) / SIGNED_SIZEOF (SF_FORMAT_INFO)))
- return SFE_BAD_CONTROL_CMD ;
-
- indx = data->format ;
- memcpy (data, &(major_formats [indx]), SIGNED_SIZEOF (SF_FORMAT_INFO)) ;
-
- return 0 ;
-} /* psf_get_format_major */
-
-/*============================================================================
-** Subtype format info.
-*/
-
-static SF_FORMAT_INFO subtype_formats [] =
-{
- { SF_FORMAT_PCM_S8, "Signed 8 bit PCM", NULL },
- { SF_FORMAT_PCM_16, "Signed 16 bit PCM", NULL },
- { SF_FORMAT_PCM_24, "Signed 24 bit PCM", NULL },
- { SF_FORMAT_PCM_32, "Signed 32 bit PCM", NULL },
-
- { SF_FORMAT_PCM_U8, "Unsigned 8 bit PCM", NULL },
-
- { SF_FORMAT_FLOAT, "32 bit float", NULL },
- { SF_FORMAT_DOUBLE, "64 bit float", NULL },
-
- { SF_FORMAT_ULAW, "U-Law", NULL },
- { SF_FORMAT_ALAW, "A-Law", NULL },
- { SF_FORMAT_IMA_ADPCM, "IMA ADPCM", NULL },
- { SF_FORMAT_MS_ADPCM, "Microsoft ADPCM", NULL },
-
- { SF_FORMAT_GSM610, "GSM 6.10", NULL },
-
- { SF_FORMAT_G721_32, "32kbs G721 ADPCM", NULL },
- { SF_FORMAT_G723_24, "24kbs G723 ADPCM", NULL },
-
- { SF_FORMAT_DWVW_12, "12 bit DWVW", NULL },
- { SF_FORMAT_DWVW_16, "16 bit DWVW", NULL },
- { SF_FORMAT_DWVW_24, "24 bit DWVW", NULL },
- { SF_FORMAT_VOX_ADPCM, "VOX ADPCM", "vox" },
-
- { SF_FORMAT_DPCM_16, "16 bit DPCM", NULL },
- { SF_FORMAT_DPCM_8, "8 bit DPCM", NULL }
-} ; /* subtype_formats */
-
-int
-psf_get_format_subtype_count (void)
-{ return (sizeof (subtype_formats) / sizeof (SF_FORMAT_INFO)) ;
-} /* psf_get_format_subtype_count */
-
-int
-psf_get_format_subtype (SF_FORMAT_INFO *data)
-{ int indx ;
-
- if (data->format < 0 || data->format >= (SIGNED_SIZEOF (subtype_formats) / SIGNED_SIZEOF (SF_FORMAT_INFO)))
- return SFE_BAD_CONTROL_CMD ;
-
- indx = data->format ;
- memcpy (data, &(subtype_formats [indx]), sizeof (SF_FORMAT_INFO)) ;
-
- return 0 ;
-} /* psf_get_format_subtype */
-
-/*==============================================================================
-*/
-
-int
-psf_get_format_info (SF_FORMAT_INFO *data)
-{ int k, format ;
-
- if (data->format & SF_FORMAT_TYPEMASK)
- { format = data->format & SF_FORMAT_TYPEMASK ;
-
- for (k = 0 ; k < (SIGNED_SIZEOF (major_formats) / SIGNED_SIZEOF (SF_FORMAT_INFO)) ; k++)
- { if (format == major_formats [k].format)
- { memcpy (data, &(major_formats [k]), sizeof (SF_FORMAT_INFO)) ;
- return 0 ;
- } ;
- } ;
- }
- else if (data->format & SF_FORMAT_SUBMASK)
- { format = data->format & SF_FORMAT_SUBMASK ;
-
- for (k = 0 ; k < (SIGNED_SIZEOF (subtype_formats) / SIGNED_SIZEOF (SF_FORMAT_INFO)) ; k++)
- { if (format == subtype_formats [k].format)
- { memcpy (data, &(subtype_formats [k]), sizeof (SF_FORMAT_INFO)) ;
- return 0 ;
- } ;
- } ;
- } ;
-
- memset (data, 0, sizeof (SF_FORMAT_INFO)) ;
-
- return SFE_BAD_CONTROL_CMD ;
-} /* psf_get_format_info */
-
-/*==============================================================================
-*/
-
-double
-psf_calc_signal_max (SF_PRIVATE *psf, int normalize)
-{ sf_count_t position ;
- double max_val, temp, *data ;
- int k, len, readcount, save_state ;
-
- /* If the file is not seekable, there is nothing we can do. */
- if (! psf->sf.seekable)
- { psf->error = SFE_NOT_SEEKABLE ;
- return 0.0 ;
- } ;
-
- if (! psf->read_double)
- { psf->error = SFE_UNIMPLEMENTED ;
- return 0.0 ;
- } ;
-
- save_state = sf_command ((SNDFILE*) psf, SFC_GET_NORM_DOUBLE, NULL, 0) ;
- sf_command ((SNDFILE*) psf, SFC_SET_NORM_DOUBLE, NULL, normalize) ;
-
- /* Brute force. Read the whole file and find the biggest sample. */
- /* Get current position in file */
- position = sf_seek ((SNDFILE*) psf, 0, SEEK_CUR) ;
- /* Go to start of file. */
- sf_seek ((SNDFILE*) psf, 0, SEEK_SET) ;
-
- data = psf->u.dbuf ;
- len = ARRAY_LEN (psf->u.dbuf) ;
-
- for (readcount = 1, max_val = 0.0 ; readcount > 0 ; /* nothing */)
- { readcount = sf_read_double ((SNDFILE*) psf, data, len) ;
- for (k = 0 ; k < readcount ; k++)
- { temp = fabs (data [k]) ;
- max_val = temp > max_val ? temp : max_val ;
- } ;
- } ;
-
- /* Return to SNDFILE to original state. */
- sf_seek ((SNDFILE*) psf, position, SEEK_SET) ;
- sf_command ((SNDFILE*) psf, SFC_SET_NORM_DOUBLE, NULL, save_state) ;
-
- return max_val ;
-} /* psf_calc_signal_max */
-
-int
-psf_calc_max_all_channels (SF_PRIVATE *psf, double *peaks, int normalize)
-{ sf_count_t position ;
- double temp, *data ;
- int k, len, readcount, save_state ;
- int chan ;
-
- /* If the file is not seekable, there is nothing we can do. */
- if (! psf->sf.seekable)
- return (psf->error = SFE_NOT_SEEKABLE) ;
-
- if (! psf->read_double)
- return (psf->error = SFE_UNIMPLEMENTED) ;
-
- save_state = sf_command ((SNDFILE*) psf, SFC_GET_NORM_DOUBLE, NULL, 0) ;
- sf_command ((SNDFILE*) psf, SFC_SET_NORM_DOUBLE, NULL, normalize) ;
-
- memset (peaks, 0, sizeof (double) * psf->sf.channels) ;
-
- /* Brute force. Read the whole file and find the biggest sample for each channel. */
- position = sf_seek ((SNDFILE*) psf, 0, SEEK_CUR) ; /* Get current position in file */
- sf_seek ((SNDFILE*) psf, 0, SEEK_SET) ; /* Go to start of file. */
-
- len = ARRAY_LEN (psf->u.dbuf) ;
-
- data = psf->u.dbuf ;
-
- chan = 0 ;
- readcount = len ;
- while (readcount > 0)
- { readcount = sf_read_double ((SNDFILE*) psf, data, len) ;
- for (k = 0 ; k < readcount ; k++)
- { temp = fabs (data [k]) ;
- peaks [chan] = temp > peaks [chan] ? temp : peaks [chan] ;
- chan = (chan + 1) % psf->sf.channels ;
- } ;
- } ;
-
- sf_seek ((SNDFILE*) psf, position, SEEK_SET) ; /* Return to original position. */
-
- sf_command ((SNDFILE*) psf, SFC_SET_NORM_DOUBLE, NULL, save_state) ;
-
- return 0 ;
-} /* psf_calc_max_all_channels */
-
-int
-psf_get_signal_max (SF_PRIVATE *psf, double *peak)
-{ int k ;
-
- if (psf->peak_info == NULL)
- return SF_FALSE ;
-
- peak [0] = psf->peak_info->peaks [0].value ;
-
- for (k = 1 ; k < psf->sf.channels ; k++)
- peak [0] = SF_MAX (peak [0], psf->peak_info->peaks [k].value) ;
-
- return SF_TRUE ;
-} /* psf_get_signal_max */
-
-int
-psf_get_max_all_channels (SF_PRIVATE *psf, double *peaks)
-{ int k ;
-
- if (psf->peak_info == NULL)
- return SF_FALSE ;
-
- for (k = 0 ; k < psf->sf.channels ; k++)
- peaks [k] = psf->peak_info->peaks [k].value ;
-
- return SF_TRUE ;
-} /* psf_get_max_all_channels */
-
-
-/*
-** Do not edit or modify anything in this comment block.
-** The arch-tag line is a file identity tag for the GNU Arch
-** revision control system.
-**
-** arch-tag: 0aae0d9d-ab2b-4d70-ade3-47a534666f8e
-*/
diff --git a/libs/libsndfile/src/common.c b/libs/libsndfile/src/common.c
deleted file mode 100644
index fa0f4f7b62..0000000000
--- a/libs/libsndfile/src/common.c
+++ /dev/null
@@ -1,1290 +0,0 @@
-/*
-** Copyright (C) 1999-2006 Erik de Castro Lopo <erikd@mega-nerd.com>
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU Lesser General Public License as published by
-** the Free Software Foundation; either version 2.1 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU Lesser General Public License for more details.
-**
-** You should have received a copy of the GNU Lesser General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-*/
-
-#include <stdarg.h>
-#include <string.h>
-#include <ctype.h>
-#include <math.h>
-#include <time.h>
-
-#include "sndfile.h"
-#include "sfendian.h"
-#include "common.h"
-
-/*-----------------------------------------------------------------------------------------------
-** psf_log_printf allows libsndfile internal functions to print to an internal logbuffer which
-** can later be displayed.
-** The format specifiers are as for printf but without the field width and other modifiers.
-** Printing is performed to the logbuffer char array of the SF_PRIVATE struct.
-** Printing is done in such a way as to guarantee that the log never overflows the end of the
-** logbuffer array.
-*/
-
-static inline void
-log_putchar (SF_PRIVATE *psf, char ch)
-{ if (psf->logindex < SIGNED_SIZEOF (psf->logbuffer) - 1)
- { psf->logbuffer [psf->logindex++] = ch ;
- psf->logbuffer [psf->logindex] = 0 ;
- } ;
- return ;
-} /* log_putchar */
-
-void
-psf_log_printf (SF_PRIVATE *psf, const char *format, ...)
-{ va_list ap ;
- unsigned int u ;
- int d, tens, shift, width, width_specifier, left_align ;
- char c, *strptr, istr [5], lead_char, sign_char ;
-
- va_start (ap, format) ;
-
- while ((c = *format++))
- { if (c != '%')
- { log_putchar (psf, c) ;
- continue ;
- } ;
-
- if (format [0] == '%') /* Handle %% */
- { log_putchar (psf, '%') ;
- format ++ ;
- continue ;
- } ;
-
- sign_char = 0 ;
- left_align = SF_FALSE ;
- while (1)
- { switch (format [0])
- { case ' ' :
- case '+' :
- sign_char = format [0] ;
- format ++ ;
- continue ;
-
- case '-' :
- left_align = SF_TRUE ;
- format ++ ;
- continue ;
-
- default : break ;
- } ;
-
- break ;
- } ;
-
- if (format [0] == 0)
- break ;
-
- lead_char = ' ' ;
- if (format [0] == '0')
- lead_char = '0' ;
-
- width_specifier = 0 ;
- while ((c = *format++) && isdigit (c))
- width_specifier = width_specifier * 10 + (c - '0') ;
-
- switch (c)
- { case 0 : /* NULL character. */
- va_end (ap) ;
- return ;
-
- case 's': /* string */
- strptr = va_arg (ap, char *) ;
- if (strptr == NULL)
- break ;
- width_specifier -= strlen (strptr) ;
- if (left_align == SF_FALSE)
- while (width_specifier -- > 0)
- log_putchar (psf, ' ') ;
- while (*strptr)
- log_putchar (psf, *strptr++) ;
- while (width_specifier -- > 0)
- log_putchar (psf, ' ') ;
- break ;
-
- case 'd': /* int */
- d = va_arg (ap, int) ;
-
- if (d < 0)
- { d = -d ;
- sign_char = '-' ;
- if (lead_char != '0' && left_align == SF_FALSE)
- width_specifier -- ;
- } ;
-
- tens = 1 ;
- width = 1 ;
- while (d / tens >= 10)
- { tens *= 10 ;
- width ++ ;
- } ;
-
- width_specifier -= width ;
-
- if (sign_char == ' ')
- { log_putchar (psf, ' ') ;
- width_specifier -- ;
- } ;
-
- if (left_align == SF_FALSE && lead_char != '0')
- { if (sign_char == '+')
- width_specifier -- ;
-
- while (width_specifier -- > 0)
- log_putchar (psf, lead_char) ;
- } ;
-
- if (sign_char == '+' || sign_char == '-')
- { log_putchar (psf, sign_char) ;
- width_specifier -- ;
- } ;
-
- if (left_align == SF_FALSE)
- while (width_specifier -- > 0)
- log_putchar (psf, lead_char) ;
-
- while (tens > 0)
- { log_putchar (psf, '0' + d / tens) ;
- d %= tens ;
- tens /= 10 ;
- } ;
-
- while (width_specifier -- > 0)
- log_putchar (psf, lead_char) ;
- break ;
-
- case 'D': /* sf_count_t */
- { sf_count_t D, Tens ;
-
- D = va_arg (ap, sf_count_t) ;
-
- if (D == 0)
- { while (-- width_specifier > 0)
- log_putchar (psf, lead_char) ;
- log_putchar (psf, '0') ;
- break ;
- }
- if (D < 0)
- { log_putchar (psf, '-') ;
- D = -D ;
- } ;
- Tens = 1 ;
- width = 1 ;
- while (D / Tens >= 10)
- { Tens *= 10 ;
- width ++ ;
- } ;
-
- while (width_specifier > width)
- { log_putchar (psf, lead_char) ;
- width_specifier-- ;
- } ;
-
- while (Tens > 0)
- { log_putchar (psf, '0' + D / Tens) ;
- D %= Tens ;
- Tens /= 10 ;
- } ;
- } ;
- break ;
-
- case 'u': /* unsigned int */
- u = va_arg (ap, unsigned int) ;
-
- tens = 1 ;
- width = 1 ;
- while (u / tens >= 10)
- { tens *= 10 ;
- width ++ ;
- } ;
-
- width_specifier -= width ;
-
- if (sign_char == ' ')
- { log_putchar (psf, ' ') ;
- width_specifier -- ;
- } ;
-
- if (left_align == SF_FALSE && lead_char != '0')
- { if (sign_char == '+')
- width_specifier -- ;
-
- while (width_specifier -- > 0)
- log_putchar (psf, lead_char) ;
- } ;
-
- if (sign_char == '+' || sign_char == '-')
- { log_putchar (psf, sign_char) ;
- width_specifier -- ;
- } ;
-
- if (left_align == SF_FALSE)
- while (width_specifier -- > 0)
- log_putchar (psf, lead_char) ;
-
- while (tens > 0)
- { log_putchar (psf, '0' + u / tens) ;
- u %= tens ;
- tens /= 10 ;
- } ;
-
- while (width_specifier -- > 0)
- log_putchar (psf, lead_char) ;
- break ;
-
- case 'c': /* char */
- c = va_arg (ap, int) & 0xFF ;
- log_putchar (psf, c) ;
- break ;
-
- case 'x': /* hex */
- case 'X': /* hex */
- d = va_arg (ap, int) ;
-
- if (d == 0)
- { while (--width_specifier > 0)
- log_putchar (psf, lead_char) ;
- log_putchar (psf, '0') ;
- break ;
- } ;
- shift = 28 ;
- width = (width_specifier < 8) ? 8 : width_specifier ;
- while (! ((0xF << shift) & d))
- { shift -= 4 ;
- width -- ;
- } ;
-
- while (width > 0 && width_specifier > width)
- { log_putchar (psf, lead_char) ;
- width_specifier-- ;
- } ;
-
- while (shift >= 0)
- { c = (d >> shift) & 0xF ;
- log_putchar (psf, (c > 9) ? c + 'A' - 10 : c + '0') ;
- shift -= 4 ;
- } ;
- break ;
-
- case 'M': /* int2str */
- d = va_arg (ap, int) ;
- if (CPU_IS_LITTLE_ENDIAN)
- { istr [0] = d & 0xFF ;
- istr [1] = (d >> 8) & 0xFF ;
- istr [2] = (d >> 16) & 0xFF ;
- istr [3] = (d >> 24) & 0xFF ;
- }
- else
- { istr [3] = d & 0xFF ;
- istr [2] = (d >> 8) & 0xFF ;
- istr [1] = (d >> 16) & 0xFF ;
- istr [0] = (d >> 24) & 0xFF ;
- } ;
- istr [4] = 0 ;
- strptr = istr ;
- while (*strptr)
- { c = *strptr++ ;
- log_putchar (psf, c) ;
- } ;
- break ;
-
- default :
- log_putchar (psf, '*') ;
- log_putchar (psf, c) ;
- log_putchar (psf, '*') ;
- break ;
- } /* switch */
- } /* while */
-
- va_end (ap) ;
- return ;
-} /* psf_log_printf */
-
-#ifndef PSF_LOG_PRINTF_ONLY
-/*-----------------------------------------------------------------------------------------------
-** ASCII header printf functions.
-** Some formats (ie NIST) use ascii text in their headers.
-** Format specifiers are the same as the standard printf specifiers (uses vsnprintf).
-** If this generates a compile error on any system, the author should be notified
-** so an alternative vsnprintf can be provided.
-*/
-
-void
-psf_asciiheader_printf (SF_PRIVATE *psf, const char *format, ...)
-{ va_list argptr ;
- int maxlen ;
- char *start ;
-
- maxlen = strlen ((char*) psf->header) ;
- start = ((char*) psf->header) + maxlen ;
- maxlen = sizeof (psf->header) - maxlen ;
-
- va_start (argptr, format) ;
- LSF_VSNPRINTF (start, maxlen, format, argptr) ;
- va_end (argptr) ;
-
- /* Make sure the string is properly terminated. */
- start [maxlen - 1] = 0 ;
-
- psf->headindex = strlen ((char*) psf->header) ;
-
- return ;
-} /* psf_asciiheader_printf */
-
-/*-----------------------------------------------------------------------------------------------
-** Binary header writing functions. Returns number of bytes written.
-**
-** Format specifiers for psf_binheader_writef are as follows
-** m - marker - four bytes - no endian manipulation
-**
-** e - all following numerical values will be little endian
-** E - all following numerical values will be big endian
-**
-** t - all following O types will be truncated to 4 bytes
-** T - switch off truncation of all following O types
-**
-** 1 - single byte value
-** 2 - two byte value
-** 3 - three byte value
-** 4 - four byte value
-** 8 - eight byte value (sometimes written as 4 bytes)
-**
-** s - string preceded by a four byte length
-** S - string including null terminator
-** f - floating point data
-** d - double precision floating point data
-** h - 16 binary bytes value
-**
-** b - binary data (see below)
-** z - zero bytes (ses below)
-** j - jump forwards or backwards
-**
-** To write a word followed by an int (both little endian) use:
-** psf_binheader_writef ("e24", wordval, longval) ;
-**
-** To write binary data use:
-** psf_binheader_writef ("b", &bindata, sizeof (bindata)) ;
-**
-** To write N zero bytes use:
-** NOTE: due to platform issues (ie x86-64) you should cast the
-** argument to size_t or ensure the variable type is size_t.
-** psf_binheader_writef ("z", N) ;
-*/
-
-/* These macros may seem a bit messy but do prevent problems with processors which
-** seg. fault when asked to write an int or short to a non-int/short aligned address.
-*/
-
-static inline void
-header_put_byte (SF_PRIVATE *psf, char x)
-{ if (psf->headindex < SIGNED_SIZEOF (psf->header) - 1)
- psf->header [psf->headindex++] = x ;
-} /* header_put_byte */
-
-#if (CPU_IS_BIG_ENDIAN == 1)
-static inline void
-header_put_marker (SF_PRIVATE *psf, int x)
-{ if (psf->headindex < SIGNED_SIZEOF (psf->header) - 4)
- { psf->header [psf->headindex++] = (x >> 24) ;
- psf->header [psf->headindex++] = (x >> 16) ;
- psf->header [psf->headindex++] = (x >> 8) ;
- psf->header [psf->headindex++] = x ;
- } ;
-} /* header_put_marker */
-
-#elif (CPU_IS_LITTLE_ENDIAN == 1)
-static inline void
-header_put_marker (SF_PRIVATE *psf, int x)
-{ if (psf->headindex < SIGNED_SIZEOF (psf->header) - 4)
- { psf->header [psf->headindex++] = x ;
- psf->header [psf->headindex++] = (x >> 8) ;
- psf->header [psf->headindex++] = (x >> 16) ;
- psf->header [psf->headindex++] = (x >> 24) ;
- } ;
-} /* header_put_marker */
-
-#else
-# error "Cannot determine endian-ness of processor."
-#endif
-
-
-static inline void
-header_put_be_short (SF_PRIVATE *psf, int x)
-{ if (psf->headindex < SIGNED_SIZEOF (psf->header) - 2)
- { psf->header [psf->headindex++] = (x >> 8) ;
- psf->header [psf->headindex++] = x ;
- } ;
-} /* header_put_be_short */
-
-static inline void
-header_put_le_short (SF_PRIVATE *psf, int x)
-{ if (psf->headindex < SIGNED_SIZEOF (psf->header) - 2)
- { psf->header [psf->headindex++] = x ;
- psf->header [psf->headindex++] = (x >> 8) ;
- } ;
-} /* header_put_le_short */
-
-static inline void
-header_put_be_3byte (SF_PRIVATE *psf, int x)
-{ if (psf->headindex < SIGNED_SIZEOF (psf->header) - 3)
- { psf->header [psf->headindex++] = (x >> 16) ;
- psf->header [psf->headindex++] = (x >> 8) ;
- psf->header [psf->headindex++] = x ;
- } ;
-} /* header_put_be_3byte */
-
-static inline void
-header_put_le_3byte (SF_PRIVATE *psf, int x)
-{ if (psf->headindex < SIGNED_SIZEOF (psf->header) - 3)
- { psf->header [psf->headindex++] = x ;
- psf->header [psf->headindex++] = (x >> 8) ;
- psf->header [psf->headindex++] = (x >> 16) ;
- } ;
-} /* header_put_le_3byte */
-
-static inline void
-header_put_be_int (SF_PRIVATE *psf, int x)
-{ if (psf->headindex < SIGNED_SIZEOF (psf->header) - 4)
- { psf->header [psf->headindex++] = (x >> 24) ;
- psf->header [psf->headindex++] = (x >> 16) ;
- psf->header [psf->headindex++] = (x >> 8) ;
- psf->header [psf->headindex++] = x ;
- } ;
-} /* header_put_be_int */
-
-static inline void
-header_put_le_int (SF_PRIVATE *psf, int x)
-{ if (psf->headindex < SIGNED_SIZEOF (psf->header) - 4)
- { psf->header [psf->headindex++] = x ;
- psf->header [psf->headindex++] = (x >> 8) ;
- psf->header [psf->headindex++] = (x >> 16) ;
- psf->header [psf->headindex++] = (x >> 24) ;
- } ;
-} /* header_put_le_int */
-
-#if (SIZEOF_SF_COUNT_T == 4)
-
-static inline void
-header_put_be_8byte (SF_PRIVATE *psf, sf_count_t x)
-{ if (psf->headindex < SIGNED_SIZEOF (psf->header) - 8)
- { psf->header [psf->headindex++] = 0 ;
- psf->header [psf->headindex++] = 0 ;
- psf->header [psf->headindex++] = 0 ;
- psf->header [psf->headindex++] = 0 ;
- psf->header [psf->headindex++] = (x >> 24) ;
- psf->header [psf->headindex++] = (x >> 16) ;
- psf->header [psf->headindex++] = (x >> 8) ;
- psf->header [psf->headindex++] = x ;
- } ;
-} /* header_put_be_8byte */
-
-static inline void
-header_put_le_8byte (SF_PRIVATE *psf, sf_count_t x)
-{ if (psf->headindex < SIGNED_SIZEOF (psf->header) - 8)
- { psf->header [psf->headindex++] = x ;
- psf->header [psf->headindex++] = (x >> 8) ;
- psf->header [psf->headindex++] = (x >> 16) ;
- psf->header [psf->headindex++] = (x >> 24) ;
- psf->header [psf->headindex++] = 0 ;
- psf->header [psf->headindex++] = 0 ;
- psf->header [psf->headindex++] = 0 ;
- psf->header [psf->headindex++] = 0 ;
- } ;
-} /* header_put_le_8byte */
-
-#elif (SIZEOF_SF_COUNT_T == 8)
-
-static inline void
-header_put_be_8byte (SF_PRIVATE *psf, sf_count_t x)
-{ if (psf->headindex < SIGNED_SIZEOF (psf->header) - 8)
- { psf->header [psf->headindex++] = (x >> 56) ;
- psf->header [psf->headindex++] = (x >> 48) ;
- psf->header [psf->headindex++] = (x >> 40) ;
- psf->header [psf->headindex++] = (x >> 32) ;
- psf->header [psf->headindex++] = (x >> 24) ;
- psf->header [psf->headindex++] = (x >> 16) ;
- psf->header [psf->headindex++] = (x >> 8) ;
- psf->header [psf->headindex++] = x ;
- } ;
-} /* header_put_be_8byte */
-
-static inline void
-header_put_le_8byte (SF_PRIVATE *psf, sf_count_t x)
-{ if (psf->headindex < SIGNED_SIZEOF (psf->header) - 8)
- { psf->header [psf->headindex++] = x ;
- psf->header [psf->headindex++] = (x >> 8) ;
- psf->header [psf->headindex++] = (x >> 16) ;
- psf->header [psf->headindex++] = (x >> 24) ;
- psf->header [psf->headindex++] = (x >> 32) ;
- psf->header [psf->headindex++] = (x >> 40) ;
- psf->header [psf->headindex++] = (x >> 48) ;
- psf->header [psf->headindex++] = (x >> 56) ;
- } ;
-} /* header_put_le_8byte */
-
-#else
-#error "SIZEOF_SF_COUNT_T is not defined."
-#endif
-
-int
-psf_binheader_writef (SF_PRIVATE *psf, const char *format, ...)
-{ va_list argptr ;
- sf_count_t countdata ;
- unsigned long longdata ;
- unsigned int data ;
- float floatdata ;
- double doubledata ;
- void *bindata ;
- size_t size ;
- char c, *strptr ;
- int count = 0, trunc_8to4 ;
-
- trunc_8to4 = SF_FALSE ;
-
- va_start (argptr, format) ;
-
- while ((c = *format++))
- { switch (c)
- { case ' ' : /* Do nothing. Just used to space out format string. */
- break ;
-
- case 'e' : /* All conversions are now from LE to host. */
- psf->rwf_endian = SF_ENDIAN_LITTLE ;
- break ;
-
- case 'E' : /* All conversions are now from BE to host. */
- psf->rwf_endian = SF_ENDIAN_BIG ;
- break ;
-
- case 't' : /* All 8 byte values now get written as 4 bytes. */
- trunc_8to4 = SF_TRUE ;
- break ;
-
- case 'T' : /* All 8 byte values now get written as 8 bytes. */
- trunc_8to4 = SF_FALSE ;
- break ;
-
- case 'm' :
- data = va_arg (argptr, unsigned int) ;
- header_put_marker (psf, data) ;
- count += 4 ;
- break ;
-
- case '1' :
- data = va_arg (argptr, unsigned int) ;
- header_put_byte (psf, data) ;
- count += 1 ;
- break ;
-
- case '2' :
- data = va_arg (argptr, unsigned int) ;
- if (psf->rwf_endian == SF_ENDIAN_BIG)
- { header_put_be_short (psf, data) ;
- }
- else
- { header_put_le_short (psf, data) ;
- } ;
- count += 2 ;
- break ;
-
- case '3' : /* tribyte */
- data = va_arg (argptr, unsigned int) ;
- if (psf->rwf_endian == SF_ENDIAN_BIG)
- { header_put_be_3byte (psf, data) ;
- }
- else
- { header_put_le_3byte (psf, data) ;
- } ;
- count += 3 ;
- break ;
-
- case '4' :
- data = va_arg (argptr, unsigned int) ;
- if (psf->rwf_endian == SF_ENDIAN_BIG)
- { header_put_be_int (psf, data) ;
- }
- else
- { header_put_le_int (psf, data) ;
- } ;
- count += 4 ;
- break ;
-
- case '8' :
- countdata = va_arg (argptr, sf_count_t) ;
- if (psf->rwf_endian == SF_ENDIAN_BIG && trunc_8to4 == SF_FALSE)
- { header_put_be_8byte (psf, countdata) ;
- count += 8 ;
- }
- else if (psf->rwf_endian == SF_ENDIAN_LITTLE && trunc_8to4 == SF_FALSE)
- { header_put_le_8byte (psf, countdata) ;
- count += 8 ;
- }
- else if (psf->rwf_endian == SF_ENDIAN_BIG && trunc_8to4 == SF_TRUE)
- { longdata = countdata & 0xFFFFFFFF ;
- header_put_be_int (psf, longdata) ;
- count += 4 ;
- }
- else if (psf->rwf_endian == SF_ENDIAN_LITTLE && trunc_8to4 == SF_TRUE)
- { longdata = countdata & 0xFFFFFFFF ;
- header_put_le_int (psf, longdata) ;
- count += 4 ;
- }
- break ;
-
- case 'f' :
- /* Floats are passed as doubles. Is this always true? */
- floatdata = (float) va_arg (argptr, double) ;
- if (psf->rwf_endian == SF_ENDIAN_BIG)
- float32_be_write (floatdata, psf->header + psf->headindex) ;
- else
- float32_le_write (floatdata, psf->header + psf->headindex) ;
- psf->headindex += 4 ;
- count += 4 ;
- break ;
-
- case 'd' :
- doubledata = va_arg (argptr, double) ;
- if (psf->rwf_endian == SF_ENDIAN_BIG)
- double64_be_write (doubledata, psf->header + psf->headindex) ;
- else
- double64_le_write (doubledata, psf->header + psf->headindex) ;
- psf->headindex += 8 ;
- count += 8 ;
- break ;
-
- case 's' :
- /* Write a C string (guaranteed to have a zero terminator). */
- strptr = va_arg (argptr, char *) ;
- size = strlen (strptr) + 1 ;
- size += (size & 1) ;
- if (psf->rwf_endian == SF_ENDIAN_BIG)
- header_put_be_int (psf, size) ;
- else
- header_put_le_int (psf, size) ;
- memcpy (&(psf->header [psf->headindex]), strptr, size) ;
- psf->headindex += size ;
- psf->header [psf->headindex - 1] = 0 ;
- count += 4 + size ;
- break ;
-
- case 'S' :
- /*
- ** Write an AIFF style string (no zero terminator but possibly
- ** an extra pad byte if the string length is odd).
- */
- strptr = va_arg (argptr, char *) ;
- size = strlen (strptr) ;
- if (psf->rwf_endian == SF_ENDIAN_BIG)
- header_put_be_int (psf, size) ;
- else
- header_put_le_int (psf, size) ;
- memcpy (&(psf->header [psf->headindex]), strptr, size + 1) ;
- size += (size & 1) ;
- psf->headindex += size ;
- psf->header [psf->headindex] = 0 ;
- count += 4 + size ;
- break ;
-
- case 'b' :
- bindata = va_arg (argptr, void *) ;
- size = va_arg (argptr, size_t) ;
- memcpy (&(psf->header [psf->headindex]), bindata, size) ;
- psf->headindex += size ;
- count += size ;
- break ;
-
- case 'z' :
- size = va_arg (argptr, size_t) ;
- count += size ;
- while (size)
- { psf->header [psf->headindex] = 0 ;
- psf->headindex ++ ;
- size -- ;
- } ;
- break ;
-
- case 'h' :
- bindata = va_arg (argptr, void *) ;
- memcpy (&(psf->header [psf->headindex]), bindata, 16) ;
- psf->headindex += 16 ;
- count += 16 ;
- break ;
-
- case 'j' :
- size = va_arg (argptr, size_t) ;
- psf->headindex += size ;
- count = size ;
- break ;
-
- default :
- psf_log_printf (psf, "*** Invalid format specifier `%c'\n", c) ;
- psf->error = SFE_INTERNAL ;
- break ;
- } ;
- } ;
-
- va_end (argptr) ;
- return count ;
-} /* psf_binheader_writef */
-
-/*-----------------------------------------------------------------------------------------------
-** Binary header reading functions. Returns number of bytes read.
-**
-** Format specifiers are the same as for header write function above with the following
-** additions:
-**
-** p - jump a given number of position from start of file.
-**
-** If format is NULL, psf_binheader_readf returns the current offset.
-*/
-
-#if (CPU_IS_BIG_ENDIAN == 1)
-#define GET_MARKER(ptr) ( ((ptr) [0] << 24) | ((ptr) [1] << 16) | \
- ((ptr) [2] << 8) | ((ptr) [3]) )
-
-#elif (CPU_IS_LITTLE_ENDIAN == 1)
-#define GET_MARKER(ptr) ( ((ptr) [0]) | ((ptr) [1] << 8) | \
- ((ptr) [2] << 16) | ((ptr) [3] << 24) )
-
-#else
-# error "Cannot determine endian-ness of processor."
-#endif
-
-#define GET_LE_SHORT(ptr) ( ((ptr) [1] << 8) | ((ptr) [0]) )
-#define GET_BE_SHORT(ptr) ( ((ptr) [0] << 8) | ((ptr) [1]) )
-
-#define GET_LE_3BYTE(ptr) ( ((ptr) [2] << 16) | ((ptr) [1] << 8) | ((ptr) [0]) )
-#define GET_BE_3BYTE(ptr) ( ((ptr) [0] << 16) | ((ptr) [1] << 8) | ((ptr) [2]) )
-
-#define GET_LE_INT(ptr) ( ((ptr) [3] << 24) | ((ptr) [2] << 16) | \
- ((ptr) [1] << 8) | ((ptr) [0]) )
-
-#define GET_BE_INT(ptr) ( ((ptr) [0] << 24) | ((ptr) [1] << 16) | \
- ((ptr) [2] << 8) | ((ptr) [3]) )
-
-#if (SIZEOF_LONG == 4)
-#define GET_LE_8BYTE(ptr) ( ((ptr) [3] << 24) | ((ptr) [2] << 16) | \
- ((ptr) [1] << 8) | ((ptr) [0]) )
-
-#define GET_BE_8BYTE(ptr) ( ((ptr) [4] << 24) | ((ptr) [5] << 16) | \
- ((ptr) [6] << 8) | ((ptr) [7]) )
-#else
-#define GET_LE_8BYTE(ptr) ( (((ptr) [7] * 1L) << 56) | (((ptr) [6] * 1L) << 48) | \
- (((ptr) [5] * 1L) << 40) | (((ptr) [4] * 1L) << 32) | \
- (((ptr) [3] * 1L) << 24) | (((ptr) [2] * 1L) << 16) | \
- (((ptr) [1] * 1L) << 8 ) | ((ptr) [0]))
-
-#define GET_BE_8BYTE(ptr) ( (((ptr) [0] * 1L) << 56) | (((ptr) [1] * 1L) << 48) | \
- (((ptr) [2] * 1L) << 40) | (((ptr) [3] * 1L) << 32) | \
- (((ptr) [4] * 1L) << 24) | (((ptr) [5] * 1L) << 16) | \
- (((ptr) [6] * 1L) << 8 ) | ((ptr) [7]))
-
-#endif
-
-static int
-header_read (SF_PRIVATE *psf, void *ptr, int bytes)
-{ int count = 0 ;
-
- if (psf->headindex >= SIGNED_SIZEOF (psf->header))
- { memset (ptr, 0, SIGNED_SIZEOF (psf->header) - psf->headindex) ;
-
- /* This is the best that we can do. */
- psf_fseek (psf, bytes, SEEK_CUR) ;
- return bytes ;
- } ;
-
- if (psf->headindex + bytes > SIGNED_SIZEOF (psf->header))
- { int most ;
-
- most = SIGNED_SIZEOF (psf->header) - psf->headindex ;
- psf_fread (psf->header + psf->headend, 1, most, psf) ;
- memset (ptr + most, 0, bytes - most) ;
-
- psf_fseek (psf, bytes - most, SEEK_CUR) ;
- return bytes ;
- } ;
-
- if (psf->headindex + bytes > psf->headend)
- { count = psf_fread (psf->header + psf->headend, 1, bytes - (psf->headend - psf->headindex), psf) ;
- if (count != bytes - (int) (psf->headend - psf->headindex))
- { psf_log_printf (psf, "Error : psf_fread returned short count.\n") ;
- return 0 ;
- } ;
- psf->headend += count ;
- } ;
-
- memcpy (ptr, psf->header + psf->headindex, bytes) ;
- psf->headindex += bytes ;
-
- return bytes ;
-} /* header_read */
-
-static void
-header_seek (SF_PRIVATE *psf, sf_count_t position, int whence)
-{
-
- switch (whence)
- { case SEEK_SET :
- if (position > SIGNED_SIZEOF (psf->header))
- { /* Too much header to cache so just seek instead. */
- psf_fseek (psf, position, whence) ;
- return ;
- } ;
- if (position > psf->headend)
- psf->headend += psf_fread (psf->header + psf->headend, 1, position - psf->headend, psf) ;
- psf->headindex = position ;
- break ;
-
- case SEEK_CUR :
- if (psf->headindex + position < 0)
- break ;
-
- if (psf->headindex >= SIGNED_SIZEOF (psf->header))
- { psf_fseek (psf, position, whence) ;
- return ;
- } ;
-
- if (psf->headindex + position <= psf->headend)
- { psf->headindex += position ;
- break ;
- } ;
-
- if (psf->headindex + position > SIGNED_SIZEOF (psf->header))
- { /* Need to jump this without caching it. */
- psf->headindex = psf->headend ;
- psf_fseek (psf, position, SEEK_CUR) ;
- break ;
- } ;
-
- psf->headend += psf_fread (psf->header + psf->headend, 1, position - (psf->headend - psf->headindex), psf) ;
- psf->headindex = psf->headend ;
- break ;
-
- case SEEK_END :
- default :
- psf_log_printf (psf, "Bad whence param in header_seek().\n") ;
- break ;
- } ;
-
- return ;
-} /* header_seek */
-
-static int
-header_gets (SF_PRIVATE *psf, char *ptr, int bufsize)
-{
- int k ;
-
- for (k = 0 ; k < bufsize - 1 ; k++)
- { if (psf->headindex < psf->headend)
- { ptr [k] = psf->header [psf->headindex] ;
- psf->headindex ++ ;
- }
- else
- { psf->headend += psf_fread (psf->header + psf->headend, 1, 1, psf) ;
- ptr [k] = psf->header [psf->headindex] ;
- psf->headindex = psf->headend ;
- } ;
-
- if (ptr [k] == '\n')
- break ;
- } ;
-
- ptr [k] = 0 ;
-
- return k ;
-} /* header_gets */
-
-int
-psf_binheader_readf (SF_PRIVATE *psf, char const *format, ...)
-{ va_list argptr ;
- sf_count_t *countptr, countdata ;
- unsigned char *ucptr, sixteen_bytes [16] ;
- unsigned int *intptr, intdata ;
- unsigned short *shortptr ;
- char *charptr ;
- float *floatptr ;
- double *doubleptr ;
- char c ;
- int byte_count = 0, count ;
-
- if (! format)
- return psf_ftell (psf) ;
-
- va_start (argptr, format) ;
-
- while ((c = *format++))
- { switch (c)
- { case 'e' : /* All conversions are now from LE to host. */
- psf->rwf_endian = SF_ENDIAN_LITTLE ;
- break ;
-
- case 'E' : /* All conversions are now from BE to host. */
- psf->rwf_endian = SF_ENDIAN_BIG ;
- break ;
-
- case 'm' :
- intptr = va_arg (argptr, unsigned int*) ;
- ucptr = (unsigned char*) intptr ;
- byte_count += header_read (psf, ucptr, sizeof (int)) ;
- *intptr = GET_MARKER (ucptr) ;
- break ;
-
- case 'h' :
- intptr = va_arg (argptr, unsigned int*) ;
- ucptr = (unsigned char*) intptr ;
- byte_count += header_read (psf, sixteen_bytes, sizeof (sixteen_bytes)) ;
- { int k ;
- intdata = 0 ;
- for (k = 0 ; k < 16 ; k++)
- intdata ^= sixteen_bytes [k] << k ;
- }
- *intptr = intdata ;
- break ;
-
- case '1' :
- charptr = va_arg (argptr, char*) ;
- *charptr = 0 ;
- byte_count += header_read (psf, charptr, sizeof (char)) ;
- break ;
-
- case '2' :
- shortptr = va_arg (argptr, unsigned short*) ;
- *shortptr = 0 ;
- ucptr = (unsigned char*) shortptr ;
- byte_count += header_read (psf, ucptr, sizeof (short)) ;
- if (psf->rwf_endian == SF_ENDIAN_BIG)
- *shortptr = GET_BE_SHORT (ucptr) ;
- else
- *shortptr = GET_LE_SHORT (ucptr) ;
- break ;
-
- case '3' :
- intptr = va_arg (argptr, unsigned int*) ;
- *intptr = 0 ;
- byte_count += header_read (psf, sixteen_bytes, 3) ;
- if (psf->rwf_endian == SF_ENDIAN_BIG)
- *intptr = GET_BE_3BYTE (sixteen_bytes) ;
- else
- *intptr = GET_LE_3BYTE (sixteen_bytes) ;
- break ;
-
- case '4' :
- intptr = va_arg (argptr, unsigned int*) ;
- *intptr = 0 ;
- ucptr = (unsigned char*) intptr ;
- byte_count += header_read (psf, ucptr, sizeof (int)) ;
- if (psf->rwf_endian == SF_ENDIAN_BIG)
- *intptr = GET_BE_INT (ucptr) ;
- else
- *intptr = GET_LE_INT (ucptr) ;
- break ;
-
- case '8' :
- countptr = va_arg (argptr, sf_count_t *) ;
- *countptr = 0 ;
- byte_count += header_read (psf, sixteen_bytes, 8) ;
- if (psf->rwf_endian == SF_ENDIAN_BIG)
- countdata = GET_BE_8BYTE (sixteen_bytes) ;
- else
- countdata = GET_LE_8BYTE (sixteen_bytes) ;
- *countptr = countdata ;
- break ;
-
- case 'f' : /* Float conversion */
- floatptr = va_arg (argptr, float *) ;
- *floatptr = 0.0 ;
- byte_count += header_read (psf, floatptr, sizeof (float)) ;
- if (psf->rwf_endian == SF_ENDIAN_BIG)
- *floatptr = float32_be_read ((unsigned char*) floatptr) ;
- else
- *floatptr = float32_le_read ((unsigned char*) floatptr) ;
- break ;
-
- case 'd' : /* double conversion */
- doubleptr = va_arg (argptr, double *) ;
- *doubleptr = 0.0 ;
- byte_count += header_read (psf, doubleptr, sizeof (double)) ;
- if (psf->rwf_endian == SF_ENDIAN_BIG)
- *doubleptr = double64_be_read ((unsigned char*) doubleptr) ;
- else
- *doubleptr = double64_le_read ((unsigned char*) doubleptr) ;
- break ;
-
- case 's' :
- psf_log_printf (psf, "Format conversion 's' not implemented yet.\n") ;
- /*
- strptr = va_arg (argptr, char *) ;
- size = strlen (strptr) + 1 ;
- size += (size & 1) ;
- longdata = H2LE_INT (size) ;
- get_int (psf, longdata) ;
- memcpy (&(psf->header [psf->headindex]), strptr, size) ;
- psf->headindex += size ;
- */
- break ;
-
- case 'b' :
- charptr = va_arg (argptr, char*) ;
- count = va_arg (argptr, int) ;
- if (count > 0)
- byte_count += header_read (psf, charptr, count) ;
- break ;
-
- case 'G' :
- charptr = va_arg (argptr, char*) ;
- count = va_arg (argptr, int) ;
- if (count > 0)
- byte_count += header_gets (psf, charptr, count) ;
- break ;
-
- case 'z' :
- psf_log_printf (psf, "Format conversion 'z' not implemented yet.\n") ;
- /*
- size = va_arg (argptr, size_t) ;
- while (size)
- { psf->header [psf->headindex] = 0 ;
- psf->headindex ++ ;
- size -- ;
- } ;
- */
- break ;
-
- case 'p' :
- /* Get the seek position first. */
- count = va_arg (argptr, int) ;
- header_seek (psf, count, SEEK_SET) ;
- byte_count = count ;
- break ;
-
- case 'j' :
- /* Get the seek position first. */
- count = va_arg (argptr, int) ;
- header_seek (psf, count, SEEK_CUR) ;
- byte_count += count ;
- break ;
-
- default :
- psf_log_printf (psf, "*** Invalid format specifier `%c'\n", c) ;
- psf->error = SFE_INTERNAL ;
- break ;
- } ;
- } ;
-
- va_end (argptr) ;
-
- return byte_count ;
-} /* psf_binheader_readf */
-
-/*-----------------------------------------------------------------------------------------------
-*/
-
-sf_count_t
-psf_default_seek (SF_PRIVATE *psf, int mode, sf_count_t samples_from_start)
-{ sf_count_t position, retval ;
-
- if (! (psf->blockwidth && psf->dataoffset >= 0))
- { psf->error = SFE_BAD_SEEK ;
- return PSF_SEEK_ERROR ;
- } ;
-
- if (! psf->sf.seekable)
- { psf->error = SFE_NOT_SEEKABLE ;
- return PSF_SEEK_ERROR ;
- } ;
-
- position = psf->dataoffset + psf->blockwidth * samples_from_start ;
-
- if ((retval = psf_fseek (psf, position, SEEK_SET)) != position)
- { psf->error = SFE_SEEK_FAILED ;
- return PSF_SEEK_ERROR ;
- } ;
-
- mode = mode ;
-
- return samples_from_start ;
-} /* psf_default_seek */
-
-/*-----------------------------------------------------------------------------------------------
-*/
-
-void
-psf_hexdump (void *ptr, int len)
-{ char ascii [17], *data ;
- int k, m ;
-
- if ((data = ptr) == NULL)
- return ;
- if (len <= 0)
- return ;
-
- puts ("") ;
- for (k = 0 ; k < len ; k += 16)
- { memset (ascii, ' ', sizeof (ascii)) ;
-
- printf ("%08X: ", k) ;
- for (m = 0 ; m < 16 && k + m < len ; m++)
- { printf (m == 8 ? " %02X " : "%02X ", data [k + m] & 0xFF) ;
- ascii [m] = isprint (data [k + m]) ? data [k + m] : '.' ;
- } ;
-
- if (m <= 8) printf (" ") ;
- for ( ; m < 16 ; m++) printf (" ") ;
-
- ascii [16] = 0 ;
- printf (" %s\n", ascii) ;
- } ;
-
- puts ("") ;
-} /* psf_hexdump */
-
-void
-psf_log_SF_INFO (SF_PRIVATE *psf)
-{ psf_log_printf (psf, "---------------------------------\n") ;
-
- psf_log_printf (psf, " Sample rate : %d\n", psf->sf.samplerate) ;
- psf_log_printf (psf, " Frames : %D\n", psf->sf.frames) ;
- psf_log_printf (psf, " Channels : %d\n", psf->sf.channels) ;
-
- psf_log_printf (psf, " Format : 0x%X\n", psf->sf.format) ;
- psf_log_printf (psf, " Sections : %d\n", psf->sf.sections) ;
- psf_log_printf (psf, " Seekable : %s\n", psf->sf.seekable ? "TRUE" : "FALSE") ;
-
- psf_log_printf (psf, "---------------------------------\n") ;
-} /* psf_dump_SFINFO */
-
-/*========================================================================================
-*/
-
-SF_INSTRUMENT *
-psf_instrument_alloc (void)
-{ SF_INSTRUMENT *instr ;
-
- instr = calloc (1, sizeof (SF_INSTRUMENT)) ;
-
- if (instr == NULL)
- return NULL ;
-
- /* Set non-zero default values. */
- instr->basenote = -1 ;
- instr->velocity_lo = -1 ;
- instr->velocity_hi = -1 ;
- instr->key_lo = -1 ;
- instr->key_hi = -1 ;
-
- return instr ;
-} /* psf_instrument_alloc */
-
-void*
-psf_memset (void *s, int c, sf_count_t len)
-{ char *ptr ;
- int setcount ;
-
- ptr = (char *) s ;
-
- while (len > 0)
- { setcount = (len > 0x10000000) ? 0x10000000 : (int) len ;
-
- memset (ptr, c, setcount) ;
-
- ptr += setcount ;
- len -= setcount ;
- } ;
-
- return s ;
-} /* psf_memset */
-
-void psf_get_date_str (char *str, int maxlen)
-{ time_t current ;
- struct tm timedata, *tmptr ;
-
- time (&current) ;
-
-#if defined (HAVE_GMTIME_R)
- /* If the re-entrant version is available, use it. */
- tmptr = gmtime_r (&current, &timedata) ;
-#elif defined (HAVE_GMTIME)
- /* Otherwise use the standard one and copy the data to local storage. */
- tmptr = gmtime (&current) ;
- memcpy (&timedata, tmptr, sizeof (timedata)) ;
-#else
- tmptr = NULL ;
-#endif
-
- if (tmptr)
- LSF_SNPRINTF (str, maxlen, "%4d-%02d-%02d %02d:%02d:%02d UTC",
- 1900 + timedata.tm_year, timedata.tm_mon, timedata.tm_mday,
- timedata.tm_hour, timedata.tm_min, timedata.tm_sec) ;
- else
- LSF_SNPRINTF (str, maxlen, "Unknown date") ;
-
- return ;
-} /* psf_get_date_str */
-
-int
-subformat_to_bytewidth (int format)
-{
- switch (format)
- { case SF_FORMAT_PCM_U8 :
- case SF_FORMAT_PCM_S8 :
- return 1 ;
- case SF_FORMAT_PCM_16 :
- return 2 ;
- case SF_FORMAT_PCM_24 :
- return 3 ;
- case SF_FORMAT_PCM_32 :
- case SF_FORMAT_FLOAT :
- return 4 ;
- case SF_FORMAT_DOUBLE :
- return 8 ;
- } ;
-
- return 0 ;
-} /* subformat_to_bytewidth */
-
-int
-s_bitwidth_to_subformat (int bits)
-{ static int array [] =
- { SF_FORMAT_PCM_S8, SF_FORMAT_PCM_16, SF_FORMAT_PCM_24, SF_FORMAT_PCM_32
- } ;
-
- if (bits < 8 || bits > 32)
- return 0 ;
-
- return array [((bits + 7) / 8) - 1] ;
-} /* bitwidth_to_subformat */
-
-int
-u_bitwidth_to_subformat (int bits)
-{ static int array [] =
- { SF_FORMAT_PCM_U8, SF_FORMAT_PCM_16, SF_FORMAT_PCM_24, SF_FORMAT_PCM_32
- } ;
-
- if (bits < 8 || bits > 32)
- return 0 ;
-
- return array [((bits + 7) / 8) - 1] ;
-} /* bitwidth_to_subformat */
-
-#endif /* PSF_LOG_PRINTF_ONLY */
-
-/*
-** Do not edit or modify anything in this comment block.
-** The arch-tag line is a file identity tag for the GNU Arch
-** revision control system.
-**
-** arch-tag: 33e9795e-f717-461a-9feb-65d083a56395
-*/
diff --git a/libs/libsndfile/src/common.h b/libs/libsndfile/src/common.h
deleted file mode 100644
index c08ff67e96..0000000000
--- a/libs/libsndfile/src/common.h
+++ /dev/null
@@ -1,766 +0,0 @@
-/*
-** Copyright (C) 1999-2006 Erik de Castro Lopo <erikd@mega-nerd.com>
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU Lesser General Public License as published by
-** the Free Software Foundation; either version 2.1 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU Lesser General Public License for more details.
-**
-** You should have received a copy of the GNU Lesser General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-*/
-
-#ifndef SNDFILE_COMMON_H
-#define SNDFILE_COMMON_H
-
-#include "sfconfig.h"
-
-#include <stdlib.h>
-
-#if HAVE_STDINT_H
-#include <stdint.h>
-#endif
-
-#ifndef SNDFILE_H
-#include "sndfile.h"
-#elif HAVE_INTTYPES_H
-#include <inttypes.h>
-#endif
-
-#ifdef __cplusplus
-#error "This code is not designed to be compiled with a C++ compiler."
-#endif
-
-#ifdef UNUSED
-#elif defined (__GNUC__)
-# define UNUSED(x) UNUSED_ ## x __attribute__ ((unused))
-#elif defined (__LCLINT__)
-# define UNUSED(x) /*@unused@*/ x
-#else
-# define UNUSED(x) x
-#endif
-
-#ifdef __GNUC__
-# define WARN_UNUSED __attribute__ ((warn_unused_result))
-#else
-# define WARN_UNUSED
-#endif
-
-#define SF_BUFFER_LEN (8192*2)
-#define SF_FILENAME_LEN (512)
-#define SF_SYSERR_LEN (256)
-#define SF_MAX_STRINGS (16)
-#define SF_STR_BUFFER_LEN (8192)
-#define SF_HEADER_LEN (4100 + SF_STR_BUFFER_LEN)
-
-#define PSF_SEEK_ERROR ((sf_count_t) -1)
-
-
-#define BITWIDTH2BYTES(x) (((x) + 7) / 8)
-
-/* For some reason sizeof returns an unsigned value which causes
-** a warning when that value is added or subtracted from a signed
-** value. Use SIGNED_SIZEOF instead.
-*/
-#define SIGNED_SIZEOF(x) ((int) sizeof (x))
-
-#define ARRAY_LEN(x) ((int) (sizeof (x) / sizeof ((x) [0])))
-
-#define SF_MAX(a,b) ((a) > (b) ? (a) : (b))
-#define SF_MIN(a,b) ((a) < (b) ? (a) : (b))
-
-enum
-{ /* PEAK chunk location. */
- SF_PEAK_START = 42,
- SF_PEAK_END = 43,
-
- /* PEAK chunk location. */
- SF_SCALE_MAX = 52,
- SF_SCALE_MIN = 53,
-
- /* str_flags values. */
- SF_STR_ALLOW_START = 0x0100,
- SF_STR_ALLOW_END = 0x0200,
-
- /* Location of strings. */
- SF_STR_LOCATE_START = 0x0400,
- SF_STR_LOCATE_END = 0x0800,
-
- SFD_TYPEMASK = 0x0FFFFFFF
-} ;
-
-#define SFM_MASK (SFM_READ | SFM_WRITE | SFM_RDWR)
-#define SFM_UNMASK (~SFM_MASK)
-
-/*---------------------------------------------------------------------------------------
-** Formats that may be supported at some time in the future.
-** When support is finalised, these values move to src/sndfile.h.
-*/
-
-enum
-{ /* Work in progress. */
-
- /* Formats supported read only. */
- SF_FORMAT_WVE = 0x4020000, /* Psion ALaw Sound File */
- SF_FORMAT_TXW = 0x4030000, /* Yamaha TX16 sampler file */
- SF_FORMAT_DWD = 0x4040000, /* DiamondWare Digirized */
-
- /* Following are detected but not supported. */
- SF_FORMAT_OGG = 0x4090000,
-
- SF_FORMAT_REX = 0x40A0000, /* Propellorheads Rex/Rcy */
- SF_FORMAT_REX2 = 0x40D0000, /* Propellorheads Rex2 */
- SF_FORMAT_KRZ = 0x40E0000, /* Kurzweil sampler file */
- SF_FORMAT_WMA = 0x4100000, /* Windows Media Audio. */
- SF_FORMAT_SHN = 0x4110000, /* Shorten. */
-
- /* Unsupported encodings. */
- SF_FORMAT_VORBIS = 0x1001,
-
- SF_FORMAT_SVX_FIB = 0x1020, /* SVX Fibonacci Delta encoding. */
- SF_FORMAT_SVX_EXP = 0x1021, /* SVX Exponential Delta encoding. */
-
- SF_FORMAT_PCM_N = 0x1030
-} ;
-
-/*---------------------------------------------------------------------------------------
-** PEAK_CHUNK - This chunk type is common to both AIFF and WAVE files although their
-** endian encodings are different.
-*/
-
-typedef struct
-{ double value ; /* signed value of peak */
- sf_count_t position ; /* the sample frame for the peak */
-} PEAK_POS ;
-
-typedef struct
-{ /* libsndfile internal : write a PEAK chunk at the start or end of the file? */
- int peak_loc ;
-
- /* WAV/AIFF */
- unsigned int version ; /* version of the PEAK chunk */
- unsigned int timestamp ; /* secs since 1/1/1970 */
-
- /* CAF */
- unsigned int edit_number ;
-
-#if HAVE_FLEXIBLE_ARRAY
- /* the per channel peak info */
- PEAK_POS peaks [] ;
-#else
- /*
- ** This is not ISO compliant C. It works on some compilers which
- ** don't support the ISO standard flexible struct array which is
- ** used above. If your compiler doesn't like this I suggest you find
- ** youself a 1999 ISO C standards compilant compiler. GCC-3.X is
- ** highly recommended.
- */
- PEAK_POS peaks [0] ;
-#endif
-} PEAK_INFO ;
-
-static inline PEAK_INFO *
-peak_info_calloc (int channels)
-{ return calloc (1, sizeof (PEAK_INFO) + channels * sizeof (PEAK_POS)) ;
-} /* peak_info_calloc */
-
-typedef struct
-{ int type ;
- int flags ;
- char *str ;
-} STR_DATA ;
-
-static inline size_t
-make_size_t (int x)
-{ return (size_t) x ;
-} /* size_t_of_int */
-
-/*=======================================================================================
-** SF_PRIVATE stuct - a pointer to this struct is passed back to the caller of the
-** sf_open_XXXX functions. The caller however has no knowledge of the struct's
-** contents.
-*/
-
-typedef struct sf_private_tag
-{ /* Force the compiler to double align the start of buffer. */
- union
- { double dbuf [SF_BUFFER_LEN / sizeof (double)] ;
-#if (defined (SIZEOF_INT64_T) && (SIZEOF_INT64_T == 8))
- int64_t lbuf [SF_BUFFER_LEN / sizeof (int64_t)] ;
-#else
- long lbuf [SF_BUFFER_LEN / sizeof (double)] ;
-#endif
- float fbuf [SF_BUFFER_LEN / sizeof (float)] ;
- int ibuf [SF_BUFFER_LEN / sizeof (int)] ;
- short sbuf [SF_BUFFER_LEN / sizeof (short)] ;
- char cbuf [SF_BUFFER_LEN / sizeof (char)] ;
- signed char scbuf [SF_BUFFER_LEN / sizeof (signed char)] ;
- unsigned char ucbuf [SF_BUFFER_LEN / sizeof (signed char)] ;
- } u ;
-
- char filepath [SF_FILENAME_LEN] ;
- char rsrcpath [SF_FILENAME_LEN] ;
- char directory [SF_FILENAME_LEN] ;
- char filename [SF_FILENAME_LEN / 4] ;
-
- char syserr [SF_SYSERR_LEN] ;
-
- /* logbuffer and logindex should only be changed within the logging functions
- ** of common.c
- */
- char logbuffer [SF_BUFFER_LEN] ;
- unsigned char header [SF_HEADER_LEN] ; /* Must be unsigned */
- int rwf_endian ; /* Header endian-ness flag. */
-
- /* Storage and housekeeping data for adding/reading strings from
- ** sound files.
- */
- STR_DATA strings [SF_MAX_STRINGS] ;
- char str_storage [SF_STR_BUFFER_LEN] ;
- char *str_end ;
- int str_flags ;
-
- /* Guard value. If this changes the buffers above have overflowed. */
- int Magick ;
-
- /* Index variables for maintaining logbuffer and header above. */
- int logindex ;
- int headindex, headend ;
- int has_text ;
- int do_not_close_descriptor ;
-
-#if USE_WINDOWS_API
- /*
- ** These fields can only be used in src/file_io.c.
- ** They are basically the same as a windows file HANDLE.
- */
- void *hfile, *hrsrc, *hsaved ;
-#else
- /* These fields can only be used in src/file_io.c. */
- int filedes, rsrcdes, savedes ;
-#endif
-
- int error ;
-
- int mode ; /* Open mode : SFM_READ, SFM_WRITE or SFM_RDWR. */
- int endian ; /* File endianness : SF_ENDIAN_LITTLE or SF_ENDIAN_BIG. */
- int float_endswap ; /* Need to endswap float32s? */
-
- /*
- ** Maximum float value for calculating the multiplier for
- ** float/double to short/int conversions.
- */
- int float_int_mult ;
- float float_max ;
-
- /* Vairables for handling pipes. */
- int is_pipe ; /* True if file is a pipe. */
- sf_count_t pipeoffset ; /* Number of bytes read from a pipe. */
-
- /* True if clipping must be performed on float->int conversions. */
- int add_clipping ;
-
- SF_INFO sf ;
-
- int have_written ; /* Has a single write been done to the file? */
- PEAK_INFO *peak_info ;
-
- /* Loop Info */
- SF_LOOP_INFO *loop_info ;
- SF_INSTRUMENT *instrument ;
-
- /* Broadcast (EBU) Info */
- SF_BROADCAST_INFO *broadcast_info ;
-
- sf_count_t filelength ; /* Overall length of (embedded) file. */
- sf_count_t fileoffset ; /* Offset in number of bytes from beginning of file. */
-
- sf_count_t rsrclength ; /* Length of the resource fork (if it exists). */
-
- sf_count_t dataoffset ; /* Offset in number of bytes from beginning of file. */
- sf_count_t datalength ; /* Length in bytes of the audio data. */
- sf_count_t dataend ; /* Offset to file tailer. */
-
- int blockwidth ; /* Size in bytes of one set of interleaved samples. */
- int bytewidth ; /* Size in bytes of one sample (one channel). */
-
- void *dither ;
- void *interleave ;
-
- int last_op ; /* Last operation; either SFM_READ or SFM_WRITE */
- sf_count_t read_current ;
- sf_count_t write_current ;
-
- void *fdata ; /* This is a pointer to dynamically allocated file format
- ** specific data.
- */
-
- SF_DITHER_INFO write_dither ;
- SF_DITHER_INFO read_dither ;
-
- int norm_double ;
- int norm_float ;
-
- int auto_header ;
-
- int ieee_replace ;
- /* A set of file specific function pointers */
-
- sf_count_t (*read_short) (struct sf_private_tag*, short *ptr, sf_count_t len) ;
- sf_count_t (*read_int) (struct sf_private_tag*, int *ptr, sf_count_t len) ;
- sf_count_t (*read_float) (struct sf_private_tag*, float *ptr, sf_count_t len) ;
- sf_count_t (*read_double) (struct sf_private_tag*, double *ptr, sf_count_t len) ;
-
- sf_count_t (*write_short) (struct sf_private_tag*, const short *ptr, sf_count_t len) ;
- sf_count_t (*write_int) (struct sf_private_tag*, const int *ptr, sf_count_t len) ;
- sf_count_t (*write_float) (struct sf_private_tag*, const float *ptr, sf_count_t len) ;
- sf_count_t (*write_double) (struct sf_private_tag*, const double *ptr, sf_count_t len) ;
-
- sf_count_t (*seek) (struct sf_private_tag*, int mode, sf_count_t samples_from_start) ;
- int (*write_header) (struct sf_private_tag*, int calc_length) ;
- int (*command) (struct sf_private_tag*, int command, void *data, int datasize) ;
-
- /*
- ** Separate close functions for the codec and the container.
- ** The codec close function is always called first.
- */
- int (*codec_close) (struct sf_private_tag*) ;
- int (*container_close) (struct sf_private_tag*) ;
-
- char *format_desc ;
-
- /* Virtual I/O functions. */
- int virtual_io ;
- SF_VIRTUAL_IO vio ;
- void *vio_user_data ;
-} SF_PRIVATE ;
-
-
-
-enum
-{ SFE_NO_ERROR = SF_ERR_NO_ERROR,
- SFE_BAD_OPEN_FORMAT = SF_ERR_UNRECOGNISED_FORMAT,
- SFE_SYSTEM = SF_ERR_SYSTEM,
- SFE_MALFORMED_FILE = SF_ERR_MALFORMED_FILE,
- SFE_UNSUPPORTED_ENCODING = SF_ERR_UNSUPPORTED_ENCODING,
-
- SFE_BAD_FILE,
- SFE_BAD_FILE_READ,
- SFE_OPEN_FAILED,
- SFE_BAD_SNDFILE_PTR,
- SFE_BAD_SF_INFO_PTR,
- SFE_BAD_SF_INCOMPLETE,
- SFE_BAD_FILE_PTR,
- SFE_BAD_INT_PTR,
- SFE_BAD_STAT_SIZE,
- SFE_MALLOC_FAILED,
- SFE_UNIMPLEMENTED,
- SFE_BAD_READ_ALIGN,
- SFE_BAD_WRITE_ALIGN,
- SFE_UNKNOWN_FORMAT,
- SFE_NOT_READMODE,
- SFE_NOT_WRITEMODE,
- SFE_BAD_MODE_RW,
- SFE_BAD_SF_INFO,
- SFE_BAD_OFFSET,
- SFE_NO_EMBED_SUPPORT,
- SFE_NO_EMBEDDED_RDWR,
- SFE_NO_PIPE_WRITE,
-
- SFE_INTERNAL,
- SFE_BAD_CONTROL_CMD,
- SFE_BAD_ENDIAN,
- SFE_CHANNEL_COUNT,
- SFE_BAD_RDWR_FORMAT,
-
- SFE_BAD_VIRTUAL_IO,
-
- SFE_INTERLEAVE_MODE,
- SFE_INTERLEAVE_SEEK,
- SFE_INTERLEAVE_READ,
-
- SFE_BAD_SEEK,
- SFE_NOT_SEEKABLE,
- SFE_AMBIGUOUS_SEEK,
- SFE_WRONG_SEEK,
- SFE_SEEK_FAILED,
-
- SFE_BAD_OPEN_MODE,
- SFE_OPEN_PIPE_RDWR,
- SFE_RDWR_POSITION,
- SFE_RDWR_BAD_HEADER,
-
- SFE_STR_NO_SUPPORT,
- SFE_STR_NOT_WRITE,
- SFE_STR_MAX_DATA,
- SFE_STR_MAX_COUNT,
- SFE_STR_BAD_TYPE,
- SFE_STR_NO_ADD_END,
- SFE_STR_BAD_STRING,
- SFE_STR_WEIRD,
-
- SFE_WAV_NO_RIFF,
- SFE_WAV_NO_WAVE,
- SFE_WAV_NO_FMT,
- SFE_WAV_FMT_SHORT,
- SFE_WAV_BAD_FACT,
- SFE_WAV_BAD_PEAK,
- SFE_WAV_PEAK_B4_FMT,
- SFE_WAV_BAD_FORMAT,
- SFE_WAV_BAD_BLOCKALIGN,
- SFE_WAV_NO_DATA,
- SFE_WAV_BAD_LIST,
- SFE_WAV_ADPCM_NOT4BIT,
- SFE_WAV_ADPCM_CHANNELS,
- SFE_WAV_GSM610_FORMAT,
- SFE_WAV_UNKNOWN_CHUNK,
- SFE_WAV_WVPK_DATA,
-
- SFE_AIFF_NO_FORM,
- SFE_AIFF_AIFF_NO_FORM,
- SFE_AIFF_COMM_NO_FORM,
- SFE_AIFF_SSND_NO_COMM,
- SFE_AIFF_UNKNOWN_CHUNK,
- SFE_AIFF_COMM_CHUNK_SIZE,
- SFE_AIFF_BAD_COMM_CHUNK,
- SFE_AIFF_PEAK_B4_COMM,
- SFE_AIFF_BAD_PEAK,
- SFE_AIFF_NO_SSND,
- SFE_AIFF_NO_DATA,
- SFE_AIFF_RW_SSND_NOT_LAST,
-
- SFE_AU_UNKNOWN_FORMAT,
- SFE_AU_NO_DOTSND,
- SFE_AU_EMBED_BAD_LEN,
-
- SFE_RAW_READ_BAD_SPEC,
- SFE_RAW_BAD_BITWIDTH,
- SFE_RAW_BAD_FORMAT,
-
- SFE_PAF_NO_MARKER,
- SFE_PAF_VERSION,
- SFE_PAF_UNKNOWN_FORMAT,
- SFE_PAF_SHORT_HEADER,
-
- SFE_SVX_NO_FORM,
- SFE_SVX_NO_BODY,
- SFE_SVX_NO_DATA,
- SFE_SVX_BAD_COMP,
- SFE_SVX_BAD_NAME_LENGTH,
-
- SFE_NIST_BAD_HEADER,
- SFE_NIST_CRLF_CONVERISON,
- SFE_NIST_BAD_ENCODING,
-
- SFE_VOC_NO_CREATIVE,
- SFE_VOC_BAD_FORMAT,
- SFE_VOC_BAD_VERSION,
- SFE_VOC_BAD_MARKER,
- SFE_VOC_BAD_SECTIONS,
- SFE_VOC_MULTI_SAMPLERATE,
- SFE_VOC_MULTI_SECTION,
- SFE_VOC_MULTI_PARAM,
- SFE_VOC_SECTION_COUNT,
- SFE_VOC_NO_PIPE,
-
- SFE_IRCAM_NO_MARKER,
- SFE_IRCAM_BAD_CHANNELS,
- SFE_IRCAM_UNKNOWN_FORMAT,
-
- SFE_W64_64_BIT,
- SFE_W64_NO_RIFF,
- SFE_W64_NO_WAVE,
- SFE_W64_NO_FMT,
- SFE_W64_NO_DATA,
- SFE_W64_FMT_SHORT,
- SFE_W64_FMT_TOO_BIG,
- SFE_W64_ADPCM_NOT4BIT,
- SFE_W64_ADPCM_CHANNELS,
- SFE_W64_GSM610_FORMAT,
-
- SFE_MAT4_BAD_NAME,
- SFE_MAT4_NO_SAMPLERATE,
- SFE_MAT4_ZERO_CHANNELS,
-
- SFE_MAT5_BAD_ENDIAN,
- SFE_MAT5_NO_BLOCK,
- SFE_MAT5_SAMPLE_RATE,
- SFE_MAT5_ZERO_CHANNELS,
-
- SFE_PVF_NO_PVF1,
- SFE_PVF_BAD_HEADER,
- SFE_PVF_BAD_BITWIDTH,
-
- SFE_DWVW_BAD_BITWIDTH,
- SFE_G72X_NOT_MONO,
-
- SFE_XI_BAD_HEADER,
- SFE_XI_EXCESS_SAMPLES,
- SFE_XI_NO_PIPE,
-
- SFE_HTK_NO_PIPE,
-
- SFE_SDS_NOT_SDS,
- SFE_SDS_BAD_BIT_WIDTH,
-
- SFE_SD2_FD_DISALLOWED,
- SFE_SD2_BAD_DATA_OFFSET,
- SFE_SD2_BAD_MAP_OFFSET,
- SFE_SD2_BAD_DATA_LENGTH,
- SFE_SD2_BAD_MAP_LENGTH,
- SFE_SD2_BAD_RSRC,
- SFE_SD2_BAD_SAMPLE_SIZE,
-
- SFE_FLAC_BAD_HEADER,
- SFE_FLAC_NEW_DECODER,
- SFE_FLAC_INIT_DECODER,
- SFE_FLAC_LOST_SYNC,
- SFE_FLAC_BAD_SAMPLE_RATE,
- SFE_FLAC_UNKOWN_ERROR,
-
- SFE_MAX_ERROR /* This must be last in list. */
-} ;
-
-int subformat_to_bytewidth (int format) ;
-int s_bitwidth_to_subformat (int bits) ;
-int u_bitwidth_to_subformat (int bits) ;
-
-/* Functions for reading and writing floats and doubles on processors
-** with non-IEEE floats/doubles.
-*/
-float float32_be_read (unsigned char *cptr) ;
-float float32_le_read (unsigned char *cptr) ;
-void float32_be_write (float in, unsigned char *out) ;
-void float32_le_write (float in, unsigned char *out) ;
-
-double double64_be_read (unsigned char *cptr) ;
-double double64_le_read (unsigned char *cptr) ;
-void double64_be_write (double in, unsigned char *out) ;
-void double64_le_write (double in, unsigned char *out) ;
-
-/* Functions for writing to the internal logging buffer. */
-
-void psf_log_printf (SF_PRIVATE *psf, const char *format, ...) ;
-void psf_log_SF_INFO (SF_PRIVATE *psf) ;
-
-void psf_hexdump (void *ptr, int len) ;
-
-/* Functions used when writing file headers. */
-
-int psf_binheader_writef (SF_PRIVATE *psf, const char *format, ...) ;
-void psf_asciiheader_printf (SF_PRIVATE *psf, const char *format, ...) ;
-
-/* Functions used when reading file headers. */
-
-int psf_binheader_readf (SF_PRIVATE *psf, char const *format, ...) ;
-
-/* Functions used in the write function for updating the peak chunk. */
-
-void peak_update_short (SF_PRIVATE *psf, short *ptr, size_t items) ;
-void peak_update_int (SF_PRIVATE *psf, int *ptr, size_t items) ;
-void peak_update_double (SF_PRIVATE *psf, double *ptr, size_t items) ;
-
-/* Functions defined in command.c. */
-
-int psf_get_format_simple_count (void) ;
-int psf_get_format_simple (SF_FORMAT_INFO *data) ;
-
-int psf_get_format_info (SF_FORMAT_INFO *data) ;
-
-int psf_get_format_major_count (void) ;
-int psf_get_format_major (SF_FORMAT_INFO *data) ;
-
-int psf_get_format_subtype_count (void) ;
-int psf_get_format_subtype (SF_FORMAT_INFO *data) ;
-
-void psf_generate_format_desc (SF_PRIVATE *psf) ;
-
-double psf_calc_signal_max (SF_PRIVATE *psf, int normalize) ;
-int psf_calc_max_all_channels (SF_PRIVATE *psf, double *peaks, int normalize) ;
-
-int psf_get_signal_max (SF_PRIVATE *psf, double *peak) ;
-int psf_get_max_all_channels (SF_PRIVATE *psf, double *peaks) ;
-
-/* Functions in strings.c. */
-
-const char* psf_get_string (SF_PRIVATE *psf, int str_type) ;
-int psf_set_string (SF_PRIVATE *psf, int str_type, const char *str) ;
-int psf_store_string (SF_PRIVATE *psf, int str_type, const char *str) ;
-
-/* Default seek function. Use for PCM and float encoded data. */
-sf_count_t psf_default_seek (SF_PRIVATE *psf, int mode, sf_count_t samples_from_start) ;
-
-/* Generate the currebt date as a string. */
-void psf_get_date_str (char *str, int maxlen) ;
-
-int macos_guess_file_type (SF_PRIVATE *psf, const char *filename) ;
-
-/*------------------------------------------------------------------------------------
-** File I/O functions which will allow access to large files (> 2 Gig) on
-** some 32 bit OSes. Implementation in file_io.c.
-*/
-
-int psf_fopen (SF_PRIVATE *psf, const char *pathname, int flags) ;
-int psf_set_stdio (SF_PRIVATE *psf, int mode) ;
-int psf_file_valid (SF_PRIVATE *psf) ;
-void psf_set_file (SF_PRIVATE *psf, int fd) ;
-void psf_init_files (SF_PRIVATE *psf) ;
-void psf_use_rsrc (SF_PRIVATE *psf, int on_off) ;
-
-sf_count_t psf_fseek (SF_PRIVATE *psf, sf_count_t offset, int whence) ;
-sf_count_t psf_fread (void *ptr, sf_count_t bytes, sf_count_t count, SF_PRIVATE *psf) ;
-sf_count_t psf_fwrite (const void *ptr, sf_count_t bytes, sf_count_t count, SF_PRIVATE *psf) ;
-sf_count_t psf_fgets (char *buffer, sf_count_t bufsize, SF_PRIVATE *psf) ;
-sf_count_t psf_ftell (SF_PRIVATE *psf) ;
-sf_count_t psf_get_filelen (SF_PRIVATE *psf) ;
-
-void psf_fsync (SF_PRIVATE *psf) ;
-
-int psf_is_pipe (SF_PRIVATE *psf) ;
-
-int psf_ftruncate (SF_PRIVATE *psf, sf_count_t len) ;
-int psf_fclose (SF_PRIVATE *psf) ;
-
-/* Open and close the resource fork of a file. */
-int psf_open_rsrc (SF_PRIVATE *psf, int mode) ;
-int psf_close_rsrc (SF_PRIVATE *psf) ;
-
-/*
-void psf_fclearerr (SF_PRIVATE *psf) ;
-int psf_ferror (SF_PRIVATE *psf) ;
-*/
-
-/*------------------------------------------------------------------------------------
-** Functions for reading and writing different file formats.
-*/
-
-int aiff_open (SF_PRIVATE *psf) ;
-int au_open (SF_PRIVATE *psf) ;
-int avr_open (SF_PRIVATE *psf) ;
-int htk_open (SF_PRIVATE *psf) ;
-int ircam_open (SF_PRIVATE *psf) ;
-int mat4_open (SF_PRIVATE *psf) ;
-int mat5_open (SF_PRIVATE *psf) ;
-int nist_open (SF_PRIVATE *psf) ;
-int paf_open (SF_PRIVATE *psf) ;
-int pvf_open (SF_PRIVATE *psf) ;
-int raw_open (SF_PRIVATE *psf) ;
-int sd2_open (SF_PRIVATE *psf) ;
-int sds_open (SF_PRIVATE *psf) ;
-int svx_open (SF_PRIVATE *psf) ;
-int voc_open (SF_PRIVATE *psf) ;
-int w64_open (SF_PRIVATE *psf) ;
-int wav_open (SF_PRIVATE *psf) ;
-int xi_open (SF_PRIVATE *psf) ;
-int flac_open (SF_PRIVATE *psf) ;
-int caf_open (SF_PRIVATE *psf) ;
-
-/* In progress. Do not currently work. */
-
-int mpeg_open (SF_PRIVATE *psf) ;
-int ogg_open (SF_PRIVATE *psf) ;
-int rx2_open (SF_PRIVATE *psf) ;
-int txw_open (SF_PRIVATE *psf) ;
-int wve_open (SF_PRIVATE *psf) ;
-int dwd_open (SF_PRIVATE *psf) ;
-
-int macbinary3_open (SF_PRIVATE *psf) ;
-
-/*------------------------------------------------------------------------------------
-** Init functions for a number of common data encodings.
-*/
-
-int pcm_init (SF_PRIVATE *psf) ;
-int ulaw_init (SF_PRIVATE *psf) ;
-int alaw_init (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 vox_adpcm_init (SF_PRIVATE *psf) ;
-int flac_init (SF_PRIVATE *psf) ;
-int g72x_init (SF_PRIVATE * psf) ;
-
-int dither_init (SF_PRIVATE *psf, int mode) ;
-
-int wav_w64_ima_init (SF_PRIVATE *psf, int blockalign, int samplesperblock) ;
-int wav_w64_msadpcm_init (SF_PRIVATE *psf, int blockalign, int samplesperblock) ;
-
-int aiff_ima_init (SF_PRIVATE *psf, int blockalign, int samplesperblock) ;
-
-int interleave_init (SF_PRIVATE *psf) ;
-
-/*------------------------------------------------------------------------------------
-** Other helper functions.
-*/
-
-void *psf_memset (void *s, int c, sf_count_t n) ;
-
-SF_INSTRUMENT * psf_instrument_alloc (void) ;
-
-
-SF_BROADCAST_INFO* broadcast_info_alloc (void) ;
-int broadcast_info_copy (SF_BROADCAST_INFO* dst, SF_BROADCAST_INFO* src) ;
-int broadcast_add_coding_history (SF_BROADCAST_INFO* bext, unsigned int channels, unsigned int samplerate) ;
-
-/*------------------------------------------------------------------------------------
-** Here's how we fix systems which don't snprintf / vsnprintf.
-** Systems without these functions should use the
-*/
-
-#if USE_WINDOWS_API
-#define LSF_SNPRINTF _snprintf
-#elif (HAVE_SNPRINTF && ! FORCE_MISSING_SNPRINTF)
-#define LSF_SNPRINTF snprintf
-#else
-int missing_snprintf (char *str, size_t n, char const *fmt, ...) ;
-#define LSF_SNPRINTF missing_snprintf
-#endif
-
-#if USE_WINDOWS_API
-#define LSF_VSNPRINTF _vsnprintf
-#elif (HAVE_VSNPRINTF && ! FORCE_MISSING_SNPRINTF)
-#define LSF_VSNPRINTF vsnprintf
-#else
-int missing_vsnprintf (char *str, size_t n, const char *fmt, ...) ;
-#define LSF_VSNPRINTF missing_vsnprintf
-#endif
-
-/*------------------------------------------------------------------------------------
-** Extra commands for sf_command(). Not for public use yet.
-*/
-
-enum
-{ SFC_TEST_AIFF_ADD_INST_CHUNK = 0x2000,
- SFC_TEST_WAV_ADD_INFO_CHUNK = 0x2010
-} ;
-
-/*
-** Maybe, one day, make these functions or something like them, public.
-**
-** Buffer to buffer dithering. Pointer in and out are allowed to point
-** to the same buffer for in-place dithering.
-*/
-
-#if 0
-int sf_dither_short (const SF_DITHER_INFO *dither, const short *in, short *out, int count) ;
-int sf_dither_int (const SF_DITHER_INFO *dither, const int *in, int *out, int count) ;
-int sf_dither_float (const SF_DITHER_INFO *dither, const float *in, float *out, int count) ;
-int sf_dither_double (const SF_DITHER_INFO *dither, const double *in, double *out, int count) ;
-#endif
-
-#endif /* SNDFILE_COMMON_H */
-
-/*
-** Do not edit or modify anything in this comment block.
-** The arch-tag line is a file identity tag for the GNU Arch
-** revision control system.
-**
-** arch-tag: 7b45c0ee-5835-4a18-a4ef-994e4cd95b67
-*/
diff --git a/libs/libsndfile/src/config.h.in b/libs/libsndfile/src/config.h.in
deleted file mode 100644
index 4b3d8440a2..0000000000
--- a/libs/libsndfile/src/config.h.in
+++ /dev/null
@@ -1,247 +0,0 @@
-/* src/config.h.in. Generated from configure.ac by autoheader. */
-
-/* Set to 1 if the compile is GNU GCC. */
-#undef COMPILER_IS_GCC
-
-/* Target processor clips on negative float to int conversion. */
-#undef CPU_CLIPS_NEGATIVE
-
-/* Target processor clips on positive float to int conversion. */
-#undef CPU_CLIPS_POSITIVE
-
-/* Target processor is big endian. */
-#undef CPU_IS_BIG_ENDIAN
-
-/* Target processor is little endian. */
-#undef CPU_IS_LITTLE_ENDIAN
-
-/* Set to 1 to enable experimental code. */
-#undef ENABLE_EXPERIMENTAL_CODE
-
-/* Major version of GCC or 3 otherwise. */
-#undef GCC_MAJOR_VERSION
-
-/* Define to 1 if you have the <alsa/asoundlib.h> header file. */
-#undef HAVE_ALSA_ASOUNDLIB_H
-
-/* Define to 1 if you have the <byteswap.h> header file. */
-#undef HAVE_BYTESWAP_H
-
-/* Define to 1 if you have the `calloc' function. */
-#undef HAVE_CALLOC
-
-/* Define to 1 if you have the `ceil' function. */
-#undef HAVE_CEIL
-
-/* Set to 1 if S_IRGRP is defined. */
-#undef HAVE_DECL_S_IRGRP
-
-/* Define to 1 if you have the <endian.h> header file. */
-#undef HAVE_ENDIAN_H
-
-/* Define to 1 if you have the `fdatasync' function. */
-#undef HAVE_FDATASYNC
-
-/* Define to 1 if you have libflac 1.1.1 */
-#undef HAVE_FLAC_1_1_1
-
-/* Define to 1 if you have the <FLAC/all.h> header file. */
-#undef HAVE_FLAC_ALL_H
-
-/* Set to 1 if the compile supports the struct hack. */
-#undef HAVE_FLEXIBLE_ARRAY
-
-/* Define to 1 if you have the `floor' function. */
-#undef HAVE_FLOOR
-
-/* Define to 1 if you have the `fmod' function. */
-#undef HAVE_FMOD
-
-/* Define to 1 if you have the `free' function. */
-#undef HAVE_FREE
-
-/* Define to 1 if you have the `fstat' function. */
-#undef HAVE_FSTAT
-
-/* Define to 1 if you have the `fsync' function. */
-#undef HAVE_FSYNC
-
-/* Define to 1 if you have the `ftruncate' function. */
-#undef HAVE_FTRUNCATE
-
-/* Define to 1 if you have the `getpagesize' function. */
-#undef HAVE_GETPAGESIZE
-
-/* Define to 1 if you have the `gmtime' function. */
-#undef HAVE_GMTIME
-
-/* Define to 1 if you have the `gmtime_r' function. */
-#undef HAVE_GMTIME_R
-
-/* Define to 1 if you have the <inttypes.h> header file. */
-#undef HAVE_INTTYPES_H
-
-/* Define to 1 if you have the `m' library (-lm). */
-#undef HAVE_LIBM
-
-/* Define to 1 if you have the <locale.h> header file. */
-#undef HAVE_LOCALE_H
-
-/* Define if you have C99's lrint function. */
-#undef HAVE_LRINT
-
-/* Define if you have C99's lrintf function. */
-#undef HAVE_LRINTF
-
-/* Define to 1 if you have the `lseek' function. */
-#undef HAVE_LSEEK
-
-/* Define to 1 if you have the `malloc' function. */
-#undef HAVE_MALLOC
-
-/* Define to 1 if you have the <memory.h> header file. */
-#undef HAVE_MEMORY_H
-
-/* Define to 1 if you have the `mmap' function. */
-#undef HAVE_MMAP
-
-/* Define to 1 if you have the `open' function. */
-#undef HAVE_OPEN
-
-/* Define to 1 if you have the `pread' function. */
-#undef HAVE_PREAD
-
-/* Define to 1 if you have the `pwrite' function. */
-#undef HAVE_PWRITE
-
-/* Define to 1 if you have the `read' function. */
-#undef HAVE_READ
-
-/* Define to 1 if you have the `realloc' function. */
-#undef HAVE_REALLOC
-
-/* Define to 1 if you have the `setlocale' function. */
-#undef HAVE_SETLOCALE
-
-/* Define to 1 if you have the `snprintf' function. */
-#undef HAVE_SNPRINTF
-
-/* Set to 1 if you have libsqlite3. */
-#undef HAVE_SQLITE3
-
-/* Define to 1 if the system has the type `ssize_t'. */
-#undef HAVE_SSIZE_T
-
-/* Define to 1 if you have the <stdint.h> header file. */
-#undef HAVE_STDINT_H
-
-/* Define to 1 if you have the <stdlib.h> header file. */
-#undef HAVE_STDLIB_H
-
-/* Define to 1 if you have the <strings.h> header file. */
-#undef HAVE_STRINGS_H
-
-/* Define to 1 if you have the <string.h> header file. */
-#undef HAVE_STRING_H
-
-/* Define to 1 if you have the <sys/stat.h> header file. */
-#undef HAVE_SYS_STAT_H
-
-/* Define to 1 if you have the <sys/types.h> header file. */
-#undef HAVE_SYS_TYPES_H
-
-/* Define to 1 if you have <sys/wait.h> that is POSIX.1 compatible. */
-#undef HAVE_SYS_WAIT_H
-
-/* Define to 1 if you have the <unistd.h> header file. */
-#undef HAVE_UNISTD_H
-
-/* Define to 1 if you have the `vsnprintf' function. */
-#undef HAVE_VSNPRINTF
-
-/* Define to 1 if you have the `write' function. */
-#undef HAVE_WRITE
-
-/* Set to 1 if compiling for MacOSX */
-#undef OS_IS_MACOSX
-
-/* Set to 1 if compiling for Win32 */
-#undef OS_IS_WIN32
-
-/* Define to the address where bug reports for this package should be sent. */
-#undef PACKAGE_BUGREPORT
-
-/* Define to the full name of this package. */
-#undef PACKAGE_NAME
-
-/* Define to the full name and version of this package. */
-#undef PACKAGE_STRING
-
-/* Define to the one symbol short name of this package. */
-#undef PACKAGE_TARNAME
-
-/* Define to the version of this package. */
-#undef PACKAGE_VERSION
-
-/* Set to maximum allowed value of sf_count_t type. */
-#undef SF_COUNT_MAX
-
-/* The size of a `double', as computed by sizeof. */
-#undef SIZEOF_DOUBLE
-
-/* The size of a `float', as computed by sizeof. */
-#undef SIZEOF_FLOAT
-
-/* The size of a `int', as computed by sizeof. */
-#undef SIZEOF_INT
-
-/* The size of a `int64_t', as computed by sizeof. */
-#undef SIZEOF_INT64_T
-
-/* The size of a `loff_t', as computed by sizeof. */
-#undef SIZEOF_LOFF_T
-
-/* The size of a `long', as computed by sizeof. */
-#undef SIZEOF_LONG
-
-/* The size of a `long long', as computed by sizeof. */
-#undef SIZEOF_LONG_LONG
-
-/* The size of a `off64_t', as computed by sizeof. */
-#undef SIZEOF_OFF64_T
-
-/* The size of a `off_t', as computed by sizeof. */
-#undef SIZEOF_OFF_T
-
-/* Set to sizeof (long) if unknown. */
-#undef SIZEOF_SF_COUNT_T
-
-/* The size of a `short', as computed by sizeof. */
-#undef SIZEOF_SHORT
-
-/* The size of a `size_t', as computed by sizeof. */
-#undef SIZEOF_SIZE_T
-
-/* The size of a `ssize_t', as computed by sizeof. */
-#undef SIZEOF_SSIZE_T
-
-/* The size of a `void*', as computed by sizeof. */
-#undef SIZEOF_VOIDP
-
-/* Define to 1 if you have the ANSI C header files. */
-#undef STDC_HEADERS
-
-/* Set to long if unknown. */
-#undef TYPEOF_SF_COUNT_T
-
-/* Set to 1 to use the native windows API */
-#undef USE_WINDOWS_API
-
-/* Number of bits in a file offset, on hosts where this is settable. */
-#undef _FILE_OFFSET_BITS
-
-/* Define to make fseeko etc. visible, on some hosts. */
-#undef _LARGEFILE_SOURCE
-
-/* Define for large files, on AIX-style hosts. */
-#undef _LARGE_FILES
diff --git a/libs/libsndfile/src/cygsndfile.def b/libs/libsndfile/src/cygsndfile.def
deleted file mode 100644
index 510aa8e229..0000000000
--- a/libs/libsndfile/src/cygsndfile.def
+++ /dev/null
@@ -1,39 +0,0 @@
-; Auto-generated by create_symbols_file.py
-
-LIBRARY cygsndfile-1.dll
-EXPORTS
-
-sf_command @1
-sf_open @2
-sf_close @3
-sf_seek @4
-sf_error @7
-sf_perror @8
-sf_error_str @9
-sf_error_number @10
-sf_format_check @11
-sf_read_raw @16
-sf_readf_short @17
-sf_readf_int @18
-sf_readf_float @19
-sf_readf_double @20
-sf_read_short @21
-sf_read_int @22
-sf_read_float @23
-sf_read_double @24
-sf_write_raw @32
-sf_writef_short @33
-sf_writef_int @34
-sf_writef_float @35
-sf_writef_double @36
-sf_write_short @37
-sf_write_int @38
-sf_write_float @39
-sf_write_double @40
-sf_strerror @50
-sf_get_string @60
-sf_set_string @61
-sf_open_fd @70
-sf_open_virtual @80
-sf_write_sync @90
-
diff --git a/libs/libsndfile/src/dither.c b/libs/libsndfile/src/dither.c
deleted file mode 100644
index 873f1bbc10..0000000000
--- a/libs/libsndfile/src/dither.c
+++ /dev/null
@@ -1,535 +0,0 @@
-/*
-** Copyright (C) 2003,2005 Erik de Castro Lopo <erikd@mega-nerd.com>
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU Lesser General Public License as published by
-** the Free Software Foundation; either version 2.1 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU Lesser General Public License for more details.
-**
-** You should have received a copy of the GNU Lesser General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-*/
-
-#include "sfconfig.h"
-
-#include <stdlib.h>
-
-#include "sndfile.h"
-#include "sfendian.h"
-#include "common.h"
-
-/*============================================================================
-** Rule number 1 is to only apply dither when going from a larger bitwidth
-** to a smaller bitwidth. This can happen on both read and write.
-**
-** Need to apply dither on all conversions marked X below.
-**
-** Dither on write:
-**
-** Input
-** | short int float double
-** --------+-----------------------------------------------
-** O 8 bit | X X X X
-** u 16 bit | none X X X
-** t 24 bit | none X X X
-** p 32 bit | none none X X
-** u float | none none none none
-** t double | none none none none
-**
-** Dither on read:
-**
-** Input
-** O | 8 bit 16 bit 24 bit 32 bit float double
-** u --------+-------------------------------------------------
-** t short | none none X X X X
-** p int | none none none X X X
-** u float | none none none none none none
-** t double | none none none none none none
-*/
-
-#define SFE_DITHER_BAD_PTR 666
-#define SFE_DITHER_BAD_TYPE 667
-
-typedef struct
-{ int read_short_dither_bits, read_int_dither_bits ;
- int write_short_dither_bits, write_int_dither_bits ;
- double read_float_dither_scale, read_double_dither_bits ;
- double write_float_dither_scale, write_double_dither_bits ;
-
- sf_count_t (*read_short) (SF_PRIVATE *psf, short *ptr, sf_count_t len) ;
- sf_count_t (*read_int) (SF_PRIVATE *psf, int *ptr, sf_count_t len) ;
- sf_count_t (*read_float) (SF_PRIVATE *psf, float *ptr, sf_count_t len) ;
- sf_count_t (*read_double) (SF_PRIVATE *psf, double *ptr, sf_count_t len) ;
-
- sf_count_t (*write_short) (SF_PRIVATE *psf, const short *ptr, sf_count_t len) ;
- sf_count_t (*write_int) (SF_PRIVATE *psf, const int *ptr, sf_count_t len) ;
- sf_count_t (*write_float) (SF_PRIVATE *psf, const float *ptr, sf_count_t len) ;
- sf_count_t (*write_double) (SF_PRIVATE *psf, const double *ptr, sf_count_t len) ;
-
- double buffer [SF_BUFFER_LEN / sizeof (double)] ;
-} DITHER_DATA ;
-
-static sf_count_t dither_read_short (SF_PRIVATE *psf, short *ptr, sf_count_t len) ;
-static sf_count_t dither_read_int (SF_PRIVATE *psf, int *ptr, sf_count_t len) ;
-
-static sf_count_t dither_write_short (SF_PRIVATE *psf, const short *ptr, sf_count_t len) ;
-static sf_count_t dither_write_int (SF_PRIVATE *psf, const int *ptr, sf_count_t len) ;
-static sf_count_t dither_write_float (SF_PRIVATE *psf, const float *ptr, sf_count_t len) ;
-static sf_count_t dither_write_double (SF_PRIVATE *psf, const double *ptr, sf_count_t len) ;
-
-int
-dither_init (SF_PRIVATE *psf, int mode)
-{ DITHER_DATA *pdither ;
-
- pdither = psf->dither ; /* This may be NULL. */
-
- /* Turn off dither on read. */
- if (mode == SFM_READ && psf->read_dither.type == SFD_NO_DITHER)
- { if (pdither == NULL)
- return 0 ; /* Dither is already off, so just return. */
-
- if (pdither->read_short)
- psf->read_short = pdither->read_short ;
- if (pdither->read_int)
- psf->read_int = pdither->read_int ;
- if (pdither->read_float)
- psf->read_float = pdither->read_float ;
- if (pdither->read_double)
- psf->read_double = pdither->read_double ;
- return 0 ;
- } ;
-
- /* Turn off dither on write. */
- if (mode == SFM_WRITE && psf->write_dither.type == SFD_NO_DITHER)
- { if (pdither == NULL)
- return 0 ; /* Dither is already off, so just return. */
-
- if (pdither->write_short)
- psf->write_short = pdither->write_short ;
- if (pdither->write_int)
- psf->write_int = pdither->write_int ;
- if (pdither->write_float)
- psf->write_float = pdither->write_float ;
- if (pdither->write_double)
- psf->write_double = pdither->write_double ;
- return 0 ;
- } ;
-
- /* Turn on dither on read if asked. */
- if (mode == SFM_READ && psf->read_dither.type != 0)
- { if (pdither == NULL)
- pdither = psf->dither = calloc (1, sizeof (DITHER_DATA)) ;
- if (pdither == NULL)
- return SFE_MALLOC_FAILED ;
-
- switch (psf->sf.format & SF_FORMAT_SUBMASK)
- { case SF_FORMAT_DOUBLE :
- case SF_FORMAT_FLOAT :
- pdither->read_int = psf->read_int ;
- psf->read_int = dither_read_int ;
-
- case SF_FORMAT_PCM_32 :
- case SF_FORMAT_PCM_24 :
- case SF_FORMAT_PCM_16 :
- case SF_FORMAT_PCM_S8 :
- case SF_FORMAT_PCM_U8 :
- pdither->read_short = psf->read_short ;
- psf->read_short = dither_read_short ;
-
- default : break ;
- } ;
- } ;
-
- /* Turn on dither on write if asked. */
- if (mode == SFM_WRITE && psf->write_dither.type != 0)
- { if (pdither == NULL)
- pdither = psf->dither = calloc (1, sizeof (DITHER_DATA)) ;
- if (pdither == NULL)
- return SFE_MALLOC_FAILED ;
-
- switch (psf->sf.format & SF_FORMAT_SUBMASK)
- { case SF_FORMAT_DOUBLE :
- case SF_FORMAT_FLOAT :
- pdither->write_int = psf->write_int ;
- psf->write_int = dither_write_int ;
-
- case SF_FORMAT_PCM_32 :
- case SF_FORMAT_PCM_24 :
- case SF_FORMAT_PCM_16 :
- case SF_FORMAT_PCM_S8 :
- case SF_FORMAT_PCM_U8 :
-
- default : break ;
- } ;
-
- pdither->write_short = psf->write_short ;
- psf->write_short = dither_write_short ;
-
- pdither->write_int = psf->write_int ;
- psf->write_int = dither_write_int ;
-
- pdither->write_float = psf->write_float ;
- psf->write_float = dither_write_float ;
-
- pdither->write_double = psf->write_double ;
- psf->write_double = dither_write_double ;
- } ;
-
- return 0 ;
-} /* dither_init */
-
-/*==============================================================================
-*/
-
-static void dither_short (const short *in, short *out, int frames, int channels) ;
-static void dither_int (const int *in, int *out, int frames, int channels) ;
-
-static void dither_float (const float *in, float *out, int frames, int channels) ;
-static void dither_double (const double *in, double *out, int frames, int channels) ;
-
-static sf_count_t
-dither_read_short (SF_PRIVATE *psf, short *ptr, sf_count_t len)
-{ psf = psf ;
- ptr = ptr ;
- return len ;
-} /* dither_read_short */
-
-static sf_count_t
-dither_read_int (SF_PRIVATE *psf, int *ptr, sf_count_t len)
-{ psf = psf ;
- ptr = ptr ;
- return len ;
-} /* dither_read_int */
-
-/*------------------------------------------------------------------------------
-*/
-
-static sf_count_t
-dither_write_short (SF_PRIVATE *psf, const short *ptr, sf_count_t len)
-{ DITHER_DATA *pdither ;
- int bufferlen, writecount, thiswrite ;
- sf_count_t total = 0 ;
-
- if ((pdither = psf->dither) == NULL)
- { psf->error = SFE_DITHER_BAD_PTR ;
- return 0 ;
- } ;
-
- switch (psf->sf.format & SF_FORMAT_SUBMASK)
- { case SF_FORMAT_PCM_S8 :
- case SF_FORMAT_PCM_U8 :
- case SF_FORMAT_DPCM_8 :
- break ;
-
- default :
- return pdither->write_short (psf, ptr, len) ;
- } ;
-
- bufferlen = sizeof (pdither->buffer) / sizeof (short) ;
-
- while (len > 0)
- { writecount = (len >= bufferlen) ? bufferlen : (int) len ;
- writecount /= psf->sf.channels ;
- writecount *= psf->sf.channels ;
-
- dither_short (ptr, (short*) pdither->buffer, writecount / psf->sf.channels, psf->sf.channels) ;
-
- thiswrite = pdither->write_short (psf, (short*) pdither->buffer, writecount) ;
- total += thiswrite ;
- len -= thiswrite ;
- if (thiswrite < writecount)
- break ;
- } ;
-
- return total ;
-} /* dither_write_short */
-
-static sf_count_t
-dither_write_int (SF_PRIVATE *psf, const int *ptr, sf_count_t len)
-{ DITHER_DATA *pdither ;
- int bufferlen, writecount, thiswrite ;
- sf_count_t total = 0 ;
-
- if ((pdither = psf->dither) == NULL)
- { psf->error = SFE_DITHER_BAD_PTR ;
- return 0 ;
- } ;
-
- switch (psf->sf.format & SF_FORMAT_SUBMASK)
- { case SF_FORMAT_PCM_S8 :
- case SF_FORMAT_PCM_U8 :
- case SF_FORMAT_PCM_16 :
- case SF_FORMAT_PCM_24 :
-
- case SF_FORMAT_DPCM_8 :
- case SF_FORMAT_DPCM_16 :
- break ;
-
- default :
- return pdither->write_int (psf, ptr, len) ;
- } ;
-
-
- bufferlen = sizeof (pdither->buffer) / sizeof (int) ;
-
- while (len > 0)
- { writecount = (len >= bufferlen) ? bufferlen : (int) len ;
- writecount /= psf->sf.channels ;
- writecount *= psf->sf.channels ;
-
- dither_int (ptr, (int*) pdither->buffer, writecount / psf->sf.channels, psf->sf.channels) ;
-
- thiswrite = pdither->write_int (psf, (int*) pdither->buffer, writecount) ;
- total += thiswrite ;
- len -= thiswrite ;
- if (thiswrite < writecount)
- break ;
- } ;
-
- return total ;
-} /* dither_write_int */
-
-static sf_count_t
-dither_write_float (SF_PRIVATE *psf, const float *ptr, sf_count_t len)
-{ DITHER_DATA *pdither ;
- int bufferlen, writecount, thiswrite ;
- sf_count_t total = 0 ;
-
- if ((pdither = psf->dither) == NULL)
- { psf->error = SFE_DITHER_BAD_PTR ;
- return 0 ;
- } ;
-
- switch (psf->sf.format & SF_FORMAT_SUBMASK)
- { case SF_FORMAT_PCM_S8 :
- case SF_FORMAT_PCM_U8 :
- case SF_FORMAT_PCM_16 :
- case SF_FORMAT_PCM_24 :
-
- case SF_FORMAT_DPCM_8 :
- case SF_FORMAT_DPCM_16 :
- break ;
-
- default :
- return pdither->write_float (psf, ptr, len) ;
- } ;
-
- bufferlen = sizeof (pdither->buffer) / sizeof (float) ;
-
- while (len > 0)
- { writecount = (len >= bufferlen) ? bufferlen : (float) len ;
- writecount /= psf->sf.channels ;
- writecount *= psf->sf.channels ;
-
- dither_float (ptr, (float*) pdither->buffer, writecount / psf->sf.channels, psf->sf.channels) ;
-
- thiswrite = pdither->write_float (psf, (float*) pdither->buffer, writecount) ;
- total += thiswrite ;
- len -= thiswrite ;
- if (thiswrite < writecount)
- break ;
- } ;
-
- return total ;
-} /* dither_write_float */
-
-static sf_count_t
-dither_write_double (SF_PRIVATE *psf, const double *ptr, sf_count_t len)
-{ DITHER_DATA *pdither ;
- int bufferlen, writecount, thiswrite ;
- sf_count_t total = 0 ;
-
- if ((pdither = psf->dither) == NULL)
- { psf->error = SFE_DITHER_BAD_PTR ;
- return 0 ;
- } ;
-
- switch (psf->sf.format & SF_FORMAT_SUBMASK)
- { case SF_FORMAT_PCM_S8 :
- case SF_FORMAT_PCM_U8 :
- case SF_FORMAT_PCM_16 :
- case SF_FORMAT_PCM_24 :
-
- case SF_FORMAT_DPCM_8 :
- case SF_FORMAT_DPCM_16 :
- break ;
-
- default :
- return pdither->write_double (psf, ptr, len) ;
- } ;
-
-
- bufferlen = sizeof (pdither->buffer) / sizeof (double) ;
-
- while (len > 0)
- { writecount = (len >= bufferlen) ? bufferlen : (double) len ;
- writecount /= psf->sf.channels ;
- writecount *= psf->sf.channels ;
-
- dither_double (ptr, (double*) pdither->buffer, writecount / psf->sf.channels, psf->sf.channels) ;
-
- thiswrite = pdither->write_double (psf, (double*) pdither->buffer, writecount) ;
- total += thiswrite ;
- len -= thiswrite ;
- if (thiswrite < writecount)
- break ;
- } ;
-
- return total ;
-} /* dither_write_double */
-
-/*==============================================================================
-*/
-
-static void
-dither_short (const short *in, short *out, int frames, int channels)
-{ int ch, k ;
-
- for (ch = 0 ; ch < channels ; ch++)
- for (k = ch ; k < channels * frames ; k += channels)
- out [k] = in [k] ;
-
-} /* dither_short */
-
-static void
-dither_int (const int *in, int *out, int frames, int channels)
-{ int ch, k ;
-
- for (ch = 0 ; ch < channels ; ch++)
- for (k = ch ; k < channels * frames ; k += channels)
- out [k] = in [k] ;
-
-} /* dither_int */
-
-static void
-dither_float (const float *in, float *out, int frames, int channels)
-{ int ch, k ;
-
- for (ch = 0 ; ch < channels ; ch++)
- for (k = ch ; k < channels * frames ; k += channels)
- out [k] = in [k] ;
-
-} /* dither_float */
-
-static void
-dither_double (const double *in, double *out, int frames, int channels)
-{ int ch, k ;
-
- for (ch = 0 ; ch < channels ; ch++)
- for (k = ch ; k < channels * frames ; k += channels)
- out [k] = in [k] ;
-
-} /* dither_double */
-
-/*==============================================================================
-*/
-#if 0
-
-/*
-** Not made public because this (maybe) requires storage of state information.
-**
-** Also maybe need separate state info for each channel!!!!
-*/
-
-int
-DO_NOT_USE_sf_dither_short (const SF_DITHER_INFO *dither, const short *in, short *out, int frames, int channels)
-{ int ch, k ;
-
- if (! dither)
- return SFE_DITHER_BAD_PTR ;
-
- switch (dither->type & SFD_TYPEMASK)
- { case SFD_WHITE :
- case SFD_TRIANGULAR_PDF :
- for (ch = 0 ; ch < channels ; ch++)
- for (k = ch ; k < channels * frames ; k += channels)
- out [k] = in [k] ;
- break ;
-
- default :
- return SFE_DITHER_BAD_TYPE ;
- } ;
-
- return 0 ;
-} /* DO_NOT_USE_sf_dither_short */
-
-int
-DO_NOT_USE_sf_dither_int (const SF_DITHER_INFO *dither, const int *in, int *out, int frames, int channels)
-{ int ch, k ;
-
- if (! dither)
- return SFE_DITHER_BAD_PTR ;
-
- switch (dither->type & SFD_TYPEMASK)
- { case SFD_WHITE :
- case SFD_TRIANGULAR_PDF :
- for (ch = 0 ; ch < channels ; ch++)
- for (k = ch ; k < channels * frames ; k += channels)
- out [k] = in [k] ;
- break ;
-
- default :
- return SFE_DITHER_BAD_TYPE ;
- } ;
-
- return 0 ;
-} /* DO_NOT_USE_sf_dither_int */
-
-int
-DO_NOT_USE_sf_dither_float (const SF_DITHER_INFO *dither, const float *in, float *out, int frames, int channels)
-{ int ch, k ;
-
- if (! dither)
- return SFE_DITHER_BAD_PTR ;
-
- switch (dither->type & SFD_TYPEMASK)
- { case SFD_WHITE :
- case SFD_TRIANGULAR_PDF :
- for (ch = 0 ; ch < channels ; ch++)
- for (k = ch ; k < channels * frames ; k += channels)
- out [k] = in [k] ;
- break ;
-
- default :
- return SFE_DITHER_BAD_TYPE ;
- } ;
-
- return 0 ;
-} /* DO_NOT_USE_sf_dither_float */
-
-int
-DO_NOT_USE_sf_dither_double (const SF_DITHER_INFO *dither, const double *in, double *out, int frames, int channels)
-{ int ch, k ;
-
- if (! dither)
- return SFE_DITHER_BAD_PTR ;
-
- switch (dither->type & SFD_TYPEMASK)
- { case SFD_WHITE :
- case SFD_TRIANGULAR_PDF :
- for (ch = 0 ; ch < channels ; ch++)
- for (k = ch ; k < channels * frames ; k += channels)
- out [k] = in [k] ;
- break ;
-
- default :
- return SFE_DITHER_BAD_TYPE ;
- } ;
-
- return 0 ;
-} /* DO_NOT_USE_sf_dither_double */
-
-#endif
-/*
-** Do not edit or modify anything in this comment block.
-** The arch-tag line is a file identity tag for the GNU Arch
-** revision control system.
-**
-** arch-tag: 673fad58-5314-421c-9144-9d54bfdf104c
-*/
diff --git a/libs/libsndfile/src/double64.c b/libs/libsndfile/src/double64.c
deleted file mode 100644
index 9a6f8f1196..0000000000
--- a/libs/libsndfile/src/double64.c
+++ /dev/null
@@ -1,1009 +0,0 @@
-/*
-** Copyright (C) 1999-2005 Erik de Castro Lopo <erikd@mega-nerd.com>
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU Lesser General Public License as published by
-** the Free Software Foundation; either version 2.1 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU Lesser General Public License for more details.
-**
-** You should have received a copy of the GNU Lesser General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-*/
-
-#include "sfconfig.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "sndfile.h"
-#include "sfendian.h"
-#include "common.h"
-#include "float_cast.h"
-
-#if CPU_IS_LITTLE_ENDIAN
- #define DOUBLE64_READ double64_le_read
- #define DOUBLE64_WRITE double64_le_write
-#elif CPU_IS_BIG_ENDIAN
- #define DOUBLE64_READ double64_be_read
- #define DOUBLE64_WRITE double64_be_write
-#endif
-
-/* A 32 number which will not overflow when multiplied by sizeof (double). */
-#define SENSIBLE_LEN (0x8000000)
-
-/*--------------------------------------------------------------------------------------------
-** Processor floating point capabilities. double64_get_capability () returns one of the
-** latter three values.
-*/
-
-enum
-{ DOUBLE_UNKNOWN = 0x00,
- DOUBLE_CAN_RW_LE = 0x23,
- DOUBLE_CAN_RW_BE = 0x34,
- DOUBLE_BROKEN_LE = 0x45,
- DOUBLE_BROKEN_BE = 0x56
-} ;
-
-/*--------------------------------------------------------------------------------------------
-** Prototypes for private functions.
-*/
-
-static sf_count_t host_read_d2s (SF_PRIVATE *psf, short *ptr, sf_count_t len) ;
-static sf_count_t host_read_d2i (SF_PRIVATE *psf, int *ptr, sf_count_t len) ;
-static sf_count_t host_read_d2f (SF_PRIVATE *psf, float *ptr, sf_count_t len) ;
-static sf_count_t host_read_d (SF_PRIVATE *psf, double *ptr, sf_count_t len) ;
-
-static sf_count_t host_write_s2d (SF_PRIVATE *psf, const short *ptr, sf_count_t len) ;
-static sf_count_t host_write_i2d (SF_PRIVATE *psf, const int *ptr, sf_count_t len) ;
-static sf_count_t host_write_f2d (SF_PRIVATE *psf, const float *ptr, sf_count_t len) ;
-static sf_count_t host_write_d (SF_PRIVATE *psf, const double *ptr, sf_count_t len) ;
-
-static void double64_peak_update (SF_PRIVATE *psf, const double *buffer, int count, sf_count_t indx) ;
-
-static int double64_get_capability (SF_PRIVATE *psf) ;
-
-static sf_count_t replace_read_d2s (SF_PRIVATE *psf, short *ptr, sf_count_t len) ;
-static sf_count_t replace_read_d2i (SF_PRIVATE *psf, int *ptr, sf_count_t len) ;
-static sf_count_t replace_read_d2f (SF_PRIVATE *psf, float *ptr, sf_count_t len) ;
-static sf_count_t replace_read_d (SF_PRIVATE *psf, double *ptr, sf_count_t len) ;
-
-static sf_count_t replace_write_s2d (SF_PRIVATE *psf, const short *ptr, sf_count_t len) ;
-static sf_count_t replace_write_i2d (SF_PRIVATE *psf, const int *ptr, sf_count_t len) ;
-static sf_count_t replace_write_f2d (SF_PRIVATE *psf, const float *ptr, sf_count_t len) ;
-static sf_count_t replace_write_d (SF_PRIVATE *psf, const double *ptr, sf_count_t len) ;
-
-static void d2bd_read (double *buffer, int count) ;
-static void bd2d_write (double *buffer, int count) ;
-
-/*--------------------------------------------------------------------------------------------
-** Exported functions.
-*/
-
-int
-double64_init (SF_PRIVATE *psf)
-{ static int double64_caps ;
-
- double64_caps = double64_get_capability (psf) ;
-
- psf->blockwidth = sizeof (double) * psf->sf.channels ;
-
- if (psf->mode == SFM_READ || psf->mode == SFM_RDWR)
- { switch (psf->endian + double64_caps)
- { case (SF_ENDIAN_BIG + DOUBLE_CAN_RW_BE) :
- psf->float_endswap = SF_FALSE ;
- psf->read_short = host_read_d2s ;
- psf->read_int = host_read_d2i ;
- psf->read_float = host_read_d2f ;
- psf->read_double = host_read_d ;
- break ;
-
- case (SF_ENDIAN_LITTLE + DOUBLE_CAN_RW_LE) :
- psf->float_endswap = SF_FALSE ;
- psf->read_short = host_read_d2s ;
- psf->read_int = host_read_d2i ;
- psf->read_float = host_read_d2f ;
- psf->read_double = host_read_d ;
- break ;
-
- case (SF_ENDIAN_BIG + DOUBLE_CAN_RW_LE) :
- psf->float_endswap = SF_TRUE ;
- psf->read_short = host_read_d2s ;
- psf->read_int = host_read_d2i ;
- psf->read_float = host_read_d2f ;
- psf->read_double = host_read_d ;
- break ;
-
- case (SF_ENDIAN_LITTLE + DOUBLE_CAN_RW_BE) :
- psf->float_endswap = SF_TRUE ;
- psf->read_short = host_read_d2s ;
- psf->read_int = host_read_d2i ;
- psf->read_float = host_read_d2f ;
- psf->read_double = host_read_d ;
- break ;
-
- /* When the CPU is not IEEE compatible. */
- case (SF_ENDIAN_BIG + DOUBLE_BROKEN_BE) :
- psf->float_endswap = SF_FALSE ;
- psf->read_short = replace_read_d2s ;
- psf->read_int = replace_read_d2i ;
- psf->read_float = replace_read_d2f ;
- psf->read_double = replace_read_d ;
- break ;
-
- case (SF_ENDIAN_LITTLE + DOUBLE_BROKEN_LE) :
- psf->float_endswap = SF_FALSE ;
- psf->read_short = replace_read_d2s ;
- psf->read_int = replace_read_d2i ;
- psf->read_float = replace_read_d2f ;
- psf->read_double = replace_read_d ;
- break ;
-
- case (SF_ENDIAN_BIG + DOUBLE_BROKEN_LE) :
- psf->float_endswap = SF_TRUE ;
- psf->read_short = replace_read_d2s ;
- psf->read_int = replace_read_d2i ;
- psf->read_float = replace_read_d2f ;
- psf->read_double = replace_read_d ;
- break ;
-
- case (SF_ENDIAN_LITTLE + DOUBLE_BROKEN_BE) :
- psf->float_endswap = SF_TRUE ;
- psf->read_short = replace_read_d2s ;
- psf->read_int = replace_read_d2i ;
- psf->read_float = replace_read_d2f ;
- psf->read_double = replace_read_d ;
- break ;
-
- default : break ;
- } ;
- } ;
-
- if (psf->mode == SFM_WRITE || psf->mode == SFM_RDWR)
- { switch (psf->endian + double64_caps)
- { case (SF_ENDIAN_LITTLE + DOUBLE_CAN_RW_LE) :
- psf->float_endswap = SF_FALSE ;
- psf->write_short = host_write_s2d ;
- psf->write_int = host_write_i2d ;
- psf->write_float = host_write_f2d ;
- psf->write_double = host_write_d ;
- break ;
-
- case (SF_ENDIAN_BIG + DOUBLE_CAN_RW_BE) :
- psf->float_endswap = SF_FALSE ;
- psf->write_short = host_write_s2d ;
- psf->write_int = host_write_i2d ;
- psf->write_float = host_write_f2d ;
- psf->write_double = host_write_d ;
- break ;
-
- case (SF_ENDIAN_BIG + DOUBLE_CAN_RW_LE) :
- psf->float_endswap = SF_TRUE ;
- psf->write_short = host_write_s2d ;
- psf->write_int = host_write_i2d ;
- psf->write_float = host_write_f2d ;
- psf->write_double = host_write_d ;
- break ;
-
- case (SF_ENDIAN_LITTLE + DOUBLE_CAN_RW_BE) :
- psf->float_endswap = SF_TRUE ;
- psf->write_short = host_write_s2d ;
- psf->write_int = host_write_i2d ;
- psf->write_float = host_write_f2d ;
- psf->write_double = host_write_d ;
- break ;
-
- /* When the CPU is not IEEE compatible. */
- case (SF_ENDIAN_LITTLE + DOUBLE_BROKEN_LE) :
- psf->float_endswap = SF_FALSE ;
- psf->write_short = replace_write_s2d ;
- psf->write_int = replace_write_i2d ;
- psf->write_float = replace_write_f2d ;
- psf->write_double = replace_write_d ;
- break ;
-
- case (SF_ENDIAN_BIG + DOUBLE_BROKEN_BE) :
- psf->float_endswap = SF_FALSE ;
- psf->write_short = replace_write_s2d ;
- psf->write_int = replace_write_i2d ;
- psf->write_float = replace_write_f2d ;
- psf->write_double = replace_write_d ;
- break ;
-
- case (SF_ENDIAN_BIG + DOUBLE_BROKEN_LE) :
- psf->float_endswap = SF_TRUE ;
- psf->write_short = replace_write_s2d ;
- psf->write_int = replace_write_i2d ;
- psf->write_float = replace_write_f2d ;
- psf->write_double = replace_write_d ;
- break ;
-
- case (SF_ENDIAN_LITTLE + DOUBLE_BROKEN_BE) :
- psf->float_endswap = SF_TRUE ;
- psf->write_short = replace_write_s2d ;
- psf->write_int = replace_write_i2d ;
- psf->write_float = replace_write_f2d ;
- psf->write_double = replace_write_d ;
- break ;
-
- default : break ;
- } ;
- } ;
-
- if (psf->filelength > psf->dataoffset)
- { psf->datalength = (psf->dataend > 0) ? psf->dataend - psf->dataoffset :
- psf->filelength - psf->dataoffset ;
- }
- else
- psf->datalength = 0 ;
-
- psf->sf.frames = psf->datalength / psf->blockwidth ;
-
- return 0 ;
-} /* double64_init */
-
-/*----------------------------------------------------------------------------
-** From : http://www.hpcf.cam.ac.uk/fp_formats.html
-**
-** 64 bit double precision layout (big endian)
-** Sign bit 0
-** Exponent bits 1-11
-** Mantissa bits 12-63
-** Exponent Offset 1023
-**
-** double single
-**
-** +INF 7FF0000000000000 7F800000
-** -INF FFF0000000000000 FF800000
-** NaN 7FF0000000000001 7F800001
-** to to
-** 7FFFFFFFFFFFFFFF 7FFFFFFF
-** and and
-** FFF0000000000001 FF800001
-** to to
-** FFFFFFFFFFFFFFFF FFFFFFFF
-** +OVER 7FEFFFFFFFFFFFFF 7F7FFFFF
-** -OVER FFEFFFFFFFFFFFFF FF7FFFFF
-** +UNDER 0010000000000000 00800000
-** -UNDER 8010000000000000 80800000
-*/
-
-double
-double64_be_read (unsigned char *cptr)
-{ int exponent, negative, upper, lower ;
- double dvalue ;
-
- negative = (cptr [0] & 0x80) ? 1 : 0 ;
- exponent = ((cptr [0] & 0x7F) << 4) | ((cptr [1] >> 4) & 0xF) ;
-
- /* Might not have a 64 bit long, so load the mantissa into a double. */
- upper = (((cptr [1] & 0xF) << 24) | (cptr [2] << 16) | (cptr [3] << 8) | cptr [4]) ;
- lower = (cptr [5] << 16) | (cptr [6] << 8) | cptr [7] ;
-
- if (exponent == 0 && upper == 0 && lower == 0)
- return 0.0 ;
-
- dvalue = upper + lower / ((double) 0x1000000) ;
- dvalue += 0x10000000 ;
-
- exponent = exponent - 0x3FF ;
-
- dvalue = dvalue / ((double) 0x10000000) ;
-
- if (negative)
- dvalue *= -1 ;
-
- if (exponent > 0)
- dvalue *= (1 << exponent) ;
- else if (exponent < 0)
- dvalue /= (1 << abs (exponent)) ;
-
- return dvalue ;
-} /* double64_be_read */
-
-double
-double64_le_read (unsigned char *cptr)
-{ int exponent, negative, upper, lower ;
- double dvalue ;
-
- negative = (cptr [7] & 0x80) ? 1 : 0 ;
- exponent = ((cptr [7] & 0x7F) << 4) | ((cptr [6] >> 4) & 0xF) ;
-
- /* Might not have a 64 bit long, so load the mantissa into a double. */
- upper = ((cptr [6] & 0xF) << 24) | (cptr [5] << 16) | (cptr [4] << 8) | cptr [3] ;
- lower = (cptr [2] << 16) | (cptr [1] << 8) | cptr [0] ;
-
- if (exponent == 0 && upper == 0 && lower == 0)
- return 0.0 ;
-
- dvalue = upper + lower / ((double) 0x1000000) ;
- dvalue += 0x10000000 ;
-
- exponent = exponent - 0x3FF ;
-
- dvalue = dvalue / ((double) 0x10000000) ;
-
- if (negative)
- dvalue *= -1 ;
-
- if (exponent > 0)
- dvalue *= (1 << exponent) ;
- else if (exponent < 0)
- dvalue /= (1 << abs (exponent)) ;
-
- return dvalue ;
-} /* double64_le_read */
-
-void
-double64_be_write (double in, unsigned char *out)
-{ int exponent, mantissa ;
-
- memset (out, 0, sizeof (double)) ;
-
- if (fabs (in) < 1e-30)
- return ;
-
- if (in < 0.0)
- { in *= -1.0 ;
- out [0] |= 0x80 ;
- } ;
-
- in = frexp (in, &exponent) ;
-
- exponent += 1022 ;
-
- out [0] |= (exponent >> 4) & 0x7F ;
- out [1] |= (exponent << 4) & 0xF0 ;
-
- in *= 0x20000000 ;
- mantissa = lrint (floor (in)) ;
-
- out [1] |= (mantissa >> 24) & 0xF ;
- out [2] = (mantissa >> 16) & 0xFF ;
- out [3] = (mantissa >> 8) & 0xFF ;
- out [4] = mantissa & 0xFF ;
-
- in = fmod (in, 1.0) ;
- in *= 0x1000000 ;
- mantissa = lrint (floor (in)) ;
-
- out [5] = (mantissa >> 16) & 0xFF ;
- out [6] = (mantissa >> 8) & 0xFF ;
- out [7] = mantissa & 0xFF ;
-
- return ;
-} /* double64_be_write */
-
-void
-double64_le_write (double in, unsigned char *out)
-{ int exponent, mantissa ;
-
- memset (out, 0, sizeof (double)) ;
-
- if (fabs (in) < 1e-30)
- return ;
-
- if (in < 0.0)
- { in *= -1.0 ;
- out [7] |= 0x80 ;
- } ;
-
- in = frexp (in, &exponent) ;
-
- exponent += 1022 ;
-
- out [7] |= (exponent >> 4) & 0x7F ;
- out [6] |= (exponent << 4) & 0xF0 ;
-
- in *= 0x20000000 ;
- mantissa = lrint (floor (in)) ;
-
- out [6] |= (mantissa >> 24) & 0xF ;
- out [5] = (mantissa >> 16) & 0xFF ;
- out [4] = (mantissa >> 8) & 0xFF ;
- out [3] = mantissa & 0xFF ;
-
- in = fmod (in, 1.0) ;
- in *= 0x1000000 ;
- mantissa = lrint (floor (in)) ;
-
- out [2] = (mantissa >> 16) & 0xFF ;
- out [1] = (mantissa >> 8) & 0xFF ;
- out [0] = mantissa & 0xFF ;
-
- return ;
-} /* double64_le_write */
-
-/*==============================================================================================
-** Private functions.
-*/
-
-static void
-double64_peak_update (SF_PRIVATE *psf, const double *buffer, int count, sf_count_t indx)
-{ int chan ;
- int k, position ;
- float fmaxval ;
-
- for (chan = 0 ; chan < psf->sf.channels ; chan++)
- { fmaxval = fabs (buffer [chan]) ;
- position = 0 ;
- for (k = chan ; k < count ; k += psf->sf.channels)
- if (fmaxval < fabs (buffer [k]))
- { fmaxval = fabs (buffer [k]) ;
- position = k ;
- } ;
-
- if (fmaxval > psf->peak_info->peaks [chan].value)
- { psf->peak_info->peaks [chan].value = fmaxval ;
- psf->peak_info->peaks [chan].position = psf->write_current + indx + (position / psf->sf.channels) ;
- } ;
- } ;
-
- return ;
-} /* double64_peak_update */
-
-static int
-double64_get_capability (SF_PRIVATE *psf)
-{ union
- { double d ;
- int i [2] ;
- unsigned char c [8] ;
- } data ;
-
- data.d = 1.234567890123456789 ; /* Some abitrary value. */
-
- if (! psf->ieee_replace)
- { /* If this test is true ints and floats are compatible and little endian. */
- if (data.i [0] == 0x428c59fb && data.i [1] == 0x3ff3c0ca &&
- data.c [0] == 0xfb && data.c [2] == 0x8c && data.c [4] == 0xca && data.c [6] == 0xf3)
- return DOUBLE_CAN_RW_LE ;
-
- /* If this test is true ints and floats are compatible and big endian. */
- if ((data.i [0] == 0x3ff3c0ca && data.i [1] == 0x428c59fb) &&
- (data.c [0] == 0x3f && data.c [2] == 0xc0 && data.c [4] == 0x42 && data.c [6] == 0x59))
- return DOUBLE_CAN_RW_BE ;
- } ;
-
- /* Doubles are broken. Don't expect reading or writing to be fast. */
- psf_log_printf (psf, "Using IEEE replacement code for double.\n") ;
-
- return (CPU_IS_LITTLE_ENDIAN) ? DOUBLE_BROKEN_LE : DOUBLE_BROKEN_BE ;
-} /* double64_get_capability */
-
-/*=======================================================================================
-*/
-
-static inline void
-d2s_array (const double *src, int count, short *dest, double scale)
-{ while (--count >= 0)
- { dest [count] = lrint (scale * src [count]) ;
- } ;
-} /* d2s_array */
-
-static inline void
-d2i_array (const double *src, int count, int *dest, double scale)
-{ while (--count >= 0)
- { dest [count] = lrint (scale * src [count]) ;
- } ;
-} /* d2i_array */
-
-static inline void
-d2f_array (const double *src, int count, float *dest)
-{ while (--count >= 0)
- { dest [count] = src [count] ;
- } ;
-} /* d2f_array */
-
-static inline void
-s2d_array (const short *src, double *dest, int count)
-{ while (--count >= 0)
- { dest [count] = src [count] ;
- } ;
-} /* s2d_array */
-
-static inline void
-i2d_array (const int *src, double *dest, int count)
-{ while (--count >= 0)
- { dest [count] = src [count] ;
- } ;
-} /* i2d_array */
-
-static inline void
-f2d_array (const float *src, double *dest, int count)
-{ while (--count >= 0)
- { dest [count] = src [count] ;
- } ;
-} /* f2d_array */
-
-/*----------------------------------------------------------------------------------------------
-*/
-
-static sf_count_t
-host_read_d2s (SF_PRIVATE *psf, short *ptr, sf_count_t len)
-{ int bufferlen, readcount ;
- sf_count_t total = 0 ;
- double scale ;
-
- bufferlen = ARRAY_LEN (psf->u.dbuf) ;
- scale = (psf->float_int_mult == 0) ? 1.0 : 0x7FFF / psf->float_max ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- readcount = psf_fread (psf->u.dbuf, sizeof (double), bufferlen, psf) ;
-
- if (psf->float_endswap == SF_TRUE)
- endswap_double_array (psf->u.dbuf, readcount) ;
-
- d2s_array (psf->u.dbuf, readcount, ptr + total, scale) ;
- total += readcount ;
- len -= readcount ;
- if (readcount < bufferlen)
- break ;
- } ;
-
- return total ;
-} /* host_read_d2s */
-
-static sf_count_t
-host_read_d2i (SF_PRIVATE *psf, int *ptr, sf_count_t len)
-{ int bufferlen, readcount ;
- sf_count_t total = 0 ;
- double scale ;
- bufferlen = ARRAY_LEN (psf->u.dbuf) ;
- scale = (psf->float_int_mult == 0) ? 1.0 : 0x7FFFFFFF / psf->float_max ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- readcount = psf_fread (psf->u.dbuf, sizeof (double), bufferlen, psf) ;
-
- if (psf->float_endswap == SF_TRUE)
- endswap_double_array (psf->u.dbuf, bufferlen) ;
-
- d2i_array (psf->u.dbuf, readcount, ptr + total, scale) ;
- total += readcount ;
- len -= readcount ;
- if (readcount < bufferlen)
- break ;
- } ;
-
- return total ;
-} /* host_read_d2i */
-
-static sf_count_t
-host_read_d2f (SF_PRIVATE *psf, float *ptr, sf_count_t len)
-{ int bufferlen, readcount ;
- sf_count_t total = 0 ;
-
- bufferlen = ARRAY_LEN (psf->u.dbuf) ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- readcount = psf_fread (psf->u.dbuf, sizeof (double), bufferlen, psf) ;
-
- if (psf->float_endswap == SF_TRUE)
- endswap_double_array (psf->u.dbuf, bufferlen) ;
-
- d2f_array (psf->u.dbuf, readcount, ptr + total) ;
- total += readcount ;
- len -= readcount ;
- if (readcount < bufferlen)
- break ;
- } ;
-
- return total ;
-} /* host_read_d2f */
-
-static sf_count_t
-host_read_d (SF_PRIVATE *psf, double *ptr, sf_count_t len)
-{ int bufferlen ;
- sf_count_t readcount, total = 0 ;
-
- readcount = psf_fread (ptr, sizeof (double), len, psf) ;
-
- if (psf->float_endswap != SF_TRUE)
- return readcount ;
-
- /* If the read length was sensible, endswap output in one go. */
- if (readcount < SENSIBLE_LEN)
- { endswap_double_array (ptr, readcount) ;
- return readcount ;
- } ;
-
- bufferlen = SENSIBLE_LEN ;
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
-
- endswap_double_array (ptr + total, bufferlen) ;
-
- total += bufferlen ;
- len -= bufferlen ;
- } ;
-
- return total ;
-} /* host_read_d */
-
-static sf_count_t
-host_write_s2d (SF_PRIVATE *psf, const short *ptr, sf_count_t len)
-{ int bufferlen, writecount ;
- sf_count_t total = 0 ;
-
- bufferlen = ARRAY_LEN (psf->u.dbuf) ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
-
- s2d_array (ptr + total, psf->u.dbuf, bufferlen) ;
-
- if (psf->peak_info)
- double64_peak_update (psf, psf->u.dbuf, bufferlen, total / psf->sf.channels) ;
-
- if (psf->float_endswap == SF_TRUE)
- endswap_double_array (psf->u.dbuf, bufferlen) ;
-
- writecount = psf_fwrite (psf->u.dbuf, sizeof (double), bufferlen, psf) ;
- total += writecount ;
- if (writecount < bufferlen)
- break ;
- len -= writecount ;
- } ;
-
- return total ;
-} /* host_write_s2d */
-
-static sf_count_t
-host_write_i2d (SF_PRIVATE *psf, const int *ptr, sf_count_t len)
-{ int bufferlen, writecount ;
- sf_count_t total = 0 ;
-
- bufferlen = ARRAY_LEN (psf->u.dbuf) ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- i2d_array (ptr + total, psf->u.dbuf, bufferlen) ;
-
- if (psf->peak_info)
- double64_peak_update (psf, psf->u.dbuf, bufferlen, total / psf->sf.channels) ;
-
- if (psf->float_endswap == SF_TRUE)
- endswap_double_array (psf->u.dbuf, bufferlen) ;
-
- writecount = psf_fwrite (psf->u.dbuf, sizeof (double), bufferlen, psf) ;
- total += writecount ;
- if (writecount < bufferlen)
- break ;
- len -= writecount ;
- } ;
-
- return total ;
-} /* host_write_i2d */
-
-static sf_count_t
-host_write_f2d (SF_PRIVATE *psf, const float *ptr, sf_count_t len)
-{ int bufferlen, writecount ;
- sf_count_t total = 0 ;
-
- bufferlen = ARRAY_LEN (psf->u.dbuf) ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- f2d_array (ptr + total, psf->u.dbuf, bufferlen) ;
-
- if (psf->peak_info)
- double64_peak_update (psf, psf->u.dbuf, bufferlen, total / psf->sf.channels) ;
-
- if (psf->float_endswap == SF_TRUE)
- endswap_double_array (psf->u.dbuf, bufferlen) ;
-
- writecount = psf_fwrite (psf->u.dbuf, sizeof (double), bufferlen, psf) ;
- total += writecount ;
- if (writecount < bufferlen)
- break ;
- len -= writecount ;
- } ;
-
- return total ;
-} /* host_write_f2d */
-
-static sf_count_t
-host_write_d (SF_PRIVATE *psf, const double *ptr, sf_count_t len)
-{ int bufferlen, writecount ;
- sf_count_t total = 0 ;
-
- if (psf->peak_info)
- double64_peak_update (psf, ptr, len, 0) ;
-
- if (psf->float_endswap != SF_TRUE)
- return psf_fwrite (ptr, sizeof (double), len, psf) ;
-
- bufferlen = ARRAY_LEN (psf->u.dbuf) ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
-
- endswap_double_copy (psf->u.dbuf, ptr + total, bufferlen) ;
-
- writecount = psf_fwrite (psf->u.dbuf, sizeof (double), bufferlen, psf) ;
- total += writecount ;
- if (writecount < bufferlen)
- break ;
- len -= writecount ;
- } ;
-
- return total ;
-} /* host_write_d */
-
-/*=======================================================================================
-*/
-
-static sf_count_t
-replace_read_d2s (SF_PRIVATE *psf, short *ptr, sf_count_t len)
-{ int bufferlen, readcount ;
- sf_count_t total = 0 ;
- double scale ;
-
- bufferlen = ARRAY_LEN (psf->u.dbuf) ;
- scale = (psf->float_int_mult == 0) ? 1.0 : 0x7FFF / psf->float_max ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- readcount = psf_fread (psf->u.dbuf, sizeof (double), bufferlen, psf) ;
-
- if (psf->float_endswap == SF_TRUE)
- endswap_double_array (psf->u.dbuf, bufferlen) ;
-
- d2bd_read (psf->u.dbuf, bufferlen) ;
-
- d2s_array (psf->u.dbuf, readcount, ptr + total, scale) ;
- total += readcount ;
- if (readcount < bufferlen)
- break ;
- len -= readcount ;
- } ;
-
- return total ;
-} /* replace_read_d2s */
-
-static sf_count_t
-replace_read_d2i (SF_PRIVATE *psf, int *ptr, sf_count_t len)
-{ int bufferlen, readcount ;
- sf_count_t total = 0 ;
- double scale ;
-
- bufferlen = ARRAY_LEN (psf->u.dbuf) ;
- scale = (psf->float_int_mult == 0) ? 1.0 : 0x7FFFFFFF / psf->float_max ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- readcount = psf_fread (psf->u.dbuf, sizeof (double), bufferlen, psf) ;
-
- if (psf->float_endswap == SF_TRUE)
- endswap_double_array (psf->u.dbuf, bufferlen) ;
-
- d2bd_read (psf->u.dbuf, bufferlen) ;
-
- d2i_array (psf->u.dbuf, readcount, ptr + total, scale) ;
- total += readcount ;
- if (readcount < bufferlen)
- break ;
- len -= readcount ;
- } ;
-
- return total ;
-} /* replace_read_d2i */
-
-static sf_count_t
-replace_read_d2f (SF_PRIVATE *psf, float *ptr, sf_count_t len)
-{ int bufferlen, readcount ;
- sf_count_t total = 0 ;
-
- bufferlen = ARRAY_LEN (psf->u.dbuf) ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- readcount = psf_fread (psf->u.dbuf, sizeof (double), bufferlen, psf) ;
-
- if (psf->float_endswap == SF_TRUE)
- endswap_double_array (psf->u.dbuf, bufferlen) ;
-
- d2bd_read (psf->u.dbuf, bufferlen) ;
-
- memcpy (ptr + total, psf->u.dbuf, bufferlen * sizeof (double)) ;
-
- total += readcount ;
- if (readcount < bufferlen)
- break ;
- len -= readcount ;
- } ;
-
- return total ;
-} /* replace_read_d2f */
-
-static sf_count_t
-replace_read_d (SF_PRIVATE *psf, double *ptr, sf_count_t len)
-{ int bufferlen, readcount ;
- sf_count_t total = 0 ;
-
- /* FIXME : This is probably nowhere near optimal. */
- bufferlen = ARRAY_LEN (psf->u.dbuf) ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- readcount = psf_fread (psf->u.dbuf, sizeof (double), bufferlen, psf) ;
-
- if (psf->float_endswap == SF_TRUE)
- endswap_double_array (psf->u.dbuf, readcount) ;
-
- d2bd_read (psf->u.dbuf, readcount) ;
-
- memcpy (ptr + total, psf->u.dbuf, readcount * sizeof (double)) ;
-
- total += readcount ;
- if (readcount < bufferlen)
- break ;
- len -= readcount ;
- } ;
-
- return total ;
-} /* replace_read_d */
-
-static sf_count_t
-replace_write_s2d (SF_PRIVATE *psf, const short *ptr, sf_count_t len)
-{ int bufferlen, writecount ;
- sf_count_t total = 0 ;
-
- bufferlen = ARRAY_LEN (psf->u.dbuf) ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- s2d_array (ptr + total, psf->u.dbuf, bufferlen) ;
-
- if (psf->peak_info)
- double64_peak_update (psf, psf->u.dbuf, bufferlen, total / psf->sf.channels) ;
-
- bd2d_write (psf->u.dbuf, bufferlen) ;
-
- if (psf->float_endswap == SF_TRUE)
- endswap_double_array (psf->u.dbuf, bufferlen) ;
-
- writecount = psf_fwrite (psf->u.dbuf, sizeof (double), bufferlen, psf) ;
- total += writecount ;
- if (writecount < bufferlen)
- break ;
- len -= writecount ;
- } ;
-
- return total ;
-} /* replace_write_s2d */
-
-static sf_count_t
-replace_write_i2d (SF_PRIVATE *psf, const int *ptr, sf_count_t len)
-{ int bufferlen, writecount ;
- sf_count_t total = 0 ;
-
- bufferlen = ARRAY_LEN (psf->u.dbuf) ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- i2d_array (ptr + total, psf->u.dbuf, bufferlen) ;
-
- if (psf->peak_info)
- double64_peak_update (psf, psf->u.dbuf, bufferlen, total / psf->sf.channels) ;
-
- bd2d_write (psf->u.dbuf, bufferlen) ;
-
- if (psf->float_endswap == SF_TRUE)
- endswap_double_array (psf->u.dbuf, bufferlen) ;
-
- writecount = psf_fwrite (psf->u.dbuf, sizeof (double), bufferlen, psf) ;
- total += writecount ;
- if (writecount < bufferlen)
- break ;
- len -= writecount ;
- } ;
-
- return total ;
-} /* replace_write_i2d */
-
-static sf_count_t
-replace_write_f2d (SF_PRIVATE *psf, const float *ptr, sf_count_t len)
-{ int bufferlen, writecount ;
- sf_count_t total = 0 ;
-
- bufferlen = ARRAY_LEN (psf->u.dbuf) ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- f2d_array (ptr + total, psf->u.dbuf, bufferlen) ;
-
- bd2d_write (psf->u.dbuf, bufferlen) ;
-
- if (psf->float_endswap == SF_TRUE)
- endswap_double_array (psf->u.dbuf, bufferlen) ;
-
- writecount = psf_fwrite (psf->u.dbuf, sizeof (double), bufferlen, psf) ;
- total += writecount ;
- if (writecount < bufferlen)
- break ;
- len -= writecount ;
- } ;
-
- return total ;
-} /* replace_write_f2d */
-
-static sf_count_t
-replace_write_d (SF_PRIVATE *psf, const double *ptr, sf_count_t len)
-{ int bufferlen, writecount ;
- sf_count_t total = 0 ;
-
- /* FIXME : This is probably nowhere near optimal. */
- if (psf->peak_info)
- double64_peak_update (psf, ptr, len, 0) ;
-
- bufferlen = ARRAY_LEN (psf->u.dbuf) ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
-
- memcpy (psf->u.dbuf, ptr + total, bufferlen * sizeof (double)) ;
-
- bd2d_write (psf->u.dbuf, bufferlen) ;
-
- if (psf->float_endswap == SF_TRUE)
- endswap_double_array (psf->u.dbuf, bufferlen) ;
-
- writecount = psf_fwrite (psf->u.dbuf, sizeof (double), bufferlen, psf) ;
- total += writecount ;
- if (writecount < bufferlen)
- break ;
- len -= writecount ;
- } ;
-
- return total ;
-} /* replace_write_d */
-
-/*----------------------------------------------------------------------------------------------
-*/
-
-static void
-d2bd_read (double *buffer, int count)
-{ while (--count >= 0)
- { buffer [count] = DOUBLE64_READ ((unsigned char *) (buffer + count)) ;
- } ;
-} /* d2bd_read */
-
-static void
-bd2d_write (double *buffer, int count)
-{ while (--count >= 0)
- { DOUBLE64_WRITE (buffer [count], (unsigned char*) (buffer + count)) ;
- } ;
-} /* bd2d_write */
-
-/*
-** Do not edit or modify anything in this comment block.
-** The arch-tag line is a file identity tag for the GNU Arch
-** revision control system.
-**
-** arch-tag: 4ee243b7-8c7a-469b-869c-e9aa0ee3b77f
-*/
diff --git a/libs/libsndfile/src/dwd.c b/libs/libsndfile/src/dwd.c
deleted file mode 100644
index a33bae0c8e..0000000000
--- a/libs/libsndfile/src/dwd.c
+++ /dev/null
@@ -1,210 +0,0 @@
-/*
-** Copyright (C) 2002-2004 Erik de Castro Lopo <erikd@mega-nerd.com>
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU Lesser General Public License as published by
-** the Free Software Foundation; either version 2.1 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU Lesser General Public License for more details.
-**
-** You should have received a copy of the GNU Lesser General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-*/
-
-#include "sfconfig.h"
-
-#include <stdio.h>
-#include <fcntl.h>
-#include <string.h>
-#include <ctype.h>
-
-#include "sndfile.h"
-#include "sfendian.h"
-#include "common.h"
-
-#if (ENABLE_EXPERIMENTAL_CODE == 0)
-
-int
-dwd_open (SF_PRIVATE *psf)
-{ if (psf)
- return SFE_UNIMPLEMENTED ;
- return (psf && 0) ;
-} /* dwd_open */
-
-#else
-
-/*------------------------------------------------------------------------------
-** Macros to handle big/little endian issues.
-*/
-
-#define SFE_DWD_NO_DWD 1666
-#define SFE_DWD_BAND_BIT_WIDTH 1667
-#define SFE_DWD_COMPRESSION 1668
-
-#define DWD_IDENTIFIER "DiamondWare Digitized\n\0\x1a"
-#define DWD_IDENTIFIER_LEN 24
-
-#define DWD_HEADER_LEN 57
-
-/*------------------------------------------------------------------------------
-** Typedefs.
-*/
-
-/*------------------------------------------------------------------------------
-** Private static functions.
-*/
-
-static int dwd_read_header (SF_PRIVATE *psf) ;
-
-static int dwd_close (SF_PRIVATE *psf) ;
-
-/*------------------------------------------------------------------------------
-** Public function.
-*/
-
-int
-dwd_open (SF_PRIVATE *psf)
-{ int subformat, error = 0 ;
-
- if (psf->mode == SFM_READ || (psf->mode == SFM_RDWR && psf->filelength > 0))
- { if ((error = dwd_read_header (psf)))
- return error ;
- } ;
-
- if ((psf->sf.format & SF_FORMAT_TYPEMASK) != SF_FORMAT_DWD)
- return SFE_BAD_OPEN_FORMAT ;
-
- subformat = psf->sf.format & SF_FORMAT_SUBMASK ;
-
- if (psf->mode == SFM_WRITE || psf->mode == SFM_RDWR)
- {
- /*-psf->endian = psf->sf.format & SF_FORMAT_ENDMASK ;
- if (CPU_IS_LITTLE_ENDIAN && psf->endian == SF_ENDIAN_CPU)
- psf->endian = SF_ENDIAN_LITTLE ;
- else if (psf->endian != SF_ENDIAN_LITTLE)
- psf->endian = SF_ENDIAN_BIG ;
-
- if (! (encoding = dwd_write_header (psf, SF_FALSE)))
- return psf->error ;
-
- psf->write_header = dwd_write_header ;
- -*/
- } ;
-
- psf->container_close = dwd_close ;
-
- /*-psf->blockwidth = psf->bytewidth * psf->sf.channels ;-*/
-
- return error ;
-} /* dwd_open */
-
-/*------------------------------------------------------------------------------
-*/
-
-static int
-dwd_close (SF_PRIVATE *psf)
-{
- psf = psf ;
-
- return 0 ;
-} /* dwd_close */
-
-/* This struct contains all the fields of interest om the DWD header, but does not
-** do so in the same order and layout as the actual file, header.
-** No assumptions are made about the packing of this struct.
-*/
-typedef struct
-{ unsigned char major, minor, compression, channels, bitwidth ;
- unsigned short srate, maxval ;
- unsigned int id, datalen, frames, offset ;
-} DWD_HEADER ;
-
-static int
-dwd_read_header (SF_PRIVATE *psf)
-{ DWD_HEADER dwdh ;
-
- memset (psf->u.cbuf, 0, sizeof (psf->u.cbuf)) ;
- /* Set position to start of file to begin reading header. */
- psf_binheader_readf (psf, "pb", 0, psf->u.cbuf, DWD_IDENTIFIER_LEN) ;
-
- if (memcmp (psf->u.cbuf, DWD_IDENTIFIER, DWD_IDENTIFIER_LEN) != 0)
- return SFE_DWD_NO_DWD ;
-
- psf_log_printf (psf, "Read only : DiamondWare Digitized (.dwd)\n", psf->u.cbuf) ;
-
- psf_binheader_readf (psf, "11", &dwdh.major, &dwdh.minor) ;
- psf_binheader_readf (psf, "e4j1", &dwdh.id, 1, &dwdh.compression) ;
- psf_binheader_readf (psf, "e211", &dwdh.srate, &dwdh.channels, &dwdh.bitwidth) ;
- psf_binheader_readf (psf, "e24", &dwdh.maxval, &dwdh.datalen) ;
- psf_binheader_readf (psf, "e44", &dwdh.frames, &dwdh.offset) ;
-
- psf_log_printf (psf, " Version Major : %d\n Version Minor : %d\n Unique ID : %08X\n",
- dwdh.major, dwdh.minor, dwdh.id) ;
- psf_log_printf (psf, " Compression : %d => ", dwdh.compression) ;
-
- if (dwdh.compression != 0)
- { psf_log_printf (psf, "Unsupported compression\n") ;
- return SFE_DWD_COMPRESSION ;
- }
- else
- psf_log_printf (psf, "None\n") ;
-
- psf_log_printf (psf, " Sample Rate : %d\n Channels : %d\n"
- " Bit Width : %d\n",
- dwdh.srate, dwdh.channels, dwdh.bitwidth) ;
-
- switch (dwdh.bitwidth)
- { case 8 :
- psf->sf.format = SF_FORMAT_DWD | SF_FORMAT_PCM_S8 ;
- psf->bytewidth = 1 ;
- break ;
-
- case 16 :
- psf->sf.format = SF_FORMAT_DWD | SF_FORMAT_PCM_16 ;
- psf->bytewidth = 2 ;
- break ;
-
- default :
- psf_log_printf (psf, "*** Bad bit width %d\n", dwdh.bitwidth) ;
- return SFE_DWD_BAND_BIT_WIDTH ;
- } ;
-
- if (psf->filelength != dwdh.offset + dwdh.datalen)
- { psf_log_printf (psf, " Data Length : %d (should be %D)\n", dwdh.datalen, psf->filelength - dwdh.offset) ;
- dwdh.datalen = (unsigned int) (psf->filelength - dwdh.offset) ;
- }
- else
- psf_log_printf (psf, " Data Length : %d\n", dwdh.datalen) ;
-
- psf_log_printf (psf, " Max Value : %d\n", dwdh.maxval) ;
- psf_log_printf (psf, " Frames : %d\n", dwdh.frames) ;
- psf_log_printf (psf, " Data Offset : %d\n", dwdh.offset) ;
-
- psf->datalength = dwdh.datalen ;
- psf->dataoffset = dwdh.offset ;
-
- psf->endian = SF_ENDIAN_LITTLE ;
-
- psf->sf.samplerate = dwdh.srate ;
- psf->sf.channels = dwdh.channels ;
- psf->sf.sections = 1 ;
-
- return pcm_init (psf) ;
-} /* dwd_read_header */
-
-/*------------------------------------------------------------------------------
-*/
-
-#endif
-/*
-** Do not edit or modify anything in this comment block.
-** The arch-tag line is a file identity tag for the GNU Arch
-** revision control system.
-**
-** arch-tag: a5e1d2a6-a840-4039-a0e7-e1a43eb05a4f
-*/
diff --git a/libs/libsndfile/src/dwvw.c b/libs/libsndfile/src/dwvw.c
deleted file mode 100644
index dc9ae774bb..0000000000
--- a/libs/libsndfile/src/dwvw.c
+++ /dev/null
@@ -1,671 +0,0 @@
-/*
-** Copyright (C) 2002-2005 Erik de Castro Lopo <erikd@mega-nerd.com>
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU Lesser General Public License as published by
-** the Free Software Foundation; either version 2.1 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU Lesser General Public License for more details.
-**
-** You should have received a copy of the GNU Lesser General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-*/
-
-/*===========================================================================
-** Delta Word Variable Width
-**
-** This decoder and encoder were implemented using information found in this
-** document : http://home.swbell.net/rubywand/R011SNDFMTS.TXT
-**
-** According to the document, the algorithm "was invented 1991 by Magnus
-** Lidstrom and is copyright 1993 by NuEdge Development".
-*/
-
-#include "sfconfig.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "sndfile.h"
-#include "sfendian.h"
-#include "float_cast.h"
-#include "common.h"
-
-typedef struct
-{ int dwm_maxsize, bit_width, max_delta, span ;
- int samplecount ;
- int bit_count, bits, last_delta_width, last_sample ;
- struct
- { int index, end ;
- unsigned char buffer [256] ;
- } b ;
-} DWVW_PRIVATE ;
-
-/*============================================================================================
-*/
-
-static sf_count_t dwvw_read_s (SF_PRIVATE *psf, short *ptr, sf_count_t len) ;
-static sf_count_t dwvw_read_i (SF_PRIVATE *psf, int *ptr, sf_count_t len) ;
-static sf_count_t dwvw_read_f (SF_PRIVATE *psf, float *ptr, sf_count_t len) ;
-static sf_count_t dwvw_read_d (SF_PRIVATE *psf, double *ptr, sf_count_t len) ;
-
-static sf_count_t dwvw_write_s (SF_PRIVATE *psf, const short *ptr, sf_count_t len) ;
-static sf_count_t dwvw_write_i (SF_PRIVATE *psf, const int *ptr, sf_count_t len) ;
-static sf_count_t dwvw_write_f (SF_PRIVATE *psf, const float *ptr, sf_count_t len) ;
-static sf_count_t dwvw_write_d (SF_PRIVATE *psf, const double *ptr, sf_count_t len) ;
-
-static sf_count_t dwvw_seek (SF_PRIVATE *psf, int mode, sf_count_t offset) ;
-static int dwvw_close (SF_PRIVATE *psf) ;
-
-static int dwvw_decode_data (SF_PRIVATE *psf, DWVW_PRIVATE *pdwvw, int *ptr, int len) ;
-static int dwvw_decode_load_bits (SF_PRIVATE *psf, DWVW_PRIVATE *pdwvw, int bit_count) ;
-
-static int dwvw_encode_data (SF_PRIVATE *psf, DWVW_PRIVATE *pdwvw, const int *ptr, int len) ;
-static void dwvw_encode_store_bits (SF_PRIVATE *psf, DWVW_PRIVATE *pdwvw, int data, int new_bits) ;
-static void dwvw_read_reset (DWVW_PRIVATE *pdwvw) ;
-
-/*============================================================================================
-** DWVW initialisation function.
-*/
-
-int
-dwvw_init (SF_PRIVATE *psf, int bitwidth)
-{ DWVW_PRIVATE *pdwvw ;
-
- if (psf->fdata != NULL)
- { psf_log_printf (psf, "*** psf->fdata is not NULL.\n") ;
- return SFE_INTERNAL ;
- } ;
-
- if (bitwidth > 24)
- return SFE_DWVW_BAD_BITWIDTH ;
-
- if (psf->mode == SFM_RDWR)
- return SFE_BAD_MODE_RW ;
-
- if ((pdwvw = calloc (1, sizeof (DWVW_PRIVATE))) == NULL)
- return SFE_MALLOC_FAILED ;
-
- psf->fdata = (void*) pdwvw ;
-
- pdwvw->bit_width = bitwidth ;
- pdwvw->dwm_maxsize = bitwidth / 2 ;
- pdwvw->max_delta = 1 << (bitwidth - 1) ;
- pdwvw->span = 1 << bitwidth ;
-
- dwvw_read_reset (pdwvw) ;
-
- if (psf->mode == SFM_READ)
- { psf->read_short = dwvw_read_s ;
- psf->read_int = dwvw_read_i ;
- psf->read_float = dwvw_read_f ;
- psf->read_double = dwvw_read_d ;
- } ;
-
- if (psf->mode == SFM_WRITE)
- { psf->write_short = dwvw_write_s ;
- psf->write_int = dwvw_write_i ;
- psf->write_float = dwvw_write_f ;
- psf->write_double = dwvw_write_d ;
- } ;
-
- psf->codec_close = dwvw_close ;
- psf->seek = dwvw_seek ;
-
- /* FIXME : This is bogus. */
- psf->sf.frames = SF_COUNT_MAX ;
- psf->datalength = psf->sf.frames ;
- /* EMXIF : This is bogus. */
-
- return 0 ;
-} /* dwvw_init */
-
-/*--------------------------------------------------------------------------------------------
-*/
-
-static int
-dwvw_close (SF_PRIVATE *psf)
-{ DWVW_PRIVATE *pdwvw ;
-
- if (psf->fdata == NULL)
- return 0 ;
- pdwvw = (DWVW_PRIVATE*) psf->fdata ;
-
- if (psf->mode == SFM_WRITE)
- { static int last_values [12] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } ;
-
- /* Write 8 zero samples to fully flush output. */
- dwvw_encode_data (psf, pdwvw, last_values, 12) ;
-
- /* Write the last buffer worth of data to disk. */
- psf_fwrite (pdwvw->b.buffer, 1, pdwvw->b.index, psf) ;
-
- if (psf->write_header)
- psf->write_header (psf, SF_TRUE) ;
- } ;
-
- return 0 ;
-} /* dwvw_close */
-
-static sf_count_t
-dwvw_seek (SF_PRIVATE *psf, int mode, sf_count_t offset)
-{ DWVW_PRIVATE *pdwvw ;
-
- mode = mode ;
-
- if (! psf->fdata)
- { psf->error = SFE_INTERNAL ;
- return PSF_SEEK_ERROR ;
- } ;
-
- pdwvw = (DWVW_PRIVATE*) psf->fdata ;
-
- if (offset == 0)
- { psf_fseek (psf, psf->dataoffset, SEEK_SET) ;
- dwvw_read_reset (pdwvw) ;
- return 0 ;
- } ;
-
- psf->error = SFE_BAD_SEEK ;
- return PSF_SEEK_ERROR ;
-} /* dwvw_seek */
-
-
-/*==============================================================================
-*/
-
-static sf_count_t
-dwvw_read_s (SF_PRIVATE *psf, short *ptr, sf_count_t len)
-{ DWVW_PRIVATE *pdwvw ;
- int *iptr ;
- int k, bufferlen, readcount = 0, count ;
- sf_count_t total = 0 ;
-
- if (! psf->fdata)
- return 0 ;
- pdwvw = (DWVW_PRIVATE*) psf->fdata ;
-
- iptr = psf->u.ibuf ;
- bufferlen = ARRAY_LEN (psf->u.ibuf) ;
- while (len > 0)
- { readcount = (len >= bufferlen) ? bufferlen : len ;
- count = dwvw_decode_data (psf, pdwvw, iptr, readcount) ;
- for (k = 0 ; k < readcount ; k++)
- ptr [total + k] = iptr [k] >> 16 ;
-
- total += count ;
- len -= readcount ;
- if (count != readcount)
- break ;
- } ;
-
- return total ;
-} /* dwvw_read_s */
-
-static sf_count_t
-dwvw_read_i (SF_PRIVATE *psf, int *ptr, sf_count_t len)
-{ DWVW_PRIVATE *pdwvw ;
- int readcount, count ;
- sf_count_t total = 0 ;
-
- if (! psf->fdata)
- return 0 ;
- pdwvw = (DWVW_PRIVATE*) psf->fdata ;
-
- while (len > 0)
- { readcount = (len > 0x10000000) ? 0x10000000 : (int) len ;
-
- count = dwvw_decode_data (psf, pdwvw, ptr, readcount) ;
-
- total += count ;
- len -= count ;
-
- if (count != readcount)
- break ;
- } ;
-
- return total ;
-} /* dwvw_read_i */
-
-static sf_count_t
-dwvw_read_f (SF_PRIVATE *psf, float *ptr, sf_count_t len)
-{ DWVW_PRIVATE *pdwvw ;
- int *iptr ;
- int k, bufferlen, readcount = 0, count ;
- sf_count_t total = 0 ;
- float normfact ;
-
- if (! psf->fdata)
- return 0 ;
- pdwvw = (DWVW_PRIVATE*) psf->fdata ;
-
- normfact = (psf->norm_float == SF_TRUE) ? 1.0 / ((float) 0x80000000) : 1.0 ;
-
- iptr = psf->u.ibuf ;
- bufferlen = ARRAY_LEN (psf->u.ibuf) ;
- while (len > 0)
- { readcount = (len >= bufferlen) ? bufferlen : len ;
- count = dwvw_decode_data (psf, pdwvw, iptr, readcount) ;
- for (k = 0 ; k < readcount ; k++)
- ptr [total + k] = normfact * (float) (iptr [k]) ;
-
- total += count ;
- len -= readcount ;
- if (count != readcount)
- break ;
- } ;
-
- return total ;
-} /* dwvw_read_f */
-
-static sf_count_t
-dwvw_read_d (SF_PRIVATE *psf, double *ptr, sf_count_t len)
-{ DWVW_PRIVATE *pdwvw ;
- int *iptr ;
- int k, bufferlen, readcount = 0, count ;
- sf_count_t total = 0 ;
- double normfact ;
-
- if (! psf->fdata)
- return 0 ;
- pdwvw = (DWVW_PRIVATE*) psf->fdata ;
-
- normfact = (psf->norm_double == SF_TRUE) ? 1.0 / ((double) 0x80000000) : 1.0 ;
-
- iptr = psf->u.ibuf ;
- bufferlen = ARRAY_LEN (psf->u.ibuf) ;
- while (len > 0)
- { readcount = (len >= bufferlen) ? bufferlen : len ;
- count = dwvw_decode_data (psf, pdwvw, iptr, readcount) ;
- for (k = 0 ; k < readcount ; k++)
- ptr [total + k] = normfact * (double) (iptr [k]) ;
-
- total += count ;
- len -= readcount ;
- if (count != readcount)
- break ;
- } ;
-
- return total ;
-} /* dwvw_read_d */
-
-static int
-dwvw_decode_data (SF_PRIVATE *psf, DWVW_PRIVATE *pdwvw, int *ptr, int len)
-{ int count ;
- int delta_width_modifier, delta_width, delta_negative, delta, sample ;
-
- /* Restore state from last decode call. */
- delta_width = pdwvw->last_delta_width ;
- sample = pdwvw->last_sample ;
-
- for (count = 0 ; count < len ; count++)
- { /* If bit_count parameter is zero get the delta_width_modifier. */
- delta_width_modifier = dwvw_decode_load_bits (psf, pdwvw, -1) ;
-
- /* Check for end of input bit stream. Break loop if end. */
- if (delta_width_modifier < 0)
- break ;
-
- if (delta_width_modifier && dwvw_decode_load_bits (psf, pdwvw, 1))
- delta_width_modifier = - delta_width_modifier ;
-
- /* Calculate the current word width. */
- delta_width = (delta_width + delta_width_modifier + pdwvw->bit_width) % pdwvw->bit_width ;
-
- /* Load the delta. */
- delta = 0 ;
- if (delta_width)
- { delta = dwvw_decode_load_bits (psf, pdwvw, delta_width - 1) | (1 << (delta_width - 1)) ;
- delta_negative = dwvw_decode_load_bits (psf, pdwvw, 1) ;
- if (delta == pdwvw->max_delta - 1)
- delta += dwvw_decode_load_bits (psf, pdwvw, 1) ;
- if (delta_negative)
- delta = -delta ;
- } ;
-
- /* Calculate the sample */
- sample += delta ;
-
- if (sample >= pdwvw->max_delta)
- sample -= pdwvw->span ;
- else if (sample < - pdwvw->max_delta)
- sample += pdwvw->span ;
-
- /* Store the sample justifying to the most significant bit. */
- ptr [count] = sample << (32 - pdwvw->bit_width) ;
-
- if (pdwvw->b.end == 0 && pdwvw->bit_count == 0)
- break ;
- } ;
-
- pdwvw->last_delta_width = delta_width ;
- pdwvw->last_sample = sample ;
-
- pdwvw->samplecount += count ;
-
- return count ;
-} /* dwvw_decode_data */
-
-static int
-dwvw_decode_load_bits (SF_PRIVATE *psf, DWVW_PRIVATE *pdwvw, int bit_count)
-{ int output = 0, get_dwm = SF_FALSE ;
-
- /*
- ** Depending on the value of parameter bit_count, either get the
- ** required number of bits (ie bit_count > 0) or the
- ** delta_width_modifier (otherwise).
- */
-
- if (bit_count < 0)
- { get_dwm = SF_TRUE ;
- /* modify bit_count to ensure we have enought bits for finding dwm. */
- bit_count = pdwvw->dwm_maxsize ;
- } ;
-
- /* Load bits in bit reseviour. */
- while (pdwvw->bit_count < bit_count)
- { if (pdwvw->b.index >= pdwvw->b.end)
- { pdwvw->b.end = psf_fread (pdwvw->b.buffer, 1, sizeof (pdwvw->b.buffer), psf) ;
- pdwvw->b.index = 0 ;
- } ;
-
- /* Check for end of input stream. */
- if (bit_count < 8 && pdwvw->b.end == 0)
- return -1 ;
-
- pdwvw->bits = (pdwvw->bits << 8) ;
-
- if (pdwvw->b.index < pdwvw->b.end)
- { pdwvw->bits |= pdwvw->b.buffer [pdwvw->b.index] ;
- pdwvw->b.index ++ ;
- } ;
- pdwvw->bit_count += 8 ;
- } ;
-
- /* If asked to get bits do so. */
- if (! get_dwm)
- { output = (pdwvw->bits >> (pdwvw->bit_count - bit_count)) & ((1 << bit_count) - 1) ;
- pdwvw->bit_count -= bit_count ;
- return output ;
- } ;
-
- /* Otherwise must have been asked to get delta_width_modifier. */
- while (output < (pdwvw->dwm_maxsize))
- { pdwvw->bit_count -= 1 ;
- if (pdwvw->bits & (1 << pdwvw->bit_count))
- break ;
- output += 1 ;
- } ;
-
- return output ;
-} /* dwvw_decode_load_bits */
-
-static void
-dwvw_read_reset (DWVW_PRIVATE *pdwvw)
-{ pdwvw->samplecount = 0 ;
- pdwvw->b.index = 0 ;
- pdwvw->b.end = 0 ;
- pdwvw->bit_count = 0 ;
- pdwvw->bits = 0 ;
- pdwvw->last_delta_width = 0 ;
- pdwvw->last_sample = 0 ;
-} /* dwvw_read_reset */
-
-static void
-dwvw_encode_store_bits (SF_PRIVATE *psf, DWVW_PRIVATE *pdwvw, int data, int new_bits)
-{ int byte ;
-
- /* Shift the bits into the resevoir. */
- pdwvw->bits = (pdwvw->bits << new_bits) | (data & ((1 << new_bits) - 1)) ;
- pdwvw->bit_count += new_bits ;
-
- /* Transfer bit to buffer. */
- while (pdwvw->bit_count >= 8)
- { byte = pdwvw->bits >> (pdwvw->bit_count - 8) ;
- pdwvw->bit_count -= 8 ;
- pdwvw->b.buffer [pdwvw->b.index] = byte & 0xFF ;
- pdwvw->b.index ++ ;
- } ;
-
- if (pdwvw->b.index > SIGNED_SIZEOF (pdwvw->b.buffer) - 4)
- { psf_fwrite (pdwvw->b.buffer, 1, pdwvw->b.index, psf) ;
- pdwvw->b.index = 0 ;
- } ;
-
- return ;
-} /* dwvw_encode_store_bits */
-
-#if 0
-/* Debigging routine. */
-static void
-dump_bits (DWVW_PRIVATE *pdwvw)
-{ int k, mask ;
-
- for (k = 0 ; k < 10 && k < pdwvw->b.index ; k++)
- { mask = 0x80 ;
- while (mask)
- { putchar (mask & pdwvw->b.buffer [k] ? '1' : '0') ;
- mask >>= 1 ;
- } ;
- putchar (' ') ;
- }
-
- for (k = pdwvw->bit_count - 1 ; k >= 0 ; k --)
- putchar (pdwvw->bits & (1 << k) ? '1' : '0') ;
-
- putchar ('\n') ;
-} /* dump_bits */
-#endif
-
-#define HIGHEST_BIT(x,count) \
- { int y = x ; \
- (count) = 0 ; \
- while (y) \
- { (count) ++ ; \
- y >>= 1 ; \
- } ; \
- } ;
-
-static int
-dwvw_encode_data (SF_PRIVATE *psf, DWVW_PRIVATE *pdwvw, const int *ptr, int len)
-{ int count ;
- int delta_width_modifier, delta, delta_negative, delta_width, extra_bit ;
-
- for (count = 0 ; count < len ; count++)
- { delta = (ptr [count] >> (32 - pdwvw->bit_width)) - pdwvw->last_sample ;
-
- /* Calculate extra_bit if needed. */
- extra_bit = -1 ;
- delta_negative = 0 ;
- if (delta < -pdwvw->max_delta)
- delta = pdwvw->max_delta + (delta % pdwvw->max_delta) ;
- else if (delta == -pdwvw->max_delta)
- { extra_bit = 1 ;
- delta_negative = 1 ;
- delta = pdwvw->max_delta - 1 ;
- }
- else if (delta > pdwvw->max_delta)
- { delta_negative = 1 ;
- delta = pdwvw->span - delta ;
- delta = abs (delta) ;
- }
- else if (delta == pdwvw->max_delta)
- { extra_bit = 1 ;
- delta = pdwvw->max_delta - 1 ;
- }
- else if (delta < 0)
- { delta_negative = 1 ;
- delta = abs (delta) ;
- } ;
-
- if (delta == pdwvw->max_delta - 1 && extra_bit == -1)
- extra_bit = 0 ;
-
- /* Find width in bits of delta */
- HIGHEST_BIT (delta, delta_width) ;
-
- /* Calculate the delta_width_modifier */
- delta_width_modifier = (delta_width - pdwvw->last_delta_width) % pdwvw->bit_width ;
- if (delta_width_modifier > pdwvw->dwm_maxsize)
- delta_width_modifier -= pdwvw->bit_width ;
- if (delta_width_modifier < -pdwvw->dwm_maxsize)
- delta_width_modifier += pdwvw->bit_width ;
-
- /* Write delta_width_modifier zeros, followed by terminating '1'. */
- dwvw_encode_store_bits (psf, pdwvw, 0, abs (delta_width_modifier)) ;
- if (abs (delta_width_modifier) != pdwvw->dwm_maxsize)
- dwvw_encode_store_bits (psf, pdwvw, 1, 1) ;
-
- /* Write delta_width_modifier sign. */
- if (delta_width_modifier < 0)
- dwvw_encode_store_bits (psf, pdwvw, 1, 1) ;
- if (delta_width_modifier > 0)
- dwvw_encode_store_bits (psf, pdwvw, 0, 1) ;
-
- /* Write delta and delta sign bit. */
- if (delta_width)
- { dwvw_encode_store_bits (psf, pdwvw, delta, abs (delta_width) - 1) ;
- dwvw_encode_store_bits (psf, pdwvw, (delta_negative ? 1 : 0), 1) ;
- } ;
-
- /* Write extra bit!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! */
- if (extra_bit >= 0)
- dwvw_encode_store_bits (psf, pdwvw, extra_bit, 1) ;
-
- pdwvw->last_sample = ptr [count] >> (32 - pdwvw->bit_width) ;
- pdwvw->last_delta_width = delta_width ;
- } ;
-
- pdwvw->samplecount += count ;
-
- return count ;
-} /* dwvw_encode_data */
-
-static sf_count_t
-dwvw_write_s (SF_PRIVATE *psf, const short *ptr, sf_count_t len)
-{ DWVW_PRIVATE *pdwvw ;
- int *iptr ;
- int k, bufferlen, writecount = 0, count ;
- sf_count_t total = 0 ;
-
- if (! psf->fdata)
- return 0 ;
- pdwvw = (DWVW_PRIVATE*) psf->fdata ;
-
- iptr = psf->u.ibuf ;
- bufferlen = ARRAY_LEN (psf->u.ibuf) ;
- while (len > 0)
- { writecount = (len >= bufferlen) ? bufferlen : len ;
- for (k = 0 ; k < writecount ; k++)
- iptr [k] = ptr [total + k] << 16 ;
- count = dwvw_encode_data (psf, pdwvw, iptr, writecount) ;
-
- total += count ;
- len -= writecount ;
- if (count != writecount)
- break ;
- } ;
-
- return total ;
-} /* dwvw_write_s */
-
-static sf_count_t
-dwvw_write_i (SF_PRIVATE *psf, const int *ptr, sf_count_t len)
-{ DWVW_PRIVATE *pdwvw ;
- int writecount, count ;
- sf_count_t total = 0 ;
-
- if (! psf->fdata)
- return 0 ;
- pdwvw = (DWVW_PRIVATE*) psf->fdata ;
-
- while (len > 0)
- { writecount = (len > 0x10000000) ? 0x10000000 : (int) len ;
-
- count = dwvw_encode_data (psf, pdwvw, ptr, writecount) ;
-
- total += count ;
- len -= count ;
-
- if (count != writecount)
- break ;
- } ;
-
- return total ;
-} /* dwvw_write_i */
-
-static sf_count_t
-dwvw_write_f (SF_PRIVATE *psf, const float *ptr, sf_count_t len)
-{ DWVW_PRIVATE *pdwvw ;
- int *iptr ;
- int k, bufferlen, writecount = 0, count ;
- sf_count_t total = 0 ;
- float normfact ;
-
- if (! psf->fdata)
- return 0 ;
- pdwvw = (DWVW_PRIVATE*) psf->fdata ;
-
- normfact = (psf->norm_float == SF_TRUE) ? (1.0 * 0x7FFFFFFF) : 1.0 ;
-
- iptr = psf->u.ibuf ;
- bufferlen = ARRAY_LEN (psf->u.ibuf) ;
- while (len > 0)
- { writecount = (len >= bufferlen) ? bufferlen : len ;
- for (k = 0 ; k < writecount ; k++)
- iptr [k] = lrintf (normfact * ptr [total + k]) ;
- count = dwvw_encode_data (psf, pdwvw, iptr, writecount) ;
-
- total += count ;
- len -= writecount ;
- if (count != writecount)
- break ;
- } ;
-
- return total ;
-} /* dwvw_write_f */
-
-static sf_count_t
-dwvw_write_d (SF_PRIVATE *psf, const double *ptr, sf_count_t len)
-{ DWVW_PRIVATE *pdwvw ;
- int *iptr ;
- int k, bufferlen, writecount = 0, count ;
- sf_count_t total = 0 ;
- double normfact ;
-
- if (! psf->fdata)
- return 0 ;
- pdwvw = (DWVW_PRIVATE*) psf->fdata ;
-
- normfact = (psf->norm_double == SF_TRUE) ? (1.0 * 0x7FFFFFFF) : 1.0 ;
-
- iptr = psf->u.ibuf ;
- bufferlen = ARRAY_LEN (psf->u.ibuf) ;
- while (len > 0)
- { writecount = (len >= bufferlen) ? bufferlen : len ;
- for (k = 0 ; k < writecount ; k++)
- iptr [k] = lrint (normfact * ptr [total + k]) ;
- count = dwvw_encode_data (psf, pdwvw, iptr, writecount) ;
-
- total += count ;
- len -= writecount ;
- if (count != writecount)
- break ;
- } ;
-
- return total ;
-} /* dwvw_write_d */
-
-/*
-** Do not edit or modify anything in this comment block.
-** The arch-tag line is a file identity tag for the GNU Arch
-** revision control system.
-**
-** arch-tag: 1ca09552-b01f-4d7f-9bcf-612f834fe41d
-*/
diff --git a/libs/libsndfile/src/file_io.c b/libs/libsndfile/src/file_io.c
deleted file mode 100644
index d80e17d307..0000000000
--- a/libs/libsndfile/src/file_io.c
+++ /dev/null
@@ -1,1537 +0,0 @@
-/*
-** Copyright (C) 2002-2005 Erik de Castro Lopo <erikd@mega-nerd.com>
-** Copyright (C) 2003 Ross Bencina <rbencina@iprimus.com.au>
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU Lesser General Public License as published by
-** the Free Software Foundation; either version 2.1 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU Lesser General Public License for more details.
-**
-** You should have received a copy of the GNU Lesser General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-*/
-
-/*
-** The file is split into three sections as follows:
-** - The top section (USE_WINDOWS_API == 0) for Linux, Unix and MacOSX
-** systems (including Cygwin).
-** - The middle section (USE_WINDOWS_API == 1) for microsoft windows
-** (including MinGW) using the native windows API.
-** - A legacy windows section which attempted to work around grevious
-** bugs in microsoft's POSIX implementation.
-*/
-
-/*
-** The header file sfconfig.h MUST be included before the others to ensure
-** that large file support is enabled correctly on Unix systems.
-*/
-
-#include "sfconfig.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-
-#if HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-
-#if (HAVE_DECL_S_IRGRP == 0)
-#include <sf_unistd.h>
-#endif
-
-#include <string.h>
-#include <fcntl.h>
-#include <errno.h>
-#include <sys/stat.h>
-
-#include "sndfile.h"
-#include "common.h"
-
-#define SENSIBLE_SIZE (0x40000000)
-
-static void psf_log_syserr (SF_PRIVATE *psf, int error) ;
-
-#if (USE_WINDOWS_API == 0)
-
-/*------------------------------------------------------------------------------
-** Win32 stuff at the bottom of the file. Unix and other sensible OSes here.
-*/
-
-static int psf_close_fd (int fd) ;
-static int psf_open_fd (const char * path, int mode) ;
-static sf_count_t psf_get_filelen_fd (int fd) ;
-
-int
-psf_fopen (SF_PRIVATE *psf, const char *pathname, int open_mode)
-{
- psf->error = 0 ;
- psf->filedes = psf_open_fd (pathname, open_mode) ;
-
- if (psf->filedes == - SFE_BAD_OPEN_MODE)
- { psf->error = SFE_BAD_OPEN_MODE ;
- psf->filedes = -1 ;
- return psf->error ;
- } ;
-
- if (psf->filedes == -1)
- psf_log_syserr (psf, errno) ;
-
- psf->mode = open_mode ;
-
- return psf->error ;
-} /* psf_fopen */
-
-int
-psf_fclose (SF_PRIVATE *psf)
-{ int retval ;
-
- if (psf->virtual_io)
- return 0 ;
-
- if (psf->do_not_close_descriptor)
- { psf->filedes = -1 ;
- return 0 ;
- } ;
-
- if ((retval = psf_close_fd (psf->filedes)) == -1)
- psf_log_syserr (psf, errno) ;
-
- psf->filedes = -1 ;
-
- return retval ;
-} /* psf_fclose */
-
-int
-psf_open_rsrc (SF_PRIVATE *psf, int open_mode)
-{
- if (psf->rsrcdes > 0)
- return 0 ;
-
- /* Test for MacOSX style resource fork on HPFS or HPFS+ filesystems. */
- LSF_SNPRINTF (psf->rsrcpath, sizeof (psf->rsrcpath), "%s/rsrc", psf->filepath) ;
- psf->error = SFE_NO_ERROR ;
- if ((psf->rsrcdes = psf_open_fd (psf->rsrcpath, open_mode)) >= 0)
- { psf->rsrclength = psf_get_filelen_fd (psf->rsrcdes) ;
- if (psf->rsrclength > 0 || (open_mode & SFM_WRITE))
- return SFE_NO_ERROR ;
- psf_close_fd (psf->rsrcdes) ;
- psf->rsrcdes = -1 ;
- } ;
-
- if (psf->rsrcdes == - SFE_BAD_OPEN_MODE)
- { psf->error = SFE_BAD_OPEN_MODE ;
- return psf->error ;
- } ;
-
- /*
- ** Now try for a resource fork stored as a separate file in the same
- ** directory, but preceded with a dot underscore.
- */
- LSF_SNPRINTF (psf->rsrcpath, sizeof (psf->rsrcpath), "%s._%s", psf->directory, psf->filename) ;
- psf->error = SFE_NO_ERROR ;
- if ((psf->rsrcdes = psf_open_fd (psf->rsrcpath, open_mode)) >= 0)
- { psf->rsrclength = psf_get_filelen_fd (psf->rsrcdes) ;
- return SFE_NO_ERROR ;
- } ;
-
- /*
- ** Now try for a resource fork stored in a separate file in the
- ** .AppleDouble/ directory.
- */
- LSF_SNPRINTF (psf->rsrcpath, sizeof (psf->rsrcpath), "%s.AppleDouble/%s", psf->directory, psf->filename) ;
- psf->error = SFE_NO_ERROR ;
- if ((psf->rsrcdes = psf_open_fd (psf->rsrcpath, open_mode)) >= 0)
- { psf->rsrclength = psf_get_filelen_fd (psf->rsrcdes) ;
- return SFE_NO_ERROR ;
- } ;
-
- /* No resource file found. */
- if (psf->rsrcdes == -1)
- psf_log_syserr (psf, errno) ;
-
- psf->rsrcdes = -1 ;
-
- return psf->error ;
-} /* psf_open_rsrc */
-
-sf_count_t
-psf_get_filelen (SF_PRIVATE *psf)
-{ sf_count_t filelen ;
-
- if (psf->virtual_io)
- return psf->vio.get_filelen (psf->vio_user_data) ;
-
- filelen = psf_get_filelen_fd (psf->filedes) ;
-
- if (filelen == -1)
- { psf_log_syserr (psf, errno) ;
- return (sf_count_t) -1 ;
- } ;
-
- if (filelen == -SFE_BAD_STAT_SIZE)
- { psf->error = SFE_BAD_STAT_SIZE ;
- return (sf_count_t) -1 ;
- } ;
-
- switch (psf->mode)
- { case SFM_WRITE :
- filelen = filelen - psf->fileoffset ;
- break ;
-
- case SFM_READ :
- if (psf->fileoffset > 0 && psf->filelength > 0)
- filelen = psf->filelength ;
- break ;
-
- case SFM_RDWR :
- /*
- ** Cannot open embedded files SFM_RDWR so we don't need to
- ** subtract psf->fileoffset. We already have the answer we
- ** need.
- */
- break ;
-
- default :
- /* Shouldn't be here, so return error. */
- filelen = -1 ;
- } ;
-
- return filelen ;
-} /* psf_get_filelen */
-
-int
-psf_close_rsrc (SF_PRIVATE *psf)
-{
- if (psf->rsrcdes >= 0)
- psf_close_fd (psf->rsrcdes) ;
- psf->rsrcdes = -1 ;
- return 0 ;
-} /* psf_close_rsrc */
-
-int
-psf_set_stdio (SF_PRIVATE *psf, int mode)
-{ int error = 0 ;
-
- switch (mode)
- { case SFM_RDWR :
- error = SFE_OPEN_PIPE_RDWR ;
- break ;
-
- case SFM_READ :
- psf->filedes = 0 ;
- break ;
-
- case SFM_WRITE :
- psf->filedes = 1 ;
- break ;
-
- default :
- error = SFE_BAD_OPEN_MODE ;
- break ;
- } ;
- psf->filelength = 0 ;
-
- return error ;
-} /* psf_set_stdio */
-
-void
-psf_set_file (SF_PRIVATE *psf, int fd)
-{ psf->filedes = fd ;
-} /* psf_set_file */
-
-int
-psf_file_valid (SF_PRIVATE *psf)
-{ return (psf->filedes >= 0) ? SF_TRUE : SF_FALSE ;
-} /* psf_set_file */
-
-sf_count_t
-psf_fseek (SF_PRIVATE *psf, sf_count_t offset, int whence)
-{ sf_count_t new_position ;
-
- if (psf->virtual_io)
- return psf->vio.seek (offset, whence, psf->vio_user_data) ;
-
- switch (whence)
- { case SEEK_SET :
- offset += psf->fileoffset ;
- break ;
-
- case SEEK_END :
- if (psf->mode == SFM_WRITE)
- { new_position = lseek (psf->filedes, offset, whence) ;
-
- if (new_position < 0)
- psf_log_syserr (psf, errno) ;
-
- return new_position - psf->fileoffset ;
- } ;
-
- /* Transform SEEK_END into a SEEK_SET, ie find the file
- ** length add the requested offset (should be <= 0) to
- ** get the offset wrt the start of file.
- */
- whence = SEEK_SET ;
- offset = lseek (psf->filedes, 0, SEEK_END) + offset ;
- break ;
-
- default :
- /* No need to do anything about SEEK_CUR. */
- break ;
- } ;
-
- new_position = lseek (psf->filedes, offset, whence) ;
-
- if (new_position < 0)
- psf_log_syserr (psf, errno) ;
-
- new_position -= psf->fileoffset ;
-
- return new_position ;
-} /* psf_fseek */
-
-sf_count_t
-psf_fread (void *ptr, sf_count_t bytes, sf_count_t items, SF_PRIVATE *psf)
-{ sf_count_t total = 0 ;
- ssize_t count ;
-
- if (psf->virtual_io)
- return psf->vio.read (ptr, bytes*items, psf->vio_user_data) / bytes ;
-
- items *= bytes ;
-
- /* Do this check after the multiplication above. */
- if (items <= 0)
- return 0 ;
-
- while (items > 0)
- { /* Break the read down to a sensible size. */
- count = (items > SENSIBLE_SIZE) ? SENSIBLE_SIZE : (ssize_t) items ;
-
- count = read (psf->filedes, ((char*) ptr) + total, (size_t) count) ;
-
- if (count == -1)
- { if (errno == EINTR)
- continue ;
-
- psf_log_syserr (psf, errno) ;
- break ;
- } ;
-
- if (count == 0)
- break ;
-
- total += count ;
- items -= count ;
- } ;
-
- if (psf->is_pipe)
- psf->pipeoffset += total ;
-
- return total / bytes ;
-} /* psf_fread */
-
-sf_count_t
-psf_fwrite (const void *ptr, sf_count_t bytes, sf_count_t items, SF_PRIVATE *psf)
-{ sf_count_t total = 0 ;
- ssize_t count ;
-
- if (psf->virtual_io)
- return psf->vio.write (ptr, bytes*items, psf->vio_user_data) / bytes ;
-
- items *= bytes ;
-
- /* Do this check after the multiplication above. */
- if (items <= 0)
- return 0 ;
-
- while (items > 0)
- { /* Break the writes down to a sensible size. */
- count = (items > SENSIBLE_SIZE) ? SENSIBLE_SIZE : items ;
-
- count = write (psf->filedes, ((const char*) ptr) + total, count) ;
-
- if (count == -1)
- { if (errno == EINTR)
- continue ;
-
- psf_log_syserr (psf, errno) ;
- break ;
- } ;
-
- if (count == 0)
- break ;
-
- total += count ;
- items -= count ;
- } ;
-
- if (psf->is_pipe)
- psf->pipeoffset += total ;
-
- return total / bytes ;
-} /* psf_fwrite */
-
-sf_count_t
-psf_ftell (SF_PRIVATE *psf)
-{ sf_count_t pos ;
-
- if (psf->virtual_io)
- return psf->vio.tell (psf->vio_user_data) ;
-
- if (psf->is_pipe)
- return psf->pipeoffset ;
-
- pos = lseek (psf->filedes, 0, SEEK_CUR) ;
-
- if (pos == ((sf_count_t) -1))
- { psf_log_syserr (psf, errno) ;
- return -1 ;
- } ;
-
- return pos - psf->fileoffset ;
-} /* psf_ftell */
-
-static int
-psf_close_fd (int fd)
-{ int retval ;
-
- while ((retval = close (fd)) == -1 && errno == EINTR)
- /* Do nothing. */ ;
-
- return retval ;
-} /* psf_close_fd */
-
-sf_count_t
-psf_fgets (char *buffer, sf_count_t bufsize, SF_PRIVATE *psf)
-{ sf_count_t k = 0 ;
- sf_count_t count ;
-
- while (k < bufsize - 1)
- { count = read (psf->filedes, &(buffer [k]), 1) ;
-
- if (count == -1)
- { if (errno == EINTR)
- continue ;
-
- psf_log_syserr (psf, errno) ;
- break ;
- } ;
-
- if (count == 0 || buffer [k++] == '\n')
- break ;
- } ;
-
- buffer [k] = 0 ;
-
- return k ;
-} /* psf_fgets */
-
-int
-psf_is_pipe (SF_PRIVATE *psf)
-{ struct stat statbuf ;
-
- if (psf->virtual_io)
- return SF_FALSE ;
-
- if (fstat (psf->filedes, &statbuf) == -1)
- { psf_log_syserr (psf, errno) ;
- /* Default to maximum safety. */
- return SF_TRUE ;
- } ;
-
- if (S_ISFIFO (statbuf.st_mode) || S_ISSOCK (statbuf.st_mode))
- return SF_TRUE ;
-
- return SF_FALSE ;
-} /* psf_is_pipe */
-
-static sf_count_t
-psf_get_filelen_fd (int fd)
-{ struct stat statbuf ;
-
- /*
- ** Sanity check.
- ** If everything is OK, this will be optimised out.
- */
- if (sizeof (statbuf.st_size) == 4 && sizeof (sf_count_t) == 8)
- return (sf_count_t) -SFE_BAD_STAT_SIZE ;
-
- if (fstat (fd, &statbuf) == -1)
- return (sf_count_t) -1 ;
-
- return statbuf.st_size ;
-} /* psf_get_filelen_fd */
-
-int
-psf_ftruncate (SF_PRIVATE *psf, sf_count_t len)
-{ int retval ;
-
- /* Returns 0 on success, non-zero on failure. */
- if (len < 0)
- return -1 ;
-
- if ((sizeof (off_t) < sizeof (sf_count_t)) && len > 0x7FFFFFFF)
- return -1 ;
-
- retval = ftruncate (psf->filedes, len) ;
-
- if (retval == -1)
- psf_log_syserr (psf, errno) ;
-
- return retval ;
-} /* psf_ftruncate */
-
-void
-psf_init_files (SF_PRIVATE *psf)
-{ psf->filedes = -1 ;
- psf->rsrcdes = -1 ;
- psf->savedes = -1 ;
-} /* psf_init_files */
-
-void
-psf_use_rsrc (SF_PRIVATE *psf, int on_off)
-{
- if (on_off)
- { if (psf->filedes != psf->rsrcdes)
- { psf->savedes = psf->filedes ;
- psf->filedes = psf->rsrcdes ;
- } ;
- }
- else if (psf->filedes == psf->rsrcdes)
- psf->filedes = psf->savedes ;
-
- return ;
-} /* psf_use_rsrc */
-
-static int
-psf_open_fd (const char * pathname, int open_mode)
-{ int fd, oflag, mode ;
-
- /*
- ** Sanity check. If everything is OK, this test and the printfs will
- ** be optimised out. This is meant to catch the problems caused by
- ** "sfconfig.h" being included after <stdio.h>.
- */
- if (sizeof (off_t) != sizeof (sf_count_t))
- { puts ("\n\n*** Fatal error : sizeof (off_t) != sizeof (sf_count_t)") ;
- puts ("*** This means that libsndfile was not configured correctly.\n") ;
- exit (1) ;
- } ;
-
- switch (open_mode)
- { case SFM_READ :
- oflag = O_RDONLY ;
- mode = 0 ;
- break ;
-
- case SFM_WRITE :
- oflag = O_WRONLY | O_CREAT | O_TRUNC ;
- mode = S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH ;
- break ;
-
- case SFM_RDWR :
- oflag = O_RDWR | O_CREAT ;
- mode = S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH ;
- break ;
-
- default :
- return - SFE_BAD_OPEN_MODE ;
- break ;
- } ;
-
-#if OS_IS_WIN32
- /* For Cygwin. */
- oflag |= O_BINARY ;
-#endif
-
- if (mode == 0)
- fd = open (pathname, oflag) ;
- else
- fd = open (pathname, oflag, mode) ;
-
- return fd ;
-} /* psf_open_fd */
-
-static void
-psf_log_syserr (SF_PRIVATE *psf, int error)
-{
- /* Only log an error if no error has been set yet. */
- if (psf->error == 0)
- { psf->error = SFE_SYSTEM ;
- LSF_SNPRINTF (psf->syserr, sizeof (psf->syserr), "System error : %s.", strerror (error)) ;
- } ;
-
- return ;
-} /* psf_log_syserr */
-
-void
-psf_fsync (SF_PRIVATE *psf)
-{
-#if HAVE_FSYNC
- if (psf->mode == SFM_WRITE || psf->mode == SFM_RDWR)
- fsync (psf->filedes) ;
-#else
- psf = NULL ;
-#endif
-} /* psf_fsync */
-
-#elif USE_WINDOWS_API
-
-/* Win32 file i/o functions implemented using native Win32 API */
-
-#include <windows.h>
-#include <io.h>
-
-#ifndef HAVE_SSIZE_T
-typedef long ssize_t ;
-#endif
-
-static int psf_close_handle (HANDLE handle) ;
-static HANDLE psf_open_handle (const char * path, int mode) ;
-static sf_count_t psf_get_filelen_handle (HANDLE handle) ;
-
-/* USE_WINDOWS_API */ int
-psf_fopen (SF_PRIVATE *psf, const char *pathname, int open_mode)
-{
- psf->error = 0 ;
- psf->hfile = psf_open_handle (pathname, open_mode) ;
-
- if (psf->hfile == NULL)
- psf_log_syserr (psf, errno) ;
-
- psf->mode = open_mode ;
-
- return psf->error ;
-} /* psf_fopen */
-
-/* USE_WINDOWS_API */ int
-psf_fclose (SF_PRIVATE *psf)
-{ int retval ;
-
- if (psf->virtual_io)
- return 0 ;
-
- if (psf->do_not_close_descriptor)
- { psf->hfile = NULL ;
- return 0 ;
- } ;
-
- if ((retval = psf_close_handle (psf->hfile)) == -1)
- psf_log_syserr (psf, errno) ;
-
- psf->hfile = NULL ;
-
- return retval ;
-} /* psf_fclose */
-
-/* USE_WINDOWS_API */ int
-psf_open_rsrc (SF_PRIVATE *psf, int open_mode)
-{
- if (psf->hrsrc != NULL)
- return 0 ;
-
- /* Test for MacOSX style resource fork on HPFS or HPFS+ filesystems. */
- LSF_SNPRINTF (psf->rsrcpath, sizeof (psf->rsrcpath), "%s/rsrc", psf->filepath) ;
- psf->error = SFE_NO_ERROR ;
- if ((psf->hrsrc = psf_open_handle (psf->rsrcpath, open_mode)) != NULL)
- { psf->rsrclength = psf_get_filelen_handle (psf->hrsrc) ;
- return SFE_NO_ERROR ;
- } ;
-
- /*
- ** Now try for a resource fork stored as a separate file in the same
- ** directory, but preceded with a dot underscore.
- */
- LSF_SNPRINTF (psf->rsrcpath, sizeof (psf->rsrcpath), "%s._%s", psf->directory, psf->filename) ;
- psf->error = SFE_NO_ERROR ;
- if ((psf->hrsrc = psf_open_handle (psf->rsrcpath, open_mode)) != NULL)
- { psf->rsrclength = psf_get_filelen_handle (psf->hrsrc) ;
- return SFE_NO_ERROR ;
- } ;
-
- /*
- ** Now try for a resource fork stored in a separate file in the
- ** .AppleDouble/ directory.
- */
- LSF_SNPRINTF (psf->rsrcpath, sizeof (psf->rsrcpath), "%s.AppleDouble/%s", psf->directory, psf->filename) ;
- psf->error = SFE_NO_ERROR ;
- if ((psf->hrsrc = psf_open_handle (psf->rsrcpath, open_mode)) != NULL)
- { psf->rsrclength = psf_get_filelen_handle (psf->hrsrc) ;
- return SFE_NO_ERROR ;
- } ;
-
- /* No resource file found. */
- if (psf->hrsrc == NULL)
- psf_log_syserr (psf, errno) ;
-
- psf->hrsrc = NULL ;
-
- return psf->error ;
-} /* psf_open_rsrc */
-
-/* USE_WINDOWS_API */ sf_count_t
-psf_get_filelen (SF_PRIVATE *psf)
-{ sf_count_t filelen ;
-
- if (psf->virtual_io)
- return psf->vio.get_filelen (psf->vio_user_data) ;
-
- filelen = psf_get_filelen_handle (psf->hfile) ;
-
- if (filelen == -1)
- { psf_log_syserr (psf, errno) ;
- return (sf_count_t) -1 ;
- } ;
-
- if (filelen == -SFE_BAD_STAT_SIZE)
- { psf->error = SFE_BAD_STAT_SIZE ;
- return (sf_count_t) -1 ;
- } ;
-
- switch (psf->mode)
- { case SFM_WRITE :
- filelen = filelen - psf->fileoffset ;
- break ;
-
- case SFM_READ :
- if (psf->fileoffset > 0 && psf->filelength > 0)
- filelen = psf->filelength ;
- break ;
-
- case SFM_RDWR :
- /*
- ** Cannot open embedded files SFM_RDWR so we don't need to
- ** subtract psf->fileoffset. We already have the answer we
- ** need.
- */
- break ;
-
- default :
- /* Shouldn't be here, so return error. */
- filelen = -1 ;
- } ;
-
- return filelen ;
-} /* psf_get_filelen */
-
-/* USE_WINDOWS_API */ void
-psf_init_files (SF_PRIVATE *psf)
-{ psf->hfile = NULL ;
- psf->hrsrc = NULL ;
- psf->hsaved = NULL ;
-} /* psf_init_files */
-
-/* USE_WINDOWS_API */ void
-psf_use_rsrc (SF_PRIVATE *psf, int on_off)
-{
- if (on_off)
- { if (psf->hfile != psf->hrsrc)
- { psf->hsaved = psf->hfile ;
- psf->hfile = psf->hrsrc ;
- } ;
- }
- else if (psf->hfile == psf->hrsrc)
- psf->hfile = psf->hsaved ;
-
- return ;
-} /* psf_use_rsrc */
-
-/* USE_WINDOWS_API */ static HANDLE
-psf_open_handle (const char * pathname, int open_mode)
-{ DWORD dwDesiredAccess ;
- DWORD dwShareMode ;
- DWORD dwCreationDistribution ;
- HANDLE handle ;
-
- switch (open_mode)
- { case SFM_READ :
- dwDesiredAccess = GENERIC_READ ;
- dwShareMode = FILE_SHARE_READ | FILE_SHARE_WRITE ;
- dwCreationDistribution = OPEN_EXISTING ;
- break ;
-
- case SFM_WRITE :
- dwDesiredAccess = GENERIC_WRITE ;
- dwShareMode = FILE_SHARE_READ | FILE_SHARE_WRITE ;
- dwCreationDistribution = CREATE_ALWAYS ;
- break ;
-
- case SFM_RDWR :
- dwDesiredAccess = GENERIC_READ | GENERIC_WRITE ;
- dwShareMode = FILE_SHARE_READ | FILE_SHARE_WRITE ;
- dwCreationDistribution = OPEN_ALWAYS ;
- break ;
-
- default :
- return NULL ;
- } ;
-
- handle = CreateFile (
- pathname, /* pointer to name of the file */
- dwDesiredAccess, /* access (read-write) mode */
- dwShareMode, /* share mode */
- 0, /* pointer to security attributes */
- dwCreationDistribution, /* how to create */
- FILE_ATTRIBUTE_NORMAL, /* file attributes (could use FILE_FLAG_SEQUENTIAL_SCAN) */
- NULL /* handle to file with attributes to copy */
- ) ;
-
- if (handle == INVALID_HANDLE_VALUE)
- return NULL ;
-
- return handle ;
-} /* psf_open_handle */
-
-/* USE_WINDOWS_API */ static void
-psf_log_syserr (SF_PRIVATE *psf, int error)
-{ LPVOID lpMsgBuf ;
-
- /* Only log an error if no error has been set yet. */
- if (psf->error == 0)
- { psf->error = SFE_SYSTEM ;
-
- FormatMessage (
- FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
- NULL,
- error,
- MAKELANGID (LANG_NEUTRAL, SUBLANG_DEFAULT),
- (LPTSTR) &lpMsgBuf,
- 0,
- NULL
- ) ;
-
- LSF_SNPRINTF (psf->syserr, sizeof (psf->syserr), "System error : %s", lpMsgBuf) ;
- LocalFree (lpMsgBuf) ;
- } ;
-
- return ;
-} /* psf_log_syserr */
-
-
-/* USE_WINDOWS_API */ int
-psf_close_rsrc (SF_PRIVATE *psf)
-{
- if (psf->hrsrc != NULL)
- psf_close_handle (psf->hrsrc) ;
- psf->hrsrc = NULL ;
- return 0 ;
-} /* psf_close_rsrc */
-
-
-/* USE_WINDOWS_API */ int
-psf_set_stdio (SF_PRIVATE *psf, int mode)
-{ HANDLE handle = NULL ;
- int error = 0 ;
-
- switch (mode)
- { case SFM_RDWR :
- error = SFE_OPEN_PIPE_RDWR ;
- break ;
-
- case SFM_READ :
- handle = GetStdHandle (STD_INPUT_HANDLE) ;
- psf->do_not_close_descriptor = 1 ;
- break ;
-
- case SFM_WRITE :
- handle = GetStdHandle (STD_OUTPUT_HANDLE) ;
- psf->do_not_close_descriptor = 1 ;
- break ;
-
- default :
- error = SFE_BAD_OPEN_MODE ;
- break ;
- } ;
-
- psf->hfile = handle ;
- psf->filelength = 0 ;
-
- return error ;
-} /* psf_set_stdio */
-
-/* USE_WINDOWS_API */ void
-psf_set_file (SF_PRIVATE *psf, int fd)
-{ HANDLE handle ;
- long osfhandle ;
-
- osfhandle = _get_osfhandle (fd) ;
- handle = (HANDLE) osfhandle ;
-
- psf->hfile = handle ;
-} /* psf_set_file */
-
-/* USE_WINDOWS_API */ int
-psf_file_valid (SF_PRIVATE *psf)
-{ if (psf->hfile == NULL)
- return SF_FALSE ;
- if (psf->hfile == INVALID_HANDLE_VALUE)
- return SF_FALSE ;
- return SF_TRUE ;
-} /* psf_set_file */
-
-/* USE_WINDOWS_API */ sf_count_t
-psf_fseek (SF_PRIVATE *psf, sf_count_t offset, int whence)
-{ sf_count_t new_position ;
- LONG lDistanceToMove, lDistanceToMoveHigh ;
- DWORD dwMoveMethod ;
- DWORD dwResult, dwError ;
-
- if (psf->virtual_io)
- return psf->vio.seek (offset, whence, psf->vio_user_data) ;
-
- switch (whence)
- { case SEEK_SET :
- offset += psf->fileoffset ;
- dwMoveMethod = FILE_BEGIN ;
- break ;
-
- case SEEK_END :
- dwMoveMethod = FILE_END ;
- break ;
-
- default :
- dwMoveMethod = FILE_CURRENT ;
- break ;
- } ;
-
- lDistanceToMove = (DWORD) (offset & 0xFFFFFFFF) ;
- lDistanceToMoveHigh = (DWORD) ((offset >> 32) & 0xFFFFFFFF) ;
-
- dwResult = SetFilePointer (psf->hfile, lDistanceToMove, &lDistanceToMoveHigh, dwMoveMethod) ;
-
- if (dwResult == 0xFFFFFFFF)
- dwError = GetLastError () ;
- else
- dwError = NO_ERROR ;
-
- if (dwError != NO_ERROR)
- { psf_log_syserr (psf, dwError) ;
- return -1 ;
- } ;
-
- new_position = (dwResult + ((__int64) lDistanceToMoveHigh << 32)) - psf->fileoffset ;
-
- return new_position ;
-} /* psf_fseek */
-
-/* USE_WINDOWS_API */ sf_count_t
-psf_fread (void *ptr, sf_count_t bytes, sf_count_t items, SF_PRIVATE *psf)
-{ sf_count_t total = 0 ;
- ssize_t count ;
- DWORD dwNumberOfBytesRead ;
-
- if (psf->virtual_io)
- return psf->vio.read (ptr, bytes*items, psf->vio_user_data) / bytes ;
-
- items *= bytes ;
-
- /* Do this check after the multiplication above. */
- if (items <= 0)
- return 0 ;
-
- while (items > 0)
- { /* Break the writes down to a sensible size. */
- count = (items > SENSIBLE_SIZE) ? SENSIBLE_SIZE : (ssize_t) items ;
-
- if (ReadFile (psf->hfile, ((char*) ptr) + total, count, &dwNumberOfBytesRead, 0) == 0)
- { psf_log_syserr (psf, GetLastError ()) ;
- break ;
- }
- else
- count = dwNumberOfBytesRead ;
-
- if (count == 0)
- break ;
-
- total += count ;
- items -= count ;
- } ;
-
- if (psf->is_pipe)
- psf->pipeoffset += total ;
-
- return total / bytes ;
-} /* psf_fread */
-
-/* USE_WINDOWS_API */ sf_count_t
-psf_fwrite (const void *ptr, sf_count_t bytes, sf_count_t items, SF_PRIVATE *psf)
-{ sf_count_t total = 0 ;
- ssize_t count ;
- DWORD dwNumberOfBytesWritten ;
-
- if (psf->virtual_io)
- return psf->vio.write (ptr, bytes * items, psf->vio_user_data) / bytes ;
-
- items *= bytes ;
-
- /* Do this check after the multiplication above. */
- if (items <= 0)
- return 0 ;
-
- while (items > 0)
- { /* Break the writes down to a sensible size. */
- count = (items > SENSIBLE_SIZE) ? SENSIBLE_SIZE : (ssize_t) items ;
-
- if (WriteFile (psf->hfile, ((const char*) ptr) + total, count, &dwNumberOfBytesWritten, 0) == 0)
- { psf_log_syserr (psf, GetLastError ()) ;
- break ;
- }
- else
- count = dwNumberOfBytesWritten ;
-
- if (count == 0)
- break ;
-
- total += count ;
- items -= count ;
- } ;
-
- if (psf->is_pipe)
- psf->pipeoffset += total ;
-
- return total / bytes ;
-} /* psf_fwrite */
-
-/* USE_WINDOWS_API */ sf_count_t
-psf_ftell (SF_PRIVATE *psf)
-{ sf_count_t pos ;
- LONG lDistanceToMoveLow, lDistanceToMoveHigh ;
- DWORD dwResult, dwError ;
-
- if (psf->virtual_io)
- return psf->vio.tell (psf->vio_user_data) ;
-
- if (psf->is_pipe)
- return psf->pipeoffset ;
-
- lDistanceToMoveLow = 0 ;
- lDistanceToMoveHigh = 0 ;
-
- dwResult = SetFilePointer (psf->hfile, lDistanceToMoveLow, &lDistanceToMoveHigh, FILE_CURRENT) ;
-
- if (dwResult == 0xFFFFFFFF)
- dwError = GetLastError () ;
- else
- dwError = NO_ERROR ;
-
- if (dwError != NO_ERROR)
- { psf_log_syserr (psf, dwError) ;
- return -1 ;
- } ;
-
- pos = (dwResult + ((__int64) lDistanceToMoveHigh << 32)) ;
-
- return pos - psf->fileoffset ;
-} /* psf_ftell */
-
-/* USE_WINDOWS_API */ static int
-psf_close_handle (HANDLE handle)
-{ if (CloseHandle (handle) == 0)
- return -1 ;
-
- return 0 ;
-} /* psf_close_handle */
-
-/* USE_WINDOWS_API */ sf_count_t
-psf_fgets (char *buffer, sf_count_t bufsize, SF_PRIVATE *psf)
-{ sf_count_t k = 0 ;
- sf_count_t count ;
- DWORD dwNumberOfBytesRead ;
-
- while (k < bufsize - 1)
- { if (ReadFile (psf->hfile, &(buffer [k]), 1, &dwNumberOfBytesRead, 0) == 0)
- { psf_log_syserr (psf, GetLastError ()) ;
- break ;
- }
- else
- { count = dwNumberOfBytesRead ;
- /* note that we only check for '\n' not other line endings such as CRLF */
- if (count == 0 || buffer [k++] == '\n')
- break ;
- } ;
- } ;
-
- buffer [k] = 0 ;
-
- return k ;
-} /* psf_fgets */
-
-/* USE_WINDOWS_API */ int
-psf_is_pipe (SF_PRIVATE *psf)
-{
- if (psf->virtual_io)
- return SF_FALSE ;
-
- if (GetFileType (psf->hfile) == FILE_TYPE_DISK)
- return SF_FALSE ;
-
- /* Default to maximum safety. */
- return SF_TRUE ;
-} /* psf_is_pipe */
-
-/* USE_WINDOWS_API */ sf_count_t
-psf_get_filelen_handle (HANDLE handle)
-{ sf_count_t filelen ;
- DWORD dwFileSizeLow, dwFileSizeHigh, dwError = NO_ERROR ;
-
- dwFileSizeLow = GetFileSize (handle, &dwFileSizeHigh) ;
-
- if (dwFileSizeLow == 0xFFFFFFFF)
- dwError = GetLastError () ;
-
- if (dwError != NO_ERROR)
- return (sf_count_t) -1 ;
-
- filelen = dwFileSizeLow + ((__int64) dwFileSizeHigh << 32) ;
-
- return filelen ;
-} /* psf_get_filelen_handle */
-
-/* USE_WINDOWS_API */ void
-psf_fsync (SF_PRIVATE *psf)
-{ FlushFileBuffers (psf->hfile) ;
-} /* psf_fsync */
-
-
-/* USE_WINDOWS_API */ int
-psf_ftruncate (SF_PRIVATE *psf, sf_count_t len)
-{ int retval = 0 ;
- LONG lDistanceToMoveLow, lDistanceToMoveHigh ;
- DWORD dwResult, dwError = NO_ERROR ;
-
- /* This implementation trashes the current file position.
- ** should it save and restore it? what if the current position is past
- ** the new end of file?
- */
-
- /* Returns 0 on success, non-zero on failure. */
- if (len < 0)
- return 1 ;
-
- lDistanceToMoveLow = (DWORD) (len & 0xFFFFFFFF) ;
- lDistanceToMoveHigh = (DWORD) ((len >> 32) & 0xFFFFFFFF) ;
-
- dwResult = SetFilePointer (psf->hfile, lDistanceToMoveLow, &lDistanceToMoveHigh, FILE_BEGIN) ;
-
- if (dwResult == 0xFFFFFFFF)
- dwError = GetLastError () ;
-
- if (dwError != NO_ERROR)
- { retval = -1 ;
- psf_log_syserr (psf, dwError) ;
- }
- else
- { /* Note: when SetEndOfFile is used to extend a file, the contents of the
- ** new portion of the file is undefined. This is unlike chsize(),
- ** which guarantees that the new portion of the file will be zeroed.
- ** Not sure if this is important or not.
- */
- if (SetEndOfFile (psf->hfile) == 0)
- { retval = -1 ;
- psf_log_syserr (psf, GetLastError ()) ;
- } ;
- } ;
-
- return retval ;
-} /* psf_ftruncate */
-
-
-#else
-/* Win32 file i/o functions implemented using Unix-style file i/o API */
-
-/* Win32 has a 64 file offset seek function:
-**
-** __int64 _lseeki64 (int handle, __int64 offset, int origin) ;
-**
-** It also has a 64 bit fstat function:
-**
-** int fstati64 (int, struct _stati64) ;
-**
-** but the fscking thing doesn't work!!!!! The file size parameter returned
-** by this function is only valid up until more data is written at the end of
-** the file. That makes this function completely 100% useless.
-*/
-
-#include <io.h>
-#include <direct.h>
-
-#ifndef HAVE_SSIZE_T
-typedef long ssize_t ;
-#endif
-
-/* Win32 */ int
-psf_fopen (SF_PRIVATE *psf, const char *pathname, int open_mode)
-{ int oflag, mode ;
-
- switch (open_mode)
- { case SFM_READ :
- oflag = O_RDONLY | O_BINARY ;
- mode = 0 ;
- break ;
-
- case SFM_WRITE :
- oflag = O_WRONLY | O_CREAT | O_TRUNC | O_BINARY ;
- mode = S_IRUSR | S_IWUSR | S_IRGRP ;
- break ;
-
- case SFM_RDWR :
- oflag = O_RDWR | O_CREAT | O_BINARY ;
- mode = S_IRUSR | S_IWUSR | S_IRGRP ;
- break ;
-
- default :
- psf->error = SFE_BAD_OPEN_MODE ;
- return -1 ;
- break ;
- } ;
-
- if (mode == 0)
- psf->filedes = open (pathname, oflag) ;
- else
- psf->filedes = open (pathname, oflag, mode) ;
-
- if (psf->filedes == -1)
- psf_log_syserr (psf, errno) ;
-
- return psf->filedes ;
-} /* psf_fopen */
-
-/* Win32 */ sf_count_t
-psf_fseek (SF_PRIVATE *psf, sf_count_t offset, int whence)
-{ sf_count_t new_position ;
-
- if (psf->virtual_io)
- return psf->vio.seek (offset, whence, psf->vio_user_data) ;
-
- switch (whence)
- { case SEEK_SET :
- offset += psf->fileoffset ;
- break ;
-
- case SEEK_END :
- if (psf->mode == SFM_WRITE)
- { new_position = _lseeki64 (psf->filedes, offset, whence) ;
-
- if (new_position < 0)
- psf_log_syserr (psf, errno) ;
-
- return new_position - psf->fileoffset ;
- } ;
-
- /* Transform SEEK_END into a SEEK_SET, ie find the file
- ** length add the requested offset (should be <= 0) to
- ** get the offset wrt the start of file.
- */
- whence = SEEK_SET ;
- offset = _lseeki64 (psf->filedes, 0, SEEK_END) + offset ;
- break ;
-
- default :
- /* No need to do anything about SEEK_CUR. */
- break ;
- } ;
-
- /*
- ** Bypass weird Win32-ism if necessary.
- ** _lseeki64() returns an "invalid parameter" error if called with the
- ** offset == 0 and whence == SEEK_CUR.
- *** Use the _telli64() function instead.
- */
- if (offset == 0 && whence == SEEK_CUR)
- new_position = _telli64 (psf->filedes) ;
- else
- new_position = _lseeki64 (psf->filedes, offset, whence) ;
-
- if (new_position < 0)
- psf_log_syserr (psf, errno) ;
-
- new_position -= psf->fileoffset ;
-
- return new_position ;
-} /* psf_fseek */
-
-/* Win32 */ sf_count_t
-psf_fread (void *ptr, sf_count_t bytes, sf_count_t items, SF_PRIVATE *psf)
-{ sf_count_t total = 0 ;
- ssize_t count ;
-
- if (psf->virtual_io)
- return psf->vio.read (ptr, bytes*items, psf->vio_user_data) / bytes ;
-
- items *= bytes ;
-
- /* Do this check after the multiplication above. */
- if (items <= 0)
- return 0 ;
-
- while (items > 0)
- { /* Break the writes down to a sensible size. */
- count = (items > SENSIBLE_SIZE) ? SENSIBLE_SIZE : (ssize_t) items ;
-
- count = read (psf->filedes, ((char*) ptr) + total, (size_t) count) ;
-
- if (count == -1)
- { if (errno == EINTR)
- continue ;
-
- psf_log_syserr (psf, errno) ;
- break ;
- } ;
-
- if (count == 0)
- break ;
-
- total += count ;
- items -= count ;
- } ;
-
- return total / bytes ;
-} /* psf_fread */
-
-/* Win32 */ sf_count_t
-psf_fwrite (const void *ptr, sf_count_t bytes, sf_count_t items, SF_PRIVATE *psf)
-{ sf_count_t total = 0 ;
- ssize_t count ;
-
- if (psf->virtual_io)
- return psf->vio.write (ptr, bytes*items, psf->vio_user_data) / bytes ;
-
- items *= bytes ;
-
- /* Do this check after the multiplication above. */
- if (items <= 0)
- return 0 ;
-
- while (items > 0)
- { /* Break the writes down to a sensible size. */
- count = (items > SENSIBLE_SIZE) ? SENSIBLE_SIZE : items ;
-
- count = write (psf->filedes, ((const char*) ptr) + total, count) ;
-
- if (count == -1)
- { if (errno == EINTR)
- continue ;
-
- psf_log_syserr (psf, errno) ;
- break ;
- } ;
-
- if (count == 0)
- break ;
-
- total += count ;
- items -= count ;
- } ;
-
- return total / bytes ;
-} /* psf_fwrite */
-
-/* Win32 */ sf_count_t
-psf_ftell (SF_PRIVATE *psf)
-{ sf_count_t pos ;
-
- if (psf->virtual_io)
- return psf->vio.tell (psf->vio_user_data) ;
-
- pos = _telli64 (psf->filedes) ;
-
- if (pos == ((sf_count_t) -1))
- { psf_log_syserr (psf, errno) ;
- return -1 ;
- } ;
-
- return pos - psf->fileoffset ;
-} /* psf_ftell */
-
-/* Win32 */ int
-psf_fclose (SF_PRIVATE *psf)
-{ int retval ;
-
- while ((retval = close (psf->filedes)) == -1 && errno == EINTR)
- /* Do nothing. */ ;
-
- if (retval == -1)
- psf_log_syserr (psf, errno) ;
-
- psf->filedes = -1 ;
-
- return retval ;
-} /* psf_fclose */
-
-/* Win32 */ sf_count_t
-psf_fgets (char *buffer, sf_count_t bufsize, SF_PRIVATE *psf)
-{ sf_count_t k = 0 ;
- sf_count_t count ;
-
- while (k < bufsize - 1)
- { count = read (psf->filedes, &(buffer [k]), 1) ;
-
- if (count == -1)
- { if (errno == EINTR)
- continue ;
-
- psf_log_syserr (psf, errno) ;
- break ;
- } ;
-
- if (count == 0 || buffer [k++] == '\n')
- break ;
- } ;
-
- buffer [k] = 0 ;
-
- return k ;
-} /* psf_fgets */
-
-/* Win32 */ int
-psf_is_pipe (SF_PRIVATE *psf)
-{ struct stat statbuf ;
-
- if (psf->virtual_io)
- return SF_FALSE ;
-
- /* Not sure if this works. */
- if (fstat (psf->filedes, &statbuf) == -1)
- { psf_log_syserr (psf, errno) ;
- /* Default to maximum safety. */
- return SF_TRUE ;
- } ;
-
- /* These macros are defined in Win32/unistd.h. */
- if (S_ISFIFO (statbuf.st_mode) || S_ISSOCK (statbuf.st_mode))
- return SF_TRUE ;
-
- return SF_FALSE ;
-} /* psf_checkpipe */
-
-/* Win32 */ sf_count_t
-psf_get_filelen (SF_PRIVATE *psf)
-{
-#if 0
- /*
- ** Windoze is SOOOOO FUCKED!!!!!!!
- ** This code should work but doesn't. Why?
- ** Code below does work.
- */
- struct _stati64 statbuf ;
-
- if (_fstati64 (psf->filedes, &statbuf))
- { psf_log_syserr (psf, errno) ;
- return (sf_count_t) -1 ;
- } ;
-
- return statbuf.st_size ;
-#else
- sf_count_t current, filelen ;
-
- if (psf->virtual_io)
- return psf->vio.get_filelen (psf->vio_user_data) ;
-
- if ((current = _telli64 (psf->filedes)) < 0)
- { psf_log_syserr (psf, errno) ;
- return (sf_count_t) -1 ;
- } ;
-
- /*
- ** Lets face it, windoze if FUBAR!!!
- **
- ** For some reason, I have to call _lseeki64() TWICE to get to the
- ** end of the file.
- **
- ** This might have been avoided if windows had implemented the POSIX
- ** standard function fsync() but NO, that would have been too easy.
- **
- ** I am VERY close to saying that windoze will no longer be supported
- ** by libsndfile and changing the license to GPL at the same time.
- */
-
- _lseeki64 (psf->filedes, 0, SEEK_END) ;
-
- if ((filelen = _lseeki64 (psf->filedes, 0, SEEK_END)) < 0)
- { psf_log_syserr (psf, errno) ;
- return (sf_count_t) -1 ;
- } ;
-
- if (filelen > current)
- _lseeki64 (psf->filedes, current, SEEK_SET) ;
-
- switch (psf->mode)
- { case SFM_WRITE :
- filelen = filelen - psf->fileoffset ;
- break ;
-
- case SFM_READ :
- if (psf->fileoffset > 0 && psf->filelength > 0)
- filelen = psf->filelength ;
- break ;
-
- case SFM_RDWR :
- /*
- ** Cannot open embedded files SFM_RDWR so we don't need to
- ** subtract psf->fileoffset. We already have the answer we
- ** need.
- */
- break ;
-
- default :
- filelen = 0 ;
- } ;
-
- return filelen ;
-#endif
-} /* psf_get_filelen */
-
-/* Win32 */ int
-psf_ftruncate (SF_PRIVATE *psf, sf_count_t len)
-{ int retval ;
-
- /* Returns 0 on success, non-zero on failure. */
- if (len < 0)
- return 1 ;
-
- /* The global village idiots at micorsoft decided to implement
- ** nearly all the required 64 bit file offset functions except
- ** for one, truncate. The fscking morons!
- **
- ** This is not 64 bit file offset clean. Somone needs to clean
- ** this up.
- */
- if (len > 0x7FFFFFFF)
- return -1 ;
-
- retval = chsize (psf->filedes, len) ;
-
- if (retval == -1)
- psf_log_syserr (psf, errno) ;
-
- return retval ;
-} /* psf_ftruncate */
-
-
-static void
-psf_log_syserr (SF_PRIVATE *psf, int error)
-{
- /* Only log an error if no error has been set yet. */
- if (psf->error == 0)
- { psf->error = SFE_SYSTEM ;
- LSF_SNPRINTF (psf->syserr, sizeof (psf->syserr), "System error : %s", strerror (error)) ;
- } ;
-
- return ;
-} /* psf_log_syserr */
-
-#endif
-
-/*
-** Do not edit or modify anything in this comment block.
-** The arch-tag line is a file identity tag for the GNU Arch
-** revision control system.
-**
-** arch-tag: 749740d7-ecc7-47bd-8cf7-600f31d32e6d
-*/
diff --git a/libs/libsndfile/src/flac.c b/libs/libsndfile/src/flac.c
deleted file mode 100644
index c67f874be3..0000000000
--- a/libs/libsndfile/src/flac.c
+++ /dev/null
@@ -1,1356 +0,0 @@
-/*
-** Copyright (C) 2004, 2005 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
-** it under the terms of the GNU Lesser General Public License as published by
-** the Free Software Foundation ; either version 2.1 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY ; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU Lesser General Public License for more details.
-**
-** You should have received a copy of the GNU Lesser General Public License
-** along with this program ; if not, write to the Free Software
-** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-*/
-
-#include "sfconfig.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <fcntl.h>
-#include <string.h>
-#include <ctype.h>
-
-#include "sndfile.h"
-#include "common.h"
-
-
-#ifndef HAVE_FLAC_ALL_H
-
-int
-flac_open (SF_PRIVATE *psf)
-{ if (psf)
- return SFE_UNIMPLEMENTED ;
- return (psf && 0) ;
-} /* flac_open */
-
-
-#else
-
-#include <FLAC/all.h>
-
-#include "sfendian.h"
-#include "float_cast.h"
-
-/* FLAC 1.1.3 has FLAC_API_VERSION_CURRENT == 8 */
-#if !defined(FLAC_API_VERSION_CURRENT) || FLAC_API_VERSION_CURRENT < 8
-#define LEGACY_FLAC
-#else
-#undef LEGACY_FLAC
-#endif
-
-/*------------------------------------------------------------------------------
-** Private static functions.
-*/
-
-#define ENC_BUFFER_SIZE 8192
-
-typedef enum
-{ PFLAC_PCM_SHORT = 0,
- PFLAC_PCM_INT = 1,
- PFLAC_PCM_FLOAT = 2,
- PFLAC_PCM_DOUBLE = 3
-} PFLAC_PCM ;
-
-typedef struct
-{
-#ifdef LEGACY_FLAC
- FLAC__SeekableStreamDecoder *fsd ;
- FLAC__SeekableStreamEncoder *fse ;
-#else
- FLAC__StreamDecoder *fsd ;
- FLAC__StreamEncoder *fse ;
-#endif
-
- PFLAC_PCM pcmtype ;
- void* ptr ;
- unsigned pos, len, remain ;
-
- const FLAC__int32 * const * wbuffer ;
- FLAC__int32 * rbuffer [FLAC__MAX_CHANNELS] ;
-
- FLAC__int32* encbuffer ;
- unsigned bufferpos ;
-
- const FLAC__Frame *frame ;
- FLAC__bool bufferbackup ;
-} FLAC_PRIVATE ;
-
-static sf_count_t flac_seek (SF_PRIVATE *psf, int mode, sf_count_t offset) ;
-static int flac_close (SF_PRIVATE *psf) ;
-
-static int flac_enc_init (SF_PRIVATE *psf) ;
-static int flac_read_header (SF_PRIVATE *psf) ;
-
-static sf_count_t flac_read_flac2s (SF_PRIVATE *psf, short *ptr, sf_count_t len) ;
-static sf_count_t flac_read_flac2i (SF_PRIVATE *psf, int *ptr, sf_count_t len) ;
-static sf_count_t flac_read_flac2f (SF_PRIVATE *psf, float *ptr, sf_count_t len) ;
-static sf_count_t flac_read_flac2d (SF_PRIVATE *psf, double *ptr, sf_count_t len) ;
-
-static sf_count_t flac_write_s2flac (SF_PRIVATE *psf, const short *ptr, sf_count_t len) ;
-static sf_count_t flac_write_i2flac (SF_PRIVATE *psf, const int *ptr, sf_count_t len) ;
-static sf_count_t flac_write_f2flac (SF_PRIVATE *psf, const float *ptr, sf_count_t len) ;
-static sf_count_t flac_write_d2flac (SF_PRIVATE *psf, const double *ptr, sf_count_t len) ;
-
-static void f2flac8_array (const float *src, FLAC__int32 *dest, int count, int normalize) ;
-static void f2flac16_array (const float *src, FLAC__int32 *dest, int count, int normalize) ;
-static void f2flac24_array (const float *src, FLAC__int32 *dest, int count, int normalize) ;
-static void f2flac8_clip_array (const float *src, FLAC__int32 *dest, int count, int normalize) ;
-static void f2flac16_clip_array (const float *src, FLAC__int32 *dest, int count, int normalize) ;
-static void f2flac24_clip_array (const float *src, FLAC__int32 *dest, int count, int normalize) ;
-static void d2flac8_array (const double *src, FLAC__int32 *dest, int count, int normalize) ;
-static void d2flac16_array (const double *src, FLAC__int32 *dest, int count, int normalize) ;
-static void d2flac24_array (const double *src, FLAC__int32 *dest, int count, int normalize) ;
-static void d2flac8_clip_array (const double *src, FLAC__int32 *dest, int count, int normalize) ;
-static void d2flac16_clip_array (const double *src, FLAC__int32 *dest, int count, int normalize) ;
-static void d2flac24_clip_array (const double *src, FLAC__int32 *dest, int count, int normalize) ;
-
-static int flac_command (SF_PRIVATE *psf, int command, void *data, int datasize) ;
-
-/* Decoder Callbacks */
-#ifdef LEGACY_FLAC
-static FLAC__SeekableStreamDecoderReadStatus sf_flac_read_callback (const FLAC__SeekableStreamDecoder *decoder, FLAC__byte buffer [], unsigned *bytes, void *client_data) ;
-static FLAC__SeekableStreamDecoderSeekStatus sf_flac_seek_callback (const FLAC__SeekableStreamDecoder *decoder, FLAC__uint64 absolute_byte_offset, void *client_data) ;
-static FLAC__SeekableStreamDecoderTellStatus sf_flac_tell_callback (const FLAC__SeekableStreamDecoder *decoder, FLAC__uint64 *absolute_byte_offset, void *client_data) ;
-static FLAC__SeekableStreamDecoderLengthStatus sf_flac_length_callback (const FLAC__SeekableStreamDecoder *decoder, FLAC__uint64 *stream_length, void *client_data) ;
-static FLAC__bool sf_flac_eof_callback (const FLAC__SeekableStreamDecoder *decoder, void *client_data) ;
-static FLAC__StreamDecoderWriteStatus sf_flac_write_callback (const FLAC__SeekableStreamDecoder *decoder, const FLAC__Frame *frame, const FLAC__int32 * const buffer [], void *client_data) ;
-static void sf_flac_meta_callback (const FLAC__SeekableStreamDecoder *decoder, const FLAC__StreamMetadata *metadata, void *client_data) ;
-static void sf_flac_error_callback (const FLAC__SeekableStreamDecoder *decoder, FLAC__StreamDecoderErrorStatus status, void *client_data) ;
-#else
-static FLAC__StreamDecoderReadStatus sf_flac_read_callback (const FLAC__StreamDecoder *decoder, FLAC__byte buffer [], size_t *bytes, void *client_data) ;
-static FLAC__StreamDecoderSeekStatus sf_flac_seek_callback (const FLAC__StreamDecoder *decoder, FLAC__uint64 absolute_byte_offset, void *client_data) ;
-static FLAC__StreamDecoderTellStatus sf_flac_tell_callback (const FLAC__StreamDecoder *decoder, FLAC__uint64 *absolute_byte_offset, void *client_data) ;
-static FLAC__StreamDecoderLengthStatus sf_flac_length_callback (const FLAC__StreamDecoder *decoder, FLAC__uint64 *stream_length, void *client_data) ;
-static FLAC__bool sf_flac_eof_callback (const FLAC__StreamDecoder *decoder, void *client_data) ;
-static FLAC__StreamDecoderWriteStatus sf_flac_write_callback (const FLAC__StreamDecoder *decoder, const FLAC__Frame *frame, const FLAC__int32 * const buffer [], void *client_data) ;
-static void sf_flac_meta_callback (const FLAC__StreamDecoder *decoder, const FLAC__StreamMetadata *metadata, void *client_data) ;
-static void sf_flac_error_callback (const FLAC__StreamDecoder *decoder, FLAC__StreamDecoderErrorStatus status, void *client_data) ;
-#endif
-
-/* Encoder Callbacks */
-#ifdef LEGACY_FLAC
-static FLAC__SeekableStreamEncoderSeekStatus sf_flac_enc_seek_callback (const FLAC__SeekableStreamEncoder *encoder, FLAC__uint64 absolute_byte_offset, void *client_data) ;
-#ifdef HAVE_FLAC_1_1_1
-static FLAC__SeekableStreamEncoderTellStatus sf_flac_enc_tell_callback (const FLAC__SeekableStreamEncoder *encoder, FLAC__uint64 *absolute_byte_offset, void *client_data) ;
-#endif
-static FLAC__StreamEncoderWriteStatus sf_flac_enc_write_callback (const FLAC__SeekableStreamEncoder *encoder, const FLAC__byte buffer [], unsigned bytes, unsigned samples, unsigned current_frame, void *client_data) ;
-#else
-static FLAC__StreamEncoderSeekStatus sf_flac_enc_seek_callback (const FLAC__StreamEncoder *encoder, FLAC__uint64 absolute_byte_offset, void *client_data) ;
-static FLAC__StreamEncoderTellStatus sf_flac_enc_tell_callback (const FLAC__StreamEncoder *encoder, FLAC__uint64 *absolute_byte_offset, void *client_data) ;
-static FLAC__StreamEncoderWriteStatus sf_flac_enc_write_callback (const FLAC__StreamEncoder *encoder, const FLAC__byte buffer [], size_t bytes, unsigned samples, unsigned current_frame, void *client_data) ;
-#endif
-
-static const int legal_sample_rates [] =
-{ 8000, 16000, 22050, 24000, 32000, 44100, 48000, 96000
-} ;
-
-static void
-s2flac8_array (const short *src, FLAC__int32 *dest, int count)
-{ while (--count >= 0)
- dest [count] = src [count] >> 8 ;
-} /* s2flac8_array */
-
-static void
-s2flac16_array (const short *src, FLAC__int32 *dest, int count)
-{ while (--count >= 0)
- dest [count] = src [count] ;
-} /* s2flac16_array */
-
-static void
-s2flac24_array (const short *src, FLAC__int32 *dest, int count)
-{ while (--count >= 0)
- dest [count] = src [count] << 8 ;
-} /* s2flac24_array */
-
-static void
-i2flac8_array (const int *src, FLAC__int32 *dest, int count)
-{ while (--count >= 0)
- dest [count] = src [count] >> 24 ;
-} /* i2flac8_array */
-
-static void
-i2flac16_array (const int *src, FLAC__int32 *dest, int count)
-{
- while (--count >= 0)
- dest [count] = src [count] >> 16 ;
-} /* i2flac16_array */
-
-static void
-i2flac24_array (const int *src, FLAC__int32 *dest, int count)
-{ while (--count >= 0)
- dest [count] = src [count] >> 8 ;
-} /* i2flac24_array */
-
-static sf_count_t
-flac_buffer_copy (SF_PRIVATE *psf)
-{ FLAC_PRIVATE* pflac = (FLAC_PRIVATE*) psf->fdata ;
- const FLAC__Frame *frame = pflac->frame ;
- const FLAC__int32* const *buffer = pflac->wbuffer ;
- unsigned i = 0, j, offset ;
-
- /*
- ** frame->header.blocksize is variable and we're using a constant blocksize
- ** of FLAC__MAX_BLOCK_SIZE.
- ** Check our assumptions here.
- */
- if (frame->header.blocksize > FLAC__MAX_BLOCK_SIZE)
- { psf_log_printf (psf, "Ooops : frame->header.blocksize (%d) > FLAC__MAX_BLOCK_SIZE (%d)\n", __func__, __LINE__, frame->header.blocksize, FLAC__MAX_BLOCK_SIZE) ;
- psf->error = SFE_INTERNAL ;
- return 0 ;
- }
-
- if (pflac->ptr == NULL)
- { /*
- ** Not sure why this code is here and not elsewhere.
- ** Removing it causes valgrind errors.
- */
- pflac->bufferbackup = SF_TRUE ;
- for (i = 0 ; i < frame->header.channels ; i++)
- { if (pflac->rbuffer [i] == NULL)
- pflac->rbuffer [i] = calloc (FLAC__MAX_BLOCK_SIZE, sizeof (FLAC__int32)) ;
- memcpy (pflac->rbuffer [i], buffer [i], frame->header.blocksize * sizeof (FLAC__int32)) ;
- } ;
- pflac->wbuffer = (const FLAC__int32* const*) pflac->rbuffer ;
-
- return 0 ;
- } ;
-
- switch (pflac->pcmtype)
- { case PFLAC_PCM_SHORT :
- { short *retpcm = ((short*) pflac->ptr) ;
- int shift = 16 - frame->header.bits_per_sample ;
- if (shift < 0)
- { shift = abs (shift) ;
- for (i = 0 ; i < frame->header.blocksize && pflac->remain > 0 ; i++)
- { offset = pflac->pos + i * frame->header.channels ;
- for (j = 0 ; j < frame->header.channels ; j++)
- retpcm [offset + j] = buffer [j][pflac->bufferpos] >> shift ;
- pflac->remain -= frame->header.channels ;
- pflac->bufferpos++ ;
- }
- }
- else
- { for (i = 0 ; i < frame->header.blocksize && pflac->remain > 0 ; i++)
- { offset = pflac->pos + i * frame->header.channels ;
-
- if (pflac->bufferpos >= frame->header.blocksize)
- break ;
-
- for (j = 0 ; j < frame->header.channels ; j++)
- retpcm [offset + j] = (buffer [j][pflac->bufferpos]) << shift ;
-
- pflac->remain -= frame->header.channels ;
- pflac->bufferpos++ ;
- } ;
- } ;
- } ;
- break ;
-
- case PFLAC_PCM_INT :
- { int *retpcm = ((int*) pflac->ptr) ;
- int shift = 32 - frame->header.bits_per_sample ;
- for (i = 0 ; i < frame->header.blocksize && pflac->remain > 0 ; i++)
- { offset = pflac->pos + i * frame->header.channels ;
-
- if (pflac->bufferpos >= frame->header.blocksize)
- break ;
-
- for (j = 0 ; j < frame->header.channels ; j++)
- retpcm [offset + j] = buffer [j][pflac->bufferpos] << shift ;
- pflac->remain -= frame->header.channels ;
- pflac->bufferpos++ ;
- } ;
- } ;
- break ;
-
- case PFLAC_PCM_FLOAT :
- { float *retpcm = ((float*) pflac->ptr) ;
- float norm = (psf->norm_float == SF_TRUE) ? 1.0 / (1 << (frame->header.bits_per_sample - 1)) : 1.0 ;
-
- for (i = 0 ; i < frame->header.blocksize && pflac->remain > 0 ; i++)
- { offset = pflac->pos + i * frame->header.channels ;
-
- if (pflac->bufferpos >= frame->header.blocksize)
- break ;
-
- for (j = 0 ; j < frame->header.channels ; j++)
- retpcm [offset + j] = buffer [j][pflac->bufferpos] * norm ;
- pflac->remain -= frame->header.channels ;
- pflac->bufferpos++ ;
- } ;
- } ;
- break ;
-
- case PFLAC_PCM_DOUBLE :
- { double *retpcm = ((double*) pflac->ptr) ;
- double norm = (psf->norm_double == SF_TRUE) ? 1.0 / (1 << (frame->header.bits_per_sample - 1)) : 1.0 ;
-
- for (i = 0 ; i < frame->header.blocksize && pflac->remain > 0 ; i++)
- { offset = pflac->pos + i * frame->header.channels ;
-
- if (pflac->bufferpos >= frame->header.blocksize)
- break ;
-
- for (j = 0 ; j < frame->header.channels ; j++)
- retpcm [offset + j] = buffer [j][pflac->bufferpos] * norm ;
- pflac->remain -= frame->header.channels ;
- pflac->bufferpos++ ;
- } ;
- } ;
- break ;
-
- default :
- return 0 ;
- } ;
-
- offset = i * frame->header.channels ;
- pflac->pos += i * frame->header.channels ;
-
- return offset ;
-} /* flac_buffer_copy */
-
-
-#ifdef LEGACY_FLAC
-static FLAC__SeekableStreamDecoderReadStatus
-sf_flac_read_callback (const FLAC__SeekableStreamDecoder * UNUSED (decoder), FLAC__byte buffer [], unsigned *bytes, void *client_data)
-#else
-static FLAC__StreamDecoderReadStatus
-sf_flac_read_callback (const FLAC__StreamDecoder * UNUSED (decoder), FLAC__byte buffer [], size_t *bytes, void *client_data)
-#endif
-{ SF_PRIVATE *psf = (SF_PRIVATE*) client_data ;
-
- *bytes = psf_fread (buffer, 1, *bytes, psf) ;
- if (*bytes > 0 && psf->error == 0)
-#ifdef LEGACY_FLAC
- return FLAC__SEEKABLE_STREAM_DECODER_READ_STATUS_OK ;
-
- return FLAC__SEEKABLE_STREAM_DECODER_READ_STATUS_ERROR ;
-#else
- return FLAC__STREAM_DECODER_READ_STATUS_CONTINUE ;
-
- return FLAC__STREAM_DECODER_READ_STATUS_ABORT ;
-#endif
-} /* sf_flac_read_callback */
-
-#ifdef LEGACY_FLAC
-static FLAC__SeekableStreamDecoderSeekStatus
-sf_flac_seek_callback (const FLAC__SeekableStreamDecoder * UNUSED (decoder), FLAC__uint64 absolute_byte_offset, void *client_data)
-#else
-static FLAC__StreamDecoderSeekStatus
-sf_flac_seek_callback (const FLAC__StreamDecoder * UNUSED (decoder), FLAC__uint64 absolute_byte_offset, void *client_data)
-#endif
-{ SF_PRIVATE *psf = (SF_PRIVATE*) client_data ;
-
- psf_fseek (psf, absolute_byte_offset, SEEK_SET) ;
- if (psf->error)
-#ifdef LEGACY_FLAC
- return FLAC__SEEKABLE_STREAM_DECODER_SEEK_STATUS_ERROR ;
-
- return FLAC__SEEKABLE_STREAM_DECODER_SEEK_STATUS_OK ;
-#else
- return FLAC__STREAM_DECODER_SEEK_STATUS_ERROR ;
-
- return FLAC__STREAM_DECODER_SEEK_STATUS_OK ;
-#endif
-} /* sf_flac_seek_callback */
-
-#ifdef LEGACY_FLAC
-static FLAC__SeekableStreamDecoderTellStatus
-sf_flac_tell_callback (const FLAC__SeekableStreamDecoder * UNUSED (decoder), FLAC__uint64 *absolute_byte_offset, void *client_data)
-#else
-static FLAC__StreamDecoderTellStatus
-sf_flac_tell_callback (const FLAC__StreamDecoder * UNUSED (decoder), FLAC__uint64 *absolute_byte_offset, void *client_data)
-#endif
-{ SF_PRIVATE *psf = (SF_PRIVATE*) client_data ;
-
- *absolute_byte_offset = psf_ftell (psf) ;
- if (psf->error)
-#ifdef LEGACY_FLAC
- return FLAC__SEEKABLE_STREAM_DECODER_TELL_STATUS_ERROR ;
-
- return FLAC__SEEKABLE_STREAM_DECODER_TELL_STATUS_OK ;
-#else
- return FLAC__STREAM_DECODER_TELL_STATUS_ERROR ;
-
- return FLAC__STREAM_DECODER_TELL_STATUS_OK ;
-#endif
-} /* sf_flac_tell_callback */
-
-#ifdef LEGACY_FLAC
-static FLAC__SeekableStreamDecoderLengthStatus
-sf_flac_length_callback (const FLAC__SeekableStreamDecoder * UNUSED (decoder), FLAC__uint64 *stream_length, void *client_data)
-#else
-static FLAC__StreamDecoderLengthStatus
-sf_flac_length_callback (const FLAC__StreamDecoder * UNUSED (decoder), FLAC__uint64 *stream_length, void *client_data)
-#endif
-{ SF_PRIVATE *psf = (SF_PRIVATE*) client_data ;
-
- if ((*stream_length = psf->filelength) == 0)
-#ifdef LEGACY_FLAC
- return FLAC__SEEKABLE_STREAM_DECODER_LENGTH_STATUS_ERROR ;
-
- return FLAC__SEEKABLE_STREAM_DECODER_LENGTH_STATUS_OK ;
-#else
- return FLAC__STREAM_DECODER_LENGTH_STATUS_ERROR ;
-
- return FLAC__STREAM_DECODER_LENGTH_STATUS_OK ;
-#endif
-} /* sf_flac_length_callback */
-
-static FLAC__bool
-#ifdef LEGACY_FLAC
-sf_flac_eof_callback (const FLAC__SeekableStreamDecoder *UNUSED (decoder), void *client_data)
-#else
-sf_flac_eof_callback (const FLAC__StreamDecoder *UNUSED (decoder), void *client_data)
-#endif
-{ SF_PRIVATE *psf = (SF_PRIVATE*) client_data ;
-
- if (psf_ftell (psf) == psf->filelength)
- return SF_TRUE ;
-
- return SF_FALSE ;
-} /* sf_flac_eof_callback */
-
-static FLAC__StreamDecoderWriteStatus
-#ifdef LEGACY_FLAC
-sf_flac_write_callback (const FLAC__SeekableStreamDecoder * UNUSED (decoder), const FLAC__Frame *frame, const FLAC__int32 * const buffer [], void *client_data)
-#else
-sf_flac_write_callback (const FLAC__StreamDecoder * UNUSED (decoder), const FLAC__Frame *frame, const FLAC__int32 * const buffer [], void *client_data)
-#endif
-{ SF_PRIVATE *psf = (SF_PRIVATE*) client_data ;
- FLAC_PRIVATE* pflac = (FLAC_PRIVATE*) psf->fdata ;
-
- pflac->frame = frame ;
- pflac->bufferpos = 0 ;
-
- pflac->bufferbackup = SF_FALSE ;
- pflac->wbuffer = buffer ;
-
- flac_buffer_copy (psf) ;
-
- return FLAC__STREAM_DECODER_WRITE_STATUS_CONTINUE ;
-} /* sf_flac_write_callback */
-
-static void
-#ifdef LEGACY_FLAC
-sf_flac_meta_callback (const FLAC__SeekableStreamDecoder * UNUSED (decoder), const FLAC__StreamMetadata *metadata, void *client_data)
-#else
-sf_flac_meta_callback (const FLAC__StreamDecoder * UNUSED (decoder), const FLAC__StreamMetadata *metadata, void *client_data)
-#endif
-{ SF_PRIVATE *psf = (SF_PRIVATE*) client_data ;
-
- switch (metadata->type)
- { case FLAC__METADATA_TYPE_STREAMINFO :
- psf->sf.channels = metadata->data.stream_info.channels ;
- psf->sf.samplerate = metadata->data.stream_info.sample_rate ;
- psf->sf.frames = metadata->data.stream_info.total_samples ;
-
- switch (metadata->data.stream_info.bits_per_sample)
- { case 8 :
- psf->sf.format |= SF_FORMAT_PCM_S8 ;
- break ;
- case 16 :
- psf->sf.format |= SF_FORMAT_PCM_16 ;
- break ;
- case 24 :
- psf->sf.format |= SF_FORMAT_PCM_24 ;
- break ;
- default :
- psf_log_printf (psf, "sf_flac_meta_callback : bits_per_sample %d not yet implemented.\n", metadata->data.stream_info.bits_per_sample) ;
- break ;
- } ;
- break ;
-
- default :
- psf_log_printf (psf, "sf_flac_meta_callback : metadata-type %d not yet implemented.\n", metadata->type) ;
- break ;
- } ;
-
- return ;
-} /* sf_flac_meta_callback */
-
-static void
-#ifdef LEGACY_FLAC
-sf_flac_error_callback (const FLAC__SeekableStreamDecoder * UNUSED (decoder), FLAC__StreamDecoderErrorStatus status, void *client_data)
-#else
-sf_flac_error_callback (const FLAC__StreamDecoder * UNUSED (decoder), FLAC__StreamDecoderErrorStatus status, void *client_data)
-#endif
-{ SF_PRIVATE *psf = (SF_PRIVATE*) client_data ;
-
- psf_log_printf (psf, "ERROR : %s\n", FLAC__StreamDecoderErrorStatusString [status]) ;
-
- switch (status)
- { case FLAC__STREAM_DECODER_ERROR_STATUS_LOST_SYNC :
- psf->error = SFE_FLAC_LOST_SYNC ;
- break ;
- case FLAC__STREAM_DECODER_ERROR_STATUS_BAD_HEADER :
- psf->error = SFE_FLAC_BAD_HEADER ;
- break ;
- default :
- psf->error = SFE_FLAC_UNKOWN_ERROR ;
- break ;
- } ;
-
- return ;
-} /* sf_flac_error_callback */
-
-#ifdef LEGACY_FLAC
-static FLAC__SeekableStreamEncoderSeekStatus
-sf_flac_enc_seek_callback (const FLAC__SeekableStreamEncoder * UNUSED (encoder), FLAC__uint64 absolute_byte_offset, void *client_data)
-#else
-static FLAC__StreamEncoderSeekStatus
-sf_flac_enc_seek_callback (const FLAC__StreamEncoder * UNUSED (encoder), FLAC__uint64 absolute_byte_offset, void *client_data)
-#endif
-{ SF_PRIVATE *psf = (SF_PRIVATE*) client_data ;
-
- psf_fseek (psf, absolute_byte_offset, SEEK_SET) ;
- if (psf->error)
-#ifdef LEGACY_FLAC
- return FLAC__SEEKABLE_STREAM_ENCODER_SEEK_STATUS_ERROR ;
-
- return FLAC__SEEKABLE_STREAM_ENCODER_SEEK_STATUS_OK ;
-#else
- return FLAC__STREAM_ENCODER_SEEK_STATUS_ERROR ;
-
- return FLAC__STREAM_ENCODER_SEEK_STATUS_OK ;
-#endif
-} /* sf_flac_enc_seek_callback */
-
-#ifdef LEGACY_FLAC
-#ifdef HAVE_FLAC_1_1_1
-static FLAC__SeekableStreamEncoderTellStatus
-sf_flac_enc_tell_callback (const FLAC__SeekableStreamEncoder *UNUSED (encoder), FLAC__uint64 *absolute_byte_offset, void *client_data)
-{ SF_PRIVATE *psf = (SF_PRIVATE*) client_data ;
-
- *absolute_byte_offset = psf_ftell (psf) ;
- if (psf->error)
- return FLAC__SEEKABLE_STREAM_ENCODER_TELL_STATUS_ERROR ;
-
- return FLAC__SEEKABLE_STREAM_ENCODER_TELL_STATUS_OK ;
-} /* sf_flac_enc_tell_callback */
-#endif
-#else
-static FLAC__StreamEncoderTellStatus
-sf_flac_enc_tell_callback (const FLAC__StreamEncoder *UNUSED (encoder), FLAC__uint64 *absolute_byte_offset, void *client_data)
-{ SF_PRIVATE *psf = (SF_PRIVATE*) client_data ;
-
- *absolute_byte_offset = psf_ftell (psf) ;
- if (psf->error)
- return FLAC__STREAM_ENCODER_TELL_STATUS_ERROR ;
-
- return FLAC__STREAM_ENCODER_TELL_STATUS_OK ;
-} /* sf_flac_enc_tell_callback */
-#endif
-
-static FLAC__StreamEncoderWriteStatus
-#ifdef LEGACY_FLAC
-sf_flac_enc_write_callback (const FLAC__SeekableStreamEncoder * UNUSED (encoder), const FLAC__byte buffer [], unsigned bytes, unsigned UNUSED (samples), unsigned UNUSED (current_frame), void *client_data)
-#else
-sf_flac_enc_write_callback (const FLAC__StreamEncoder * UNUSED (encoder), const FLAC__byte buffer [], size_t bytes, unsigned UNUSED (samples), unsigned UNUSED (current_frame), void *client_data)
-#endif
-{ SF_PRIVATE *psf = (SF_PRIVATE*) client_data ;
-
- if (psf_fwrite (buffer, 1, bytes, psf) == bytes && psf->error == 0)
- return FLAC__STREAM_ENCODER_WRITE_STATUS_OK ;
-
- return FLAC__STREAM_ENCODER_WRITE_STATUS_FATAL_ERROR ;
-} /* sf_flac_enc_write_callback */
-
-/*------------------------------------------------------------------------------
-** Public function.
-*/
-
-int
-flac_open (SF_PRIVATE *psf)
-{ int subformat ;
- int error = 0 ;
-
- FLAC_PRIVATE* pflac = calloc (1, sizeof (FLAC_PRIVATE)) ;
- psf->fdata = pflac ;
-
- if (psf->mode == SFM_RDWR)
- return SFE_UNIMPLEMENTED ;
-
- if (psf->mode == SFM_READ)
- { if ((error = flac_read_header (psf)))
- return error ;
- } ;
-
- subformat = psf->sf.format & SF_FORMAT_SUBMASK ;
-
- if (psf->mode == SFM_WRITE)
- { if ((psf->sf.format & SF_FORMAT_TYPEMASK) != SF_FORMAT_FLAC)
- return SFE_BAD_OPEN_FORMAT ;
-
- psf->endian = SF_ENDIAN_BIG ;
-
- if ((error = flac_enc_init (psf)))
- return error ;
- } ;
-
- psf->datalength = psf->filelength ;
- psf->dataoffset = 0 ;
- psf->blockwidth = 0 ;
- psf->bytewidth = 1 ;
-
- psf->container_close = flac_close ;
- psf->seek = flac_seek ;
- psf->command = flac_command ;
-
- psf->blockwidth = psf->bytewidth * psf->sf.channels ;
-
- switch (subformat)
- { case SF_FORMAT_PCM_S8 : /* 8-bit FLAC. */
- case SF_FORMAT_PCM_16 : /* 16-bit FLAC. */
- case SF_FORMAT_PCM_24 : /* 24-bit FLAC. */
- error = flac_init (psf) ;
- break ;
-
- default : return SFE_UNIMPLEMENTED ;
- } ;
-
- return error ;
-} /* flac_open */
-
-/*------------------------------------------------------------------------------
-*/
-
-static int
-flac_close (SF_PRIVATE *psf)
-{ FLAC_PRIVATE* pflac ;
- int k ;
-
- if ((pflac = (FLAC_PRIVATE*) psf->fdata) == NULL)
- return 0 ;
-
- if (psf->mode == SFM_WRITE)
- {
-#ifdef LEGACY_FLAC
- FLAC__seekable_stream_encoder_finish (pflac->fse) ;
- FLAC__seekable_stream_encoder_delete (pflac->fse) ;
-#else
- FLAC__stream_encoder_finish (pflac->fse) ;
- FLAC__stream_encoder_delete (pflac->fse) ;
-#endif
- if (pflac->encbuffer)
- free (pflac->encbuffer) ;
- } ;
-
- if (psf->mode == SFM_READ)
- {
-#ifdef LEGACY_FLAC
- FLAC__seekable_stream_decoder_finish (pflac->fsd) ;
- FLAC__seekable_stream_decoder_delete (pflac->fsd) ;
-#else
- FLAC__stream_decoder_finish (pflac->fsd) ;
- FLAC__stream_decoder_delete (pflac->fsd) ;
-#endif
- } ;
-
- for (k = 0 ; k < ARRAY_LEN (pflac->rbuffer) ; k++)
- free (pflac->rbuffer [k]) ;
-
- free (pflac) ;
- psf->fdata = NULL ;
-
- return 0 ;
-} /* flac_close */
-
-static int
-flac_enc_init (SF_PRIVATE *psf)
-{ FLAC_PRIVATE* pflac = (FLAC_PRIVATE*) psf->fdata ;
- unsigned bps ;
- int k, found ;
-
- found = 0 ;
- for (k = 0 ; k < ARRAY_LEN (legal_sample_rates) ; k++)
- if (psf->sf.samplerate == legal_sample_rates [k])
- { found = 1 ;
- break ;
- } ;
-
- if (found == 0)
- return SFE_FLAC_BAD_SAMPLE_RATE ;
-
- psf_fseek (psf, 0, SEEK_SET) ;
-
- switch (psf->sf.format & SF_FORMAT_SUBMASK)
- { case SF_FORMAT_PCM_S8 :
- bps = 8 ;
- break ;
- case SF_FORMAT_PCM_16 :
- bps = 16 ;
- break ;
- case SF_FORMAT_PCM_24 :
- bps = 24 ;
- break ;
-
- default :
- bps = 0 ;
- break ;
- } ;
-
-#ifdef LEGACY_FLAC
- if ((pflac->fse = FLAC__seekable_stream_encoder_new ()) == NULL)
- return SFE_FLAC_NEW_DECODER ;
- FLAC__seekable_stream_encoder_set_write_callback (pflac->fse, sf_flac_enc_write_callback) ;
- FLAC__seekable_stream_encoder_set_seek_callback (pflac->fse, sf_flac_enc_seek_callback) ;
-
-#ifdef HAVE_FLAC_1_1_1
- FLAC__seekable_stream_encoder_set_tell_callback (pflac->fse, sf_flac_enc_tell_callback) ;
-#endif
- FLAC__seekable_stream_encoder_set_client_data (pflac->fse, psf) ;
- FLAC__seekable_stream_encoder_set_channels (pflac->fse, psf->sf.channels) ;
- FLAC__seekable_stream_encoder_set_sample_rate (pflac->fse, psf->sf.samplerate) ;
- FLAC__seekable_stream_encoder_set_bits_per_sample (pflac->fse, bps) ;
-
- if ((bps = FLAC__seekable_stream_encoder_init (pflac->fse)) != FLAC__SEEKABLE_STREAM_DECODER_OK)
- { psf_log_printf (psf, "Error : FLAC encoder init returned error : %s\n", FLAC__seekable_stream_encoder_get_resolved_state_string (pflac->fse)) ;
- return SFE_FLAC_INIT_DECODER ;
- } ;
-#else
- if ((pflac->fse = FLAC__stream_encoder_new ()) == NULL)
- return SFE_FLAC_NEW_DECODER ;
- FLAC__stream_encoder_set_channels (pflac->fse, psf->sf.channels) ;
- FLAC__stream_encoder_set_sample_rate (pflac->fse, psf->sf.samplerate) ;
- FLAC__stream_encoder_set_bits_per_sample (pflac->fse, bps) ;
-
- if ((bps = FLAC__stream_encoder_init_stream (pflac->fse, sf_flac_enc_write_callback, sf_flac_enc_seek_callback, sf_flac_enc_tell_callback, NULL, psf)) != FLAC__STREAM_DECODER_INIT_STATUS_OK)
- { psf_log_printf (psf, "Error : FLAC encoder init returned error : %s\n", FLAC__StreamEncoderInitStatusString[bps]) ;
- return SFE_FLAC_INIT_DECODER ;
- } ;
-#endif
-
- if (psf->error == 0)
- psf->dataoffset = psf_ftell (psf) ;
- pflac->encbuffer = calloc (ENC_BUFFER_SIZE, sizeof (FLAC__int32)) ;
-
- return psf->error ;
-} /* flac_enc_init */
-
-static int
-flac_read_header (SF_PRIVATE *psf)
-{ FLAC_PRIVATE* pflac = (FLAC_PRIVATE*) psf->fdata ;
-
- psf_fseek (psf, 0, SEEK_SET) ;
-#ifdef LEGACY_FLAC
- if ((pflac->fsd = FLAC__seekable_stream_decoder_new ()) == NULL)
- return SFE_FLAC_NEW_DECODER ;
-
- FLAC__seekable_stream_decoder_set_read_callback (pflac->fsd, sf_flac_read_callback) ;
- FLAC__seekable_stream_decoder_set_seek_callback (pflac->fsd, sf_flac_seek_callback) ;
- FLAC__seekable_stream_decoder_set_tell_callback (pflac->fsd, sf_flac_tell_callback) ;
- FLAC__seekable_stream_decoder_set_length_callback (pflac->fsd, sf_flac_length_callback) ;
- FLAC__seekable_stream_decoder_set_eof_callback (pflac->fsd, sf_flac_eof_callback) ;
- FLAC__seekable_stream_decoder_set_write_callback (pflac->fsd, sf_flac_write_callback) ;
- FLAC__seekable_stream_decoder_set_metadata_callback (pflac->fsd, sf_flac_meta_callback) ;
- FLAC__seekable_stream_decoder_set_error_callback (pflac->fsd, sf_flac_error_callback) ;
- FLAC__seekable_stream_decoder_set_client_data (pflac->fsd, psf) ;
-
- if (FLAC__seekable_stream_decoder_init (pflac->fsd) != FLAC__SEEKABLE_STREAM_DECODER_OK)
- return SFE_FLAC_INIT_DECODER ;
-
- FLAC__seekable_stream_decoder_process_until_end_of_metadata (pflac->fsd) ;
-#else
- if ((pflac->fsd = FLAC__stream_decoder_new ()) == NULL)
- return SFE_FLAC_NEW_DECODER ;
-
- if (FLAC__stream_decoder_init_stream (pflac->fsd, sf_flac_read_callback, sf_flac_seek_callback, sf_flac_tell_callback, sf_flac_length_callback, sf_flac_eof_callback, sf_flac_write_callback, sf_flac_meta_callback, sf_flac_error_callback, psf) != FLAC__STREAM_DECODER_INIT_STATUS_OK)
- return SFE_FLAC_INIT_DECODER ;
-
- FLAC__stream_decoder_process_until_end_of_metadata (pflac->fsd) ;
-#endif
- if (psf->error == 0)
- { FLAC__uint64 position ;
-#ifdef LEGACY_FLAC
- FLAC__seekable_stream_decoder_get_decode_position (pflac->fsd, &position) ;
-#else
- FLAC__stream_decoder_get_decode_position (pflac->fsd, &position) ;
-#endif
- psf->dataoffset = position ;
- } ;
-
- return psf->error ;
-} /* flac_read_header */
-
-static int
-flac_command (SF_PRIVATE *psf, int command, void *data, int datasize)
-{
- /* Avoid compiler warnings. */
- psf = psf ;
- data = data ;
- datasize = datasize ;
-
- switch (command)
- { default : break ;
- } ;
-
- return 0 ;
-} /* flac_command */
-
-int
-flac_init (SF_PRIVATE *psf)
-{
- if (psf->mode == SFM_RDWR)
- return SFE_BAD_MODE_RW ;
-
- if (psf->mode == SFM_READ)
- { psf->read_short = flac_read_flac2s ;
- psf->read_int = flac_read_flac2i ;
- psf->read_float = flac_read_flac2f ;
- psf->read_double = flac_read_flac2d ;
- } ;
-
- if (psf->mode == SFM_WRITE)
- { psf->write_short = flac_write_s2flac ;
- psf->write_int = flac_write_i2flac ;
- psf->write_float = flac_write_f2flac ;
- psf->write_double = flac_write_d2flac ;
- } ;
-
- psf->bytewidth = 1 ;
- psf->blockwidth = psf->sf.channels ;
-
- if (psf->filelength > psf->dataoffset)
- psf->datalength = (psf->dataend) ? psf->dataend - psf->dataoffset : psf->filelength - psf->dataoffset ;
- else
- psf->datalength = 0 ;
-
- return 0 ;
-} /* flac_init */
-
-static unsigned
-flac_read_loop (SF_PRIVATE *psf, unsigned len)
-{ FLAC_PRIVATE* pflac = (FLAC_PRIVATE*) psf->fdata ;
-
- pflac->pos = 0 ;
- pflac->len = len ;
- pflac->remain = len ;
- if (pflac->frame != NULL && pflac->bufferpos < pflac->frame->header.blocksize)
- flac_buffer_copy (psf) ;
-
- while (pflac->pos < pflac->len)
- {
-#ifdef LEGACY_FLAC
- if (FLAC__seekable_stream_decoder_process_single (pflac->fsd) == 0)
- break ;
- if (FLAC__seekable_stream_decoder_get_state (pflac->fsd) != FLAC__SEEKABLE_STREAM_DECODER_OK)
- break ;
-#else
- if (FLAC__stream_decoder_process_single (pflac->fsd) == 0)
- break ;
- if (FLAC__stream_decoder_get_state (pflac->fsd) >= FLAC__STREAM_DECODER_END_OF_STREAM)
- break ;
-#endif
- } ;
-
- pflac->ptr = NULL ;
-
- return pflac->pos ;
-} /* flac_read_loop */
-
-static sf_count_t
-flac_read_flac2s (SF_PRIVATE *psf, short *ptr, sf_count_t len)
-{ FLAC_PRIVATE* pflac = (FLAC_PRIVATE*) psf->fdata ;
- sf_count_t total = 0, current ;
- unsigned readlen ;
-
- pflac->pcmtype = PFLAC_PCM_SHORT ;
-
- while (total < len)
- { pflac->ptr = ptr + total ;
- readlen = (len - total > 0x1000000) ? 0x1000000 : (unsigned) (len - total) ;
- current = flac_read_loop (psf, readlen) ;
- if (current == 0)
- break ;
- total += current ;
- } ;
-
- return total ;
-} /* flac_read_flac2s */
-
-static sf_count_t
-flac_read_flac2i (SF_PRIVATE *psf, int *ptr, sf_count_t len)
-{ FLAC_PRIVATE* pflac = (FLAC_PRIVATE*) psf->fdata ;
- sf_count_t total = 0, current ;
- unsigned readlen ;
-
- pflac->pcmtype = PFLAC_PCM_INT ;
-
- while (total < len)
- { pflac->ptr = ptr + total ;
- readlen = (len - total > 0x1000000) ? 0x1000000 : (unsigned) (len - total) ;
- current = flac_read_loop (psf, readlen) ;
- if (current == 0)
- break ;
- total += current ;
- } ;
-
- return total ;
-} /* flac_read_flac2i */
-
-static sf_count_t
-flac_read_flac2f (SF_PRIVATE *psf, float *ptr, sf_count_t len)
-{ FLAC_PRIVATE* pflac = (FLAC_PRIVATE*) psf->fdata ;
- sf_count_t total = 0, current ;
- unsigned readlen ;
-
- pflac->pcmtype = PFLAC_PCM_FLOAT ;
-
- while (total < len)
- { pflac->ptr = ptr + total ;
- readlen = (len - total > 0x1000000) ? 0x1000000 : (unsigned) (len - total) ;
- current = flac_read_loop (psf, readlen) ;
- if (current == 0)
- break ;
- total += current ;
- } ;
-
- return total ;
-} /* flac_read_flac2f */
-
-static sf_count_t
-flac_read_flac2d (SF_PRIVATE *psf, double *ptr, sf_count_t len)
-{ FLAC_PRIVATE* pflac = (FLAC_PRIVATE*) psf->fdata ;
- sf_count_t total = 0, current ;
- unsigned readlen ;
-
- pflac->pcmtype = PFLAC_PCM_DOUBLE ;
-
- while (total < len)
- { pflac->ptr = ptr + total ;
- readlen = (len - total > 0x1000000) ? 0x1000000 : (unsigned) (len - total) ;
- current = flac_read_loop (psf, readlen) ;
- if (current == 0)
- break ;
- total += current ;
- } ;
-
- return total ;
-} /* flac_read_flac2d */
-
-static sf_count_t
-flac_write_s2flac (SF_PRIVATE *psf, const short *ptr, sf_count_t len)
-{ FLAC_PRIVATE* pflac = (FLAC_PRIVATE*) psf->fdata ;
- void (*convert) (const short *, FLAC__int32 *, int) ;
- int bufferlen, writecount, thiswrite ;
- sf_count_t total = 0 ;
- FLAC__int32* buffer = pflac->encbuffer ;
-
- switch (psf->sf.format & SF_FORMAT_SUBMASK)
- { case SF_FORMAT_PCM_S8 :
- convert = s2flac8_array ;
- break ;
- case SF_FORMAT_PCM_16 :
- convert = s2flac16_array ;
- break ;
- case SF_FORMAT_PCM_24 :
- convert = s2flac24_array ;
- break ;
- default :
- return -1 ;
- } ;
-
- bufferlen = ENC_BUFFER_SIZE / (sizeof (FLAC__int32) * psf->sf.channels) ;
- bufferlen *= psf->sf.channels ;
-
- while (len > 0)
- { writecount = (len >= bufferlen) ? bufferlen : (int) len ;
- convert (ptr + total, buffer, writecount) ;
-#ifdef LEGACY_FLAC
- if (FLAC__seekable_stream_encoder_process_interleaved (pflac->fse, buffer, writecount/psf->sf.channels))
-#else
- if (FLAC__stream_encoder_process_interleaved (pflac->fse, buffer, writecount/psf->sf.channels))
-#endif
- thiswrite = writecount ;
- else
- break ;
- total += thiswrite ;
- if (thiswrite < writecount)
- break ;
-
- len -= thiswrite ;
- } ;
-
- return total ;
-} /* flac_write_s2flac */
-
-static sf_count_t
-flac_write_i2flac (SF_PRIVATE *psf, const int *ptr, sf_count_t len)
-{ FLAC_PRIVATE* pflac = (FLAC_PRIVATE*) psf->fdata ;
- void (*convert) (const int *, FLAC__int32 *, int) ;
- int bufferlen, writecount, thiswrite ;
- sf_count_t total = 0 ;
- FLAC__int32* buffer = pflac->encbuffer ;
-
- switch (psf->sf.format & SF_FORMAT_SUBMASK)
- { case SF_FORMAT_PCM_S8 :
- convert = i2flac8_array ;
- break ;
- case SF_FORMAT_PCM_16 :
- convert = i2flac16_array ;
- break ;
- case SF_FORMAT_PCM_24 :
- convert = i2flac24_array ;
- break ;
- default :
- return -1 ;
- } ;
-
- bufferlen = ENC_BUFFER_SIZE / (sizeof (FLAC__int32) * psf->sf.channels) ;
- bufferlen *= psf->sf.channels ;
-
- while (len > 0)
- { writecount = (len >= bufferlen) ? bufferlen : (int) len ;
- convert (ptr + total, buffer, writecount) ;
-#ifdef LEGACY_FLAC
- if (FLAC__seekable_stream_encoder_process_interleaved (pflac->fse, buffer, writecount/psf->sf.channels))
-#else
- if (FLAC__stream_encoder_process_interleaved (pflac->fse, buffer, writecount/psf->sf.channels))
-#endif
- thiswrite = writecount ;
- else
- break ;
- total += thiswrite ;
- if (thiswrite < writecount)
- break ;
-
- len -= thiswrite ;
- } ;
-
- return total ;
-} /* flac_write_i2flac */
-
-static sf_count_t
-flac_write_f2flac (SF_PRIVATE *psf, const float *ptr, sf_count_t len)
-{ FLAC_PRIVATE* pflac = (FLAC_PRIVATE*) psf->fdata ;
- void (*convert) (const float *, FLAC__int32 *, int, int) ;
- int bufferlen, writecount, thiswrite ;
- sf_count_t total = 0 ;
- FLAC__int32* buffer = pflac->encbuffer ;
-
- switch (psf->sf.format & SF_FORMAT_SUBMASK)
- { case SF_FORMAT_PCM_S8 :
- convert = (psf->add_clipping) ? f2flac8_clip_array : f2flac8_array ;
- break ;
- case SF_FORMAT_PCM_16 :
- convert = (psf->add_clipping) ? f2flac16_clip_array : f2flac16_array ;
- break ;
- case SF_FORMAT_PCM_24 :
- convert = (psf->add_clipping) ? f2flac24_clip_array : f2flac24_array ;
- break ;
- default :
- return -1 ;
- } ;
-
- bufferlen = ENC_BUFFER_SIZE / (sizeof (FLAC__int32) * psf->sf.channels) ;
- bufferlen *= psf->sf.channels ;
-
- while (len > 0)
- { writecount = (len >= bufferlen) ? bufferlen : (int) len ;
- convert (ptr + total, buffer, writecount, psf->norm_float) ;
-#ifdef LEGACY_FLAC
- if (FLAC__seekable_stream_encoder_process_interleaved (pflac->fse, buffer, writecount/psf->sf.channels))
-#else
- if (FLAC__stream_encoder_process_interleaved (pflac->fse, buffer, writecount/psf->sf.channels))
-#endif
- thiswrite = writecount ;
- else
- break ;
- total += thiswrite ;
- if (thiswrite < writecount)
- break ;
-
- len -= thiswrite ;
- } ;
-
- return total ;
-} /* flac_write_f2flac */
-
-static void
-f2flac8_clip_array (const float *src, FLAC__int32 *dest, int count, int normalize)
-{ float normfact, scaled_value ;
-
- normfact = normalize ? (8.0 * 0x10) : 1.0 ;
-
- while (--count >= 0)
- { scaled_value = src [count] * normfact ;
- if (CPU_CLIPS_POSITIVE == 0 && scaled_value >= (1.0 * 0x7F))
- { dest [count] = 0x7F ;
- continue ;
- } ;
- if (CPU_CLIPS_NEGATIVE == 0 && scaled_value <= (-8.0 * 0x10))
- { dest [count] = 0x80 ;
- continue ;
- } ;
- dest [count] = lrintf (scaled_value) ;
- } ;
-
- return ;
-} /* f2flac8_clip_array */
-
-static void
-f2flac16_clip_array (const float *src, FLAC__int32 *dest, int count, int normalize)
-{
- float normfact, scaled_value ;
-
- normfact = normalize ? (8.0 * 0x1000) : 1.0 ;
-
- while (--count >= 0) {
- scaled_value = src [count] * normfact ;
- if (CPU_CLIPS_POSITIVE == 0 && scaled_value >= (1.0 * 0x7FFF)) {
- dest [count] = 0x7FFF ;
- continue ;
- }
- if (CPU_CLIPS_NEGATIVE == 0 && scaled_value <= (-8.0 * 0x1000)) {
- dest [count] = 0x8000 ;
- continue ;
- }
- dest [count] = lrintf (scaled_value) ;
- }
-} /* f2flac16_clip_array */
-
-static void
-f2flac24_clip_array (const float *src, FLAC__int32 *dest, int count, int normalize)
-{ float normfact, scaled_value ;
-
- normfact = normalize ? (8.0 * 0x100000) : 1.0 ;
-
- while (--count >= 0)
- { scaled_value = src [count] * normfact ;
- if (CPU_CLIPS_POSITIVE == 0 && scaled_value >= (1.0 * 0x7FFFFF))
- { dest [count] = 0x7FFFFF ;
- continue ;
- } ;
-
- if (CPU_CLIPS_NEGATIVE == 0 && scaled_value <= (-8.0 * 0x100000))
- { dest [count] = 0x800000 ;
- continue ;
- }
- dest [count] = lrintf (scaled_value) ;
- } ;
-
- return ;
-} /* f2flac24_clip_array */
-
-static void
-f2flac8_array (const float *src, FLAC__int32 *dest, int count, int normalize)
-{ float normfact = normalize ? (1.0 * 0x7F) : 1.0 ;
-
- while (--count >= 0)
- dest [count] = lrintf (src [count] * normfact) ;
-} /* f2flac8_array */
-
-static void
-f2flac16_array (const float *src, FLAC__int32 *dest, int count, int normalize)
-{ float normfact = normalize ? (1.0 * 0x7FFF) : 1.0 ;
-
- while (--count >= 0)
- dest [count] = lrintf (src [count] * normfact) ;
-} /* f2flac16_array */
-
-static void
-f2flac24_array (const float *src, FLAC__int32 *dest, int count, int normalize)
-{ float normfact = normalize ? (1.0 * 0x7FFFFF) : 1.0 ;
-
- while (--count >= 0)
- dest [count] = lrintf (src [count] * normfact) ;
-} /* f2flac24_array */
-
-static sf_count_t
-flac_write_d2flac (SF_PRIVATE *psf, const double *ptr, sf_count_t len)
-{ FLAC_PRIVATE* pflac = (FLAC_PRIVATE*) psf->fdata ;
- void (*convert) (const double *, FLAC__int32 *, int, int) ;
- int bufferlen, writecount, thiswrite ;
- sf_count_t total = 0 ;
- FLAC__int32* buffer = pflac->encbuffer ;
-
- switch (psf->sf.format & SF_FORMAT_SUBMASK)
- { case SF_FORMAT_PCM_S8 :
- convert = (psf->add_clipping) ? d2flac8_clip_array : d2flac8_array ;
- break ;
- case SF_FORMAT_PCM_16 :
- convert = (psf->add_clipping) ? d2flac16_clip_array : d2flac16_array ;
- break ;
- case SF_FORMAT_PCM_24 :
- convert = (psf->add_clipping) ? d2flac24_clip_array : d2flac24_array ;
- break ;
- default :
- return -1 ;
- } ;
-
- bufferlen = ENC_BUFFER_SIZE / (sizeof (FLAC__int32) * psf->sf.channels) ;
- bufferlen *= psf->sf.channels ;
-
- while (len > 0)
- { writecount = (len >= bufferlen) ? bufferlen : (int) len ;
- convert (ptr + total, buffer, writecount, psf->norm_double) ;
-#ifdef LEGACY_FLAC
- if (FLAC__seekable_stream_encoder_process_interleaved (pflac->fse, buffer, writecount/psf->sf.channels))
-#else
- if (FLAC__stream_encoder_process_interleaved (pflac->fse, buffer, writecount/psf->sf.channels))
-#endif
- thiswrite = writecount ;
- else
- break ;
- total += thiswrite ;
- if (thiswrite < writecount)
- break ;
-
- len -= thiswrite ;
- } ;
-
- return total ;
-} /* flac_write_d2flac */
-
-static void
-d2flac8_clip_array (const double *src, FLAC__int32 *dest, int count, int normalize)
-{ double normfact, scaled_value ;
-
- normfact = normalize ? (8.0 * 0x10) : 1.0 ;
-
- while (--count >= 0)
- { scaled_value = src [count] * normfact ;
- if (CPU_CLIPS_POSITIVE == 0 && scaled_value >= (1.0 * 0x7F))
- { dest [count] = 0x7F ;
- continue ;
- } ;
- if (CPU_CLIPS_NEGATIVE == 0 && scaled_value <= (-8.0 * 0x10))
- { dest [count] = 0x80 ;
- continue ;
- } ;
- dest [count] = lrint (scaled_value) ;
- } ;
-
- return ;
-} /* d2flac8_clip_array */
-
-static void
-d2flac16_clip_array (const double *src, FLAC__int32 *dest, int count, int normalize)
-{ double normfact, scaled_value ;
-
- normfact = normalize ? (8.0 * 0x1000) : 1.0 ;
-
- while (--count >= 0)
- { scaled_value = src [count] * normfact ;
- if (CPU_CLIPS_POSITIVE == 0 && scaled_value >= (1.0 * 0x7FFF))
- { dest [count] = 0x7FFF ;
- continue ;
- } ;
- if (CPU_CLIPS_NEGATIVE == 0 && scaled_value <= (-8.0 * 0x1000))
- { dest [count] = 0x8000 ;
- continue ;
- } ;
- dest [count] = lrint (scaled_value) ;
- } ;
-
- return ;
-} /* d2flac16_clip_array */
-
-static void
-d2flac24_clip_array (const double *src, FLAC__int32 *dest, int count, int normalize)
-{ double normfact, scaled_value ;
-
- normfact = normalize ? (8.0 * 0x100000) : 1.0 ;
-
- while (--count >= 0)
- { scaled_value = src [count] * normfact ;
- if (CPU_CLIPS_POSITIVE == 0 && scaled_value >= (1.0 * 0x7FFFFF))
- { dest [count] = 0x7FFFFF ;
- continue ;
- } ;
- if (CPU_CLIPS_NEGATIVE == 0 && scaled_value <= (-8.0 * 0x100000))
- { dest [count] = 0x800000 ;
- continue ;
- } ;
- dest [count] = lrint (scaled_value) ;
- } ;
-
- return ;
-} /* d2flac24_clip_array */
-
-static void
-d2flac8_array (const double *src, FLAC__int32 *dest, int count, int normalize)
-{ double normfact = normalize ? (1.0 * 0x7F) : 1.0 ;
-
- while (--count >= 0)
- dest [count] = lrint (src [count] * normfact) ;
-} /* d2flac8_array */
-
-static void
-d2flac16_array (const double *src, FLAC__int32 *dest, int count, int normalize)
-{ double normfact = normalize ? (1.0 * 0x7FFF) : 1.0 ;
-
- while (--count >= 0)
- dest [count] = lrint (src [count] * normfact) ;
-} /* d2flac16_array */
-
-static void
-d2flac24_array (const double *src, FLAC__int32 *dest, int count, int normalize)
-{ double normfact = normalize ? (1.0 * 0x7FFFFF) : 1.0 ;
-
- while (--count >= 0)
- dest [count] = lrint (src [count] * normfact) ;
-} /* d2flac24_array */
-
-static sf_count_t
-flac_seek (SF_PRIVATE *psf, int UNUSED (mode), sf_count_t offset)
-{ FLAC_PRIVATE* pflac = (FLAC_PRIVATE*) psf->fdata ;
-
- if (pflac == NULL)
- return 0 ;
-
- if (psf->dataoffset < 0)
- { psf->error = SFE_BAD_SEEK ;
- return ((sf_count_t) -1) ;
- } ;
-
- pflac->frame = NULL ;
-
- if (psf->mode == SFM_READ)
- { FLAC__uint64 position ;
-#ifdef LEGACY_FLAC
- if (FLAC__seekable_stream_decoder_seek_absolute (pflac->fsd, offset))
- { FLAC__seekable_stream_decoder_get_decode_position (pflac->fsd, &position) ;
- return offset ;
- } ;
-#else
- if (FLAC__stream_decoder_seek_absolute (pflac->fsd, offset))
- { FLAC__stream_decoder_get_decode_position (pflac->fsd, &position) ;
- return offset ;
- } ;
-#endif
-
- return ((sf_count_t) -1) ;
- } ;
-
- /* Seeking in write mode not yet supported. */
- psf->error = SFE_BAD_SEEK ;
-
- return ((sf_count_t) -1) ;
-} /* flac_seek */
-
-#endif
-
-/*
-** Do not edit or modify anything in this comment block.
-** The arch-tag line is a file identity tag for the GNU Arch
-** revision control system.
-**
-** arch-tag: 46d49617-ebff-42b4-8f66-a0e428147360
-*/
diff --git a/libs/libsndfile/src/float32.c b/libs/libsndfile/src/float32.c
deleted file mode 100644
index b376e60f7d..0000000000
--- a/libs/libsndfile/src/float32.c
+++ /dev/null
@@ -1,961 +0,0 @@
-/*
-** Copyright (C) 1999-2005 Erik de Castro Lopo <erikd@mega-nerd.com>
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU Lesser General Public License as published by
-** the Free Software Foundation; either version 2.1 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU Lesser General Public License for more details.
-**
-** You should have received a copy of the GNU Lesser General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-*/
-
-#include "sfconfig.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "sndfile.h"
-#include "sfendian.h"
-#include "common.h"
-#include "float_cast.h"
-
-#if CPU_IS_LITTLE_ENDIAN
- #define FLOAT32_READ float32_le_read
- #define FLOAT32_WRITE float32_le_write
-#elif CPU_IS_BIG_ENDIAN
- #define FLOAT32_READ float32_be_read
- #define FLOAT32_WRITE float32_be_write
-#endif
-
-/*--------------------------------------------------------------------------------------------
-** Processor floating point capabilities. float32_get_capability () returns one of the
-** latter four values.
-*/
-
-enum
-{ FLOAT_UNKNOWN = 0x00,
- FLOAT_CAN_RW_LE = 0x12,
- FLOAT_CAN_RW_BE = 0x23,
- FLOAT_BROKEN_LE = 0x34,
- FLOAT_BROKEN_BE = 0x45
-} ;
-
-/*--------------------------------------------------------------------------------------------
-** Prototypes for private functions.
-*/
-
-static sf_count_t host_read_f2s (SF_PRIVATE *psf, short *ptr, sf_count_t len) ;
-static sf_count_t host_read_f2i (SF_PRIVATE *psf, int *ptr, sf_count_t len) ;
-static sf_count_t host_read_f (SF_PRIVATE *psf, float *ptr, sf_count_t len) ;
-static sf_count_t host_read_f2d (SF_PRIVATE *psf, double *ptr, sf_count_t len) ;
-
-static sf_count_t host_write_s2f (SF_PRIVATE *psf, const short *ptr, sf_count_t len) ;
-static sf_count_t host_write_i2f (SF_PRIVATE *psf, const int *ptr, sf_count_t len) ;
-static sf_count_t host_write_f (SF_PRIVATE *psf, const float *ptr, sf_count_t len) ;
-static sf_count_t host_write_d2f (SF_PRIVATE *psf, const double *ptr, sf_count_t len) ;
-
-static void float32_peak_update (SF_PRIVATE *psf, const float *buffer, int count, sf_count_t indx) ;
-
-static sf_count_t replace_read_f2s (SF_PRIVATE *psf, short *ptr, sf_count_t len) ;
-static sf_count_t replace_read_f2i (SF_PRIVATE *psf, int *ptr, sf_count_t len) ;
-static sf_count_t replace_read_f (SF_PRIVATE *psf, float *ptr, sf_count_t len) ;
-static sf_count_t replace_read_f2d (SF_PRIVATE *psf, double *ptr, sf_count_t len) ;
-
-static sf_count_t replace_write_s2f (SF_PRIVATE *psf, const short *ptr, sf_count_t len) ;
-static sf_count_t replace_write_i2f (SF_PRIVATE *psf, const int *ptr, sf_count_t len) ;
-static sf_count_t replace_write_f (SF_PRIVATE *psf, const float *ptr, sf_count_t len) ;
-static sf_count_t replace_write_d2f (SF_PRIVATE *psf, const double *ptr, sf_count_t len) ;
-
-static void bf2f_array (float *buffer, int count) ;
-static void f2bf_array (float *buffer, int count) ;
-
-static int float32_get_capability (SF_PRIVATE *psf) ;
-
-/*--------------------------------------------------------------------------------------------
-** Exported functions.
-*/
-
-int
-float32_init (SF_PRIVATE *psf)
-{ static int float_caps ;
-
- float_caps = float32_get_capability (psf) ;
-
- psf->blockwidth = sizeof (float) * psf->sf.channels ;
-
- if (psf->mode == SFM_READ || psf->mode == SFM_RDWR)
- { switch (psf->endian + float_caps)
- { case (SF_ENDIAN_BIG + FLOAT_CAN_RW_BE) :
- psf->float_endswap = SF_FALSE ;
- psf->read_short = host_read_f2s ;
- psf->read_int = host_read_f2i ;
- psf->read_float = host_read_f ;
- psf->read_double = host_read_f2d ;
- break ;
-
- case (SF_ENDIAN_LITTLE + FLOAT_CAN_RW_LE) :
- psf->float_endswap = SF_FALSE ;
- psf->read_short = host_read_f2s ;
- psf->read_int = host_read_f2i ;
- psf->read_float = host_read_f ;
- psf->read_double = host_read_f2d ;
- break ;
-
- case (SF_ENDIAN_BIG + FLOAT_CAN_RW_LE) :
- psf->float_endswap = SF_TRUE ;
- psf->read_short = host_read_f2s ;
- psf->read_int = host_read_f2i ;
- psf->read_float = host_read_f ;
- psf->read_double = host_read_f2d ;
- break ;
-
- case (SF_ENDIAN_LITTLE + FLOAT_CAN_RW_BE) :
- psf->float_endswap = SF_TRUE ;
- psf->read_short = host_read_f2s ;
- psf->read_int = host_read_f2i ;
- psf->read_float = host_read_f ;
- psf->read_double = host_read_f2d ;
- break ;
-
- /* When the CPU is not IEEE compatible. */
- case (SF_ENDIAN_BIG + FLOAT_BROKEN_LE) :
- psf->float_endswap = SF_TRUE ;
- psf->read_short = replace_read_f2s ;
- psf->read_int = replace_read_f2i ;
- psf->read_float = replace_read_f ;
- psf->read_double = replace_read_f2d ;
- break ;
-
- case (SF_ENDIAN_LITTLE + FLOAT_BROKEN_LE) :
- psf->float_endswap = SF_FALSE ;
- psf->read_short = replace_read_f2s ;
- psf->read_int = replace_read_f2i ;
- psf->read_float = replace_read_f ;
- psf->read_double = replace_read_f2d ;
- break ;
-
- case (SF_ENDIAN_BIG + FLOAT_BROKEN_BE) :
- psf->float_endswap = SF_FALSE ;
- psf->read_short = replace_read_f2s ;
- psf->read_int = replace_read_f2i ;
- psf->read_float = replace_read_f ;
- psf->read_double = replace_read_f2d ;
- break ;
-
- case (SF_ENDIAN_LITTLE + FLOAT_BROKEN_BE) :
- psf->float_endswap = SF_TRUE ;
- psf->read_short = replace_read_f2s ;
- psf->read_int = replace_read_f2i ;
- psf->read_float = replace_read_f ;
- psf->read_double = replace_read_f2d ;
- break ;
-
- default : break ;
- } ;
- } ;
-
- if (psf->mode == SFM_WRITE || psf->mode == SFM_RDWR)
- { switch (psf->endian + float_caps)
- { case (SF_ENDIAN_LITTLE + FLOAT_CAN_RW_LE) :
- psf->float_endswap = SF_FALSE ;
- psf->write_short = host_write_s2f ;
- psf->write_int = host_write_i2f ;
- psf->write_float = host_write_f ;
- psf->write_double = host_write_d2f ;
- break ;
-
- case (SF_ENDIAN_BIG + FLOAT_CAN_RW_BE) :
- psf->float_endswap = SF_FALSE ;
- psf->write_short = host_write_s2f ;
- psf->write_int = host_write_i2f ;
- psf->write_float = host_write_f ;
- psf->write_double = host_write_d2f ;
- break ;
-
- case (SF_ENDIAN_BIG + FLOAT_CAN_RW_LE) :
- psf->float_endswap = SF_TRUE ;
- psf->write_short = host_write_s2f ;
- psf->write_int = host_write_i2f ;
- psf->write_float = host_write_f ;
- psf->write_double = host_write_d2f ;
- break ;
-
- case (SF_ENDIAN_LITTLE + FLOAT_CAN_RW_BE) :
- psf->float_endswap = SF_TRUE ;
- psf->write_short = host_write_s2f ;
- psf->write_int = host_write_i2f ;
- psf->write_float = host_write_f ;
- psf->write_double = host_write_d2f ;
- break ;
-
- /* When the CPU is not IEEE compatible. */
- case (SF_ENDIAN_BIG + FLOAT_BROKEN_LE) :
- psf->float_endswap = SF_TRUE ;
- psf->write_short = replace_write_s2f ;
- psf->write_int = replace_write_i2f ;
- psf->write_float = replace_write_f ;
- psf->write_double = replace_write_d2f ;
- break ;
-
- case (SF_ENDIAN_LITTLE + FLOAT_BROKEN_LE) :
- psf->float_endswap = SF_FALSE ;
- psf->write_short = replace_write_s2f ;
- psf->write_int = replace_write_i2f ;
- psf->write_float = replace_write_f ;
- psf->write_double = replace_write_d2f ;
- break ;
-
- case (SF_ENDIAN_BIG + FLOAT_BROKEN_BE) :
- psf->float_endswap = SF_FALSE ;
- psf->write_short = replace_write_s2f ;
- psf->write_int = replace_write_i2f ;
- psf->write_float = replace_write_f ;
- psf->write_double = replace_write_d2f ;
- break ;
-
- case (SF_ENDIAN_LITTLE + FLOAT_BROKEN_BE) :
- psf->float_endswap = SF_TRUE ;
- psf->write_short = replace_write_s2f ;
- psf->write_int = replace_write_i2f ;
- psf->write_float = replace_write_f ;
- psf->write_double = replace_write_d2f ;
- break ;
-
- default : break ;
- } ;
- } ;
-
- if (psf->filelength > psf->dataoffset)
- { psf->datalength = (psf->dataend > 0) ? psf->dataend - psf->dataoffset :
- psf->filelength - psf->dataoffset ;
- }
- else
- psf->datalength = 0 ;
-
- psf->sf.frames = psf->datalength / psf->blockwidth ;
-
- return 0 ;
-} /* float32_init */
-
-float
-float32_be_read (unsigned char *cptr)
-{ int exponent, mantissa, negative ;
- float fvalue ;
-
- negative = cptr [0] & 0x80 ;
- exponent = ((cptr [0] & 0x7F) << 1) | ((cptr [1] & 0x80) ? 1 : 0) ;
- mantissa = ((cptr [1] & 0x7F) << 16) | (cptr [2] << 8) | (cptr [3]) ;
-
- if (! (exponent || mantissa))
- return 0.0 ;
-
- mantissa |= 0x800000 ;
- exponent = exponent ? exponent - 127 : 0 ;
-
- fvalue = mantissa ? ((float) mantissa) / ((float) 0x800000) : 0.0 ;
-
- if (negative)
- fvalue *= -1 ;
-
- if (exponent > 0)
- fvalue *= (1 << exponent) ;
- else if (exponent < 0)
- fvalue /= (1 << abs (exponent)) ;
-
- return fvalue ;
-} /* float32_be_read */
-
-float
-float32_le_read (unsigned char *cptr)
-{ int exponent, mantissa, negative ;
- float fvalue ;
-
- negative = cptr [3] & 0x80 ;
- exponent = ((cptr [3] & 0x7F) << 1) | ((cptr [2] & 0x80) ? 1 : 0) ;
- mantissa = ((cptr [2] & 0x7F) << 16) | (cptr [1] << 8) | (cptr [0]) ;
-
- if (! (exponent || mantissa))
- return 0.0 ;
-
- mantissa |= 0x800000 ;
- exponent = exponent ? exponent - 127 : 0 ;
-
- fvalue = mantissa ? ((float) mantissa) / ((float) 0x800000) : 0.0 ;
-
- if (negative)
- fvalue *= -1 ;
-
- if (exponent > 0)
- fvalue *= (1 << exponent) ;
- else if (exponent < 0)
- fvalue /= (1 << abs (exponent)) ;
-
- return fvalue ;
-} /* float32_le_read */
-
-void
-float32_le_write (float in, unsigned char *out)
-{ int exponent, mantissa, negative = 0 ;
-
- memset (out, 0, sizeof (int)) ;
-
- if (fabs (in) < 1e-30)
- return ;
-
- if (in < 0.0)
- { in *= -1.0 ;
- negative = 1 ;
- } ;
-
- in = frexp (in, &exponent) ;
-
- exponent += 126 ;
-
- in *= (float) 0x1000000 ;
- mantissa = (((int) in) & 0x7FFFFF) ;
-
- if (negative)
- out [3] |= 0x80 ;
-
- if (exponent & 0x01)
- out [2] |= 0x80 ;
-
- out [0] = mantissa & 0xFF ;
- out [1] = (mantissa >> 8) & 0xFF ;
- out [2] |= (mantissa >> 16) & 0x7F ;
- out [3] |= (exponent >> 1) & 0x7F ;
-
- return ;
-} /* float32_le_write */
-
-void
-float32_be_write (float in, unsigned char *out)
-{ int exponent, mantissa, negative = 0 ;
-
- memset (out, 0, sizeof (int)) ;
-
- if (fabs (in) < 1e-30)
- return ;
-
- if (in < 0.0)
- { in *= -1.0 ;
- negative = 1 ;
- } ;
-
- in = frexp (in, &exponent) ;
-
- exponent += 126 ;
-
- in *= (float) 0x1000000 ;
- mantissa = (((int) in) & 0x7FFFFF) ;
-
- if (negative)
- out [0] |= 0x80 ;
-
- if (exponent & 0x01)
- out [1] |= 0x80 ;
-
- out [3] = mantissa & 0xFF ;
- out [2] = (mantissa >> 8) & 0xFF ;
- out [1] |= (mantissa >> 16) & 0x7F ;
- out [0] |= (exponent >> 1) & 0x7F ;
-
- return ;
-} /* float32_be_write */
-
-/*==============================================================================================
-** Private functions.
-*/
-
-static void
-float32_peak_update (SF_PRIVATE *psf, const float *buffer, int count, sf_count_t indx)
-{ int chan ;
- int k, position ;
- float fmaxval ;
-
- for (chan = 0 ; chan < psf->sf.channels ; chan++)
- { fmaxval = fabs (buffer [chan]) ;
- position = 0 ;
- for (k = chan ; k < count ; k += psf->sf.channels)
- if (fmaxval < fabs (buffer [k]))
- { fmaxval = fabs (buffer [k]) ;
- position = k ;
- } ;
-
- if (fmaxval > psf->peak_info->peaks [chan].value)
- { psf->peak_info->peaks [chan].value = fmaxval ;
- psf->peak_info->peaks [chan].position = psf->write_current + indx + (position / psf->sf.channels) ;
- } ;
- } ;
-
- return ;
-} /* float32_peak_update */
-
-static int
-float32_get_capability (SF_PRIVATE *psf)
-{ union
- { float f ;
- int i ;
- unsigned char c [4] ;
- } data ;
-
- data.f = (float) 1.23456789 ; /* Some abitrary value. */
-
- if (! psf->ieee_replace)
- { /* If this test is true ints and floats are compatible and little endian. */
- if (data.c [0] == 0x52 && data.c [1] == 0x06 && data.c [2] == 0x9e && data.c [3] == 0x3f)
- return FLOAT_CAN_RW_LE ;
-
- /* If this test is true ints and floats are compatible and big endian. */
- if (data.c [3] == 0x52 && data.c [2] == 0x06 && data.c [1] == 0x9e && data.c [0] == 0x3f)
- return FLOAT_CAN_RW_BE ;
- } ;
-
- /* Floats are broken. Don't expect reading or writing to be fast. */
- psf_log_printf (psf, "Using IEEE replacement code for float.\n") ;
-
- return (CPU_IS_LITTLE_ENDIAN) ? FLOAT_BROKEN_LE : FLOAT_BROKEN_BE ;
-} /* float32_get_capability */
-
-/*=======================================================================================
-*/
-
-static inline void
-f2s_array (const float *src, int count, short *dest, float scale)
-{ while (--count >= 0)
- { dest [count] = lrintf (scale * src [count]) ;
- } ;
-} /* f2s_array */
-
-static inline void
-f2i_array (const float *src, int count, int *dest, float scale)
-{ while (--count >= 0)
- { dest [count] = lrintf (scale * src [count]) ;
- } ;
-} /* f2i_array */
-
-static inline void
-f2d_array (const float *src, int count, double *dest)
-{ while (--count >= 0)
- { dest [count] = src [count] ;
- } ;
-} /* f2d_array */
-
-static inline void
-s2f_array (const short *src, float *dest, int count)
-{ while (--count >= 0)
- { dest [count] = src [count] ;
- } ;
-
-} /* s2f_array */
-
-static inline void
-i2f_array (const int *src, float *dest, int count)
-{ while (--count >= 0)
- { dest [count] = src [count] ;
- } ;
-} /* i2f_array */
-
-static inline void
-d2f_array (const double *src, float *dest, int count)
-{ while (--count >= 0)
- { dest [count] = src [count] ;
- } ;
-} /* d2f_array */
-
-/*----------------------------------------------------------------------------------------------
-*/
-
-static sf_count_t
-host_read_f2s (SF_PRIVATE *psf, short *ptr, sf_count_t len)
-{ int bufferlen, readcount ;
- sf_count_t total = 0 ;
- float scale ;
-
- bufferlen = ARRAY_LEN (psf->u.fbuf) ;
- scale = (psf->float_int_mult == 0) ? 1.0 : 0x7FFF / psf->float_max ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- readcount = psf_fread (psf->u.fbuf, sizeof (float), bufferlen, psf) ;
-
-/* Fix me : Need lef2s_array */
- if (psf->float_endswap == SF_TRUE)
- endswap_int_array (psf->u.ibuf, bufferlen) ;
-
- f2s_array (psf->u.fbuf, readcount, ptr + total, scale) ;
- total += readcount ;
- if (readcount < bufferlen)
- break ;
- len -= readcount ;
- } ;
-
- return total ;
-} /* host_read_f2s */
-
-static sf_count_t
-host_read_f2i (SF_PRIVATE *psf, int *ptr, sf_count_t len)
-{ int bufferlen, readcount ;
- sf_count_t total = 0 ;
- float scale ;
-
- bufferlen = ARRAY_LEN (psf->u.fbuf) ;
- scale = (psf->float_int_mult == 0) ? 1.0 : 0x7FFFFFFF / psf->float_max ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- readcount = psf_fread (psf->u.fbuf, sizeof (float), bufferlen, psf) ;
-
- if (psf->float_endswap == SF_TRUE)
- endswap_int_array (psf->u.ibuf, bufferlen) ;
-
- f2i_array (psf->u.fbuf, readcount, ptr + total, scale) ;
- total += readcount ;
- if (readcount < bufferlen)
- break ;
- len -= readcount ;
- } ;
-
- return total ;
-} /* host_read_f2i */
-
-static sf_count_t
-host_read_f (SF_PRIVATE *psf, float *ptr, sf_count_t len)
-{ int bufferlen, readcount ;
- sf_count_t total = 0 ;
-
- if (psf->float_endswap != SF_TRUE)
- return psf_fread (ptr, sizeof (float), len, psf) ;
-
- bufferlen = ARRAY_LEN (psf->u.fbuf) ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- readcount = psf_fread (psf->u.fbuf, sizeof (float), bufferlen, psf) ;
-
- endswap_int_copy ((int*) (ptr + total), psf->u.ibuf, readcount) ;
-
- total += readcount ;
- if (readcount < bufferlen)
- break ;
- len -= readcount ;
- } ;
-
- return total ;
-} /* host_read_f */
-
-static sf_count_t
-host_read_f2d (SF_PRIVATE *psf, double *ptr, sf_count_t len)
-{ int bufferlen, readcount ;
- sf_count_t total = 0 ;
-
- bufferlen = ARRAY_LEN (psf->u.fbuf) ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- readcount = psf_fread (psf->u.fbuf, sizeof (float), bufferlen, psf) ;
-
- if (psf->float_endswap == SF_TRUE)
- endswap_int_array (psf->u.ibuf, bufferlen) ;
-
-/* Fix me : Need lef2d_array */
- f2d_array (psf->u.fbuf, readcount, ptr + total) ;
- total += readcount ;
- if (readcount < bufferlen)
- break ;
- len -= readcount ;
- } ;
-
- return total ;
-} /* host_read_f2d */
-
-static sf_count_t
-host_write_s2f (SF_PRIVATE *psf, const short *ptr, sf_count_t len)
-{ int bufferlen, writecount ;
- sf_count_t total = 0 ;
-
- bufferlen = ARRAY_LEN (psf->u.fbuf) ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- s2f_array (ptr + total, psf->u.fbuf, bufferlen) ;
-
- if (psf->peak_info)
- float32_peak_update (psf, psf->u.fbuf, bufferlen, total / psf->sf.channels) ;
-
- if (psf->float_endswap == SF_TRUE)
- endswap_int_array (psf->u.ibuf, bufferlen) ;
-
- writecount = psf_fwrite (psf->u.fbuf, sizeof (float), bufferlen, psf) ;
- total += writecount ;
- if (writecount < bufferlen)
- break ;
- len -= writecount ;
- } ;
-
- return total ;
-} /* host_write_s2f */
-
-static sf_count_t
-host_write_i2f (SF_PRIVATE *psf, const int *ptr, sf_count_t len)
-{ int bufferlen, writecount ;
- sf_count_t total = 0 ;
-
- bufferlen = ARRAY_LEN (psf->u.fbuf) ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- i2f_array (ptr + total, psf->u.fbuf, bufferlen) ;
-
- if (psf->peak_info)
- float32_peak_update (psf, psf->u.fbuf, bufferlen, total / psf->sf.channels) ;
-
- if (psf->float_endswap == SF_TRUE)
- endswap_int_array (psf->u.ibuf, bufferlen) ;
-
- writecount = psf_fwrite (psf->u.fbuf, sizeof (float) , bufferlen, psf) ;
- total += writecount ;
- if (writecount < bufferlen)
- break ;
- len -= writecount ;
- } ;
-
- return total ;
-} /* host_write_i2f */
-
-static sf_count_t
-host_write_f (SF_PRIVATE *psf, const float *ptr, sf_count_t len)
-{ int bufferlen, writecount ;
- sf_count_t total = 0 ;
-
- if (psf->peak_info)
- float32_peak_update (psf, ptr, len, 0) ;
-
- if (psf->float_endswap != SF_TRUE)
- return psf_fwrite (ptr, sizeof (float), len, psf) ;
-
- bufferlen = ARRAY_LEN (psf->u.fbuf) ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
-
- endswap_int_copy (psf->u.ibuf, (const int*) (ptr + total), bufferlen) ;
-
- writecount = psf_fwrite (psf->u.fbuf, sizeof (float), bufferlen, psf) ;
- total += writecount ;
- if (writecount < bufferlen)
- break ;
- len -= writecount ;
- } ;
-
- return total ;
-} /* host_write_f */
-
-static sf_count_t
-host_write_d2f (SF_PRIVATE *psf, const double *ptr, sf_count_t len)
-{ int bufferlen, writecount ;
- sf_count_t total = 0 ;
-
- bufferlen = ARRAY_LEN (psf->u.fbuf) ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
-
- d2f_array (ptr + total, psf->u.fbuf, bufferlen) ;
-
- if (psf->peak_info)
- float32_peak_update (psf, psf->u.fbuf, bufferlen, total / psf->sf.channels) ;
-
- if (psf->float_endswap == SF_TRUE)
- endswap_int_array (psf->u.ibuf, bufferlen) ;
-
- writecount = psf_fwrite (psf->u.fbuf, sizeof (float), bufferlen, psf) ;
- total += writecount ;
- if (writecount < bufferlen)
- break ;
- len -= writecount ;
- } ;
-
- return total ;
-} /* host_write_d2f */
-
-/*=======================================================================================
-*/
-
-static sf_count_t
-replace_read_f2s (SF_PRIVATE *psf, short *ptr, sf_count_t len)
-{ int bufferlen, readcount ;
- sf_count_t total = 0 ;
- float scale ;
-
- bufferlen = ARRAY_LEN (psf->u.fbuf) ;
- scale = (psf->float_int_mult == 0) ? 1.0 : 0x7FFF / psf->float_max ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- readcount = psf_fread (psf->u.fbuf, sizeof (float), bufferlen, psf) ;
-
- if (psf->float_endswap == SF_TRUE)
- endswap_int_array (psf->u.ibuf, bufferlen) ;
-
- bf2f_array (psf->u.fbuf, bufferlen) ;
-
- f2s_array (psf->u.fbuf, readcount, ptr + total, scale) ;
- total += readcount ;
- if (readcount < bufferlen)
- break ;
- len -= readcount ;
- } ;
-
- return total ;
-} /* replace_read_f2s */
-
-static sf_count_t
-replace_read_f2i (SF_PRIVATE *psf, int *ptr, sf_count_t len)
-{ int bufferlen, readcount ;
- sf_count_t total = 0 ;
- float scale ;
-
- bufferlen = ARRAY_LEN (psf->u.fbuf) ;
- scale = (psf->float_int_mult == 0) ? 1.0 : 0x7FFF / psf->float_max ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- readcount = psf_fread (psf->u.fbuf, sizeof (float), bufferlen, psf) ;
-
- if (psf->float_endswap == SF_TRUE)
- endswap_int_array (psf->u.ibuf, bufferlen) ;
-
- bf2f_array (psf->u.fbuf, bufferlen) ;
-
- f2i_array (psf->u.fbuf, readcount, ptr + total, scale) ;
- total += readcount ;
- if (readcount < bufferlen)
- break ;
- len -= readcount ;
- } ;
-
- return total ;
-} /* replace_read_f2i */
-
-static sf_count_t
-replace_read_f (SF_PRIVATE *psf, float *ptr, sf_count_t len)
-{ int bufferlen, readcount ;
- sf_count_t total = 0 ;
-
- /* FIX THIS */
-
- bufferlen = ARRAY_LEN (psf->u.fbuf) ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- readcount = psf_fread (psf->u.fbuf, sizeof (float), bufferlen, psf) ;
-
- if (psf->float_endswap == SF_TRUE)
- endswap_int_array (psf->u.ibuf, bufferlen) ;
-
- bf2f_array (psf->u.fbuf, bufferlen) ;
-
- memcpy (ptr + total, psf->u.fbuf, bufferlen * sizeof (float)) ;
-
- total += readcount ;
- if (readcount < bufferlen)
- break ;
- len -= readcount ;
- } ;
-
- return total ;
-} /* replace_read_f */
-
-static sf_count_t
-replace_read_f2d (SF_PRIVATE *psf, double *ptr, sf_count_t len)
-{ int bufferlen, readcount ;
- sf_count_t total = 0 ;
-
- bufferlen = ARRAY_LEN (psf->u.fbuf) ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- readcount = psf_fread (psf->u.fbuf, sizeof (float), bufferlen, psf) ;
-
- if (psf->float_endswap == SF_TRUE)
- endswap_int_array (psf->u.ibuf, bufferlen) ;
-
- bf2f_array (psf->u.fbuf, bufferlen) ;
-
- f2d_array (psf->u.fbuf, readcount, ptr + total) ;
- total += readcount ;
- if (readcount < bufferlen)
- break ;
- len -= readcount ;
- } ;
-
- return total ;
-} /* replace_read_f2d */
-
-static sf_count_t
-replace_write_s2f (SF_PRIVATE *psf, const short *ptr, sf_count_t len)
-{ int bufferlen, writecount ;
- sf_count_t total = 0 ;
-
- bufferlen = ARRAY_LEN (psf->u.fbuf) ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- s2f_array (ptr + total, psf->u.fbuf, bufferlen) ;
-
- if (psf->peak_info)
- float32_peak_update (psf, psf->u.fbuf, bufferlen, total / psf->sf.channels) ;
-
- f2bf_array (psf->u.fbuf, bufferlen) ;
-
- if (psf->float_endswap == SF_TRUE)
- endswap_int_array (psf->u.ibuf, bufferlen) ;
-
- writecount = psf_fwrite (psf->u.fbuf, sizeof (float), bufferlen, psf) ;
- total += writecount ;
- if (writecount < bufferlen)
- break ;
- len -= writecount ;
- } ;
-
- return total ;
-} /* replace_write_s2f */
-
-static sf_count_t
-replace_write_i2f (SF_PRIVATE *psf, const int *ptr, sf_count_t len)
-{ int bufferlen, writecount ;
- sf_count_t total = 0 ;
-
- bufferlen = ARRAY_LEN (psf->u.fbuf) ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- i2f_array (ptr + total, psf->u.fbuf, bufferlen) ;
-
- if (psf->peak_info)
- float32_peak_update (psf, psf->u.fbuf, bufferlen, total / psf->sf.channels) ;
-
- f2bf_array (psf->u.fbuf, bufferlen) ;
-
- if (psf->float_endswap == SF_TRUE)
- endswap_int_array (psf->u.ibuf, bufferlen) ;
-
- writecount = psf_fwrite (psf->u.fbuf, sizeof (float), bufferlen, psf) ;
- total += writecount ;
- if (writecount < bufferlen)
- break ;
- len -= writecount ;
- } ;
-
- return total ;
-} /* replace_write_i2f */
-
-static sf_count_t
-replace_write_f (SF_PRIVATE *psf, const float *ptr, sf_count_t len)
-{ int bufferlen, writecount ;
- sf_count_t total = 0 ;
-
- /* FIX THIS */
- if (psf->peak_info)
- float32_peak_update (psf, ptr, len, 0) ;
-
- bufferlen = ARRAY_LEN (psf->u.fbuf) ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
-
- memcpy (psf->u.fbuf, ptr + total, bufferlen * sizeof (float)) ;
-
- f2bf_array (psf->u.fbuf, bufferlen) ;
-
- if (psf->float_endswap == SF_TRUE)
- endswap_int_array (psf->u.ibuf, bufferlen) ;
-
- writecount = psf_fwrite (psf->u.fbuf, sizeof (float) , bufferlen, psf) ;
- total += writecount ;
- if (writecount < bufferlen)
- break ;
- len -= writecount ;
- } ;
-
- return total ;
-} /* replace_write_f */
-
-static sf_count_t
-replace_write_d2f (SF_PRIVATE *psf, const double *ptr, sf_count_t len)
-{ int bufferlen, writecount ;
- sf_count_t total = 0 ;
-
- bufferlen = ARRAY_LEN (psf->u.fbuf) ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- d2f_array (ptr + total, psf->u.fbuf, bufferlen) ;
-
- if (psf->peak_info)
- float32_peak_update (psf, psf->u.fbuf, bufferlen, total / psf->sf.channels) ;
-
- f2bf_array (psf->u.fbuf, bufferlen) ;
-
- if (psf->float_endswap == SF_TRUE)
- endswap_int_array (psf->u.ibuf, bufferlen) ;
-
- writecount = psf_fwrite (psf->u.fbuf, sizeof (float), bufferlen, psf) ;
- total += writecount ;
- if (writecount < bufferlen)
- break ;
- len -= writecount ;
- } ;
-
- return total ;
-} /* replace_write_d2f */
-
-/*----------------------------------------------------------------------------------------------
-*/
-
-static void
-bf2f_array (float *buffer, int count)
-{ while (--count >= 0)
- { buffer [count] = FLOAT32_READ ((unsigned char *) (buffer + count)) ;
- } ;
-} /* bf2f_array */
-
-static void
-f2bf_array (float *buffer, int count)
-{ while (--count >= 0)
- { FLOAT32_WRITE (buffer [count], (unsigned char*) (buffer + count)) ;
- } ;
-} /* f2bf_array */
-
-/*
-** Do not edit or modify anything in this comment block.
-** The arch-tag line is a file identity tag for the GNU Arch
-** revision control system.
-**
-** arch-tag: b6c34917-488c-4145-9648-f4371fc4c889
-*/
diff --git a/libs/libsndfile/src/float_cast.h b/libs/libsndfile/src/float_cast.h
deleted file mode 100644
index 099670a365..0000000000
--- a/libs/libsndfile/src/float_cast.h
+++ /dev/null
@@ -1,262 +0,0 @@
-/*
-** Copyright (C) 2001-2004 Erik de Castro Lopo <erikd@mega-nerd.com>
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU Lesser General Public License as published by
-** the Free Software Foundation; either version 2.1 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU Lesser General Public License for more details.
-**
-** You should have received a copy of the GNU Lesser General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-*/
-
-/* Version 1.4 */
-
-#ifndef FLOAT_CAST_HEADER
-#define FLOAT_CAST_HEADER
-
-/*============================================================================
-** On Intel Pentium processors (especially PIII and probably P4), converting
-** from float to int is very slow. To meet the C specs, the code produced by
-** most C compilers targeting Pentium needs to change the FPU rounding mode
-** before the float to int conversion is performed.
-**
-** Changing the FPU rounding mode causes the FPU pipeline to be flushed. It
-** is this flushing of the pipeline which is so slow.
-**
-** Fortunately the ISO C99 specifications define the functions lrint, lrintf,
-** llrint and llrintf which fix this problem as a side effect.
-**
-** On Unix-like systems, the configure process should have detected the
-** presence of these functions. If they weren't found we have to replace them
-** here with a standard C cast.
-*/
-
-/*
-** The C99 prototypes for lrint and lrintf are as follows:
-**
-** long int lrintf (float x) ;
-** long int lrint (double x) ;
-*/
-
-#include "sfconfig.h"
-
-/*
-** The presence of the required functions are detected during the configure
-** process and the values HAVE_LRINT and HAVE_LRINTF are set accordingly in
-** the sfconfig.h file.
-*/
-
-#define HAVE_LRINT_REPLACEMENT 0
-
-#if (HAVE_LRINT && HAVE_LRINTF)
-
- /*
- ** These defines enable functionality introduced with the 1999 ISO C
- ** standard. They must be defined before the inclusion of math.h to
- ** engage them. If optimisation is enabled, these functions will be
- ** inlined. With optimisation switched off, you have to link in the
- ** maths library using -lm.
- */
-
- #define _ISOC9X_SOURCE 1
- #define _ISOC99_SOURCE 1
-
- #define __USE_ISOC9X 1
- #define __USE_ISOC99 1
-
- #include <math.h>
-
-#elif (defined (__CYGWIN__))
-
- #include <math.h>
-
- #undef HAVE_LRINT_REPLACEMENT
- #define HAVE_LRINT_REPLACEMENT 1
-
- #undef lrint
- #undef lrintf
-
- #define lrint double2int
- #define lrintf float2int
-
- /*
- ** The native CYGWIN lrint and lrintf functions are buggy:
- ** http://sourceware.org/ml/cygwin/2005-06/msg00153.html
- ** http://sourceware.org/ml/cygwin/2005-09/msg00047.html
- ** and slow.
- ** These functions (pulled from the Public Domain MinGW math.h header)
- ** replace the native versions.
- */
-
- static inline long double2int (double in)
- { long retval ;
-
- __asm__ __volatile__
- ( "fistpl %0"
- : "=m" (retval)
- : "t" (in)
- : "st"
- ) ;
-
- return retval ;
- } /* double2int */
-
- static inline long float2int (float in)
- { long retval ;
-
- __asm__ __volatile__
- ( "fistpl %0"
- : "=m" (retval)
- : "t" (in)
- : "st"
- ) ;
-
- return retval ;
- } /* float2int */
-
-#elif (defined (WIN32) || defined (_WIN32))
-
- #undef HAVE_LRINT_REPLACEMENT
- #define HAVE_LRINT_REPLACEMENT 1
-
- #include <math.h>
-
- /*
- ** Win32 doesn't seem to have these functions.
- ** Therefore implement inline versions of these functions here.
- */
-
- __inline long int
- lrint (double flt)
- { int intgr ;
-
- _asm
- { fld flt
- fistp intgr
- } ;
-
- return intgr ;
- }
-
- __inline long int
- lrintf (float flt)
- { int intgr ;
-
- _asm
- { fld flt
- fistp intgr
- } ;
-
- return intgr ;
- }
-
-#elif (defined (__MWERKS__) && defined (macintosh))
-
- /* This MacOS 9 solution was provided by Stephane Letz */
-
- #undef HAVE_LRINT_REPLACEMENT
- #define HAVE_LRINT_REPLACEMENT 1
- #include <math.h>
-
- #undef lrint
- #undef lrintf
-
- #define lrint double2int
- #define lrintf float2int
-
- inline int
- float2int (register float in)
- { long res [2] ;
-
- asm
- { fctiw in, in
- stfd in, res
- }
- return res [1] ;
- } /* float2int */
-
- inline int
- double2int (register double in)
- { long res [2] ;
-
- asm
- { fctiw in, in
- stfd in, res
- }
- return res [1] ;
- } /* double2int */
-
-#elif (defined (__MACH__) && defined (__APPLE__))
-
- /* For Apple MacOSX. */
-
- #undef HAVE_LRINT_REPLACEMENT
- #define HAVE_LRINT_REPLACEMENT 1
- #include <math.h>
-
- #undef lrint
- #undef lrintf
-
- #define lrint double2int
- #define lrintf float2int
-
- inline static long
- float2int (register float in)
- { int res [2] ;
-
- __asm__ __volatile__
- ( "fctiw %1, %1\n\t"
- "stfd %1, %0"
- : "=m" (res) /* Output */
- : "f" (in) /* Input */
- : "memory"
- ) ;
-
- return res [1] ;
- } /* lrintf */
-
- inline static long
- double2int (register double in)
- { int res [2] ;
-
- __asm__ __volatile__
- ( "fctiw %1, %1\n\t"
- "stfd %1, %0"
- : "=m" (res) /* Output */
- : "f" (in) /* Input */
- : "memory"
- ) ;
-
- return res [1] ;
- } /* lrint */
-
-#else
- #ifndef __sgi
- #warning "Don't have the functions lrint() and lrintf()."
- #warning "Replacing these functions with a standard C cast."
- #endif
-
- #include <math.h>
-
- #define lrint(dbl) ((long) (dbl))
- #define lrintf(flt) ((long) (flt))
-
-#endif
-
-
-#endif /* FLOAT_CAST_HEADER */
-
-/*
-** Do not edit or modify anything in this comment block.
-** The arch-tag line is a file identity tag for the GNU Arch
-** revision control system.
-**
-** arch-tag: 42db1693-ff61-4051-bac1-e4d24c4e30b7
-*/
diff --git a/libs/libsndfile/src/g72x.c b/libs/libsndfile/src/g72x.c
deleted file mode 100644
index dbbf9dae52..0000000000
--- a/libs/libsndfile/src/g72x.c
+++ /dev/null
@@ -1,615 +0,0 @@
-/*
-** Copyright (C) 1999-2005 Erik de Castro Lopo <erikd@mega-nerd.com>
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU Lesser General Public License as published by
-** the Free Software Foundation; either version 2.1 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU Lesser General Public License for more details.
-**
-** You should have received a copy of the GNU Lesser General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-*/
-
-#include "sfconfig.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "sndfile.h"
-#include "sfendian.h"
-#include "float_cast.h"
-#include "common.h"
-#include "G72x/g72x.h"
-
-/* This struct is private to the G72x code. */
-struct g72x_state ;
-typedef struct g72x_state G72x_STATE ;
-
-typedef struct
-{ /* Private data. Don't mess with it. */
- struct g72x_state * private ;
-
- /* Public data. Read only. */
- int blocksize, samplesperblock, bytesperblock ;
-
- /* Public data. Read and write. */
- int blocks_total, block_curr, sample_curr ;
- unsigned char block [G72x_BLOCK_SIZE] ;
- short samples [G72x_BLOCK_SIZE] ;
-} G72x_PRIVATE ;
-
-static int psf_g72x_decode_block (SF_PRIVATE *psf, G72x_PRIVATE *pg72x) ;
-static int psf_g72x_encode_block (SF_PRIVATE *psf, G72x_PRIVATE *pg72x) ;
-
-static sf_count_t g72x_read_s (SF_PRIVATE *psf, short *ptr, sf_count_t len) ;
-static sf_count_t g72x_read_i (SF_PRIVATE *psf, int *ptr, sf_count_t len) ;
-static sf_count_t g72x_read_f (SF_PRIVATE *psf, float *ptr, sf_count_t len) ;
-static sf_count_t g72x_read_d (SF_PRIVATE *psf, double *ptr, sf_count_t len) ;
-
-static sf_count_t g72x_write_s (SF_PRIVATE *psf, const short *ptr, sf_count_t len) ;
-static sf_count_t g72x_write_i (SF_PRIVATE *psf, const int *ptr, sf_count_t len) ;
-static sf_count_t g72x_write_f (SF_PRIVATE *psf, const float *ptr, sf_count_t len) ;
-static sf_count_t g72x_write_d (SF_PRIVATE *psf, const double *ptr, sf_count_t len) ;
-
-static sf_count_t g72x_seek (SF_PRIVATE *psf, int mode, sf_count_t offset) ;
-
-static int g72x_close (SF_PRIVATE *psf) ;
-
-
-/*============================================================================================
-** WAV G721 Reader initialisation function.
-*/
-
-int
-g72x_init (SF_PRIVATE * psf)
-{ G72x_PRIVATE *pg72x ;
- int bitspersample, bytesperblock, codec ;
-
- if (psf->fdata != NULL)
- { psf_log_printf (psf, "*** psf->fdata is not NULL.\n") ;
- return SFE_INTERNAL ;
- } ;
-
- psf->sf.seekable = SF_FALSE ;
-
- if (psf->sf.channels != 1)
- return SFE_G72X_NOT_MONO ;
-
- if ((pg72x = calloc (1, sizeof (G72x_PRIVATE))) == NULL)
- return SFE_MALLOC_FAILED ;
-
- psf->fdata = (void*) pg72x ;
-
- pg72x->block_curr = 0 ;
- pg72x->sample_curr = 0 ;
-
- switch (psf->sf.format & SF_FORMAT_SUBMASK)
- { case SF_FORMAT_G721_32 :
- codec = G721_32_BITS_PER_SAMPLE ;
- bytesperblock = G721_32_BYTES_PER_BLOCK ;
- bitspersample = G721_32_BITS_PER_SAMPLE ;
- break ;
-
- case SF_FORMAT_G723_24:
- codec = G723_24_BITS_PER_SAMPLE ;
- bytesperblock = G723_24_BYTES_PER_BLOCK ;
- bitspersample = G723_24_BITS_PER_SAMPLE ;
- break ;
-
- case SF_FORMAT_G723_40:
- codec = G723_40_BITS_PER_SAMPLE ;
- bytesperblock = G723_40_BYTES_PER_BLOCK ;
- bitspersample = G723_40_BITS_PER_SAMPLE ;
- break ;
-
- default : return SFE_UNIMPLEMENTED ;
- } ;
-
- psf->blockwidth = psf->bytewidth = 1 ;
-
- psf->filelength = psf_get_filelen (psf) ;
- if (psf->filelength < psf->dataoffset)
- psf->filelength = psf->dataoffset ;
-
- psf->datalength = psf->filelength - psf->dataoffset ;
- if (psf->dataend > 0)
- psf->datalength -= psf->filelength - psf->dataend ;
-
- if (psf->mode == SFM_READ)
- { pg72x->private = g72x_reader_init (codec, &(pg72x->blocksize), &(pg72x->samplesperblock)) ;
- if (pg72x->private == NULL)
- return SFE_MALLOC_FAILED ;
-
- pg72x->bytesperblock = bytesperblock ;
-
- psf->read_short = g72x_read_s ;
- psf->read_int = g72x_read_i ;
- psf->read_float = g72x_read_f ;
- psf->read_double = g72x_read_d ;
-
- psf->seek = g72x_seek ;
-
- if (psf->datalength % pg72x->blocksize)
- { psf_log_printf (psf, "*** Odd psf->datalength (%D) should be a multiple of %d\n", psf->datalength, pg72x->blocksize) ;
- pg72x->blocks_total = (psf->datalength / pg72x->blocksize) + 1 ;
- }
- else
- pg72x->blocks_total = psf->datalength / pg72x->blocksize ;
-
- psf->sf.frames = pg72x->blocks_total * pg72x->samplesperblock ;
-
- psf_g72x_decode_block (psf, pg72x) ;
- }
- else if (psf->mode == SFM_WRITE)
- { pg72x->private = g72x_writer_init (codec, &(pg72x->blocksize), &(pg72x->samplesperblock)) ;
- if (pg72x->private == NULL)
- return SFE_MALLOC_FAILED ;
-
- pg72x->bytesperblock = bytesperblock ;
-
- psf->write_short = g72x_write_s ;
- psf->write_int = g72x_write_i ;
- psf->write_float = g72x_write_f ;
- psf->write_double = g72x_write_d ;
-
- if (psf->datalength % pg72x->blocksize)
- pg72x->blocks_total = (psf->datalength / pg72x->blocksize) + 1 ;
- else
- pg72x->blocks_total = psf->datalength / pg72x->blocksize ;
-
- if (psf->datalength > 0)
- psf->sf.frames = (8 * psf->datalength) / bitspersample ;
-
- if ((psf->sf.frames * bitspersample) / 8 != psf->datalength)
- psf_log_printf (psf, "*** Warning : weird psf->datalength.\n") ;
- } ;
-
- psf->codec_close = g72x_close ;
-
- return 0 ;
-} /* g72x_init */
-
-/*============================================================================================
-** G721 Read Functions.
-*/
-
-static int
-psf_g72x_decode_block (SF_PRIVATE *psf, G72x_PRIVATE *pg72x)
-{ int k ;
-
- pg72x->block_curr ++ ;
- pg72x->sample_curr = 0 ;
-
- if (pg72x->block_curr > pg72x->blocks_total)
- { memset (pg72x->samples, 0, G72x_BLOCK_SIZE * sizeof (short)) ;
- return 1 ;
- } ;
-
- if ((k = psf_fread (pg72x->block, 1, pg72x->bytesperblock, psf)) != pg72x->bytesperblock)
- psf_log_printf (psf, "*** Warning : short read (%d != %d).\n", k, pg72x->bytesperblock) ;
-
- pg72x->blocksize = k ;
- g72x_decode_block (pg72x->private, pg72x->block, pg72x->samples) ;
-
- return 1 ;
-} /* psf_g72x_decode_block */
-
-static int
-g72x_read_block (SF_PRIVATE *psf, G72x_PRIVATE *pg72x, short *ptr, int len)
-{ int count, total = 0, indx = 0 ;
-
- while (indx < len)
- { if (pg72x->block_curr > pg72x->blocks_total)
- { memset (&(ptr [indx]), 0, (len - indx) * sizeof (short)) ;
- return total ;
- } ;
-
- if (pg72x->sample_curr >= pg72x->samplesperblock)
- psf_g72x_decode_block (psf, pg72x) ;
-
- count = pg72x->samplesperblock - pg72x->sample_curr ;
- count = (len - indx > count) ? count : len - indx ;
-
- memcpy (&(ptr [indx]), &(pg72x->samples [pg72x->sample_curr]), count * sizeof (short)) ;
- indx += count ;
- pg72x->sample_curr += count ;
- total = indx ;
- } ;
-
- return total ;
-} /* g72x_read_block */
-
-static sf_count_t
-g72x_read_s (SF_PRIVATE *psf, short *ptr, sf_count_t len)
-{ G72x_PRIVATE *pg72x ;
- int readcount, count ;
- sf_count_t total = 0 ;
-
- if (psf->fdata == NULL)
- return 0 ;
- pg72x = (G72x_PRIVATE*) psf->fdata ;
-
- while (len > 0)
- { readcount = (len > 0x10000000) ? 0x10000000 : (int) len ;
-
- count = g72x_read_block (psf, pg72x, ptr, readcount) ;
-
- total += count ;
- len -= count ;
-
- if (count != readcount)
- break ;
- } ;
-
- return total ;
-} /* g72x_read_s */
-
-static sf_count_t
-g72x_read_i (SF_PRIVATE *psf, int *ptr, sf_count_t len)
-{ G72x_PRIVATE *pg72x ;
- short *sptr ;
- int k, bufferlen, readcount = 0, count ;
- sf_count_t total = 0 ;
-
- if (psf->fdata == NULL)
- return 0 ;
- pg72x = (G72x_PRIVATE*) psf->fdata ;
-
- sptr = psf->u.sbuf ;
- bufferlen = SF_BUFFER_LEN / sizeof (short) ;
- while (len > 0)
- { readcount = (len >= bufferlen) ? bufferlen : len ;
- count = g72x_read_block (psf, pg72x, sptr, readcount) ;
-
- for (k = 0 ; k < readcount ; k++)
- ptr [total + k] = sptr [k] << 16 ;
-
- total += count ;
- len -= readcount ;
- if (count != readcount)
- break ;
- } ;
-
- return total ;
-} /* g72x_read_i */
-
-static sf_count_t
-g72x_read_f (SF_PRIVATE *psf, float *ptr, sf_count_t len)
-{ G72x_PRIVATE *pg72x ;
- short *sptr ;
- int k, bufferlen, readcount = 0, count ;
- sf_count_t total = 0 ;
- float normfact ;
-
- if (psf->fdata == NULL)
- return 0 ;
- pg72x = (G72x_PRIVATE*) psf->fdata ;
-
- normfact = (psf->norm_float == SF_TRUE) ? 1.0 / ((float) 0x8000) : 1.0 ;
-
- sptr = psf->u.sbuf ;
- bufferlen = SF_BUFFER_LEN / sizeof (short) ;
- while (len > 0)
- { readcount = (len >= bufferlen) ? bufferlen : len ;
- count = g72x_read_block (psf, pg72x, sptr, readcount) ;
- for (k = 0 ; k < readcount ; k++)
- ptr [total + k] = normfact * sptr [k] ;
-
- total += count ;
- len -= readcount ;
- if (count != readcount)
- break ;
- } ;
-
- return total ;
-} /* g72x_read_f */
-
-static sf_count_t
-g72x_read_d (SF_PRIVATE *psf, double *ptr, sf_count_t len)
-{ G72x_PRIVATE *pg72x ;
- short *sptr ;
- int k, bufferlen, readcount = 0, count ;
- sf_count_t total = 0 ;
- double normfact ;
-
- if (psf->fdata == NULL)
- return 0 ;
- pg72x = (G72x_PRIVATE*) psf->fdata ;
-
- normfact = (psf->norm_double == SF_TRUE) ? 1.0 / ((double) 0x8000) : 1.0 ;
-
- sptr = psf->u.sbuf ;
- bufferlen = SF_BUFFER_LEN / sizeof (short) ;
- while (len > 0)
- { readcount = (len >= bufferlen) ? bufferlen : len ;
- count = g72x_read_block (psf, pg72x, sptr, readcount) ;
- for (k = 0 ; k < readcount ; k++)
- ptr [total + k] = normfact * (double) (sptr [k]) ;
-
- total += count ;
- len -= readcount ;
- if (count != readcount)
- break ;
- } ;
-
- return total ;
-} /* g72x_read_d */
-
-static sf_count_t
-g72x_seek (SF_PRIVATE *psf, int mode, sf_count_t offset)
-{
- /* Prevent compiler warnings. */
- mode ++ ;
- offset ++ ;
-
- psf_log_printf (psf, "seek unsupported\n") ;
-
- /* No simple solution. To do properly, would need to seek
- ** to start of file and decode everything up to seek position.
- ** Maybe implement SEEK_SET to 0 only?
- */
- return 0 ;
-
-/*
-** G72x_PRIVATE *pg72x ;
-** int newblock, newsample, sample_curr ;
-**
-** if (psf->fdata == NULL)
-** return 0 ;
-** pg72x = (G72x_PRIVATE*) psf->fdata ;
-**
-** if (! (psf->datalength && psf->dataoffset))
-** { psf->error = SFE_BAD_SEEK ;
-** return PSF_SEEK_ERROR ;
-** } ;
-**
-** sample_curr = (8 * psf->datalength) / G721_32_BITS_PER_SAMPLE ;
-**
-** switch (whence)
-** { case SEEK_SET :
-** if (offset < 0 || offset > sample_curr)
-** { psf->error = SFE_BAD_SEEK ;
-** return PSF_SEEK_ERROR ;
-** } ;
-** newblock = offset / pg72x->samplesperblock ;
-** newsample = offset % pg72x->samplesperblock ;
-** break ;
-**
-** case SEEK_CUR :
-** if (psf->current + offset < 0 || psf->current + offset > sample_curr)
-** { psf->error = SFE_BAD_SEEK ;
-** return PSF_SEEK_ERROR ;
-** } ;
-** newblock = (8 * (psf->current + offset)) / pg72x->samplesperblock ;
-** newsample = (8 * (psf->current + offset)) % pg72x->samplesperblock ;
-** break ;
-**
-** case SEEK_END :
-** if (offset > 0 || sample_curr + offset < 0)
-** { psf->error = SFE_BAD_SEEK ;
-** return PSF_SEEK_ERROR ;
-** } ;
-** newblock = (sample_curr + offset) / pg72x->samplesperblock ;
-** newsample = (sample_curr + offset) % pg72x->samplesperblock ;
-** break ;
-**
-** default :
-** psf->error = SFE_BAD_SEEK ;
-** return PSF_SEEK_ERROR ;
-** } ;
-**
-** if (psf->mode == SFM_READ)
-** { psf_fseek (psf, psf->dataoffset + newblock * pg72x->blocksize, SEEK_SET) ;
-** pg72x->block_curr = newblock ;
-** psf_g72x_decode_block (psf, pg72x) ;
-** pg72x->sample_curr = newsample ;
-** }
-** else
-** { /+* What to do about write??? *+/
-** psf->error = SFE_BAD_SEEK ;
-** return PSF_SEEK_ERROR ;
-** } ;
-**
-** psf->current = newblock * pg72x->samplesperblock + newsample ;
-** return psf->current ;
-**
-*/
-} /* g72x_seek */
-
-/*==========================================================================================
-** G72x Write Functions.
-*/
-
-static int
-psf_g72x_encode_block (SF_PRIVATE *psf, G72x_PRIVATE *pg72x)
-{ int k ;
-
- /* Encode the samples. */
- g72x_encode_block (pg72x->private, pg72x->samples, pg72x->block) ;
-
- /* Write the block to disk. */
- if ((k = psf_fwrite (pg72x->block, 1, pg72x->blocksize, psf)) != pg72x->blocksize)
- psf_log_printf (psf, "*** Warning : short write (%d != %d).\n", k, pg72x->blocksize) ;
-
- pg72x->sample_curr = 0 ;
- pg72x->block_curr ++ ;
-
- /* Set samples to zero for next block. */
- memset (pg72x->samples, 0, G72x_BLOCK_SIZE * sizeof (short)) ;
-
- return 1 ;
-} /* psf_g72x_encode_block */
-
-static int
-g72x_write_block (SF_PRIVATE *psf, G72x_PRIVATE *pg72x, const short *ptr, int len)
-{ int count, total = 0, indx = 0 ;
-
- while (indx < len)
- { count = pg72x->samplesperblock - pg72x->sample_curr ;
-
- if (count > len - indx)
- count = len - indx ;
-
- memcpy (&(pg72x->samples [pg72x->sample_curr]), &(ptr [indx]), count * sizeof (short)) ;
- indx += count ;
- pg72x->sample_curr += count ;
- total = indx ;
-
- if (pg72x->sample_curr >= pg72x->samplesperblock)
- psf_g72x_encode_block (psf, pg72x) ;
- } ;
-
- return total ;
-} /* g72x_write_block */
-
-static sf_count_t
-g72x_write_s (SF_PRIVATE *psf, const short *ptr, sf_count_t len)
-{ G72x_PRIVATE *pg72x ;
- int writecount, count ;
- sf_count_t total = 0 ;
-
- if (psf->fdata == NULL)
- return 0 ;
- pg72x = (G72x_PRIVATE*) psf->fdata ;
-
- while (len > 0)
- { writecount = (len > 0x10000000) ? 0x10000000 : (int) len ;
-
- count = g72x_write_block (psf, pg72x, ptr, writecount) ;
-
- total += count ;
- len -= count ;
- if (count != writecount)
- break ;
- } ;
-
- return total ;
-} /* g72x_write_s */
-
-static sf_count_t
-g72x_write_i (SF_PRIVATE *psf, const int *ptr, sf_count_t len)
-{ G72x_PRIVATE *pg72x ;
- short *sptr ;
- int k, bufferlen, writecount = 0, count ;
- sf_count_t total = 0 ;
-
- if (psf->fdata == NULL)
- return 0 ;
- pg72x = (G72x_PRIVATE*) psf->fdata ;
-
- sptr = psf->u.sbuf ;
- bufferlen = ((SF_BUFFER_LEN / psf->blockwidth) * psf->blockwidth) / sizeof (short) ;
- while (len > 0)
- { writecount = (len >= bufferlen) ? bufferlen : len ;
- for (k = 0 ; k < writecount ; k++)
- sptr [k] = ptr [total + k] >> 16 ;
- count = g72x_write_block (psf, pg72x, sptr, writecount) ;
-
- total += count ;
- len -= writecount ;
- if (count != writecount)
- break ;
- } ;
- return total ;
-} /* g72x_write_i */
-
-static sf_count_t
-g72x_write_f (SF_PRIVATE *psf, const float *ptr, sf_count_t len)
-{ G72x_PRIVATE *pg72x ;
- short *sptr ;
- int k, bufferlen, writecount = 0, count ;
- sf_count_t total = 0 ;
- float normfact ;
-
- if (psf->fdata == NULL)
- return 0 ;
- pg72x = (G72x_PRIVATE*) psf->fdata ;
-
- normfact = (psf->norm_float == SF_TRUE) ? (1.0 * 0x8000) : 1.0 ;
-
- sptr = psf->u.sbuf ;
- bufferlen = ((SF_BUFFER_LEN / psf->blockwidth) * psf->blockwidth) / sizeof (short) ;
- while (len > 0)
- { writecount = (len >= bufferlen) ? bufferlen : len ;
- for (k = 0 ; k < writecount ; k++)
- sptr [k] = lrintf (normfact * ptr [total + k]) ;
- count = g72x_write_block (psf, pg72x, sptr, writecount) ;
-
- total += count ;
- len -= writecount ;
- if (count != writecount)
- break ;
- } ;
-
- return total ;
-} /* g72x_write_f */
-
-static sf_count_t
-g72x_write_d (SF_PRIVATE *psf, const double *ptr, sf_count_t len)
-{ G72x_PRIVATE *pg72x ;
- short *sptr ;
- int k, bufferlen, writecount = 0, count ;
- sf_count_t total = 0 ;
- double normfact ;
-
- if (psf->fdata == NULL)
- return 0 ;
- pg72x = (G72x_PRIVATE*) psf->fdata ;
-
- normfact = (psf->norm_double == SF_TRUE) ? (1.0 * 0x8000) : 1.0 ;
-
- sptr = psf->u.sbuf ;
- bufferlen = ((SF_BUFFER_LEN / psf->blockwidth) * psf->blockwidth) / sizeof (short) ;
- while (len > 0)
- { writecount = (len >= bufferlen) ? bufferlen : len ;
- for (k = 0 ; k < writecount ; k++)
- sptr [k] = lrint (normfact * ptr [total + k]) ;
- count = g72x_write_block (psf, pg72x, sptr, writecount) ;
-
- total += count ;
- len -= writecount ;
- if (count != writecount)
- break ;
- } ;
-
- return total ;
-} /* g72x_write_d */
-
-static int
-g72x_close (SF_PRIVATE *psf)
-{ G72x_PRIVATE *pg72x ;
-
- pg72x = (G72x_PRIVATE*) psf->fdata ;
-
- if (psf->mode == SFM_WRITE)
- { /* If a block has been partially assembled, write it out
- ** as the final block.
- */
-
- if (pg72x->sample_curr && pg72x->sample_curr < G72x_BLOCK_SIZE)
- psf_g72x_encode_block (psf, pg72x) ;
-
- if (psf->write_header)
- psf->write_header (psf, SF_FALSE) ;
- } ;
-
- /* Only free the pointer allocated by g72x_(reader|writer)_init. */
- free (pg72x->private) ;
-
- return 0 ;
-} /* g72x_close */
-
-/*
-** Do not edit or modify anything in this comment block.
-** The arch-tag line is a file identity tag for the GNU Arch
-** revision control system.
-**
-** arch-tag: 3cc5439e-7247-486b-b2e6-11a4affa5744
-*/
diff --git a/libs/libsndfile/src/gsm610.c b/libs/libsndfile/src/gsm610.c
deleted file mode 100644
index db954ccb18..0000000000
--- a/libs/libsndfile/src/gsm610.c
+++ /dev/null
@@ -1,628 +0,0 @@
-/*
-** Copyright (C) 1999-2006 Erik de Castro Lopo <erikd@mega-nerd.com>
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU Lesser General Public License as published by
-** the Free Software Foundation; either version 2.1 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU Lesser General Public License for more details.
-**
-** You should have received a copy of the GNU Lesser General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-*/
-
-#include "sfconfig.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "sndfile.h"
-#include "sfendian.h"
-#include "float_cast.h"
-#include "common.h"
-#include "wav_w64.h"
-#include "GSM610/gsm.h"
-
-#define GSM610_BLOCKSIZE 33
-#define GSM610_SAMPLES 160
-
-typedef struct gsm610_tag
-{ int blocks ;
- int blockcount, samplecount ;
- int samplesperblock, blocksize ;
-
- int (*decode_block) (SF_PRIVATE *psf, struct gsm610_tag *pgsm610) ;
- int (*encode_block) (SF_PRIVATE *psf, struct gsm610_tag *pgsm610) ;
-
- short samples [WAV_W64_GSM610_SAMPLES] ;
- unsigned char block [WAV_W64_GSM610_BLOCKSIZE] ;
-
- /* Damn I hate typedef-ed pointers; yes, gsm is a pointer type. */
- gsm gsm_data ;
-} GSM610_PRIVATE ;
-
-static sf_count_t gsm610_read_s (SF_PRIVATE *psf, short *ptr, sf_count_t len) ;
-static sf_count_t gsm610_read_i (SF_PRIVATE *psf, int *ptr, sf_count_t len) ;
-static sf_count_t gsm610_read_f (SF_PRIVATE *psf, float *ptr, sf_count_t len) ;
-static sf_count_t gsm610_read_d (SF_PRIVATE *psf, double *ptr, sf_count_t len) ;
-
-static sf_count_t gsm610_write_s (SF_PRIVATE *psf, const short *ptr, sf_count_t len) ;
-static sf_count_t gsm610_write_i (SF_PRIVATE *psf, const int *ptr, sf_count_t len) ;
-static sf_count_t gsm610_write_f (SF_PRIVATE *psf, const float *ptr, sf_count_t len) ;
-static sf_count_t gsm610_write_d (SF_PRIVATE *psf, const double *ptr, sf_count_t len) ;
-
-static int gsm610_read_block (SF_PRIVATE *psf, GSM610_PRIVATE *pgsm610, short *ptr, int len) ;
-static int gsm610_write_block (SF_PRIVATE *psf, GSM610_PRIVATE *pgsm610, const short *ptr, int len) ;
-
-static int gsm610_decode_block (SF_PRIVATE *psf, GSM610_PRIVATE *pgsm610) ;
-static int gsm610_encode_block (SF_PRIVATE *psf, GSM610_PRIVATE *pgsm610) ;
-
-static int gsm610_wav_decode_block (SF_PRIVATE *psf, GSM610_PRIVATE *pgsm610) ;
-static int gsm610_wav_encode_block (SF_PRIVATE *psf, GSM610_PRIVATE *pgsm610) ;
-
-static sf_count_t gsm610_seek (SF_PRIVATE *psf, int mode, sf_count_t offset) ;
-
-static int gsm610_close (SF_PRIVATE *psf) ;
-
-/*============================================================================================
-** WAV GSM610 initialisation function.
-*/
-
-int
-gsm610_init (SF_PRIVATE *psf)
-{ GSM610_PRIVATE *pgsm610 ;
- int true_flag = 1 ;
-
- if (psf->fdata != NULL)
- { psf_log_printf (psf, "*** psf->fdata is not NULL.\n") ;
- return SFE_INTERNAL ;
- } ;
-
- if (psf->mode == SFM_RDWR)
- return SFE_BAD_MODE_RW ;
-
- psf->sf.seekable = SF_FALSE ;
-
- if ((pgsm610 = calloc (1, sizeof (GSM610_PRIVATE))) == NULL)
- return SFE_MALLOC_FAILED ;
-
- psf->fdata = (void*) pgsm610 ;
-
- memset (pgsm610, 0, sizeof (GSM610_PRIVATE)) ;
-
-/*============================================================
-
-Need separate gsm_data structs for encode and decode.
-
-============================================================*/
-
- if ((pgsm610->gsm_data = gsm_create ()) == NULL)
- return SFE_MALLOC_FAILED ;
-
- switch (psf->sf.format & SF_FORMAT_TYPEMASK)
- { case SF_FORMAT_WAV :
- case SF_FORMAT_WAVEX :
- case SF_FORMAT_W64 :
- gsm_option (pgsm610->gsm_data, GSM_OPT_WAV49, &true_flag) ;
-
- pgsm610->encode_block = gsm610_wav_encode_block ;
- pgsm610->decode_block = gsm610_wav_decode_block ;
-
- pgsm610->samplesperblock = WAV_W64_GSM610_SAMPLES ;
- pgsm610->blocksize = WAV_W64_GSM610_BLOCKSIZE ;
- break ;
-
- case SF_FORMAT_AIFF :
- case SF_FORMAT_RAW :
- pgsm610->encode_block = gsm610_encode_block ;
- pgsm610->decode_block = gsm610_decode_block ;
-
- pgsm610->samplesperblock = GSM610_SAMPLES ;
- pgsm610->blocksize = GSM610_BLOCKSIZE ;
- break ;
-
- default :
- return SFE_INTERNAL ;
- break ;
- } ;
-
- if (psf->mode == SFM_READ)
- { if (psf->datalength % pgsm610->blocksize == 0)
- pgsm610->blocks = psf->datalength / pgsm610->blocksize ;
- else if (psf->datalength % pgsm610->blocksize == 1 && pgsm610->blocksize == GSM610_BLOCKSIZE)
- { /*
- ** Weird AIFF specific case.
- ** AIFF chunks must be at an odd offset from the start of file and
- ** GSM610_BLOCKSIZE is odd which can result in an odd length SSND
- ** chunk. The SSND chunk then gets padded on write which means that
- ** when it is read the datalength is too big by 1.
- */
- pgsm610->blocks = psf->datalength / pgsm610->blocksize ;
- }
- else
- { psf_log_printf (psf, "*** Warning : data chunk seems to be truncated.\n") ;
- pgsm610->blocks = psf->datalength / pgsm610->blocksize + 1 ;
- } ;
-
- psf->sf.frames = pgsm610->samplesperblock * pgsm610->blocks ;
-
- pgsm610->decode_block (psf, pgsm610) ; /* Read first block. */
-
- psf->read_short = gsm610_read_s ;
- psf->read_int = gsm610_read_i ;
- psf->read_float = gsm610_read_f ;
- psf->read_double = gsm610_read_d ;
- } ;
-
- if (psf->mode == SFM_WRITE)
- { pgsm610->blockcount = 0 ;
- pgsm610->samplecount = 0 ;
-
- psf->write_short = gsm610_write_s ;
- psf->write_int = gsm610_write_i ;
- psf->write_float = gsm610_write_f ;
- psf->write_double = gsm610_write_d ;
- } ;
-
- psf->codec_close = gsm610_close ;
-
- psf->seek = gsm610_seek ;
-
- psf->filelength = psf_get_filelen (psf) ;
- psf->datalength = psf->filelength - psf->dataoffset ;
-
- return 0 ;
-} /* gsm610_init */
-
-/*============================================================================================
-** GSM 6.10 Read Functions.
-*/
-
-static int
-gsm610_wav_decode_block (SF_PRIVATE *psf, GSM610_PRIVATE *pgsm610)
-{ int k ;
-
- pgsm610->blockcount ++ ;
- pgsm610->samplecount = 0 ;
-
- if (pgsm610->blockcount > pgsm610->blocks)
- { memset (pgsm610->samples, 0, WAV_W64_GSM610_SAMPLES * sizeof (short)) ;
- return 1 ;
- } ;
-
- if ((k = psf_fread (pgsm610->block, 1, WAV_W64_GSM610_BLOCKSIZE, psf)) != WAV_W64_GSM610_BLOCKSIZE)
- psf_log_printf (psf, "*** Warning : short read (%d != %d).\n", k, WAV_W64_GSM610_BLOCKSIZE) ;
-
- if (gsm_decode (pgsm610->gsm_data, pgsm610->block, pgsm610->samples) < 0)
- { psf_log_printf (psf, "Error from gsm_decode() on frame : %d\n", pgsm610->blockcount) ;
- return 0 ;
- } ;
-
- if (gsm_decode (pgsm610->gsm_data, pgsm610->block + (WAV_W64_GSM610_BLOCKSIZE + 1) / 2, pgsm610->samples + WAV_W64_GSM610_SAMPLES / 2) < 0)
- { psf_log_printf (psf, "Error from gsm_decode() on frame : %d.5\n", pgsm610->blockcount) ;
- return 0 ;
- } ;
-
- return 1 ;
-} /* gsm610_wav_decode_block */
-
-static int
-gsm610_decode_block (SF_PRIVATE *psf, GSM610_PRIVATE *pgsm610)
-{ int k ;
-
- pgsm610->blockcount ++ ;
- pgsm610->samplecount = 0 ;
-
- if (pgsm610->blockcount > pgsm610->blocks)
- { memset (pgsm610->samples, 0, GSM610_SAMPLES * sizeof (short)) ;
- return 1 ;
- } ;
-
- if ((k = psf_fread (pgsm610->block, 1, GSM610_BLOCKSIZE, psf)) != GSM610_BLOCKSIZE)
- psf_log_printf (psf, "*** Warning : short read (%d != %d).\n", k, GSM610_BLOCKSIZE) ;
-
- if (gsm_decode (pgsm610->gsm_data, pgsm610->block, pgsm610->samples) < 0)
- { psf_log_printf (psf, "Error from gsm_decode() on frame : %d\n", pgsm610->blockcount) ;
- return 0 ;
- } ;
-
- return 1 ;
-} /* gsm610_decode_block */
-
-static int
-gsm610_read_block (SF_PRIVATE *psf, GSM610_PRIVATE *pgsm610, short *ptr, int len)
-{ int count, total = 0, indx = 0 ;
-
- while (indx < len)
- { if (pgsm610->blockcount >= pgsm610->blocks && pgsm610->samplecount >= pgsm610->samplesperblock)
- { memset (&(ptr [indx]), 0, (len - indx) * sizeof (short)) ;
- return total ;
- } ;
-
- if (pgsm610->samplecount >= pgsm610->samplesperblock)
- pgsm610->decode_block (psf, pgsm610) ;
-
- count = pgsm610->samplesperblock - pgsm610->samplecount ;
- count = (len - indx > count) ? count : len - indx ;
-
- memcpy (&(ptr [indx]), &(pgsm610->samples [pgsm610->samplecount]), count * sizeof (short)) ;
- indx += count ;
- pgsm610->samplecount += count ;
- total = indx ;
- } ;
-
- return total ;
-} /* gsm610_read_block */
-
-static sf_count_t
-gsm610_read_s (SF_PRIVATE *psf, short *ptr, sf_count_t len)
-{ GSM610_PRIVATE *pgsm610 ;
- int readcount, count ;
- sf_count_t total = 0 ;
-
- if (psf->fdata == NULL)
- return 0 ;
- pgsm610 = (GSM610_PRIVATE*) psf->fdata ;
-
- while (len > 0)
- { readcount = (len > 0x10000000) ? 0x1000000 : (int) len ;
-
- count = gsm610_read_block (psf, pgsm610, ptr, readcount) ;
-
- total += count ;
- len -= count ;
-
- if (count != readcount)
- break ;
- } ;
-
- return total ;
-} /* gsm610_read_s */
-
-static sf_count_t
-gsm610_read_i (SF_PRIVATE *psf, int *ptr, sf_count_t len)
-{ GSM610_PRIVATE *pgsm610 ;
- short *sptr ;
- int k, bufferlen, readcount = 0, count ;
- sf_count_t total = 0 ;
-
- if (psf->fdata == NULL)
- return 0 ;
- pgsm610 = (GSM610_PRIVATE*) psf->fdata ;
-
- sptr = psf->u.sbuf ;
- bufferlen = ARRAY_LEN (psf->u.sbuf) ;
- while (len > 0)
- { readcount = (len >= bufferlen) ? bufferlen : len ;
- count = gsm610_read_block (psf, pgsm610, sptr, readcount) ;
- for (k = 0 ; k < readcount ; k++)
- ptr [total + k] = sptr [k] << 16 ;
-
- total += count ;
- len -= readcount ;
- } ;
- return total ;
-} /* gsm610_read_i */
-
-static sf_count_t
-gsm610_read_f (SF_PRIVATE *psf, float *ptr, sf_count_t len)
-{ GSM610_PRIVATE *pgsm610 ;
- short *sptr ;
- int k, bufferlen, readcount = 0, count ;
- sf_count_t total = 0 ;
- float normfact ;
-
- if (psf->fdata == NULL)
- return 0 ;
- pgsm610 = (GSM610_PRIVATE*) psf->fdata ;
-
- normfact = (psf->norm_float == SF_TRUE) ? 1.0 / ((float) 0x8000) : 1.0 ;
-
- sptr = psf->u.sbuf ;
- bufferlen = ARRAY_LEN (psf->u.sbuf) ;
- while (len > 0)
- { readcount = (len >= bufferlen) ? bufferlen : len ;
- count = gsm610_read_block (psf, pgsm610, sptr, readcount) ;
- for (k = 0 ; k < readcount ; k++)
- ptr [total + k] = normfact * sptr [k] ;
-
- total += count ;
- len -= readcount ;
- } ;
- return total ;
-} /* gsm610_read_f */
-
-static sf_count_t
-gsm610_read_d (SF_PRIVATE *psf, double *ptr, sf_count_t len)
-{ GSM610_PRIVATE *pgsm610 ;
- short *sptr ;
- int k, bufferlen, readcount = 0, count ;
- sf_count_t total = 0 ;
- double normfact ;
-
- normfact = (psf->norm_double == SF_TRUE) ? 1.0 / ((double) 0x8000) : 1.0 ;
-
- if (psf->fdata == NULL)
- return 0 ;
- pgsm610 = (GSM610_PRIVATE*) psf->fdata ;
-
- sptr = psf->u.sbuf ;
- bufferlen = ARRAY_LEN (psf->u.sbuf) ;
- while (len > 0)
- { readcount = (len >= bufferlen) ? bufferlen : len ;
- count = gsm610_read_block (psf, pgsm610, sptr, readcount) ;
- for (k = 0 ; k < readcount ; k++)
- ptr [total + k] = normfact * sptr [k] ;
-
- total += count ;
- len -= readcount ;
- } ;
- return total ;
-} /* gsm610_read_d */
-
-static sf_count_t
-gsm610_seek (SF_PRIVATE *psf, int mode, sf_count_t offset)
-{ GSM610_PRIVATE *pgsm610 ;
- int newblock, newsample ;
-
- mode = mode ;
-
- if (psf->fdata == NULL)
- return 0 ;
- pgsm610 = (GSM610_PRIVATE*) psf->fdata ;
-
- if (psf->dataoffset < 0)
- { psf->error = SFE_BAD_SEEK ;
- return PSF_SEEK_ERROR ;
- } ;
-
- if (offset == 0)
- { int true_flag = 1 ;
-
- psf_fseek (psf, psf->dataoffset, SEEK_SET) ;
- pgsm610->blockcount = 0 ;
-
- gsm_init (pgsm610->gsm_data) ;
- if ((psf->sf.format & SF_FORMAT_TYPEMASK) == SF_FORMAT_WAV ||
- (psf->sf.format & SF_FORMAT_TYPEMASK) == SF_FORMAT_W64)
- gsm_option (pgsm610->gsm_data, GSM_OPT_WAV49, &true_flag) ;
-
- pgsm610->decode_block (psf, pgsm610) ;
- pgsm610->samplecount = 0 ;
- return 0 ;
- } ;
-
- if (offset < 0 || offset > pgsm610->blocks * pgsm610->samplesperblock)
- { psf->error = SFE_BAD_SEEK ;
- return PSF_SEEK_ERROR ;
- } ;
-
- newblock = offset / pgsm610->samplesperblock ;
- newsample = offset % pgsm610->samplesperblock ;
-
- if (psf->mode == SFM_READ)
- { if (psf->read_current != newblock * pgsm610->samplesperblock + newsample)
- { psf_fseek (psf, psf->dataoffset + newblock * pgsm610->samplesperblock, SEEK_SET) ;
- pgsm610->blockcount = newblock ;
- pgsm610->decode_block (psf, pgsm610) ;
- pgsm610->samplecount = newsample ;
- } ;
-
- return newblock * pgsm610->samplesperblock + newsample ;
- } ;
-
- /* What to do about write??? */
- psf->error = SFE_BAD_SEEK ;
- return PSF_SEEK_ERROR ;
-} /* gsm610_seek */
-
-/*==========================================================================================
-** GSM 6.10 Write Functions.
-*/
-
-static int
-gsm610_encode_block (SF_PRIVATE *psf, GSM610_PRIVATE *pgsm610)
-{ int k ;
-
- /* Encode the samples. */
- gsm_encode (pgsm610->gsm_data, pgsm610->samples, pgsm610->block) ;
-
- /* Write the block to disk. */
- if ((k = psf_fwrite (pgsm610->block, 1, GSM610_BLOCKSIZE, psf)) != GSM610_BLOCKSIZE)
- psf_log_printf (psf, "*** Warning : short write (%d != %d).\n", k, GSM610_BLOCKSIZE) ;
-
- pgsm610->samplecount = 0 ;
- pgsm610->blockcount ++ ;
-
- /* Set samples to zero for next block. */
- memset (pgsm610->samples, 0, WAV_W64_GSM610_SAMPLES * sizeof (short)) ;
-
- return 1 ;
-} /* gsm610_encode_block */
-
-static int
-gsm610_wav_encode_block (SF_PRIVATE *psf, GSM610_PRIVATE *pgsm610)
-{ int k ;
-
- /* Encode the samples. */
- gsm_encode (pgsm610->gsm_data, pgsm610->samples, pgsm610->block) ;
- gsm_encode (pgsm610->gsm_data, pgsm610->samples+WAV_W64_GSM610_SAMPLES/2, pgsm610->block+WAV_W64_GSM610_BLOCKSIZE/2) ;
-
- /* Write the block to disk. */
- if ((k = psf_fwrite (pgsm610->block, 1, WAV_W64_GSM610_BLOCKSIZE, psf)) != WAV_W64_GSM610_BLOCKSIZE)
- psf_log_printf (psf, "*** Warning : short write (%d != %d).\n", k, WAV_W64_GSM610_BLOCKSIZE) ;
-
- pgsm610->samplecount = 0 ;
- pgsm610->blockcount ++ ;
-
- /* Set samples to zero for next block. */
- memset (pgsm610->samples, 0, WAV_W64_GSM610_SAMPLES * sizeof (short)) ;
-
- return 1 ;
-} /* gsm610_wav_encode_block */
-
-static int
-gsm610_write_block (SF_PRIVATE *psf, GSM610_PRIVATE *pgsm610, const short *ptr, int len)
-{ int count, total = 0, indx = 0 ;
-
- while (indx < len)
- { count = pgsm610->samplesperblock - pgsm610->samplecount ;
-
- if (count > len - indx)
- count = len - indx ;
-
- memcpy (&(pgsm610->samples [pgsm610->samplecount]), &(ptr [indx]), count * sizeof (short)) ;
- indx += count ;
- pgsm610->samplecount += count ;
- total = indx ;
-
- if (pgsm610->samplecount >= pgsm610->samplesperblock)
- pgsm610->encode_block (psf, pgsm610) ;
- } ;
-
- return total ;
-} /* gsm610_write_block */
-
-static sf_count_t
-gsm610_write_s (SF_PRIVATE *psf, const short *ptr, sf_count_t len)
-{ GSM610_PRIVATE *pgsm610 ;
- int writecount, count ;
- sf_count_t total = 0 ;
-
- if (psf->fdata == NULL)
- return 0 ;
- pgsm610 = (GSM610_PRIVATE*) psf->fdata ;
-
- while (len > 0)
- { writecount = (len > 0x10000000) ? 0x10000000 : (int) len ;
-
- count = gsm610_write_block (psf, pgsm610, ptr, writecount) ;
-
- total += count ;
- len -= count ;
-
- if (count != writecount)
- break ;
- } ;
-
- return total ;
-} /* gsm610_write_s */
-
-static sf_count_t
-gsm610_write_i (SF_PRIVATE *psf, const int *ptr, sf_count_t len)
-{ GSM610_PRIVATE *pgsm610 ;
- short *sptr ;
- int k, bufferlen, writecount = 0, count ;
- sf_count_t total = 0 ;
-
- if (psf->fdata == NULL)
- return 0 ;
- pgsm610 = (GSM610_PRIVATE*) psf->fdata ;
-
- sptr = psf->u.sbuf ;
- bufferlen = ARRAY_LEN (psf->u.sbuf) ;
- while (len > 0)
- { writecount = (len >= bufferlen) ? bufferlen : len ;
- for (k = 0 ; k < writecount ; k++)
- sptr [k] = ptr [total + k] >> 16 ;
- count = gsm610_write_block (psf, pgsm610, sptr, writecount) ;
-
- total += count ;
- len -= writecount ;
- } ;
- return total ;
-} /* gsm610_write_i */
-
-static sf_count_t
-gsm610_write_f (SF_PRIVATE *psf, const float *ptr, sf_count_t len)
-{ GSM610_PRIVATE *pgsm610 ;
- short *sptr ;
- int k, bufferlen, writecount = 0, count ;
- sf_count_t total = 0 ;
- float normfact ;
-
- if (psf->fdata == NULL)
- return 0 ;
- pgsm610 = (GSM610_PRIVATE*) psf->fdata ;
-
- normfact = (psf->norm_float == SF_TRUE) ? (1.0 * 0x7FFF) : 1.0 ;
-
- sptr = psf->u.sbuf ;
- bufferlen = ARRAY_LEN (psf->u.sbuf) ;
- while (len > 0)
- { writecount = (len >= bufferlen) ? bufferlen : len ;
- for (k = 0 ; k < writecount ; k++)
- sptr [k] = lrintf (normfact * ptr [total + k]) ;
- count = gsm610_write_block (psf, pgsm610, sptr, writecount) ;
-
- total += count ;
- len -= writecount ;
- } ;
- return total ;
-} /* gsm610_write_f */
-
-static sf_count_t
-gsm610_write_d (SF_PRIVATE *psf, const double *ptr, sf_count_t len)
-{ GSM610_PRIVATE *pgsm610 ;
- short *sptr ;
- int k, bufferlen, writecount = 0, count ;
- sf_count_t total = 0 ;
- double normfact ;
-
- if (psf->fdata == NULL)
- return 0 ;
- pgsm610 = (GSM610_PRIVATE*) psf->fdata ;
-
- normfact = (psf->norm_double == SF_TRUE) ? (1.0 * 0x7FFF) : 1.0 ;
-
- sptr = psf->u.sbuf ;
- bufferlen = ARRAY_LEN (psf->u.sbuf) ;
- while (len > 0)
- { writecount = (len >= bufferlen) ? bufferlen : len ;
- for (k = 0 ; k < writecount ; k++)
- sptr [k] = lrint (normfact * ptr [total + k]) ;
- count = gsm610_write_block (psf, pgsm610, sptr, writecount) ;
-
- total += count ;
- len -= writecount ;
- } ;
- return total ;
-} /* gsm610_write_d */
-
-static int
-gsm610_close (SF_PRIVATE *psf)
-{ GSM610_PRIVATE *pgsm610 ;
-
- if (psf->fdata == NULL)
- return 0 ;
-
- pgsm610 = (GSM610_PRIVATE*) psf->fdata ;
-
- if (psf->mode == SFM_WRITE)
- { /* If a block has been partially assembled, write it out
- ** as the final block.
- */
-
- if (pgsm610->samplecount && pgsm610->samplecount < pgsm610->samplesperblock)
- pgsm610->encode_block (psf, pgsm610) ;
- } ;
-
- if (pgsm610->gsm_data)
- gsm_destroy (pgsm610->gsm_data) ;
-
- return 0 ;
-} /* gsm610_close */
-
-/*
-** Do not edit or modify anything in this comment block.
-** The arch-tag line is a file identity tag for the GNU Arch
-** revision control system.
-**
-** arch-tag: 8575187d-af4f-4acf-b9dd-6ff705628345
-*/
diff --git a/libs/libsndfile/src/htk.c b/libs/libsndfile/src/htk.c
deleted file mode 100644
index 716868b5b8..0000000000
--- a/libs/libsndfile/src/htk.c
+++ /dev/null
@@ -1,225 +0,0 @@
-/*
-** Copyright (C) 2002-2004 Erik de Castro Lopo <erikd@mega-nerd.com>
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU Lesser General Public License as published by
-** the Free Software Foundation; either version 2.1 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU Lesser General Public License for more details.
-**
-** You should have received a copy of the GNU Lesser General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-*/
-
-#include "sfconfig.h"
-
-#include <stdio.h>
-#include <fcntl.h>
-#include <string.h>
-#include <ctype.h>
-
-#include "sndfile.h"
-#include "sfendian.h"
-#include "common.h"
-
-/*------------------------------------------------------------------------------
-** Macros to handle big/little endian issues.
-*/
-
-#define SFE_HTK_BAD_FILE_LEN 1666
-#define SFE_HTK_NOT_WAVEFORM 1667
-
-/*------------------------------------------------------------------------------
-** Private static functions.
-*/
-
-static int htk_close (SF_PRIVATE *psf) ;
-
-static int htk_write_header (SF_PRIVATE *psf, int calc_length) ;
-static int htk_read_header (SF_PRIVATE *psf) ;
-
-/*------------------------------------------------------------------------------
-** Public function.
-*/
-
-int
-htk_open (SF_PRIVATE *psf)
-{ int subformat ;
- int error = 0 ;
-
- if (psf->is_pipe)
- return SFE_HTK_NO_PIPE ;
-
- if (psf->mode == SFM_READ || (psf->mode == SFM_RDWR && psf->filelength > 0))
- { if ((error = htk_read_header (psf)))
- return error ;
- } ;
-
- subformat = psf->sf.format & SF_FORMAT_SUBMASK ;
-
- if (psf->mode == SFM_WRITE || psf->mode == SFM_RDWR)
- { if ((psf->sf.format & SF_FORMAT_TYPEMASK) != SF_FORMAT_HTK)
- return SFE_BAD_OPEN_FORMAT ;
-
- psf->endian = SF_ENDIAN_BIG ;
-
- if (htk_write_header (psf, SF_FALSE))
- return psf->error ;
-
- psf->write_header = htk_write_header ;
- } ;
-
- psf->container_close = htk_close ;
-
- psf->blockwidth = psf->bytewidth * psf->sf.channels ;
-
- switch (subformat)
- { case SF_FORMAT_PCM_16 : /* 16-bit linear PCM. */
- error = pcm_init (psf) ;
- break ;
-
- default : break ;
- } ;
-
- return error ;
-} /* htk_open */
-
-/*------------------------------------------------------------------------------
-*/
-
-static int
-htk_close (SF_PRIVATE *psf)
-{
- if (psf->mode == SFM_WRITE || psf->mode == SFM_RDWR)
- htk_write_header (psf, SF_TRUE) ;
-
- return 0 ;
-} /* htk_close */
-
-static int
-htk_write_header (SF_PRIVATE *psf, int calc_length)
-{ sf_count_t current ;
- int sample_count, sample_period ;
-
- current = psf_ftell (psf) ;
-
- if (calc_length)
- psf->filelength = psf_get_filelen (psf) ;
-
- /* Reset the current header length to zero. */
- psf->header [0] = 0 ;
- psf->headindex = 0 ;
- psf_fseek (psf, 0, SEEK_SET) ;
-
- if (psf->filelength > 12)
- sample_count = (psf->filelength - 12) / 2 ;
- else
- sample_count = 0 ;
-
- sample_period = 10000000 / psf->sf.samplerate ;
-
- psf_binheader_writef (psf, "E444", sample_count, sample_period, 0x20000) ;
-
- /* Header construction complete so write it out. */
- psf_fwrite (psf->header, psf->headindex, 1, psf) ;
-
- if (psf->error)
- return psf->error ;
-
- psf->dataoffset = psf->headindex ;
-
- if (current > 0)
- psf_fseek (psf, current, SEEK_SET) ;
-
- return psf->error ;
-} /* htk_write_header */
-
-/*
-** Found the following info in a comment block within Bill Schottstaedt's
-** sndlib library.
-**
-** HTK format files consist of a contiguous sequence of samples preceded by a
-** header. Each sample is a vector of either 2-byte integers or 4-byte floats.
-** 2-byte integers are used for compressed forms as described below and for
-** vector quantised data as described later in section 5.11. HTK format data
-** files can also be used to store speech waveforms as described in section 5.8.
-**
-** The HTK file format header is 12 bytes long and contains the following data
-** nSamples -- number of samples in file (4-byte integer)
-** sampPeriod -- sample period in 100ns units (4-byte integer)
-** sampSize -- number of bytes per sample (2-byte integer)
-** parmKind -- a code indicating the sample kind (2-byte integer)
-**
-** The parameter kind consists of a 6 bit code representing the basic
-** parameter kind plus additional bits for each of the possible qualifiers.
-** The basic parameter kind codes are
-**
-** 0 WAVEFORM sampled waveform
-** 1 LPC linear prediction filter coefficients
-** 2 LPREFC linear prediction reflection coefficients
-** 3 LPCEPSTRA LPC cepstral coefficients
-** 4 LPDELCEP LPC cepstra plus delta coefficients
-** 5 IREFC LPC reflection coef in 16 bit integer format
-** 6 MFCC mel-frequency cepstral coefficients
-** 7 FBANK log mel-filter bank channel outputs
-** 8 MELSPEC linear mel-filter bank channel outputs
-** 9 USER user defined sample kind
-** 10 DISCRETE vector quantised data
-**
-** and the bit-encoding for the qualifiers (in octal) is
-** _E 000100 has energy
-** _N 000200 absolute energy suppressed
-** _D 000400 has delta coefficients
-** _A 001000 has acceleration coefficients
-** _C 002000 is compressed
-** _Z 004000 has zero mean static coef.
-** _K 010000 has CRC checksum
-** _O 020000 has 0'th cepstral coef.
-*/
-
-static int
-htk_read_header (SF_PRIVATE *psf)
-{ int sample_count, sample_period, marker ;
-
- psf_binheader_readf (psf, "pE444", 0, &sample_count, &sample_period, &marker) ;
-
- if (2 * sample_count + 12 != psf->filelength)
- return SFE_HTK_BAD_FILE_LEN ;
-
- if (marker != 0x20000)
- return SFE_HTK_NOT_WAVEFORM ;
-
- psf->sf.channels = 1 ;
- psf->sf.samplerate = 10000000 / sample_period ;
-
- psf_log_printf (psf, "HTK Waveform file\n Sample Count : %d\n Sample Period : %d => %d Hz\n",
- sample_count, sample_period, psf->sf.samplerate) ;
-
- psf->sf.format = SF_FORMAT_HTK | SF_FORMAT_PCM_16 ;
- psf->bytewidth = 2 ;
-
- /* HTK always has a 12 byte header. */
- psf->dataoffset = 12 ;
- psf->endian = SF_ENDIAN_BIG ;
-
- psf->datalength = psf->filelength - psf->dataoffset ;
-
- psf->blockwidth = psf->sf.channels * psf->bytewidth ;
-
- if (! psf->sf.frames && psf->blockwidth)
- psf->sf.frames = (psf->filelength - psf->dataoffset) / psf->blockwidth ;
-
- return 0 ;
-} /* htk_read_header */
-/*
-** Do not edit or modify anything in this comment block.
-** The arch-tag line is a file identity tag for the GNU Arch
-** revision control system.
-**
-** arch-tag: c350e972-082e-4c20-8934-03391a723560
-*/
diff --git a/libs/libsndfile/src/ima_adpcm.c b/libs/libsndfile/src/ima_adpcm.c
deleted file mode 100644
index abc49e5774..0000000000
--- a/libs/libsndfile/src/ima_adpcm.c
+++ /dev/null
@@ -1,976 +0,0 @@
-/*
-** Copyright (C) 1999-2005 Erik de Castro Lopo <erikd@mega-nerd.com>
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU Lesser General Public License as published by
-** the Free Software Foundation; either version 2.1 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU Lesser General Public License for more details.
-**
-** You should have received a copy of the GNU Lesser General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-*/
-
-#include "sfconfig.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "sndfile.h"
-#include "sfendian.h"
-#include "float_cast.h"
-#include "common.h"
-
-typedef struct IMA_ADPCM_PRIVATE_tag
-{ int (*decode_block) (SF_PRIVATE *psf, struct IMA_ADPCM_PRIVATE_tag *pima) ;
- int (*encode_block) (SF_PRIVATE *psf, struct IMA_ADPCM_PRIVATE_tag *pima) ;
-
- int channels, blocksize, samplesperblock, blocks ;
- int blockcount, samplecount ;
- int previous [2] ;
- int stepindx [2] ;
- unsigned char *block ;
- short *samples ;
-#if HAVE_FLEXIBLE_ARRAY
- short data [] ; /* ISO C99 struct flexible array. */
-#else
- short data [0] ; /* This is a hack and might not work. */
-#endif
-} IMA_ADPCM_PRIVATE ;
-
-/*============================================================================================
-** Predefined IMA ADPCM data.
-*/
-
-static int ima_indx_adjust [16] =
-{ -1, -1, -1, -1, /* +0 - +3, decrease the step size */
- 2, 4, 6, 8, /* +4 - +7, increase the step size */
- -1, -1, -1, -1, /* -0 - -3, decrease the step size */
- 2, 4, 6, 8, /* -4 - -7, increase the step size */
-} ;
-
-static int ima_step_size [89] =
-{ 7, 8, 9, 10, 11, 12, 13, 14, 16, 17, 19, 21, 23, 25, 28, 31, 34, 37, 41, 45,
- 50, 55, 60, 66, 73, 80, 88, 97, 107, 118, 130, 143, 157, 173, 190, 209, 230,
- 253, 279, 307, 337, 371, 408, 449, 494, 544, 598, 658, 724, 796, 876, 963,
- 1060, 1166, 1282, 1411, 1552, 1707, 1878, 2066, 2272, 2499, 2749, 3024, 3327,
- 3660, 4026, 4428, 4871, 5358, 5894, 6484, 7132, 7845, 8630, 9493, 10442,
- 11487, 12635, 13899, 15289, 16818, 18500, 20350, 22385, 24623, 27086, 29794,
- 32767
-} ;
-
-static int ima_reader_init (SF_PRIVATE *psf, int blockalign, int samplesperblock) ;
-static int ima_writer_init (SF_PRIVATE *psf, int blockalign) ;
-
-static int ima_read_block (SF_PRIVATE *psf, IMA_ADPCM_PRIVATE *pima, short *ptr, int len) ;
-static int ima_write_block (SF_PRIVATE *psf, IMA_ADPCM_PRIVATE *pima, const short *ptr, int len) ;
-
-static sf_count_t ima_read_s (SF_PRIVATE *psf, short *ptr, sf_count_t len) ;
-static sf_count_t ima_read_i (SF_PRIVATE *psf, int *ptr, sf_count_t len) ;
-static sf_count_t ima_read_f (SF_PRIVATE *psf, float *ptr, sf_count_t len) ;
-static sf_count_t ima_read_d (SF_PRIVATE *psf, double *ptr, sf_count_t len) ;
-
-static sf_count_t ima_write_s (SF_PRIVATE *psf, const short *ptr, sf_count_t len) ;
-static sf_count_t ima_write_i (SF_PRIVATE *psf, const int *ptr, sf_count_t len) ;
-static sf_count_t ima_write_f (SF_PRIVATE *psf, const float *ptr, sf_count_t len) ;
-static sf_count_t ima_write_d (SF_PRIVATE *psf, const double *ptr, sf_count_t len) ;
-
-static sf_count_t ima_seek (SF_PRIVATE *psf, int mode, sf_count_t offset) ;
-
-static int ima_close (SF_PRIVATE *psf) ;
-
-static int wav_w64_ima_decode_block (SF_PRIVATE *psf, IMA_ADPCM_PRIVATE *pima) ;
-static int wav_w64_ima_encode_block (SF_PRIVATE *psf, IMA_ADPCM_PRIVATE *pima) ;
-
-/*-static int aiff_ima_reader_init (SF_PRIVATE *psf, int blockalign, int samplesperblock) ;-*/
-static int aiff_ima_decode_block (SF_PRIVATE *psf, IMA_ADPCM_PRIVATE *pima) ;
-static int aiff_ima_encode_block (SF_PRIVATE *psf, IMA_ADPCM_PRIVATE *pima) ;
-
-
-/*============================================================================================
-** IMA ADPCM Reader initialisation function.
-*/
-
-int
-wav_w64_ima_init (SF_PRIVATE *psf, int blockalign, int samplesperblock)
-{ int error ;
-
- if (psf->fdata != NULL)
- { psf_log_printf (psf, "*** psf->fdata is not NULL.\n") ;
- return SFE_INTERNAL ;
- } ;
-
- if (psf->mode == SFM_RDWR)
- return SFE_BAD_MODE_RW ;
-
- if (psf->mode == SFM_READ)
- if ((error = ima_reader_init (psf, blockalign, samplesperblock)))
- return error ;
-
- if (psf->mode == SFM_WRITE)
- if ((error = ima_writer_init (psf, blockalign)))
- return error ;
-
- psf->codec_close = ima_close ;
- psf->seek = ima_seek ;
-
- return 0 ;
-} /* wav_w64_ima_init */
-
-int
-aiff_ima_init (SF_PRIVATE *psf, int blockalign, int samplesperblock)
-{ int error ;
-
- if (psf->mode == SFM_RDWR)
- return SFE_BAD_MODE_RW ;
-
- if (psf->mode == SFM_READ)
- if ((error = ima_reader_init (psf, blockalign, samplesperblock)))
- return error ;
-
- if (psf->mode == SFM_WRITE)
- if ((error = ima_writer_init (psf, blockalign)))
- return error ;
-
- psf->codec_close = ima_close ;
-
- return 0 ;
-} /* aiff_ima_init */
-
-static int
-ima_close (SF_PRIVATE *psf)
-{ IMA_ADPCM_PRIVATE *pima ;
-
- pima = (IMA_ADPCM_PRIVATE*) psf->fdata ;
-
- if (psf->mode == SFM_WRITE)
- { /* If a block has been partially assembled, write it out
- ** as the final block.
- */
- if (pima->samplecount && pima->samplecount < pima->samplesperblock)
- pima->encode_block (psf, pima) ;
-
- psf->sf.frames = pima->samplesperblock * pima->blockcount / psf->sf.channels ;
- } ;
-
- return 0 ;
-} /* ima_close */
-
-/*============================================================================================
-** IMA ADPCM Read Functions.
-*/
-
-static int
-ima_reader_init (SF_PRIVATE *psf, int blockalign, int samplesperblock)
-{ IMA_ADPCM_PRIVATE *pima ;
- int pimasize, count ;
-
- if (psf->mode != SFM_READ)
- return SFE_BAD_MODE_RW ;
-
- pimasize = sizeof (IMA_ADPCM_PRIVATE) + blockalign * psf->sf.channels + 3 * psf->sf.channels * samplesperblock ;
-
- if (! (pima = malloc (pimasize)))
- return SFE_MALLOC_FAILED ;
-
- psf->fdata = (void*) pima ;
-
- memset (pima, 0, pimasize) ;
-
- pima->samples = pima->data ;
- pima->block = (unsigned char*) (pima->data + samplesperblock * psf->sf.channels) ;
-
- pima->channels = psf->sf.channels ;
- pima->blocksize = blockalign ;
- pima->samplesperblock = samplesperblock ;
-
- psf->filelength = psf_get_filelen (psf) ;
- psf->datalength = (psf->dataend) ? psf->dataend - psf->dataoffset :
- psf->filelength - psf->dataoffset ;
-
- if (psf->datalength % pima->blocksize)
- pima->blocks = psf->datalength / pima->blocksize + 1 ;
- else
- pima->blocks = psf->datalength / pima->blocksize ;
-
- switch (psf->sf.format & SF_FORMAT_TYPEMASK)
- { case SF_FORMAT_WAV :
- case SF_FORMAT_W64 :
- count = 2 * (pima->blocksize - 4 * pima->channels) / pima->channels + 1 ;
-
- if (pima->samplesperblock != count)
- psf_log_printf (psf, "*** Warning : samplesperblock should be %d.\n", count) ;
-
- pima->decode_block = wav_w64_ima_decode_block ;
-
- psf->sf.frames = pima->samplesperblock * pima->blocks ;
- break ;
-
- case SF_FORMAT_AIFF :
- psf_log_printf (psf, "still need to check block count\n") ;
- pima->decode_block = aiff_ima_decode_block ;
- psf->sf.frames = pima->samplesperblock * pima->blocks / pima->channels ;
- break ;
-
- default :
- psf_log_printf (psf, "ima_reader_init: bad psf->sf.format\n") ;
- return SFE_INTERNAL ;
- break ;
- } ;
-
- pima->decode_block (psf, pima) ; /* Read first block. */
-
- psf->read_short = ima_read_s ;
- psf->read_int = ima_read_i ;
- psf->read_float = ima_read_f ;
- psf->read_double = ima_read_d ;
-
- return 0 ;
-} /* ima_reader_init */
-
-static int
-aiff_ima_decode_block (SF_PRIVATE *psf, IMA_ADPCM_PRIVATE *pima)
-{ unsigned char *blockdata ;
- int chan, k, diff, bytecode ;
- short step, stepindx, predictor, *sampledata ;
-
-static int count = 0 ;
-count ++ ;
-
- pima->blockcount += pima->channels ;
- pima->samplecount = 0 ;
-
- if (pima->blockcount > pima->blocks)
- { memset (pima->samples, 0, pima->samplesperblock * pima->channels * sizeof (short)) ;
- return 1 ;
- } ;
-
- if ((k = psf_fread (pima->block, 1, pima->blocksize * pima->channels, psf)) != pima->blocksize * pima->channels)
- psf_log_printf (psf, "*** Warning : short read (%d != %d).\n", k, pima->blocksize) ;
-
- /* Read and check the block header. */
- for (chan = 0 ; chan < pima->channels ; chan++)
- { blockdata = pima->block + chan * 34 ;
- sampledata = pima->samples + chan ;
-
- predictor = (blockdata [0] << 8) | (blockdata [1] & 0x80) ;
- stepindx = blockdata [1] & 0x7F ;
-
-{
-if (count < 5)
-printf ("\nchan: %d predictor: %d stepindx: %d (%d)\n",
- chan, predictor, stepindx, ima_step_size [stepindx]) ;
-}
- /* FIXME : Do this a better way. */
- if (stepindx < 0) stepindx = 0 ;
- else if (stepindx > 88) stepindx = 88 ;
-
- /*
- ** Pull apart the packed 4 bit samples and store them in their
- ** correct sample positions.
- */
- for (k = 0 ; k < pima->blocksize - 2 ; k++)
- { bytecode = blockdata [k + 2] ;
- sampledata [pima->channels * (2 * k + 0)] = bytecode & 0xF ;
- sampledata [pima->channels * (2 * k + 1)] = (bytecode >> 4) & 0xF ;
- } ;
-
- /* Decode the encoded 4 bit samples. */
- for (k = 0 ; k < pima->samplesperblock ; k ++)
- { step = ima_step_size [stepindx] ;
-
- bytecode = pima->samples [pima->channels * k + chan] ;
-
- stepindx += ima_indx_adjust [bytecode] ;
-
- if (stepindx < 0) stepindx = 0 ;
- else if (stepindx > 88) stepindx = 88 ;
-
- diff = step >> 3 ;
- if (bytecode & 1) diff += step >> 2 ;
- if (bytecode & 2) diff += step >> 1 ;
- if (bytecode & 4) diff += step ;
- if (bytecode & 8) diff = -diff ;
-
- predictor += diff ;
-
- pima->samples [pima->channels * k + chan] = predictor ;
- } ;
- } ;
-
-if (count < 5)
-{
- for (k = 0 ; k < 10 ; k++)
- printf ("% 7d,", pima->samples [k]) ;
- puts ("") ;
-}
-
- return 1 ;
-} /* aiff_ima_decode_block */
-
-static int
-aiff_ima_encode_block (SF_PRIVATE *psf, IMA_ADPCM_PRIVATE *pima)
-{ int chan, k, step, diff, vpdiff, blockindx, indx ;
- short bytecode, mask ;
-
-static int count = 0 ;
-if (0 && count == 0)
-{ pima->samples [0] = 0 ;
- printf ("blocksize : %d\n", pima->blocksize) ;
- printf ("pima->stepindx [0] : %d\n", pima->stepindx [0]) ;
- }
-count ++ ;
-
- /* Encode the block header. */
- for (chan = 0 ; chan < pima->channels ; chan ++)
- { blockindx = chan * pima->blocksize ;
-
- pima->block [blockindx] = (pima->samples [chan] >> 8) & 0xFF ;
- pima->block [blockindx + 1] = (pima->samples [chan] & 0x80) + (pima->stepindx [chan] & 0x7F) ;
-
- pima->previous [chan] = pima->samples [chan] ;
- } ;
-
- /* Encode second and later samples for every block as a 4 bit value. */
- for (k = pima->channels ; k < (pima->samplesperblock * pima->channels) ; k ++)
- { chan = (pima->channels > 1) ? (k % 2) : 0 ;
-
- diff = pima->samples [k] - pima->previous [chan] ;
-
- bytecode = 0 ;
- step = ima_step_size [pima->stepindx [chan]] ;
- vpdiff = step >> 3 ;
- if (diff < 0)
- { bytecode = 8 ;
- diff = -diff ;
- } ;
- mask = 4 ;
- while (mask)
- { if (diff >= step)
- { bytecode |= mask ;
- diff -= step ;
- vpdiff += step ;
- } ;
- step >>= 1 ;
- mask >>= 1 ;
- } ;
-
- if (bytecode & 8)
- pima->previous [chan] -= vpdiff ;
- else
- pima->previous [chan] += vpdiff ;
-
- if (pima->previous [chan] > 32767)
- pima->previous [chan] = 32767 ;
- else if (pima->previous [chan] < -32768)
- pima->previous [chan] = -32768 ;
-
- pima->stepindx [chan] += ima_indx_adjust [bytecode] ;
- if (pima->stepindx [chan] < 0)
- pima->stepindx [chan] = 0 ;
- else if (pima->stepindx [chan] > 88)
- pima->stepindx [chan] = 88 ;
-
- pima->samples [k] = bytecode ;
- } ;
-
- /* Pack the 4 bit encoded samples. */
-
- for (chan = 0 ; chan < pima->channels ; chan ++)
- { for (indx = pima->channels ; indx < pima->channels * pima->samplesperblock ; indx += 2 * pima->channels)
- { blockindx = chan * pima->blocksize + 2 + indx / 2 ;
-
-if (0 && count ++ < 5)
- printf ("chan: %d blockindx: %3d indx: %3d\n", chan, blockindx, indx) ;
-
- pima->block [blockindx] = pima->samples [indx] & 0x0F ;
- pima->block [blockindx] |= (pima->samples [indx + pima->channels] << 4) & 0xF0 ;
- } ;
- } ;
-
- /* Write the block to disk. */
-
- if ((k = psf_fwrite (pima->block, 1, pima->channels * pima->blocksize, psf)) != pima->channels * pima->blocksize)
- psf_log_printf (psf, "*** Warning : short write (%d != %d).\n", k, pima->channels * pima->blocksize) ;
-
- memset (pima->samples, 0, pima->channels * pima->samplesperblock * sizeof (short)) ;
- pima->samplecount = 0 ;
- pima->blockcount ++ ;
-
- return 1 ;
-} /* aiff_ima_encode_block */
-
-static int
-wav_w64_ima_decode_block (SF_PRIVATE *psf, IMA_ADPCM_PRIVATE *pima)
-{ int chan, k, current, blockindx, indx, indxstart, diff ;
- short step, bytecode, stepindx [2] ;
-
- pima->blockcount ++ ;
- pima->samplecount = 0 ;
-
- if (pima->blockcount > pima->blocks)
- { memset (pima->samples, 0, pima->samplesperblock * pima->channels * sizeof (short)) ;
- return 1 ;
- } ;
-
- if ((k = psf_fread (pima->block, 1, pima->blocksize, psf)) != pima->blocksize)
- psf_log_printf (psf, "*** Warning : short read (%d != %d).\n", k, pima->blocksize) ;
-
- /* Read and check the block header. */
-
- for (chan = 0 ; chan < pima->channels ; chan++)
- { current = pima->block [chan*4] | (pima->block [chan*4+1] << 8) ;
- if (current & 0x8000)
- current -= 0x10000 ;
-
- stepindx [chan] = pima->block [chan*4+2] ;
- if (stepindx [chan] < 0)
- stepindx [chan] = 0 ;
- else if (stepindx [chan] > 88)
- stepindx [chan] = 88 ;
-
- if (pima->block [chan*4+3] != 0)
- psf_log_printf (psf, "IMA ADPCM synchronisation error.\n") ;
-
- pima->samples [chan] = current ;
- } ;
-
- /*
- ** Pull apart the packed 4 bit samples and store them in their
- ** correct sample positions.
- */
-
- blockindx = 4 * pima->channels ;
-
- indxstart = pima->channels ;
- while (blockindx < pima->blocksize)
- { for (chan = 0 ; chan < pima->channels ; chan++)
- { indx = indxstart + chan ;
- for (k = 0 ; k < 4 ; k++)
- { bytecode = pima->block [blockindx++] ;
- pima->samples [indx] = bytecode & 0x0F ;
- indx += pima->channels ;
- pima->samples [indx] = (bytecode >> 4) & 0x0F ;
- indx += pima->channels ;
- } ;
- } ;
- indxstart += 8 * pima->channels ;
- } ;
-
- /* Decode the encoded 4 bit samples. */
-
- for (k = pima->channels ; k < (pima->samplesperblock * pima->channels) ; k ++)
- { chan = (pima->channels > 1) ? (k % 2) : 0 ;
-
- bytecode = pima->samples [k] & 0xF ;
-
- step = ima_step_size [stepindx [chan]] ;
- current = pima->samples [k - pima->channels] ;
-
- diff = step >> 3 ;
- if (bytecode & 1)
- diff += step >> 2 ;
- if (bytecode & 2)
- diff += step >> 1 ;
- if (bytecode & 4)
- diff += step ;
- if (bytecode & 8)
- diff = -diff ;
-
- current += diff ;
-
- if (current > 32767)
- current = 32767 ;
- else if (current < -32768)
- current = -32768 ;
-
- stepindx [chan] += ima_indx_adjust [bytecode] ;
-
- if (stepindx [chan] < 0)
- stepindx [chan] = 0 ;
- else if (stepindx [chan] > 88)
- stepindx [chan] = 88 ;
-
- pima->samples [k] = current ;
- } ;
-
- return 1 ;
-} /* wav_w64_ima_decode_block */
-
-static int
-wav_w64_ima_encode_block (SF_PRIVATE *psf, IMA_ADPCM_PRIVATE *pima)
-{ int chan, k, step, diff, vpdiff, blockindx, indx, indxstart ;
- short bytecode, mask ;
-
- /* Encode the block header. */
- for (chan = 0 ; chan < pima->channels ; chan++)
- { pima->block [chan*4] = pima->samples [chan] & 0xFF ;
- pima->block [chan*4+1] = (pima->samples [chan] >> 8) & 0xFF ;
-
- pima->block [chan*4+2] = pima->stepindx [chan] ;
- pima->block [chan*4+3] = 0 ;
-
- pima->previous [chan] = pima->samples [chan] ;
- } ;
-
- /* Encode the samples as 4 bit. */
-
- for (k = pima->channels ; k < (pima->samplesperblock * pima->channels) ; k ++)
- { chan = (pima->channels > 1) ? (k % 2) : 0 ;
-
- diff = pima->samples [k] - pima->previous [chan] ;
-
- bytecode = 0 ;
- step = ima_step_size [pima->stepindx [chan]] ;
- vpdiff = step >> 3 ;
- if (diff < 0)
- { bytecode = 8 ;
- diff = -diff ;
- } ;
- mask = 4 ;
- while (mask)
- { if (diff >= step)
- { bytecode |= mask ;
- diff -= step ;
- vpdiff += step ;
- } ;
- step >>= 1 ;
- mask >>= 1 ;
- } ;
-
- if (bytecode & 8)
- pima->previous [chan] -= vpdiff ;
- else
- pima->previous [chan] += vpdiff ;
-
- if (pima->previous [chan] > 32767)
- pima->previous [chan] = 32767 ;
- else if (pima->previous [chan] < -32768)
- pima->previous [chan] = -32768 ;
-
- pima->stepindx [chan] += ima_indx_adjust [bytecode] ;
- if (pima->stepindx [chan] < 0)
- pima->stepindx [chan] = 0 ;
- else if (pima->stepindx [chan] > 88)
- pima->stepindx [chan] = 88 ;
-
- pima->samples [k] = bytecode ;
- } ;
-
- /* Pack the 4 bit encoded samples. */
-
- blockindx = 4 * pima->channels ;
-
- indxstart = pima->channels ;
- while (blockindx < pima->blocksize)
- { for (chan = 0 ; chan < pima->channels ; chan++)
- { indx = indxstart + chan ;
- for (k = 0 ; k < 4 ; k++)
- { pima->block [blockindx] = pima->samples [indx] & 0x0F ;
- indx += pima->channels ;
- pima->block [blockindx] |= (pima->samples [indx] << 4) & 0xF0 ;
- indx += pima->channels ;
- blockindx ++ ;
- } ;
- } ;
- indxstart += 8 * pima->channels ;
- } ;
-
- /* Write the block to disk. */
-
- if ((k = psf_fwrite (pima->block, 1, pima->blocksize, psf)) != pima->blocksize)
- psf_log_printf (psf, "*** Warning : short write (%d != %d).\n", k, pima->blocksize) ;
-
- memset (pima->samples, 0, pima->samplesperblock * sizeof (short)) ;
- pima->samplecount = 0 ;
- pima->blockcount ++ ;
-
- return 1 ;
-} /* wav_w64_ima_encode_block */
-
-static int
-ima_read_block (SF_PRIVATE *psf, IMA_ADPCM_PRIVATE *pima, short *ptr, int len)
-{ int count, total = 0, indx = 0 ;
-
- while (indx < len)
- { if (pima->blockcount >= pima->blocks && pima->samplecount >= pima->samplesperblock)
- { memset (&(ptr [indx]), 0, (size_t) ((len - indx) * sizeof (short))) ;
- return total ;
- } ;
-
- if (pima->samplecount >= pima->samplesperblock)
- pima->decode_block (psf, pima) ;
-
- count = (pima->samplesperblock - pima->samplecount) * pima->channels ;
- count = (len - indx > count) ? count : len - indx ;
-
- memcpy (&(ptr [indx]), &(pima->samples [pima->samplecount * pima->channels]), count * sizeof (short)) ;
- indx += count ;
- pima->samplecount += count / pima->channels ;
- total = indx ;
- } ;
-
- return total ;
-} /* ima_read_block */
-
-static sf_count_t
-ima_read_s (SF_PRIVATE *psf, short *ptr, sf_count_t len)
-{ IMA_ADPCM_PRIVATE *pima ;
- int readcount, count ;
- sf_count_t total = 0 ;
-
- if (! psf->fdata)
- return 0 ;
- pima = (IMA_ADPCM_PRIVATE*) psf->fdata ;
-
- while (len > 0)
- { readcount = (len > 0x10000000) ? 0x10000000 : (int) len ;
-
- count = ima_read_block (psf, pima, ptr, readcount) ;
-
- total += count ;
- len -= count ;
- if (count != readcount)
- break ;
- } ;
-
- return total ;
-} /* ima_read_s */
-
-static sf_count_t
-ima_read_i (SF_PRIVATE *psf, int *ptr, sf_count_t len)
-{ IMA_ADPCM_PRIVATE *pima ;
- short *sptr ;
- int k, bufferlen, readcount, count ;
- sf_count_t total = 0 ;
-
- if (! psf->fdata)
- return 0 ;
- pima = (IMA_ADPCM_PRIVATE*) psf->fdata ;
-
- sptr = psf->u.sbuf ;
- bufferlen = ARRAY_LEN (psf->u.sbuf) ;
- while (len > 0)
- { readcount = (len >= bufferlen) ? bufferlen : (int) len ;
- count = ima_read_block (psf, pima, sptr, readcount) ;
- for (k = 0 ; k < readcount ; k++)
- ptr [total + k] = ((int) sptr [k]) << 16 ;
- total += count ;
- len -= readcount ;
- if (count != readcount)
- break ;
- } ;
-
- return total ;
-} /* ima_read_i */
-
-static sf_count_t
-ima_read_f (SF_PRIVATE *psf, float *ptr, sf_count_t len)
-{ IMA_ADPCM_PRIVATE *pima ;
- short *sptr ;
- int k, bufferlen, readcount, count ;
- sf_count_t total = 0 ;
- float normfact ;
-
- if (! psf->fdata)
- return 0 ;
- pima = (IMA_ADPCM_PRIVATE*) psf->fdata ;
-
- normfact = (psf->norm_float == SF_TRUE) ? 1.0 / ((float) 0x8000) : 1.0 ;
-
- sptr = psf->u.sbuf ;
- bufferlen = ARRAY_LEN (psf->u.sbuf) ;
- while (len > 0)
- { readcount = (len >= bufferlen) ? bufferlen : (int) len ;
- count = ima_read_block (psf, pima, sptr, readcount) ;
- for (k = 0 ; k < readcount ; k++)
- ptr [total + k] = normfact * (float) (sptr [k]) ;
- total += count ;
- len -= readcount ;
- if (count != readcount)
- break ;
- } ;
-
- return total ;
-} /* ima_read_f */
-
-static sf_count_t
-ima_read_d (SF_PRIVATE *psf, double *ptr, sf_count_t len)
-{ IMA_ADPCM_PRIVATE *pima ;
- short *sptr ;
- int k, bufferlen, readcount, count ;
- sf_count_t total = 0 ;
- double normfact ;
-
- if (! psf->fdata)
- return 0 ;
- pima = (IMA_ADPCM_PRIVATE*) psf->fdata ;
-
- normfact = (psf->norm_double == SF_TRUE) ? 1.0 / ((double) 0x8000) : 1.0 ;
-
- sptr = psf->u.sbuf ;
- bufferlen = ARRAY_LEN (psf->u.sbuf) ;
- while (len > 0)
- { readcount = (len >= bufferlen) ? bufferlen : (int) len ;
- count = ima_read_block (psf, pima, sptr, readcount) ;
- for (k = 0 ; k < readcount ; k++)
- ptr [total + k] = normfact * (double) (sptr [k]) ;
- total += count ;
- len -= readcount ;
- if (count != readcount)
- break ;
- } ;
-
- return total ;
-} /* ima_read_d */
-
-static sf_count_t
-ima_seek (SF_PRIVATE *psf, int mode, sf_count_t offset)
-{ IMA_ADPCM_PRIVATE *pima ;
- int newblock, newsample ;
-
- if (! psf->fdata)
- return 0 ;
- pima = (IMA_ADPCM_PRIVATE*) psf->fdata ;
-
- if (psf->datalength < 0 || psf->dataoffset < 0)
- { psf->error = SFE_BAD_SEEK ;
- return PSF_SEEK_ERROR ;
- } ;
-
- if (offset == 0)
- { psf_fseek (psf, psf->dataoffset, SEEK_SET) ;
- pima->blockcount = 0 ;
- pima->decode_block (psf, pima) ;
- pima->samplecount = 0 ;
- return 0 ;
- } ;
-
- if (offset < 0 || offset > pima->blocks * pima->samplesperblock)
- { psf->error = SFE_BAD_SEEK ;
- return PSF_SEEK_ERROR ;
- } ;
-
- newblock = offset / pima->samplesperblock ;
- newsample = offset % pima->samplesperblock ;
-
- if (mode == SFM_READ)
- { psf_fseek (psf, psf->dataoffset + newblock * pima->blocksize, SEEK_SET) ;
- pima->blockcount = newblock ;
- pima->decode_block (psf, pima) ;
- pima->samplecount = newsample ;
- }
- else
- { /* What to do about write??? */
- psf->error = SFE_BAD_SEEK ;
- return PSF_SEEK_ERROR ;
- } ;
-
- return newblock * pima->samplesperblock + newsample ;
-} /* ima_seek */
-
-/*==========================================================================================
-** IMA ADPCM Write Functions.
-*/
-
-static int
-ima_writer_init (SF_PRIVATE *psf, int blockalign)
-{ IMA_ADPCM_PRIVATE *pima ;
- int samplesperblock ;
- unsigned int pimasize ;
-
- if (psf->mode != SFM_WRITE)
- return SFE_BAD_MODE_RW ;
-
- samplesperblock = 2 * (blockalign - 4 * psf->sf.channels) / psf->sf.channels + 1 ;
-
- pimasize = sizeof (IMA_ADPCM_PRIVATE) + blockalign + 3 * psf->sf.channels * samplesperblock ;
-
- if ((pima = calloc (1, pimasize)) == NULL)
- return SFE_MALLOC_FAILED ;
-
- psf->fdata = (void*) pima ;
-
- pima->channels = psf->sf.channels ;
- pima->blocksize = blockalign ;
- pima->samplesperblock = samplesperblock ;
-
- pima->block = (unsigned char*) pima->data ;
- pima->samples = (short*) (pima->data + blockalign) ;
-
- pima->samplecount = 0 ;
-
- switch (psf->sf.format & SF_FORMAT_TYPEMASK)
- { case SF_FORMAT_WAV :
- case SF_FORMAT_W64 :
- pima->encode_block = wav_w64_ima_encode_block ;
- break ;
-
- case SF_FORMAT_AIFF :
- pima->encode_block = aiff_ima_encode_block ;
- break ;
-
- default :
- psf_log_printf (psf, "ima_reader_init: bad psf->sf.format\n") ;
- return SFE_INTERNAL ;
- break ;
- } ;
-
- psf->write_short = ima_write_s ;
- psf->write_int = ima_write_i ;
- psf->write_float = ima_write_f ;
- psf->write_double = ima_write_d ;
-
- return 0 ;
-} /* ima_writer_init */
-
-/*==========================================================================================
-*/
-
-static int
-ima_write_block (SF_PRIVATE *psf, IMA_ADPCM_PRIVATE *pima, const short *ptr, int len)
-{ int count, total = 0, indx = 0 ;
-
- while (indx < len)
- { count = (pima->samplesperblock - pima->samplecount) * pima->channels ;
-
- if (count > len - indx)
- count = len - indx ;
-
- memcpy (&(pima->samples [pima->samplecount * pima->channels]), &(ptr [total]), count * sizeof (short)) ;
- indx += count ;
- pima->samplecount += count / pima->channels ;
- total = indx ;
-
- if (pima->samplecount >= pima->samplesperblock)
- pima->encode_block (psf, pima) ;
- } ;
-
- return total ;
-} /* ima_write_block */
-
-static sf_count_t
-ima_write_s (SF_PRIVATE *psf, const short *ptr, sf_count_t len)
-{ IMA_ADPCM_PRIVATE *pima ;
- int writecount, count ;
- sf_count_t total = 0 ;
-
- if (! psf->fdata)
- return 0 ;
- pima = (IMA_ADPCM_PRIVATE*) psf->fdata ;
-
- while (len)
- { writecount = (len > 0x10000000) ? 0x10000000 : (int) len ;
-
- count = ima_write_block (psf, pima, ptr, writecount) ;
-
- total += count ;
- len -= count ;
- if (count != writecount)
- break ;
- } ;
-
- return total ;
-} /* ima_write_s */
-
-static sf_count_t
-ima_write_i (SF_PRIVATE *psf, const int *ptr, sf_count_t len)
-{ IMA_ADPCM_PRIVATE *pima ;
- short *sptr ;
- int k, bufferlen, writecount, count ;
- sf_count_t total = 0 ;
-
- if (! psf->fdata)
- return 0 ;
- pima = (IMA_ADPCM_PRIVATE*) psf->fdata ;
-
- sptr = psf->u.sbuf ;
- bufferlen = ARRAY_LEN (psf->u.sbuf) ;
- while (len > 0)
- { writecount = (len >= bufferlen) ? bufferlen : (int) len ;
- for (k = 0 ; k < writecount ; k++)
- sptr [k] = ptr [total + k] >> 16 ;
- count = ima_write_block (psf, pima, sptr, writecount) ;
- total += count ;
- len -= writecount ;
- if (count != writecount)
- break ;
- } ;
-
- return total ;
-} /* ima_write_i */
-
-static sf_count_t
-ima_write_f (SF_PRIVATE *psf, const float *ptr, sf_count_t len)
-{ IMA_ADPCM_PRIVATE *pima ;
- short *sptr ;
- int k, bufferlen, writecount, count ;
- sf_count_t total = 0 ;
- float normfact ;
-
- if (! psf->fdata)
- return 0 ;
- pima = (IMA_ADPCM_PRIVATE*) psf->fdata ;
-
- normfact = (psf->norm_float == SF_TRUE) ? (1.0 * 0x7FFF) : 1.0 ;
-
- sptr = psf->u.sbuf ;
- bufferlen = ARRAY_LEN (psf->u.sbuf) ;
- while (len > 0)
- { writecount = (len >= bufferlen) ? bufferlen : (int) len ;
- for (k = 0 ; k < writecount ; k++)
- sptr [k] = lrintf (normfact * ptr [total + k]) ;
- count = ima_write_block (psf, pima, sptr, writecount) ;
- total += count ;
- len -= writecount ;
- if (count != writecount)
- break ;
- } ;
-
- return total ;
-} /* ima_write_f */
-
-static sf_count_t
-ima_write_d (SF_PRIVATE *psf, const double *ptr, sf_count_t len)
-{ IMA_ADPCM_PRIVATE *pima ;
- short *sptr ;
- int k, bufferlen, writecount, count ;
- sf_count_t total = 0 ;
- double normfact ;
-
- if (! psf->fdata)
- return 0 ;
- pima = (IMA_ADPCM_PRIVATE*) psf->fdata ;
-
- normfact = (psf->norm_double == SF_TRUE) ? (1.0 * 0x7FFF) : 1.0 ;
-
- sptr = psf->u.sbuf ;
- bufferlen = ARRAY_LEN (psf->u.sbuf) ;
- while (len > 0)
- { writecount = (len >= bufferlen) ? bufferlen : (int) len ;
- for (k = 0 ; k < writecount ; k++)
- sptr [k] = lrint (normfact * ptr [total + k]) ;
- count = ima_write_block (psf, pima, sptr, writecount) ;
- total += count ;
- len -= writecount ;
- if (count != writecount)
- break ;
- } ;
-
- return total ;
-} /* ima_write_d */
-
-
-/*
-** Do not edit or modify anything in this comment block.
-** The arch-tag line is a file identity tag for the GNU Arch
-** revision control system.
-**
-** arch-tag: 75a54b82-ad18-4758-9933-64e00a7f24e0
-*/
diff --git a/libs/libsndfile/src/interleave.c b/libs/libsndfile/src/interleave.c
deleted file mode 100644
index 7c18bd46c2..0000000000
--- a/libs/libsndfile/src/interleave.c
+++ /dev/null
@@ -1,306 +0,0 @@
-/*
-** Copyright (C) 2002-2004 Erik de Castro Lopo <erikd@mega-nerd.com>
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU Lesser General Public License as published by
-** the Free Software Foundation; either version 2.1 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU Lesser General Public License for more details.
-**
-** You should have received a copy of the GNU Lesser General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-*/
-
-#include "sfendian.h"
-
-#include <stdlib.h>
-
-#include "sndfile.h"
-#include "common.h"
-
-#define INTERLEAVE_CHANNELS 6
-
-typedef struct
-{ double buffer [SF_BUFFER_LEN / sizeof (double)] ;
-
- sf_count_t channel_len ;
-
- sf_count_t (*read_short) (SF_PRIVATE*, short *ptr, sf_count_t len) ;
- sf_count_t (*read_int) (SF_PRIVATE*, int *ptr, sf_count_t len) ;
- sf_count_t (*read_float) (SF_PRIVATE*, float *ptr, sf_count_t len) ;
- sf_count_t (*read_double) (SF_PRIVATE*, double *ptr, sf_count_t len) ;
-
-} INTERLEAVE_DATA ;
-
-
-
-static sf_count_t interleave_read_short (SF_PRIVATE *psf, short *ptr, sf_count_t len) ;
-static sf_count_t interleave_read_int (SF_PRIVATE *psf, int *ptr, sf_count_t len) ;
-static sf_count_t interleave_read_float (SF_PRIVATE *psf, float *ptr, sf_count_t len) ;
-static sf_count_t interleave_read_double (SF_PRIVATE *psf, double *ptr, sf_count_t len) ;
-
-static sf_count_t interleave_seek (SF_PRIVATE*, int mode, sf_count_t samples_from_start) ;
-
-
-
-
-int
-interleave_init (SF_PRIVATE *psf)
-{ INTERLEAVE_DATA *pdata ;
-
- if (psf->mode != SFM_READ)
- return SFE_INTERLEAVE_MODE ;
-
- if (psf->interleave)
- { psf_log_printf (psf, "*** Weird, already have interleave.\n") ;
- return 666 ;
- } ;
-
- /* Free this in sf_close() function. */
- if (! (pdata = malloc (sizeof (INTERLEAVE_DATA))))
- return SFE_MALLOC_FAILED ;
-
-puts ("interleave_init") ;
-
- psf->interleave = pdata ;
-
- /* Save the existing methods. */
- pdata->read_short = psf->read_short ;
- pdata->read_int = psf->read_int ;
- pdata->read_float = psf->read_float ;
- pdata->read_double = psf->read_double ;
-
- pdata->channel_len = psf->sf.frames * psf->bytewidth ;
-
- /* Insert our new methods. */
- psf->read_short = interleave_read_short ;
- psf->read_int = interleave_read_int ;
- psf->read_float = interleave_read_float ;
- psf->read_double = interleave_read_double ;
-
- psf->seek = interleave_seek ;
-
- return 0 ;
-} /* pcm_interleave_init */
-
-/*------------------------------------------------------------------------------
-*/
-
-static sf_count_t
-interleave_read_short (SF_PRIVATE *psf, short *ptr, sf_count_t len)
-{ INTERLEAVE_DATA *pdata ;
- sf_count_t offset, templen ;
- int chan, count, k ;
- short *inptr, *outptr ;
-
- if (! (pdata = psf->interleave))
- return 0 ;
-
- inptr = (short*) pdata->buffer ;
-
- for (chan = 0 ; chan < psf->sf.channels ; chan++)
- { outptr = ptr + chan ;
-
- offset = psf->dataoffset + chan * psf->bytewidth * psf->read_current ;
-
- if (psf_fseek (psf, offset, SEEK_SET) != offset)
- { psf->error = SFE_INTERLEAVE_SEEK ;
- return 0 ;
- } ;
-
- templen = len / psf->sf.channels ;
-
- while (templen > 0)
- { if (templen > SIGNED_SIZEOF (pdata->buffer) / SIGNED_SIZEOF (short))
- count = SIGNED_SIZEOF (pdata->buffer) / SIGNED_SIZEOF (short) ;
- else
- count = (int) templen ;
-
- if (pdata->read_short (psf, inptr, count) != count)
- { psf->error = SFE_INTERLEAVE_READ ;
- return 0 ;
- } ;
-
- for (k = 0 ; k < count ; k++)
- { *outptr = inptr [k] ;
- outptr += psf->sf.channels ;
- } ;
-
- templen -= count ;
- } ;
- } ;
-
- return len ;
-} /* interleave_read_short */
-
-static sf_count_t
-interleave_read_int (SF_PRIVATE *psf, int *ptr, sf_count_t len)
-{ INTERLEAVE_DATA *pdata ;
- sf_count_t offset, templen ;
- int chan, count, k ;
- int *inptr, *outptr ;
-
- if (! (pdata = psf->interleave))
- return 0 ;
-
- inptr = (int*) pdata->buffer ;
-
- for (chan = 0 ; chan < psf->sf.channels ; chan++)
- { outptr = ptr + chan ;
-
- offset = psf->dataoffset + chan * psf->bytewidth * psf->read_current ;
-
- if (psf_fseek (psf, offset, SEEK_SET) != offset)
- { psf->error = SFE_INTERLEAVE_SEEK ;
- return 0 ;
- } ;
-
- templen = len / psf->sf.channels ;
-
- while (templen > 0)
- { if (templen > SIGNED_SIZEOF (pdata->buffer) / SIGNED_SIZEOF (int))
- count = SIGNED_SIZEOF (pdata->buffer) / SIGNED_SIZEOF (int) ;
- else
- count = (int) templen ;
-
- if (pdata->read_int (psf, inptr, count) != count)
- { psf->error = SFE_INTERLEAVE_READ ;
- return 0 ;
- } ;
-
- for (k = 0 ; k < count ; k++)
- { *outptr = inptr [k] ;
- outptr += psf->sf.channels ;
- } ;
-
- templen -= count ;
- } ;
- } ;
-
- return len ;
-} /* interleave_read_int */
-
-static sf_count_t
-interleave_read_float (SF_PRIVATE *psf, float *ptr, sf_count_t len)
-{ INTERLEAVE_DATA *pdata ;
- sf_count_t offset, templen ;
- int chan, count, k ;
- float *inptr, *outptr ;
-
- if (! (pdata = psf->interleave))
- return 0 ;
-
- inptr = (float*) pdata->buffer ;
-
- for (chan = 0 ; chan < psf->sf.channels ; chan++)
- { outptr = ptr + chan ;
-
- offset = psf->dataoffset + pdata->channel_len * chan + psf->read_current * psf->bytewidth ;
-
-/*-printf ("chan : %d read_current : %6lld offset : %6lld\n", chan, psf->read_current, offset) ;-*/
-
- if (psf_fseek (psf, offset, SEEK_SET) != offset)
- { psf->error = SFE_INTERLEAVE_SEEK ;
-/*-puts ("interleave_seek error") ; exit (1) ;-*/
- return 0 ;
- } ;
-
- templen = len / psf->sf.channels ;
-
- while (templen > 0)
- { if (templen > SIGNED_SIZEOF (pdata->buffer) / SIGNED_SIZEOF (float))
- count = SIGNED_SIZEOF (pdata->buffer) / SIGNED_SIZEOF (float) ;
- else
- count = (int) templen ;
-
- if (pdata->read_float (psf, inptr, count) != count)
- { psf->error = SFE_INTERLEAVE_READ ;
-/*-puts ("interleave_read error") ; exit (1) ;-*/
- return 0 ;
- } ;
-
- for (k = 0 ; k < count ; k++)
- { *outptr = inptr [k] ;
- outptr += psf->sf.channels ;
- } ;
-
- templen -= count ;
- } ;
- } ;
-
- return len ;
-} /* interleave_read_float */
-
-static sf_count_t
-interleave_read_double (SF_PRIVATE *psf, double *ptr, sf_count_t len)
-{ INTERLEAVE_DATA *pdata ;
- sf_count_t offset, templen ;
- int chan, count, k ;
- double *inptr, *outptr ;
-
- if (! (pdata = psf->interleave))
- return 0 ;
-
- inptr = (double*) pdata->buffer ;
-
- for (chan = 0 ; chan < psf->sf.channels ; chan++)
- { outptr = ptr + chan ;
-
- offset = psf->dataoffset + chan * psf->bytewidth * psf->read_current ;
-
- if (psf_fseek (psf, offset, SEEK_SET) != offset)
- { psf->error = SFE_INTERLEAVE_SEEK ;
- return 0 ;
- } ;
-
- templen = len / psf->sf.channels ;
-
- while (templen > 0)
- { if (templen > SIGNED_SIZEOF (pdata->buffer) / SIGNED_SIZEOF (double))
- count = SIGNED_SIZEOF (pdata->buffer) / SIGNED_SIZEOF (double) ;
- else
- count = (int) templen ;
-
- if (pdata->read_double (psf, inptr, count) != count)
- { psf->error = SFE_INTERLEAVE_READ ;
- return 0 ;
- } ;
-
- for (k = 0 ; k < count ; k++)
- { *outptr = inptr [k] ;
- outptr += psf->sf.channels ;
- } ;
-
- templen -= count ;
- } ;
- } ;
-
- return len ;
-} /* interleave_read_double */
-
-/*------------------------------------------------------------------------------
-*/
-
-static sf_count_t
-interleave_seek (SF_PRIVATE *psf, int mode, sf_count_t samples_from_start)
-{ psf = psf ; mode = mode ;
-
- /*
- ** Do nothing here. This is a place holder to prevent the default
- ** seek function from being called.
- */
-
- return samples_from_start ;
-} /* interleave_seek */
-/*
-** Do not edit or modify anything in this comment block.
-** The arch-tag line is a file identity tag for the GNU Arch
-** revision control system.
-**
-** arch-tag: 82314e13-0225-4408-a2f2-e6dab3f38904
-*/
diff --git a/libs/libsndfile/src/ircam.c b/libs/libsndfile/src/ircam.c
deleted file mode 100644
index 003809f3fa..0000000000
--- a/libs/libsndfile/src/ircam.c
+++ /dev/null
@@ -1,331 +0,0 @@
-/*
-** Copyright (C) 2001-2004 Erik de Castro Lopo <erikd@mega-nerd.com>
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU Lesser General Public License as published by
-** the Free Software Foundation; either version 2.1 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU Lesser General Public License for more details.
-**
-** You should have received a copy of the GNU Lesser General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-*/
-
-#include "sfconfig.h"
-
-#include <stdio.h>
-#include <fcntl.h>
-#include <string.h>
-#include <ctype.h>
-
-#include "sndfile.h"
-#include "sfendian.h"
-#include "common.h"
-
-/*------------------------------------------------------------------------------
-** Macros to handle big/little endian issues.
-*/
-
-/* The IRCAM magic number is weird in that one byte in the number can have
-** values of 0x1, 0x2, 0x03 or 0x04. Hence the need for a marker and a mask.
-*/
-
-#define IRCAM_BE_MASK (MAKE_MARKER (0xFF, 0xFF, 0x00, 0xFF))
-#define IRCAM_BE_MARKER (MAKE_MARKER (0x64, 0xA3, 0x00, 0x00))
-
-#define IRCAM_LE_MASK (MAKE_MARKER (0xFF, 0x00, 0xFF, 0xFF))
-#define IRCAM_LE_MARKER (MAKE_MARKER (0x00, 0x00, 0xA3, 0x64))
-
-#define IRCAM_02B_MARKER (MAKE_MARKER (0x64, 0xA3, 0x02, 0x00))
-#define IRCAM_03L_MARKER (MAKE_MARKER (0x64, 0xA3, 0x03, 0x00))
-
-#define IRCAM_DATA_OFFSET (1024)
-
-/*------------------------------------------------------------------------------
-** Typedefs.
-*/
-
-enum
-{ IRCAM_PCM_16 = 0x00002,
- IRCAM_FLOAT = 0x00004,
- IRCAM_ALAW = 0x10001,
- IRCAM_ULAW = 0x20001,
- IRCAM_PCM_32 = 0x40004
-} ;
-
-
-/*------------------------------------------------------------------------------
-** Private static functions.
-*/
-
-static int ircam_close (SF_PRIVATE *psf) ;
-static int ircam_write_header (SF_PRIVATE *psf, int calc_length) ;
-static int ircam_read_header (SF_PRIVATE *psf) ;
-
-static int get_encoding (int subformat) ;
-
-static const char* get_encoding_str (int encoding) ;
-
-/*------------------------------------------------------------------------------
-** Public function.
-*/
-
-int
-ircam_open (SF_PRIVATE *psf)
-{ int subformat ;
- int error = SFE_NO_ERROR ;
-
- if (psf->mode == SFM_READ || (psf->mode == SFM_RDWR && psf->filelength > 0))
- { if ((error = ircam_read_header (psf)))
- return error ;
- } ;
-
- subformat = psf->sf.format & SF_FORMAT_SUBMASK ;
-
- if (psf->mode == SFM_WRITE || psf->mode == SFM_RDWR)
- { if ((psf->sf.format & SF_FORMAT_TYPEMASK) != SF_FORMAT_IRCAM)
- return SFE_BAD_OPEN_FORMAT ;
-
- psf->endian = psf->sf.format & SF_FORMAT_ENDMASK ;
- if (psf->endian == 0 || psf->endian == SF_ENDIAN_CPU)
- psf->endian = (CPU_IS_BIG_ENDIAN) ? SF_ENDIAN_BIG : SF_ENDIAN_LITTLE ;
-
- psf->dataoffset = IRCAM_DATA_OFFSET ;
-
- if ((error = ircam_write_header (psf, SF_FALSE)))
- return error ;
-
- psf->write_header = ircam_write_header ;
- } ;
-
- psf->container_close = ircam_close ;
-
- switch (subformat)
- { case SF_FORMAT_ULAW : /* 8-bit Ulaw encoding. */
- error = ulaw_init (psf) ;
- break ;
-
- case SF_FORMAT_ALAW : /* 8-bit Alaw encoding. */
- error = alaw_init (psf) ;
- break ;
-
- case SF_FORMAT_PCM_16 : /* 16-bit linear PCM. */
- case SF_FORMAT_PCM_32 : /* 32-bit linear PCM. */
- error = pcm_init (psf) ;
- break ;
-
- case SF_FORMAT_FLOAT : /* 32-bit linear PCM. */
- error = float32_init (psf) ;
- break ;
-
- default : break ;
- } ;
-
- return error ;
-} /* ircam_open */
-
-/*------------------------------------------------------------------------------
-*/
-
-static int
-ircam_read_header (SF_PRIVATE *psf)
-{ unsigned int marker, encoding ;
- float samplerate ;
- int error = SFE_NO_ERROR ;
-
- psf_binheader_readf (psf, "epmf44", 0, &marker, &samplerate, &(psf->sf.channels), &encoding) ;
-
- if (((marker & IRCAM_BE_MASK) != IRCAM_BE_MARKER) && ((marker & IRCAM_LE_MASK) != IRCAM_LE_MARKER))
- { psf_log_printf (psf, "marker: 0x%X\n", marker) ;
- return SFE_IRCAM_NO_MARKER ;
- } ;
-
- psf->endian = SF_ENDIAN_LITTLE ;
-
- if (psf->sf.channels > 256)
- { psf_binheader_readf (psf, "Epmf44", 0, &marker, &samplerate, &(psf->sf.channels), &encoding) ;
-
- /* Sanity checking for endian-ness detection. */
- if (psf->sf.channels > 256)
- { psf_log_printf (psf, "marker: 0x%X\n", marker) ;
- return SFE_IRCAM_BAD_CHANNELS ;
- } ;
-
- psf->endian = SF_ENDIAN_BIG ;
- } ;
-
- psf_log_printf (psf, "marker: 0x%X\n", marker) ;
-
- psf->sf.samplerate = (int) samplerate ;
-
- psf_log_printf (psf, " Sample Rate : %d\n"
- " Channels : %d\n"
- " Encoding : %X => %s\n", psf->sf.samplerate, psf->sf.channels, encoding, get_encoding_str (encoding)) ;
-
- switch (encoding)
- { case IRCAM_PCM_16 :
- psf->bytewidth = 2 ;
- psf->blockwidth = psf->sf.channels * psf->bytewidth ;
-
- psf->sf.format = SF_FORMAT_IRCAM | SF_FORMAT_PCM_16 ;
- break ;
-
- case IRCAM_PCM_32 :
- psf->bytewidth = 4 ;
- psf->blockwidth = psf->sf.channels * psf->bytewidth ;
-
- psf->sf.format = SF_FORMAT_IRCAM | SF_FORMAT_PCM_32 ;
- break ;
-
- case IRCAM_FLOAT :
- psf->bytewidth = 4 ;
- psf->blockwidth = psf->sf.channels * psf->bytewidth ;
-
- psf->sf.format = SF_FORMAT_IRCAM | SF_FORMAT_FLOAT ;
- break ;
-
- case IRCAM_ALAW :
- psf->bytewidth = 1 ;
- psf->blockwidth = psf->sf.channels * psf->bytewidth ;
-
- psf->sf.format = SF_FORMAT_IRCAM | SF_FORMAT_ALAW ;
- break ;
-
- case IRCAM_ULAW :
- psf->bytewidth = 1 ;
- psf->blockwidth = psf->sf.channels * psf->bytewidth ;
-
- psf->sf.format = SF_FORMAT_IRCAM | SF_FORMAT_ULAW ;
- break ;
-
- default :
- error = SFE_IRCAM_UNKNOWN_FORMAT ;
- break ;
- } ;
-
- if (psf->endian == SF_ENDIAN_BIG)
- psf->sf.format |= SF_ENDIAN_BIG ;
- else
- psf->sf.format |= SF_ENDIAN_LITTLE ;
-
- if (error)
- return error ;
-
- psf->dataoffset = IRCAM_DATA_OFFSET ;
- psf->datalength = psf->filelength - psf->dataoffset ;
-
- if (psf->sf.frames == 0 && psf->blockwidth)
- psf->sf.frames = psf->datalength / psf->blockwidth ;
-
- psf_log_printf (psf, " Samples : %d\n", psf->sf.frames) ;
-
- psf_binheader_readf (psf, "p", IRCAM_DATA_OFFSET) ;
-
- return 0 ;
-} /* ircam_read_header */
-
-static int
-ircam_close (SF_PRIVATE *psf)
-{
- psf_log_printf (psf, "close\n") ;
-
- return 0 ;
-} /* ircam_close */
-
-static int
-ircam_write_header (SF_PRIVATE *psf, int calc_length)
-{ int encoding ;
- float samplerate ;
- sf_count_t current ;
-
- if (psf->pipeoffset > 0)
- return 0 ;
-
- current = psf_ftell (psf) ;
-
- calc_length = calc_length ;
-
- /* This also sets psf->endian. */
- encoding = get_encoding (psf->sf.format & SF_FORMAT_SUBMASK) ;
-
- if (encoding == 0)
- return SFE_BAD_OPEN_FORMAT ;
-
- /* Reset the current header length to zero. */
- psf->header [0] = 0 ;
- psf->headindex = 0 ;
-
- if (psf->is_pipe == SF_FALSE)
- psf_fseek (psf, 0, SEEK_SET) ;
-
- samplerate = psf->sf.samplerate ;
-
- switch (psf->endian)
- { case SF_ENDIAN_BIG :
- psf_binheader_writef (psf, "Emf", IRCAM_02B_MARKER, samplerate) ;
- psf_binheader_writef (psf, "E44", psf->sf.channels, encoding) ;
- break ;
-
- case SF_ENDIAN_LITTLE :
- psf_binheader_writef (psf, "emf", IRCAM_03L_MARKER, samplerate) ;
- psf_binheader_writef (psf, "e44", psf->sf.channels, encoding) ;
- break ;
-
- default : return SFE_BAD_OPEN_FORMAT ;
- } ;
-
- psf_binheader_writef (psf, "z", (size_t) (IRCAM_DATA_OFFSET - psf->headindex)) ;
-
- /* Header construction complete so write it out. */
- psf_fwrite (psf->header, psf->headindex, 1, psf) ;
-
- if (psf->error)
- return psf->error ;
-
- if (current > 0)
- psf_fseek (psf, current, SEEK_SET) ;
-
- return psf->error ;
-} /* ircam_write_header */
-
-static int
-get_encoding (int subformat)
-{ switch (subformat)
- { case SF_FORMAT_PCM_16 : return IRCAM_PCM_16 ;
- case SF_FORMAT_PCM_32 : return IRCAM_PCM_32 ;
-
- case SF_FORMAT_FLOAT : return IRCAM_FLOAT ;
-
- case SF_FORMAT_ULAW : return IRCAM_ULAW ;
- case SF_FORMAT_ALAW : return IRCAM_ALAW ;
-
- default : break ;
- } ;
-
- return 0 ;
-} /* get_encoding */
-
-static const char*
-get_encoding_str (int encoding)
-{ switch (encoding)
- { case IRCAM_PCM_16 : return "16 bit PCM" ;
- case IRCAM_FLOAT : return "32 bit float" ;
- case IRCAM_ALAW : return "A law" ;
- case IRCAM_ULAW : return "u law" ;
- case IRCAM_PCM_32 : return "32 bit PCM" ;
- } ;
- return "Unknown encoding" ;
-} /* get_encoding_str */
-
-/*
-** Do not edit or modify anything in this comment block.
-** The arch-tag line is a file identity tag for the GNU Arch
-** revision control system.
-**
-** arch-tag: f2714ab8-f286-4c94-9740-edaf673a1c71
-*/
diff --git a/libs/libsndfile/src/libsndfile.def b/libs/libsndfile/src/libsndfile.def
deleted file mode 100644
index 7b144538fc..0000000000
--- a/libs/libsndfile/src/libsndfile.def
+++ /dev/null
@@ -1,39 +0,0 @@
-; Auto-generated by create_symbols_file.py
-
-LIBRARY libsndfile-1.dll
-EXPORTS
-
-sf_command @1
-sf_open @2
-sf_close @3
-sf_seek @4
-sf_error @7
-sf_perror @8
-sf_error_str @9
-sf_error_number @10
-sf_format_check @11
-sf_read_raw @16
-sf_readf_short @17
-sf_readf_int @18
-sf_readf_float @19
-sf_readf_double @20
-sf_read_short @21
-sf_read_int @22
-sf_read_float @23
-sf_read_double @24
-sf_write_raw @32
-sf_writef_short @33
-sf_writef_int @34
-sf_writef_float @35
-sf_writef_double @36
-sf_write_short @37
-sf_write_int @38
-sf_write_float @39
-sf_write_double @40
-sf_strerror @50
-sf_get_string @60
-sf_set_string @61
-sf_open_fd @70
-sf_open_virtual @80
-sf_write_sync @90
-
diff --git a/libs/libsndfile/src/macbinary3.c b/libs/libsndfile/src/macbinary3.c
deleted file mode 100644
index 32a10593a4..0000000000
--- a/libs/libsndfile/src/macbinary3.c
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
-** Copyright (C) 2003-2005 Erik de Castro Lopo <erikd@mega-nerd.com>
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU Lesser General Public License as published by
-** the Free Software Foundation; either version 2.1 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU Lesser General Public License for more details.
-**
-** You should have received a copy of the GNU Lesser General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-*/
-
-#include "sfconfig.h"
-
-#include <stdlib.h>
-#include <string.h>
-
-#include "sndfile.h"
-#include "sfendian.h"
-#include "common.h"
-
-#if (OS_IS_MACOSX == 1)
-
-#include <CoreServices/CoreServices.h>
-
-int
-macbinary3_open (SF_PRIVATE *psf)
-{
- if (psf)
- return 0 ;
-
- return 0 ;
-} /* macbinary3_open */
-
-#else
-
-int
-macbinary3_open (SF_PRIVATE *psf)
-{
- psf = psf ;
- return 0 ;
-} /* macbinary3_open */
-
-#endif /* OS_IS_MACOSX */
-
-/*
-** Do not edit or modify anything in this comment block.
-** The arch-tag line is a file identity tag for the GNU Arch
-** revision control system.
-**
-** arch-tag: c397a7d7-1a31-4349-9684-bd29ef06211e
-*/
diff --git a/libs/libsndfile/src/macos.c b/libs/libsndfile/src/macos.c
deleted file mode 100644
index bb5543aa0c..0000000000
--- a/libs/libsndfile/src/macos.c
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
-** Copyright (C) 2003-2005 Erik de Castro Lopo <erikd@mega-nerd.com>
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU Lesser General Public License as published by
-** the Free Software Foundation; either version 2.1 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU Lesser General Public License for more details.
-**
-** You should have received a copy of the GNU Lesser General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-*/
-
-#include "sfconfig.h"
-
-#include <stdlib.h>
-#include <string.h>
-#include <sys/stat.h>
-
-#include "sndfile.h"
-#include "sfendian.h"
-#include "common.h"
-
-#define STR_MARKER MAKE_MARKER ('S', 'T', 'R', ' ')
-
-int
-macos_guess_file_type (SF_PRIVATE *psf, const char *filename)
-{ static char rsrc_name [1024] ;
- struct stat statbuf ;
- int format ;
-
- psf = psf ;
-
- snprintf (rsrc_name, sizeof (rsrc_name), "%s/rsrc", filename) ;
-
- /* If there is no resource fork, just return. */
- if (stat (rsrc_name, &statbuf) != 0)
- { psf_log_printf (psf, "No resource fork.\n") ;
- return 0 ;
- } ;
-
- if (statbuf.st_size == 0)
- { psf_log_printf (psf, "Have zero size resource fork.\n") ;
- return 0 ;
- } ;
-
- format = 0 ;
-
- return format ;
-} /* macos_guess_file_type */
-
-/*
-** Do not edit or modify anything in this comment block.
-** The arch-tag line is a file identity tag for the GNU Arch
-** revision control system.
-**
-** arch-tag: 5fbf66d7-9547-442a-9c73-92fd164f3a95
-*/
diff --git a/libs/libsndfile/src/mat4.c b/libs/libsndfile/src/mat4.c
deleted file mode 100644
index fcc6111506..0000000000
--- a/libs/libsndfile/src/mat4.c
+++ /dev/null
@@ -1,394 +0,0 @@
-/*
-** Copyright (C) 2002-2004 Erik de Castro Lopo <erikd@mega-nerd.com>
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU Lesser General Public License as published by
-** the Free Software Foundation; either version 2.1 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU Lesser General Public License for more details.
-**
-** You should have received a copy of the GNU Lesser General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-*/
-
-#include "sfconfig.h"
-
-#include <stdio.h>
-#include <fcntl.h>
-#include <string.h>
-#include <ctype.h>
-
-#include "sndfile.h"
-#include "sfendian.h"
-#include "common.h"
-#include "float_cast.h"
-
-/*------------------------------------------------------------------------------
-** Information on how to decode and encode this file was obtained in a PDF
-** file which I found on http://www.wotsit.org/.
-** Also did a lot of testing with GNU Octave but do not have access to
-** Matlab (tm) and so could not test it there.
-*/
-
-/*------------------------------------------------------------------------------
-** Macros to handle big/little endian issues.
-*/
-
-#define MAT4_BE_DOUBLE (MAKE_MARKER (0, 0, 0x03, 0xE8))
-#define MAT4_LE_DOUBLE (MAKE_MARKER (0, 0, 0, 0))
-
-#define MAT4_BE_FLOAT (MAKE_MARKER (0, 0, 0x03, 0xF2))
-#define MAT4_LE_FLOAT (MAKE_MARKER (0x0A, 0, 0, 0))
-
-#define MAT4_BE_PCM_32 (MAKE_MARKER (0, 0, 0x03, 0xFC))
-#define MAT4_LE_PCM_32 (MAKE_MARKER (0x14, 0, 0, 0))
-
-#define MAT4_BE_PCM_16 (MAKE_MARKER (0, 0, 0x04, 0x06))
-#define MAT4_LE_PCM_16 (MAKE_MARKER (0x1E, 0, 0, 0))
-
-/* Can't see any reason to ever implement this. */
-#define MAT4_BE_PCM_U8 (MAKE_MARKER (0, 0, 0x04, 0x1A))
-#define MAT4_LE_PCM_U8 (MAKE_MARKER (0x32, 0, 0, 0))
-
-/*------------------------------------------------------------------------------
-** Private static functions.
-*/
-
-static int mat4_close (SF_PRIVATE *psf) ;
-
-static int mat4_format_to_encoding (int format, int endian) ;
-
-static int mat4_write_header (SF_PRIVATE *psf, int calc_length) ;
-static int mat4_read_header (SF_PRIVATE *psf) ;
-
-static const char * mat4_marker_to_str (int marker) ;
-
-/*------------------------------------------------------------------------------
-** Public function.
-*/
-
-int
-mat4_open (SF_PRIVATE *psf)
-{ int subformat, error = 0 ;
-
- if (psf->mode == SFM_READ || (psf->mode == SFM_RDWR && psf->filelength > 0))
- { if ((error = mat4_read_header (psf)))
- return error ;
- } ;
-
- if ((psf->sf.format & SF_FORMAT_TYPEMASK) != SF_FORMAT_MAT4)
- return SFE_BAD_OPEN_FORMAT ;
-
- subformat = psf->sf.format & SF_FORMAT_SUBMASK ;
-
- if (psf->mode == SFM_WRITE || psf->mode == SFM_RDWR)
- { if (psf->is_pipe)
- return SFE_NO_PIPE_WRITE ;
-
- psf->endian = psf->sf.format & SF_FORMAT_ENDMASK ;
- if (CPU_IS_LITTLE_ENDIAN && (psf->endian == SF_ENDIAN_CPU || psf->endian == 0))
- psf->endian = SF_ENDIAN_LITTLE ;
- else if (CPU_IS_BIG_ENDIAN && (psf->endian == SF_ENDIAN_CPU || psf->endian == 0))
- psf->endian = SF_ENDIAN_BIG ;
-
- if ((error = mat4_write_header (psf, SF_FALSE)))
- return error ;
-
- psf->write_header = mat4_write_header ;
- } ;
-
- psf->container_close = mat4_close ;
-
- psf->blockwidth = psf->bytewidth * psf->sf.channels ;
-
- switch (subformat)
- { case SF_FORMAT_PCM_16 :
- case SF_FORMAT_PCM_32 :
- error = pcm_init (psf) ;
- break ;
-
- case SF_FORMAT_FLOAT :
- error = float32_init (psf) ;
- break ;
-
- case SF_FORMAT_DOUBLE :
- error = double64_init (psf) ;
- break ;
-
- default : break ;
- } ;
-
- if (error)
- return error ;
-
- return error ;
-} /* mat4_open */
-
-/*------------------------------------------------------------------------------
-*/
-
-static int
-mat4_close (SF_PRIVATE *psf)
-{
- if (psf->mode == SFM_WRITE || psf->mode == SFM_RDWR)
- mat4_write_header (psf, SF_TRUE) ;
-
- return 0 ;
-} /* mat4_close */
-
-/*------------------------------------------------------------------------------
-*/
-
-static int
-mat4_write_header (SF_PRIVATE *psf, int calc_length)
-{ sf_count_t current ;
- int encoding ;
- double samplerate ;
-
- current = psf_ftell (psf) ;
-
- if (calc_length)
- { psf->filelength = psf_get_filelen (psf) ;
-
- psf->datalength = psf->filelength - psf->dataoffset ;
- if (psf->dataend)
- psf->datalength -= psf->filelength - psf->dataend ;
-
- psf->sf.frames = psf->datalength / (psf->bytewidth * psf->sf.channels) ;
- } ;
-
- encoding = mat4_format_to_encoding (psf->sf.format & SF_FORMAT_SUBMASK, psf->endian) ;
-
- if (encoding == -1)
- return SFE_BAD_OPEN_FORMAT ;
-
- /* Reset the current header length to zero. */
- psf->header [0] = 0 ;
- psf->headindex = 0 ;
- psf_fseek (psf, 0, SEEK_SET) ;
-
- /* Need sample rate as a double for writing to the header. */
- samplerate = psf->sf.samplerate ;
-
- if (psf->endian == SF_ENDIAN_BIG)
- { psf_binheader_writef (psf, "Em444", MAT4_BE_DOUBLE, 1, 1, 0) ;
- psf_binheader_writef (psf, "E4bd", 11, "samplerate", 11, samplerate) ;
- psf_binheader_writef (psf, "tEm484", encoding, psf->sf.channels, psf->sf.frames, 0) ;
- psf_binheader_writef (psf, "E4b", 9, "wavedata", 9) ;
- }
- else if (psf->endian == SF_ENDIAN_LITTLE)
- { psf_binheader_writef (psf, "em444", MAT4_LE_DOUBLE, 1, 1, 0) ;
- psf_binheader_writef (psf, "e4bd", 11, "samplerate", 11, samplerate) ;
- psf_binheader_writef (psf, "tem484", encoding, psf->sf.channels, psf->sf.frames, 0) ;
- psf_binheader_writef (psf, "e4b", 9, "wavedata", 9) ;
- }
- else
- return SFE_BAD_OPEN_FORMAT ;
-
- /* Header construction complete so write it out. */
- psf_fwrite (psf->header, psf->headindex, 1, psf) ;
-
- if (psf->error)
- return psf->error ;
-
- psf->dataoffset = psf->headindex ;
-
- if (current > 0)
- psf_fseek (psf, current, SEEK_SET) ;
-
- return psf->error ;
-} /* mat4_write_header */
-
-static int
-mat4_read_header (SF_PRIVATE *psf)
-{ int marker, namesize, rows, cols, imag ;
- double value ;
- const char *marker_str ;
- char name [64] ;
-
- psf_binheader_readf (psf, "pm", 0, &marker) ;
-
- /* MAT4 file must start with a double for the samplerate. */
- if (marker == MAT4_BE_DOUBLE)
- { psf->endian = psf->rwf_endian = SF_ENDIAN_BIG ;
- marker_str = "big endian double" ;
- }
- else if (marker == MAT4_LE_DOUBLE)
- { psf->endian = psf->rwf_endian = SF_ENDIAN_LITTLE ;
- marker_str = "little endian double" ;
- }
- else
- return SFE_UNIMPLEMENTED ;
-
- psf_log_printf (psf, "GNU Octave 2.0 / MATLAB v4.2 format\nMarker : %s\n", marker_str) ;
-
- psf_binheader_readf (psf, "444", &rows, &cols, &imag) ;
-
- psf_log_printf (psf, " Rows : %d\n Cols : %d\n Imag : %s\n", rows, cols, imag ? "True" : "False") ;
-
- psf_binheader_readf (psf, "4", &namesize) ;
-
- if (namesize >= SIGNED_SIZEOF (name))
- return SFE_MAT4_BAD_NAME ;
-
- psf_binheader_readf (psf, "b", name, namesize) ;
- name [namesize] = 0 ;
-
- psf_log_printf (psf, " Name : %s\n", name) ;
-
- psf_binheader_readf (psf, "d", &value) ;
-
- LSF_SNPRINTF (psf->u.cbuf, sizeof (psf->u.cbuf), " Value : %f\n", value) ;
- psf_log_printf (psf, psf->u.cbuf) ;
-
- if ((rows != 1) || (cols != 1))
- return SFE_MAT4_NO_SAMPLERATE ;
-
- psf->sf.samplerate = lrint (value) ;
-
- /* Now write out the audio data. */
-
- psf_binheader_readf (psf, "m", &marker) ;
-
- psf_log_printf (psf, "Marker : %s\n", mat4_marker_to_str (marker)) ;
-
- psf_binheader_readf (psf, "444", &rows, &cols, &imag) ;
-
- psf_log_printf (psf, " Rows : %d\n Cols : %d\n Imag : %s\n", rows, cols, imag ? "True" : "False") ;
-
- psf_binheader_readf (psf, "4", &namesize) ;
-
- if (namesize >= SIGNED_SIZEOF (name))
- return SFE_MAT4_BAD_NAME ;
-
- psf_binheader_readf (psf, "b", name, namesize) ;
- name [namesize] = 0 ;
-
- psf_log_printf (psf, " Name : %s\n", name) ;
-
- psf->dataoffset = psf_ftell (psf) ;
-
- if (rows == 0 && cols == 0)
- { psf_log_printf (psf, "*** Error : zero channel count.\n") ;
- return SFE_MAT4_ZERO_CHANNELS ;
- } ;
-
- psf->sf.channels = rows ;
- psf->sf.frames = cols ;
-
- psf->sf.format = psf->endian | SF_FORMAT_MAT4 ;
- switch (marker)
- { case MAT4_BE_DOUBLE :
- case MAT4_LE_DOUBLE :
- psf->sf.format |= SF_FORMAT_DOUBLE ;
- psf->bytewidth = 8 ;
- break ;
-
- case MAT4_BE_FLOAT :
- case MAT4_LE_FLOAT :
- psf->sf.format |= SF_FORMAT_FLOAT ;
- psf->bytewidth = 4 ;
- break ;
-
- case MAT4_BE_PCM_32 :
- case MAT4_LE_PCM_32 :
- psf->sf.format |= SF_FORMAT_PCM_32 ;
- psf->bytewidth = 4 ;
- break ;
-
- case MAT4_BE_PCM_16 :
- case MAT4_LE_PCM_16 :
- psf->sf.format |= SF_FORMAT_PCM_16 ;
- psf->bytewidth = 2 ;
- break ;
-
- default :
- psf_log_printf (psf, "*** Error : Bad marker %08X\n", marker) ;
- return SFE_UNIMPLEMENTED ;
- } ;
-
- if ((psf->filelength - psf->dataoffset) < psf->sf.channels * psf->sf.frames * psf->bytewidth)
- { psf_log_printf (psf, "*** File seems to be truncated. %D <--> %D\n",
- psf->filelength - psf->dataoffset, psf->sf.channels * psf->sf.frames * psf->bytewidth) ;
- }
- else if ((psf->filelength - psf->dataoffset) > psf->sf.channels * psf->sf.frames * psf->bytewidth)
- psf->dataend = psf->dataoffset + rows * cols * psf->bytewidth ;
-
- psf->datalength = psf->filelength - psf->dataoffset - psf->dataend ;
-
- psf->sf.sections = 1 ;
-
- return 0 ;
-} /* mat4_read_header */
-
-static int
-mat4_format_to_encoding (int format, int endian)
-{
- switch (format | endian)
- { case (SF_FORMAT_PCM_16 | SF_ENDIAN_BIG) :
- return MAT4_BE_PCM_16 ;
-
- case (SF_FORMAT_PCM_16 | SF_ENDIAN_LITTLE) :
- return MAT4_LE_PCM_16 ;
-
- case (SF_FORMAT_PCM_32 | SF_ENDIAN_BIG) :
- return MAT4_BE_PCM_32 ;
-
- case (SF_FORMAT_PCM_32 | SF_ENDIAN_LITTLE) :
- return MAT4_LE_PCM_32 ;
-
- case (SF_FORMAT_FLOAT | SF_ENDIAN_BIG) :
- return MAT4_BE_FLOAT ;
-
- case (SF_FORMAT_FLOAT | SF_ENDIAN_LITTLE) :
- return MAT4_LE_FLOAT ;
-
- case (SF_FORMAT_DOUBLE | SF_ENDIAN_BIG) :
- return MAT4_BE_DOUBLE ;
-
- case (SF_FORMAT_DOUBLE | SF_ENDIAN_LITTLE) :
- return MAT4_LE_DOUBLE ;
-
- default : break ;
- } ;
-
- return -1 ;
-} /* mat4_format_to_encoding */
-
-static const char *
-mat4_marker_to_str (int marker)
-{ static char str [32] ;
-
- switch (marker)
- {
- case MAT4_BE_PCM_16 : return "big endian 16 bit PCM" ;
- case MAT4_LE_PCM_16 : return "little endian 16 bit PCM" ;
-
- case MAT4_BE_PCM_32 : return "big endian 32 bit PCM" ;
- case MAT4_LE_PCM_32 : return "little endian 32 bit PCM" ;
-
-
- case MAT4_BE_FLOAT : return "big endian float" ;
- case MAT4_LE_FLOAT : return "big endian float" ;
-
- case MAT4_BE_DOUBLE : return "big endian double" ;
- case MAT4_LE_DOUBLE : return "little endian double" ;
- } ;
-
- /* This is a little unsafe but is really only for debugging. */
- str [sizeof (str) - 1] = 0 ;
- LSF_SNPRINTF (str, sizeof (str) - 1, "%08X", marker) ;
- return str ;
-} /* mat4_marker_to_str */
-/*
-** Do not edit or modify anything in this comment block.
-** The arch-tag line is a file identity tag for the GNU Arch
-** revision control system.
-**
-** arch-tag: f7e5f5d6-fc39-452e-bc4a-59627116ff59
-*/
diff --git a/libs/libsndfile/src/mat5.c b/libs/libsndfile/src/mat5.c
deleted file mode 100644
index dfef7b517a..0000000000
--- a/libs/libsndfile/src/mat5.c
+++ /dev/null
@@ -1,507 +0,0 @@
-/*
-** Copyright (C) 2002-2004 Erik de Castro Lopo <erikd@mega-nerd.com>
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU Lesser General Public License as published by
-** the Free Software Foundation; either version 2.1 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU Lesser General Public License for more details.
-**
-** You should have received a copy of the GNU Lesser General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-*/
-
-#include "sfconfig.h"
-
-#include <stdio.h>
-#include <fcntl.h>
-#include <string.h>
-#include <ctype.h>
-
-#include "sndfile.h"
-#include "sfendian.h"
-#include "common.h"
-#include "float_cast.h"
-
-/*------------------------------------------------------------------------------
-** Information on how to decode and encode this file was obtained in a PDF
-** file which I found on http://www.wotsit.org/.
-** Also did a lot of testing with GNU Octave but do not have access to
-** Matlab (tm) and so could not test it there.
-*/
-
-/*------------------------------------------------------------------------------
-** Macros to handle big/little endian issues.
-*/
-
-#define MATL_MARKER (MAKE_MARKER ('M', 'A', 'T', 'L'))
-
-#define IM_MARKER (('I' << 8) + 'M')
-#define MI_MARKER (('M' << 8) + 'I')
-
-/*------------------------------------------------------------------------------
-** Enums and typedefs.
-*/
-
-enum
-{ MAT5_TYPE_SCHAR = 0x1,
- MAT5_TYPE_UCHAR = 0x2,
- MAT5_TYPE_INT16 = 0x3,
- MAT5_TYPE_UINT16 = 0x4,
- MAT5_TYPE_INT32 = 0x5,
- MAT5_TYPE_UINT32 = 0x6,
- MAT5_TYPE_FLOAT = 0x7,
- MAT5_TYPE_DOUBLE = 0x9,
- MAT5_TYPE_ARRAY = 0xE,
-
- MAT5_TYPE_COMP_USHORT = 0x00020004,
- MAT5_TYPE_COMP_UINT = 0x00040006
-} ;
-
-typedef struct
-{ sf_count_t size ;
- int rows, cols ;
- char name [32] ;
-} MAT5_MATRIX ;
-
-/*------------------------------------------------------------------------------
-** Private static functions.
-*/
-
-static int mat5_close (SF_PRIVATE *psf) ;
-
-static int mat5_write_header (SF_PRIVATE *psf, int calc_length) ;
-static int mat5_read_header (SF_PRIVATE *psf) ;
-
-/*------------------------------------------------------------------------------
-** Public function.
-*/
-
-int
-mat5_open (SF_PRIVATE *psf)
-{ int subformat, error = 0 ;
-
- if (psf->mode == SFM_READ || (psf->mode == SFM_RDWR && psf->filelength > 0))
- { if ((error = mat5_read_header (psf)))
- return error ;
- } ;
-
- if ((psf->sf.format & SF_FORMAT_TYPEMASK) != SF_FORMAT_MAT5)
- return SFE_BAD_OPEN_FORMAT ;
-
- subformat = psf->sf.format & SF_FORMAT_SUBMASK ;
-
- if (psf->mode == SFM_WRITE || psf->mode == SFM_RDWR)
- { if (psf->is_pipe)
- return SFE_NO_PIPE_WRITE ;
-
- psf->endian = psf->sf.format & SF_FORMAT_ENDMASK ;
- if (CPU_IS_LITTLE_ENDIAN && (psf->endian == SF_ENDIAN_CPU || psf->endian == 0))
- psf->endian = SF_ENDIAN_LITTLE ;
- else if (CPU_IS_BIG_ENDIAN && (psf->endian == SF_ENDIAN_CPU || psf->endian == 0))
- psf->endian = SF_ENDIAN_BIG ;
-
- if ((error = mat5_write_header (psf, SF_FALSE)))
- return error ;
-
- psf->write_header = mat5_write_header ;
- } ;
-
- psf->container_close = mat5_close ;
-
- psf->blockwidth = psf->bytewidth * psf->sf.channels ;
-
- switch (subformat)
- { case SF_FORMAT_PCM_U8 :
- case SF_FORMAT_PCM_16 :
- case SF_FORMAT_PCM_32 :
- error = pcm_init (psf) ;
- break ;
-
- case SF_FORMAT_FLOAT :
- error = float32_init (psf) ;
- break ;
-
- case SF_FORMAT_DOUBLE :
- error = double64_init (psf) ;
- break ;
-
- default : break ;
- } ;
-
- return error ;
-} /* mat5_open */
-
-/*------------------------------------------------------------------------------
-*/
-
-static int
-mat5_close (SF_PRIVATE *psf)
-{
- if (psf->mode == SFM_WRITE || psf->mode == SFM_RDWR)
- mat5_write_header (psf, SF_TRUE) ;
-
- return 0 ;
-} /* mat5_close */
-
-/*------------------------------------------------------------------------------
-*/
-
-static int
-mat5_write_header (SF_PRIVATE *psf, int calc_length)
-{ static const char *filename = "MATLAB 5.0 MAT-file, written by " PACKAGE "-" VERSION ", " ;
- static const char *sr_name = "samplerate\0\0\0\0\0\0\0\0\0\0\0" ;
- static const char *wd_name = "wavedata\0" ;
- sf_count_t current, datasize ;
- int encoding ;
-
- current = psf_ftell (psf) ;
-
- if (calc_length)
- { psf_fseek (psf, 0, SEEK_END) ;
- psf->filelength = psf_ftell (psf) ;
- psf_fseek (psf, 0, SEEK_SET) ;
-
- psf->datalength = psf->filelength - psf->dataoffset ;
- if (psf->dataend)
- psf->datalength -= psf->filelength - psf->dataend ;
-
- psf->sf.frames = psf->datalength / (psf->bytewidth * psf->sf.channels) ;
- } ;
-
- switch (psf->sf.format & SF_FORMAT_SUBMASK)
- { case SF_FORMAT_PCM_U8 :
- encoding = MAT5_TYPE_UCHAR ;
- break ;
-
- case SF_FORMAT_PCM_16 :
- encoding = MAT5_TYPE_INT16 ;
- break ;
-
- case SF_FORMAT_PCM_32 :
- encoding = MAT5_TYPE_INT32 ;
- break ;
-
- case SF_FORMAT_FLOAT :
- encoding = MAT5_TYPE_FLOAT ;
- break ;
-
- case SF_FORMAT_DOUBLE :
- encoding = MAT5_TYPE_DOUBLE ;
- break ;
-
- default :
- return SFE_BAD_OPEN_FORMAT ;
- } ;
-
- /* Reset the current header length to zero. */
- psf->header [0] = 0 ;
- psf->headindex = 0 ;
- psf_fseek (psf, 0, SEEK_SET) ;
-
- psf_get_date_str (psf->u.cbuf, sizeof (psf->u.scbuf)) ;
- psf_binheader_writef (psf, "bb", filename, strlen (filename), psf->u.cbuf, strlen (psf->u.cbuf) + 1) ;
-
- memset (psf->u.scbuf, ' ', 124 - psf->headindex) ;
- psf_binheader_writef (psf, "b", psf->u.scbuf, 124 - psf->headindex) ;
-
- psf->rwf_endian = psf->endian ;
-
- if (psf->rwf_endian == SF_ENDIAN_BIG)
- psf_binheader_writef (psf, "2b", 0x0100, "MI", 2) ;
- else
- psf_binheader_writef (psf, "2b", 0x0100, "IM", 2) ;
-
- psf_binheader_writef (psf, "444444", MAT5_TYPE_ARRAY, 64, MAT5_TYPE_UINT32, 8, 6, 0) ;
- psf_binheader_writef (psf, "4444", MAT5_TYPE_INT32, 8, 1, 1) ;
- psf_binheader_writef (psf, "44b", MAT5_TYPE_SCHAR, strlen (sr_name), sr_name, 16) ;
-
- if (psf->sf.samplerate > 0xFFFF)
- psf_binheader_writef (psf, "44", MAT5_TYPE_COMP_UINT, psf->sf.samplerate) ;
- else
- { unsigned short samplerate = psf->sf.samplerate ;
-
- psf_binheader_writef (psf, "422", MAT5_TYPE_COMP_USHORT, samplerate, 0) ;
- } ;
-
- datasize = psf->sf.frames * psf->sf.channels * psf->bytewidth ;
-
- psf_binheader_writef (psf, "t484444", MAT5_TYPE_ARRAY, datasize + 64, MAT5_TYPE_UINT32, 8, 6, 0) ;
- psf_binheader_writef (psf, "t4448", MAT5_TYPE_INT32, 8, psf->sf.channels, psf->sf.frames) ;
- psf_binheader_writef (psf, "44b", MAT5_TYPE_SCHAR, strlen (wd_name), wd_name, strlen (wd_name)) ;
-
- datasize = psf->sf.frames * psf->sf.channels * psf->bytewidth ;
- if (datasize > 0x7FFFFFFF)
- datasize = 0x7FFFFFFF ;
-
- psf_binheader_writef (psf, "t48", encoding, datasize) ;
-
- /* Header construction complete so write it out. */
- psf_fwrite (psf->header, psf->headindex, 1, psf) ;
-
- if (psf->error)
- return psf->error ;
-
- psf->dataoffset = psf->headindex ;
-
- if (current > 0)
- psf_fseek (psf, current, SEEK_SET) ;
-
- return psf->error ;
-} /* mat5_write_header */
-
-static int
-mat5_read_header (SF_PRIVATE *psf)
-{ char name [32] ;
- short version, endian ;
- int type, size, flags1, flags2, rows, cols ;
-
- psf_binheader_readf (psf, "pb", 0, psf->u.cbuf, 124) ;
-
- psf->u.scbuf [125] = 0 ;
-
- if (strlen (psf->u.cbuf) >= 124)
- return SFE_UNIMPLEMENTED ;
-
- if (strstr (psf->u.cbuf, "MATLAB 5.0 MAT-file") == psf->u.cbuf)
- psf_log_printf (psf, "%s\n", psf->u.scbuf) ;
-
-
- psf_binheader_readf (psf, "E22", &version, &endian) ;
-
- if (endian == MI_MARKER)
- { psf->endian = psf->rwf_endian = SF_ENDIAN_BIG ;
- if (CPU_IS_LITTLE_ENDIAN) version = ENDSWAP_SHORT (version) ;
- }
- else if (endian == IM_MARKER)
- { psf->endian = psf->rwf_endian = SF_ENDIAN_LITTLE ;
- if (CPU_IS_BIG_ENDIAN) version = ENDSWAP_SHORT (version) ;
- }
- else
- return SFE_MAT5_BAD_ENDIAN ;
-
- if ((CPU_IS_LITTLE_ENDIAN && endian == IM_MARKER) ||
- (CPU_IS_BIG_ENDIAN && endian == MI_MARKER))
- version = ENDSWAP_SHORT (version) ;
-
- psf_log_printf (psf, "Version : 0x%04X\n", version) ;
- psf_log_printf (psf, "Endian : 0x%04X => %s\n", endian,
- (psf->endian == SF_ENDIAN_LITTLE) ? "Little" : "Big") ;
-
- /*========================================================*/
- psf_binheader_readf (psf, "44", &type, &size) ;
- psf_log_printf (psf, "Block\n Type : %X Size : %d\n", type, size) ;
-
- if (type != MAT5_TYPE_ARRAY)
- return SFE_MAT5_NO_BLOCK ;
-
- psf_binheader_readf (psf, "44", &type, &size) ;
- psf_log_printf (psf, " Type : %X Size : %d\n", type, size) ;
-
- if (type != MAT5_TYPE_UINT32)
- return SFE_MAT5_NO_BLOCK ;
-
- psf_binheader_readf (psf, "44", &flags1, &flags2) ;
- psf_log_printf (psf, " Flg1 : %X Flg2 : %d\n", flags1, flags2) ;
-
- psf_binheader_readf (psf, "44", &type, &size) ;
- psf_log_printf (psf, " Type : %X Size : %d\n", type, size) ;
-
- if (type != MAT5_TYPE_INT32)
- return SFE_MAT5_NO_BLOCK ;
-
- psf_binheader_readf (psf, "44", &rows, &cols) ;
- psf_log_printf (psf, " Rows : %X Cols : %d\n", rows, cols) ;
-
- if (rows != 1 || cols != 1)
- return SFE_MAT5_SAMPLE_RATE ;
-
- psf_binheader_readf (psf, "4", &type) ;
-
- if (type == MAT5_TYPE_SCHAR)
- { psf_binheader_readf (psf, "4", &size) ;
- psf_log_printf (psf, " Type : %X Size : %d\n", type, size) ;
- if (size > SIGNED_SIZEOF (name) - 1)
- { psf_log_printf (psf, "Error : Bad name length.\n") ;
- return SFE_MAT5_NO_BLOCK ;
- } ;
-
- psf_binheader_readf (psf, "bj", name, size, (8 - (size % 8)) % 8) ;
- name [size] = 0 ;
- }
- else if ((type & 0xFFFF) == MAT5_TYPE_SCHAR)
- { size = type >> 16 ;
- if (size > 4)
- { psf_log_printf (psf, "Error : Bad name length.\n") ;
- return SFE_MAT5_NO_BLOCK ;
- } ;
-
- psf_log_printf (psf, " Type : %X\n", type) ;
- psf_binheader_readf (psf, "4", &name) ;
- name [size] = 0 ;
- }
- else
- return SFE_MAT5_NO_BLOCK ;
-
- psf_log_printf (psf, " Name : %s\n", name) ;
-
- /*-----------------------------------------*/
-
- psf_binheader_readf (psf, "44", &type, &size) ;
-
- switch (type)
- { case MAT5_TYPE_DOUBLE :
- { double samplerate ;
-
- psf_binheader_readf (psf, "d", &samplerate) ;
- LSF_SNPRINTF (name, sizeof (name), "%f\n", samplerate) ;
- psf_log_printf (psf, " Val : %s\n", name) ;
-
- psf->sf.samplerate = lrint (samplerate) ;
- } ;
- break ;
-
- case MAT5_TYPE_COMP_USHORT :
- { unsigned short samplerate ;
-
- psf_binheader_readf (psf, "j2j", -4, &samplerate, 2) ;
- psf_log_printf (psf, " Val : %u\n", samplerate) ;
- psf->sf.samplerate = samplerate ;
- }
- break ;
-
- case MAT5_TYPE_COMP_UINT :
- psf_log_printf (psf, " Val : %u\n", size) ;
- psf->sf.samplerate = size ;
- break ;
-
- default :
- psf_log_printf (psf, " Type : %X Size : %d ***\n", type, size) ;
- return SFE_MAT5_SAMPLE_RATE ;
- } ;
-
- /*-----------------------------------------*/
-
-
- psf_binheader_readf (psf, "44", &type, &size) ;
- psf_log_printf (psf, " Type : %X Size : %d\n", type, size) ;
-
- if (type != MAT5_TYPE_ARRAY)
- return SFE_MAT5_NO_BLOCK ;
-
- psf_binheader_readf (psf, "44", &type, &size) ;
- psf_log_printf (psf, " Type : %X Size : %d\n", type, size) ;
-
- if (type != MAT5_TYPE_UINT32)
- return SFE_MAT5_NO_BLOCK ;
-
- psf_binheader_readf (psf, "44", &flags1, &flags2) ;
- psf_log_printf (psf, " Flg1 : %X Flg2 : %d\n", flags1, flags2) ;
-
- psf_binheader_readf (psf, "44", &type, &size) ;
- psf_log_printf (psf, " Type : %X Size : %d\n", type, size) ;
-
- if (type != MAT5_TYPE_INT32)
- return SFE_MAT5_NO_BLOCK ;
-
- psf_binheader_readf (psf, "44", &rows, &cols) ;
- psf_log_printf (psf, " Rows : %X Cols : %d\n", rows, cols) ;
-
- psf_binheader_readf (psf, "4", &type) ;
-
- if (type == MAT5_TYPE_SCHAR)
- { psf_binheader_readf (psf, "4", &size) ;
- psf_log_printf (psf, " Type : %X Size : %d\n", type, size) ;
- if (size > SIGNED_SIZEOF (name) - 1)
- { psf_log_printf (psf, "Error : Bad name length.\n") ;
- return SFE_MAT5_NO_BLOCK ;
- } ;
-
- psf_binheader_readf (psf, "bj", name, size, (8 - (size % 8)) % 8) ;
- name [size] = 0 ;
- }
- else if ((type & 0xFFFF) == MAT5_TYPE_SCHAR)
- { size = type >> 16 ;
- if (size > 4)
- { psf_log_printf (psf, "Error : Bad name length.\n") ;
- return SFE_MAT5_NO_BLOCK ;
- } ;
-
- psf_log_printf (psf, " Type : %X\n", type) ;
- psf_binheader_readf (psf, "4", &name) ;
- name [size] = 0 ;
- }
- else
- return SFE_MAT5_NO_BLOCK ;
-
- psf_log_printf (psf, " Name : %s\n", name) ;
-
- psf_binheader_readf (psf, "44", &type, &size) ;
- psf_log_printf (psf, " Type : %X Size : %d\n", type, size) ;
-
- /*++++++++++++++++++++++++++++++++++++++++++++++++++*/
-
- if (rows == 0 && cols == 0)
- { psf_log_printf (psf, "*** Error : zero channel count.\n") ;
- return SFE_MAT5_ZERO_CHANNELS ;
- } ;
-
- psf->sf.channels = rows ;
- psf->sf.frames = cols ;
-
- psf->sf.format = psf->endian | SF_FORMAT_MAT5 ;
-
- switch (type)
- { case MAT5_TYPE_DOUBLE :
- psf_log_printf (psf, "Data type : double\n") ;
- psf->sf.format |= SF_FORMAT_DOUBLE ;
- psf->bytewidth = 8 ;
- break ;
-
- case MAT5_TYPE_FLOAT :
- psf_log_printf (psf, "Data type : float\n") ;
- psf->sf.format |= SF_FORMAT_FLOAT ;
- psf->bytewidth = 4 ;
- break ;
-
- case MAT5_TYPE_INT32 :
- psf_log_printf (psf, "Data type : 32 bit PCM\n") ;
- psf->sf.format |= SF_FORMAT_PCM_32 ;
- psf->bytewidth = 4 ;
- break ;
-
- case MAT5_TYPE_INT16 :
- psf_log_printf (psf, "Data type : 16 bit PCM\n") ;
- psf->sf.format |= SF_FORMAT_PCM_16 ;
- psf->bytewidth = 2 ;
- break ;
-
- case MAT5_TYPE_UCHAR :
- psf_log_printf (psf, "Data type : unsigned 8 bit PCM\n") ;
- psf->sf.format |= SF_FORMAT_PCM_U8 ;
- psf->bytewidth = 1 ;
- break ;
-
- default :
- psf_log_printf (psf, "*** Error : Bad marker %08X\n", type) ;
- return SFE_UNIMPLEMENTED ;
- } ;
-
- psf->dataoffset = psf_ftell (psf) ;
- psf->datalength = psf->filelength - psf->dataoffset ;
-
- return 0 ;
-} /* mat5_read_header */
-
-/*
-** Do not edit or modify anything in this comment block.
-** The arch-tag line is a file identity tag for the GNU Arch
-** revision control system.
-**
-** arch-tag: dfdb6742-b2be-4be8-b390-d0c674e8bc8e
-*/
diff --git a/libs/libsndfile/src/ms_adpcm.c b/libs/libsndfile/src/ms_adpcm.c
deleted file mode 100644
index bb774fa1b2..0000000000
--- a/libs/libsndfile/src/ms_adpcm.c
+++ /dev/null
@@ -1,834 +0,0 @@
-/*
-** Copyright (C) 1999-2005 Erik de Castro Lopo <erikd@mega-nerd.com>
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU Lesser General Public License as published by
-** the Free Software Foundation; either version 2.1 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU Lesser General Public License for more details.
-**
-** You should have received a copy of the GNU Lesser General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-*/
-
-#include "sfconfig.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "sndfile.h"
-#include "sfendian.h"
-#include "float_cast.h"
-#include "common.h"
-#include "wav_w64.h"
-
-/* These required here because we write the header in this file. */
-
-#define RIFF_MARKER (MAKE_MARKER ('R', 'I', 'F', 'F'))
-#define WAVE_MARKER (MAKE_MARKER ('W', 'A', 'V', 'E'))
-#define fmt_MARKER (MAKE_MARKER ('f', 'm', 't', ' '))
-#define fact_MARKER (MAKE_MARKER ('f', 'a', 'c', 't'))
-#define data_MARKER (MAKE_MARKER ('d', 'a', 't', 'a'))
-
-#define WAVE_FORMAT_MS_ADPCM 0x0002
-
-typedef struct
-{ int channels, blocksize, samplesperblock, blocks, dataremaining ;
- int blockcount ;
- sf_count_t samplecount ;
- short *samples ;
- unsigned char *block ;
-#if HAVE_FLEXIBLE_ARRAY
- short dummydata [] ; /* ISO C99 struct flexible array. */
-#else
- short dummydata [0] ; /* This is a hack an might not work. */
-#endif
-} MSADPCM_PRIVATE ;
-
-/*============================================================================================
-** MS ADPCM static data and functions.
-*/
-
-static int AdaptationTable [] =
-{ 230, 230, 230, 230, 307, 409, 512, 614,
- 768, 614, 512, 409, 307, 230, 230, 230
-} ;
-
-/* TODO : The first 7 coef's are are always hardcode and must
- appear in the actual WAVE file. They should be read in
- in case a sound program added extras to the list. */
-
-static int AdaptCoeff1 [MSADPCM_ADAPT_COEFF_COUNT] =
-{ 256, 512, 0, 192, 240, 460, 392
-} ;
-
-static int AdaptCoeff2 [MSADPCM_ADAPT_COEFF_COUNT] =
-{ 0, -256, 0, 64, 0, -208, -232
-} ;
-
-/*============================================================================================
-** MS ADPCM Block Layout.
-** ======================
-** Block is usually 256, 512 or 1024 bytes depending on sample rate.
-** For a mono file, the block is laid out as follows:
-** byte purpose
-** 0 block predictor [0..6]
-** 1,2 initial idelta (positive)
-** 3,4 sample 1
-** 5,6 sample 0
-** 7..n packed bytecodes
-**
-** For a stereo file, the block is laid out as follows:
-** byte purpose
-** 0 block predictor [0..6] for left channel
-** 1 block predictor [0..6] for right channel
-** 2,3 initial idelta (positive) for left channel
-** 4,5 initial idelta (positive) for right channel
-** 6,7 sample 1 for left channel
-** 8,9 sample 1 for right channel
-** 10,11 sample 0 for left channel
-** 12,13 sample 0 for right channel
-** 14..n packed bytecodes
-*/
-
-/*============================================================================================
-** Static functions.
-*/
-
-static int msadpcm_decode_block (SF_PRIVATE *psf, MSADPCM_PRIVATE *pms) ;
-static sf_count_t msadpcm_read_block (SF_PRIVATE *psf, MSADPCM_PRIVATE *pms, short *ptr, int len) ;
-
-static int msadpcm_encode_block (SF_PRIVATE *psf, MSADPCM_PRIVATE *pms) ;
-static sf_count_t msadpcm_write_block (SF_PRIVATE *psf, MSADPCM_PRIVATE *pms, const short *ptr, int len) ;
-
-static sf_count_t msadpcm_read_s (SF_PRIVATE *psf, short *ptr, sf_count_t len) ;
-static sf_count_t msadpcm_read_i (SF_PRIVATE *psf, int *ptr, sf_count_t len) ;
-static sf_count_t msadpcm_read_f (SF_PRIVATE *psf, float *ptr, sf_count_t len) ;
-static sf_count_t msadpcm_read_d (SF_PRIVATE *psf, double *ptr, sf_count_t len) ;
-
-static sf_count_t msadpcm_write_s (SF_PRIVATE *psf, const short *ptr, sf_count_t len) ;
-static sf_count_t msadpcm_write_i (SF_PRIVATE *psf, const int *ptr, sf_count_t len) ;
-static sf_count_t msadpcm_write_f (SF_PRIVATE *psf, const float *ptr, sf_count_t len) ;
-static sf_count_t msadpcm_write_d (SF_PRIVATE *psf, const double *ptr, sf_count_t len) ;
-
-static sf_count_t msadpcm_seek (SF_PRIVATE *psf, int mode, sf_count_t offset) ;
-static int msadpcm_close (SF_PRIVATE *psf) ;
-
-static void choose_predictor (unsigned int channels, short *data, int *bpred, int *idelta) ;
-
-/*============================================================================================
-** MS ADPCM Read Functions.
-*/
-
-int
-wav_w64_msadpcm_init (SF_PRIVATE *psf, int blockalign, int samplesperblock)
-{ MSADPCM_PRIVATE *pms ;
- unsigned int pmssize ;
- int count ;
-
- if (psf->fdata != NULL)
- { psf_log_printf (psf, "*** psf->fdata is not NULL.\n") ;
- return SFE_INTERNAL ;
- } ;
-
- if (psf->mode == SFM_WRITE)
- samplesperblock = 2 + 2 * (blockalign - 7 * psf->sf.channels) / psf->sf.channels ;
-
- pmssize = sizeof (MSADPCM_PRIVATE) + blockalign + 3 * psf->sf.channels * samplesperblock ;
-
- if (! (psf->fdata = malloc (pmssize)))
- return SFE_MALLOC_FAILED ;
- pms = (MSADPCM_PRIVATE*) psf->fdata ;
- memset (pms, 0, pmssize) ;
-
- pms->samples = pms->dummydata ;
- pms->block = (unsigned char*) (pms->dummydata + psf->sf.channels * samplesperblock) ;
-
- pms->channels = psf->sf.channels ;
- pms->blocksize = blockalign ;
- pms->samplesperblock = samplesperblock ;
-
- if (psf->mode == SFM_READ)
- { pms->dataremaining = psf->datalength ;
-
- if (psf->datalength % pms->blocksize)
- pms->blocks = psf->datalength / pms->blocksize + 1 ;
- else
- pms->blocks = psf->datalength / pms->blocksize ;
-
- count = 2 * (pms->blocksize - 6 * pms->channels) / pms->channels ;
- if (pms->samplesperblock != count)
- psf_log_printf (psf, "*** Warning : samplesperblock shoud be %d.\n", count) ;
-
- psf->sf.frames = (psf->datalength / pms->blocksize) * pms->samplesperblock ;
-
- psf_log_printf (psf, " bpred idelta\n") ;
-
- msadpcm_decode_block (psf, pms) ;
-
- psf->read_short = msadpcm_read_s ;
- psf->read_int = msadpcm_read_i ;
- psf->read_float = msadpcm_read_f ;
- psf->read_double = msadpcm_read_d ;
- } ;
-
- if (psf->mode == SFM_WRITE)
- { pms->samples = pms->dummydata ;
-
- pms->samplecount = 0 ;
-
- psf->write_short = msadpcm_write_s ;
- psf->write_int = msadpcm_write_i ;
- psf->write_float = msadpcm_write_f ;
- psf->write_double = msadpcm_write_d ;
- } ;
-
- psf->codec_close = msadpcm_close ;
- psf->seek = msadpcm_seek ;
-
- return 0 ;
-} /* wav_w64_msadpcm_init */
-
-static int
-msadpcm_decode_block (SF_PRIVATE *psf, MSADPCM_PRIVATE *pms)
-{ int chan, k, blockindx, sampleindx ;
- short bytecode, bpred [2], chan_idelta [2] ;
-
- int predict ;
- int current ;
- int idelta ;
-
- pms->blockcount ++ ;
- pms->samplecount = 0 ;
-
- if (pms->blockcount > pms->blocks)
- { memset (pms->samples, 0, pms->samplesperblock * pms->channels) ;
- return 1 ;
- } ;
-
- if ((k = psf_fread (pms->block, 1, pms->blocksize, psf)) != pms->blocksize)
- psf_log_printf (psf, "*** Warning : short read (%d != %d).\n", k, pms->blocksize) ;
-
- /* Read and check the block header. */
-
- if (pms->channels == 1)
- { bpred [0] = pms->block [0] ;
-
- if (bpred [0] >= 7)
- psf_log_printf (psf, "MS ADPCM synchronisation error (%d).\n", bpred [0]) ;
-
- chan_idelta [0] = pms->block [1] | (pms->block [2] << 8) ;
- chan_idelta [1] = 0 ;
-
- psf_log_printf (psf, "(%d) (%d)\n", bpred [0], chan_idelta [0]) ;
-
- pms->samples [1] = pms->block [3] | (pms->block [4] << 8) ;
- pms->samples [0] = pms->block [5] | (pms->block [6] << 8) ;
- blockindx = 7 ;
- }
- else
- { bpred [0] = pms->block [0] ;
- bpred [1] = pms->block [1] ;
-
- if (bpred [0] >= 7 || bpred [1] >= 7)
- psf_log_printf (psf, "MS ADPCM synchronisation error (%d %d).\n", bpred [0], bpred [1]) ;
-
- chan_idelta [0] = pms->block [2] | (pms->block [3] << 8) ;
- chan_idelta [1] = pms->block [4] | (pms->block [5] << 8) ;
-
- psf_log_printf (psf, "(%d, %d) (%d, %d)\n", bpred [0], bpred [1], chan_idelta [0], chan_idelta [1]) ;
-
- pms->samples [2] = pms->block [6] | (pms->block [7] << 8) ;
- pms->samples [3] = pms->block [8] | (pms->block [9] << 8) ;
-
- pms->samples [0] = pms->block [10] | (pms->block [11] << 8) ;
- pms->samples [1] = pms->block [12] | (pms->block [13] << 8) ;
-
- blockindx = 14 ;
- } ;
-
- /*--------------------------------------------------------
- This was left over from a time when calculations were done
- as ints rather than shorts. Keep this around as a reminder
- in case I ever find a file which decodes incorrectly.
-
- if (chan_idelta [0] & 0x8000)
- chan_idelta [0] -= 0x10000 ;
- if (chan_idelta [1] & 0x8000)
- chan_idelta [1] -= 0x10000 ;
- --------------------------------------------------------*/
-
- /* Pull apart the packed 4 bit samples and store them in their
- ** correct sample positions.
- */
-
- sampleindx = 2 * pms->channels ;
- while (blockindx < pms->blocksize)
- { bytecode = pms->block [blockindx++] ;
- pms->samples [sampleindx++] = (bytecode >> 4) & 0x0F ;
- pms->samples [sampleindx++] = bytecode & 0x0F ;
- } ;
-
- /* Decode the encoded 4 bit samples. */
-
- for (k = 2 * pms->channels ; k < (pms->samplesperblock * pms->channels) ; k ++)
- { chan = (pms->channels > 1) ? (k % 2) : 0 ;
-
- bytecode = pms->samples [k] & 0xF ;
-
- /* Compute next Adaptive Scale Factor (ASF) */
- idelta = chan_idelta [chan] ;
- chan_idelta [chan] = (AdaptationTable [bytecode] * idelta) >> 8 ; /* => / 256 => FIXED_POINT_ADAPTATION_BASE == 256 */
- if (chan_idelta [chan] < 16)
- chan_idelta [chan] = 16 ;
- if (bytecode & 0x8)
- bytecode -= 0x10 ;
-
- predict = ((pms->samples [k - pms->channels] * AdaptCoeff1 [bpred [chan]])
- + (pms->samples [k - 2 * pms->channels] * AdaptCoeff2 [bpred [chan]])) >> 8 ; /* => / 256 => FIXED_POINT_COEFF_BASE == 256 */
- current = (bytecode * idelta) + predict ;
-
- if (current > 32767)
- current = 32767 ;
- else if (current < -32768)
- current = -32768 ;
-
- pms->samples [k] = current ;
- } ;
-
- return 1 ;
-} /* msadpcm_decode_block */
-
-static sf_count_t
-msadpcm_read_block (SF_PRIVATE *psf, MSADPCM_PRIVATE *pms, short *ptr, int len)
-{ int count, total = 0, indx = 0 ;
-
- while (indx < len)
- { if (pms->blockcount >= pms->blocks && pms->samplecount >= pms->samplesperblock)
- { memset (&(ptr [indx]), 0, (size_t) ((len - indx) * sizeof (short))) ;
- return total ;
- } ;
-
- if (pms->samplecount >= pms->samplesperblock)
- msadpcm_decode_block (psf, pms) ;
-
- count = (pms->samplesperblock - pms->samplecount) * pms->channels ;
- count = (len - indx > count) ? count : len - indx ;
-
- memcpy (&(ptr [indx]), &(pms->samples [pms->samplecount * pms->channels]), count * sizeof (short)) ;
- indx += count ;
- pms->samplecount += count / pms->channels ;
- total = indx ;
- } ;
-
- return total ;
-} /* msadpcm_read_block */
-
-static sf_count_t
-msadpcm_read_s (SF_PRIVATE *psf, short *ptr, sf_count_t len)
-{ MSADPCM_PRIVATE *pms ;
- int readcount, count ;
- sf_count_t total = 0 ;
-
- if (! psf->fdata)
- return 0 ;
- pms = (MSADPCM_PRIVATE*) psf->fdata ;
-
- while (len > 0)
- { readcount = (len > 0x10000000) ? 0x10000000 : (int) len ;
-
- count = msadpcm_read_block (psf, pms, ptr, readcount) ;
-
- total += count ;
- len -= count ;
- if (count != readcount)
- break ;
- } ;
-
- return total ;
-} /* msadpcm_read_s */
-
-static sf_count_t
-msadpcm_read_i (SF_PRIVATE *psf, int *ptr, sf_count_t len)
-{ MSADPCM_PRIVATE *pms ;
- short *sptr ;
- int k, bufferlen, readcount = 0, count ;
- sf_count_t total = 0 ;
-
- if (! psf->fdata)
- return 0 ;
- pms = (MSADPCM_PRIVATE*) psf->fdata ;
-
- sptr = psf->u.sbuf ;
- bufferlen = ARRAY_LEN (psf->u.sbuf) ;
- while (len > 0)
- { readcount = (len >= bufferlen) ? bufferlen : len ;
- count = msadpcm_read_block (psf, pms, sptr, readcount) ;
- for (k = 0 ; k < readcount ; k++)
- ptr [total + k] = sptr [k] << 16 ;
- total += count ;
- len -= readcount ;
- if (count != readcount)
- break ;
- } ;
- return total ;
-} /* msadpcm_read_i */
-
-static sf_count_t
-msadpcm_read_f (SF_PRIVATE *psf, float *ptr, sf_count_t len)
-{ MSADPCM_PRIVATE *pms ;
- short *sptr ;
- int k, bufferlen, readcount = 0, count ;
- sf_count_t total = 0 ;
- float normfact ;
-
- if (! psf->fdata)
- return 0 ;
- pms = (MSADPCM_PRIVATE*) psf->fdata ;
-
- normfact = (psf->norm_float == SF_TRUE) ? 1.0 / ((float) 0x8000) : 1.0 ;
- sptr = psf->u.sbuf ;
- bufferlen = ARRAY_LEN (psf->u.sbuf) ;
- while (len > 0)
- { readcount = (len >= bufferlen) ? bufferlen : len ;
- count = msadpcm_read_block (psf, pms, sptr, readcount) ;
- for (k = 0 ; k < readcount ; k++)
- ptr [total + k] = normfact * (float) (sptr [k]) ;
- total += count ;
- len -= readcount ;
- if (count != readcount)
- break ;
- } ;
- return total ;
-} /* msadpcm_read_f */
-
-static sf_count_t
-msadpcm_read_d (SF_PRIVATE *psf, double *ptr, sf_count_t len)
-{ MSADPCM_PRIVATE *pms ;
- short *sptr ;
- int k, bufferlen, readcount = 0, count ;
- sf_count_t total = 0 ;
- double normfact ;
-
- normfact = (psf->norm_double == SF_TRUE) ? 1.0 / ((double) 0x8000) : 1.0 ;
-
- if (! psf->fdata)
- return 0 ;
- pms = (MSADPCM_PRIVATE*) psf->fdata ;
-
- sptr = psf->u.sbuf ;
- bufferlen = ARRAY_LEN (psf->u.sbuf) ;
- while (len > 0)
- { readcount = (len >= bufferlen) ? bufferlen : len ;
- count = msadpcm_read_block (psf, pms, sptr, readcount) ;
- for (k = 0 ; k < readcount ; k++)
- ptr [total + k] = normfact * (double) (sptr [k]) ;
- total += count ;
- len -= readcount ;
- if (count != readcount)
- break ;
- } ;
- return total ;
-} /* msadpcm_read_d */
-
-static sf_count_t
-msadpcm_seek (SF_PRIVATE *psf, int mode, sf_count_t offset)
-{ MSADPCM_PRIVATE *pms ;
- int newblock, newsample ;
-
- if (! psf->fdata)
- return 0 ;
- pms = (MSADPCM_PRIVATE*) psf->fdata ;
-
- if (psf->datalength < 0 || psf->dataoffset < 0)
- { psf->error = SFE_BAD_SEEK ;
- return PSF_SEEK_ERROR ;
- } ;
-
- if (offset == 0)
- { psf_fseek (psf, psf->dataoffset, SEEK_SET) ;
- pms->blockcount = 0 ;
- msadpcm_decode_block (psf, pms) ;
- pms->samplecount = 0 ;
- return 0 ;
- } ;
-
- if (offset < 0 || offset > pms->blocks * pms->samplesperblock)
- { psf->error = SFE_BAD_SEEK ;
- return PSF_SEEK_ERROR ;
- } ;
-
- newblock = offset / pms->samplesperblock ;
- newsample = offset % pms->samplesperblock ;
-
- if (mode == SFM_READ)
- { psf_fseek (psf, psf->dataoffset + newblock * pms->blocksize, SEEK_SET) ;
- pms->blockcount = newblock ;
- msadpcm_decode_block (psf, pms) ;
- pms->samplecount = newsample ;
- }
- else
- { /* What to do about write??? */
- psf->error = SFE_BAD_SEEK ;
- return PSF_SEEK_ERROR ;
- } ;
-
- return newblock * pms->samplesperblock + newsample ;
-} /* msadpcm_seek */
-
-/*==========================================================================================
-** MS ADPCM Write Functions.
-*/
-
-void
-msadpcm_write_adapt_coeffs (SF_PRIVATE *psf)
-{ int k ;
-
- for (k = 0 ; k < MSADPCM_ADAPT_COEFF_COUNT ; k++)
- psf_binheader_writef (psf, "22", AdaptCoeff1 [k], AdaptCoeff2 [k]) ;
-} /* msadpcm_write_adapt_coeffs */
-
-/*==========================================================================================
-*/
-
-static int
-msadpcm_encode_block (SF_PRIVATE *psf, MSADPCM_PRIVATE *pms)
-{ unsigned int blockindx ;
- unsigned char byte ;
- int chan, k, predict, bpred [2], idelta [2], errordelta, newsamp ;
-
- choose_predictor (pms->channels, pms->samples, bpred, idelta) ;
-
- /* Write the block header. */
-
- if (pms->channels == 1)
- { pms->block [0] = bpred [0] ;
- pms->block [1] = idelta [0] & 0xFF ;
- pms->block [2] = idelta [0] >> 8 ;
- pms->block [3] = pms->samples [1] & 0xFF ;
- pms->block [4] = pms->samples [1] >> 8 ;
- pms->block [5] = pms->samples [0] & 0xFF ;
- pms->block [6] = pms->samples [0] >> 8 ;
-
- blockindx = 7 ;
- byte = 0 ;
-
- /* Encode the samples as 4 bit. */
-
- for (k = 2 ; k < pms->samplesperblock ; k++)
- { predict = (pms->samples [k-1] * AdaptCoeff1 [bpred [0]] + pms->samples [k-2] * AdaptCoeff2 [bpred [0]]) >> 8 ;
- errordelta = (pms->samples [k] - predict) / idelta [0] ;
- if (errordelta < -8)
- errordelta = -8 ;
- else if (errordelta > 7)
- errordelta = 7 ;
- newsamp = predict + (idelta [0] * errordelta) ;
- if (newsamp > 32767)
- newsamp = 32767 ;
- else if (newsamp < -32768)
- newsamp = -32768 ;
- if (errordelta < 0)
- errordelta += 0x10 ;
-
- byte = (byte << 4) | (errordelta & 0xF) ;
- if (k % 2)
- { pms->block [blockindx++] = byte ;
- byte = 0 ;
- } ;
-
- idelta [0] = (idelta [0] * AdaptationTable [errordelta]) >> 8 ;
- if (idelta [0] < 16)
- idelta [0] = 16 ;
- pms->samples [k] = newsamp ;
- } ;
- }
- else
- { /* Stereo file. */
- pms->block [0] = bpred [0] ;
- pms->block [1] = bpred [1] ;
-
- pms->block [2] = idelta [0] & 0xFF ;
- pms->block [3] = idelta [0] >> 8 ;
- pms->block [4] = idelta [1] & 0xFF ;
- pms->block [5] = idelta [1] >> 8 ;
-
- pms->block [6] = pms->samples [2] & 0xFF ;
- pms->block [7] = pms->samples [2] >> 8 ;
- pms->block [8] = pms->samples [3] & 0xFF ;
- pms->block [9] = pms->samples [3] >> 8 ;
-
- pms->block [10] = pms->samples [0] & 0xFF ;
- pms->block [11] = pms->samples [0] >> 8 ;
- pms->block [12] = pms->samples [1] & 0xFF ;
- pms->block [13] = pms->samples [1] >> 8 ;
-
- blockindx = 14 ;
- byte = 0 ;
- chan = 1 ;
-
- for (k = 4 ; k < 2 * pms->samplesperblock ; k++)
- { chan = k & 1 ;
-
- predict = (pms->samples [k-2] * AdaptCoeff1 [bpred [chan]] + pms->samples [k-4] * AdaptCoeff2 [bpred [chan]]) >> 8 ;
- errordelta = (pms->samples [k] - predict) / idelta [chan] ;
-
-
- if (errordelta < -8)
- errordelta = -8 ;
- else if (errordelta > 7)
- errordelta = 7 ;
- newsamp = predict + (idelta [chan] * errordelta) ;
- if (newsamp > 32767)
- newsamp = 32767 ;
- else if (newsamp < -32768)
- newsamp = -32768 ;
- if (errordelta < 0)
- errordelta += 0x10 ;
-
- byte = (byte << 4) | (errordelta & 0xF) ;
-
- if (chan)
- { pms->block [blockindx++] = byte ;
- byte = 0 ;
- } ;
-
- idelta [chan] = (idelta [chan] * AdaptationTable [errordelta]) >> 8 ;
- if (idelta [chan] < 16)
- idelta [chan] = 16 ;
- pms->samples [k] = newsamp ;
- } ;
- } ;
-
- /* Write the block to disk. */
-
- if ((k = psf_fwrite (pms->block, 1, pms->blocksize, psf)) != pms->blocksize)
- psf_log_printf (psf, "*** Warning : short write (%d != %d).\n", k, pms->blocksize) ;
-
- memset (pms->samples, 0, pms->samplesperblock * sizeof (short)) ;
-
- pms->blockcount ++ ;
- pms->samplecount = 0 ;
-
- return 1 ;
-} /* msadpcm_encode_block */
-
-static sf_count_t
-msadpcm_write_block (SF_PRIVATE *psf, MSADPCM_PRIVATE *pms, const short *ptr, int len)
-{ int count, total = 0, indx = 0 ;
-
- while (indx < len)
- { count = (pms->samplesperblock - pms->samplecount) * pms->channels ;
-
- if (count > len - indx)
- count = len - indx ;
-
- memcpy (&(pms->samples [pms->samplecount * pms->channels]), &(ptr [total]), count * sizeof (short)) ;
- indx += count ;
- pms->samplecount += count / pms->channels ;
- total = indx ;
-
- if (pms->samplecount >= pms->samplesperblock)
- msadpcm_encode_block (psf, pms) ;
- } ;
-
- return total ;
-} /* msadpcm_write_block */
-
-static sf_count_t
-msadpcm_write_s (SF_PRIVATE *psf, const short *ptr, sf_count_t len)
-{ MSADPCM_PRIVATE *pms ;
- int writecount, count ;
- sf_count_t total = 0 ;
-
- if (! psf->fdata)
- return 0 ;
- pms = (MSADPCM_PRIVATE*) psf->fdata ;
-
- while (len > 0)
- { writecount = (len > 0x10000000) ? 0x10000000 : (int) len ;
-
- count = msadpcm_write_block (psf, pms, ptr, writecount) ;
-
- total += count ;
- len -= count ;
- if (count != writecount)
- break ;
- } ;
-
- return total ;
-} /* msadpcm_write_s */
-
-static sf_count_t
-msadpcm_write_i (SF_PRIVATE *psf, const int *ptr, sf_count_t len)
-{ MSADPCM_PRIVATE *pms ;
- short *sptr ;
- int k, bufferlen, writecount, count ;
- sf_count_t total = 0 ;
-
- if (! psf->fdata)
- return 0 ;
- pms = (MSADPCM_PRIVATE*) psf->fdata ;
-
- sptr = psf->u.sbuf ;
- bufferlen = ARRAY_LEN (psf->u.sbuf) ;
- while (len > 0)
- { writecount = (len >= bufferlen) ? bufferlen : len ;
- for (k = 0 ; k < writecount ; k++)
- sptr [k] = ptr [total + k] >> 16 ;
- count = msadpcm_write_block (psf, pms, sptr, writecount) ;
- total += count ;
- len -= writecount ;
- if (count != writecount)
- break ;
- } ;
- return total ;
-} /* msadpcm_write_i */
-
-static sf_count_t
-msadpcm_write_f (SF_PRIVATE *psf, const float *ptr, sf_count_t len)
-{ MSADPCM_PRIVATE *pms ;
- short *sptr ;
- int k, bufferlen, writecount, count ;
- sf_count_t total = 0 ;
- float normfact ;
-
- if (! psf->fdata)
- return 0 ;
- pms = (MSADPCM_PRIVATE*) psf->fdata ;
-
- normfact = (psf->norm_float == SF_TRUE) ? (1.0 * 0x7FFF) : 1.0 ;
-
- sptr = psf->u.sbuf ;
- bufferlen = ARRAY_LEN (psf->u.sbuf) ;
- while (len > 0)
- { writecount = (len >= bufferlen) ? bufferlen : len ;
- for (k = 0 ; k < writecount ; k++)
- sptr [k] = lrintf (normfact * ptr [total + k]) ;
- count = msadpcm_write_block (psf, pms, sptr, writecount) ;
- total += count ;
- len -= writecount ;
- if (count != writecount)
- break ;
- } ;
- return total ;
-} /* msadpcm_write_f */
-
-static sf_count_t
-msadpcm_write_d (SF_PRIVATE *psf, const double *ptr, sf_count_t len)
-{ MSADPCM_PRIVATE *pms ;
- short *sptr ;
- int k, bufferlen, writecount, count ;
- sf_count_t total = 0 ;
- double normfact ;
-
- normfact = (psf->norm_double == SF_TRUE) ? (1.0 * 0x7FFF) : 1.0 ;
-
- if (! psf->fdata)
- return 0 ;
- pms = (MSADPCM_PRIVATE*) psf->fdata ;
-
- sptr = psf->u.sbuf ;
- bufferlen = ARRAY_LEN (psf->u.sbuf) ;
- while (len > 0)
- { writecount = (len >= bufferlen) ? bufferlen : len ;
- for (k = 0 ; k < writecount ; k++)
- sptr [k] = lrint (normfact * ptr [total + k]) ;
- count = msadpcm_write_block (psf, pms, sptr, writecount) ;
- total += count ;
- len -= writecount ;
- if (count != writecount)
- break ;
- } ;
- return total ;
-} /* msadpcm_write_d */
-
-/*========================================================================================
-*/
-
-static int
-msadpcm_close (SF_PRIVATE *psf)
-{ MSADPCM_PRIVATE *pms ;
-
- pms = (MSADPCM_PRIVATE*) psf->fdata ;
-
- if (psf->mode == SFM_WRITE)
- { /* Now we know static int for certain the length of the file we can
- ** re-write the header.
- */
-
- if (pms->samplecount && pms->samplecount < pms->samplesperblock)
- msadpcm_encode_block (psf, pms) ;
- } ;
-
- return 0 ;
-} /* msadpcm_close */
-
-/*========================================================================================
-** Static functions.
-*/
-
-/*----------------------------------------------------------------------------------------
-** Choosing the block predictor.
-** Each block requires a predictor and an idelta for each channel.
-** The predictor is in the range [0..6] which is an indx into the two AdaptCoeff tables.
-** The predictor is chosen by trying all of the possible predictors on a small set of
-** samples at the beginning of the block. The predictor with the smallest average
-** abs (idelta) is chosen as the best predictor for this block.
-** The value of idelta is chosen to to give a 4 bit code value of +/- 4 (approx. half the
-** max. code value). If the average abs (idelta) is zero, the sixth predictor is chosen.
-** If the value of idelta is less then 16 it is set to 16.
-**
-** Microsoft uses an IDELTA_COUNT (number of sample pairs used to choose best predictor)
-** value of 3. The best possible results would be obtained by using all the samples to
-** choose the predictor.
-*/
-
-#define IDELTA_COUNT 3
-
-static void
-choose_predictor (unsigned int channels, short *data, int *block_pred, int *idelta)
-{ unsigned int chan, k, bpred, idelta_sum, best_bpred, best_idelta ;
-
- for (chan = 0 ; chan < channels ; chan++)
- { best_bpred = best_idelta = 0 ;
-
- for (bpred = 0 ; bpred < 7 ; bpred++)
- { idelta_sum = 0 ;
- for (k = 2 ; k < 2 + IDELTA_COUNT ; k++)
- idelta_sum += abs (data [k * channels] - ((data [(k - 1) * channels] * AdaptCoeff1 [bpred] + data [(k - 2) * channels] * AdaptCoeff2 [bpred]) >> 8)) ;
- idelta_sum /= (4 * IDELTA_COUNT) ;
-
- if (bpred == 0 || idelta_sum < best_idelta)
- { best_bpred = bpred ;
- best_idelta = idelta_sum ;
- } ;
-
- if (! idelta_sum)
- { best_bpred = bpred ;
- best_idelta = 16 ;
- break ;
- } ;
-
- } ; /* for bpred ... */
- if (best_idelta < 16)
- best_idelta = 16 ;
-
- block_pred [chan] = best_bpred ;
- idelta [chan] = best_idelta ;
- } ;
-
- return ;
-} /* choose_predictor */
-/*
-** Do not edit or modify anything in this comment block.
-** The arch-tag line is a file identity tag for the GNU Arch
-** revision control system.
-**
-** arch-tag: a98908a3-5305-4935-872b-77d6a86c330f
-*/
diff --git a/libs/libsndfile/src/nist.c b/libs/libsndfile/src/nist.c
deleted file mode 100644
index 2ab20dbf96..0000000000
--- a/libs/libsndfile/src/nist.c
+++ /dev/null
@@ -1,367 +0,0 @@
-/*
-** Copyright (C) 1999-2004 Erik de Castro Lopo <erikd@mega-nerd.com>
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU Lesser General Public License as published by
-** the Free Software Foundation; either version 2.1 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU Lesser General Public License for more details.
-**
-** You should have received a copy of the GNU Lesser General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-*/
-
-/*
-** Some of the information used to read NIST files was gleaned from
-** reading the code of Bill Schottstaedt's sndlib library
-** ftp://ccrma-ftp.stanford.edu/pub/Lisp/sndlib.tar.gz
-** However, no code from that package was used.
-*/
-
-#include "sfconfig.h"
-
-#include <stdio.h>
-#include <fcntl.h>
-#include <string.h>
-#include <ctype.h>
-
-#include "sndfile.h"
-#include "sfendian.h"
-#include "common.h"
-
-/*------------------------------------------------------------------------------
-*/
-
-#define NIST_HEADER_LENGTH 1024
-
-/*------------------------------------------------------------------------------
-** Private static functions.
-*/
-
-static int nist_close (SF_PRIVATE *psf) ;
-static int nist_write_header (SF_PRIVATE *psf, int calc_length) ;
-static int nist_read_header (SF_PRIVATE *psf) ;
-
-/*------------------------------------------------------------------------------
-*/
-
-int
-nist_open (SF_PRIVATE *psf)
-{ int error ;
-
- if (psf->mode == SFM_READ || (psf->mode == SFM_RDWR && psf->filelength > 0))
- { if ((error = nist_read_header (psf)))
- return error ;
- } ;
-
- if (psf->mode == SFM_WRITE || psf->mode == SFM_RDWR)
- { if (psf->is_pipe)
- return SFE_NO_PIPE_WRITE ;
-
- if ((psf->sf.format & SF_FORMAT_TYPEMASK) != SF_FORMAT_NIST)
- return SFE_BAD_OPEN_FORMAT ;
-
- psf->endian = psf->sf.format & SF_FORMAT_ENDMASK ;
- if (psf->endian == 0 || psf->endian == SF_ENDIAN_CPU)
- psf->endian = (CPU_IS_BIG_ENDIAN) ? SF_ENDIAN_BIG : SF_ENDIAN_LITTLE ;
-
- psf->blockwidth = psf->bytewidth * psf->sf.channels ;
- psf->sf.frames = 0 ;
-
- if ((error = nist_write_header (psf, SF_FALSE)))
- return error ;
-
- psf->write_header = nist_write_header ;
- } ;
-
- psf->container_close = nist_close ;
-
- switch (psf->sf.format & SF_FORMAT_SUBMASK)
- { case SF_FORMAT_PCM_S8 :
- error = pcm_init (psf) ;
- break ;
-
- case SF_FORMAT_PCM_16 :
- case SF_FORMAT_PCM_24 :
- case SF_FORMAT_PCM_32 :
- error = pcm_init (psf) ;
- break ;
-
- case SF_FORMAT_ULAW :
- error = ulaw_init (psf) ;
- break ;
-
- case SF_FORMAT_ALAW :
- error = alaw_init (psf) ;
- break ;
-
- default : error = SFE_UNIMPLEMENTED ;
- break ;
- } ;
-
- return error ;
-} /* nist_open */
-
-/*------------------------------------------------------------------------------
-*/
-
-static char bad_header [] =
-{ 'N', 'I', 'S', 'T', '_', '1', 'A', 0x0d, 0x0a,
- ' ', ' ', ' ', '1', '0', '2', '4', 0x0d, 0x0a,
- 0
-} ;
-
- static int
-nist_read_header (SF_PRIVATE *psf)
-{ char *psf_header ;
- int bitwidth = 0, bytes = 0, count, encoding ;
- char str [64], *cptr ;
- long samples ;
-
- psf->sf.format = SF_FORMAT_NIST ;
-
- psf_header = psf->u.cbuf ;
-
- if (sizeof (psf->header) <= NIST_HEADER_LENGTH)
- return SFE_INTERNAL ;
-
- /* Go to start of file and read in the whole header. */
- psf_binheader_readf (psf, "pb", 0, psf_header, NIST_HEADER_LENGTH) ;
-
- /* Header is a string, so make sure it is null terminated. */
- psf_header [NIST_HEADER_LENGTH] = 0 ;
-
- /* Now trim the header after the end marker. */
- if ((cptr = strstr (psf_header, "end_head")))
- { cptr += strlen ("end_head") + 1 ;
- cptr [0] = 0 ;
- } ;
-
- if (strstr (psf_header, bad_header) == psf_header)
- return SFE_NIST_CRLF_CONVERISON ;
-
- /* Make sure its a NIST file. */
- if (strstr (psf_header, "NIST_1A\n") != psf_header)
- { psf_log_printf (psf, "Not a NIST file.\n") ;
- return SFE_NIST_BAD_HEADER ;
- } ;
-
- if (sscanf (psf_header, "NIST_1A\n%d\n", &count) == 1)
- psf->dataoffset = count ;
- else
- { psf_log_printf (psf, "*** Suspicious header length.\n") ;
- psf->dataoffset = NIST_HEADER_LENGTH ;
- } ;
-
- /* Determine sample encoding, start by assuming PCM. */
- encoding = SF_FORMAT_PCM_U8 ;
- if ((cptr = strstr (psf_header, "sample_coding -s")))
- { sscanf (cptr, "sample_coding -s%d %63s", &count, str) ;
-
- if (strcmp (str, "pcm") == 0)
- encoding = SF_FORMAT_PCM_U8 ;
- else if (strcmp (str, "alaw") == 0)
- encoding = SF_FORMAT_ALAW ;
- else if ((strcmp (str, "ulaw") == 0) || (strcmp (str, "mu-law") == 0))
- encoding = SF_FORMAT_ULAW ;
- else
- { psf_log_printf (psf, "*** Unknown encoding : %s\n", str) ;
- encoding = 0 ;
- } ;
- } ;
-
- if ((cptr = strstr (psf_header, "channel_count -i ")))
- sscanf (cptr, "channel_count -i %d", &(psf->sf.channels)) ;
-
- if ((cptr = strstr (psf_header, "sample_rate -i ")))
- sscanf (cptr, "sample_rate -i %d", &(psf->sf.samplerate)) ;
-
- if ((cptr = strstr (psf_header, "sample_count -i ")))
- { sscanf (psf_header, "sample_count -i %ld", &samples) ;
- psf->sf.frames = samples ;
- } ;
-
- if ((cptr = strstr (psf_header, "sample_n_bytes -i ")))
- sscanf (cptr, "sample_n_bytes -i %d", &(psf->bytewidth)) ;
-
- /* Default endian-ness (for 8 bit, u-law, A-law. */
- psf->endian = (CPU_IS_BIG_ENDIAN) ? SF_ENDIAN_BIG : SF_ENDIAN_LITTLE ;
-
- /* This is where we figure out endian-ness. */
- if ((cptr = strstr (psf_header, "sample_byte_format -s")))
- { sscanf (cptr, "sample_byte_format -s%d %8s", &bytes, str) ;
- if (bytes > 1)
- { if (psf->bytewidth == 0)
- psf->bytewidth = bytes ;
- else if (psf->bytewidth != bytes)
- { psf_log_printf (psf, "psf->bytewidth (%d) != bytes (%d)\n", psf->bytewidth, bytes) ;
- return SFE_NIST_BAD_ENCODING ;
- } ;
-
- if (strstr (str, "01") == str)
- psf->endian = SF_ENDIAN_LITTLE ;
- else if (strstr (str, "10"))
- psf->endian = SF_ENDIAN_BIG ;
- else
- { psf_log_printf (psf, "Weird endian-ness : %s\n", str) ;
- return SFE_NIST_BAD_ENCODING ;
- } ;
- } ;
-
- psf->sf.format |= psf->endian ;
- } ;
-
- if ((cptr = strstr (psf_header, "sample_sig_bits -i ")))
- sscanf (cptr, "sample_sig_bits -i %d", &bitwidth) ;
-
- if (strstr (psf_header, "channels_interleaved -s5 FALSE"))
- { psf_log_printf (psf, "Non-interleaved data unsupported.\n", str) ;
- return SFE_NIST_BAD_ENCODING ;
- } ;
-
- psf->blockwidth = psf->sf.channels * psf->bytewidth ;
- psf->datalength = psf->filelength - psf->dataoffset ;
-
- psf_fseek (psf, psf->dataoffset, SEEK_SET) ;
-
- if (encoding == SF_FORMAT_PCM_U8)
- { switch (psf->bytewidth)
- { case 1 :
- psf->sf.format |= SF_FORMAT_PCM_S8 ;
- break ;
-
- case 2 :
- psf->sf.format |= SF_FORMAT_PCM_16 ;
- break ;
-
- case 3 :
- psf->sf.format |= SF_FORMAT_PCM_24 ;
- break ;
-
- case 4 :
- psf->sf.format |= SF_FORMAT_PCM_32 ;
- break ;
-
- default : break ;
- } ;
- }
- else if (encoding != 0)
- psf->sf.format |= encoding ;
- else
- return SFE_UNIMPLEMENTED ;
-
- return 0 ;
-} /* nist_read_header */
-
-static int
-nist_close (SF_PRIVATE *psf)
-{
- if (psf->mode == SFM_WRITE || psf->mode == SFM_RDWR)
- nist_write_header (psf, SF_TRUE) ;
-
- return 0 ;
-} /* nist_close */
-
-/*=========================================================================
-*/
-
-static int
-nist_write_header (SF_PRIVATE *psf, int calc_length)
-{ const char *end_str ;
- long samples ;
- sf_count_t current ;
-
- current = psf_ftell (psf) ;
-
- if (calc_length)
- { psf->filelength = psf_get_filelen (psf) ;
-
- psf->datalength = psf->filelength - psf->dataoffset ;
-
- if (psf->dataend)
- psf->datalength -= psf->filelength - psf->dataend ;
-
- if (psf->bytewidth > 0)
- psf->sf.frames = psf->datalength / (psf->bytewidth * psf->sf.channels) ;
- } ;
-
- if (psf->endian == SF_ENDIAN_BIG)
- end_str = "10" ;
- else if (psf->endian == SF_ENDIAN_LITTLE)
- end_str = "01" ;
- else
- end_str = "error" ;
-
- /* Clear the whole header. */
- memset (psf->header, 0, sizeof (psf->header)) ;
- psf->headindex = 0 ;
-
- psf_fseek (psf, 0, SEEK_SET) ;
-
- psf_asciiheader_printf (psf, "NIST_1A\n 1024\n") ;
- psf_asciiheader_printf (psf, "channel_count -i %d\n", psf->sf.channels) ;
- psf_asciiheader_printf (psf, "sample_rate -i %d\n", psf->sf.samplerate) ;
-
- switch (psf->sf.format & SF_FORMAT_SUBMASK)
- { case SF_FORMAT_PCM_S8 :
- psf_asciiheader_printf (psf, "sample_coding -s3 pcm\n") ;
- psf_asciiheader_printf (psf, "sample_n_bytes -i 1\n"
- "sample_sig_bits -i 8\n") ;
- break ;
-
- case SF_FORMAT_PCM_16 :
- case SF_FORMAT_PCM_24 :
- case SF_FORMAT_PCM_32 :
- psf_asciiheader_printf (psf, "sample_n_bytes -i %d\n", psf->bytewidth) ;
- psf_asciiheader_printf (psf, "sample_sig_bits -i %d\n", psf->bytewidth * 8) ;
- psf_asciiheader_printf (psf, "sample_coding -s3 pcm\n"
- "sample_byte_format -s%d %s\n", psf->bytewidth, end_str) ;
- break ;
-
- case SF_FORMAT_ALAW :
- psf_asciiheader_printf (psf, "sample_coding -s4 alaw\n") ;
- psf_asciiheader_printf (psf, "sample_n_bytes -s1 1\n") ;
- break ;
-
- case SF_FORMAT_ULAW :
- psf_asciiheader_printf (psf, "sample_coding -s4 ulaw\n") ;
- psf_asciiheader_printf (psf, "sample_n_bytes -s1 1\n") ;
- break ;
-
- default : return SFE_UNIMPLEMENTED ;
- } ;
-
- psf->dataoffset = NIST_HEADER_LENGTH ;
-
- /* Fix this */
- samples = psf->sf.frames ;
- psf_asciiheader_printf (psf, "sample_count -i %ld\n", samples) ;
- psf_asciiheader_printf (psf, "end_head\n") ;
-
- /* Zero fill to dataoffset. */
- psf_binheader_writef (psf, "z", (size_t) (NIST_HEADER_LENGTH - psf->headindex)) ;
-
- psf_fwrite (psf->header, psf->headindex, 1, psf) ;
-
- if (psf->error)
- return psf->error ;
-
- if (current > 0)
- psf_fseek (psf, current, SEEK_SET) ;
-
- return psf->error ;
-} /* nist_write_header */
-
-
-/*
-** Do not edit or modify anything in this comment block.
-** The arch-tag line is a file identity tag for the GNU Arch
-** revision control system.
-**
-** arch-tag: b45ed85d-9e22-4ad9-b78c-4b58b67152a8
-*/
diff --git a/libs/libsndfile/src/ogg.c b/libs/libsndfile/src/ogg.c
deleted file mode 100644
index 869baa9500..0000000000
--- a/libs/libsndfile/src/ogg.c
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
-** Copyright (C) 2002-2004 Erik de Castro Lopo <erikd@mega-nerd.com>
-**
-** This program is free software ; you can redistribute it and/or modify
-** it under the terms of the GNU Lesser General Public License as published by
-** the Free Software Foundation ; either version 2.1 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY ; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU Lesser General Public License for more details.
-**
-** You should have received a copy of the GNU Lesser General Public License
-** along with this program ; if not, write to the Free Software
-** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-*/
-
-#include "sfconfig.h"
-
-#include <stdio.h>
-#include <fcntl.h>
-#include <string.h>
-#include <ctype.h>
-
-#include "sndfile.h"
-#include "sfendian.h"
-#include "common.h"
-
-int
-ogg_open (SF_PRIVATE *psf)
-{ if (psf)
- return SFE_UNIMPLEMENTED ;
- return (psf && 0) ;
-} /* ogg_open */
-
-
-/*
-** Do not edit or modify anything in this comment block.
-** The arch-tag line is a file identity tag for the GNU Arch
-** revision control system.
-**
-** arch-tag: 9ff1fe9c-629e-4e9c-9ef5-3d0eb1e427a0
-*/
diff --git a/libs/libsndfile/src/paf.c b/libs/libsndfile/src/paf.c
deleted file mode 100644
index 6114dac838..0000000000
--- a/libs/libsndfile/src/paf.c
+++ /dev/null
@@ -1,843 +0,0 @@
-/*
-** Copyright (C) 1999-2005 Erik de Castro Lopo <erikd@mega-nerd.com>
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU Lesser General Public License as published by
-** the Free Software Foundation; either version 2.1 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU Lesser General Public License for more details.
-**
-** You should have received a copy of the GNU Lesser General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-*/
-
-#include "sfconfig.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <fcntl.h>
-#include <string.h>
-#include <ctype.h>
-
-#include "sndfile.h"
-#include "sfendian.h"
-#include "float_cast.h"
-#include "common.h"
-
-/*------------------------------------------------------------------------------
-** Macros to handle big/little endian issues.
-*/
-
-#define FAP_MARKER (MAKE_MARKER ('f', 'a', 'p', ' '))
-#define PAF_MARKER (MAKE_MARKER (' ', 'p', 'a', 'f'))
-
-/*------------------------------------------------------------------------------
-** Other defines.
-*/
-
-#define PAF_HEADER_LENGTH 2048
-
-#define PAF24_SAMPLES_PER_BLOCK 10
-#define PAF24_BLOCK_SIZE 32
-
-/*------------------------------------------------------------------------------
-** Typedefs.
-*/
-
-typedef struct
-{ int version ;
- int endianness ;
- int samplerate ;
- int format ;
- int channels ;
- int source ;
-} PAF_FMT ;
-
-typedef struct
-{ int max_blocks, channels, samplesperblock, blocksize ;
- int read_block, write_block, read_count, write_count ;
- sf_count_t sample_count ;
- int *samples ;
- unsigned char *block ;
-#if HAVE_FLEXIBLE_ARRAY
- int data [] ; /* ISO C99 struct flexible array. */
-#else
- int data [1] ; /* This is a hack and may not work. */
-#endif
-} PAF24_PRIVATE ;
-
-/*------------------------------------------------------------------------------
-** Private static functions.
-*/
-
-static int paf24_init (SF_PRIVATE *psf) ;
-
-static int paf_read_header (SF_PRIVATE *psf) ;
-static int paf_write_header (SF_PRIVATE *psf, int calc_length) ;
-
-static sf_count_t paf24_read_s (SF_PRIVATE *psf, short *ptr, sf_count_t len) ;
-static sf_count_t paf24_read_i (SF_PRIVATE *psf, int *ptr, sf_count_t len) ;
-static sf_count_t paf24_read_f (SF_PRIVATE *psf, float *ptr, sf_count_t len) ;
-static sf_count_t paf24_read_d (SF_PRIVATE *psf, double *ptr, sf_count_t len) ;
-
-static sf_count_t paf24_write_s (SF_PRIVATE *psf, const short *ptr, sf_count_t len) ;
-static sf_count_t paf24_write_i (SF_PRIVATE *psf, const int *ptr, sf_count_t len) ;
-static sf_count_t paf24_write_f (SF_PRIVATE *psf, const float *ptr, sf_count_t len) ;
-static sf_count_t paf24_write_d (SF_PRIVATE *psf, const double *ptr, sf_count_t len) ;
-
-static sf_count_t paf24_seek (SF_PRIVATE *psf, int mode, sf_count_t offset) ;
-
-enum
-{ PAF_PCM_16 = 0,
- PAF_PCM_24 = 1,
- PAF_PCM_S8 = 2
-} ;
-
-/*------------------------------------------------------------------------------
-** Public function.
-*/
-
-int
-paf_open (SF_PRIVATE *psf)
-{ int subformat, error, endian ;
-
- psf->dataoffset = PAF_HEADER_LENGTH ;
-
- if (psf->mode == SFM_READ || (psf->mode == SFM_RDWR && psf->filelength > 0))
- { if ((error = paf_read_header (psf)))
- return error ;
- } ;
-
- subformat = psf->sf.format & SF_FORMAT_SUBMASK ;
-
- if (psf->mode == SFM_WRITE || psf->mode == SFM_RDWR)
- { if ((psf->sf.format & SF_FORMAT_TYPEMASK) != SF_FORMAT_PAF)
- return SFE_BAD_OPEN_FORMAT ;
-
- endian = psf->sf.format & SF_FORMAT_ENDMASK ;
-
- /* PAF is by default big endian. */
- psf->endian = SF_ENDIAN_BIG ;
-
- if (endian == SF_ENDIAN_LITTLE || (CPU_IS_LITTLE_ENDIAN && (endian == SF_ENDIAN_CPU)))
- psf->endian = SF_ENDIAN_LITTLE ;
-
- if ((error = paf_write_header (psf, SF_FALSE)))
- return error ;
-
- psf->write_header = paf_write_header ;
- } ;
-
- switch (subformat)
- { case SF_FORMAT_PCM_S8 :
- psf->bytewidth = 1 ;
- error = pcm_init (psf) ;
- break ;
-
- case SF_FORMAT_PCM_16 :
- psf->bytewidth = 2 ;
- error = pcm_init (psf) ;
- break ;
-
- case SF_FORMAT_PCM_24 :
- /* No bytewidth because of whacky 24 bit encoding. */
- error = paf24_init (psf) ;
- break ;
-
- default : return SFE_PAF_UNKNOWN_FORMAT ;
- } ;
-
- return error ;
-} /* paf_open */
-
-/*------------------------------------------------------------------------------
-*/
-
-static int
-paf_read_header (SF_PRIVATE *psf)
-{ PAF_FMT paf_fmt ;
- int marker ;
-
- memset (&paf_fmt, 0, sizeof (paf_fmt)) ;
- psf_binheader_readf (psf, "pm", 0, &marker) ;
-
- psf_log_printf (psf, "Signature : '%M'\n", marker) ;
-
- if (marker == PAF_MARKER)
- { psf_binheader_readf (psf, "E444444", &(paf_fmt.version), &(paf_fmt.endianness),
- &(paf_fmt.samplerate), &(paf_fmt.format), &(paf_fmt.channels), &(paf_fmt.source)) ;
- }
- else if (marker == FAP_MARKER)
- { psf_binheader_readf (psf, "e444444", &(paf_fmt.version), &(paf_fmt.endianness),
- &(paf_fmt.samplerate), &(paf_fmt.format), &(paf_fmt.channels), &(paf_fmt.source)) ;
- }
- else
- return SFE_PAF_NO_MARKER ;
-
- psf_log_printf (psf, "Version : %d\n", paf_fmt.version) ;
-
- if (paf_fmt.version != 0)
- { psf_log_printf (psf, "*** Bad version number. should be zero.\n") ;
- return SFE_PAF_VERSION ;
- } ;
-
- psf_log_printf (psf, "Sample Rate : %d\n", paf_fmt.samplerate) ;
- psf_log_printf (psf, "Channels : %d\n", paf_fmt.channels) ;
-
- psf_log_printf (psf, "Endianness : %d => ", paf_fmt.endianness) ;
- if (paf_fmt.endianness)
- { psf_log_printf (psf, "Little\n", paf_fmt.endianness) ;
- psf->endian = SF_ENDIAN_LITTLE ;
- }
- else
- { psf_log_printf (psf, "Big\n", paf_fmt.endianness) ;
- psf->endian = SF_ENDIAN_BIG ;
- } ;
-
- if (psf->filelength < PAF_HEADER_LENGTH)
- return SFE_PAF_SHORT_HEADER ;
-
- psf->datalength = psf->filelength - psf->dataoffset ;
-
- psf_binheader_readf (psf, "p", (int) psf->dataoffset) ;
-
- psf->sf.samplerate = paf_fmt.samplerate ;
- psf->sf.channels = paf_fmt.channels ;
-
- /* Only fill in type major. */
- psf->sf.format = SF_FORMAT_PAF ;
-
- psf_log_printf (psf, "Format : %d => ", paf_fmt.format) ;
-
- /* PAF is by default big endian. */
- psf->sf.format |= paf_fmt.endianness ? SF_ENDIAN_LITTLE : SF_ENDIAN_BIG ;
-
- switch (paf_fmt.format)
- { case PAF_PCM_S8 :
- psf_log_printf (psf, "8 bit linear PCM\n") ;
- psf->bytewidth = 1 ;
-
- psf->sf.format |= SF_FORMAT_PCM_S8 ;
-
- psf->blockwidth = psf->bytewidth * psf->sf.channels ;
- psf->sf.frames = psf->datalength / psf->blockwidth ;
- break ;
-
- case PAF_PCM_16 :
- psf_log_printf (psf, "16 bit linear PCM\n") ;
- psf->bytewidth = 2 ;
-
- psf->sf.format |= SF_FORMAT_PCM_16 ;
-
- psf->blockwidth = psf->bytewidth * psf->sf.channels ;
- psf->sf.frames = psf->datalength / psf->blockwidth ;
- break ;
-
- case PAF_PCM_24 :
- psf_log_printf (psf, "24 bit linear PCM\n") ;
- psf->bytewidth = 3 ;
-
- psf->sf.format |= SF_FORMAT_PCM_24 ;
-
- psf->blockwidth = 0 ;
- psf->sf.frames = PAF24_SAMPLES_PER_BLOCK * psf->datalength /
- (PAF24_BLOCK_SIZE * psf->sf.channels) ;
- break ;
-
- default : psf_log_printf (psf, "Unknown\n") ;
- return SFE_PAF_UNKNOWN_FORMAT ;
- break ;
- } ;
-
- psf_log_printf (psf, "Source : %d => ", paf_fmt.source) ;
-
- switch (paf_fmt.source)
- { case 1 : psf_log_printf (psf, "Analog Recording\n") ;
- break ;
- case 2 : psf_log_printf (psf, "Digital Transfer\n") ;
- break ;
- case 3 : psf_log_printf (psf, "Multi-track Mixdown\n") ;
- break ;
- case 5 : psf_log_printf (psf, "Audio Resulting From DSP Processing\n") ;
- break ;
- default : psf_log_printf (psf, "Unknown\n") ;
- break ;
- } ;
-
- return 0 ;
-} /* paf_read_header */
-
-static int
-paf_write_header (SF_PRIVATE *psf, int calc_length)
-{ int paf_format ;
-
- /* PAF header already written so no need to re-write. */
- if (psf_ftell (psf) >= PAF_HEADER_LENGTH)
- return 0 ;
-
- psf->dataoffset = PAF_HEADER_LENGTH ;
-
- psf->dataoffset = PAF_HEADER_LENGTH ;
-
- /* Prevent compiler warning. */
- calc_length = calc_length ;
-
- switch (psf->sf.format & SF_FORMAT_SUBMASK)
- { case SF_FORMAT_PCM_S8 :
- paf_format = PAF_PCM_S8 ;
- break ;
-
- case SF_FORMAT_PCM_16 :
- paf_format = PAF_PCM_16 ;
- break ;
-
- case SF_FORMAT_PCM_24 :
- paf_format = PAF_PCM_24 ;
- break ;
-
- default : return SFE_PAF_UNKNOWN_FORMAT ;
- } ;
-
- /* Reset the current header length to zero. */
- psf->header [0] = 0 ;
- psf->headindex = 0 ;
-
- if (psf->endian == SF_ENDIAN_BIG)
- { /* Marker, version, endianness, samplerate */
- psf_binheader_writef (psf, "Em444", PAF_MARKER, 0, 0, psf->sf.samplerate) ;
- /* format, channels, source */
- psf_binheader_writef (psf, "E444", paf_format, psf->sf.channels, 0) ;
- }
- else if (psf->endian == SF_ENDIAN_LITTLE)
- { /* Marker, version, endianness, samplerate */
- psf_binheader_writef (psf, "em444", FAP_MARKER, 0, 1, psf->sf.samplerate) ;
- /* format, channels, source */
- psf_binheader_writef (psf, "e444", paf_format, psf->sf.channels, 0) ;
- } ;
-
- /* Zero fill to dataoffset. */
- psf_binheader_writef (psf, "z", (size_t) (psf->dataoffset - psf->headindex)) ;
-
- psf_fwrite (psf->header, psf->headindex, 1, psf) ;
-
- return psf->error ;
-} /* paf_write_header */
-
-/*===============================================================================
-** 24 bit PAF files have a really weird encoding.
-** For a mono file, 10 samples (each being 3 bytes) are packed into a 32 byte
-** block. The 8 ints in this 32 byte block are then endian swapped (as ints)
-** if necessary before being written to disk.
-** For a stereo file, blocks of 10 samples from the same channel are encoded
-** into 32 bytes as for the mono case. The 32 byte blocks are then interleaved
-** on disk.
-** Reading has to reverse the above process :-).
-** Weird!!!
-**
-** The code below attempts to gain efficiency while maintaining readability.
-*/
-
-static int paf24_read_block (SF_PRIVATE *psf, PAF24_PRIVATE *ppaf24) ;
-static int paf24_write_block (SF_PRIVATE *psf, PAF24_PRIVATE *ppaf24) ;
-static int paf24_close (SF_PRIVATE *psf) ;
-
-
-static int
-paf24_init (SF_PRIVATE *psf)
-{ PAF24_PRIVATE *ppaf24 ;
- int paf24size ;
-
- paf24size = sizeof (PAF24_PRIVATE) + psf->sf.channels *
- (PAF24_BLOCK_SIZE + PAF24_SAMPLES_PER_BLOCK * sizeof (int)) ;
-
- /*
- ** Not exatly sure why this needs to be here but the tests
- ** fail without it.
- */
- psf->last_op = 0 ;
-
- if (! (psf->fdata = malloc (paf24size)))
- return SFE_MALLOC_FAILED ;
-
- ppaf24 = (PAF24_PRIVATE*) psf->fdata ;
- memset (ppaf24, 0, paf24size) ;
-
- ppaf24->channels = psf->sf.channels ;
- ppaf24->samples = ppaf24->data ;
- ppaf24->block = (unsigned char*) (ppaf24->data + PAF24_SAMPLES_PER_BLOCK * ppaf24->channels) ;
-
- ppaf24->blocksize = PAF24_BLOCK_SIZE * ppaf24->channels ;
- ppaf24->samplesperblock = PAF24_SAMPLES_PER_BLOCK ;
-
- if (psf->mode == SFM_READ || psf->mode == SFM_RDWR)
- { paf24_read_block (psf, ppaf24) ; /* Read first block. */
-
- psf->read_short = paf24_read_s ;
- psf->read_int = paf24_read_i ;
- psf->read_float = paf24_read_f ;
- psf->read_double = paf24_read_d ;
- } ;
-
- if (psf->mode == SFM_WRITE || psf->mode == SFM_RDWR)
- { psf->write_short = paf24_write_s ;
- psf->write_int = paf24_write_i ;
- psf->write_float = paf24_write_f ;
- psf->write_double = paf24_write_d ;
- } ;
-
- psf->seek = paf24_seek ;
- psf->container_close = paf24_close ;
-
- psf->filelength = psf_get_filelen (psf) ;
- psf->datalength = psf->filelength - psf->dataoffset ;
-
- if (psf->datalength % PAF24_BLOCK_SIZE)
- { if (psf->mode == SFM_READ)
- psf_log_printf (psf, "*** Warning : file seems to be truncated.\n") ;
- ppaf24->max_blocks = psf->datalength / ppaf24->blocksize + 1 ;
- }
- else
- ppaf24->max_blocks = psf->datalength / ppaf24->blocksize ;
-
- ppaf24->read_block = 0 ;
- if (psf->mode == SFM_RDWR)
- ppaf24->write_block = ppaf24->max_blocks ;
- else
- ppaf24->write_block = 0 ;
-
- psf->sf.frames = ppaf24->samplesperblock * ppaf24->max_blocks ;
- ppaf24->sample_count = psf->sf.frames ;
-
- return 0 ;
-} /* paf24_init */
-
-static sf_count_t
-paf24_seek (SF_PRIVATE *psf, int mode, sf_count_t offset)
-{ PAF24_PRIVATE *ppaf24 ;
- int newblock, newsample ;
-
- if (psf->fdata == NULL)
- { psf->error = SFE_INTERNAL ;
- return PSF_SEEK_ERROR ;
- } ;
-
- ppaf24 = (PAF24_PRIVATE*) psf->fdata ;
-
- if (mode == SFM_READ && ppaf24->write_count > 0)
- paf24_write_block (psf, ppaf24) ;
-
- newblock = offset / ppaf24->samplesperblock ;
- newsample = offset % ppaf24->samplesperblock ;
-
- switch (mode)
- { case SFM_READ :
- if (psf->last_op == SFM_WRITE && ppaf24->write_count)
- paf24_write_block (psf, ppaf24) ;
-
- psf_fseek (psf, psf->dataoffset + newblock * ppaf24->blocksize, SEEK_SET) ;
- ppaf24->read_block = newblock ;
- paf24_read_block (psf, ppaf24) ;
- ppaf24->read_count = newsample ;
- break ;
-
- case SFM_WRITE :
- if (offset > ppaf24->sample_count)
- { psf->error = SFE_BAD_SEEK ;
- return PSF_SEEK_ERROR ;
- } ;
-
- if (psf->last_op == SFM_WRITE && ppaf24->write_count)
- paf24_write_block (psf, ppaf24) ;
-
- psf_fseek (psf, psf->dataoffset + newblock * ppaf24->blocksize, SEEK_SET) ;
- ppaf24->write_block = newblock ;
- paf24_read_block (psf, ppaf24) ;
- ppaf24->write_count = newsample ;
- break ;
-
- default :
- psf->error = SFE_BAD_SEEK ;
- return PSF_SEEK_ERROR ;
- } ;
-
- return newblock * ppaf24->samplesperblock + newsample ;
-} /* paf24_seek */
-
-static int
-paf24_close (SF_PRIVATE *psf)
-{ PAF24_PRIVATE *ppaf24 ;
-
- if (psf->fdata == NULL)
- return 0 ;
-
- ppaf24 = (PAF24_PRIVATE*) psf->fdata ;
-
- if (psf->mode == SFM_WRITE || psf->mode == SFM_RDWR)
- { if (ppaf24->write_count > 0)
- paf24_write_block (psf, ppaf24) ;
- } ;
-
- return 0 ;
-} /* paf24_close */
-
-/*---------------------------------------------------------------------------
-*/
-static int
-paf24_read_block (SF_PRIVATE *psf, PAF24_PRIVATE *ppaf24)
-{ int k, channel ;
- unsigned char *cptr ;
-
- ppaf24->read_block ++ ;
- ppaf24->read_count = 0 ;
-
- if (ppaf24->read_block * ppaf24->samplesperblock > ppaf24->sample_count)
- { memset (ppaf24->samples, 0, ppaf24->samplesperblock * ppaf24->channels) ;
- return 1 ;
- } ;
-
- /* Read the block. */
- if ((k = psf_fread (ppaf24->block, 1, ppaf24->blocksize, psf)) != ppaf24->blocksize)
- psf_log_printf (psf, "*** Warning : short read (%d != %d).\n", k, ppaf24->blocksize) ;
-
-
- if (CPU_IS_LITTLE_ENDIAN)
- { /* Do endian swapping if necessary. */
- if (psf->endian == SF_ENDIAN_BIG)
- endswap_int_array (ppaf24->data, 8 * ppaf24->channels) ;
-
- /* Unpack block. */
- for (k = 0 ; k < PAF24_SAMPLES_PER_BLOCK * ppaf24->channels ; k++)
- { channel = k % ppaf24->channels ;
- cptr = ppaf24->block + PAF24_BLOCK_SIZE * channel + 3 * (k / ppaf24->channels) ;
- ppaf24->samples [k] = (cptr [0] << 8) | (cptr [1] << 16) | (cptr [2] << 24) ;
- } ;
- }
- else
- { /* Do endian swapping if necessary. */
- if (psf->endian == SF_ENDIAN_BIG)
- endswap_int_array (ppaf24->data, 8 * ppaf24->channels) ;
-
- /* Unpack block. */
- for (k = 0 ; k < PAF24_SAMPLES_PER_BLOCK * ppaf24->channels ; k++)
- { channel = k % ppaf24->channels ;
- cptr = ppaf24->block + PAF24_BLOCK_SIZE * channel + 3 * (k / ppaf24->channels) ;
- ppaf24->samples [k] = (cptr [0] << 8) | (cptr [1] << 16) | (cptr [2] << 24) ;
- } ;
- } ;
-
- return 1 ;
-} /* paf24_read_block */
-
-static int
-paf24_read (SF_PRIVATE *psf, PAF24_PRIVATE *ppaf24, int *ptr, int len)
-{ int count, total = 0 ;
-
- while (total < len)
- { if (ppaf24->read_block * ppaf24->samplesperblock >= ppaf24->sample_count)
- { memset (&(ptr [total]), 0, (len - total) * sizeof (int)) ;
- return total ;
- } ;
-
- if (ppaf24->read_count >= ppaf24->samplesperblock)
- paf24_read_block (psf, ppaf24) ;
-
- count = (ppaf24->samplesperblock - ppaf24->read_count) * ppaf24->channels ;
- count = (len - total > count) ? count : len - total ;
-
- memcpy (&(ptr [total]), &(ppaf24->samples [ppaf24->read_count * ppaf24->channels]), count * sizeof (int)) ;
- total += count ;
- ppaf24->read_count += count / ppaf24->channels ;
- } ;
-
- return total ;
-} /* paf24_read */
-
-static sf_count_t
-paf24_read_s (SF_PRIVATE *psf, short *ptr, sf_count_t len)
-{ PAF24_PRIVATE *ppaf24 ;
- int *iptr ;
- int k, bufferlen, readcount, count ;
- sf_count_t total = 0 ;
-
- if (psf->fdata == NULL)
- return 0 ;
- ppaf24 = (PAF24_PRIVATE*) psf->fdata ;
-
- iptr = psf->u.ibuf ;
- bufferlen = ARRAY_LEN (psf->u.ibuf) ;
- while (len > 0)
- { readcount = (len >= bufferlen) ? bufferlen : len ;
- count = paf24_read (psf, ppaf24, iptr, readcount) ;
- for (k = 0 ; k < readcount ; k++)
- ptr [total + k] = iptr [k] >> 16 ;
- total += count ;
- len -= readcount ;
- } ;
- return total ;
-} /* paf24_read_s */
-
-static sf_count_t
-paf24_read_i (SF_PRIVATE *psf, int *ptr, sf_count_t len)
-{ PAF24_PRIVATE *ppaf24 ;
- int total ;
-
- if (psf->fdata == NULL)
- return 0 ;
- ppaf24 = (PAF24_PRIVATE*) psf->fdata ;
-
- total = paf24_read (psf, ppaf24, ptr, len) ;
-
- return total ;
-} /* paf24_read_i */
-
-static sf_count_t
-paf24_read_f (SF_PRIVATE *psf, float *ptr, sf_count_t len)
-{ PAF24_PRIVATE *ppaf24 ;
- int *iptr ;
- int k, bufferlen, readcount, count ;
- sf_count_t total = 0 ;
- float normfact ;
-
- if (psf->fdata == NULL)
- return 0 ;
- ppaf24 = (PAF24_PRIVATE*) psf->fdata ;
-
- normfact = (psf->norm_float == SF_TRUE) ? (1.0 / 0x80000000) : (1.0 / 0x100) ;
-
- iptr = psf->u.ibuf ;
- bufferlen = ARRAY_LEN (psf->u.ibuf) ;
- while (len > 0)
- { readcount = (len >= bufferlen) ? bufferlen : len ;
- count = paf24_read (psf, ppaf24, iptr, readcount) ;
- for (k = 0 ; k < readcount ; k++)
- ptr [total + k] = normfact * iptr [k] ;
- total += count ;
- len -= readcount ;
- } ;
- return total ;
-} /* paf24_read_f */
-
-static sf_count_t
-paf24_read_d (SF_PRIVATE *psf, double *ptr, sf_count_t len)
-{ PAF24_PRIVATE *ppaf24 ;
- int *iptr ;
- int k, bufferlen, readcount, count ;
- sf_count_t total = 0 ;
- double normfact ;
-
- if (psf->fdata == NULL)
- return 0 ;
- ppaf24 = (PAF24_PRIVATE*) psf->fdata ;
-
- normfact = (psf->norm_double == SF_TRUE) ? (1.0 / 0x80000000) : (1.0 / 0x100) ;
-
- iptr = psf->u.ibuf ;
- bufferlen = ARRAY_LEN (psf->u.ibuf) ;
- while (len > 0)
- { readcount = (len >= bufferlen) ? bufferlen : len ;
- count = paf24_read (psf, ppaf24, iptr, readcount) ;
- for (k = 0 ; k < readcount ; k++)
- ptr [total + k] = normfact * iptr [k] ;
- total += count ;
- len -= readcount ;
- } ;
- return total ;
-} /* paf24_read_d */
-
-/*---------------------------------------------------------------------------
-*/
-
-static int
-paf24_write_block (SF_PRIVATE *psf, PAF24_PRIVATE *ppaf24)
-{ int k, nextsample, channel ;
- unsigned char *cptr ;
-
- /* First pack block. */
-
- if (CPU_IS_LITTLE_ENDIAN)
- { for (k = 0 ; k < PAF24_SAMPLES_PER_BLOCK * ppaf24->channels ; k++)
- { channel = k % ppaf24->channels ;
- cptr = ppaf24->block + PAF24_BLOCK_SIZE * channel + 3 * (k / ppaf24->channels) ;
- nextsample = ppaf24->samples [k] >> 8 ;
- cptr [0] = nextsample ;
- cptr [1] = nextsample >> 8 ;
- cptr [2] = nextsample >> 16 ;
- } ;
-
- /* Do endian swapping if necessary. */
- if (psf->endian == SF_ENDIAN_BIG)
- endswap_int_array (ppaf24->data, 8 * ppaf24->channels) ;
- }
- else if (CPU_IS_BIG_ENDIAN)
- { /* This is correct. */
- for (k = 0 ; k < PAF24_SAMPLES_PER_BLOCK * ppaf24->channels ; k++)
- { channel = k % ppaf24->channels ;
- cptr = ppaf24->block + PAF24_BLOCK_SIZE * channel + 3 * (k / ppaf24->channels) ;
- nextsample = ppaf24->samples [k] >> 8 ;
- cptr [0] = nextsample ;
- cptr [1] = nextsample >> 8 ;
- cptr [2] = nextsample >> 16 ;
- } ;
- if (psf->endian == SF_ENDIAN_BIG)
- endswap_int_array (ppaf24->data, 8 * ppaf24->channels) ;
- } ;
-
- /* Write block to disk. */
- if ((k = psf_fwrite (ppaf24->block, 1, ppaf24->blocksize, psf)) != ppaf24->blocksize)
- psf_log_printf (psf, "*** Warning : short write (%d != %d).\n", k, ppaf24->blocksize) ;
-
- if (ppaf24->sample_count < ppaf24->write_block * ppaf24->samplesperblock + ppaf24->write_count)
- ppaf24->sample_count = ppaf24->write_block * ppaf24->samplesperblock + ppaf24->write_count ;
-
- if (ppaf24->write_count == ppaf24->samplesperblock)
- { ppaf24->write_block ++ ;
- ppaf24->write_count = 0 ;
- } ;
-
- return 1 ;
-} /* paf24_write_block */
-
-static int
-paf24_write (SF_PRIVATE *psf, PAF24_PRIVATE *ppaf24, const int *ptr, int len)
-{ int count, total = 0 ;
-
- while (total < len)
- { count = (ppaf24->samplesperblock - ppaf24->write_count) * ppaf24->channels ;
-
- if (count > len - total)
- count = len - total ;
-
- memcpy (&(ppaf24->samples [ppaf24->write_count * ppaf24->channels]), &(ptr [total]), count * sizeof (int)) ;
- total += count ;
- ppaf24->write_count += count / ppaf24->channels ;
-
- if (ppaf24->write_count >= ppaf24->samplesperblock)
- paf24_write_block (psf, ppaf24) ;
- } ;
-
- return total ;
-} /* paf24_write */
-
-static sf_count_t
-paf24_write_s (SF_PRIVATE *psf, const short *ptr, sf_count_t len)
-{ PAF24_PRIVATE *ppaf24 ;
- int *iptr ;
- int k, bufferlen, writecount = 0, count ;
- sf_count_t total = 0 ;
-
- if (psf->fdata == NULL)
- return 0 ;
- ppaf24 = (PAF24_PRIVATE*) psf->fdata ;
-
- iptr = psf->u.ibuf ;
- bufferlen = ARRAY_LEN (psf->u.ibuf) ;
- while (len > 0)
- { writecount = (len >= bufferlen) ? bufferlen : len ;
- for (k = 0 ; k < writecount ; k++)
- iptr [k] = ptr [total + k] << 16 ;
- count = paf24_write (psf, ppaf24, iptr, writecount) ;
- total += count ;
- len -= writecount ;
- if (count != writecount)
- break ;
- } ;
- return total ;
-} /* paf24_write_s */
-
-static sf_count_t
-paf24_write_i (SF_PRIVATE *psf, const int *ptr, sf_count_t len)
-{ PAF24_PRIVATE *ppaf24 ;
- int writecount, count ;
- sf_count_t total = 0 ;
-
- if (psf->fdata == NULL)
- return 0 ;
- ppaf24 = (PAF24_PRIVATE*) psf->fdata ;
-
- while (len > 0)
- { writecount = (len > 0x10000000) ? 0x10000000 : (int) len ;
-
- count = paf24_write (psf, ppaf24, ptr, writecount) ;
-
- total += count ;
- len -= count ;
- if (count != writecount)
- break ;
- } ;
-
- return total ;
-} /* paf24_write_i */
-
-static sf_count_t
-paf24_write_f (SF_PRIVATE *psf, const float *ptr, sf_count_t len)
-{ PAF24_PRIVATE *ppaf24 ;
- int *iptr ;
- int k, bufferlen, writecount = 0, count ;
- sf_count_t total = 0 ;
- float normfact ;
-
- if (psf->fdata == NULL)
- return 0 ;
- ppaf24 = (PAF24_PRIVATE*) psf->fdata ;
-
- normfact = (psf->norm_float == SF_TRUE) ? (1.0 * 0x7FFFFFFF) : (1.0 / 0x100) ;
-
- iptr = psf->u.ibuf ;
- bufferlen = ARRAY_LEN (psf->u.ibuf) ;
- while (len > 0)
- { writecount = (len >= bufferlen) ? bufferlen : len ;
- for (k = 0 ; k < writecount ; k++)
- iptr [k] = lrintf (normfact * ptr [total + k]) ;
- count = paf24_write (psf, ppaf24, iptr, writecount) ;
- total += count ;
- len -= writecount ;
- if (count != writecount)
- break ;
- } ;
-
- return total ;
-} /* paf24_write_f */
-
-static sf_count_t
-paf24_write_d (SF_PRIVATE *psf, const double *ptr, sf_count_t len)
-{ PAF24_PRIVATE *ppaf24 ;
- int *iptr ;
- int k, bufferlen, writecount = 0, count ;
- sf_count_t total = 0 ;
- double normfact ;
-
- if (psf->fdata == NULL)
- return 0 ;
- ppaf24 = (PAF24_PRIVATE*) psf->fdata ;
-
- normfact = (psf->norm_double == SF_TRUE) ? (1.0 * 0x7FFFFFFF) : (1.0 / 0x100) ;
-
- iptr = psf->u.ibuf ;
- bufferlen = ARRAY_LEN (psf->u.ibuf) ;
- while (len > 0)
- { writecount = (len >= bufferlen) ? bufferlen : len ;
- for (k = 0 ; k < writecount ; k++)
- iptr [k] = lrint (normfact * ptr [total+k]) ;
- count = paf24_write (psf, ppaf24, iptr, writecount) ;
- total += count ;
- len -= writecount ;
- if (count != writecount)
- break ;
- } ;
-
- return total ;
-} /* paf24_write_d */
-
-
-/*
-** Do not edit or modify anything in this comment block.
-** The arch-tag line is a file identity tag for the GNU Arch
-** revision control system.
-**
-** arch-tag: 477a5308-451e-4bbd-bab4-fab6caa4e884
-*/
diff --git a/libs/libsndfile/src/pcm.c b/libs/libsndfile/src/pcm.c
deleted file mode 100644
index bad607c165..0000000000
--- a/libs/libsndfile/src/pcm.c
+++ /dev/null
@@ -1,2899 +0,0 @@
-/*
-** Copyright (C) 1999-2005 Erik de Castro Lopo <erikd@mega-nerd.com>
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU Lesser General Public License as published by
-** the Free Software Foundation; either version 2.1 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU Lesser General Public License for more details.
-**
-** You should have received a copy of the GNU Lesser General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-*/
-
-#include "sfconfig.h"
-
-#include "sndfile.h"
-#include "sfendian.h"
-#include "float_cast.h"
-#include "common.h"
-
-/* Need to be able to handle 3 byte (24 bit) integers. So defined a
-** type and use SIZEOF_TRIBYTE instead of (tribyte).
-*/
-
-typedef void tribyte ;
-
-#define SIZEOF_TRIBYTE 3
-
-static sf_count_t pcm_read_sc2s (SF_PRIVATE *psf, short *ptr, sf_count_t len) ;
-static sf_count_t pcm_read_uc2s (SF_PRIVATE *psf, short *ptr, sf_count_t len) ;
-static sf_count_t pcm_read_bes2s (SF_PRIVATE *psf, short *ptr, sf_count_t len) ;
-static sf_count_t pcm_read_les2s (SF_PRIVATE *psf, short *ptr, sf_count_t len) ;
-static sf_count_t pcm_read_bet2s (SF_PRIVATE *psf, short *ptr, sf_count_t len) ;
-static sf_count_t pcm_read_let2s (SF_PRIVATE *psf, short *ptr, sf_count_t len) ;
-static sf_count_t pcm_read_bei2s (SF_PRIVATE *psf, short *ptr, sf_count_t len) ;
-static sf_count_t pcm_read_lei2s (SF_PRIVATE *psf, short *ptr, sf_count_t len) ;
-
-static sf_count_t pcm_read_sc2i (SF_PRIVATE *psf, int *ptr, sf_count_t len) ;
-static sf_count_t pcm_read_uc2i (SF_PRIVATE *psf, int *ptr, sf_count_t len) ;
-static sf_count_t pcm_read_bes2i (SF_PRIVATE *psf, int *ptr, sf_count_t len) ;
-static sf_count_t pcm_read_les2i (SF_PRIVATE *psf, int *ptr, sf_count_t len) ;
-static sf_count_t pcm_read_bet2i (SF_PRIVATE *psf, int *ptr, sf_count_t len) ;
-static sf_count_t pcm_read_let2i (SF_PRIVATE *psf, int *ptr, sf_count_t len) ;
-static sf_count_t pcm_read_bei2i (SF_PRIVATE *psf, int *ptr, sf_count_t len) ;
-static sf_count_t pcm_read_lei2i (SF_PRIVATE *psf, int *ptr, sf_count_t len) ;
-
-static sf_count_t pcm_read_sc2f (SF_PRIVATE *psf, float *ptr, sf_count_t len) ;
-static sf_count_t pcm_read_uc2f (SF_PRIVATE *psf, float *ptr, sf_count_t len) ;
-static sf_count_t pcm_read_bes2f (SF_PRIVATE *psf, float *ptr, sf_count_t len) ;
-static sf_count_t pcm_read_les2f (SF_PRIVATE *psf, float *ptr, sf_count_t len) ;
-static sf_count_t pcm_read_bet2f (SF_PRIVATE *psf, float *ptr, sf_count_t len) ;
-static sf_count_t pcm_read_let2f (SF_PRIVATE *psf, float *ptr, sf_count_t len) ;
-static sf_count_t pcm_read_bei2f (SF_PRIVATE *psf, float *ptr, sf_count_t len) ;
-static sf_count_t pcm_read_lei2f (SF_PRIVATE *psf, float *ptr, sf_count_t len) ;
-
-static sf_count_t pcm_read_sc2d (SF_PRIVATE *psf, double *ptr, sf_count_t len) ;
-static sf_count_t pcm_read_uc2d (SF_PRIVATE *psf, double *ptr, sf_count_t len) ;
-static sf_count_t pcm_read_bes2d (SF_PRIVATE *psf, double *ptr, sf_count_t len) ;
-static sf_count_t pcm_read_les2d (SF_PRIVATE *psf, double *ptr, sf_count_t len) ;
-static sf_count_t pcm_read_bet2d (SF_PRIVATE *psf, double *ptr, sf_count_t len) ;
-static sf_count_t pcm_read_let2d (SF_PRIVATE *psf, double *ptr, sf_count_t len) ;
-static sf_count_t pcm_read_bei2d (SF_PRIVATE *psf, double *ptr, sf_count_t len) ;
-static sf_count_t pcm_read_lei2d (SF_PRIVATE *psf, double *ptr, sf_count_t len) ;
-
-static sf_count_t pcm_write_s2sc (SF_PRIVATE *psf, const short *ptr, sf_count_t len) ;
-static sf_count_t pcm_write_s2uc (SF_PRIVATE *psf, const short *ptr, sf_count_t len) ;
-static sf_count_t pcm_write_s2bes (SF_PRIVATE *psf, const short *ptr, sf_count_t len) ;
-static sf_count_t pcm_write_s2les (SF_PRIVATE *psf, const short *ptr, sf_count_t len) ;
-static sf_count_t pcm_write_s2bet (SF_PRIVATE *psf, const short *ptr, sf_count_t len) ;
-static sf_count_t pcm_write_s2let (SF_PRIVATE *psf, const short *ptr, sf_count_t len) ;
-static sf_count_t pcm_write_s2bei (SF_PRIVATE *psf, const short *ptr, sf_count_t len) ;
-static sf_count_t pcm_write_s2lei (SF_PRIVATE *psf, const short *ptr, sf_count_t len) ;
-
-static sf_count_t pcm_write_i2sc (SF_PRIVATE *psf, const int *ptr, sf_count_t len) ;
-static sf_count_t pcm_write_i2uc (SF_PRIVATE *psf, const int *ptr, sf_count_t len) ;
-static sf_count_t pcm_write_i2bes (SF_PRIVATE *psf, const int *ptr, sf_count_t len) ;
-static sf_count_t pcm_write_i2les (SF_PRIVATE *psf, const int *ptr, sf_count_t len) ;
-static sf_count_t pcm_write_i2bet (SF_PRIVATE *psf, const int *ptr, sf_count_t len) ;
-static sf_count_t pcm_write_i2let (SF_PRIVATE *psf, const int *ptr, sf_count_t len) ;
-static sf_count_t pcm_write_i2bei (SF_PRIVATE *psf, const int *ptr, sf_count_t len) ;
-static sf_count_t pcm_write_i2lei (SF_PRIVATE *psf, const int *ptr, sf_count_t len) ;
-
-static sf_count_t pcm_write_f2sc (SF_PRIVATE *psf, const float *ptr, sf_count_t len) ;
-static sf_count_t pcm_write_f2uc (SF_PRIVATE *psf, const float *ptr, sf_count_t len) ;
-static sf_count_t pcm_write_f2bes (SF_PRIVATE *psf, const float *ptr, sf_count_t len) ;
-static sf_count_t pcm_write_f2les (SF_PRIVATE *psf, const float *ptr, sf_count_t len) ;
-static sf_count_t pcm_write_f2bet (SF_PRIVATE *psf, const float *ptr, sf_count_t len) ;
-static sf_count_t pcm_write_f2let (SF_PRIVATE *psf, const float *ptr, sf_count_t len) ;
-static sf_count_t pcm_write_f2bei (SF_PRIVATE *psf, const float *ptr, sf_count_t len) ;
-static sf_count_t pcm_write_f2lei (SF_PRIVATE *psf, const float *ptr, sf_count_t len) ;
-
-static sf_count_t pcm_write_d2sc (SF_PRIVATE *psf, const double *ptr, sf_count_t len) ;
-static sf_count_t pcm_write_d2uc (SF_PRIVATE *psf, const double *ptr, sf_count_t len) ;
-static sf_count_t pcm_write_d2bes (SF_PRIVATE *psf, const double *ptr, sf_count_t len) ;
-static sf_count_t pcm_write_d2les (SF_PRIVATE *psf, const double *ptr, sf_count_t len) ;
-static sf_count_t pcm_write_d2bet (SF_PRIVATE *psf, const double *ptr, sf_count_t len) ;
-static sf_count_t pcm_write_d2let (SF_PRIVATE *psf, const double *ptr, sf_count_t len) ;
-static sf_count_t pcm_write_d2bei (SF_PRIVATE *psf, const double *ptr, sf_count_t len) ;
-static sf_count_t pcm_write_d2lei (SF_PRIVATE *psf, const double *ptr, sf_count_t len) ;
-
-/*-----------------------------------------------------------------------------------------------
-*/
-
-enum
-{ /* Char type for 8 bit files. */
- SF_CHARS_SIGNED = 200,
- SF_CHARS_UNSIGNED = 201
-} ;
-
-/*-----------------------------------------------------------------------------------------------
-*/
-
-int
-pcm_init (SF_PRIVATE *psf)
-{ int chars = 0 ;
-
- if (psf->bytewidth == 0 || psf->sf.channels == 0)
- return SFE_INTERNAL ;
-
- psf->blockwidth = psf->bytewidth * psf->sf.channels ;
-
- if ((psf->sf.format & SF_FORMAT_SUBMASK) == SF_FORMAT_PCM_S8)
- chars = SF_CHARS_SIGNED ;
- else if ((psf->sf.format & SF_FORMAT_SUBMASK) == SF_FORMAT_PCM_U8)
- chars = SF_CHARS_UNSIGNED ;
-
- if (psf->mode == SFM_READ || psf->mode == SFM_RDWR)
- { switch (psf->bytewidth * 0x10000 + psf->endian + chars)
- { case (0x10000 + SF_ENDIAN_BIG + SF_CHARS_SIGNED) :
- case (0x10000 + SF_ENDIAN_LITTLE + SF_CHARS_SIGNED) :
- psf->read_short = pcm_read_sc2s ;
- psf->read_int = pcm_read_sc2i ;
- psf->read_float = pcm_read_sc2f ;
- psf->read_double = pcm_read_sc2d ;
- break ;
- case (0x10000 + SF_ENDIAN_BIG + SF_CHARS_UNSIGNED) :
- case (0x10000 + SF_ENDIAN_LITTLE + SF_CHARS_UNSIGNED) :
- psf->read_short = pcm_read_uc2s ;
- psf->read_int = pcm_read_uc2i ;
- psf->read_float = pcm_read_uc2f ;
- psf->read_double = pcm_read_uc2d ;
- break ;
-
- case (2 * 0x10000 + SF_ENDIAN_BIG) :
- psf->read_short = pcm_read_bes2s ;
- psf->read_int = pcm_read_bes2i ;
- psf->read_float = pcm_read_bes2f ;
- psf->read_double = pcm_read_bes2d ;
- break ;
- case (3 * 0x10000 + SF_ENDIAN_BIG) :
- psf->read_short = pcm_read_bet2s ;
- psf->read_int = pcm_read_bet2i ;
- psf->read_float = pcm_read_bet2f ;
- psf->read_double = pcm_read_bet2d ;
- break ;
- case (4 * 0x10000 + SF_ENDIAN_BIG) :
- psf->read_short = pcm_read_bei2s ;
- psf->read_int = pcm_read_bei2i ;
- psf->read_float = pcm_read_bei2f ;
- psf->read_double = pcm_read_bei2d ;
- break ;
-
- case (2 * 0x10000 + SF_ENDIAN_LITTLE) :
- psf->read_short = pcm_read_les2s ;
- psf->read_int = pcm_read_les2i ;
- psf->read_float = pcm_read_les2f ;
- psf->read_double = pcm_read_les2d ;
- break ;
- case (3 * 0x10000 + SF_ENDIAN_LITTLE) :
- psf->read_short = pcm_read_let2s ;
- psf->read_int = pcm_read_let2i ;
- psf->read_float = pcm_read_let2f ;
- psf->read_double = pcm_read_let2d ;
- break ;
- case (4 * 0x10000 + SF_ENDIAN_LITTLE) :
- psf->read_short = pcm_read_lei2s ;
- psf->read_int = pcm_read_lei2i ;
- psf->read_float = pcm_read_lei2f ;
- psf->read_double = pcm_read_lei2d ;
- break ;
- default :
- psf_log_printf (psf, "pcm.c returning SFE_UNIMPLEMENTED\n") ;
- return SFE_UNIMPLEMENTED ;
- } ;
- } ;
-
- if (psf->mode == SFM_WRITE || psf->mode == SFM_RDWR)
- { switch (psf->bytewidth * 0x10000 + psf->endian + chars)
- { case (0x10000 + SF_ENDIAN_BIG + SF_CHARS_SIGNED) :
- case (0x10000 + SF_ENDIAN_LITTLE + SF_CHARS_SIGNED) :
- psf->write_short = pcm_write_s2sc ;
- psf->write_int = pcm_write_i2sc ;
- psf->write_float = pcm_write_f2sc ;
- psf->write_double = pcm_write_d2sc ;
- break ;
- case (0x10000 + SF_ENDIAN_BIG + SF_CHARS_UNSIGNED) :
- case (0x10000 + SF_ENDIAN_LITTLE + SF_CHARS_UNSIGNED) :
- psf->write_short = pcm_write_s2uc ;
- psf->write_int = pcm_write_i2uc ;
- psf->write_float = pcm_write_f2uc ;
- psf->write_double = pcm_write_d2uc ;
- break ;
-
- case (2 * 0x10000 + SF_ENDIAN_BIG) :
- psf->write_short = pcm_write_s2bes ;
- psf->write_int = pcm_write_i2bes ;
- psf->write_float = pcm_write_f2bes ;
- psf->write_double = pcm_write_d2bes ;
- break ;
-
- case (3 * 0x10000 + SF_ENDIAN_BIG) :
- psf->write_short = pcm_write_s2bet ;
- psf->write_int = pcm_write_i2bet ;
- psf->write_float = pcm_write_f2bet ;
- psf->write_double = pcm_write_d2bet ;
- break ;
-
- case (4 * 0x10000 + SF_ENDIAN_BIG) :
- psf->write_short = pcm_write_s2bei ;
- psf->write_int = pcm_write_i2bei ;
- psf->write_float = pcm_write_f2bei ;
- psf->write_double = pcm_write_d2bei ;
- break ;
-
- case (2 * 0x10000 + SF_ENDIAN_LITTLE) :
- psf->write_short = pcm_write_s2les ;
- psf->write_int = pcm_write_i2les ;
- psf->write_float = pcm_write_f2les ;
- psf->write_double = pcm_write_d2les ;
- break ;
-
- case (3 * 0x10000 + SF_ENDIAN_LITTLE) :
- psf->write_short = pcm_write_s2let ;
- psf->write_int = pcm_write_i2let ;
- psf->write_float = pcm_write_f2let ;
- psf->write_double = pcm_write_d2let ;
- break ;
-
- case (4 * 0x10000 + SF_ENDIAN_LITTLE) :
- psf->write_short = pcm_write_s2lei ;
- psf->write_int = pcm_write_i2lei ;
- psf->write_float = pcm_write_f2lei ;
- psf->write_double = pcm_write_d2lei ;
- break ;
-
- default :
- psf_log_printf (psf, "pcm.c returning SFE_UNIMPLEMENTED\n") ;
- return SFE_UNIMPLEMENTED ;
- } ;
-
- } ;
-
- if (psf->filelength > psf->dataoffset)
- { psf->datalength = (psf->dataend > 0) ? psf->dataend - psf->dataoffset :
- psf->filelength - psf->dataoffset ;
- }
- else
- psf->datalength = 0 ;
-
- psf->sf.frames = psf->datalength / psf->blockwidth ;
-
- return 0 ;
-} /* pcm_init */
-
-/*==============================================================================
-*/
-
-static inline void
-sc2s_array (signed char *src, int count, short *dest)
-{ while (--count >= 0)
- { dest [count] = src [count] << 8 ;
- } ;
-} /* sc2s_array */
-
-static inline void
-uc2s_array (unsigned char *src, int count, short *dest)
-{ while (--count >= 0)
- { dest [count] = (((short) src [count]) - 0x80) << 8 ;
- } ;
-} /* uc2s_array */
-
-static inline void
-let2s_array (tribyte *src, int count, short *dest)
-{ unsigned char *ucptr ;
-
- ucptr = ((unsigned char*) src) + 3 * count ;
- while (--count >= 0)
- { ucptr -= 3 ;
- dest [count] = LET2H_SHORT_PTR (ucptr) ;
- } ;
-} /* let2s_array */
-
-static inline void
-bet2s_array (tribyte *src, int count, short *dest)
-{ unsigned char *ucptr ;
-
- ucptr = ((unsigned char*) src) + 3 * count ;
- while (--count >= 0)
- { ucptr -= 3 ;
- dest [count] = BET2H_SHORT_PTR (ucptr) ;
- } ;
-} /* bet2s_array */
-
-static inline void
-lei2s_array (int *src, int count, short *dest)
-{ int value ;
-
- while (--count >= 0)
- { value = LEI2H_INT (src [count]) ;
- dest [count] = value >> 16 ;
- } ;
-} /* lei2s_array */
-
-static inline void
-bei2s_array (int *src, int count, short *dest)
-{ int value ;
-
- while (--count >= 0)
- { value = BEI2H_INT (src [count]) ;
- dest [count] = value >> 16 ;
- } ;
-} /* bei2s_array */
-
-/*--------------------------------------------------------------------------
-*/
-
-static inline void
-sc2i_array (signed char *src, int count, int *dest)
-{ while (--count >= 0)
- { dest [count] = ((int) src [count]) << 24 ;
- } ;
-} /* sc2i_array */
-
-static inline void
-uc2i_array (unsigned char *src, int count, int *dest)
-{ while (--count >= 0)
- { dest [count] = (((int) src [count]) - 128) << 24 ;
- } ;
-} /* uc2i_array */
-
-static inline void
-bes2i_array (short *src, int count, int *dest)
-{ short value ;
-
- while (--count >= 0)
- { value = BES2H_SHORT (src [count]) ;
- dest [count] = value << 16 ;
- } ;
-} /* bes2i_array */
-
-static inline void
-les2i_array (short *src, int count, int *dest)
-{ short value ;
-
- while (--count >= 0)
- { value = LES2H_SHORT (src [count]) ;
- dest [count] = value << 16 ;
- } ;
-} /* les2i_array */
-
-static inline void
-bet2i_array (tribyte *src, int count, int *dest)
-{ unsigned char *ucptr ;
-
- ucptr = ((unsigned char*) src) + 3 * count ;
- while (--count >= 0)
- { ucptr -= 3 ;
- dest [count] = BET2H_INT_PTR (ucptr) ;
- } ;
-} /* bet2i_array */
-
-static inline void
-let2i_array (tribyte *src, int count, int *dest)
-{ unsigned char *ucptr ;
-
- ucptr = ((unsigned char*) src) + 3 * count ;
- while (--count >= 0)
- { ucptr -= 3 ;
- dest [count] = LET2H_INT_PTR (ucptr) ;
- } ;
-} /* let2i_array */
-
-/*--------------------------------------------------------------------------
-*/
-
-static inline void
-sc2f_array (signed char *src, int count, float *dest, float normfact)
-{ while (--count >= 0)
- dest [count] = ((float) src [count]) * normfact ;
-} /* sc2f_array */
-
-static inline void
-uc2f_array (unsigned char *src, int count, float *dest, float normfact)
-{ while (--count >= 0)
- dest [count] = (((int) src [count]) - 128) * normfact ;
-} /* uc2f_array */
-
-static inline void
-les2f_array (short *src, int count, float *dest, float normfact)
-{ short value ;
-
- while (--count >= 0)
- { value = src [count] ;
- value = LES2H_SHORT (value) ;
- dest [count] = ((float) value) * normfact ;
- } ;
-} /* les2f_array */
-
-static inline void
-bes2f_array (short *src, int count, float *dest, float normfact)
-{ short value ;
-
- while (--count >= 0)
- { value = src [count] ;
- value = BES2H_SHORT (value) ;
- dest [count] = ((float) value) * normfact ;
- } ;
-} /* bes2f_array */
-
-static inline void
-let2f_array (tribyte *src, int count, float *dest, float normfact)
-{ unsigned char *ucptr ;
- int value ;
-
- ucptr = ((unsigned char*) src) + 3 * count ;
- while (--count >= 0)
- { ucptr -= 3 ;
- value = LET2H_INT_PTR (ucptr) ;
- dest [count] = ((float) value) * normfact ;
- } ;
-} /* let2f_array */
-
-static inline void
-bet2f_array (tribyte *src, int count, float *dest, float normfact)
-{ unsigned char *ucptr ;
- int value ;
-
- ucptr = ((unsigned char*) src) + 3 * count ;
- while (--count >= 0)
- { ucptr -= 3 ;
- value = BET2H_INT_PTR (ucptr) ;
- dest [count] = ((float) value) * normfact ;
- } ;
-} /* bet2f_array */
-
-static inline void
-lei2f_array (int *src, int count, float *dest, float normfact)
-{ int value ;
-
- while (--count >= 0)
- { value = src [count] ;
- value = LEI2H_INT (value) ;
- dest [count] = ((float) value) * normfact ;
- } ;
-} /* lei2f_array */
-
-static inline void
-bei2f_array (int *src, int count, float *dest, float normfact)
-{ int value ;
-
- while (--count >= 0)
- { value = src [count] ;
- value = BEI2H_INT (value) ;
- dest [count] = ((float) value) * normfact ;
- } ;
-} /* bei2f_array */
-
-/*--------------------------------------------------------------------------
-*/
-
-static inline void
-sc2d_array (signed char *src, int count, double *dest, double normfact)
-{ while (--count >= 0)
- dest [count] = ((double) src [count]) * normfact ;
-} /* sc2d_array */
-
-static inline void
-uc2d_array (unsigned char *src, int count, double *dest, double normfact)
-{ while (--count >= 0)
- dest [count] = (((int) src [count]) - 128) * normfact ;
-} /* uc2d_array */
-
-static inline void
-les2d_array (short *src, int count, double *dest, double normfact)
-{ short value ;
-
- while (--count >= 0)
- { value = src [count] ;
- value = LES2H_SHORT (value) ;
- dest [count] = ((double) value) * normfact ;
- } ;
-} /* les2d_array */
-
-static inline void
-bes2d_array (short *src, int count, double *dest, double normfact)
-{ short value ;
-
- while (--count >= 0)
- { value = src [count] ;
- value = BES2H_SHORT (value) ;
- dest [count] = ((double) value) * normfact ;
- } ;
-} /* bes2d_array */
-
-static inline void
-let2d_array (tribyte *src, int count, double *dest, double normfact)
-{ unsigned char *ucptr ;
- int value ;
-
- ucptr = ((unsigned char*) src) + 3 * count ;
- while (--count >= 0)
- { ucptr -= 3 ;
- value = LET2H_INT_PTR (ucptr) ;
- dest [count] = ((double) value) * normfact ;
- } ;
-} /* let2d_array */
-
-static inline void
-bet2d_array (tribyte *src, int count, double *dest, double normfact)
-{ unsigned char *ucptr ;
- int value ;
-
- ucptr = ((unsigned char*) src) + 3 * count ;
- while (--count >= 0)
- { ucptr -= 3 ;
- value = (ucptr [0] << 24) | (ucptr [1] << 16) | (ucptr [2] << 8) ;
- dest [count] = ((double) value) * normfact ;
- } ;
-} /* bet2d_array */
-
-static inline void
-lei2d_array (int *src, int count, double *dest, double normfact)
-{ int value ;
-
- while (--count >= 0)
- { value = src [count] ;
- value = LEI2H_INT (value) ;
- dest [count] = ((double) value) * normfact ;
- } ;
-} /* lei2d_array */
-
-static inline void
-bei2d_array (int *src, int count, double *dest, double normfact)
-{ int value ;
-
- while (--count >= 0)
- { value = src [count] ;
- value = BEI2H_INT (value) ;
- dest [count] = ((double) value) * normfact ;
- } ;
-} /* bei2d_array */
-
-/*--------------------------------------------------------------------------
-*/
-
-static inline void
-s2sc_array (const short *src, signed char *dest, int count)
-{ while (--count >= 0)
- dest [count] = src [count] >> 8 ;
-} /* s2sc_array */
-
-static inline void
-s2uc_array (const short *src, unsigned char *dest, int count)
-{ while (--count >= 0)
- dest [count] = (src [count] >> 8) + 0x80 ;
-} /* s2uc_array */
-
-static inline void
-s2let_array (const short *src, tribyte *dest, int count)
-{ unsigned char *ucptr ;
-
- ucptr = ((unsigned char*) dest) + 3 * count ;
- while (--count >= 0)
- { ucptr -= 3 ;
- ucptr [0] = 0 ;
- ucptr [1] = src [count] ;
- ucptr [2] = src [count] >> 8 ;
- } ;
-} /* s2let_array */
-
-static inline void
-s2bet_array (const short *src, tribyte *dest, int count)
-{ unsigned char *ucptr ;
-
- ucptr = ((unsigned char*) dest) + 3 * count ;
- while (--count >= 0)
- { ucptr -= 3 ;
- ucptr [2] = 0 ;
- ucptr [1] = src [count] ;
- ucptr [0] = src [count] >> 8 ;
- } ;
-} /* s2bet_array */
-
-static inline void
-s2lei_array (const short *src, int *dest, int count)
-{ unsigned char *ucptr ;
-
- ucptr = ((unsigned char*) dest) + 4 * count ;
- while (--count >= 0)
- { ucptr -= 4 ;
- ucptr [0] = 0 ;
- ucptr [1] = 0 ;
- ucptr [2] = src [count] ;
- ucptr [3] = src [count] >> 8 ;
- } ;
-} /* s2lei_array */
-
-static inline void
-s2bei_array (const short *src, int *dest, int count)
-{ unsigned char *ucptr ;
-
- ucptr = ((unsigned char*) dest) + 4 * count ;
- while (--count >= 0)
- { ucptr -= 4 ;
- ucptr [0] = src [count] >> 8 ;
- ucptr [1] = src [count] ;
- ucptr [2] = 0 ;
- ucptr [3] = 0 ;
- } ;
-} /* s2bei_array */
-
-/*--------------------------------------------------------------------------
-*/
-
-static inline void
-i2sc_array (const int *src, signed char *dest, int count)
-{ while (--count >= 0)
- dest [count] = (src [count] >> 24) ;
-} /* i2sc_array */
-
-static inline void
-i2uc_array (const int *src, unsigned char *dest, int count)
-{ while (--count >= 0)
- dest [count] = ((src [count] >> 24) + 128) ;
-} /* i2uc_array */
-
-static inline void
-i2bes_array (const int *src, short *dest, int count)
-{ unsigned char *ucptr ;
-
- ucptr = ((unsigned char*) dest) + 2 * count ;
- while (--count >= 0)
- { ucptr -= 2 ;
- ucptr [0] = src [count] >> 24 ;
- ucptr [1] = src [count] >> 16 ;
- } ;
-} /* i2bes_array */
-
-static inline void
-i2les_array (const int *src, short *dest, int count)
-{ unsigned char *ucptr ;
-
- ucptr = ((unsigned char*) dest) + 2 * count ;
- while (--count >= 0)
- { ucptr -= 2 ;
- ucptr [0] = src [count] >> 16 ;
- ucptr [1] = src [count] >> 24 ;
- } ;
-} /* i2les_array */
-
-static inline void
-i2let_array (const int *src, tribyte *dest, int count)
-{ unsigned char *ucptr ;
- int value ;
-
- ucptr = ((unsigned char*) dest) + 3 * count ;
- while (--count >= 0)
- { ucptr -= 3 ;
- value = src [count] >> 8 ;
- ucptr [0] = value ;
- ucptr [1] = value >> 8 ;
- ucptr [2] = value >> 16 ;
- } ;
-} /* i2let_array */
-
-static inline void
-i2bet_array (const int *src, tribyte *dest, int count)
-{ unsigned char *ucptr ;
- int value ;
-
- ucptr = ((unsigned char*) dest) + 3 * count ;
- while (--count >= 0)
- { ucptr -= 3 ;
- value = src [count] >> 8 ;
- ucptr [2] = value ;
- ucptr [1] = value >> 8 ;
- ucptr [0] = value >> 16 ;
- } ;
-} /* i2bet_array */
-
-/*===============================================================================================
-*/
-
-static sf_count_t
-pcm_read_sc2s (SF_PRIVATE *psf, short *ptr, sf_count_t len)
-{ int bufferlen, readcount ;
- sf_count_t total = 0 ;
-
- bufferlen = ARRAY_LEN (psf->u.scbuf) ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- readcount = psf_fread (psf->u.scbuf, sizeof (signed char), bufferlen, psf) ;
- sc2s_array (psf->u.scbuf, readcount, ptr + total) ;
- total += readcount ;
- if (readcount < bufferlen)
- break ;
- len -= readcount ;
- } ;
-
- return total ;
-} /* pcm_read_sc2s */
-
-static sf_count_t
-pcm_read_uc2s (SF_PRIVATE *psf, short *ptr, sf_count_t len)
-{ int bufferlen, readcount ;
- sf_count_t total = 0 ;
-
- bufferlen = ARRAY_LEN (psf->u.ucbuf) ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- readcount = psf_fread (psf->u.ucbuf, sizeof (unsigned char), bufferlen, psf) ;
- uc2s_array (psf->u.ucbuf, readcount, ptr + total) ;
- total += readcount ;
- if (readcount < bufferlen)
- break ;
- len -= readcount ;
- } ;
-
- return total ;
-} /* pcm_read_uc2s */
-
-static sf_count_t
-pcm_read_bes2s (SF_PRIVATE *psf, short *ptr, sf_count_t len)
-{ int total ;
-
- total = psf_fread (ptr, sizeof (short), len, psf) ;
- if (CPU_IS_LITTLE_ENDIAN)
- endswap_short_array (ptr, len) ;
-
- return total ;
-} /* pcm_read_bes2s */
-
-static sf_count_t
-pcm_read_les2s (SF_PRIVATE *psf, short *ptr, sf_count_t len)
-{ int total ;
-
- total = psf_fread (ptr, sizeof (short), len, psf) ;
- if (CPU_IS_BIG_ENDIAN)
- endswap_short_array (ptr, len) ;
-
- return total ;
-} /* pcm_read_les2s */
-
-static sf_count_t
-pcm_read_bet2s (SF_PRIVATE *psf, short *ptr, sf_count_t len)
-{ int bufferlen, readcount ;
- sf_count_t total = 0 ;
-
- bufferlen = sizeof (psf->u.ucbuf) / SIZEOF_TRIBYTE ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- readcount = psf_fread (psf->u.ucbuf, SIZEOF_TRIBYTE, bufferlen, psf) ;
- bet2s_array ((tribyte*) (psf->u.ucbuf), readcount, ptr + total) ;
- total += readcount ;
- if (readcount < bufferlen)
- break ;
- len -= readcount ;
- } ;
-
- return total ;
-} /* pcm_read_bet2s */
-
-static sf_count_t
-pcm_read_let2s (SF_PRIVATE *psf, short *ptr, sf_count_t len)
-{ int bufferlen, readcount ;
- sf_count_t total = 0 ;
-
- bufferlen = sizeof (psf->u.ucbuf) / SIZEOF_TRIBYTE ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- readcount = psf_fread (psf->u.ucbuf, SIZEOF_TRIBYTE, bufferlen, psf) ;
- let2s_array ((tribyte*) (psf->u.ucbuf), readcount, ptr + total) ;
- total += readcount ;
- if (readcount < bufferlen)
- break ;
- len -= readcount ;
- } ;
-
- return total ;
-} /* pcm_read_let2s */
-
-static sf_count_t
-pcm_read_bei2s (SF_PRIVATE *psf, short *ptr, sf_count_t len)
-{ int bufferlen, readcount ;
- sf_count_t total = 0 ;
-
- bufferlen = ARRAY_LEN (psf->u.ibuf) ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- readcount = psf_fread (psf->u.ibuf, sizeof (int), bufferlen, psf) ;
- bei2s_array (psf->u.ibuf, readcount, ptr + total) ;
- total += readcount ;
- if (readcount < bufferlen)
- break ;
- len -= readcount ;
- } ;
-
- return total ;
-} /* pcm_read_bei2s */
-
-static sf_count_t
-pcm_read_lei2s (SF_PRIVATE *psf, short *ptr, sf_count_t len)
-{ int bufferlen, readcount ;
- sf_count_t total = 0 ;
-
- bufferlen = ARRAY_LEN (psf->u.ibuf) ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- readcount = psf_fread (psf->u.ibuf, sizeof (int), bufferlen, psf) ;
- lei2s_array (psf->u.ibuf, readcount, ptr + total) ;
- total += readcount ;
- if (readcount < bufferlen)
- break ;
- len -= readcount ;
- } ;
-
- return total ;
-} /* pcm_read_lei2s */
-
-/*-----------------------------------------------------------------------------------------------
-*/
-
-static sf_count_t
-pcm_read_sc2i (SF_PRIVATE *psf, int *ptr, sf_count_t len)
-{ int bufferlen, readcount ;
- sf_count_t total = 0 ;
-
- bufferlen = ARRAY_LEN (psf->u.scbuf) ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- readcount = psf_fread (psf->u.scbuf, sizeof (signed char), bufferlen, psf) ;
- sc2i_array (psf->u.scbuf, readcount, ptr + total) ;
- total += readcount ;
- if (readcount < bufferlen)
- break ;
- len -= readcount ;
- } ;
-
- return total ;
-} /* pcm_read_sc2i */
-
-static sf_count_t
-pcm_read_uc2i (SF_PRIVATE *psf, int *ptr, sf_count_t len)
-{ int bufferlen, readcount ;
- sf_count_t total = 0 ;
-
- bufferlen = ARRAY_LEN (psf->u.ucbuf) ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- readcount = psf_fread (psf->u.ucbuf, sizeof (unsigned char), bufferlen, psf) ;
- uc2i_array (psf->u.ucbuf, readcount, ptr + total) ;
- total += readcount ;
- if (readcount < bufferlen)
- break ;
- len -= readcount ;
- } ;
-
- return total ;
-} /* pcm_read_uc2i */
-
-static sf_count_t
-pcm_read_bes2i (SF_PRIVATE *psf, int *ptr, sf_count_t len)
-{ int bufferlen, readcount ;
- sf_count_t total = 0 ;
-
- bufferlen = ARRAY_LEN (psf->u.sbuf) ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- readcount = psf_fread (psf->u.sbuf, sizeof (short), bufferlen, psf) ;
- bes2i_array (psf->u.sbuf, readcount, ptr + total) ;
- total += readcount ;
- if (readcount < bufferlen)
- break ;
- len -= readcount ;
- } ;
-
- return total ;
-} /* pcm_read_bes2i */
-
-static sf_count_t
-pcm_read_les2i (SF_PRIVATE *psf, int *ptr, sf_count_t len)
-{ int bufferlen, readcount ;
- sf_count_t total = 0 ;
-
- bufferlen = ARRAY_LEN (psf->u.sbuf) ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- readcount = psf_fread (psf->u.sbuf, sizeof (short), bufferlen, psf) ;
- les2i_array (psf->u.sbuf, readcount, ptr + total) ;
- total += readcount ;
- if (readcount < bufferlen)
- break ;
- len -= readcount ;
- } ;
-
- return total ;
-} /* pcm_read_les2i */
-
-static sf_count_t
-pcm_read_bet2i (SF_PRIVATE *psf, int *ptr, sf_count_t len)
-{ int bufferlen, readcount ;
- sf_count_t total = 0 ;
-
- bufferlen = sizeof (psf->u.ucbuf) / SIZEOF_TRIBYTE ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- readcount = psf_fread (psf->u.ucbuf, SIZEOF_TRIBYTE, bufferlen, psf) ;
- bet2i_array ((tribyte*) (psf->u.ucbuf), readcount, ptr + total) ;
- total += readcount ;
- if (readcount < bufferlen)
- break ;
- len -= readcount ;
- } ;
-
- return total ;
-} /* pcm_read_bet2i */
-
-static sf_count_t
-pcm_read_let2i (SF_PRIVATE *psf, int *ptr, sf_count_t len)
-{ int bufferlen, readcount ;
- sf_count_t total = 0 ;
-
- bufferlen = sizeof (psf->u.ucbuf) / SIZEOF_TRIBYTE ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- readcount = psf_fread (psf->u.ucbuf, SIZEOF_TRIBYTE, bufferlen, psf) ;
- let2i_array ((tribyte*) (psf->u.ucbuf), readcount, ptr + total) ;
- total += readcount ;
- if (readcount < bufferlen)
- break ;
- len -= readcount ;
- } ;
-
- return total ;
-} /* pcm_read_let2i */
-
-static sf_count_t
-pcm_read_bei2i (SF_PRIVATE *psf, int *ptr, sf_count_t len)
-{ int total ;
-
- total = psf_fread (ptr, sizeof (int), len, psf) ;
- if (CPU_IS_LITTLE_ENDIAN)
- endswap_int_array (ptr, len) ;
-
- return total ;
-} /* pcm_read_bei2i */
-
-static sf_count_t
-pcm_read_lei2i (SF_PRIVATE *psf, int *ptr, sf_count_t len)
-{ int total ;
-
- total = psf_fread (ptr, sizeof (int), len, psf) ;
- if (CPU_IS_BIG_ENDIAN)
- endswap_int_array (ptr, len) ;
-
- return total ;
-} /* pcm_read_lei2i */
-
-/*-----------------------------------------------------------------------------------------------
-*/
-
-static sf_count_t
-pcm_read_sc2f (SF_PRIVATE *psf, float *ptr, sf_count_t len)
-{ int bufferlen, readcount ;
- sf_count_t total = 0 ;
- float normfact ;
-
- normfact = (psf->norm_float == SF_TRUE) ? 1.0 / ((float) 0x80) : 1.0 ;
-
- bufferlen = ARRAY_LEN (psf->u.scbuf) ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- readcount = psf_fread (psf->u.scbuf, sizeof (signed char), bufferlen, psf) ;
- sc2f_array (psf->u.scbuf, readcount, ptr + total, normfact) ;
- total += readcount ;
- if (readcount < bufferlen)
- break ;
- len -= readcount ;
- } ;
-
- return total ;
-} /* pcm_read_sc2f */
-
-static sf_count_t
-pcm_read_uc2f (SF_PRIVATE *psf, float *ptr, sf_count_t len)
-{ int bufferlen, readcount ;
- sf_count_t total = 0 ;
- float normfact ;
-
- normfact = (psf->norm_float == SF_TRUE) ? 1.0 / ((float) 0x80) : 1.0 ;
-
- bufferlen = ARRAY_LEN (psf->u.ucbuf) ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- readcount = psf_fread (psf->u.ucbuf, sizeof (unsigned char), bufferlen, psf) ;
- uc2f_array (psf->u.ucbuf, readcount, ptr + total, normfact) ;
- total += readcount ;
- if (readcount < bufferlen)
- break ;
- len -= readcount ;
- } ;
-
- return total ;
-} /* pcm_read_uc2f */
-
-static sf_count_t
-pcm_read_bes2f (SF_PRIVATE *psf, float *ptr, sf_count_t len)
-{ int bufferlen, readcount ;
- sf_count_t total = 0 ;
- float normfact ;
-
- normfact = (psf->norm_float == SF_TRUE) ? 1.0 / ((float) 0x8000) : 1.0 ;
-
- bufferlen = ARRAY_LEN (psf->u.sbuf) ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- readcount = psf_fread (psf->u.sbuf, sizeof (short), bufferlen, psf) ;
- bes2f_array (psf->u.sbuf, readcount, ptr + total, normfact) ;
- total += readcount ;
- if (readcount < bufferlen)
- break ;
- len -= readcount ;
- } ;
-
- return total ;
-} /* pcm_read_bes2f */
-
-static sf_count_t
-pcm_read_les2f (SF_PRIVATE *psf, float *ptr, sf_count_t len)
-{ int bufferlen, readcount ;
- sf_count_t total = 0 ;
- float normfact ;
-
- normfact = (psf->norm_float == SF_TRUE) ? 1.0 / ((float) 0x8000) : 1.0 ;
-
- bufferlen = ARRAY_LEN (psf->u.sbuf) ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- readcount = psf_fread (psf->u.sbuf, sizeof (short), bufferlen, psf) ;
- les2f_array (psf->u.sbuf, readcount, ptr + total, normfact) ;
- total += readcount ;
- if (readcount < bufferlen)
- break ;
- len -= readcount ;
- } ;
-
- return total ;
-} /* pcm_read_les2f */
-
-static sf_count_t
-pcm_read_bet2f (SF_PRIVATE *psf, float *ptr, sf_count_t len)
-{ int bufferlen, readcount ;
- sf_count_t total = 0 ;
- float normfact ;
-
- /* Special normfactor because tribyte value is read into an int. */
- normfact = (psf->norm_float == SF_TRUE) ? 1.0 / ((float) 0x80000000) : 1.0 / 256.0 ;
-
- bufferlen = sizeof (psf->u.ucbuf) / SIZEOF_TRIBYTE ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- readcount = psf_fread (psf->u.ucbuf, SIZEOF_TRIBYTE, bufferlen, psf) ;
- bet2f_array ((tribyte*) (psf->u.ucbuf), readcount, ptr + total, normfact) ;
- total += readcount ;
- if (readcount < bufferlen)
- break ;
- len -= readcount ;
- } ;
-
- return total ;
-} /* pcm_read_bet2f */
-
-static sf_count_t
-pcm_read_let2f (SF_PRIVATE *psf, float *ptr, sf_count_t len)
-{ int bufferlen, readcount ;
- sf_count_t total = 0 ;
- float normfact ;
-
- /* Special normfactor because tribyte value is read into an int. */
- normfact = (psf->norm_float == SF_TRUE) ? 1.0 / ((float) 0x80000000) : 1.0 / 256.0 ;
-
- bufferlen = sizeof (psf->u.ucbuf) / SIZEOF_TRIBYTE ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- readcount = psf_fread (psf->u.ucbuf, SIZEOF_TRIBYTE, bufferlen, psf) ;
- let2f_array ((tribyte*) (psf->u.ucbuf), readcount, ptr + total, normfact) ;
- total += readcount ;
- if (readcount < bufferlen)
- break ;
- len -= readcount ;
- } ;
-
- return total ;
-} /* pcm_read_let2f */
-
-static sf_count_t
-pcm_read_bei2f (SF_PRIVATE *psf, float *ptr, sf_count_t len)
-{ int bufferlen, readcount ;
- sf_count_t total = 0 ;
- float normfact ;
-
- normfact = (psf->norm_float == SF_TRUE) ? 1.0 / ((float) 0x80000000) : 1.0 ;
-
- bufferlen = ARRAY_LEN (psf->u.ibuf) ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- readcount = psf_fread (psf->u.ibuf, sizeof (int), bufferlen, psf) ;
- bei2f_array (psf->u.ibuf, readcount, ptr + total, normfact) ;
- total += readcount ;
- if (readcount < bufferlen)
- break ;
- len -= readcount ;
- } ;
-
- return total ;
-} /* pcm_read_bei2f */
-
-static sf_count_t
-pcm_read_lei2f (SF_PRIVATE *psf, float *ptr, sf_count_t len)
-{ int bufferlen, readcount ;
- sf_count_t total = 0 ;
- float normfact ;
-
- normfact = (psf->norm_float == SF_TRUE) ? 1.0 / ((float) 0x80000000) : 1.0 ;
-
- bufferlen = ARRAY_LEN (psf->u.ibuf) ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- readcount = psf_fread (psf->u.ibuf, sizeof (int), bufferlen, psf) ;
- lei2f_array (psf->u.ibuf, readcount, ptr + total, normfact) ;
- total += readcount ;
- if (readcount < bufferlen)
- break ;
- len -= readcount ;
- } ;
-
- return total ;
-} /* pcm_read_lei2f */
-
-/*-----------------------------------------------------------------------------------------------
-*/
-
-static sf_count_t
-pcm_read_sc2d (SF_PRIVATE *psf, double *ptr, sf_count_t len)
-{ int bufferlen, readcount ;
- sf_count_t total = 0 ;
- double normfact ;
-
- normfact = (psf->norm_double == SF_TRUE) ? 1.0 / ((double) 0x80) : 1.0 ;
-
- bufferlen = ARRAY_LEN (psf->u.scbuf) ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- readcount = psf_fread (psf->u.scbuf, sizeof (signed char), bufferlen, psf) ;
- sc2d_array (psf->u.scbuf, readcount, ptr + total, normfact) ;
- total += readcount ;
- if (readcount < bufferlen)
- break ;
- len -= readcount ;
- } ;
-
- return total ;
-} /* pcm_read_sc2d */
-
-static sf_count_t
-pcm_read_uc2d (SF_PRIVATE *psf, double *ptr, sf_count_t len)
-{ int bufferlen, readcount ;
- sf_count_t total = 0 ;
- double normfact ;
-
- normfact = (psf->norm_double == SF_TRUE) ? 1.0 / ((double) 0x80) : 1.0 ;
-
- bufferlen = ARRAY_LEN (psf->u.ucbuf) ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- readcount = psf_fread (psf->u.ucbuf, sizeof (unsigned char), bufferlen, psf) ;
- uc2d_array (psf->u.ucbuf, readcount, ptr + total, normfact) ;
- total += readcount ;
- if (readcount < bufferlen)
- break ;
- len -= readcount ;
- } ;
-
- return total ;
-} /* pcm_read_uc2d */
-
-static sf_count_t
-pcm_read_bes2d (SF_PRIVATE *psf, double *ptr, sf_count_t len)
-{ int bufferlen, readcount ;
- sf_count_t total = 0 ;
- double normfact ;
-
- normfact = (psf->norm_double == SF_TRUE) ? 1.0 / ((double) 0x8000) : 1.0 ;
-
- bufferlen = ARRAY_LEN (psf->u.sbuf) ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- readcount = psf_fread (psf->u.sbuf, sizeof (short), bufferlen, psf) ;
- bes2d_array (psf->u.sbuf, readcount, ptr + total, normfact) ;
- total += readcount ;
- if (readcount < bufferlen)
- break ;
- len -= readcount ;
- } ;
-
- return total ;
-} /* pcm_read_bes2d */
-
-static sf_count_t
-pcm_read_les2d (SF_PRIVATE *psf, double *ptr, sf_count_t len)
-{ int bufferlen, readcount ;
- sf_count_t total = 0 ;
- double normfact ;
-
- normfact = (psf->norm_double == SF_TRUE) ? 1.0 / ((double) 0x8000) : 1.0 ;
-
- bufferlen = ARRAY_LEN (psf->u.sbuf) ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- readcount = psf_fread (psf->u.sbuf, sizeof (short), bufferlen, psf) ;
- les2d_array (psf->u.sbuf, readcount, ptr + total, normfact) ;
- total += readcount ;
- if (readcount < bufferlen)
- break ;
- len -= readcount ;
- } ;
-
- return total ;
-} /* pcm_read_les2d */
-
-static sf_count_t
-pcm_read_bet2d (SF_PRIVATE *psf, double *ptr, sf_count_t len)
-{ int bufferlen, readcount ;
- sf_count_t total = 0 ;
- double normfact ;
-
- normfact = (psf->norm_double == SF_TRUE) ? 1.0 / ((double) 0x80000000) : 1.0 / 256.0 ;
-
- bufferlen = sizeof (psf->u.ucbuf) / SIZEOF_TRIBYTE ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- readcount = psf_fread (psf->u.ucbuf, SIZEOF_TRIBYTE, bufferlen, psf) ;
- bet2d_array ((tribyte*) (psf->u.ucbuf), readcount, ptr + total, normfact) ;
- total += readcount ;
- if (readcount < bufferlen)
- break ;
- len -= readcount ;
- } ;
-
- return total ;
-} /* pcm_read_bet2d */
-
-static sf_count_t
-pcm_read_let2d (SF_PRIVATE *psf, double *ptr, sf_count_t len)
-{ int bufferlen, readcount ;
- sf_count_t total = 0 ;
- double normfact ;
-
- /* Special normfactor because tribyte value is read into an int. */
- normfact = (psf->norm_double == SF_TRUE) ? 1.0 / ((double) 0x80000000) : 1.0 / 256.0 ;
-
- bufferlen = sizeof (psf->u.ucbuf) / SIZEOF_TRIBYTE ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- readcount = psf_fread (psf->u.ucbuf, SIZEOF_TRIBYTE, bufferlen, psf) ;
- let2d_array ((tribyte*) (psf->u.ucbuf), readcount, ptr + total, normfact) ;
- total += readcount ;
- if (readcount < bufferlen)
- break ;
- len -= readcount ;
- } ;
-
- return total ;
-} /* pcm_read_let2d */
-
-static sf_count_t
-pcm_read_bei2d (SF_PRIVATE *psf, double *ptr, sf_count_t len)
-{ int bufferlen, readcount ;
- sf_count_t total = 0 ;
- double normfact ;
-
- normfact = (psf->norm_double == SF_TRUE) ? 1.0 / ((double) 0x80000000) : 1.0 ;
-
- bufferlen = ARRAY_LEN (psf->u.ibuf) ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- readcount = psf_fread (psf->u.ibuf, sizeof (int), bufferlen, psf) ;
- bei2d_array (psf->u.ibuf, readcount, ptr + total, normfact) ;
- total += readcount ;
- if (readcount < bufferlen)
- break ;
- len -= readcount ;
- } ;
-
- return total ;
-} /* pcm_read_bei2d */
-
-static sf_count_t
-pcm_read_lei2d (SF_PRIVATE *psf, double *ptr, sf_count_t len)
-{ int bufferlen, readcount ;
- sf_count_t total = 0 ;
- double normfact ;
-
- normfact = (psf->norm_double == SF_TRUE) ? 1.0 / ((double) 0x80000000) : 1.0 ;
-
- bufferlen = ARRAY_LEN (psf->u.ibuf) ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- readcount = psf_fread (psf->u.ibuf, sizeof (int), bufferlen, psf) ;
- lei2d_array (psf->u.ibuf, readcount, ptr + total, normfact) ;
- total += readcount ;
- if (readcount < bufferlen)
- break ;
- len -= readcount ;
- } ;
-
- return total ;
-} /* pcm_read_lei2d */
-
-/*===============================================================================================
-**-----------------------------------------------------------------------------------------------
-**===============================================================================================
-*/
-
-static sf_count_t
-pcm_write_s2sc (SF_PRIVATE *psf, const short *ptr, sf_count_t len)
-{ int bufferlen, writecount ;
- sf_count_t total = 0 ;
-
- bufferlen = ARRAY_LEN (psf->u.scbuf) ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- s2sc_array (ptr + total, psf->u.scbuf, bufferlen) ;
- writecount = psf_fwrite (psf->u.scbuf, sizeof (signed char), bufferlen, psf) ;
- total += writecount ;
- if (writecount < bufferlen)
- break ;
- len -= writecount ;
- } ;
-
- return total ;
-} /* pcm_write_s2sc */
-
-static sf_count_t
-pcm_write_s2uc (SF_PRIVATE *psf, const short *ptr, sf_count_t len)
-{ int bufferlen, writecount ;
- sf_count_t total = 0 ;
-
- bufferlen = ARRAY_LEN (psf->u.ucbuf) ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- s2uc_array (ptr + total, psf->u.ucbuf, bufferlen) ;
- writecount = psf_fwrite (psf->u.ucbuf, sizeof (unsigned char), bufferlen, psf) ;
- total += writecount ;
- if (writecount < bufferlen)
- break ;
- len -= writecount ;
- } ;
-
- return total ;
-} /* pcm_write_s2uc */
-
-static sf_count_t
-pcm_write_s2bes (SF_PRIVATE *psf, const short *ptr, sf_count_t len)
-{ int bufferlen, writecount ;
- sf_count_t total = 0 ;
-
- if (CPU_IS_BIG_ENDIAN)
- return psf_fwrite (ptr, sizeof (short), len, psf) ;
- else
-
- bufferlen = ARRAY_LEN (psf->u.sbuf) ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- endswap_short_copy (psf->u.sbuf, ptr + total, bufferlen) ;
- writecount = psf_fwrite (psf->u.sbuf, sizeof (short), bufferlen, psf) ;
- total += writecount ;
- if (writecount < bufferlen)
- break ;
- len -= writecount ;
- } ;
-
- return total ;
-} /* pcm_write_s2bes */
-
-static sf_count_t
-pcm_write_s2les (SF_PRIVATE *psf, const short *ptr, sf_count_t len)
-{ int bufferlen, writecount ;
- sf_count_t total = 0 ;
-
- if (CPU_IS_LITTLE_ENDIAN)
- return psf_fwrite (ptr, sizeof (short), len, psf) ;
-
- bufferlen = ARRAY_LEN (psf->u.sbuf) ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- endswap_short_copy (psf->u.sbuf, ptr + total, bufferlen) ;
- writecount = psf_fwrite (psf->u.sbuf, sizeof (short), bufferlen, psf) ;
- total += writecount ;
- if (writecount < bufferlen)
- break ;
- len -= writecount ;
- } ;
-
- return total ;
-} /* pcm_write_s2les */
-
-static sf_count_t
-pcm_write_s2bet (SF_PRIVATE *psf, const short *ptr, sf_count_t len)
-{ int bufferlen, writecount ;
- sf_count_t total = 0 ;
-
- bufferlen = sizeof (psf->u.ucbuf) / SIZEOF_TRIBYTE ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- s2bet_array (ptr + total, (tribyte*) (psf->u.ucbuf), bufferlen) ;
- writecount = psf_fwrite (psf->u.ucbuf, SIZEOF_TRIBYTE, bufferlen, psf) ;
- total += writecount ;
- if (writecount < bufferlen)
- break ;
- len -= writecount ;
- } ;
-
- return total ;
-} /* pcm_write_s2bet */
-
-static sf_count_t
-pcm_write_s2let (SF_PRIVATE *psf, const short *ptr, sf_count_t len)
-{ int bufferlen, writecount ;
- sf_count_t total = 0 ;
-
- bufferlen = sizeof (psf->u.ucbuf) / SIZEOF_TRIBYTE ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- s2let_array (ptr + total, (tribyte*) (psf->u.ucbuf), bufferlen) ;
- writecount = psf_fwrite (psf->u.ucbuf, SIZEOF_TRIBYTE, bufferlen, psf) ;
- total += writecount ;
- if (writecount < bufferlen)
- break ;
- len -= writecount ;
- } ;
-
- return total ;
-} /* pcm_write_s2let */
-
-static sf_count_t
-pcm_write_s2bei (SF_PRIVATE *psf, const short *ptr, sf_count_t len)
-{ int bufferlen, writecount ;
- sf_count_t total = 0 ;
-
- bufferlen = ARRAY_LEN (psf->u.ibuf) ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- s2bei_array (ptr + total, psf->u.ibuf, bufferlen) ;
- writecount = psf_fwrite (psf->u.ibuf, sizeof (int), bufferlen, psf) ;
- total += writecount ;
- if (writecount < bufferlen)
- break ;
- len -= writecount ;
- } ;
-
- return total ;
-} /* pcm_write_s2bei */
-
-static sf_count_t
-pcm_write_s2lei (SF_PRIVATE *psf, const short *ptr, sf_count_t len)
-{ int bufferlen, writecount ;
- sf_count_t total = 0 ;
-
- bufferlen = ARRAY_LEN (psf->u.ibuf) ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- s2lei_array (ptr + total, psf->u.ibuf, bufferlen) ;
- writecount = psf_fwrite (psf->u.ibuf, sizeof (int), bufferlen, psf) ;
- total += writecount ;
- if (writecount < bufferlen)
- break ;
- len -= writecount ;
- } ;
-
- return total ;
-} /* pcm_write_s2lei */
-
-/*-----------------------------------------------------------------------------------------------
-*/
-
-static sf_count_t
-pcm_write_i2sc (SF_PRIVATE *psf, const int *ptr, sf_count_t len)
-{ int bufferlen, writecount ;
- sf_count_t total = 0 ;
-
- bufferlen = ARRAY_LEN (psf->u.scbuf) ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- i2sc_array (ptr + total, psf->u.scbuf, bufferlen) ;
- writecount = psf_fwrite (psf->u.scbuf, sizeof (signed char), bufferlen, psf) ;
- total += writecount ;
- if (writecount < bufferlen)
- break ;
- len -= writecount ;
- } ;
-
- return total ;
-} /* pcm_write_i2sc */
-
-static sf_count_t
-pcm_write_i2uc (SF_PRIVATE *psf, const int *ptr, sf_count_t len)
-{ int bufferlen, writecount ;
- sf_count_t total = 0 ;
-
- bufferlen = ARRAY_LEN (psf->u.ucbuf) ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- i2uc_array (ptr + total, psf->u.ucbuf, bufferlen) ;
- writecount = psf_fwrite (psf->u.ucbuf, sizeof (signed char), bufferlen, psf) ;
- total += writecount ;
- if (writecount < bufferlen)
- break ;
- len -= writecount ;
- } ;
-
- return total ;
-} /* pcm_write_i2uc */
-
-static sf_count_t
-pcm_write_i2bes (SF_PRIVATE *psf, const int *ptr, sf_count_t len)
-{ int bufferlen, writecount ;
- sf_count_t total = 0 ;
-
- bufferlen = ARRAY_LEN (psf->u.sbuf) ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- i2bes_array (ptr + total, psf->u.sbuf, bufferlen) ;
- writecount = psf_fwrite (psf->u.sbuf, sizeof (short), bufferlen, psf) ;
- total += writecount ;
- if (writecount < bufferlen)
- break ;
- len -= writecount ;
- } ;
-
- return total ;
-} /* pcm_write_i2bes */
-
-static sf_count_t
-pcm_write_i2les (SF_PRIVATE *psf, const int *ptr, sf_count_t len)
-{ int bufferlen, writecount ;
- sf_count_t total = 0 ;
-
- bufferlen = ARRAY_LEN (psf->u.sbuf) ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- i2les_array (ptr + total, psf->u.sbuf, bufferlen) ;
- writecount = psf_fwrite (psf->u.sbuf, sizeof (short), bufferlen, psf) ;
- total += writecount ;
- if (writecount < bufferlen)
- break ;
- len -= writecount ;
- } ;
-
- return total ;
-} /* pcm_write_i2les */
-
-static sf_count_t
-pcm_write_i2bet (SF_PRIVATE *psf, const int *ptr, sf_count_t len)
-{ int bufferlen, writecount ;
- sf_count_t total = 0 ;
-
- bufferlen = sizeof (psf->u.ucbuf) / SIZEOF_TRIBYTE ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- i2bet_array (ptr + total, (tribyte*) (psf->u.ucbuf), bufferlen) ;
- writecount = psf_fwrite (psf->u.ucbuf, SIZEOF_TRIBYTE, bufferlen, psf) ;
- total += writecount ;
- if (writecount < bufferlen)
- break ;
- len -= writecount ;
- } ;
-
- return total ;
-} /* pcm_write_i2bet */
-
-static sf_count_t
-pcm_write_i2let (SF_PRIVATE *psf, const int *ptr, sf_count_t len)
-{ int bufferlen, writecount ;
- sf_count_t total = 0 ;
-
- bufferlen = sizeof (psf->u.ucbuf) / SIZEOF_TRIBYTE ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- i2let_array (ptr + total, (tribyte*) (psf->u.ucbuf), bufferlen) ;
- writecount = psf_fwrite (psf->u.ucbuf, SIZEOF_TRIBYTE, bufferlen, psf) ;
- total += writecount ;
- if (writecount < bufferlen)
- break ;
- len -= writecount ;
- } ;
-
- return total ;
-} /* pcm_write_i2les */
-
-static sf_count_t
-pcm_write_i2bei (SF_PRIVATE *psf, const int *ptr, sf_count_t len)
-{ int bufferlen, writecount ;
- sf_count_t total = 0 ;
-
- if (CPU_IS_BIG_ENDIAN)
- return psf_fwrite (ptr, sizeof (int), len, psf) ;
-
- bufferlen = ARRAY_LEN (psf->u.ibuf) ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- endswap_int_copy (psf->u.ibuf, ptr + total, bufferlen) ;
- writecount = psf_fwrite (psf->u.ibuf, sizeof (int), bufferlen, psf) ;
- total += writecount ;
- if (writecount < bufferlen)
- break ;
- len -= writecount ;
- } ;
-
- return total ;
-} /* pcm_write_i2bei */
-
-static sf_count_t
-pcm_write_i2lei (SF_PRIVATE *psf, const int *ptr, sf_count_t len)
-{ int bufferlen, writecount ;
- sf_count_t total = 0 ;
-
- if (CPU_IS_LITTLE_ENDIAN)
- return psf_fwrite (ptr, sizeof (int), len, psf) ;
-
- bufferlen = ARRAY_LEN (psf->u.ibuf) ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- endswap_int_copy (psf->u.ibuf, ptr + total, bufferlen) ;
- writecount = psf_fwrite (psf->u.ibuf, sizeof (int), bufferlen, psf) ;
- total += writecount ;
- if (writecount < bufferlen)
- break ;
- len -= writecount ;
- } ;
-
- return total ;
-} /* pcm_write_i2lei */
-
-/*------------------------------------------------------------------------------
-**==============================================================================
-**------------------------------------------------------------------------------
-*/
-
-static void
-f2sc_array (const float *src, signed char *dest, int count, int normalize)
-{ float normfact ;
-
- normfact = normalize ? (1.0 * 0x7F) : 1.0 ;
-
- while (--count >= 0)
- { dest [count] = lrintf (src [count] * normfact) ;
- } ;
-} /* f2sc_array */
-
-static void
-f2sc_clip_array (const float *src, signed char *dest, int count, int normalize)
-{ float normfact, scaled_value ;
-
- normfact = normalize ? (8.0 * 0x10000000) : (1.0 * 0x1000000) ;
-
- while (--count >= 0)
- { scaled_value = src [count] * normfact ;
- if (CPU_CLIPS_POSITIVE == 0 && scaled_value >= (1.0 * 0x7FFFFFFF))
- { dest [count] = 127 ;
- continue ;
- } ;
- if (CPU_CLIPS_NEGATIVE == 0 && scaled_value <= (-8.0 * 0x10000000))
- { dest [count] = -128 ;
- continue ;
- } ;
-
- dest [count] = lrintf (scaled_value) >> 24 ;
- } ;
-} /* f2sc_clip_array */
-
-static sf_count_t
-pcm_write_f2sc (SF_PRIVATE *psf, const float *ptr, sf_count_t len)
-{ void (*convert) (const float *, signed char *, int, int) ;
- int bufferlen, writecount ;
- sf_count_t total = 0 ;
-
- convert = (psf->add_clipping) ? f2sc_clip_array : f2sc_array ;
- bufferlen = ARRAY_LEN (psf->u.scbuf) ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- convert (ptr + total, psf->u.scbuf, bufferlen, psf->norm_float) ;
- writecount = psf_fwrite (psf->u.scbuf, sizeof (signed char), bufferlen, psf) ;
- total += writecount ;
- if (writecount < bufferlen)
- break ;
- len -= writecount ;
- } ;
-
- return total ;
-} /* pcm_write_f2sc */
-
-/*==============================================================================
-*/
-
-static void
-f2uc_array (const float *src, unsigned char *dest, int count, int normalize)
-{ float normfact ;
-
- normfact = normalize ? (1.0 * 0x7F) : 1.0 ;
-
- while (--count >= 0)
- { dest [count] = lrintf (src [count] * normfact) + 128 ;
- } ;
-} /* f2uc_array */
-
-static void
-f2uc_clip_array (const float *src, unsigned char *dest, int count, int normalize)
-{ float normfact, scaled_value ;
-
- normfact = normalize ? (8.0 * 0x10000000) : (1.0 * 0x1000000) ;
-
- while (--count >= 0)
- { scaled_value = src [count] * normfact ;
- if (CPU_CLIPS_POSITIVE == 0 && scaled_value >= (1.0 * 0x7FFFFFFF))
- { dest [count] = 0xFF ;
- continue ;
- } ;
- if (CPU_CLIPS_NEGATIVE == 0 && scaled_value <= (-8.0 * 0x10000000))
- { dest [count] = 0 ;
- continue ;
- } ;
-
- dest [count] = (lrintf (scaled_value) >> 24) + 128 ;
- } ;
-} /* f2uc_clip_array */
-
-static sf_count_t
-pcm_write_f2uc (SF_PRIVATE *psf, const float *ptr, sf_count_t len)
-{ void (*convert) (const float *, unsigned char *, int, int) ;
- int bufferlen, writecount ;
- sf_count_t total = 0 ;
-
- convert = (psf->add_clipping) ? f2uc_clip_array : f2uc_array ;
- bufferlen = ARRAY_LEN (psf->u.ucbuf) ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- convert (ptr + total, psf->u.ucbuf, bufferlen, psf->norm_float) ;
- writecount = psf_fwrite (psf->u.ucbuf, sizeof (unsigned char), bufferlen, psf) ;
- total += writecount ;
- if (writecount < bufferlen)
- break ;
- len -= writecount ;
- } ;
-
- return total ;
-} /* pcm_write_f2uc */
-
-/*==============================================================================
-*/
-
-static void
-f2bes_array (const float *src, short *dest, int count, int normalize)
-{ unsigned char *ucptr ;
- float normfact ;
- short value ;
-
- normfact = normalize ? (1.0 * 0x7FFF) : 1.0 ;
- ucptr = ((unsigned char*) dest) + 2 * count ;
-
- while (--count >= 0)
- { ucptr -= 2 ;
- value = lrintf (src [count] * normfact) ;
- ucptr [1] = value ;
- ucptr [0] = value >> 8 ;
- } ;
-} /* f2bes_array */
-
-static void
-f2bes_clip_array (const float *src, short *dest, int count, int normalize)
-{ unsigned char *ucptr ;
- float normfact, scaled_value ;
- int value ;
-
- normfact = normalize ? (8.0 * 0x10000000) : (1.0 * 0x10000) ;
- ucptr = ((unsigned char*) dest) + 2 * count ;
-
- while (--count >= 0)
- { ucptr -= 2 ;
- scaled_value = src [count] * normfact ;
- if (CPU_CLIPS_POSITIVE == 0 && scaled_value >= (1.0 * 0x7FFFFFFF))
- { ucptr [1] = 0xFF ;
- ucptr [0] = 0x7F ;
- continue ;
- } ;
- if (CPU_CLIPS_NEGATIVE == 0 && scaled_value <= (-8.0 * 0x10000000))
- { ucptr [1] = 0x00 ;
- ucptr [0] = 0x80 ;
- continue ;
- } ;
-
- value = lrintf (scaled_value) ;
- ucptr [1] = value >> 16 ;
- ucptr [0] = value >> 24 ;
- } ;
-} /* f2bes_clip_array */
-
-static sf_count_t
-pcm_write_f2bes (SF_PRIVATE *psf, const float *ptr, sf_count_t len)
-{ void (*convert) (const float *, short *t, int, int) ;
- int bufferlen, writecount ;
- sf_count_t total = 0 ;
-
- convert = (psf->add_clipping) ? f2bes_clip_array : f2bes_array ;
- bufferlen = ARRAY_LEN (psf->u.sbuf) ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- convert (ptr + total, psf->u.sbuf, bufferlen, psf->norm_float) ;
- writecount = psf_fwrite (psf->u.sbuf, sizeof (short), bufferlen, psf) ;
- total += writecount ;
- if (writecount < bufferlen)
- break ;
- len -= writecount ;
- } ;
-
- return total ;
-} /* pcm_write_f2bes */
-
-/*==============================================================================
-*/
-
-static void
-f2les_array (const float *src, short *dest, int count, int normalize)
-{ unsigned char *ucptr ;
- float normfact ;
- int value ;
-
- normfact = normalize ? (1.0 * 0x7FFF) : 1.0 ;
- ucptr = ((unsigned char*) dest) + 2 * count ;
-
- while (--count >= 0)
- { ucptr -= 2 ;
- value = lrintf (src [count] * normfact) ;
- ucptr [0] = value ;
- ucptr [1] = value >> 8 ;
- } ;
-} /* f2les_array */
-
-static void
-f2les_clip_array (const float *src, short *dest, int count, int normalize)
-{ unsigned char *ucptr ;
- float normfact, scaled_value ;
- int value ;
-
- normfact = normalize ? (8.0 * 0x10000000) : (1.0 * 0x10000) ;
- ucptr = ((unsigned char*) dest) + 2 * count ;
-
- while (--count >= 0)
- { ucptr -= 2 ;
- scaled_value = src [count] * normfact ;
- if (CPU_CLIPS_POSITIVE == 0 && scaled_value >= (1.0 * 0x7FFFFFFF))
- { ucptr [0] = 0xFF ;
- ucptr [1] = 0x7F ;
- continue ;
- } ;
- if (CPU_CLIPS_NEGATIVE == 0 && scaled_value <= (-8.0 * 0x10000000))
- { ucptr [0] = 0x00 ;
- ucptr [1] = 0x80 ;
- continue ;
- } ;
-
- value = lrintf (scaled_value) ;
- ucptr [0] = value >> 16 ;
- ucptr [1] = value >> 24 ;
- } ;
-} /* f2les_clip_array */
-
-static sf_count_t
-pcm_write_f2les (SF_PRIVATE *psf, const float *ptr, sf_count_t len)
-{ void (*convert) (const float *, short *t, int, int) ;
- int bufferlen, writecount ;
- sf_count_t total = 0 ;
-
- convert = (psf->add_clipping) ? f2les_clip_array : f2les_array ;
- bufferlen = ARRAY_LEN (psf->u.sbuf) ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- convert (ptr + total, psf->u.sbuf, bufferlen, psf->norm_float) ;
- writecount = psf_fwrite (psf->u.sbuf, sizeof (short), bufferlen, psf) ;
- total += writecount ;
- if (writecount < bufferlen)
- break ;
- len -= writecount ;
- } ;
-
- return total ;
-} /* pcm_write_f2les */
-
-/*==============================================================================
-*/
-
-static void
-f2let_array (const float *src, tribyte *dest, int count, int normalize)
-{ unsigned char *ucptr ;
- float normfact ;
- int value ;
-
- normfact = normalize ? (1.0 * 0x7FFFFF) : 1.0 ;
- ucptr = ((unsigned char*) dest) + 3 * count ;
-
- while (--count >= 0)
- { ucptr -= 3 ;
- value = lrintf (src [count] * normfact) ;
- ucptr [0] = value ;
- ucptr [1] = value >> 8 ;
- ucptr [2] = value >> 16 ;
- } ;
-} /* f2let_array */
-
-static void
-f2let_clip_array (const float *src, tribyte *dest, int count, int normalize)
-{ unsigned char *ucptr ;
- float normfact, scaled_value ;
- int value ;
-
- normfact = normalize ? (8.0 * 0x10000000) : (1.0 * 0x100) ;
- ucptr = ((unsigned char*) dest) + 3 * count ;
-
- while (--count >= 0)
- { ucptr -= 3 ;
- scaled_value = src [count] * normfact ;
- if (CPU_CLIPS_POSITIVE == 0 && scaled_value >= (1.0 * 0x7FFFFFFF))
- { ucptr [0] = 0xFF ;
- ucptr [1] = 0xFF ;
- ucptr [2] = 0x7F ;
- continue ;
- } ;
- if (CPU_CLIPS_NEGATIVE == 0 && scaled_value <= (-8.0 * 0x10000000))
- { ucptr [0] = 0x00 ;
- ucptr [1] = 0x00 ;
- ucptr [2] = 0x80 ;
- continue ;
- } ;
-
- value = lrintf (scaled_value) ;
- ucptr [0] = value >> 8 ;
- ucptr [1] = value >> 16 ;
- ucptr [2] = value >> 24 ;
- } ;
-} /* f2let_clip_array */
-
-static sf_count_t
-pcm_write_f2let (SF_PRIVATE *psf, const float *ptr, sf_count_t len)
-{ void (*convert) (const float *, tribyte *, int, int) ;
- int bufferlen, writecount ;
- sf_count_t total = 0 ;
-
- convert = (psf->add_clipping) ? f2let_clip_array : f2let_array ;
- bufferlen = sizeof (psf->u.ucbuf) / SIZEOF_TRIBYTE ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- convert (ptr + total, (tribyte*) (psf->u.ucbuf), bufferlen, psf->norm_float) ;
- writecount = psf_fwrite (psf->u.ucbuf, SIZEOF_TRIBYTE, bufferlen, psf) ;
- total += writecount ;
- if (writecount < bufferlen)
- break ;
- len -= writecount ;
- } ;
-
- return total ;
-} /* pcm_write_f2let */
-
-/*==============================================================================
-*/
-
-static void
-f2bet_array (const float *src, tribyte *dest, int count, int normalize)
-{ unsigned char *ucptr ;
- float normfact ;
- int value ;
-
- normfact = normalize ? (1.0 * 0x7FFFFF) : 1.0 ;
- ucptr = ((unsigned char*) dest) + 3 * count ;
-
- while (--count >= 0)
- { ucptr -= 3 ;
- value = lrintf (src [count] * normfact) ;
- ucptr [0] = value >> 16 ;
- ucptr [1] = value >> 8 ;
- ucptr [2] = value ;
- } ;
-} /* f2bet_array */
-
-static void
-f2bet_clip_array (const float *src, tribyte *dest, int count, int normalize)
-{ unsigned char *ucptr ;
- float normfact, scaled_value ;
- int value ;
-
- normfact = normalize ? (8.0 * 0x10000000) : (1.0 * 0x100) ;
- ucptr = ((unsigned char*) dest) + 3 * count ;
-
- while (--count >= 0)
- { ucptr -= 3 ;
- scaled_value = src [count] * normfact ;
- if (CPU_CLIPS_POSITIVE == 0 && scaled_value >= (1.0 * 0x7FFFFFFF))
- { ucptr [0] = 0x7F ;
- ucptr [1] = 0xFF ;
- ucptr [2] = 0xFF ;
- continue ;
- } ;
- if (CPU_CLIPS_NEGATIVE == 0 && scaled_value <= (-8.0 * 0x10000000))
- { ucptr [0] = 0x80 ;
- ucptr [1] = 0x00 ;
- ucptr [2] = 0x00 ;
- continue ;
- } ;
-
- value = lrint (scaled_value) ;
- ucptr [0] = value >> 24 ;
- ucptr [1] = value >> 16 ;
- ucptr [2] = value >> 8 ;
- } ;
-} /* f2bet_clip_array */
-
-static sf_count_t
-pcm_write_f2bet (SF_PRIVATE *psf, const float *ptr, sf_count_t len)
-{ void (*convert) (const float *, tribyte *, int, int) ;
- int bufferlen, writecount ;
- sf_count_t total = 0 ;
-
- convert = (psf->add_clipping) ? f2bet_clip_array : f2bet_array ;
- bufferlen = sizeof (psf->u.ucbuf) / SIZEOF_TRIBYTE ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- convert (ptr + total, (tribyte*) (psf->u.ucbuf), bufferlen, psf->norm_float) ;
- writecount = psf_fwrite (psf->u.ucbuf, SIZEOF_TRIBYTE, bufferlen, psf) ;
- total += writecount ;
- if (writecount < bufferlen)
- break ;
- len -= writecount ;
- } ;
-
- return total ;
-} /* pcm_write_f2bet */
-
-/*==============================================================================
-*/
-
-static void
-f2bei_array (const float *src, int *dest, int count, int normalize)
-{ unsigned char *ucptr ;
- float normfact ;
- int value ;
-
- normfact = normalize ? (1.0 * 0x7FFFFFFF) : 1.0 ;
- ucptr = ((unsigned char*) dest) + 4 * count ;
- while (--count >= 0)
- { ucptr -= 4 ;
- value = lrintf (src [count] * normfact) ;
- ucptr [0] = value >> 24 ;
- ucptr [1] = value >> 16 ;
- ucptr [2] = value >> 8 ;
- ucptr [3] = value ;
- } ;
-} /* f2bei_array */
-
-static void
-f2bei_clip_array (const float *src, int *dest, int count, int normalize)
-{ unsigned char *ucptr ;
- float normfact, scaled_value ;
- int value ;
-
- normfact = normalize ? (8.0 * 0x10000000) : 1.0 ;
- ucptr = ((unsigned char*) dest) + 4 * count ;
-
- while (--count >= 0)
- { ucptr -= 4 ;
- scaled_value = src [count] * normfact ;
- if (CPU_CLIPS_POSITIVE == 0 && scaled_value >= 1.0 * 0x7FFFFFFF)
- { ucptr [0] = 0x7F ;
- ucptr [1] = 0xFF ;
- ucptr [2] = 0xFF ;
- ucptr [3] = 0xFF ;
- continue ;
- } ;
- if (CPU_CLIPS_NEGATIVE == 0 && scaled_value <= (-8.0 * 0x10000000))
- { ucptr [0] = 0x80 ;
- ucptr [1] = 0x00 ;
- ucptr [2] = 0x00 ;
- ucptr [3] = 0x00 ;
- continue ;
- } ;
-
- value = lrintf (scaled_value) ;
- ucptr [0] = value >> 24 ;
- ucptr [1] = value >> 16 ;
- ucptr [2] = value >> 8 ;
- ucptr [3] = value ;
- } ;
-} /* f2bei_clip_array */
-
-static sf_count_t
-pcm_write_f2bei (SF_PRIVATE *psf, const float *ptr, sf_count_t len)
-{ void (*convert) (const float *, int *, int, int) ;
- int bufferlen, writecount ;
- sf_count_t total = 0 ;
-
- convert = (psf->add_clipping) ? f2bei_clip_array : f2bei_array ;
- bufferlen = ARRAY_LEN (psf->u.ibuf) ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- convert (ptr + total, psf->u.ibuf, bufferlen, psf->norm_float) ;
- writecount = psf_fwrite (psf->u.ibuf, sizeof (int), bufferlen, psf) ;
- total += writecount ;
- if (writecount < bufferlen)
- break ;
- len -= writecount ;
- } ;
-
- return total ;
-} /* pcm_write_f2bei */
-
-/*==============================================================================
-*/
-
-static void
-f2lei_array (const float *src, int *dest, int count, int normalize)
-{ unsigned char *ucptr ;
- float normfact ;
- int value ;
-
- normfact = normalize ? (1.0 * 0x7FFFFFFF) : 1.0 ;
- ucptr = ((unsigned char*) dest) + 4 * count ;
-
- while (--count >= 0)
- { ucptr -= 4 ;
- value = lrintf (src [count] * normfact) ;
- ucptr [0] = value ;
- ucptr [1] = value >> 8 ;
- ucptr [2] = value >> 16 ;
- ucptr [3] = value >> 24 ;
- } ;
-} /* f2lei_array */
-
-static void
-f2lei_clip_array (const float *src, int *dest, int count, int normalize)
-{ unsigned char *ucptr ;
- float normfact, scaled_value ;
- int value ;
-
- normfact = normalize ? (8.0 * 0x10000000) : 1.0 ;
- ucptr = ((unsigned char*) dest) + 4 * count ;
-
- while (--count >= 0)
- { ucptr -= 4 ;
- scaled_value = src [count] * normfact ;
- if (CPU_CLIPS_POSITIVE == 0 && scaled_value >= (1.0 * 0x7FFFFFFF))
- { ucptr [0] = 0xFF ;
- ucptr [1] = 0xFF ;
- ucptr [2] = 0xFF ;
- ucptr [3] = 0x7F ;
- continue ;
- } ;
- if (CPU_CLIPS_NEGATIVE == 0 && scaled_value <= (-8.0 * 0x10000000))
- { ucptr [0] = 0x00 ;
- ucptr [1] = 0x00 ;
- ucptr [2] = 0x00 ;
- ucptr [3] = 0x80 ;
- continue ;
- } ;
-
- value = lrintf (scaled_value) ;
- ucptr [0] = value ;
- ucptr [1] = value >> 8 ;
- ucptr [2] = value >> 16 ;
- ucptr [3] = value >> 24 ;
- } ;
-} /* f2lei_clip_array */
-
-static sf_count_t
-pcm_write_f2lei (SF_PRIVATE *psf, const float *ptr, sf_count_t len)
-{ void (*convert) (const float *, int *, int, int) ;
- int bufferlen, writecount ;
- sf_count_t total = 0 ;
-
- convert = (psf->add_clipping) ? f2lei_clip_array : f2lei_array ;
- bufferlen = ARRAY_LEN (psf->u.ibuf) ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- convert (ptr + total, psf->u.ibuf, bufferlen, psf->norm_float) ;
- writecount = psf_fwrite (psf->u.ibuf, sizeof (int), bufferlen, psf) ;
- total += writecount ;
- if (writecount < bufferlen)
- break ;
- len -= writecount ;
- } ;
-
- return total ;
-} /* pcm_write_f2lei */
-
-/*==============================================================================
-*/
-
-static void
-d2sc_array (const double *src, signed char *dest, int count, int normalize)
-{ double normfact ;
-
- normfact = normalize ? (1.0 * 0x7F) : 1.0 ;
-
- while (--count >= 0)
- { dest [count] = lrint (src [count] * normfact) ;
- } ;
-} /* d2sc_array */
-
-static void
-d2sc_clip_array (const double *src, signed char *dest, int count, int normalize)
-{ double normfact, scaled_value ;
-
- normfact = normalize ? (8.0 * 0x10000000) : (1.0 * 0x1000000) ;
-
- while (--count >= 0)
- { scaled_value = src [count] * normfact ;
- if (CPU_CLIPS_POSITIVE == 0 && scaled_value >= (1.0 * 0x7FFFFFFF))
- { dest [count] = 127 ;
- continue ;
- } ;
- if (CPU_CLIPS_NEGATIVE == 0 && scaled_value <= (-8.0 * 0x10000000))
- { dest [count] = -128 ;
- continue ;
- } ;
-
- dest [count] = lrintf (scaled_value) >> 24 ;
- } ;
-} /* d2sc_clip_array */
-
-static sf_count_t
-pcm_write_d2sc (SF_PRIVATE *psf, const double *ptr, sf_count_t len)
-{ void (*convert) (const double *, signed char *, int, int) ;
- int bufferlen, writecount ;
- sf_count_t total = 0 ;
-
- convert = (psf->add_clipping) ? d2sc_clip_array : d2sc_array ;
- bufferlen = ARRAY_LEN (psf->u.scbuf) ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- convert (ptr + total, psf->u.scbuf, bufferlen, psf->norm_double) ;
- writecount = psf_fwrite (psf->u.scbuf, sizeof (signed char), bufferlen, psf) ;
- total += writecount ;
- if (writecount < bufferlen)
- break ;
- len -= writecount ;
- } ;
-
- return total ;
-} /* pcm_write_d2sc */
-
-/*==============================================================================
-*/
-
-static void
-d2uc_array (const double *src, unsigned char *dest, int count, int normalize)
-{ double normfact ;
-
- normfact = normalize ? (1.0 * 0x7F) : 1.0 ;
-
- while (--count >= 0)
- { dest [count] = lrint (src [count] * normfact) + 128 ;
- } ;
-} /* d2uc_array */
-
-static void
-d2uc_clip_array (const double *src, unsigned char *dest, int count, int normalize)
-{ double normfact, scaled_value ;
-
- normfact = normalize ? (8.0 * 0x10000000) : (1.0 * 0x1000000) ;
-
- while (--count >= 0)
- { scaled_value = src [count] * normfact ;
- if (CPU_CLIPS_POSITIVE == 0 && scaled_value >= (1.0 * 0x7FFFFFFF))
- { dest [count] = 255 ;
- continue ;
- } ;
- if (CPU_CLIPS_NEGATIVE == 0 && scaled_value <= (-8.0 * 0x10000000))
- { dest [count] = 0 ;
- continue ;
- } ;
-
- dest [count] = (lrint (src [count] * normfact) >> 24) + 128 ;
- } ;
-} /* d2uc_clip_array */
-
-static sf_count_t
-pcm_write_d2uc (SF_PRIVATE *psf, const double *ptr, sf_count_t len)
-{ void (*convert) (const double *, unsigned char *, int, int) ;
- int bufferlen, writecount ;
- sf_count_t total = 0 ;
-
- convert = (psf->add_clipping) ? d2uc_clip_array : d2uc_array ;
- bufferlen = ARRAY_LEN (psf->u.ucbuf) ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- convert (ptr + total, psf->u.ucbuf, bufferlen, psf->norm_double) ;
- writecount = psf_fwrite (psf->u.ucbuf, sizeof (unsigned char), bufferlen, psf) ;
- total += writecount ;
- if (writecount < bufferlen)
- break ;
- len -= writecount ;
- } ;
-
- return total ;
-} /* pcm_write_d2uc */
-
-/*==============================================================================
-*/
-
-static void
-d2bes_array (const double *src, short *dest, int count, int normalize)
-{ unsigned char *ucptr ;
- short value ;
- double normfact ;
-
- normfact = normalize ? (1.0 * 0x7FFF) : 1.0 ;
- ucptr = ((unsigned char*) dest) + 2 * count ;
-
- while (--count >= 0)
- { ucptr -= 2 ;
- value = lrint (src [count] * normfact) ;
- ucptr [1] = value ;
- ucptr [0] = value >> 8 ;
- } ;
-} /* d2bes_array */
-
-static void
-d2bes_clip_array (const double *src, short *dest, int count, int normalize)
-{ unsigned char *ucptr ;
- double normfact, scaled_value ;
- int value ;
-
- normfact = normalize ? (8.0 * 0x10000000) : (1.0 * 0x10000) ;
- ucptr = ((unsigned char*) dest) + 2 * count ;
-
- while (--count >= 0)
- { ucptr -= 2 ;
- scaled_value = src [count] * normfact ;
- if (CPU_CLIPS_POSITIVE == 0 && scaled_value >= (1.0 * 0x7FFFFFFF))
- { ucptr [1] = 0xFF ;
- ucptr [0] = 0x7F ;
- continue ;
- } ;
- if (CPU_CLIPS_NEGATIVE == 0 && scaled_value <= (-8.0 * 0x10000000))
- { ucptr [1] = 0x00 ;
- ucptr [0] = 0x80 ;
- continue ;
- } ;
-
- value = lrint (scaled_value) ;
- ucptr [1] = value >> 16 ;
- ucptr [0] = value >> 24 ;
- } ;
-} /* d2bes_clip_array */
-
-static sf_count_t
-pcm_write_d2bes (SF_PRIVATE *psf, const double *ptr, sf_count_t len)
-{ void (*convert) (const double *, short *, int, int) ;
- int bufferlen, writecount ;
- sf_count_t total = 0 ;
-
- convert = (psf->add_clipping) ? d2bes_clip_array : d2bes_array ;
- bufferlen = ARRAY_LEN (psf->u.sbuf) ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- convert (ptr + total, psf->u.sbuf, bufferlen, psf->norm_double) ;
- writecount = psf_fwrite (psf->u.sbuf, sizeof (short), bufferlen, psf) ;
- total += writecount ;
- if (writecount < bufferlen)
- break ;
- len -= writecount ;
- } ;
-
- return total ;
-} /* pcm_write_d2bes */
-
-/*==============================================================================
-*/
-
-static void
-d2les_array (const double *src, short *dest, int count, int normalize)
-{ unsigned char *ucptr ;
- short value ;
- double normfact ;
-
- normfact = normalize ? (1.0 * 0x7FFF) : 1.0 ;
- ucptr = ((unsigned char*) dest) + 2 * count ;
-
- while (--count >= 0)
- { ucptr -= 2 ;
- value = lrint (src [count] * normfact) ;
- ucptr [0] = value ;
- ucptr [1] = value >> 8 ;
- } ;
-} /* d2les_array */
-
-static void
-d2les_clip_array (const double *src, short *dest, int count, int normalize)
-{ unsigned char *ucptr ;
- int value ;
- double normfact, scaled_value ;
-
- normfact = normalize ? (8.0 * 0x10000000) : (1.0 * 0x10000) ;
- ucptr = ((unsigned char*) dest) + 2 * count ;
-
- while (--count >= 0)
- { ucptr -= 2 ;
- scaled_value = src [count] * normfact ;
- if (CPU_CLIPS_POSITIVE == 0 && scaled_value >= (1.0 * 0x7FFFFFFF))
- { ucptr [0] = 0xFF ;
- ucptr [1] = 0x7F ;
- continue ;
- } ;
- if (CPU_CLIPS_NEGATIVE == 0 && scaled_value <= (-8.0 * 0x10000000))
- { ucptr [0] = 0x00 ;
- ucptr [1] = 0x80 ;
- continue ;
- } ;
-
- value = lrint (scaled_value) ;
- ucptr [0] = value >> 16 ;
- ucptr [1] = value >> 24 ;
- } ;
-} /* d2les_clip_array */
-
-static sf_count_t
-pcm_write_d2les (SF_PRIVATE *psf, const double *ptr, sf_count_t len)
-{ void (*convert) (const double *, short *, int, int) ;
- int bufferlen, writecount ;
- sf_count_t total = 0 ;
-
- convert = (psf->add_clipping) ? d2les_clip_array : d2les_array ;
- bufferlen = ARRAY_LEN (psf->u.sbuf) ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- convert (ptr + total, psf->u.sbuf, bufferlen, psf->norm_double) ;
- writecount = psf_fwrite (psf->u.sbuf, sizeof (short), bufferlen, psf) ;
- total += writecount ;
- if (writecount < bufferlen)
- break ;
- len -= writecount ;
- } ;
-
- return total ;
-} /* pcm_write_d2les */
-
-/*==============================================================================
-*/
-
-static void
-d2let_array (const double *src, tribyte *dest, int count, int normalize)
-{ unsigned char *ucptr ;
- int value ;
- double normfact ;
-
- normfact = normalize ? (1.0 * 0x7FFFFF) : 1.0 ;
- ucptr = ((unsigned char*) dest) + 3 * count ;
-
- while (--count >= 0)
- { ucptr -= 3 ;
- value = lrint (src [count] * normfact) ;
- ucptr [0] = value ;
- ucptr [1] = value >> 8 ;
- ucptr [2] = value >> 16 ;
- } ;
-} /* d2let_array */
-
-static void
-d2let_clip_array (const double *src, tribyte *dest, int count, int normalize)
-{ unsigned char *ucptr ;
- int value ;
- double normfact, scaled_value ;
-
- normfact = normalize ? (8.0 * 0x10000000) : (1.0 * 0x100) ;
- ucptr = ((unsigned char*) dest) + 3 * count ;
-
- while (--count >= 0)
- { ucptr -= 3 ;
- scaled_value = src [count] * normfact ;
- if (CPU_CLIPS_POSITIVE == 0 && scaled_value >= (1.0 * 0x7FFFFFFF))
- { ucptr [0] = 0xFF ;
- ucptr [1] = 0xFF ;
- ucptr [2] = 0x7F ;
- continue ;
- } ;
- if (CPU_CLIPS_NEGATIVE == 0 && scaled_value <= (-8.0 * 0x10000000))
- { ucptr [0] = 0x00 ;
- ucptr [1] = 0x00 ;
- ucptr [2] = 0x80 ;
- continue ;
- } ;
-
- value = lrint (scaled_value) ;
- ucptr [0] = value >> 8 ;
- ucptr [1] = value >> 16 ;
- ucptr [2] = value >> 24 ;
- } ;
-} /* d2let_clip_array */
-
-static sf_count_t
-pcm_write_d2let (SF_PRIVATE *psf, const double *ptr, sf_count_t len)
-{ void (*convert) (const double *, tribyte *, int, int) ;
- int bufferlen, writecount ;
- sf_count_t total = 0 ;
-
- convert = (psf->add_clipping) ? d2let_clip_array : d2let_array ;
- bufferlen = sizeof (psf->u.ucbuf) / SIZEOF_TRIBYTE ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- convert (ptr + total, (tribyte*) (psf->u.ucbuf), bufferlen, psf->norm_double) ;
- writecount = psf_fwrite (psf->u.ucbuf, SIZEOF_TRIBYTE, bufferlen, psf) ;
- total += writecount ;
- if (writecount < bufferlen)
- break ;
- len -= writecount ;
- } ;
-
- return total ;
-} /* pcm_write_d2let */
-
-/*==============================================================================
-*/
-
-static void
-d2bet_array (const double *src, tribyte *dest, int count, int normalize)
-{ unsigned char *ucptr ;
- int value ;
- double normfact ;
-
- normfact = normalize ? (1.0 * 0x7FFFFF) : 1.0 ;
- ucptr = ((unsigned char*) dest) + 3 * count ;
-
- while (--count >= 0)
- { ucptr -= 3 ;
- value = lrint (src [count] * normfact) ;
- ucptr [2] = value ;
- ucptr [1] = value >> 8 ;
- ucptr [0] = value >> 16 ;
- } ;
-} /* d2bet_array */
-
-static void
-d2bet_clip_array (const double *src, tribyte *dest, int count, int normalize)
-{ unsigned char *ucptr ;
- int value ;
- double normfact, scaled_value ;
-
- normfact = normalize ? (8.0 * 0x10000000) : (1.0 * 0x100) ;
- ucptr = ((unsigned char*) dest) + 3 * count ;
-
- while (--count >= 0)
- { ucptr -= 3 ;
- scaled_value = src [count] * normfact ;
- if (CPU_CLIPS_POSITIVE == 0 && scaled_value >= (1.0 * 0x7FFFFFFF))
- { ucptr [2] = 0xFF ;
- ucptr [1] = 0xFF ;
- ucptr [0] = 0x7F ;
- continue ;
- } ;
- if (CPU_CLIPS_NEGATIVE == 0 && scaled_value <= (-8.0 * 0x10000000))
- { ucptr [2] = 0x00 ;
- ucptr [1] = 0x00 ;
- ucptr [0] = 0x80 ;
- continue ;
- } ;
-
- value = lrint (scaled_value) ;
- ucptr [2] = value >> 8 ;
- ucptr [1] = value >> 16 ;
- ucptr [0] = value >> 24 ;
- } ;
-} /* d2bet_clip_array */
-
-static sf_count_t
-pcm_write_d2bet (SF_PRIVATE *psf, const double *ptr, sf_count_t len)
-{ void (*convert) (const double *, tribyte *, int, int) ;
- int bufferlen, writecount ;
- sf_count_t total = 0 ;
-
- convert = (psf->add_clipping) ? d2bet_clip_array : d2bet_array ;
- bufferlen = sizeof (psf->u.ucbuf) / SIZEOF_TRIBYTE ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- convert (ptr + total, (tribyte*) (psf->u.ucbuf), bufferlen, psf->norm_double) ;
- writecount = psf_fwrite (psf->u.ucbuf, SIZEOF_TRIBYTE, bufferlen, psf) ;
- total += writecount ;
- if (writecount < bufferlen)
- break ;
- len -= writecount ;
- } ;
-
- return total ;
-} /* pcm_write_d2bet */
-
-/*==============================================================================
-*/
-
-static void
-d2bei_array (const double *src, int *dest, int count, int normalize)
-{ unsigned char *ucptr ;
- int value ;
- double normfact ;
-
- normfact = normalize ? (1.0 * 0x7FFFFFFF) : 1.0 ;
- ucptr = ((unsigned char*) dest) + 4 * count ;
-
- while (--count >= 0)
- { ucptr -= 4 ;
- value = lrint (src [count] * normfact) ;
- ucptr [0] = value >> 24 ;
- ucptr [1] = value >> 16 ;
- ucptr [2] = value >> 8 ;
- ucptr [3] = value ;
- } ;
-} /* d2bei_array */
-
-static void
-d2bei_clip_array (const double *src, int *dest, int count, int normalize)
-{ unsigned char *ucptr ;
- int value ;
- double normfact, scaled_value ;
-
- normfact = normalize ? (8.0 * 0x10000000) : 1.0 ;
- ucptr = ((unsigned char*) dest) + 4 * count ;
-
- while (--count >= 0)
- { ucptr -= 4 ;
- scaled_value = src [count] * normfact ;
- if (CPU_CLIPS_POSITIVE == 0 && scaled_value >= (1.0 * 0x7FFFFFFF))
- { ucptr [3] = 0xFF ;
- ucptr [2] = 0xFF ;
- ucptr [1] = 0xFF ;
- ucptr [0] = 0x7F ;
- continue ;
- } ;
- if (CPU_CLIPS_NEGATIVE == 0 && scaled_value <= (-8.0 * 0x10000000))
- { ucptr [3] = 0x00 ;
- ucptr [2] = 0x00 ;
- ucptr [1] = 0x00 ;
- ucptr [0] = 0x80 ;
- continue ;
- } ;
-
- value = lrint (scaled_value) ;
- ucptr [0] = value >> 24 ;
- ucptr [1] = value >> 16 ;
- ucptr [2] = value >> 8 ;
- ucptr [3] = value ;
- } ;
-} /* d2bei_clip_array */
-
-static sf_count_t
-pcm_write_d2bei (SF_PRIVATE *psf, const double *ptr, sf_count_t len)
-{ void (*convert) (const double *, int *, int, int) ;
- int bufferlen, writecount ;
- sf_count_t total = 0 ;
-
- convert = (psf->add_clipping) ? d2bei_clip_array : d2bei_array ;
- bufferlen = ARRAY_LEN (psf->u.ibuf) ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- convert (ptr + total, psf->u.ibuf, bufferlen, psf->norm_double) ;
- writecount = psf_fwrite (psf->u.ibuf, sizeof (int), bufferlen, psf) ;
- total += writecount ;
- if (writecount < bufferlen)
- break ;
- len -= writecount ;
- } ;
-
- return total ;
-} /* pcm_write_d2bei */
-
-/*==============================================================================
-*/
-
-static void
-d2lei_array (const double *src, int *dest, int count, int normalize)
-{ unsigned char *ucptr ;
- int value ;
- double normfact ;
-
- normfact = normalize ? (1.0 * 0x7FFFFFFF) : 1.0 ;
- ucptr = ((unsigned char*) dest) + 4 * count ;
-
- while (--count >= 0)
- { ucptr -= 4 ;
- value = lrint (src [count] * normfact) ;
- ucptr [0] = value ;
- ucptr [1] = value >> 8 ;
- ucptr [2] = value >> 16 ;
- ucptr [3] = value >> 24 ;
- } ;
-} /* d2lei_array */
-
-static void
-d2lei_clip_array (const double *src, int *dest, int count, int normalize)
-{ unsigned char *ucptr ;
- int value ;
- double normfact, scaled_value ;
-
- normfact = normalize ? (8.0 * 0x10000000) : 1.0 ;
- ucptr = ((unsigned char*) dest) + 4 * count ;
-
- while (--count >= 0)
- { ucptr -= 4 ;
- scaled_value = src [count] * normfact ;
- if (CPU_CLIPS_POSITIVE == 0 && scaled_value >= (1.0 * 0x7FFFFFFF))
- { ucptr [0] = 0xFF ;
- ucptr [1] = 0xFF ;
- ucptr [2] = 0xFF ;
- ucptr [3] = 0x7F ;
- continue ;
- } ;
- if (CPU_CLIPS_NEGATIVE == 0 && scaled_value <= (-8.0 * 0x10000000))
- { ucptr [0] = 0x00 ;
- ucptr [1] = 0x00 ;
- ucptr [2] = 0x00 ;
- ucptr [3] = 0x80 ;
- continue ;
- } ;
-
- value = lrint (scaled_value) ;
- ucptr [0] = value ;
- ucptr [1] = value >> 8 ;
- ucptr [2] = value >> 16 ;
- ucptr [3] = value >> 24 ;
- } ;
-} /* d2lei_clip_array */
-
-static sf_count_t
-pcm_write_d2lei (SF_PRIVATE *psf, const double *ptr, sf_count_t len)
-{ void (*convert) (const double *, int *, int, int) ;
- int bufferlen, writecount ;
- sf_count_t total = 0 ;
-
- convert = (psf->add_clipping) ? d2lei_clip_array : d2lei_array ;
- bufferlen = ARRAY_LEN (psf->u.ibuf) ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- convert (ptr + total, psf->u.ibuf, bufferlen, psf->norm_double) ;
- writecount = psf_fwrite (psf->u.ibuf, sizeof (int), bufferlen, psf) ;
- total += writecount ;
- if (writecount < bufferlen)
- break ;
- len -= writecount ;
- } ;
-
- return total ;
-} /* pcm_write_d2lei */
-
-/*
-** Do not edit or modify anything in this comment block.
-** The arch-tag line is a file identity tag for the GNU Arch
-** revision control system.
-**
-** arch-tag: d8bc7c0e-1e2f-4ff3-a28f-10ce1fbade3b
-*/
diff --git a/libs/libsndfile/src/pvf.c b/libs/libsndfile/src/pvf.c
deleted file mode 100644
index 1dab17ccb1..0000000000
--- a/libs/libsndfile/src/pvf.c
+++ /dev/null
@@ -1,199 +0,0 @@
-/*
-** Copyright (C) 2002-2004 Erik de Castro Lopo <erikd@mega-nerd.com>
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU Lesser General Public License as published by
-** the Free Software Foundation; either version 2.1 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU Lesser General Public License for more details.
-**
-** You should have received a copy of the GNU Lesser General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-*/
-
-#include "sfconfig.h"
-
-#include <stdio.h>
-#include <fcntl.h>
-#include <string.h>
-#include <ctype.h>
-
-#include "sndfile.h"
-#include "sfendian.h"
-#include "common.h"
-
-/*------------------------------------------------------------------------------
-** Macros to handle big/little endian issues.
-*/
-
-#define PVF1_MARKER (MAKE_MARKER ('P', 'V', 'F', '1'))
-
-/*------------------------------------------------------------------------------
-** Private static functions.
-*/
-
-static int pvf_close (SF_PRIVATE *psf) ;
-
-static int pvf_write_header (SF_PRIVATE *psf, int calc_length) ;
-static int pvf_read_header (SF_PRIVATE *psf) ;
-
-/*------------------------------------------------------------------------------
-** Public function.
-*/
-
-int
-pvf_open (SF_PRIVATE *psf)
-{ int subformat ;
- int error = 0 ;
-
- if (psf->mode == SFM_READ || (psf->mode == SFM_RDWR && psf->filelength > 0))
- { if ((error = pvf_read_header (psf)))
- return error ;
- } ;
-
- subformat = psf->sf.format & SF_FORMAT_SUBMASK ;
-
- if (psf->mode == SFM_WRITE || psf->mode == SFM_RDWR)
- { if ((psf->sf.format & SF_FORMAT_TYPEMASK) != SF_FORMAT_PVF)
- return SFE_BAD_OPEN_FORMAT ;
-
- psf->endian = SF_ENDIAN_BIG ;
-
- if (pvf_write_header (psf, SF_FALSE))
- return psf->error ;
-
- psf->write_header = pvf_write_header ;
- } ;
-
- psf->container_close = pvf_close ;
-
- psf->blockwidth = psf->bytewidth * psf->sf.channels ;
-
- switch (subformat)
- { case SF_FORMAT_PCM_S8 : /* 8-bit linear PCM. */
- case SF_FORMAT_PCM_16 : /* 16-bit linear PCM. */
- case SF_FORMAT_PCM_32 : /* 32-bit linear PCM. */
- error = pcm_init (psf) ;
- break ;
-
- default : break ;
- } ;
-
- return error ;
-} /* pvf_open */
-
-/*------------------------------------------------------------------------------
-*/
-
-static int
-pvf_close (SF_PRIVATE *psf)
-{
- psf = psf ;
-
- return 0 ;
-} /* pvf_close */
-
-static int
-pvf_write_header (SF_PRIVATE *psf, int calc_length)
-{ sf_count_t current ;
-
- if (psf->pipeoffset > 0)
- return 0 ;
-
- calc_length = calc_length ; /* Avoid a compiler warning. */
-
- current = psf_ftell (psf) ;
-
- /* Reset the current header length to zero. */
- psf->header [0] = 0 ;
- psf->headindex = 0 ;
-
- if (psf->is_pipe == SF_FALSE)
- psf_fseek (psf, 0, SEEK_SET) ;
-
- LSF_SNPRINTF ((char*) psf->header, sizeof (psf->header), "PVF1\n%d %d %d\n",
- psf->sf.channels, psf->sf.samplerate, psf->bytewidth * 8) ;
-
- psf->headindex = strlen ((char*) psf->header) ;
-
- /* Header construction complete so write it out. */
- psf_fwrite (psf->header, psf->headindex, 1, psf) ;
-
- if (psf->error)
- return psf->error ;
-
- psf->dataoffset = psf->headindex ;
-
- if (current > 0)
- psf_fseek (psf, current, SEEK_SET) ;
-
- return psf->error ;
-} /* pvf_write_header */
-
-static int
-pvf_read_header (SF_PRIVATE *psf)
-{ char buffer [32] ;
- int marker, channels, samplerate, bitwidth ;
-
- psf_binheader_readf (psf, "pmj", 0, &marker, 1) ;
- psf_log_printf (psf, "%M\n", marker) ;
-
- if (marker != PVF1_MARKER)
- return SFE_PVF_NO_PVF1 ;
-
- /* Grab characters up until a newline which is replaced by an EOS. */
- psf_binheader_readf (psf, "G", buffer, sizeof (buffer)) ;
-
- if (sscanf (buffer, "%d %d %d", &channels, &samplerate, &bitwidth) != 3)
- return SFE_PVF_BAD_HEADER ;
-
- psf_log_printf (psf, " Channels : %d\n Sample rate : %d\n Bit width : %d\n",
- channels, samplerate, bitwidth) ;
-
- psf->sf.channels = channels ;
- psf->sf.samplerate = samplerate ;
-
- switch (bitwidth)
- { case 8 :
- psf->sf.format = SF_FORMAT_PVF | SF_FORMAT_PCM_S8 ;
- psf->bytewidth = 1 ;
- break ;
-
- case 16 :
- psf->sf.format = SF_FORMAT_PVF | SF_FORMAT_PCM_16 ;
- psf->bytewidth = 2 ;
- break ;
- case 32 :
- psf->sf.format = SF_FORMAT_PVF | SF_FORMAT_PCM_32 ;
- psf->bytewidth = 4 ;
- break ;
-
- default :
- return SFE_PVF_BAD_BITWIDTH ;
- } ;
-
- psf->dataoffset = psf_ftell (psf) ;
- psf_log_printf (psf, " Data Offset : %D\n", psf->dataoffset) ;
-
- psf->endian = SF_ENDIAN_BIG ;
-
- psf->datalength = psf->filelength - psf->dataoffset ;
- psf->blockwidth = psf->sf.channels * psf->bytewidth ;
-
- if (! psf->sf.frames && psf->blockwidth)
- psf->sf.frames = (psf->filelength - psf->dataoffset) / psf->blockwidth ;
-
- return 0 ;
-} /* pvf_read_header */
-/*
-** Do not edit or modify anything in this comment block.
-** The arch-tag line is a file identity tag for the GNU Arch
-** revision control system.
-**
-** arch-tag: 20a26761-8bc1-41d7-b1f3-9793bf3d9864
-*/
diff --git a/libs/libsndfile/src/raw.c b/libs/libsndfile/src/raw.c
deleted file mode 100644
index 65be491feb..0000000000
--- a/libs/libsndfile/src/raw.c
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
-** Copyright (C) 1999-2004 Erik de Castro Lopo <erikd@mega-nerd.com>
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU Lesser General Public License as published by
-** the Free Software Foundation; either version 2.1 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU Lesser General Public License for more details.
-**
-** You should have received a copy of the GNU Lesser General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-*/
-
-#include "sfconfig.h"
-
-#include <stdio.h>
-
-#include "sndfile.h"
-#include "common.h"
-
-/*------------------------------------------------------------------------------
-** Public function.
-*/
-
-int
-raw_open (SF_PRIVATE *psf)
-{ int subformat, error = SFE_NO_ERROR ;
-
- subformat = psf->sf.format & SF_FORMAT_SUBMASK ;
-
- psf->endian = psf->sf.format & SF_FORMAT_ENDMASK ;
-
- if (CPU_IS_BIG_ENDIAN && (psf->endian == 0 || psf->endian == SF_ENDIAN_CPU))
- psf->endian = SF_ENDIAN_BIG ;
- else if (CPU_IS_LITTLE_ENDIAN && (psf->endian == 0 || psf->endian == SF_ENDIAN_CPU))
- psf->endian = SF_ENDIAN_LITTLE ;
-
- psf->blockwidth = psf->bytewidth * psf->sf.channels ;
- psf->dataoffset = 0 ;
- psf->datalength = psf->filelength ;
-
- switch (subformat)
- { case SF_FORMAT_PCM_S8 :
- error = pcm_init (psf) ;
- break ;
-
- case SF_FORMAT_PCM_U8 :
- error = pcm_init (psf) ;
- break ;
-
- case SF_FORMAT_PCM_16 :
- case SF_FORMAT_PCM_24 :
- case SF_FORMAT_PCM_32 :
- error = pcm_init (psf) ;
- break ;
-
- case SF_FORMAT_ULAW :
- error = ulaw_init (psf) ;
- break ;
-
- case SF_FORMAT_ALAW :
- error = alaw_init (psf) ;
- break ;
-
- case SF_FORMAT_GSM610 :
- error = gsm610_init (psf) ;
- break ;
-
- /* Lite remove start */
- case SF_FORMAT_FLOAT :
- error = float32_init (psf) ;
- break ;
-
- case SF_FORMAT_DOUBLE :
- error = double64_init (psf) ;
- break ;
-
- case SF_FORMAT_DWVW_12 :
- error = dwvw_init (psf, 12) ;
- break ;
-
- case SF_FORMAT_DWVW_16 :
- error = dwvw_init (psf, 16) ;
- break ;
-
- case SF_FORMAT_DWVW_24 :
- error = dwvw_init (psf, 24) ;
- break ;
-
- case SF_FORMAT_VOX_ADPCM :
- error = vox_adpcm_init (psf) ;
- break ;
- /* Lite remove end */
-
- default : return SFE_BAD_OPEN_FORMAT ;
- } ;
-
- return error ;
-} /* raw_open */
-/*
-** Do not edit or modify anything in this comment block.
-** The arch-tag line is a file identity tag for the GNU Arch
-** revision control system.
-**
-** arch-tag: f0066de7-d6ce-4f36-a1e0-e475c07d4e1a
-*/
diff --git a/libs/libsndfile/src/rx2.c b/libs/libsndfile/src/rx2.c
deleted file mode 100644
index d95f11fe78..0000000000
--- a/libs/libsndfile/src/rx2.c
+++ /dev/null
@@ -1,326 +0,0 @@
-/*
-** Copyright (C) 2001-2004 Erik de Castro Lopo <erikd@mega-nerd.com>
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU Lesser General Public License as published by
-** the Free Software Foundation; either version 2.1 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU Lesser General Public License for more details.
-**
-** You should have received a copy of the GNU Lesser General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-*/
-
-#include "sfconfig.h"
-
-#include <stdio.h>
-#include <string.h>
-#include <ctype.h>
-#include <stdarg.h>
-
-#include "sndfile.h"
-#include "sfendian.h"
-#include "common.h"
-
-#if (ENABLE_EXPERIMENTAL_CODE == 0)
-
-int
-rx2_open (SF_PRIVATE *psf)
-{ if (psf)
- return SFE_UNIMPLEMENTED ;
- return (psf && 0) ;
-} /* rx2_open */
-
-#else
-
-/*------------------------------------------------------------------------------
- * Macros to handle big/little endian issues.
-*/
-
-#define CAT_MARKER (MAKE_MARKER ('C', 'A', 'T', ' '))
-#define GLOB_MARKER (MAKE_MARKER ('G', 'L', 'O', 'B'))
-
-#define RECY_MARKER (MAKE_MARKER ('R', 'E', 'C', 'Y'))
-
-#define SLCL_MARKER (MAKE_MARKER ('S', 'L', 'C', 'L'))
-#define SLCE_MARKER (MAKE_MARKER ('S', 'L', 'C', 'E'))
-
-#define DEVL_MARKER (MAKE_MARKER ('D', 'E', 'V', 'L'))
-#define TRSH_MARKER (MAKE_MARKER ('T', 'R', 'S', 'H'))
-
-#define EQ_MARKER (MAKE_MARKER ('E', 'Q', ' ', ' '))
-#define COMP_MARKER (MAKE_MARKER ('C', 'O', 'M', 'P'))
-
-#define SINF_MARKER (MAKE_MARKER ('S', 'I', 'N', 'F'))
-#define SDAT_MARKER (MAKE_MARKER ('S', 'D', 'A', 'T'))
-
-/*------------------------------------------------------------------------------
- * Typedefs for file chunks.
-*/
-
-
-/*------------------------------------------------------------------------------
- * Private static functions.
-*/
-static int rx2_close (SF_PRIVATE *psf) ;
-
-/*------------------------------------------------------------------------------
-** Public functions.
-*/
-
-int
-rx2_open (SF_PRIVATE *psf)
-{ static const char *marker_type [4] =
- { "Original Enabled", "Enabled Hidden",
- "Additional/PencilTool", "Disabled"
- } ;
-
- int error, marker, length, glob_offset, slce_count, frames ;
-
- int sdat_length = 0, slce_total = 0 ;
-
- int n_channels ;
-
-
- /* So far only doing read. */
-
- psf_binheader_readf (psf, "Epm4", 0, &marker, &length) ;
-
- if (marker != CAT_MARKER)
- { psf_log_printf (psf, "length : %d\n", length) ;
- return -1000 ;
- } ;
-
- if (length != psf->filelength - 8)
- psf_log_printf (psf, "%M : %d (should be %d)\n", marker, length, psf->filelength - 8) ;
- else
- psf_log_printf (psf, "%M : %d\n", marker, length) ;
-
- /* 'REX2' marker */
- psf_binheader_readf (psf, "m", &marker) ;
- psf_log_printf (psf, "%M", marker) ;
-
- /* 'HEAD' marker */
- psf_binheader_readf (psf, "m", &marker) ;
- psf_log_printf (psf, "%M\n", marker) ;
-
- /* Grab 'GLOB' offset. */
- psf_binheader_readf (psf, "E4", &glob_offset) ;
- glob_offset += 0x14 ; /* Add the current file offset. */
-
- /* Jump to offset 0x30 */
- psf_binheader_readf (psf, "p", 0x30) ;
-
- /* Get name length */
- length = 0 ;
- psf_binheader_readf (psf, "1", &length) ;
- if (length >= SIGNED_SIZEOF (psf->u.cbuf))
- { psf_log_printf (psf, " Text : %d *** Error : Too sf_count_t!\n") ;
- return -1001 ;
- }
-
- memset (psf->u.cbuf, 0, sizeof (psf->u.cbuf)) ;
- psf_binheader_readf (psf, "b", psf->u.cbuf, length) ;
- psf_log_printf (psf, " Text : \"%s\"\n", psf->u.cbuf) ;
-
- /* Jump to GLOB offset position. */
- if (glob_offset & 1)
- glob_offset ++ ;
-
- psf_binheader_readf (psf, "p", glob_offset) ;
-
- slce_count = 0 ;
- /* GLOB */
- while (1)
- { psf_binheader_readf (psf, "m", &marker) ;
-
- if (marker != SLCE_MARKER && slce_count > 0)
- { psf_log_printf (psf, " SLCE count : %d\n", slce_count) ;
- slce_count = 0 ;
- }
- switch (marker)
- { case GLOB_MARKER:
- psf_binheader_readf (psf, "E4", &length) ;
- psf_log_printf (psf, " %M : %d\n", marker, length) ;
- psf_binheader_readf (psf, "j", length) ;
- break ;
-
- case RECY_MARKER:
- psf_binheader_readf (psf, "E4", &length) ;
- psf_log_printf (psf, " %M : %d\n", marker, length) ;
- psf_binheader_readf (psf, "j", (length+1) & 0xFFFFFFFE) ; /* ?????? */
- break ;
-
- case CAT_MARKER:
- psf_binheader_readf (psf, "E4", &length) ;
- psf_log_printf (psf, " %M : %d\n", marker, length) ;
- /*-psf_binheader_readf (psf, "j", length) ;-*/
- break ;
-
- case DEVL_MARKER:
- psf_binheader_readf (psf, "mE4", &marker, &length) ;
- psf_log_printf (psf, " DEVL%M : %d\n", marker, length) ;
- if (length & 1)
- length ++ ;
- psf_binheader_readf (psf, "j", length) ;
- break ;
-
- case EQ_MARKER:
- case COMP_MARKER:
- psf_binheader_readf (psf, "E4", &length) ;
- psf_log_printf (psf, " %M : %d\n", marker, length) ;
- /* This is weird!!!! why make this (length - 1) */
- if (length & 1)
- length ++ ;
- psf_binheader_readf (psf, "j", length) ;
- break ;
-
- case SLCL_MARKER:
- psf_log_printf (psf, " %M\n (Offset, Next Offset, Type)\n", marker) ;
- slce_count = 0 ;
- break ;
-
- case SLCE_MARKER:
- { int len [4], indx ;
-
- psf_binheader_readf (psf, "E4444", &len [0], &len [1], &len [2], &len [3]) ;
-
- indx = ((len [3] & 0x0000FFFF) >> 8) & 3 ;
-
- if (len [2] == 1)
- { if (indx != 1)
- indx = 3 ; /* 2 cases, where next slice offset = 1 -> disabled & enabled/hidden */
-
- psf_log_printf (psf, " %M : (%6d, ?: 0x%X, %s)\n", marker, len [1], (len [3] & 0xFFFF0000) >> 16, marker_type [indx]) ;
- }
- else
- { slce_total += len [2] ;
-
- psf_log_printf (psf, " %M : (%6d, SLCE_next_ofs:%d, ?: 0x%X, %s)\n", marker, len [1], len [2], (len [3] & 0xFFFF0000) >> 16, marker_type [indx]) ;
- } ;
-
- slce_count ++ ;
- } ;
- break ;
-
- case SINF_MARKER:
- psf_binheader_readf (psf, "E4", &length) ;
- psf_log_printf (psf, " %M : %d\n", marker, length) ;
-
- psf_binheader_readf (psf, "E2", &n_channels) ;
- n_channels = (n_channels & 0x0000FF00) >> 8 ;
- psf_log_printf (psf, " Channels : %d\n", n_channels) ;
-
- psf_binheader_readf (psf, "E44", &psf->sf.samplerate, &frames) ;
- psf->sf.frames = frames ;
- psf_log_printf (psf, " Sample Rate : %d\n", psf->sf.samplerate) ;
- psf_log_printf (psf, " Frames : %D\n", psf->sf.frames) ;
-
- psf_binheader_readf (psf, "E4", &length) ;
- psf_log_printf (psf, " ??????????? : %d\n", length) ;
-
- psf_binheader_readf (psf, "E4", &length) ;
- psf_log_printf (psf, " ??????????? : %d\n", length) ;
- break ;
-
- case SDAT_MARKER:
- psf_binheader_readf (psf, "E4", &length) ;
-
- sdat_length = length ;
-
- /* Get the current offset. */
- psf->dataoffset = psf_binheader_readf (psf, NULL) ;
-
- if (psf->dataoffset + length != psf->filelength)
- psf_log_printf (psf, " %M : %d (should be %d)\n", marker, length, psf->dataoffset + psf->filelength) ;
- else
- psf_log_printf (psf, " %M : %d\n", marker, length) ;
- break ;
-
- default :
- psf_log_printf (psf, "Unknown marker : 0x%X %M", marker, marker) ;
- return -1003 ;
- break ;
- } ;
-
- /* SDAT always last marker in file. */
- if (marker == SDAT_MARKER)
- break ;
- } ;
-
- puts (psf->logbuffer) ;
- puts ("-----------------------------------") ;
-
- printf ("SDAT length : %d\n", sdat_length) ;
- printf ("SLCE count : %d\n", slce_count) ;
-
- /* Hack for zero slice count. */
- if (slce_count == 0 && slce_total == 1)
- slce_total = frames ;
-
- printf ("SLCE samples : %d\n", slce_total) ;
-
- /* Two bytes per sample. */
- printf ("Comp Ratio : %f:1\n", (2.0 * slce_total * n_channels) / sdat_length) ;
-
- puts (" ") ;
-
- psf->logbuffer [0] = 0 ;
-
- /* OK, have the header although not too sure what it all means. */
-
- psf->endian = SF_ENDIAN_BIG ;
-
- psf->datalength = psf->filelength - psf->dataoffset ;
-
- if (psf_fseek (psf, psf->dataoffset, SEEK_SET))
- return SFE_BAD_SEEK ;
-
- psf->sf.format = (SF_FORMAT_REX2 | SF_FORMAT_DWVW_12) ;
-
- psf->sf.channels = 1 ;
- psf->bytewidth = 2 ;
- psf->blockwidth = psf->sf.channels * psf->bytewidth ;
-
- if ((error = dwvw_init (psf, 16)))
- return error ;
-
- psf->container_close = rx2_close ;
-
- if (! psf->sf.frames && psf->blockwidth)
- psf->sf.frames = psf->datalength / psf->blockwidth ;
-
- /* All done. */
-
- return 0 ;
-} /* rx2_open */
-
-/*------------------------------------------------------------------------------
-*/
-
-static int
-rx2_close (SF_PRIVATE *psf)
-{
- if (psf->mode == SFM_WRITE)
- { /* Now we know for certain the length of the file we can re-write
- ** correct values for the FORM, 8SVX and BODY chunks.
- */
-
- } ;
-
- return 0 ;
-} /* rx2_close */
-
-#endif
-/*
-** Do not edit or modify anything in this comment block.
-** The arch-tag line is a file identity tag for the GNU Arch
-** revision control system.
-**
-** arch-tag: 7366e813-9fee-4d1f-881e-e4a691469370
-*/
diff --git a/libs/libsndfile/src/sd2.c b/libs/libsndfile/src/sd2.c
deleted file mode 100644
index 7ef4814290..0000000000
--- a/libs/libsndfile/src/sd2.c
+++ /dev/null
@@ -1,613 +0,0 @@
-/*
-** Copyright (C) 2001-2006 Erik de Castro Lopo <erikd@mega-nerd.com>
-** Copyright (C) 2004 Paavo Jumppanen
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU Lesser General Public License as published by
-** the Free Software Foundation; either version 2.1 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU Lesser General Public License for more details.
-**
-** You should have received a copy of the GNU Lesser General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-*/
-
-/*
-** The sd2 support implemented in this file was partially sponsored
-** (financially) by Paavo Jumppanen.
-*/
-
-/*
-** Documentation on the Mac resource fork was obtained here :
-** http://developer.apple.com/documentation/mac/MoreToolbox/MoreToolbox-99.html
-*/
-
-#include "sfconfig.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <ctype.h>
-
-#include "sndfile.h"
-#include "sfendian.h"
-#include "common.h"
-
-/*------------------------------------------------------------------------------
- * Markers.
-*/
-
-#define Sd2f_MARKER MAKE_MARKER ('S', 'd', '2', 'f')
-#define Sd2a_MARKER MAKE_MARKER ('S', 'd', '2', 'a')
-#define ALCH_MARKER MAKE_MARKER ('A', 'L', 'C', 'H')
-#define lsf1_MARKER MAKE_MARKER ('l', 's', 'f', '1')
-
-#define STR_MARKER MAKE_MARKER ('S', 'T', 'R', ' ')
-#define sdML_MARKER MAKE_MARKER ('s', 'd', 'M', 'L')
-
-enum
-{ RSRC_STR = 111,
- RSRC_BIN
-} ;
-
-typedef struct
-{ unsigned char * rsrc_data ;
- int rsrc_len ;
-
- int data_offset, data_length ;
- int map_offset, map_length ;
-
- int type_count, type_offset ;
- int item_offset ;
-
- int str_index, str_count ;
-
- int string_offset ;
-
- /* All the above just to get these three. */
- int sample_size, sample_rate, channels ;
-} SD2_RSRC ;
-
-typedef struct
-{ int type ;
- int id ;
- char name [32] ;
- char value [32] ;
- int value_len ;
-} STR_RSRC ;
-
-/*------------------------------------------------------------------------------
- * Private static functions.
-*/
-
-static int sd2_close (SF_PRIVATE *psf) ;
-
-static int sd2_parse_rsrc_fork (SF_PRIVATE *psf) ;
-static int parse_str_rsrc (SF_PRIVATE *psf, SD2_RSRC * rsrc) ;
-
-static int sd2_write_rsrc_fork (SF_PRIVATE *psf, int calc_length) ;
-
-/*------------------------------------------------------------------------------
-** Public functions.
-*/
-
-int
-sd2_open (SF_PRIVATE *psf)
-{ int subformat, error = 0, valid ;
-
- /* SD2 is always big endian. */
- psf->endian = SF_ENDIAN_BIG ;
-
- if (psf->mode == SFM_READ || (psf->mode == SFM_RDWR && psf->rsrclength > 0))
- { psf_use_rsrc (psf, SF_TRUE) ;
- valid = psf_file_valid (psf) ;
- psf_use_rsrc (psf, SF_FALSE) ;
- if (! valid)
- { psf_log_printf (psf, "sd2_open : psf->rsrcdes < 0\n") ;
- return SFE_SD2_BAD_RSRC ;
- } ;
-
- error = sd2_parse_rsrc_fork (psf) ;
-
- if (error)
- goto error_cleanup ;
- } ;
-
- if ((psf->sf.format & SF_FORMAT_TYPEMASK) != SF_FORMAT_SD2)
- { error = SFE_BAD_OPEN_FORMAT ;
- goto error_cleanup ;
- } ;
-
- subformat = psf->sf.format & SF_FORMAT_SUBMASK ;
- psf->dataoffset = 0 ;
-
- /* Only open and write the resource in RDWR mode is its current length is zero. */
- if (psf->mode == SFM_WRITE || (psf->mode == SFM_RDWR && psf->rsrclength == 0))
- { psf_open_rsrc (psf, psf->mode) ;
-
- error = sd2_write_rsrc_fork (psf, SF_FALSE) ;
-
- if (error)
- goto error_cleanup ;
-
- /* Not needed. */
- psf->write_header = NULL ;
- } ;
-
- psf->container_close = sd2_close ;
-
- psf->blockwidth = psf->bytewidth * psf->sf.channels ;
-
- switch (subformat)
- { case SF_FORMAT_PCM_S8 : /* 8-bit linear PCM. */
- case SF_FORMAT_PCM_16 : /* 16-bit linear PCM. */
- case SF_FORMAT_PCM_24 : /* 24-bit linear PCM */
- error = pcm_init (psf) ;
- break ;
-
- default :
- error = SFE_UNIMPLEMENTED ;
- break ;
- } ;
-
- psf_fseek (psf, psf->dataoffset, SEEK_SET) ;
-
-error_cleanup:
-
- /* Close the resource fork regardless. We won't need it again. */
- psf_close_rsrc (psf) ;
-
- return error ;
-} /* sd2_open */
-
-/*------------------------------------------------------------------------------
-*/
-
-static int
-sd2_close (SF_PRIVATE *psf)
-{
- if (psf->mode == SFM_WRITE)
- { /* Now we know for certain the audio_length of the file we can re-write
- ** correct values for the FORM, 8SVX and BODY chunks.
- */
-
- } ;
-
- return 0 ;
-} /* sd2_close */
-
-/*------------------------------------------------------------------------------
-*/
-
-static inline void
-write_char (unsigned char * data, int offset, char value)
-{ data [offset] = value ;
-} /* write_char */
-
-static inline void
-write_short (unsigned char * data, int offset, short value)
-{ data [offset] = value >> 8 ;
- data [offset + 1] = value ;
-} /* write_char */
-
-static inline void
-write_int (unsigned char * data, int offset, int value)
-{ data [offset] = value >> 24 ;
- data [offset + 1] = value >> 16 ;
- data [offset + 2] = value >> 8 ;
- data [offset + 3] = value ;
-} /* write_int */
-
-static inline void
-write_marker (unsigned char * data, int offset, int value)
-{
- if (CPU_IS_BIG_ENDIAN)
- { data [offset] = value >> 24 ;
- data [offset + 1] = value >> 16 ;
- data [offset + 2] = value >> 8 ;
- data [offset + 3] = value ;
- }
- else
- { data [offset] = value ;
- data [offset + 1] = value >> 8 ;
- data [offset + 2] = value >> 16 ;
- data [offset + 3] = value >> 24 ;
- } ;
-} /* write_marker */
-
-static void
-write_str (unsigned char * data, int offset, char * buffer, int buffer_len)
-{ memcpy (data + offset, buffer, buffer_len) ;
-} /* write_str */
-
-static int
-sd2_write_rsrc_fork (SF_PRIVATE *psf, int UNUSED (calc_length))
-{ SD2_RSRC rsrc ;
- STR_RSRC str_rsrc [] =
- { { RSRC_STR, 1000, "_sample-size", "", 0 },
- { RSRC_STR, 1001, "_sample-rate", "", 0 },
- { RSRC_STR, 1002, "_channels", "", 0 },
- { RSRC_BIN, 1000, "_Markers", "", 8 }
- } ;
-
- int k, str_offset, data_offset, next_str ;
-
- psf_use_rsrc (psf, SF_TRUE) ;
-
- memset (&rsrc, 0, sizeof (rsrc)) ;
-
- rsrc.sample_rate = psf->sf.samplerate ;
- rsrc.sample_size = psf->bytewidth ;
- rsrc.channels = psf->sf.channels ;
-
- rsrc.rsrc_data = psf->header ;
- rsrc.rsrc_len = sizeof (psf->header) ;
- memset (rsrc.rsrc_data, 0xea, rsrc.rsrc_len) ;
-
- LSF_SNPRINTF (str_rsrc [0].value, sizeof (str_rsrc [0].value), "_%d", rsrc.sample_size) ;
- LSF_SNPRINTF (str_rsrc [1].value, sizeof (str_rsrc [1].value), "_%d.000000", rsrc.sample_rate) ;
- LSF_SNPRINTF (str_rsrc [2].value, sizeof (str_rsrc [2].value), "_%d", rsrc.channels) ;
-
- for (k = 0 ; k < ARRAY_LEN (str_rsrc) ; k++)
- { if (str_rsrc [k].value_len == 0)
- { str_rsrc [k].value_len = strlen (str_rsrc [k].value) ;
- str_rsrc [k].value [0] = str_rsrc [k].value_len - 1 ;
- } ;
-
- /* Turn name string into a pascal string. */
- str_rsrc [k].name [0] = strlen (str_rsrc [k].name) - 1 ;
- } ;
-
- rsrc.data_offset = 0x100 ;
-
- /*
- ** Calculate data length :
- ** length of strings, plus the length of the sdML chunk.
- */
- rsrc.data_length = 0 ;
- for (k = 0 ; k < ARRAY_LEN (str_rsrc) ; k++)
- rsrc.data_length += str_rsrc [k].value_len + 4 ;
-
- rsrc.map_offset = rsrc.data_offset + rsrc.data_length ;
-
- /* Very start of resource fork. */
- write_int (rsrc.rsrc_data, 0, rsrc.data_offset) ;
- write_int (rsrc.rsrc_data, 4, rsrc.map_offset) ;
- write_int (rsrc.rsrc_data, 8, rsrc.data_length) ;
-
- write_char (rsrc.rsrc_data, 0x30, strlen (psf->filename)) ;
- write_str (rsrc.rsrc_data, 0x31, psf->filename, strlen (psf->filename)) ;
-
- write_short (rsrc.rsrc_data, 0x50, 0) ;
- write_marker (rsrc.rsrc_data, 0x52, Sd2f_MARKER) ;
- write_marker (rsrc.rsrc_data, 0x56, lsf1_MARKER) ;
-
- /* Very start of resource map. */
- write_int (rsrc.rsrc_data, rsrc.map_offset + 0, rsrc.data_offset) ;
- write_int (rsrc.rsrc_data, rsrc.map_offset + 4, rsrc.map_offset) ;
- write_int (rsrc.rsrc_data, rsrc.map_offset + 8, rsrc.data_length) ;
-
- /* These I don't currently understand. */
- if (1)
- { write_char (rsrc.rsrc_data, rsrc.map_offset+ 16, 1) ;
- /* Next resource map. */
- write_int (rsrc.rsrc_data, rsrc.map_offset + 17, 0x12345678) ;
- /* File ref number. */
- write_short (rsrc.rsrc_data, rsrc.map_offset + 21, 0xabcd) ;
- /* Fork attributes. */
- write_short (rsrc.rsrc_data, rsrc.map_offset + 23, 0) ;
- } ;
-
- /* Resource type offset. */
- rsrc.type_offset = rsrc.map_offset + 30 ;
- write_short (rsrc.rsrc_data, rsrc.map_offset + 24, rsrc.type_offset - rsrc.map_offset - 2) ;
-
- /* Type index max. */
- rsrc.type_count = 2 ;
- write_short (rsrc.rsrc_data, rsrc.map_offset + 28, rsrc.type_count - 1) ;
-
- rsrc.item_offset = rsrc.type_offset + rsrc.type_count * 8 ;
-
- rsrc.str_count = ARRAY_LEN (str_rsrc) ;
- rsrc.string_offset = rsrc.item_offset + (rsrc.str_count + 1) * 12 - rsrc.map_offset ;
- write_short (rsrc.rsrc_data, rsrc.map_offset + 26, rsrc.string_offset) ;
-
- /* Write 'STR ' resource type. */
- rsrc.str_count = 3 ;
- write_marker (rsrc.rsrc_data, rsrc.type_offset, STR_MARKER) ;
- write_short (rsrc.rsrc_data, rsrc.type_offset + 4, rsrc.str_count - 1) ;
- write_short (rsrc.rsrc_data, rsrc.type_offset + 6, 0x12) ;
-
- /* Write 'sdML' resource type. */
- write_marker (rsrc.rsrc_data, rsrc.type_offset + 8, sdML_MARKER) ;
- write_short (rsrc.rsrc_data, rsrc.type_offset + 12, 0) ;
- write_short (rsrc.rsrc_data, rsrc.type_offset + 14, 0x36) ;
-
- str_offset = rsrc.map_offset + rsrc.string_offset ;
- next_str = 0 ;
- data_offset = rsrc.data_offset ;
- for (k = 0 ; k < ARRAY_LEN (str_rsrc) ; k++)
- { write_str (rsrc.rsrc_data, str_offset, str_rsrc [k].name, strlen (str_rsrc [k].name)) ;
-
- write_short (rsrc.rsrc_data, rsrc.item_offset + k * 12, str_rsrc [k].id) ;
- write_short (rsrc.rsrc_data, rsrc.item_offset + k * 12 + 2, next_str) ;
-
- str_offset += strlen (str_rsrc [k].name) ;
- next_str += strlen (str_rsrc [k].name) ;
-
- write_int (rsrc.rsrc_data, rsrc.item_offset + k * 12 + 4, data_offset - rsrc.data_offset) ;
-
- write_int (rsrc.rsrc_data, data_offset, str_rsrc [k].value_len) ;
- write_str (rsrc.rsrc_data, data_offset + 4, str_rsrc [k].value, str_rsrc [k].value_len) ;
- data_offset += 4 + str_rsrc [k].value_len ;
- } ;
-
- /* Finally, calculate and set map length. */
- rsrc.map_length = str_offset - rsrc.map_offset ;
- write_int (rsrc.rsrc_data, 12, rsrc.map_length) ;
- write_int (rsrc.rsrc_data, rsrc.map_offset + 12, rsrc.map_length) ;
-
- rsrc.rsrc_len = rsrc.map_offset + rsrc.map_length ;
-
- psf_fwrite (rsrc.rsrc_data, rsrc.rsrc_len, 1, psf) ;
-
- psf_use_rsrc (psf, SF_FALSE) ;
-
- if (psf->error)
- return psf->error ;
-
- return 0 ;
-} /* sd2_write_rsrc_fork */
-
-/*------------------------------------------------------------------------------
-*/
-
-static inline int
-read_char (const unsigned char * data, int offset)
-{ return data [offset] ;
-} /* read_char */
-
-static inline int
-read_short (const unsigned char * data, int offset)
-{ return (data [offset] << 8) + data [offset + 1] ;
-} /* read_short */
-
-static inline int
-read_int (const unsigned char * data, int offset)
-{ return (data [offset] << 24) + (data [offset + 1] << 16) + (data [offset + 2] << 8) + data [offset + 3] ;
-} /* read_int */
-
-static inline int
-read_marker (const unsigned char * data, int offset)
-{
- if (CPU_IS_BIG_ENDIAN)
- return (data [offset] << 24) + (data [offset + 1] << 16) + (data [offset + 2] << 8) + data [offset + 3] ;
- else if (CPU_IS_LITTLE_ENDIAN)
- return data [offset] + (data [offset + 1] << 8) + (data [offset + 2] << 16) + (data [offset + 3] << 24) ;
- else
- return 0x666 ;
-} /* read_marker */
-
-static void
-read_str (const unsigned char * data, int offset, char * buffer, int buffer_len)
-{ int k ;
-
- memset (buffer, 0, buffer_len) ;
-
- for (k = 0 ; k < buffer_len - 1 ; k++)
- { if (isprint (data [offset + k]) == 0)
- return ;
- buffer [k] = data [offset + k] ;
- } ;
- return ;
-} /* read_str */
-
-static int
-sd2_parse_rsrc_fork (SF_PRIVATE *psf)
-{ SD2_RSRC rsrc ;
- int k, marker, error = 0 ;
-
- psf_use_rsrc (psf, SF_TRUE) ;
-
- memset (&rsrc, 0, sizeof (rsrc)) ;
-
- rsrc.rsrc_len = psf_get_filelen (psf) ;
- psf_log_printf (psf, "Resource length : %d (0x%04X)\n", rsrc.rsrc_len, rsrc.rsrc_len) ;
-
- if (rsrc.rsrc_len > SIGNED_SIZEOF (psf->header))
- rsrc.rsrc_data = calloc (1, rsrc.rsrc_len) ;
- else
- rsrc.rsrc_data = psf->header ;
-
- /* Read in the whole lot. */
- psf_fread (rsrc.rsrc_data, rsrc.rsrc_len, 1, psf) ;
-
- /* Reset the header storage because we have changed to the rsrcdes. */
- psf->headindex = psf->headend = rsrc.rsrc_len ;
-
- rsrc.data_offset = read_int (rsrc.rsrc_data, 0) ;
- rsrc.map_offset = read_int (rsrc.rsrc_data, 4) ;
- rsrc.data_length = read_int (rsrc.rsrc_data, 8) ;
- rsrc.map_length = read_int (rsrc.rsrc_data, 12) ;
-
- if (rsrc.data_offset == 0x51607 && rsrc.map_offset == 0x20000)
- { psf_log_printf (psf, "Trying offset of 0x52 bytes.\n") ;
- rsrc.data_offset = read_int (rsrc.rsrc_data, 0x52 + 0) + 0x52 ;
- rsrc.map_offset = read_int (rsrc.rsrc_data, 0x52 + 4) + 0x52 ;
- rsrc.data_length = read_int (rsrc.rsrc_data, 0x52 + 8) ;
- rsrc.map_length = read_int (rsrc.rsrc_data, 0x52 + 12) ;
- } ;
-
- psf_log_printf (psf, " data offset : 0x%04X\n map offset : 0x%04X\n"
- " data length : 0x%04X\n map length : 0x%04X\n",
- rsrc.data_offset, rsrc.map_offset, rsrc.data_length, rsrc.map_length) ;
-
- if (rsrc.data_offset > rsrc.rsrc_len)
- { psf_log_printf (psf, "Error : rsrc.data_offset (%d, 0x%x) > len\n", rsrc.data_offset, rsrc.data_offset) ;
- error = SFE_SD2_BAD_DATA_OFFSET ;
- goto parse_rsrc_fork_cleanup ;
- } ;
-
- if (rsrc.map_offset > rsrc.rsrc_len)
- { psf_log_printf (psf, "Error : rsrc.map_offset > len\n") ;
- error = SFE_SD2_BAD_MAP_OFFSET ;
- goto parse_rsrc_fork_cleanup ;
- } ;
-
- if (rsrc.data_length > rsrc.rsrc_len)
- { psf_log_printf (psf, "Error : rsrc.data_length > len\n") ;
- error = SFE_SD2_BAD_DATA_LENGTH ;
- goto parse_rsrc_fork_cleanup ;
- } ;
-
- if (rsrc.map_length > rsrc.rsrc_len)
- { psf_log_printf (psf, "Error : rsrc.map_length > len\n") ;
- error = SFE_SD2_BAD_MAP_LENGTH ;
- goto parse_rsrc_fork_cleanup ;
- } ;
-
- if (rsrc.data_offset + rsrc.data_length != rsrc.map_offset || rsrc.map_offset + rsrc.map_length != rsrc.rsrc_len)
- { psf_log_printf (psf, "Error : This does not look like a MacOSX resource fork.\n") ;
- error = SFE_SD2_BAD_RSRC ;
- goto parse_rsrc_fork_cleanup ;
- } ;
-
- rsrc.string_offset = rsrc.map_offset + read_short (rsrc.rsrc_data, rsrc.map_offset + 26) ;
- if (rsrc.string_offset > rsrc.rsrc_len)
- { psf_log_printf (psf, "Bad string offset (%d).\n", rsrc.string_offset) ;
- error = SFE_SD2_BAD_RSRC ;
- goto parse_rsrc_fork_cleanup ;
- } ;
-
- rsrc.type_offset = rsrc.map_offset + 30 ;
-
- rsrc.type_count = read_short (rsrc.rsrc_data, rsrc.map_offset + 28) + 1 ;
- if (rsrc.type_count < 1)
- { psf_log_printf (psf, "Bad type count.\n") ;
- error = SFE_SD2_BAD_RSRC ;
- goto parse_rsrc_fork_cleanup ;
- } ;
-
- rsrc.item_offset = rsrc.type_offset + rsrc.type_count * 8 ;
- if (rsrc.item_offset < 0 || rsrc.item_offset > rsrc.rsrc_len)
- { psf_log_printf (psf, "Bad item offset (%d).\n", rsrc.item_offset) ;
- error = SFE_SD2_BAD_RSRC ;
- goto parse_rsrc_fork_cleanup ;
- } ;
-
- rsrc.str_index = -1 ;
- for (k = 0 ; k < rsrc.type_count ; k ++)
- { marker = read_marker (rsrc.rsrc_data, rsrc.type_offset + k * 8) ;
-
- if (marker == STR_MARKER)
- { rsrc.str_index = k ;
- rsrc.str_count = read_short (rsrc.rsrc_data, rsrc.type_offset + k * 8 + 4) + 1 ;
- error = parse_str_rsrc (psf, &rsrc) ;
- goto parse_rsrc_fork_cleanup ;
- } ;
- } ;
-
- psf_log_printf (psf, "No 'STR ' resource.\n") ;
- error = SFE_SD2_BAD_RSRC ;
-
-parse_rsrc_fork_cleanup :
-
- psf_use_rsrc (psf, SF_FALSE) ;
-
- if ((void *) rsrc.rsrc_data < (void *) psf || (void *) rsrc.rsrc_data > (void *) (psf + 1))
- free (rsrc.rsrc_data) ;
-
- return error ;
-} /* sd2_parse_rsrc_fork */
-
-static int
-parse_str_rsrc (SF_PRIVATE *psf, SD2_RSRC * rsrc)
-{ char name [32], value [32] ;
- int k, str_offset, data_offset, data_len, rsrc_id ;
-
- psf_log_printf (psf, "Finding parameters :\n") ;
-
- str_offset = rsrc->string_offset ;
- for (k = 0 ; k < rsrc->str_count ; k++)
- { int slen ;
-
- slen = read_char (rsrc->rsrc_data, str_offset) ;
- read_str (rsrc->rsrc_data, str_offset + 1, name, SF_MIN (SIGNED_SIZEOF (name), slen + 1)) ;
- str_offset += slen + 1 ;
-
- rsrc_id = read_short (rsrc->rsrc_data, rsrc->item_offset + k * 12) ;
-
- data_offset = rsrc->data_offset + read_int (rsrc->rsrc_data, rsrc->item_offset + k * 12 + 4) ;
- if (data_offset < 0 || data_offset > rsrc->rsrc_len)
- { psf_log_printf (psf, "Bad data offset (%d)\n", data_offset) ;
- return SFE_SD2_BAD_DATA_OFFSET ;
- } ;
-
- data_len = read_int (rsrc->rsrc_data, data_offset) ;
- if (data_len < 0 || data_len > rsrc->rsrc_len)
- { psf_log_printf (psf, "Bad data length (%d).\n", data_len) ;
- return SFE_SD2_BAD_RSRC ;
- } ;
-
- slen = read_char (rsrc->rsrc_data, data_offset + 4) ;
- read_str (rsrc->rsrc_data, data_offset + 5, value, SF_MIN (SIGNED_SIZEOF (value), slen + 1)) ;
-
- psf_log_printf (psf, " %-12s 0x%04x %4d %2d %2d '%s'\n", name, data_offset, rsrc_id, data_len, slen, value) ;
-
- if (strcmp (name, "sample-size") == 0 && rsrc->sample_size == 0)
- rsrc->sample_size = strtol (value, NULL, 10) ;
- else if (strcmp (name, "sample-rate") == 0 && rsrc->sample_rate == 0)
- rsrc->sample_rate = strtol (value, NULL, 10) ;
- else if (strcmp (name, "channels") == 0 && rsrc->channels == 0)
- rsrc->channels = strtol (value, NULL, 10) ;
- } ;
-
- if (rsrc->sample_rate < 0)
- { psf_log_printf (psf, "Bad sample rate (%d)\n", rsrc->sample_rate) ;
- return SFE_SD2_BAD_RSRC ;
- } ;
-
- if (rsrc->channels < 0)
- { psf_log_printf (psf, "Bad channel count (%d)\n", rsrc->channels) ;
- return SFE_SD2_BAD_RSRC ;
- } ;
-
- psf->sf.samplerate = rsrc->sample_rate ;
- psf->sf.channels = rsrc->channels ;
- psf->bytewidth = rsrc->sample_size ;
-
- switch (rsrc->sample_size)
- { case 1 :
- psf->sf.format = SF_FORMAT_SD2 | SF_FORMAT_PCM_S8 ;
- break ;
-
- case 2 :
- psf->sf.format = SF_FORMAT_SD2 | SF_FORMAT_PCM_16 ;
- break ;
-
- case 3 :
- psf->sf.format = SF_FORMAT_SD2 | SF_FORMAT_PCM_24 ;
- break ;
-
- default :
- psf_log_printf (psf, "Bad sample size (%d)\n", rsrc->sample_size) ;
- return SFE_SD2_BAD_SAMPLE_SIZE ;
- } ;
-
- psf_log_printf (psf, "ok\n") ;
-
- return 0 ;
-} /* parse_str_rsrc */
-
-/*
-** Do not edit or modify anything in this comment block.
-** The arch-tag line is a file identity tag for the GNU Arch
-** revision control system.
-**
-** arch-tag: 1ee183e5-6b9f-4c2c-bd0a-24f35595cefc
-*/
diff --git a/libs/libsndfile/src/sds.c b/libs/libsndfile/src/sds.c
deleted file mode 100644
index 3769bf021c..0000000000
--- a/libs/libsndfile/src/sds.c
+++ /dev/null
@@ -1,993 +0,0 @@
-/*
-** Copyright (C) 2002-2005 Erik de Castro Lopo <erikd@mega-nerd.com>
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU Lesser General Public License as published by
-** the Free Software Foundation; either version 2.1 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU Lesser General Public License for more details.
-**
-** You should have received a copy of the GNU Lesser General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-*/
-
-#include "sfconfig.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <fcntl.h>
-#include <string.h>
-#include <ctype.h>
-
-#include "sndfile.h"
-#include "sfendian.h"
-#include "common.h"
-#include "float_cast.h"
-
-/*------------------------------------------------------------------------------
-*/
-
-#define SDS_DATA_OFFSET 0x15
-#define SDS_BLOCK_SIZE 127
-
-#define SDS_AUDIO_BYTES_PER_BLOCK 120
-
-#define SDS_3BYTE_TO_INT_DECODE(x) (((x) & 0x7F) | (((x) & 0x7F00) >> 1) | (((x) & 0x7F0000) >> 2))
-#define SDS_INT_TO_3BYTE_ENCODE(x) (((x) & 0x7F) | (((x) << 1) & 0x7F00) | (((x) << 2) & 0x7F0000))
-
-/*------------------------------------------------------------------------------
-** Typedefs.
-*/
-
-typedef struct tag_SDS_PRIVATE
-{ int bitwidth, frames ;
- int samplesperblock, total_blocks ;
-
- int (*reader) (SF_PRIVATE *psf, struct tag_SDS_PRIVATE *psds) ;
- int (*writer) (SF_PRIVATE *psf, struct tag_SDS_PRIVATE *psds) ;
-
- int read_block, read_count ;
- unsigned char read_data [SDS_BLOCK_SIZE] ;
- int read_samples [SDS_BLOCK_SIZE / 2] ; /* Maximum samples per block */
-
- int write_block, write_count ;
- unsigned char write_data [SDS_BLOCK_SIZE] ;
- int write_samples [SDS_BLOCK_SIZE / 2] ; /* Maximum samples per block */
-} SDS_PRIVATE ;
-
-/*------------------------------------------------------------------------------
-** Private static functions.
-*/
-
-static int sds_close (SF_PRIVATE *psf) ;
-
-static int sds_write_header (SF_PRIVATE *psf, int calc_length) ;
-static int sds_read_header (SF_PRIVATE *psf, SDS_PRIVATE *psds) ;
-
-static int sds_init (SF_PRIVATE *psf, SDS_PRIVATE *psds) ;
-
-static sf_count_t sds_read_s (SF_PRIVATE *psf, short *ptr, sf_count_t len) ;
-static sf_count_t sds_read_i (SF_PRIVATE *psf, int *ptr, sf_count_t len) ;
-static sf_count_t sds_read_f (SF_PRIVATE *psf, float *ptr, sf_count_t len) ;
-static sf_count_t sds_read_d (SF_PRIVATE *psf, double *ptr, sf_count_t len) ;
-
-static sf_count_t sds_write_s (SF_PRIVATE *psf, const short *ptr, sf_count_t len) ;
-static sf_count_t sds_write_i (SF_PRIVATE *psf, const int *ptr, sf_count_t len) ;
-static sf_count_t sds_write_f (SF_PRIVATE *psf, const float *ptr, sf_count_t len) ;
-static sf_count_t sds_write_d (SF_PRIVATE *psf, const double *ptr, sf_count_t len) ;
-
-static sf_count_t sds_seek (SF_PRIVATE *psf, int mode, sf_count_t offset) ;
-
-static int sds_2byte_read (SF_PRIVATE *psf, SDS_PRIVATE *psds) ;
-static int sds_3byte_read (SF_PRIVATE *psf, SDS_PRIVATE *psds) ;
-static int sds_4byte_read (SF_PRIVATE *psf, SDS_PRIVATE *psds) ;
-
-static int sds_read (SF_PRIVATE *psf, SDS_PRIVATE *psds, int *iptr, int readcount) ;
-
-static int sds_2byte_write (SF_PRIVATE *psf, SDS_PRIVATE *psds) ;
-static int sds_3byte_write (SF_PRIVATE *psf, SDS_PRIVATE *psds) ;
-static int sds_4byte_write (SF_PRIVATE *psf, SDS_PRIVATE *psds) ;
-
-static int sds_write (SF_PRIVATE *psf, SDS_PRIVATE *psds, const int *iptr, int writecount) ;
-
-/*------------------------------------------------------------------------------
-** Public function.
-*/
-
-int
-sds_open (SF_PRIVATE *psf)
-{ SDS_PRIVATE *psds ;
- int error = 0 ;
-
- /* Hmmmm, need this here to pass update_header_test. */
- psf->sf.frames = 0 ;
-
- if (! (psds = calloc (1, sizeof (SDS_PRIVATE))))
- return SFE_MALLOC_FAILED ;
- psf->fdata = psds ;
-
- if (psf->mode == SFM_READ || (psf->mode == SFM_RDWR && psf->filelength > 0))
- { if ((error = sds_read_header (psf, psds)))
- return error ;
- } ;
-
- if ((psf->sf.format & SF_FORMAT_TYPEMASK) != SF_FORMAT_SDS)
- return SFE_BAD_OPEN_FORMAT ;
-
- if (psf->mode == SFM_WRITE || psf->mode == SFM_RDWR)
- { if (sds_write_header (psf, SF_FALSE))
- return psf->error ;
-
- psf->write_header = sds_write_header ;
-
- psf_fseek (psf, SDS_DATA_OFFSET, SEEK_SET) ;
- } ;
-
- if ((error = sds_init (psf, psds)) != 0)
- return error ;
-
- psf->seek = sds_seek ;
- psf->container_close = sds_close ;
-
- psf->blockwidth = 0 ;
-
- return error ;
-} /* sds_open */
-
-/*------------------------------------------------------------------------------
-*/
-
-static int
-sds_close (SF_PRIVATE *psf)
-{
- if (psf->mode == SFM_WRITE || psf->mode == SFM_RDWR)
- { SDS_PRIVATE *psds ;
-
- if ((psds = (SDS_PRIVATE *) psf->fdata) == NULL)
- { psf_log_printf (psf, "*** Bad psf->fdata ptr.\n") ;
- return SFE_INTERNAL ;
- } ;
-
- if (psds->write_count > 0)
- { memset (&(psds->write_data [psds->write_count]), 0, (psds->samplesperblock - psds->write_count) * sizeof (int)) ;
- psds->writer (psf, psds) ;
- } ;
-
- sds_write_header (psf, SF_TRUE) ;
- } ;
-
- return 0 ;
-} /* sds_close */
-
-static int
-sds_init (SF_PRIVATE *psf, SDS_PRIVATE *psds)
-{
- if (psds->bitwidth < 8 || psds->bitwidth > 28)
- return (psf->error = SFE_SDS_BAD_BIT_WIDTH) ;
-
- if (psds->bitwidth < 14)
- { psds->reader = sds_2byte_read ;
- psds->writer = sds_2byte_write ;
- psds->samplesperblock = SDS_AUDIO_BYTES_PER_BLOCK / 2 ;
- }
- else if (psds->bitwidth < 21)
- { psds->reader = sds_3byte_read ;
- psds->writer = sds_3byte_write ;
- psds->samplesperblock = SDS_AUDIO_BYTES_PER_BLOCK / 3 ;
- }
- else
- { psds->reader = sds_4byte_read ;
- psds->writer = sds_4byte_write ;
- psds->samplesperblock = SDS_AUDIO_BYTES_PER_BLOCK / 4 ;
- } ;
-
- if (psf->mode == SFM_READ || psf->mode == SFM_RDWR)
- { psf->read_short = sds_read_s ;
- psf->read_int = sds_read_i ;
- psf->read_float = sds_read_f ;
- psf->read_double = sds_read_d ;
-
- /* Read first block. */
- psds->reader (psf, psds) ;
- } ;
-
- if (psf->mode == SFM_WRITE || psf->mode == SFM_RDWR)
- { psf->write_short = sds_write_s ;
- psf->write_int = sds_write_i ;
- psf->write_float = sds_write_f ;
- psf->write_double = sds_write_d ;
- } ;
-
- return 0 ;
-} /* sds_init */
-
-static int
-sds_read_header (SF_PRIVATE *psf, SDS_PRIVATE *psds)
-{ unsigned char channel, bitwidth, loop_type, byte ;
- unsigned short sample_no, marker ;
- unsigned int samp_period, data_length, sustain_loop_start, sustain_loop_end ;
- int bytesread, blockcount ;
-
- /* Set position to start of file to begin reading header. */
- bytesread = psf_binheader_readf (psf, "pE211", 0, &marker, &channel, &byte) ;
-
- if (marker != 0xF07E || byte != 0x01)
- return SFE_SDS_NOT_SDS ;
-
- psf_log_printf (psf, "Midi Sample Dump Standard (.sds)\nF07E\n Midi Channel : %d\n", channel) ;
-
- bytesread += psf_binheader_readf (psf, "e213", &sample_no, &bitwidth, &samp_period) ;
-
- sample_no = SDS_3BYTE_TO_INT_DECODE (sample_no) ;
- samp_period = SDS_3BYTE_TO_INT_DECODE (samp_period) ;
-
- psds->bitwidth = bitwidth ;
-
- psf->sf.samplerate = 1000000000 / samp_period ;
-
- psf_log_printf (psf, " Sample Number : %d\n"
- " Bit Width : %d\n"
- " Sample Rate : %d\n",
- sample_no, psds->bitwidth, psf->sf.samplerate) ;
-
- bytesread += psf_binheader_readf (psf, "e3331", &data_length, &sustain_loop_start, &sustain_loop_end, &loop_type) ;
-
- data_length = SDS_3BYTE_TO_INT_DECODE (data_length) ;
-
- sustain_loop_start = SDS_3BYTE_TO_INT_DECODE (sustain_loop_start) ;
- sustain_loop_end = SDS_3BYTE_TO_INT_DECODE (sustain_loop_end) ;
-
- psf_log_printf (psf, " Sustain Loop\n"
- " Start : %d\n"
- " End : %d\n"
- " Loop Type : %d\n",
- sustain_loop_start, sustain_loop_end, loop_type) ;
-
- psf->dataoffset = SDS_DATA_OFFSET ;
- psf->datalength = psf->filelength - psf->dataoffset ;
-
- if (data_length != psf->filelength - psf->dataoffset)
- { psf_log_printf (psf, " Datalength : %d (truncated data??? %d)\n", data_length, psf->filelength - psf->dataoffset) ;
- data_length = psf->filelength - psf->dataoffset ;
- }
- else
- psf_log_printf (psf, " Datalength : %d\n", data_length) ;
-
- bytesread += psf_binheader_readf (psf, "1", &byte) ;
- if (byte != 0xF7)
- psf_log_printf (psf, "bad end : %X\n", byte & 0xFF) ;
-
- for (blockcount = 0 ; bytesread < psf->filelength ; blockcount++)
- {
- bytesread += psf_fread (&marker, 1, 2, psf) ;
-
- if (marker == 0)
- break ;
-
- psf_fseek (psf, SDS_BLOCK_SIZE - 2, SEEK_CUR) ;
- bytesread += SDS_BLOCK_SIZE - 2 ;
- } ;
-
- psf_log_printf (psf, "\nBlocks : %d\n", blockcount) ;
- psds->total_blocks = blockcount ;
-
- psds->samplesperblock = SDS_AUDIO_BYTES_PER_BLOCK / ((psds->bitwidth + 6) / 7) ;
- psf_log_printf (psf, "Samples/Block : %d\n", psds->samplesperblock) ;
-
- psf_log_printf (psf, "Frames : %d\n", blockcount * psds->samplesperblock) ;
-
- psf->sf.frames = blockcount * psds->samplesperblock ;
- psds->frames = blockcount * psds->samplesperblock ;
-
- /* Always Mono */
- psf->sf.channels = 1 ;
- psf->sf.sections = 1 ;
-
- /*
- ** Lie to the user about PCM bit width. Always round up to
- ** the next multiple of 8.
- */
- switch ((psds->bitwidth + 7) / 8)
- { case 1 :
- psf->sf.format = SF_FORMAT_SDS | SF_FORMAT_PCM_S8 ;
- break ;
-
- case 2 :
- psf->sf.format = SF_FORMAT_SDS | SF_FORMAT_PCM_16 ;
- break ;
-
- case 3 :
- psf->sf.format = SF_FORMAT_SDS | SF_FORMAT_PCM_24 ;
- break ;
-
- case 4 :
- psf->sf.format = SF_FORMAT_SDS | SF_FORMAT_PCM_32 ;
- break ;
-
- default :
- psf_log_printf (psf, "*** Weird byte width (%d)\n", (psds->bitwidth + 7) / 8) ;
- return SFE_SDS_BAD_BIT_WIDTH ;
- } ;
-
- psf_fseek (psf, SDS_DATA_OFFSET, SEEK_SET) ;
-
- return 0 ;
-} /* sds_read_header */
-
-static int
-sds_write_header (SF_PRIVATE *psf, int calc_length)
-{ SDS_PRIVATE *psds ;
- sf_count_t current ;
- int samp_period, data_length, sustain_loop_start, sustain_loop_end ;
- unsigned char loop_type = 0 ;
-
- if ((psds = (SDS_PRIVATE *) psf->fdata) == NULL)
- { psf_log_printf (psf, "*** Bad psf->fdata ptr.\n") ;
- return SFE_INTERNAL ;
- } ;
-
- if (psf->pipeoffset > 0)
- return 0 ;
-
- current = psf_ftell (psf) ;
-
- if (calc_length)
- psf->sf.frames = psds->total_blocks * psds->samplesperblock + psds->write_count ;
-
- if (psds->write_count > 0)
- { int current_count = psds->write_count ;
- int current_block = psds->write_block ;
-
- psds->writer (psf, psds) ;
-
- psf_fseek (psf, -1 * SDS_BLOCK_SIZE, SEEK_CUR) ;
-
- psds->write_count = current_count ;
- psds->write_block = current_block ;
- } ;
-
- /* Reset the current header length to zero. */
- psf->header [0] = 0 ;
- psf->headindex = 0 ;
-
- if (psf->is_pipe == SF_FALSE)
- psf_fseek (psf, 0, SEEK_SET) ;
-
- psf_binheader_writef (psf, "E211", 0xF07E, 0, 1) ;
-
- switch (psf->sf.format & SF_FORMAT_SUBMASK)
- { case SF_FORMAT_PCM_S8 :
- psds->bitwidth = 8 ;
- break ;
- case SF_FORMAT_PCM_16 :
- psds->bitwidth = 16 ;
- break ;
- case SF_FORMAT_PCM_24 :
- psds->bitwidth = 24 ;
- break ;
- default:
- return SFE_SDS_BAD_BIT_WIDTH ;
- } ;
-
- samp_period = SDS_INT_TO_3BYTE_ENCODE (1000000000 / psf->sf.samplerate) ;
-
- psf_binheader_writef (psf, "e213", 0, psds->bitwidth, samp_period) ;
-
- data_length = SDS_INT_TO_3BYTE_ENCODE (psds->total_blocks * SDS_BLOCK_SIZE) ;
- sustain_loop_start = SDS_INT_TO_3BYTE_ENCODE (0) ;
- sustain_loop_end = SDS_INT_TO_3BYTE_ENCODE (psf->sf.frames) ;
-
- psf_binheader_writef (psf, "e33311", data_length, sustain_loop_start, sustain_loop_end, loop_type, 0xF7) ;
-
- /* Header construction complete so write it out. */
- psf_fwrite (psf->header, psf->headindex, 1, psf) ;
-
- if (psf->error)
- return psf->error ;
-
- psf->dataoffset = psf->headindex ;
- psf->datalength = psds->write_block * SDS_BLOCK_SIZE ;
-
- if (current > 0)
- psf_fseek (psf, current, SEEK_SET) ;
-
- return psf->error ;
-} /* sds_write_header */
-
-
-/*------------------------------------------------------------------------------
-*/
-
-static int
-sds_2byte_read (SF_PRIVATE *psf, SDS_PRIVATE *psds)
-{ unsigned char *ucptr, checksum ;
- unsigned int sample ;
- int k ;
-
- psds->read_block ++ ;
- psds->read_count = 0 ;
-
- if (psds->read_block * psds->samplesperblock > psds->frames)
- { memset (psds->read_samples, 0, psds->samplesperblock * sizeof (int)) ;
- return 1 ;
- } ;
-
- if ((k = psf_fread (psds->read_data, 1, SDS_BLOCK_SIZE, psf)) != SDS_BLOCK_SIZE)
- psf_log_printf (psf, "*** Warning : short read (%d != %d).\n", k, SDS_BLOCK_SIZE) ;
-
- if (psds->read_data [0] != 0xF0)
- { printf ("Error A : %02X\n", psds->read_data [0] & 0xFF) ;
- } ;
-
- checksum = psds->read_data [1] ;
- if (checksum != 0x7E)
- { printf ("Error 1 : %02X\n", checksum & 0xFF) ;
- }
-
- for (k = 2 ; k < SDS_BLOCK_SIZE - 3 ; k ++)
- checksum ^= psds->read_data [k] ;
-
- checksum &= 0x7F ;
-
- if (checksum != psds->read_data [SDS_BLOCK_SIZE - 2])
- { psf_log_printf (psf, "Block %d : checksum is %02X should be %02X\n", psds->read_data [4], checksum, psds->read_data [SDS_BLOCK_SIZE - 2]) ;
- } ;
-
- ucptr = psds->read_data + 5 ;
- for (k = 0 ; k < 120 ; k += 2)
- { sample = (ucptr [k] << 25) + (ucptr [k + 1] << 18) ;
- psds->read_samples [k / 2] = (int) (sample - 0x80000000) ;
- } ;
-
- return 1 ;
-} /* sds_2byte_read */
-
-static int
-sds_3byte_read (SF_PRIVATE *psf, SDS_PRIVATE *psds)
-{ unsigned char *ucptr, checksum ;
- unsigned int sample ;
- int k ;
-
- psds->read_block ++ ;
- psds->read_count = 0 ;
-
- if (psds->read_block * psds->samplesperblock > psds->frames)
- { memset (psds->read_samples, 0, psds->samplesperblock * sizeof (int)) ;
- return 1 ;
- } ;
-
- if ((k = psf_fread (psds->read_data, 1, SDS_BLOCK_SIZE, psf)) != SDS_BLOCK_SIZE)
- psf_log_printf (psf, "*** Warning : short read (%d != %d).\n", k, SDS_BLOCK_SIZE) ;
-
- if (psds->read_data [0] != 0xF0)
- { printf ("Error A : %02X\n", psds->read_data [0] & 0xFF) ;
- } ;
-
- checksum = psds->read_data [1] ;
- if (checksum != 0x7E)
- { printf ("Error 1 : %02X\n", checksum & 0xFF) ;
- }
-
- for (k = 2 ; k < SDS_BLOCK_SIZE - 3 ; k ++)
- checksum ^= psds->read_data [k] ;
-
- checksum &= 0x7F ;
-
- if (checksum != psds->read_data [SDS_BLOCK_SIZE - 2])
- { psf_log_printf (psf, "Block %d : checksum is %02X should be %02X\n", psds->read_data [4], checksum, psds->read_data [SDS_BLOCK_SIZE - 2]) ;
- } ;
-
- ucptr = psds->read_data + 5 ;
- for (k = 0 ; k < 120 ; k += 3)
- { sample = (ucptr [k] << 25) + (ucptr [k + 1] << 18) + (ucptr [k + 2] << 11) ;
- psds->read_samples [k / 3] = (int) (sample - 0x80000000) ;
- } ;
-
- return 1 ;
-} /* sds_3byte_read */
-
-static int
-sds_4byte_read (SF_PRIVATE *psf, SDS_PRIVATE *psds)
-{ unsigned char *ucptr, checksum ;
- unsigned int sample ;
- int k ;
-
- psds->read_block ++ ;
- psds->read_count = 0 ;
-
- if (psds->read_block * psds->samplesperblock > psds->frames)
- { memset (psds->read_samples, 0, psds->samplesperblock * sizeof (int)) ;
- return 1 ;
- } ;
-
- if ((k = psf_fread (psds->read_data, 1, SDS_BLOCK_SIZE, psf)) != SDS_BLOCK_SIZE)
- psf_log_printf (psf, "*** Warning : short read (%d != %d).\n", k, SDS_BLOCK_SIZE) ;
-
- if (psds->read_data [0] != 0xF0)
- { printf ("Error A : %02X\n", psds->read_data [0] & 0xFF) ;
- } ;
-
- checksum = psds->read_data [1] ;
- if (checksum != 0x7E)
- { printf ("Error 1 : %02X\n", checksum & 0xFF) ;
- }
-
- for (k = 2 ; k < SDS_BLOCK_SIZE - 3 ; k ++)
- checksum ^= psds->read_data [k] ;
-
- checksum &= 0x7F ;
-
- if (checksum != psds->read_data [SDS_BLOCK_SIZE - 2])
- { psf_log_printf (psf, "Block %d : checksum is %02X should be %02X\n", psds->read_data [4], checksum, psds->read_data [SDS_BLOCK_SIZE - 2]) ;
- } ;
-
- ucptr = psds->read_data + 5 ;
- for (k = 0 ; k < 120 ; k += 4)
- { sample = (ucptr [k] << 25) + (ucptr [k + 1] << 18) + (ucptr [k + 2] << 11) + (ucptr [k + 3] << 4) ;
- psds->read_samples [k / 4] = (int) (sample - 0x80000000) ;
- } ;
-
- return 1 ;
-} /* sds_4byte_read */
-
-
-static sf_count_t
-sds_read_s (SF_PRIVATE *psf, short *ptr, sf_count_t len)
-{ SDS_PRIVATE *psds ;
- int *iptr ;
- int k, bufferlen, readcount, count ;
- sf_count_t total = 0 ;
-
- if (psf->fdata == NULL)
- return 0 ;
- psds = (SDS_PRIVATE*) psf->fdata ;
-
- iptr = psf->u.ibuf ;
- bufferlen = ARRAY_LEN (psf->u.ibuf) ;
- while (len > 0)
- { readcount = (len >= bufferlen) ? bufferlen : len ;
- count = sds_read (psf, psds, iptr, readcount) ;
- for (k = 0 ; k < readcount ; k++)
- ptr [total + k] = iptr [k] >> 16 ;
- total += count ;
- len -= readcount ;
- } ;
-
- return total ;
-} /* sds_read_s */
-
-static sf_count_t
-sds_read_i (SF_PRIVATE *psf, int *ptr, sf_count_t len)
-{ SDS_PRIVATE *psds ;
- int total ;
-
- if (psf->fdata == NULL)
- return 0 ;
- psds = (SDS_PRIVATE*) psf->fdata ;
-
- total = sds_read (psf, psds, ptr, len) ;
-
- return total ;
-} /* sds_read_i */
-
-static sf_count_t
-sds_read_f (SF_PRIVATE *psf, float *ptr, sf_count_t len)
-{ SDS_PRIVATE *psds ;
- int *iptr ;
- int k, bufferlen, readcount, count ;
- sf_count_t total = 0 ;
- float normfact ;
-
- if (psf->fdata == NULL)
- return 0 ;
- psds = (SDS_PRIVATE*) psf->fdata ;
-
- if (psf->norm_float == SF_TRUE)
- normfact = 1.0 / 0x80000000 ;
- else
- normfact = 1.0 / (1 << psds->bitwidth) ;
-
- iptr = psf->u.ibuf ;
- bufferlen = ARRAY_LEN (psf->u.ibuf) ;
- while (len > 0)
- { readcount = (len >= bufferlen) ? bufferlen : len ;
- count = sds_read (psf, psds, iptr, readcount) ;
- for (k = 0 ; k < readcount ; k++)
- ptr [total + k] = normfact * iptr [k] ;
- total += count ;
- len -= readcount ;
- } ;
-
- return total ;
-} /* sds_read_f */
-
-static sf_count_t
-sds_read_d (SF_PRIVATE *psf, double *ptr, sf_count_t len)
-{ SDS_PRIVATE *psds ;
- int *iptr ;
- int k, bufferlen, readcount, count ;
- sf_count_t total = 0 ;
- double normfact ;
-
- if (psf->fdata == NULL)
- return 0 ;
- psds = (SDS_PRIVATE*) psf->fdata ;
-
- if (psf->norm_double == SF_TRUE)
- normfact = 1.0 / 0x80000000 ;
- else
- normfact = 1.0 / (1 << psds->bitwidth) ;
-
- iptr = psf->u.ibuf ;
- bufferlen = ARRAY_LEN (psf->u.ibuf) ;
- while (len > 0)
- { readcount = (len >= bufferlen) ? bufferlen : len ;
- count = sds_read (psf, psds, iptr, readcount) ;
- for (k = 0 ; k < readcount ; k++)
- ptr [total + k] = normfact * iptr [k] ;
- total += count ;
- len -= readcount ;
- } ;
-
- return total ;
-} /* sds_read_d */
-
-static int
-sds_read (SF_PRIVATE *psf, SDS_PRIVATE *psds, int *ptr, int len)
-{ int count, total = 0 ;
-
- while (total < len)
- { if (psds->read_block * psds->samplesperblock >= psds->frames)
- { memset (&(ptr [total]), 0, (len - total) * sizeof (int)) ;
- return total ;
- } ;
-
- if (psds->read_count >= psds->samplesperblock)
- psds->reader (psf, psds) ;
-
- count = (psds->samplesperblock - psds->read_count) ;
- count = (len - total > count) ? count : len - total ;
-
- memcpy (&(ptr [total]), &(psds->read_samples [psds->read_count]), count * sizeof (int)) ;
- total += count ;
- psds->read_count += count ;
- } ;
-
- return total ;
-} /* sds_read */
-
-/*==============================================================================
-*/
-
-static sf_count_t
-sds_seek (SF_PRIVATE *psf, int mode, sf_count_t seek_from_start)
-{ SDS_PRIVATE *psds ;
- sf_count_t file_offset ;
- int newblock, newsample ;
-
- if ((psds = psf->fdata) == NULL)
- { psf->error = SFE_INTERNAL ;
- return PSF_SEEK_ERROR ;
- } ;
-
- if (psf->datalength < 0 || psf->dataoffset < 0)
- { psf->error = SFE_BAD_SEEK ;
- return PSF_SEEK_ERROR ;
- } ;
-
- if (seek_from_start < 0 || seek_from_start > psf->sf.frames)
- { psf->error = SFE_BAD_SEEK ;
- return PSF_SEEK_ERROR ;
- } ;
-
- if (mode == SFM_READ && psds->write_count > 0)
- psds->writer (psf, psds) ;
-
- newblock = seek_from_start / psds->samplesperblock ;
- newsample = seek_from_start % psds->samplesperblock ;
-
- switch (mode)
- { case SFM_READ :
- if (newblock > psds->total_blocks)
- { psf->error = SFE_BAD_SEEK ;
- return PSF_SEEK_ERROR ;
- } ;
-
- file_offset = psf->dataoffset + newblock * SDS_BLOCK_SIZE ;
-
- if (psf_fseek (psf, file_offset, SEEK_SET) != file_offset)
- { psf->error = SFE_SEEK_FAILED ;
- return PSF_SEEK_ERROR ;
- } ;
-
- psds->read_block = newblock ;
- psds->reader (psf, psds) ;
- psds->read_count = newsample ;
- break ;
-
- case SFM_WRITE :
- if (newblock > psds->total_blocks)
- { psf->error = SFE_BAD_SEEK ;
- return PSF_SEEK_ERROR ;
- } ;
-
- file_offset = psf->dataoffset + newblock * SDS_BLOCK_SIZE ;
-
- if (psf_fseek (psf, file_offset, SEEK_SET) != file_offset)
- { psf->error = SFE_SEEK_FAILED ;
- return PSF_SEEK_ERROR ;
- } ;
-
- psds->write_block = newblock ;
- psds->reader (psf, psds) ;
- psds->write_count = newsample ;
- break ;
-
- default :
- psf->error = SFE_BAD_SEEK ;
- return PSF_SEEK_ERROR ;
- break ;
- } ;
-
- return seek_from_start ;
-} /* sds_seek */
-
-/*==============================================================================
-*/
-
-static int
-sds_2byte_write (SF_PRIVATE *psf, SDS_PRIVATE *psds)
-{ unsigned char *ucptr, checksum ;
- unsigned int sample ;
- int k ;
-
- psds->write_data [0] = 0xF0 ;
- psds->write_data [1] = 0x7E ;
- psds->write_data [2] = 0 ; /* Channel number */
- psds->write_data [3] = psds->write_block & 0x7F ; /* Packet number */
-
- ucptr = psds->write_data + 5 ;
- for (k = 0 ; k < 120 ; k += 2)
- { sample = psds->write_samples [k / 2] ;
- sample += 0x80000000 ;
- ucptr [k] = (sample >> 25) & 0x7F ;
- ucptr [k + 1] = (sample >> 18) & 0x7F ;
- } ;
-
- checksum = psds->write_data [1] ;
- for (k = 2 ; k < SDS_BLOCK_SIZE - 3 ; k ++)
- checksum ^= psds->write_data [k] ;
- checksum &= 0x7F ;
-
- psds->write_data [SDS_BLOCK_SIZE - 2] = checksum ;
- psds->write_data [SDS_BLOCK_SIZE - 1] = 0xF7 ;
-
- if ((k = psf_fwrite (psds->write_data, 1, SDS_BLOCK_SIZE, psf)) != SDS_BLOCK_SIZE)
- psf_log_printf (psf, "*** Warning : psf_fwrite (%d != %d).\n", k, SDS_BLOCK_SIZE) ;
-
- psds->write_block ++ ;
- psds->write_count = 0 ;
-
- if (psds->write_block > psds->total_blocks)
- psds->total_blocks = psds->write_block ;
- psds->frames = psds->total_blocks * psds->samplesperblock ;
-
- return 1 ;
-} /* sds_2byte_write */
-
-static int
-sds_3byte_write (SF_PRIVATE *psf, SDS_PRIVATE *psds)
-{ unsigned char *ucptr, checksum ;
- unsigned int sample ;
- int k ;
-
- psds->write_data [0] = 0xF0 ;
- psds->write_data [1] = 0x7E ;
- psds->write_data [2] = 0 ; /* Channel number */
- psds->write_data [3] = psds->write_block & 0x7F ; /* Packet number */
-
- ucptr = psds->write_data + 5 ;
- for (k = 0 ; k < 120 ; k += 3)
- { sample = psds->write_samples [k / 3] ;
- sample += 0x80000000 ;
- ucptr [k] = (sample >> 25) & 0x7F ;
- ucptr [k + 1] = (sample >> 18) & 0x7F ;
- ucptr [k + 2] = (sample >> 11) & 0x7F ;
- } ;
-
- checksum = psds->write_data [1] ;
- for (k = 2 ; k < SDS_BLOCK_SIZE - 3 ; k ++)
- checksum ^= psds->write_data [k] ;
- checksum &= 0x7F ;
-
- psds->write_data [SDS_BLOCK_SIZE - 2] = checksum ;
- psds->write_data [SDS_BLOCK_SIZE - 1] = 0xF7 ;
-
- if ((k = psf_fwrite (psds->write_data, 1, SDS_BLOCK_SIZE, psf)) != SDS_BLOCK_SIZE)
- psf_log_printf (psf, "*** Warning : psf_fwrite (%d != %d).\n", k, SDS_BLOCK_SIZE) ;
-
- psds->write_block ++ ;
- psds->write_count = 0 ;
-
- if (psds->write_block > psds->total_blocks)
- psds->total_blocks = psds->write_block ;
- psds->frames = psds->total_blocks * psds->samplesperblock ;
-
- return 1 ;
-} /* sds_3byte_write */
-
-static int
-sds_4byte_write (SF_PRIVATE *psf, SDS_PRIVATE *psds)
-{ unsigned char *ucptr, checksum ;
- unsigned int sample ;
- int k ;
-
- psds->write_data [0] = 0xF0 ;
- psds->write_data [1] = 0x7E ;
- psds->write_data [2] = 0 ; /* Channel number */
- psds->write_data [3] = psds->write_block & 0x7F ; /* Packet number */
-
- ucptr = psds->write_data + 5 ;
- for (k = 0 ; k < 120 ; k += 4)
- { sample = psds->write_samples [k / 4] ;
- sample += 0x80000000 ;
- ucptr [k] = (sample >> 25) & 0x7F ;
- ucptr [k + 1] = (sample >> 18) & 0x7F ;
- ucptr [k + 2] = (sample >> 11) & 0x7F ;
- ucptr [k + 3] = (sample >> 4) & 0x7F ;
- } ;
-
- checksum = psds->write_data [1] ;
- for (k = 2 ; k < SDS_BLOCK_SIZE - 3 ; k ++)
- checksum ^= psds->write_data [k] ;
- checksum &= 0x7F ;
-
- psds->write_data [SDS_BLOCK_SIZE - 2] = checksum ;
- psds->write_data [SDS_BLOCK_SIZE - 1] = 0xF7 ;
-
- if ((k = psf_fwrite (psds->write_data, 1, SDS_BLOCK_SIZE, psf)) != SDS_BLOCK_SIZE)
- psf_log_printf (psf, "*** Warning : psf_fwrite (%d != %d).\n", k, SDS_BLOCK_SIZE) ;
-
- psds->write_block ++ ;
- psds->write_count = 0 ;
-
- if (psds->write_block > psds->total_blocks)
- psds->total_blocks = psds->write_block ;
- psds->frames = psds->total_blocks * psds->samplesperblock ;
-
- return 1 ;
-} /* sds_4byte_write */
-
-static sf_count_t
-sds_write_s (SF_PRIVATE *psf, const short *ptr, sf_count_t len)
-{ SDS_PRIVATE *psds ;
- int *iptr ;
- int k, bufferlen, writecount, count ;
- sf_count_t total = 0 ;
-
- if (psf->fdata == NULL)
- return 0 ;
- psds = (SDS_PRIVATE*) psf->fdata ;
-
- iptr = psf->u.ibuf ;
- bufferlen = ARRAY_LEN (psf->u.ibuf) ;
- while (len > 0)
- { writecount = (len >= bufferlen) ? bufferlen : len ;
- for (k = 0 ; k < writecount ; k++)
- iptr [k] = ptr [total + k] << 16 ;
- count = sds_write (psf, psds, iptr, writecount) ;
- total += count ;
- len -= writecount ;
- } ;
-
- return total ;
-} /* sds_write_s */
-
-static sf_count_t
-sds_write_i (SF_PRIVATE *psf, const int *ptr, sf_count_t len)
-{ SDS_PRIVATE *psds ;
- int total ;
-
- if (psf->fdata == NULL)
- return 0 ;
- psds = (SDS_PRIVATE*) psf->fdata ;
-
- total = sds_write (psf, psds, ptr, len) ;
-
- return total ;
-} /* sds_write_i */
-
-static sf_count_t
-sds_write_f (SF_PRIVATE *psf, const float *ptr, sf_count_t len)
-{ SDS_PRIVATE *psds ;
- int *iptr ;
- int k, bufferlen, writecount, count ;
- sf_count_t total = 0 ;
- float normfact ;
-
- if (psf->fdata == NULL)
- return 0 ;
- psds = (SDS_PRIVATE*) psf->fdata ;
-
- if (psf->norm_float == SF_TRUE)
- normfact = 1.0 * 0x80000000 ;
- else
- normfact = 1.0 * (1 << psds->bitwidth) ;
-
- iptr = psf->u.ibuf ;
- bufferlen = ARRAY_LEN (psf->u.ibuf) ;
- while (len > 0)
- { writecount = (len >= bufferlen) ? bufferlen : len ;
- for (k = 0 ; k < writecount ; k++)
- iptr [k] = normfact * ptr [total + k] ;
- count = sds_write (psf, psds, iptr, writecount) ;
- total += count ;
- len -= writecount ;
- } ;
-
- return total ;
-} /* sds_write_f */
-
-static sf_count_t
-sds_write_d (SF_PRIVATE *psf, const double *ptr, sf_count_t len)
-{ SDS_PRIVATE *psds ;
- int *iptr ;
- int k, bufferlen, writecount, count ;
- sf_count_t total = 0 ;
- double normfact ;
-
- if (psf->fdata == NULL)
- return 0 ;
- psds = (SDS_PRIVATE*) psf->fdata ;
-
- if (psf->norm_double == SF_TRUE)
- normfact = 1.0 * 0x80000000 ;
- else
- normfact = 1.0 * (1 << psds->bitwidth) ;
-
- iptr = psf->u.ibuf ;
- bufferlen = ARRAY_LEN (psf->u.ibuf) ;
- while (len > 0)
- { writecount = (len >= bufferlen) ? bufferlen : len ;
- for (k = 0 ; k < writecount ; k++)
- iptr [k] = normfact * ptr [total + k] ;
- count = sds_write (psf, psds, iptr, writecount) ;
- total += count ;
- len -= writecount ;
- } ;
-
- return total ;
-} /* sds_write_d */
-
-static int
-sds_write (SF_PRIVATE *psf, SDS_PRIVATE *psds, const int *ptr, int len)
-{ int count, total = 0 ;
-
- while (total < len)
- { count = psds->samplesperblock - psds->write_count ;
- if (count > len - total)
- count = len - total ;
-
- memcpy (&(psds->write_samples [psds->write_count]), &(ptr [total]), count * sizeof (int)) ;
- total += count ;
- psds->write_count += count ;
-
- if (psds->write_count >= psds->samplesperblock)
- psds->writer (psf, psds) ;
- } ;
-
- return total ;
-} /* sds_write */
-
-/*
-** Do not edit or modify anything in this comment block.
-** The arch-tag line is a file identity tag for the GNU Arch
-** revision control system.
-**
-** arch-tag: d5d26aa3-368c-4ca6-bb85-377e5a2578cc
-*/
diff --git a/libs/libsndfile/src/sf_unistd.h b/libs/libsndfile/src/sf_unistd.h
deleted file mode 100644
index f24ae67e98..0000000000
--- a/libs/libsndfile/src/sf_unistd.h
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
-** Copyright (C) 2002-2004 Erik de Castro Lopo <erikd@mega-nerd.com>
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU Lesser General Public License as published by
-** the Free Software Foundation; either version 2.1 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU Lesser General Public License for more details.
-**
-** You should have received a copy of the GNU Lesser General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-*/
-
-/* Some defines that microsoft 'forgot' to implement. */
-
-#ifndef S_IRWXU
-#define S_IRWXU 0000700 /* rwx, owner */
-#endif
-
-#ifndef S_IRUSR
-#define S_IRUSR 0000400 /* read permission, owner */
-#endif
-
-#ifndef S_IWUSR
-#define S_IWUSR 0000200 /* write permission, owner */
-#endif
-
-#ifndef S_IXUSR
-#define S_IXUSR 0000100 /* execute/search permission, owner */
-#endif
-
-#define S_IRWXG 0000070 /* rwx, group */
-#define S_IRGRP 0000040 /* read permission, group */
-#define S_IWGRP 0000020 /* write permission, grougroup */
-#define S_IXGRP 0000010 /* execute/search permission, group */
-
-#define S_IRWXO 0000007 /* rwx, other */
-#define S_IROTH 0000004 /* read permission, other */
-#define S_IWOTH 0000002 /* write permission, other */
-#define S_IXOTH 0000001 /* execute/search permission, other */
-
-#ifndef S_ISFIFO
-#define S_ISFIFO(mode) (((mode) & _S_IFMT) == _S_IFIFO)
-#endif
-
-#ifndef S_ISREG
-#define S_ISREG(mode) (((mode) & _S_IFREG) == _S_IFREG)
-#endif
-
-/*
-** Don't know if these are still needed.
-**
-** #define _IFMT _S_IFMT
-** #define _IFREG _S_IFREG
-*/
-/*
-** Do not edit or modify anything in this comment block.
-** The arch-tag line is a file identity tag for the GNU Arch
-** revision control system.
-**
-** arch-tag: 253aea6d-6299-46fd-8d06-bc5f6224c8fe
-*/
diff --git a/libs/libsndfile/src/sfconfig.h b/libs/libsndfile/src/sfconfig.h
deleted file mode 100644
index f12df6d787..0000000000
--- a/libs/libsndfile/src/sfconfig.h
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
-** Copyright (C) 2005 Erik de Castro Lopo <erikd@mega-nerd.com>
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU Lesser General Public License as published by
-** the Free Software Foundation; either version 2.1 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU Lesser General Public License for more details.
-**
-** You should have received a copy of the GNU Lesser General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-*/
-
-/*
-** Autoconf leaves many config parameters undefined.
-** Here we change then from being undefined to defining them to 0.
-** This allows things like:
-**
-** #if HAVE_CONFIG_PARAM
-**
-** and
-**
-** if (HAVE_CONFIG_PARAM)
-** do_something () ;
-*/
-
-#ifndef SFCONFIG_H
-#define SFCONFIG_H
-
-/* Include the Autoconf generated file. */
-#include "config.h"
-
-/* Now fiddle the values. */
-
-#ifndef HAVE_ALSA_ASOUNDLIB_H
-#define HAVE_ALSA_ASOUNDLIB_H 0
-#endif
-
-#ifndef HAVE_BYTESWAP_H
-#define HAVE_BYTESWAP_H 0
-#endif
-
-#ifndef HAVE_DECL_S_IRGRP
-#define HAVE_DECL_S_IRGRP 0
-#endif
-
-#ifndef HAVE_ENDIAN_H
-#define HAVE_ENDIAN_H 0
-#endif
-
-#ifndef HAVE_FSYNC
-#define HAVE_FSYNC 0
-#endif
-
-#ifndef HAVE_LOCALE_H
-#define HAVE_LOCALE_H 0
-#endif
-
-#ifndef HAVE_LRINT
-#define HAVE_LRINT 0
-#endif
-
-#ifndef HAVE_LRINTF
-#define HAVE_LRINTF 0
-#endif
-
-#ifndef HAVE_MMAP
-#define HAVE_MMAP 0
-#endif
-
-#ifndef HAVE_PREAD
-#define HAVE_PREAD 0
-#endif
-
-#ifndef HAVE_PWRITE
-#define HAVE_PWRITE 0
-#endif
-
-#ifndef HAVE_SETLOCALE
-#define HAVE_SETLOCALE 0
-#endif
-
-#ifndef HAVE_SQLITE3
-#define HAVE_SQLITE3 0
-#endif
-
-#ifndef HAVE_STDINT_H
-#define HAVE_STDINT_H 0
-#endif
-
-#ifndef HAVE_UNISTD_H
-#define HAVE_UNISTD_H 0
-#endif
-
-#endif
-
-/*
-** Do not edit or modify anything in this comment block.
-** The arch-tag line is a file identity tag for the GNU Arch
-** revision control system.
-**
-** arch-tag: 2df2316e-8f9d-4860-bba7-f3c16c63eed3
-*/
diff --git a/libs/libsndfile/src/sfendian.h b/libs/libsndfile/src/sfendian.h
deleted file mode 100644
index efc1c1060a..0000000000
--- a/libs/libsndfile/src/sfendian.h
+++ /dev/null
@@ -1,256 +0,0 @@
-/*
-** Copyright (C) 1999-2006 Erik de Castro Lopo <erikd@mega-nerd.com>
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU Lesser General Public License as published by
-** the Free Software Foundation; either version 2.1 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU Lesser General Public License for more details.
-**
-** You should have received a copy of the GNU Lesser General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-*/
-
-#include "sfconfig.h"
-
-#if HAVE_STDINT_H
-#include <stdint.h>
-#elif HAVE_INTTYPES_H
-#include <inttypes.h>
-#endif
-
-#if (defined (SIZEOF_INT64_T) && (SIZEOF_INT64_T == 8))
-/* Good, we have int64_t. */
-#elif (defined (SIZEOF_LONG_LONG) && (SIZEOF_LONG_LONG == 8))
-typedef long long int64_t ;
-#elif (defined (SIZEOF_LONG) && (SIZEOF_LONG == 8))
-typedef long int64_t ;
-#elif (defined (WIN32) || defined (_WIN32))
-typedef __int64 int64_t ;
-#else
-#error "No 64 bit integer type."
-#endif
-
-#if HAVE_BYTESWAP_H
-
-#include <byteswap.h>
-
-#define ENDSWAP_SHORT(x) ((short) bswap_16 (x))
-#define ENDSWAP_INT(x) ((int) bswap_32 (x))
-
-#else
-
-#define ENDSWAP_SHORT(x) ((((x) >> 8) & 0xFF) + (((x) & 0xFF) << 8))
-#define ENDSWAP_INT(x) ((((x) >> 24) & 0xFF) + (((x) >> 8) & 0xFF00) + (((x) & 0xFF00) << 8) + (((x) & 0xFF) << 24))
-
-#endif
-
-/*
-** Many file types (ie WAV, AIFF) use sets of four consecutive bytes as a
-** marker indicating different sections of the file.
-** The following MAKE_MARKER macro allows th creation of integer constants
-** for these markers.
-*/
-
-#if (CPU_IS_LITTLE_ENDIAN == 1)
- #define MAKE_MARKER(a,b,c,d) ((a) | ((b) << 8) | ((c) << 16) | ((d) << 24))
-#elif (CPU_IS_BIG_ENDIAN == 1)
- #define MAKE_MARKER(a,b,c,d) (((a) << 24) | ((b) << 16) | ((c) << 8) | (d))
-#else
- #error "Target CPU endian-ness unknown. May need to hand edit src/sfconfig.h"
-#endif
-
-/*
-** Macros to handle reading of data of a specific endian-ness into host endian
-** shorts and ints. The single input is an unsigned char* pointer to the start
-** of the object. There are two versions of each macro as we need to deal with
-** both big and little endian CPUs.
-*/
-
-#if (CPU_IS_LITTLE_ENDIAN == 1)
- #define LES2H_SHORT(x) (x)
- #define LEI2H_INT(x) (x)
-
- #define BES2H_SHORT(x) ENDSWAP_SHORT (x)
- #define BEI2H_INT(x) ENDSWAP_INT (x)
-
- #define H2BE_SHORT(x) ENDSWAP_SHORT (x)
- #define H2BE_INT(x) ENDSWAP_INT (x)
-
-#elif (CPU_IS_BIG_ENDIAN == 1)
- #define LES2H_SHORT(x) ENDSWAP_SHORT (x)
- #define LEI2H_INT(x) ENDSWAP_INT (x)
-
- #define BES2H_SHORT(x) (x)
- #define BEI2H_INT(x) (x)
-
- #define H2LE_SHORT(x) ENDSWAP_SHORT (x)
- #define H2LE_INT(x) ENDSWAP_INT (x)
-
-#else
- #error "Target CPU endian-ness unknown. May need to hand edit src/sfconfig.h"
-#endif
-
-#define LET2H_SHORT_PTR(x) ((x) [1] + ((x) [2] << 8))
-#define LET2H_INT_PTR(x) (((x) [0] << 8) + ((x) [1] << 16) + ((x) [2] << 24))
-
-#define BET2H_SHORT_PTR(x) (((x) [0] << 8) + (x) [1])
-#define BET2H_INT_PTR(x) (((x) [0] << 24) + ((x) [1] << 16) + ((x) [2] << 8))
-
-/*-----------------------------------------------------------------------------------------------
-** Generic functions for performing endian swapping on integer arrays.
-*/
-
-static inline void
-endswap_short_array (short *ptr, int len)
-{ short temp ;
-
- while (--len >= 0)
- { temp = ptr [len] ;
- ptr [len] = ENDSWAP_SHORT (temp) ;
- } ;
-} /* endswap_short_array */
-
-static inline void
-endswap_short_copy (short *dest, const short *src, int len)
-{
- while (--len >= 0)
- { dest [len] = ENDSWAP_SHORT (src [len]) ;
- } ;
-} /* endswap_short_copy */
-
-static inline void
-endswap_int_array (int *ptr, int len)
-{ int temp ;
-
- while (--len >= 0)
- { temp = ptr [len] ;
- ptr [len] = ENDSWAP_INT (temp) ;
- } ;
-} /* endswap_int_array */
-
-static inline void
-endswap_int_copy (int *dest, const int *src, int len)
-{
- while (--len >= 0)
- { dest [len] = ENDSWAP_INT (src [len]) ;
- } ;
-} /* endswap_int_copy */
-
-/*========================================================================================
-*/
-
-#if (HAVE_BYTESWAP_H && defined (SIZEOF_INT64_T) && (SIZEOF_INT64_T == 8))
-
-static inline void
-endswap_int64_t_array (int64_t *ptr, int len)
-{ int64_t value ;
-
- while (--len >= 0)
- { value = ptr [len] ;
- ptr [len] = bswap_64 (value) ;
- } ;
-} /* endswap_int64_t_array */
-
-static inline void
-endswap_int64_t_copy (int64_t *dest, const int64_t *src, int len)
-{ int64_t value ;
-
- while (--len >= 0)
- { value = src [len] ;
- dest [len] = bswap_64 (value) ;
- } ;
-} /* endswap_int64_t_copy */
-
-#else
-
-static inline void
-endswap_int64_t_array (int64_t *ptr, int len)
-{ unsigned char *ucptr, temp ;
-
- ucptr = (unsigned char *) ptr ;
- ucptr += 8 * len ;
- while (--len >= 0)
- { ucptr -= 8 ;
-
- temp = ucptr [0] ;
- ucptr [0] = ucptr [7] ;
- ucptr [7] = temp ;
-
- temp = ucptr [1] ;
- ucptr [1] = ucptr [6] ;
- ucptr [6] = temp ;
-
- temp = ucptr [2] ;
- ucptr [2] = ucptr [5] ;
- ucptr [5] = temp ;
-
- temp = ucptr [3] ;
- ucptr [3] = ucptr [4] ;
- ucptr [4] = temp ;
- } ;
-} /* endswap_int64_t_array */
-
-static inline void
-endswap_int64_t_copy (int64_t *dest, const int64_t *src, int len)
-{ const unsigned char *psrc ;
- unsigned char *pdest ;
-
- if (dest == src)
- { endswap_int64_t_array (dest, len) ;
- return ;
- } ;
-
- psrc = ((const unsigned char *) src) + 8 * len ;
- pdest = ((unsigned char *) dest) + 8 * len ;
- while (--len >= 0)
- { psrc -= 8 ;
- pdest -= 8 ;
-
- pdest [0] = psrc [7] ;
- pdest [2] = psrc [5] ;
- pdest [4] = psrc [3] ;
- pdest [6] = psrc [1] ;
- pdest [7] = psrc [0] ;
- pdest [1] = psrc [6] ;
- pdest [3] = psrc [4] ;
- pdest [5] = psrc [2] ;
- } ;
-} /* endswap_int64_t_copy */
-
-#endif
-
-/* A couple of wrapper functions. */
-
-static inline void
-endswap_float_array (float *ptr, int len)
-{ endswap_int_array ((void *) ptr, len) ;
-} /* endswap_float_array */
-
-static inline void
-endswap_double_array (double *ptr, int len)
-{ endswap_int64_t_array ((void *) ptr, len) ;
-} /* endswap_double_array */
-
-static inline void
-endswap_float_copy (float *dest, const float *src, int len)
-{ endswap_int_copy ((int *) dest, (const int *) src, len) ;
-} /* endswap_float_copy */
-
-static inline void
-endswap_double_copy (double *dest, const double *src, int len)
-{ endswap_int64_t_copy ((int64_t *) dest, (const int64_t *) src, len) ;
-} /* endswap_double_copy */
-
-/*
-** Do not edit or modify anything in this comment block.
-** The arch-tag line is a file identity tag for the GNU Arch
-** revision control system.
-**
-** arch-tag: f0c5cd54-42d3-4237-90ec-11fe24995de7
-*/
diff --git a/libs/libsndfile/src/sndfile.c b/libs/libsndfile/src/sndfile.c
deleted file mode 100644
index 8de582fec0..0000000000
--- a/libs/libsndfile/src/sndfile.c
+++ /dev/null
@@ -1,2709 +0,0 @@
-/*
-** Copyright (C) 1999-2005 Erik de Castro Lopo <erikd@mega-nerd.com>
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU Lesser General Public License as published by
-** the Free Software Foundation; either version 2.1 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU Lesser General Public License for more details.
-**
-** You should have received a copy of the GNU Lesser General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-*/
-
-#include "sfconfig.h"
-
-#include <stdlib.h>
-#include <string.h>
-#include <ctype.h>
-
-#include "sndfile.h"
-#include "sfendian.h"
-#include "common.h"
-
-#define SNDFILE_MAGICK 0x1234C0DE
-
-typedef struct
-{ int error ;
- const char *str ;
-} ErrorStruct ;
-
-static
-ErrorStruct SndfileErrors [] =
-{
- /* Public error values and their associated strings. */
- { SF_ERR_NO_ERROR , "No Error." },
- { SF_ERR_UNRECOGNISED_FORMAT , "File opened for read. Format not recognised." },
- { SF_ERR_SYSTEM , "System error." /* Often replaced. */ },
- { SF_ERR_MALFORMED_FILE , "Supported file format but file is malformed." },
- { SF_ERR_UNSUPPORTED_ENCODING , "Supported file format but unsupported encoding." },
-
- /* Private error values and their associated strings. */
- { SFE_BAD_FILE , "File does not exist or is not a regular file (possibly a pipe?)." },
- { SFE_BAD_FILE_READ , "File exists but no data could be read." },
- { SFE_OPEN_FAILED , "Could not open file." },
- { SFE_BAD_SNDFILE_PTR , "Not a valid SNDFILE* pointer." },
- { SFE_BAD_SF_INFO_PTR , "NULL SF_INFO pointer passed to libsndfile." },
- { SFE_BAD_SF_INCOMPLETE , "SF_PRIVATE struct incomplete and end of header parsing." },
- { SFE_BAD_FILE_PTR , "Bad FILE pointer." },
- { SFE_BAD_INT_PTR , "Internal error, Bad pointer." },
- { SFE_BAD_STAT_SIZE , "Error : software was misconfigured at compile time (sizeof statbuf.st_size)." },
-
- { SFE_MALLOC_FAILED , "Internal malloc () failed." },
- { SFE_UNIMPLEMENTED , "File contains data in an unimplemented format." },
- { SFE_BAD_READ_ALIGN , "Attempt to read a non-integer number of channels." },
- { SFE_BAD_WRITE_ALIGN , "Attempt to write a non-integer number of channels." },
- { SFE_UNKNOWN_FORMAT , "File contains data in an unknown format." },
- { SFE_NOT_READMODE , "Read attempted on file currently open for write." },
- { SFE_NOT_WRITEMODE , "Write attempted on file currently open for read." },
- { SFE_BAD_MODE_RW , "This file format does not support read/write mode." },
- { SFE_BAD_SF_INFO , "Internal error : SF_INFO struct incomplete." },
- { SFE_BAD_OFFSET , "Error : supplied offset beyond end of file." },
- { SFE_NO_EMBED_SUPPORT , "Error : embedding not supported for this file format." },
- { SFE_NO_EMBEDDED_RDWR , "Error : cannot open embedded file read/write." },
- { SFE_NO_PIPE_WRITE , "Error : this file format does not support pipe write." },
- { SFE_BAD_RDWR_FORMAT , "Attempted to open read only format for RDWR." },
- { SFE_BAD_VIRTUAL_IO , "Error : bad pointer on SF_VIRTUAL_IO struct." },
-
- { SFE_INTERLEAVE_MODE , "Attempt to write to file with non-interleaved data." },
- { SFE_INTERLEAVE_SEEK , "Bad karma in seek during interleave read operation." },
- { SFE_INTERLEAVE_READ , "Bad karma in read during interleave read operation." },
-
- { SFE_INTERNAL , "Unspecified internal error." },
- { SFE_BAD_CONTROL_CMD , "Bad command passed to function sf_command()." },
- { SFE_BAD_ENDIAN , "Bad endian-ness. Try default endian-ness" },
- { SFE_CHANNEL_COUNT , "Too many channels specified." },
-
- { SFE_BAD_SEEK , "Internal psf_fseek() failed." },
- { SFE_NOT_SEEKABLE , "Seek attempted on unseekable file type." },
- { SFE_AMBIGUOUS_SEEK , "Error : combination of file open mode and seek command is ambiguous." },
- { SFE_WRONG_SEEK , "Error : invalid seek parameters." },
- { SFE_SEEK_FAILED , "Error : parameters OK, but psf_seek() failed." },
-
- { SFE_BAD_OPEN_MODE , "Error : bad mode parameter for file open." },
- { SFE_OPEN_PIPE_RDWR , "Error : attempt toopen a pipe in read/write mode." },
- { SFE_RDWR_POSITION , "Error on RDWR position (cryptic)." },
- { SFE_RDWR_BAD_HEADER , "Error : Cannot open file in read/write mode due to string data in header." },
-
- { SFE_STR_NO_SUPPORT , "Error : File type does not support string data." },
- { SFE_STR_NOT_WRITE , "Error : Trying to set a string when file is not in write mode." },
- { SFE_STR_MAX_DATA , "Error : Maximum string data storage reached." },
- { SFE_STR_MAX_COUNT , "Error : Maximum string data count reached." },
- { SFE_STR_BAD_TYPE , "Error : Bad string data type." },
- { SFE_STR_NO_ADD_END , "Error : file type does not support strings added at end of file." },
- { SFE_STR_BAD_STRING , "Error : bad string." },
- { SFE_STR_WEIRD , "Error : Weird string error." },
-
- { SFE_WAV_NO_RIFF , "Error in WAV file. No 'RIFF' chunk marker." },
- { SFE_WAV_NO_WAVE , "Error in WAV file. No 'WAVE' chunk marker." },
- { SFE_WAV_NO_FMT , "Error in WAV file. No 'fmt ' chunk marker." },
- { SFE_WAV_FMT_SHORT , "Error in WAV file. Short 'fmt ' chunk." },
-
- { SFE_WAV_BAD_FACT , "Error in WAV file. 'fact' chunk out of place." },
- { SFE_WAV_BAD_PEAK , "Error in WAV file. Bad 'PEAK' chunk." },
- { SFE_WAV_PEAK_B4_FMT , "Error in WAV file. 'PEAK' chunk found before 'fmt ' chunk." },
-
- { SFE_WAV_BAD_FORMAT , "Error in WAV file. Errors in 'fmt ' chunk." },
- { SFE_WAV_BAD_BLOCKALIGN , "Error in WAV file. Block alignment in 'fmt ' chunk is incorrect." },
- { SFE_WAV_NO_DATA , "Error in WAV file. No 'data' chunk marker." },
- { SFE_WAV_BAD_LIST , "Error in WAV file. Malformed LIST chunk." },
- { SFE_WAV_UNKNOWN_CHUNK , "Error in WAV file. File contains an unknown chunk marker." },
- { SFE_WAV_WVPK_DATA , "Error in WAV file. Data is in WAVPACK format." },
-
- { SFE_WAV_ADPCM_NOT4BIT , "Error in ADPCM WAV file. Invalid bit width." },
- { SFE_WAV_ADPCM_CHANNELS , "Error in ADPCM WAV file. Invalid number of channels." },
- { SFE_WAV_GSM610_FORMAT , "Error in GSM610 WAV file. Invalid format chunk." },
-
- { SFE_AIFF_NO_FORM , "Error in AIFF file, bad 'FORM' marker." },
- { SFE_AIFF_AIFF_NO_FORM , "Error in AIFF file, 'AIFF' marker without 'FORM'." },
- { SFE_AIFF_COMM_NO_FORM , "Error in AIFF file, 'COMM' marker without 'FORM'." },
- { SFE_AIFF_SSND_NO_COMM , "Error in AIFF file, 'SSND' marker without 'COMM'." },
- { SFE_AIFF_UNKNOWN_CHUNK , "Error in AIFF file, unknown chunk." },
- { SFE_AIFF_COMM_CHUNK_SIZE, "Error in AIFF file, bad 'COMM' chunk size." },
- { SFE_AIFF_BAD_COMM_CHUNK , "Error in AIFF file, bad 'COMM' chunk." },
- { SFE_AIFF_PEAK_B4_COMM , "Error in AIFF file. 'PEAK' chunk found before 'COMM' chunk." },
- { SFE_AIFF_BAD_PEAK , "Error in AIFF file. Bad 'PEAK' chunk." },
- { SFE_AIFF_NO_SSND , "Error in AIFF file, bad 'SSND' chunk." },
- { SFE_AIFF_NO_DATA , "Error in AIFF file, no sound data." },
- { SFE_AIFF_RW_SSND_NOT_LAST, "Error in AIFF file, RDWR only possible if SSND chunk at end of file." },
-
- { SFE_AU_UNKNOWN_FORMAT , "Error in AU file, unknown format." },
- { SFE_AU_NO_DOTSND , "Error in AU file, missing '.snd' or 'dns.' marker." },
- { SFE_AU_EMBED_BAD_LEN , "Embedded AU file with unknown length." },
-
- { SFE_RAW_READ_BAD_SPEC , "Error while opening RAW file for read. Must specify format and channels.\n"
- "Possibly trying to open unsupported format."
- },
- { SFE_RAW_BAD_BITWIDTH , "Error. RAW file bitwidth must be a multiple of 8." },
- { SFE_RAW_BAD_FORMAT , "Error. Bad format field in SF_INFO struct when openning a RAW file for read." },
-
- { SFE_PAF_NO_MARKER , "Error in PAF file, no marker." },
- { SFE_PAF_VERSION , "Error in PAF file, bad version." },
- { SFE_PAF_UNKNOWN_FORMAT , "Error in PAF file, unknown format." },
- { SFE_PAF_SHORT_HEADER , "Error in PAF file. File shorter than minimal header." },
-
- { SFE_SVX_NO_FORM , "Error in 8SVX / 16SV file, no 'FORM' marker." },
- { SFE_SVX_NO_BODY , "Error in 8SVX / 16SV file, no 'BODY' marker." },
- { SFE_SVX_NO_DATA , "Error in 8SVX / 16SV file, no sound data." },
- { SFE_SVX_BAD_COMP , "Error in 8SVX / 16SV file, unsupported compression format." },
- { SFE_SVX_BAD_NAME_LENGTH , "Error in 8SVX / 16SV file, NAME chunk too long." },
-
- { SFE_NIST_BAD_HEADER , "Error in NIST file, bad header." },
- { SFE_NIST_CRLF_CONVERISON, "Error : NIST file damaged by Windows CR -> CRLF conversion process." },
- { SFE_NIST_BAD_ENCODING , "Error in NIST file, unsupported compression format." },
-
- { SFE_VOC_NO_CREATIVE , "Error in VOC file, no 'Creative Voice File' marker." },
- { SFE_VOC_BAD_FORMAT , "Error in VOC file, bad format." },
- { SFE_VOC_BAD_VERSION , "Error in VOC file, bad version number." },
- { SFE_VOC_BAD_MARKER , "Error in VOC file, bad marker in file." },
- { SFE_VOC_BAD_SECTIONS , "Error in VOC file, incompatible VOC sections." },
- { SFE_VOC_MULTI_SAMPLERATE, "Error in VOC file, more than one sample rate defined." },
- { SFE_VOC_MULTI_SECTION , "Unimplemented VOC file feature, file contains multiple sound sections." },
- { SFE_VOC_MULTI_PARAM , "Error in VOC file, file contains multiple bit or channel widths." },
- { SFE_VOC_SECTION_COUNT , "Error in VOC file, too many sections." },
- { SFE_VOC_NO_PIPE , "Error : not able to operate on VOC files over a pipe." },
-
- { SFE_IRCAM_NO_MARKER , "Error in IRCAM file, bad IRCAM marker." },
- { SFE_IRCAM_BAD_CHANNELS , "Error in IRCAM file, bad channel count." },
- { SFE_IRCAM_UNKNOWN_FORMAT, "Error in IRCAM file, unknow encoding format." },
-
- { SFE_W64_64_BIT , "Error in W64 file, file contains 64 bit offset." },
-
- { SFE_W64_NO_RIFF , "Error in W64 file. No 'riff' chunk marker." },
- { SFE_W64_NO_WAVE , "Error in W64 file. No 'wave' chunk marker." },
- { SFE_W64_NO_FMT , "Error in W64 file. No 'fmt ' chunk marker." },
- { SFE_W64_NO_DATA , "Error in W64 file. No 'data' chunk marker." },
-
- { SFE_W64_FMT_SHORT , "Error in W64 file. Short 'fmt ' chunk." },
- { SFE_W64_FMT_TOO_BIG , "Error in W64 file. 'fmt ' chunk too large." },
-
- { SFE_W64_ADPCM_NOT4BIT , "Error in ADPCM W64 file. Invalid bit width." },
- { SFE_W64_ADPCM_CHANNELS , "Error in ADPCM W64 file. Invalid number of channels." },
- { SFE_W64_GSM610_FORMAT , "Error in GSM610 W64 file. Invalid format chunk." },
-
- { SFE_MAT4_BAD_NAME , "Error in MAT4 file. No variable name." },
- { SFE_MAT4_NO_SAMPLERATE , "Error in MAT4 file. No sample rate." },
- { SFE_MAT4_ZERO_CHANNELS , "Error in MAT4 file. Channel count is zero." },
-
- { SFE_MAT5_BAD_ENDIAN , "Error in MAT5 file. Not able to determine endian-ness." },
- { SFE_MAT5_NO_BLOCK , "Error in MAT5 file. Bad block structure." },
- { SFE_MAT5_SAMPLE_RATE , "Error in MAT5 file. Not able to determine sample rate." },
- { SFE_MAT5_ZERO_CHANNELS , "Error in MAT5 file. Channel count is zero." },
-
- { SFE_PVF_NO_PVF1 , "Error in PVF file. No PVF1 marker." },
- { SFE_PVF_BAD_HEADER , "Error in PVF file. Bad header." },
- { SFE_PVF_BAD_BITWIDTH , "Error in PVF file. Bad bit width." },
-
- { SFE_XI_BAD_HEADER , "Error in XI file. Bad header." },
- { SFE_XI_EXCESS_SAMPLES , "Error in XI file. Excess samples in file." },
- { SFE_XI_NO_PIPE , "Error : not able to operate on XI files over a pipe." },
-
- { SFE_HTK_NO_PIPE , "Error : not able to operate on HTK files over a pipe." },
-
- { SFE_SDS_NOT_SDS , "Error : not an SDS file." },
- { SFE_SDS_BAD_BIT_WIDTH , "Error : bad bit width for SDS file." },
-
- { SFE_SD2_FD_DISALLOWED , "Error : cannot open SD2 file without a file name." },
- { SFE_SD2_BAD_DATA_OFFSET , "Error : bad data offset." },
- { SFE_SD2_BAD_MAP_OFFSET , "Error : bad map offset." },
- { SFE_SD2_BAD_DATA_LENGTH , "Error : bad data length." },
- { SFE_SD2_BAD_MAP_LENGTH , "Error : bad map length." },
- { SFE_SD2_BAD_RSRC , "Error : bad resource fork." },
- { SFE_SD2_BAD_SAMPLE_SIZE , "Error : bad sample size." },
-
- { SFE_FLAC_BAD_HEADER , "Error : bad flac header." },
- { SFE_FLAC_NEW_DECODER , "Error : problem while creating flac decoder." },
- { SFE_FLAC_INIT_DECODER , "Error : problem while initialization of the flac decoder." },
- { SFE_FLAC_LOST_SYNC , "Error : flac decoder lost sync." },
- { SFE_FLAC_BAD_SAMPLE_RATE, "Error : flac does not support this sample rate." },
- { SFE_FLAC_UNKOWN_ERROR , "Error : unkown error in flac decoder." },
-
- { SFE_DWVW_BAD_BITWIDTH , "Error : Bad bit width for DWVW encoding. Must be 12, 16 or 24." },
- { SFE_G72X_NOT_MONO , "Error : G72x encoding does not support more than 1 channel." },
-
- { SFE_MAX_ERROR , "Maximum error number." },
- { SFE_MAX_ERROR + 1 , NULL }
-} ;
-
-/*------------------------------------------------------------------------------
-*/
-
-static int format_from_extension (SF_PRIVATE *psf) ;
-static int guess_file_type (SF_PRIVATE *psf) ;
-static int validate_sfinfo (SF_INFO *sfinfo) ;
-static int validate_psf (SF_PRIVATE *psf) ;
-static void save_header_info (SF_PRIVATE *psf) ;
-static void copy_filename (SF_PRIVATE *psf, const char *path) ;
-static int psf_close (SF_PRIVATE *psf) ;
-static int psf_open_file (SF_PRIVATE *psf, int mode, SF_INFO *sfinfo) ;
-
-static int try_resource_fork (SF_PRIVATE * psf, int mode) ;
-
-/*------------------------------------------------------------------------------
-** Private (static) variables.
-*/
-
-static int sf_errno = 0 ;
-static char sf_logbuffer [SF_BUFFER_LEN] = { 0 } ;
-static char sf_syserr [SF_SYSERR_LEN] = { 0 } ;
-
-/*------------------------------------------------------------------------------
-*/
-
-#define VALIDATE_SNDFILE_AND_ASSIGN_PSF(a,b,c) \
- { if (! (a)) \
- { sf_errno = SFE_BAD_SNDFILE_PTR ; \
- return 0 ; \
- } ; \
- (b) = (SF_PRIVATE*) (a) ; \
- if ((b)->virtual_io == SF_FALSE && \
- psf_file_valid (b) == 0) \
- { (b)->error = SFE_BAD_FILE_PTR ; \
- return 0 ; \
- } ; \
- if ((b)->Magick != SNDFILE_MAGICK) \
- { (b)->error = SFE_BAD_SNDFILE_PTR ; \
- return 0 ; \
- } ; \
- if (c) (b)->error = 0 ; \
- }
-
-/*------------------------------------------------------------------------------
-** Public functions.
-*/
-
-SNDFILE*
-sf_open (const char *path, int mode, SF_INFO *sfinfo)
-{ SF_PRIVATE *psf ;
- int error = 0 ;
-
- if ((psf = calloc (1, sizeof (SF_PRIVATE))) == NULL)
- { sf_errno = SFE_MALLOC_FAILED ;
- return NULL ;
- } ;
-
- memset (psf, 0, sizeof (SF_PRIVATE)) ;
- psf_init_files (psf) ;
-
- psf_log_printf (psf, "File : %s\n", path) ;
-
- copy_filename (psf, path) ;
-
- if (strcmp (path, "-") == 0)
- error = psf_set_stdio (psf, mode) ;
- else
- error = psf_fopen (psf, path, mode) ;
-
- if (error == 0)
- error = psf_open_file (psf, mode, sfinfo) ;
-
- if (error)
- { sf_errno = error ;
- if (error == SFE_SYSTEM)
- LSF_SNPRINTF (sf_syserr, sizeof (sf_syserr), "%s", psf->syserr) ;
- LSF_SNPRINTF (sf_logbuffer, sizeof (sf_logbuffer), "%s", psf->logbuffer) ;
- psf_close (psf) ;
- return NULL ;
- } ;
-
- memcpy (sfinfo, &(psf->sf), sizeof (SF_INFO)) ;
-
- return (SNDFILE*) psf ;
-} /* sf_open */
-
-SNDFILE*
-sf_open_fd (int fd, int mode, SF_INFO *sfinfo, int close_desc)
-{ SF_PRIVATE *psf ;
- int error ;
-
- if ((sfinfo->format & SF_FORMAT_TYPEMASK) == SF_FORMAT_SD2)
- { sf_errno = SFE_SD2_FD_DISALLOWED ;
- return NULL ;
- } ;
-
- if ((psf = calloc (1, sizeof (SF_PRIVATE))) == NULL)
- { sf_errno = SFE_MALLOC_FAILED ;
- return NULL ;
- } ;
-
- psf_init_files (psf) ;
-
- psf_set_file (psf, fd) ;
- psf->is_pipe = psf_is_pipe (psf) ;
- psf->fileoffset = psf_ftell (psf) ;
-
- if (! close_desc)
- psf->do_not_close_descriptor = SF_TRUE ;
-
- error = psf_open_file (psf, mode, sfinfo) ;
-
- if (error)
- { sf_errno = error ;
- if (error == SFE_SYSTEM)
- LSF_SNPRINTF (sf_syserr, sizeof (sf_syserr), "%s", psf->syserr) ;
- LSF_SNPRINTF (sf_logbuffer, sizeof (sf_logbuffer), "%s", psf->logbuffer) ;
- psf_close (psf) ;
- return NULL ;
- } ;
-
- memcpy (sfinfo, &(psf->sf), sizeof (SF_INFO)) ;
-
- return (SNDFILE*) psf ;
-} /* sf_open_fd */
-
-SNDFILE*
-sf_open_virtual (SF_VIRTUAL_IO *sfvirtual, int mode, SF_INFO *sfinfo, void *user_data)
-{ SF_PRIVATE *psf ;
- int error = 0 ;
-
- /* Make sure we have a valid set ot virtual pointers. */
- if (sfvirtual->get_filelen == NULL || sfvirtual->seek == NULL || sfvirtual->tell == NULL)
- { sf_errno = SFE_BAD_VIRTUAL_IO ;
- LSF_SNPRINTF (sf_logbuffer, sizeof (sf_logbuffer), "Bad vio_get_filelen / vio_seek / vio_tell in SF_VIRTUAL_IO struct.\n") ;
- return NULL ;
- } ;
-
- if ((mode == SFM_READ || mode == SFM_RDWR) && sfvirtual->read == NULL)
- { sf_errno = SFE_BAD_VIRTUAL_IO ;
- LSF_SNPRINTF (sf_logbuffer, sizeof (sf_logbuffer), "Bad vio_read in SF_VIRTUAL_IO struct.\n") ;
- return NULL ;
- } ;
-
- if ((mode == SFM_WRITE || mode == SFM_RDWR) && sfvirtual->write == NULL)
- { sf_errno = SFE_BAD_VIRTUAL_IO ;
- LSF_SNPRINTF (sf_logbuffer, sizeof (sf_logbuffer), "Bad vio_write in SF_VIRTUAL_IO struct.\n") ;
- return NULL ;
- } ;
-
- if ((psf = calloc (1, sizeof (SF_PRIVATE))) == NULL)
- { sf_errno = SFE_MALLOC_FAILED ;
- return NULL ;
- } ;
-
- psf_init_files (psf) ;
-
- psf->virtual_io = SF_TRUE ;
- psf->vio = *sfvirtual ;
- psf->vio_user_data = user_data ;
-
- psf->mode = mode ;
-
- error = psf_open_file (psf, mode, sfinfo) ;
-
- if (error)
- { sf_errno = error ;
- if (error == SFE_SYSTEM)
- LSF_SNPRINTF (sf_syserr, sizeof (sf_syserr), "%s", psf->syserr) ;
- LSF_SNPRINTF (sf_logbuffer, sizeof (sf_logbuffer), "%s", psf->logbuffer) ;
- psf_close (psf) ;
- return NULL ;
- } ;
-
- memcpy (sfinfo, &(psf->sf), sizeof (SF_INFO)) ;
-
- return (SNDFILE*) psf ;
-} /* sf_open_virtual */
-
-int
-sf_close (SNDFILE *sndfile)
-{ SF_PRIVATE *psf ;
-
- VALIDATE_SNDFILE_AND_ASSIGN_PSF (sndfile, psf, 1) ;
-
- return psf_close (psf) ;
-} /* sf_close */
-
-void
-sf_write_sync (SNDFILE *sndfile)
-{ SF_PRIVATE *psf ;
-
- if ((psf = (SF_PRIVATE *) sndfile) == NULL)
- return ;
-
- psf_fsync (psf) ;
-
- return ;
-} /* sf_write_sync */
-
-/*==============================================================================
-*/
-
-const char*
-sf_error_number (int errnum)
-{ static const char *bad_errnum =
- "No error defined for this error number. This is a bug in libsndfile." ;
- int k ;
-
- if (errnum == SFE_MAX_ERROR)
- return SndfileErrors [0].str ;
-
- if (errnum < 0 || errnum > SFE_MAX_ERROR)
- { /* This really shouldn't happen in release versions. */
- printf ("Not a valid error number (%d).\n", errnum) ;
- return bad_errnum ;
- } ;
-
- for (k = 0 ; SndfileErrors [k].str ; k++)
- if (errnum == SndfileErrors [k].error)
- return SndfileErrors [k].str ;
-
- return bad_errnum ;
-} /* sf_error_number */
-
-const char*
-sf_strerror (SNDFILE *sndfile)
-{ SF_PRIVATE *psf = NULL ;
- int errnum ;
-
- if (! sndfile)
- { errnum = sf_errno ;
- if (errnum == SFE_SYSTEM && sf_syserr [0])
- return sf_syserr ;
- }
- else
- { psf = (SF_PRIVATE *) sndfile ;
-
- if (psf->Magick != SNDFILE_MAGICK)
- return "sf_strerror : Bad magic number." ;
-
- errnum = psf->error ;
-
- if (errnum == SFE_SYSTEM && psf->syserr [0])
- return psf->syserr ;
- } ;
-
- return sf_error_number (errnum) ;
-} /* sf_strerror */
-
-/*------------------------------------------------------------------------------
-*/
-
-int
-sf_error (SNDFILE *sndfile)
-{ SF_PRIVATE *psf ;
-
- if (! sndfile)
- { return sf_errno ;
- } ;
-
- VALIDATE_SNDFILE_AND_ASSIGN_PSF (sndfile, psf, 0) ;
-
- if (psf->error)
- return psf->error ;
-
- return 0 ;
-} /* sf_error */
-
-/*------------------------------------------------------------------------------
-*/
-
-int
-sf_perror (SNDFILE *sndfile)
-{ SF_PRIVATE *psf ;
- int errnum ;
-
- if (! sndfile)
- { errnum = sf_errno ;
- }
- else
- { VALIDATE_SNDFILE_AND_ASSIGN_PSF (sndfile, psf, 0) ;
- errnum = psf->error ;
- } ;
-
- fprintf (stderr, "%s\n", sf_error_number (errnum)) ;
- return SFE_NO_ERROR ;
-} /* sf_perror */
-
-
-/*------------------------------------------------------------------------------
-*/
-
-int
-sf_error_str (SNDFILE *sndfile, char *str, size_t maxlen)
-{ SF_PRIVATE *psf ;
- int errnum ;
-
- if (! str)
- return SFE_INTERNAL ;
-
- if (! sndfile)
- errnum = sf_errno ;
- else
- { VALIDATE_SNDFILE_AND_ASSIGN_PSF (sndfile, psf, 0) ;
- errnum = psf->error ;
- } ;
-
- LSF_SNPRINTF (str, maxlen, "%s", sf_error_number (errnum)) ;
-
- return SFE_NO_ERROR ;
-} /* sf_error_str */
-
-/*==============================================================================
-*/
-
-int
-sf_format_check (const SF_INFO *info)
-{ int subformat, endian ;
-
- subformat = info->format & SF_FORMAT_SUBMASK ;
- endian = info->format & SF_FORMAT_ENDMASK ;
-
- /* This is the place where each file format can check if the suppiled
- ** SF_INFO struct is valid.
- ** Return 0 on failure, 1 ons success.
- */
-
- if (info->channels < 1 || info->channels > 256)
- return 0 ;
-
- if (info->samplerate < 0)
- return 0 ;
-
- switch (info->format & SF_FORMAT_TYPEMASK)
- { case SF_FORMAT_WAV :
- case SF_FORMAT_WAVEX :
- /* WAV now allows both endian, RIFF or RIFX (little or big respectively) */
- if (subformat == SF_FORMAT_PCM_U8 || subformat == SF_FORMAT_PCM_16)
- return 1 ;
- if (subformat == SF_FORMAT_PCM_24 || subformat == SF_FORMAT_PCM_32)
- return 1 ;
- if ((subformat == SF_FORMAT_IMA_ADPCM || subformat == SF_FORMAT_MS_ADPCM) && info->channels <= 2)
- return 1 ;
- if (subformat == SF_FORMAT_GSM610 && info->channels == 1)
- return 1 ;
- if (subformat == SF_FORMAT_G721_32 && info->channels == 1)
- return 1 ;
- if (subformat == SF_FORMAT_ULAW || subformat == SF_FORMAT_ALAW)
- return 1 ;
- if (subformat == SF_FORMAT_FLOAT || subformat == SF_FORMAT_DOUBLE)
- return 1 ;
- break ;
-
- case SF_FORMAT_AIFF :
- /* AIFF does allow both endian-nesses for PCM data.*/
- if (subformat == SF_FORMAT_PCM_16 || subformat == SF_FORMAT_PCM_24 || subformat == SF_FORMAT_PCM_32)
- return 1 ;
- /* Other encodings. Check for endian-ness. */
- if (endian == SF_ENDIAN_LITTLE || endian == SF_ENDIAN_CPU)
- return 0 ;
- if (subformat == SF_FORMAT_PCM_U8 || subformat == SF_FORMAT_PCM_S8)
- return 1 ;
- if (subformat == SF_FORMAT_FLOAT || subformat == SF_FORMAT_DOUBLE)
- return 1 ;
- if (subformat == SF_FORMAT_ULAW || subformat == SF_FORMAT_ALAW)
- return 1 ;
- if ((subformat == SF_FORMAT_DWVW_12 || subformat == SF_FORMAT_DWVW_16 ||
- subformat == SF_FORMAT_DWVW_24) && info-> channels == 1)
- return 1 ;
- if (subformat == SF_FORMAT_GSM610 && info->channels == 1)
- return 1 ;
- if (subformat == SF_FORMAT_IMA_ADPCM && (info->channels == 1 || info->channels == 2))
- return 1 ;
- break ;
-
- case SF_FORMAT_AU :
- if (subformat == SF_FORMAT_PCM_S8 || subformat == SF_FORMAT_PCM_16)
- return 1 ;
- if (subformat == SF_FORMAT_PCM_24 || subformat == SF_FORMAT_PCM_32)
- return 1 ;
- if (subformat == SF_FORMAT_ULAW || subformat == SF_FORMAT_ALAW)
- return 1 ;
- if (subformat == SF_FORMAT_FLOAT || subformat == SF_FORMAT_DOUBLE)
- return 1 ;
- if (subformat == SF_FORMAT_G721_32 && info->channels == 1)
- return 1 ;
- if (subformat == SF_FORMAT_G723_24 && info->channels == 1)
- return 1 ;
- if (subformat == SF_FORMAT_G723_40 && info->channels == 1)
- return 1 ;
- break ;
-
- case SF_FORMAT_CAF :
- if (subformat == SF_FORMAT_PCM_S8 || subformat == SF_FORMAT_PCM_16)
- return 1 ;
- if (subformat == SF_FORMAT_PCM_24 || subformat == SF_FORMAT_PCM_32)
- return 1 ;
- if (subformat == SF_FORMAT_ULAW || subformat == SF_FORMAT_ALAW)
- return 1 ;
- if (subformat == SF_FORMAT_FLOAT || subformat == SF_FORMAT_DOUBLE)
- return 1 ;
- break ;
-
- case SF_FORMAT_RAW :
- if (subformat == SF_FORMAT_PCM_U8 || subformat == SF_FORMAT_PCM_S8 || subformat == SF_FORMAT_PCM_16)
- return 1 ;
- if (subformat == SF_FORMAT_PCM_24 || subformat == SF_FORMAT_PCM_32)
- return 1 ;
- if (subformat == SF_FORMAT_FLOAT || subformat == SF_FORMAT_DOUBLE)
- return 1 ;
- if (subformat == SF_FORMAT_ALAW || subformat == SF_FORMAT_ULAW)
- return 1 ;
- if ((subformat == SF_FORMAT_DWVW_12 || subformat == SF_FORMAT_DWVW_16 ||
- subformat == SF_FORMAT_DWVW_24) && info-> channels == 1)
- return 1 ;
- if (subformat == SF_FORMAT_GSM610 && info->channels == 1)
- return 1 ;
- if (subformat == SF_FORMAT_VOX_ADPCM && info->channels == 1)
- return 1 ;
- break ;
-
- case SF_FORMAT_PAF :
- if (subformat == SF_FORMAT_PCM_S8 || subformat == SF_FORMAT_PCM_16)
- return 1 ;
- if (subformat == SF_FORMAT_PCM_24 || subformat == SF_FORMAT_PCM_32)
- return 1 ;
- break ;
-
- case SF_FORMAT_SVX :
- /* SVX currently does not support more than one channel for write.
- ** Read will allow more than one channel but only allow one here.
- */
- if (info->channels != 1)
- return 0 ;
- /* Always big endian. */
- if (endian == SF_ENDIAN_LITTLE || endian == SF_ENDIAN_CPU)
- return 0 ;
-
- if ((subformat == SF_FORMAT_PCM_S8 || subformat == SF_FORMAT_PCM_16) && info->channels == 1)
- return 1 ;
- break ;
-
- case SF_FORMAT_NIST :
- if (subformat == SF_FORMAT_PCM_S8 || subformat == SF_FORMAT_PCM_16)
- return 1 ;
- if (subformat == SF_FORMAT_PCM_24 || subformat == SF_FORMAT_PCM_32)
- return 1 ;
- if (subformat == SF_FORMAT_ULAW || subformat == SF_FORMAT_ALAW)
- return 1 ;
- break ;
-
- case SF_FORMAT_IRCAM :
- if (subformat == SF_FORMAT_PCM_16 || subformat == SF_FORMAT_PCM_24 || subformat == SF_FORMAT_PCM_32)
- return 1 ;
- if (subformat == SF_FORMAT_ULAW || subformat == SF_FORMAT_ALAW || subformat == SF_FORMAT_FLOAT)
- return 1 ;
- break ;
-
- case SF_FORMAT_VOC :
- /* VOC is strictly little endian. */
- if (endian == SF_ENDIAN_BIG || endian == SF_ENDIAN_CPU)
- return 0 ;
- if (subformat == SF_FORMAT_PCM_U8 || subformat == SF_FORMAT_PCM_16)
- return 1 ;
- if (subformat == SF_FORMAT_ULAW || subformat == SF_FORMAT_ALAW)
- return 1 ;
- break ;
-
- case SF_FORMAT_W64 :
- /* W64 is strictly little endian. */
- if (endian == SF_ENDIAN_BIG || endian == SF_ENDIAN_CPU)
- return 0 ;
- if (subformat == SF_FORMAT_PCM_U8 || subformat == SF_FORMAT_PCM_16)
- return 1 ;
- if (subformat == SF_FORMAT_PCM_24 || subformat == SF_FORMAT_PCM_32)
- return 1 ;
- if ((subformat == SF_FORMAT_IMA_ADPCM || subformat == SF_FORMAT_MS_ADPCM) && info->channels <= 2)
- return 1 ;
- if (subformat == SF_FORMAT_GSM610 && info->channels == 1)
- return 1 ;
- if (subformat == SF_FORMAT_ULAW || subformat == SF_FORMAT_ALAW)
- return 1 ;
- if (subformat == SF_FORMAT_FLOAT || subformat == SF_FORMAT_DOUBLE)
- return 1 ;
- break ;
-
- case SF_FORMAT_MAT4 :
- if (subformat == SF_FORMAT_PCM_16 || subformat == SF_FORMAT_PCM_32)
- return 1 ;
- if (subformat == SF_FORMAT_FLOAT || subformat == SF_FORMAT_DOUBLE)
- return 1 ;
- break ;
-
- case SF_FORMAT_MAT5 :
- if (subformat == SF_FORMAT_PCM_U8 || subformat == SF_FORMAT_PCM_16 || subformat == SF_FORMAT_PCM_32)
- return 1 ;
- if (subformat == SF_FORMAT_FLOAT || subformat == SF_FORMAT_DOUBLE)
- return 1 ;
- break ;
-
- case SF_FORMAT_PVF :
- if (subformat == SF_FORMAT_PCM_S8 || subformat == SF_FORMAT_PCM_16 || subformat == SF_FORMAT_PCM_32)
- return 1 ;
- break ;
-
- case SF_FORMAT_XI :
- if (info->channels != 1)
- return 0 ;
- if (subformat == SF_FORMAT_DPCM_8 || subformat == SF_FORMAT_DPCM_16)
- return 1 ;
- break ;
-
- case SF_FORMAT_HTK :
- /* HTK is strictly big endian. */
- if (endian == SF_ENDIAN_LITTLE || endian == SF_ENDIAN_CPU)
- return 0 ;
- if (info->channels != 1)
- return 0 ;
- if (subformat == SF_FORMAT_PCM_16)
- return 1 ;
- break ;
-
- case SF_FORMAT_SDS :
- /* SDS is strictly big endian. */
- if (endian == SF_ENDIAN_LITTLE || endian == SF_ENDIAN_CPU)
- return 0 ;
- if (info->channels != 1)
- return 0 ;
- if (subformat == SF_FORMAT_PCM_S8 || subformat == SF_FORMAT_PCM_16 || subformat == SF_FORMAT_PCM_24)
- return 1 ;
- break ;
-
- case SF_FORMAT_AVR :
- /* SDS is strictly big endian. */
- if (endian == SF_ENDIAN_LITTLE || endian == SF_ENDIAN_CPU)
- return 0 ;
- if (info->channels > 2)
- return 0 ;
- if (subformat == SF_FORMAT_PCM_U8 || subformat == SF_FORMAT_PCM_S8 || subformat == SF_FORMAT_PCM_16)
- return 1 ;
- break ;
-
- case SF_FORMAT_FLAC :
- /* FLAC can't do more than 8 channels. */
- if (info->channels > 8)
- return 0 ;
- if (subformat == SF_FORMAT_PCM_S8 || subformat == SF_FORMAT_PCM_16 || subformat == SF_FORMAT_PCM_24)
- return 1 ;
- break ;
-
- case SF_FORMAT_SD2 :
- /* SD2 is strictly big endian. */
- if (endian == SF_ENDIAN_LITTLE || endian == SF_ENDIAN_CPU)
- return 0 ;
- if (subformat == SF_FORMAT_PCM_S8 || subformat == SF_FORMAT_PCM_16 || subformat == SF_FORMAT_PCM_24)
- return 1 ;
- break ;
-
- default : break ;
- } ;
-
- return 0 ;
-} /* sf_format_check */
-
-/*------------------------------------------------------------------------------
-*/
-
-int
-sf_command (SNDFILE *sndfile, int command, void *data, int datasize)
-{ SF_PRIVATE *psf = NULL ;
- int old_value ;
-
- /* This set of commands do not need the sndfile parameter. */
- switch (command)
- { case SFC_GET_LIB_VERSION :
- if (data == NULL)
- return (psf->error = SFE_BAD_CONTROL_CMD) ;
- if (ENABLE_EXPERIMENTAL_CODE)
- LSF_SNPRINTF (data, datasize, "%s-%s-exp", PACKAGE_NAME, PACKAGE_VERSION) ;
- else
- LSF_SNPRINTF (data, datasize, "%s-%s", PACKAGE_NAME, PACKAGE_VERSION) ;
- return strlen (data) ;
-
- case SFC_GET_SIMPLE_FORMAT_COUNT :
- if (data == NULL || datasize != SIGNED_SIZEOF (int))
- return (sf_errno = SFE_BAD_CONTROL_CMD) ;
- *((int*) data) = psf_get_format_simple_count () ;
- return 0 ;
-
- case SFC_GET_SIMPLE_FORMAT :
- if (data == NULL || datasize != SIGNED_SIZEOF (SF_FORMAT_INFO))
- return (sf_errno = SFE_BAD_CONTROL_CMD) ;
- return psf_get_format_simple (data) ;
-
- case SFC_GET_FORMAT_MAJOR_COUNT :
- if (data == NULL || datasize != SIGNED_SIZEOF (int))
- return (sf_errno = SFE_BAD_CONTROL_CMD) ;
- *((int*) data) = psf_get_format_major_count () ;
- return 0 ;
-
- case SFC_GET_FORMAT_MAJOR :
- if (data == NULL || datasize != SIGNED_SIZEOF (SF_FORMAT_INFO))
- return (sf_errno = SFE_BAD_CONTROL_CMD) ;
- return psf_get_format_major (data) ;
-
- case SFC_GET_FORMAT_SUBTYPE_COUNT :
- if (data == NULL || datasize != SIGNED_SIZEOF (int))
- return (sf_errno = SFE_BAD_CONTROL_CMD) ;
- *((int*) data) = psf_get_format_subtype_count () ;
- return 0 ;
-
- case SFC_GET_FORMAT_SUBTYPE :
- if (data == NULL || datasize != SIGNED_SIZEOF (SF_FORMAT_INFO))
- return (sf_errno = SFE_BAD_CONTROL_CMD) ;
- return psf_get_format_subtype (data) ;
-
- case SFC_GET_FORMAT_INFO :
- if (data == NULL || datasize != SIGNED_SIZEOF (SF_FORMAT_INFO))
- return (sf_errno = SFE_BAD_CONTROL_CMD) ;
- return psf_get_format_info (data) ;
- } ;
-
- if (sndfile == NULL && command == SFC_GET_LOG_INFO)
- { if (data == NULL)
- return (psf->error = SFE_BAD_CONTROL_CMD) ;
- LSF_SNPRINTF (data, datasize, "%s", sf_logbuffer) ;
- return strlen (data) ;
- } ;
-
- VALIDATE_SNDFILE_AND_ASSIGN_PSF (sndfile, psf, 1) ;
-
- switch (command)
- { case SFC_SET_NORM_FLOAT :
- old_value = psf->norm_float ;
- psf->norm_float = (datasize) ? SF_TRUE : SF_FALSE ;
- return old_value ;
-
- case SFC_SET_NORM_DOUBLE :
- old_value = psf->norm_double ;
- psf->norm_double = (datasize) ? SF_TRUE : SF_FALSE ;
- return old_value ;
-
- case SFC_GET_NORM_FLOAT :
- return psf->norm_float ;
-
- case SFC_GET_NORM_DOUBLE :
- return psf->norm_double ;
-
- case SFC_SET_SCALE_FLOAT_INT_READ :
- old_value = psf->float_int_mult ;
-
- psf->float_int_mult = (datasize != 0) ? SF_TRUE : SF_FALSE ;
- if (psf->float_int_mult && psf->float_max < 0.0)
- psf->float_max = psf_calc_signal_max (psf, SF_FALSE) ;
- return old_value ;
-
- case SFC_SET_ADD_PEAK_CHUNK :
- { int format = psf->sf.format & SF_FORMAT_TYPEMASK ;
-
- /* Only WAV and AIFF support the PEAK chunk. */
- if (format != SF_FORMAT_WAV && format != SF_FORMAT_WAVEX && format != SF_FORMAT_AIFF)
- return SF_FALSE ;
-
- format = psf->sf.format & SF_FORMAT_SUBMASK ;
-
- /* Only files containg the following data types support the PEAK chunk. */
- if (format != SF_FORMAT_FLOAT && format != SF_FORMAT_DOUBLE)
- return SF_FALSE ;
-
- } ;
- /* Can only do this is in SFM_WRITE mode. */
- if (psf->mode != SFM_WRITE)
- return SF_FALSE ;
- /* If data has already been written this must fail. */
- if (psf->have_written)
- return SF_FALSE ;
- /* Everything seems OK, so set psf->has_peak and re-write header. */
- if (datasize == SF_FALSE && psf->peak_info != NULL)
- { free (psf->peak_info) ;
- psf->peak_info = NULL ;
- }
- else if (psf->peak_info == NULL)
- { psf->peak_info = peak_info_calloc (psf->sf.channels) ;
- psf->peak_info->peak_loc = SF_PEAK_START ;
- } ;
-
- if (psf->write_header)
- psf->write_header (psf, SF_TRUE) ;
- return datasize ;
-
- case SFC_GET_LOG_INFO :
- if (data == NULL)
- return (psf->error = SFE_BAD_CONTROL_CMD) ;
- LSF_SNPRINTF (data, datasize, "%s", psf->logbuffer) ;
- break ;
-
- case SFC_CALC_SIGNAL_MAX :
- if (data == NULL || datasize != sizeof (double))
- return (psf->error = SFE_BAD_CONTROL_CMD) ;
- *((double*) data) = psf_calc_signal_max (psf, SF_FALSE) ;
- break ;
-
- case SFC_CALC_NORM_SIGNAL_MAX :
- if (data == NULL || datasize != sizeof (double))
- return (psf->error = SFE_BAD_CONTROL_CMD) ;
- *((double*) data) = psf_calc_signal_max (psf, SF_TRUE) ;
- break ;
-
- case SFC_CALC_MAX_ALL_CHANNELS :
- if (data == NULL || datasize != SIGNED_SIZEOF (double) * psf->sf.channels)
- return (psf->error = SFE_BAD_CONTROL_CMD) ;
- return psf_calc_max_all_channels (psf, (double*) data, SF_FALSE) ;
-
- case SFC_CALC_NORM_MAX_ALL_CHANNELS :
- if (data == NULL || datasize != SIGNED_SIZEOF (double) * psf->sf.channels)
- return (psf->error = SFE_BAD_CONTROL_CMD) ;
- return psf_calc_max_all_channels (psf, (double*) data, SF_TRUE) ;
-
- case SFC_GET_SIGNAL_MAX :
- if (data == NULL || datasize != sizeof (double))
- { psf->error = SFE_BAD_CONTROL_CMD ;
- return SF_FALSE ;
- } ;
- return psf_get_signal_max (psf, (double *) data) ;
-
- case SFC_GET_MAX_ALL_CHANNELS :
- if (data == NULL || datasize != SIGNED_SIZEOF (double) * psf->sf.channels)
- { psf->error = SFE_BAD_CONTROL_CMD ;
- return SF_FALSE ;
- } ;
- return psf_get_max_all_channels (psf, (double*) data) ;
-
- case SFC_UPDATE_HEADER_NOW :
- if (psf->write_header)
- psf->write_header (psf, SF_TRUE) ;
- break ;
-
- case SFC_SET_UPDATE_HEADER_AUTO :
- psf->auto_header = datasize ? SF_TRUE : SF_FALSE ;
- return psf->auto_header ;
- break ;
-
- case SFC_SET_ADD_DITHER_ON_WRITE :
- case SFC_SET_ADD_DITHER_ON_READ :
- /*
- ** FIXME !
- ** These are obsolete. Just return.
- ** Remove some time after version 1.0.8.
- */
- break ;
-
- case SFC_SET_DITHER_ON_WRITE :
- if (data == NULL || datasize != SIGNED_SIZEOF (SF_DITHER_INFO))
- return (psf->error = SFE_BAD_CONTROL_CMD) ;
- memcpy (&psf->write_dither, data, sizeof (psf->write_dither)) ;
- if (psf->mode == SFM_WRITE || psf->mode == SFM_RDWR)
- dither_init (psf, SFM_WRITE) ;
- break ;
-
- case SFC_SET_DITHER_ON_READ :
- if (data == NULL || datasize != SIGNED_SIZEOF (SF_DITHER_INFO))
- return (psf->error = SFE_BAD_CONTROL_CMD) ;
- memcpy (&psf->read_dither, data, sizeof (psf->read_dither)) ;
- if (psf->mode == SFM_READ || psf->mode == SFM_RDWR)
- dither_init (psf, SFM_READ) ;
- break ;
-
- case SFC_FILE_TRUNCATE :
- if (psf->mode != SFM_WRITE && psf->mode != SFM_RDWR)
- return SF_TRUE ;
- if (datasize != sizeof (sf_count_t))
- return SF_TRUE ;
- { sf_count_t position ;
-
- position = *((sf_count_t*) data) ;
-
- if (sf_seek (sndfile, position, SEEK_SET) != position)
- return SF_TRUE ;
-
- psf->sf.frames = position ;
-
- position = psf_fseek (psf, 0, SEEK_CUR) ;
-
- return psf_ftruncate (psf, position) ;
- } ;
- break ;
-
- case SFC_SET_RAW_START_OFFSET :
- if (data == NULL || datasize != sizeof (sf_count_t))
- return (psf->error = SFE_BAD_CONTROL_CMD) ;
- if ((psf->sf.format & SF_FORMAT_TYPEMASK) != SF_FORMAT_RAW)
- return (psf->error = SFE_BAD_CONTROL_CMD) ;
-
- psf->dataoffset = *((sf_count_t*) data) ;
- sf_seek (sndfile, 0, SEEK_CUR) ;
- break ;
-
- case SFC_GET_EMBED_FILE_INFO :
- if (data == NULL || datasize != sizeof (SF_EMBED_FILE_INFO))
- return (psf->error = SFE_BAD_CONTROL_CMD) ;
-
- ((SF_EMBED_FILE_INFO*) data)->offset = psf->fileoffset ;
- ((SF_EMBED_FILE_INFO*) data)->length = psf->filelength ;
- break ;
-
- /* Lite remove start */
- case SFC_TEST_IEEE_FLOAT_REPLACE :
- psf->ieee_replace = (datasize) ? SF_TRUE : SF_FALSE ;
- if ((psf->sf.format & SF_FORMAT_SUBMASK) == SF_FORMAT_FLOAT)
- float32_init (psf) ;
- else if ((psf->sf.format & SF_FORMAT_SUBMASK) == SF_FORMAT_DOUBLE)
- double64_init (psf) ;
- else
- return (psf->error = SFE_BAD_CONTROL_CMD) ;
- break ;
- /* Lite remove end */
-
- case SFC_SET_CLIPPING :
- psf->add_clipping = (datasize) ? SF_TRUE : SF_FALSE ;
- return psf->add_clipping ;
-
- case SFC_GET_CLIPPING :
- return psf->add_clipping ;
-
- case SFC_GET_LOOP_INFO :
- if (datasize != sizeof (SF_LOOP_INFO) || data == NULL)
- return SF_FALSE ;
- if (psf->loop_info == NULL)
- return SF_FALSE ;
- memcpy (data, psf->loop_info, sizeof (SF_LOOP_INFO)) ;
- return SF_TRUE ;
-
- case SFC_SET_BROADCAST_INFO : {
- int format = psf->sf.format & SF_FORMAT_TYPEMASK ;
-
- /* Only WAV supports the BEXT (Broadcast) chunk. */
- if (format != SF_FORMAT_WAV && format != SF_FORMAT_WAVEX)
- return SF_FALSE ;
-
- /* Can only do this is in SFM_RDWR or SFM_WRITE modes. */
- if (psf->mode == SFM_READ)
- return SF_FALSE ;
-
- /* If data has already been written this must fail. */
- if (psf->broadcast_info == NULL && psf->have_written)
- return SF_FALSE ;
-
- if (psf->broadcast_info == NULL)
- psf->broadcast_info = broadcast_info_alloc () ;
-
- broadcast_info_copy (psf->broadcast_info, data) ;
- broadcast_add_coding_history (psf->broadcast_info, psf->sf.channels, psf->sf.samplerate) ;
-
- if (psf->auto_header && psf->write_header)
- psf->write_header (psf, SF_TRUE) ;
-
- return SF_TRUE ;
- }
-
- case SFC_GET_BROADCAST_INFO :
- if (datasize != sizeof (SF_BROADCAST_INFO) || data == NULL)
- return SF_FALSE ;
- if (psf->broadcast_info == NULL)
- return SF_FALSE ;
- return broadcast_info_copy (data, psf->broadcast_info) ;
-
- case SFC_GET_INSTRUMENT :
- if (datasize != sizeof (SF_INSTRUMENT) || data == NULL)
- return SF_FALSE ;
- if (psf->instrument == NULL)
- return SF_FALSE ;
- memcpy (data, psf->instrument, sizeof (SF_INSTRUMENT)) ;
- return SF_TRUE ;
-
- case SFC_SET_INSTRUMENT :
- /* If data has already been written this must fail. */
- if (psf->have_written)
- return SF_FALSE ;
- if (datasize != sizeof (SF_INSTRUMENT) || data == NULL)
- return SF_FALSE ;
- if (psf->instrument == NULL && (psf->instrument = psf_instrument_alloc ()) == NULL)
- { psf->error = SFE_MALLOC_FAILED ;
- return SF_FALSE ;
- } ;
- memcpy (psf->instrument, data, sizeof (SF_INSTRUMENT)) ;
- return SF_TRUE ;
-
- default :
- /* Must be a file specific command. Pass it on. */
- if (psf->command)
- return psf->command (psf, command, data, datasize) ;
-
- psf_log_printf (psf, "*** sf_command : cmd = 0x%X\n", command) ;
- return (psf->error = SFE_BAD_CONTROL_CMD) ;
- } ;
-
- return 0 ;
-} /* sf_command */
-
-/*------------------------------------------------------------------------------
-*/
-
-sf_count_t
-sf_seek (SNDFILE *sndfile, sf_count_t offset, int whence)
-{ SF_PRIVATE *psf ;
- sf_count_t seek_from_start = 0, retval ;
-
- VALIDATE_SNDFILE_AND_ASSIGN_PSF (sndfile, psf, 1) ;
-
- if (! psf->sf.seekable)
- { psf->error = SFE_NOT_SEEKABLE ;
- return PSF_SEEK_ERROR ;
- } ;
-
- /* If the whence parameter has a mode ORed in, check to see that
- ** it makes sense.
- */
- if (((whence & SFM_MASK) == SFM_WRITE && psf->mode == SFM_READ) ||
- ((whence & SFM_MASK) == SFM_READ && psf->mode == SFM_WRITE))
- { psf->error = SFE_WRONG_SEEK ;
- return PSF_SEEK_ERROR ;
- } ;
-
- /* Convert all SEEK_CUR and SEEK_END into seek_from_start to be
- ** used with SEEK_SET.
- */
- switch (whence)
- { /* The SEEK_SET behaviour is independant of mode. */
- case SEEK_SET :
- case SEEK_SET | SFM_READ :
- case SEEK_SET | SFM_WRITE :
- case SEEK_SET | SFM_RDWR :
- seek_from_start = offset ;
- break ;
-
- /* The SEEK_CUR is a little more tricky. */
- case SEEK_CUR :
- if (offset == 0)
- { if (psf->mode == SFM_READ)
- return psf->read_current ;
- if (psf->mode == SFM_WRITE)
- return psf->write_current ;
- } ;
- if (psf->mode == SFM_READ)
- seek_from_start = psf->read_current + offset ;
- else if (psf->mode == SFM_WRITE || psf->mode == SFM_RDWR)
- seek_from_start = psf->write_current + offset ;
- else
- psf->error = SFE_AMBIGUOUS_SEEK ;
- break ;
-
- case SEEK_CUR | SFM_READ :
- if (offset == 0)
- return psf->read_current ;
- seek_from_start = psf->read_current + offset ;
- break ;
-
- case SEEK_CUR | SFM_WRITE :
- if (offset == 0)
- return psf->write_current ;
- seek_from_start = psf->write_current + offset ;
- break ;
-
- /* The SEEK_END */
- case SEEK_END :
- case SEEK_END | SFM_READ :
- case SEEK_END | SFM_WRITE :
- seek_from_start = psf->sf.frames + offset ;
- break ;
-
- default :
- psf->error = SFE_BAD_SEEK ;
- break ;
- } ;
-
- if (psf->error)
- return PSF_SEEK_ERROR ;
-
-#ifdef ECDL_ORIGINAL
- if (seek_from_start < 0 || seek_from_start > psf->sf.frames)
- { psf->error = SFE_BAD_SEEK ;
- return PSF_SEEK_ERROR ;
- } ;
-#else
- if (((whence & SFM_MASK) == SFM_WRITE) || (psf->mode == SFM_WRITE || psf->mode == SFM_RDWR))
- { if (seek_from_start < 0 /* || (seek_from_start > psf->sf.frames && post-audio chunks exist) */ )
- { psf->error = SFE_BAD_SEEK ;
- return PSF_SEEK_ERROR ;
- }
- }
- else /* seek for reading */
- { if (seek_from_start < 0 || seek_from_start > psf->sf.frames)
- { psf->error = SFE_BAD_SEEK ;
- return PSF_SEEK_ERROR ;
- }
- }
-#endif
-
- if (psf->seek)
- { int new_mode = (whence & SFM_MASK) ? (whence & SFM_MASK) : psf->mode ;
-
- retval = psf->seek (psf, new_mode, seek_from_start) ;
-
- switch (new_mode)
- { case SFM_READ :
- psf->read_current = retval ;
- break ;
- case SFM_WRITE :
- psf->write_current = retval ;
- break ;
- case SFM_RDWR :
- psf->read_current = retval ;
- psf->write_current = retval ;
- new_mode = SFM_READ ;
- break ;
- } ;
-
-
- psf->last_op = new_mode ;
-
- return retval ;
- } ;
-
- psf->error = SFE_AMBIGUOUS_SEEK ;
- return PSF_SEEK_ERROR ;
-} /* sf_seek */
-
-/*------------------------------------------------------------------------------
-*/
-
-const char*
-sf_get_string (SNDFILE *sndfile, int str_type)
-{ SF_PRIVATE *psf ;
-
- if ((psf = (SF_PRIVATE*) sndfile) == NULL)
- return NULL ;
- if (psf->Magick != SNDFILE_MAGICK)
- return NULL ;
-
- return psf_get_string (psf, str_type) ;
-} /* sf_get_string */
-
-int
-sf_set_string (SNDFILE *sndfile, int str_type, const char* str)
-{ SF_PRIVATE *psf ;
-
- VALIDATE_SNDFILE_AND_ASSIGN_PSF (sndfile, psf, 1) ;
-
- return psf_set_string (psf, str_type, str) ;
-} /* sf_get_string */
-
-/*==============================================================================
-*/
-
-sf_count_t
-sf_read_raw (SNDFILE *sndfile, void *ptr, sf_count_t bytes)
-{ SF_PRIVATE *psf ;
- sf_count_t count ;
- int bytewidth, blockwidth ;
-
- VALIDATE_SNDFILE_AND_ASSIGN_PSF (sndfile, psf, 1) ;
-
- bytewidth = (psf->bytewidth > 0) ? psf->bytewidth : 1 ;
- blockwidth = (psf->blockwidth > 0) ? psf->blockwidth : 1 ;
-
- if (psf->mode == SFM_WRITE)
- { psf->error = SFE_NOT_READMODE ;
- return 0 ;
- } ;
-
- if (bytes < 0 || psf->read_current >= psf->datalength)
- { psf_memset (ptr, 0, bytes) ;
- return 0 ;
- } ;
-
- if (bytes % (psf->sf.channels * bytewidth))
- { psf->error = SFE_BAD_READ_ALIGN ;
- return 0 ;
- } ;
-
- count = psf_fread (ptr, 1, bytes, psf) ;
-
- if (count < bytes)
- psf_memset (((char*) ptr) + count, 0, bytes - count) ;
-
- psf->read_current += count / blockwidth ;
-
- psf->last_op = SFM_READ ;
-
- return count ;
-} /* sf_read_raw */
-
-/*------------------------------------------------------------------------------
-*/
-
-sf_count_t
-sf_read_short (SNDFILE *sndfile, short *ptr, sf_count_t len)
-{ SF_PRIVATE *psf ;
- sf_count_t count, extra ;
-
- VALIDATE_SNDFILE_AND_ASSIGN_PSF (sndfile, psf, 1) ;
-
- if (psf->mode == SFM_WRITE)
- { psf->error = SFE_NOT_READMODE ;
- return 0 ;
- } ;
-
- if (len % psf->sf.channels)
- { psf->error = SFE_BAD_READ_ALIGN ;
- return 0 ;
- } ;
-
- if (len <= 0 || psf->read_current >= psf->sf.frames)
- { psf_memset (ptr, 0, len * sizeof (short)) ;
- return 0 ; /* End of file. */
- } ;
-
- if (! psf->read_short || psf->seek == NULL)
- { psf->error = SFE_UNIMPLEMENTED ;
- return 0 ;
- } ;
-
- if (psf->last_op != SFM_READ)
- if (psf->seek (psf, SFM_READ, psf->read_current) < 0)
- return 0 ;
-
- count = psf->read_short (psf, ptr, len) ;
-
- if (psf->read_current + count / psf->sf.channels > psf->sf.frames)
- { count = (psf->sf.frames - psf->read_current) * psf->sf.channels ;
- extra = len - count ;
- psf_memset (ptr + count, 0, extra * sizeof (short)) ;
- psf->read_current = psf->sf.frames ;
- } ;
-
- psf->read_current += count / psf->sf.channels ;
-
- psf->last_op = SFM_READ ;
-
- if (psf->read_current > psf->sf.frames)
- { count = psf->sf.channels * (psf->read_current - psf->sf.frames) ;
- psf->read_current = psf->sf.frames ;
- } ;
-
- return count ;
-} /* sf_read_short */
-
-sf_count_t
-sf_readf_short (SNDFILE *sndfile, short *ptr, sf_count_t frames)
-{ SF_PRIVATE *psf ;
- sf_count_t count, extra ;
-
- VALIDATE_SNDFILE_AND_ASSIGN_PSF (sndfile, psf, 1) ;
-
- if (psf->mode == SFM_WRITE)
- { psf->error = SFE_NOT_READMODE ;
- return 0 ;
- } ;
-
- if (frames <= 0 || psf->read_current >= psf->sf.frames)
- { psf_memset (ptr, 0, frames * psf->sf.channels * sizeof (short)) ;
- return 0 ; /* End of file. */
- } ;
-
- if (! psf->read_short || psf->seek == NULL)
- { psf->error = SFE_UNIMPLEMENTED ;
- return 0 ;
- } ;
-
- if (psf->last_op != SFM_READ)
- if (psf->seek (psf, SFM_READ, psf->read_current) < 0)
- return 0 ;
-
- count = psf->read_short (psf, ptr, frames * psf->sf.channels) ;
-
- if (psf->read_current + count / psf->sf.channels > psf->sf.frames)
- { count = (psf->sf.frames - psf->read_current) * psf->sf.channels ;
- extra = frames * psf->sf.channels - count ;
- psf_memset (ptr + count, 0, extra * sizeof (short)) ;
- psf->read_current = psf->sf.frames ;
- } ;
-
- psf->read_current += count / psf->sf.channels ;
-
- psf->last_op = SFM_READ ;
-
- if (psf->read_current > psf->sf.frames)
- { count = psf->sf.channels * (psf->read_current - psf->sf.frames) ;
- psf->read_current = psf->sf.frames ;
- } ;
-
- return count / psf->sf.channels ;
-} /* sf_readf_short */
-
-/*------------------------------------------------------------------------------
-*/
-
-sf_count_t
-sf_read_int (SNDFILE *sndfile, int *ptr, sf_count_t len)
-{ SF_PRIVATE *psf ;
- sf_count_t count, extra ;
-
- VALIDATE_SNDFILE_AND_ASSIGN_PSF (sndfile, psf, 1) ;
-
- if (psf->mode == SFM_WRITE)
- { psf->error = SFE_NOT_READMODE ;
- return 0 ;
- } ;
-
- if (len % psf->sf.channels)
- { psf->error = SFE_BAD_READ_ALIGN ;
- return 0 ;
- } ;
-
- if (len <= 0 || psf->read_current >= psf->sf.frames)
- { psf_memset (ptr, 0, len * sizeof (int)) ;
- return 0 ;
- } ;
-
- if (! psf->read_int || psf->seek == NULL)
- { psf->error = SFE_UNIMPLEMENTED ;
- return 0 ;
- } ;
-
- if (psf->last_op != SFM_READ)
- if (psf->seek (psf, SFM_READ, psf->read_current) < 0)
- return 0 ;
-
- count = psf->read_int (psf, ptr, len) ;
-
- if (psf->read_current + count / psf->sf.channels > psf->sf.frames)
- { count = (psf->sf.frames - psf->read_current) * psf->sf.channels ;
- extra = len - count ;
- psf_memset (ptr + count, 0, extra * sizeof (int)) ;
- psf->read_current = psf->sf.frames ;
- } ;
-
- psf->read_current += count / psf->sf.channels ;
-
- psf->last_op = SFM_READ ;
-
- if (psf->read_current > psf->sf.frames)
- { count = psf->sf.channels * (psf->read_current - psf->sf.frames) ;
- psf->read_current = psf->sf.frames ;
- } ;
-
- return count ;
-} /* sf_read_int */
-
-sf_count_t
-sf_readf_int (SNDFILE *sndfile, int *ptr, sf_count_t frames)
-{ SF_PRIVATE *psf ;
- sf_count_t count, extra ;
-
- VALIDATE_SNDFILE_AND_ASSIGN_PSF (sndfile, psf, 1) ;
-
- if (psf->mode == SFM_WRITE)
- { psf->error = SFE_NOT_READMODE ;
- return 0 ;
- } ;
-
- if (frames <= 0 || psf->read_current >= psf->sf.frames)
- { psf_memset (ptr, 0, frames * psf->sf.channels * sizeof (int)) ;
- return 0 ;
- } ;
-
- if (! psf->read_int || psf->seek == NULL)
- { psf->error = SFE_UNIMPLEMENTED ;
- return 0 ;
- } ;
-
- if (psf->last_op != SFM_READ)
- if (psf->seek (psf, SFM_READ, psf->read_current) < 0)
- return 0 ;
-
- count = psf->read_int (psf, ptr, frames * psf->sf.channels) ;
-
- if (psf->read_current + count / psf->sf.channels > psf->sf.frames)
- { count = (psf->sf.frames - psf->read_current) * psf->sf.channels ;
- extra = frames * psf->sf.channels - count ;
- psf_memset (ptr + count, 0, extra * sizeof (int)) ;
- psf->read_current = psf->sf.frames ;
- } ;
-
- psf->read_current += count / psf->sf.channels ;
-
- psf->last_op = SFM_READ ;
-
- if (psf->read_current > psf->sf.frames)
- { count = psf->sf.channels * (psf->read_current - psf->sf.frames) ;
- psf->read_current = psf->sf.frames ;
- } ;
-
- return count / psf->sf.channels ;
-} /* sf_readf_int */
-
-/*------------------------------------------------------------------------------
-*/
-
-sf_count_t
-sf_read_float (SNDFILE *sndfile, float *ptr, sf_count_t len)
-{ SF_PRIVATE *psf ;
- sf_count_t count, extra ;
-
- VALIDATE_SNDFILE_AND_ASSIGN_PSF (sndfile, psf, 1) ;
-
- if (psf->mode == SFM_WRITE)
- { psf->error = SFE_NOT_READMODE ;
- return 0 ;
- } ;
-
- if (len % psf->sf.channels)
- { psf->error = SFE_BAD_READ_ALIGN ;
- return 0 ;
- } ;
-
- if (len <= 0 || psf->read_current >= psf->sf.frames)
- { psf_memset (ptr, 0, len * sizeof (float)) ;
- return 0 ;
- } ;
-
- if (! psf->read_float || psf->seek == NULL)
- { psf->error = SFE_UNIMPLEMENTED ;
- return 0 ;
- } ;
-
- if (psf->last_op != SFM_READ)
- if (psf->seek (psf, SFM_READ, psf->read_current) < 0)
- return 0 ;
-
- count = psf->read_float (psf, ptr, len) ;
-
- if (psf->read_current + count / psf->sf.channels > psf->sf.frames)
- { count = (psf->sf.frames - psf->read_current) * psf->sf.channels ;
- extra = len - count ;
- psf_memset (ptr + count, 0, extra * sizeof (float)) ;
- psf->read_current = psf->sf.frames ;
- } ;
-
- psf->read_current += count / psf->sf.channels ;
-
- psf->last_op = SFM_READ ;
-
- if (psf->read_current > psf->sf.frames)
- { count = psf->sf.channels * (psf->read_current - psf->sf.frames) ;
- psf->read_current = psf->sf.frames ;
- } ;
-
- return count ;
-} /* sf_read_float */
-
-sf_count_t
-sf_readf_float (SNDFILE *sndfile, float *ptr, sf_count_t frames)
-{ SF_PRIVATE *psf ;
- sf_count_t count, extra ;
-
- VALIDATE_SNDFILE_AND_ASSIGN_PSF (sndfile, psf, 1) ;
-
- if (psf->mode == SFM_WRITE)
- { psf->error = SFE_NOT_READMODE ;
- return 0 ;
- } ;
-
- if (frames <= 0 || psf->read_current >= psf->sf.frames)
- { psf_memset (ptr, 0, frames * psf->sf.channels * sizeof (float)) ;
- return 0 ;
- } ;
-
- if (! psf->read_float || psf->seek == NULL)
- { psf->error = SFE_UNIMPLEMENTED ;
- return 0 ;
- } ;
-
- if (psf->last_op != SFM_READ)
- if (psf->seek (psf, SFM_READ, psf->read_current) < 0)
- return 0 ;
-
- count = psf->read_float (psf, ptr, frames * psf->sf.channels) ;
-
- if (psf->read_current + count / psf->sf.channels > psf->sf.frames)
- { count = (psf->sf.frames - psf->read_current) * psf->sf.channels ;
- extra = frames * psf->sf.channels - count ;
- psf_memset (ptr + count, 0, extra * sizeof (float)) ;
- psf->read_current = psf->sf.frames ;
- } ;
-
- psf->read_current += count / psf->sf.channels ;
-
- psf->last_op = SFM_READ ;
-
- if (psf->read_current > psf->sf.frames)
- { count = psf->sf.channels * (psf->read_current - psf->sf.frames) ;
- psf->read_current = psf->sf.frames ;
- } ;
-
- return count / psf->sf.channels ;
-} /* sf_readf_float */
-
-/*------------------------------------------------------------------------------
-*/
-
-sf_count_t
-sf_read_double (SNDFILE *sndfile, double *ptr, sf_count_t len)
-{ SF_PRIVATE *psf ;
- sf_count_t count, extra ;
-
- VALIDATE_SNDFILE_AND_ASSIGN_PSF (sndfile, psf, 1) ;
-
- if (psf->mode == SFM_WRITE)
- { psf->error = SFE_NOT_READMODE ;
- return 0 ;
- } ;
-
- if (len % psf->sf.channels)
- { psf->error = SFE_BAD_READ_ALIGN ;
- return 0 ;
- } ;
-
- if (len <= 0 || psf->read_current >= psf->sf.frames)
- { psf_memset (ptr, 0, len * sizeof (double)) ;
- return 0 ;
- } ;
-
- if (! psf->read_double || psf->seek == NULL)
- { psf->error = SFE_UNIMPLEMENTED ;
- return 0 ;
- } ;
-
- if (psf->last_op != SFM_READ)
- if (psf->seek (psf, SFM_READ, psf->read_current) < 0)
- return 0 ;
-
- count = psf->read_double (psf, ptr, len) ;
-
- if (psf->read_current + count / psf->sf.channels > psf->sf.frames)
- { count = (psf->sf.frames - psf->read_current) * psf->sf.channels ;
- extra = len - count ;
- psf_memset (ptr + count, 0, extra * sizeof (double)) ;
- psf->read_current = psf->sf.frames ;
- } ;
-
- psf->read_current += count / psf->sf.channels ;
-
- psf->last_op = SFM_READ ;
-
- if (psf->read_current > psf->sf.frames)
- { count = psf->sf.channels * (psf->read_current - psf->sf.frames) ;
- psf->read_current = psf->sf.frames ;
- } ;
-
- return count ;
-} /* sf_read_double */
-
-sf_count_t
-sf_readf_double (SNDFILE *sndfile, double *ptr, sf_count_t frames)
-{ SF_PRIVATE *psf ;
- sf_count_t count, extra ;
-
- VALIDATE_SNDFILE_AND_ASSIGN_PSF (sndfile, psf, 1) ;
-
- if (psf->mode == SFM_WRITE)
- { psf->error = SFE_NOT_READMODE ;
- return 0 ;
- } ;
-
- if (frames <= 0 || psf->read_current >= psf->sf.frames)
- { psf_memset (ptr, 0, frames * psf->sf.channels * sizeof (double)) ;
- return 0 ;
- } ;
-
- if (! psf->read_double || psf->seek == NULL)
- { psf->error = SFE_UNIMPLEMENTED ;
- return 0 ;
- } ;
-
- if (psf->last_op != SFM_READ)
- if (psf->seek (psf, SFM_READ, psf->read_current) < 0)
- return 0 ;
-
- count = psf->read_double (psf, ptr, frames * psf->sf.channels) ;
-
- if (psf->read_current + count / psf->sf.channels > psf->sf.frames)
- { count = (psf->sf.frames - psf->read_current) * psf->sf.channels ;
- extra = frames * psf->sf.channels - count ;
- psf_memset (ptr + count, 0, extra * sizeof (double)) ;
- psf->read_current = psf->sf.frames ;
- } ;
-
- psf->read_current += count / psf->sf.channels ;
-
- psf->last_op = SFM_READ ;
-
- if (psf->read_current > psf->sf.frames)
- { count = psf->sf.channels * (psf->read_current - psf->sf.frames) ;
- psf->read_current = psf->sf.frames ;
- } ;
-
- return count / psf->sf.channels ;
-} /* sf_readf_double */
-
-/*------------------------------------------------------------------------------
-*/
-
-sf_count_t
-sf_write_raw (SNDFILE *sndfile, const void *ptr, sf_count_t len)
-{ SF_PRIVATE *psf ;
- sf_count_t count ;
- int bytewidth, blockwidth ;
-
- VALIDATE_SNDFILE_AND_ASSIGN_PSF (sndfile, psf, 1) ;
-
- bytewidth = (psf->bytewidth > 0) ? psf->bytewidth : 1 ;
- blockwidth = (psf->blockwidth > 0) ? psf->blockwidth : 1 ;
-
- if (psf->mode == SFM_READ)
- { psf->error = SFE_NOT_WRITEMODE ;
- return 0 ;
- } ;
-
- if (len % (psf->sf.channels * bytewidth))
- { psf->error = SFE_BAD_WRITE_ALIGN ;
- return 0 ;
- } ;
-
- if (psf->have_written == SF_FALSE && psf->write_header != NULL)
- psf->write_header (psf, SF_FALSE) ;
- psf->have_written = SF_TRUE ;
-
- count = psf_fwrite (ptr, 1, len, psf) ;
-
- psf->write_current += count / blockwidth ;
-
- if (psf->write_current > psf->sf.frames)
- psf->sf.frames = psf->write_current ;
-
- psf->last_op = SFM_WRITE ;
-
- return count ;
-} /* sf_write_raw */
-
-/*------------------------------------------------------------------------------
-*/
-
-sf_count_t
-sf_write_short (SNDFILE *sndfile, const short *ptr, sf_count_t len)
-{ SF_PRIVATE *psf ;
- sf_count_t count ;
-
- VALIDATE_SNDFILE_AND_ASSIGN_PSF (sndfile, psf, 1) ;
-
- if (psf->mode == SFM_READ)
- { psf->error = SFE_NOT_WRITEMODE ;
- return 0 ;
- } ;
-
- if (len % psf->sf.channels)
- { psf->error = SFE_BAD_WRITE_ALIGN ;
- return 0 ;
- } ;
-
- if (! psf->write_short || psf->seek == NULL)
- { psf->error = SFE_UNIMPLEMENTED ;
- return 0 ;
- } ;
-
- if (psf->last_op != SFM_WRITE)
- if (psf->seek (psf, SFM_WRITE, psf->write_current) < 0)
- return 0 ;
-
- if (psf->have_written == SF_FALSE && psf->write_header != NULL)
- psf->write_header (psf, SF_FALSE) ;
- psf->have_written = SF_TRUE ;
-
- count = psf->write_short (psf, ptr, len) ;
-
- psf->write_current += count / psf->sf.channels ;
-
- psf->last_op = SFM_WRITE ;
-
- if (psf->auto_header && psf->write_header != NULL)
- psf->write_header (psf, SF_TRUE) ;
-
- if (psf->write_current > psf->sf.frames)
- psf->sf.frames = psf->write_current ;
-
- return count ;
-} /* sf_write_short */
-
-sf_count_t
-sf_writef_short (SNDFILE *sndfile, const short *ptr, sf_count_t frames)
-{ SF_PRIVATE *psf ;
- sf_count_t count ;
-
- VALIDATE_SNDFILE_AND_ASSIGN_PSF (sndfile, psf, 1) ;
-
- if (psf->mode == SFM_READ)
- { psf->error = SFE_NOT_WRITEMODE ;
- return 0 ;
- } ;
-
- if (! psf->write_short || psf->seek == NULL)
- { psf->error = SFE_UNIMPLEMENTED ;
- return 0 ;
- } ;
-
- if (psf->last_op != SFM_WRITE)
- if (psf->seek (psf, SFM_WRITE, psf->write_current) < 0)
- return 0 ;
-
- if (psf->have_written == SF_FALSE && psf->write_header != NULL)
- psf->write_header (psf, SF_FALSE) ;
- psf->have_written = SF_TRUE ;
-
- count = psf->write_short (psf, ptr, frames * psf->sf.channels) ;
-
- psf->write_current += count / psf->sf.channels ;
-
- psf->last_op = SFM_WRITE ;
-
- if (psf->auto_header && psf->write_header != NULL)
- psf->write_header (psf, SF_TRUE) ;
-
- if (psf->write_current > psf->sf.frames)
- psf->sf.frames = psf->write_current ;
-
- return count / psf->sf.channels ;
-} /* sf_writef_short */
-
-/*------------------------------------------------------------------------------
-*/
-
-sf_count_t
-sf_write_int (SNDFILE *sndfile, const int *ptr, sf_count_t len)
-{ SF_PRIVATE *psf ;
- sf_count_t count ;
-
- VALIDATE_SNDFILE_AND_ASSIGN_PSF (sndfile, psf, 1) ;
-
- if (psf->mode == SFM_READ)
- { psf->error = SFE_NOT_WRITEMODE ;
- return 0 ;
- } ;
-
- if (len % psf->sf.channels)
- { psf->error = SFE_BAD_WRITE_ALIGN ;
- return 0 ;
- } ;
-
- if (! psf->write_int || psf->seek == NULL)
- { psf->error = SFE_UNIMPLEMENTED ;
- return 0 ;
- } ;
-
- if (psf->last_op != SFM_WRITE)
- if (psf->seek (psf, SFM_WRITE, psf->write_current) < 0)
- return 0 ;
-
- if (psf->have_written == SF_FALSE && psf->write_header != NULL)
- psf->write_header (psf, SF_FALSE) ;
- psf->have_written = SF_TRUE ;
-
- count = psf->write_int (psf, ptr, len) ;
-
- psf->write_current += count / psf->sf.channels ;
-
- psf->last_op = SFM_WRITE ;
-
- if (psf->auto_header && psf->write_header != NULL)
- psf->write_header (psf, SF_TRUE) ;
-
- if (psf->write_current > psf->sf.frames)
- psf->sf.frames = psf->write_current ;
-
- return count ;
-} /* sf_write_int */
-
-sf_count_t
-sf_writef_int (SNDFILE *sndfile, const int *ptr, sf_count_t frames)
-{ SF_PRIVATE *psf ;
- sf_count_t count ;
-
- VALIDATE_SNDFILE_AND_ASSIGN_PSF (sndfile, psf, 1) ;
-
- if (psf->mode == SFM_READ)
- { psf->error = SFE_NOT_WRITEMODE ;
- return 0 ;
- } ;
-
- if (! psf->write_int || psf->seek == NULL)
- { psf->error = SFE_UNIMPLEMENTED ;
- return 0 ;
- } ;
-
- if (psf->last_op != SFM_WRITE)
- if (psf->seek (psf, SFM_WRITE, psf->write_current) < 0)
- return 0 ;
-
- if (psf->have_written == SF_FALSE && psf->write_header != NULL)
- psf->write_header (psf, SF_FALSE) ;
- psf->have_written = SF_TRUE ;
-
- count = psf->write_int (psf, ptr, frames * psf->sf.channels) ;
-
- psf->write_current += count / psf->sf.channels ;
-
- psf->last_op = SFM_WRITE ;
-
- if (psf->auto_header && psf->write_header != NULL)
- psf->write_header (psf, SF_TRUE) ;
-
- if (psf->write_current > psf->sf.frames)
- psf->sf.frames = psf->write_current ;
-
- return count / psf->sf.channels ;
-} /* sf_writef_int */
-
-/*------------------------------------------------------------------------------
-*/
-
-sf_count_t
-sf_write_float (SNDFILE *sndfile, const float *ptr, sf_count_t len)
-{ SF_PRIVATE *psf ;
- sf_count_t count ;
-
- VALIDATE_SNDFILE_AND_ASSIGN_PSF (sndfile, psf, 1) ;
-
- if (psf->mode == SFM_READ)
- { psf->error = SFE_NOT_WRITEMODE ;
- return 0 ;
- } ;
-
- if (len % psf->sf.channels)
- { psf->error = SFE_BAD_WRITE_ALIGN ;
- return 0 ;
- } ;
-
- if (! psf->write_float || psf->seek == NULL)
- { psf->error = SFE_UNIMPLEMENTED ;
- return 0 ;
- } ;
-
- if (psf->last_op != SFM_WRITE)
- if (psf->seek (psf, SFM_WRITE, psf->write_current) < 0)
- return 0 ;
-
- if (psf->have_written == SF_FALSE && psf->write_header != NULL)
- psf->write_header (psf, SF_FALSE) ;
- psf->have_written = SF_TRUE ;
-
- count = psf->write_float (psf, ptr, len) ;
-
- psf->write_current += count / psf->sf.channels ;
-
- psf->last_op = SFM_WRITE ;
-
- if (psf->auto_header && psf->write_header != NULL)
- psf->write_header (psf, SF_TRUE) ;
-
- if (psf->write_current > psf->sf.frames)
- psf->sf.frames = psf->write_current ;
-
- return count ;
-} /* sf_write_float */
-
-sf_count_t
-sf_writef_float (SNDFILE *sndfile, const float *ptr, sf_count_t frames)
-{ SF_PRIVATE *psf ;
- sf_count_t count ;
-
- VALIDATE_SNDFILE_AND_ASSIGN_PSF (sndfile, psf, 1) ;
-
- if (psf->mode == SFM_READ)
- { psf->error = SFE_NOT_WRITEMODE ;
- return 0 ;
- } ;
-
- if (! psf->write_float || psf->seek == NULL)
- { psf->error = SFE_UNIMPLEMENTED ;
- return 0 ;
- } ;
-
- if (psf->last_op != SFM_WRITE)
- if (psf->seek (psf, SFM_WRITE, psf->write_current) < 0)
- return 0 ;
-
- if (psf->have_written == SF_FALSE && psf->write_header != NULL)
- psf->write_header (psf, SF_FALSE) ;
- psf->have_written = SF_TRUE ;
-
- count = psf->write_float (psf, ptr, frames * psf->sf.channels) ;
-
- psf->write_current += count / psf->sf.channels ;
-
- psf->last_op = SFM_WRITE ;
-
- if (psf->auto_header && psf->write_header != NULL)
- psf->write_header (psf, SF_TRUE) ;
-
- if (psf->write_current > psf->sf.frames)
- psf->sf.frames = psf->write_current ;
-
- return count / psf->sf.channels ;
-} /* sf_writef_float */
-
-/*------------------------------------------------------------------------------
-*/
-
-sf_count_t
-sf_write_double (SNDFILE *sndfile, const double *ptr, sf_count_t len)
-{ SF_PRIVATE *psf ;
- sf_count_t count ;
-
- VALIDATE_SNDFILE_AND_ASSIGN_PSF (sndfile, psf, 1) ;
-
- if (psf->mode == SFM_READ)
- { psf->error = SFE_NOT_WRITEMODE ;
- return 0 ;
- } ;
-
- if (len % psf->sf.channels)
- { psf->error = SFE_BAD_WRITE_ALIGN ;
- return 0 ;
- } ;
-
- if (! psf->write_double || psf->seek == NULL)
- { psf->error = SFE_UNIMPLEMENTED ;
- return 0 ;
- } ;
-
- if (psf->last_op != SFM_WRITE)
- if (psf->seek (psf, SFM_WRITE, psf->write_current) < 0)
- return 0 ;
-
- if (psf->have_written == SF_FALSE && psf->write_header != NULL)
- psf->write_header (psf, SF_FALSE) ;
- psf->have_written = SF_TRUE ;
-
- count = psf->write_double (psf, ptr, len) ;
-
- psf->write_current += count / psf->sf.channels ;
-
- psf->last_op = SFM_WRITE ;
-
- if (psf->auto_header && psf->write_header != NULL)
- psf->write_header (psf, SF_TRUE) ;
-
- if (psf->write_current > psf->sf.frames)
- psf->sf.frames = psf->write_current ;
-
- return count ;
-} /* sf_write_double */
-
-sf_count_t
-sf_writef_double (SNDFILE *sndfile, const double *ptr, sf_count_t frames)
-{ SF_PRIVATE *psf ;
- sf_count_t count ;
-
- VALIDATE_SNDFILE_AND_ASSIGN_PSF (sndfile, psf, 1) ;
-
- if (psf->mode == SFM_READ)
- { psf->error = SFE_NOT_WRITEMODE ;
- return 0 ;
- } ;
-
- if (! psf->write_double || psf->seek == NULL)
- { psf->error = SFE_UNIMPLEMENTED ;
- return 0 ;
- } ;
-
- if (psf->last_op != SFM_WRITE)
- if (psf->seek (psf, SFM_WRITE, psf->write_current) < 0)
- return 0 ;
-
- if (psf->have_written == SF_FALSE && psf->write_header != NULL)
- psf->write_header (psf, SF_FALSE) ;
- psf->have_written = SF_TRUE ;
-
- count = psf->write_double (psf, ptr, frames * psf->sf.channels) ;
-
- psf->write_current += count / psf->sf.channels ;
-
- psf->last_op = SFM_WRITE ;
-
- if (psf->auto_header && psf->write_header != NULL)
- psf->write_header (psf, SF_TRUE) ;
-
- if (psf->write_current > psf->sf.frames)
- psf->sf.frames = psf->write_current ;
-
- return count / psf->sf.channels ;
-} /* sf_writef_double */
-
-/*=========================================================================
-** Private functions.
-*/
-
-static int
-try_resource_fork (SF_PRIVATE * psf, int mode)
-{
- if (psf_open_rsrc (psf, mode) != 0)
- return 0 ;
-
- /* More checking here. */
- psf_log_printf (psf, "Resource fork : %s\n", psf->rsrcpath) ;
-
- return SF_FORMAT_SD2 ;
-} /* try_resource_fork */
-
-static int
-format_from_extension (SF_PRIVATE *psf)
-{ char *cptr ;
- char buffer [16] ;
-
- if (psf->filename == NULL)
- return 0 ;
-
- if ((cptr = strrchr (psf->filename, '.')) == NULL)
- return 0 ;
-
- cptr ++ ;
- if (strlen (cptr) > sizeof (buffer) - 1)
- return 0 ;
-
- strncpy (buffer, cptr, sizeof (buffer)) ;
- buffer [sizeof (buffer) - 1] = 0 ;
-
- /* Convert everything in the buffer to lower case. */
- cptr = buffer ;
- while (*cptr)
- { *cptr = tolower (*cptr) ;
- cptr ++ ;
- } ;
-
- cptr = buffer ;
-
- if (strcmp (cptr, "au") == 0)
- { psf->sf.channels = 1 ;
- psf->sf.samplerate = 8000 ;
- return SF_FORMAT_RAW | SF_FORMAT_ULAW ;
- } ;
-
- if (strcmp (cptr, "snd") == 0)
- { psf->sf.channels = 1 ;
- psf->sf.samplerate = 8000 ;
- return SF_FORMAT_RAW | SF_FORMAT_ULAW ;
- } ;
-
- if (strcmp (cptr, "vox") == 0)
- { psf->sf.channels = 1 ;
- psf->sf.samplerate = 8000 ;
- return SF_FORMAT_RAW | SF_FORMAT_VOX_ADPCM ;
- } ;
-
- if (strcmp (cptr, "gsm") == 0)
- { psf->sf.channels = 1 ;
- psf->sf.samplerate = 8000 ;
- return SF_FORMAT_RAW | SF_FORMAT_GSM610 ;
- } ;
-
- return 0 ;
-} /* format_from_extension */
-
-static int
-guess_file_type (SF_PRIVATE *psf)
-{ int buffer [3], format ;
-
- if (psf_binheader_readf (psf, "b", &buffer, SIGNED_SIZEOF (buffer)) != SIGNED_SIZEOF (buffer))
- { psf->error = SFE_BAD_FILE_READ ;
- return 0 ;
- } ;
-
- if ((buffer [0] == MAKE_MARKER ('R', 'I', 'F', 'F') || buffer [0] == MAKE_MARKER ('R', 'I', 'F', 'X'))
- && buffer [2] == MAKE_MARKER ('W', 'A', 'V', 'E'))
- return SF_FORMAT_WAV ;
-
- if (buffer [0] == MAKE_MARKER ('F', 'O', 'R', 'M'))
- { if (buffer [2] == MAKE_MARKER ('A', 'I', 'F', 'F') || buffer [2] == MAKE_MARKER ('A', 'I', 'F', 'C'))
- return SF_FORMAT_AIFF ;
- if (buffer [2] == MAKE_MARKER ('8', 'S', 'V', 'X') || buffer [2] == MAKE_MARKER ('1', '6', 'S', 'V'))
- return SF_FORMAT_SVX ;
- return 0 ;
- } ;
-
- if (buffer [0] == MAKE_MARKER ('.', 's', 'n', 'd') || buffer [0] == MAKE_MARKER ('d', 'n', 's', '.'))
- return SF_FORMAT_AU ;
-
- if ((buffer [0] == MAKE_MARKER ('f', 'a', 'p', ' ') || buffer [0] == MAKE_MARKER (' ', 'p', 'a', 'f')))
- return SF_FORMAT_PAF ;
-
- if (buffer [0] == MAKE_MARKER ('N', 'I', 'S', 'T'))
- return SF_FORMAT_NIST ;
-
- if (buffer [0] == MAKE_MARKER ('C', 'r', 'e', 'a') && buffer [1] == MAKE_MARKER ('t', 'i', 'v', 'e'))
- return SF_FORMAT_VOC ;
-
- if ((buffer [0] & MAKE_MARKER (0xFF, 0xFF, 0xF8, 0xFF)) == MAKE_MARKER (0x64, 0xA3, 0x00, 0x00) ||
- (buffer [0] & MAKE_MARKER (0xFF, 0xF8, 0xFF, 0xFF)) == MAKE_MARKER (0x00, 0x00, 0xA3, 0x64))
- return SF_FORMAT_IRCAM ;
-
- if (buffer [0] == MAKE_MARKER ('r', 'i', 'f', 'f'))
- return SF_FORMAT_W64 ;
-
- if (buffer [0] == MAKE_MARKER (0, 0, 0x03, 0xE8) && buffer [1] == MAKE_MARKER (0, 0, 0, 1) &&
- buffer [2] == MAKE_MARKER (0, 0, 0, 1))
- return SF_FORMAT_MAT4 ;
-
- if (buffer [0] == MAKE_MARKER (0, 0, 0, 0) && buffer [1] == MAKE_MARKER (1, 0, 0, 0) &&
- buffer [2] == MAKE_MARKER (1, 0, 0, 0))
- return SF_FORMAT_MAT4 ;
-
- if (buffer [0] == MAKE_MARKER ('M', 'A', 'T', 'L') && buffer [1] == MAKE_MARKER ('A', 'B', ' ', '5'))
- return SF_FORMAT_MAT5 ;
-
- if (buffer [0] == MAKE_MARKER ('P', 'V', 'F', '1'))
- return SF_FORMAT_PVF ;
-
- if (buffer [0] == MAKE_MARKER ('E', 'x', 't', 'e') && buffer [1] == MAKE_MARKER ('n', 'd', 'e', 'd') &&
- buffer [2] == MAKE_MARKER (' ', 'I', 'n', 's'))
- return SF_FORMAT_XI ;
-
- if (buffer [0] == MAKE_MARKER ('c', 'a', 'f', 'f') && buffer [2] == MAKE_MARKER ('d', 'e', 's', 'c'))
- return SF_FORMAT_CAF ;
-
- if (ENABLE_EXPERIMENTAL_CODE && buffer [0] == MAKE_MARKER ('O', 'g', 'g', 'S'))
- return SF_FORMAT_OGG ;
-
- if (buffer [0] == MAKE_MARKER ('A', 'L', 'a', 'w') && buffer [1] == MAKE_MARKER ('S', 'o', 'u', 'n')
- && buffer [2] == MAKE_MARKER ('d', 'F', 'i', 'l'))
- return SF_FORMAT_WVE ;
-
- if (buffer [0] == MAKE_MARKER ('D', 'i', 'a', 'm') && buffer [1] == MAKE_MARKER ('o', 'n', 'd', 'W')
- && buffer [2] == MAKE_MARKER ('a', 'r', 'e', ' '))
- return SF_FORMAT_DWD ;
-
- if (buffer [0] == MAKE_MARKER ('L', 'M', '8', '9') || buffer [0] == MAKE_MARKER ('5', '3', 0, 0))
- return SF_FORMAT_TXW ;
-
- if ((buffer [0] & MAKE_MARKER (0xFF, 0xFF, 0x80, 0xFF)) == MAKE_MARKER (0xF0, 0x7E, 0, 0x01))
- return SF_FORMAT_SDS ;
-
- if (buffer [0] == MAKE_MARKER ('C', 'A', 'T', ' ') && buffer [2] == MAKE_MARKER ('R', 'E', 'X', '2'))
- return SF_FORMAT_REX2 ;
-
- if (buffer [0] == MAKE_MARKER (0x30, 0x26, 0xB2, 0x75) && buffer [1] == MAKE_MARKER (0x8E, 0x66, 0xCF, 0x11))
- return 0 /*-SF_FORMAT_WMA-*/ ;
-
- /* HMM (Hidden Markov Model) Tool Kit. */
- if (2 * BEI2H_INT (buffer [0]) + 12 == psf->filelength && buffer [2] == MAKE_MARKER (0, 2, 0, 0))
- return SF_FORMAT_HTK ;
-
- if (buffer [0] == MAKE_MARKER ('f', 'L', 'a', 'C'))
- return SF_FORMAT_FLAC ;
-
- /* Turtle Beach SMP 16-bit */
- if (buffer [0] == MAKE_MARKER ('S', 'O', 'U', 'N') && buffer [1] == MAKE_MARKER ('D', ' ', 'S', 'A'))
- return 0 ;
-
- if (buffer [0] == MAKE_MARKER ('S', 'Y', '8', '0') || buffer [0] == MAKE_MARKER ('S', 'Y', '8', '5'))
- return 0 ;
-
- if (buffer [0] == MAKE_MARKER ('a', 'j', 'k', 'g'))
- return 0 /*-SF_FORMAT_SHN-*/ ;
-
- if (buffer [0] == MAKE_MARKER ('2', 'B', 'I', 'T'))
- return SF_FORMAT_AVR ;
-
- /* This must be the second last one. */
- if (psf->filelength > 0 && (format = try_resource_fork (psf, SFM_READ)) != 0)
- return format ;
-
- return 0 ;
-} /* guess_file_type */
-
-
-static int
-validate_sfinfo (SF_INFO *sfinfo)
-{ if (sfinfo->samplerate < 1)
- return 0 ;
- if (sfinfo->frames < 0)
- return 0 ;
- if (sfinfo->channels < 1)
- return 0 ;
- if ((sfinfo->format & SF_FORMAT_TYPEMASK) == 0)
- return 0 ;
- if ((sfinfo->format & SF_FORMAT_SUBMASK) == 0)
- return 0 ;
- if (sfinfo->sections < 1)
- return 0 ;
- return 1 ;
-} /* validate_sfinfo */
-
-static int
-validate_psf (SF_PRIVATE *psf)
-{
- if (psf->datalength < 0)
- { psf_log_printf (psf, "Invalid SF_PRIVATE field : datalength == %D.\n", psf->datalength) ;
- return 0 ;
- } ;
- if (psf->dataoffset < 0)
- { psf_log_printf (psf, "Invalid SF_PRIVATE field : dataoffset == %D.\n", psf->dataoffset) ;
- return 0 ;
- } ;
- if (psf->blockwidth && psf->blockwidth != psf->sf.channels * psf->bytewidth)
- { psf_log_printf (psf, "Invalid SF_PRIVATE field : channels * bytewidth == %d.\n",
- psf->sf.channels * psf->bytewidth) ;
- return 0 ;
- } ;
- return 1 ;
-} /* validate_psf */
-
-static void
-save_header_info (SF_PRIVATE *psf)
-{ LSF_SNPRINTF (sf_logbuffer, sizeof (sf_logbuffer), "%s", psf->logbuffer) ;
-} /* save_header_info */
-
-static void
-copy_filename (SF_PRIVATE *psf, const char *path)
-{ const char *ccptr ;
- char *cptr ;
-
- LSF_SNPRINTF (psf->filepath, sizeof (psf->filepath), "%s", path) ;
- if ((ccptr = strrchr (path, '/')) || (ccptr = strrchr (path, '\\')))
- ccptr ++ ;
- else
- ccptr = path ;
-
- LSF_SNPRINTF (psf->filename, sizeof (psf->filename), "%s", ccptr) ;
-
- /* Now grab the directory. */
- LSF_SNPRINTF (psf->directory, sizeof (psf->directory), "%s", path) ;
- if ((cptr = strrchr (psf->directory, '/')) || (cptr = strrchr (psf->directory, '\\')))
- cptr [1] = 0 ;
- else
- psf->directory [0] = 0 ;
-
- return ;
-} /* copy_filename */
-
-/*==============================================================================
-*/
-
-static int
-psf_close (SF_PRIVATE *psf)
-{ int error ;
-
- if (psf->codec_close)
- error = psf->codec_close (psf) ;
- if (psf->container_close)
- error = psf->container_close (psf) ;
-
- psf_fclose (psf) ;
- psf_close_rsrc (psf) ;
-
- if (psf->fdata)
- free (psf->fdata) ;
-
- if (psf->interleave)
- free (psf->interleave) ;
-
- if (psf->dither)
- free (psf->dither) ;
-
- if (psf->peak_info)
- free (psf->peak_info) ;
-
- if (psf->broadcast_info)
- free (psf->broadcast_info) ;
-
- if (psf->loop_info)
- free (psf->loop_info) ;
-
- if (psf->instrument)
- free (psf->instrument) ;
-
- if (psf->format_desc)
- { memset (psf->format_desc, 0, strlen (psf->format_desc)) ;
- free (psf->format_desc) ;
- } ;
-
- memset (psf, 0, sizeof (SF_PRIVATE)) ;
- free (psf) ;
-
- return 0 ;
-} /* psf_close */
-
-static int
-psf_open_file (SF_PRIVATE *psf, int mode, SF_INFO *sfinfo)
-{ int error, format ;
-
- if (mode != SFM_READ && mode != SFM_WRITE && mode != SFM_RDWR)
- return SFE_BAD_OPEN_MODE ;
-
- if (sfinfo == NULL)
- return SFE_BAD_SF_INFO_PTR ;
-
- /* Zero out these fields. */
- sfinfo->frames = 0 ;
- sfinfo->sections = 0 ;
- sfinfo->seekable = 0 ;
-
- if (mode == SFM_READ)
- { if ((sfinfo->format & SF_FORMAT_TYPEMASK) == SF_FORMAT_RAW)
- { if (sf_format_check (sfinfo) == 0)
- return SFE_RAW_BAD_FORMAT ;
- }
- else
- memset (sfinfo, 0, sizeof (SF_INFO)) ;
- } ;
-
- sf_errno = error = 0 ;
- sf_logbuffer [0] = 0 ;
-
- memcpy (&(psf->sf), sfinfo, sizeof (SF_INFO)) ;
-
- psf->Magick = SNDFILE_MAGICK ;
- psf->norm_float = SF_TRUE ;
- psf->norm_double = SF_TRUE ;
- psf->mode = mode ;
- psf->dataoffset = -1 ;
- psf->datalength = -1 ;
- psf->read_current = -1 ;
- psf->write_current = -1 ;
- psf->auto_header = SF_FALSE ;
- psf->rwf_endian = SF_ENDIAN_LITTLE ;
- psf->seek = psf_default_seek ;
- psf->float_int_mult = 0 ;
- psf->float_max = -1.0 ;
-
- psf->sf.sections = 1 ;
-
- psf->is_pipe = psf_is_pipe (psf) ;
-
- if (psf->is_pipe)
- { psf->sf.seekable = SF_FALSE ;
- psf->filelength = SF_COUNT_MAX ;
- }
- else
- { psf->sf.seekable = SF_TRUE ;
-
- /* File is open, so get the length. */
- psf->filelength = psf_get_filelen (psf) ;
- } ;
-
- if (psf->fileoffset > 0)
- { switch (psf->mode)
- { case SFM_READ :
- if (psf->filelength < 44)
- { psf_log_printf (psf, "Short filelength: %D (fileoffset: %D)\n", psf->filelength, psf->fileoffset) ;
- return SFE_BAD_OFFSET ;
- } ;
- break ;
-
- case SFM_WRITE :
- psf->fileoffset = 0 ;
- psf_fseek (psf, 0, SEEK_END) ;
- psf->fileoffset = psf_ftell (psf) ;
- break ;
-
- case SFM_RDWR :
- return SFE_NO_EMBEDDED_RDWR ;
- } ;
-
- psf_log_printf (psf, "Embedded file offset : %D\n", psf->fileoffset) ;
- } ;
-
- if (psf->filelength == SF_COUNT_MAX)
- psf_log_printf (psf, "Length : unknown\n") ;
- else
- psf_log_printf (psf, "Length : %D\n", psf->filelength) ;
-
- if (mode == SFM_WRITE || (mode == SFM_RDWR && psf->filelength == 0))
- { /* If the file is being opened for write or RDWR and the file is currently
- ** empty, then the SF_INFO struct must contain valid data.
- */
- if (sf_format_check (&(psf->sf)) == 0)
- return SFE_BAD_OPEN_FORMAT ;
- }
- else if ((psf->sf.format & SF_FORMAT_TYPEMASK) != SF_FORMAT_RAW)
- { /* If type RAW has not been specified then need to figure out file type. */
- psf->sf.format = guess_file_type (psf) ;
-
- if (psf->sf.format == 0)
- psf->sf.format = format_from_extension (psf) ;
- } ;
-
- /* Prevent unnecessary seeks */
- psf->last_op = psf->mode ;
-
- /* Set bytewidth if known. */
- switch (psf->sf.format & SF_FORMAT_SUBMASK)
- { case SF_FORMAT_PCM_S8 :
- case SF_FORMAT_PCM_U8 :
- case SF_FORMAT_ULAW :
- case SF_FORMAT_ALAW :
- case SF_FORMAT_DPCM_8 :
- psf->bytewidth = 1 ;
- break ;
-
- case SF_FORMAT_PCM_16 :
- case SF_FORMAT_DPCM_16 :
- psf->bytewidth = 2 ;
- break ;
-
- case SF_FORMAT_PCM_24 :
- psf->bytewidth = 3 ;
- break ;
-
- case SF_FORMAT_PCM_32 :
- case SF_FORMAT_FLOAT :
- psf->bytewidth = 4 ;
- break ;
-
- case SF_FORMAT_DOUBLE :
- psf->bytewidth = 8 ;
- break ;
- } ;
-
- /* Call the initialisation function for the relevant file type. */
- switch (psf->sf.format & SF_FORMAT_TYPEMASK)
- { case SF_FORMAT_WAV :
- case SF_FORMAT_WAVEX :
- error = wav_open (psf) ;
- break ;
-
- case SF_FORMAT_AIFF :
- error = aiff_open (psf) ;
- break ;
-
- case SF_FORMAT_AU :
- error = au_open (psf) ;
- break ;
-
- case SF_FORMAT_RAW :
- error = raw_open (psf) ;
- break ;
-
- case SF_FORMAT_W64 :
- error = w64_open (psf) ;
- break ;
-
- /* Lite remove start */
- case SF_FORMAT_PAF :
- error = paf_open (psf) ;
- break ;
-
- case SF_FORMAT_SVX :
- error = svx_open (psf) ;
- break ;
-
- case SF_FORMAT_NIST :
- error = nist_open (psf) ;
- break ;
-
- case SF_FORMAT_IRCAM :
- error = ircam_open (psf) ;
- break ;
-
- case SF_FORMAT_VOC :
- error = voc_open (psf) ;
- break ;
-
- case SF_FORMAT_SDS :
- error = sds_open (psf) ;
- break ;
-
- case SF_FORMAT_OGG :
- error = ogg_open (psf) ;
- break ;
-
- case SF_FORMAT_TXW :
- error = txw_open (psf) ;
- break ;
-
- case SF_FORMAT_WVE :
- error = wve_open (psf) ;
- break ;
-
- case SF_FORMAT_DWD :
- error = dwd_open (psf) ;
- break ;
-
- case SF_FORMAT_MAT4 :
- error = mat4_open (psf) ;
- break ;
-
- case SF_FORMAT_MAT5 :
- error = mat5_open (psf) ;
- break ;
-
- case SF_FORMAT_PVF :
- error = pvf_open (psf) ;
- break ;
-
- case SF_FORMAT_XI :
- error = xi_open (psf) ;
- break ;
-
- case SF_FORMAT_HTK :
- error = htk_open (psf) ;
- break ;
-
- case SF_FORMAT_SD2 :
- error = sd2_open (psf) ;
- break ;
-
- case SF_FORMAT_REX2 :
- error = rx2_open (psf) ;
- break ;
-
- case SF_FORMAT_AVR :
- error = avr_open (psf) ;
- break ;
-
- case SF_FORMAT_FLAC :
- error = flac_open (psf) ;
- break ;
-
- case SF_FORMAT_CAF :
- error = caf_open (psf) ;
- break ;
-
- /* Lite remove end */
-
- default :
- error = SFE_UNKNOWN_FORMAT ;
- } ;
-
- if (error)
- { if (error != SF_ERR_SYSTEM && error != SF_ERR_UNSUPPORTED_ENCODING)
- { psf_log_printf (psf, "Parse error : %s\n", sf_error_number (error)) ;
- error = SF_ERR_MALFORMED_FILE ;
- } ;
-
- return error ;
- } ;
-
- /* For now, check whether embedding is supported. */
- format = psf->sf.format & SF_FORMAT_TYPEMASK ;
- if (psf->fileoffset > 0 &&
- (format != SF_FORMAT_WAV) && (format != SF_FORMAT_WAVEX) &&
- (format != SF_FORMAT_AIFF) && (format != SF_FORMAT_AU)
- )
- return SFE_NO_EMBED_SUPPORT ;
-
- if (psf->fileoffset > 0)
- psf_log_printf (psf, "Embedded file length : %D\n", psf->filelength) ;
-
- if (mode == SFM_RDWR && sf_format_check (&(psf->sf)) == 0)
- return SFE_BAD_RDWR_FORMAT ;
-
- if (validate_sfinfo (&(psf->sf)) == 0)
- { psf_log_SF_INFO (psf) ;
- save_header_info (psf) ;
- return SFE_BAD_SF_INFO ;
- } ;
-
- if (validate_psf (psf) == 0)
- { save_header_info (psf) ;
- return SFE_INTERNAL ;
- } ;
-
- psf->read_current = 0 ;
- psf->write_current = (psf->mode == SFM_RDWR) ? psf->sf.frames : 0 ;
-
- memcpy (sfinfo, &(psf->sf), sizeof (SF_INFO)) ;
-
- return 0 ;
-} /* psf_open_file */
-
-/*
-** Do not edit or modify anything in this comment block.
-** The arch-tag line is a file identity tag for the GNU Arch
-** revision control system.
-**
-** arch-tag: cd4f9e91-a8ec-4154-9bf6-fe4b8c69a615
-*/
diff --git a/libs/libsndfile/src/sndfile.h.in b/libs/libsndfile/src/sndfile.h.in
deleted file mode 100644
index 93f1d61e2b..0000000000
--- a/libs/libsndfile/src/sndfile.h.in
+++ /dev/null
@@ -1,554 +0,0 @@
-/*
-** Copyright (C) 1999-2006 Erik de Castro Lopo <erikd@mega-nerd.com>
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU Lesser General Public License as published by
-** the Free Software Foundation; either version 2.1 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU Lesser General Public License for more details.
-**
-** You should have received a copy of the GNU Lesser General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-*/
-
-/*
-** sndfile.h -- system-wide definitions
-**
-** API documentation is in the doc/ directory of the source code tarball
-** and at http://www.mega-nerd.com/libsndfile/api.html.
-*/
-
-#ifndef SNDFILE_H
-#define SNDFILE_H
-
-/* This is the version 1.0.X header file. */
-#define SNDFILE_1
-
-#include <stdio.h>
-
-/* For the Metrowerks CodeWarrior Pro Compiler (mainly MacOS) */
-
-#if (defined (__MWERKS__))
-#include <unix.h>
-#else
-#include <sys/types.h>
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-/* The following file types can be read and written.
-** A file type would consist of a major type (ie SF_FORMAT_WAV) bitwise
-** ORed with a minor type (ie SF_FORMAT_PCM). SF_FORMAT_TYPEMASK and
-** SF_FORMAT_SUBMASK can be used to separate the major and minor file
-** types.
-*/
-
-enum
-{ /* Major formats. */
- SF_FORMAT_WAV = 0x010000, /* Microsoft WAV format (little endian default). */
- SF_FORMAT_AIFF = 0x020000, /* Apple/SGI AIFF format (big endian). */
- SF_FORMAT_AU = 0x030000, /* Sun/NeXT AU format (big endian). */
- SF_FORMAT_RAW = 0x040000, /* RAW PCM data. */
- SF_FORMAT_PAF = 0x050000, /* Ensoniq PARIS file format. */
- SF_FORMAT_SVX = 0x060000, /* Amiga IFF / SVX8 / SV16 format. */
- SF_FORMAT_NIST = 0x070000, /* Sphere NIST format. */
- SF_FORMAT_VOC = 0x080000, /* VOC files. */
- SF_FORMAT_IRCAM = 0x0A0000, /* Berkeley/IRCAM/CARL */
- SF_FORMAT_W64 = 0x0B0000, /* Sonic Foundry's 64 bit RIFF/WAV */
- SF_FORMAT_MAT4 = 0x0C0000, /* Matlab (tm) V4.2 / GNU Octave 2.0 */
- SF_FORMAT_MAT5 = 0x0D0000, /* Matlab (tm) V5.0 / GNU Octave 2.1 */
- SF_FORMAT_PVF = 0x0E0000, /* Portable Voice Format */
- SF_FORMAT_XI = 0x0F0000, /* Fasttracker 2 Extended Instrument */
- SF_FORMAT_HTK = 0x100000, /* HMM Tool Kit format */
- SF_FORMAT_SDS = 0x110000, /* Midi Sample Dump Standard */
- SF_FORMAT_AVR = 0x120000, /* Audio Visual Research */
- SF_FORMAT_WAVEX = 0x130000, /* MS WAVE with WAVEFORMATEX */
- SF_FORMAT_SD2 = 0x160000, /* Sound Designer 2 */
- SF_FORMAT_FLAC = 0x170000, /* FLAC lossless file format */
- SF_FORMAT_CAF = 0x180000, /* Core Audio File format */
-
- /* Subtypes from here on. */
-
- SF_FORMAT_PCM_S8 = 0x0001, /* Signed 8 bit data */
- SF_FORMAT_PCM_16 = 0x0002, /* Signed 16 bit data */
- SF_FORMAT_PCM_24 = 0x0003, /* Signed 24 bit data */
- SF_FORMAT_PCM_32 = 0x0004, /* Signed 32 bit data */
-
- SF_FORMAT_PCM_U8 = 0x0005, /* Unsigned 8 bit data (WAV and RAW only) */
-
- SF_FORMAT_FLOAT = 0x0006, /* 32 bit float data */
- SF_FORMAT_DOUBLE = 0x0007, /* 64 bit float data */
-
- SF_FORMAT_ULAW = 0x0010, /* U-Law encoded. */
- SF_FORMAT_ALAW = 0x0011, /* A-Law encoded. */
- SF_FORMAT_IMA_ADPCM = 0x0012, /* IMA ADPCM. */
- SF_FORMAT_MS_ADPCM = 0x0013, /* Microsoft ADPCM. */
-
- SF_FORMAT_GSM610 = 0x0020, /* GSM 6.10 encoding. */
- SF_FORMAT_VOX_ADPCM = 0x0021, /* OKI / Dialogix ADPCM */
-
- SF_FORMAT_G721_32 = 0x0030, /* 32kbs G721 ADPCM encoding. */
- SF_FORMAT_G723_24 = 0x0031, /* 24kbs G723 ADPCM encoding. */
- SF_FORMAT_G723_40 = 0x0032, /* 40kbs G723 ADPCM encoding. */
-
- SF_FORMAT_DWVW_12 = 0x0040, /* 12 bit Delta Width Variable Word encoding. */
- SF_FORMAT_DWVW_16 = 0x0041, /* 16 bit Delta Width Variable Word encoding. */
- SF_FORMAT_DWVW_24 = 0x0042, /* 24 bit Delta Width Variable Word encoding. */
- SF_FORMAT_DWVW_N = 0x0043, /* N bit Delta Width Variable Word encoding. */
-
- SF_FORMAT_DPCM_8 = 0x0050, /* 8 bit differential PCM (XI only) */
- SF_FORMAT_DPCM_16 = 0x0051, /* 16 bit differential PCM (XI only) */
-
- /* Endian-ness options. */
-
- SF_ENDIAN_FILE = 0x00000000, /* Default file endian-ness. */
- SF_ENDIAN_LITTLE = 0x10000000, /* Force little endian-ness. */
- SF_ENDIAN_BIG = 0x20000000, /* Force big endian-ness. */
- SF_ENDIAN_CPU = 0x30000000, /* Force CPU endian-ness. */
-
- SF_FORMAT_SUBMASK = 0x0000FFFF,
- SF_FORMAT_TYPEMASK = 0x0FFF0000,
- SF_FORMAT_ENDMASK = 0x30000000
-} ;
-
-/*
-** The following are the valid command numbers for the sf_command()
-** interface. The use of these commands is documented in the file
-** command.html in the doc directory of the source code distribution.
-*/
-
-enum
-{ SFC_GET_LIB_VERSION = 0x1000,
- SFC_GET_LOG_INFO = 0x1001,
-
- SFC_GET_NORM_DOUBLE = 0x1010,
- SFC_GET_NORM_FLOAT = 0x1011,
- SFC_SET_NORM_DOUBLE = 0x1012,
- SFC_SET_NORM_FLOAT = 0x1013,
- SFC_SET_SCALE_FLOAT_INT_READ = 0x1014,
-
- SFC_GET_SIMPLE_FORMAT_COUNT = 0x1020,
- SFC_GET_SIMPLE_FORMAT = 0x1021,
-
- SFC_GET_FORMAT_INFO = 0x1028,
-
- SFC_GET_FORMAT_MAJOR_COUNT = 0x1030,
- SFC_GET_FORMAT_MAJOR = 0x1031,
- SFC_GET_FORMAT_SUBTYPE_COUNT = 0x1032,
- SFC_GET_FORMAT_SUBTYPE = 0x1033,
-
- SFC_CALC_SIGNAL_MAX = 0x1040,
- SFC_CALC_NORM_SIGNAL_MAX = 0x1041,
- SFC_CALC_MAX_ALL_CHANNELS = 0x1042,
- SFC_CALC_NORM_MAX_ALL_CHANNELS = 0x1043,
- SFC_GET_SIGNAL_MAX = 0x1044,
- SFC_GET_MAX_ALL_CHANNELS = 0x1045,
-
- SFC_SET_ADD_PEAK_CHUNK = 0x1050,
-
- SFC_UPDATE_HEADER_NOW = 0x1060,
- SFC_SET_UPDATE_HEADER_AUTO = 0x1061,
-
- SFC_FILE_TRUNCATE = 0x1080,
-
- SFC_SET_RAW_START_OFFSET = 0x1090,
-
- SFC_SET_DITHER_ON_WRITE = 0x10A0,
- SFC_SET_DITHER_ON_READ = 0x10A1,
-
- SFC_GET_DITHER_INFO_COUNT = 0x10A2,
- SFC_GET_DITHER_INFO = 0x10A3,
-
- SFC_GET_EMBED_FILE_INFO = 0x10B0,
-
- SFC_SET_CLIPPING = 0x10C0,
- SFC_GET_CLIPPING = 0x10C1,
-
- SFC_GET_INSTRUMENT = 0x10D0,
- SFC_SET_INSTRUMENT = 0x10D1,
-
- SFC_GET_LOOP_INFO = 0x10E0,
-
- SFC_GET_BROADCAST_INFO = 0x10F0,
- SFC_SET_BROADCAST_INFO = 0x10F1,
-
- /* Following commands for testing only. */
- SFC_TEST_IEEE_FLOAT_REPLACE = 0x6001,
-
- /*
- ** SFC_SET_ADD_* values are deprecated and will disappear at some
- ** time in the future. They are guaranteed to be here up to and
- ** including version 1.0.8 to avoid breakage of existng software.
- ** They currently do nothing and will continue to do nothing.
- */
- SFC_SET_ADD_DITHER_ON_WRITE = 0x1070,
- SFC_SET_ADD_DITHER_ON_READ = 0x1071
-} ;
-
-
-/*
-** String types that can be set and read from files. Not all file types
-** support this and even the file types which support one, may not support
-** all string types.
-*/
-
-enum
-{ SF_STR_TITLE = 0x01,
- SF_STR_COPYRIGHT = 0x02,
- SF_STR_SOFTWARE = 0x03,
- SF_STR_ARTIST = 0x04,
- SF_STR_COMMENT = 0x05,
- SF_STR_DATE = 0x06
-} ;
-
-/*
-** Use the following as the start and end index when doing metadata
-** transcoding.
-*/
-
-#define SF_STR_FIRST SF_STR_TITLE
-#define SF_STR_LAST SF_STR_DATE
-
-enum
-{ /* True and false */
- SF_FALSE = 0,
- SF_TRUE = 1,
-
- /* Modes for opening files. */
- SFM_READ = 0x10,
- SFM_WRITE = 0x20,
- SFM_RDWR = 0x30
-} ;
-
-/* Public error values. These are guaranteed to remain unchanged for the duration
-** of the library major version number.
-** There are also a large number of private error numbers which are internal to
-** the library which can change at any time.
-*/
-
-enum
-{ SF_ERR_NO_ERROR = 0,
- SF_ERR_UNRECOGNISED_FORMAT = 1,
- SF_ERR_SYSTEM = 2,
- SF_ERR_MALFORMED_FILE = 3,
- SF_ERR_UNSUPPORTED_ENCODING = 4
-} ;
-
-/* A SNDFILE* pointer can be passed around much like stdio.h's FILE* pointer. */
-
-typedef struct SNDFILE_tag SNDFILE ;
-
-/* The following typedef is system specific and is defined when libsndfile is.
-** compiled. sf_count_t can be one of loff_t (Linux), off_t (*BSD),
-** off64_t (Solaris), __int64_t (Win32) etc.
-*/
-
-typedef @TYPEOF_SF_COUNT_T@ sf_count_t ;
-
-#define SF_COUNT_MAX @SF_COUNT_MAX@
-
-/* A pointer to a SF_INFO structure is passed to sf_open_read () and filled in.
-** On write, the SF_INFO structure is filled in by the user and passed into
-** sf_open_write ().
-*/
-
-struct SF_INFO
-{ sf_count_t frames ; /* Used to be called samples. Changed to avoid confusion. */
- int samplerate ;
- int channels ;
- int format ;
- int sections ;
- int seekable ;
-} ;
-
-typedef struct SF_INFO SF_INFO ;
-
-/* The SF_FORMAT_INFO struct is used to retrieve information about the sound
-** file formats libsndfile supports using the sf_command () interface.
-**
-** Using this interface will allow applications to support new file formats
-** and encoding types when libsndfile is upgraded, without requiring
-** re-compilation of the application.
-**
-** Please consult the libsndfile documentation (particularly the information
-** on the sf_command () interface) for examples of its use.
-*/
-
-typedef struct
-{ int format ;
- const char *name ;
- const char *extension ;
-} SF_FORMAT_INFO ;
-
-/*
-** Enums and typedefs for adding dither on read and write.
-** See the html documentation for sf_command(), SFC_SET_DITHER_ON_WRITE
-** and SFC_SET_DITHER_ON_READ.
-*/
-
-enum
-{ SFD_DEFAULT_LEVEL = 0,
- SFD_CUSTOM_LEVEL = 0x40000000,
-
- SFD_NO_DITHER = 500,
- SFD_WHITE = 501,
- SFD_TRIANGULAR_PDF = 502
-} ;
-
-typedef struct
-{ int type ;
- double level ;
- const char *name ;
-} SF_DITHER_INFO ;
-
-/* Struct used to retrieve information about a file embedded within a
-** larger file. See SFC_GET_EMBED_FILE_INFO.
-*/
-
-typedef struct
-{ sf_count_t offset ;
- sf_count_t length ;
-} SF_EMBED_FILE_INFO ;
-
-/*
-** Structs used to retrieve music sample information from a file.
-*/
-
-enum
-{ /*
- ** The loop mode field in SF_INSTRUMENT will be one of the following.
- */
- SF_LOOP_NONE = 800,
- SF_LOOP_FORWARD,
- SF_LOOP_BACKWARD,
- SF_LOOP_ALTERNATING
-} ;
-
-typedef struct
-{ int gain ;
- char basenote, detune ;
- char velocity_lo, velocity_hi ;
- char key_lo, key_hi ;
- int loop_count ;
-
- struct
- { int mode ;
- unsigned int start ;
- unsigned int end ;
- unsigned int count ;
- } loops [16] ; /* make variable in a sensible way */
-} SF_INSTRUMENT ;
-
-
-
-/* Struct used to retrieve loop information from a file.*/
-typedef struct
-{
- short time_sig_num ; /* any positive integer > 0 */
- short time_sig_den ; /* any positive power of 2 > 0 */
- int loop_mode ; /* see SF_LOOP enum */
-
- int num_beats ; /* this is NOT the amount of quarter notes !!!*/
- /* a full bar of 4/4 is 4 beats */
- /* a full bar of 7/8 is 7 beats */
-
- float bpm ; /* suggestion, as it can be calculated using other fields:*/
- /* file's lenght, file's sampleRate and our time_sig_den*/
- /* -> bpms are always the amount of _quarter notes_ per minute */
-
- int root_key ; /* MIDI note, or -1 for None */
- int future [6] ;
-} SF_LOOP_INFO ;
-
-
-/* Struct used to retrieve broadcast (EBU) information from a file.
-** Strongly (!) based on EBU "bext" chunk format used in Broadcast WAVE.
-*/
-typedef struct
-{ char description [256] ;
- char originator [32] ;
- char originator_reference [32] ;
- char origination_date [10] ;
- char origination_time [8] ;
- int time_reference_low ;
- int time_reference_high ;
- short version ;
- char umid [64] ;
- char reserved [190] ;
- unsigned int coding_history_size ;
- char coding_history [256] ;
-} SF_BROADCAST_INFO ;
-
-typedef sf_count_t (*sf_vio_get_filelen) (void *user_data) ;
-typedef sf_count_t (*sf_vio_seek) (sf_count_t offset, int whence, void *user_data) ;
-typedef sf_count_t (*sf_vio_read) (void *ptr, sf_count_t count, void *user_data) ;
-typedef sf_count_t (*sf_vio_write) (const void *ptr, sf_count_t count, void *user_data) ;
-typedef sf_count_t (*sf_vio_tell) (void *user_data) ;
-
-struct SF_VIRTUAL_IO
-{ sf_vio_get_filelen get_filelen ;
- sf_vio_seek seek ;
- sf_vio_read read ;
- sf_vio_write write ;
- sf_vio_tell tell ;
-} ;
-
-typedef struct SF_VIRTUAL_IO SF_VIRTUAL_IO ;
-
-/* Open the specified file for read, write or both. On error, this will
-** return a NULL pointer. To find the error number, pass a NULL SNDFILE
-** to sf_perror () or sf_error_str ().
-** All calls to sf_open() should be matched with a call to sf_close().
-*/
-
-SNDFILE* sf_open (const char *path, int mode, SF_INFO *sfinfo) ;
-
-/* Use the existing file descriptor to create a SNDFILE object. If close_desc
-** is TRUE, the file descriptor will be closed when sf_close() is called. If
-** it is FALSE, the descritor will not be closed.
-** When passed a descriptor like this, the library will assume that the start
-** of file header is at the current file offset. This allows sound files within
-** larger container files to be read and/or written.
-** On error, this will return a NULL pointer. To find the error number, pass a
-** NULL SNDFILE to sf_perror () or sf_error_str ().
-** All calls to sf_open_fd() should be matched with a call to sf_close().
-
-*/
-
-SNDFILE* sf_open_fd (int fd, int mode, SF_INFO *sfinfo, int close_desc) ;
-
-SNDFILE* sf_open_virtual (SF_VIRTUAL_IO *sfvirtual, int mode, SF_INFO *sfinfo, void *user_data) ;
-
-/* sf_error () returns a error number which can be translated to a text
-** string using sf_error_number().
-*/
-
-int sf_error (SNDFILE *sndfile) ;
-
-/* sf_strerror () returns to the caller a pointer to the current error message for
-** the given SNDFILE.
-*/
-
-const char* sf_strerror (SNDFILE *sndfile) ;
-
-/* sf_error_number () allows the retrieval of the error string for each internal
-** error number.
-**
-*/
-
-const char* sf_error_number (int errnum) ;
-
-/* The following three error functions are deprecated but they will remain in the
-** library for the forseeable future. The function sf_strerror() should be used
-** in their place.
-*/
-
-int sf_perror (SNDFILE *sndfile) ;
-int sf_error_str (SNDFILE *sndfile, char* str, size_t len) ;
-
-
-/* Return TRUE if fields of the SF_INFO struct are a valid combination of values. */
-
-int sf_command (SNDFILE *sndfile, int command, void *data, int datasize) ;
-
-/* Return TRUE if fields of the SF_INFO struct are a valid combination of values. */
-
-int sf_format_check (const SF_INFO *info) ;
-
-/* Seek within the waveform data chunk of the SNDFILE. sf_seek () uses
-** the same values for whence (SEEK_SET, SEEK_CUR and SEEK_END) as
-** stdio.h function fseek ().
-** An offset of zero with whence set to SEEK_SET will position the
-** read / write pointer to the first data sample.
-** On success sf_seek returns the current position in (multi-channel)
-** samples from the start of the file.
-** Please see the libsndfile documentation for moving the read pointer
-** separately from the write pointer on files open in mode SFM_RDWR.
-** On error all of these functions return -1.
-*/
-
-sf_count_t sf_seek (SNDFILE *sndfile, sf_count_t frames, int whence) ;
-
-/* Functions for retrieving and setting string data within sound files.
-** Not all file types support this features; AIFF and WAV do. For both
-** functions, the str_type parameter must be one of the SF_STR_* values
-** defined above.
-** On error, sf_set_string() returns non-zero while sf_get_string()
-** returns NULL.
-*/
-
-int sf_set_string (SNDFILE *sndfile, int str_type, const char* str) ;
-
-const char* sf_get_string (SNDFILE *sndfile, int str_type) ;
-
-/* Functions for reading/writing the waveform data of a sound file.
-*/
-
-sf_count_t sf_read_raw (SNDFILE *sndfile, void *ptr, sf_count_t bytes) ;
-sf_count_t sf_write_raw (SNDFILE *sndfile, const void *ptr, sf_count_t bytes) ;
-
-/* Functions for reading and writing the data chunk in terms of frames.
-** The number of items actually read/written = frames * number of channels.
-** sf_xxxx_raw read/writes the raw data bytes from/to the file
-** sf_xxxx_short passes data in the native short format
-** sf_xxxx_int passes data in the native int format
-** sf_xxxx_float passes data in the native float format
-** sf_xxxx_double passes data in the native double format
-** All of these read/write function return number of frames read/written.
-*/
-
-sf_count_t sf_readf_short (SNDFILE *sndfile, short *ptr, sf_count_t frames) ;
-sf_count_t sf_writef_short (SNDFILE *sndfile, const short *ptr, sf_count_t frames) ;
-
-sf_count_t sf_readf_int (SNDFILE *sndfile, int *ptr, sf_count_t frames) ;
-sf_count_t sf_writef_int (SNDFILE *sndfile, const int *ptr, sf_count_t frames) ;
-
-sf_count_t sf_readf_float (SNDFILE *sndfile, float *ptr, sf_count_t frames) ;
-sf_count_t sf_writef_float (SNDFILE *sndfile, const float *ptr, sf_count_t frames) ;
-
-sf_count_t sf_readf_double (SNDFILE *sndfile, double *ptr, sf_count_t frames) ;
-sf_count_t sf_writef_double (SNDFILE *sndfile, const double *ptr, sf_count_t frames) ;
-
-/* Functions for reading and writing the data chunk in terms of items.
-** Otherwise similar to above.
-** All of these read/write function return number of items read/written.
-*/
-
-sf_count_t sf_read_short (SNDFILE *sndfile, short *ptr, sf_count_t items) ;
-sf_count_t sf_write_short (SNDFILE *sndfile, const short *ptr, sf_count_t items) ;
-
-sf_count_t sf_read_int (SNDFILE *sndfile, int *ptr, sf_count_t items) ;
-sf_count_t sf_write_int (SNDFILE *sndfile, const int *ptr, sf_count_t items) ;
-
-sf_count_t sf_read_float (SNDFILE *sndfile, float *ptr, sf_count_t items) ;
-sf_count_t sf_write_float (SNDFILE *sndfile, const float *ptr, sf_count_t items) ;
-
-sf_count_t sf_read_double (SNDFILE *sndfile, double *ptr, sf_count_t items) ;
-sf_count_t sf_write_double (SNDFILE *sndfile, const double *ptr, sf_count_t items) ;
-
-/* Close the SNDFILE and clean up all memory allocations associated with this
-** file.
-** Returns 0 on success, or an error number.
-*/
-
-int sf_close (SNDFILE *sndfile) ;
-
-/* If the file is opened SFM_WRITE or SFM_RDWR, call fsync() on the file
-** to force the writing of data to disk. If the file is opened SFM_READ
-** no action is taken.
-*/
-
-void sf_write_sync (SNDFILE *sndfile) ;
-
-#ifdef __cplusplus
-} /* extern "C" */
-#endif /* __cplusplus */
-
-#endif /* SNDFILE_H */
diff --git a/libs/libsndfile/src/stamp-h1 b/libs/libsndfile/src/stamp-h1
deleted file mode 100644
index 57ea58e405..0000000000
--- a/libs/libsndfile/src/stamp-h1
+++ /dev/null
@@ -1 +0,0 @@
-timestamp for src/config.h
diff --git a/libs/libsndfile/src/strings.c b/libs/libsndfile/src/strings.c
deleted file mode 100644
index 2433f9b069..0000000000
--- a/libs/libsndfile/src/strings.c
+++ /dev/null
@@ -1,204 +0,0 @@
-/*
-** Copyright (C) 2001-2004 Erik de Castro Lopo <erikd@mega-nerd.com>
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU Lesser General Public License as published by
-** the Free Software Foundation; either version 2.1 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU Lesser General Public License for more details.
-**
-** You should have received a copy of the GNU Lesser General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-*/
-
-#include "sfconfig.h"
-
-#include <stdio.h>
-#include <string.h>
-#include <math.h>
-
-#include "sndfile.h"
-#include "common.h"
-
-#define STRINGS_DEBUG 0
-#if STRINGS_DEBUG
-static void hexdump (void *data, int len) ;
-#endif
-
-int
-psf_store_string (SF_PRIVATE *psf, int str_type, const char *str)
-{ static char lsf_name [] = PACKAGE "-" VERSION ;
- static char bracket_name [] = " (" PACKAGE "-" VERSION ")" ;
- int k, str_len, len_remaining, str_flags ;
-
- if (str == NULL)
- return SFE_STR_BAD_STRING ;
-
- str_len = strlen (str) ;
-
- /* A few extra checks for write mode. */
- if (psf->mode == SFM_WRITE || psf->mode == SFM_RDWR)
- { if ((psf->str_flags & SF_STR_ALLOW_START) == 0)
- return SFE_STR_NO_SUPPORT ;
- if ((psf->str_flags & SF_STR_ALLOW_END) == 0)
- return SFE_STR_NO_SUPPORT ;
- /* Only allow zero length strings for software. */
- if (str_type != SF_STR_SOFTWARE && str_len == 0)
- return SFE_STR_BAD_STRING ;
- } ;
-
- /* Determine flags */
- str_flags = SF_STR_LOCATE_START ;
- if (psf->have_written)
- { if ((psf->str_flags & SF_STR_ALLOW_END) == 0)
- return SFE_STR_NO_ADD_END ;
- str_flags = SF_STR_LOCATE_END ;
- } ;
-
- /* Find next free slot in table. */
- for (k = 0 ; k < SF_MAX_STRINGS ; k++)
- if (psf->strings [k].type == 0)
- break ;
-
- /* More sanity checking. */
- if (k >= SF_MAX_STRINGS)
- return SFE_STR_MAX_COUNT ;
-
- if (k == 0 && psf->str_end != NULL)
- { psf_log_printf (psf, "SFE_STR_WEIRD : k == 0 && psf->str_end != NULL\n") ;
- return SFE_STR_WEIRD ;
- } ;
-
- if (k != 0 && psf->str_end == NULL)
- { psf_log_printf (psf, "SFE_STR_WEIRD : k != 0 && psf->str_end == NULL\n") ;
- return SFE_STR_WEIRD ;
- } ;
-
- /* Special case for the first string. */
- if (k == 0)
- psf->str_end = psf->str_storage ;
-
-
-#if STRINGS_DEBUG
- psf_log_printf (psf, "str_storage : %X\n", (int) psf->str_storage) ;
- psf_log_printf (psf, "str_end : %X\n", (int) psf->str_end) ;
- psf_log_printf (psf, "sizeof (str_storage) : %d\n", SIGNED_SIZEOF (psf->str_storage)) ;
-#endif
-
- len_remaining = SIGNED_SIZEOF (psf->str_storage) - (psf->str_end - psf->str_storage) ;
-
- if (len_remaining < str_len + 2)
- return SFE_STR_MAX_DATA ;
-
- switch (str_type)
- { case SF_STR_SOFTWARE :
- /* In write mode, want to append libsndfile-version to string. */
- if (psf->mode == SFM_WRITE || psf->mode == SFM_RDWR)
- { psf->strings [k].type = str_type ;
- psf->strings [k].str = psf->str_end ;
- psf->strings [k].flags = str_flags ;
-
- memcpy (psf->str_end, str, str_len + 1) ;
- psf->str_end += str_len ;
-
- /*
- ** If the supplied string does not already contain a
- ** libsndfile-X.Y.Z component, then add it.
- */
- if (strstr (str, PACKAGE) == NULL && len_remaining > (int) (strlen (bracket_name) + str_len + 2))
- { if (strlen (str) == 0)
- strncat (psf->str_end, lsf_name, len_remaining) ;
- else
- strncat (psf->str_end, bracket_name, len_remaining) ;
- psf->str_end += strlen (psf->str_end) ;
- } ;
-
- /* Plus one to catch string terminator. */
- psf->str_end += 1 ;
- break ;
- } ;
-
- /* Fall though if not write mode. */
-
- case SF_STR_TITLE :
- case SF_STR_COPYRIGHT :
- case SF_STR_ARTIST :
- case SF_STR_COMMENT :
- case SF_STR_DATE :
- psf->strings [k].type = str_type ;
- psf->strings [k].str = psf->str_end ;
- psf->strings [k].flags = str_flags ;
-
- /* Plus one to catch string terminator. */
- memcpy (psf->str_end, str, str_len + 1) ;
- psf->str_end += str_len + 1 ;
- break ;
-
- default :
- return SFE_STR_BAD_TYPE ;
- } ;
-
- psf->str_flags |= (psf->have_written) ? SF_STR_LOCATE_END : SF_STR_LOCATE_START ;
-
-#if STRINGS_DEBUG
- hexdump (psf->str_storage, 300) ;
-#endif
-
- return 0 ;
-} /* psf_store_string */
-
-int
-psf_set_string (SF_PRIVATE *psf, int str_type, const char *str)
-{ if (psf->mode == SFM_READ)
- return SFE_STR_NOT_WRITE ;
-
- return psf_store_string (psf, str_type, str) ;
-} /* psf_set_string */
-
-const char*
-psf_get_string (SF_PRIVATE *psf, int str_type)
-{ int k ;
-
- for (k = 0 ; k < SF_MAX_STRINGS ; k++)
- if (str_type == psf->strings [k].type)
- return psf->strings [k].str ;
-
- return NULL ;
-} /* psf_get_string */
-
-#if STRINGS_DEBUG
-
-#include <ctype.h>
-static void
-hexdump (void *data, int len)
-{ unsigned char *ptr ;
- int k ;
-
- ptr = data ;
-
- puts ("---------------------------------------------------------") ;
- while (len >= 16)
- { for (k = 0 ; k < 16 ; k++)
- printf ("%02X ", ptr [k] & 0xFF) ;
- printf (" ") ;
- for (k = 0 ; k < 16 ; k++)
- printf ("%c", isprint (ptr [k]) ? ptr [k] : '.') ;
- puts ("") ;
- ptr += 16 ;
- len -= 16 ;
- } ;
-} /* hexdump */
-
-#endif
-/*
-** Do not edit or modify anything in this comment block.
-** The arch-tag line is a file identity tag for the GNU Arch
-** revision control system.
-**
-** arch-tag: 04393aa1-9389-46fe-baf2-58a7bd544fd6
-*/
diff --git a/libs/libsndfile/src/svx.c b/libs/libsndfile/src/svx.c
deleted file mode 100644
index 3ef461ddec..0000000000
--- a/libs/libsndfile/src/svx.c
+++ /dev/null
@@ -1,410 +0,0 @@
-/*
-** Copyright (C) 1999-2004 Erik de Castro Lopo <erikd@mega-nerd.com>
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU Lesser General Public License as published by
-** the Free Software Foundation; either version 2.1 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU Lesser General Public License for more details.
-**
-** You should have received a copy of the GNU Lesser General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-*/
-
-#include "sfconfig.h"
-
-#include <stdio.h>
-#include <string.h>
-#include <ctype.h>
-#include <stdarg.h>
-
-#include "sndfile.h"
-#include "sfendian.h"
-#include "common.h"
-
-
-/*------------------------------------------------------------------------------
- * Macros to handle big/little endian issues.
-*/
-
-#define FORM_MARKER (MAKE_MARKER ('F', 'O', 'R', 'M'))
-#define SVX8_MARKER (MAKE_MARKER ('8', 'S', 'V', 'X'))
-#define SV16_MARKER (MAKE_MARKER ('1', '6', 'S', 'V'))
-#define VHDR_MARKER (MAKE_MARKER ('V', 'H', 'D', 'R'))
-#define BODY_MARKER (MAKE_MARKER ('B', 'O', 'D', 'Y'))
-
-#define ATAK_MARKER (MAKE_MARKER ('A', 'T', 'A', 'K'))
-#define RLSE_MARKER (MAKE_MARKER ('R', 'L', 'S', 'E'))
-
-#define c_MARKER (MAKE_MARKER ('(', 'c', ')', ' '))
-#define NAME_MARKER (MAKE_MARKER ('N', 'A', 'M', 'E'))
-#define AUTH_MARKER (MAKE_MARKER ('A', 'U', 'T', 'H'))
-#define ANNO_MARKER (MAKE_MARKER ('A', 'N', 'N', 'O'))
-#define CHAN_MARKER (MAKE_MARKER ('C', 'H', 'A', 'N'))
-
-/*------------------------------------------------------------------------------
- * Typedefs for file chunks.
-*/
-
-typedef struct
-{ unsigned int oneShotHiSamples, repeatHiSamples, samplesPerHiCycle ;
- unsigned short samplesPerSec ;
- unsigned char octave, compression ;
- unsigned int volume ;
-} VHDR_CHUNK ;
-
-enum {
- HAVE_FORM = 0x01,
-
- HAVE_SVX = 0x02,
- HAVE_VHDR = 0x04,
- HAVE_BODY = 0x08
-} ;
-
-/*------------------------------------------------------------------------------
- * Private static functions.
-*/
-
-static int svx_close (SF_PRIVATE *psf) ;
-static int svx_write_header (SF_PRIVATE *psf, int calc_length) ;
-static int svx_read_header (SF_PRIVATE *psf) ;
-
-/*------------------------------------------------------------------------------
-** Public function.
-*/
-
-int
-svx_open (SF_PRIVATE *psf)
-{ int error ;
-
- if (psf->mode == SFM_READ || (psf->mode == SFM_RDWR && psf->filelength > 0))
- { if ((error = svx_read_header (psf)))
- return error ;
-
- psf->endian = SF_ENDIAN_BIG ; /* All SVX files are big endian. */
-
- psf->blockwidth = psf->sf.channels * psf->bytewidth ;
- if (psf->blockwidth)
- psf->sf.frames = psf->datalength / psf->blockwidth ;
-
- psf_fseek (psf, psf->dataoffset, SEEK_SET) ;
- } ;
-
- if (psf->mode == SFM_WRITE || psf->mode == SFM_RDWR)
- { if (psf->is_pipe)
- return SFE_NO_PIPE_WRITE ;
-
- if ((psf->sf.format & SF_FORMAT_TYPEMASK) != SF_FORMAT_SVX)
- return SFE_BAD_OPEN_FORMAT ;
-
- psf->endian = psf->sf.format & SF_FORMAT_ENDMASK ;
-
- if (psf->endian == SF_ENDIAN_LITTLE || (CPU_IS_LITTLE_ENDIAN && psf->endian == SF_ENDIAN_CPU))
- return SFE_BAD_ENDIAN ;
-
- psf->endian = SF_ENDIAN_BIG ; /* All SVX files are big endian. */
-
- error = svx_write_header (psf, SF_FALSE) ;
- if (error)
- return error ;
-
- psf->write_header = svx_write_header ;
- } ;
-
- psf->container_close = svx_close ;
-
- if ((error = pcm_init (psf)))
- return error ;
-
- return 0 ;
-} /* svx_open */
-
-/*------------------------------------------------------------------------------
-*/
-
-static int
-svx_read_header (SF_PRIVATE *psf)
-{ VHDR_CHUNK vhdr ;
- unsigned int FORMsize, vhdrsize, dword, marker ;
- int filetype = 0, parsestage = 0, done = 0 ;
- int bytecount = 0, channels ;
-
- memset (&vhdr, 0, sizeof (vhdr)) ;
- psf_binheader_readf (psf, "p", 0) ;
-
- /* Set default number of channels. Currently can't handle stereo SVX files. */
- psf->sf.channels = 1 ;
-
- psf->sf.format = SF_FORMAT_SVX ;
-
- while (! done)
- { psf_binheader_readf (psf, "m", &marker) ;
- switch (marker)
- { case FORM_MARKER :
- if (parsestage)
- return SFE_SVX_NO_FORM ;
-
- psf_binheader_readf (psf, "E4", &FORMsize) ;
-
- if (FORMsize != psf->filelength - 2 * sizeof (dword))
- { dword = psf->filelength - 2 * sizeof (dword) ;
- psf_log_printf (psf, "FORM : %d (should be %d)\n", FORMsize, dword) ;
- FORMsize = dword ;
- }
- else
- psf_log_printf (psf, "FORM : %d\n", FORMsize) ;
- parsestage |= HAVE_FORM ;
- break ;
-
- case SVX8_MARKER :
- case SV16_MARKER :
- if (! (parsestage & HAVE_FORM))
- return SFE_SVX_NO_FORM ;
- filetype = marker ;
- psf_log_printf (psf, " %M\n", marker) ;
- parsestage |= HAVE_SVX ;
- break ;
-
- case VHDR_MARKER :
- if (! (parsestage & (HAVE_FORM | HAVE_SVX)))
- return SFE_SVX_NO_FORM ;
-
- psf_binheader_readf (psf, "E4", &vhdrsize) ;
-
- psf_log_printf (psf, " VHDR : %d\n", vhdrsize) ;
-
- psf_binheader_readf (psf, "E4442114", &(vhdr.oneShotHiSamples), &(vhdr.repeatHiSamples),
- &(vhdr.samplesPerHiCycle), &(vhdr.samplesPerSec), &(vhdr.octave), &(vhdr.compression),
- &(vhdr.volume)) ;
-
- psf_log_printf (psf, " OneShotHiSamples : %d\n", vhdr.oneShotHiSamples) ;
- psf_log_printf (psf, " RepeatHiSamples : %d\n", vhdr.repeatHiSamples) ;
- psf_log_printf (psf, " samplesPerHiCycle : %d\n", vhdr.samplesPerHiCycle) ;
- psf_log_printf (psf, " Sample Rate : %d\n", vhdr.samplesPerSec) ;
- psf_log_printf (psf, " Octave : %d\n", vhdr.octave) ;
-
- psf_log_printf (psf, " Compression : %d => ", vhdr.compression) ;
-
- switch (vhdr.compression)
- { case 0 : psf_log_printf (psf, "None.\n") ;
- break ;
- case 1 : psf_log_printf (psf, "Fibonacci delta\n") ;
- break ;
- case 2 : psf_log_printf (psf, "Exponential delta\n") ;
- break ;
- } ;
-
- psf_log_printf (psf, " Volume : %d\n", vhdr.volume) ;
-
- psf->sf.samplerate = vhdr.samplesPerSec ;
-
- if (filetype == SVX8_MARKER)
- { psf->sf.format |= SF_FORMAT_PCM_S8 ;
- psf->bytewidth = 1 ;
- }
- else if (filetype == SV16_MARKER)
- { psf->sf.format |= SF_FORMAT_PCM_16 ;
- psf->bytewidth = 2 ;
- } ;
-
- parsestage |= HAVE_VHDR ;
- break ;
-
- case BODY_MARKER :
- if (! (parsestage & HAVE_VHDR))
- return SFE_SVX_NO_BODY ;
-
- psf_binheader_readf (psf, "E4", &dword) ;
- psf->datalength = dword ;
-
- psf->dataoffset = psf_ftell (psf) ;
-
- if (psf->datalength > psf->filelength - psf->dataoffset)
- { psf_log_printf (psf, " BODY : %D (should be %D)\n", psf->datalength, psf->filelength - psf->dataoffset) ;
- psf->datalength = psf->filelength - psf->dataoffset ;
- }
- else
- psf_log_printf (psf, " BODY : %D\n", psf->datalength) ;
-
- parsestage |= HAVE_BODY ;
-
- if (! psf->sf.seekable)
- break ;
-
- psf_fseek (psf, psf->datalength, SEEK_CUR) ;
- break ;
-
- case NAME_MARKER :
- if (! (parsestage & HAVE_SVX))
- return SFE_SVX_NO_FORM ;
-
- psf_binheader_readf (psf, "E4", &dword) ;
-
- psf_log_printf (psf, " %M : %d\n", marker, dword) ;
-
- if (strlen (psf->filename) != dword)
- { if (dword > sizeof (psf->filename) - 1)
- return SFE_SVX_BAD_NAME_LENGTH ;
-
- psf_binheader_readf (psf, "b", psf->filename, dword) ;
- psf->filename [dword] = 0 ;
- }
- else
- psf_binheader_readf (psf, "j", dword) ;
- break ;
-
- case ANNO_MARKER :
- if (! (parsestage & HAVE_SVX))
- return SFE_SVX_NO_FORM ;
-
- psf_binheader_readf (psf, "E4", &dword) ;
-
- psf_log_printf (psf, " %M : %d\n", marker, dword) ;
-
- psf_binheader_readf (psf, "j", dword) ;
- break ;
-
- case CHAN_MARKER :
- if (! (parsestage & HAVE_SVX))
- return SFE_SVX_NO_FORM ;
-
- psf_binheader_readf (psf, "E4", &dword) ;
-
- psf_log_printf (psf, " %M : %d\n", marker, dword) ;
-
- bytecount += psf_binheader_readf (psf, "E4", &channels) ;
- psf->sf.channels = channels ;
-
- psf_log_printf (psf, " Channels : %d\n", channels) ;
-
- psf_binheader_readf (psf, "j", dword - bytecount) ;
- break ;
-
-
- case AUTH_MARKER :
- case c_MARKER :
- if (! (parsestage & HAVE_SVX))
- return SFE_SVX_NO_FORM ;
-
- psf_binheader_readf (psf, "E4", &dword) ;
-
- psf_log_printf (psf, " %M : %d\n", marker, dword) ;
-
- psf_binheader_readf (psf, "j", dword) ;
- break ;
-
- default :
- if (isprint ((marker >> 24) & 0xFF) && isprint ((marker >> 16) & 0xFF)
- && isprint ((marker >> 8) & 0xFF) && isprint (marker & 0xFF))
- { psf_binheader_readf (psf, "E4", &dword) ;
-
- psf_log_printf (psf, "%M : %d (unknown marker)\n", marker, dword) ;
-
- psf_binheader_readf (psf, "j", dword) ;
- break ;
- } ;
- if ((dword = psf_ftell (psf)) & 0x03)
- { psf_log_printf (psf, " Unknown chunk marker at position %d. Resynching.\n", dword - 4) ;
-
- psf_binheader_readf (psf, "j", -3) ;
- break ;
- } ;
- psf_log_printf (psf, "*** Unknown chunk marker : %X. Exiting parser.\n", marker) ;
- done = 1 ;
- } ; /* switch (marker) */
-
- if (! psf->sf.seekable && (parsestage & HAVE_BODY))
- break ;
-
- if (psf_ftell (psf) >= psf->filelength - SIGNED_SIZEOF (dword))
- break ;
- } ; /* while (1) */
-
- if (vhdr.compression)
- return SFE_SVX_BAD_COMP ;
-
- if (psf->dataoffset <= 0)
- return SFE_SVX_NO_DATA ;
-
- return 0 ;
-} /* svx_read_header */
-
-static int
-svx_close (SF_PRIVATE *psf)
-{
- if (psf->mode == SFM_WRITE || psf->mode == SFM_RDWR)
- svx_write_header (psf, SF_TRUE) ;
-
- return 0 ;
-} /* svx_close */
-
-static int
-svx_write_header (SF_PRIVATE *psf, int calc_length)
-{ static char annotation [] = "libsndfile by Erik de Castro Lopo\0\0\0" ;
- sf_count_t current ;
-
- current = psf_ftell (psf) ;
-
- if (calc_length)
- { psf->filelength = psf_get_filelen (psf) ;
-
- psf->datalength = psf->filelength - psf->dataoffset ;
-
- if (psf->dataend)
- psf->datalength -= psf->filelength - psf->dataend ;
-
- psf->sf.frames = psf->datalength / (psf->bytewidth * psf->sf.channels) ;
- } ;
-
- psf->header [0] = 0 ;
- psf->headindex = 0 ;
- psf_fseek (psf, 0, SEEK_SET) ;
-
- /* FORM marker and FORM size. */
- psf_binheader_writef (psf, "Etm8", FORM_MARKER, (psf->filelength < 8) ?
- psf->filelength * 0 : psf->filelength - 8) ;
-
- psf_binheader_writef (psf, "m", (psf->bytewidth == 1) ? SVX8_MARKER : SV16_MARKER) ;
-
- /* VHDR chunk. */
- psf_binheader_writef (psf, "Em4", VHDR_MARKER, sizeof (VHDR_CHUNK)) ;
- /* VHDR : oneShotHiSamples, repeatHiSamples, samplesPerHiCycle */
- psf_binheader_writef (psf, "E444", psf->sf.frames, 0, 0) ;
- /* VHDR : samplesPerSec, octave, compression */
- psf_binheader_writef (psf, "E211", psf->sf.samplerate, 1, 0) ;
- /* VHDR : volume */
- psf_binheader_writef (psf, "E4", (psf->bytewidth == 1) ? 0xFF : 0xFFFF) ;
-
- /* Filename and annotation strings. */
- psf_binheader_writef (psf, "Emsms", NAME_MARKER, psf->filename, ANNO_MARKER, annotation) ;
-
- /* BODY marker and size. */
- psf_binheader_writef (psf, "Etm8", BODY_MARKER, (psf->datalength < 0) ?
- psf->datalength * 0 : psf->datalength) ;
-
- psf_fwrite (psf->header, psf->headindex, 1, psf) ;
-
- if (psf->error)
- return psf->error ;
-
- psf->dataoffset = psf->headindex ;
-
- if (current > 0)
- psf_fseek (psf, current, SEEK_SET) ;
-
- return psf->error ;
-} /* svx_write_header */
-
-
-/*
-** Do not edit or modify anything in this comment block.
-** The arch-tag line is a file identity tag for the GNU Arch
-** revision control system.
-**
-** arch-tag: a80ab6fb-7d75-4d32-a6b0-0061a3f05d95
-*/
diff --git a/libs/libsndfile/src/txw.c b/libs/libsndfile/src/txw.c
deleted file mode 100644
index 0f0add673d..0000000000
--- a/libs/libsndfile/src/txw.c
+++ /dev/null
@@ -1,379 +0,0 @@
-/*
-** Copyright (C) 2002-2004 Erik de Castro Lopo <erikd@mega-nerd.com>
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU Lesser General Public License as published by
-** the Free Software Foundation; either version 2.1 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU Lesser General Public License for more details.
-**
-** You should have received a copy of the GNU Lesser General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-*/
-
-/*===========================================================================
-** Yamaha TX16 Sampler Files.
-**
-** This header parser was written using information from the SoX source code
-** and trial and error experimentation. The code here however is all original.
-*/
-
-#include "sfconfig.h"
-
-#include <stdio.h>
-#include <fcntl.h>
-#include <string.h>
-#include <ctype.h>
-
-#include "sndfile.h"
-#include "sfendian.h"
-#include "common.h"
-
-#if (ENABLE_EXPERIMENTAL_CODE == 0)
-
-int
-txw_open (SF_PRIVATE *psf)
-{ if (psf)
- return SFE_UNIMPLEMENTED ;
- return (psf && 0) ;
-} /* txw_open */
-
-#else
-
-/*------------------------------------------------------------------------------
-** Markers.
-*/
-
-#define TXW_DATA_OFFSET 32
-
-#define TXW_LOOPED 0x49
-#define TXW_NO_LOOP 0xC9
-
-/*------------------------------------------------------------------------------
-** Private static functions.
-*/
-
-static int txw_read_header (SF_PRIVATE *psf) ;
-
-static sf_count_t txw_read_s (SF_PRIVATE *psf, short *ptr, sf_count_t len) ;
-static sf_count_t txw_read_i (SF_PRIVATE *psf, int *ptr, sf_count_t len) ;
-static sf_count_t txw_read_f (SF_PRIVATE *psf, float *ptr, sf_count_t len) ;
-static sf_count_t txw_read_d (SF_PRIVATE *psf, double *ptr, sf_count_t len) ;
-
-static sf_count_t txw_seek (SF_PRIVATE *psf, int mode, sf_count_t offset) ;
-
-/*------------------------------------------------------------------------------
-** Public functions.
-*/
-
-/*
- * ftp://ftp.t0.or.at/pub/sound/tx16w/samples.yamaha
- * ftp://ftp.t0.or.at/pub/sound/tx16w/faq/tx16w.tec
- * http://www.t0.or.at/~mpakesch/tx16w/
- *
- * from tx16w.c sox 12.15: (7-Oct-98) (Mark Lakata and Leigh Smith)
- * char filetype[6] "LM8953"
- * nulls[10],
- * dummy_aeg[6]
- * format 0x49 = looped, 0xC9 = non-looped
- * sample_rate 1 = 33 kHz, 2 = 50 kHz, 3 = 16 kHz
- * atc_length[3] if sample rate 0, [2]&0xfe = 6: 33kHz, 0x10:50, 0xf6: 16,
- * depending on [5] but to heck with it
- * rpt_length[3] (these are for looped samples, attack and loop lengths)
- * unused[2]
- */
-
-typedef struct
-{ unsigned char format, srate, sr2, sr3 ;
- unsigned short srhash ;
- unsigned int attacklen, repeatlen ;
-} TXW_HEADER ;
-
-#define ERROR_666 666
-
-int
-txw_open (SF_PRIVATE *psf)
-{ int error ;
-
- if (psf->mode != SFM_READ)
- return SFE_UNIMPLEMENTED ;
-
- if ((error = txw_read_header (psf)))
- return error ;
-
- if (psf_fseek (psf, psf->dataoffset, SEEK_SET) != psf->dataoffset)
- return SFE_BAD_SEEK ;
-
- psf->read_short = txw_read_s ;
- psf->read_int = txw_read_i ;
- psf->read_float = txw_read_f ;
- psf->read_double = txw_read_d ;
-
- psf->seek = txw_seek ;
-
- return 0 ;
-} /* txw_open */
-
-/*------------------------------------------------------------------------------
-*/
-
-static int
-txw_read_header (SF_PRIVATE *psf)
-{ TXW_HEADER txwh ;
- char *strptr ;
-
- memset (&txwh, 0, sizeof (txwh)) ;
- memset (psf->u.cbuf, 0, sizeof (psf->u.cbuf)) ;
- psf_binheader_readf (psf, "pb", 0, psf->u.cbuf, 16) ;
-
- if (memcmp (psf->u.cbuf, "LM8953\0\0\0\0\0\0\0\0\0\0", 16) != 0)
- return ERROR_666 ;
-
- psf_log_printf (psf, "Read only : Yamaha TX-16 Sampler (.txw)\nLM8953\n") ;
-
- /* Jump 6 bytes (dummp_aeg), read format, read sample rate. */
- psf_binheader_readf (psf, "j11", 6, &txwh.format, &txwh.srate) ;
-
- /* 8 bytes (atc_length[3], rpt_length[3], unused[2]). */
- psf_binheader_readf (psf, "e33j", &txwh.attacklen, &txwh.repeatlen, 2) ;
- txwh.sr2 = (txwh.attacklen >> 16) & 0xFE ;
- txwh.sr3 = (txwh.repeatlen >> 16) & 0xFE ;
- txwh.attacklen &= 0x1FFFF ;
- txwh.repeatlen &= 0x1FFFF ;
-
- switch (txwh.format)
- { case TXW_LOOPED :
- strptr = "looped" ;
- break ;
-
- case TXW_NO_LOOP :
- strptr = "non-looped" ;
- break ;
-
- default :
- psf_log_printf (psf, " Format : 0x%02x => ?????\n", txwh.format) ;
- return ERROR_666 ;
- } ;
-
- psf_log_printf (psf, " Format : 0x%02X => %s\n", txwh.format, strptr) ;
-
- strptr = NULL ;
-
- switch (txwh.srate)
- { case 1 :
- psf->sf.samplerate = 33333 ;
- break ;
-
- case 2 :
- psf->sf.samplerate = 50000 ;
- break ;
-
- case 3 :
- psf->sf.samplerate = 16667 ;
- break ;
-
- default :
- /* This is ugly and braindead. */
- txwh.srhash = ((txwh.sr2 & 0xFE) << 8) | (txwh.sr3 & 0xFE) ;
- switch (txwh.srhash)
- { case ((0x6 << 8) | 0x52) :
- psf->sf.samplerate = 33333 ;
- break ;
-
- case ((0x10 << 8) | 0x52) :
- psf->sf.samplerate = 50000 ;
- break ;
-
- case ((0xF6 << 8) | 0x52) :
- psf->sf.samplerate = 166667 ;
- break ;
-
- default :
- strptr = " Sample Rate : Unknown : forcing to 33333\n" ;
- psf->sf.samplerate = 33333 ;
- break ;
- } ;
- } ;
-
-
- if (strptr)
- psf_log_printf (psf, strptr) ;
- else if (txwh.srhash)
- psf_log_printf (psf, " Sample Rate : %d (0x%X) => %d\n", txwh.srate, txwh.srhash, psf->sf.samplerate) ;
- else
- psf_log_printf (psf, " Sample Rate : %d => %d\n", txwh.srate, psf->sf.samplerate) ;
-
- if (txwh.format == TXW_LOOPED)
- { psf_log_printf (psf, " Attack Len : %d\n", txwh.attacklen) ;
- psf_log_printf (psf, " Repeat Len : %d\n", txwh.repeatlen) ;
- } ;
-
- psf->dataoffset = TXW_DATA_OFFSET ;
- psf->datalength = psf->filelength - TXW_DATA_OFFSET ;
- psf->sf.frames = 2 * psf->datalength / 3 ;
-
-
- if (psf->datalength % 3 == 1)
- psf_log_printf (psf, "*** File seems to be truncated, %d extra bytes.\n",
- (int) (psf->datalength % 3)) ;
-
- if (txwh.attacklen + txwh.repeatlen > psf->sf.frames)
- psf_log_printf (psf, "*** File has been truncated.\n") ;
-
- psf->sf.format = SF_FORMAT_TXW | SF_FORMAT_PCM_16 ;
- psf->sf.channels = 1 ;
- psf->sf.sections = 1 ;
- psf->sf.seekable = SF_TRUE ;
-
- return 0 ;
-} /* txw_read_header */
-
-static sf_count_t
-txw_read_s (SF_PRIVATE *psf, short *ptr, sf_count_t len)
-{ unsigned char *ucptr ;
- short sample ;
- int k, bufferlen, readcount, count ;
- sf_count_t total = 0 ;
-
- bufferlen = sizeof (psf->u.cbuf) / 3 ;
- bufferlen -= (bufferlen & 1) ;
- while (len > 0)
- { readcount = (len >= bufferlen) ? bufferlen : len ;
- count = psf_fread (psf->u.cbuf, 3, readcount, psf) ;
-
- ucptr = psf->u.ucbuf ;
- for (k = 0 ; k < readcount ; k += 2)
- { sample = (ucptr [0] << 8) | (ucptr [1] & 0xF0) ;
- ptr [total + k] = sample ;
- sample = (ucptr [2] << 8) | ((ucptr [1] & 0xF) << 4) ;
- ptr [total + k + 1] = sample ;
- ucptr += 3 ;
- } ;
-
- total += count ;
- len -= readcount ;
- } ;
-
- return total ;
-} /* txw_read_s */
-
-static sf_count_t
-txw_read_i (SF_PRIVATE *psf, int *ptr, sf_count_t len)
-{ unsigned char *ucptr ;
- short sample ;
- int k, bufferlen, readcount, count ;
- sf_count_t total = 0 ;
-
- bufferlen = sizeof (psf->u.cbuf) / 3 ;
- bufferlen -= (bufferlen & 1) ;
- while (len > 0)
- { readcount = (len >= bufferlen) ? bufferlen : len ;
- count = psf_fread (psf->u.cbuf, 3, readcount, psf) ;
-
- ucptr = psf->u.ucbuf ;
- for (k = 0 ; k < readcount ; k += 2)
- { sample = (ucptr [0] << 8) | (ucptr [1] & 0xF0) ;
- ptr [total + k] = sample << 16 ;
- sample = (ucptr [2] << 8) | ((ucptr [1] & 0xF) << 4) ;
- ptr [total + k + 1] = sample << 16 ;
- ucptr += 3 ;
- } ;
-
- total += count ;
- len -= readcount ;
- } ;
-
- return total ;
-} /* txw_read_i */
-
-static sf_count_t
-txw_read_f (SF_PRIVATE *psf, float *ptr, sf_count_t len)
-{ unsigned char *ucptr ;
- short sample ;
- int k, bufferlen, readcount, count ;
- sf_count_t total = 0 ;
- float normfact ;
-
- if (psf->norm_float == SF_TRUE)
- normfact = 1.0 / 0x8000 ;
- else
- normfact = 1.0 / 0x10 ;
-
- bufferlen = sizeof (psf->u.cbuf) / 3 ;
- bufferlen -= (bufferlen & 1) ;
- while (len > 0)
- { readcount = (len >= bufferlen) ? bufferlen : len ;
- count = psf_fread (psf->u.cbuf, 3, readcount, psf) ;
-
- ucptr = psf->u.ucbuf ;
- for (k = 0 ; k < readcount ; k += 2)
- { sample = (ucptr [0] << 8) | (ucptr [1] & 0xF0) ;
- ptr [total + k] = normfact * sample ;
- sample = (ucptr [2] << 8) | ((ucptr [1] & 0xF) << 4) ;
- ptr [total + k + 1] = normfact * sample ;
- ucptr += 3 ;
- } ;
-
- total += count ;
- len -= readcount ;
- } ;
-
- return total ;
-} /* txw_read_f */
-
-static sf_count_t
-txw_read_d (SF_PRIVATE *psf, double *ptr, sf_count_t len)
-{ unsigned char *ucptr ;
- short sample ;
- int k, bufferlen, readcount, count ;
- sf_count_t total = 0 ;
- double normfact ;
-
- if (psf->norm_double == SF_TRUE)
- normfact = 1.0 / 0x8000 ;
- else
- normfact = 1.0 / 0x10 ;
-
- bufferlen = sizeof (psf->u.cbuf) / 3 ;
- bufferlen -= (bufferlen & 1) ;
- while (len > 0)
- { readcount = (len >= bufferlen) ? bufferlen : len ;
- count = psf_fread (psf->u.cbuf, 3, readcount, psf) ;
-
- ucptr = psf->u.ucbuf ;
- for (k = 0 ; k < readcount ; k += 2)
- { sample = (ucptr [0] << 8) | (ucptr [1] & 0xF0) ;
- ptr [total + k] = normfact * sample ;
- sample = (ucptr [2] << 8) | ((ucptr [1] & 0xF) << 4) ;
- ptr [total + k + 1] = normfact * sample ;
- ucptr += 3 ;
- } ;
-
- total += count ;
- len -= readcount ;
- } ;
-
- return total ;
-} /* txw_read_d */
-
-static sf_count_t
-txw_seek (SF_PRIVATE *psf, int mode, sf_count_t offset)
-{ if (psf && mode)
- return offset ;
-
- return 0 ;
-} /* txw_seek */
-
-#endif
-/*
-** Do not edit or modify anything in this comment block.
-** The arch-tag line is a file identity tag for the GNU Arch
-** revision control system.
-**
-** arch-tag: 4d0ba7af-b1c5-46b4-a900-7c6f59fd9a89
-*/
diff --git a/libs/libsndfile/src/ulaw.c b/libs/libsndfile/src/ulaw.c
deleted file mode 100644
index e476c0a781..0000000000
--- a/libs/libsndfile/src/ulaw.c
+++ /dev/null
@@ -1,1047 +0,0 @@
-/*
-** Copyright (C) 1999-2005 Erik de Castro Lopo <erikd@mega-nerd.com>
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU Lesser General Public License as published by
-** the Free Software Foundation; either version 2.1 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU Lesser General Public License for more details.
-**
-** You should have received a copy of the GNU Lesser General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-*/
-
-#include "sndfile.h"
-#include "float_cast.h"
-#include "common.h"
-
-static sf_count_t ulaw_read_ulaw2s (SF_PRIVATE *psf, short *ptr, sf_count_t len) ;
-static sf_count_t ulaw_read_ulaw2i (SF_PRIVATE *psf, int *ptr, sf_count_t len) ;
-static sf_count_t ulaw_read_ulaw2f (SF_PRIVATE *psf, float *ptr, sf_count_t len) ;
-static sf_count_t ulaw_read_ulaw2d (SF_PRIVATE *psf, double *ptr, sf_count_t len) ;
-
-static sf_count_t ulaw_write_s2ulaw (SF_PRIVATE *psf, const short *ptr, sf_count_t len) ;
-static sf_count_t ulaw_write_i2ulaw (SF_PRIVATE *psf, const int *ptr, sf_count_t len) ;
-static sf_count_t ulaw_write_f2ulaw (SF_PRIVATE *psf, const float *ptr, sf_count_t len) ;
-static sf_count_t ulaw_write_d2ulaw (SF_PRIVATE *psf, const double *ptr, sf_count_t len) ;
-
-int
-ulaw_init (SF_PRIVATE *psf)
-{
- if (psf->mode == SFM_READ || psf->mode == SFM_RDWR)
- { psf->read_short = ulaw_read_ulaw2s ;
- psf->read_int = ulaw_read_ulaw2i ;
- psf->read_float = ulaw_read_ulaw2f ;
- psf->read_double = ulaw_read_ulaw2d ;
- } ;
-
- if (psf->mode == SFM_WRITE || psf->mode == SFM_RDWR)
- { psf->write_short = ulaw_write_s2ulaw ;
- psf->write_int = ulaw_write_i2ulaw ;
- psf->write_float = ulaw_write_f2ulaw ;
- psf->write_double = ulaw_write_d2ulaw ;
- } ;
-
- psf->bytewidth = 1 ;
- psf->blockwidth = psf->sf.channels ;
-
- if (psf->filelength > psf->dataoffset)
- psf->datalength = (psf->dataend) ? psf->dataend - psf->dataoffset :
- psf->filelength - psf->dataoffset ;
- else
- psf->datalength = 0 ;
-
- psf->sf.frames = psf->datalength / psf->blockwidth ;
-
- return 0 ;
-} /* ulaw_init */
-
-/*==============================================================================
-*/
-
-static short ulaw_decode [256] =
-{ -32124, -31100, -30076, -29052, -28028, -27004, -25980, -24956,
- -23932, -22908, -21884, -20860, -19836, -18812, -17788, -16764,
- -15996, -15484, -14972, -14460, -13948, -13436, -12924, -12412,
- -11900, -11388, -10876, -10364, -9852, -9340, -8828, -8316,
- -7932, -7676, -7420, -7164, -6908, -6652, -6396, -6140,
- -5884, -5628, -5372, -5116, -4860, -4604, -4348, -4092,
- -3900, -3772, -3644, -3516, -3388, -3260, -3132, -3004,
- -2876, -2748, -2620, -2492, -2364, -2236, -2108, -1980,
- -1884, -1820, -1756, -1692, -1628, -1564, -1500, -1436,
- -1372, -1308, -1244, -1180, -1116, -1052, -988, -924,
- -876, -844, -812, -780, -748, -716, -684, -652,
- -620, -588, -556, -524, -492, -460, -428, -396,
- -372, -356, -340, -324, -308, -292, -276, -260,
- -244, -228, -212, -196, -180, -164, -148, -132,
- -120, -112, -104, -96, -88, -80, -72, -64,
- -56, -48, -40, -32, -24, -16, -8, 0,
-
- 32124, 31100, 30076, 29052, 28028, 27004, 25980, 24956,
- 23932, 22908, 21884, 20860, 19836, 18812, 17788, 16764,
- 15996, 15484, 14972, 14460, 13948, 13436, 12924, 12412,
- 11900, 11388, 10876, 10364, 9852, 9340, 8828, 8316,
- 7932, 7676, 7420, 7164, 6908, 6652, 6396, 6140,
- 5884, 5628, 5372, 5116, 4860, 4604, 4348, 4092,
- 3900, 3772, 3644, 3516, 3388, 3260, 3132, 3004,
- 2876, 2748, 2620, 2492, 2364, 2236, 2108, 1980,
- 1884, 1820, 1756, 1692, 1628, 1564, 1500, 1436,
- 1372, 1308, 1244, 1180, 1116, 1052, 988, 924,
- 876, 844, 812, 780, 748, 716, 684, 652,
- 620, 588, 556, 524, 492, 460, 428, 396,
- 372, 356, 340, 324, 308, 292, 276, 260,
- 244, 228, 212, 196, 180, 164, 148, 132,
- 120, 112, 104, 96, 88, 80, 72, 64,
- 56, 48, 40, 32, 24, 16, 8, 0
-} ;
-
-static
-unsigned char ulaw_encode [8193] =
-{ 0xff, 0xfe, 0xfe, 0xfd, 0xfd, 0xfc, 0xfc, 0xfb, 0xfb, 0xfa, 0xfa, 0xf9,
- 0xf9, 0xf8, 0xf8, 0xf7, 0xf7, 0xf6, 0xf6, 0xf5, 0xf5, 0xf4, 0xf4, 0xf3,
- 0xf3, 0xf2, 0xf2, 0xf1, 0xf1, 0xf0, 0xf0, 0xef, 0xef, 0xef, 0xef, 0xee,
- 0xee, 0xee, 0xee, 0xed, 0xed, 0xed, 0xed, 0xec, 0xec, 0xec, 0xec, 0xeb,
- 0xeb, 0xeb, 0xeb, 0xea, 0xea, 0xea, 0xea, 0xe9, 0xe9, 0xe9, 0xe9, 0xe8,
- 0xe8, 0xe8, 0xe8, 0xe7, 0xe7, 0xe7, 0xe7, 0xe6, 0xe6, 0xe6, 0xe6, 0xe5,
- 0xe5, 0xe5, 0xe5, 0xe4, 0xe4, 0xe4, 0xe4, 0xe3, 0xe3, 0xe3, 0xe3, 0xe2,
- 0xe2, 0xe2, 0xe2, 0xe1, 0xe1, 0xe1, 0xe1, 0xe0, 0xe0, 0xe0, 0xe0, 0xdf,
- 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xde, 0xde, 0xde, 0xde, 0xde,
- 0xde, 0xde, 0xde, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdc,
- 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb,
- 0xdb, 0xdb, 0xdb, 0xda, 0xda, 0xda, 0xda, 0xda, 0xda, 0xda, 0xda, 0xd9,
- 0xd9, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9, 0xd8, 0xd8, 0xd8, 0xd8, 0xd8,
- 0xd8, 0xd8, 0xd8, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd6,
- 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd5, 0xd5, 0xd5, 0xd5, 0xd5,
- 0xd5, 0xd5, 0xd5, 0xd4, 0xd4, 0xd4, 0xd4, 0xd4, 0xd4, 0xd4, 0xd4, 0xd3,
- 0xd3, 0xd3, 0xd3, 0xd3, 0xd3, 0xd3, 0xd3, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2,
- 0xd2, 0xd2, 0xd2, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd0,
- 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf,
- 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xce,
- 0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce,
- 0xce, 0xce, 0xce, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd,
- 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc,
- 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcb,
- 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb,
- 0xcb, 0xcb, 0xcb, 0xca, 0xca, 0xca, 0xca, 0xca, 0xca, 0xca, 0xca, 0xca,
- 0xca, 0xca, 0xca, 0xca, 0xca, 0xca, 0xca, 0xc9, 0xc9, 0xc9, 0xc9, 0xc9,
- 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xc8,
- 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8,
- 0xc8, 0xc8, 0xc8, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7,
- 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6,
- 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc5,
- 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5,
- 0xc5, 0xc5, 0xc5, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4,
- 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3,
- 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc2,
- 0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc2,
- 0xc2, 0xc2, 0xc2, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1,
- 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0,
- 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xbf,
- 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf,
- 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf,
- 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe,
- 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe,
- 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe,
- 0xbe, 0xbe, 0xbe, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd,
- 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd,
- 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbc,
- 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc,
- 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc,
- 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb,
- 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb,
- 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb,
- 0xbb, 0xbb, 0xbb, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba,
- 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba,
- 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xb9,
- 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9,
- 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9,
- 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8,
- 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8,
- 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8,
- 0xb8, 0xb8, 0xb8, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7,
- 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7,
- 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb6,
- 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6,
- 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6,
- 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5,
- 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5,
- 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5,
- 0xb5, 0xb5, 0xb5, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4,
- 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4,
- 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb3,
- 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3,
- 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3,
- 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2,
- 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2,
- 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2,
- 0xb2, 0xb2, 0xb2, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1,
- 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1,
- 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb0,
- 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0,
- 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0,
- 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf,
- 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf,
- 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf,
- 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf,
- 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf,
- 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xae,
- 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae,
- 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae,
- 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae,
- 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae,
- 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae,
- 0xae, 0xae, 0xae, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad,
- 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad,
- 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad,
- 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad,
- 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad,
- 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xac, 0xac, 0xac, 0xac, 0xac,
- 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac,
- 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac,
- 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac,
- 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac,
- 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xab,
- 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab,
- 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab,
- 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab,
- 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab,
- 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab,
- 0xab, 0xab, 0xab, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
- 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
- 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
- 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
- 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
- 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9,
- 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9,
- 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9,
- 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9,
- 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9,
- 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa8,
- 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8,
- 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8,
- 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8,
- 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8,
- 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8,
- 0xa8, 0xa8, 0xa8, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7,
- 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7,
- 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7,
- 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7,
- 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7,
- 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6,
- 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6,
- 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6,
- 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6,
- 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6,
- 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa5,
- 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5,
- 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5,
- 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5,
- 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5,
- 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5,
- 0xa5, 0xa5, 0xa5, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4,
- 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4,
- 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4,
- 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4,
- 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4,
- 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3,
- 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3,
- 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3,
- 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3,
- 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3,
- 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa2,
- 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2,
- 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2,
- 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2,
- 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2,
- 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2,
- 0xa2, 0xa2, 0xa2, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1,
- 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1,
- 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1,
- 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1,
- 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1,
- 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0,
- 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0,
- 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0,
- 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0,
- 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0,
- 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0x9f,
- 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f,
- 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f,
- 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f,
- 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f,
- 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f,
- 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f,
- 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f,
- 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f,
- 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f,
- 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f,
- 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e,
- 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e,
- 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e,
- 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e,
- 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e,
- 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e,
- 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e,
- 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e,
- 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e,
- 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e,
- 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e,
- 0x9e, 0x9e, 0x9e, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d,
- 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d,
- 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d,
- 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d,
- 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d,
- 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d,
- 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d,
- 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d,
- 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d,
- 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d,
- 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9c,
- 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c,
- 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c,
- 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c,
- 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c,
- 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c,
- 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c,
- 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c,
- 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c,
- 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c,
- 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c,
- 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b,
- 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b,
- 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b,
- 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b,
- 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b,
- 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b,
- 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b,
- 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b,
- 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b,
- 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b,
- 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b,
- 0x9b, 0x9b, 0x9b, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a,
- 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a,
- 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a,
- 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a,
- 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a,
- 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a,
- 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a,
- 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a,
- 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a,
- 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a,
- 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x99,
- 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99,
- 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99,
- 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99,
- 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99,
- 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99,
- 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99,
- 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99,
- 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99,
- 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99,
- 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99,
- 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x98, 0x98, 0x98, 0x98, 0x98,
- 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98,
- 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98,
- 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98,
- 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98,
- 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98,
- 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98,
- 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98,
- 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98,
- 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98,
- 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98,
- 0x98, 0x98, 0x98, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97,
- 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97,
- 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97,
- 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97,
- 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97,
- 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97,
- 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97,
- 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97,
- 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97,
- 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97,
- 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x96,
- 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96,
- 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96,
- 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96,
- 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96,
- 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96,
- 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96,
- 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96,
- 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96,
- 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96,
- 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96,
- 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x95, 0x95, 0x95, 0x95, 0x95,
- 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95,
- 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95,
- 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95,
- 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95,
- 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95,
- 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95,
- 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95,
- 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95,
- 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95,
- 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95,
- 0x95, 0x95, 0x95, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94,
- 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94,
- 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94,
- 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94,
- 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94,
- 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94,
- 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94,
- 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94,
- 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94,
- 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94,
- 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x93,
- 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93,
- 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93,
- 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93,
- 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93,
- 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93,
- 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93,
- 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93,
- 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93,
- 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93,
- 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93,
- 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x92, 0x92, 0x92, 0x92, 0x92,
- 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92,
- 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92,
- 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92,
- 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92,
- 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92,
- 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92,
- 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92,
- 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92,
- 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92,
- 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92,
- 0x92, 0x92, 0x92, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91,
- 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91,
- 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91,
- 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91,
- 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91,
- 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91,
- 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91,
- 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91,
- 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91,
- 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91,
- 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x90,
- 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90,
- 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90,
- 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90,
- 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90,
- 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90,
- 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90,
- 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90,
- 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90,
- 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90,
- 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90,
- 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f,
- 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f,
- 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f,
- 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f,
- 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f,
- 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f,
- 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f,
- 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f,
- 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f,
- 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f,
- 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f,
- 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f,
- 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f,
- 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f,
- 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f,
- 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f,
- 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f,
- 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f,
- 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f,
- 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f,
- 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f,
- 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8e,
- 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e,
- 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e,
- 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e,
- 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e,
- 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e,
- 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e,
- 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e,
- 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e,
- 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e,
- 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e,
- 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e,
- 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e,
- 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e,
- 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e,
- 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e,
- 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e,
- 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e,
- 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e,
- 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e,
- 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e,
- 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e,
- 0x8e, 0x8e, 0x8e, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d,
- 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d,
- 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d,
- 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d,
- 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d,
- 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d,
- 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d,
- 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d,
- 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d,
- 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d,
- 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d,
- 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d,
- 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d,
- 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d,
- 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d,
- 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d,
- 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d,
- 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d,
- 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d,
- 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d,
- 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d,
- 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c,
- 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c,
- 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c,
- 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c,
- 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c,
- 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c,
- 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c,
- 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c,
- 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c,
- 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c,
- 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c,
- 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c,
- 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c,
- 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c,
- 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c,
- 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c,
- 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c,
- 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c,
- 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c,
- 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c,
- 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c,
- 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8b,
- 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b,
- 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b,
- 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b,
- 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b,
- 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b,
- 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b,
- 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b,
- 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b,
- 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b,
- 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b,
- 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b,
- 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b,
- 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b,
- 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b,
- 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b,
- 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b,
- 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b,
- 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b,
- 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b,
- 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b,
- 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b,
- 0x8b, 0x8b, 0x8b, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a,
- 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a,
- 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a,
- 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a,
- 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a,
- 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a,
- 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a,
- 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a,
- 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a,
- 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a,
- 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a,
- 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a,
- 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a,
- 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a,
- 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a,
- 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a,
- 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a,
- 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a,
- 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a,
- 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a,
- 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a,
- 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x89, 0x89, 0x89, 0x89, 0x89,
- 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89,
- 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89,
- 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89,
- 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89,
- 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89,
- 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89,
- 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89,
- 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89,
- 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89,
- 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89,
- 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89,
- 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89,
- 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89,
- 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89,
- 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89,
- 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89,
- 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89,
- 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89,
- 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89,
- 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89,
- 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x88,
- 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88,
- 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88,
- 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88,
- 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88,
- 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88,
- 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88,
- 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88,
- 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88,
- 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88,
- 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88,
- 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88,
- 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88,
- 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88,
- 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88,
- 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88,
- 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88,
- 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88,
- 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88,
- 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88,
- 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88,
- 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88,
- 0x88, 0x88, 0x88, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87,
- 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87,
- 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87,
- 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87,
- 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87,
- 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87,
- 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87,
- 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87,
- 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87,
- 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87,
- 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87,
- 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87,
- 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87,
- 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87,
- 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87,
- 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87,
- 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87,
- 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87,
- 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87,
- 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87,
- 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87,
- 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x86, 0x86, 0x86, 0x86, 0x86,
- 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86,
- 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86,
- 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86,
- 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86,
- 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86,
- 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86,
- 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86,
- 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86,
- 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86,
- 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86,
- 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86,
- 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86,
- 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86,
- 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86,
- 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86,
- 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86,
- 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86,
- 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86,
- 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86,
- 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86,
- 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x85,
- 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85,
- 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85,
- 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85,
- 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85,
- 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85,
- 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85,
- 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85,
- 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85,
- 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85,
- 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85,
- 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85,
- 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85,
- 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85,
- 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85,
- 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85,
- 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85,
- 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85,
- 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85,
- 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85,
- 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85,
- 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85,
- 0x85, 0x85, 0x85, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84,
- 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84,
- 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84,
- 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84,
- 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84,
- 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84,
- 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84,
- 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84,
- 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84,
- 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84,
- 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84,
- 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84,
- 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84,
- 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84,
- 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84,
- 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84,
- 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84,
- 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84,
- 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84,
- 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84,
- 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84,
- 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x83, 0x83, 0x83, 0x83, 0x83,
- 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83,
- 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83,
- 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83,
- 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83,
- 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83,
- 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83,
- 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83,
- 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83,
- 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83,
- 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83,
- 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83,
- 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83,
- 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83,
- 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83,
- 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83,
- 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83,
- 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83,
- 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83,
- 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83,
- 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83,
- 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x82,
- 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82,
- 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82,
- 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82,
- 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82,
- 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82,
- 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82,
- 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82,
- 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82,
- 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82,
- 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82,
- 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82,
- 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82,
- 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82,
- 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82,
- 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82,
- 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82,
- 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82,
- 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82,
- 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82,
- 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82,
- 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82,
- 0x82, 0x82, 0x82, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81,
- 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81,
- 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81,
- 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81,
- 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81,
- 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81,
- 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81,
- 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81,
- 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81,
- 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81,
- 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81,
- 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81,
- 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81,
- 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81,
- 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81,
- 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81,
- 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81,
- 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81,
- 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81,
- 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81,
- 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81,
- 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80,
- 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
- 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
- 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
- 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
- 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
- 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
- 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
- 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
- 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
- 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
- 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
- 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
- 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
- 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
- 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
- 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
- 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
- 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
- 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
- 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
- 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
- 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
- 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
- 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00
-} ;
-
-static inline void
-ulaw2s_array (unsigned char *buffer, int count, short *ptr)
-{ while (--count >= 0)
- ptr [count] = ulaw_decode [(int) buffer [count]] ;
-} /* ulaw2s_array */
-
-static inline void
-ulaw2i_array (unsigned char *buffer, int count, int *ptr)
-{ while (--count >= 0)
- ptr [count] = ulaw_decode [buffer [count]] << 16 ;
-} /* ulaw2i_array */
-
-static inline void
-ulaw2f_array (unsigned char *buffer, int count, float *ptr, float normfact)
-{ while (--count >= 0)
- ptr [count] = normfact * ulaw_decode [(int) buffer [count]] ;
-} /* ulaw2f_array */
-
-static inline void
-ulaw2d_array (const unsigned char *buffer, int count, double *ptr, double normfact)
-{ while (--count >= 0)
- ptr [count] = normfact * ulaw_decode [(int) buffer [count]] ;
-} /* ulaw2d_array */
-
-static inline void
-s2ulaw_array (const short *ptr, int count, unsigned char *buffer)
-{ while (--count >= 0)
- { if (ptr [count] >= 0)
- buffer [count] = ulaw_encode [ptr [count] / 4] ;
- else
- buffer [count] = 0x7F & ulaw_encode [ptr [count] / -4] ;
- } ;
-} /* s2ulaw_array */
-
-static inline void
-i2ulaw_array (const int *ptr, int count, unsigned char *buffer)
-{ while (--count >= 0)
- { if (ptr [count] >= 0)
- buffer [count] = ulaw_encode [ptr [count] >> (16 + 2)] ;
- else
- buffer [count] = 0x7F & ulaw_encode [-ptr [count] >> (16 + 2)] ;
- } ;
-} /* i2ulaw_array */
-
-static inline void
-f2ulaw_array (const float *ptr, int count, unsigned char *buffer, float normfact)
-{ while (--count >= 0)
- { if (ptr [count] >= 0)
- buffer [count] = ulaw_encode [lrintf (normfact * ptr [count])] ;
- else
- buffer [count] = 0x7F & ulaw_encode [- lrintf (normfact * ptr [count])] ;
- } ;
-} /* f2ulaw_array */
-
-static inline void
-d2ulaw_array (const double *ptr, int count, unsigned char *buffer, double normfact)
-{ while (--count >= 0)
- { if (ptr [count] >= 0)
- buffer [count] = ulaw_encode [lrint (normfact * ptr [count])] ;
- else
- buffer [count] = 0x7F & ulaw_encode [- lrint (normfact * ptr [count])] ;
- } ;
-} /* d2ulaw_array */
-
-/*==============================================================================
-*/
-
-static sf_count_t
-ulaw_read_ulaw2s (SF_PRIVATE *psf, short *ptr, sf_count_t len)
-{ int bufferlen, readcount ;
- sf_count_t total = 0 ;
-
- bufferlen = ARRAY_LEN (psf->u.ucbuf) ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- readcount = psf_fread (psf->u.ucbuf, 1, bufferlen, psf) ;
- ulaw2s_array (psf->u.ucbuf, readcount, ptr + total) ;
- total += readcount ;
- if (readcount < bufferlen)
- break ;
- len -= readcount ;
- } ;
-
- return total ;
-} /* ulaw_read_ulaw2s */
-
-static sf_count_t
-ulaw_read_ulaw2i (SF_PRIVATE *psf, int *ptr, sf_count_t len)
-{ int bufferlen, readcount ;
- sf_count_t total = 0 ;
-
- bufferlen = ARRAY_LEN (psf->u.ucbuf) ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- readcount = psf_fread (psf->u.ucbuf, 1, bufferlen, psf) ;
- ulaw2i_array (psf->u.ucbuf, readcount, ptr + total) ;
- total += readcount ;
- if (readcount < bufferlen)
- break ;
- len -= readcount ;
- } ;
-
- return total ;
-} /* ulaw_read_ulaw2i */
-
-static sf_count_t
-ulaw_read_ulaw2f (SF_PRIVATE *psf, float *ptr, sf_count_t len)
-{ int bufferlen, readcount ;
- sf_count_t total = 0 ;
- float normfact ;
-
- normfact = (psf->norm_float == SF_TRUE) ? 1.0 / ((float) 0x8000) : 1.0 ;
-
- bufferlen = ARRAY_LEN (psf->u.ucbuf) ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- readcount = psf_fread (psf->u.ucbuf, 1, bufferlen, psf) ;
- ulaw2f_array (psf->u.ucbuf, readcount, ptr + total, normfact) ;
- total += readcount ;
- if (readcount < bufferlen)
- break ;
- len -= readcount ;
- } ;
-
- return total ;
-} /* ulaw_read_ulaw2f */
-
-static sf_count_t
-ulaw_read_ulaw2d (SF_PRIVATE *psf, double *ptr, sf_count_t len)
-{ int bufferlen, readcount ;
- sf_count_t total = 0 ;
- double normfact ;
-
- normfact = (psf->norm_double) ? 1.0 / ((double) 0x8000) : 1.0 ;
- bufferlen = ARRAY_LEN (psf->u.ucbuf) ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- readcount = psf_fread (psf->u.ucbuf, 1, bufferlen, psf) ;
- ulaw2d_array (psf->u.ucbuf, readcount, ptr + total, normfact) ;
- total += readcount ;
- if (readcount < bufferlen)
- break ;
- len -= readcount ;
- } ;
-
- return total ;
-} /* ulaw_read_ulaw2d */
-
-/*=============================================================================================
-*/
-
-static sf_count_t
-ulaw_write_s2ulaw (SF_PRIVATE *psf, const short *ptr, sf_count_t len)
-{ int bufferlen, writecount ;
- sf_count_t total = 0 ;
-
- bufferlen = ARRAY_LEN (psf->u.ucbuf) ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- s2ulaw_array (ptr + total, bufferlen, psf->u.ucbuf) ;
- writecount = psf_fwrite (psf->u.ucbuf, 1, bufferlen, psf) ;
- total += writecount ;
- if (writecount < bufferlen)
- break ;
- len -= writecount ;
- } ;
-
- return total ;
-} /* ulaw_write_s2ulaw */
-
-static sf_count_t
-ulaw_write_i2ulaw (SF_PRIVATE *psf, const int *ptr, sf_count_t len)
-{ int bufferlen, writecount ;
- sf_count_t total = 0 ;
-
- bufferlen = ARRAY_LEN (psf->u.ucbuf) ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- i2ulaw_array (ptr + total, bufferlen, psf->u.ucbuf) ;
- writecount = psf_fwrite (psf->u.ucbuf, 1, bufferlen, psf) ;
- total += writecount ;
- if (writecount < bufferlen)
- break ;
- len -= writecount ;
- } ;
-
- return total ;
-} /* ulaw_write_i2ulaw */
-
-static sf_count_t
-ulaw_write_f2ulaw (SF_PRIVATE *psf, const float *ptr, sf_count_t len)
-{ int bufferlen, writecount ;
- sf_count_t total = 0 ;
- float normfact ;
-
- /* Factor in a divide by 4. */
- normfact = (psf->norm_float == SF_TRUE) ? (0.25 * 0x7FFF) : 0.25 ;
-
- bufferlen = ARRAY_LEN (psf->u.ucbuf) ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- f2ulaw_array (ptr + total, bufferlen, psf->u.ucbuf, normfact) ;
- writecount = psf_fwrite (psf->u.ucbuf, 1, bufferlen, psf) ;
- total += writecount ;
- if (writecount < bufferlen)
- break ;
- len -= writecount ;
- } ;
-
- return total ;
-} /* ulaw_write_f2ulaw */
-
-static sf_count_t
-ulaw_write_d2ulaw (SF_PRIVATE *psf, const double *ptr, sf_count_t len)
-{ int bufferlen, writecount ;
- sf_count_t total = 0 ;
- double normfact ;
-
- /* Factor in a divide by 4. */
- normfact = (psf->norm_double) ? (0.25 * 0x7FFF) : 0.25 ;
-
- bufferlen = ARRAY_LEN (psf->u.ucbuf) ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- d2ulaw_array (ptr + total, bufferlen, psf->u.ucbuf, normfact) ;
- writecount = psf_fwrite (psf->u.ucbuf, 1, bufferlen, psf) ;
- total += writecount ;
- if (writecount < bufferlen)
- break ;
- len -= writecount ;
- } ;
-
- return total ;
-} /* ulaw_write_d2ulaw */
-
-/*
-** Do not edit or modify anything in this comment block.
-** The arch-tag line is a file identity tag for the GNU Arch
-** revision control system.
-**
-** arch-tag: 655cc790-f058-45e8-89c9-86967cccc37e
-*/
diff --git a/libs/libsndfile/src/voc.c b/libs/libsndfile/src/voc.c
deleted file mode 100644
index e1388c4542..0000000000
--- a/libs/libsndfile/src/voc.c
+++ /dev/null
@@ -1,878 +0,0 @@
-/*
-** Copyright (C) 2001-2004 Erik de Castro Lopo <erikd@mega-nerd.com>
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU Lesser General Public License as published by
-** the Free Software Foundation; either version 2.1 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU Lesser General Public License for more details.
-**
-** You should have received a copy of the GNU Lesser General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-*/
-
-/* RANT:
-** The VOC file format is the most brain damaged format I have yet had to deal
-** with. No one programmer could have bee stupid enough to put this together.
-** Instead it looks like a series of manic, dyslexic assembly language programmers
-** hacked it to fit their needs.
-** Utterly woeful.
-*/
-
-#include "sfconfig.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "sndfile.h"
-#include "sfendian.h"
-#include "common.h"
-
-
-/*------------------------------------------------------------------------------
- * Typedefs for file chunks.
-*/
-
-#define VOC_MAX_SECTIONS 200
-
-enum
-{ VOC_TERMINATOR = 0,
- VOC_SOUND_DATA = 1,
- VOC_SOUND_CONTINUE = 2,
- VOC_SILENCE = 3,
- VOC_MARKER = 4,
- VOC_ASCII = 5,
- VOC_REPEAT = 6,
- VOC_END_REPEAT = 7,
- VOC_EXTENDED = 8,
- VOC_EXTENDED_II = 9
-} ;
-
-typedef struct
-{ int samples ;
- int offset ; /* Offset of zero => silence. */
-} SND_DATA_BLOCKS ;
-
-typedef struct
-{ unsigned int sections, section_types ;
- int samplerate, channels, bitwidth ;
- SND_DATA_BLOCKS blocks [VOC_MAX_SECTIONS] ;
-} VOC_DATA ;
-
-/*------------------------------------------------------------------------------
- * Private static functions.
-*/
-
-static int voc_close (SF_PRIVATE *psf) ;
-static int voc_write_header (SF_PRIVATE *psf, int calc_length) ;
-static int voc_read_header (SF_PRIVATE *psf) ;
-
-static const char* voc_encoding2str (int encoding) ;
-
-#if 0
-
-/* These functions would be required for files with more than one VOC_SOUND_DATA
-** segment. Not sure whether to bother implementing this.
-*/
-
-static int voc_multi_init (SF_PRIVATE *psf, VOC_DATA *pvoc) ;
-
-static int voc_multi_read_uc2s (SF_PRIVATE *psf, short *ptr, int len) ;
-static int voc_multi_read_les2s (SF_PRIVATE *psf, short *ptr, int len) ;
-
-static int voc_multi_read_uc2i (SF_PRIVATE *psf, int *ptr, int len) ;
-static int voc_multi_read_les2i (SF_PRIVATE *psf, int *ptr, int len) ;
-
-static int voc_multi_read_uc2f (SF_PRIVATE *psf, float *ptr, int len) ;
-static int voc_multi_read_les2f (SF_PRIVATE *psf, float *ptr, int len) ;
-
-static int voc_multi_read_uc2d (SF_PRIVATE *psf, double *ptr, int len) ;
-static int voc_multi_read_les2d (SF_PRIVATE *psf, double *ptr, int len) ;
-#endif
-
-/*------------------------------------------------------------------------------
-** Public function.
-*/
-
-int
-voc_open (SF_PRIVATE *psf)
-{ int subformat, error = 0 ;
-
- if (psf->is_pipe)
- return SFE_VOC_NO_PIPE ;
-
- if (psf->mode == SFM_READ || (psf->mode == SFM_RDWR && psf->filelength > 0))
- { if ((error = voc_read_header (psf)))
- return error ;
- } ;
-
- subformat = psf->sf.format & SF_FORMAT_SUBMASK ;
-
- if (psf->mode == SFM_WRITE || psf->mode == SFM_RDWR)
- { if ((psf->sf.format & SF_FORMAT_TYPEMASK) != SF_FORMAT_VOC)
- return SFE_BAD_OPEN_FORMAT ;
-
- psf->endian = SF_ENDIAN_LITTLE ;
-
- if ((error = voc_write_header (psf, SF_FALSE)))
- return error ;
-
- psf->write_header = voc_write_header ;
- } ;
-
- psf->blockwidth = psf->bytewidth * psf->sf.channels ;
-
- psf->container_close = voc_close ;
-
- switch (subformat)
- { case SF_FORMAT_PCM_U8 :
- case SF_FORMAT_PCM_16 :
- error = pcm_init (psf) ;
- break ;
-
- case SF_FORMAT_ALAW :
- error = alaw_init (psf) ;
- break ;
-
- case SF_FORMAT_ULAW :
- error = ulaw_init (psf) ;
- break ;
-
- default : return SFE_UNIMPLEMENTED ;
- } ;
-
- return error ;
-} /* voc_open */
-
-/*------------------------------------------------------------------------------
-*/
-
-static int
-voc_read_header (SF_PRIVATE *psf)
-{ VOC_DATA *pvoc ;
- char creative [20] ;
- unsigned char block_type, rate_byte ;
- short version, checksum, encoding, dataoffset ;
- int offset ;
-
- /* Set position to start of file to begin reading header. */
- offset = psf_binheader_readf (psf, "pb", 0, creative, SIGNED_SIZEOF (creative)) ;
-
- if (creative [sizeof (creative) - 1] != 0x1A)
- return SFE_VOC_NO_CREATIVE ;
-
- /* Terminate the string. */
- creative [sizeof (creative) - 1] = 0 ;
-
- if (strcmp ("Creative Voice File", creative))
- return SFE_VOC_NO_CREATIVE ;
-
- psf_log_printf (psf, "%s\n", creative) ;
-
- offset += psf_binheader_readf (psf, "e222", &dataoffset, &version, &checksum) ;
-
- psf->dataoffset = dataoffset ;
-
- psf_log_printf (psf, "dataoffset : %d\n"
- "version : 0x%X\n"
- "checksum : 0x%X\n", psf->dataoffset, version, checksum) ;
-
- if (version != 0x010A && version != 0x0114)
- return SFE_VOC_BAD_VERSION ;
-
- if (! (psf->fdata = malloc (sizeof (VOC_DATA))))
- return SFE_MALLOC_FAILED ;
-
- pvoc = (VOC_DATA*) psf->fdata ;
-
- memset (pvoc, 0, sizeof (VOC_DATA)) ;
-
- /* Set the default encoding now. */
- psf->sf.format = SF_FORMAT_VOC ; /* Major format */
- encoding = SF_FORMAT_PCM_U8 ; /* Minor format */
- psf->endian = SF_ENDIAN_LITTLE ;
-
- while (1)
- { offset += psf_binheader_readf (psf, "1", &block_type) ;
-
- switch (block_type)
- { case VOC_ASCII :
- { int size ;
-
- offset += psf_binheader_readf (psf, "e3", &size) ;
-
- psf_log_printf (psf, " ASCII : %d\n", size) ;
-
- offset += psf_binheader_readf (psf, "b", psf->header, size) ;
- psf->header [size] = 0 ;
- psf_log_printf (psf, " text : %s\n", psf->header) ;
- } ;
- continue ;
-
- case VOC_SOUND_DATA :
- case VOC_EXTENDED :
- case VOC_EXTENDED_II :
- break ;
-
- default : psf_log_printf (psf, "*** Weird block marker (%d)\n", block_type) ;
- } ;
-
- break ;
- } ;
-
- if (block_type == VOC_SOUND_DATA)
- { unsigned char compression ;
- int size ;
-
- offset += psf_binheader_readf (psf, "e311", &size, &rate_byte, &compression) ;
-
- psf->sf.samplerate = 1000000 / (256 - (rate_byte & 0xFF)) ;
-
- psf_log_printf (psf, " Sound Data : %d\n sr : %d => %dHz\n comp : %d\n",
- size, rate_byte, psf->sf.samplerate, compression) ;
-
- if (offset + size - 1 > psf->filelength)
- { psf_log_printf (psf, "Seems to be a truncated file.\n") ;
- psf_log_printf (psf, "offset: %d size: %d sum: %d filelength: %D\n", offset, size, offset + size, psf->filelength) ;
- return SFE_VOC_BAD_SECTIONS ;
- }
- else if (offset + size - 1 < psf->filelength)
- { psf_log_printf (psf, "Seems to be a multi-segment file (#1).\n") ;
- psf_log_printf (psf, "offset: %d size: %d sum: %d filelength: %D\n", offset, size, offset + size, psf->filelength) ;
- return SFE_VOC_BAD_SECTIONS ;
- } ;
-
- psf->dataoffset = offset ;
- psf->dataend = psf->filelength - 1 ;
-
- psf->sf.channels = 1 ;
- psf->bytewidth = 1 ;
-
- psf->sf.format = SF_FORMAT_VOC | SF_FORMAT_PCM_U8 ;
-
- return 0 ;
- } ;
-
- if (block_type == VOC_EXTENDED)
- { unsigned char pack, stereo, compression ;
- unsigned short rate_short ;
- int size ;
-
- offset += psf_binheader_readf (psf, "e3211", &size, &rate_short, &pack, &stereo) ;
-
- psf_log_printf (psf, " Extended : %d\n", size) ;
- if (size == 4)
- psf_log_printf (psf, " size : 4\n") ;
- else
- psf_log_printf (psf, " size : %d (should be 4)\n", size) ;
-
- psf_log_printf (psf, " pack : %d\n"
- " stereo : %s\n", pack, (stereo ? "yes" : "no")) ;
-
- if (stereo)
- { psf->sf.channels = 2 ;
- psf->sf.samplerate = 128000000 / (65536 - rate_short) ;
- }
- else
- { psf->sf.channels = 1 ;
- psf->sf.samplerate = 256000000 / (65536 - rate_short) ;
- } ;
-
- psf_log_printf (psf, " sr : %d => %dHz\n", (rate_short & 0xFFFF), psf->sf.samplerate) ;
-
- offset += psf_binheader_readf (psf, "1", &block_type) ;
-
- if (block_type != VOC_SOUND_DATA)
- { psf_log_printf (psf, "*** Expecting VOC_SOUND_DATA section.\n") ;
- return SFE_VOC_BAD_FORMAT ;
- } ;
-
- offset += psf_binheader_readf (psf, "e311", &size, &rate_byte, &compression) ;
-
- psf_log_printf (psf, " Sound Data : %d\n"
- " sr : %d\n"
- " comp : %d\n", size, rate_byte, compression) ;
-
-
- if (offset + size - 1 > psf->filelength)
- { psf_log_printf (psf, "Seems to be a truncated file.\n") ;
- psf_log_printf (psf, "offset: %d size: %d sum: %d filelength: %D\n", offset, size, offset + size, psf->filelength) ;
- return SFE_VOC_BAD_SECTIONS ;
- }
- else if (offset + size - 1 < psf->filelength)
- { psf_log_printf (psf, "Seems to be a multi-segment file (#2).\n") ;
- psf_log_printf (psf, "offset: %d size: %d sum: %d filelength: %D\n", offset, size, offset + size, psf->filelength) ;
- return SFE_VOC_BAD_SECTIONS ;
- } ;
-
- psf->dataoffset = offset ;
- psf->dataend = psf->filelength - 1 ;
-
- psf->bytewidth = 1 ;
-
- psf->sf.format = SF_FORMAT_VOC | SF_FORMAT_PCM_U8 ;
-
- return 0 ;
- }
-
- if (block_type == VOC_EXTENDED_II)
- { unsigned char bitwidth, channels ;
- int size, fourbytes ;
-
- offset += psf_binheader_readf (psf, "e341124", &size, &psf->sf.samplerate,
- &bitwidth, &channels, &encoding, &fourbytes) ;
-
- if (size * 2 == psf->filelength - 39)
- { int temp_size = psf->filelength - 31 ;
-
- psf_log_printf (psf, " Extended II : %d (SoX bug: should be %d)\n", size, temp_size) ;
- size = temp_size ;
- }
- else
- psf_log_printf (psf, " Extended II : %d\n", size) ;
-
- psf_log_printf (psf, " sample rate : %d\n"
- " bit width : %d\n"
- " channels : %d\n", psf->sf.samplerate, bitwidth, channels) ;
-
- if (bitwidth == 16 && encoding == 0)
- { encoding = 4 ;
- psf_log_printf (psf, " encoding : 0 (SoX bug: should be 4 for 16 bit signed PCM)\n") ;
- }
- else
- psf_log_printf (psf, " encoding : %d => %s\n", encoding, voc_encoding2str (encoding)) ;
-
-
- psf_log_printf (psf, " fourbytes : %X\n", fourbytes) ;
-
- psf->sf.channels = channels ;
-
- psf->dataoffset = offset ;
- psf->dataend = psf->filelength - 1 ;
-
- if (size + 31 == psf->filelength + 1)
- { /* Hack for reading files produced using
- ** sf_command (SFC_UPDATE_HEADER_NOW).
- */
- psf_log_printf (psf, "Missing zero byte at end of file.\n") ;
- size = psf->filelength - 30 ;
- psf->dataend = 0 ;
- }
- else if (size + 31 > psf->filelength)
- { psf_log_printf (psf, "Seems to be a truncated file.\n") ;
- size = psf->filelength - 31 ;
- }
- else if (size + 31 < psf->filelength)
- psf_log_printf (psf, "Seems to be a multi-segment file (#3).\n") ;
-
- switch (encoding)
- { case 0 :
- psf->sf.format = SF_FORMAT_VOC | SF_FORMAT_PCM_U8 ;
- psf->bytewidth = 1 ;
- break ;
-
- case 4 :
- psf->sf.format = SF_FORMAT_VOC | SF_FORMAT_PCM_16 ;
- psf->bytewidth = 2 ;
- break ;
-
- case 6 :
- psf->sf.format = SF_FORMAT_VOC | SF_FORMAT_ALAW ;
- psf->bytewidth = 1 ;
- break ;
-
- case 7 :
- psf->sf.format = SF_FORMAT_VOC | SF_FORMAT_ULAW ;
- psf->bytewidth = 1 ;
- break ;
-
- default : /* Unknown */
- return SFE_UNKNOWN_FORMAT ;
- break ;
- } ;
-
- } ;
-
- return 0 ;
-} /* voc_read_header */
-
-/*====================================================================================
-*/
-
-static int
-voc_write_header (SF_PRIVATE *psf, int calc_length)
-{ sf_count_t current ;
- int rate_const, subformat ;
-
- current = psf_ftell (psf) ;
-
- if (calc_length)
- { psf->filelength = psf_get_filelen (psf) ;
-
- psf->datalength = psf->filelength - psf->dataoffset ;
- if (psf->dataend)
- psf->datalength -= psf->filelength - psf->dataend ;
-
- psf->sf.frames = psf->datalength / (psf->bytewidth * psf->sf.channels) ;
- } ;
-
- subformat = psf->sf.format & SF_FORMAT_SUBMASK ;
- /* Reset the current header length to zero. */
- psf->header [0] = 0 ;
- psf->headindex = 0 ;
- psf_fseek (psf, 0, SEEK_SET) ;
-
- /* VOC marker and 0x1A byte. */
- psf_binheader_writef (psf, "eb1", "Creative Voice File", 19, 0x1A) ;
-
- /* Data offset, version and other. */
- psf_binheader_writef (psf, "e222", 26, 0x0114, 0x111F) ;
-
- /* Use same logic as SOX.
- ** If the file is mono 8 bit data, use VOC_SOUND_DATA.
- ** If the file is mono 16 bit data, use VOC_EXTENED.
- ** Otherwise use VOC_EXTENED_2.
- */
-
- if (subformat == SF_FORMAT_PCM_U8 && psf->sf.channels == 1)
- { /* samplerate = 1000000 / (256 - rate_const) ; */
- rate_const = 256 - 1000000 / psf->sf.samplerate ;
-
- /* First type marker, length, rate_const and compression */
- psf_binheader_writef (psf, "e1311", VOC_SOUND_DATA, (int) (psf->datalength + 1), rate_const, 0) ;
- }
- else if (subformat == SF_FORMAT_PCM_U8 && psf->sf.channels == 2)
- { /* sample_rate = 128000000 / (65536 - rate_short) ; */
- rate_const = 65536 - 128000000 / psf->sf.samplerate ;
-
- /* First write the VOC_EXTENDED section
- ** marker, length, rate_const and compression
- */
- psf_binheader_writef (psf, "e13211", VOC_EXTENDED, 4, rate_const, 0, 1) ;
-
- /* samplerate = 1000000 / (256 - rate_const) ; */
- rate_const = 256 - 1000000 / psf->sf.samplerate ;
-
- /* Now write the VOC_SOUND_DATA section
- ** marker, length, rate_const and compression
- */
- psf_binheader_writef (psf, "e1311", VOC_SOUND_DATA, (int) (psf->datalength + 1), rate_const, 0) ;
- }
- else
- { int length ;
-
- if (psf->sf.channels < 1 || psf->sf.channels > 2)
- return SFE_CHANNEL_COUNT ;
-
- switch (subformat)
- { case SF_FORMAT_PCM_U8 :
- psf->bytewidth = 1 ;
- length = psf->sf.frames * psf->sf.channels * psf->bytewidth + 12 ;
- /* Marker, length, sample rate, bitwidth, stereo flag, encoding and fourt zero bytes. */
- psf_binheader_writef (psf, "e1341124", VOC_EXTENDED_II, length, psf->sf.samplerate, 16, psf->sf.channels, 4, 0) ;
- break ;
-
- case SF_FORMAT_PCM_16 :
- psf->bytewidth = 2 ;
- length = psf->sf.frames * psf->sf.channels * psf->bytewidth + 12 ;
- /* Marker, length, sample rate, bitwidth, stereo flag, encoding and fourt zero bytes. */
- psf_binheader_writef (psf, "e1341124", VOC_EXTENDED_II, length, psf->sf.samplerate, 16, psf->sf.channels, 4, 0) ;
- break ;
-
- case SF_FORMAT_ALAW :
- psf->bytewidth = 1 ;
- length = psf->sf.frames * psf->sf.channels * psf->bytewidth + 12 ;
- psf_binheader_writef (psf, "e1341124", VOC_EXTENDED_II, length, psf->sf.samplerate, 8, psf->sf.channels, 6, 0) ;
- break ;
-
- case SF_FORMAT_ULAW :
- psf->bytewidth = 1 ;
- length = psf->sf.frames * psf->sf.channels * psf->bytewidth + 12 ;
- psf_binheader_writef (psf, "e1341124", VOC_EXTENDED_II, length, psf->sf.samplerate, 8, psf->sf.channels, 7, 0) ;
- break ;
-
- default : return SFE_UNIMPLEMENTED ;
- } ;
- } ;
-
- psf_fwrite (psf->header, psf->headindex, 1, psf) ;
-
- if (psf->error)
- return psf->error ;
-
- psf->dataoffset = psf->headindex ;
-
- if (current > 0)
- psf_fseek (psf, current, SEEK_SET) ;
-
- return psf->error ;
-} /* voc_write_header */
-
-static int
-voc_close (SF_PRIVATE *psf)
-{
- if (psf->mode == SFM_WRITE || psf->mode == SFM_RDWR)
- { /* Now we know for certain the length of the file we can re-write
- ** correct values for the FORM, 8SVX and BODY chunks.
- */
- unsigned byte = VOC_TERMINATOR ;
-
-
- psf_fseek (psf, 0, SEEK_END) ;
-
- /* Write terminator */
- psf_fwrite (&byte, 1, 1, psf) ;
-
- voc_write_header (psf, SF_TRUE) ;
- } ;
-
- return 0 ;
-} /* voc_close */
-
-static const char*
-voc_encoding2str (int encoding)
-{
- switch (encoding)
- { case 0 : return "8 bit unsigned PCM" ;
- case 4 : return "16 bit signed PCM" ;
- case 6 : return "A-law" ;
- case 7 : return "u-law" ;
- default : break ;
- }
- return "*** Unknown ***" ;
-} /* voc_encoding2str */
-
-/*====================================================================================
-*/
-
-#if 0
-static int
-voc_multi_init (SF_PRIVATE *psf, VOC_DATA *pvoc)
-{
- psf->sf.frames = 0 ;
-
- if (pvoc->bitwidth == 8)
- { psf->read_short = voc_multi_read_uc2s ;
- psf->read_int = voc_multi_read_uc2i ;
- psf->read_float = voc_multi_read_uc2f ;
- psf->read_double = voc_multi_read_uc2d ;
- return 0 ;
- } ;
-
- if (pvoc->bitwidth == 16)
- { psf->read_short = voc_multi_read_les2s ;
- psf->read_int = voc_multi_read_les2i ;
- psf->read_float = voc_multi_read_les2f ;
- psf->read_double = voc_multi_read_les2d ;
- return 0 ;
- } ;
-
- psf_log_printf (psf, "Error : bitwith != 8 && bitwidth != 16.\n") ;
-
- return SFE_UNIMPLEMENTED ;
-} /* voc_multi_read_int */
-
-/*------------------------------------------------------------------------------------
-*/
-
-static int
-voc_multi_read_uc2s (SF_PRIVATE *psf, short *ptr, int len)
-{
-
- return 0 ;
-} /* voc_multi_read_uc2s */
-
-static int
-voc_multi_read_les2s (SF_PRIVATE *psf, short *ptr, int len)
-{
-
- return 0 ;
-} /* voc_multi_read_les2s */
-
-
-static int
-voc_multi_read_uc2i (SF_PRIVATE *psf, int *ptr, int len)
-{
-
- return 0 ;
-} /* voc_multi_read_uc2i */
-
-static int
-voc_multi_read_les2i (SF_PRIVATE *psf, int *ptr, int len)
-{
-
- return 0 ;
-} /* voc_multi_read_les2i */
-
-
-static int
-voc_multi_read_uc2f (SF_PRIVATE *psf, float *ptr, int len)
-{
-
- return 0 ;
-} /* voc_multi_read_uc2f */
-
-static int
-voc_multi_read_les2f (SF_PRIVATE *psf, float *ptr, int len)
-{
-
- return 0 ;
-} /* voc_multi_read_les2f */
-
-
-static int
-voc_multi_read_uc2d (SF_PRIVATE *psf, double *ptr, int len)
-{
-
- return 0 ;
-} /* voc_multi_read_uc2d */
-
-static int
-voc_multi_read_les2d (SF_PRIVATE *psf, double *ptr, int len)
-{
-
- return 0 ;
-} /* voc_multi_read_les2d */
-
-#endif
-
-/*------------------------------------------------------------------------------------
-
-Creative Voice (VOC) file format
---------------------------------
-
-~From: galt@dsd.es.com
-
-(byte numbers are hex!)
-
- HEADER (bytes 00-19)
- Series of DATA BLOCKS (bytes 1A+) [Must end w/ Terminator Block]
-
-- ---------------------------------------------------------------
-
-HEADER:
-=======
- byte # Description
- ------ ------------------------------------------
- 00-12 "Creative Voice File"
- 13 1A (eof to abort printing of file)
- 14-15 Offset of first datablock in .voc file (std 1A 00
- in Intel Notation)
- 16-17 Version number (minor,major) (VOC-HDR puts 0A 01)
- 18-19 1's Comp of Ver. # + 1234h (VOC-HDR puts 29 11)
-
-- ---------------------------------------------------------------
-
-DATA BLOCK:
-===========
-
- Data Block: TYPE(1-byte), SIZE(3-bytes), INFO(0+ bytes)
- NOTE: Terminator Block is an exception -- it has only the TYPE byte.
-
- TYPE Description Size (3-byte int) Info
- ---- ----------- ----------------- -----------------------
- 00 Terminator (NONE) (NONE)
- 01 Sound data 2+length of data *
- 02 Sound continue length of data Voice Data
- 03 Silence 3 **
- 04 Marker 2 Marker# (2 bytes)
- 05 ASCII length of string null terminated string
- 06 Repeat 2 Count# (2 bytes)
- 07 End repeat 0 (NONE)
- 08 Extended 4 ***
-
- *Sound Info Format:
- ---------------------
- 00 Sample Rate
- 01 Compression Type
- 02+ Voice Data
-
- **Silence Info Format:
- ----------------------------
- 00-01 Length of silence - 1
- 02 Sample Rate
-
-
- ***Extended Info Format:
- ---------------------
- 00-01 Time Constant: Mono: 65536 - (256000000/sample_rate)
- Stereo: 65536 - (25600000/(2*sample_rate))
- 02 Pack
- 03 Mode: 0 = mono
- 1 = stereo
-
-
- Marker# -- Driver keeps the most recent marker in a status byte
- Count# -- Number of repetitions + 1
- Count# may be 1 to FFFE for 0 - FFFD repetitions
- or FFFF for endless repetitions
- Sample Rate -- SR byte = 256-(1000000/sample_rate)
- Length of silence -- in units of sampling cycle
- Compression Type -- of voice data
- 8-bits = 0
- 4-bits = 1
- 2.6-bits = 2
- 2-bits = 3
- Multi DAC = 3+(# of channels) [interesting--
- this isn't in the developer's manual]
-
-
----------------------------------------------------------------------------------
-Addendum submitted by Votis Kokavessis:
-
-After some experimenting with .VOC files I found out that there is a Data Block
-Type 9, which is not covered in the VOC.TXT file. Here is what I was able to discover
-about this block type:
-
-
-TYPE: 09
-SIZE: 12 + length of data
-INFO: 12 (twelve) bytes
-
-INFO STRUCTURE:
-
-Bytes 0-1: (Word) Sample Rate (e.g. 44100)
-Bytes 2-3: zero (could be that bytes 0-3 are a DWord for Sample Rate)
-Byte 4: Sample Size in bits (e.g. 16)
-Byte 5: Number of channels (e.g. 1 for mono, 2 for stereo)
-Byte 6: Unknown (equal to 4 in all files I examined)
-Bytes 7-11: zero
-
-
--------------------------------------------------------------------------------------*/
-
-/*=====================================================================================
-**=====================================================================================
-**=====================================================================================
-**=====================================================================================
-*/
-
-/*------------------------------------------------------------------------
-The following is taken from the Audio File Formats FAQ dated 2-Jan-1995
-and submitted by Guido van Rossum <guido@cwi.nl>.
---------------------------------------------------------------------------
-Creative Voice (VOC) file format
---------------------------------
-
-From: galt@dsd.es.com
-
-(byte numbers are hex!)
-
- HEADER (bytes 00-19)
- Series of DATA BLOCKS (bytes 1A+) [Must end w/ Terminator Block]
-
-- ---------------------------------------------------------------
-
-HEADER:
--------
- byte # Description
- ------ ------------------------------------------
- 00-12 "Creative Voice File"
- 13 1A (eof to abort printing of file)
- 14-15 Offset of first datablock in .voc file (std 1A 00
- in Intel Notation)
- 16-17 Version number (minor,major) (VOC-HDR puts 0A 01)
- 18-19 2's Comp of Ver. # + 1234h (VOC-HDR puts 29 11)
-
-- ---------------------------------------------------------------
-
-DATA BLOCK:
------------
-
- Data Block: TYPE(1-byte), SIZE(3-bytes), INFO(0+ bytes)
- NOTE: Terminator Block is an exception -- it has only the TYPE byte.
-
- TYPE Description Size (3-byte int) Info
- ---- ----------- ----------------- -----------------------
- 00 Terminator (NONE) (NONE)
- 01 Sound data 2+length of data *
- 02 Sound continue length of data Voice Data
- 03 Silence 3 **
- 04 Marker 2 Marker# (2 bytes)
- 05 ASCII length of string null terminated string
- 06 Repeat 2 Count# (2 bytes)
- 07 End repeat 0 (NONE)
- 08 Extended 4 ***
-
- *Sound Info Format: **Silence Info Format:
- --------------------- ----------------------------
- 00 Sample Rate 00-01 Length of silence - 1
- 01 Compression Type 02 Sample Rate
- 02+ Voice Data
-
- ***Extended Info Format:
- ---------------------
- 00-01 Time Constant: Mono: 65536 - (256000000/sample_rate)
- Stereo: 65536 - (25600000/(2*sample_rate))
- 02 Pack
- 03 Mode: 0 = mono
- 1 = stereo
-
-
- Marker# -- Driver keeps the most recent marker in a status byte
- Count# -- Number of repetitions + 1
- Count# may be 1 to FFFE for 0 - FFFD repetitions
- or FFFF for endless repetitions
- Sample Rate -- SR byte = 256-(1000000/sample_rate)
- Length of silence -- in units of sampling cycle
- Compression Type -- of voice data
- 8-bits = 0
- 4-bits = 1
- 2.6-bits = 2
- 2-bits = 3
- Multi DAC = 3+(# of channels) [interesting--
- this isn't in the developer's manual]
-
-Detailed description of new data blocks (VOC files version 1.20 and above):
-
- (Source is fax from Barry Boone at Creative Labs, 405/742-6622)
-
-BLOCK 8 - digitized sound attribute extension, must preceed block 1.
- Used to define stereo, 8 bit audio
- BYTE bBlockID; // = 8
- BYTE nBlockLen[3]; // 3 byte length
- WORD wTimeConstant; // time constant = same as block 1
- BYTE bPackMethod; // same as in block 1
- BYTE bVoiceMode; // 0-mono, 1-stereo
-
- Data is stored left, right
-
-BLOCK 9 - data block that supersedes blocks 1 and 8.
- Used for stereo, 16 bit.
-
- BYTE bBlockID; // = 9
- BYTE nBlockLen[3]; // length 12 plus length of sound
- DWORD dwSamplesPerSec; // samples per second, not time const.
- BYTE bBitsPerSample; // e.g., 8 or 16
- BYTE bChannels; // 1 for mono, 2 for stereo
- WORD wFormat; // see below
- BYTE reserved[4]; // pad to make block w/o data
- // have a size of 16 bytes
-
- Valid values of wFormat are:
-
- 0x0000 8-bit unsigned PCM
- 0x0001 Creative 8-bit to 4-bit ADPCM
- 0x0002 Creative 8-bit to 3-bit ADPCM
- 0x0003 Creative 8-bit to 2-bit ADPCM
- 0x0004 16-bit signed PCM
- 0x0006 CCITT a-Law
- 0x0007 CCITT u-Law
- 0x02000 Creative 16-bit to 4-bit ADPCM
-
- Data is stored left, right
-
-------------------------------------------------------------------------*/
-/*
-** Do not edit or modify anything in this comment block.
-** The arch-tag line is a file identity tag for the GNU Arch
-** revision control system.
-**
-** arch-tag: 40a50167-a81c-463a-9e1d-3282ff84e09d
-*/
diff --git a/libs/libsndfile/src/vox_adpcm.c b/libs/libsndfile/src/vox_adpcm.c
deleted file mode 100644
index f743a72911..0000000000
--- a/libs/libsndfile/src/vox_adpcm.c
+++ /dev/null
@@ -1,537 +0,0 @@
-/*
-** Copyright (C) 2002-2005 Erik de Castro Lopo <erikd@mega-nerd.com>
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU Lesser General Public License as published by
-** the Free Software Foundation; either version 2.1 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU Lesser General Public License for more details.
-**
-** You should have received a copy of the GNU Lesser General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-*/
-
-/*
-** This is the OKI / Dialogic ADPCM encoder/decoder. It converts from
-** 12 bit linear sample data to a 4 bit ADPCM.
-**
-** Implemented from the description found here:
-**
-** http://www.comptek.ru:8100/telephony/tnotes/tt1-13.html
-**
-** and compared against the encoder/decoder found here:
-**
-** http://ibiblio.org/pub/linux/apps/sound/convert/vox.tar.gz
-*/
-
-#include "sfconfig.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "sndfile.h"
-#include "sfendian.h"
-#include "float_cast.h"
-#include "common.h"
-
-#define VOX_DATA_LEN 2048
-#define PCM_DATA_LEN (VOX_DATA_LEN *2)
-
-typedef struct
-{ short last ;
- short step_index ;
-
- int vox_bytes, pcm_samples ;
-
- unsigned char vox_data [VOX_DATA_LEN] ;
- short pcm_data [PCM_DATA_LEN] ;
-} VOX_ADPCM_PRIVATE ;
-
-static int vox_adpcm_encode_block (VOX_ADPCM_PRIVATE *pvox) ;
-static int vox_adpcm_decode_block (VOX_ADPCM_PRIVATE *pvox) ;
-
-static short vox_adpcm_decode (char code, VOX_ADPCM_PRIVATE *pvox) ;
-static char vox_adpcm_encode (short samp, VOX_ADPCM_PRIVATE *pvox) ;
-
-static sf_count_t vox_read_s (SF_PRIVATE *psf, short *ptr, sf_count_t len) ;
-static sf_count_t vox_read_i (SF_PRIVATE *psf, int *ptr, sf_count_t len) ;
-static sf_count_t vox_read_f (SF_PRIVATE *psf, float *ptr, sf_count_t len) ;
-static sf_count_t vox_read_d (SF_PRIVATE *psf, double *ptr, sf_count_t len) ;
-
-static sf_count_t vox_write_s (SF_PRIVATE *psf, const short *ptr, sf_count_t len) ;
-static sf_count_t vox_write_i (SF_PRIVATE *psf, const int *ptr, sf_count_t len) ;
-static sf_count_t vox_write_f (SF_PRIVATE *psf, const float *ptr, sf_count_t len) ;
-static sf_count_t vox_write_d (SF_PRIVATE *psf, const double *ptr, sf_count_t len) ;
-
-static int vox_read_block (SF_PRIVATE *psf, VOX_ADPCM_PRIVATE *pvox, short *ptr, int len) ;
-
-/*============================================================================================
-** Predefined OKI ADPCM encoder/decoder tables.
-*/
-
-static short step_size_table [49] =
-{ 16, 17, 19, 21, 23, 25, 28, 31, 34, 37, 41, 45, 50, 55, 60,
- 66, 73, 80, 88, 97, 107, 118, 130, 143, 157, 173, 190, 209,
- 230, 253, 279, 307, 337, 371, 408, 449, 494, 544, 598, 658,
- 724, 796, 876, 963, 1060, 1166, 1282, 1408, 1552
-} ; /* step_size_table */
-
-static short step_adjust_table [8] =
-{ -1, -1, -1, -1, 2, 4, 6, 8
-} ; /* step_adjust_table */
-
-/*------------------------------------------------------------------------------
-*/
-
-int
-vox_adpcm_init (SF_PRIVATE *psf)
-{ VOX_ADPCM_PRIVATE *pvox = NULL ;
-
- if (psf->mode == SFM_RDWR)
- return SFE_BAD_MODE_RW ;
-
- if (psf->mode == SFM_WRITE && psf->sf.channels != 1)
- return SFE_CHANNEL_COUNT ;
-
- if ((pvox = malloc (sizeof (VOX_ADPCM_PRIVATE))) == NULL)
- return SFE_MALLOC_FAILED ;
-
- psf->fdata = (void*) pvox ;
- memset (pvox, 0, sizeof (VOX_ADPCM_PRIVATE)) ;
-
- if (psf->mode == SFM_WRITE)
- { psf->write_short = vox_write_s ;
- psf->write_int = vox_write_i ;
- psf->write_float = vox_write_f ;
- psf->write_double = vox_write_d ;
- }
- else
- { psf_log_printf (psf, "Header-less OKI Dialogic ADPCM encoded file.\n") ;
- psf_log_printf (psf, "Setting up for 8kHz, mono, Vox ADPCM.\n") ;
-
- psf->read_short = vox_read_s ;
- psf->read_int = vox_read_i ;
- psf->read_float = vox_read_f ;
- psf->read_double = vox_read_d ;
- } ;
-
- /* Standard sample rate chennels etc. */
- if (psf->sf.samplerate < 1)
- psf->sf.samplerate = 8000 ;
- psf->sf.channels = 1 ;
-
- psf->sf.frames = psf->filelength * 2 ;
-
- psf->sf.seekable = SF_FALSE ;
-
- /* Seek back to start of data. */
- if (psf_fseek (psf, 0 , SEEK_SET) == -1)
- return SFE_BAD_SEEK ;
-
- return 0 ;
-} /* vox_adpcm_init */
-
-/*------------------------------------------------------------------------------
-*/
-
-static char
-vox_adpcm_encode (short samp, VOX_ADPCM_PRIVATE *pvox)
-{ short code ;
- short diff, error, stepsize ;
-
- stepsize = step_size_table [pvox->step_index] ;
- code = 0 ;
-
- diff = samp - pvox->last ;
- if (diff < 0)
- { code = 0x08 ;
- error = -diff ;
- }
- else
- error = diff ;
-
- if (error >= stepsize)
- { code = code | 0x04 ;
- error -= stepsize ;
- } ;
-
- if (error >= stepsize / 2)
- { code = code | 0x02 ;
- error -= stepsize / 2 ;
- } ;
-
- if (error >= stepsize / 4)
- code = code | 0x01 ;
-
- /*
- ** To close the feedback loop, the deocder is used to set the
- ** estimate of last sample and in doing so, also set the step_index.
- */
- pvox->last = vox_adpcm_decode (code, pvox) ;
-
- return code ;
-} /* vox_adpcm_encode */
-
-static short
-vox_adpcm_decode (char code, VOX_ADPCM_PRIVATE *pvox)
-{ short diff, error, stepsize, samp ;
-
- stepsize = step_size_table [pvox->step_index] ;
-
- error = stepsize / 8 ;
-
- if (code & 0x01)
- error += stepsize / 4 ;
-
- if (code & 0x02)
- error += stepsize / 2 ;
-
- if (code & 0x04)
- error += stepsize ;
-
- diff = (code & 0x08) ? -error : error ;
- samp = pvox->last + diff ;
-
- /*
- ** Apply clipping.
- */
- if (samp > 2048)
- samp = 2048 ;
- if (samp < -2048)
- samp = -2048 ;
-
- pvox->last = samp ;
- pvox->step_index += step_adjust_table [code & 0x7] ;
-
- if (pvox->step_index < 0)
- pvox->step_index = 0 ;
- if (pvox->step_index > 48)
- pvox->step_index = 48 ;
-
- return samp ;
-} /* vox_adpcm_decode */
-
-static int
-vox_adpcm_encode_block (VOX_ADPCM_PRIVATE *pvox)
-{ unsigned char code ;
- int j, k ;
-
- /* If data_count is odd, add an extra zero valued sample. */
- if (pvox->pcm_samples & 1)
- pvox->pcm_data [pvox->pcm_samples++] = 0 ;
-
- for (j = k = 0 ; k < pvox->pcm_samples ; j++)
- { code = vox_adpcm_encode (pvox->pcm_data [k++] / 16, pvox) << 4 ;
- code |= vox_adpcm_encode (pvox->pcm_data [k++] / 16, pvox) ;
- pvox->vox_data [j] = code ;
- } ;
-
- pvox->vox_bytes = j ;
-
- return 0 ;
-} /* vox_adpcm_encode_block */
-
-static int
-vox_adpcm_decode_block (VOX_ADPCM_PRIVATE *pvox)
-{ unsigned char code ;
- int j, k ;
-
- for (j = k = 0 ; j < pvox->vox_bytes ; j++)
- { code = pvox->vox_data [j] ;
- pvox->pcm_data [k++] = 16 * vox_adpcm_decode ((code >> 4) & 0x0f, pvox) ;
- pvox->pcm_data [k++] = 16 * vox_adpcm_decode (code & 0x0f, pvox) ;
- } ;
-
- pvox->pcm_samples = k ;
-
- return 0 ;
-} /* vox_adpcm_decode_block */
-
-/*==============================================================================
-*/
-
-static int
-vox_read_block (SF_PRIVATE *psf, VOX_ADPCM_PRIVATE *pvox, short *ptr, int len)
-{ int indx = 0, k ;
-
- while (indx < len)
- { pvox->vox_bytes = (len - indx > PCM_DATA_LEN) ? VOX_DATA_LEN : (len - indx + 1) / 2 ;
-
- if ((k = psf_fread (pvox->vox_data, 1, pvox->vox_bytes, psf)) != pvox->vox_bytes)
- { if (psf_ftell (psf) + k != psf->filelength)
- psf_log_printf (psf, "*** Warning : short read (%d != %d).\n", k, pvox->vox_bytes) ;
- if (k == 0)
- break ;
- } ;
-
- pvox->vox_bytes = k ;
-
- vox_adpcm_decode_block (pvox) ;
-
- memcpy (&(ptr [indx]), pvox->pcm_data, pvox->pcm_samples * sizeof (short)) ;
- indx += pvox->pcm_samples ;
- } ;
-
- return indx ;
-} /* vox_read_block */
-
-
-static sf_count_t
-vox_read_s (SF_PRIVATE *psf, short *ptr, sf_count_t len)
-{ VOX_ADPCM_PRIVATE *pvox ;
- int readcount, count ;
- sf_count_t total = 0 ;
-
- if (! psf->fdata)
- return 0 ;
- pvox = (VOX_ADPCM_PRIVATE*) psf->fdata ;
-
- while (len > 0)
- { readcount = (len > 0x10000000) ? 0x10000000 : (int) len ;
-
- count = vox_read_block (psf, pvox, ptr, readcount) ;
-
- total += count ;
- len -= count ;
- if (count != readcount)
- break ;
- } ;
-
- return total ;
-} /* vox_read_s */
-
-static sf_count_t
-vox_read_i (SF_PRIVATE *psf, int *ptr, sf_count_t len)
-{ VOX_ADPCM_PRIVATE *pvox ;
- short *sptr ;
- int k, bufferlen, readcount, count ;
- sf_count_t total = 0 ;
-
- if (! psf->fdata)
- return 0 ;
- pvox = (VOX_ADPCM_PRIVATE*) psf->fdata ;
-
- sptr = psf->u.sbuf ;
- bufferlen = ARRAY_LEN (psf->u.sbuf) ;
- while (len > 0)
- { readcount = (len >= bufferlen) ? bufferlen : (int) len ;
- count = vox_read_block (psf, pvox, sptr, readcount) ;
- for (k = 0 ; k < readcount ; k++)
- ptr [total + k] = ((int) sptr [k]) << 16 ;
- total += count ;
- len -= readcount ;
- if (count != readcount)
- break ;
- } ;
-
- return total ;
-} /* vox_read_i */
-
-static sf_count_t
-vox_read_f (SF_PRIVATE *psf, float *ptr, sf_count_t len)
-{ VOX_ADPCM_PRIVATE *pvox ;
- short *sptr ;
- int k, bufferlen, readcount, count ;
- sf_count_t total = 0 ;
- float normfact ;
-
- if (! psf->fdata)
- return 0 ;
- pvox = (VOX_ADPCM_PRIVATE*) psf->fdata ;
-
- normfact = (psf->norm_float == SF_TRUE) ? 1.0 / ((float) 0x8000) : 1.0 ;
-
- sptr = psf->u.sbuf ;
- bufferlen = ARRAY_LEN (psf->u.sbuf) ;
- while (len > 0)
- { readcount = (len >= bufferlen) ? bufferlen : (int) len ;
- count = vox_read_block (psf, pvox, sptr, readcount) ;
- for (k = 0 ; k < readcount ; k++)
- ptr [total + k] = normfact * (float) (sptr [k]) ;
- total += count ;
- len -= readcount ;
- if (count != readcount)
- break ;
- } ;
-
- return total ;
-} /* vox_read_f */
-
-static sf_count_t
-vox_read_d (SF_PRIVATE *psf, double *ptr, sf_count_t len)
-{ VOX_ADPCM_PRIVATE *pvox ;
- short *sptr ;
- int k, bufferlen, readcount, count ;
- sf_count_t total = 0 ;
- double normfact ;
-
- if (! psf->fdata)
- return 0 ;
- pvox = (VOX_ADPCM_PRIVATE*) psf->fdata ;
-
- normfact = (psf->norm_double == SF_TRUE) ? 1.0 / ((double) 0x8000) : 1.0 ;
-
- sptr = psf->u.sbuf ;
- bufferlen = ARRAY_LEN (psf->u.sbuf) ;
- while (len > 0)
- { readcount = (len >= bufferlen) ? bufferlen : (int) len ;
- count = vox_read_block (psf, pvox, sptr, readcount) ;
- for (k = 0 ; k < readcount ; k++)
- ptr [total + k] = normfact * (double) (sptr [k]) ;
- total += count ;
- len -= readcount ;
- if (count != readcount)
- break ;
- } ;
-
- return total ;
-} /* vox_read_d */
-
-/*------------------------------------------------------------------------------
-*/
-
-static int
-vox_write_block (SF_PRIVATE *psf, VOX_ADPCM_PRIVATE *pvox, const short *ptr, int len)
-{ int indx = 0, k ;
-
- while (indx < len)
- { pvox->pcm_samples = (len - indx > PCM_DATA_LEN) ? PCM_DATA_LEN : len - indx ;
-
- memcpy (pvox->pcm_data, &(ptr [indx]), pvox->pcm_samples * sizeof (short)) ;
-
- vox_adpcm_encode_block (pvox) ;
-
- if ((k = psf_fwrite (pvox->vox_data, 1, pvox->vox_bytes, psf)) != pvox->vox_bytes)
- psf_log_printf (psf, "*** Warning : short read (%d != %d).\n", k, pvox->vox_bytes) ;
-
- indx += pvox->pcm_samples ;
- } ;
-
- return indx ;
-} /* vox_write_block */
-
-static sf_count_t
-vox_write_s (SF_PRIVATE *psf, const short *ptr, sf_count_t len)
-{ VOX_ADPCM_PRIVATE *pvox ;
- int writecount, count ;
- sf_count_t total = 0 ;
-
- if (! psf->fdata)
- return 0 ;
- pvox = (VOX_ADPCM_PRIVATE*) psf->fdata ;
-
- while (len)
- { writecount = (len > 0x10000000) ? 0x10000000 : (int) len ;
-
- count = vox_write_block (psf, pvox, ptr, writecount) ;
-
- total += count ;
- len -= count ;
- if (count != writecount)
- break ;
- } ;
-
- return total ;
-} /* vox_write_s */
-
-static sf_count_t
-vox_write_i (SF_PRIVATE *psf, const int *ptr, sf_count_t len)
-{ VOX_ADPCM_PRIVATE *pvox ;
- short *sptr ;
- int k, bufferlen, writecount, count ;
- sf_count_t total = 0 ;
-
- if (! psf->fdata)
- return 0 ;
- pvox = (VOX_ADPCM_PRIVATE*) psf->fdata ;
-
- sptr = psf->u.sbuf ;
- bufferlen = ARRAY_LEN (psf->u.sbuf) ;
- while (len > 0)
- { writecount = (len >= bufferlen) ? bufferlen : (int) len ;
- for (k = 0 ; k < writecount ; k++)
- sptr [k] = ptr [total + k] >> 16 ;
- count = vox_write_block (psf, pvox, sptr, writecount) ;
- total += count ;
- len -= writecount ;
- if (count != writecount)
- break ;
- } ;
-
- return total ;
-} /* vox_write_i */
-
-static sf_count_t
-vox_write_f (SF_PRIVATE *psf, const float *ptr, sf_count_t len)
-{ VOX_ADPCM_PRIVATE *pvox ;
- short *sptr ;
- int k, bufferlen, writecount, count ;
- sf_count_t total = 0 ;
- float normfact ;
-
- if (! psf->fdata)
- return 0 ;
- pvox = (VOX_ADPCM_PRIVATE*) psf->fdata ;
-
- normfact = (psf->norm_float == SF_TRUE) ? (1.0 * 0x7FFF) : 1.0 ;
-
- sptr = psf->u.sbuf ;
- bufferlen = ARRAY_LEN (psf->u.sbuf) ;
- while (len > 0)
- { writecount = (len >= bufferlen) ? bufferlen : (int) len ;
- for (k = 0 ; k < writecount ; k++)
- sptr [k] = lrintf (normfact * ptr [total + k]) ;
- count = vox_write_block (psf, pvox, sptr, writecount) ;
- total += count ;
- len -= writecount ;
- if (count != writecount)
- break ;
- } ;
-
- return total ;
-} /* vox_write_f */
-
-static sf_count_t
-vox_write_d (SF_PRIVATE *psf, const double *ptr, sf_count_t len)
-{ VOX_ADPCM_PRIVATE *pvox ;
- short *sptr ;
- int k, bufferlen, writecount, count ;
- sf_count_t total = 0 ;
- double normfact ;
-
- if (! psf->fdata)
- return 0 ;
- pvox = (VOX_ADPCM_PRIVATE*) psf->fdata ;
-
- normfact = (psf->norm_double == SF_TRUE) ? (1.0 * 0x7FFF) : 1.0 ;
-
- sptr = psf->u.sbuf ;
- bufferlen = ARRAY_LEN (psf->u.sbuf) ;
- while (len > 0)
- { writecount = (len >= bufferlen) ? bufferlen : (int) len ;
- for (k = 0 ; k < writecount ; k++)
- sptr [k] = lrint (normfact * ptr [total + k]) ;
- count = vox_write_block (psf, pvox, sptr, writecount) ;
- total += count ;
- len -= writecount ;
- if (count != writecount)
- break ;
- } ;
-
- return total ;
-} /* vox_write_d */
-
-
-/*
-** Do not edit or modify anything in this comment block.
-** The arch-tag line is a file identity tag for the GNU Arch
-** revision control system.
-**
-** arch-tag: e15e97fe-ff9d-4b46-a489-7059fb2d0b1e
-*/
diff --git a/libs/libsndfile/src/w64.c b/libs/libsndfile/src/w64.c
deleted file mode 100644
index 756b093153..0000000000
--- a/libs/libsndfile/src/w64.c
+++ /dev/null
@@ -1,578 +0,0 @@
-/*
-** Copyright (C) 1999-2005 Erik de Castro Lopo <erikd@mega-nerd.com>
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU Lesser General Public License as published by
-** the Free Software Foundation; either version 2.1 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU Lesser General Public License for more details.
-**
-** You should have received a copy of the GNU Lesser General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-*/
-
-#include "sfconfig.h"
-
-#include <stdio.h>
-#include <string.h>
-#include <ctype.h>
-#include <time.h>
-
-#include "sndfile.h"
-#include "sfendian.h"
-#include "common.h"
-#include "wav_w64.h"
-
-/*------------------------------------------------------------------------------
-** W64 files use 16 byte markers as opposed to the four byte marker of
-** WAV files.
-** For comparison purposes, an integer is required, so make an integer
-** hash for the 16 bytes using MAKE_HASH16 macro, but also create a 16
-** byte array containing the complete 16 bytes required when writing the
-** header.
-*/
-
-#define MAKE_HASH16(x0,x1,x2,x3,x4,x5,x6,x7,x8,x9,xa,xb,xc,xd,xe,xf) \
- ( (x0) ^ ((x1) << 1) ^ ((x2) << 2) ^ ((x3) << 3) ^ \
- ((x4) << 4) ^ ((x5) << 5) ^ ((x6) << 6) ^ ((x7) << 7) ^ \
- ((x8) << 8) ^ ((x9) << 9) ^ ((xa) << 10) ^ ((xb) << 11) ^ \
- ((xc) << 12) ^ ((xd) << 13) ^ ((xe) << 14) ^ ((xf) << 15) )
-
-#define MAKE_MARKER16(name,x0,x1,x2,x3,x4,x5,x6,x7,x8,x9,xa,xb,xc,xd,xe,xf) \
- static unsigned char name [16] = { (x0), (x1), (x2), (x3), (x4), (x5), \
- (x6), (x7), (x8), (x9), (xa), (xb), (xc), (xd), (xe), (xf) }
-
-#define riff_HASH16 MAKE_HASH16 ('r', 'i', 'f', 'f', 0x2E, 0x91, 0xCF, 0x11, 0xA5, \
- 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00)
-
-#define wave_HASH16 MAKE_HASH16 ('w', 'a', 'v', 'e', 0xF3, 0xAC, 0xD3, 0x11, \
- 0x8C, 0xD1, 0x00, 0xC0, 0x4F, 0x8E, 0xDB, 0x8A)
-
-#define fmt_HASH16 MAKE_HASH16 ('f', 'm', 't', ' ', 0xF3, 0xAC, 0xD3, 0x11, \
- 0x8C, 0xD1, 0x00, 0xC0, 0x4F, 0x8E, 0xDB, 0x8A)
-
-#define fact_HASH16 MAKE_HASH16 ('f', 'a', 'c', 't', 0xF3, 0xAC, 0xD3, 0x11, \
- 0x8C, 0xD1, 0x00, 0xC0, 0x4F, 0x8E, 0xDB, 0x8A)
-
-#define data_HASH16 MAKE_HASH16 ('d', 'a', 't', 'a', 0xF3, 0xAC, 0xD3, 0x11, \
- 0x8C, 0xD1, 0x00, 0xC0, 0x4F, 0x8E, 0xDB, 0x8A)
-
-#define ACID_HASH16 MAKE_HASH16 (0x6D, 0x07, 0x1C, 0xEA, 0xA3, 0xEF, 0x78, 0x4C, \
- 0x90, 0x57, 0x7F, 0x79, 0xEE, 0x25, 0x2A, 0xAE)
-
-MAKE_MARKER16 (riff_MARKER16, 'r', 'i', 'f', 'f', 0x2E, 0x91, 0xCF, 0x11,
- 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00) ;
-
-
-MAKE_MARKER16 (wave_MARKER16, 'w', 'a', 'v', 'e', 0xF3, 0xAC, 0xD3, 0x11,
- 0x8C, 0xD1, 0x00, 0xC0, 0x4F, 0x8E, 0xDB, 0x8A) ;
-
-MAKE_MARKER16 (fmt_MARKER16, 'f', 'm', 't', ' ', 0xF3, 0xAC, 0xD3, 0x11,
- 0x8C, 0xD1, 0x00, 0xC0, 0x4F, 0x8E, 0xDB, 0x8A) ;
-
-MAKE_MARKER16 (fact_MARKER16, 'f', 'a', 'c', 't', 0xF3, 0xAC, 0xD3, 0x11,
- 0x8C, 0xD1, 0x00, 0xC0, 0x4F, 0x8E, 0xDB, 0x8A) ;
-
-MAKE_MARKER16 (data_MARKER16, 'd', 'a', 't', 'a', 0xF3, 0xAC, 0xD3, 0x11,
- 0x8C, 0xD1, 0x00, 0xC0, 0x4F, 0x8E, 0xDB, 0x8A) ;
-
-enum
-{ HAVE_riff = 0x01,
- HAVE_wave = 0x02,
- HAVE_fmt = 0x04,
- HAVE_fact = 0x08,
- HAVE_data = 0x20
-} ;
-
-/*------------------------------------------------------------------------------
- * Private static functions.
- */
-
-static int w64_read_header (SF_PRIVATE *psf, int *blockalign, int *framesperblock) ;
-static int w64_write_header (SF_PRIVATE *psf, int calc_length) ;
-static int w64_close (SF_PRIVATE *psf) ;
-
-/*------------------------------------------------------------------------------
-** Public function.
-*/
-
-int
-w64_open (SF_PRIVATE *psf)
-{ int subformat, error, blockalign = 0, framesperblock = 0 ;
-
- if (psf->mode == SFM_READ || (psf->mode == SFM_RDWR &&psf->filelength > 0))
- { if ((error = w64_read_header (psf, &blockalign, &framesperblock)))
- return error ;
- } ;
-
- if ((psf->sf.format & SF_FORMAT_TYPEMASK) != SF_FORMAT_W64)
- return SFE_BAD_OPEN_FORMAT ;
-
- subformat = psf->sf.format & SF_FORMAT_SUBMASK ;
-
- if (psf->mode == SFM_WRITE || psf->mode == SFM_RDWR)
- { if (psf->is_pipe)
- return SFE_NO_PIPE_WRITE ;
-
- psf->endian = SF_ENDIAN_LITTLE ; /* All W64 files are little endian. */
-
- psf->blockwidth = psf->bytewidth * psf->sf.channels ;
-
- if (subformat == SF_FORMAT_IMA_ADPCM || subformat == SF_FORMAT_MS_ADPCM)
- { blockalign = wav_w64_srate2blocksize (psf->sf.samplerate * psf->sf.channels) ;
- framesperblock = -1 ;
-
- /* FIXME : This block must go */
- psf->filelength = SF_COUNT_MAX ;
- psf->datalength = psf->filelength ;
- if (psf->sf.frames <= 0)
- psf->sf.frames = (psf->blockwidth) ? psf->filelength / psf->blockwidth : psf->filelength ;
- /* EMXIF : This block must go */
- } ;
-
- if ((error = w64_write_header (psf, SF_FALSE)))
- return error ;
-
- psf->write_header = w64_write_header ;
- } ;
-
- psf->container_close = w64_close ;
-
- switch (subformat)
- { case SF_FORMAT_PCM_U8 :
- error = pcm_init (psf) ;
- break ;
-
- case SF_FORMAT_PCM_16 :
- case SF_FORMAT_PCM_24 :
- case SF_FORMAT_PCM_32 :
- error = pcm_init (psf) ;
- break ;
-
- case SF_FORMAT_ULAW :
- error = ulaw_init (psf) ;
- break ;
-
- case SF_FORMAT_ALAW :
- error = alaw_init (psf) ;
- break ;
-
- /* Lite remove start */
- case SF_FORMAT_FLOAT :
- error = float32_init (psf) ;
- break ;
-
- case SF_FORMAT_DOUBLE :
- error = double64_init (psf) ;
- break ;
-
- case SF_FORMAT_IMA_ADPCM :
- error = wav_w64_ima_init (psf, blockalign, framesperblock) ;
- break ;
-
- case SF_FORMAT_MS_ADPCM :
- error = wav_w64_msadpcm_init (psf, blockalign, framesperblock) ;
- break ;
- /* Lite remove end */
-
- case SF_FORMAT_GSM610 :
- error = gsm610_init (psf) ;
- break ;
-
- default : return SFE_UNIMPLEMENTED ;
- } ;
-
- return error ;
-} /* w64_open */
-
-/*=========================================================================
-** Private functions.
-*/
-
-static int
-w64_read_header (SF_PRIVATE *psf, int *blockalign, int *framesperblock)
-{ WAV_FMT wav_fmt ;
- int dword = 0, marker, format = 0 ;
- sf_count_t chunk_size, bytesread = 0 ;
- int parsestage = 0, error, done = 0 ;
-
- /* Set position to start of file to begin reading header. */
- memset (&wav_fmt, 0, sizeof (wav_fmt)) ;
- psf_binheader_readf (psf, "p", 0) ;
-
- while (! done)
- { /* Read the 4 byte marker and jump 12 bytes. */
- bytesread += psf_binheader_readf (psf, "h", &marker) ;
- chunk_size = 0 ;
-
- switch (marker)
- { case riff_HASH16 :
- if (parsestage)
- return SFE_W64_NO_RIFF ;
-
- bytesread += psf_binheader_readf (psf, "e8", &chunk_size) ;
-
- if (psf->filelength < chunk_size)
- psf_log_printf (psf, "riff : %D (should be %D)\n", chunk_size, psf->filelength) ;
- else
- psf_log_printf (psf, "riff : %D\n", chunk_size) ;
-
- parsestage |= HAVE_riff ;
- break ;
-
- case ACID_HASH16:
- psf_log_printf (psf, "Looks like an ACID file. Exiting.\n") ;
- return SFE_UNIMPLEMENTED ;
-
- case wave_HASH16 :
- if ((parsestage & HAVE_riff) != HAVE_riff)
- return SFE_W64_NO_WAVE ;
- psf_log_printf (psf, "wave\n") ;
- parsestage |= HAVE_wave ;
- break ;
-
- case fmt_HASH16 :
- if ((parsestage & (HAVE_riff | HAVE_wave)) != (HAVE_riff | HAVE_wave))
- return SFE_W64_NO_FMT ;
-
- bytesread += psf_binheader_readf (psf, "e8", &chunk_size) ;
- psf_log_printf (psf, " fmt : %D\n", chunk_size) ;
-
- /* size of 16 byte marker and 8 byte chunk_size value. */
- chunk_size -= 24 ;
-
- if ((error = wav_w64_read_fmt_chunk (psf, &wav_fmt, (int) chunk_size)))
- return error ;
-
- if (chunk_size % 8)
- psf_binheader_readf (psf, "j", 8 - (chunk_size % 8)) ;
-
- format = wav_fmt.format ;
- parsestage |= HAVE_fmt ;
- break ;
-
- case fact_HASH16:
- { sf_count_t frames ;
-
- psf_binheader_readf (psf, "e88", &chunk_size, &frames) ;
- psf_log_printf (psf, " fact : %D\n frames : %D\n",
- chunk_size, frames) ;
- } ;
- break ;
-
-
- case data_HASH16 :
- if ((parsestage & (HAVE_riff | HAVE_wave | HAVE_fmt)) != (HAVE_riff | HAVE_wave | HAVE_fmt))
- return SFE_W64_NO_DATA ;
-
- psf_binheader_readf (psf, "e8", &chunk_size) ;
-
- psf->dataoffset = psf_ftell (psf) ;
-
- psf->datalength = chunk_size - 24 ;
-
- if (chunk_size % 8)
- chunk_size += 8 - (chunk_size % 8) ;
-
- psf_log_printf (psf, "data : %D\n", chunk_size) ;
-
- parsestage |= HAVE_data ;
-
- if (! psf->sf.seekable)
- break ;
-
- /* Seek past data and continue reading header. */
- psf_fseek (psf, chunk_size, SEEK_CUR) ;
- break ;
-
- default :
- if (psf_ftell (psf) & 0x0F)
- { psf_log_printf (psf, " Unknown chunk marker at position %d. Resynching.\n", dword - 4) ;
- psf_binheader_readf (psf, "j", -3) ;
- break ;
- } ;
- psf_log_printf (psf, "*** Unknown chunk marker : %X. Exiting parser.\n", marker) ;
- done = SF_TRUE ;
- break ;
- } ; /* switch (dword) */
-
- if (psf->sf.seekable == 0 && (parsestage & HAVE_data))
- break ;
-
- if (psf_ftell (psf) >= (psf->filelength - (2 * SIGNED_SIZEOF (dword))))
- break ;
- } ; /* while (1) */
-
- if (! psf->dataoffset)
- return SFE_W64_NO_DATA ;
-
- psf->endian = SF_ENDIAN_LITTLE ; /* All WAV files are little endian. */
-
- if (psf_ftell (psf) != psf->dataoffset)
- psf_fseek (psf, psf->dataoffset, SEEK_SET) ;
-
- if (psf->blockwidth)
- { if (psf->filelength - psf->dataoffset < psf->datalength)
- psf->sf.frames = (psf->filelength - psf->dataoffset) / psf->blockwidth ;
- else
- psf->sf.frames = psf->datalength / psf->blockwidth ;
- } ;
-
- switch (format)
- { case WAVE_FORMAT_PCM :
- case WAVE_FORMAT_EXTENSIBLE :
- /* extensible might be FLOAT, MULAW, etc as well! */
- psf->sf.format = SF_FORMAT_W64 | u_bitwidth_to_subformat (psf->bytewidth * 8) ;
- break ;
-
- case WAVE_FORMAT_MULAW :
- psf->sf.format = (SF_FORMAT_W64 | SF_FORMAT_ULAW) ;
- break ;
-
- case WAVE_FORMAT_ALAW :
- psf->sf.format = (SF_FORMAT_W64 | SF_FORMAT_ALAW) ;
- break ;
-
- case WAVE_FORMAT_MS_ADPCM :
- psf->sf.format = (SF_FORMAT_W64 | SF_FORMAT_MS_ADPCM) ;
- *blockalign = wav_fmt.msadpcm.blockalign ;
- *framesperblock = wav_fmt.msadpcm.samplesperblock ;
- break ;
-
- case WAVE_FORMAT_IMA_ADPCM :
- psf->sf.format = (SF_FORMAT_W64 | SF_FORMAT_IMA_ADPCM) ;
- *blockalign = wav_fmt.ima.blockalign ;
- *framesperblock = wav_fmt.ima.samplesperblock ;
- break ;
-
- case WAVE_FORMAT_GSM610 :
- psf->sf.format = (SF_FORMAT_W64 | SF_FORMAT_GSM610) ;
- break ;
-
- case WAVE_FORMAT_IEEE_FLOAT :
- psf->sf.format = SF_FORMAT_W64 ;
- psf->sf.format |= (psf->bytewidth == 8) ? SF_FORMAT_DOUBLE : SF_FORMAT_FLOAT ;
- break ;
-
- default : return SFE_UNIMPLEMENTED ;
- } ;
-
- return 0 ;
-} /* w64_read_header */
-
-static int
-w64_write_header (SF_PRIVATE *psf, int calc_length)
-{ sf_count_t fmt_size, current ;
- size_t fmt_pad = 0 ;
- int subformat, add_fact_chunk = SF_FALSE ;
-
- current = psf_ftell (psf) ;
-
- if (calc_length)
- { psf->filelength = psf_get_filelen (psf) ;
-
- psf->datalength = psf->filelength - psf->dataoffset ;
- if (psf->dataend)
- psf->datalength -= psf->filelength - psf->dataend ;
-
- if (psf->bytewidth)
- psf->sf.frames = psf->datalength / (psf->bytewidth * psf->sf.channels) ;
- } ;
-
- /* Reset the current header length to zero. */
- psf->header [0] = 0 ;
- psf->headindex = 0 ;
- psf_fseek (psf, 0, SEEK_SET) ;
-
- /* riff marker, length, wave and 'fmt ' markers. */
- psf_binheader_writef (psf, "eh8hh", riff_MARKER16, psf->filelength - 8, wave_MARKER16, fmt_MARKER16) ;
-
- subformat = psf->sf.format & SF_FORMAT_SUBMASK ;
-
- switch (subformat)
- { case SF_FORMAT_PCM_U8 :
- case SF_FORMAT_PCM_16 :
- case SF_FORMAT_PCM_24 :
- case SF_FORMAT_PCM_32 :
- fmt_size = 24 + 2 + 2 + 4 + 4 + 2 + 2 ;
- fmt_pad = (size_t) (8 - (fmt_size & 0x7)) ;
- fmt_size += fmt_pad ;
-
- /* fmt : format, channels, samplerate */
- psf_binheader_writef (psf, "e8224", fmt_size, WAVE_FORMAT_PCM, psf->sf.channels, psf->sf.samplerate) ;
- /* fmt : bytespersec */
- psf_binheader_writef (psf, "e4", psf->sf.samplerate * psf->bytewidth * psf->sf.channels) ;
- /* fmt : blockalign, bitwidth */
- psf_binheader_writef (psf, "e22", psf->bytewidth * psf->sf.channels, psf->bytewidth * 8) ;
- break ;
-
- case SF_FORMAT_FLOAT :
- case SF_FORMAT_DOUBLE :
- fmt_size = 24 + 2 + 2 + 4 + 4 + 2 + 2 ;
- fmt_pad = (size_t) (8 - (fmt_size & 0x7)) ;
- fmt_size += fmt_pad ;
-
- /* fmt : format, channels, samplerate */
- psf_binheader_writef (psf, "e8224", fmt_size, WAVE_FORMAT_IEEE_FLOAT, psf->sf.channels, psf->sf.samplerate) ;
- /* fmt : bytespersec */
- psf_binheader_writef (psf, "e4", psf->sf.samplerate * psf->bytewidth * psf->sf.channels) ;
- /* fmt : blockalign, bitwidth */
- psf_binheader_writef (psf, "e22", psf->bytewidth * psf->sf.channels, psf->bytewidth * 8) ;
-
- add_fact_chunk = SF_TRUE ;
- break ;
-
- case SF_FORMAT_ULAW :
- fmt_size = 24 + 2 + 2 + 4 + 4 + 2 + 2 ;
- fmt_pad = (size_t) (8 - (fmt_size & 0x7)) ;
- fmt_size += fmt_pad ;
-
- /* fmt : format, channels, samplerate */
- psf_binheader_writef (psf, "e8224", fmt_size, WAVE_FORMAT_MULAW, psf->sf.channels, psf->sf.samplerate) ;
- /* fmt : bytespersec */
- psf_binheader_writef (psf, "e4", psf->sf.samplerate * psf->bytewidth * psf->sf.channels) ;
- /* fmt : blockalign, bitwidth */
- psf_binheader_writef (psf, "e22", psf->bytewidth * psf->sf.channels, 8) ;
-
- add_fact_chunk = SF_TRUE ;
- break ;
-
- case SF_FORMAT_ALAW :
- fmt_size = 24 + 2 + 2 + 4 + 4 + 2 + 2 ;
- fmt_pad = (size_t) (8 - (fmt_size & 0x7)) ;
- fmt_size += fmt_pad ;
-
- /* fmt : format, channels, samplerate */
- psf_binheader_writef (psf, "e8224", fmt_size, WAVE_FORMAT_ALAW, psf->sf.channels, psf->sf.samplerate) ;
- /* fmt : bytespersec */
- psf_binheader_writef (psf, "e4", psf->sf.samplerate * psf->bytewidth * psf->sf.channels) ;
- /* fmt : blockalign, bitwidth */
- psf_binheader_writef (psf, "e22", psf->bytewidth * psf->sf.channels, 8) ;
-
- add_fact_chunk = SF_TRUE ;
- break ;
-
- /* Lite remove start */
- case SF_FORMAT_IMA_ADPCM :
- { int blockalign, framesperblock, bytespersec ;
-
- blockalign = wav_w64_srate2blocksize (psf->sf.samplerate * psf->sf.channels) ;
- framesperblock = 2 * (blockalign - 4 * psf->sf.channels) / psf->sf.channels + 1 ;
- bytespersec = (psf->sf.samplerate * blockalign) / framesperblock ;
-
- /* fmt chunk. */
- fmt_size = 24 + 2 + 2 + 4 + 4 + 2 + 2 + 2 + 2 ;
- fmt_pad = (size_t) (8 - (fmt_size & 0x7)) ;
- fmt_size += fmt_pad ;
-
- /* fmt : size, WAV format type, channels. */
- psf_binheader_writef (psf, "e822", fmt_size, WAVE_FORMAT_IMA_ADPCM, psf->sf.channels) ;
-
- /* fmt : samplerate, bytespersec. */
- psf_binheader_writef (psf, "e44", psf->sf.samplerate, bytespersec) ;
-
- /* fmt : blockalign, bitwidth, extrabytes, framesperblock. */
- psf_binheader_writef (psf, "e2222", blockalign, 4, 2, framesperblock) ;
- } ;
-
- add_fact_chunk = SF_TRUE ;
- break ;
-
- case SF_FORMAT_MS_ADPCM :
- { int blockalign, framesperblock, bytespersec, extrabytes ;
-
- blockalign = wav_w64_srate2blocksize (psf->sf.samplerate * psf->sf.channels) ;
- framesperblock = 2 + 2 * (blockalign - 7 * psf->sf.channels) / psf->sf.channels ;
- bytespersec = (psf->sf.samplerate * blockalign) / framesperblock ;
-
- /* fmt chunk. */
- extrabytes = 2 + 2 + MSADPCM_ADAPT_COEFF_COUNT * (2 + 2) ;
- fmt_size = 24 + 2 + 2 + 4 + 4 + 2 + 2 + 2 + extrabytes ;
- fmt_pad = (size_t) (8 - (fmt_size & 0x7)) ;
- fmt_size += fmt_pad ;
-
- /* fmt : size, W64 format type, channels. */
- psf_binheader_writef (psf, "e822", fmt_size, WAVE_FORMAT_MS_ADPCM, psf->sf.channels) ;
-
- /* fmt : samplerate, bytespersec. */
- psf_binheader_writef (psf, "e44", psf->sf.samplerate, bytespersec) ;
-
- /* fmt : blockalign, bitwidth, extrabytes, framesperblock. */
- psf_binheader_writef (psf, "e22222", blockalign, 4, extrabytes, framesperblock, 7) ;
-
- msadpcm_write_adapt_coeffs (psf) ;
- } ;
-
- add_fact_chunk = SF_TRUE ;
- break ;
- /* Lite remove end */
-
- case SF_FORMAT_GSM610 :
- { int bytespersec ;
-
- bytespersec = (psf->sf.samplerate * WAV_W64_GSM610_BLOCKSIZE) / WAV_W64_GSM610_SAMPLES ;
-
- /* fmt chunk. */
- fmt_size = 24 + 2 + 2 + 4 + 4 + 2 + 2 + 2 + 2 ;
- fmt_pad = (size_t) (8 - (fmt_size & 0x7)) ;
- fmt_size += fmt_pad ;
-
- /* fmt : size, WAV format type, channels. */
- psf_binheader_writef (psf, "e822", fmt_size, WAVE_FORMAT_GSM610, psf->sf.channels) ;
-
- /* fmt : samplerate, bytespersec. */
- psf_binheader_writef (psf, "e44", psf->sf.samplerate, bytespersec) ;
-
- /* fmt : blockalign, bitwidth, extrabytes, framesperblock. */
- psf_binheader_writef (psf, "e2222", WAV_W64_GSM610_BLOCKSIZE, 0, 2, WAV_W64_GSM610_SAMPLES) ;
- } ;
-
- add_fact_chunk = SF_TRUE ;
- break ;
-
- default : return SFE_UNIMPLEMENTED ;
- } ;
-
- /* Pad to 8 bytes with zeros. */
- if (fmt_pad > 0)
- psf_binheader_writef (psf, "z", fmt_pad) ;
-
- if (add_fact_chunk)
- psf_binheader_writef (psf, "eh88", fact_MARKER16, (sf_count_t) (16 + 8 + 8), psf->sf.frames) ;
-
- psf_binheader_writef (psf, "eh8", data_MARKER16, psf->datalength + 24) ;
- psf_fwrite (psf->header, psf->headindex, 1, psf) ;
-
- if (psf->error)
- return psf->error ;
-
- psf->dataoffset = psf->headindex ;
-
- if (current > 0)
- psf_fseek (psf, current, SEEK_SET) ;
-
- return psf->error ;
-} /* w64_write_header */
-
-static int
-w64_close (SF_PRIVATE *psf)
-{
- if (psf->mode == SFM_WRITE || psf->mode == SFM_RDWR)
- w64_write_header (psf, SF_TRUE) ;
-
- return 0 ;
-} /* w64_close */
-
-
-/*
-** Do not edit or modify anything in this comment block.
-** The arch-tag line is a file identity tag for the GNU Arch
-** revision control system.
-**
-** arch-tag: 9aa4e141-538a-4dd9-99c9-b3f0f2dd4f4a
-*/
diff --git a/libs/libsndfile/src/wav.c b/libs/libsndfile/src/wav.c
deleted file mode 100644
index c627738c39..0000000000
--- a/libs/libsndfile/src/wav.c
+++ /dev/null
@@ -1,1632 +0,0 @@
-/*
-** Copyright (C) 1999-2006 Erik de Castro Lopo <erikd@mega-nerd.com>
-** Copyright (C) 2004-2005 David Viens <davidv@plogue.com>
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU Lesser General Public License as published by
-** the Free Software Foundation; either version 2.1 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU Lesser General Public License for more details.
-**
-** You should have received a copy of the GNU Lesser General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-*/
-
-#include "sfconfig.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <ctype.h>
-#include <time.h>
-
-#include "sndfile.h"
-#include "sfendian.h"
-#include "common.h"
-#include "wav_w64.h"
-
-/*------------------------------------------------------------------------------
- * Macros to handle big/little endian issues.
- */
-
-#define RIFF_MARKER (MAKE_MARKER ('R', 'I', 'F', 'F'))
-#define RIFX_MARKER (MAKE_MARKER ('R', 'I', 'F', 'X'))
-#define WAVE_MARKER (MAKE_MARKER ('W', 'A', 'V', 'E'))
-#define fmt_MARKER (MAKE_MARKER ('f', 'm', 't', ' '))
-#define data_MARKER (MAKE_MARKER ('d', 'a', 't', 'a'))
-#define fact_MARKER (MAKE_MARKER ('f', 'a', 'c', 't'))
-#define PEAK_MARKER (MAKE_MARKER ('P', 'E', 'A', 'K'))
-
-#define cue_MARKER (MAKE_MARKER ('c', 'u', 'e', ' '))
-#define LIST_MARKER (MAKE_MARKER ('L', 'I', 'S', 'T'))
-#define slnt_MARKER (MAKE_MARKER ('s', 'l', 'n', 't'))
-#define wavl_MARKER (MAKE_MARKER ('w', 'a', 'v', 'l'))
-#define INFO_MARKER (MAKE_MARKER ('I', 'N', 'F', 'O'))
-#define plst_MARKER (MAKE_MARKER ('p', 'l', 's', 't'))
-#define adtl_MARKER (MAKE_MARKER ('a', 'd', 't', 'l'))
-#define labl_MARKER (MAKE_MARKER ('l', 'a', 'b', 'l'))
-#define ltxt_MARKER (MAKE_MARKER ('l', 't', 'x', 't'))
-#define note_MARKER (MAKE_MARKER ('n', 'o', 't', 'e'))
-#define smpl_MARKER (MAKE_MARKER ('s', 'm', 'p', 'l'))
-#define bext_MARKER (MAKE_MARKER ('b', 'e', 'x', 't'))
-#define levl_MARKER (MAKE_MARKER ('l', 'e', 'v', 'l'))
-#define MEXT_MARKER (MAKE_MARKER ('M', 'E', 'X', 'T'))
-#define DISP_MARKER (MAKE_MARKER ('D', 'I', 'S', 'P'))
-#define acid_MARKER (MAKE_MARKER ('a', 'c', 'i', 'd'))
-#define strc_MARKER (MAKE_MARKER ('s', 't', 'r', 'c'))
-#define PAD_MARKER (MAKE_MARKER ('P', 'A', 'D', ' '))
-#define afsp_MARKER (MAKE_MARKER ('a', 'f', 's', 'p'))
-#define clm_MARKER (MAKE_MARKER ('c', 'l', 'm', ' '))
-#define elmo_MARKER (MAKE_MARKER ('e', 'l', 'm', 'o'))
-
-#define ISFT_MARKER (MAKE_MARKER ('I', 'S', 'F', 'T'))
-#define ICRD_MARKER (MAKE_MARKER ('I', 'C', 'R', 'D'))
-#define ICOP_MARKER (MAKE_MARKER ('I', 'C', 'O', 'P'))
-#define IARL_MARKER (MAKE_MARKER ('I', 'A', 'R', 'L'))
-#define IART_MARKER (MAKE_MARKER ('I', 'A', 'R', 'T'))
-#define INAM_MARKER (MAKE_MARKER ('I', 'N', 'A', 'M'))
-#define IENG_MARKER (MAKE_MARKER ('I', 'E', 'N', 'G'))
-#define IART_MARKER (MAKE_MARKER ('I', 'A', 'R', 'T'))
-#define ICOP_MARKER (MAKE_MARKER ('I', 'C', 'O', 'P'))
-#define IPRD_MARKER (MAKE_MARKER ('I', 'P', 'R', 'D'))
-#define ISRC_MARKER (MAKE_MARKER ('I', 'S', 'R', 'C'))
-#define ISBJ_MARKER (MAKE_MARKER ('I', 'S', 'B', 'J'))
-#define ICMT_MARKER (MAKE_MARKER ('I', 'C', 'M', 'T'))
-
-/* Weird WAVPACK marker which can show up at the start of the DATA section. */
-#define wvpk_MARKER (MAKE_MARKER ('w', 'v', 'p', 'k'))
-#define OggS_MARKER (MAKE_MARKER ('O', 'g', 'g', 'S'))
-
-#define WAV_PEAK_CHUNK_SIZE(ch) (2 * sizeof (int) + ch * (sizeof (float) + sizeof (int)))
-#define WAV_BEXT_CHUNK_SIZE 602
-
-enum
-{ HAVE_RIFF = 0x01,
- HAVE_WAVE = 0x02,
- HAVE_fmt = 0x04,
- HAVE_fact = 0x08,
- HAVE_PEAK = 0x10,
- HAVE_data = 0x20,
- HAVE_other = 0x80000000
-} ;
-
-
-
-/* known WAVEFORMATEXTENSIBLE GUIDS */
-static const EXT_SUBFORMAT MSGUID_SUBTYPE_PCM =
-{ 0x00000001, 0x0000, 0x0010, { 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71 }
-} ;
-
-static const EXT_SUBFORMAT MSGUID_SUBTYPE_MS_ADPCM =
-{ 0x00000002, 0x0000, 0x0010, { 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71 }
-} ;
-
-static const EXT_SUBFORMAT MSGUID_SUBTYPE_IEEE_FLOAT =
-{ 0x00000003, 0x0000, 0x0010, { 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71 }
-} ;
-
-static const EXT_SUBFORMAT MSGUID_SUBTYPE_ALAW =
-{ 0x00000006, 0x0000, 0x0010, { 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71 }
-} ;
-
-static const EXT_SUBFORMAT MSGUID_SUBTYPE_MULAW =
-{ 0x00000007, 0x0000, 0x0010, { 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71 }
-} ;
-
-/*
-** the next two are from
-** http://dream.cs.bath.ac.uk/researchdev/wave-ex/bformat.html
-*/
-static const EXT_SUBFORMAT MSGUID_SUBTYPE_AMBISONIC_B_FORMAT_PCM =
-{ 0x00000001, 0x0721, 0x11d3, { 0x86, 0x44, 0xC8, 0xC1, 0xCA, 0x00, 0x00, 0x00 }
-} ;
-
-static const EXT_SUBFORMAT MSGUID_SUBTYPE_AMBISONIC_B_FORMAT_IEEE_FLOAT =
-{ 0x00000003, 0x0721, 0x11d3, { 0x86, 0x44, 0xC8, 0xC1, 0xCA, 0x00, 0x00, 0x00 }
-} ;
-
-
-#if 0
-/* maybe interesting one day to read the following through sf_read_raw */
-/* http://www.bath.ac.uk/~masrwd/pvocex/pvocex.html */
-static const EXT_SUBFORMAT MSGUID_SUBTYPE_PVOCEX =
-{ 0x8312B9C2, 0x2E6E, 0x11d4, { 0xA8, 0x24, 0xDE, 0x5B, 0x96, 0xC3, 0xAB, 0x21 }
-} ;
-#endif
-
-/*------------------------------------------------------------------------------
-** Private static functions.
-*/
-
-static int wav_read_header (SF_PRIVATE *psf, int *blockalign, int *framesperblock) ;
-static int wav_write_header (SF_PRIVATE *psf, int calc_length) ;
-
-static int wavex_write_header (SF_PRIVATE *psf, int calc_length) ;
-
-static int wav_write_tailer (SF_PRIVATE *psf) ;
-static void wav_write_strings (SF_PRIVATE *psf, int location) ;
-static int wav_command (SF_PRIVATE *psf, int command, void *data, int datasize) ;
-static int wav_close (SF_PRIVATE *psf) ;
-
-static int wav_subchunk_parse (SF_PRIVATE *psf, int chunk) ;
-static int wav_read_smpl_chunk (SF_PRIVATE *psf, unsigned int chunklen) ;
-static int wav_read_acid_chunk (SF_PRIVATE *psf, unsigned int chunklen) ;
-static int wav_read_bext_chunk (SF_PRIVATE *psf, unsigned int chunklen) ;
-static int wav_write_bext_chunk (SF_PRIVATE *psf) ;
-
-/*------------------------------------------------------------------------------
-** Public function.
-*/
-
-int
-wav_open (SF_PRIVATE *psf)
-{ int format, subformat, error, blockalign = 0, framesperblock = 0 ;
-
- if (psf->mode == SFM_READ || (psf->mode == SFM_RDWR && psf->filelength > 0))
- { if ((error = wav_read_header (psf, &blockalign, &framesperblock)))
- return error ;
- } ;
-
- subformat = psf->sf.format & SF_FORMAT_SUBMASK ;
-
- if (psf->mode == SFM_WRITE || psf->mode == SFM_RDWR)
- { if (psf->is_pipe)
- return SFE_NO_PIPE_WRITE ;
-
- format = psf->sf.format & SF_FORMAT_TYPEMASK ;
- if (format != SF_FORMAT_WAV && format != SF_FORMAT_WAVEX)
- return SFE_BAD_OPEN_FORMAT ;
-
- psf->blockwidth = psf->bytewidth * psf->sf.channels ;
-
- /* RIFF WAVs are little-endian, RIFX WAVs are big-endian, default to little */
- psf->endian = psf->sf.format & SF_FORMAT_ENDMASK ;
- if (CPU_IS_BIG_ENDIAN && psf->endian == SF_ENDIAN_CPU)
- psf->endian = SF_ENDIAN_BIG ;
- else if (psf->endian != SF_ENDIAN_BIG)
- psf->endian = SF_ENDIAN_LITTLE ;
-
- if (psf->mode != SFM_RDWR || psf->filelength < 44)
- { psf->filelength = 0 ;
- psf->datalength = 0 ;
- psf->dataoffset = 0 ;
- psf->sf.frames = 0 ;
- } ;
-
- if (subformat == SF_FORMAT_IMA_ADPCM || subformat == SF_FORMAT_MS_ADPCM)
- { blockalign = wav_w64_srate2blocksize (psf->sf.samplerate * psf->sf.channels) ;
- framesperblock = -1 ; /* Corrected later. */
- } ;
-
- psf->str_flags = SF_STR_ALLOW_START | SF_STR_ALLOW_END ;
-
- /* By default, add the peak chunk to floating point files. Default behaviour
- ** can be switched off using sf_command (SFC_SET_PEAK_CHUNK, SF_FALSE).
- */
- if (psf->mode == SFM_WRITE && (subformat == SF_FORMAT_FLOAT || subformat == SF_FORMAT_DOUBLE))
- { if ((psf->peak_info = peak_info_calloc (psf->sf.channels)) == NULL)
- return SFE_MALLOC_FAILED ;
- psf->peak_info->peak_loc = SF_PEAK_START ;
- } ;
-
- psf->write_header = (format == SF_FORMAT_WAV) ? wav_write_header : wavex_write_header ;
- } ;
-
- psf->container_close = wav_close ;
- psf->command = wav_command ;
-
- switch (subformat)
- { case SF_FORMAT_PCM_U8 :
- case SF_FORMAT_PCM_16 :
- case SF_FORMAT_PCM_24 :
- case SF_FORMAT_PCM_32 :
- error = pcm_init (psf) ;
- break ;
-
- case SF_FORMAT_ULAW :
- error = ulaw_init (psf) ;
- break ;
-
- case SF_FORMAT_ALAW :
- error = alaw_init (psf) ;
- break ;
-
- /* Lite remove start */
- case SF_FORMAT_FLOAT :
- error = float32_init (psf) ;
- break ;
-
- case SF_FORMAT_DOUBLE :
- error = double64_init (psf) ;
- break ;
-
- case SF_FORMAT_IMA_ADPCM :
- error = wav_w64_ima_init (psf, blockalign, framesperblock) ;
- break ;
-
- case SF_FORMAT_MS_ADPCM :
- error = wav_w64_msadpcm_init (psf, blockalign, framesperblock) ;
- break ;
-
- case SF_FORMAT_G721_32 :
- error = g72x_init (psf) ;
- break ;
- /* Lite remove end */
-
- case SF_FORMAT_GSM610 :
- error = gsm610_init (psf) ;
- break ;
-
- default : return SFE_UNIMPLEMENTED ;
- } ;
-
- if (psf->mode == SFM_WRITE || (psf->mode == SFM_RDWR && psf->filelength == 0))
- return psf->write_header (psf, SF_FALSE) ;
-
- return error ;
-} /* wav_open */
-
-/*=========================================================================
-** Private functions.
-*/
-
-static int
-wav_read_header (SF_PRIVATE *psf, int *blockalign, int *framesperblock)
-{ WAV_FMT wav_fmt ;
- FACT_CHUNK fact_chunk ;
- unsigned dword = 0, marker, RIFFsize, done = 0 ;
- int parsestage = 0, error, format = 0 ;
- char *cptr ;
-
- memset (&wav_fmt, 0, sizeof (wav_fmt)) ;
- /* Set position to start of file to begin reading header. */
- psf_binheader_readf (psf, "p", 0) ;
-
- while (! done)
- { psf_binheader_readf (psf, "m", &marker) ;
-
- switch (marker)
- { case RIFF_MARKER :
- case RIFX_MARKER :
- if (parsestage)
- return SFE_WAV_NO_RIFF ;
-
- parsestage |= HAVE_RIFF ;
-
- /* RIFX signifies big-endian format for all header and data
- ** to prevent lots of code copying here, we'll set the psf->rwf_endian
- ** flag once here, and never specify endian-ness for all other header ops
- */
- if (marker == RIFF_MARKER)
- psf->rwf_endian = SF_ENDIAN_LITTLE ;
- else
- psf->rwf_endian = SF_ENDIAN_BIG ;
-
- psf_binheader_readf (psf, "4", &RIFFsize) ;
-
- if (psf->fileoffset > 0 && psf->filelength > RIFFsize + 8)
- { /* Set file length. */
- psf->filelength = RIFFsize + 8 ;
- if (marker == RIFF_MARKER)
- psf_log_printf (psf, "RIFF : %u\n", RIFFsize) ;
- else
- psf_log_printf (psf, "RIFX : %u\n", RIFFsize) ;
- }
- else if (psf->filelength < RIFFsize + 2 * SIGNED_SIZEOF (dword))
- { if (marker == RIFF_MARKER)
- psf_log_printf (psf, "RIFF : %u (should be %D)\n", RIFFsize, psf->filelength - 2 * SIGNED_SIZEOF (dword)) ;
- else
- psf_log_printf (psf, "RIFX : %u (should be %D)\n", RIFFsize, psf->filelength - 2 * SIGNED_SIZEOF (dword)) ;
-
- RIFFsize = dword ;
- }
- else
- { if (marker == RIFF_MARKER)
- psf_log_printf (psf, "RIFF : %u\n", RIFFsize) ;
- else
- psf_log_printf (psf, "RIFX : %u\n", RIFFsize) ;
- } ;
- break ;
-
- case WAVE_MARKER :
- if ((parsestage & HAVE_RIFF) != HAVE_RIFF)
- return SFE_WAV_NO_WAVE ;
- parsestage |= HAVE_WAVE ;
-
- psf_log_printf (psf, "WAVE\n") ;
- break ;
-
- case fmt_MARKER :
- if ((parsestage & (HAVE_RIFF | HAVE_WAVE)) != (HAVE_RIFF | HAVE_WAVE))
- return SFE_WAV_NO_FMT ;
-
- /* If this file has a SECOND fmt chunk, I don't want to know about it. */
- if (parsestage & HAVE_fmt)
- break ;
-
- parsestage |= HAVE_fmt ;
-
- psf_binheader_readf (psf, "4", &dword) ;
- psf_log_printf (psf, "fmt : %d\n", dword) ;
-
- if ((error = wav_w64_read_fmt_chunk (psf, &wav_fmt, dword)))
- return error ;
-
- format = wav_fmt.format ;
- break ;
-
- case data_MARKER :
- if ((parsestage & (HAVE_RIFF | HAVE_WAVE | HAVE_fmt)) != (HAVE_RIFF | HAVE_WAVE | HAVE_fmt))
- return SFE_WAV_NO_DATA ;
-
- if (psf->mode == SFM_RDWR && (parsestage & HAVE_other) != 0)
- return SFE_RDWR_BAD_HEADER ;
-
- parsestage |= HAVE_data ;
-
- psf_binheader_readf (psf, "4", &dword) ;
-
- psf->datalength = dword ;
- psf->dataoffset = psf_ftell (psf) ;
-
- if (dword == 0 && RIFFsize == 8 && psf->filelength > 44)
- { psf_log_printf (psf, "*** Looks like a WAV file which wasn't closed properly. Fixing it.\n") ;
- psf->datalength = dword = psf->filelength - psf->dataoffset ;
- } ;
-
- if (psf->datalength > psf->filelength - psf->dataoffset)
- { psf_log_printf (psf, "data : %D (should be %D)\n", psf->datalength, psf->filelength - psf->dataoffset) ;
- psf->datalength = psf->filelength - psf->dataoffset ;
- }
- else
- psf_log_printf (psf, "data : %D\n", psf->datalength) ;
-
- /* Only set dataend if there really is data at the end. */
- if (psf->datalength + psf->dataoffset < psf->filelength)
- psf->dataend = psf->datalength + psf->dataoffset ;
-
- if (format == WAVE_FORMAT_MS_ADPCM && psf->datalength % 2)
- { psf->datalength ++ ;
- psf_log_printf (psf, "*** Data length odd. Increasing it by 1.\n") ;
- } ;
-
- if (! psf->sf.seekable)
- break ;
-
- /* Seek past data and continue reading header. */
- psf_fseek (psf, psf->datalength, SEEK_CUR) ;
-
- dword = psf_ftell (psf) ;
- if (dword != (sf_count_t) (psf->dataoffset + psf->datalength))
- psf_log_printf (psf, "*** psf_fseek past end error ***\n", dword, psf->dataoffset + psf->datalength) ;
- break ;
-
- case fact_MARKER :
- if ((parsestage & (HAVE_RIFF | HAVE_WAVE)) != (HAVE_RIFF | HAVE_WAVE))
- return SFE_WAV_BAD_FACT ;
-
- parsestage |= HAVE_fact ;
-
- if ((parsestage & HAVE_fmt) != HAVE_fmt)
- psf_log_printf (psf, "*** Should have 'fmt ' chunk before 'fact'\n") ;
-
- psf_binheader_readf (psf, "44", &dword, & (fact_chunk.frames)) ;
-
- if (dword > SIGNED_SIZEOF (fact_chunk))
- psf_binheader_readf (psf, "j", (int) (dword - SIGNED_SIZEOF (fact_chunk))) ;
-
- if (dword)
- psf_log_printf (psf, "%M : %d\n", marker, dword) ;
- else
- psf_log_printf (psf, "%M : %d (should not be zero)\n", marker, dword) ;
-
- psf_log_printf (psf, " frames : %d\n", fact_chunk.frames) ;
- break ;
-
- case PEAK_MARKER :
- if ((parsestage & (HAVE_RIFF | HAVE_WAVE | HAVE_fmt)) != (HAVE_RIFF | HAVE_WAVE | HAVE_fmt))
- return SFE_WAV_PEAK_B4_FMT ;
-
- parsestage |= HAVE_PEAK ;
-
- psf_binheader_readf (psf, "4", &dword) ;
-
- psf_log_printf (psf, "%M : %d\n", marker, dword) ;
- if (dword != WAV_PEAK_CHUNK_SIZE (psf->sf.channels))
- { psf_binheader_readf (psf, "j", dword) ;
- psf_log_printf (psf, "*** File PEAK chunk size doesn't fit with number of channels (%d).\n", psf->sf.channels) ;
- return SFE_WAV_BAD_PEAK ;
- } ;
-
- if ((psf->peak_info = peak_info_calloc (psf->sf.channels)) == NULL)
- return SFE_MALLOC_FAILED ;
-
- /* read in rest of PEAK chunk. */
- psf_binheader_readf (psf, "44", & (psf->peak_info->version), & (psf->peak_info->timestamp)) ;
-
- if (psf->peak_info->version != 1)
- psf_log_printf (psf, " version : %d *** (should be version 1)\n", psf->peak_info->version) ;
- else
- psf_log_printf (psf, " version : %d\n", psf->peak_info->version) ;
-
- psf_log_printf (psf, " time stamp : %d\n", psf->peak_info->timestamp) ;
- psf_log_printf (psf, " Ch Position Value\n") ;
-
- cptr = psf->u.cbuf ;
- for (dword = 0 ; dword < (unsigned) psf->sf.channels ; dword++)
- { float value ;
- unsigned int position ;
- psf_binheader_readf (psf, "f4", &value, &position) ;
- psf->peak_info->peaks [dword].value = value ;
- psf->peak_info->peaks [dword].position = position ;
-
- LSF_SNPRINTF (cptr, sizeof (psf->u.cbuf), " %2d %-12ld %g\n",
- dword, (long) psf->peak_info->peaks [dword].position, psf->peak_info->peaks [dword].value) ;
- cptr [sizeof (psf->u.cbuf) - 1] = 0 ;
- psf_log_printf (psf, cptr) ;
- } ;
-
- psf->peak_info->peak_loc = ((parsestage & HAVE_data) == 0) ? SF_PEAK_START : SF_PEAK_END ;
- break ;
-
- case cue_MARKER :
- parsestage |= HAVE_other ;
-
- { unsigned bytesread, cue_count ;
- int id, position, chunk_id, chunk_start, block_start, offset ;
-
- bytesread = psf_binheader_readf (psf, "44", &dword, &cue_count) ;
- bytesread -= 4 ; /* Remove bytes for first dword. */
- psf_log_printf (psf, "%M : %u\n", marker, dword) ;
-
- if (cue_count > 10)
- { psf_log_printf (psf, " Count : %d (skipping)\n", cue_count) ;
- psf_binheader_readf (psf, "j", cue_count * 24) ;
- break ;
- } ;
-
- psf_log_printf (psf, " Count : %d\n", cue_count) ;
-
- while (cue_count)
- { bytesread += psf_binheader_readf (psf, "444444", &id, &position,
- &chunk_id, &chunk_start, &block_start, &offset) ;
- psf_log_printf (psf, " Cue ID : %2d"
- " Pos : %5u Chunk : %M"
- " Chk Start : %d Blk Start : %d"
- " Offset : %5d\n",
- id, position, chunk_id, chunk_start, block_start, offset) ;
- cue_count -- ;
- } ;
-
- if (bytesread != dword)
- { psf_log_printf (psf, "**** Chunk size weirdness (%d != %d)\n", dword, bytesread) ;
- psf_binheader_readf (psf, "j", dword - bytesread) ;
- } ;
- } ;
- break ;
-
- case smpl_MARKER :
- parsestage |= HAVE_other ;
-
- psf_binheader_readf (psf, "4", &dword) ;
- psf_log_printf (psf, "smpl : %u\n", dword) ;
-
- if ((error = wav_read_smpl_chunk (psf, dword)))
- return error ;
- break ;
-
- case acid_MARKER :
- parsestage |= HAVE_other ;
-
- psf_binheader_readf (psf, "4", &dword) ;
- psf_log_printf (psf, "acid : %u\n", dword) ;
-
- if ((error = wav_read_acid_chunk (psf, dword)))
- return error ;
- break ;
-
- case INFO_MARKER :
- case LIST_MARKER :
- parsestage |= HAVE_other ;
-
- if ((error = wav_subchunk_parse (psf, marker)) != 0)
- return error ;
- break ;
-
- case bext_MARKER :
-
- psf_binheader_readf (psf, "4", &dword) ;
- if (dword < WAV_BEXT_CHUNK_SIZE)
- psf_log_printf (psf, "bext : %u (should be >= %d)\n", dword, WAV_BEXT_CHUNK_SIZE) ;
- else
- psf_log_printf (psf, "bext : %u\n", dword) ;
-
- if ((error = wav_read_bext_chunk (psf, dword)))
- return error ;
- break ;
-
- case strc_MARKER : /* Multiple of 32 bytes. */
-
- case afsp_MARKER :
- case clm_MARKER :
- case elmo_MARKER :
- case levl_MARKER :
- case plst_MARKER :
- case DISP_MARKER :
- case MEXT_MARKER :
- case PAD_MARKER :
- parsestage |= HAVE_other ;
-
- psf_binheader_readf (psf, "4", &dword) ;
- psf_log_printf (psf, "%M : %u\n", marker, dword) ;
- dword += (dword & 1) ;
- psf_binheader_readf (psf, "j", dword) ;
- break ;
-
- default :
- parsestage |= HAVE_other ;
- if (isprint ((marker >> 24) & 0xFF) && isprint ((marker >> 16) & 0xFF)
- && isprint ((marker >> 8) & 0xFF) && isprint (marker & 0xFF))
- { psf_binheader_readf (psf, "4", &dword) ;
- psf_log_printf (psf, "*** %M : %d (unknown marker)\n", marker, dword) ;
- psf_binheader_readf (psf, "j", dword) ;
- break ;
- } ;
- if (psf_ftell (psf) & 0x03)
- { psf_log_printf (psf, " Unknown chunk marker at position %d. Resynching.\n", dword - 4) ;
- psf_binheader_readf (psf, "j", -3) ;
- break ;
- } ;
- psf_log_printf (psf, "*** Unknown chunk marker (%X) at position %D. Exiting parser.\n", marker, psf_ftell (psf) - 4) ;
- done = SF_TRUE ;
- break ;
- } ; /* switch (dword) */
-
- if (! psf->sf.seekable && (parsestage & HAVE_data))
- break ;
-
- if (psf_ftell (psf) >= psf->filelength - SIGNED_SIZEOF (dword))
- { psf_log_printf (psf, "End\n") ;
- break ;
- } ;
- } ; /* while (1) */
-
- if (! psf->dataoffset)
- return SFE_WAV_NO_DATA ;
-
- /* WAVs can be little or big endian */
- psf->endian = psf->rwf_endian ;
-
- psf_fseek (psf, psf->dataoffset, SEEK_SET) ;
-
- if (psf->is_pipe == 0)
- { /*
- ** Check for 'wvpk' at the start of the DATA section. Not able to
- ** handle this.
- */
- psf_binheader_readf (psf, "4", &marker) ;
- if (marker == wvpk_MARKER || marker == OggS_MARKER)
- return SFE_WAV_WVPK_DATA ;
- } ;
-
- /* Seek to start of DATA section. */
- psf_fseek (psf, psf->dataoffset, SEEK_SET) ;
-
- if (psf->blockwidth)
- { if (psf->filelength - psf->dataoffset < psf->datalength)
- psf->sf.frames = (psf->filelength - psf->dataoffset) / psf->blockwidth ;
- else
- psf->sf.frames = psf->datalength / psf->blockwidth ;
- } ;
-
- switch (format)
- { case WAVE_FORMAT_EXTENSIBLE :
- if (psf->sf.format == (SF_FORMAT_WAVEX | SF_FORMAT_MS_ADPCM))
- { *blockalign = wav_fmt.msadpcm.blockalign ;
- *framesperblock = wav_fmt.msadpcm.samplesperblock ;
- } ;
- break ;
-
- case WAVE_FORMAT_PCM :
- psf->sf.format = SF_FORMAT_WAV | u_bitwidth_to_subformat (psf->bytewidth * 8) ;
- break ;
-
- case WAVE_FORMAT_MULAW :
- case IBM_FORMAT_MULAW :
- psf->sf.format = (SF_FORMAT_WAV | SF_FORMAT_ULAW) ;
- break ;
-
- case WAVE_FORMAT_ALAW :
- case IBM_FORMAT_ALAW :
- psf->sf.format = (SF_FORMAT_WAV | SF_FORMAT_ALAW) ;
- break ;
-
- case WAVE_FORMAT_MS_ADPCM :
- psf->sf.format = (SF_FORMAT_WAV | SF_FORMAT_MS_ADPCM) ;
- *blockalign = wav_fmt.msadpcm.blockalign ;
- *framesperblock = wav_fmt.msadpcm.samplesperblock ;
- break ;
-
- case WAVE_FORMAT_IMA_ADPCM :
- psf->sf.format = (SF_FORMAT_WAV | SF_FORMAT_IMA_ADPCM) ;
- *blockalign = wav_fmt.ima.blockalign ;
- *framesperblock = wav_fmt.ima.samplesperblock ;
- break ;
-
- case WAVE_FORMAT_GSM610 :
- psf->sf.format = (SF_FORMAT_WAV | SF_FORMAT_GSM610) ;
- break ;
-
- case WAVE_FORMAT_IEEE_FLOAT :
- psf->sf.format = SF_FORMAT_WAV ;
- psf->sf.format |= (psf->bytewidth == 8) ? SF_FORMAT_DOUBLE : SF_FORMAT_FLOAT ;
- break ;
-
- case WAVE_FORMAT_G721_ADPCM :
- psf->sf.format = SF_FORMAT_WAV | SF_FORMAT_G721_32 ;
- break ;
-
- default : return SFE_UNIMPLEMENTED ;
- } ;
-
- /* Only set the format endian-ness if its non-standard big-endian. */
- if (psf->endian == SF_ENDIAN_BIG)
- psf->sf.format |= SF_ENDIAN_BIG ;
-
- return 0 ;
-} /* wav_read_header */
-
-static int
-wav_write_header (SF_PRIVATE *psf, int calc_length)
-{ sf_count_t current ;
- int fmt_size, k, subformat, add_fact_chunk = SF_FALSE ;
-
- current = psf_ftell (psf) ;
-
- if (calc_length)
- { psf->filelength = psf_get_filelen (psf) ;
-
- psf->datalength = psf->filelength - psf->dataoffset ;
-
- if (psf->dataend)
- psf->datalength -= psf->filelength - psf->dataend ;
-
- if (psf->bytewidth > 0)
- psf->sf.frames = psf->datalength / (psf->bytewidth * psf->sf.channels) ;
- } ;
-
- /* Reset the current header length to zero. */
- psf->header [0] = 0 ;
- psf->headindex = 0 ;
- psf_fseek (psf, 0, SEEK_SET) ;
-
- /*
- ** RIFX signifies big-endian format for all header and data.
- ** To prevent lots of code copying here, we'll set the psf->rwf_endian flag
- ** once here, and never specify endian-ness for all other header operations.
- */
-
- /* RIFF/RIFX marker, length, WAVE and 'fmt ' markers. */
-
- if (psf->endian == SF_ENDIAN_LITTLE)
- psf_binheader_writef (psf, "etm8", RIFF_MARKER, (psf->filelength < 8) ? 8 : psf->filelength - 8) ;
- else
- psf_binheader_writef (psf, "Etm8", RIFX_MARKER, (psf->filelength < 8) ? 8 : psf->filelength - 8) ;
-
- /* WAVE and 'fmt ' markers. */
- psf_binheader_writef (psf, "mm", WAVE_MARKER, fmt_MARKER) ;
-
- subformat = psf->sf.format & SF_FORMAT_SUBMASK ;
-
- switch (subformat)
- { case SF_FORMAT_PCM_U8 :
- case SF_FORMAT_PCM_16 :
- case SF_FORMAT_PCM_24 :
- case SF_FORMAT_PCM_32 :
- fmt_size = 2 + 2 + 4 + 4 + 2 + 2 ;
-
- /* fmt : format, channels, samplerate */
- psf_binheader_writef (psf, "4224", fmt_size, WAVE_FORMAT_PCM, psf->sf.channels, psf->sf.samplerate) ;
- /* fmt : bytespersec */
- psf_binheader_writef (psf, "4", psf->sf.samplerate * psf->bytewidth * psf->sf.channels) ;
- /* fmt : blockalign, bitwidth */
- psf_binheader_writef (psf, "22", psf->bytewidth * psf->sf.channels, psf->bytewidth * 8) ;
- break ;
-
- case SF_FORMAT_FLOAT :
- case SF_FORMAT_DOUBLE :
- fmt_size = 2 + 2 + 4 + 4 + 2 + 2 ;
-
- /* fmt : format, channels, samplerate */
- psf_binheader_writef (psf, "4224", fmt_size, WAVE_FORMAT_IEEE_FLOAT, psf->sf.channels, psf->sf.samplerate) ;
- /* fmt : bytespersec */
- psf_binheader_writef (psf, "4", psf->sf.samplerate * psf->bytewidth * psf->sf.channels) ;
- /* fmt : blockalign, bitwidth */
- psf_binheader_writef (psf, "22", psf->bytewidth * psf->sf.channels, psf->bytewidth * 8) ;
-
- add_fact_chunk = SF_TRUE ;
- break ;
-
- case SF_FORMAT_ULAW :
- fmt_size = 2 + 2 + 4 + 4 + 2 + 2 ;
-
- /* fmt : format, channels, samplerate */
- psf_binheader_writef (psf, "4224", fmt_size, WAVE_FORMAT_MULAW, psf->sf.channels, psf->sf.samplerate) ;
- /* fmt : bytespersec */
- psf_binheader_writef (psf, "4", psf->sf.samplerate * psf->bytewidth * psf->sf.channels) ;
- /* fmt : blockalign, bitwidth */
- psf_binheader_writef (psf, "22", psf->bytewidth * psf->sf.channels, 8) ;
-
- add_fact_chunk = SF_TRUE ;
- break ;
-
- case SF_FORMAT_ALAW :
- fmt_size = 2 + 2 + 4 + 4 + 2 + 2 ;
-
- /* fmt : format, channels, samplerate */
- psf_binheader_writef (psf, "4224", fmt_size, WAVE_FORMAT_ALAW, psf->sf.channels, psf->sf.samplerate) ;
- /* fmt : bytespersec */
- psf_binheader_writef (psf, "4", psf->sf.samplerate * psf->bytewidth * psf->sf.channels) ;
- /* fmt : blockalign, bitwidth */
- psf_binheader_writef (psf, "22", psf->bytewidth * psf->sf.channels, 8) ;
-
- add_fact_chunk = SF_TRUE ;
- break ;
-
- /* Lite remove start */
- case SF_FORMAT_IMA_ADPCM :
- { int blockalign, framesperblock, bytespersec ;
-
- blockalign = wav_w64_srate2blocksize (psf->sf.samplerate * psf->sf.channels) ;
- framesperblock = 2 * (blockalign - 4 * psf->sf.channels) / psf->sf.channels + 1 ;
- bytespersec = (psf->sf.samplerate * blockalign) / framesperblock ;
-
- /* fmt chunk. */
- fmt_size = 2 + 2 + 4 + 4 + 2 + 2 + 2 + 2 ;
-
- /* fmt : size, WAV format type, channels, samplerate, bytespersec */
- psf_binheader_writef (psf, "42244", fmt_size, WAVE_FORMAT_IMA_ADPCM,
- psf->sf.channels, psf->sf.samplerate, bytespersec) ;
-
- /* fmt : blockalign, bitwidth, extrabytes, framesperblock. */
- psf_binheader_writef (psf, "2222", blockalign, 4, 2, framesperblock) ;
- } ;
-
- add_fact_chunk = SF_TRUE ;
- break ;
-
- case SF_FORMAT_MS_ADPCM :
- { int blockalign, framesperblock, bytespersec, extrabytes ;
-
- blockalign = wav_w64_srate2blocksize (psf->sf.samplerate * psf->sf.channels) ;
- framesperblock = 2 + 2 * (blockalign - 7 * psf->sf.channels) / psf->sf.channels ;
- bytespersec = (psf->sf.samplerate * blockalign) / framesperblock ;
-
- /* fmt chunk. */
- extrabytes = 2 + 2 + MSADPCM_ADAPT_COEFF_COUNT * (2 + 2) ;
- fmt_size = 2 + 2 + 4 + 4 + 2 + 2 + 2 + extrabytes ;
-
- /* fmt : size, WAV format type, channels. */
- psf_binheader_writef (psf, "422", fmt_size, WAVE_FORMAT_MS_ADPCM, psf->sf.channels) ;
-
- /* fmt : samplerate, bytespersec. */
- psf_binheader_writef (psf, "44", psf->sf.samplerate, bytespersec) ;
-
- /* fmt : blockalign, bitwidth, extrabytes, framesperblock. */
- psf_binheader_writef (psf, "22222", blockalign, 4, extrabytes, framesperblock, 7) ;
-
- msadpcm_write_adapt_coeffs (psf) ;
- } ;
-
- add_fact_chunk = SF_TRUE ;
- break ;
-
-
- case SF_FORMAT_G721_32 :
- /* fmt chunk. */
- fmt_size = 2 + 2 + 4 + 4 + 2 + 2 + 2 + 2 ;
-
- /* fmt : size, WAV format type, channels, samplerate, bytespersec */
- psf_binheader_writef (psf, "42244", fmt_size, WAVE_FORMAT_G721_ADPCM,
- psf->sf.channels, psf->sf.samplerate, psf->sf.samplerate * psf->sf.channels / 2) ;
-
- /* fmt : blockalign, bitwidth, extrabytes, auxblocksize. */
- psf_binheader_writef (psf, "2222", 64, 4, 2, 0) ;
-
- add_fact_chunk = SF_TRUE ;
- break ;
-
- /* Lite remove end */
-
- case SF_FORMAT_GSM610 :
- { int blockalign, framesperblock, bytespersec ;
-
- blockalign = WAV_W64_GSM610_BLOCKSIZE ;
- framesperblock = WAV_W64_GSM610_SAMPLES ;
- bytespersec = (psf->sf.samplerate * blockalign) / framesperblock ;
-
- /* fmt chunk. */
- fmt_size = 2 + 2 + 4 + 4 + 2 + 2 + 2 + 2 ;
-
- /* fmt : size, WAV format type, channels. */
- psf_binheader_writef (psf, "422", fmt_size, WAVE_FORMAT_GSM610, psf->sf.channels) ;
-
- /* fmt : samplerate, bytespersec. */
- psf_binheader_writef (psf, "44", psf->sf.samplerate, bytespersec) ;
-
- /* fmt : blockalign, bitwidth, extrabytes, framesperblock. */
- psf_binheader_writef (psf, "2222", blockalign, 0, 2, framesperblock) ;
- } ;
-
- add_fact_chunk = SF_TRUE ;
- break ;
-
- default : return SFE_UNIMPLEMENTED ;
- } ;
-
- if (add_fact_chunk)
- psf_binheader_writef (psf, "tm48", fact_MARKER, 4, psf->sf.frames) ;
-
- if (psf->str_flags & SF_STR_LOCATE_START)
- wav_write_strings (psf, SF_STR_LOCATE_START) ;
-
- if (psf->peak_info != NULL && psf->peak_info->peak_loc == SF_PEAK_START)
- { psf_binheader_writef (psf, "m4", PEAK_MARKER, WAV_PEAK_CHUNK_SIZE (psf->sf.channels)) ;
- psf_binheader_writef (psf, "44", 1, time (NULL)) ;
- for (k = 0 ; k < psf->sf.channels ; k++)
- psf_binheader_writef (psf, "ft8", (float) psf->peak_info->peaks [k].value, psf->peak_info->peaks [k].position) ;
- } ;
-
- if (psf->broadcast_info != NULL)
- wav_write_bext_chunk (psf) ;
-
- if (psf->instrument != NULL)
- { int tmp ;
- double dtune = (double) (0x40000000) / 25.0 ;
-
- psf_binheader_writef (psf, "m4", smpl_MARKER, 9 * 4 + psf->instrument->loop_count * 6 * 4) ;
- psf_binheader_writef (psf, "44", 0, 0) ; /* Manufacturer zero is everyone */
- tmp = (int) (1.0e9 / psf->sf.samplerate) ; /* Sample period in nano seconds */
- psf_binheader_writef (psf, "44", tmp, psf->instrument->basenote) ;
- tmp = (unsigned int) (psf->instrument->detune * dtune + 0.5) ;
- psf_binheader_writef (psf, "4", tmp) ;
- psf_binheader_writef (psf, "44", 0, 0) ; /* SMTPE format */
- psf_binheader_writef (psf, "44", psf->instrument->loop_count, 0) ;
-
- for (tmp = 0 ; tmp < psf->instrument->loop_count ; tmp++)
- { int type ;
-
- type = psf->instrument->loops [tmp].mode ;
- type = (type == SF_LOOP_FORWARD ? 0 : type==SF_LOOP_BACKWARD ? 2 : type == SF_LOOP_ALTERNATING ? 1 : 32) ;
-
- psf_binheader_writef (psf, "44", tmp, type) ;
- psf_binheader_writef (psf, "44", psf->instrument->loops [tmp].start, psf->instrument->loops [tmp].end) ;
- psf_binheader_writef (psf, "44", 0, psf->instrument->loops [tmp].count) ;
- } ;
- } ;
-
- psf_binheader_writef (psf, "tm8", data_MARKER, psf->datalength) ;
- psf_fwrite (psf->header, psf->headindex, 1, psf) ;
- if (psf->error)
- return psf->error ;
-
- psf->dataoffset = psf->headindex ;
-
- if (current < psf->dataoffset)
- psf_fseek (psf, psf->dataoffset, SEEK_SET) ;
- else if (current > 0)
- psf_fseek (psf, current, SEEK_SET) ;
-
- return psf->error ;
-} /* wav_write_header */
-
-
-
-static int
-wavex_write_header (SF_PRIVATE *psf, int calc_length)
-{ sf_count_t current ;
- int fmt_size, k, subformat, add_fact_chunk = SF_FALSE ;
-
- current = psf_ftell (psf) ;
-
- if (calc_length)
- { psf->filelength = psf_get_filelen (psf) ;
-
- psf->datalength = psf->filelength - psf->dataoffset ;
-
- if (psf->dataend)
- psf->datalength -= psf->filelength - psf->dataend ;
-
- if (psf->bytewidth > 0)
- psf->sf.frames = psf->datalength / (psf->bytewidth * psf->sf.channels) ;
- } ;
-
-
- /* Reset the current header length to zero. */
- psf->header [0] = 0 ;
- psf->headindex = 0 ;
- psf_fseek (psf, 0, SEEK_SET) ;
-
- /* RIFX signifies big-endian format for all header and data
- ** to prevent lots of code copying here, we'll set the psf->rwf_endian
- ** flag once here, and never specify endian-ness for all other header ops
- */
-
- /* RIFF marker, length, WAVE and 'fmt ' markers. */
-
- if (psf->endian == SF_ENDIAN_LITTLE)
- { if (psf->filelength < 8)
- psf_binheader_writef (psf, "tm8", RIFF_MARKER, 8) ;
- else
- psf_binheader_writef (psf, "tm8", RIFF_MARKER, psf->filelength - 8) ;
- }
- else
- { if (psf->filelength < 8)
- psf_binheader_writef (psf, "Etm8", RIFX_MARKER, 8) ;
- else
- psf_binheader_writef (psf, "Etm8", RIFX_MARKER, psf->filelength - 8) ;
- } ;
-
- /* WAVE and 'fmt ' markers. */
- psf_binheader_writef (psf, "mm", WAVE_MARKER, fmt_MARKER) ;
-
- subformat = psf->sf.format & SF_FORMAT_SUBMASK ;
-
- /* initial section (same for all, it appears) */
- switch (subformat)
- { case SF_FORMAT_PCM_U8 :
- case SF_FORMAT_PCM_16 :
- case SF_FORMAT_PCM_24 :
- case SF_FORMAT_PCM_32 :
- case SF_FORMAT_FLOAT :
- case SF_FORMAT_DOUBLE :
- case SF_FORMAT_ULAW :
- case SF_FORMAT_ALAW :
- fmt_size = 2 + 2 + 4 + 4 + 2 + 2 + 2 + 2 + 4 + 4 + 2 + 2 + 8 ;
-
- /* fmt : format, channels, samplerate */
- psf_binheader_writef (psf, "4224", fmt_size, WAVE_FORMAT_EXTENSIBLE, psf->sf.channels, psf->sf.samplerate) ;
- /* fmt : bytespersec */
- psf_binheader_writef (psf, "4", psf->sf.samplerate * psf->bytewidth * psf->sf.channels) ;
- /* fmt : blockalign, bitwidth */
- psf_binheader_writef (psf, "22", psf->bytewidth * psf->sf.channels, psf->bytewidth * 8) ;
-
- /* cbSize 22 is sizeof (WAVEFORMATEXTENSIBLE) - sizeof (WAVEFORMATEX) */
- psf_binheader_writef (psf, "2", 22) ;
-
- /* wValidBitsPerSample, for our use same as bitwidth as we use it fully */
- psf_binheader_writef (psf, "2", psf->bytewidth * 8) ;
-
- /*
- ** Ok some liberty is taken here to use the most commonly used channel masks
- ** instead of "no mapping". If you really want to use "no mapping" for 8 channels and less
- ** please don't use wavex. (otherwise we'll have to create a new SF_COMMAND)
- */
- switch (psf->sf.channels)
- { case 1 : /* center channel mono */
- psf_binheader_writef (psf, "4", 0x4) ;
- break ;
-
- case 2 : /* front left and right */
- psf_binheader_writef (psf, "4", 0x1 | 0x2) ;
- break ;
-
- case 4 : /* Quad */
- psf_binheader_writef (psf, "4", 0x1 | 0x2 | 0x10 | 0x20) ;
- break ;
-
- case 6 : /* 5.1 */
- psf_binheader_writef (psf, "4", 0x1 | 0x2 | 0x4 | 0x8 | 0x10 | 0x20) ;
- break ;
-
- case 8 : /* 7.1 */
- psf_binheader_writef (psf, "4", 0x1 | 0x2 | 0x4 | 0x8 | 0x10 | 0x20 | 0x40 | 0x80) ;
- break ;
-
- default : /* 0 when in doubt , use direct out, ie NO mapping*/
- psf_binheader_writef (psf, "4", 0x0) ;
- break ;
- }
-
- break ;
-
- case SF_FORMAT_MS_ADPCM : /* Todo, GUID exists might have different header as per wav_write_header */
- default :
- return SFE_UNIMPLEMENTED ;
- } ;
-
- /* GUID section, different for each */
-
- switch (subformat)
- { case SF_FORMAT_PCM_U8 :
- case SF_FORMAT_PCM_16 :
- case SF_FORMAT_PCM_24 :
- case SF_FORMAT_PCM_32 :
- wavex_write_guid (psf, &MSGUID_SUBTYPE_PCM) ;
- break ;
-
- case SF_FORMAT_FLOAT :
- case SF_FORMAT_DOUBLE :
- wavex_write_guid (psf, &MSGUID_SUBTYPE_IEEE_FLOAT) ;
- add_fact_chunk = SF_TRUE ;
- break ;
-
- case SF_FORMAT_ULAW :
- wavex_write_guid (psf, &MSGUID_SUBTYPE_MULAW) ;
- add_fact_chunk = SF_TRUE ;
- break ;
-
- case SF_FORMAT_ALAW :
- wavex_write_guid (psf, &MSGUID_SUBTYPE_ALAW) ;
- add_fact_chunk = SF_TRUE ;
- break ;
-
- case SF_FORMAT_MS_ADPCM : /* todo, GUID exists */
-
- default : return SFE_UNIMPLEMENTED ;
- } ;
-
- if (add_fact_chunk)
- psf_binheader_writef (psf, "tm48", fact_MARKER, 4, psf->sf.frames) ;
-
- if (psf->str_flags & SF_STR_LOCATE_START)
- wav_write_strings (psf, SF_STR_LOCATE_START) ;
-
- if (psf->peak_info != NULL && psf->peak_info->peak_loc == SF_PEAK_START)
- { psf_binheader_writef (psf, "m4", PEAK_MARKER, WAV_PEAK_CHUNK_SIZE (psf->sf.channels)) ;
- psf_binheader_writef (psf, "44", 1, time (NULL)) ;
- for (k = 0 ; k < psf->sf.channels ; k++)
- psf_binheader_writef (psf, "ft8", (float) psf->peak_info->peaks [k].value, psf->peak_info->peaks [k].position) ;
- } ;
-
- psf_binheader_writef (psf, "tm8", data_MARKER, psf->datalength) ;
- psf_fwrite (psf->header, psf->headindex, 1, psf) ;
- if (psf->error)
- return psf->error ;
-
- psf->dataoffset = psf->headindex ;
-
- if (current < psf->dataoffset)
- psf_fseek (psf, psf->dataoffset, SEEK_SET) ;
- else if (current > 0)
- psf_fseek (psf, current, SEEK_SET) ;
-
- return psf->error ;
-} /* wavex_write_header */
-
-
-
-static int
-wav_write_tailer (SF_PRIVATE *psf)
-{ int k ;
-
- /* Reset the current header buffer length to zero. */
- psf->header [0] = 0 ;
- psf->headindex = 0 ;
-
- psf->dataend = psf_fseek (psf, 0, SEEK_END) ;
-
- /* Add a PEAK chunk if requested. */
- if (psf->peak_info != NULL && psf->peak_info->peak_loc == SF_PEAK_END)
- { psf_binheader_writef (psf, "m4", PEAK_MARKER, WAV_PEAK_CHUNK_SIZE (psf->sf.channels)) ;
- psf_binheader_writef (psf, "44", 1, time (NULL)) ;
- for (k = 0 ; k < psf->sf.channels ; k++)
- psf_binheader_writef (psf, "f4", psf->peak_info->peaks [k].value, psf->peak_info->peaks [k].position) ;
- } ;
-
- if (psf->str_flags & SF_STR_LOCATE_END)
- wav_write_strings (psf, SF_STR_LOCATE_END) ;
-
- /* Write the tailer. */
- if (psf->headindex > 0)
- psf_fwrite (psf->header, psf->headindex, 1, psf) ;
-
- return 0 ;
-} /* wav_write_tailer */
-
-static void
-wav_write_strings (SF_PRIVATE *psf, int location)
-{ int k, prev_head_index, saved_head_index ;
-
- prev_head_index = psf->headindex + 4 ;
-
- psf_binheader_writef (psf, "m4m", LIST_MARKER, 0xBADBAD, INFO_MARKER) ;
-
- for (k = 0 ; k < SF_MAX_STRINGS ; k++)
- { if (psf->strings [k].type == 0)
- break ;
- if (psf->strings [k].flags != location)
- continue ;
-
- switch (psf->strings [k].type)
- { case SF_STR_SOFTWARE :
- psf_binheader_writef (psf, "ms", ISFT_MARKER, psf->strings [k].str) ;
- break ;
-
- case SF_STR_TITLE :
- psf_binheader_writef (psf, "ms", INAM_MARKER, psf->strings [k].str) ;
- break ;
-
- case SF_STR_COPYRIGHT :
- psf_binheader_writef (psf, "ms", ICOP_MARKER, psf->strings [k].str) ;
- break ;
-
- case SF_STR_ARTIST :
- psf_binheader_writef (psf, "ms", IART_MARKER, psf->strings [k].str) ;
- break ;
-
- case SF_STR_COMMENT :
- psf_binheader_writef (psf, "ms", ICMT_MARKER, psf->strings [k].str) ;
- break ;
-
- case SF_STR_DATE :
- psf_binheader_writef (psf, "ms", ICRD_MARKER, psf->strings [k].str) ;
- break ;
- } ;
- } ;
-
- saved_head_index = psf->headindex ;
- psf->headindex = prev_head_index ;
- psf_binheader_writef (psf, "4", saved_head_index - prev_head_index - 4) ;
- psf->headindex = saved_head_index ;
-
-} /* wav_write_strings */
-
-static int
-wav_close (SF_PRIVATE *psf)
-{
- if (psf->mode == SFM_WRITE || psf->mode == SFM_RDWR)
- { wav_write_tailer (psf) ;
-
- psf->write_header (psf, SF_TRUE) ;
- } ;
-
- return 0 ;
-} /* wav_close */
-
-static int
-wav_command (SF_PRIVATE *psf, int command, void *data, int datasize)
-{
- /* Avoid compiler warnings. */
- psf = psf ;
- data = data ;
- datasize = datasize ;
-
- switch (command)
- { default : break ;
- } ;
-
- return 0 ;
-} /* wav_command */
-
-static int
-wav_subchunk_parse (SF_PRIVATE *psf, int chunk)
-{ sf_count_t current_pos ;
- char *cptr ;
- int dword, bytesread, length ;
-
- current_pos = psf_fseek (psf, 0, SEEK_CUR) ;
-
- bytesread = psf_binheader_readf (psf, "4", &length) ;
-
- if (length <= 8)
- { /* This case is for broken files generated by PEAK. */
- psf_log_printf (psf, "%M : %d (weird length)\n", chunk, length) ;
- psf_binheader_readf (psf, "mj", &chunk, length - 4) ;
- psf_log_printf (psf, " %M\n", chunk) ;
- return 0 ;
- } ;
-
- if (psf->headindex + length > SIGNED_SIZEOF (psf->header))
- { psf_log_printf (psf, "%M : %d (too long)\n", chunk, length) ;
- psf_binheader_readf (psf, "j", length) ;
- return 0 ;
- } ;
-
- if (current_pos + length > psf->filelength)
- { psf_log_printf (psf, "%M : %d (should be %d)\n", chunk, length, (int) (psf->filelength - current_pos)) ;
- length = psf->filelength - current_pos ;
- }
- else
- psf_log_printf (psf, "%M : %d\n", chunk, length) ;
-
- while (bytesread < length)
- { bytesread += psf_binheader_readf (psf, "m", &chunk) ;
-
- switch (chunk)
- { case adtl_MARKER :
- case INFO_MARKER :
- /* These markers don't contain anything. */
- psf_log_printf (psf, " %M\n", chunk) ;
- break ;
-
- case data_MARKER:
- psf_log_printf (psf, " %M inside a LIST block??? Backing out.\n", chunk) ;
- /* Jump back four bytes and return to caller. */
- psf_binheader_readf (psf, "j", -4) ;
- return 0 ;
-
- case ISFT_MARKER :
- case ICOP_MARKER :
- case IARL_MARKER :
- case IART_MARKER :
- case ICMT_MARKER :
- case ICRD_MARKER :
- case IENG_MARKER :
-
- case INAM_MARKER :
- case IPRD_MARKER :
- case ISBJ_MARKER :
- case ISRC_MARKER :
- bytesread += psf_binheader_readf (psf, "4", &dword) ;
- dword += (dword & 1) ;
- if (dword < 0 || dword > SIGNED_SIZEOF (psf->u.cbuf))
- { psf_log_printf (psf, " *** %M : %d (too big)\n", chunk, dword) ;
- psf_binheader_readf (psf, "j", dword) ;
- break ;
- } ;
-
- cptr = psf->u.cbuf ;
- psf_binheader_readf (psf, "b", cptr, dword) ;
- bytesread += dword ;
- cptr [dword - 1] = 0 ;
- psf_log_printf (psf, " %M : %s\n", chunk, cptr) ;
- break ;
-
- case labl_MARKER :
- { int mark_id ;
-
- bytesread += psf_binheader_readf (psf, "44", &dword, &mark_id) ;
- dword -= 4 ;
- dword += (dword & 1) ;
- if (dword < 1 || dword > SIGNED_SIZEOF (psf->u.cbuf))
- { psf_log_printf (psf, " *** %M : %d (too big)\n", chunk, dword) ;
- psf_binheader_readf (psf, "j", dword) ;
- break ;
- } ;
-
- cptr = psf->u.cbuf ;
- psf_binheader_readf (psf, "b", cptr, dword) ;
- bytesread += dword ;
- cptr [dword - 1] = 0 ;
- psf_log_printf (psf, " %M : %d : %s\n", chunk, mark_id, cptr) ;
- } ;
- break ;
-
-
- case DISP_MARKER :
- case ltxt_MARKER :
- case note_MARKER :
- bytesread += psf_binheader_readf (psf, "4", &dword) ;
- dword += (dword & 1) ;
- psf_binheader_readf (psf, "j", dword) ;
- bytesread += dword ;
- psf_log_printf (psf, " %M : %d\n", chunk, dword) ;
- break ;
-
- default :
- psf_binheader_readf (psf, "4", &dword) ;
- bytesread += sizeof (dword) ;
- dword += (dword & 1) ;
- psf_binheader_readf (psf, "j", dword) ;
- bytesread += dword ;
- psf_log_printf (psf, " *** %M : %d\n", chunk, dword) ;
- if (dword > length)
- return 0 ;
- break ;
- } ;
-
- switch (chunk)
- { case ISFT_MARKER :
- psf_store_string (psf, SF_STR_SOFTWARE, psf->u.cbuf) ;
- break ;
- case ICOP_MARKER :
- psf_store_string (psf, SF_STR_COPYRIGHT, psf->u.cbuf) ;
- break ;
- case INAM_MARKER :
- psf_store_string (psf, SF_STR_TITLE, psf->u.cbuf) ;
- break ;
- case IART_MARKER :
- psf_store_string (psf, SF_STR_ARTIST, psf->u.cbuf) ;
- break ;
- case ICMT_MARKER :
- psf_store_string (psf, SF_STR_COMMENT, psf->u.cbuf) ;
- break ;
- case ICRD_MARKER :
- psf_store_string (psf, SF_STR_DATE, psf->u.cbuf) ;
- break ;
- } ;
- } ;
-
- current_pos = psf_fseek (psf, 0, SEEK_CUR) - current_pos ;
-
- if (current_pos - 4 != length)
- psf_log_printf (psf, "**** Bad chunk length %d sbould be %D\n", length, current_pos - 4) ;
-
- return 0 ;
-} /* wav_subchunk_parse */
-
-static int
-wav_read_smpl_chunk (SF_PRIVATE *psf, unsigned int chunklen)
-{ unsigned int bytesread = 0, dword, sampler_data, loop_count ;
- unsigned int note, start, end, type = -1, count ;
- int j, k ;
-
- chunklen += (chunklen & 1) ;
-
- bytesread += psf_binheader_readf (psf, "4", &dword) ;
- psf_log_printf (psf, " Manufacturer : %X\n", dword) ;
-
- bytesread += psf_binheader_readf (psf, "4", &dword) ;
- psf_log_printf (psf, " Product : %u\n", dword) ;
-
- bytesread += psf_binheader_readf (psf, "4", &dword) ;
- psf_log_printf (psf, " Period : %u nsec\n", dword) ;
-
- bytesread += psf_binheader_readf (psf, "4", &note) ;
- psf_log_printf (psf, " Midi Note : %u\n", note) ;
-
- bytesread += psf_binheader_readf (psf, "4", &dword) ;
- if (dword != 0)
- { LSF_SNPRINTF (psf->u.cbuf, sizeof (psf->u.cbuf), "%f",
- (1.0 * 0x80000000) / ((unsigned int) dword)) ;
- psf_log_printf (psf, " Pitch Fract. : %s\n", psf->u.cbuf) ;
- }
- else
- psf_log_printf (psf, " Pitch Fract. : 0\n") ;
-
- bytesread += psf_binheader_readf (psf, "4", &dword) ;
- psf_log_printf (psf, " SMPTE Format : %u\n", dword) ;
-
- bytesread += psf_binheader_readf (psf, "4", &dword) ;
- LSF_SNPRINTF (psf->u.cbuf, sizeof (psf->u.cbuf), "%02d:%02d:%02d %02d",
- (dword >> 24) & 0x7F, (dword >> 16) & 0x7F, (dword >> 8) & 0x7F, dword & 0x7F) ;
- psf_log_printf (psf, " SMPTE Offset : %s\n", psf->u.cbuf) ;
-
- bytesread += psf_binheader_readf (psf, "4", &loop_count) ;
- psf_log_printf (psf, " Loop Count : %u\n", loop_count) ;
-
- /* Sampler Data holds the number of data bytes after the CUE chunks which
- ** is not actually CUE data. Display value after CUE data.
- */
- bytesread += psf_binheader_readf (psf, "4", &sampler_data) ;
-
- if ((psf->instrument = psf_instrument_alloc ()) == NULL)
- return SFE_MALLOC_FAILED ;
-
- psf->instrument->loop_count = loop_count ;
-
- for (j = 0 ; loop_count > 0 && chunklen - bytesread >= 24 ; j ++)
- { bytesread += psf_binheader_readf (psf, "4", &dword) ;
- psf_log_printf (psf, " Cue ID : %2u", dword) ;
-
- bytesread += psf_binheader_readf (psf, "4", &type) ;
- psf_log_printf (psf, " Type : %2u", type) ;
-
- bytesread += psf_binheader_readf (psf, "4", &start) ;
- psf_log_printf (psf, " Start : %5u", start) ;
-
- bytesread += psf_binheader_readf (psf, "4", &end) ;
- psf_log_printf (psf, " End : %5u", end) ;
-
- bytesread += psf_binheader_readf (psf, "4", &dword) ;
- psf_log_printf (psf, " Fraction : %5u", dword) ;
-
- bytesread += psf_binheader_readf (psf, "4", &count) ;
- psf_log_printf (psf, " Count : %5u\n", count) ;
-
- if (j < ARRAY_LEN (psf->instrument->loops))
- { psf->instrument->loops [j].start = start ;
- psf->instrument->loops [j].end = end ;
- psf->instrument->loops [j].count = count ;
-
- switch (type)
- { case 0 :
- psf->instrument->loops [j].mode = SF_LOOP_FORWARD ;
- break ;
- case 1 :
- psf->instrument->loops [j].mode = SF_LOOP_ALTERNATING ;
- break ;
- case 2 :
- psf->instrument->loops [j].mode = SF_LOOP_BACKWARD ;
- break ;
- default:
- psf->instrument->loops [j].mode = SF_LOOP_NONE ;
- break ;
- } ;
- } ;
-
- loop_count -- ;
- } ;
-
- if (chunklen - bytesread == 0)
- { if (sampler_data != 0)
- psf_log_printf (psf, " Sampler Data : %u (should be 0)\n", sampler_data) ;
- else
- psf_log_printf (psf, " Sampler Data : %u\n", sampler_data) ;
- }
- else
- { if (sampler_data != chunklen - bytesread)
- { psf_log_printf (psf, " Sampler Data : %u (should have been %u)\n", sampler_data, chunklen - bytesread) ;
- sampler_data = chunklen - bytesread ;
- }
- else
- psf_log_printf (psf, " Sampler Data : %u\n", sampler_data) ;
-
- psf_log_printf (psf, " ") ;
- for (k = 0 ; k < (int) sampler_data ; k++)
- { char ch ;
-
- if (k > 0 && (k % 20) == 0)
- psf_log_printf (psf, "\n ") ;
-
- bytesread += psf_binheader_readf (psf, "1", &ch) ;
- psf_log_printf (psf, "%02X ", ch & 0xFF) ;
- } ;
-
- psf_log_printf (psf, "\n") ;
- } ;
-
- psf->instrument->basenote = note ;
- psf->instrument->gain = 1 ;
- psf->instrument->velocity_lo = psf->instrument->key_lo = 0 ;
- psf->instrument->velocity_hi = psf->instrument->key_hi = 127 ;
-
- return 0 ;
-} /* wav_read_smpl_chunk */
-
-/*
-** The acid chunk goes a little something like this:
-**
-** 4 bytes 'acid'
-** 4 bytes (int) length of chunk starting at next byte
-**
-** 4 bytes (int) type of file:
-** this appears to be a bit mask,however some combinations
-** are probably impossible and/or qualified as "errors"
-**
-** 0x01 On: One Shot Off: Loop
-** 0x02 On: Root note is Set Off: No root
-** 0x04 On: Stretch is On, Off: Strech is OFF
-** 0x08 On: Disk Based Off: Ram based
-** 0x10 On: ?????????? Off: ????????? (Acidizer puts that ON)
-**
-** 2 bytes (short) root note
-** if type 0x10 is OFF : [C,C#,(...),B] -> [0x30 to 0x3B]
-** if type 0x10 is ON : [C,C#,(...),B] -> [0x3C to 0x47]
-** (both types fit on same MIDI pitch albeit different octaves, so who cares)
-**
-** 2 bytes (short) ??? always set to 0x8000
-** 4 bytes (float) ??? seems to be always 0
-** 4 bytes (int) number of beats
-** 2 bytes (short) meter denominator //always 4 in SF/ACID
-** 2 bytes (short) meter numerator //always 4 in SF/ACID
-** //are we sure about the order?? usually its num/denom
-** 4 bytes (float) tempo
-**
-*/
-
-static int
-wav_read_acid_chunk (SF_PRIVATE *psf, unsigned int chunklen)
-{ unsigned int bytesread = 0 ;
- int beats, flags ;
- short rootnote, q1, meter_denom, meter_numer ;
- float q2, tempo ;
-
- chunklen += (chunklen & 1) ;
-
- bytesread += psf_binheader_readf (psf, "422f", &flags, &rootnote, &q1, &q2) ;
-
- LSF_SNPRINTF (psf->u.cbuf, sizeof (psf->u.cbuf), "%f", q2) ;
-
- psf_log_printf (psf, " Flags : 0x%04x (%s,%s,%s,%s,%s)\n", flags,
- (flags & 0x01) ? "OneShot" : "Loop",
- (flags & 0x02) ? "RootNoteValid" : "RootNoteInvalid",
- (flags & 0x04) ? "StretchOn" : "StretchOff",
- (flags & 0x08) ? "DiskBased" : "RAMBased",
- (flags & 0x10) ? "??On" : "??Off") ;
-
- psf_log_printf (psf, " Root note : 0x%x\n ???? : 0x%04x\n ???? : %s\n",
- rootnote, q1, psf->u.cbuf) ;
-
- bytesread += psf_binheader_readf (psf, "422f", &beats, &meter_denom, &meter_numer, &tempo) ;
- LSF_SNPRINTF (psf->u.cbuf, sizeof (psf->u.cbuf), "%f", tempo) ;
- psf_log_printf (psf, " Beats : %d\n Meter : %d/%d\n Tempo : %s\n",
- beats, meter_numer, meter_denom, psf->u.cbuf) ;
-
- psf_binheader_readf (psf, "j", chunklen - bytesread) ;
-
- if ((psf->loop_info = calloc (1, sizeof (SF_LOOP_INFO))) == NULL)
- return SFE_MALLOC_FAILED ;
-
- psf->loop_info->time_sig_num = meter_numer ;
- psf->loop_info->time_sig_den = meter_denom ;
- psf->loop_info->loop_mode = (flags & 0x01) ? SF_LOOP_NONE : SF_LOOP_FORWARD ;
- psf->loop_info->num_beats = beats ;
- psf->loop_info->bpm = tempo ;
- psf->loop_info->root_key = (flags & 0x02) ? rootnote : -1 ;
-
- return 0 ;
-} /* wav_read_acid_chunk */
-
-int
-wav_read_bext_chunk (SF_PRIVATE *psf, unsigned int chunksize)
-{
- SF_BROADCAST_INFO* b ;
-
- if ((psf->broadcast_info = calloc (1, sizeof (SF_BROADCAST_INFO))) == NULL)
- { psf->error = SFE_MALLOC_FAILED ;
- return -1 ;
- } ;
-
- b = psf->broadcast_info ;
-
- psf_binheader_readf (psf, "b", b->description, sizeof (b->description)) ;
- psf_binheader_readf (psf, "b", b->originator, sizeof (b->originator)) ;
- psf_binheader_readf (psf, "b", b->originator_reference, sizeof (b->originator_reference)) ;
- psf_binheader_readf (psf, "b", b->origination_date, sizeof (b->origination_date)) ;
- psf_binheader_readf (psf, "b", b->origination_time, sizeof (b->origination_time)) ;
- psf_binheader_readf (psf, "442", &b->time_reference_low, &b->time_reference_high, &b->version) ;
- psf_binheader_readf (psf, "bj", &b->umid, sizeof (b->umid), 190) ;
-
- if (chunksize > WAV_BEXT_CHUNK_SIZE)
- { /* File has coding history data. */
-
- b->coding_history_size = chunksize - WAV_BEXT_CHUNK_SIZE ;
-
- if (b->coding_history_size > SIGNED_SIZEOF (b->coding_history))
- { free (psf->broadcast_info) ;
- psf->broadcast_info = NULL ;
- psf->error = SFE_MALLOC_FAILED ;
- return -1 ;
- } ;
-
- /* We do not parse the coding history */
- psf_binheader_readf (psf, "b", b->coding_history, b->coding_history_size) ;
- b->coding_history [sizeof (b->coding_history) - 1] = 0 ;
- } ;
-
- return 0 ;
-} /* wav_read_bext_chunk */
-
-static int
-wav_write_bext_chunk (SF_PRIVATE *psf)
-{ SF_BROADCAST_INFO *b ;
-
- if ((b = psf->broadcast_info) == NULL)
- return -1 ;
-
- psf_binheader_writef (psf, "m4", bext_MARKER, WAV_BEXT_CHUNK_SIZE + b->coding_history_size) ;
-
- /*
- ** Note that it is very important the the field widths of the SF_BROADCAST_INFO
- ** struct match those for the bext chunk fields.
- */
-
- psf_binheader_writef (psf, "b", b->description, sizeof (b->description)) ;
- psf_binheader_writef (psf, "b", b->originator, sizeof (b->originator)) ;
- psf_binheader_writef (psf, "b", b->originator_reference, sizeof (b->originator_reference)) ;
- psf_binheader_writef (psf, "b", b->origination_date, sizeof (b->origination_date)) ;
- psf_binheader_writef (psf, "b", b->origination_time, sizeof (b->origination_time)) ;
- psf_binheader_writef (psf, "442", b->time_reference_low, b->time_reference_high, b->version) ;
- psf_binheader_writef (psf, "b", b->umid, sizeof (b->umid)) ;
- psf_binheader_writef (psf, "z", make_size_t (190)) ;
-
- if (b->coding_history_size > 0)
- psf_binheader_writef (psf, "b", b->coding_history, b->coding_history_size) ;
-
- return 0 ;
-} /* wav_write_bext_chunk */
-
-/*
-** Do not edit or modify anything in this comment block.
-** The arch-tag line is a file identity tag for the GNU Arch
-** revision control system.
-**
-** arch-tag: 9c551689-a1d8-4905-9f56-26a204374f18
-*/
diff --git a/libs/libsndfile/src/wav_w64.c b/libs/libsndfile/src/wav_w64.c
deleted file mode 100644
index 85cb1323ec..0000000000
--- a/libs/libsndfile/src/wav_w64.c
+++ /dev/null
@@ -1,494 +0,0 @@
-/*
-** Copyright (C) 1999-2005 Erik de Castro Lopo <erikd@mega-nerd.com>
-** Copyright (C) 2004-2005 David Viens <davidv@plogue.com>
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU Lesser General Public License as published by
-** the Free Software Foundation; either version 2.1 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU Lesser General Public License for more details.
-**
-** You should have received a copy of the GNU Lesser General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-*/
-
-#include "sfconfig.h"
-
-#include <stdio.h>
-#include <string.h>
-#include <ctype.h>
-#include <time.h>
-
-#include "sndfile.h"
-#include "sfendian.h"
-#include "common.h"
-#include "wav_w64.h"
-
-/* Known WAVEFORMATEXTENSIBLE GUIDS. */
-static const EXT_SUBFORMAT MSGUID_SUBTYPE_PCM =
-{ 0x00000001, 0x0000, 0x0010, { 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71 }
-} ;
-
-static const EXT_SUBFORMAT MSGUID_SUBTYPE_MS_ADPCM =
-{ 0x00000002, 0x0000, 0x0010, { 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71 }
-} ;
-
-static const EXT_SUBFORMAT MSGUID_SUBTYPE_IEEE_FLOAT =
-{ 0x00000003, 0x0000, 0x0010, { 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71 }
-} ;
-
-static const EXT_SUBFORMAT MSGUID_SUBTYPE_ALAW =
-{ 0x00000006, 0x0000, 0x0010, { 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71 }
-} ;
-
-static const EXT_SUBFORMAT MSGUID_SUBTYPE_MULAW =
-{ 0x00000007, 0x0000, 0x0010, { 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71 }
-} ;
-
-/*
-** the next two are from
-** http://dream.cs.bath.ac.uk/researchdev/wave-ex/bformat.html
-*/
-
-static const EXT_SUBFORMAT MSGUID_SUBTYPE_AMBISONIC_B_FORMAT_PCM =
-{ 0x00000001, 0x0721, 0x11d3, { 0x86, 0x44, 0xC8, 0xC1, 0xCA, 0x00, 0x00, 0x00 }
-} ;
-
-static const EXT_SUBFORMAT MSGUID_SUBTYPE_AMBISONIC_B_FORMAT_IEEE_FLOAT =
-{ 0x00000003, 0x0721, 0x11d3, { 0x86, 0x44, 0xC8, 0xC1, 0xCA, 0x00, 0x00, 0x00 }
-} ;
-
-
-#if 0
-/* maybe interesting one day to read the following through sf_read_raw */
-/* http://www.bath.ac.uk/~masrwd/pvocex/pvocex.html */
-static const EXT_SUBFORMAT MSGUID_SUBTYPE_PVOCEX =
-{ 0x8312B9C2, 0x2E6E, 0x11d4, { 0xA8, 0x24, 0xDE, 0x5B, 0x96, 0xC3, 0xAB, 0x21 }
-} ;
-#endif
-
-/*------------------------------------------------------------------------------
- * Private static functions.
- */
-
-static int
-wavex_write_guid_equal (const EXT_SUBFORMAT * first, const EXT_SUBFORMAT * second)
-{ return !memcmp (first, second, sizeof (EXT_SUBFORMAT)) ;
-} /* wavex_write_guid_equal */
-
-
-
-int
-wav_w64_read_fmt_chunk (SF_PRIVATE *psf, WAV_FMT *wav_fmt, int structsize)
-{ int bytesread, k, bytespersec = 0 ;
-
- memset (wav_fmt, 0, sizeof (WAV_FMT)) ;
-
- if (structsize < 16)
- return SFE_WAV_FMT_SHORT ;
-
- /* assume psf->rwf_endian is already properly set */
-
- /* Read the minimal WAV file header here. */
- bytesread =
- psf_binheader_readf (psf, "224422", &(wav_fmt->format), &(wav_fmt->min.channels),
- &(wav_fmt->min.samplerate), &(wav_fmt->min.bytespersec),
- &(wav_fmt->min.blockalign), &(wav_fmt->min.bitwidth)) ;
-
- psf_log_printf (psf, " Format : 0x%X => %s\n", wav_fmt->format, wav_w64_format_str (wav_fmt->format)) ;
- psf_log_printf (psf, " Channels : %d\n", wav_fmt->min.channels) ;
- psf_log_printf (psf, " Sample Rate : %d\n", wav_fmt->min.samplerate) ;
- psf_log_printf (psf, " Block Align : %d\n", wav_fmt->min.blockalign) ;
-
- if (wav_fmt->format == WAVE_FORMAT_PCM && wav_fmt->min.bitwidth == 24 &&
- wav_fmt->min.blockalign == 4 * wav_fmt->min.channels)
- {
- psf_log_printf (psf, "\nInvalid file generated by Syntrillium's Cooledit!\n"
- "Treating as WAVE_FORMAT_IEEE_FLOAT 32 bit floating point file.\n\n") ;
- psf_log_printf (psf, " Bit Width : 24 (should be 32)\n") ;
- wav_fmt->min.bitwidth = 32 ;
- wav_fmt->format = WAVE_FORMAT_IEEE_FLOAT ;
- }
- else if (wav_fmt->format != WAVE_FORMAT_GSM610 && wav_fmt->min.bitwidth == 0)
- psf_log_printf (psf, " Bit Width : %d (should not be 0)\n", wav_fmt->min.bitwidth) ;
- else if (wav_fmt->format == WAVE_FORMAT_GSM610 && wav_fmt->min.bitwidth != 0)
- psf_log_printf (psf, " Bit Width : %d (should be 0)\n", wav_fmt->min.bitwidth) ;
- else
- psf_log_printf (psf, " Bit Width : %d\n", wav_fmt->min.bitwidth) ;
-
- psf->sf.samplerate = wav_fmt->min.samplerate ;
- psf->sf.frames = 0 ; /* Correct this when reading data chunk. */
- psf->sf.channels = wav_fmt->min.channels ;
-
- switch (wav_fmt->format)
- { case WAVE_FORMAT_PCM :
- case WAVE_FORMAT_IEEE_FLOAT :
- bytespersec = wav_fmt->min.samplerate * wav_fmt->min.blockalign ;
- if (wav_fmt->min.bytespersec != (unsigned) bytespersec)
- psf_log_printf (psf, " Bytes/sec : %d (should be %d)\n", wav_fmt->min.bytespersec, bytespersec) ;
- else
- psf_log_printf (psf, " Bytes/sec : %d\n", wav_fmt->min.bytespersec) ;
-
- psf->bytewidth = BITWIDTH2BYTES (wav_fmt->min.bitwidth) ;
- break ;
-
- case WAVE_FORMAT_ALAW :
- case WAVE_FORMAT_MULAW :
- if (wav_fmt->min.bytespersec / wav_fmt->min.blockalign != wav_fmt->min.samplerate)
- psf_log_printf (psf, " Bytes/sec : %d (should be %d)\n", wav_fmt->min.bytespersec, wav_fmt->min.samplerate * wav_fmt->min.blockalign) ;
- else
- psf_log_printf (psf, " Bytes/sec : %d\n", wav_fmt->min.bytespersec) ;
-
- psf->bytewidth = 1 ;
- if (structsize >= 18)
- { bytesread += psf_binheader_readf (psf, "2", &(wav_fmt->size20.extrabytes)) ;
- psf_log_printf (psf, " Extra Bytes : %d\n", wav_fmt->size20.extrabytes) ;
- } ;
- break ;
-
- case WAVE_FORMAT_IMA_ADPCM :
- if (wav_fmt->min.bitwidth != 4)
- return SFE_WAV_ADPCM_NOT4BIT ;
- if (wav_fmt->min.channels < 1 || wav_fmt->min.channels > 2)
- return SFE_WAV_ADPCM_CHANNELS ;
-
- bytesread +=
- psf_binheader_readf (psf, "22", &(wav_fmt->ima.extrabytes), &(wav_fmt->ima.samplesperblock)) ;
-
- bytespersec = (wav_fmt->ima.samplerate * wav_fmt->ima.blockalign) / wav_fmt->ima.samplesperblock ;
- if (wav_fmt->ima.bytespersec != (unsigned) bytespersec)
- psf_log_printf (psf, " Bytes/sec : %d (should be %d)\n", wav_fmt->ima.bytespersec, bytespersec) ;
- else
- psf_log_printf (psf, " Bytes/sec : %d\n", wav_fmt->ima.bytespersec) ;
-
- psf->bytewidth = 2 ;
- psf_log_printf (psf, " Extra Bytes : %d\n", wav_fmt->ima.extrabytes) ;
- psf_log_printf (psf, " Samples/Block : %d\n", wav_fmt->ima.samplesperblock) ;
- break ;
-
- case WAVE_FORMAT_MS_ADPCM :
- if (wav_fmt->msadpcm.bitwidth != 4)
- return SFE_WAV_ADPCM_NOT4BIT ;
- if (wav_fmt->msadpcm.channels < 1 || wav_fmt->msadpcm.channels > 2)
- return SFE_WAV_ADPCM_CHANNELS ;
-
- bytesread +=
- psf_binheader_readf (psf, "222", &(wav_fmt->msadpcm.extrabytes),
- &(wav_fmt->msadpcm.samplesperblock), &(wav_fmt->msadpcm.numcoeffs)) ;
-
- bytespersec = (wav_fmt->min.samplerate * wav_fmt->min.blockalign) / wav_fmt->msadpcm.samplesperblock ;
- if (wav_fmt->min.bytespersec == (unsigned) bytespersec)
- psf_log_printf (psf, " Bytes/sec : %d\n", wav_fmt->min.bytespersec) ;
- else if (wav_fmt->min.bytespersec == (wav_fmt->min.samplerate / wav_fmt->msadpcm.samplesperblock) * wav_fmt->min.blockalign)
- psf_log_printf (psf, " Bytes/sec : %d (should be %d (MS BUG!))\n", wav_fmt->min.bytespersec, bytespersec) ;
- else
- psf_log_printf (psf, " Bytes/sec : %d (should be %d)\n", wav_fmt->min.bytespersec, bytespersec) ;
-
-
- psf->bytewidth = 2 ;
- psf_log_printf (psf, " Extra Bytes : %d\n", wav_fmt->msadpcm.extrabytes) ;
- psf_log_printf (psf, " Samples/Block : %d\n", wav_fmt->msadpcm.samplesperblock) ;
- if (wav_fmt->msadpcm.numcoeffs > SIGNED_SIZEOF (MS_ADPCM_WAV_FMT) / SIGNED_SIZEOF (int))
- { psf_log_printf (psf, " No. of Coeffs : %d ****\n", wav_fmt->msadpcm.numcoeffs) ;
- wav_fmt->msadpcm.numcoeffs = SIGNED_SIZEOF (MS_ADPCM_WAV_FMT) / SIGNED_SIZEOF (int) ;
- }
- else
- psf_log_printf (psf, " No. of Coeffs : %d\n", wav_fmt->msadpcm.numcoeffs) ;
-
- psf_log_printf (psf, " Index Coeffs1 Coeffs2\n") ;
- for (k = 0 ; k < wav_fmt->msadpcm.numcoeffs ; k++)
- { bytesread +=
- psf_binheader_readf (psf, "22", &(wav_fmt->msadpcm.coeffs [k].coeff1), &(wav_fmt->msadpcm.coeffs [k].coeff2)) ;
- LSF_SNPRINTF (psf->u.cbuf, sizeof (psf->u.cbuf), " %2d %7d %7d\n", k, wav_fmt->msadpcm.coeffs [k].coeff1, wav_fmt->msadpcm.coeffs [k].coeff2) ;
- psf_log_printf (psf, psf->u.cbuf) ;
- } ;
- break ;
-
- case WAVE_FORMAT_GSM610 :
- if (wav_fmt->gsm610.channels != 1 || wav_fmt->gsm610.blockalign != 65)
- return SFE_WAV_GSM610_FORMAT ;
-
- bytesread +=
- psf_binheader_readf (psf, "22", &(wav_fmt->gsm610.extrabytes), &(wav_fmt->gsm610.samplesperblock)) ;
-
- if (wav_fmt->gsm610.samplesperblock != 320)
- return SFE_WAV_GSM610_FORMAT ;
-
- bytespersec = (wav_fmt->gsm610.samplerate * wav_fmt->gsm610.blockalign) / wav_fmt->gsm610.samplesperblock ;
- if (wav_fmt->gsm610.bytespersec != (unsigned) bytespersec)
- psf_log_printf (psf, " Bytes/sec : %d (should be %d)\n", wav_fmt->gsm610.bytespersec, bytespersec) ;
- else
- psf_log_printf (psf, " Bytes/sec : %d\n", wav_fmt->gsm610.bytespersec) ;
-
- psf->bytewidth = 2 ;
- psf_log_printf (psf, " Extra Bytes : %d\n", wav_fmt->gsm610.extrabytes) ;
- psf_log_printf (psf, " Samples/Block : %d\n", wav_fmt->gsm610.samplesperblock) ;
- break ;
-
- case WAVE_FORMAT_EXTENSIBLE :
- if (wav_fmt->ext.bytespersec / wav_fmt->ext.blockalign != wav_fmt->ext.samplerate)
- psf_log_printf (psf, " Bytes/sec : %d (should be %d)\n", wav_fmt->ext.bytespersec, wav_fmt->ext.samplerate * wav_fmt->ext.blockalign) ;
- else
- psf_log_printf (psf, " Bytes/sec : %d\n", wav_fmt->ext.bytespersec) ;
-
- bytesread +=
- psf_binheader_readf (psf, "224", &(wav_fmt->ext.extrabytes), &(wav_fmt->ext.validbits),
- &(wav_fmt->ext.channelmask)) ;
-
- psf_log_printf (psf, " Valid Bits : %d\n", wav_fmt->ext.validbits) ;
- psf_log_printf (psf, " Channel Mask : 0x%X\n", wav_fmt->ext.channelmask) ;
-
- bytesread +=
- psf_binheader_readf (psf, "422", &(wav_fmt->ext.esf.esf_field1), &(wav_fmt->ext.esf.esf_field2),
- &(wav_fmt->ext.esf.esf_field3)) ;
-
- /* compare the esf_fields with each known GUID? and print? */
- psf_log_printf (psf, " Subformat\n") ;
- psf_log_printf (psf, " esf_field1 : 0x%X\n", wav_fmt->ext.esf.esf_field1) ;
- psf_log_printf (psf, " esf_field2 : 0x%X\n", wav_fmt->ext.esf.esf_field2) ;
- psf_log_printf (psf, " esf_field3 : 0x%X\n", wav_fmt->ext.esf.esf_field3) ;
- psf_log_printf (psf, " esf_field4 : ") ;
- for (k = 0 ; k < 8 ; k++)
- { bytesread += psf_binheader_readf (psf, "1", &(wav_fmt->ext.esf.esf_field4 [k])) ;
- psf_log_printf (psf, "0x%X ", wav_fmt->ext.esf.esf_field4 [k] & 0xFF) ;
- } ;
- psf_log_printf (psf, "\n") ;
- psf->bytewidth = BITWIDTH2BYTES (wav_fmt->ext.bitwidth) ;
-
- /* Compare GUIDs for known ones. */
- if (wavex_write_guid_equal (&wav_fmt->ext.esf, &MSGUID_SUBTYPE_PCM)
- || wavex_write_guid_equal (&wav_fmt->ext.esf, &MSGUID_SUBTYPE_AMBISONIC_B_FORMAT_PCM))
- { psf->sf.format = SF_FORMAT_WAVEX | u_bitwidth_to_subformat (psf->bytewidth * 8) ;
- psf_log_printf (psf, " format : pcm\n") ;
- }
- else if (wavex_write_guid_equal (&wav_fmt->ext.esf, &MSGUID_SUBTYPE_MS_ADPCM))
- { psf->sf.format = (SF_FORMAT_WAVEX | SF_FORMAT_MS_ADPCM) ;
- psf_log_printf (psf, " format : ms adpcm\n") ;
- }
- else if (wavex_write_guid_equal (&wav_fmt->ext.esf, &MSGUID_SUBTYPE_IEEE_FLOAT)
- || wavex_write_guid_equal (&wav_fmt->ext.esf, &MSGUID_SUBTYPE_AMBISONIC_B_FORMAT_PCM))
- { psf->sf.format = SF_FORMAT_WAVEX | ((psf->bytewidth == 8) ? SF_FORMAT_DOUBLE : SF_FORMAT_FLOAT) ;
- psf_log_printf (psf, " format : IEEE float\n") ;
- }
- else if (wavex_write_guid_equal (&wav_fmt->ext.esf, &MSGUID_SUBTYPE_ALAW))
- { psf->sf.format = (SF_FORMAT_WAVEX | SF_FORMAT_ALAW) ;
- psf_log_printf (psf, " format : A-law\n") ;
- }
- else if (wavex_write_guid_equal (&wav_fmt->ext.esf, &MSGUID_SUBTYPE_MULAW))
- { psf->sf.format = (SF_FORMAT_WAVEX | SF_FORMAT_ULAW) ;
- psf_log_printf (psf, " format : u-law\n") ;
- }
- else
- return SFE_UNIMPLEMENTED ;
- break ;
-
- case WAVE_FORMAT_G721_ADPCM :
- psf_log_printf (psf, " Bytes/sec : %d\n", wav_fmt->g72x.bytespersec) ;
- if (structsize >= 20)
- { bytesread += psf_binheader_readf (psf, "22", &(wav_fmt->g72x.extrabytes), &(wav_fmt->g72x.auxblocksize)) ;
- if (wav_fmt->g72x.extrabytes == 0)
- psf_log_printf (psf, " Extra Bytes : %d (should be 2)\n", wav_fmt->g72x.extrabytes) ;
- else
- psf_log_printf (psf, " Extra Bytes : %d\n", wav_fmt->g72x.extrabytes) ;
- psf_log_printf (psf, " Aux Blk Size : %d\n", wav_fmt->g72x.auxblocksize) ;
- }
- else if (structsize == 18)
- { bytesread += psf_binheader_readf (psf, "2", &(wav_fmt->g72x.extrabytes)) ;
- psf_log_printf (psf, " Extra Bytes : %d%s\n", wav_fmt->g72x.extrabytes, wav_fmt->g72x.extrabytes != 0 ? " (should be 0)" : "") ;
- }
- else
- psf_log_printf (psf, "*** 'fmt ' chunk should be bigger than this!\n") ;
- break ;
-
- default :
- psf_log_printf (psf, "*** No 'fmt ' chunk dumper for this format!\n") ;
- break ;
- } ;
-
- if (bytesread > structsize)
- { psf_log_printf (psf, "*** wav_w64_read_fmt_chunk (bytesread > structsize)\n") ;
- return SFE_W64_FMT_SHORT ;
- }
- else
- psf_binheader_readf (psf, "j", structsize - bytesread) ;
-
- psf->blockwidth = wav_fmt->min.channels * psf->bytewidth ;
-
- return 0 ;
-} /* wav_w64_read_fmt_chunk */
-
-void
-wavex_write_guid (SF_PRIVATE *psf, const EXT_SUBFORMAT * subformat)
-{
- psf_binheader_writef (psf, "422b", subformat->esf_field1,
- subformat->esf_field2, subformat->esf_field3,
- subformat->esf_field4, 8) ;
-} /* wavex_write_guid */
-
-
-/*==============================================================================
-*/
-
-typedef struct
-{ int ID ;
- const char *name ;
-} WAV_FORMAT_DESC ;
-
-#define STR(x) #x
-#define FORMAT_TYPE(x) { x, STR (x) }
-
-static WAV_FORMAT_DESC wave_descs [] =
-{ FORMAT_TYPE (WAVE_FORMAT_PCM),
- FORMAT_TYPE (WAVE_FORMAT_MS_ADPCM),
- FORMAT_TYPE (WAVE_FORMAT_IEEE_FLOAT),
- FORMAT_TYPE (WAVE_FORMAT_VSELP),
- FORMAT_TYPE (WAVE_FORMAT_IBM_CVSD),
- FORMAT_TYPE (WAVE_FORMAT_ALAW),
- FORMAT_TYPE (WAVE_FORMAT_MULAW),
- FORMAT_TYPE (WAVE_FORMAT_OKI_ADPCM),
- FORMAT_TYPE (WAVE_FORMAT_IMA_ADPCM),
- FORMAT_TYPE (WAVE_FORMAT_MEDIASPACE_ADPCM),
- FORMAT_TYPE (WAVE_FORMAT_SIERRA_ADPCM),
- FORMAT_TYPE (WAVE_FORMAT_G723_ADPCM),
- FORMAT_TYPE (WAVE_FORMAT_DIGISTD),
- FORMAT_TYPE (WAVE_FORMAT_DIGIFIX),
- FORMAT_TYPE (WAVE_FORMAT_DIALOGIC_OKI_ADPCM),
- FORMAT_TYPE (WAVE_FORMAT_MEDIAVISION_ADPCM),
- FORMAT_TYPE (WAVE_FORMAT_CU_CODEC),
- FORMAT_TYPE (WAVE_FORMAT_YAMAHA_ADPCM),
- FORMAT_TYPE (WAVE_FORMAT_SONARC),
- FORMAT_TYPE (WAVE_FORMAT_DSPGROUP_TRUESPEECH),
- FORMAT_TYPE (WAVE_FORMAT_ECHOSC1),
- FORMAT_TYPE (WAVE_FORMAT_AUDIOFILE_AF36),
- FORMAT_TYPE (WAVE_FORMAT_APTX),
- FORMAT_TYPE (WAVE_FORMAT_AUDIOFILE_AF10),
- FORMAT_TYPE (WAVE_FORMAT_PROSODY_1612),
- FORMAT_TYPE (WAVE_FORMAT_LRC),
- FORMAT_TYPE (WAVE_FORMAT_DOLBY_AC2),
- FORMAT_TYPE (WAVE_FORMAT_GSM610),
- FORMAT_TYPE (WAVE_FORMAT_MSNAUDIO),
- FORMAT_TYPE (WAVE_FORMAT_ANTEX_ADPCME),
- FORMAT_TYPE (WAVE_FORMAT_CONTROL_RES_VQLPC),
- FORMAT_TYPE (WAVE_FORMAT_DIGIREAL),
- FORMAT_TYPE (WAVE_FORMAT_DIGIADPCM),
- FORMAT_TYPE (WAVE_FORMAT_CONTROL_RES_CR10),
- FORMAT_TYPE (WAVE_FORMAT_NMS_VBXADPCM),
- FORMAT_TYPE (WAVE_FORMAT_ROLAND_RDAC),
- FORMAT_TYPE (WAVE_FORMAT_ECHOSC3),
- FORMAT_TYPE (WAVE_FORMAT_ROCKWELL_ADPCM),
- FORMAT_TYPE (WAVE_FORMAT_ROCKWELL_DIGITALK),
- FORMAT_TYPE (WAVE_FORMAT_XEBEC),
- FORMAT_TYPE (WAVE_FORMAT_G721_ADPCM),
- FORMAT_TYPE (WAVE_FORMAT_G728_CELP),
- FORMAT_TYPE (WAVE_FORMAT_MSG723),
- FORMAT_TYPE (WAVE_FORMAT_MPEG),
- FORMAT_TYPE (WAVE_FORMAT_RT24),
- FORMAT_TYPE (WAVE_FORMAT_PAC),
- FORMAT_TYPE (WAVE_FORMAT_MPEGLAYER3),
- FORMAT_TYPE (WAVE_FORMAT_LUCENT_G723),
- FORMAT_TYPE (WAVE_FORMAT_CIRRUS),
- FORMAT_TYPE (WAVE_FORMAT_ESPCM),
- FORMAT_TYPE (WAVE_FORMAT_VOXWARE),
- FORMAT_TYPE (WAVE_FORMAT_CANOPUS_ATRAC),
- FORMAT_TYPE (WAVE_FORMAT_G726_ADPCM),
- FORMAT_TYPE (WAVE_FORMAT_G722_ADPCM),
- FORMAT_TYPE (WAVE_FORMAT_DSAT),
- FORMAT_TYPE (WAVE_FORMAT_DSAT_DISPLAY),
- FORMAT_TYPE (WAVE_FORMAT_VOXWARE_BYTE_ALIGNED),
- FORMAT_TYPE (WAVE_FORMAT_VOXWARE_AC8),
- FORMAT_TYPE (WAVE_FORMAT_VOXWARE_AC10),
- FORMAT_TYPE (WAVE_FORMAT_VOXWARE_AC16),
- FORMAT_TYPE (WAVE_FORMAT_VOXWARE_AC20),
- FORMAT_TYPE (WAVE_FORMAT_VOXWARE_RT24),
- FORMAT_TYPE (WAVE_FORMAT_VOXWARE_RT29),
- FORMAT_TYPE (WAVE_FORMAT_VOXWARE_RT29HW),
- FORMAT_TYPE (WAVE_FORMAT_VOXWARE_VR12),
- FORMAT_TYPE (WAVE_FORMAT_VOXWARE_VR18),
- FORMAT_TYPE (WAVE_FORMAT_VOXWARE_TQ40),
- FORMAT_TYPE (WAVE_FORMAT_SOFTSOUND),
- FORMAT_TYPE (WAVE_FORMAT_VOXARE_TQ60),
- FORMAT_TYPE (WAVE_FORMAT_MSRT24),
- FORMAT_TYPE (WAVE_FORMAT_G729A),
- FORMAT_TYPE (WAVE_FORMAT_MVI_MV12),
- FORMAT_TYPE (WAVE_FORMAT_DF_G726),
- FORMAT_TYPE (WAVE_FORMAT_DF_GSM610),
- FORMAT_TYPE (WAVE_FORMAT_ONLIVE),
- FORMAT_TYPE (WAVE_FORMAT_SBC24),
- FORMAT_TYPE (WAVE_FORMAT_DOLBY_AC3_SPDIF),
- FORMAT_TYPE (WAVE_FORMAT_ZYXEL_ADPCM),
- FORMAT_TYPE (WAVE_FORMAT_PHILIPS_LPCBB),
- FORMAT_TYPE (WAVE_FORMAT_PACKED),
- FORMAT_TYPE (WAVE_FORMAT_RHETOREX_ADPCM),
- FORMAT_TYPE (IBM_FORMAT_MULAW),
- FORMAT_TYPE (IBM_FORMAT_ALAW),
- FORMAT_TYPE (IBM_FORMAT_ADPCM),
- FORMAT_TYPE (WAVE_FORMAT_VIVO_G723),
- FORMAT_TYPE (WAVE_FORMAT_VIVO_SIREN),
- FORMAT_TYPE (WAVE_FORMAT_DIGITAL_G723),
- FORMAT_TYPE (WAVE_FORMAT_CREATIVE_ADPCM),
- FORMAT_TYPE (WAVE_FORMAT_CREATIVE_FASTSPEECH8),
- FORMAT_TYPE (WAVE_FORMAT_CREATIVE_FASTSPEECH10),
- FORMAT_TYPE (WAVE_FORMAT_QUARTERDECK),
- FORMAT_TYPE (WAVE_FORMAT_FM_TOWNS_SND),
- FORMAT_TYPE (WAVE_FORMAT_BZV_DIGITAL),
- FORMAT_TYPE (WAVE_FORMAT_VME_VMPCM),
- FORMAT_TYPE (WAVE_FORMAT_OLIGSM),
- FORMAT_TYPE (WAVE_FORMAT_OLIADPCM),
- FORMAT_TYPE (WAVE_FORMAT_OLICELP),
- FORMAT_TYPE (WAVE_FORMAT_OLISBC),
- FORMAT_TYPE (WAVE_FORMAT_OLIOPR),
- FORMAT_TYPE (WAVE_FORMAT_LH_CODEC),
- FORMAT_TYPE (WAVE_FORMAT_NORRIS),
- FORMAT_TYPE (WAVE_FORMAT_SOUNDSPACE_MUSICOMPRESS),
- FORMAT_TYPE (WAVE_FORMAT_DVM),
- FORMAT_TYPE (WAVE_FORMAT_INTERWAV_VSC112),
- FORMAT_TYPE (WAVE_FORMAT_EXTENSIBLE),
-} ;
-
-char const*
-wav_w64_format_str (int k)
-{ int lower, upper, mid ;
-
- lower = -1 ;
- upper = sizeof (wave_descs) / sizeof (WAV_FORMAT_DESC) ;
-
- /* binary search */
- if ((wave_descs [0].ID <= k) & (k <= wave_descs [upper - 1].ID))
- {
- while (lower + 1 < upper)
- { mid = (upper + lower) / 2 ;
-
- if (k == wave_descs [mid].ID)
- return wave_descs [mid].name ;
- if (k < wave_descs [mid].ID)
- upper = mid ;
- else
- lower = mid ;
- } ;
- } ;
-
- return "Unknown format" ;
-} /* wav_w64_format_str */
-
-int
-wav_w64_srate2blocksize (int srate_chan_product)
-{ if (srate_chan_product < 12000)
- return 256 ;
- if (srate_chan_product < 23000)
- return 512 ;
- if (srate_chan_product < 44000)
- return 1024 ;
- return 2048 ;
-} /* srate2blocksize */
-/*
-** Do not edit or modify anything in this comment block.
-** The arch-tag line is a file identity tag for the GNU Arch
-** revision control system.
-**
-** arch-tag: 43c1b1dd-8abd-43da-a8cd-44da914b64a5
-*/
diff --git a/libs/libsndfile/src/wav_w64.h b/libs/libsndfile/src/wav_w64.h
deleted file mode 100644
index 3f33f1b800..0000000000
--- a/libs/libsndfile/src/wav_w64.h
+++ /dev/null
@@ -1,283 +0,0 @@
-/*
-** Copyright (C) 1999-2005 Erik de Castro Lopo <erikd@mega-nerd.com>
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU Lesser General Public License as published by
-** the Free Software Foundation; either version 2.1 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU Lesser General Public License for more details.
-**
-** You should have received a copy of the GNU Lesser General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-*/
-
-/* This file contains definitions commong to WAV and W64 files. */
-
-
-#ifndef WAV_W64_H_INCLUDED
-#define WAV_W64_H_INCLUDED
-
-/*------------------------------------------------------------------------------
-** List of known WAV format tags
-*/
-
-enum
-{
- /* keep sorted for wav_w64_format_str() */
- WAVE_FORMAT_UNKNOWN = 0x0000, /* Microsoft Corporation */
- WAVE_FORMAT_PCM = 0x0001, /* Microsoft PCM format */
- WAVE_FORMAT_MS_ADPCM = 0x0002, /* Microsoft ADPCM */
- WAVE_FORMAT_IEEE_FLOAT = 0x0003, /* Micrososft 32 bit float format */
- WAVE_FORMAT_VSELP = 0x0004, /* Compaq Computer Corporation */
- WAVE_FORMAT_IBM_CVSD = 0x0005, /* IBM Corporation */
- WAVE_FORMAT_ALAW = 0x0006, /* Microsoft Corporation */
- WAVE_FORMAT_MULAW = 0x0007, /* Microsoft Corporation */
- WAVE_FORMAT_OKI_ADPCM = 0x0010, /* OKI */
- WAVE_FORMAT_IMA_ADPCM = 0x0011, /* Intel Corporation */
- WAVE_FORMAT_MEDIASPACE_ADPCM = 0x0012, /* Videologic */
- WAVE_FORMAT_SIERRA_ADPCM = 0x0013, /* Sierra Semiconductor Corp */
- WAVE_FORMAT_G723_ADPCM = 0x0014, /* Antex Electronics Corporation */
- WAVE_FORMAT_DIGISTD = 0x0015, /* DSP Solutions, Inc. */
- WAVE_FORMAT_DIGIFIX = 0x0016, /* DSP Solutions, Inc. */
- WAVE_FORMAT_DIALOGIC_OKI_ADPCM = 0x0017, /* Dialogic Corporation */
- WAVE_FORMAT_MEDIAVISION_ADPCM = 0x0018, /* Media Vision, Inc. */
- WAVE_FORMAT_CU_CODEC = 0x0019, /* Hewlett-Packard Company */
- WAVE_FORMAT_YAMAHA_ADPCM = 0x0020, /* Yamaha Corporation of America */
- WAVE_FORMAT_SONARC = 0x0021, /* Speech Compression */
- WAVE_FORMAT_DSPGROUP_TRUESPEECH = 0x0022, /* DSP Group, Inc */
- WAVE_FORMAT_ECHOSC1 = 0x0023, /* Echo Speech Corporation */
- WAVE_FORMAT_AUDIOFILE_AF36 = 0x0024, /* Audiofile, Inc. */
- WAVE_FORMAT_APTX = 0x0025, /* Audio Processing Technology */
- WAVE_FORMAT_AUDIOFILE_AF10 = 0x0026, /* Audiofile, Inc. */
- WAVE_FORMAT_PROSODY_1612 = 0x0027, /* Aculab plc */
- WAVE_FORMAT_LRC = 0x0028, /* Merging Technologies S.A. */
- WAVE_FORMAT_DOLBY_AC2 = 0x0030, /* Dolby Laboratories */
- WAVE_FORMAT_GSM610 = 0x0031, /* Microsoft Corporation */
- WAVE_FORMAT_MSNAUDIO = 0x0032, /* Microsoft Corporation */
- WAVE_FORMAT_ANTEX_ADPCME = 0x0033, /* Antex Electronics Corporation */
- WAVE_FORMAT_CONTROL_RES_VQLPC = 0x0034, /* Control Resources Limited */
- WAVE_FORMAT_DIGIREAL = 0x0035, /* DSP Solutions, Inc. */
- WAVE_FORMAT_DIGIADPCM = 0x0036, /* DSP Solutions, Inc. */
- WAVE_FORMAT_CONTROL_RES_CR10 = 0x0037, /* Control Resources Limited */
- WAVE_FORMAT_NMS_VBXADPCM = 0x0038, /* Natural MicroSystems */
- WAVE_FORMAT_ROLAND_RDAC = 0x0039, /* Roland */
- WAVE_FORMAT_ECHOSC3 = 0x003A, /* Echo Speech Corporation */
- WAVE_FORMAT_ROCKWELL_ADPCM = 0x003B, /* Rockwell International */
- WAVE_FORMAT_ROCKWELL_DIGITALK = 0x003C, /* Rockwell International */
- WAVE_FORMAT_XEBEC = 0x003D, /* Xebec Multimedia Solutions Limited */
- WAVE_FORMAT_G721_ADPCM = 0x0040, /* Antex Electronics Corporation */
- WAVE_FORMAT_G728_CELP = 0x0041, /* Antex Electronics Corporation */
- WAVE_FORMAT_MSG723 = 0x0042, /* Microsoft Corporation */
- WAVE_FORMAT_MPEG = 0x0050, /* Microsoft Corporation */
- WAVE_FORMAT_RT24 = 0x0052, /* InSoft Inc. */
- WAVE_FORMAT_PAC = 0x0053, /* InSoft Inc. */
- WAVE_FORMAT_MPEGLAYER3 = 0x0055, /* MPEG 3 Layer 1 */
- WAVE_FORMAT_LUCENT_G723 = 0x0059, /* Lucent Technologies */
- WAVE_FORMAT_CIRRUS = 0x0060, /* Cirrus Logic */
- WAVE_FORMAT_ESPCM = 0x0061, /* ESS Technology */
- WAVE_FORMAT_VOXWARE = 0x0062, /* Voxware Inc */
- WAVE_FORMAT_CANOPUS_ATRAC = 0x0063, /* Canopus, Co., Ltd. */
- WAVE_FORMAT_G726_ADPCM = 0x0064, /* APICOM */
- WAVE_FORMAT_G722_ADPCM = 0x0065, /* APICOM */
- WAVE_FORMAT_DSAT = 0x0066, /* Microsoft Corporation */
- WAVE_FORMAT_DSAT_DISPLAY = 0x0067, /* Microsoft Corporation */
- WAVE_FORMAT_VOXWARE_BYTE_ALIGNED = 0x0069, /* Voxware Inc. */
- WAVE_FORMAT_VOXWARE_AC8 = 0x0070, /* Voxware Inc. */
- WAVE_FORMAT_VOXWARE_AC10 = 0x0071, /* Voxware Inc. */
- WAVE_FORMAT_VOXWARE_AC16 = 0x0072, /* Voxware Inc. */
- WAVE_FORMAT_VOXWARE_AC20 = 0x0073, /* Voxware Inc. */
- WAVE_FORMAT_VOXWARE_RT24 = 0x0074, /* Voxware Inc. */
- WAVE_FORMAT_VOXWARE_RT29 = 0x0075, /* Voxware Inc. */
- WAVE_FORMAT_VOXWARE_RT29HW = 0x0076, /* Voxware Inc. */
- WAVE_FORMAT_VOXWARE_VR12 = 0x0077, /* Voxware Inc. */
- WAVE_FORMAT_VOXWARE_VR18 = 0x0078, /* Voxware Inc. */
- WAVE_FORMAT_VOXWARE_TQ40 = 0x0079, /* Voxware Inc. */
- WAVE_FORMAT_SOFTSOUND = 0x0080, /* Softsound, Ltd. */
- WAVE_FORMAT_VOXARE_TQ60 = 0x0081, /* Voxware Inc. */
- WAVE_FORMAT_MSRT24 = 0x0082, /* Microsoft Corporation */
- WAVE_FORMAT_G729A = 0x0083, /* AT&T Laboratories */
- WAVE_FORMAT_MVI_MV12 = 0x0084, /* Motion Pixels */
- WAVE_FORMAT_DF_G726 = 0x0085, /* DataFusion Systems (Pty) (Ltd) */
- WAVE_FORMAT_DF_GSM610 = 0x0086, /* DataFusion Systems (Pty) (Ltd) */
- /* removed because duplicate */
- /* WAVE_FORMAT_ISIAUDIO = 0x0088, */ /* Iterated Systems, Inc. */
- WAVE_FORMAT_ONLIVE = 0x0089, /* OnLive! Technologies, Inc. */
- WAVE_FORMAT_SBC24 = 0x0091, /* Siemens Business Communications Systems */
- WAVE_FORMAT_DOLBY_AC3_SPDIF = 0x0092, /* Sonic Foundry */
- WAVE_FORMAT_ZYXEL_ADPCM = 0x0097, /* ZyXEL Communications, Inc. */
- WAVE_FORMAT_PHILIPS_LPCBB = 0x0098, /* Philips Speech Processing */
- WAVE_FORMAT_PACKED = 0x0099, /* Studer Professional Audio AG */
- WAVE_FORMAT_RHETOREX_ADPCM = 0x0100, /* Rhetorex, Inc. */
-
- /* removed because of the following */
- /* WAVE_FORMAT_IRAT = 0x0101,*/ /* BeCubed Software Inc. */
-
- /* these three are unofficial */
- IBM_FORMAT_MULAW = 0x0101, /* IBM mu-law format */
- IBM_FORMAT_ALAW = 0x0102, /* IBM a-law format */
- IBM_FORMAT_ADPCM = 0x0103, /* IBM AVC Adaptive Differential PCM format */
-
- WAVE_FORMAT_VIVO_G723 = 0x0111, /* Vivo Software */
- WAVE_FORMAT_VIVO_SIREN = 0x0112, /* Vivo Software */
- WAVE_FORMAT_DIGITAL_G723 = 0x0123, /* Digital Equipment Corporation */
- WAVE_FORMAT_CREATIVE_ADPCM = 0x0200, /* Creative Labs, Inc */
- WAVE_FORMAT_CREATIVE_FASTSPEECH8 = 0x0202, /* Creative Labs, Inc */
- WAVE_FORMAT_CREATIVE_FASTSPEECH10 = 0x0203, /* Creative Labs, Inc */
- WAVE_FORMAT_QUARTERDECK = 0x0220, /* Quarterdeck Corporation */
- WAVE_FORMAT_FM_TOWNS_SND = 0x0300, /* Fujitsu Corporation */
- WAVE_FORMAT_BZV_DIGITAL = 0x0400, /* Brooktree Corporation */
- WAVE_FORMAT_VME_VMPCM = 0x0680, /* AT&T Labs, Inc. */
- WAVE_FORMAT_OLIGSM = 0x1000, /* Ing C. Olivetti & C., S.p.A. */
- WAVE_FORMAT_OLIADPCM = 0x1001, /* Ing C. Olivetti & C., S.p.A. */
- WAVE_FORMAT_OLICELP = 0x1002, /* Ing C. Olivetti & C., S.p.A. */
- WAVE_FORMAT_OLISBC = 0x1003, /* Ing C. Olivetti & C., S.p.A. */
- WAVE_FORMAT_OLIOPR = 0x1004, /* Ing C. Olivetti & C., S.p.A. */
- WAVE_FORMAT_LH_CODEC = 0x1100, /* Lernout & Hauspie */
- WAVE_FORMAT_NORRIS = 0x1400, /* Norris Communications, Inc. */
- /* removed because duplicate */
- /* WAVE_FORMAT_ISIAUDIO = 0x1401, */ /* AT&T Labs, Inc. */
- WAVE_FORMAT_SOUNDSPACE_MUSICOMPRESS = 0x1500, /* AT&T Labs, Inc. */
- WAVE_FORMAT_DVM = 0x2000, /* FAST Multimedia AG */
- WAVE_FORMAT_INTERWAV_VSC112 = 0x7150, /* ????? */
- WAVE_FORMAT_EXTENSIBLE = 0xFFFE
-} ;
-
-typedef struct
-{ unsigned short format ;
- unsigned short channels ;
- unsigned int samplerate ;
- unsigned int bytespersec ;
- unsigned short blockalign ;
- unsigned short bitwidth ;
-} MIN_WAV_FMT ;
-
-typedef struct
-{ unsigned short format ;
- unsigned short channels ;
- unsigned int samplerate ;
- unsigned int bytespersec ;
- unsigned short blockalign ;
- unsigned short bitwidth ;
- unsigned short extrabytes ;
- unsigned short dummy ;
-} WAV_FMT_SIZE20 ;
-
-typedef struct
-{ unsigned short format ;
- unsigned short channels ;
- unsigned int samplerate ;
- unsigned int bytespersec ;
- unsigned short blockalign ;
- unsigned short bitwidth ;
- unsigned short extrabytes ;
- unsigned short samplesperblock ;
- unsigned short numcoeffs ;
- struct
- { short coeff1 ;
- short coeff2 ;
- } coeffs [7] ;
-} MS_ADPCM_WAV_FMT ;
-
-typedef struct
-{ unsigned short format ;
- unsigned short channels ;
- unsigned int samplerate ;
- unsigned int bytespersec ;
- unsigned short blockalign ;
- unsigned short bitwidth ;
- unsigned short extrabytes ;
- unsigned short samplesperblock ;
-} IMA_ADPCM_WAV_FMT ;
-
-typedef struct
-{ unsigned short format ;
- unsigned short channels ;
- unsigned int samplerate ;
- unsigned int bytespersec ;
- unsigned short blockalign ;
- unsigned short bitwidth ;
- unsigned short extrabytes ;
- unsigned short auxblocksize ;
-} G72x_ADPCM_WAV_FMT ;
-
-
-typedef struct
-{ unsigned short format ;
- unsigned short channels ;
- unsigned int samplerate ;
- unsigned int bytespersec ;
- unsigned short blockalign ;
- unsigned short bitwidth ;
- unsigned short extrabytes ;
- unsigned short samplesperblock ;
-} GSM610_WAV_FMT ;
-
-typedef struct
-{ unsigned int esf_field1 ;
- unsigned short esf_field2 ;
- unsigned short esf_field3 ;
- char esf_field4 [8] ;
-} EXT_SUBFORMAT ;
-
-typedef struct
-{ unsigned short format ;
- unsigned short channels ;
- unsigned int samplerate ;
- unsigned int bytespersec ;
- unsigned short blockalign ;
- unsigned short bitwidth ;
- unsigned short extrabytes ;
- unsigned short validbits ;
- unsigned int channelmask ;
- EXT_SUBFORMAT esf ;
-} EXTENSIBLE_WAV_FMT ;
-
-typedef union
-{ unsigned short format ;
- MIN_WAV_FMT min ;
- IMA_ADPCM_WAV_FMT ima ;
- MS_ADPCM_WAV_FMT msadpcm ;
- G72x_ADPCM_WAV_FMT g72x ;
- EXTENSIBLE_WAV_FMT ext ;
- GSM610_WAV_FMT gsm610 ;
- WAV_FMT_SIZE20 size20 ;
- char padding [512] ;
-} WAV_FMT ;
-
-typedef struct
-{ int frames ;
-} FACT_CHUNK ;
-
-#define WAV_W64_GSM610_BLOCKSIZE 65
-#define WAV_W64_GSM610_SAMPLES 320
-
-/*------------------------------------------------------------------------------------
-** Functions defined in wav_ms_adpcm.c
-*/
-
-#define MSADPCM_ADAPT_COEFF_COUNT 7
-
-void msadpcm_write_adapt_coeffs (SF_PRIVATE *psf) ;
-
-/*------------------------------------------------------------------------------------
-** Functions defined in wav_w64.c
-*/
-
-int wav_w64_srate2blocksize (int srate_chan_product) ;
-char const* wav_w64_format_str (int k) ;
-int wav_w64_read_fmt_chunk (SF_PRIVATE *psf, WAV_FMT *wav_fmt, int structsize) ;
-void wavex_write_guid (SF_PRIVATE *psf, const EXT_SUBFORMAT * subformat) ;
-
-#endif
-/*
-** Do not edit or modify anything in this comment block.
-** The arch-tag line is a file identity tag for the GNU Arch
-** revision control system.
-**
-** arch-tag: 877fde12-9be3-4a31-8a5a-fdae39958613
-*/
diff --git a/libs/libsndfile/src/wve.c b/libs/libsndfile/src/wve.c
deleted file mode 100644
index 54a08336c2..0000000000
--- a/libs/libsndfile/src/wve.c
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
-** Copyright (C) 2002-2004 Erik de Castro Lopo <erikd@mega-nerd.com>
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU Lesser General Public License as published by
-** the Free Software Foundation; either version 2.1 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU Lesser General Public License for more details.
-**
-** You should have received a copy of the GNU Lesser General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-*/
-
-#include "sfconfig.h"
-
-#include <stdio.h>
-#include <fcntl.h>
-#include <string.h>
-#include <ctype.h>
-
-#include "sndfile.h"
-#include "sfendian.h"
-#include "common.h"
-
-#if (ENABLE_EXPERIMENTAL_CODE == 0)
-
-int
-wve_open (SF_PRIVATE *psf)
-{ if (psf)
- return SFE_UNIMPLEMENTED ;
- return (psf && 0) ;
-} /* wve_open */
-
-#else
-
-#define SFE_WVE_NOT_WVE 666
-
-/*------------------------------------------------------------------------------
-** Macros to handle big/little endian issues.
-*/
-
-#define ALAW_MARKER MAKE_MARKER ('A', 'L', 'a', 'w')
-#define SOUN_MARKER MAKE_MARKER ('S', 'o', 'u', 'n')
-#define DFIL_MARKER MAKE_MARKER ('d', 'F', 'i', 'l')
-
-/*------------------------------------------------------------------------------
-** Private static functions.
-*/
-
-static int wve_read_header (SF_PRIVATE *psf) ;
-
-/*------------------------------------------------------------------------------
-** Public function.
-*/
-
-int
-wve_open (SF_PRIVATE *psf)
-{ int subformat, error = 0 ;
-
- if (psf->mode == SFM_WRITE || psf->mode == SFM_RDWR)
- return SFE_UNIMPLEMENTED ;
-
- if ((error = wve_read_header (psf)))
- return error ;
-
- if ((psf->sf.format & SF_FORMAT_TYPEMASK) != SF_FORMAT_WVE)
- return SFE_BAD_OPEN_FORMAT ;
-
- subformat = psf->sf.format & SF_FORMAT_SUBMASK ;
-
- return error ;
-} /* wve_open */
-
-/*------------------------------------------------------------------------------
-*/
-
-static int
-wve_read_header (SF_PRIVATE *psf)
-{ int marker ;
-
- /* Set position to start of file to begin reading header. */
- psf_binheader_readf (psf, "pm", 0, &marker) ;
- if (marker != ALAW_MARKER)
- return SFE_WVE_NOT_WVE ;
-
- psf_binheader_readf (psf, "m", &marker) ;
- if (marker != SOUN_MARKER)
- return SFE_WVE_NOT_WVE ;
-
- psf_binheader_readf (psf, "m", &marker) ;
- if (marker != DFIL_MARKER)
- return SFE_WVE_NOT_WVE ;
-
- psf_log_printf (psf, "Read only : Psion Palmtop Alaw (.wve)\n"
- " Sample Rate : 8000\n"
- " Channels : 1\n"
- " Encoding : A-law\n") ;
-
- psf->dataoffset = 0x20 ;
- psf->datalength = psf->filelength - psf->dataoffset ;
-
- psf->sf.format = SF_FORMAT_WVE | SF_FORMAT_ALAW ;
- psf->sf.samplerate = 8000 ;
- psf->sf.frames = psf->datalength ;
- psf->sf.channels = 1 ;
-
- return alaw_init (psf) ;
-} /* wve_read_header */
-
-/*------------------------------------------------------------------------------
-*/
-
-#endif
-/*
-** Do not edit or modify anything in this comment block.
-** The arch-tag line is a file identity tag for the GNU Arch
-** revision control system.
-**
-** arch-tag: ba368cb5-523f-45e4-98c1-5b99a102f73f
-*/
diff --git a/libs/libsndfile/src/xi.c b/libs/libsndfile/src/xi.c
deleted file mode 100644
index dcd8120b1e..0000000000
--- a/libs/libsndfile/src/xi.c
+++ /dev/null
@@ -1,1204 +0,0 @@
-/*
-** Copyright (C) 2003-2006 Erik de Castro Lopo <erikd@mega-nerd.com>
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU Lesser General Public License as published by
-** the Free Software Foundation; either version 2.1 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU Lesser General Public License for more details.
-**
-** You should have received a copy of the GNU Lesser General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-*/
-
-#include "sfconfig.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <fcntl.h>
-#include <string.h>
-#include <ctype.h>
-
-#include "sndfile.h"
-#include "sfendian.h"
-#include "common.h"
-#include "float_cast.h"
-
-#define MAX_XI_SAMPLES 16
-
-/*------------------------------------------------------------------------------
-** Private static functions and tyepdefs.
-*/
-
-typedef struct
-{ /* Warning, this filename is NOT nul terminated. */
- char filename [22] ;
- char software [20] ;
- char sample_name [22] ;
-
- int loop_begin, loop_end ;
- int sample_flags ;
-
- /* Data for encoder and decoder. */
- short last_16 ;
-} XI_PRIVATE ;
-
-static int xi_close (SF_PRIVATE *psf) ;
-static int xi_write_header (SF_PRIVATE *psf, int calc_length) ;
-static int xi_read_header (SF_PRIVATE *psf) ;
-static int dpcm_init (SF_PRIVATE *psf) ;
-
-
-static sf_count_t dpcm_seek (SF_PRIVATE *psf, int mode, sf_count_t offset) ;
-
-/*------------------------------------------------------------------------------
-** Public function.
-*/
-
-int
-xi_open (SF_PRIVATE *psf)
-{ XI_PRIVATE *pxi ;
- int subformat, error = 0 ;
-
- if (psf->is_pipe)
- return SFE_XI_NO_PIPE ;
-
- if (psf->fdata)
- pxi = psf->fdata ;
- else if ((pxi = calloc (1, sizeof (XI_PRIVATE))) == NULL)
- return SFE_MALLOC_FAILED ;
-
- psf->fdata = pxi ;
-
- if (psf->mode == SFM_READ || (psf->mode == SFM_RDWR && psf->filelength > 0))
- { if ((error = xi_read_header (psf)))
- return error ;
- } ;
-
- subformat = psf->sf.format & SF_FORMAT_SUBMASK ;
-
- if (psf->mode == SFM_WRITE || psf->mode == SFM_RDWR)
- { if ((psf->sf.format & SF_FORMAT_TYPEMASK) != SF_FORMAT_XI)
- return SFE_BAD_OPEN_FORMAT ;
-
- psf->endian = SF_ENDIAN_LITTLE ;
- psf->sf.channels = 1 ; /* Always mono */
- psf->sf.samplerate = 44100 ; /* Always */
-
- /* Set up default instrument and software name. */
- memcpy (pxi->filename, "Default Name ", sizeof (pxi->filename)) ;
- memcpy (pxi->software, PACKAGE "-" VERSION " ", sizeof (pxi->software)) ;
-
- memset (pxi->sample_name, 0, sizeof (pxi->sample_name)) ;
- LSF_SNPRINTF (pxi->sample_name, sizeof (pxi->sample_name), "%s", "Sample #1") ;
-
- pxi->sample_flags = (subformat == SF_FORMAT_DPCM_16) ? 16 : 0 ;
-
- if (xi_write_header (psf, SF_FALSE))
- return psf->error ;
-
- psf->write_header = xi_write_header ;
- } ;
-
- psf->container_close = xi_close ;
- psf->seek = dpcm_seek ;
-
- psf->sf.seekable = SF_FALSE ;
-
- psf->blockwidth = psf->bytewidth * psf->sf.channels ;
-
- switch (subformat)
- { case SF_FORMAT_DPCM_8 : /* 8-bit differential PCM. */
- case SF_FORMAT_DPCM_16 : /* 16-bit differential PCM. */
- error = dpcm_init (psf) ;
- break ;
-
- default : break ;
- } ;
-
- return error ;
-} /* xi_open */
-
-/*------------------------------------------------------------------------------
-*/
-
-static int
-xi_close (SF_PRIVATE *psf)
-{
- psf = psf ;
-
- return 0 ;
-} /* xi_close */
-
-/*==============================================================================
-*/
-
-static sf_count_t dpcm_read_dsc2s (SF_PRIVATE *psf, short *ptr, sf_count_t len) ;
-static sf_count_t dpcm_read_dsc2i (SF_PRIVATE *psf, int *ptr, sf_count_t len) ;
-static sf_count_t dpcm_read_dsc2f (SF_PRIVATE *psf, float *ptr, sf_count_t len) ;
-static sf_count_t dpcm_read_dsc2d (SF_PRIVATE *psf, double *ptr, sf_count_t len) ;
-
-static sf_count_t dpcm_write_s2dsc (SF_PRIVATE *psf, const short *ptr, sf_count_t len) ;
-static sf_count_t dpcm_write_i2dsc (SF_PRIVATE *psf, const int *ptr, sf_count_t len) ;
-static sf_count_t dpcm_write_f2dsc (SF_PRIVATE *psf, const float *ptr, sf_count_t len) ;
-static sf_count_t dpcm_write_d2dsc (SF_PRIVATE *psf, const double *ptr, sf_count_t len) ;
-
-static sf_count_t dpcm_read_dles2s (SF_PRIVATE *psf, short *ptr, sf_count_t len) ;
-static sf_count_t dpcm_read_dles2i (SF_PRIVATE *psf, int *ptr, sf_count_t len) ;
-static sf_count_t dpcm_read_dles2f (SF_PRIVATE *psf, float *ptr, sf_count_t len) ;
-static sf_count_t dpcm_read_dles2d (SF_PRIVATE *psf, double *ptr, sf_count_t len) ;
-
-static sf_count_t dpcm_write_s2dles (SF_PRIVATE *psf, const short *ptr, sf_count_t len) ;
-static sf_count_t dpcm_write_i2dles (SF_PRIVATE *psf, const int *ptr, sf_count_t len) ;
-static sf_count_t dpcm_write_f2dles (SF_PRIVATE *psf, const float *ptr, sf_count_t len) ;
-static sf_count_t dpcm_write_d2dles (SF_PRIVATE *psf, const double *ptr, sf_count_t len) ;
-
-static int
-dpcm_init (SF_PRIVATE *psf)
-{ if (psf->bytewidth == 0 || psf->sf.channels == 0)
- return SFE_INTERNAL ;
-
- psf->blockwidth = psf->bytewidth * psf->sf.channels ;
-
- if (psf->mode == SFM_READ || psf->mode == SFM_RDWR)
- { switch (psf->bytewidth)
- { case 1 :
- psf->read_short = dpcm_read_dsc2s ;
- psf->read_int = dpcm_read_dsc2i ;
- psf->read_float = dpcm_read_dsc2f ;
- psf->read_double = dpcm_read_dsc2d ;
- break ;
- case 2 :
- psf->read_short = dpcm_read_dles2s ;
- psf->read_int = dpcm_read_dles2i ;
- psf->read_float = dpcm_read_dles2f ;
- psf->read_double = dpcm_read_dles2d ;
- break ;
- default :
- psf_log_printf (psf, "dpcm_init() returning SFE_UNIMPLEMENTED\n") ;
- return SFE_UNIMPLEMENTED ;
- } ;
- } ;
-
- if (psf->mode == SFM_WRITE || psf->mode == SFM_RDWR)
- { switch (psf->bytewidth)
- { case 1 :
- psf->write_short = dpcm_write_s2dsc ;
- psf->write_int = dpcm_write_i2dsc ;
- psf->write_float = dpcm_write_f2dsc ;
- psf->write_double = dpcm_write_d2dsc ;
- break ;
- case 2 :
- psf->write_short = dpcm_write_s2dles ;
- psf->write_int = dpcm_write_i2dles ;
- psf->write_float = dpcm_write_f2dles ;
- psf->write_double = dpcm_write_d2dles ;
- break ;
- default :
- psf_log_printf (psf, "dpcm_init() returning SFE_UNIMPLEMENTED\n") ;
- return SFE_UNIMPLEMENTED ;
- } ;
- } ;
-
- psf->filelength = psf_get_filelen (psf) ;
- psf->datalength = (psf->dataend) ? psf->dataend - psf->dataoffset :
- psf->filelength - psf->dataoffset ;
- psf->sf.frames = psf->datalength / psf->blockwidth ;
-
- return 0 ;
-} /* dpcm_init */
-
-/*==============================================================================
-*/
-
-static sf_count_t
-dpcm_seek (SF_PRIVATE *psf, int mode, sf_count_t offset)
-{ XI_PRIVATE *pxi ;
- int total, bufferlen, len ;
-
- if ((pxi = psf->fdata) == NULL)
- return SFE_INTERNAL ;
-
- if (psf->datalength < 0 || psf->dataoffset < 0)
- { psf->error = SFE_BAD_SEEK ;
- return PSF_SEEK_ERROR ;
- } ;
-
- if (offset == 0)
- { psf_fseek (psf, psf->dataoffset, SEEK_SET) ;
- pxi->last_16 = 0 ;
- return 0 ;
- } ;
-
- if (offset < 0 || offset > psf->sf.frames)
- { psf->error = SFE_BAD_SEEK ;
- return PSF_SEEK_ERROR ;
- } ;
-
- if (mode != SFM_READ)
- { /* What to do about write??? */
- psf->error = SFE_BAD_SEEK ;
- return PSF_SEEK_ERROR ;
- } ;
-
- psf_fseek (psf, psf->dataoffset, SEEK_SET) ;
-
- if ((psf->sf.format & SF_FORMAT_SUBMASK) == SF_FORMAT_DPCM_16)
- { total = offset ;
- bufferlen = ARRAY_LEN (psf->u.sbuf) ;
- while (total > 0)
- { len = (total > bufferlen) ? bufferlen : total ;
- total -= dpcm_read_dles2s (psf, psf->u.sbuf, len) ;
- } ;
- }
- else
- { total = offset ;
- bufferlen = ARRAY_LEN (psf->u.sbuf) ;
- while (total > 0)
- { len = (total > bufferlen) ? bufferlen : total ;
- total -= dpcm_read_dsc2s (psf, psf->u.sbuf, len) ;
- } ;
- } ;
-
- return offset ;
-} /* dpcm_seek */
-
-
-static int
-xi_write_header (SF_PRIVATE *psf, int calc_length)
-{ XI_PRIVATE *pxi ;
- sf_count_t current ;
- const char *string ;
-
- if ((pxi = psf->fdata) == NULL)
- return SFE_INTERNAL ;
-
- calc_length = calc_length ; /* Avoid a compiler warning. */
-
- current = psf_ftell (psf) ;
-
- /* Reset the current header length to zero. */
- psf->header [0] = 0 ;
- psf->headindex = 0 ;
- psf_fseek (psf, 0, SEEK_SET) ;
-
- string = "Extended Instrument: " ;
- psf_binheader_writef (psf, "b", string, strlen (string)) ;
- psf_binheader_writef (psf, "b1", pxi->filename, sizeof (pxi->filename), 0x1A) ;
-
- /* Write software version and two byte XI version. */
- psf_binheader_writef (psf, "eb2", pxi->software, sizeof (pxi->software), (1 << 8) + 2) ;
-
- /*
- ** Jump note numbers (96), volume envelope (48), pan envelope (48),
- ** volume points (1), pan points (1)
- */
- psf_binheader_writef (psf, "z", (size_t) (96 + 48 + 48 + 1 + 1)) ;
-
- /* Jump volume loop (3 bytes), pan loop (3), envelope flags (3), vibrato (3)
- ** fade out (2), 22 unknown bytes, and then write sample_count (2 bytes).
- */
- psf_binheader_writef (psf, "ez2z2", (size_t) (4 * 3), 0x1234, make_size_t (22), 1) ;
-
- pxi->loop_begin = 0 ;
- pxi->loop_end = 0 ;
-
- psf_binheader_writef (psf, "et844", psf->sf.frames, pxi->loop_begin, pxi->loop_end) ;
-
- /* volume, fine tune, flags, pan, note, namelen */
- psf_binheader_writef (psf, "111111", 128, 0, pxi->sample_flags, 128, 0, strlen (pxi->sample_name)) ;
-
- psf_binheader_writef (psf, "b", pxi->sample_name, sizeof (pxi->sample_name)) ;
-
-
-
-
-
- /* Header construction complete so write it out. */
- psf_fwrite (psf->header, psf->headindex, 1, psf) ;
-
- if (psf->error)
- return psf->error ;
-
- psf->dataoffset = psf->headindex ;
-
- if (current > 0)
- psf_fseek (psf, current, SEEK_SET) ;
-
- return psf->error ;
-} /* xi_write_header */
-
-static int
-xi_read_header (SF_PRIVATE *psf)
-{ char buffer [64], name [32] ;
- short version, fade_out, sample_count ;
- int k, loop_begin, loop_end ;
- int sample_sizes [MAX_XI_SAMPLES] ;
-
- psf_binheader_readf (psf, "pb", 0, buffer, 21) ;
-
- memset (sample_sizes, 0, sizeof (sample_sizes)) ;
-
- buffer [20] = 0 ;
- if (strcmp (buffer, "Extended Instrument:") != 0)
- return SFE_XI_BAD_HEADER ;
-
- memset (buffer, 0, sizeof (buffer)) ;
- psf_binheader_readf (psf, "b", buffer, 23) ;
-
- if (buffer [22] != 0x1A)
- return SFE_XI_BAD_HEADER ;
-
- buffer [22] = 0 ;
- psf_log_printf (psf, "Extended Instrument : %s\n", buffer) ;
-
- psf_binheader_readf (psf, "be2", buffer, 20, &version) ;
- buffer [19] = 0 ;
- psf_log_printf (psf, "Software : %s\nVersion : %d.%02d\n", buffer, version / 256, version % 256) ;
-
- /* Jump note numbers (96), volume envelope (48), pan envelope (48),
- ** volume points (1), pan points (1)
- */
- psf_binheader_readf (psf, "j", 96 + 48 + 48 + 1 + 1) ;
-
- psf_binheader_readf (psf, "b", buffer, 12) ;
- psf_log_printf (psf, "Volume Loop\n sustain : %u\n begin : %u\n end : %u\n",
- buffer [0], buffer [1], buffer [2]) ;
- psf_log_printf (psf, "Pan Loop\n sustain : %u\n begin : %u\n end : %u\n",
- buffer [3], buffer [4], buffer [5]) ;
- psf_log_printf (psf, "Envelope Flags\n volume : 0x%X\n pan : 0x%X\n",
- buffer [6] & 0xFF, buffer [7] & 0xFF) ;
-
- psf_log_printf (psf, "Vibrato\n type : %u\n sweep : %u\n depth : %u\n rate : %u\n",
- buffer [8], buffer [9], buffer [10], buffer [11]) ;
-
- /*
- ** Read fade_out then jump reserved (2 bytes) and ???? (20 bytes) and
- ** sample_count.
- */
- psf_binheader_readf (psf, "e2j2", &fade_out, 2 + 20, &sample_count) ;
- psf_log_printf (psf, "Fade out : %d\n", fade_out) ;
-
- /* XI file can contain up to 16 samples. */
- if (sample_count > MAX_XI_SAMPLES)
- return SFE_XI_EXCESS_SAMPLES ;
-
- if (psf->instrument == NULL && (psf->instrument = psf_instrument_alloc ()) == NULL)
- return SFE_MALLOC_FAILED ;
-
- /* Log all data for each sample. */
- for (k = 0 ; k < sample_count ; k++)
- { psf_binheader_readf (psf, "e444", &(sample_sizes [k]), &loop_begin, &loop_end) ;
-
- /* Read 5 know bytes, 1 unknown byte and 22 name bytes. */
- psf_binheader_readf (psf, "bb", buffer, 6, name, 22) ;
- name [21] = 0 ;
-
- psf_log_printf (psf, "Sample #%d\n name : %s\n", k + 1, name) ;
-
- psf_log_printf (psf, " size : %d\n", sample_sizes [k]) ;
-
-
-
- psf_log_printf (psf, " loop\n begin : %d\n end : %d\n", loop_begin, loop_end) ;
-
- psf_log_printf (psf, " volume : %u\n f. tune : %d\n flags : 0x%02X ",
- buffer [0] & 0xFF, buffer [1] & 0xFF, buffer [2] & 0xFF) ;
-
- psf_log_printf (psf, " (") ;
- if (buffer [2] & 1)
- psf_log_printf (psf, " Loop") ;
- if (buffer [2] & 2)
- psf_log_printf (psf, " PingPong") ;
- psf_log_printf (psf, (buffer [2] & 16) ? " 16bit" : " 8bit") ;
- psf_log_printf (psf, " )\n") ;
-
- psf_log_printf (psf, " pan : %u\n note : %d\n namelen : %d\n",
- buffer [3] & 0xFF, buffer [4], buffer [5]) ;
-
- if (k != 0)
- continue ;
-
- if (buffer [2] & 16)
- { psf->sf.format = SF_FORMAT_XI | SF_FORMAT_DPCM_16 ;
- psf->bytewidth = 2 ;
- }
- else
- { psf->sf.format = SF_FORMAT_XI | SF_FORMAT_DPCM_8 ;
- psf->bytewidth = 1 ;
- } ;
- } ;
-
- while (sample_count > 1 && sample_sizes [sample_count - 1] == 0)
- sample_count -- ;
-
- /* Currently, we can only handle 1 sample per file. */
-
- if (sample_count > 2)
- { psf_log_printf (psf, "*** Sample count is less than 16 but more than 1.\n") ;
- psf_log_printf (psf, " sample count : %d sample_sizes [%d] : %d\n",
- sample_count, sample_count - 1, sample_sizes [sample_count - 1]) ;
- return SFE_XI_EXCESS_SAMPLES ;
- } ;
-
- psf->dataoffset = psf_fseek (psf, 0, SEEK_CUR) ;
- psf_log_printf (psf, "Data Offset : %D\n", psf->dataoffset) ;
-
- psf->datalength = sample_sizes [0] ;
-
- if (psf->dataoffset + psf->datalength > psf->filelength)
- { psf_log_printf (psf, "*** File seems to be truncated. Should be at least %D bytes long.\n",
- psf->dataoffset + sample_sizes [0]) ;
- psf->datalength = psf->filelength - psf->dataoffset ;
- } ;
-
- if (psf_fseek (psf, psf->dataoffset, SEEK_SET) != psf->dataoffset)
- return SFE_BAD_SEEK ;
-
- psf->endian = SF_ENDIAN_LITTLE ;
- psf->sf.channels = 1 ; /* Always mono */
- psf->sf.samplerate = 44100 ; /* Always */
-
- psf->blockwidth = psf->sf.channels * psf->bytewidth ;
-
- if (! psf->sf.frames && psf->blockwidth)
- psf->sf.frames = (psf->filelength - psf->dataoffset) / psf->blockwidth ;
-
- psf->instrument->basenote = 0 ;
- psf->instrument->gain = 1 ;
- psf->instrument->velocity_lo = psf->instrument->key_lo = 0 ;
- psf->instrument->velocity_hi = psf->instrument->key_hi = 127 ;
-
- return 0 ;
-} /* xi_read_header */
-
-/*==============================================================================
-*/
-
-static void dsc2s_array (XI_PRIVATE *pxi, signed char *src, int count, short *dest) ;
-static void dsc2i_array (XI_PRIVATE *pxi, signed char *src, int count, int *dest) ;
-static void dsc2f_array (XI_PRIVATE *pxi, signed char *src, int count, float *dest, float normfact) ;
-static void dsc2d_array (XI_PRIVATE *pxi, signed char *src, int count, double *dest, double normfact) ;
-
-static void dles2s_array (XI_PRIVATE *pxi, short *src, int count, short *dest) ;
-static void dles2i_array (XI_PRIVATE *pxi, short *src, int count, int *dest) ;
-static void dles2f_array (XI_PRIVATE *pxi, short *src, int count, float *dest, float normfact) ;
-static void dles2d_array (XI_PRIVATE *pxi, short *src, int count, double *dest, double normfact) ;
-
-static sf_count_t
-dpcm_read_dsc2s (SF_PRIVATE *psf, short *ptr, sf_count_t len)
-{ XI_PRIVATE *pxi ;
- int bufferlen, readcount ;
- sf_count_t total = 0 ;
-
- if ((pxi = psf->fdata) == NULL)
- return 0 ;
-
- bufferlen = ARRAY_LEN (psf->u.ucbuf) ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- readcount = psf_fread (psf->u.scbuf, sizeof (signed char), bufferlen, psf) ;
- dsc2s_array (pxi, psf->u.scbuf, readcount, ptr + total) ;
- total += readcount ;
- if (readcount < bufferlen)
- break ;
- len -= readcount ;
- } ;
-
- return total ;
-} /* dpcm_read_dsc2s */
-
-static sf_count_t
-dpcm_read_dsc2i (SF_PRIVATE *psf, int *ptr, sf_count_t len)
-{ XI_PRIVATE *pxi ;
- int bufferlen, readcount ;
- sf_count_t total = 0 ;
-
- if ((pxi = psf->fdata) == NULL)
- return 0 ;
-
- bufferlen = ARRAY_LEN (psf->u.ucbuf) ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- readcount = psf_fread (psf->u.scbuf, sizeof (signed char), bufferlen, psf) ;
- dsc2i_array (pxi, psf->u.scbuf, readcount, ptr + total) ;
- total += readcount ;
- if (readcount < bufferlen)
- break ;
- len -= readcount ;
- } ;
-
- return total ;
-} /* dpcm_read_dsc2i */
-
-static sf_count_t
-dpcm_read_dsc2f (SF_PRIVATE *psf, float *ptr, sf_count_t len)
-{ XI_PRIVATE *pxi ;
- int bufferlen, readcount ;
- sf_count_t total = 0 ;
- float normfact ;
-
- if ((pxi = psf->fdata) == NULL)
- return 0 ;
-
- normfact = (psf->norm_float == SF_TRUE) ? 1.0 / ((float) 0x80) : 1.0 ;
-
- bufferlen = ARRAY_LEN (psf->u.ucbuf) ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- readcount = psf_fread (psf->u.scbuf, sizeof (signed char), bufferlen, psf) ;
- dsc2f_array (pxi, psf->u.scbuf, readcount, ptr + total, normfact) ;
- total += readcount ;
- if (readcount < bufferlen)
- break ;
- len -= readcount ;
- } ;
-
- return total ;
-} /* dpcm_read_dsc2f */
-
-static sf_count_t
-dpcm_read_dsc2d (SF_PRIVATE *psf, double *ptr, sf_count_t len)
-{ XI_PRIVATE *pxi ;
- int bufferlen, readcount ;
- sf_count_t total = 0 ;
- double normfact ;
-
- if ((pxi = psf->fdata) == NULL)
- return 0 ;
-
- normfact = (psf->norm_double == SF_TRUE) ? 1.0 / ((double) 0x80) : 1.0 ;
-
- bufferlen = ARRAY_LEN (psf->u.ucbuf) ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- readcount = psf_fread (psf->u.scbuf, sizeof (signed char), bufferlen, psf) ;
- dsc2d_array (pxi, psf->u.scbuf, readcount, ptr + total, normfact) ;
- total += readcount ;
- if (readcount < bufferlen)
- break ;
- len -= readcount ;
- } ;
-
- return total ;
-} /* dpcm_read_dsc2d */
-
-/*------------------------------------------------------------------------------
-*/
-
-static sf_count_t
-dpcm_read_dles2s (SF_PRIVATE *psf, short *ptr, sf_count_t len)
-{ XI_PRIVATE *pxi ;
- int bufferlen, readcount ;
- sf_count_t total = 0 ;
-
- if ((pxi = psf->fdata) == NULL)
- return 0 ;
-
- bufferlen = ARRAY_LEN (psf->u.sbuf) ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- readcount = psf_fread (psf->u.sbuf, sizeof (short), bufferlen, psf) ;
- dles2s_array (pxi, psf->u.sbuf, readcount, ptr + total) ;
- total += readcount ;
- if (readcount < bufferlen)
- break ;
- len -= readcount ;
- } ;
-
- return total ;
-} /* dpcm_read_dles2s */
-
-static sf_count_t
-dpcm_read_dles2i (SF_PRIVATE *psf, int *ptr, sf_count_t len)
-{ XI_PRIVATE *pxi ;
- int bufferlen, readcount ;
- sf_count_t total = 0 ;
-
- if ((pxi = psf->fdata) == NULL)
- return 0 ;
-
- bufferlen = ARRAY_LEN (psf->u.sbuf) ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- readcount = psf_fread (psf->u.sbuf, sizeof (short), bufferlen, psf) ;
- dles2i_array (pxi, psf->u.sbuf, readcount, ptr + total) ;
- total += readcount ;
- if (readcount < bufferlen)
- break ;
- len -= readcount ;
- } ;
-
- return total ;
-} /* dpcm_read_dles2i */
-
-static sf_count_t
-dpcm_read_dles2f (SF_PRIVATE *psf, float *ptr, sf_count_t len)
-{ XI_PRIVATE *pxi ;
- int bufferlen, readcount ;
- sf_count_t total = 0 ;
- float normfact ;
-
- if ((pxi = psf->fdata) == NULL)
- return 0 ;
-
- normfact = (psf->norm_float == SF_TRUE) ? 1.0 / ((float) 0x8000) : 1.0 ;
-
- bufferlen = ARRAY_LEN (psf->u.sbuf) ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- readcount = psf_fread (psf->u.sbuf, sizeof (short), bufferlen, psf) ;
- dles2f_array (pxi, psf->u.sbuf, readcount, ptr + total, normfact) ;
- total += readcount ;
- if (readcount < bufferlen)
- break ;
- len -= readcount ;
- } ;
-
- return total ;
-} /* dpcm_read_dles2f */
-
-static sf_count_t
-dpcm_read_dles2d (SF_PRIVATE *psf, double *ptr, sf_count_t len)
-{ XI_PRIVATE *pxi ;
- int bufferlen, readcount ;
- sf_count_t total = 0 ;
- double normfact ;
-
- if ((pxi = psf->fdata) == NULL)
- return 0 ;
-
- normfact = (psf->norm_double == SF_TRUE) ? 1.0 / ((double) 0x8000) : 1.0 ;
-
- bufferlen = ARRAY_LEN (psf->u.sbuf) ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- readcount = psf_fread (psf->u.sbuf, sizeof (short), bufferlen, psf) ;
- dles2d_array (pxi, psf->u.sbuf, readcount, ptr + total, normfact) ;
- total += readcount ;
- if (readcount < bufferlen)
- break ;
- len -= readcount ;
- } ;
-
- return total ;
-} /* dpcm_read_dles2d */
-
-/*==============================================================================
-*/
-
-static void s2dsc_array (XI_PRIVATE *pxi, const short *src, signed char *dest, int count) ;
-static void i2dsc_array (XI_PRIVATE *pxi, const int *src, signed char *dest, int count) ;
-static void f2dsc_array (XI_PRIVATE *pxi, const float *src, signed char *dest, int count, float normfact) ;
-static void d2dsc_array (XI_PRIVATE *pxi, const double *src, signed char *dest, int count, double normfact) ;
-
-static void s2dles_array (XI_PRIVATE *pxi, const short *src, short *dest, int count) ;
-static void i2dles_array (XI_PRIVATE *pxi, const int *src, short *dest, int count) ;
-static void f2dles_array (XI_PRIVATE *pxi, const float *src, short *dest, int count, float normfact) ;
-static void d2dles_array (XI_PRIVATE *pxi, const double *src, short *dest, int count, double normfact) ;
-
-
-static sf_count_t
-dpcm_write_s2dsc (SF_PRIVATE *psf, const short *ptr, sf_count_t len)
-{ XI_PRIVATE *pxi ;
- int bufferlen, writecount ;
- sf_count_t total = 0 ;
-
- if ((pxi = psf->fdata) == NULL)
- return 0 ;
-
- bufferlen = ARRAY_LEN (psf->u.ucbuf) ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- s2dsc_array (pxi, ptr + total, psf->u.scbuf, bufferlen) ;
- writecount = psf_fwrite (psf->u.scbuf, sizeof (signed char), bufferlen, psf) ;
- total += writecount ;
- if (writecount < bufferlen)
- break ;
- len -= writecount ;
- } ;
-
- return total ;
-} /* dpcm_write_s2dsc */
-
-static sf_count_t
-dpcm_write_i2dsc (SF_PRIVATE *psf, const int *ptr, sf_count_t len)
-{ XI_PRIVATE *pxi ;
- int bufferlen, writecount ;
- sf_count_t total = 0 ;
-
- if ((pxi = psf->fdata) == NULL)
- return 0 ;
-
- bufferlen = ARRAY_LEN (psf->u.ucbuf) ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- i2dsc_array (pxi, ptr + total, psf->u.scbuf, bufferlen) ;
- writecount = psf_fwrite (psf->u.scbuf, sizeof (signed char), bufferlen, psf) ;
- total += writecount ;
- if (writecount < bufferlen)
- break ;
- len -= writecount ;
- } ;
-
- return total ;
-} /* dpcm_write_i2dsc */
-
-static sf_count_t
-dpcm_write_f2dsc (SF_PRIVATE *psf, const float *ptr, sf_count_t len)
-{ XI_PRIVATE *pxi ;
- int bufferlen, writecount ;
- sf_count_t total = 0 ;
- float normfact ;
-
- if ((pxi = psf->fdata) == NULL)
- return 0 ;
-
- normfact = (psf->norm_float == SF_TRUE) ? (1.0 * 0x7F) : 1.0 ;
-
- bufferlen = ARRAY_LEN (psf->u.ucbuf) ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- f2dsc_array (pxi, ptr + total, psf->u.scbuf, bufferlen, normfact) ;
- writecount = psf_fwrite (psf->u.scbuf, sizeof (signed char), bufferlen, psf) ;
- total += writecount ;
- if (writecount < bufferlen)
- break ;
- len -= writecount ;
- } ;
-
- return total ;
-} /* dpcm_write_f2dsc */
-
-static sf_count_t
-dpcm_write_d2dsc (SF_PRIVATE *psf, const double *ptr, sf_count_t len)
-{ XI_PRIVATE *pxi ;
- int bufferlen, writecount ;
- sf_count_t total = 0 ;
- double normfact ;
-
- if ((pxi = psf->fdata) == NULL)
- return 0 ;
-
- normfact = (psf->norm_double == SF_TRUE) ? (1.0 * 0x7F) : 1.0 ;
-
- bufferlen = ARRAY_LEN (psf->u.ucbuf) ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- d2dsc_array (pxi, ptr + total, psf->u.scbuf, bufferlen, normfact) ;
- writecount = psf_fwrite (psf->u.scbuf, sizeof (signed char), bufferlen, psf) ;
- total += writecount ;
- if (writecount < bufferlen)
- break ;
- len -= writecount ;
- } ;
-
- return total ;
-} /* dpcm_write_d2dsc */
-
-
-static sf_count_t
-dpcm_write_s2dles (SF_PRIVATE *psf, const short *ptr, sf_count_t len)
-{ XI_PRIVATE *pxi ;
- int bufferlen, writecount ;
- sf_count_t total = 0 ;
-
- if ((pxi = psf->fdata) == NULL)
- return 0 ;
-
- bufferlen = ARRAY_LEN (psf->u.sbuf) ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- s2dles_array (pxi, ptr + total, psf->u.sbuf, bufferlen) ;
- writecount = psf_fwrite (psf->u.sbuf, sizeof (short), bufferlen, psf) ;
- total += writecount ;
- if (writecount < bufferlen)
- break ;
- len -= writecount ;
- } ;
-
- return total ;
-} /* dpcm_write_s2dles */
-
-static sf_count_t
-dpcm_write_i2dles (SF_PRIVATE *psf, const int *ptr, sf_count_t len)
-{ XI_PRIVATE *pxi ;
- int bufferlen, writecount ;
- sf_count_t total = 0 ;
-
- if ((pxi = psf->fdata) == NULL)
- return 0 ;
-
- bufferlen = ARRAY_LEN (psf->u.sbuf) ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- i2dles_array (pxi, ptr + total, psf->u.sbuf, bufferlen) ;
- writecount = psf_fwrite (psf->u.sbuf, sizeof (short), bufferlen, psf) ;
- total += writecount ;
- if (writecount < bufferlen)
- break ;
- len -= writecount ;
- } ;
-
- return total ;
-} /* dpcm_write_i2dles */
-
-static sf_count_t
-dpcm_write_f2dles (SF_PRIVATE *psf, const float *ptr, sf_count_t len)
-{ XI_PRIVATE *pxi ;
- int bufferlen, writecount ;
- sf_count_t total = 0 ;
- float normfact ;
-
- if ((pxi = psf->fdata) == NULL)
- return 0 ;
-
- normfact = (psf->norm_float == SF_TRUE) ? (1.0 * 0x7FFF) : 1.0 ;
-
- bufferlen = ARRAY_LEN (psf->u.sbuf) ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- f2dles_array (pxi, ptr + total, psf->u.sbuf, bufferlen, normfact) ;
- writecount = psf_fwrite (psf->u.sbuf, sizeof (short), bufferlen, psf) ;
- total += writecount ;
- if (writecount < bufferlen)
- break ;
- len -= writecount ;
- } ;
-
- return total ;
-} /* dpcm_write_f2dles */
-
-static sf_count_t
-dpcm_write_d2dles (SF_PRIVATE *psf, const double *ptr, sf_count_t len)
-{ XI_PRIVATE *pxi ;
- int bufferlen, writecount ;
- sf_count_t total = 0 ;
- double normfact ;
-
- if ((pxi = psf->fdata) == NULL)
- return 0 ;
-
- normfact = (psf->norm_double == SF_TRUE) ? (1.0 * 0x7FFF) : 1.0 ;
-
- bufferlen = ARRAY_LEN (psf->u.sbuf) ;
-
- while (len > 0)
- { if (len < bufferlen)
- bufferlen = (int) len ;
- d2dles_array (pxi, ptr + total, psf->u.sbuf, bufferlen, normfact) ;
- writecount = psf_fwrite (psf->u.sbuf, sizeof (short), bufferlen, psf) ;
- total += writecount ;
- if (writecount < bufferlen)
- break ;
- len -= writecount ;
- } ;
-
- return total ;
-} /* dpcm_write_d2dles */
-
-
-/*==============================================================================
-*/
-
-static void
-dsc2s_array (XI_PRIVATE *pxi, signed char *src, int count, short *dest)
-{ signed char last_val ;
- int k ;
-
- last_val = pxi->last_16 >> 8 ;
-
- for (k = 0 ; k < count ; k++)
- { last_val += src [k] ;
- dest [k] = last_val << 8 ;
- } ;
-
- pxi->last_16 = last_val << 8 ;
-} /* dsc2s_array */
-
-static void
-dsc2i_array (XI_PRIVATE *pxi, signed char *src, int count, int *dest)
-{ signed char last_val ;
- int k ;
-
- last_val = pxi->last_16 >> 8 ;
-
- for (k = 0 ; k < count ; k++)
- { last_val += src [k] ;
- dest [k] = last_val << 24 ;
- } ;
-
- pxi->last_16 = last_val << 8 ;
-} /* dsc2i_array */
-
-static void
-dsc2f_array (XI_PRIVATE *pxi, signed char *src, int count, float *dest, float normfact)
-{ signed char last_val ;
- int k ;
-
- last_val = pxi->last_16 >> 8 ;
-
- for (k = 0 ; k < count ; k++)
- { last_val += src [k] ;
- dest [k] = last_val * normfact ;
- } ;
-
- pxi->last_16 = last_val << 8 ;
-} /* dsc2f_array */
-
-static void
-dsc2d_array (XI_PRIVATE *pxi, signed char *src, int count, double *dest, double normfact)
-{ signed char last_val ;
- int k ;
-
- last_val = pxi->last_16 >> 8 ;
-
- for (k = 0 ; k < count ; k++)
- { last_val += src [k] ;
- dest [k] = last_val * normfact ;
- } ;
-
- pxi->last_16 = last_val << 8 ;
-} /* dsc2d_array */
-
-/*------------------------------------------------------------------------------
-*/
-
-static void
-s2dsc_array (XI_PRIVATE *pxi, const short *src, signed char *dest, int count)
-{ signed char last_val, current ;
- int k ;
-
- last_val = pxi->last_16 >> 8 ;
-
- for (k = 0 ; k < count ; k++)
- { current = src [k] >> 8 ;
- dest [k] = current - last_val ;
- last_val = current ;
- } ;
-
- pxi->last_16 = last_val << 8 ;
-} /* s2dsc_array */
-
-static void
-i2dsc_array (XI_PRIVATE *pxi, const int *src, signed char *dest, int count)
-{ signed char last_val, current ;
- int k ;
-
- last_val = pxi->last_16 >> 8 ;
-
- for (k = 0 ; k < count ; k++)
- { current = src [k] >> 24 ;
- dest [k] = current - last_val ;
- last_val = current ;
- } ;
-
- pxi->last_16 = last_val << 8 ;
-} /* i2dsc_array */
-
-static void
-f2dsc_array (XI_PRIVATE *pxi, const float *src, signed char *dest, int count, float normfact)
-{ signed char last_val, current ;
- int k ;
-
- last_val = pxi->last_16 >> 8 ;
-
- for (k = 0 ; k < count ; k++)
- { current = lrintf (src [k] * normfact) ;
- dest [k] = current - last_val ;
- last_val = current ;
- } ;
-
- pxi->last_16 = last_val << 8 ;
-} /* f2dsc_array */
-
-static void
-d2dsc_array (XI_PRIVATE *pxi, const double *src, signed char *dest, int count, double normfact)
-{ signed char last_val, current ;
- int k ;
-
- last_val = pxi->last_16 >> 8 ;
-
- for (k = 0 ; k < count ; k++)
- { current = lrint (src [k] * normfact) ;
- dest [k] = current - last_val ;
- last_val = current ;
- } ;
-
- pxi->last_16 = last_val << 8 ;
-} /* d2dsc_array */
-
-/*==============================================================================
-*/
-
-static void
-dles2s_array (XI_PRIVATE *pxi, short *src, int count, short *dest)
-{ short last_val ;
- int k ;
-
- last_val = pxi->last_16 ;
-
- for (k = 0 ; k < count ; k++)
- { last_val += LES2H_SHORT (src [k]) ;
- dest [k] = last_val ;
- } ;
-
- pxi->last_16 = last_val ;
-} /* dles2s_array */
-
-static void
-dles2i_array (XI_PRIVATE *pxi, short *src, int count, int *dest)
-{ short last_val ;
- int k ;
-
- last_val = pxi->last_16 ;
-
- for (k = 0 ; k < count ; k++)
- { last_val += LES2H_SHORT (src [k]) ;
- dest [k] = last_val << 16 ;
- } ;
-
- pxi->last_16 = last_val ;
-} /* dles2i_array */
-
-static void
-dles2f_array (XI_PRIVATE *pxi, short *src, int count, float *dest, float normfact)
-{ short last_val ;
- int k ;
-
- last_val = pxi->last_16 ;
-
- for (k = 0 ; k < count ; k++)
- { last_val += LES2H_SHORT (src [k]) ;
- dest [k] = last_val * normfact ;
- } ;
-
- pxi->last_16 = last_val ;
-} /* dles2f_array */
-
-static void
-dles2d_array (XI_PRIVATE *pxi, short *src, int count, double *dest, double normfact)
-{ short last_val ;
- int k ;
-
- last_val = pxi->last_16 ;
-
- for (k = 0 ; k < count ; k++)
- { last_val += LES2H_SHORT (src [k]) ;
- dest [k] = last_val * normfact ;
- } ;
-
- pxi->last_16 = last_val ;
-} /* dles2d_array */
-
-/*------------------------------------------------------------------------------
-*/
-
-static void
-s2dles_array (XI_PRIVATE *pxi, const short *src, short *dest, int count)
-{ short diff, last_val ;
- int k ;
-
- last_val = pxi->last_16 ;
-
- for (k = 0 ; k < count ; k++)
- { diff = src [k] - last_val ;
- dest [k] = LES2H_SHORT (diff) ;
- last_val = src [k] ;
- } ;
-
- pxi->last_16 = last_val ;
-} /* s2dles_array */
-
-static void
-i2dles_array (XI_PRIVATE *pxi, const int *src, short *dest, int count)
-{ short diff, last_val ;
- int k ;
-
- last_val = pxi->last_16 ;
-
- for (k = 0 ; k < count ; k++)
- { diff = (src [k] >> 16) - last_val ;
- dest [k] = LES2H_SHORT (diff) ;
- last_val = src [k] >> 16 ;
- } ;
-
- pxi->last_16 = last_val ;
-} /* i2dles_array */
-
-static void
-f2dles_array (XI_PRIVATE *pxi, const float *src, short *dest, int count, float normfact)
-{ short diff, last_val, current ;
- int k ;
-
- last_val = pxi->last_16 ;
-
- for (k = 0 ; k < count ; k++)
- { current = lrintf (src [k] * normfact) ;
- diff = current - last_val ;
- dest [k] = LES2H_SHORT (diff) ;
- last_val = current ;
- } ;
-
- pxi->last_16 = last_val ;
-} /* f2dles_array */
-
-static void
-d2dles_array (XI_PRIVATE *pxi, const double *src, short *dest, int count, double normfact)
-{ short diff, last_val, current ;
- int k ;
-
- last_val = pxi->last_16 ;
-
- for (k = 0 ; k < count ; k++)
- { current = lrint (src [k] * normfact) ;
- diff = current - last_val ;
- dest [k] = LES2H_SHORT (diff) ;
- last_val = current ;
- } ;
-
- pxi->last_16 = last_val ;
-} /* d2dles_array */
-
-/*
-** Do not edit or modify anything in this comment block.
-** The arch-tag line is a file identity tag for the GNU Arch
-** revision control system.
-**
-** arch-tag: 1ab2dbe0-29af-4d80-9c6f-cb21b67521bc
-*/
diff --git a/libs/rubberband/SConscript b/libs/rubberband/SConscript
index 82a9f1fa5c..0b684b3033 100644
--- a/libs/rubberband/SConscript
+++ b/libs/rubberband/SConscript
@@ -13,7 +13,7 @@ rb.Merge ([libraries['fftw3f'],
libraries['fftw3'],
libraries['vamp'],
libraries['samplerate'],
- libraries['sndfile-ardour']
+ libraries['sndfile']
])
rb.Append (CPPATH='#libs/rubberband/rubberband', CXXFLAGS="-Ilibs/rubberband/rubberband")
diff --git a/libs/surfaces/control_protocol/SConscript b/libs/surfaces/control_protocol/SConscript
index df212ca718..4ae3406b8f 100644
--- a/libs/surfaces/control_protocol/SConscript
+++ b/libs/surfaces/control_protocol/SConscript
@@ -34,7 +34,7 @@ cp.Append(CPPPATH = libraries['jack'].get('CPPPATH', []))
cp.Merge ([
libraries['ardour'],
- libraries['sndfile-ardour'],
+ libraries['sndfile'],
libraries['sigc2'],
libraries['pbd'],
libraries['midi++2'],
diff --git a/libs/surfaces/generic_midi/SConscript b/libs/surfaces/generic_midi/SConscript
index b56d791130..27f88651fc 100644
--- a/libs/surfaces/generic_midi/SConscript
+++ b/libs/surfaces/generic_midi/SConscript
@@ -35,7 +35,7 @@ genericmidi.Append(CPPPATH = libraries['jack'].get('CPPPATH', []))
genericmidi.Merge ([
libraries['ardour'],
libraries['ardour_cp'],
- libraries['sndfile-ardour'],
+ libraries['sndfile'],
libraries['midi++2'],
libraries['pbd'],
libraries['sigc2'],
diff --git a/libs/surfaces/mackie/SConscript b/libs/surfaces/mackie/SConscript
index 6b3182c818..6dcab460df 100644
--- a/libs/surfaces/mackie/SConscript
+++ b/libs/surfaces/mackie/SConscript
@@ -63,7 +63,7 @@ mackie.Merge ([
libraries['xml'],
libraries['glib2'],
libraries['glibmm2'],
- libraries['sndfile-ardour']
+ libraries['sndfile']
])
libardour_mackie = mackie.SharedLibrary('ardour_mackie', mackie_files)
diff --git a/libs/surfaces/tranzport/SConscript b/libs/surfaces/tranzport/SConscript
index 0d9a2a8220..c2ab35124d 100644
--- a/libs/surfaces/tranzport/SConscript
+++ b/libs/surfaces/tranzport/SConscript
@@ -64,7 +64,7 @@ tranzport.Merge ([
libraries['glib2'],
libraries['glibmm2'],
libraries['usb'],
- libraries['sndfile-ardour']
+ libraries['sndfile']
])
libardour_tranzport = tranzport.SharedLibrary('ardour_tranzport', tranzport_files)
diff --git a/libs/surfaces/wiimote/SConscript b/libs/surfaces/wiimote/SConscript
index df3d61f7ae..c530445887 100644
--- a/libs/surfaces/wiimote/SConscript
+++ b/libs/surfaces/wiimote/SConscript
@@ -35,7 +35,7 @@ wiimote.Append(LINKFLAGS="-lcwiid")
wiimote.Merge ([
libraries['ardour'],
libraries['ardour_cp'],
- libraries['sndfile-ardour'],
+ libraries['sndfile'],
libraries['midi++2'],
libraries['pbd'],
libraries['sigc2'],
diff --git a/tools/osx_packaging/osx_build b/tools/osx_packaging/osx_build
index 92c76b384f..57d5323b84 100755
--- a/tools/osx_packaging/osx_build
+++ b/tools/osx_packaging/osx_build
@@ -306,6 +306,7 @@ else
fi
cp ../../gtk2_ardour/ardour2_ui_sae.conf $Resources
cp ../../gtk2_ardour/ardour2_ui_default.conf $Resources
+cp ../../gtk2_ardour/ardour2_ui_default.conf $Resources/ardour2_ui.conf
cp ../../gtk2_ardour/ardour2_ui_light.rc $Resources
cp ../../gtk2_ardour/ardour2_ui_dark.rc $Resources
cp ../../gtk2_ardour/ardour2_ui_light_sae.rc $Resources
@@ -419,12 +420,28 @@ if [ x$EXTRA_PACKAGING_DIR != x ] ; then
rm -rf $MIXBUS_PKG_DIR
mkdir $MIXBUS_PKG_DIR
mv $APPDIR $MIXBUS_PKG_DIR/
- # cp HowToInstallArdourMIXBUS.pdf "$MIXBUS_PKG_DIR/How To Install Ardour MIXBUS.pdf"
+ cp MixBus_Install_QuickStart.pdf "$MIXBUS_PKG_DIR/Mixbus Install & Quick Start Guide.pdf"
if [ -x$EXTERNAL_JACK != x ] ; then
cp $EXTERNAL_JACK $MIXBUS_PKG_DIR
fi
+ # create dmg
+
+ echo "Building DMG ..."
+
+ # UC_DMG=Ardour-${release_version}-${svn_version}-UC.dmg
+ # FINAL_DMG=Ardour-${release_version}-${svn_version}.dmg
+ UC_DMG=Ardour-${release_version}-${svn_version}.dmg
+
+ rm -f $UC_DMG
+ hdiutil create $UC_DMG -volname Ardour-$release_version -fs HFS+ -srcfolder $MIXBUS_PKG_DIR
+
+ # compress it
+ # echo "Compressing DMG ..."
+ # rm -f $FINAL_DMG
+ # hdiutil convert $UC_DMG -format UDBZ -o $FINAL_DMG
+
else
echo "public packaging in an extra folder is not implemented yet"
@@ -432,5 +449,7 @@ if [ x$EXTRA_PACKAGING_DIR != x ] ; then
fi
fi
+
+
echo "Done."
diff --git a/vst/SConscript b/vst/SConscript
index f3492b89c7..a3d0fb01af 100644
--- a/vst/SConscript
+++ b/vst/SConscript
@@ -36,8 +36,7 @@ ardour_vst.Merge ([
libraries['libgnomecanvas2'],
libraries['libgnomecanvasmm'],
libraries['sysmidi'],
- libraries['sndfile-ardour'],
- libraries['flac'],
+ libraries['sndfile'],
libraries['lrdf'],
libraries['glibmm2'],
libraries['pangomm'],