summaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
authorLorry <lorry@roadtrain.codethink.co.uk>2012-07-18 20:35:05 +0100
committerLorry <lorry@roadtrain.codethink.co.uk>2012-07-18 20:35:05 +0100
commitaceb1f30497619786f1827e4c65992b890a07410 (patch)
treece33ac9d0d076a8ec4f993e614cf71a4d5daa7e7 /doc
downloadlibsndfile-aceb1f30497619786f1827e4c65992b890a07410.tar.gz
Tarball conversion
Diffstat (limited to 'doc')
-rw-r--r--doc/AUTHORS14
-rw-r--r--doc/ChangeLog9044
-rw-r--r--doc/FAQ.html849
-rw-r--r--doc/Makefile.am10
-rw-r--r--doc/Makefile.in485
-rw-r--r--doc/NEWS175
-rw-r--r--doc/README65
-rw-r--r--doc/api.html781
-rw-r--r--doc/bugs.html77
-rw-r--r--doc/command.html1605
-rw-r--r--doc/dither.html1017
-rw-r--r--doc/embedded_files.html47
-rw-r--r--doc/index.html494
-rw-r--r--doc/libsndfile.css90
-rw-r--r--doc/libsndfile.css.in90
-rw-r--r--doc/libsndfile.jpgbin0 -> 22043 bytes
-rw-r--r--doc/lists.html52
-rw-r--r--doc/new_file_type.HOWTO135
-rw-r--r--doc/octave.html118
-rw-r--r--doc/pkgconfig.html71
-rw-r--r--doc/sndfile_info.html53
-rw-r--r--doc/tutorial.html34
-rw-r--r--doc/win32.html53
23 files changed, 15359 insertions, 0 deletions
diff --git a/doc/AUTHORS b/doc/AUTHORS
new file mode 100644
index 0000000..b7e2232
--- /dev/null
+++ b/doc/AUTHORS
@@ -0,0 +1,14 @@
+The main author of libsndfile is Erik de Castro Lopo <erikd@mega-nerd.com>
+apart from code in the following directories:
+
+ - src/GSM610 : 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
+
+ - src/G72x : 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/doc/ChangeLog b/doc/ChangeLog
new file mode 100644
index 0000000..cb29658
--- /dev/null
+++ b/doc/ChangeLog
@@ -0,0 +1,9044 @@
+2011-07-13 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * NEWS README configure.ac doc/*.html
+ Updates for 1.0.25.
+
+2011-07-07 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/sfconfig.h
+ Add handling for HAVE_SYS_WAIT_H.
+
+ * Makefile.am src/Makefile.am tests/Makefile.am
+ Add 'checkprograms' target.
+
+2011-07-05 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/common.h src/sndfile.c
+ Purge SF_ASSERT macro. Use standard C assert instead.
+
+ * src/paf.c src/common.h src/sndfile.c
+ Fix for Secunia Advisory SA45125, heap overflow (heap gets overwritten with
+ byte value of 0) due to integer overflow if PAF file handler.
+
+ * src/ima_adpcm.c src/ms_adpcm.c src/paf.c
+ Use calloc instead of malloc followed by memset.
+
+ * tests/utils.tpl
+ Clean up use of memset.
+
+2011-07-05 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/ogg.c
+ Fix log message.
+
+ * tests/format_check_test.c
+ Fix compiler warnings.
+
+2011-07-04 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/sndfile.c
+ Fix error message for erro code SFE_ZERO_MINOR_FORMAT.
+
+ * tests/format_check_test.c
+ Add a test to for SF_FINFO format field validation.
+
+ * src/ogg.c src/ogg_vorbis.c src/ogg.h src/ogg_pcm.c src/ogg_speex.c
+ src/common.h src/Makefile.am
+ Move vorbis specific code to ogg_vorbis.c, add new files for handling PCM
+ and Speex codecs in an Ogg container. The later two are only enabled with
+ ENABLE_EXPERIMENTAL_CODE config variable.
+
+2011-06-28 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/strings.c
+ Clean up and refactor storage of SF_STR_SOFTWARE.
+
+2011-06-23 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/sndfile.h.in doc/api.html
+ Fix definition of SF_STR_LAST and update SF_STR_* related docs. Thanks to
+ Tim van der Molen for the patch.
+
+2011-06-21 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * programs/sndfile-interleave.c
+ Fix handling of argc. Thanks to Marius Hennecke.
+
+ * src/wav_w64.c
+ Accept broken WAV files with blockalign == 0. Thanks to Olivier Tristan for
+ providing example files.
+
+ * src/wav.c
+ Jump over 'FLLR' chunks.
+
+2011-06-14 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/sndfile.h.in
+ Fix -Wundef warning due to ENABLE_SNDFILE_WINDOWS_PROTOTYPES.
+
+ * configure.ac
+ Add -Wundef to CFLAGS.
+
+ * src/ogg.c
+ Fix -Wunder warning.
+
+2011-05-18 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * configure.ac
+ Use int64_t instead of off_t when they are the same size.
+
+ * src/Makefile.am tests/Makefile.am
+ Use check_PROGRAMS instead of noinst_PROGRAMS where appropriate.
+
+2011-05-08 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/wav.c
+ Don't allow unknown and/or un-editable chunks to prevent the file from being
+ opened in SFM_RDWR mode.
+
+2011-04-25 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * tests/format_check_test.c
+ Fix segfault in test program.
+
+2011-04-25 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * tests/format_check_test.c
+ New test program to check to make sure that sf_open() and sf_check_format()
+ agree as to what is a valid program.
+
+ * tests/Makefile.am tests/test_wrapper.sh.in
+ Hook into build and test runner.
+
+ * src/sndfile.c
+ Fix some sf_format_check() problems. Thanks to Charles Van Winkle for the
+ notification.
+
+2011-04-06 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/caf.c
+ Add validation to size of 'data' chunk and fix size of written 'data'
+ chunk. Thanks to Michael Pruett for reporting this.
+
+2011-03-28 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/* tests/* programs/*
+ Fix a bunch of compiler warnings with gcc-4.6.
+
+2011-03-25 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * tests/util.tpl
+ Add NOT macro to util.h.
+
+ * src/strings.c
+ Fix handling of SF_STR_SOFTWARE that resulted in a segfault due to calling
+ strlen() on an unterminated string. Thanks to Francois Thibaud for reporting
+ this problem.
+
+ * tests/string_test.c
+ Add test for SF_STR_SOFTWARE segfault bug.
+
+ * configure.ac
+ Sanitize FLAC_CFLAGS value supplied by pkg-config which returns a value of
+ '-I${includedir}/FLAC'. However FLAC also provides an include file
+ <assert.h> which clashes with the Standard C header of the same name. The
+ solution is strip the 'FLAC' part off the end and include all FLAC headers
+ as <FLAC/header.h>.
+
+ * configure.ac src/Makefile.am
+ Use non-recursive make in src/ directory.
+
+2011-03-23 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * NEWS README docs/*.html
+ Updates for 1.0.24 release.
+
+2011-03-22 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * configure.ac
+ Fix up usage of sed (should not assume GNU sed).
+
+ * M4/add_(c|cxx)flags.m4
+ Test flags in isolation.
+
+ * tests/cpp_test.cc
+ Fix a broken test (test segfaults). Report by Dave Flogeras.
+
+2011-03-21 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * programs/common.[ch]
+ Add function program_name() which returns the program name minus the path
+ from argv [0].
+
+ * programs/*.c programs/Makefile.am
+ Use program_name() where appropriate. Fix build.
+
+2011-03-20 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/wav.c
+ For u-law and A-law files, write an 18 byte 'fmt ' chunk instead of a 16
+ byte one. Win98 accepts files with a 16 but not 18 byte 'fmt' chunk. Later
+ version accept 18 byte but not 16 byte.
+
+2011-03-15 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * doc/FAQ.html
+ Add examples for question 12.
+
+ * doc/libsndfile.css.in
+ Add tweaks for h4 element.
+
+ * doc/api.html
+ Add documentation for virtual I/O functionality. Thanks to Uli Franke.
+
+ * tests/util.tpl
+ Add static inline functions sf_info_clear() and sf_info_setup().
+
+ * tests/(alaw|dwvw|ulaw)_test.c
+ Use functions sf_info_clear() and sf_info_setup().
+
+2011-03-08 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * configure.ac
+ Fail more gracefully if pkg-config is missing. Suggestion from Brian
+ Willoughby.
+
+2011-02-27 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/common.c
+ Use size_t instead of int for size params with varargs.
+
+2011-02-09 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * doc/index.html
+ Update supported platforms with more Debian platforms and Android.
+
+2011-01-27 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/sndfile.hh
+ Add an LPCWSTR version of the SndfileHandle constructor to the SndfileHandle
+ class definition. Thanks to Eric Eizenman for pointing out this was missing.
+
+ * tests/cpp_test.cc
+ Add test for LPCWSTR version of the SndfileHandle constructor.
+
+2011-01-19 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * programs/sndfile-play.c
+ Remove cruft.
+
+2010-12-01 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/sndfile.hh
+ Add methods rawHandle() and takeOwnership(). Thanks to Tim Blechmann for
+ the patch.
+
+ * tests/cpp_test.cc
+ Add tests for above two methods. Also supplied by Tim Blechmann.
+
+2010-11-11 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * doc/api.html
+ Add mention of use of sf_strerror() when sf_open() fails.
+
+2010-11-01 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * configure.ac
+ Make TYPEOF_SF_COUNT_T int64_t where possible. This may fix problems where
+ people are compiling on a 64 bit system with the GCC -m32 flag.
+
+ * src/sndfile.h.in
+ Fix comments on sf_count_t.
+
+2010-10-26 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/aiff.c
+ Handle non-zero offset field in SSND chunk. Thanks to Michael Chinen.
+
+2010-10-20 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * configure.ac
+ Sed fix for FreeBSD. Thanks Tony Theodore.
+
+2010-10-14 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * shave.in M4/shave.m4
+ Fix shave invocation of windres compiler. Thanks Damien Lespiau (upstream
+ shave author).
+
+ * configure.ac M4/shave.m4 shave-libtool.in shave.in
+ Switch from shave to automake-1.11's AM_SILENT_RULES.
+
+2010-10-13 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * shave-libtool.in shave.in
+ Sync to upstream version.
+
+ * src/rf64.c
+ More work to make the parser more robust and accepting of mal-formed files.
+
+2010-10-12 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/common.h
+ Add functions psf_strlcpy() and psf_strlcat().
+
+ * src/broadcast.c src/sndfile.c src/strings.c src/test_main.c
+ src/test_main.h src/test_strncpy_crlf.c
+ Use functions psf_strlcpy() and psf_strlcat() as appropriate.
+
+ * tests/string_test.c
+ Add tests for SF_STR_GENRE and SF_STR_TRACKNUMBER.
+
+ * src/rf64.c
+ Fix size of 'ds64' chunk when writing RF64.
+
+2010-10-10 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * programs/*.c
+ Add the libsndfile version to the usage message of all programs.
+
+2010-10-10 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * configure.ac src/version-metadata.rc.in src/Makefile.am
+ Add version string resources to the windows DLL.
+
+ * doc/api.html
+ Update to add missing SF_FORMAT_* values. Closed Debian bug #545257.
+
+ * NEWS README configure.ac doc/*.html
+ Updates for 1.0.23 release.
+
+2010-10-09 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * tests/pedantic-header-test.sh.in
+ Handle unusual values of CC environment variable.
+
+ * src/rf64.c
+ Minor tweaks and additional sanity checking.
+
+ * src/Makefile.am src/binheader_writef_check.py
+ Use python 2.6.
+
+2010-10-08 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/sndfile.hh
+ Add a missing 'inline' before a constructor defintion.
+
+2010-10-06 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/common.h
+ Add macro NOT.
+
+ * src/rf64.c
+ Minor tweaks.
+
+ * Makefile.am */Makefile.am
+ Add *~ to CLEANFILES.
+
+2010-10-05 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/sndfile.c
+ Fix a typo in the error string for SFE_OPEN_PIPE_RDWR. Thanks to Charles
+ Van Winkle for the report.
+
+2010-10-04 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/flac.c src/ogg.c src/sndfile.h.in src/strings.c src/wav.c
+ Add ability to read/write tracknumber and genre to flac/ogg/wav files.
+ Thanks to Matti Nykyri for the patch.
+
+ * src/common.h src/broadcast.c src/strings.c
+ Add function psf_safe_strncpy() and use where appropriate.
+
+2010-10-04 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * NEWS README configure.ac doc/*.html
+ Updates for 1.0.22 release.
+
+2010-10-03 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/common.h src/broadcast.c src/rf64.c src/sndfile.c src/wav.c
+ Rewrite of SF_BROADCAST_INFO handling.
+
+ * src/test_broadcast_var.c tests/command_test.c
+ Tweak SF_BROADCAST_INFO tests.
+
+ * src/test_broadcast_var.c
+ Fix OSX stack check error.
+
+2010-09-30 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/sds.c
+ Set sustain_loop_end to 0 as suggested by Brian Lewis.
+
+2010-09-29 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/sds.c
+ Make sure the correct frame count gets written into the header.
+
+ * tests/write_read_test.tpl
+ Don't allow SDS files to have a long frame count.
+
+2010-09-17 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/sds.c
+ Apply a pair of patches from Brian Lewis to fix the packet number location
+ and the checksum.
+
+2010-09-10 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/aiff.c src/file_io.c src/ogg.c src/rf64.c src/sndfile.c
+ src/strings.c src/test_audio_detect.c src/test_strncpy_crlf.c
+ src/wav.c tests/pcm_test.tpl
+ Fix a bunch of minor issues found using static analysis.
+
+2010-08-23 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/test_broadcast_var.c
+ New file containing tests for broadcast_set_var().
+
+ * src/Makefile.am src/test_main.[ch]
+ Hook test_broadcast_var.c into tests.
+
+2010-08-22 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/broadcast.c src/common.(c|h)
+ Move function strncpy_crlf() to src/common.c so the function can be tested
+ in isolation.
+
+ * src/test_strncpy_crlf.c
+ New file.
+
+ * src/Makefile.am src/test_main.[ch]
+ Hook test_strncpy_crlf.c into tests.
+
+2010-08-18 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/common.h
+ Move code around to make comments make sense.
+
+ * src/broadcast.c
+ Add debugging code that is disabled by default.
+
+2010-08-02 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/flac.c
+ When the file meta data says the file has zero frames set psf->sf.frames
+ to SF_COUNT_MAX. Fixes Debian bug #590752.
+
+ * programs/sndfile-info.c
+ Print 'unknown' if frame count == SF_COUNT_MAX.
+
+2010-06-27 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/sndfile.c
+ Only support writing mono SVX files. Multichannel SVX files are not
+ interleaved and there is no support infrastructure to cache and write
+ multiple channels to create a non-interleaved file.
+
+ * src/file_io.c
+ Don't call close() on a file descriptor of -1. Thanks to Jeremy Friesner
+ for the bug report.
+
+2010-06-09 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/common.h
+ Add macro SF_ASSERT.
+
+ * src/sndfile.c
+ Use SF_ASSERT to ensure sizeof (sf_count_t) == 8.
+
+ * src/svx.c
+ Add support for reading and writing stereo SVX files.
+
+2010-05-07 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * configure.ac
+ When compiling with x86_64-w64-mingw32-gcc link with -static-libgcc flags.
+
+ * programs/common.c programs/sndfile-metadata-set.c
+ Update metadata after the audio data is copied. Other minor fixes. Patch
+ from Marius Hennecke.
+
+2010-05-04 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/nist.c
+ Fix a regression reported by Hugh Secker-Walker.
+
+ * src/api.html
+ Add comment about sf_open_fd() not working on Windows if the application
+ and the libsndfile DLL are linked to different versions of the Microsoft
+ C runtime DLL.
+
+2010-04-23 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * tests/pedantic-header-test.sh.in
+ Fix 'make distcheck'.
+
+2010-04-21 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * tests/pedantic-header-test.sh.in
+ New file to test whether sndfile.h can be compiled with gcc's -pedantic
+ flag.
+
+ * configure.ac tests/test_wrapper.sh.in
+ Hook pedantic-header-test into test suite.
+
+ * src/sndfile.h.in
+ Fix -pedantic warning.
+
+2010-04-19 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * programs/sndfile-salvage.c programs/Makefile.am
+ New program to salvage the audio data from WAV/WAVEX/AIFF files which are
+ greater than 4Gig in size.
+
+2010-04-09 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * programs/sndfile-convert.c
+ Fix valgrind warning.
+
+2010-04-06 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * programs/sndfile-cmp.c
+ When files differ in the PCM data, also print the difference offset.
+ Minor cleanup.
+
+2010-03-19 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/aiff.c
+ Don't use the 'twos' marker for 24 and 32 bit PCM, use 'in24' and 'in32'
+ instead. Thanks to Paul Davis (Ardour) for this suggestion.
+
+2010-02-28 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * configure.ac
+ Clean up configure report.
+
+ * tests/utils.tpl
+ Add functions test_read_raw_or_die and test_write_raw_or_die.
+
+ * tests/rdwr_test.(def|tpl) tests/Makefile.am
+ Add new test program and hook into build.
+
+ * src/sndfile.c
+ Fix minor issues with sf_read/write_raw(). Bug reported by Milan Křápek.
+
+ * tests/test_wrapper.sh.in
+ Add rdwr_test to the test wrapper script.
+
+2010-02-22 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * configure.ac
+ Remove -fpascal-strings from OSX's OS_SPECIFIC_CFLAGS.
+
+ * programs/common.[ch] programs/sndfile-metadata-set.c
+ Apply a patch from Robin Gareus allowing the setting of the time reference
+ field of the BEXT chunk.
+
+2010-02-06 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/ima_adpcm.c
+ Add a fix from Jonatan Liljedahl to handle predictor overflow when decoding
+ IMA4.
+
+2010-01-26 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/sndfile.hh
+ Add a constructor which takes an existing file descriptor and then calls
+ sf_open_fd(). Patch from Sakari Bergen.
+
+2010-01-10 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * programs/sndfile-deinterleave.c programs/sndfile-interleave.c
+ Improve usage messages.
+
+2010-01-09 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/id3.c src/Makefile.am
+ Add new file src/id3.c and hook into build.
+
+ * src/sndfile.c src/common.h
+ Detect and skip and ID3 header at the start of the file.
+
+2010-01-07 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * programs/common.c
+ Fix update_strings() copyright, comment, album and license are correctly
+ written. Thanks to Todd Allen for reporting this.
+
+ * man/Makefile.am
+ Change GNU makeism to something more widely supported. Thanks to Christian
+ Weisgerber for reporting this.
+
+ * configure.ac programs/Makefile.am programs/sndfile-play.c
+ Apply patch from Christian Weisgerber and Jacob Meuserto add support for
+ OpenBSD's sndio.
+
+2010-01-05 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * doc/api.html
+ Discourage the use of sf_read/write_raw().
+
+2009-12-28 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * configure.ac
+ Test for Unix pipe() and waitpid() functions.
+
+ * src/sfconfig.h tests/pipe_test.tpl
+ Disable pipe_test if pipe() and waitpid() aren't available.
+
+2009-12-16 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * configure.ac src/Makefile.am src/create_symbols_file.py
+ src/make-static-lib-hidden-privates.sh
+ Change name of generated file src/Symbols.linux to Symbols.gnu-binutils and
+ and use the same symbols file for other systems which use GNU binutils like
+ Debian's kfreebsd.
+
+ * M4/shave.m4 shave.in
+ Update shave files from upstream.
+
+2009-12-15 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * man/sndfile-metadata-get.1
+ Fix typo.
+
+ * man/sndfile-interleave.1 man/Makefile.am
+ New man page.
+
+2009-12-13 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/ogg.c
+ When decoding to short or int, clip the decoded signal to [-1.0, 1.0] if
+ its too hot. Thanks to Dmitry Baikov for suggesting this.
+
+ * NEWS README doc/*.html
+ Updates for 1.0.21.
+
+2009-12-09 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * programs/sndfile-jackplay.c man/sndfile-jackplay.1
+ Remove these which will now be in found in the sndfile-tools package.
+
+ * programs/Makefile.am man/Makefile.am
+ Remove build rules for sndfile-jackplay.
+
+ * configure.ac
+ Remove detection of JACK Audio Connect Kit.
+
+ * programs/sndfile-concat.c man/sndfile-concat.1
+ Add new program with man page.
+
+ * man/Makefile.am programs/Makefile.am
+ Hook sndfile-concat into build system.
+
+2009-12-08 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * tests/error_test.c
+ Don't terminate when sf_close() returns zero in error_close_test().
+ It seems that Windows 7 behaves differently from earlier versions of
+ Windows.
+
+2009-12-03 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * configure.ac M4/*.m4
+ Rename all custom macros from AC_* to MN_*.
+
+ * programs/sndfile-interleave.c
+ Make it actually work.
+
+2009-12-02 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * doc/*.html configure.ac
+ Corrections and clarifications courtesy of Robin Forder.
+
+ * programs/sndfile-convert.c programs/common.[ch]
+ Move some code from convert to common for reuse.
+
+ * programs/sndfile-interleave.c programs/sndfile-interleave.c
+ Add new programs sndfile-interleave and sndfile-deinterleave.
+
+ * programs/Makefile.am
+ Hook new programs into build.
+
+2009-12-01 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/create_symbols_file.py tests/stdio_test.c tests/win32_test.c
+ Minor OS/2 tweaks as suggested by David Yeo.
+
+ * tests/multi_file_test.c
+ Fix file creation flags on windows. Thanks to Bruce Sharpe.
+
+ * src/sf_unistd.h
+ Set all group and other file create permssions to zero.
+
+ * tests/win32_test.c
+ Add a new test.
+
+2009-11-30 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * doc/print.css doc/*.html
+ Add a print stylesheet and update all HTML documents to reference it.
+ Thanks to Aditya Bhargava for suggesting this.
+
+ * doc/index.html
+ Minor corrections.
+
+2009-11-29 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * sndfile.pc.in
+ Add a Libs.private entry to assist with static linking.
+
+2009-11-28 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/make-static-lib-hidden-privates.sh src/Makefile.am
+ Add a script to hide all non-public symbols in the libsndfile.a static
+ library.
+
+2009-11-22 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * tests/locale_test.c
+ Correct usage of ENABLE_SNDFILE_WINDOWS_PROTOTYPES.
+
+2009-11-20 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/windows.c
+ Correct usage of ENABLE_SNDFILE_WINDOWS_PROTOTYPES.
+
+2009-11-16 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * programs/sndfile-convert.c
+ Allow the program to read from stdin by specifying '-' on the command line
+ as the input file.
+
+ * src/sndfile.h.in
+ Hash define ENABLE_SNDFILE_WINDOWS_PROTOTYPES to 1 for greater safety.
+
+ * tests/virtual_io_test.c
+ Add a PAF/PCM_24 test and verify the file length is not negative
+ immediately after openning the file for write.
+
+2009-10-18 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/wav.c
+ When writing loop lengths, adjust the end position by one to make up for
+ Microsoft's screwed up spec. Thanks to Olivier Tristan for the patch.
+
+2009-10-14 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/flac.c
+ Apply patch from Uli Franke allowing FLAC files to be encoded at any sample
+ rate.
+
+2009-10-09 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/nist.c
+ Fix parsing of odd ulaw encoded file provided by Jan Silovsky.
+
+ * configure.ac
+ Insist on libvorbis >= 1.2.3. Earlier verions have bugs that cause the
+ libsndfile test suite to fail on MIPS, PowerPC and others.
+ See: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=549899
+
+2009-10-06 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * man/sndfile-convert.1
+ Fix warning from Debian's lintian checks.
+
+ * man/sndfile-cmp.1 man/sndfile-jackplay.1 man/sndfile-metadata-get.1
+ man/Makefile.am
+ Add three new minimal manpages and hook into build.
+
+2009-10-05 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * tests/test_wrapper.sh.in
+ Don't run cpp_test on x86_64-w64-mingw32.
+
+2009-09-28 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * tests/utils.tpl
+ On windows, make sure the open() function doesn't get called with a third
+ parameter of 0 which fails for no good reason. Also make sure this third
+ parameter doesn't get called with S_IRGRP when compiling for windows because
+ Wine complains.
+
+ * src/sndfile.hh
+ Add a SndfileHandle constructor for windows that takes a 'const wchar_t *'
+ string.
+
+ * doc/FAQ.html
+ Add Q/A : I'm cross compiling libsndfile for another platform. How can I
+ run the test suite?
+
+ * src/create_symbols_file.py src/Makefile.am
+ Add Symbols.static target, a list of symbols, one per line.
+
+2009-09-27 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * tests/test_wrapper.sh.in
+ Update to allow all tests to be gathered up into a testsuite tarball and
+ then be run using this script.
+
+ * build-test-tarball.mk.in
+ Add a Make script to build a tarball of all the test binaries and the test
+ wrapper script. This is useful for cross compiling; you can build the
+ binaries, build test test tarball and transfer the test tarball to the
+ target machine for testing.
+
+2009-09-26 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/common.h src/*.c
+ Modify SF_FILE struct to allow it to carry either 8-bit or 16-bit strings
+ for the file path, directory and name. Fixes for this change throughout.
+
+ * src/windows.c src/Makefile.am
+ New file defining new windows only public function sf_wchar_open() which
+ takes a 'const wchar_t *' string (LPCWSTR) for the file name parameter.
+
+ * src/sndfile.h.in
+ Add SF_CHANNEL_MAP_ABISONIC_* entries.
+ Add windows only defintion for sf_wchar_open().
+
+ * src/create_symbols_file.py
+ Add sf_wchar_open() to the list of public symbols (windows only).
+
+ * tests/locale_test.c
+ Add a wchar_test() to test sf_wchar_open().
+
+2009-09-25 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/common.h src/*.c
+ Split file stuff into PSF_FILE struct within the SF_PRIVATE struct.
+
+2009-09-23 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/aiff.c src/voc.c
+ When a byte is needed, use unsigned char.
+
+ * src/ima_oki_adpcm.c src/broadcast.c src/test_ima_oki_adpcm.c
+ Include sfconfig.h to prevent compile errors with MinGW compilers.
+
+ * configure.ac
+ Remove AM_CONFIG_HEADER due to warnings from autoconf 2.64.
+
+ * tests/locale_test.c
+ Update to work with xx_XX.UTF-8 style locales. Refactoring.
+
+2009-09-22 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * configure.ac
+ Set __USE_MINGW_ANSI_STDIO to 1 when compiling using MinGW compilers.
+ Remove unneeded AC_SUBST.
+ Report Host CPU/OS/vendor.
+
+2009-09-19 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/sndfile.c
+ Fix error message string.
+
+ * src/flac.c
+ Add 88200 to the list of supported sample rates.
+
+ * src/ogg.c
+ Fix compiler warning when using gcc-4.5.0.
+
+ * programs/sndfile-info.c tests/utils.tpl
+ Remove WIN32 snprintf #define.
+
+ * src/ima_adpcm.c
+ Fix minor bug in aiff_ima_encode_block. Thanks to Denis Fileev for finding
+ this.
+
+2009-09-16 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/caf.c
+ Use the correct C99 format specifier for int64_t.
+
+ * M4/endian.m4
+ Fix detection of CPU endian-ness when cross compiling. Thanks to Pierre
+ Ossman for the bug report.
+
+ * src/caf.c src/sndfile.c
+ Fix reading and writing of PEAK chunks in CAF files.
+
+ * tests/peak_chunk_test.c tests/test_wrapper.sh.in
+ Run peak_chunk_test on CAF files.
+
+2009-09-15 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/aiff.c src/wav.c
+ Use the correct C99 format specifier for int64_t.
+
+2009-08-30 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/rf64.c src/sndfile.c src/wav.c src/wav_w64.h
+ Apply a patch (massaged slightly) from Uli Franke adding handling of the
+ BEXT chunk in RF64 files.
+
+ * tests/command_test.c
+ Update channel_map_test() function so WAV test passes.
+
+ * src/rf64.c
+ Add channel mapping and ambisonic support.
+
+ * src/sndfile.h
+ Add comments showing correspondance between libsndfile channel map
+ defintiions and those used by Apple and MS.
+
+ Add handling of reading/writing channel map info.
+
+ * tests/command_test.c tests/test_wrapper.sh.in
+ Update channel map tests.
+
+2009-07-29 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/common.h
+ Add function psf_isprint() a replacement for the standard C isprint()
+ function which ignores any locale settings and treats all input as ASCII.
+
+ * src/(aiff|common|rf64|sd2|strings|svx|wav).c
+ Use psf_isprint() instead of isprint().
+
+2009-07-13 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/command.c
+ Add string descriptions for SF_FORMAT_RF64 and SF_FORMAT_MPC2K.
+
+2009-06-30 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * programs/sndfile-play.c
+ Allow use of Open Sound System audio output under FreeBSD.
+
+2009-06-24 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * configure.ac
+ Add patch from Conrad Parker to add --disable-jack.
+
+2009-05-28 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/alaw.c src/float32.c src/htk.c src/pcm.c src/sds.c src/ulaw.c
+ Fix bugs where invalid files can cause a divide by zero error (SIGFPE).
+ Thanks to Sami Liedes for reporting this a Debian bug #530831.
+
+2009-05-26 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/chanmap.[ch]
+ New files for channel map decoding/encoding.
+
+2009-05-25 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * configure.ac src/sndfile.h.in
+ Fix MSVC definition of sf_count_t.
+
+2009-05-24 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/wav_w64.[ch]
+ Add wavex_channelmask to WAV_PRIVATE struct and add a function to convert
+ an array of SF_CHANNEL_MASK_* values into a bit mask for use in WAV files.
+
+ * src/wav.c
+ Add ability to write the channel mask.
+
+2009-05-23 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * programs/sndfile-info.c
+ Add -c command line option to dump the channel map information.
+
+ * src/wav_w64.c
+ Don't bail from parser if channel map bitmask is faulty.
+
+ * src/common.h src/sndfile.c
+ Remove error code SFE_W64_BAD_CHANNEL_MAP which is not needed any more.
+
+ * src/sndfile.c
+ On SFC_SET_CHANNEL_MAP_INFO pass the channel map command down to container's
+ command handler.
+
+2009-05-22 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/sndfile.h.in src/common.h src/sndfile.c src/wav_w64.c
+ Apply a patch from Lennart Poettering (PulseAudio) to allow reading of
+ channel data in WAV and W64 files.
+ Add a test for the above.
+
+2009-05-20 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/FAQ.html
+ Update the section about pre-compiled binaries for Win64.
+
+2009-05-14 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/common.h src/test_conversions.c
+ Be more careful when including <stdint.h> so compiling on pre-C99 platforms
+ (hello Slowlaris) might actually work.
+
+ * NEWS README doc/*.html
+ Updates for 1.0.20.
+
+2009-04-21 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/voc.c
+ Fix a bug whereby opening a specially crafted VOC file could result in a
+ heap overflow. Thanks to Tobias Klein (http://www.trapkit.de) for reporting
+ this issue.
+
+ * src/aiff.c
+ Fix potential (heap) buffer overflow when parsing 'MARK' chunk.
+
+2009-04-12 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * tests/stdin_test.c
+ Check psf->error after opening file.
+
+ * src/file_io.c
+ Fix obscure seeking bug reported by Hugh Secker-Walker.
+
+ * tests/utils.tpl
+ Add check of sf_error to test_open_file_or_die().
+
+ * src/sndfile.c
+ Clear error if opening resource fork fails.
+
+2009-04-11 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * tests/alaw_test.c tests/locale_test.c tests/ulaw_test.c
+ Cleanup output.
+
+2009-03-25 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/float32.c
+ Fix f2s_clip_array.
+
+2009-03-24 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/float32.c
+ In host_read_f2s call convert instead of f2s_array.
+
+ * src/ima_adpcm.c
+ Remove dead code.
+
+ * src/test_ima_oki_adpcm.c examples/generate.c tests/dither_test.c
+ tests/dwvw_test.c tests/fix_this.c tests/generate.c
+ tests/multi_file_test.c
+ Minor fixes.
+
+2009-03-23 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * M4/shave.m4 shave.in
+ Pulled update from upstream.
+
+2009-03-19 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * doc/api.html
+ Add pointers to example programs in source code tarball.
+
+2009-03-17 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/common.h
+ Define SF_PLATFORM_S64 for non-gcc compilers with 'long long' type.
+
+ * configure.ac
+ Add documentation for --disable-external-libs and improve error handling
+ for that option.
+
+ * src/sndfile.c src/sndfile.h.in src/create_symbols_file.py
+ Add public function sf_version_string.
+
+ * tests/sfversion.c
+ Test function sf_version_string.
+
+ * M4/shave.m4 shave-libtool.in shave.in
+ Add new files from 'git clone git://git.lespiau.name/shave'.
+
+ * configure.ac
+ Enable shave.
+
+ * src/Makefile.am src/binheader_writef_check.py Octave/*
+ Shave related tweaks.
+
+2009-03-15 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/common.h src/caf.c src/sndfile.c
+ Add SF_MAX_CHANNELS (set to 256) and use it.
+
+ * src/sndfile.h.in
+ Check for either _MSCVER or _MSC_VER being defined.
+
+2009-03-04 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * tests/vorbis_test.c
+ Relax test slighly to allow test to pass on more CPUs etc.
+
+2009-03-03 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * configure.ac
+ Detect vorbis_version_string() correctly.
+
+2009-03-02 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * doc/index.html
+ Add a 'See Also' section with a link to sndfile-tools.
+
+ * NEWS README doc/*.html
+ Updates for 1.0.19 release.
+
+ * configure.ac
+ Fix --enable-external-libs logic.
+
+2009-03-01 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/aiff.c
+ Fix resource leak and potential read beyond end of buffer.
+
+ * src/nist.c
+ Fix reading of header value sample_n_bytes.
+
+ * src/sd2.c src/wav.c
+ Fix potential read beyond end of buffer.
+
+ * src/sndfile.c src/svx.c
+ Check return values of file_io functions.
+
+ * tests/win32_test.c
+ Fix resource leak.
+
+ * configure.ac
+ Detect the presence/absence of vorbis_version_string() in libvorbis.
+
+ * src/ogg.c
+ Only call vorbis_version_string() from libvorbis if present.
+
+2009-02-24 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * tests/win32_test.c
+ Don't use sprintf, even on windows.
+
+ * src/aiff.c src/rf64.c src/wav.c
+ Eliminate dead code, more validation of data read from file.
+
+2009-02-22 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/ima_adpcm.c
+ Clamp values to a valid range before indexing ima_step_size array.
+
+ * src/GSM610/*.c tests/*c programs/*.c src/audio_detect.c
+ Don't include un-needed headers.
+
+ * programs/sndfile-info.c
+ Remove dead code.
+
+ * tests/test_wrapper.sh.in
+ Add 'set -e' so the script exits on error.
+
+ * src/test_ima_oki_adpcm.c
+ Fix read beyond end of array.
+
+ * tests/win32_test.c
+ Add missing close on file descriptor.
+
+ * src/nist.c programs/sndfile-metadata-set.c
+ Fix 'unused variable' warnings.
+
+ * src/aiff.c
+ Fix potential memory leak in handling of 'MARK' chunk.
+ Remove un-needed test (unsigned > 0).
+
+ * src/sd2.c
+ Improve handling of heap allocated buffer.
+
+ * src/sndfile.c
+ Remove un-needed test (always true).
+
+ * src/wav.c src/rf64.c
+ Ifdef out dead code that will be resurected some time in the future.
+
+ * src/wav.c src/w64.c src/xi.c
+ Handle error return values from psf_ftell.
+
+ * src/wav_w64.c
+ Fix handling and error checking of MSADPCM coefficient arrays.
+
+ * regtest/*.c
+ Bunch of fixes.
+
+ * src/test_file_io.c
+ Use snprintf instead of strncpy in test program.
+
+2009-02-21 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/sd2.c
+ Validate data before using.
+
+ * src/caf.c
+ Validate channels per frame value before using, fixing a possible integer
+ overflow bug, leading to a possible heap overflow. Found by Alin Rad Pop of
+ Secunia Research (CVE-2009-0186).
+
+2009-02-20 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * Octave/octave_test.sh
+ Unset TERM environment variable and export LD_LIBRARY_PATH.
+
+2009-02-16 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/file_io.c
+ In windows code, cast LPVOID to 'char*' in printf.
+
+2009-02-15 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * M4/octave.m4
+ Clear the TERM environment before evaluating anything in Octave. This works
+ around problems that might occur if a users TERM settings are incorrect.
+ Thanks to Rob Til Freedmen for helping to debug this.
+
+ * src/wav.c
+ Handle four zero bytes as a marker within a LIST or INFO chunk.
+ Thanks to Rogério Brito for supplying an example file.
+
+2009-02-14 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/common.h src/*.c
+ Use C99 snprintf everywhere.
+
+2009-02-11 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * tests/test_wrapper.sh.in
+ New file to act as the template for the test wrapper script.
+
+ * configure.ac
+ Generate tests/test_wrapper.sh from the template.
+
+ * tests/Makefile.am
+ Replace all tests with a single invocation of the test wrapper script.
+
+2009-02-09 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/ogg.c
+ Record vorbis library version string.
+
+ * configure.ac
+ Require libvorbis >= 1.2.2.
+
+ * M4/endian.m4
+ Fix bracketing of function for autoconf 2.63. Thanks to Richard Ash.
+
+ * M4/octave.m4 M4/mkoctfile_version.m4
+ Clean up AC_WITH_ARG usage using AC_HELP_STRING.
+
+2009-02-08 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * Octave/Makefile.am
+ Use $(top_buildir) instead of $(builddir) which may not be defined.
+
+ * M4/octave.m4
+ Improve logic and status reporting.
+
+2009-02-07 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * configure.ac AUTHORS NEWS README doc/*.html
+ Final tweaks for 1.0.18 release.
+
+2009-02-03 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * programs/sndfile-convert.c
+ Add 'htk' to the list of convert formats.
+
+ * programs/sndfile-info.c
+ Simplify get_signal_max using SFC_CALC_SIGNAL_MAX command.
+ Increase size of files for which signal max will be calculated.
+
+2009-01-14 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * doc/index.html
+ Fix links for SoX and WavPlay. Thanks to Daniel Griscom.
+
+2009-01-11 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * programs/sndfile-metadata-get.c
+ Make valgrind clean.
+ Clean up temp string array usage.
+ Error out if trying to update coding history in RDWR mode.
+
+2009-01-10 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * doc/index.html
+ Fix links to versions of the LGPL.
+
+2008-12-14 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * tests/string_test.c
+ Add test for RDWR mode where the file ends up shorter than when it was
+ opened.
+
+ * src/wav.c
+ Truncate the file on close for RDWR mode where the file ends up shorter
+ than when it was opened.
+
+2008-11-30 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * M4/add_cflags.m4
+ Fix problem with quoting of '#include'.
+
+ * M4/add_cxxflags.m4 configure.ac
+ Add new file M4/add_cxxflags.m4 and use it in configure.ac.
+
+2008-11-19 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * programs/sndfile-info.c
+ Apply patch from Conrad Parker to calculate and display total duration when
+ more than one file is dumped.
+
+2008-11-10 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * configure.ac src/Makefile.am
+ Tweaks to generation of Symbols files.
+
+ * tests/win32_ordinal_test.c
+ Update tests for above changes.
+
+2008-11-06 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * programs/common.c
+ When merging broadcast info, make sure to clear the destination field
+ before copying in the new data.
+
+ * programs/test-sndfile-metadata-set.py
+ Add test for the above.
+
+ * src/broadcast.c
+ Fix checking of required coding_history_size.
+
+2008-10-28 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * tests/command_test.c
+ Add test to detect if coding history is truncated.
+
+ * src/broadcast.c
+ Fix truncation of coding history.
+
+2008-10-27 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * tests/command_test.c
+ Add broadcast_coding_history_size test.
+
+ * programs/*.[ch]
+ Use SF_BROADCAST_INFO_VAR to manipulate larger 'bext' chunks.
+
+ * src/rf64.c
+ Add code to prevent infinite loop on malformed file.
+
+ * src/common.h src/sndfile.c src/w64.c src/wav_w64.c
+ Rationalize and improve error handling when parsing 'fmt ' chunk.
+
+ * M4/octave.m4
+ Simplify and remove cruft.
+ Check for correct Octave version.
+
+ * Octave/*
+ Reduce 3 C++ files to one, fix build for octave 3.0, fix build.
+
+ * Octave/sndfile.cc Octave/PKG_ADD
+ Add Octave function sfversion which returns the libsndfile version that the
+ module is linked against.
+
+ * Octave/Makefile.am
+ Bunch of build and 'make distcheck' fixes.
+
+2008-10-26 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * programs/common.c
+ Return 1 if SFC_SET_BROADCAST_INFO fails.
+
+ * programs/test-sndfile-metadata-set.py
+ Update for new programs directory, exit on any error.
+
+ * tests/error_test.c
+ Fix failure behaviour in error_number_test.
+
+ * src/common.h src/sndfile.c
+ Add error number SFE_BAD_BROADCAST_INFO_SIZE.
+
+ * src/*
+ Reimplement handling of broadcast extentioon chunk in WAV/WAVEX files.
+
+ * src/broadcast.c
+ Fix generation of added coding history.
+
+2008-10-25 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * programs/sndfile-metadata-get.c programs/sndfile-info.c
+ Exit with non-zero on errors.
+
+2008-10-21 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * examples/sndfile-to-text.c examples/Makefile.am
+ Add a new example program and hook it into the build.
+
+ * examples/ programs/
+ Add a new directory programs and move sndfile-info, sndfile-play and other
+ real programs to the new directory, leaving example programs where they
+ were.
+
+2008-10-20 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * tests/Makefile.am
+ Automake 1.10 MinGW cross compiling fixes.
+
+2008-10-19 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * examples/sndfile-play.c
+ Remove call to deprecated function snd_pcm_sw_params_get_xfer_align.
+ Fix gcc-4.3 compiler warnings.
+
+ * tests/command_test.c
+ Fix a valgrind warning.
+
+ * tests/error_test.c tests/multi_file_test.c tests/peak_chunk_test.c
+ tests/pipe_test.tpl tests/stdio_test.c tests/win32_test.c
+ Fix gcc-4.3 compiler warnings.
+
+2008-10-17 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/broadcast.c
+ Fix termination of desitination string in strncpy_crlf.
+ When copying BROADCAST_INFO chunk, make sure destination gets correct line
+ endings.
+
+ * examples/common.c
+ Fix copying of BROADCAST_INFO coding_history field.
+
+2008-10-13 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * tests/command_test.c
+ Add test function instrument_rw_test, but don't hook it into the testing
+ yet.
+
+ * src/common.h src/command.c src/sndfile.c src/flac.c
+ Error code rationalization.
+
+ * src/common.h src/sndfile.c
+ Set psf->error to SFE_CMD_HAS_DATA when adding metadata via sf_command()
+ fails due to psf->have_written being true.
+
+ * doc/command.html
+ Document the SFC_GET/SET_BROADCAST_INFO comamnds.
+
+2008-10-10 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * tests/command_test.c
+ Improve error reporting when '\0' is found in coding history.
+ Fix false failure.
+
+2008-10-09 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/broadcast.c
+ Convert all coding history line endings to \r\n.
+
+ * tests/command_test.c
+ Add test to make sure all line endings are converted to \r\n.
+
+2008-10-08 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/broadcast.c
+ Changed the order of coding history fields.
+
+ * tests/command_test.c
+ Update bextch test to cope with previous change.
+
+ * examples/common.c
+ Add extra length check when copying broadcast info data.
+
+2008-10-05 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * tests/utils.tpl tests/pcm_test.tpl
+ Update check_file_hash_or_die to use 64 bit hash.
+
+ * tests/checksum_test.c tests/Makefile.am
+ Add new checksum_test specifically for lossy compression of headerless
+ files.
+
+2008-10-04 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/gsm610.c
+ Seek to psf->dataoffset before decoding first block.
+
+ * src/sndfile.c
+ Fix detection of mpc2k files on big endian systems.
+
+2008-10-03 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/broadcast.c
+ Use '\r\n' newlines in Coding History as required by spec.
+
+2008-10-02 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/test_conversions.c
+ Use int64_t instead of 'long long'.
+
+2008-10-01 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * examples/sndfile-metadata-set.c
+ Remove --bext-coding-history-append command line option because it didn't
+ really make sense.
+
+ * examples/sndfile-metadata-(get|set).c
+ Add usage messages.
+
+ * examples/test-sndfile-metadata-set.py
+ Start work on test coding history.
+
+2008-09-30 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * README doc/win32.html
+ Bring these up to date.
+
+ * src/aiff.c
+ Fix parsing of REX files.
+
+2008-09-29 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/file_io.c
+ Use intptr_t instead of long for return value of _get_osfhandle.
+
+ * src/test_conversions.c src/test_endswap.tpl
+ Fix printing of int64_t values.
+
+ * examples/sndfile-play.c
+ Fix win64 issues.
+
+ * tests/win32_ordinal_test.c
+ Fix calling of GetProcAddress with ordinal under win64.
+
+ * tests/utils.tpl
+ Fix win64 issues.
+
+2008-09-25 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * examples/*
+ Rename copy_data.[ch] to common.[ch]. Fix build.
+ Move code from sndfile-metadata-set.c to common.c.
+
+ * examples/Makefile.am tests/Makefile.am regtest/Makefile.am
+ Clean paths.
+
+2008-09-19 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * doc/tutorial.html doc/Makefile.am
+ Add file doc/tutorial.html and hook into build/dist system.
+
+2008-09-14 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * examples/sndfile-metadata-set.c
+ Clean up handling of bext command line params.
+
+2008-09-13 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/w64.c
+ Add handling/skipping of a couple of new chunk types.
+
+2008-09-09 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * configure.ac
+ Add -funsigned-char to CFLAGS if the compiler supports it.
+
+ * examples/sndfile-metadata-(get|set).c
+ Add handling for more metadata types.
+
+2008-09-04 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/common.h
+ Add macros SF_CONTAINER, SF_CODEC and SF_ENDIAN useful for splitting format
+ field of SF_INFO into component parts.
+
+ * src/*.c
+ Use new macros everywhere it is appropriate.
+
+2008-09-02 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * examples/sndfile-bwf-set.c
+ Massive reworking.
+
+2008-08-24 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * examples/sndfile-bwf-set.c
+ Add --info-auto-create-date command line option.
+
+ * examples/sndfile-metadata-set.c examples/sndfile-metadata-get.c
+ examples/Makefile.am examples/test-sndfile-bwf-set.py
+ Rename sndfile-bwf-(set|get).c to sndfile-metadata-(set|get).c.
+ Change command line args.
+
+2008-08-23 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/wav.c
+ Allow 'PAD ' chunk to be modified in RDWR mode.
+
+ * src/sndfile.h.in src/sndfile.c
+ Add handling (incomplete) for SFC_SET_ADD_HEADER_PAD_CHUNK.
+
+ * tests/Makefile.am tests/write_read_test.tpl tests/header_test.tpl
+ tests/misc_test.c
+ Add tests for RF64.
+
+ * src/rf64.c
+ Fixes to make sure all tests pass.
+
+ * tests/Makefile.am tests/string_test.c
+ Add string tests (not yet passing).
+
+2008-08-22 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/rf64.c
+ First pass at writing RF64 now working.
+
+2008-08-21 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * examples/sndfile-convert.c
+ Add SF_FORMAT_RF64 to format_map.
+
+ * src/common.h src/sndfile.c
+ More RF64 support code.
+
+ * examples/sndfile-bwf-set.c
+ Fix the month number in autogenerated date string and use hypen in date
+ instead of slash.
+
+ * examples/test-sndfile-bwf-set.py
+ Update tests.
+
+ * examples/sndfile-info.c
+ When called with -i or -b option, operate on all files on command line, not
+ just the first.
+
+2008-08-19 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/rf64.c
+ New file to handle RF64 (WAV like format supportting > 4Gig files).
+
+ * src/sndfile.h.in src/common.h src/sndfile.c src/Makefile.am
+ Hook the above into build so hacking can begin.
+
+ * src/pcm.c
+ Improve log message when pcm_init fails.
+
+ * src/sndfile-info.c
+ Only calculate and print 'Signal Max' if file is less than 10 megabytes in
+ length.
+
+2008-08-18 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * tests/string_test.c
+ Polish string_multi_set_test.
+
+ * src/wav.c
+ In RDWR mode, pad the header if necessary (ie LIST chunk has moved or
+ length has changed).
+ Minor fixes in wav_write_strings.
+ Write PAD chunk with default endian-ness, not a specific endian-ness.
+
+ * examples/test-sndfile-bwf-set.py
+ Add Python script to test sndfile-bwf-set/get.
+
+ * examples/sndfile-bwf-set.c
+ Clean up and fixes.
+
+ * src/wav.c
+ Merge function wavex_write_header into wav_write_header, deleting about 70
+ lines of code.
+
+ * src/common.h
+ Double value of SF_MAX_STRINGS.
+
+ * tests/string_test.c
+ Add string tests for WAVEX and RIFX files.
+
+ * tests/command_test.c
+ Add broadcast test for WAVEX files.
+
+2008-08-17 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * tests/string_test.c
+ Add a new string_rdwr_test (currently failing for WAV).
+ Add a new string_multi_set_test (currently failing).
+
+ * tests/command_test.c
+ Add new broadcast_rdwr_test (currently failing).
+
+ * src/wav.c
+ Fix to WAV parser to allow 'bext' chunk to be updated in place.
+ In wav_write_tailer, seek to psf->dataend if its greater than zero.
+
+ * src/sndfile.c
+ Make sure psf->have_written gets set correctly in mode SFM_RDWR.
+
+ * configure.ac
+ Test for <sys/time.h> and gettimeofday.
+
+ * src/common.c
+ Use gettimeofday() to initialize psf_rand_int32.
+
+ * src/common.h src/sndfile.c
+ Add unique_id field to SF_PRIVATE struct.
+
+ * src/common.h src/sndfile.c src/wav.c src/wav_w64.[ch]
+ Move wavex_ambisonic field from SF_PRIVATE struct to WAV_PRIVATE struct.
+
+ * src/common.h src/strings.c
+ Add function psf_location_string_count.
+
+2008-08-16 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * configure.ac
+ Test for localtime and localtime_r.
+
+ * examples/sndfile-convert.c
+ In function copy_metadata(), copy broadcast info if present.
+
+ * examples/copy_data.[ch] examples/Makefile.am
+ Break some functionality out of sndfile-convert.c so it can be used in
+ examples/sndfile-bwf-set.c.
+
+ * tests/utils.tpl
+ Add new function create_short_sndfile().
+
+ * examples/sndfile-bwf-set.c examples/sndfile-bwf-get.c
+ examples/Makefile.am
+ Add new files and hook into build.
+
+2008-08-11 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/sndfile.h.in
+ Fix comments. Patch from Mark Glines.
+
+2008-07-30 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * tests/misc_test.c
+ Use zero_data_test on Ogg/Vorbis files.
+
+ * src/ogg.c
+ Fix segfault when closing an Ogg/Vorbis file that has been opened for write
+ but had no actual data written to it. Bug reported by Chinoy Gupta.
+
+ * tests/Makefile.am
+ Make sure to run mist_test on Ogg/Vorbis files.
+
+2008-07-19 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * regtest/Makefile.am
+ Use SQLITE3_CFLAGS to locate sqlite headers.
+
+2008-07-10 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * doc/index.html doc/FAQ.html
+ Add notes about which versions of windows libsndfile works on.
+
+2008-07-03 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * tests/misc_test.c
+ Add a test for correct handling of Ambisonic files. Thanks to Fons
+ Adriaensen for the test.
+
+ * src/wav.c src/wav_w64.c
+ Fix handling of Ambisonic files. Thanks to Fons Adriaensen for the patch.
+
+2008-06-29 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * configure.ac
+ Fix detection/enabling of external libs.
+
+ * M4/extra_pkg.m4 M4/Makefile.am
+ Add m4 macro PKG_CHECK_MOD_VERSION which is a hacked version
+ PKG_CHECK_MODULES. The new macro prints the version number of the package
+ it is searching for.
+
+2008-06-14 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/aiff.c
+ Apply a fix from Axel Röbel where if the second loop in the instrument
+ chunk is none, the loop mode is written into the first loop.
+
+2008-05-31 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/test_float.c src/test_main.(c|h) src/Makefile.am
+ Add new file to test functions float32_(le|be)_(read|write) and
+ double64_(le|be)_(read|write). Hook into build and testsuite.
+
+ * src/double64.c src/float32.c
+ Fix bugs in functions found by test added above. Thanks to Nicolas Castagne
+ for reporting this bug.
+
+ * src/sndfile.h.in
+ Change time_reference_(low|high) entries of SF_BROADCAST_INFO struct to
+ unsigned.
+
+ * examples/sndfile-info.c
+ Print out the BEXT time reference in a sensible format.
+
+2008-05-21 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/*.c
+ Fuzz fixes.
+
+ * src/ogg.c
+ Add call to ogg_stream_clear to fix valgrind warning.
+
+ * src/aiff.c
+ Fix x86_64 compile issue.
+
+ * configure.ac src/Makefile.am src/flac.c src/ogg.c
+ Link to external versions of FLAC, Ogg and Vorbis.
+
+ * tests/lossy_comp_test.c tests/ogg_test.c tests/string_test.c
+ tests/vorbis_test.c tests/write_read_test.tpl
+ Fix tests when configured with --disable-external-libs.
+
+ * tests/external_libs_test.c tests/Makefile.am
+ Add new test and hook into build and test suite.
+
+ * src/command.c
+ Use HAVE_EXTERNAL_LIBS to ensure that the SFC_GET_FORMAT_* commands return
+ the right data when external libs are disabled.
+
+2008-05-11 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * tests/write_read_test.tpl
+ Add a test for extending a file during write by seeking past the current
+ end of file.
+
+ * src/sndfile.c
+ Allow seeking past end of file during write.
+
+2008-05-10 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * doc/api.html doc/command.html
+ Move all information about the sf_command function to command.html and add
+ a link from documentation of the sf_read/write_raw function to the
+ SFC_RAW_NEEDS_ENDSWAP command.
+
+ * doc/index.html doc/FAQ.html doc/libsndfile.css
+ Minor documentation tweaks.
+
+2008-05-09 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * configure.ac
+ Add AM_PROG_CC_C_O.
+
+2008-04-27 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * tests/error_test.c
+ Add a test to make sure if file opened with sf_open_fd, and then the file
+ descriptor is closed, then sf_close will return an error code. Thanks to
+ Dave Flogeras for the bug report.
+
+ * src/sndfile.c
+ Make sf_close return an error is the file descriptor is already closed.
+
+2008-04-19 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * configure.ac
+ Set object format to aout for OS/2. Thanks to David Yeo.
+
+ * src/mpc2k.c src/sndfile.c src/sndfile.h.in src/common.h src/Makefile.am
+ Add ability to read MPC 2000 file.
+
+ * tests/write_read_test.tpl tests/misc_test.c tests/header_test.tpl
+ tests/Makefile.am
+ Add tests for MPC 2000 file format.
+
+ * examples/sndfile-convert.c
+ Allow conversion to MPC 2000 file format.
+
+2008-04-17 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/VORBIS/lib/codebook.c
+ Sync from upstream SVN.
+
+ * autogen.sh configure.ac
+ Minor tweaks.
+
+2008-04-13 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/ogg.c
+ Add a patch that fixes finding the length in samples of an Ogg/Vorbis file.
+ The patch as supplied segfaulted and required many hours of debugging.
+
+ * src/OGG/bitwise.c
+ Sync from upstream SVN.
+
+2008-04-09 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/aiff.c
+ Fix up handling of 'APPL' chunk. Thanks to Axel Röbel for bringing up
+ this issue.
+
+2008-04-06 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * tests/*.c
+ Add calls to sf_close() where needed.
+
+ * tests/utils.tpl tests/multi_file_test.c
+ Always pass 0 as the third argument to open when OS_IS_WIN32.
+
+2008-04-03 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/test_*
+ Add files test_main.[ch].
+ Collapse all tests into a single executable.
+
+2008-03-30 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/FLAC
+ Sync to upstream CVS.
+
+2008-03-25 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/common.h
+ Make SF_MIN and SF_MAX macros MinGW friendly.
+
+ * examples/sndfile-(info|play).c
+ Use Sleep function from <windows.h> instead of _sleep.
+
+ * tests/locale_test.c
+ Disable some tests when OS_IS_WIN32.
+
+ * src/FLAC/src/share/replaygain_anal/replaygain_analysis.c
+ src/FLAC/src/share/utf8/utf8.c
+ MinGW fixes.
+
+2008-03-11 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * doc/FAQ.html
+ Tweaks to pcm16 <-> float conversion answer.
+
+2008-02-10 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/OGG
+ Sync to SVN upstream.
+
+ * Makefile.am
+ Add 'DISTCHECK_CONFIGURE_FLAGS = --enable-gcc-werror'.
+
+2008-02-05 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * examples/sndfile-jackplay.c
+ Minor tweaks to warning message printed when compiled without libjack.
+
+2008-01-27 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * tests/peak_chunk_test.c
+ Improve read_write_peak_test to find more errors. Inspired by example
+ provided by Nicolas Castagne.
+
+ * src/aiff.c
+ Another SFM_RDWR fix shown up by above test.
+
+2008-01-24 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/aiff.c
+ Fix reading of COMM encoding string.
+
+ * src/chunk.c src/common.h src/Makefile.am
+ New file for storing and retrieving info about header chunks. Hook into
+ build.
+
+ * src/aiff.c
+ Use new chunk logging to fix problem with AIFF in RDWR mode.
+
+2008-01-22 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/command.c
+ Add WVE to the list of major formats.
+
+ * tests/aiff_rw_test.c
+ Fix error reporting.
+
+2008-01-21 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/common.[ch]
+ Add internal functions str_of_major_format, str_of_minor_format,
+ str_of_open_mode and str_of_endianness.
+
+ * tests/write_read_test.tpl
+ Fix reporting of errors in new_rdwr_XXXX_test.
+
+2008-01-20 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * examples/sndfile-play.c
+ Apply patch from Yair K. to fix compiles with OSS v4.
+
+ * src/common.h src/float32.c src/double64.c
+ Rename psf->float_enswap to psf->data_endswap.
+
+ * src/sndfile.h.in src/sndfile.c src/pcm.c
+ Add command SFC_RAW_NEEDS_ENDSWAP.
+
+ * tests/command.c
+ Add test for SFC_RAW_NEEDS_ENDSWAP.
+
+ * doc/command.html
+ Document SFC_RAW_NEEDS_ENDSWAP.
+
+ * tests/peak_chunk_test.c
+ Add test function read_write_peak_test. Thanks to Nicolas Castagne for the
+ bug report.
+
+2008-01-09 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * examples/sndfile-cmp.c
+ Add new example program contributed by Conrad Parker.
+
+ * examples/Makefile.am
+ Hook into build.
+
+ * doc/development.html
+ Change use or reconfigure.mk to autogen.sh.
+
+2008-01-08 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * tests/win32_test.c
+ Add another win32 test.
+
+ * tests/util.tpl
+ Add function file_length_fd which wraps fstat.
+
+ * tests/Makefile.am
+ Run the multi_file_test on AU files.
+
+ * tests/multi_file_test.c
+ Use function file_length_fd() instead of file_length() to overcome stupid
+ win32 bug. Fscking hell Microsoft sucks so much.
+
+2008-01-05 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/sd2.c
+ Fix a rsrc parsing bug. Example file supplied by Uli Franke.
+
+2007-12-28 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * doc/index.html
+ Allow use of either LGPL v2.1 or LGPL v3.
+
+ * tests/header_test.tpl
+ Add header_shrink_test from Axel Röbel.
+
+ * src/wav.c
+ Add fix from Axel Röbel for writing files with float data but no peak
+ chunk (ie peak chunk gets removed after the file is opened).
+
+ * src/aiff.c tests/header_test.tpl
+ Apply similar fix to above for AIFF files.
+
+ * src/wav.c tests/header_test.tpl
+ Apply similar fix to above for WAVEX files.
+
+ * src/command.c
+ Add Ogg/Vorbis to 'get format' commands.
+
+2007-12-16 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/ogg.c
+ Fix seeking on multichannel Ogg Vorbis files. Reported by Bodo.
+ Set the default encoding quality to 0.4 instead of 4.0 (Bodo again).
+
+ * tests/ogg_test.c
+ Add stereo seek tests.
+
+2007-12-14 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * tests/ogg_test.c
+ Add a test (currently failing) for stereo seeking on Ogg Vorbis files. Test
+ case supplied by Bodo.
+
+ * tests/utils.(def|tpl)
+ Add compare_XXX_or_die functions.
+
+2007-12-05 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/aiff.c
+ Fix a bug where ignoring ssnd_fmt.offset and ssnd_fmt.blocksize caused
+ misaligned reading of 24 bit data. Thanks to Uli Franke for reporting this.
+
+2007-12-03 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/vox_adpcm.c src/ima_oki_adpcm.[ch] src/Makefile.am
+ Merge in code from the vox-patch branch. Thanks to Robs for the patch
+ which fixes a long standing bug in the VOX codec.
+
+2007-12-01 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * examples/sndfile-convert.c
+ Fix handling of -override-sample-rate=X option.
+
+2007-11-25 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/ogg.c src/VORBIS
+ Merge in Ogg Vorbis support from John ffitch of the Csound project.
+
+2007-11-24 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/sndfile.c
+ Recognise files with 'vox6' extension as 6kHz OKI VOX ADPCM files. Also
+ recognise 'vox8' as and 'vox' as 8kHz files.
+
+ * configure.ac
+ Detect libjack (JACK Audio Connect Kit).
+
+ * examples/sndfile-jackplay.c examples/Makefile.am
+ Add new example program to play sound files using the JACK audio server.
+ Thanks to Jonatan Liljedahl for allowing this to be included.
+
+2007-11-21 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * doc/index.html
+ Update support table with SD2 and FLAC.
+
+2007-11-17 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/sndfile.c
+ Fix calculation of internal value psf->read_current when attempting to read
+ past end of audio data.
+ Remove redundant code.
+
+ * tests/lossy_comp_test.c
+ Add read_raw_test to check that raw reads do not go past the end of the
+ audio data section.
+ Clean up error output messages.
+
+ * src/sndfile.c
+ Add code to prevent sf_read_raw from reading past the end of the audio data.
+
+ * tests/Makefile.am
+ Add the wav_pcm lossy_comp_test.
+
+2007-11-16 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * configure.ac src/Makefile.am src/create_symbols_file.py
+ More OS/2 fixes from David Yeo.
+
+2007-11-12 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/file_io.c tests/utils.tpl tests/benchmark.tpl
+ Improve handling of requirements for O_BINARY as suggested by Ed Schouten.
+
+2007-11-11 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/common.h
+ Fix symbol class when SF_MIN is nested inside SF_MAX or vice versa.
+
+ * src/create_symbols_file.py
+ Add support for OS/2 contributed by David Yeo.
+
+2007-11-05 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * M4/gcc_version.m4
+ Add macro AC_GCC_VERSION to detect GCC_MAJOR_VERSION and GCC_MINOR_VERSION.
+
+ * configure.ac
+ Use AC_GCC_VERSION to work around gcc-4.2 inline warning stupidity.
+ See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33995
+ Use -fgnu-inline to prevent stupid warnings.
+
+2007-11-03 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * tests/util.tpl
+ Increase the printing width for print_test_name().
+
+ * tests/command_test.c tests/Makefile.am
+ Add tests for correct updating of broadcast WAV coding history.
+
+ * examples/sndfilehandle.cc examples/Makefile.am
+ Add example program using the C++ SndfileHandle class.
+
+2007-10-29 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/common.h src/sndfile.c
+ Add error codes SFE_ZERO_MAJOR_FORMAT and SFE_ZERO_MINOR_FORMAT.
+
+2007-10-26 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/sd2.c
+ Identify sample-rate/sample-size/channels by resource id.
+
+2007-10-25 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/broadcast.c src/common.h src/sndfile.c
+ Improvements to handling of broadcast info in WAV files. Thanks to Frederic
+ Cornu and other for their input.
+
+2007-10-24 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/FLAC/include/share/alloc.h
+ Mingw fix for SIZE_T_MAX from Uli Franke.
+
+2007-10-23 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * tests/open_fail_test.c tests/error_test.c tests/Makefile.am
+ Move tests from open_fail_test.c to error_test.c and remove the former.
+
+2007-10-22 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * tests/scale_clip_test.(def|tpl)
+ Add tests for SFC_SET_INT_FLOAT_WRITE command.
+
+ * doc/command.html
+ Add docs for SFC_SET_INT_FLOAT_WRITE command.
+
+ * examples/sndfile-play.c tests/dft_cmp.c
+ Fix gcc-4.2 warning messages.
+
+2007-10-21 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/sndfile.h.in src/sndfile.c
+ Add command SFC_GET_CURRENT_SF_INFO.
+
+ * src/sndfile.h.in src/sndfile.c src/create_symbols_file.py
+ Remove function sf_get_info (only ever in pre-release code).
+
+ * tests/command_test.c
+ Add test for SFC_GET_CURRENT_SF_INFO.
+
+2007-10-15 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/wav.c
+ Add parsing of 'exif' chunks. Originally coded by Trent Apted.
+
+ * configure.ac
+ Put config stuff in Cfg directory.
+ Remove check for inttypes.h.
+
+2007-10-10 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/w64.c
+ Fix writing of 'riff' chunk length and check for correct value in parser.
+
+2007-09-20 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * doc/index.html
+ Link to MP3 FAQ entry.
+
+2007-09-18 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/flac.c
+ Move the blocksize check to an earlier stage of flac_buffer_copy.
+
+2007-09-12 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/FLAC
+ Huge merge from FLAC upstream.
+
+2007-09-10 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * examples/*.c
+ Change license to all example programs to BSD.
+
+2007-09-08 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/FLAC/include/FLAC/metadata.h
+ Include <sys/types.h> to prevent compile error on OSX.
+
+ * Octave/octave_test.sh
+ Disable test on OSX. Can't get it to work.
+
+ * src/flac.c
+ Check the blocksize returned from the FLAC decoder to prevent buffer
+ overruns. Reported by Jeremy Friesner. Thanks.
+
+2007-09-07 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * Makefile.am M4/octave.m4
+ Fix build when Octave headers are not present.
+
+2007-08-27 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * doc/development.html
+ Add note about bzr repository directory looking empty.
+
+2007-08-26 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * configure.ac Octave/* M4/octave_*
+ Bunch of changes to add ability to build GNU Octave modules to read/write
+ sound files using libsndfile from Octave.
+
+2007-08-23 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * acinclude.m4 configure.ac ...
+ Get rid of acinclude.m4 and replace it with an M4 directory.
+
+2007-08-21 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/sndfile.h.in
+ Remove crufty Metrowerks compiler support. Allow header file to be compiled
+ on windows with both GCC and microsoft compiler.
+
+2007-08-19 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * tests/dft_cmp.[ch] tests/floating_point_test.tpl
+ Clean up floating point tests.
+
+2007-08-14 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/aiff.c
+ Fix segfault when COMM chunk length is byte swapped.
+
+2007-08-09 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/common.h src/mat4.c src/mat5.c src/sndfile.c
+ Add a generic SFE_CHANNEL_COUNT_ZERO error, remove format specific errors.
+
+ * src/au.c
+ Fix crash on AU files with zero channel count. Reported by Ben Alison.
+
+2007-08-08 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/voc.c
+ Fix bug in handling file supplied by Matt Olenik.
+
+2007-07-31 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/OGG
+ Merge from OGG upstream sources.
+
+2007-07-25 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/FLAC
+ Merge from FLAC upstream sources.
+
+2007-07-15 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/flac.c
+ Fix memory leak; set copy parameter to FALSE in call to
+ FLAC__metadata_object_vorbiscomment_append_comment.
+
+ * src/common.[ch]
+ Add function psf_rand_int32().
+
+2007-07-14 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/FLAC
+ Merge from FLAC upstream sources.
+
+ * src/strings.c tests/string_test.c tests/Makefile.am
+ Make sure string tests for SF_STR_LICENSE actually works.
+
+2007-07-13 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * tests/string_test.c
+ Add ability to test strings stored in metadata secion of FLAC files.
+
+ * src/string.c
+ Fix logic for testing if audio data has been written and string is added.
+ Make sure SF_STR_ALBUM actually works.
+
+ * src/flac.c
+ Finalize reading/writing string metadata. Tests pass.
+
+ * src/sndfile.h.in tests/string_test.c src/flac.c
+ Add string type SF_STR_LICENSE, update test and use for FLAC files.
+
+ * src/sndfile.h.in
+ Add definition for SFC_SET_SCALE_FLOAT_INT_WRITE command.
+
+ * src/common.h src/double64.c src/float32.c src/sndfile.c
+ Add support for SFC_SET_SCALE_FLOAT_INT_WRITE (still needs testing).
+
+2007-07-12 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/flac.c
+ Apply patch from Ed Schouten to read artist and title metadata from FLAC
+ files.
+ Improve reporting of FLAC metadata.
+
+ * src/sndfile.h.in tests/string_test.c src/flac.c
+ Add string type SF_STR_ALBUM, update test and use for FLAC files.
+
+2007-06-28 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/FLAC/*
+ Merge from upstream CVS.
+
+2007-06-16 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/FLAC/*
+ Update from upstream CVS.
+
+2007-06-14 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * tests/cpp_test.cc
+ Add extra tests for when the SndfileHandle constructor fails.
+
+ * src/sndfile.hh
+ Make sure failure to open the file in the constructor does not allow later
+ calls to other methods to fail.
+
+2007-06-10 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * tests/util.tpl
+ Add function write_mono_file.
+
+ * tests/generate.[ch] tests/Makefile.am
+ Add files generate.[ch] and hook into build.
+
+ * tests/write_read_test.tpl
+ Add multi_seek_test.
+
+ * src/flac.c
+ Fix buffer overflow bug. Test provided by Jeremy Friesner and fix provided
+ by David Viens.
+
+2007-06-07 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * doc/FAQ.html
+ Minor update.
+
+ * configure.ac src/FLAC/src/libFLAC/ia32/Makefile.am src/Makefile.am
+ Apply patch from Trent Apted make it compile on Intel MacOSX. Thanks Trent.
+
+2007-05-28 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/wav.c
+ Fix writing of MSGUID subtypes. Thanks to Bruce Sharpe.
+
+2007-05-22 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/wav.c
+ Fix array indexing bug raised by Bruce Sharpe.
+
+2007-05-12 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/FLAC/src/share/getopt/getopt.c
+ Fix Mac OSX / PowerPC compile warnings.
+
+ * configure.ac
+ Make sure WORDS_BIGENDIAN gets correctly defined for FLAC code.
+
+2007-05-04 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * doc/FAQ.html
+ Add Q/A about MP3 support.
+
+2007-05-03 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * doc/new_file_type.HOWTO
+ Minor updates.
+
+2007-05-02 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/wve.c
+ Fix a couple bad parameters with psf_log_printf.
+
+ * src/pcm.c
+ Improve error reporting.
+
+ * src/common.h src/common.c
+ Constify psf_hexdump.
+
+2007-04-30 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/FLAC
+ Ditch and re-import required FLAC code.
+
+ * configure.ac
+ Force FLAC__HAS_OGG variable to 1.
+
+ * src/FLAC/src/libFLAC/stream_encoder.c
+ Fix compiler warnings.
+
+2007-04-23 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * configure.ac tests/win32_ordinal_test.c
+ Detect if win32 DLL is beging generated and only run win32_ordinal_test if
+ true.
+
+ * src/G72x/Makefile.am src/Makefile.am
+ Use $(EXEEXT) where possible.
+
+2007-04-18 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/wve.c src/common.h src/sndfile.c
+ Complete definition of SfE_WVE_NO_WVE error message.
+
+ * src/wve.c
+ Fix error in files generated on big endian systems. Robustify parsing.
+
+2007-04-16 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/double64.c
+ Fix clipping of double to short conversions on 64 bit systems.
+
+ * src/flac.c regtest/database.c tests/cpp_test.cc
+ Fix compile warnings for 64 bit systems.
+
+2007-04-15 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/wav.c src/wav_w64.c
+ Use audio detect function when 'fmt ' chunk data is suspicious.
+
+ * configure.ac
+ Add ugly hack to remove -Werror from some Makefiles.
+
+2007-04-14 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/GSM610/long_term.c src/macbinary3.c tests/cpp_test.cc
+ Add patch from André Pang to clean up compiles on OSX.
+
+ * src/wve.c src/common.h src/sndfile.c src/sndfile.h.in
+ examples/sndfile-convert.c
+ Merge changes from Reuben Thomas to improve WVE support.
+
+ * tests/lossy_comp_test.c tests/Makefile.am
+ Add tests for WVE files.
+
+2007-04-11 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/sndfile.hh
+ Add a static SndfileHandle::formatCheck method as suggested by Jorge
+ Jiménez.
+
+2007-04-09 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/sndfile.c
+ Fixed a bug in sf_error() where the function itself was being compared
+ against zero. Add a check for a NULL return from peak_info_calloc. Fix a
+ possible NULL dereference.
+
+2007-04-07 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/flac.c
+ Turn off seekable flag when writing, return SFE_BAD_RDWR_FORMAT when
+ opening file for RDWR.
+
+ * src/sndfile.c
+ Improve error message for SFE_BAD_RDWR_FORMAT.
+
+ * src/mat4.c
+ Fix array indexing issue. Thanks to Ben Allison (Nullsoft) for alerting me.
+
+2007-03-05 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * doc/FAQ.html
+ Add Q/A 19 on project files.
+
+2007-03-01 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/sndfile.c
+ Guard agains MacOSX universal binary compiles.
+
+ * doc/FAQ.html
+ Add Q/A 18 and clean up Q3.
+
+2007-02-22 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/aiff.c
+ Add support for 'in24' files.
+
+2007-02-13 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/wav.c src/wav_w64.c src/wav_w64.h
+ Start work towards detecting ausio codec type from the actual audio data.
+
+ * src/audio_detect.c src/test_audio_detect.c
+ Add new file and its unit test.
+
+2007-02-07 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * examples/cooledit-fixer.c examples/Makefile.am
+ Remove old broken example program.
+
+2007-02-06 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/sndfile.c src/sndfile.h.in src/create_symbols_file.py
+ Add function sf_get_info.
+
+2007-01-25 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * examples/sndfile-play.c
+ For ALSA, use the 'default' device instead of 'plughw:0'.
+
+2007-01-22 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/sndfile.c
+ Allow writing of WAV/WAVEX 'BEXT' chunks in SFM_RDWR mode.
+
+2007-01-21 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * doc/development.html doc/embedded_files.html man/sndfile-play.1
+ Minor documentation fixes. Thanks Reuben Thomas.
+
+2006-12-16 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * examples/sndfile-convert.c
+ Add -override-sample-rate command line option.
+
+2006-11-19 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * tests/misc_test.c
+ Force errno to zero at start of some tests.
+
+ * src/sndfile.c
+ Minor clean up of error handling.
+
+ * configure.ac
+ Remove an assembler test which was failing on OSX.
+
+2006-11-15 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/common.h
+ Fix the definition of SF_PLATFORM_S64 for MinGW.
+
+ * src/FLAC/Makefile.am src/FLAC/share/grabbag/Makefile.am
+ Fix path problems for MinGW.
+
+2006-11-13 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/sfendian.h
+ Add include guard.
+
+ * src/Makefile.am src/flac.c
+ Clean up include paths.
+
+ * src/test_conversions.c
+ New file to test psf_binheader_readf/writef functions.
+
+ * src/Makefile.am src/test_file_io.c src/test_log_printf.c src/common.c
+ Clean up unit testing.
+
+ * src/common.c
+ Fix a bug reading/writing 64 bit header fields. Thanks to Jonathan Woithe
+ for reporting this.
+
+ * src/test_conversions.c
+ Complete unit test for above fix.
+
+2006-11-11 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/sndfile.c
+ More refactoring to clean up psf_open_file() and vairous sf_open()
+ functions.
+
+2006-11-09 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/wav.c
+ Apply a patch from Jonathan Woithe to allow opening of (malformed) WAV
+ files of over 4 gigabytes.
+
+2006-11-05 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/sndfile.c
+ Refactor function psf_open_file() to provide a single return point.
+
+ * tests/misc_test.c
+ Fix permission_test to ensure that read only file can be created.
+
+2006-11-03 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/common.h
+ Add SF_PLATFORM_S64 macro as a platform independant way of doing signed 64
+ bit integers.
+
+ * src/aiff.c src/svx.c src/wav.c
+ Add warning in log if files are larger than 4 gigabytes in size.
+
+2006-11-01 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/FLAC src/OGG confgure.ac src/Makefile.am
+ Pull in all required FLAC and OGG code so external libraries are not
+ needed. This makes compiling on stupid fscking Windoze easier.
+
+2006-10-27 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/sd2.c
+ Add workaround for switched sample rate and sample size.
+
+ * src/wav.c
+ Add workaround for excessively long coding history in the 'bext' chunk.
+
+2006-10-23 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/sndfile.h.in src/sndfile.c src/wav.c doc/command.html
+ Use SF_AMBISONIC_* instead of SF_TRUE/SF_FALSE.
+
+2006-10-22 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/sndfile.h.in src/wav.c src/wav_w64.c src/common.h doc/command.html
+ Apply a patch from Fons Adriaensen to allow writing on WAVEX Ambisonic
+ files. Still needs a little tweaking before its ready for release.
+
+ * src/*.c
+ Use the UNUSED macro to prevent compiler warnings.
+
+2006-10-19 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/aiff.c
+ Fix a bug in parsing AIFF files with a slightly unusual 'basc' chunk. Thanks
+ to David Viens for providing two example files.
+
+ * src/common.(c|h) src/aiff.c
+ Add a function psf_sanitize_string and use it in aiff.c.
+
+2006-10-18 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/wav_w64.c
+ Apply a patch from Fons Adriaensen which fixes a minor WAVEX GUID issue.
+
+2006-10-17 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/Makefile.am
+ Fix problem related to recent test coverage changes.
+
+2006-10-15 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * configure.ac tests/Makefile.am
+ Add --enable-test-coverage configure option.
+
+2006-10-05 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/sndfile.hh
+ Add an std::string SndfileHandle constructor.
+
+ * tests/scale_clip_test.tpl
+ Fix the 'make distcheck' target.
+
+2006-10-03 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/double64.c src/float32.c
+ Add optional clipping on float file data to int read data conversions.
+
+ * tests/tests/scale_clip_test.(def|tpl)
+ Add test for above new code.
+
+2006-09-06 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * tests/aiff_rw_test.c
+ Add 'MARK' chunks to make sure they are parsed correctly.
+
+2006-09-05 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/aiff.c
+ Fix parsing of MARK chunks. Many thanks to Sciss for generating files to
+ help debug the problem.
+
+2006-09-02 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/common.h
+ Make the SF_MIN and SF_MAX macros at least partially type safe.
+
+ * tests/lossy_comp_test.c
+ Fix overflow problems when ensuring that signalis not zero.
+
+2006-08-31 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * configure.ac docs/*.html
+ Changes for release 1.0.17.
+
+2006-08-08 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/flac.c
+ Remove inline from functions called by pointer. Thanks to Sampo Savolainen
+ for notifying me of this.
+
+2006-07-31 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/sndfile.hh
+ Add writeSync method.
+ Add copy constructor and assignment operator (thanks Daniel Schmitt).
+ Add methods readRaw and writeRaw.
+ Make read/write/readf/writef simple overlaods instead of templates (thanks
+ to Trent Apted for suggesting this).
+
+ * tests/cpp_test.cc
+ Cleanup. Add tests.
+
+2006-07-30 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/sndfile.hh
+ Templatize the read/write/readf/writef methods as suggested by Lars Luthman.
+ Prevent the potential leak of SNDFILE* pointers in the openRead/openWrite/
+ openReadWrite methods.
+ Add const to SF_INFO pointer in Sndfile constructor.
+ Make the destrictor call the close() method.
+
+ * tests/cpp_test.cc
+ Add more tests.
+
+2006-07-29 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * tests/cpp_test.cc
+ Remove the generated file so "make distcheck" passes.
+
+ * src/Makefile.am
+ Add sndfile.hh to distributed header files.
+
+ * src/sndfile.hh
+ Change the license for the C++ wrapper to modified BSD.
+
+2006-07-28 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/sndfile.hh
+ Complete it.
+
+ * tests/cpp_test.cc
+ Add more tests.
+
+2006-07-27 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * tests/utils.tpl
+ Add extern C to generated header file.
+
+ * src/sndfile.hh
+ Work towards completing this.
+
+ * tests/cpp_test.cc tests/Makefile.am
+ Add a C++ test and hook into build.
+
+ * configure.ac
+ Add appropriate CXXFLAGS.
+
+2006-07-26 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * configure.ac
+ Test if compiler supports -Wpointer-arith.
+
+ * src/common.c
+ Fix a warning resulting from -Wpointer-arith.
+
+2006-07-15 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * examples/sndfile-play.c
+ Explicitly set endian-ness as well as setting 16 bit output.
+
+ * examples/sndfile-info.c
+ Make sure to parse info if file fails to open.
+
+ * src/sndfile.c
+ Handle parse error a little better.
+
+ * src/wav_w64.[ch]
+ Minor clean up, add detection of IPP ITU G723.1.
+
+2006-06-23 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/sndfile.c
+ Make sure psf->dataoffset gets reset to zero when openning headersless
+ files based on the file name extension.
+
+2006-06-21 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * tests/(command|lossy_comp|pcm|scale_clip)_test.c tests/fix_this.c
+ tests/write_read_test.(tpl|def)
+ Fix gcc-4.1 compiler warnings about "dereferencing type-punned pointer will
+ break strict-aliasing rules".
+
+ * examples/cooledit-fixer.c
+ More fixes like above.
+
+2006-06-20 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/file_io.c
+ Fix a windows bug where the syserr string of SF_PRIVATE was not being set
+ correctly.
+
+ * src/sndfile.c
+ Fixed a logic bug in sf_seek(). Thanks to Paul Davis for finding this.
+
+2006-06-04 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * configure.ac
+ Fixed detection of S_IRGRP.
+
+2006-05-30 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * sndfile-convert.c
+ Add conversion SF_INSTRUMENT data when present.
+
+2006-05-22 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * doc/development.html
+ Removed references to tla on windows.
+
+ * src/common.h src/sndfile.c
+ Add separate void pointers for file containter and file codec data to
+ SF_PRIVATE struct. Still need to move all existing fdata pointers.
+
+ * tests/write_read_test.tpl
+ Change the order of some tests.
+
+ * src/aiff.c
+ When writing 'AIFC' files, make sure get an 'FVER' gets added.
+
+ * src/common.h src/(dwvw|flac|g72x|gsm610|ima_adpcm|ms_adpcm|paf|sds).c
+ src/(sndfile|voc|vox_adpcm|xi).c
+ Remove fdata field from SF_PRIVATE struct and replace it with codec_data.
+
+2006-05-10 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * Win32/testprog.c Win32/Makefile.am
+ Add a minimal win32 test program.
+
+ * Win32/README-precompiled-dll.txt Mingw-make-dist.sh
+ Update readme and Mingw build script.
+
+2006-05-09 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * configure.ac acinclude.m4
+ Minor fixes for Solaris.
+
+2006-05-05 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/test_endswap.(def|tpl)
+ Fix printf formatting for int64_t on 64 bit machines.
+
+2006-05-04 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/binhead_check.py
+ New file to check for bad parameters passed to psf_binheader_writef().
+
+ * src/Makefile.am
+ Hook into test suite.
+
+ * src/voc.c src/caf.c src/wav.c src/mat5.c src/mat4.c
+ Fix bugs found by new test program.
+
+ * src/double64.c
+ Clean up double64_get_capability().
+
+2006-05-03 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/wav_w64.c
+ Fix a bug on x86_64 where an int was being passed via stdargs and being
+ read using size_t which is 64 bits. Thenks to John ffitch for giving me a
+ login on his box.
+
+2006-05-02 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * src/caf.c src/double64.c examples/sndfile-info.c tests/virtual_io_test.c
+ tests/utils.tpl
+ Fix a couple of signed/unsigned problems.
+
+2006-05-01 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * tests/command_test.c
+ Add channel map tests.
+
+ * src/common.h src/sndfile.c
+ Add a pointer the the SF_PRIVATE struct and make sure it gets freed in
+ sf_close().
+
+2006-04-30 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * configure.ac doc/(command|index|api).html NEWS README
+ Updates for 1.0.16 release.
+
+ * src/sndfile.h.in
+ Define enums for channel mapping.
+
+ * examples/sndfile-info.c
+ Clean up usage of SF_INFO struct.
+
+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 Röbel.
+
+ * src/common.h
+ Make sure length of header buffer can hold header plus strings. Thanks Axel
+ Röbel.
+
+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 ffitch (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 Röbel.
+
+ * 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 Röbel 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 Röbel).
+
+ * 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 Röbel 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 Röbel 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 Röbel).
+
+ * 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 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * 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 Röbel)
+
+ * src/sndfile.c
+ Fixed determination of whether the file is a pipe. (Axel Röbel)
+
+ * src/paf.c
+ Force paf24 to start with undefined mode. (Axel Röbel)
+
+ * tests/pipe_test.c
+ Mods to make this test work and actually do the test on RAW files. (Axel
+ Röbel).
+
+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 Röbel.
+
+ * src/aiff.c
+ Fixed a bug in the header parser where it was not handling an odd length
+ COMM chunk correctly. Thanks to Axel Röbel.
+
+ * 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/doc/FAQ.html b/doc/FAQ.html
new file mode 100644
index 0000000..ce0164a
--- /dev/null
+++ b/doc/FAQ.html
@@ -0,0 +1,849 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+
+<HEAD>
+ <TITLE>
+ libsndfile : Frequently Asked Questions.
+ </TITLE>
+ <META NAME="Author" CONTENT="Erik de Castro Lopo (erikd AT mega-nerd DOT com)">
+ <META NAME="Description" CONTENT="The libsndfile FAQ.">
+ <META NAME="Keywords" CONTENT="WAV AIFF AU libsndfile sound audio dsp Linux">
+ <LINK REL="stylesheet" HREF="libsndfile.css" TYPE="text/css" MEDIA="all">
+ <LINK REL="stylesheet" HREF="print.css" TYPE="text/css" MEDIA="print">
+</HEAD>
+
+<BODY>
+
+<H1><B>libsndfile : Frequently Asked Questions.</B></H1>
+<P>
+<A HREF="#Q001">Q1 : Do you plan to support XYZ codec in libsndfile?</A><BR/>
+<A HREF="#Q002">Q2 : In version 0 the SF_INFO struct had a pcmbitwidth field
+ but version 1 does not. Why?</A><BR/>
+<A HREF="#Q003">Q3 : Compiling is really slow on MacOS X. Why?</A><BR/>
+<A HREF="#Q004">Q4 : When trying to compile libsndfile on Solaris I get a "bad
+ substitution" error during linking. What can I do to fix this?</A><BR/>
+<A HREF="#Q005">Q5 : Why doesn't libsndfile do interleaving/de-interleaving?</A><BR/>
+<A HREF="#Q006">Q6 : What's the best format for storing temporary files?</A><BR/>
+<A HREF="#Q007">Q7 : On Linux/Unix/MacOS X, what's the best way of detecting the
+ presence of libsndfile?</A><BR/>
+<A HREF="#Q008">Q8 : But I just want a simple Makefile! What do I do?</A><BR/>
+<A HREF="#Q009">Q9 : How about adding the ability to write/read sound files to/from
+ memory buffers?</A><BR/>
+<A HREF="#Q010">Q10 : Reading a 16 bit PCM file as normalised floats and then
+ writing them back changes some sample values. Why?</A><BR/>
+<A HREF="#Q011">Q11 : I'm having problems with u-law encoded WAV files generated by
+ libsndfile in Winamp. Why?</A><BR/>
+<A HREF="#Q012">Q12 : I'm looking at sf_read*. What are items? What are frames?</A><BR/>
+<A HREF="#Q013">Q13 : Why can't libsndfile open this Sound Designer II (SD2)
+ file?</A><BR/>
+<A HREF="#Q014">Q14 : I'd like to statically link libsndfile to my closed source
+ application. Can I buy a license so that this is possible?</A><BR/>
+<A HREF="#Q015">Q15 : My program is crashing during a call to a function in libsndfile.
+ Is this a bug in libsndfile?</A><BR/>
+<A HREF="#Q016">Q16 : Will you accept a fix for compiling libsndfile with compiler X?
+ </A><BR/>
+<A HREF="#Q017">Q17 : Can libsndfile read/write files from/to UNIX pipes?
+ </A><BR/>
+<A HREF="#Q018">Q18 : Is it possible to build a Universal Binary on Mac OS X?
+ </A><BR/>
+<A HREF="#Q019">Q19 : I have project files for Visual Studio / XCode / Whatever. Why
+ don't you distribute them with libsndfile?
+ </A><BR/>
+<A HREF="#Q020">Q20 : Why doesn't libsndfile support MP3? Lots of other Open Source
+ projects support it!
+ </A><BR/>
+<A HREF="#Q021">Q21 : How do I use libsndfile in a closed source or commercial program
+ and comply with the license?
+ </A><BR/>
+<A HREF="#Q022">Q22 : What versions of windows does libsndfile work on?
+ </A><BR/>
+<A HREF="#Q023">Q23 : I'm cross compiling libsndfile for another platform. How can I
+ run the test suite?
+ </A><BR/>
+<HR>
+
+<!-- ========================================================================= -->
+<A NAME="Q001"></A>
+<H2><BR/><B>Q1 : Do you plan to support XYZ codec in libsndfile?</B></H2>
+<P>
+If source code for XYZ codec is available under a suitable license (LGPL, BSD,
+MIT etc) then yes, I'd like to add it.
+</P>
+<P>
+If suitable documentation is available on how to decode and encode the format
+then maybe, depending on how much work is involved.
+</P>
+<P>
+If XYZ is some proprietary codec where no source code or documentation is
+available then no.
+</P>
+<P>
+So if you want support for XYZ codec, first find existing source code or
+documentation.
+If you can't find either then the answer is no.
+</P>
+<!-- ========================================================================= -->
+<A NAME="Q002"></A>
+<H2><BR/><B>Q2 : In version 0 the SF_INFO struct had a pcmbitwidth field
+ but version 1 does not. Why?</B></H2>
+<P>
+ This was dropped for a number of reasons:
+</P>
+<UL>
+ <LI> pcmbitwidth makes little sense on compressed or floating point formats
+ <LI> with the new API you really don't need to know it
+</UL>
+<P>
+As documented
+ <A HREF="http://www.mega-nerd.com/libsndfile/api.html#note1">here</A>
+there is now a well defined behaviour which ensures that no matter what the
+bit width of the source file, the scaling always does something sensible.
+This makes it safe to read 8, 16, 24 and 32 bit PCM files using sf_read_short()
+and always have the optimal behaviour.
+</P>
+
+<!-- ========================================================================= -->
+<A NAME="Q003"></A>
+<H2><BR/><B>Q3 : Compiling is really slow on MacOS X. Why?</B></H2>
+<P>
+When you configure and compile libsndfile, it uses the /bin/sh shell for a number
+of tasks (ie configure script and libtool).
+Older versions of OS X (10.2?) shipped a really crappy Bourne shell as /bin/sh
+which resulted in <b>really</b> slow compiles.
+Newer version of OS X ship GNU Bash as /bin/sh and this answer doesn't apply in that
+case.
+</P>
+<P>
+To fix this I suggest that you install the GNU Bash shell, rename /bin/sh to
+/bin/sh.old and make a symlink from /bin/sh to the bash shell.
+Bash is designed to behave as a Bourne shell when is is called as /bin/sh.
+</P>
+<P>
+When I did this on my iBook running MacOS X, compile times dropped from 13 minutes
+to 3 minutes.
+</P>
+
+<!-- ========================================================================= -->
+<A NAME="Q004"></A>
+<H2><BR/><B>Q4 : When trying to compile libsndfile on Solaris I get a "bad
+ substitution" error on linking. Why?</B></H2>
+<P>
+It seems that the Solaris Bourne shell disagrees with GNU libtool.
+</P>
+<P>
+To fix this I suggest that you install the GNU Bash shell, rename /bin/sh to
+/bin/sh.old and make a symlink from /bin/sh to the bash shell.
+Bash is designed to behave as a Bourne shell when is is called as /bin/sh.
+</P>
+
+<!-- ========================================================================= -->
+<A NAME="Q005"></A>
+<H2><BR/><B>Q5 : Why doesn't libsndfile do interleaving/de-interleaving?</B></H2>
+<P>
+This problem is bigger than it may seem at first.
+</P>
+<P>
+For a stereo file, it is a pretty safe bet that a simple interleaving/de-interleaving
+could satisfy most users.
+However, for files with more than 2 channels this is unlikely to be the case.
+If the user has a 4 channel file and want to play that file on a stereo output
+sound card they either want the first 2 channels or they want some mixed combination
+of the 4 channels.
+</P>
+<P>
+When you add more channels, the combinations grow exponentially and it becomes
+increasingly difficult to cover even a sensible subset of the possible combinations.
+On top of that, coding any one style of interleaver/de-interleaver is trivial, while
+coding one that can cover all combinations is far from trivial.
+This means that this feature will not be added any time soon.
+</P>
+
+<!-- ========================================================================= -->
+<A NAME="Q006"></A>
+<H2><BR/><B>Q6 : What's the best format for storing temporary files?</B></H2>
+
+<P>
+When you want to store temporary data there are a number of requirements;
+</P>
+<UL>
+ <LI> A simple, easy to parse header.
+ <LI> The format must provide the fastest possible read and write rates (ie
+ avoid conversions and encoding/decoding).
+ <LI> The file format must be reasonably common and playable by most players.
+ <LI> Able to store data in either endian-ness.
+</UL>
+<P>
+The format which best meets these requirements is AU, which allows data to be
+stored in any one of short, int, float and double (among others) formats.
+</P>
+<P>
+For instance, if an application uses float data internally, its temporary files
+should use a format of (SF_ENDIAN_CPU | SF_FORMAT_AU | SF_FORMAT_FLOAT) which
+will store big endian float data in big endian CPUs and little endian float data
+on little endian CPUs.
+Reading and writing this format will not require any conversions or byte swapping
+regardless of the host CPU.
+</P>
+
+<!-- ========================================================================= -->
+
+<A NAME="Q007"></A>
+<H2><BR/><B>Q7 : On Linux/Unix/MaxOS X, what's the best way of detecting the presence
+ of libsndfile using autoconf?</B></H2>
+
+<P>
+libsndfile uses the pkg-config (man pkg-config) method of registering itself with the
+host system.
+The best way of detecting its presence is using something like this in configure.ac
+(or configure.in):
+</P>
+<PRE>
+ PKG_CHECK_MODULES(SNDFILE, sndfile >= 1.0.2, ac_cv_sndfile=1, ac_cv_sndfile=0)
+
+ AC_DEFINE_UNQUOTED([HAVE_SNDFILE],${ac_cv_sndfile},
+ [Set to 1 if you have libsndfile.])
+
+ AC_SUBST(SNDFILE_CFLAGS)
+ AC_SUBST(SNDFILE_LIBS)
+</PRE>
+<P>
+This will automatically set the <B>SNDFILE_CFLAGS</B> and <B>SNDFILE_LIBS</B>
+variables which can be used in Makefile.am like this:
+</P>
+<PRE>
+ SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
+ SNDFILE_LIBS = @SNDFILE_LIBS@
+</PRE>
+<P>
+If you install libsndfile from source, you will probably need to set the
+<B>PKG_CONFIG_PATH</B> environment variable as suggested at the end of the
+libsndfile configure process. For instance on my system I get this:
+</P>
+<PRE>
+ -=-=-=-=-=-=-=-=-=-= Configuration Complete =-=-=-=-=-=-=-=-=-=-
+
+ Configuration summary :
+
+ Version : ..................... 1.0.5
+ Experimental code : ........... no
+
+ Tools :
+
+ Compiler is GCC : ............. yes
+ GCC major version : ........... 3
+
+ Installation directories :
+
+ Library directory : ........... /usr/local/lib
+ Program directory : ........... /usr/local/bin
+ Pkgconfig directory : ......... /usr/local/lib/pkgconfig
+
+ Compiling some other packages against libsndfile may require
+ the addition of "/usr/local/lib/pkgconfig" to the
+ PKG_CONFIG_PATH environment variable.
+</PRE>
+
+<!-- ========================================================================= -->
+
+<A NAME="Q008"></A>
+<H2><BR/><B>Q8 : But I just want a simple Makefile! What do I do?</B></H2>
+
+<P>
+The <B>pkg-config</B> program makes finding the correct compiler flag values and
+library location far easier.
+During the installation of libsndfile, a file named <B>sndfile.pc</B> is installed
+in the directory <B>${libdir}/pkgconfig</B> (ie if libsndfile is installed in
+<B>/usr/local/lib</B>, <B>sndfile.pc</B> will be installed in
+<B>/usr/local/lib/pkgconfig/</B>).
+</P>
+<P>
+In order for pkg-config to find sndfile.pc it may be necessary to point the
+environment variable <B>PKG_CONFIG_PATH</B> in the right direction.
+</P>
+<PRE>
+ export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
+</PRE>
+
+<P>
+Then, to compile a C file into an object file, the command would be:
+</P>
+<PRE>
+ gcc `pkg-config --cflags sndfile` -c somefile.c
+</PRE>
+<P>
+and to link a number of objects into an executable that links against libsndfile,
+the command would be:
+</P>
+<PRE>
+ gcc `pkg-config --libs sndfile` obj1.o obj2.o -o program
+</PRE>
+
+<!-- ========================================================================= -->
+
+<A NAME="Q009"></A>
+<H2><BR/><B>Q9 : How about adding the ability to write/read sound files to/from
+ memory buffers?</B></H2>
+
+<P>
+This has been added for version 1.0.13.
+</P>
+
+<!-- ========================================================================= -->
+
+<A NAME="Q010"></A>
+<H2><BR/><B>Q10 : Reading a 16 bit PCM file as normalised floats and then
+ writing them back changes some sample values. Why?</B></H2>
+
+<P>
+This is caused by the fact that the conversion from 16 bit short to float is
+done by dividing by 32768 (0x8000 in hexadecimal) while the conversion from
+float to 16 bit short is done by multiplying by 32767 (0x7FFF in hex).
+So for instance, a value in a 16 bit PCM file of 20000 gets read as a floating
+point number of 0.6103515625 (20000.0 / 0x8000).
+Converting that back to a 16 bit short results in a value of 19999.3896484375
+(0.6103515625 * 0x7FFF) which then gets rounded down to 19999.
+</P>
+<P>
+You will notice that for this particular case, the error is 1 in 20000 or
+0.005%.
+Interestingly, for values of less than 16369, dividing by 0x8000 followed
+by multiplying by 0x7FFF and then rounding the result, gives back the
+original value.
+It turns out that as long as the host operating system supplies the 1999 ISO
+C Standard functions <B>lrintf</B> and <B>lrint</B> (or a replacement has
+been supplied) then the maximum possible error is 1 in 16369 or about 0.006%.
+</P>
+<P>
+Regardless of the size of the error, the reason why this is done is rather
+subtle.
+</P>
+<P>
+In a file containing 16 bit PCM samples, the values are restricted to the range
+[-32768, 32767] while we want floating point values in the range [-1.0, 1.0].
+The only way to do this conversion is to do a floating point division by a value
+of 0x8000.
+Converting the other way, the only way to ensure that floating point values in
+the range [-1.0, 1.0] are within the valid range allowed by a 16 bit short is
+to multiply by 0x7FFF.
+</P>
+<P>
+Some people would say that this is a severe short-coming of libsndfile.
+I would counter that anybody who is constantly converting back and forth
+between 16 bit shorts and normalised floats is going to suffer other losses
+in audio quality that they should also be concerned about.
+</P>
+<P>
+Since this problem only occurs when converting between integer data on disk and
+normalized floats in the application, it can be avoided by using something
+other than normalized floats in the application.
+Alternatives to normalized floats are the <b>short</b> and <b>int</b> data
+types (ie using sf_read_short or sf_read_int) or using un-normalized floats
+(see
+ <a href="http://www.mega-nerd.com/libsndfile/command.html#SFC_SET_NORM_FLOAT">
+ SFC_SET_NORM_FLOAT</a>).
+</P>
+<P>
+Another way to deal with this problem is to consider 16 bit short data as a
+final destination format only, not as an intermediate storage format.
+All intermediate data (ie which is going to be processed further) should be
+stored in floating point format which is supported by all of the most common
+file formats.
+If floating point files are considered too large (2 times the size of a 16 bit
+PCM file), it would also be possible to use 24 bit PCM as an intermediate
+storage format (and which is also supported by most common file types).
+</P>
+
+<!-- ========================================================================= -->
+
+<A NAME="Q011"></A>
+<H2><BR/><B>Q11 : I'm having problems with u-law encoded WAV files generated by
+ libsndfile in Winamp. Why?
+</B></H2>
+
+<P>
+This is actually a Winamp problem.
+The official Microsoft spec suggests that the 'fmt ' chunk should be 18 bytes.
+Unfortunately at least one of Microsoft's own applications (Sound Recorder on
+Win98 I believe) did not accept 18 bytes 'fmt ' chunks.
+</P>
+<P>
+Michael Lee did some experimenting and found that:
+</P>
+<PRE>
+ I have checked that Windows Media Player 9, QuickTime Player 6.4,
+ RealOne Player 2.0 and GoldWave 5.06 can all play u-law files with
+ 16-byte or 18-byte 'fmt ' chunk. Only Winamp (2.91) and foobar2000
+ are unable to play u-law files with 16-byte 'fmt ' chunk.
+</PRE>
+
+<P>
+Even this is a very small sampling of all the players out there.
+For that reason it is probably not a good idea to change this now because there
+is the risk of breaking something that currently works.
+</P>
+
+<!-- ========================================================================= -->
+
+<A NAME="Q012"></A>
+<H2><BR/><B>Q12 : I'm looking at sf_read*. What are items? What are frames?
+</B></H2>
+
+<P>
+An <tt>item</tt>tt> is a single sample of the data type you are reading; ie a
+single <tt>short</tt> value for <tt>sf_read_short</tt> or a single <tt>float</tt>
+for <tt>sf_read_float</tt>.
+</P>
+
+For a sound file with only one channel, a frame is the same as a item (ie a
+single sample) while for multi channel sound files, a single frame contains a
+single item for each channel.
+</P>
+
+<P>
+Here are two simple, correct examples, both of which are assumed to be working
+on a stereo file, first using items:
+</P>
+
+<PRE>
+ #define CHANNELS 2
+ short data [CHANNELS * 100] ;
+ sf_count items_read = sf_read_short (file, data, 200) ;
+ assert (items_read == 200) ;
+</PRE>
+
+<P>
+and now readng the exact same amount of data using frames:
+</P>
+
+<PRE>
+ #define CHANNELS 2
+ short data [CHANNELS * 100] ;
+ sf_count frames_read = sf_readf_short (file, data, 100) ;
+ assert (frames_read == 100) ;
+</PRE>
+
+<!-- ========================================================================= -->
+
+<A NAME="Q013"></A>
+<H2><BR/><B>Q13 : Why can't libsndfile open this Sound Designer II (SD2) file?
+</B></H2>
+
+<P>
+This is somewhat complicated.
+First some background.
+</P>
+
+<P>
+SD2 files are native to the Apple Macintosh platform and use features of
+the Mac filesystem (file resource forks) to store the file's sample rate,
+number of channels, sample width and more.
+When you look at a file and its resource fork on Mac OS X it looks like
+this:
+</P>
+
+<PRE>
+ -rw-r--r-- 1 erikd erikd 46512 Oct 18 22:57 file.sd2
+ -rw-r--r-- 1 erikd erikd 538 Oct 18 22:57 file.sd2/rsrc
+</PRE>
+
+<P>
+Notice how the file itself looks like a directory containing a single file
+named <B>rsrc</B>.
+When libsndfile is compiled for MacOS X, it should open (for write and read)
+SD2 file with resource forks like this without any problems.
+It will also handle files with the resource fork in a separate file as
+described below.
+</P>
+
+<P>
+When SD2 files are moved to other platforms, the resource fork of the file
+can sometimes be dropped altogether.
+All that remains is the raw audio data and no information about the number
+of channels, sample rate or bit width which makes it a little difficult for
+libsndfile to open the file.
+</P>
+
+<P>
+However, it is possible to safely move an SD2 file to a Linux or Windows
+machine.
+For instance, when an SD2 file is copied from inside MacOS X to a windows
+shared directory or a Samba share (ie Linux), MacOS X is clever enough to
+store the resource fork of the file in a separate hidden file in the
+same directory like this:
+</P>
+<PRE>
+ -rw-r--r-- 1 erikd erikd 538 Oct 18 22:57 ._file.sd2
+ -rw-r--r-- 1 erikd erikd 46512 Oct 18 22:57 file.sd2
+</PRE>
+
+<P>
+Regardless of what platform it is running on, when libsndfile is asked to
+open a file named <B>"foo"</B> and it can't recognize the file type from
+the data in the file, it will attempt to open the resource fork and if
+that fails, it then tries to open a file named <B>"._foo"</B> to see if
+the file has a valid resource fork.
+This is the same regardless of whether the file is being opened for read
+or write.
+</P>
+
+<P>
+In short, libsndfile should open SD2 files with a valid resource fork on
+all of the platforms that libsndfile supports.
+If a file has lost its resource fork, the only option is the open the file
+using the SF_FORMAT_RAW option and guessing its sample rate, channel count
+and bit width.
+</P>
+
+<P>
+Occasionally, when SD2 files are moved to other systems, the file is
+ <A HREF="http://www.macdisk.com/binhexen.php3">BinHexed</A>
+which wraps the resource fork and the data fork together.
+For these files, it would be possible to write a BinHex parser but
+there is not a lot to gain considering how rare these BinHexed SD2
+files are.
+</P>
+
+<!-- ========================================================================= -->
+<A NAME="Q014"></A>
+<H2><BR/><B>Q14 : I'd like to statically link libsndfile to my closed source
+ application. Can I buy a license so that this is possible?
+</B></H2>
+
+<P>
+Unfortunately no.
+libsndfile contains code written by other people who have agreed that their
+code be used under the GNU LGPL but no more.
+Even if they were to agree, there would be significant difficulties in
+dividing up the payments fairly.
+</P>
+
+<P>
+The <B>only</B> way you can legally use libsndfile as a statically linked
+library is if your application is released under the GNU GPL or LGPL.
+</P>
+
+<!-- ========================================================================= -->
+<A NAME="Q015"></A>
+<H2><BR/><B>Q15 : My program is crashing during a call to a function in libsndfile.
+ Is this a bug in libsndfile?
+</B></H2>
+
+<P>
+libsndfile is being used by large numbers of people all over the world
+without any problems like this. That means that it is much more likely
+that your code has a bug than libsndfile. However, it is still possible
+that there is a bug in libsndfile.
+</P>
+<P>
+To figure out whether it is your code or libsndfile you should do the
+following:
+</P>
+ <UL>
+ <LI>Make sure you are compiling your code with warnings switched on and
+ that you fix as many warnings as possible.
+ With the GNU compiler (gcc) I would recommend at least
+ <B>-W -Wall -Werror</B> which will force you to fix all warnings
+ before you can run the code.
+ <LI>Try using a memory debugger.
+ <A HREF="http://valgrind.kde.org/">Valgrind</A> on x86 Linux is excellent.
+ <A HREF="http://www.ibm.com/software/awdtools/purify/">Purify</A> also
+ has a good reputation.
+ <LI>If the code is clean after the above two steps and you still get
+ a crash in libsndfile, then send me a small snippet of code (no
+ more than 30-40 lines) which includes the call to sf_open() and
+ also shows how all variables passed to/returned from sf_open()
+ are defined.
+ </UL>
+
+<!-- ========================================================================= -->
+<A NAME="Q016"></A>
+<H2><BR/><B>Q16 : Will you accept a fix for compiling libsndfile with compiler X?
+</B></H2>
+
+<P>
+If compiler X is a C++ compiler then no.
+C and C++ are different enough to make writing code that compiles as valid C
+and valid C++ too difficult.
+I would rather spend my time fixing bugs and adding features.
+</P>
+
+<P>
+If compiler X is a C compiler then I will do what I can as long as that does
+not hamper the correctness, portability and maintainability of the existing
+code.
+It should be noted however that libsndfile uses features specified by the 1999
+ISO C Standard.
+This can make compiling libsndfile with some older compilers difficult.
+</P>
+
+<!-- ========================================================================= -->
+<A NAME="Q017"></A>
+<H2><BR/><B>Q17 : Can libsndfile read/write files from/to UNIX pipes?
+</B></H2>
+
+<P>
+Yes, libsndfile can read files from pipes.
+Unfortunately, the write case is much more complicated.
+</P>
+
+<P>
+File formats like AIFF and WAV have information at the start of the file (the
+file header) which states the length of the file, the number of sample frames
+etc.
+This information must be filled in correctly when the file header is written,
+but this information is not reliably known until the file is closed.
+This means that libsndfile cannot write AIFF, WAV and many other file types
+to a pipe.
+</P>
+
+<P>
+However, there is at least one file format (AU) which is specifically designed
+to be written to a pipe.
+Like AIFF and WAV, AU has a header with a sample frames field, but it is
+specifically allowable to set that frames field to 0x7FFFFFFF if the file
+length is not known when the header is written.
+The AU file format can also hold data in many of the standard formats (ie
+SF_FORMAT_PCM_16, SF_FORMAT_PCM_24, SF_FORMAT_FLOAT etc) as well as allowing
+data in both big and little endian format.
+</P>
+
+<P>
+See also <A HREF="#Q006">FAQ Q6</A>.
+</P>
+
+<!-- ========================================================================= -->
+<A NAME="Q018"></A>
+<H2><BR/><B>Q18 : Is it possible to build a Universal Binary on Mac OS X?
+</B></H2>
+
+<P>
+Yes, but you must do two separate configure/build/test runs; one on PowerPC
+and one on Intel.
+It is then possible to merge the binaries into a single universal binary using
+one of the programs in the Apple tool chain.
+</P>
+
+<P>
+It is <b>not</b> possible to build a working universal binary via a single
+compile/build run on a single CPU.
+</P>
+
+<P>
+The problem is that the libsndfile build process detects features of the CPU its
+being built for during the configure process and when building a universal binary,
+configure is only run once and that data is then used for both CPUs.
+That configure data will be wrong for one of those CPUs.
+You will still be able to compile libsndfile, and the test suite will pass on
+the machine you compiled it on.
+However, if you take the universal binary test suite programs compiled on one
+CPU and run them on the other, the test suite will fail.
+</P>
+
+<P>
+Part of the problem is the the CPU endian-ness is detected at configure time.
+Yes, I know the Apple compiler defines one of the macros __LITTLE_ENDIAN__
+and __BIG_ENDIAN__, but those macros are not part of the 1999 ISO C Standard
+and they are not portable.
+</P>
+
+<P>
+Endian issues are not the only reason why the cross compiled binary will fail.
+The configure script also detects other CPU specific idiosyncrasies to provide
+more optimized code.
+</P>
+
+<P>
+Finally, the real show stopper problem with universal binaries is the problem
+with the test suite.
+libsndfile contains a huge, comprehensive test suite.
+When you compile a universal binary and run the test suite, you only test the
+native compile.
+The cross compiled binary (the one with the much higher chance of having
+problems) cannot be tested.
+</P>
+
+<P>
+Now, if you have read this far you're probably thinking there must be a way
+to fix this and there probably is.
+The problem is that its a hell of a lot of work and would require significant
+changes to the configure process, the internal code and the test suite.
+In addition, these changes must not break compilation on any of the platforms
+libsndfile is currently working on.
+</p>
+
+
+<!-- ========================================================================= -->
+<A NAME="Q019"></A>
+<H2><BR/><B>Q19 : I have project files for Visual Studio / XCode / Whatever. Why
+ don't you distribute them with libsndfile?
+</B></H2>
+
+<P>
+There's a very good reason for this.
+I will only distribute things that I actually have an ability to test and
+maintain.
+Project files for a bunch of different compilers and Integrated Development
+Environments are simply too difficult to maintain.
+</P>
+
+<P>
+The problem is that every time I add a new file to libsndfile or rename an
+existing file I would have to modify all the project files and then test that
+libsndfile still built with all the different compilers.
+</P>
+
+<P>
+Maintaining these project files is also rather difficult if I don't have access
+to the required compiler/IDE.
+If I just edit the project files without testing them I will almost certainly
+get it wrong.
+If I release a version of libsndfile with broken project files, I'll get a bunch
+of emails from people complaining about it not building and have no way of
+fixing or even testing it.
+</P>
+
+<P>
+I currently release sources that I personally test on Win32, Linux and
+MacOS X (PowerPC) using the compiler I trust (GNU GCC).
+Supporting one compiler on three (actually much more because GCC is available
+almost everywhere) platforms is doable without too much pain.
+I also release binaries for Win32 with instructions on how to use those
+binaries with Visual Studio.
+As a guy who is mainly interested in Linux, I'm not to keen to jump through
+a bunch of hoops to support compilers and operating systems I don't use.
+</P>
+
+<P>
+So, I hear you want to volunteer to maintain the project files for Some Crappy
+Compiler 2007?
+Well sorry, that won't work either.
+I have had numerous people over the years offer to maintaining the project
+files for Microsoft's Visual Studio.
+Every single time that happened, they maintained it for a release or two and
+then disappeared off the face of the earth.
+Hence, I'm not willing to enter into an arrangement like that again.
+</P>
+
+<!-- ========================================================================= -->
+<A NAME="Q020"></A>
+<H2><BR/><B>Q20 : Why doesn't libsndfile support MP3? Lots of other Open Source
+ projects support it!
+</B></H2>
+
+<P>
+MP3 is not supported for one very good reason; doing so requires the payment
+of licensing fees.
+As can be seen from
+ <a href="http://www.mp3licensing.com/royalty/software.html">
+ mp3licensing.com</a>
+the required royalty payments are not cheap.
+</P>
+
+<p>
+Yes, I know other libraries ignore the licensing requirements, but their legal
+status is extremely dubious.
+At any time, the body selling the licenses could go after the authors of those
+libraries.
+Some of those authors may be students and hence wouldn't be worth pursuing.
+</P>
+
+<p>
+However, libsndfile is released under the name of a company, Mega Nerd Pty Ltd;
+a company which has income from from libsamplerate licensing, libsndfile based
+consulting income and other unrelated consulting income.
+Adding MP3 support to libsndfile could place that income would be under legal
+threat.
+</p>
+
+<p>
+Fortunately, Ogg Vorbis exists as an alternative to MP3.
+Support for Ogg Vorbis was added to libsndfile (mostly due to the efforts of
+John ffitch of the Csound project) in version 1.0.18.
+</p>
+
+
+<!-- ========================================================================= -->
+<A NAME="Q021"></A>
+<H2><BR/><B>Q21 : How do I use libsndfile in a closed source or commercial program
+ and comply with the license?
+</B></H2>
+
+<p>
+Here is a checklist of things you need to do to make sure your use of libsndfile
+in a closed source or commercial project complies with the license libsndfile is
+released under, the GNU Lesser General Public License (LGPL):
+</p>
+
+<ul>
+<li>Make sure you are linking to libsndfile as a shared library (Linux and Unix
+ systems), Dynamic Link Library (Microsoft Windows) or dynlib (Mac OS X).
+ If you are using some other operating system that doesn't allow dynamically
+ linked libraries, you will not be able to use libsndfile unless you release
+ the source code to your program.
+<li>In the licensing documentation for your program, add a statement that your
+ software depends on libsndfile and that libsndfile is released under the GNU
+ Lesser General Public License, either
+ <a href="http://www.gnu.org/licenses/lgpl-2.1.txt">version 2.1</a>
+ or optionally
+ <a href="http://www.gnu.org/licenses/lgpl.txt">version 3</a>.
+<li>Include the text for both versions of the license, possibly as separate
+ files named libsndfile_lgpl_v2_1.txt and libsndfile_lgpl_v3.txt.
+</ul>
+
+<!-- ========================================================================= -->
+<A NAME="Q022"></A>
+<H2><BR/><B>Q22 : What versions of Windows does libsndfile work on?
+</B></H2>
+
+<p>
+Currently the precompiled windows binaries are thoroughly tested on Windows XP.
+As such, they should also work on Win2k and Windows Vista.
+They may also work on earlier versions of Windows.
+</p>
+
+<p>
+Since version 0.1.18 I have also been releasing precompiled binaries for Win64,
+the 64 bit version of Windows.
+These binaries have received much less testing than the 32 bit versions, but
+should work as expected.
+I'd be very interested in receiving feedback on these binaries.
+</p>
+
+<!-- ========================================================================= -->
+<A NAME="Q023"></A>
+<H2><BR/><B>Q23 : I'm cross compiling libsndfile for another platform. How can I
+ run the test suite?
+</B></H2>
+
+<p>
+</p>
+
+<p>
+Since version 1.0.21 the top level Makefile has an extra make target,
+'test-tarball'.
+Building this target creates a tarball called called:
+</p>
+
+<center><tt>
+libsndfile-testsuite-${host_triplet}-${version}.tar.gz
+</tt></center>
+
+<p>
+in the top level directory.
+This tarball can then be copied to the target platform.
+Once untarred and test script <tt>test_wrapper.sh</tt> can be run from
+the top level of the extracted tarball.
+</p>
+
+<!-- ========================================================================= -->
+<HR>
+<P>
+ The libsndfile home page is here :
+ <A HREF="http://www.mega-nerd.com/libsndfile/">
+ http://www.mega-nerd.com/libsndfile/</A>.
+<BR/>
+Version : 1.0.25
+</P>
+
+</BODY>
+</HTML>
diff --git a/doc/Makefile.am b/doc/Makefile.am
new file mode 100644
index 0000000..40a04d9
--- /dev/null
+++ b/doc/Makefile.am
@@ -0,0 +1,10 @@
+## Process this file with automake to produce Makefile.in
+
+htmldir = $(htmldocdir)
+html_DATA = index.html libsndfile.jpg libsndfile.css api.html command.html \
+ bugs.html sndfile_info.html new_file_type.HOWTO pkgconfig.html \
+ win32.html FAQ.html lists.html embedded_files.html octave.html \
+ dither.html tutorial.html
+
+EXTRA_DIST = $(html_DATA)
+
diff --git a/doc/Makefile.in b/doc/Makefile.in
new file mode 100644
index 0000000..1169ab1
--- /dev/null
+++ b/doc/Makefile.in
@@ -0,0 +1,485 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in 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.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+subdir = doc
+DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+ $(srcdir)/libsndfile.css.in AUTHORS ChangeLog NEWS
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/M4/add_cflags.m4 \
+ $(top_srcdir)/M4/add_cxxflags.m4 $(top_srcdir)/M4/clip_mode.m4 \
+ $(top_srcdir)/M4/endian.m4 $(top_srcdir)/M4/extra_largefile.m4 \
+ $(top_srcdir)/M4/extra_pkg.m4 \
+ $(top_srcdir)/M4/flexible_array.m4 \
+ $(top_srcdir)/M4/gcc_version.m4 $(top_srcdir)/M4/libtool.m4 \
+ $(top_srcdir)/M4/lrint.m4 $(top_srcdir)/M4/lrintf.m4 \
+ $(top_srcdir)/M4/ltoptions.m4 $(top_srcdir)/M4/ltsugar.m4 \
+ $(top_srcdir)/M4/ltversion.m4 $(top_srcdir)/M4/lt~obsolete.m4 \
+ $(top_srcdir)/M4/mkoctfile_version.m4 \
+ $(top_srcdir)/M4/octave.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/src/config.h
+CONFIG_CLEAN_FILES = libsndfile.css
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo " GEN " $@;
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+SOURCES =
+DIST_SOURCES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(htmldir)"
+DATA = $(html_DATA)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
+ALSA_LIBS = @ALSA_LIBS@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CLEAN_VERSION = @CLEAN_VERSION@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+EXTERNAL_CFLAGS = @EXTERNAL_CFLAGS@
+EXTERNAL_LIBS = @EXTERNAL_LIBS@
+FGREP = @FGREP@
+FLAC_CFLAGS = @FLAC_CFLAGS@
+FLAC_LIBS = @FLAC_LIBS@
+GCC_MAJOR_VERSION = @GCC_MAJOR_VERSION@
+GCC_MINOR_VERSION = @GCC_MINOR_VERSION@
+GCC_VERSION = @GCC_VERSION@
+GETCONF = @GETCONF@
+GREP = @GREP@
+HAVE_AUTOGEN = @HAVE_AUTOGEN@
+HAVE_MKOCTFILE = @HAVE_MKOCTFILE@
+HAVE_OCTAVE = @HAVE_OCTAVE@
+HAVE_OCTAVE_CONFIG = @HAVE_OCTAVE_CONFIG@
+HAVE_WINE = @HAVE_WINE@
+HOST_TRIPLET = @HOST_TRIPLET@
+HTML_BGCOLOUR = @HTML_BGCOLOUR@
+HTML_FGCOLOUR = @HTML_FGCOLOUR@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIBTOOL_DEPS = @LIBTOOL_DEPS@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MKOCTFILE = @MKOCTFILE@
+MKOCTFILE_VERSION = @MKOCTFILE_VERSION@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OCTAVE = @OCTAVE@
+OCTAVE_CONFIG = @OCTAVE_CONFIG@
+OCTAVE_CONFIG_VERSION = @OCTAVE_CONFIG_VERSION@
+OCTAVE_DEST_MDIR = @OCTAVE_DEST_MDIR@
+OCTAVE_DEST_ODIR = @OCTAVE_DEST_ODIR@
+OCTAVE_VERSION = @OCTAVE_VERSION@
+OGG_CFLAGS = @OGG_CFLAGS@
+OGG_LIBS = @OGG_LIBS@
+OS_SPECIFIC_CFLAGS = @OS_SPECIFIC_CFLAGS@
+OS_SPECIFIC_LINKS = @OS_SPECIFIC_LINKS@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+RANLIB = @RANLIB@
+RC = @RC@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SF_COUNT_MAX = @SF_COUNT_MAX@
+SHARED_VERSION_INFO = @SHARED_VERSION_INFO@
+SHELL = @SHELL@
+SHLIB_VERSION_ARG = @SHLIB_VERSION_ARG@
+SIZEOF_SF_COUNT_T = @SIZEOF_SF_COUNT_T@
+SNDIO_LIBS = @SNDIO_LIBS@
+SPEEX_CFLAGS = @SPEEX_CFLAGS@
+SPEEX_LIBS = @SPEEX_LIBS@
+SQLITE3_CFLAGS = @SQLITE3_CFLAGS@
+SQLITE3_LIBS = @SQLITE3_LIBS@
+STRIP = @STRIP@
+TYPEOF_SF_COUNT_T = @TYPEOF_SF_COUNT_T@
+VERSION = @VERSION@
+VORBISENC_CFLAGS = @VORBISENC_CFLAGS@
+VORBISENC_LIBS = @VORBISENC_LIBS@
+VORBIS_CFLAGS = @VORBIS_CFLAGS@
+VORBIS_LIBS = @VORBIS_LIBS@
+WIN_RC_VERSION = @WIN_RC_VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = $(htmldocdir)
+htmldocdir = @htmldocdir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+html_DATA = index.html libsndfile.jpg libsndfile.css api.html command.html \
+ bugs.html sndfile_info.html new_file_type.HOWTO pkgconfig.html \
+ win32.html FAQ.html lists.html embedded_files.html octave.html \
+ dither.html tutorial.html
+
+EXTRA_DIST = $(html_DATA)
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu doc/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+libsndfile.css: $(top_builddir)/config.status $(srcdir)/libsndfile.css.in
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+install-htmlDATA: $(html_DATA)
+ @$(NORMAL_INSTALL)
+ test -z "$(htmldir)" || $(MKDIR_P) "$(DESTDIR)$(htmldir)"
+ @list='$(html_DATA)'; test -n "$(htmldir)" || list=; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(htmldir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(htmldir)" || exit $$?; \
+ done
+
+uninstall-htmlDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(html_DATA)'; test -n "$(htmldir)" || list=; \
+ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+ test -n "$$files" || exit 0; \
+ echo " ( cd '$(DESTDIR)$(htmldir)' && rm -f" $$files ")"; \
+ cd "$(DESTDIR)$(htmldir)" && rm -f $$files
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile $(DATA)
+installdirs:
+ for dir in "$(DESTDIR)$(htmldir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-htmlDATA
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-htmlDATA
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-am clean clean-generic clean-libtool \
+ distclean distclean-generic distclean-libtool distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-htmlDATA install-info install-info-am install-man \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ install-strip installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ uninstall uninstall-am uninstall-htmlDATA
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/doc/NEWS b/doc/NEWS
new file mode 100644
index 0000000..9626d45
--- /dev/null
+++ b/doc/NEWS
@@ -0,0 +1,175 @@
+Version 1.0.25 (2011-07-13)
+ * Fix for Secunia Advisory SA45125, heap overflow in PAF file handler.
+ * Accept broken WAV files with blockalign == 0.
+ * Minor bug fixes and improvements.
+
+Version 1.0.24 (2011-03-23)
+ * WAV files now have an 18 byte u-law and A-law fmt chunk.
+ * Document virtual I/O functionality.
+ * Two new methods rawHandle() and takeOwnership() in sndfile.hh.
+ * AIFF fix for non-zero offset value in SSND chunk.
+ * Minor bug fixes and improvements.
+
+Version 1.0.23 (2010-10-10)
+ * Add version metadata to Windows DLL.
+ * Add a missing 'inline' to sndfile.hh.
+ * Update docs.
+ * Minor bug fixes and improvements.
+
+Version 1.0.22 (2010-10-04)
+ * Couple of fixes for SDS file writer.
+ * Fixes arising from static analysis.
+ * Handle FLAC files with ID3 meta data at start of file.
+ * Handle FLAC files which report zero length.
+ * Other minor bug fixes and improvements.
+
+Version 1.0.21 (2009-12-13)
+ * Add a couple of new binary programs to programs/ dir.
+ * Remove sndfile-jackplay (now in sndfile-tools package).
+ * Add windows only function sf_wchar_open().
+ * Bunch of minor bug fixes.
+
+Version 1.0.20 (2009-05-14)
+ * Fix potential heap overflow in VOC file parser (Tobias Klein, http://www.trapkit.de/).
+
+Version 1.0.19 (2009-03-02)
+ * Fix for CVE-2009-0186 (Alin Rad Pop, Secunia Research).
+ * Huge number of minor bug fixes as a result of static analysis.
+
+Version 1.0.18 (2009-02-07)
+ * Add Ogg/Vorbis support (thanks to John ffitch).
+ * Remove captive FLAC library.
+ * Many new features and bug fixes.
+ * Generate Win32 and Win64 pre-compiled binaries.
+
+Version 1.0.17 (2006-08-31)
+ * Add sndfile.hh C++ wrapper.
+ * Update Win32 MinGW build instructions.
+ * Minor bug fixes and cleanups.
+
+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/doc/README b/doc/README
new file mode 100644
index 0000000..0676711
--- /dev/null
+++ b/doc/README
@@ -0,0 +1,65 @@
+This is libsndfile, 1.0.25
+
+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.
+
+The tests/ directory contains programs which link against libsndfile
+and test its functionality.
+
+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.
+
+
+LINUX
+-----
+Whereever possible, you should use the packages supplied by your Linux
+distribution.
+
+If you really do need to compile from source it should be as easy as:
+
+ ./configure
+ make
+ make install
+
+Since libsndfile optionally links against libFLAC, libogg and libvorbis, you
+will need to install appropriate versions of these libraries before running
+configure as above.
+
+
+UNIX
+----
+Compile as for Linux.
+
+
+Win32/Win64
+-----------
+The default Windows compilers are nowhere near compliant with the 1999 ISO
+C Standard and hence not able to compile libsndfile.
+
+Please use the libsndfile binaries available on the libsndfile web site.
+
+
+MacOSX
+------
+Building on MacOSX should be the same as building it on any other Unix.
+
+
+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/doc/api.html b/doc/api.html
new file mode 100644
index 0000000..33d53dd
--- /dev/null
+++ b/doc/api.html
@@ -0,0 +1,781 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+
+<HEAD>
+ <TITLE>
+ The libsndfile API
+ </TITLE>
+ <META NAME="Author" CONTENT="Erik de Castro Lopo (erikd AT mega-nerd DOT com)">
+ <META NAME="Description" CONTENT="The libsndfile API.">
+ <META NAME="Keywords" CONTENT="WAV AIFF AU libsndfile sound audio dsp Linux">
+ <LINK REL="stylesheet" HREF="libsndfile.css" TYPE="text/css" MEDIA="all">
+ <LINK REL="stylesheet" HREF="print.css" TYPE="text/css" MEDIA="print">
+</HEAD>
+
+<BODY>
+
+<BR>
+<H1><B>libsndfile</B></H1>
+<P>
+ Libsndfile is a library designed to allow the reading and writing of many
+ different sampled sound file formats (such as MS Windows WAV and the Apple/SGI
+ AIFF format) through one standard library interface.
+</P>
+<!-- pepper -->
+<P>
+ During read and write operations, formats are seamlessly converted between the
+ format the application program has requested or supplied and the file's data
+ format. The application programmer can remain blissfully unaware of issues
+ such as file endian-ness and data format. See <A HREF="#note1">Note 1</A> and
+ <A HREF="#note2">Note 2</A>.
+</P>
+<!-- pepper -->
+<P>
+ Every effort is made to keep these documents up-to-date, error free and
+ unambiguous.
+ However, since maintaining the documentation is the least fun part of working
+ on libsndfile, these docs can and do fall behind the behaviour of library.
+ If any errors, omissions or ambiguities are found, please notify me (erikd)
+ at mega-nerd dot com.
+</P>
+<!-- pepper -->
+<P>
+ To supplement this reference documentation, there are simple example programs
+ included in the source code tarball.
+ The test suite which is also part of the source code tarball is also a good
+ place to look for the correct usage of the library functions.
+</P>
+<!-- pepper -->
+<P>
+ <B> Finally, if you think there is some feature missing from libsndfile, check that
+ it isn't already implemented (and documented)
+ <A HREF="command.html">here</A>.
+ </B>
+</P>
+
+<H2><B>Synopsis</B></H2>
+<P>
+The functions of libsndfile are defined as follows:
+</P>
+<!-- pepper -->
+<PRE>
+ #include &lt;stdio.h&gt;
+ #include &lt;sndfile.h&gt;
+
+ SNDFILE* <A HREF="#open">sf_open</A> (const char *path, int mode, SF_INFO *sfinfo) ;
+ SNDFILE* <A HREF="#open_fd">sf_open_fd</A> (int fd, int mode, SF_INFO *sfinfo, int close_desc) ;
+ SNDFILE* <A HREF="#open_virtual">sf_open_virtual</A> (SF_VIRTUAL_IO *sfvirtual, int mode, SF_INFO *sfinfo, void *user_data) ;
+ int <A HREF="#check">sf_format_check</A> (const SF_INFO *info) ;
+
+ sf_count_t <A HREF="#seek">sf_seek</A> (SNDFILE *sndfile, sf_count_t frames, int whence) ;
+
+ int <A HREF="command.html">sf_command</A> (SNDFILE *sndfile, int cmd, void *data, int datasize) ;
+
+ int <A HREF="#error">sf_error</A> (SNDFILE *sndfile) ;
+ const char* <A HREF="#error">sf_strerror</A> (SNDFILE *sndfile) ;
+ const char* <A HREF="#error">sf_error_number</A> (int errnum) ;
+
+ int <A HREF="#error">sf_perror</A> (SNDFILE *sndfile) ;
+ int <A HREF="#error">sf_error_str</A> (SNDFILE *sndfile, char* str, size_t len) ;
+
+ int <A HREF="#close">sf_close</A> (SNDFILE *sndfile) ;
+ void <A HREF="#write_sync">sf_write_sync</A> (SNDFILE *sndfile) ;
+
+ sf_count_t <A HREF="#read">sf_read_short</A> (SNDFILE *sndfile, short *ptr, sf_count_t items) ;
+ sf_count_t <A HREF="#read">sf_read_int</A> (SNDFILE *sndfile, int *ptr, sf_count_t items) ;
+ sf_count_t <A HREF="#read">sf_read_float</A> (SNDFILE *sndfile, float *ptr, sf_count_t items) ;
+ sf_count_t <A HREF="#read">sf_read_double</A> (SNDFILE *sndfile, double *ptr, sf_count_t items) ;
+
+ sf_count_t <A HREF="#readf">sf_readf_short</A> (SNDFILE *sndfile, short *ptr, sf_count_t frames) ;
+ sf_count_t <A HREF="#readf">sf_readf_int</A> (SNDFILE *sndfile, int *ptr, sf_count_t frames) ;
+ sf_count_t <A HREF="#readf">sf_readf_float</A> (SNDFILE *sndfile, float *ptr, sf_count_t frames) ;
+ sf_count_t <A HREF="#readf">sf_readf_double</A> (SNDFILE *sndfile, double *ptr, sf_count_t frames) ;
+
+ sf_count_t <A HREF="#write">sf_write_short</A> (SNDFILE *sndfile, short *ptr, sf_count_t items) ;
+ sf_count_t <A HREF="#write">sf_write_int</A> (SNDFILE *sndfile, int *ptr, sf_count_t items) ;
+ sf_count_t <A HREF="#write">sf_write_float</A> (SNDFILE *sndfile, float *ptr, sf_count_t items) ;
+ sf_count_t <A HREF="#write">sf_write_double</A> (SNDFILE *sndfile, double *ptr, sf_count_t items) ;
+
+ sf_count_t <A HREF="#writef">sf_writef_short</A> (SNDFILE *sndfile, short *ptr, sf_count_t frames) ;
+ sf_count_t <A HREF="#writef">sf_writef_int</A> (SNDFILE *sndfile, int *ptr, sf_count_t frames) ;
+ sf_count_t <A HREF="#writef">sf_writef_float</A> (SNDFILE *sndfile, float *ptr, sf_count_t frames) ;
+ sf_count_t <A HREF="#writef">sf_writef_double</A> (SNDFILE *sndfile, double *ptr, sf_count_t frames) ;
+
+ sf_count_t <A HREF="#raw">sf_read_raw</A> (SNDFILE *sndfile, void *ptr, sf_count_t bytes) ;
+ sf_count_t <A HREF="#raw">sf_write_raw</A> (SNDFILE *sndfile, void *ptr, sf_count_t bytes) ;
+
+ const char* <A HREF="#string">sf_get_string</A> (SNDFILE *sndfile, int str_type) ;
+ int <A HREF="#string">sf_set_string</A> (SNDFILE *sndfile, int str_type, const char* str) ;
+
+</PRE>
+<!-- pepper -->
+<P>
+SNDFILE* is an anonymous pointer to data which is private to the library.
+</P>
+
+
+<A NAME="open"></A>
+<H2><B>File Open Function</B></H2>
+
+<PRE>
+ SNDFILE* sf_open (const char *path, int mode, SF_INFO *sfinfo) ;
+</PRE>
+
+<P>
+The SF_INFO structure is for passing data between the calling function and the library
+when opening a file for reading or writing. It is defined in sndfile.h as follows:
+</P>
+<!-- pepper -->
+<PRE>
+ typedef struct
+ { sf_count_t frames ; /* Used to be called samples. */
+ int samplerate ;
+ int channels ;
+ int format ;
+ int sections ;
+ int seekable ;
+ } SF_INFO ;
+</PRE>
+
+<P>
+The mode parameter for this function can be any one of the following three values:
+</P>
+<!-- pepper -->
+<PRE>
+ SFM_READ - read only mode
+ SFM_WRITE - write only mode
+ SFM_RDWR - read/write mode
+</PRE>
+
+<P>
+When opening a file for read, the <b>format</B> field should be set to zero before
+calling sf_open().
+The only exception to this is the case of RAW files where the caller has to set
+the samplerate, channels and format fields to valid values.
+All other fields of the structure are filled in by the library.
+</P>
+<!-- pepper -->
+<P>
+When opening a file for write, the caller must fill in structure members samplerate,
+channels, and format.
+</P>
+<!-- pepper -->
+<P>
+The format field in the above SF_INFO structure is made up of the bit-wise OR of a
+major format type (values between 0x10000 and 0x08000000), a minor format type
+(with values less than 0x10000) and an optional endian-ness value.
+The currently understood formats are listed in sndfile.h as follows and also include
+bitmasks for separating major and minor file types.
+Not all combinations of endian-ness and major and minor file types are valid.
+</P>
+<!-- pepper -->
+<PRE>
+ enum
+ { /* Major formats. */
+ SF_FORMAT_WAV = 0x010000, /* Microsoft WAV format (little endian). */
+ 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 */
+ SF_FORMAT_WVE = 0x190000, /* Psion WVE format */
+ SF_FORMAT_OGG = 0x200000, /* Xiph OGG container */
+ SF_FORMAT_MPC2K = 0x210000, /* Akai MPC 2000 sampler */
+ SF_FORMAT_RF64 = 0x220000, /* RF64 WAV file */
+
+ /* 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 Dialogic ADPCM encoding. */
+
+ 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) */
+
+ SF_FORMAT_VORBIS = 0x0060, /* Xiph Vorbis encoding. */
+
+ /* 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
+ } ;
+</PRE>
+<!-- pepper -->
+<P>
+Every call to sf_open() should be matched with a call to sf_close() to free up
+memory allocated during the call to sf_open().
+</P>
+<!-- pepper -->
+<P>
+On success, the sf_open function returns a non-NULL pointer which should be
+passed as the first parameter to all subsequent libsndfile calls dealing with
+that audio file.
+On fail, the sf_open function returns a NULL pointer.
+An explanation of the error can obtained by passing NULL to
+ <A HREF="#error">sf_strerror</A>.
+</P>
+
+<A NAME="open_fd"></A>
+<H3><B>File Descriptor Open</B></H3>
+
+<PRE>
+ SNDFILE* sf_open_fd (int fd, int mode, SF_INFO *sfinfo, int close_desc) ;
+</PRE>
+
+<P>
+<b>Note:</b> On Microsoft Windows, this function does not work if the
+application and the libsndfile DLL are linked to different versions of the
+Microsoft C runtime DLL.
+</P>
+<P>
+The second open function takes a file descriptor of a file that has already been
+opened.
+Care should be taken to ensure that the mode of the file represented by the
+descriptor matches the mode argument.
+This function is useful in the following circumstances:
+</P>
+
+<UL>
+ <LI>Opening temporary files securely (ie use the tmpfile() to return a
+ FILE* pointer and then using fileno() to retrieve the file descriptor
+ which is then passed to libsndfile).
+ <LI>Opening files with file names using OS specific character encodings
+ and then passing the file descriptor to sf_open_fd().
+ <LI>Opening sound files embedded within larger files.
+ <A HREF="embedded_files.html">More info</A>.
+</UL>
+
+<P>
+Every call to sf_open_fd() should be matched with a call to sf_close() to free up
+memory allocated during the call to sf_open().
+</P>
+
+<P>
+When sf_close() is called, the file descriptor is only closed if the <B>close_desc</B>
+parameter was TRUE when the sf_open_fd() function was called.
+</P>
+
+<P>
+On success, the sf_open_fd function returns a non-NULL pointer which should be
+passed as the first parameter to all subsequent libsndfile calls dealing with
+that audio file.
+On fail, the sf_open_fd function returns a NULL pointer.
+</P>
+
+<A NAME="open_virtual"></A>
+<h3><b>Virtual File Open Function</b></h3>
+<pre>
+ SNDFILE* sf_open_virtual (SF_VIRTUAL_IO *sfvirtual, int mode, SF_INFO *sfinfo, void *user_data) ;
+</pre>
+<p>
+ Opens a soundfile from a virtual file I/O context which is provided
+ by the caller. This is usually used to interface libsndfile to a stream or buffer
+ based system. Apart from the sfvirtual and the user_data parameters this function behaves
+ like <a href="#open">sf_open</a>.
+</p>
+
+<pre>
+ typedef struct
+ { sf_vio_get_filelen get_filelen ;
+ sf_vio_seek seek ;
+ sf_vio_read read ;
+ sf_vio_write write ;
+ sf_vio_tell tell ;
+ } SF_VIRTUAL_IO ;
+</pre>
+<p>
+Libsndfile calls the callbacks provided by the SF_VIRTUAL_IO structure when opening, reading
+and writing to the virtual file context. The user_data pointer is a user defined context which
+will be available in the callbacks.
+</p>
+<pre>
+ 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) ;
+</pre>
+<h4>sf_vio_get_filelen</h4>
+<pre>
+ typedef sf_count_t (*sf_vio_get_filelen) (void *user_data) ;
+</pre>
+<p>
+The virtual file contex must return the length of the virtual file in bytes.<br>
+</p>
+<h4>sf_vio_seek</h4>
+<pre>
+ typedef sf_count_t (*sf_vio_seek) (sf_count_t offset, int whence, void *user_data) ;
+</pre>
+<p>
+The virtual file context must seek to offset using the seek mode provided by whence which is one of<br>
+</p>
+<pre>
+ SEEK_CUR
+ SEEK_SET
+ SEEK_END
+</pre>
+<p>
+The return value must contain the new offset in the file.
+</p>
+<h4>sf_vio_read</h4>
+<pre>
+ typedef sf_count_t (*sf_vio_read) (void *ptr, sf_count_t count, void *user_data) ;
+</pre>
+<p>
+The virtual file context must copy ("read") "count" bytes into the
+buffer provided by ptr and return the count of actually copied bytes.
+</p>
+<h4>sf_vio_write</h4>
+<pre>
+ typedef sf_count_t (*sf_vio_write) (const void *ptr, sf_count_t count, void *user_data) ;
+</pre>
+<p>
+The virtual file context must process "count" bytes stored in the
+buffer passed with ptr and return the count of actually processed bytes.<br>
+</p>
+<h4>sf_vio_tell</h4>
+<pre>
+ typedef sf_count_t (*sf_vio_tell) (void *user_data) ;
+</pre>
+<p>
+Return the current position of the virtual file context.<br>
+</p>
+
+
+<A NAME="check"></A>
+<BR><H2><B>Format Check Function</B></H2>
+
+<PRE>
+ int sf_format_check (const SF_INFO *info) ;
+</PRE>
+<!-- pepper -->
+<P>
+This function allows the caller to check if a set of parameters in the SF_INFO struct
+is valid before calling sf_open (SFM_WRITE).
+</P>
+<P>
+sf_format_check returns TRUE if the parameters are valid and FALSE otherwise.
+</P>
+
+<A NAME="seek"></A>
+<BR><H2><B>File Seek Functions</B></H2>
+
+<PRE>
+ sf_count_t sf_seek (SNDFILE *sndfile, sf_count_t frames, int whence) ;
+</PRE>
+
+<P>
+The file seek functions work much like lseek in unistd.h with the exception that
+the non-audio data is ignored and the seek only moves within the audio data section of
+the file.
+In addition, seeks are defined in number of (multichannel) frames.
+Therefore, a seek in a stereo file from the current position forward with an offset
+of 1 would skip forward by one sample of both channels.
+</P>
+
+<P>
+like lseek(), the whence parameter can be any one of the following three values:
+</P>
+
+<PRE>
+ SEEK_SET - The offset is set to the start of the audio data plus offset (multichannel) frames.
+ SEEK_CUR - The offset is set to its current location plus offset (multichannel) frames.
+ SEEK_END - The offset is set to the end of the data plus offset (multichannel) frames.
+</PRE>
+<!-- pepper -->
+<P>
+Internally, libsndfile keeps track of the read and write locations using separate
+read and write pointers.
+If a file has been opened with a mode of SFM_RDWR, bitwise OR-ing the standard whence
+values above with either SFM_READ or SFM_WRITE allows the read and write pointers to
+be modified separately.
+If the SEEK_* values are used on their own, the read and write pointers are
+both modified.
+</P>
+
+<P>
+Note that the frames offset can be negative and in fact should be when SEEK_END is used for the
+whence parameter.
+</P>
+<P>
+sf_seek will return the offset in (multichannel) frames from the start of the audio data
+or -1 if an error occured (ie an attempt is made to seek beyond the start or end of the file).
+</P>
+
+<A NAME="error"></A>
+<H2><BR><B>Error Reporting Functions</B></H2>
+
+
+<PRE>
+ int sf_error (SNDFILE *sndfile) ;
+</PRE>
+<P>
+This function returns the current error number for the given SNDFILE.
+The error number may be one of the following:
+</P>
+<PRE>
+ 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
+ } ;
+</PRE>
+<!-- pepper -->
+<P>
+or any one of many other internal error values.
+Applications should only test the return value against error values defined in
+&lt;sndfile.h&gt; as the internal error values are subject to change at any
+time.
+For errors not in the above list, the function sf_error_number() can be used to
+convert it to an error string.
+</P>
+
+<PRE>
+ const char* sf_strerror (SNDFILE *sndfile) ;
+ const char* sf_error_number (int errnum) ;
+</PRE>
+
+<P>
+The error functions sf_strerror() and sf_error_number() convert the library's internal
+error enumerations into text strings.
+</P>
+<PRE>
+ int sf_perror (SNDFILE *sndfile) ;
+ int sf_error_str (SNDFILE *sndfile, char* str, size_t len) ;
+</PRE>
+
+<P>
+The functions sf_perror() and sf_error_str() are deprecated and will be dropped
+from the library at some later date.
+</P>
+
+<A NAME="close"></A>
+<H2><BR><B>File Close Function</B></H2>
+
+<PRE>
+ int sf_close (SNDFILE *sndfile) ;
+</PRE>
+<!-- pepper -->
+<P>
+The close function closes the file, deallocates its internal buffers and returns
+0 on success or an error value otherwise.
+</P>
+<BR>
+
+<A NAME="write_sync"></A>
+<H2><BR><B>Write Sync Function</B></H2>
+
+<PRE>
+ void sf_write_sync (SNDFILE *sndfile) ;
+</PRE>
+<!-- pepper -->
+<P>
+If the file is opened SFM_WRITE or SFM_RDWR, call the operating system's function
+to force the writing of all file cache buffers to disk. If the file is opened
+SFM_READ no action is taken.
+</P>
+<BR>
+
+
+<A NAME="read"></A>
+<H2><BR><B>File Read Functions (Items)</B></H2>
+
+<PRE>
+ sf_count_t sf_read_short (SNDFILE *sndfile, short *ptr, sf_count_t items) ;
+ sf_count_t sf_read_int (SNDFILE *sndfile, int *ptr, sf_count_t items) ;
+ sf_count_t sf_read_float (SNDFILE *sndfile, float *ptr, sf_count_t items) ;
+ sf_count_t sf_read_double (SNDFILE *sndfile, double *ptr, sf_count_t items) ;
+</PRE>
+
+<P>
+The file read items functions fill the array pointed to by ptr with the requested
+number of items. The items parameter must be an integer product of the number
+of channels or an error will occur.
+</P>
+<!-- pepper -->
+<P>
+It is important to note that the data type used by the calling program and the data
+format of the file do not need to be the same. For instance, it is possible to open
+a 16 bit PCM encoded WAV file and read the data using sf_read_float(). The library
+seamlessly converts between the two formats on-the-fly. See
+<A HREF="#note1">Note 1</A>.
+</P>
+<!-- pepper -->
+<P>
+The sf_read_XXXX functions return the number of items read.
+Unless the end of the file was reached during the read, the return value should
+equal the number of items requested.
+Attempts to read beyond the end of the file will not result in an error but will
+cause the sf_read_XXXX functions to return less than the number of items requested
+or 0 if already at the end of the file.
+</P>
+
+<A NAME="readf"></A>
+<H2><BR><B>File Read Functions (Frames)</B></H2>
+
+<PRE>
+ sf_count_t sf_readf_short (SNDFILE *sndfile, short *ptr, sf_count_t frames) ;
+ sf_count_t sf_readf_int (SNDFILE *sndfile, int *ptr, sf_count_t frames) ;
+ sf_count_t sf_readf_float (SNDFILE *sndfile, float *ptr, sf_count_t frames) ;
+ sf_count_t sf_readf_double (SNDFILE *sndfile, double *ptr, sf_count_t frames) ;
+</PRE>
+<!-- pepper -->
+<P>
+The file read frames functions fill the array pointed to by ptr with the requested
+number of frames of data. The array must be large enough to hold the product of
+frames and the number of channels.
+</P>
+
+<P><B>
+Care must be taken to ensure that there is enough space in the array pointed to by
+ptr, to take (frames * channels) number of items (shorts, ints, floats or doubles).
+</B></P>
+
+<P>
+The sf_readf_XXXX functions return the number of frames read.
+Unless the end of the file was reached during the read, the return value should equal
+the number of frames requested.
+Attempts to read beyond the end of the file will not result in an error but will cause
+the sf_readf_XXXX functions to return less than the number of frames requested or 0 if
+already at the end of the file.
+</P>
+
+<A NAME="write"></A>
+<H2><BR><B>File Write Functions (Items)</B></H2>
+
+<PRE>
+ sf_count_t sf_write_short (SNDFILE *sndfile, short *ptr, sf_count_t items) ;
+ sf_count_t sf_write_int (SNDFILE *sndfile, int *ptr, sf_count_t items) ;
+ sf_count_t sf_write_float (SNDFILE *sndfile, float *ptr, sf_count_t items) ;
+ sf_count_t sf_write_double (SNDFILE *sndfile, double *ptr, sf_count_t items) ;
+</PRE>
+
+<P>
+The file write items functions write the data in the array pointed to by ptr to the file.
+The items parameter must be an integer product of the number of channels or an error
+will occur.
+</P>
+<!-- pepper -->
+<P>
+It is important to note that the data type used by the calling program and the data
+format of the file do not need to be the same. For instance, it is possible to open
+a 16 bit PCM encoded WAV file and write the data using sf_write_float(). The library
+seamlessly converts between the two formats on-the-fly. See
+<A HREF="#note1">Note 1</A>.
+</P>
+<P>
+The sf_write_XXXX functions return the number of items written (which should be the
+same as the items parameter).
+</P>
+
+<A NAME="writef"></A>
+<H2><BR><B>File Write Functions (Frames)</B></H2>
+
+<PRE>
+ sf_count_t sf_writef_short (SNDFILE *sndfile, short *ptr, sf_count_t frames) ;
+ sf_count_t sf_writef_int (SNDFILE *sndfile, int *ptr, sf_count_t frames) ;
+ sf_count_t sf_writef_float (SNDFILE *sndfile, float *ptr, sf_count_t frames) ;
+ sf_count_t sf_writef_double (SNDFILE *sndfile, double *ptr, sf_count_t frames) ;
+</PRE>
+
+<P>
+The file write frames functions write the data in the array pointed to by ptr to the file.
+The array must be large enough to hold the product of frames and the number of channels.
+</P>
+<P>
+The sf_writef_XXXX functions return the number of frames written (which should be the
+same as the frames parameter).
+</P>
+
+<A NAME="raw"></A>
+<H2><BR><B>Raw File Read and Write Functions</B></H2>
+<!-- pepper -->
+<PRE>
+ sf_count_t sf_read_raw (SNDFILE *sndfile, void *ptr, sf_count_t bytes) ;
+ sf_count_t sf_write_raw (SNDFILE *sndfile, void *ptr, sf_count_t bytes) ;
+</PRE>
+
+<P>
+<b>Note:</b> Unless you are writing an external decoder/encode that uses
+libsndfile to handle the file headers, you should not be using these
+functions.
+</P>
+
+<P>
+The raw read and write functions read raw audio data from the audio file (not to be
+confused with reading RAW header-less PCM files). The number of bytes read or written
+must always be an integer multiple of the number of channels multiplied by the number
+of bytes required to represent one sample from one channel.
+</P>
+<!-- pepper -->
+<P>
+The raw read and write functions return the number of bytes read or written (which
+should be the same as the bytes parameter).
+</P>
+
+<P>
+<B>
+Note : The result of using of both regular reads/writes and raw reads/writes on
+compressed file formats other than SF_FORMAT_ALAW and SF_FORMAT_ULAW is undefined.
+</B>
+</P>
+
+<p>
+See also : <a href="command.html#SFC_RAW_NEEDS_ENDSWAP">SFC_RAW_NEEDS_ENDSWAP</a>
+</p>
+
+<A NAME="string"></A>
+<H2><BR><B>Functions for Reading and Writing String Data</B></H2>
+
+
+<PRE>
+ const char* sf_get_string (SNDFILE *sndfile, int str_type) ;
+ int sf_set_string (SNDFILE *sndfile, int str_type, const char* str) ;
+</PRE>
+
+<P>
+These functions allow strings to be set on files opened for write and to be
+retrieved from files opened for read where supported by the given file type.
+The <B>str_type</B> parameter can be any one of the following string types:
+</P>
+
+<PRE>
+ enum
+ { SF_STR_TITLE,
+ SF_STR_COPYRIGHT,
+ SF_STR_SOFTWARE,
+ SF_STR_ARTIST,
+ SF_STR_COMMENT,
+ SF_STR_DATE,
+ SF_STR_ALBUM,
+ SF_STR_LICENSE,
+ SF_STR_TRACKNUMBER,
+ SF_STR_GENRE
+ } ;
+</PRE>
+
+<P>
+The sf_get_string() function returns the specified string if it exists and a
+NULL pointer otherwise.
+In addition to the string ids above, SF_STR_FIRST (== SF_STR_TITLE) and
+SF_STR_LAST (always the same as the highest numbers string id) are also
+available to allow iteration over all the available string ids.
+</P>
+
+<P>
+The sf_set_string() function sets the string data.
+It returns zero on success and non-zero on error.
+The error code can be converted to a string using sf_error_number().
+</P>
+
+
+<P>
+
+</P>
+
+<HR>
+
+<A NAME="note1"></A>
+<H2><BR><B>Note 1</B></H2>
+<!-- pepper -->
+<P>
+When converting between integer PCM formats of differing size (ie using sf_read_int()
+to read a 16 bit PCM encoded WAV file) libsndfile obeys one simple rule:
+</P>
+
+<P CLASS=indent_block>
+Whenever integer data is moved from one sized container to another sized container,
+the most significant bit in the source container will become the most significant bit
+in the destination container.
+</P>
+
+<P>
+When converting between integer data and floating point data, different rules apply.
+The default behaviour when reading floating point data (sf_read_float() or
+sf_read_double ()) from a file with integer data is normalisation. Regardless of
+whether data in the file is 8, 16, 24 or 32 bit wide, the data will be read as
+floating point data in the range [-1.0, 1.0]. Similarly, data in the range [-1.0, 1.0]
+will be written to an integer PCM file so that a data value of 1.0 will be the largest
+allowable integer for the given bit width. This normalisation can be turned on or off
+using the <A HREF="command.html">sf_command</A> interface.
+</P>
+
+<A NAME="note2"></A>
+<H2><BR><B>Note 2</B></H2>
+
+<P>
+Reading a file containg floating point data (allowable with WAV, AIFF, AU and other
+file formats) using integer read methods (sf_read_short() or sf_read_int()) can
+produce unexpected results.
+For instance the data in the file may have a maximum absolute value &lt; 1.0 which
+would mean that all sample values read from the file will be zero.
+In order to read these files correctly using integer read methods, it is recommended
+that you use the
+ <A HREF="command.html">sf_command</A>
+interface, a command of
+ <A HREF="command.html#SFC_SET_SCALE_FLOAT_INT_READ">SFC_SET_SCALE_FLOAT_INT_READ</A>
+and a parameter of SF_TRUE to force correct scaling.
+</P>
+<!-- pepper -->
+<HR>
+<!-- pepper -->
+<P>
+ The libsndfile home page is
+ <A HREF="http://www.mega-nerd.com/libsndfile/">here</A>.
+</P>
+<P>
+Version : 1.0.25
+</P>
+<!-- pepper -->
+<!-- pepper -->
+<!-- pepper -->
+<!-- pepper -->
+
+</BODY>
+</HTML>
diff --git a/doc/bugs.html b/doc/bugs.html
new file mode 100644
index 0000000..937e189
--- /dev/null
+++ b/doc/bugs.html
@@ -0,0 +1,77 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+
+<HEAD>
+ <TITLE>
+ Bug Reporting
+ </TITLE>
+ <META NAME="Author" CONTENT="Erik de Castro Lopo (erikd AT mega-nerd DOT com)">
+ <LINK REL="stylesheet" HREF="libsndfile.css" TYPE="text/css" MEDIA="all">
+ <LINK REL="stylesheet" HREF="print.css" TYPE="text/css" MEDIA="print">
+</HEAD>
+
+<BODY>
+
+<CENTER>
+ <H1><B>Reporting Bugs in libsndfile</B></H1>
+</CENTER>
+<P>
+ Before even attempting to report a bug in libsndfile please make sure you have
+ read the
+ <A HREF="FAQ.html">Frequently Asked Questions</A>.
+ If you are having a problem writing code using libsndfile make sure you read
+ the
+ <A HREF="api.html">Application Programming Interface</A>
+ documentation.
+</P>
+<P>
+ That said, I am interested in finding and fixing all genuine bugs in libsndfile.
+ Bugs I want to fix include any of the following problems (and probably others) :
+</P>
+ <UL>
+ <LI> Compilation problems on new platforms.
+ <LI> Errors being detected during the `make check' process.
+ <LI> Segmentation faults occuring inside libsndfile.
+ <LI> libsndfile hanging when opening a file.
+ <LI> Supported sound file types being incorrectly read or written.
+ <LI> Omissions, errors or spelling mistakes in the documentation.
+ </UL>
+
+<P>
+ When submitting a bug report you must include :
+</P>
+ <UL>
+ <LI> Your system (CPU and memory size should be enough).
+ <LI> The operating system you are using.
+ <LI> Whether you are using a package provided by your distribution or you
+ compiled it youself.
+ <LI> If you compiled it yourself, the compiler you are using. (Also make
+ sure to run 'make check'.)
+ <LI> A description of the problem.
+ <LI> Information generated by the sndfile-info program (see next paragraph).
+ <LI> If you are having problems with sndfile-play and ALSA on Linux, I will
+ need information about your kernel, ALSA version, compiler version,
+ whether you compiled the kernel/ALSA your self or installed from a
+ package etc.
+ </UL>
+
+<P>
+ If libsndfile compiles and installs correctly but has difficulty reading a particular
+ file or type of file you should run the <B>sndfile-info</B> program (from the examples
+ directory of the libsndfile distribution) on the file. See
+ <A HREF="sndfile_info.html">here</A>
+ for an example of the use of the <B>sndfile-info</B> program.
+</P>
+<P>
+ Please do not send me a sound file which fails to open under libsndfile unless I
+ specifically ask you to. The above information should usually suffice for most
+ problems.
+</P>
+<P>
+ Once you have the above information you should email it to one of the
+ <A HREF="lists.html">mailing lists</a>
+ (posting to these lists is limited to the list subscribers).
+
+</P>
+</BODY>
+</HTML>
diff --git a/doc/command.html b/doc/command.html
new file mode 100644
index 0000000..3af84c8
--- /dev/null
+++ b/doc/command.html
@@ -0,0 +1,1605 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+
+<HEAD>
+ <TITLE>
+ libsndfile : the sf_command function.
+ </TITLE>
+ <META NAME="Author" CONTENT="Erik de Castro Lopo (erikd AT mega-nerd DOT com)">
+ <!-- Another version at the bottom of the page. -->
+ <META NAME="Description" CONTENT="The libsndfile API.">
+ <META NAME="Keywords" CONTENT="WAV AIFF AU libsndfile sound audio dsp Linux">
+ <LINK REL="stylesheet" HREF="libsndfile.css" TYPE="text/css" MEDIA="all">
+ <LINK REL="stylesheet" HREF="print.css" TYPE="text/css" MEDIA="print">
+</HEAD>
+
+<BODY>
+
+<H1><B>sf_command</B></H1>
+<PRE>
+
+ int sf_command (SNDFILE *sndfile, int cmd, void *data, int datasize) ;
+</PRE>
+<P>
+ This function allows the caller to retrieve information from or change aspects of the
+ library behaviour.
+ Examples include retrieving a string containing the library version or changing the
+ scaling applied to floating point sample data during read and write.
+ Most of these operations are performed on a per-file basis.
+</P>
+<P>
+ The cmd parameter is an integer identifier which is defined in &lt;sndfile.h&gt;.
+ All of the valid command identifiers have names beginning with "SFC_".
+ Data is passed to and returned from the library by use of a void pointer.
+ The library will not read or write more than datasize bytes from the void pointer.
+ For some calls no data is required in which case data should be NULL and datasize
+ may be used for some other purpose.
+</P>
+<P>
+ The available commands are as follows:
+</P>
+
+<CENTER>
+<TABLE BORDER="0" WIDTH="90%" CELLPADDING="4">
+<TR>
+ <TD><A HREF="#SFC_GET_LIB_VERSION">SFC_GET_LIB_VERSION</A></TD>
+ <TD>Retrieve the version of the library.</TD>
+</TR>
+<TR>
+ <TD><A HREF="#SFC_GET_LOG_INFO">SFC_GET_LOG_INFO</A></TD>
+ <TD>Retrieve the internal per-file operation log.</TD>
+</TR>
+<TR>
+ <TD><A HREF="#SFC_CALC_SIGNAL_MAX">SFC_CALC_SIGNAL_MAX</A></TD>
+ <TD>Calculate the measured maximum signal value.</TD>
+</TR>
+<TR>
+ <TD><A HREF="#SFC_CALC_NORM_SIGNAL_MAX">SFC_CALC_NORM_SIGNAL_MAX</A></TD>
+ <TD>Calculate the measured normalised maximum signal value.</TD>
+</TR>
+<TR>
+ <TD><A HREF="#SFC_CALC_MAX_ALL_CHANNELS">SFC_CALC_MAX_ALL_CHANNELS</A></TD>
+ <TD>Calculate the peak value for each channel.</TD>
+</TR>
+<TR>
+ <TD><A HREF="#SFC_CALC_NORM_MAX_ALL_CHANNELS">SFC_CALC_NORM_MAX_ALL_CHANNELS</A></TD>
+ <TD>Calculate the normalised peak for each channel.</TD>
+</TR>
+
+<TR>
+ <TD><A HREF="#SFC_GET_SIGNAL_MAX">SFC_GET_SIGNAL_MAX</A></TD>
+ <TD>Retrieve the peak value for the file (as stored in the file header).</TD>
+</TR>
+<TR>
+ <TD><A HREF="#SFC_GET_MAX_ALL_CHANNELS">SFC_GET_MAX_ALL_CHANNELS</A></TD>
+ <TD>Retrieve the peak value for each channel (as stored in the file header).</TD>
+</TR>
+
+<TR>
+ <TD><A HREF="#SFC_SET_NORM_FLOAT">SFC_SET_NORM_FLOAT</A></TD>
+ <TD>Modify the normalisation behaviour of the floating point reading and writing functions.</TD>
+</TR>
+<TR>
+ <TD><A HREF="#SFC_SET_NORM_DOUBLE">SFC_SET_NORM_DOUBLE</A></TD>
+ <TD>Modify the normalisation behaviour of the double precision floating point reading and writing functions.</TD>
+</TR>
+<TR>
+ <TD><A HREF="#SFC_GET_NORM_FLOAT">SFC_GET_NORM_FLOAT</A></TD>
+ <TD>Retrieve the current normalisation behaviour of the floating point reading and writing functions.</TD>
+</TR>
+<TR>
+ <TD><A HREF="#SFC_GET_NORM_DOUBLE">SFC_GET_NORM_DOUBLE</A></TD>
+ <TD>Retrieve the current normalisation behaviour of the double precision floating point reading and writing functions.</TD>
+</TR>
+<TR>
+ <TD><A HREF="#SFC_SET_SCALE_FLOAT_INT_READ">SFC_SET_SCALE_FLOAT_INT_READ</A></TD>
+ <TD>Set/clear the scale factor when integer (short/int) data is read from a file
+ containing floating point data.</TD>
+</TR>
+
+<TR>
+ <TD><A HREF="#SFC_SET_SCALE_INT_FLOAT_WRITE">SFC_SET_SCALE_INT_FLOAT_WRITE</A></TD>
+ <TD>Set/clear the scale factor when integer (short/int) data is written to a file
+ as floating point data.</TD>
+</TR>
+
+<TR>
+ <TD><A HREF="#SFC_GET_SIMPLE_FORMAT_COUNT">SFC_GET_SIMPLE_FORMAT_COUNT</A></TD>
+ <TD>Retrieve the number of simple formats supported by libsndfile.</TD>
+</TR>
+<TR>
+ <TD><A HREF="#SFC_GET_SIMPLE_FORMAT">SFC_GET_SIMPLE_FORMAT</A></TD>
+ <TD>Retrieve information about a simple format.</TD>
+</TR>
+
+<TR>
+ <TD><A HREF="#SFC_GET_FORMAT_INFO">SFC_GET_FORMAT_INFO</A></TD>
+ <TD>Retrieve information about a major or subtype format.</TD>
+</TR>
+
+<TR>
+ <TD><A HREF="#SFC_GET_FORMAT_MAJOR_COUNT">SFC_GET_FORMAT_MAJOR_COUNT</A></TD>
+ <TD>Retrieve the number of major formats.</TD>
+</TR>
+<TR>
+ <TD><A HREF="#SFC_GET_FORMAT_MAJOR">SFC_GET_FORMAT_MAJOR</A></TD>
+ <TD>Retrieve information about a major format type.</TD>
+</TR>
+<TR>
+ <TD><A HREF="#SFC_GET_FORMAT_SUBTYPE_COUNT">SFC_GET_FORMAT_SUBTYPE_COUNT</A></TD>
+ <TD>Retrieve the number of subformats.</TD>
+</TR>
+<TR>
+ <TD><A HREF="#SFC_GET_FORMAT_SUBTYPE">SFC_GET_FORMAT_SUBTYPE</A></TD>
+ <TD>Retrieve information about a subformat.</TD>
+</TR>
+
+<TR>
+ <TD><A HREF="#SFC_SET_ADD_PEAK_CHUNK">SFC_SET_ADD_PEAK_CHUNK</A></TD>
+ <TD>Switch the code for adding the PEAK chunk to WAV and AIFF files on or off.</TD>
+</TR>
+
+<TR>
+ <TD><A HREF="#SFC_UPDATE_HEADER_NOW">SFC_UPDATE_HEADER_NOW</A></TD>
+ <TD>Used when a file is open for write, this command will update the file
+ header to reflect the data written so far.</TD>
+</TR>
+<TR>
+ <TD><A HREF="#SFC_SET_UPDATE_HEADER_AUTO">SFC_SET_UPDATE_HEADER_AUTO</A></TD>
+ <TD>Used when a file is open for write, this command will cause the file header
+ to be updated after each write to the file.</TD>
+</TR>
+
+<TR>
+ <TD><A HREF="#SFC_FILE_TRUNCATE">SFC_FILE_TRUNCATE</A></TD>
+ <TD>Truncate a file open for write or for read/write.</TD>
+</TR>
+
+<TR>
+ <TD><A HREF="#SFC_SET_RAW_START_OFFSET">SFC_SET_RAW_START_OFFSET</A></TD>
+ <TD>Change the data start offset for files opened up as SF_FORMAT_RAW.</TD>
+</TR>
+
+<TR>
+ <TD><A HREF="#SFC_SET_CLIPPING">SFC_SET_CLIPPING</A></TD>
+ <TD>Turn on/off automatic clipping when doing floating point to integer
+ conversion.</TD>
+</TR>
+
+<TR>
+ <TD><A HREF="#SFC_GET_CLIPPING">SFC_GET_CLIPPING</A></TD>
+ <TD>Retrieve current clipping setting.</TD>
+</TR>
+
+<TR>
+ <TD><A HREF="#SFC_GET_EMBED_FILE_INFO">SFC_GET_EMBED_FILE_INFO</A></TD>
+ <TD>Retrieve information about audio files embedded inside other files.</TD>
+</TR>
+
+<TR>
+ <TD><A HREF="#SFC_WAVEX_GET_AMBISONIC">SFC_GET_AMBISONIC</A></TD>
+ <TD>Test a WAVEX file for Ambisonic format</TD>
+</TR>
+
+<TR>
+ <TD><A HREF="#SFC_WAVEX_SET_AMBISONIC">SFC_SET_AMBISONIC</A></TD>
+ <TD>Modify a WAVEX header for Ambisonic format</TD>
+</TR>
+
+<TR>
+ <TD><A HREF="#SFC_SET_VBR_ENCODING_QUALITY">SFC_SET_VBR_ENCODING_QUALITY</A></TD>
+ <TD>Set the the Variable Bit Rate encoding quality</TD>
+</TR>
+
+<TR>
+ <TD><A HREF="#SFC_RAW_NEEDS_ENDSWAP">SFC_RAW_NEEDS_ENDSWAP</a></td>
+ <TD>Determine if raw data needs endswapping</TD>
+</TR>
+
+<TR>
+ <TD><A HREF="#SFC_GET_BROADCAST_INFO">SFC_GET_BROADCAST_INFO</A></TD>
+ <TD>Retrieve the Broadcast Chunk info</TD>
+</TR>
+
+<TR>
+ <TD><A HREF="#SFC_SET_BROADCAST_INFO">SFC_SET_BROADCAST_INFO</A></TD>
+ <TD>Set the Broadcast Chunk info</TD>
+</TR>
+
+<TR>
+ <TD><A HREF="#SFC_GET_LOOP_INFO">SFC_GET_LOOP_INFO</A></TD>
+ <TD>Get loop info</TD>
+</TR>
+
+<TR>
+ <TD><A HREF="#SFC_GET_INSTRUMENT">SFC_GET_INSTRUMENT</A></TD>
+ <TD>Get instrument info</TD>
+</TR>
+
+<TR>
+ <TD><A HREF="#SFC_SET_INSTRUMENT">SFC_SET_INSTRUMENT</A></TD>
+ <TD>Set instrument info</TD>
+</TR>
+
+<TR>
+ <TD><A HREF="#SFC_SET_VBR_ENCODING_QUALITY">SFC_SET_VBR_ENCODING_QUALITY</A></TD>
+ <TD>Set variable bit rate encoding quality</TD>
+</TR>
+
+
+
+<!--
+<TR>
+ <TD><A HREF="#add-dither">add dither</A></TD>
+ <TD>Add dither to output on write.</TD>
+</TR>
+-->
+</TABLE>
+</CENTER>
+
+<BR><BR>
+
+<HR>
+
+<!-- ========================================================================= -->
+<A NAME="SFC_GET_LIB_VERSION"></A>
+<H2><BR><B>SFC_GET_LIB_VERSION</B></H2>
+<P>
+Retrieve the version of the library as a string.
+</P>
+<P>
+Parameters:
+<PRE>
+ sndfile : Not used
+ cmd : SFC_GET_LIB_VERSION
+ data : A pointer to a char buffer
+ datasize : The size of the the buffer
+</PRE>
+<P>
+Example:
+</P>
+<PRE>
+ char buffer [128] ;
+ sf_command (NULL, SFC_GET_LIB_VERSION, buffer, sizeof (buffer)) ;
+</PRE>
+
+<DL>
+<DT>Return value:</DT>
+ <DD><DD>This call will return the length of the retrieved version string.
+</DL>
+<DL>
+<DT>Notes:</DT>
+<DD>
+The string returned in the buffer passed to this function will not overflow
+the buffer and will always be null terminated .
+</DL>
+
+<!-- ========================================================================= -->
+<A NAME="SFC_GET_LOG_INFO"></A>
+<H2><BR><B>SFC_GET_LOG_INFO</B></H2>
+<P>
+Retrieve the log buffer generated when opening a file as a string. This log
+buffer can often contain a good reason for why libsndfile failed to open a
+particular file.
+</P>
+<P>
+Parameters:
+<PRE>
+ sndfile : A valid SNDFILE* pointer
+ cmd : SFC_GET_LOG_INFO
+ data : A pointer to a char buffer
+ datasize : The size of the the buffer
+</PRE>
+<P>
+Example:
+</P>
+<PRE>
+ char buffer [2048] ;
+ sf_command (sndfile, SFC_GET_LOG_INFO, buffer, sizeof (buffer)) ;
+</PRE>
+
+<DL>
+<DT>Return value:</DT>
+ <DD><DD>This call will return the length of the retrieved version string.
+</DL>
+<DL>
+<DT>Notes:</DT>
+<DD>
+The string returned in the buffer passed to this function will not overflow
+the buffer and will always be null terminated .
+</DL>
+
+<!-- ========================================================================= -->
+<A NAME="SFC_CALC_SIGNAL_MAX"></A>
+<H2><BR><B>SFC_CALC_SIGNAL_MAX</B></H2>
+<P>
+Retrieve the measured maximum signal value. This involves reading through
+the whole file which can be slow on large files.
+</P>
+<P>
+Parameters:
+<PRE>
+ sndfile : A valid SNDFILE* pointer
+ cmd : SFC_CALC_SIGNAL_MAX
+ data : A pointer to a double
+ datasize : sizeof (double)
+</PRE>
+<P>
+Example:
+</P>
+<PRE>
+ double max_val ;
+ sf_command (sndfile, SFC_CALC_SIGNAL_MAX, &amp;max_val, sizeof (max_val)) ;
+</PRE>
+
+<DL>
+<DT>Return value:</DT>
+ <DD><DD>Zero on success, non-zero otherwise.
+</DL>
+
+<!-- ========================================================================= -->
+<A NAME="SFC_CALC_NORM_SIGNAL_MAX"></A>
+<H2><BR><B>SFC_CALC_NORM_SIGNAL_MAX</B></H2>
+<P>
+Retrieve the measured normalised maximum signal value. This involves reading
+through the whole file which can be slow on large files.
+</P>
+<P>
+Parameters:
+<PRE>
+ sndfile : A valid SNDFILE* pointer
+ cmd : SFC_CALC_NORM_SIGNAL_MAX
+ data : A pointer to a double
+ datasize : sizeof (double)
+</PRE>
+<P>
+Example:
+</P>
+<PRE>
+ double max_val ;
+ sf_command (sndfile, SFC_CALC_NORM_SIGNAL_MAX, &amp;max_val, sizeof (max_val)) ;
+</PRE>
+
+<DL>
+<DT>Return value:</DT>
+ <DD><DD>Zero on success, non-zero otherwise.
+</DL>
+
+<!-- ========================================================================= -->
+<A NAME="SFC_CALC_MAX_ALL_CHANNELS"></A>
+<H2><BR><B>SFC_CALC_MAX_ALL_CHANNELS</B></H2>
+<P>
+Calculate the peak value (ie a single number) for each channel.
+This involves reading through the whole file which can be slow on large files.
+</P>
+<P>
+Parameters:
+<PRE>
+ sndfile : A valid SNDFILE* pointer
+ cmd : SFC_CALC_MAX_ALL_CHANNELS
+ data : A pointer to a double
+ datasize : sizeof (double) * number_of_channels
+</PRE>
+<P>
+Example:
+</P>
+<PRE>
+ double peaks [number_of_channels] ;
+ sf_command (sndfile, SFC_CALC_MAX_ALL_CHANNELS, peaks, sizeof (peaks)) ;
+</PRE>
+<DL>
+<DT>Return value:</DT>
+ <DD>Zero if peaks have been calculated successfully and non-zero otherwise.
+</DL>
+
+
+<!-- ========================================================================= -->
+<A NAME="SFC_CALC_NORM_MAX_ALL_CHANNELS"></A>
+<H2><BR><B>SFC_CALC_NORM_MAX_ALL_CHANNELS</B></H2>
+<P>
+Calculate the normalised peak for each channel.
+This involves reading through the whole file which can be slow on large files.
+</P>
+<P>
+Parameters:
+<PRE>
+ sndfile : A valid SNDFILE* pointer
+ cmd : SFC_CALC_NORM_MAX_ALL_CHANNELS
+ data : A pointer to a double
+ datasize : sizeof (double) * number_of_channels
+</PRE>
+<P>
+Example:
+</P>
+<PRE>
+ double peaks [number_of_channels] ;
+ sf_command (sndfile, SFC_CALC_NORM_MAX_ALL_CHANNELS, peaks, sizeof (peaks)) ;
+</PRE>
+<DL>
+<DT>Return value:</DT>
+ <DD>Zero if peaks have been calculated successfully and non-zero otherwise.
+</DL>
+
+
+
+
+<!-- ========================================================================= -->
+<A NAME="SFC_GET_SIGNAL_MAX"></A>
+<H2><BR><B>SFC_GET_SIGNAL_MAX</B></H2>
+<P>
+Retrieve the peak value for the file as stored in the file header.
+</P>
+<P>
+Parameters:
+<PRE>
+ sndfile : A valid SNDFILE* pointer
+ cmd : SFC_GET_SIGNAL_MAX
+ data : A pointer to a double
+ datasize : sizeof (double)
+</PRE>
+<P>
+Example:
+</P>
+<PRE>
+ double max_peak ;
+ sf_command (sndfile, SFC_GET_SIGNAL_MAX, &amp;max_peak, sizeof (max_peak)) ;
+</PRE>
+<DL>
+<DT>Return value:</DT>
+ <DD>SF_TRUE if the file header contained the peak value. SF_FALSE otherwise.
+</DL>
+
+<!-- ========================================================================= -->
+<A NAME="SFC_GET_MAX_ALL_CHANNELS"></A>
+<H2><BR><B>SFC_GET_MAX_ALL_CHANNELS</B></H2>
+<P>
+Retrieve the peak value for the file as stored in the file header.
+</P>
+<P>
+Parameters:
+<PRE>
+ sndfile : A valid SNDFILE* pointer
+ cmd : SFC_GET_SIGNAL_MAX
+ data : A pointer to an array of doubles
+ datasize : sizeof (double) * number_of_channels
+</PRE>
+<P>
+Example:
+</P>
+<PRE>
+ double peaks [number_of_channels] ;
+ sf_command (sndfile, SFC_GET_MAX_ALL_CHANNELS, peaks, sizeof (peaks)) ;
+</PRE>
+<DL>
+<DT>Return value:</DT>
+ <DD>SF_TRUE if the file header contains per channel peak values for the file.
+ SF_FALSE otherwise.
+</DL>
+
+
+<!-- ========================================================================= -->
+<A NAME="SFC_SET_NORM_FLOAT"></A>
+<H2><BR><B>SFC_SET_NORM_FLOAT</B></H2>
+<P>
+This command only affects data read from or written to using the floating point functions:
+</P>
+<PRE>
+ size_t <A HREF="api.html#read">sf_read_float</A> (SNDFILE *sndfile, float *ptr, size_t items) ;
+ size_t <A HREF="api.html#readf">sf_readf_float</A> (SNDFILE *sndfile, float *ptr, size_t frames) ;
+
+ size_t <A HREF="api.html#write">sf_write_float</A> (SNDFILE *sndfile, float *ptr, size_t items) ;
+ size_t <A HREF="api.html#writef">sf_writef_float</A> (SNDFILE *sndfile, float *ptr, size_t frames) ;
+</PRE>
+<P>
+Parameters:
+</P>
+<PRE>
+ sndfile : A valid SNDFILE* pointer
+ cmd : SFC_SET_NORM_FLOAT
+ data : NULL
+ datasize : SF_TRUE or SF_FALSE
+</PRE>
+<P>
+For read operations setting normalisation to SF_TRUE means that the data from all
+subsequent reads will be be normalised to the range [-1.0, 1.0].
+</P>
+<P>
+For write operations, setting normalisation to SF_TRUE means than all data supplied
+to the float write functions should be in the range [-1.0, 1.0] and will be scaled
+for the file format as necessary.
+</P>
+<P>
+For both cases, setting normalisation to SF_FALSE means that no scaling will take place.
+</P>
+<P>
+Example:
+</P>
+<PRE>
+ sf_command (sndfile, SFC_SET_NORM_FLOAT, NULL, SF_TRUE) ;
+
+ sf_command (sndfile, SFC_SET_NORM_FLOAT, NULL, SF_FALSE) ;
+</PRE>
+<DL>
+<DT>Return value: </DT>
+ <DD>Returns the previous float normalisation mode.
+</DL>
+
+<!-- ========================================================================= -->
+<A NAME="SFC_SET_NORM_DOUBLE"></A>
+<H2><BR><B>SFC_SET_NORM_DOUBLE</B></H2>
+<P>
+This command only affects data read from or written to using the double precision
+floating point functions:
+</P>
+<PRE>
+ size_t <A HREF="api.html#read">sf_read_double</A> (SNDFILE *sndfile, double *ptr, size_t items) ;
+ size_t <A HREF="api.html#readf">sf_readf_double</A> (SNDFILE *sndfile, double *ptr, size_t frames) ;
+
+ size_t <A HREF="api.html#write">sf_write_double</A> (SNDFILE *sndfile, double *ptr, size_t items) ;
+ size_t <A HREF="api.html#writef">sf_writef_double</A> (SNDFILE *sndfile, double *ptr, size_t frames) ;
+</PRE>
+<P>
+Parameters:
+</P>
+<PRE>
+ sndfile : A valid SNDFILE* pointer
+ cmd : SFC_SET_NORM_DOUBLE
+ data : NULL
+ datasize : SF_TRUE or SF_FALSE
+</PRE>
+<P>
+For read operations setting normalisation to SF_TRUE means that the data
+from all subsequent reads will be be normalised to the range [-1.0, 1.0].
+</P>
+<P>
+For write operations, setting normalisation to SF_TRUE means than all data supplied
+to the double write functions should be in the range [-1.0, 1.0] and will be scaled
+for the file format as necessary.
+</P>
+<P>
+For both cases, setting normalisation to SF_FALSE means that no scaling will take place.
+</P>
+<P>
+Example:
+</P>
+<PRE>
+ sf_command (sndfile, SFC_SET_NORM_DOUBLE, NULL, SF_TRUE) ;
+
+ sf_command (sndfile, SFC_SET_NORM_DOUBLE, NULL, SF_FALSE) ;
+</PRE>
+<DL>
+<DT>Return value: </DT>
+ <DD>Returns the previous double normalisation mode.
+</DL>
+
+<!-- ========================================================================= -->
+<A NAME="SFC_GET_NORM_FLOAT"></A>
+<H2><BR><B>SFC_GET_NORM_FLOAT</B></H2>
+<P>
+Retrieve the current float normalisation mode.
+</P>
+<P>
+Parameters:
+</P>
+<PRE>
+ sndfile : A valid SNDFILE* pointer
+ cmd : SFC_GET_NORM_FLOAT
+ data : NULL
+ datasize : anything
+</PRE>
+<P>
+Example:
+</P>
+<PRE>
+ normalisation = sf_command (sndfile, SFC_GET_NORM_FLOAT, NULL, 0) ;
+</PRE>
+<DL>
+<DT>Return value: </DT>
+ <DD>Returns TRUE if normalisation is on and FALSE otherwise.
+</DL>
+
+<!-- ========================================================================= -->
+<A NAME="SFC_GET_NORM_DOUBLE"></A>
+<H2><BR><B>SFC_GET_NORM_DOUBLE</B></H2>
+<P>
+Retrieve the current float normalisation mode.
+</P>
+<P>
+Parameters:
+</P>
+<PRE>
+ sndfile : A valid SNDFILE* pointer
+ cmd : SFC_GET_NORM_DOUBLE
+ data : NULL
+ datasize : anything
+</PRE>
+<P>
+Example:
+</P>
+<PRE>
+ normalisation = sf_command (sndfile, SFC_GET_NORM_DOUBLE, NULL, 0) ;
+</PRE>
+<DL>
+<DT>Return value: </DT>
+ <DD>Returns TRUE if normalisation is on and FALSE otherwise.
+</DL>
+
+
+<!-- ========================================================================= -->
+<A NAME="SFC_SET_SCALE_FLOAT_INT_READ"></A>
+<H2><BR><B>SFC_SET_SCALE_FLOAT_INT_READ</B></H2>
+<P>
+Set/clear the scale factor when integer (short/int) data is read from a file
+containing floating point data.
+</P>
+<P>
+Parameters:
+</P>
+<PRE>
+ sndfile : A valid SNDFILE* pointer
+ cmd : SFC_SET_SCALE_FLOAT_INT_READ
+ data : NULL
+ datasize : TRUE or FALSE
+</PRE>
+<P>
+Example:
+</P>
+<PRE>
+ sf_command (sndfile, SFC_SET_SCALE_FLOAT_INT_READ, NULL, SF_TRUE) ;
+</PRE>
+<DL>
+<DT>Return value: </DT>
+ <DD>Returns the previous SFC_SET_SCALE_FLOAT_INT_READ setting for this file.
+</DL>
+
+
+<!-- ========================================================================= -->
+<A NAME="SFC_SET_SCALE_INT_FLOAT_WRITE"></A>
+<H2><BR><B>SFC_SET_SCALE_INT_FLOAT_WRITE</B></H2>
+<P>
+Set/clear the scale factor when integer (short/int) data is written to a file
+as floating point data.
+</P>
+<P>
+Parameters:
+</P>
+<PRE>
+ sndfile : A valid SNDFILE* pointer
+ cmd : SFC_SET_SCALE_FLOAT_INT_READ
+ data : NULL
+ datasize : TRUE or FALSE
+</PRE>
+<P>
+Example:
+</P>
+<PRE>
+ sf_command (sndfile, SFC_SET_SCALE_INT_FLOAT_WRITE, NULL, SF_TRUE) ;
+</PRE>
+<DL>
+<DT>Return value: </DT>
+ <DD>Returns the previous SFC_SET_SCALE_INT_FLOAT_WRITE setting for this file.
+</DL>
+
+<!-- ========================================================================= -->
+<A NAME="SFC_GET_SIMPLE_FORMAT_COUNT"></A>
+<H2><BR><B>SFC_GET_SIMPLE_FORMAT_COUNT</B></H2>
+<P>
+Retrieve the number of simple formats supported by libsndfile.
+</P>
+<P>
+Parameters:
+</P>
+<PRE>
+ sndfile : Not used.
+ cmd : SFC_GET_SIMPLE_FORMAT_COUNT
+ data : a pointer to an int
+ datasize : sizeof (int)
+</PRE>
+<P>
+Example:
+</P>
+<PRE>
+ int count ;
+ sf_command (sndfile, SFC_GET_SIMPLE_FORMAT_COUNT, &amp;count, sizeof (int)) ;
+</PRE>
+<DL>
+<DT>Return value: </DT>
+ <DD>0
+</DL>
+
+<!-- ========================================================================= -->
+<A NAME="SFC_GET_SIMPLE_FORMAT"></A>
+<H2><BR><B>SFC_GET_SIMPLE_FORMAT</B></H2>
+<P>
+Retrieve information about a simple format.
+</P>
+<P>
+Parameters:
+</P>
+<PRE>
+ sndfile : Not used.
+ cmd : SFC_GET_SIMPLE_FORMAT
+ data : a pointer to an SF_FORMAT_INFO struct
+ datasize : sizeof (SF_FORMAT_INFO)
+</PRE>
+<P>
+The SF_FORMAT_INFO struct is defined in &lt;sndfile.h&gt; as:
+</P>
+<PRE>
+ typedef struct
+ { int format ;
+ const char *name ;
+ const char *extension ;
+ } SF_FORMAT_INFO ;
+</PRE>
+<P>
+When sf_command() is called with SF_GET_SIMPLE_FORMAT, the value of the format
+field should be the format number (ie 0 &lt;= format &lt;= count value obtained using
+SF_GET_SIMPLE_FORMAT_COUNT).
+</P>
+<P>
+Example:
+</P>
+<PRE>
+ SF_FORMAT_INFO format_info ;
+ int k, count ;
+
+ sf_command (sndfile, SFC_GET_SIMPLE_FORMAT_COUNT, &amp;count, sizeof (int)) ;
+
+ for (k = 0 ; k &lt; count ; k++)
+ { format_info.format = k ;
+ sf_command (sndfile, SFC_GET_SIMPLE_FORMAT, &amp;format_info, sizeof (format_info)) ;
+ printf ("%08x %s %s\n", format_info.format, format_info.name, format_info.extension) ;
+ } ;
+</PRE>
+<DL>
+<DT>Return value: </DT>
+ <DD>0 on success and non-zero otherwise.
+ <DD>The value of the format field of the SF_FORMAT_INFO struct will be a value which
+ can be placed in the format field of an SF_INFO struct when a file is to be opened
+ for write.
+ <DD>The name field will contain a char* pointer to the name of the string, eg. "WAV (Microsoft 16 bit PCM)".
+ <DD>The extension field will contain the most commonly used file extension for that file type.
+</DL>
+
+<!-- ========================================================================= -->
+<A NAME="SFC_GET_FORMAT_INFO"></A>
+<H2><BR><B>SFC_GET_FORMAT_INFO</B></H2>
+<P>
+Retrieve information about a major or subtype format.
+</P>
+<P>
+Parameters:
+</P>
+<PRE>
+ sndfile : Not used.
+ cmd : SFC_GET_FORMAT_INFO
+ data : a pointer to an SF_FORMAT_INFO struct
+ datasize : sizeof (SF_FORMAT_INFO)
+</PRE>
+<P>
+The SF_FORMAT_INFO struct is defined in &lt;sndfile.h&gt; as:
+</P>
+<PRE>
+ typedef struct
+ { int format ;
+ const char *name ;
+ const char *extension ;
+ } SF_FORMAT_INFO ;
+</PRE>
+<P>
+When sf_command() is called with SF_GET_FORMAT_INFO, the format field is
+examined and if (format &amp; SF_FORMAT_TYPEMASK) is a valid format then the struct
+is filled in with information about the given major type.
+If (format &amp; SF_FORMAT_TYPEMASK) is FALSE and (format &amp; SF_FORMAT_SUBMASK) is a
+valid subtype format then the struct is filled in with information about the given
+subtype.
+</P>
+<P>
+Example:
+</P>
+<PRE>
+ SF_FORMAT_INFO format_info ;
+
+ format_info.format = SF_FORMAT_WAV ;
+ sf_command (sndfile, SFC_GET_FORMAT_INFO, &amp;format_info, sizeof (format_info)) ;
+ printf ("%08x %s %s\n", format_info.format, format_info.name, format_info.extension) ;
+
+ format_info.format = SF_FORMAT_ULAW ;
+ sf_command (sndfile, SFC_GET_FORMAT_INFO, &amp;format_info, sizeof (format_info)) ;
+ printf ("%08x %s\n", format_info.format, format_info.name) ;
+</PRE>
+<DL>
+<DT>Return value: </DT>
+ <DD>0 on success and non-zero otherwise.
+</DL>
+<!-- ========================================================================= -->
+<A NAME="SFC_GET_FORMAT_MAJOR_COUNT"></A>
+<H2><BR><B>SFC_GET_FORMAT_MAJOR_COUNT</B></H2>
+<P>
+Retrieve the number of major formats.
+</P>
+<P>
+Parameters:
+</P>
+<PRE>
+ sndfile : Not used.
+ cmd : SFC_GET_FORMAT_MAJOR_COUNT
+ data : a pointer to an int
+ datasize : sizeof (int)
+</PRE>
+<P>
+Example:
+</P>
+<PRE>
+ int count ;
+ sf_command (sndfile, SFC_GET_FORMAT_MAJOR_COUNT, &amp;count, sizeof (int)) ;
+</PRE>
+<DL>
+<DT>Return value: </DT>
+ <DD>0
+</DL>
+
+<!-- ========================================================================= -->
+<A NAME="SFC_GET_FORMAT_MAJOR"></A>
+<H2><BR><B>SFC_GET_FORMAT_MAJOR</B></H2>
+<P>
+Retrieve information about a major format type.
+</P>
+<P>
+Parameters:
+</P>
+<PRE>
+ sndfile : Not used.
+ cmd : SFC_GET_FORMAT_MAJOR
+ data : a pointer to an SF_FORMAT_INFO struct
+ datasize : sizeof (SF_FORMAT_INFO)
+</PRE>
+<P>
+Example:
+</P>
+<PRE>
+ SF_FORMAT_INFO format_info ;
+ int k, count ;
+
+ sf_command (sndfile, SFC_GET_FORMAT_MAJOR_COUNT, &amp;count, sizeof (int)) ;
+
+ for (k = 0 ; k &lt; count ; k++)
+ { format_info.format = k ;
+ sf_command (sndfile, SFC_GET_FORMAT_MAJOR, &amp;format_info, sizeof (format_info)) ;
+ printf ("%08x %s %s\n", format_info.format, format_info.name, format_info.extension) ;
+ } ;
+</PRE>
+<P>
+For a more comprehensive example, see the program list_formats.c in the examples/
+directory of the libsndfile source code distribution.
+</P>
+<DL>
+<DT>Return value: </DT>
+ <DD>0 on success and non-zero otherwise.
+ <DD>The value of the format field will be one of the major format identifiers such as
+ SF_FORMAT_WAV or SF_FORMAT_AIFF.
+ <DD>The name field will contain a char* pointer to the name of the string, eg. "WAV (Microsoft)".
+ <DD>The extension field will contain the most commonly used file extension for that file type.
+</DL>
+
+<!-- ========================================================================= -->
+<A NAME="SFC_GET_FORMAT_SUBTYPE_COUNT"></A>
+<H2><BR><B>SFC_GET_FORMAT_SUBTYPE_COUNT</B></H2>
+<P>
+Retrieve the number of subformats.
+</P>
+<P>
+Parameters:
+</P>
+<PRE>
+ sndfile : Not used.
+ cmd : SFC_GET_FORMAT_SUBTYPE_COUNT
+ data : a pointer to an int
+ datasize : sizeof (int)
+</PRE>
+<P>
+Example:
+</P>
+<PRE>
+ int count ;
+ sf_command (sndfile, SFC_GET_FORMAT_SUBTYPE_COUNT, &amp;count, sizeof (int)) ;
+</PRE>
+<DL>
+<DT>Return value: </DT>
+ <DD>0
+</DL>
+
+<!-- ========================================================================= -->
+<A NAME="SFC_GET_FORMAT_SUBTYPE"></A>
+<H2><BR><B>SFC_GET_FORMAT_SUBTYPE</B></H2>
+<P>
+Enumerate the subtypes (this function does not translate a subtype into
+a string describing that subtype).
+A typical use case might be retrieving a string description of all subtypes
+so that a dialog box can be filled in.
+</P>
+<P>
+
+</P>
+<P>
+Parameters:
+</P>
+<PRE>
+ sndfile : Not used.
+ cmd : SFC_GET_FORMAT_SUBTYPE
+ data : a pointer to an SF_FORMAT_INFO struct
+ datasize : sizeof (SF_FORMAT_INFO)
+</PRE>
+<P>
+Example 1: Retrieve all sybtypes supported by the WAV format.
+</P>
+<PRE>
+ SF_FORMAT_INFO format_info ;
+ int k, count ;
+
+ sf_command (sndfile, SFC_GET_FORMAT_SUBTYPE_COUNT, &amp;count, sizeof (int)) ;
+
+ for (k = 0 ; k &lt; count ; k++)
+ { format_info.format = k ;
+ sf_command (sndfile, SFC_GET_FORMAT_SUBTYPE, &amp;format_info, sizeof (format_info)) ;
+ if (! sf_format_check (format_info.format | SF_FORMAT_WAV))
+ continue ;
+ printf ("%08x %s\n", format_info.format, format_info.name) ;
+ } ;
+</PRE>
+<P>
+Example 2: Print a string describing the SF_FORMAT_PCM_16 subtype.
+</P>
+<PRE>
+ SF_FORMAT_INFO format_info ;
+ int k, count ;
+
+ sf_command (sndfile, SFC_GET_FORMAT_SUBTYPE_COUNT, &amp;count, sizeof (int)) ;
+
+ for (k = 0 ; k &lt; count ; k++)
+ { format_info.format = k ;
+ sf_command (sndfile, SFC_GET_FORMAT_SUBTYPE, &amp;format_info, sizeof (format_info)) ;
+ if (format_info.format == SF_FORMAT_PCM_16)
+ { printf ("%08x %s\n", format_info.format, format_info.name) ;
+ break ;
+ } ;
+ } ;
+</PRE>
+<P>
+For a more comprehensive example, see the program list_formats.c in the examples/
+directory of the libsndfile source code distribution.
+</P>
+<DL>
+<DT>Return value: </DT>
+ <DD>0 on success and non-zero otherwise.
+ <DD>The value of the format field will be one of the major format identifiers such as
+ SF_FORMAT_WAV or SF_FORMAT_AIFF.
+ <DD>The name field will contain a char* pointer to the name of the string; for instance
+ "WAV (Microsoft)" or "AIFF (Apple/SGI)".
+ <DD>The extension field will be a NULL pointer.
+</DL>
+
+<!-- ========================================================================= -->
+<A NAME="SFC_SET_ADD_PEAK_CHUNK"></A>
+<H2><BR><B>SFC_SET_ADD_PEAK_CHUNK</B></H2>
+<P>
+By default, WAV and AIFF files which contain floating point data (subtype SF_FORMAT_FLOAT
+or SF_FORMAT_DOUBLE) have a PEAK chunk.
+By using this command, the addition of a PEAK chunk can be turned on or off.
+</P>
+<P>
+Note : This call must be made before any data is written to the file.
+</P>
+<P>
+Parameters:
+<PRE>
+ sndfile : A valid SNDFILE* pointer
+ cmd : SFC_SET_ADD_PEAK_CHUNK
+ data : Not used (should be NULL)
+ datasize : TRUE or FALSE.
+</PRE>
+<P>
+Example:
+</P>
+<PRE>
+ /* Turn on the PEAK chunk. */
+ sf_command (sndfile, SFC_SET_ADD_PEAK_CHUNK, NULL, SF_TRUE) ;
+
+ /* Turn off the PEAK chunk. */
+ sf_command (sndfile, SFC_SET_ADD_PEAK_CHUNK, NULL, SF_FALSE) ;
+</PRE>
+<DL>
+<DT>Return value:</DT>
+<DD>Returns SF_TRUE if the peak chunk will be written after this call.
+<DD>Returns SF_FALSE if the peak chunk will not be written after this call.
+</DL>
+
+<!-- ========================================================================= -->
+<A NAME="SFC_UPDATE_HEADER_NOW"></A>
+<H2><BR><B>SFC_UPDATE_HEADER_NOW</B></H2>
+<P>
+The header of an audio file is normally written by libsndfile when the file is
+closed using <B>sf_close()</B>.
+</P>
+<P>
+There are however situations where large files are being generated and it would
+be nice to have valid data in the header before the file is complete.
+Using this command will update the file header to reflect the amount of data written
+to the file so far.
+Other programs opening the file for read (before any more data is written) will
+then read a valid sound file header.
+</P>
+<P>
+Parameters:
+<PRE>
+ sndfile : A valid SNDFILE* pointer
+ cmd : SFC_UPDATE_HEADER_NOW
+ data : Not used (should be NULL)
+ datasize : Not used.
+</PRE>
+<P>
+Example:
+</P>
+<PRE>
+ /* Update the header now. */
+ sf_command (sndfile, SFC_UPDATE_HEADER_NOW, NULL, 0) ;
+</PRE>
+<DL>
+<DT>Return value:</DT>
+<DD>0
+</DL>
+
+<!-- ========================================================================= -->
+<A NAME="SFC_SET_UPDATE_HEADER_AUTO"></A>
+<H2><BR><B>SFC_SET_UPDATE_HEADER_AUTO</B></H2>
+<P>
+Similar to SFC_UPDATE_HEADER_NOW but updates the header at the end of every call
+to the <B>sf_write*</B> functions.
+</P>
+<P>
+Parameters:
+<PRE>
+ sndfile : A valid SNDFILE* pointer
+ cmd : SFC_UPDATE_HEADER_NOW
+ data : Not used (should be NULL)
+ datasize : SF_TRUE or SF_FALSE
+</PRE>
+<P>
+Example:
+</P>
+<PRE>
+ /* Turn on auto header update. */
+ sf_command (sndfile, SFC_SET_UPDATE_HEADER_AUTO, NULL, SF_TRUE) ;
+
+ /* Turn off auto header update. */
+ sf_command (sndfile, SFC_SET_UPDATE_HEADER_AUTO, NULL, SF_FALSE) ;
+</PRE>
+<DL>
+<DT>Return value:</DT>
+<DD>TRUE if auto update header is now on; FALSE otherwise.
+</DL>
+
+<!-- ========================================================================= -->
+<A NAME="SFC_FILE_TRUNCATE"></A>
+<H2><BR><B>SFC_FILE_TRUNCATE</B></H2>
+<P>
+Truncate a file that was opened for write or read/write.
+</P>
+<P>
+Parameters:
+<PRE>
+ sndfile : A valid SNDFILE* pointer
+ cmd : SFC_FILE_TRUNCATE
+ data : A pointer to an sf_count_t.
+ datasize : sizeof (sf_count_t)
+</PRE>
+
+<P>
+Truncate the file to the number of frames specified by the sf_count_t pointed
+to by data.
+After this command, both the read and the write pointer will be
+at the new end of the file.
+This command will fail (returning non-zero) if the requested truncate position
+is beyond the end of the file.
+</P>
+<P>
+Example:
+</P>
+<PRE>
+ /* Truncate the file to a length of 20 frames. */
+ sf_count_t frames = 20 ;
+ sf_command (sndfile, SFC_FILE_TRUNCATE, &amp;frames, sizeof (frames)) ;
+</PRE>
+<DL>
+<DT>Return value:</DT>
+ <DD>Zero on sucess, non-zero otherwise.
+</DL>
+
+<!-- ========================================================================= -->
+<A NAME="SFC_SET_RAW_START_OFFSET"></A>
+<H2><BR><B>SFC_SET_RAW_START_OFFSET</B></H2>
+<P>
+Change the data start offset for files opened up as SF_FORMAT_RAW.
+</P>
+<P>
+Parameters:
+<PRE>
+ sndfile : A valid SNDFILE* pointer
+ cmd : SFC_SET_RAW_START_OFFSET
+ data : A pointer to an sf_count_t.
+ datasize : sizeof (sf_count_t)
+</PRE>
+
+<P>
+For a file opened as format SF_FORMAT_RAW, set the data offset to the value
+given by data.
+</P>
+<P>
+Example:
+</P>
+<PRE>
+ /* Reset the data offset to 5 bytes from the start of the file. */
+ sf_count_t offset = 5 ;
+ sf_command (sndfile, SFC_SET_RAW_START_OFFSET, &amp;offset, sizeof (offset)) ;
+</PRE>
+<DL>
+<DT>Return value:</DT>
+ <DD>Zero on success, non-zero otherwise.
+</DL>
+
+<!-- ========================================================================= -->
+<A NAME="SFC_SET_CLIPPING"></A>
+<H2><BR><B>SFC_SET_CLIPPING</B></H2>
+<P>
+Turn on/off automatic clipping when doing floating point to integer conversion.
+</P>
+<P>
+Parameters:
+<PRE>
+ sndfile : A valid SNDFILE* pointer
+ cmd : SFC_SET_CLIPPING
+ data : NULL
+ datasize : SF_TRUE or SF_FALSE.
+</PRE>
+
+<P>
+Turn on (datasize == SF_TRUE) or off (datasize == SF_FALSE) clipping.
+</P>
+<P>
+Example:
+</P>
+<PRE>
+ sf_command (sndfile, SFC_SET_CLIPPING, NULL, SF_TRUE) ;
+</PRE>
+<DL>
+<DT>Return value:</DT>
+ <DD>Clipping mode (SF_TRUE or SF_FALSE).
+</DL>
+
+
+<!-- ========================================================================= -->
+<A NAME="SFC_GET_CLIPPING"></A>
+<H2><BR><B>SFC_GET_CLIPPING</B></H2>
+<P>
+Turn on/off automatic clipping when doing floating point to integer conversion.
+</P>
+<P>
+Parameters:
+<PRE>
+ sndfile : A valid SNDFILE* pointer
+ cmd : SFC_GET_CLIPPING
+ data : NULL
+ datasize : 0
+</PRE>
+
+<P>
+Retrieve the current cliiping setting.
+</P>
+<P>
+Example:
+</P>
+<PRE>
+ sf_command (sndfile, SFC_GET_CLIPPING, NULL, 0) ;
+</PRE>
+<DL>
+<DT>Return value:</DT>
+ <DD>Clipping mode (SF_TRUE or SF_FALSE).
+</DL>
+
+<!-- ========================================================================= -->
+<A NAME="SFC_GET_EMBED_FILE_INFO"></A>
+<H2><BR><B>SFC_GET_EMBED_FILE_INFO</B></H2>
+<P>
+Get the file offset and file length of a file enbedded within another
+larger file.
+</P>
+<P>
+Parameters:
+<PRE>
+ sndfile : A valid SNDFILE* pointer
+ cmd : SFC_GET_CLIPPING
+ data : a pointer to an SF_EMBED_FILE_INFO struct
+ datasize : sizeof (SF_EMBED_FILE_INFO)
+</PRE>
+<P>
+The SF_EMBED_FILE_INFO struct is defined in &lt;sndfile.h&gt; as:
+</P>
+<PRE>
+ typedef struct
+ { sf_count_t offset ;
+ sf_count_t length ;
+ } SF_EMBED_FILE_INFO ;
+</PRE>
+<DL>
+<DT>Return value: </DT>
+ <DD>0 on success and non-zero otherwise.
+ <DD>The value of the offset field of the SF_EMBED_FILE_INFO struct will be
+ the offsets in bytes from the start of the outer file to the start of
+ the audio file.
+ <DD>The value of the offset field of the SF_EMBED_FILE_INFO struct will be
+ the length in bytes of the embedded file.
+</DL>
+
+
+
+<!-- ========================================================================= -->
+<A NAME="SFC_WAVEX_GET_AMBISONIC"></A>
+<H2><BR><B>SFC_WAVEX_GET_AMBISONIC</B></H2>
+<P>
+Test if the current file has the GUID of a WAVEX file for any of the Ambisonic
+formats.
+</P>
+<P>
+Parameters:
+<PRE>
+ sndfile : A valid SNDFILE* pointer
+ cmd : SFC_WAVEX_GET_AMBISONIC
+ data : NULL
+ datasize : 0
+</PRE>
+<P>
+ The Ambisonic WAVEX formats are defined here :
+ <A HREF="http://dream.cs.bath.ac.uk/researchdev/wave-ex/bformat.html">
+ http://dream.cs.bath.ac.uk/researchdev/wave-ex/bformat.html</A>.
+</P>
+<DL>
+<DT>Return value: </DT>
+ <DD>SF_AMBISONIC_NONE or SF_AMBISONIC_B_FORMAT or zero if the file format
+ does not support ambisonic formats.
+</DL>
+
+<!-- ========================================================================= -->
+<A NAME="SFC_WAVEX_SET_AMBISONIC"></A>
+<H2><BR><B>SFC_WAVEX_SET_AMBISONIC</B></H2>
+<P>
+Set the GUID of a new WAVEX file to indicate an Ambisonics format.
+</P>
+<P>
+Parameters:
+<PRE>
+ sndfile : A valid SNDFILE* pointer
+ cmd : SFC_WAVEX_SET_AMBISONIC
+ data : NULL
+ datasize : SF_AMBISONIC_NONE or SF_AMBISONIC_B_FORMAT
+</PRE>
+<P>
+Turn on (SF_AMBISONIC_B_FORMAT) or off (SF_AMBISONIC_NONE) encoding.
+This command is currently only supported for files with SF_FORMAT_WAVEX format.
+</P>
+<P>
+ The Ambisonic WAVEX formats are defined here :
+ <A HREF="http://dream.cs.bath.ac.uk/researchdev/wave-ex/bformat.html">
+ http://dream.cs.bath.ac.uk/researchdev/wave-ex/bformat.html</A>.
+</P>
+<DL>
+<DT>Return value: </DT>
+ <DD>Return the ambisonic value that has just been set or zero if the file
+ format does not support ambisonic encoding.
+</DL>
+
+<!-- ========================================================================= -->
+<A NAME="SFC_SET_VBR_ENCODING_QUALITY"></A>
+<H2><BR><B>SFC_SET_VBR_ENCODING_QUALITY</B></H2>
+<P>
+Set the the Variable Bit Rate encoding quality.
+The encoding quality value should be between 0.0 (lowest quality) and 1.0
+(highest quality).
+</P>
+<P>
+Parameters:
+<PRE>
+ sndfile : A valid SNDFILE* pointer
+ cmd : SFC_SET_VBR_ENCODING_QUALITY
+ data : A pointer to a double value
+ datasize : sizeof (double)
+</PRE>
+<P>
+The command must be sent before any audio data is written to the file.
+</P>
+<P>
+</P>
+<DL>
+<DT>Return value: </DT>
+ <DD>Zero on success, non-zero otherwise.
+</DL>
+
+<!-- ========================================================================= -->
+<A NAME="SFC_RAW_NEEDS_ENDSWAP"></A>
+<H2><BR><B>SFC_RAW_NEEDS_ENDSWAP</B></H2>
+<P>
+Determine if raw data read using
+ <a href="api.html#raw">
+ sf_read_raw</a>
+needs to be end swapped on the host CPU.
+</P>
+<P>
+For instance, will return SF_TRUE on when reading WAV containing
+SF_FORMAT_PCM_16 data on a big endian machine and SF_FALSE on a little endian
+machine.
+</P>
+<P>
+Parameters:
+<PRE>
+ sndfile : A valid SNDFILE* pointer
+ cmd : SFC_RAW_NEEDS_ENDSWAP
+ data : NULL
+ datasize : 0
+</PRE>
+
+<DL>
+<DT>Return value: </DT>
+ <DD>SF_TRUE or SF_FALSE
+</DL>
+
+
+<!-- ========================================================================= -->
+<A NAME="SFC_GET_BROADCAST_INFO"></A>
+<H2><BR><B>SFC_GET_BROADCAST_INFO</B></H2>
+<P>
+Retrieve the Broadcast Extension Chunk from WAV (and related) files.
+</P>
+<p>
+Parameters:
+</p>
+<PRE>
+ sndfile : A valid SNDFILE* pointer
+ cmd : SFC_GET_BROADCAST_INFO
+ data : a pointer to an SF_BROADCAST_INFO struct
+ datasize : sizeof (SF_BROADCAST_INFO)
+</PRE>
+<P>
+The SF_BROADCAST_INFO struct is defined in &lt;sndfile.h&gt; as:
+</P>
+<PRE>
+ typedef struct
+ { char description [256] ;
+ char originator [32] ;
+ char originator_reference [32] ;
+ char origination_date [10] ;
+ char origination_time [8] ;
+ unsigned int time_reference_low ;
+ unsigned int time_reference_high ;
+ short version ;
+ char umid [64] ;
+ char reserved [190] ;
+ unsigned int coding_history_size ;
+ char coding_history [256] ;
+ } SF_BROADCAST_INFO ;
+</PRE>
+
+<DL>
+<DT>Return value: </DT>
+ <DD>SF_TRUE if the file contained a Broadcast Extension chunk or SF_FALSE
+ otherwise.
+</DL>
+
+<!-- ========================================================================= -->
+<A NAME="SFC_SET_BROADCAST_INFO"></A>
+<H2><BR><B>SFC_SET_BROADCAST_INFO</B></H2>
+<P>
+Set the Broadcast Extension Chunk for WAV (and related) files.
+</P>
+<p>
+Parameters:
+</p>
+<PRE>
+ sndfile : A valid SNDFILE* pointer
+ cmd : SFC_SET_BROADCAST_INFO
+ data : a pointer to an SF_BROADCAST_INFO struct
+ datasize : sizeof (SF_BROADCAST_INFO)
+</PRE>
+
+<DL>
+<DT>Return value: </DT>
+ <DD>SF_TRUE if setting the Broadcast Extension chunk was successful and SF_FALSE
+ otherwise.
+</DL>
+<!-- ========================================================================= -->
+
+<A NAME="SFC_GET_LOOP_INFO"></A>
+<H2><BR><B>SFC_GET_LOOP_INFO</B></H2>
+<P>
+Retrieve loop information for file including time signature, length in
+beats and original MIDI base note
+</P>
+<p>
+Parameters:
+</p>
+<PRE>
+ sndfile : A valid SNDFILE* pointer
+ cmd : SFC_GET_LOOP_INFO
+ data : a pointer to an SF_LOOP_INFO struct
+ datasize : sizeof (SF_LOOP_INFO)
+</PRE>
+<P>
+The SF_BROADCAST_INFO struct is defined in &lt;sndfile.h&gt; as:
+</P>
+<PRE>
+ 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 ;
+</PRE>
+<P>
+Example:
+</P>
+<PRE>
+ SF_LOOP_INFO loop;
+ sf_command (sndfile, SFC_GET_LOOP_INFO, &amp;loop, sizeof (loop)) ;
+</PRE>
+<DL>
+<DT>Return value:</DT>
+ <DD>SF_TRUE if the file header contains loop information for the file.
+ SF_FALSE otherwise.
+</DL>
+
+<!-- ========================================================================= -->
+
+
+<A NAME="SFC_GET_INSTRUMENT"></A>
+<H2><BR><B>SFC_GET_INSTRUMENT</B></H2>
+<P>
+Retrieve instrument information from file including MIDI base note,
+keyboard mapping and looping informations(start/stop and mode).
+</P>
+<p>
+Parameters:
+</p>
+<PRE>
+ sndfile : A valid SNDFILE* pointer
+ cmd : SFC_GET_INSTRUMENT
+ data : a pointer to an SF_INSTRUMENT struct
+ datasize : sizeof (SF_INSTRUMENT)
+</PRE>
+
+<P>
+The SF_INSTRUMENT struct is defined in &lt;sndfile.h&gt; as:
+</P>
+<PRE>
+ 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 ;
+</PRE>
+
+<P>
+Example:
+</P>
+<PRE>
+ SF_INSTRUMENT inst ;
+ sf_command (sndfile, SFC_GET_INSTRUMENT, &amp;inst, sizeof (inst)) ;
+</PRE>
+<DL>
+<DT>Return value:</DT>
+ <dd>SF_TRUE if the file header contains instrument information for the
+ file. SF_FALSE otherwise.
+</DL>
+
+<!-- ========================================================================= -->
+
+
+<A NAME="SFC_SET_INSTRUMENT"></A>
+<H2><BR><B>SFC_SET_INSTRUMENT</B></H2>
+<P>
+Set the instrument information for the file.
+</P>
+<p>
+Parameters:
+</p>
+<PRE>
+ sndfile : A valid SNDFILE* pointer
+ cmd : SFC_GET_INSTRUMENT
+ data : a pointer to an SF_INSTRUMENT struct
+ datasize : sizeof (SF_INSTRUMENT)
+</PRE>
+<P>
+Example:
+</P>
+<PRE>
+ SF_INSTRUMENT inst ;
+ sf_command (sndfile, SFC_SET_INSTRUMENT, &amp;inst, sizeof (inst)) ;
+</PRE>
+<DL>
+<DT>Return value:</DT>
+ <dd>SF_TRUE if the file header contains instrument information for the
+ file. SF_FALSE otherwise.
+</DL>
+
+<!-- ========================================================================= -->
+
+
+<A NAME="SFC_SET_VBR_ENCODING_QUALITY"></A>
+<H2><BR><B>SFC_SET_VBR_ENCODING_QUALITY</B></H2>
+<P>
+Set the Variable Bite Rate encoding quality.
+Currenly only implemented fro Ogg/Vorbis files.
+</P>
+<p>
+Parameters:
+</p>
+<PRE>
+ sndfile : A valid SNDFILE* pointer
+ cmd : SFC_SET_VBR_ENCODING_QUALITY
+ data : a pointer to double specifing VBR quality
+ datasize : sizeof (double)
+</PRE>
+<P>
+Example:
+</P>
+<PRE>
+ double quality = 0.5 ;
+ sf_command (sndfile, SFC_SET_VBR_ENCODING_QUALITY, &amp;quality, sizeof (double)) ;
+</PRE>
+<DL>
+<DT>Return value:</DT>
+ <dd>SF_TRUE if VBR encoding quality was set.
+ SF_FALSE otherwise.
+</DL>
+
+<!-- ========================================================================= -->
+
+
+<HR>
+<P>
+ The libsndfile home page is here :
+ <A HREF="http://www.mega-nerd.com/libsndfile/">
+ http://www.mega-nerd.com/libsndfile/</A>.
+<BR>
+Version : 1.0.25
+</P>
+
+</BODY>
+</HTML>
diff --git a/doc/dither.html b/doc/dither.html
new file mode 100644
index 0000000..01a416f
--- /dev/null
+++ b/doc/dither.html
@@ -0,0 +1,1017 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+
+<HEAD>
+ <TITLE>
+ libsndfile : the sf_command function.
+ </TITLE>
+ <META NAME="Author" CONTENT="Erik de Castro Lopo (erikd AT mega-nerd DOT com)">
+ <!-- Another version at the bottom of the page. -->
+ <META NAME="Description" CONTENT="The libsndfile API.">
+ <META NAME="Keywords" CONTENT="WAV AIFF AU libsndfile sound audio dsp Linux">
+ <LINK REL="stylesheet" HREF="libsndfile.css" TYPE="text/css" MEDIA="all">
+ <LINK REL="stylesheet" HREF="print.css" TYPE="text/css" MEDIA="print">
+</HEAD>
+
+<BODY>
+
+<H1><B>sf_command</B></H1>
+<PRE>
+
+ int sf_command (SNDFILE *sndfile, int cmd, void *data, int datasize) ;
+</PRE>
+<P>
+ This function allows the caller to retrieve information from or change aspects of the
+ library behaviour.
+ Examples include retrieving a string containing the library version or changing the
+ scaling applied to floating point sample data during read and write.
+ Most of these operations are performed on a per-file basis.
+</P>
+<P>
+ The cmd parameter is a integer identifier which is defined in &lt;sndfile.h&gt;.
+ All of the valid command identifiers have names begining with "SFC_".
+ Data is passed to and returned from the library by use of a void pointer.
+ The library will not read or write more than datasize bytes from the void pointer.
+ For some calls no data is required in which case data should be NULL and datasize
+ may be used for some other purpose.
+</P>
+<P>
+ The available commands are as follows:
+</P>
+
+<CENTER>
+<TABLE BORDER="0" WIDTH="90%" CELLPADDING="4">
+<TR>
+ <TD><A HREF="#SFC_GET_LIB_VERSION">SFC_GET_LIB_VERSION</A></TD>
+ <TD>Retrieve the version of the library.</TD>
+</TR>
+<TR>
+ <TD><A HREF="#SFC_GET_LOG_INFO">SFC_GET_LOG_INFO</A></TD>
+ <TD>Retrieve the internal per-file operation log.</TD>
+</TR>
+<TR>
+ <TD><A HREF="#SFC_CALC_SIGNAL_MAX">SFC_CALC_SIGNAL_MAX</A></TD>
+ <TD>Retrieve the measured maximum signal value.</TD>
+</TR>
+<TR>
+ <TD><A HREF="#SFC_CALC_NORM_SIGNAL_MAX">SFC_CALC_NORM_SIGNAL_MAX</A></TD>
+ <TD>Retrieve the measured normalised maximum signal value.</TD>
+</TR>
+<TR>
+ <TD><A HREF="#SFC_CALC_MAX_ALL_CHANNELS">SFC_CALC_MAX_ALL_CHANNELS</A></TD>
+ <TD>Calculate peaks for all channels.</TD>
+</TR>
+<TR>
+ <TD><A HREF="#SFC_CALC_NORM_MAX_ALL_CHANNELS">SFC_CALC_NORM_MAX_ALL_CHANNELS</A></TD>
+ <TD>Calculate normalised peaks for all channels.</TD>
+</TR>
+
+<TR>
+ <TD><A HREF="#SFC_SET_NORM_FLOAT">SFC_SET_NORM_FLOAT</A></TD>
+ <TD>Modify the normalisation behaviour of the floating point reading and writing functions.</TD>
+</TR>
+<TR>
+ <TD><A HREF="#SFC_SET_NORM_DOUBLE">SFC_SET_NORM_DOUBLE</A></TD>
+ <TD>Modify the normalisation behaviour of the double precision floating point reading and writing functions.</TD>
+</TR>
+<TR>
+ <TD><A HREF="#SFC_GET_NORM_FLOAT">SFC_GET_NORM_FLOAT</A></TD>
+ <TD>Retrieve the current normalisation behaviour of the floating point reading and writing functions.</TD>
+</TR>
+<TR>
+ <TD><A HREF="#SFC_GET_NORM_DOUBLE">SFC_GET_NORM_DOUBLE</A></TD>
+ <TD>Retrieve the current normalisation behaviour of the double precision floating point reading and writing functions.</TD>
+</TR>
+<TR>
+ <TD><A HREF="#SFC_GET_SIMPLE_FORMAT_COUNT">SFC_GET_SIMPLE_FORMAT_COUNT</A></TD>
+ <TD>Retrieve the number of simple formats supported by libsndfile.</TD>
+</TR>
+<TR>
+ <TD><A HREF="#SFC_GET_SIMPLE_FORMAT">SFC_GET_SIMPLE_FORMAT</A></TD>
+ <TD>Retrieve information about a simple format.</TD>
+</TR>
+
+<TR>
+ <TD><A HREF="#SFC_GET_FORMAT_INFO">SFC_GET_FORMAT_INFO</A></TD>
+ <TD>Retrieve information about a major or subtype format.</TD>
+</TR>
+
+<TR>
+ <TD><A HREF="#SFC_GET_FORMAT_MAJOR_COUNT">SFC_GET_FORMAT_MAJOR_COUNT</A></TD>
+ <TD>Retrieve the number of major formats.</TD>
+</TR>
+<TR>
+ <TD><A HREF="#SFC_GET_FORMAT_MAJOR">SFC_GET_FORMAT_MAJOR</A></TD>
+ <TD>Retrieve information about a major format type.</TD>
+</TR>
+<TR>
+ <TD><A HREF="#SFC_GET_FORMAT_SUBTYPE_COUNT">SFC_GET_FORMAT_SUBTYPE_COUNT</A></TD>
+ <TD>Retrieve the number of subformats.</TD>
+</TR>
+<TR>
+ <TD><A HREF="#SFC_GET_FORMAT_SUBTYPE">SFC_GET_FORMAT_SUBTYPE</A></TD>
+ <TD>Retrieve information about a subformat.</TD>
+</TR>
+
+<TR>
+ <TD><A HREF="#SFC_SET_ADD_PEAK_CHUNK">SFC_SET_ADD_PEAK_CHUNK</A></TD>
+ <TD>Switch the code for adding the PEAK chunk to WAV and AIFF files on or off.</TD>
+</TR>
+
+<TR>
+ <TD><A HREF="#SFC_UPDATE_HEADER_NOW">SFC_UPDATE_HEADER_NOW</A></TD>
+ <TD>Used when a file is open for write, this command will update the file
+ header to reflect the data written so far.</TD>
+</TR>
+<TR>
+ <TD><A HREF="#SFC_SET_UPDATE_HEADER_AUTO">SFC_SET_UPDATE_HEADER_AUTO</A></TD>
+ <TD>Used when a file is open for write, this command will cause the file header
+ to be updated after each write to the file.</TD>
+</TR>
+
+<TR>
+ <TD><A HREF="#SFC_FILE_TRUNCATE">SFC_FILE_TRUNCATE</A></TD>
+ <TD>Truncate a file open for write or for read/write.</TD>
+</TR>
+
+<TR>
+ <TD><A HREF="#SFC_SET_RAW_START_OFFSET">SFC_SET_RAW_START_OFFSET</A></TD>
+ <TD>Change the data start offset for files opened up as SF_FORMAT_RAW.</TD>
+</TR>
+
+
+
+<!--
+<TR>
+ <TD><A HREF="#add-dither">add dither</A></TD>
+ <TD>Add dither to output on write.</TD>
+</TR>
+-->
+</TABLE>
+</CENTER>
+
+<BR><BR>
+
+<HR>
+
+<!-- ========================================================================= -->
+<A NAME="SFC_GET_LIB_VERSION"></A>
+<H2><BR><B>SFC_GET_LIB_VERSION</B></H2>
+<P>
+Retrieve the version of the library as a string.
+</P>
+<P>
+Parameters:
+<PRE>
+ sndfile : Not used
+ cmd : SFC_GET_LIB_VERSION
+ data : A pointer to a char buffer
+ datasize : The size of the the buffer
+</PRE>
+<P>
+Example:
+</P>
+<PRE>
+ char buffer [128] ;
+ sf_command (NULL, SFC_GET_LIB_VERSION, buffer, sizeof (buffer)) ;
+</PRE>
+
+<DL>
+<DT>Return value:</DT>
+ <DD><DD>This call will return the length of the retrieved version string.
+</DL>
+<DL>
+<DT>Notes:</DT>
+<DD>
+The string returned in the buffer passed to this function will not overflow
+the buffer and will always be null terminated .
+</DL>
+
+<!-- ========================================================================= -->
+<A NAME="SFC_GET_LOG_INFO"></A>
+<H2><BR><B>SFC_GET_LOG_INFO</B></H2>
+<P>
+Retrieve the log buffer generated when opening a file as a string. This log
+buffer can often contain a good reason for why libsndfile failed to open a
+particular file.
+</P>
+<P>
+Parameters:
+<PRE>
+ sndfile : A valid SNDFILE* pointer
+ cmd : SFC_GET_LOG_INFO
+ data : A pointer to a char buffer
+ datasize : The size of the the buffer
+</PRE>
+<P>
+Example:
+</P>
+<PRE>
+ char buffer [2048] ;
+ sf_command (sndfile, SFC_GET_LOG_INFO, buffer, sizeof (buffer)) ;
+</PRE>
+
+<DL>
+<DT>Return value:</DT>
+ <DD><DD>This call will return the length of the retrieved version string.
+</DL>
+<DL>
+<DT>Notes:</DT>
+<DD>
+The string returned in the buffer passed to this function will not overflow
+the buffer and will always be null terminated .
+</DL>
+
+<!-- ========================================================================= -->
+<A NAME="SFC_CALC_SIGNAL_MAX"></A>
+<H2><BR><B>SFC_CALC_SIGNAL_MAX</B></H2>
+<P>
+Retrieve the measured maximum signal value. This involves reading through
+the whole file which can be slow on large files.
+</P>
+<P>
+Parameters:
+<PRE>
+ sndfile : A valid SNDFILE* pointer
+ cmd : SFC_CALC_SIGNAL_MAX
+ data : A pointer to a double
+ datasize : sizeof (double)
+</PRE>
+<P>
+Example:
+</P>
+<PRE>
+ double max_val ;
+ sf_command (sndfile, SFC_CALC_SIGNAL_MAX, &amp;max_val, sizeof (max_val)) ;
+</PRE>
+
+<DL>
+<DT>Return value:</DT>
+ <DD><DD>Zero on success, non-zero otherwise.
+</DL>
+
+<!-- ========================================================================= -->
+<A NAME="SFC_CALC_NORM_SIGNAL_MAX"></A>
+<H2><BR><B>SFC_CALC_NORM_SIGNAL_MAX</B></H2>
+<P>
+Retrieve the measured normailised maximum signal value. This involves reading
+through the whole file which can be slow on large files.
+</P>
+<P>
+Parameters:
+<PRE>
+ sndfile : A valid SNDFILE* pointer
+ cmd : SFC_CALC_NORM_SIGNAL_MAX
+ data : A pointer to a double
+ datasize : sizeof (double)
+</PRE>
+<P>
+Example:
+</P>
+<PRE>
+ double max_val ;
+ sf_command (sndfile, SFC_CALC_NORM_SIGNAL_MAX, &amp;max_val, sizeof (max_val)) ;
+</PRE>
+
+<DL>
+<DT>Return value:</DT>
+ <DD><DD>Zero on success, non-zero otherwise.
+</DL>
+
+<!-- ========================================================================= -->
+<A NAME="SFC_CALC_MAX_ALL_CHANNELS"></A>
+<H2><BR><B>SFC_CALC_MAX_ALL_CHANNELS</B></H2>
+<P>
+Calculate peaks for all channels. This involves reading through
+the whole file which can be slow on large files.
+</P>
+<P>
+Parameters:
+<PRE>
+ sndfile : A valid SNDFILE* pointer
+ cmd : SFC_CALC_MAX_ALL_CHANNELS
+ data : A pointer to a double
+ datasize : sizeof (double) * number_of_channels
+</PRE>
+<P>
+Example:
+</P>
+<PRE>
+ double peaks [number_of_channels] ;
+ sf_command (sndfile, SFC_CALC_MAX_ALL_CHANNELS, peaks, sizeof (peaks)) ;
+</PRE>
+<DL>
+<DT>Return value:</DT>
+ <DD>Zero if peaks have been calculated successfully and non-zero otherwise.
+</DL>
+
+
+<!-- ========================================================================= -->
+<A NAME="SFC_CALC_NORM_MAX_ALL_CHANNELS"></A>
+<H2><BR><B>SFC_CALC_NORM_MAX_ALL_CHANNELS</B></H2>
+<P>
+Calculate normalised peaks for all channels. This involves reading through
+the whole file which can be slow on large files.
+</P>
+<P>
+Parameters:
+<PRE>
+ sndfile : A valid SNDFILE* pointer
+ cmd : SFC_CALC_NORM_MAX_ALL_CHANNELS
+ data : A pointer to a double
+ datasize : sizeof (double) * number_of_channels
+</PRE>
+<P>
+Example:
+</P>
+<PRE>
+ double peaks [number_of_channels] ;
+ sf_command (sndfile, SFC_CALC_NORM_MAX_ALL_CHANNELS, peaks, sizeof (peaks)) ;
+</PRE>
+<DL>
+<DT>Return value:</DT>
+ <DD>Zero if peaks have been calculated successfully and non-zero otherwise.
+</DL>
+
+
+
+
+
+<!-- ========================================================================= -->
+<!--
+<A NAME="read-text"></A>
+<H2><BR><B>Read text</B></H2>
+<P>
+Many sound file formats contain allow the inclusion of a text string describing the nature
+of the file. If a file contains such a string, this functions will return it to the caller.
+</P>
+<P>
+It should be noted that the way the string is added to the file is file format dependant
+but that any string added with <A HREF="#write-text">write text</A> will be returned by
+<A HREF="#read-text">read text</A>.
+</P>
+<P>
+<P>
+Parameters:
+</P>
+<PRE>
+ sndfile : A valid SNDFILE* pointer
+ cmd : The text string "read text".
+ data : A pointer to a char buffer.
+ datasize : The size of the the buffer.
+</PRE>
+<P>
+Example:
+</P>
+<PRE>
+ char buffer [128] ;
+ sf_command (sndfile, "read text", buffer, sizeof (buffer)) ;
+</PRE>
+<DL>
+<DT>Return value:</DT>
+<DD>If a text string is found, this call will return the length of the retrieved text
+ string.
+ <DD>If no text string is found, zero will be returned and the first element in the
+ buffer will be set to the null character.
+<DT>Notes:</DT>
+<DD>The string returned in the buffer passed to this function will not overflow
+ the buffer and will be correctly null terminated .
+</DL>
+
+<A NAME="write-text"></A>
+<H2><BR><B>Write text</B></H2>
+<P>
+Add a text string to a file. The text string added can be retrieved when the file is
+read using <A HREF="#read-text">read text</A>.
+</P>
+<P>
+Parameters:
+</P>
+<PRE>
+ sndfile : A valid SNDFILE* pointer
+ cmd : The text string "write text".
+ data : A pointer to the string to be added.
+ datasize : Not used.
+</PRE>
+<P>
+Example:
+</P>
+<PRE>
+ char text = "The sound of one hand clapping." ;
+ sf_command (sndfile, "write text", text, strlen (text)) ;
+</PRE>
+<DL>
+<DT>Return value: </DT>
+ <DD>If the current file format allows the addition of text strings, the string will
+ be added and the length of the string will be returned.
+ <DD>If the file format does not allow the addition of text strings zero will be returned.
+ <DD>If this function is called after the file is openned but before
+</DL>
+-->
+
+
+<!-- ========================================================================= -->
+<A NAME="SFC_SET_NORM_FLOAT"></A>
+<H2><BR><B>SFC_SET_NORM_FLOAT</B></H2>
+<P>
+This command only affects data read from or written to using the floating point functions:
+</P>
+<PRE>
+ size_t <A HREF="api.html#read">sf_read_float</A> (SNDFILE *sndfile, float *ptr, size_t items) ;
+ size_t <A HREF="api.html#readf">sf_readf_float</A> (SNDFILE *sndfile, float *ptr, size_t frames) ;
+
+ size_t <A HREF="api.html#write">sf_write_float</A> (SNDFILE *sndfile, float *ptr, size_t items) ;
+ size_t <A HREF="api.html#writef">sf_writef_float</A> (SNDFILE *sndfile, float *ptr, size_t frames) ;
+</PRE>
+<P>
+Parameters:
+</P>
+<PRE>
+ sndfile : A valid SNDFILE* pointer
+ cmd : SFC_SET_NORM_FLOAT
+ data : NULL
+ datasize : SF_TRUE or SF_FALSE
+</PRE>
+<P>
+For read operations setting normalisation to SF_TRUE means that the data from all
+subsequent reads will be be normalised to the range [-1.0, 1.0].
+</P>
+<P>
+For write operations, setting normalisation to SF_TRUE means than all data supplied
+to the float write functions should be in the range [-1.0, 1.0] and will be scaled
+for the file format as necessary.
+</P>
+<P>
+For both cases, setting normalisation to SF_FALSE means that no scaling will take place.
+</P>
+<P>
+Example:
+</P>
+<PRE>
+ sf_command (sndfile, SFC_SET_NORM_FLOAT, NULL, SF_TRUE) ;
+
+ sf_command (sndfile, SFC_SET_NORM_FLOAT, NULL, SF_FALSE) ;
+</PRE>
+<DL>
+<DT>Return value: </DT>
+ <DD>Returns 1 on success or 0 for failure.
+</DL>
+
+<!-- ========================================================================= -->
+<A NAME="SFC_SET_NORM_DOUBLE"></A>
+<H2><BR><B>SFC_SET_NORM_DOUBLE</B></H2>
+<P>
+This command only affects data read from or written to using the double precision
+floating point functions:
+</P>
+<PRE>
+ size_t <A HREF="api.html#read">sf_read_double</A> (SNDFILE *sndfile, double *ptr, size_t items) ;
+ size_t <A HREF="api.html#readf">sf_readf_double</A> (SNDFILE *sndfile, double *ptr, size_t frames) ;
+
+ size_t <A HREF="api.html#write">sf_write_double</A> (SNDFILE *sndfile, double *ptr, size_t items) ;
+ size_t <A HREF="api.html#writef">sf_writef_double</A> (SNDFILE *sndfile, double *ptr, size_t frames) ;
+</PRE>
+<P>
+Parameters:
+</P>
+<PRE>
+ sndfile : A valid SNDFILE* pointer
+ cmd : SFC_SET_NORM_DOUBLE
+ data : NULL
+ datasize : SF_TRUE or SF_FALSE
+</PRE>
+<P>
+For read operations setting normalisation to SF_TRUE means that the data
+from all subsequent reads will be be normalised to the range [-1.0, 1.0].
+</P>
+<P>
+For write operations, setting normalisation to SF_TRUE means than all data supplied
+to the double write functions should be in the range [-1.0, 1.0] and will be scaled
+for the file format as necessary.
+</P>
+<P>
+For both cases, setting normalisation to SF_FALSE means that no scaling will take place.
+</P>
+<P>
+Example:
+</P>
+<PRE>
+ sf_command (sndfile, SFC_SET_NORM_DOUBLE, NULL, SF_TRUE) ;
+
+ sf_command (sndfile, SFC_SET_NORM_DOUBLE, NULL, SF_FALSE) ;
+</PRE>
+<DL>
+<DT>Return value: </DT>
+ <DD>Returns 1 on success or 0 for failure.
+</DL>
+
+<!-- ========================================================================= -->
+<A NAME="SFC_GET_NORM_FLOAT"></A>
+<H2><BR><B>SFC_GET_NORM_FLOAT</B></H2>
+<P>
+Retrieve the current float normalisation mode.
+</P>
+<P>
+Parameters:
+</P>
+<PRE>
+ sndfile : A valid SNDFILE* pointer
+ cmd : SFC_GET_NORM_FLOAT
+ data : NULL
+ datasize : anything
+</PRE>
+<P>
+Example:
+</P>
+<PRE>
+ normalisation = sf_command (sndfile, SFC_GET_NORM_FLOAT, NULL, 0) ;
+</PRE>
+<DL>
+<DT>Return value: </DT>
+ <DD>Returns TRUE if normaisation is on and FALSE otherwise.
+</DL>
+
+<!-- ========================================================================= -->
+<A NAME="SFC_GET_NORM_DOUBLE"></A>
+<H2><BR><B>SFC_GET_NORM_DOUBLE</B></H2>
+<P>
+Retrieve the current float normalisation mode.
+</P>
+<P>
+Parameters:
+</P>
+<PRE>
+ sndfile : A valid SNDFILE* pointer
+ cmd : SFC_GET_NORM_DOUBLE
+ data : NULL
+ datasize : anything
+</PRE>
+<P>
+Example:
+</P>
+<PRE>
+ normalisation = sf_command (sndfile, SFC_GET_NORM_DOUBLE, NULL, 0) ;
+</PRE>
+<DL>
+<DT>Return value: </DT>
+ <DD>Returns TRUE if normalisation is on and FALSE otherwise.
+</DL>
+
+<!-- ========================================================================= -->
+<A NAME="SFC_GET_SIMPLE_FORMAT_COUNT"></A>
+<H2><BR><B>SFC_GET_SIMPLE_FORMAT_COUNT</B></H2>
+<P>
+Retrieve the number of simple formats supported by libsndfile.
+</P>
+<P>
+Parameters:
+</P>
+<PRE>
+ sndfile : Not used.
+ cmd : SFC_GET_SIMPLE_FORMAT_COUNT
+ data : a pointer to an int
+ datasize : sizeof (int)
+</PRE>
+<P>
+Example:
+</P>
+<PRE>
+ int count ;
+ sf_command (sndfile, SFC_GET_SIMPLE_FORMAT_COUNT, &amp;count, sizeof (int)) ;
+</PRE>
+<DL>
+<DT>Return value: </DT>
+ <DD>0
+</DL>
+
+<!-- ========================================================================= -->
+<A NAME="SFC_GET_SIMPLE_FORMAT"></A>
+<H2><BR><B>SFC_GET_SIMPLE_FORMAT</B></H2>
+<P>
+Retrieve information about a simple format.
+</P>
+<P>
+Parameters:
+</P>
+<PRE>
+ sndfile : Not used.
+ cmd : SFC_GET_SIMPLE_FORMAT
+ data : a pointer to an SF_FORMAT_INFO struct
+ datasize : sizeof (SF_FORMAT_INFO)
+</PRE>
+<P>
+The SF_FORMAT_INFO struct is defined in &lt;sndfile.h&gt; as:
+</P>
+<PRE>
+ typedef struct
+ { int format ;
+ const char *name ;
+ const char *extension ;
+ } SF_FORMAT_INFO ;
+</PRE>
+<P>
+When sf_command() is called with SF_GET_SIMPLE_FORMAT, the value of the format
+field should be the format number (ie 0 <= format <= count value obtained using
+SF_GET_SIMPLE_FORMAT_COUNT).
+</P>
+<P>
+Example:
+</P>
+<PRE>
+ SF_FORMAT_INFO format_info ;
+ int k, count ;
+
+ sf_command (sndfile, SFC_GET_SIMPLE_FORMAT_COUNT, &amp;count, sizeof (int)) ;
+
+ for (k = 0 ; k < count ; k++)
+ { format_info.format = k ;
+ sf_command (sndfile, SFC_GET_SIMPLE_FORMAT, &amp;format_info, sizeof (format_info)) ;
+ printf ("%08x %s %s\n", format_info.format, format_info.name, format_info.extension) ;
+ } ;
+</PRE>
+<DL>
+<DT>Return value: </DT>
+ <DD>0 on success and non-zero otherwise.
+ <DD>The value of the format field of the SF_FORMAT_INFO struct will be an value which
+ can be placed in the format field of an SF_INFO struct when a file is to be opened
+ for write.
+ <DD>The name field will contain a char* pointer to the name of the string ie "WAV (Microsoft 16 bit PCM)".
+ <DD>The extention field will contain the most commonly used file extension for that file type.
+</DL>
+
+<!-- ========================================================================= -->
+<A NAME="SFC_GET_FORMAT_INFO"></A>
+<H2><BR><B>SFC_GET_FORMAT_INFO</B></H2>
+<P>
+Retrieve information about a major or subtype format.
+</P>
+<P>
+Parameters:
+</P>
+<PRE>
+ sndfile : Not used.
+ cmd : SFC_GET_FORMAT_INFO
+ data : a pointer to an SF_FORMAT_INFO struct
+ datasize : sizeof (SF_FORMAT_INFO)
+</PRE>
+<P>
+The SF_FORMAT_INFO struct is defined in &lt;sndfile.h&gt; as:
+</P>
+<PRE>
+ typedef struct
+ { int format ;
+ const char *name ;
+ const char *extension ;
+ } SF_FORMAT_INFO ;
+</PRE>
+<P>
+When sf_command() is called with SF_GET_FORMAT_INFO, the format field is
+examined and if (format & SF_FORMAT_TYPEMASK) is a valid format then the struct
+is filled in with information about the given major type.
+If (format & SF_FORMAT_TYPEMASK) is FALSE and (format & SF_FORMAT_SUBMASK) is a
+valid subtype format then the struct is filled in with information about the given
+subtype.
+</P>
+<P>
+Example:
+</P>
+<PRE>
+ SF_FORMAT_INFO format_info ;
+
+ format_info.format = SF_FORMAT_WAV ;
+ sf_command (sndfile, SFC_GET_FORMAT_INFO, &amp;format_info, sizeof (format_info)) ;
+ printf ("%08x %s %s\n", format_info.format, format_info.name, format_info.extension) ;
+
+ format_info.format = SF_FORMAT_ULAW ;
+ sf_command (sndfile, SFC_GET_FORMAT_INFO, &amp;format_info, sizeof (format_info)) ;
+ printf ("%08x %s\n", format_info.format, format_info.name) ;
+</PRE>
+<DL>
+<DT>Return value: </DT>
+ <DD>0 on success and non-zero otherwise.
+</DL>
+<!-- ========================================================================= -->
+<A NAME="SFC_GET_FORMAT_MAJOR_COUNT"></A>
+<H2><BR><B>SFC_GET_FORMAT_MAJOR_COUNT</B></H2>
+<P>
+Retrieve the number of major formats.
+</P>
+<P>
+Parameters:
+</P>
+<PRE>
+ sndfile : Not used.
+ cmd : SFC_GET_FORMAT_MAJOR_COUNT
+ data : a pointer to an int
+ datasize : sizeof (int)
+</PRE>
+<P>
+Example:
+</P>
+<PRE>
+ int count ;
+ sf_command (sndfile, SFC_GET_FORMAT_MAJOR_COUNT, &amp;count, sizeof (int)) ;
+</PRE>
+<DL>
+<DT>Return value: </DT>
+ <DD>0
+</DL>
+
+<!-- ========================================================================= -->
+<A NAME="SFC_GET_FORMAT_MAJOR"></A>
+<H2><BR><B>SFC_GET_FORMAT_MAJOR</B></H2>
+<P>
+Retrieve information about a major format type.
+</P>
+<P>
+Parameters:
+</P>
+<PRE>
+ sndfile : Not used.
+ cmd : SFC_GET_FORMAT_MAJOR
+ data : a pointer to an SF_FORMAT_INFO struct
+ datasize : sizeof (SF_FORMAT_INFO)
+</PRE>
+<P>
+Example:
+</P>
+<PRE>
+ SF_FORMAT_INFO format_info ;
+ int k, count ;
+
+ sf_command (sndfile, SFC_GET_FORMAT_MAJOR_COUNT, &amp;count, sizeof (int)) ;
+
+ for (k = 0 ; k < count ; k++)
+ { format_info.format = k ;
+ sf_command (sndfile, SFC_GET_FORMAT_MAJOR, &amp;format_info, sizeof (format_info)) ;
+ printf ("%08x %s %s\n", format_info.format, format_info.name, format_info.extension) ;
+ } ;
+</PRE>
+<P>
+For a more comprehensive example, see the program list_formats.c in the examples/
+directory of the libsndfile source code distribution.
+</P>
+<DL>
+<DT>Return value: </DT>
+ <DD>0 on success and non-zero otherwise.
+ <DD>The value of the format field will one of the major format identifiers suc as SF_FORMAT_WAV
+ SF_FORMAT_AIFF.
+ <DD>The name field will contain a char* pointer to the name of the string ie "WAV (Microsoft)".
+ <DD>The extention field will contain the most commonly used file extension for that file type.
+</DL>
+
+<!-- ========================================================================= -->
+<A NAME="SFC_GET_FORMAT_SUBTYPE_COUNT"></A>
+<H2><BR><B>SFC_GET_FORMAT_SUBTYPE_COUNT</B></H2>
+<P>
+Retrieve the number of subformats.
+</P>
+<P>
+Parameters:
+</P>
+<PRE>
+ sndfile : Not used.
+ cmd : SFC_GET_FORMAT_SUBTYPE_COUNT
+ data : a pointer to an int
+ datasize : sizeof (int)
+</PRE>
+<P>
+Example:
+</P>
+<PRE>
+ int count ;
+ sf_command (sndfile, SFC_GET_FORMAT_SUBTYPE_COUNT, &amp;count, sizeof (int)) ;
+</PRE>
+<DL>
+<DT>Return value: </DT>
+ <DD>0
+</DL>
+
+<!-- ========================================================================= -->
+<A NAME="SFC_GET_FORMAT_SUBTYPE"></A>
+<H2><BR><B>SFC_GET_FORMAT_SUBTYPE</B></H2>
+<P>
+Retrieve information about a subformat.
+</P>
+<P>
+Parameters:
+</P>
+<PRE>
+ sndfile : Not used.
+ cmd : SFC_GET_FORMAT_SUBTYPE
+ data : a pointer to an SF_FORMAT_INFO struct
+ datasize : sizeof (SF_FORMAT_INFO)
+</PRE>
+<P>
+Example:
+</P>
+<PRE>
+ SF_FORMAT_INFO format_info ;
+ int k, count ;
+
+ sf_command (sndfile, SFC_GET_FORMAT_SUBTYPE_COUNT, &amp;count, sizeof (int)) ;
+
+ /* Retrieve all the subtypes supported by the WAV format. */
+ for (k = 0 ; k < count ; k++)
+ { format_info.format = k ;
+ sf_command (sndfile, SFC_GET_FORMAT_SUBTYPE, &amp;format_info, sizeof (format_info)) ;
+ if (! sf_format_check (format.info | SF_FORMAT_WAV))
+ continue ;
+ printf ("%08x %s\n", format_info.format, format_info.name) ;
+ } ;
+</PRE>
+<P>
+For a more comprehensive example, see the program list_formats.c in the examples/
+directory of the libsndfile source code distribution.
+</P>
+<DL>
+<DT>Return value: </DT>
+ <DD>0 on success and non-zero otherwise.
+ <DD>The value of the format field will one of the major format identifiers such as SF_FORMAT_WAV
+ SF_FORMAT_AIFF.
+ <DD>The name field will contain a char* pointer to the name of the string; for instance
+ "WAV (Microsoft)" or "AIFF (Apple/SGI)".
+ <DD>The extention field will be a NULL pointer.
+</DL>
+
+<!-- ========================================================================= -->
+<A NAME="SFC_SET_ADD_PEAK_CHUNK"></A>
+<H2><BR><B>SFC_SET_ADD_PEAK_CHUNK</B></H2>
+<P>
+By default, WAV and AIFF files which contain floating point data (subtype SF_FORMAT_FLOAT
+or SF_FORMAT_DOUBLE) have a PEAK chunk.
+By using this command, the addition of a PEAK chunk can be turned on or off.
+</P>
+<P>
+Note : This call must be made before any data is written to the file.
+</P>
+<P>
+Parameters:
+<PRE>
+ sndfile : A valid SNDFILE* pointer
+ cmd : SFC_SET_ADD_PEAK_CHUNK
+ data : Not used (should be NULL)
+ datasize : TRUE or FALSE.
+</PRE>
+<P>
+Example:
+</P>
+<PRE>
+ /* Turn on the PEAK chunk. */
+ sf_command (sndfile, SFC_SET_ADD_PEAK_CHUNK, NULL, SF_TRUE) ;
+
+ /* Turn off the PEAK chunk. */
+ sf_command (sndfile, SFC_SET_ADD_PEAK_CHUNK, NULL, SF_FALSE) ;
+</PRE>
+<DL>
+<DT>Return value:</DT>
+<DD>Returns SF_TRUE if the peak chunk will be written after this call.
+<DD>Returns SF_FALSE if the peak chunk will not be written after this call.
+</DL>
+
+<!-- ========================================================================= -->
+<A NAME="SFC_UPDATE_HEADER_NOW"></A>
+<H2><BR><B>SFC_UPDATE_HEADER_NOW</B></H2>
+<P>
+The header of an audio file is normally written by libsndfile when the file is
+closed using <B>sf_close()</B>.
+</P>
+<P>
+There are however situations where large files are being generated and it would
+be nice to have valid data in the header before the file is complete.
+Using this command will update the file header to reflect the amount of data written
+to the file so far.
+Other programs opening the file for read (before any more data is written) will
+then read a valid sound file header.
+</P>
+<P>
+Parameters:
+<PRE>
+ sndfile : A valid SNDFILE* pointer
+ cmd : SFC_UPDATE_HEADER_NOW
+ data : Not used (should be NULL)
+ datasize : Not used.
+</PRE>
+<P>
+Example:
+</P>
+<PRE>
+ /* Update the header now. */
+ sf_command (sndfile, SFC_UPDATE_HEADER_NOW, NULL, 0) ;
+</PRE>
+<DL>
+<DT>Return value:</DT>
+<DD>0
+</DL>
+
+<!-- ========================================================================= -->
+<A NAME="SFC_SET_UPDATE_HEADER_AUTO"></A>
+<H2><BR><B>SFC_SET_UPDATE_HEADER_AUTO</B></H2>
+<P>
+Similar to SFC_UPDATE_HEADER_NOW but updates the header at the end of every call
+to the <B>sf_write*</B> functions.
+</P>
+<P>
+Parameters:
+<PRE>
+ sndfile : A valid SNDFILE* pointer
+ cmd : SFC_UPDATE_HEADER_NOW
+ data : Not used (should be NULL)
+ datasize : SF_TRUE or SF_FALSE
+</PRE>
+<P>
+Example:
+</P>
+<PRE>
+ /* Turn on auto header update. */
+ sf_command (sndfile, SFC_SET_UPDATE_HEADER_AUTO, NULL, SF_TRUE) ;
+
+ /* Turn off auto header update. */
+ sf_command (sndfile, SFC_SET_UPDATE_HEADER_AUTO, NULL, SF_FALSE) ;
+</PRE>
+<DL>
+<DT>Return value:</DT>
+<DD>TRUE if auto update header is now on; FALSE otherwise.
+</DL>
+
+<!-- ========================================================================= -->
+<A NAME="SFC_FILE_TRUNCATE"></A>
+<H2><BR><B>SFC_FILE_TRUNCATE</B></H2>
+<P>
+Truncate a file open for write or for read/write.
+</P>
+<P>
+Parameters:
+<PRE>
+ sndfile : A valid SNDFILE* pointer
+ cmd : SFC_FILE_TRUNCATE
+ data : A pointer to an sf_count_t.
+ datasize : sizeof (sf_count_t)
+</PRE>
+
+<P>
+Truncate the file to the number of frames specified by the sf_count_t pointed
+to by data.
+After this command, both the read and the write pointer will be
+at the new end of the file.
+This command will fail (returning non-zero) if the requested truncate position
+is beyond the end of the file.
+</P>
+<P>
+Example:
+</P>
+<PRE>
+ /* Truncate the file to a length of 20 frames. */
+ sf_count_t frames = 20 ;
+ sf_command (sndfile, SFC_FILE_TRUNCATE, &amp;frames, sizeof (frames)) ;
+</PRE>
+<DL>
+<DT>Return value:</DT>
+ <DD>Zero on sucess, non-zero otherwise.
+</DL>
+
+<!-- ========================================================================= -->
+<A NAME="SFC_SET_RAW_START_OFFSET"></A>
+<H2><BR><B>SFC_SET_RAW_START_OFFSET</B></H2>
+<P>
+Change the data start offset for files opened up as SF_FORMAT_RAW.
+</P>
+<P>
+Parameters:
+<PRE>
+ sndfile : A valid SNDFILE* pointer
+ cmd : SFC_SET_RAW_START_OFFSET
+ data : A pointer to an sf_count_t.
+ datasize : sizeof (sf_count_t)
+</PRE>
+
+<P>
+For a file opened as format SF_FORMAT_RAW, set the data offset to the value
+given by data.
+</P>
+<P>
+Example:
+</P>
+<PRE>
+ /* Reset the data offset to 5 bytes from the start of the file. */
+ sf_count_t offset = 5 ;
+ sf_command (sndfile, SFC_SET_RAW_START_OFFSET, &amp;offset, sizeof (offset)) ;
+</PRE>
+<DL>
+<DT>Return value:</DT>
+ <DD>Zero on sucess, non-zero otherwise.
+</DL>
+
+<!-- ========================================================================= -->
+
+<HR>
+<P>
+ The libsndfile home page is here :
+ <A HREF="http://www.mega-nerd.com/libsndfile/">
+ http://www.mega-nerd.com/libsndfile/</A>.
+<BR>
+Version : 1.0.25
+</P>
+
+</BODY>
+</HTML>
diff --git a/doc/embedded_files.html b/doc/embedded_files.html
new file mode 100644
index 0000000..c73e86a
--- /dev/null
+++ b/doc/embedded_files.html
@@ -0,0 +1,47 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+
+<HEAD>
+ <TITLE>
+ libsndfile : Embedded Sound Files.
+ </TITLE>
+ <META NAME="Author" CONTENT="Erik de Castro Lopo (erikd AT mega-nerd DOT com)">
+ <META NAME="Description" CONTENT="The libsndfile API.">
+ <META NAME="Keywords" CONTENT="WAV AIFF AU libsndfile sound audio dsp Linux">
+ <LINK REL="stylesheet" HREF="libsndfile.css" TYPE="text/css" MEDIA="all">
+ <LINK REL="stylesheet" HREF="print.css" TYPE="text/css" MEDIA="print">
+</HEAD>
+<!-- pepper -->
+<BODY>
+<!-- pepper -->
+<H1><B>Embedded Sound Files.</B></H1>
+
+<P>
+By using the open SNDFILE with a file descriptor function:
+</P>
+<!-- pepper -->
+<PRE>
+ SNDFILE* sf_open_fd (int fd, int mode, SF_INFO *sfinfo, int close_desc) ;
+</PRE>
+<!-- pepper -->
+<P>
+it is possible to open sound files embedded within larger files.
+There are however a couple of caveats:
+<P>
+<!-- pepper -->
+<UL>
+ <LI> Read/Write mode (SFM_RDWR) is not supported.
+ <LI> Writing of embedded files is only supported at the end of the file.
+ <LI> Reading of embedded files is only supported at file offsets greater
+ than zero.
+ <LI> Not all file formats are supported (currently only WAV, AIFF and AU).
+</UL>
+<!-- pepper -->
+<P>
+The test program <B>multi_file_test.c</B> in the <B>tests/</B> directory of the
+source code tarball shows how this functionality is used to read and write
+embedded files.
+</P>
+<!-- pepper -->
+</BODY>
+</HTML>
diff --git a/doc/index.html b/doc/index.html
new file mode 100644
index 0000000..bb128f5
--- /dev/null
+++ b/doc/index.html
@@ -0,0 +1,494 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+
+<HEAD>
+ <TITLE>
+ libsndfile
+ </TITLE>
+ <META NAME="Author" CONTENT="Erik de Castro Lopo (erikd AT mega-nerd DOT com)">
+ <META NAME="Version" CONTENT="libsndfile-1.0.25">
+ <META NAME="Description" CONTENT="The libsndfile Home Page">
+ <META NAME="Keywords" CONTENT="WAV AIFF AU SVX PAF NIST W64 libsndfile sound audio dsp Linux">
+ <META NAME="ROBOTS" CONTENT="NOFOLLOW">
+ <LINK REL="stylesheet" HREF="libsndfile.css" TYPE="text/css" MEDIA="all">
+ <LINK REL="stylesheet" HREF="print.css" TYPE="text/css" MEDIA="print">
+</HEAD>
+
+<BODY>
+<!-- pepper -->
+<CENTER>
+ <IMG SRC="libsndfile.jpg" HEIGHT=98 WIDTH=367 ALT="libsndfile.jpg">
+</CENTER>
+<!-- pepper -->
+<CENTER>
+ <A HREF="#History">History</A> -+-
+ <A HREF="#Features">Features</A> -+-
+ <A HREF="#Similar">Similar or Related Projects</A> -+-
+ <A HREF="NEWS">News</A>
+ <br>
+ <A HREF="development.html">Development</A> -+-
+ <A HREF="api.html">Programming Interface</A> -+-
+ <A HREF="bugs.html">Bug Reporting</A> -+-
+ <A HREF="#Download">Download</A>
+ <br>
+ <A HREF="FAQ.html">FAQ</A> -+-
+ <A HREF="lists.html">Mailing Lists</A> -+-
+ <A HREF="ChangeLog">Change Log</A> -+-
+ <A HREF="#Licensing">Licensing Information</A> -+-
+ <A HREF="#SeeAlso">See Also</A>
+</CENTER>
+
+<br><br>
+<P>
+ Libsndfile is a C library for reading and writing files containing sampled sound
+ (such as MS Windows WAV and the Apple/SGI AIFF format) through one standard
+ library interface. It is released in source code format under the
+ <A HREF="http://www.gnu.org/copyleft/lesser.html">Gnu Lesser General Public License</A>.
+</P>
+<!-- pepper -->
+<P>
+ The library was written to compile and run on a Linux system but should compile
+ and run on just about any Unix (including MacOS X).
+ There are also pre-compiled binaries available for 32 and 64 bit windows.
+</P>
+<P>
+ It was designed to handle both little-endian (such as WAV) and big-endian
+ (such as AIFF) data, and to compile and run correctly on little-endian (such as Intel
+ and DEC/Compaq Alpha) processor systems as well as big-endian processor systems such
+ as Motorola 68k, Power PC, MIPS and Sparc.
+ Hopefully the design of the library will also make it easy to extend for reading and
+ writing new sound file formats.
+</P>
+<!-- pepper -->
+<P>
+ It has been compiled and tested (at one time or another) on the following systems:
+</P>
+<!-- pepper -->
+<UL>
+ <LI>Every platform supported by Debian GNU/Linux including x86_64-linux-gnu,
+ i486-linux-gnu, powerpc-linux-gnu, sparc-linux-gnu, alpha-linux-gnu,
+ mips-linux-gnu and armel-linux-gnu.</LI>
+ <LI>arm-linux-androideab (Android phones OS)</LI>
+ <LI>powerpc-apple-darwin7.0 (Mac OS X 10.3)</LI>
+ <LI>sparc-sun-solaris2.8 (using gcc)</LI>
+ <LI>mips-sgi-irix5.3 (using gcc)</LI>
+ <LI>QNX 6.0</LI>
+ <LI>i386-unknown-openbsd2.9</LI>
+</UL>
+<!-- pepper -->
+<P>
+ At the moment, each new release is being tested on i386 Linux, x86_64 Linux,
+ PowerPC Linux, Win32 and Win64.
+</P>
+<!-- pepper -->
+
+<A NAME="Capabilities"></A>
+<A NAME="Features"></A>
+<H1><B>Features</B></H1>
+<P>
+ libsndfile has the following main features :
+</P>
+ <UL>
+ <lI> Ability to read and write a large number of file formats.
+ <LI> A simple, elegant and easy to use Applications Programming Interface.
+ <LI> Usable on Unix, Win32, MacOS and others.
+ <LI> On the fly format conversion, including endian-ness swapping, type conversion
+ and bitwidth scaling.
+ <LI> Optional normalisation when reading floating point data from files containing
+ integer data.
+ <LI> Ability to open files in read/write mode.
+ <LI> The ability to write the file header without closing the file (only on files
+ open for write or read/write).
+ <LI> Ability to query the library about all supported formats and retrieve text
+ strings describing each format.
+ </UL>
+<P>
+ libsndfile has a comprehensive test suite so that each release is as bug free
+ as possible.
+ When new bugs are found, new tests are added to the test suite to ensure that
+ these bugs don't creep back into the code.
+ When new features are added, tests are added to the test suite to make sure that
+ these features continue to work correctly even when they are old features.
+ </P>
+<P>
+ The following table lists the file formats and encodings that libsndfile can read
+ and write.
+ The file formats are arranged across the top and encodings along the left
+ edge.
+</P>
+<br>
+
+<TABLE BORDER="1" cellpadding="2">
+ <TR><TD>&nbsp;</TD>
+ <TD ALIGN="center">Micro- soft<br>WAV</TD>
+ <TD ALIGN="center">SGI / Apple<br>AIFF / AIFC</TD>
+ <TD ALIGN="center">Sun / DEC /<br>NeXT<br>AU / SND</TD>
+ <TD ALIGN="center">Header- less<br>RAW</TD>
+ <TD ALIGN="center">Paris Audio<br>File<br>PAF</TD>
+ <TD ALIGN="center">Commo- dore<br>Amiga<br>IFF / SVX</TD>
+ <TD ALIGN="center">Sphere<br>Nist<br>WAV</TD>
+ <TD ALIGN="center">IRCAM<br>SF</TD>
+ <TD ALIGN="center">Creative<br>VOC</TD>
+ <TD ALIGN="center">Sound forge<br>W64</TD>
+ <TD ALIGN="center"><A HREF="octave.html">GNU Octave 2.0</A><br>MAT4</TD>
+ <TD ALIGN="center"><A HREF="octave.html">GNU Octave 2.1</A><br>MAT5</TD>
+ <TD ALIGN="center">Portable Voice Format<br>PVF</TD>
+ <TD ALIGN="center">Fasttracker 2<br>XI</TD>
+ <TD ALIGN="center">HMM Tool Kit<br>HTK</TD>
+ <TD ALIGN="center">Apple<br>CAF</TD>
+ <TD ALIGN="center">Sound<br>Designer II<br>SD2</TD>
+ <TD ALIGN="center">Free Lossless Audio Codec<br>FLAC</TD>
+ </TR>
+<TR><TD>Unsigned 8 bit PCM</TD>
+ <TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD>&nbsp;</TD><TD ALIGN="center">R/W</TD>
+ <TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD ALIGN="center">R/W</TD>
+ <TD ALIGN="center">R/W</TD><TD>&nbsp;</TD><TD ALIGN="center">R/W</TD><TD>&nbsp;</TD>
+ <TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>
+</TR>
+
+<TR><TD>Signed 8 bit PCM</TD>
+ <TD>&nbsp;</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD>
+ <TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD>&nbsp;</TD>
+ <TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD ALIGN="center">R/W</TD>
+ <TD>&nbsp;</TD><TD>&nbsp;</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD>
+</TR>
+
+<TR><TD>Signed 16 bit PCM</TD>
+ <TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD>
+ <TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD>
+ <TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD>
+ <TD ALIGN="center">R/W</TD><TD>&nbsp;</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD>
+ <TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD>
+</TR>
+
+<TR><TD>Signed 24 bit PCM</TD>
+ <TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD>
+ <TD ALIGN="center">R/W</TD><TD>&nbsp;</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD>
+ <TD>&nbsp;</TD><TD ALIGN="center">R/W</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>
+ <TD>&nbsp;</TD><TD>&nbsp;</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD>
+</TR>
+
+<TR><TD>Signed 32 bit PCM</TD>
+ <TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD>
+ <TD>&nbsp;</TD><TD>&nbsp;</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD>&nbsp;</TD>
+ <TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD>
+ <TD>&nbsp;</TD><TD>&nbsp;</TD><TD ALIGN="center">R/W</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>
+</TR>
+
+<TR><TD>32 bit float</TD>
+ <TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD>
+ <TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD ALIGN="center">R/W</TD><TD>&nbsp;</TD>
+ <TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD>&nbsp;</TD>
+ <TD>&nbsp;</TD><TD>&nbsp;</TD><TD ALIGN="center">R/W</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>
+</TR>
+
+<TR><TD>64 bit double</TD>
+ <TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD>
+ <TD ALIGN="center">R/W</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>
+ <TD>&nbsp;</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD>
+ <TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD ALIGN="center">R/W</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>
+</TR>
+
+<TR><TD>u-law encoding</TD>
+ <TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD>
+ <TD>&nbsp;</TD><TD>&nbsp;</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD>
+ <TD ALIGN="center">R/W</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>
+ <TD ALIGN="center">R/W</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>
+</TR>
+<TR><TD>A-law encoding</TD>
+ <TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD>
+ <TD>&nbsp;</TD><TD>&nbsp;</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD>
+ <TD ALIGN="center">R/W</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>
+ <TD ALIGN="center">R/W</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>
+</TR>
+
+<TR><TD>IMA ADPCM</TD>
+ <TD ALIGN="center">R/W</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>
+ <TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD ALIGN="center">R/W</TD>
+ <TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>
+ <TD>&nbsp;</TD><TD>&nbsp;</TD>
+</TR>
+
+<TR><TD>MS ADPCM</TD>
+ <TD ALIGN="center">R/W</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>
+ <TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD ALIGN="center">R/W</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>
+ <TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>
+</TR>
+
+<TR><TD>GSM 6.10</TD>
+ <TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD>&nbsp;</TD><TD ALIGN="center">R/W</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>
+ <TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD ALIGN="center">R/W</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>
+ <TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>
+</TR>
+
+<TR><TD>G721 ADPCM 32kbps</TD>
+ <TD ALIGN="center">R/W</TD><TD>&nbsp;</TD><TD ALIGN="center">R/W</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>
+ <TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>
+ <TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>
+</TR>
+
+<TR><TD>G723 ADPCM 24kbps</TD>
+ <TD>&nbsp;</TD><TD>&nbsp;</TD><TD ALIGN="center">R/W</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>
+ <TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>
+ <TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>
+</TR>
+
+<TR><TD>G723 ADPCM 40kbps</TD>
+ <TD>&nbsp;</TD><TD>&nbsp;</TD><TD ALIGN="center">R/W</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>
+ <TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>
+ <TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>
+</TR>
+
+<TR><TD>12 bit DWVW</TD>
+ <TD>&nbsp;</TD><TD ALIGN="center">R/W</TD><TD>&nbsp;</TD><TD ALIGN="center">R/W</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>
+ <TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>
+ <TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>
+</TR>
+
+<TR><TD>16 bit DWVW</TD>
+ <TD>&nbsp;</TD><TD ALIGN="center">R/W</TD><TD>&nbsp;</TD><TD ALIGN="center">R/W</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>
+ <TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>
+ <TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>
+</TR>
+
+<TR><TD>24 bit DWVW</TD>
+ <TD>&nbsp;</TD><TD ALIGN="center">R/W</TD><TD>&nbsp;</TD><TD ALIGN="center">R/W</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>
+ <TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>
+ <TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>
+</TR>
+<TR><TD>Ok Dialogic ADPCM</TD>
+ <TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD ALIGN="center">R/W</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>
+ <TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>
+ <TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>
+</TR>
+<TR><TD>8 bit DPCM</TD>
+ <TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>
+ <TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>
+ <TD>&nbsp;</TD><TD ALIGN="center">R/W</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>
+</TR>
+<TR><TD>16 bit DPCM</TD>
+ <TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>
+ <TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>
+ <TD>&nbsp;</TD><TD ALIGN="center">R/W</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>
+</TR>
+</TABLE>
+
+<p>
+From version 1.0.18, libsndfile also reads and writes
+ <a href="http://flac.sourceforge.net/">FLAC</a>
+and
+ <a href="http://www.vorbis.com/">Ogg/Vorbis</a>.
+</p>
+
+<!-- pepper -->
+
+<P>
+ Some of the file formats I am also interested in adding are:
+</P>
+ <UL>
+ <LI> Kurzweil K2000 sampler files.
+ <LI> Ogg Speex.
+ </UL>
+<P>
+ I have decided that I will not be adding support for MPEG Layer 3 (commonly
+ known as MP3) due to the patent issues surrounding this file format.
+ See
+ <a href="http://www.mega-nerd.com/libsndfile/FAQ.html#Q020">
+ the FAQ</a>
+ for more.
+</P>
+<P>
+ Other file formats may also be added on request.
+</P>
+
+<!-- pepper -->
+
+<A NAME="History"></A>
+<H1><B>History</B></H1>
+<P>
+ My first attempt at reading and writing WAV files was in 1990 or so under Windows
+ 3.1.
+ I started using Linux in early 1995 and contributed some code to the
+ <A HREF="http://www.vaxxine.com/ve3wwg/gnuwave.html">wavplay</A>
+ program.
+ That contributed code would eventually mutate into this library.
+ As one of my interests is Digital Signal Processing (DSP) I decided that as well as
+ reading data from an audio file in the native format (typically 16 bit short integers)
+ it would also be useful to be able to have the library do the conversion to floating
+ point numbers for DSP applications.
+ It then dawned on me that whatever file format (anything from 8 bit unsigned chars,
+ to 32 bit floating point numbers) the library should be able to convert the data to
+ whatever format the library user wishes to use it in.
+ For example, in a sound playback program, the library caller typically wants the sound
+ data in 16 bit short integers to dump into a sound card even though the data in the
+ file may be 32 bit floating point numbers (ie Microsoft's WAVE_FORMAT_IEEE_FLOAT
+ format).
+ Another example would be someone doing speech recognition research who has recorded
+ some speech as a 16 bit WAV file but wants to process it as double precision floating
+ point numbers.
+</P>
+<P>
+ Here is the release history for libsndfile :
+</P>
+ <UL>
+ <LI>Version 0.0.8 (Feb 15 1999) First official release.
+ <LI>Version 0.0.28 (Apr 26 2002) Final release of version 0 of libsndfile.
+ <LI>Version 1.0.0rc1 (Jun 24 2002) Release candidate 1 of version 1 of libsndfile.
+ <LI>Version 1.0.0rc6 (Aug 14 2002) MacOS 9 fixes.
+ <LI>Version 1.0.0 (Aug 16 2002) First 1.0.X release.
+ <LI>Version 1.0.1 (Sep 14 2002) Added MAT4 and MAT5 file formats.
+ <LI>Version 1.0.2 (Nov 24 2002) Added VOX ADPCM format.
+ <LI>Version 1.0.3 (Dec 09 2002) Fixes for Linux on ia64 CPUs.
+ <LI>Version 1.0.4 (Feb 02 2003) New file formats and functionality.
+ <LI>Version 1.0.5 (May 03 2003) One new file format and new functionality.
+ <LI>Version 1.0.6 (Feb 08 2004) Large file fix for Linux/Solaris, new functionality
+ and Win32 improvements.
+ <LI>Version 1.0.7 (Feb 24 2004) Fix build problems on MacOS X and fix ia64/MIPS etc
+ clip mode detction.
+ <LI>Version 1.0.8 (Mar 14 2004) Minor bug fixes.
+ <LI>Version 1.0.9 (Mar 30 2004) Add AVR format. Improve handling of some WAV files.
+ <LI>Version 1.0.10 (Jun 15 2004) Minor bug fixes. Fix support for Win32 MinGW compiler.
+ <LI>Version 1.0.11 (Nov 15 2004) Add SD2 file support, reading of loop data in WAV and AIFF.
+ Minor bug fixes.
+ <LI>Version 1.0.12 (Sep 30 2005) Add FLAC and CAF file support, virtual I/O interface.
+ Minor bug fixes and cleanups.
+ <LI>Version 1.0.13 (Jan 21 2006) Add read/write of instrument chunks. Minor bug fixes.
+ <LI>Version 1.0.14 (Feb 19 2006) Minor bug fixes. Start shipping windows binary/source ZIP.
+ <LI>Version 1.0.15 (Mar 16 2006) Minor bug fixes.
+ <LI>Version 1.0.16 (Apr 30 2006) Add support for RIFX. Other minor feature enhancements and
+ bug fixes.
+ <LI>Version 1.0.17 (Aug 31 2006) Add C++ wrapper sndfile.hh. Minor bug fixes and cleanups.
+ <LI>Version 1.0.18 (Feb 07 2009) Add Ogg/Vorbis suppport, remove captive libraries, many
+ new features and bug fixes. Generate Win32 and Win64 pre-compiled binaries.
+ <LI>Version 1.0.19 (Mar 02 2009) Fix for CVE-2009-0186. Huge number of minor fixes as a
+ result of static analysis.
+ <LI>Version 1.0.20 (May 14 2009) Fix for potential heap overflow.
+ <LI>Version 1.0.21 (December 13 2009) Bunch of minor bug fixes.
+ <LI>Version 1.0.22 (October 04 2010) Bunch of minor bug fixes.
+ <LI>Version 1.0.23 (October 10 2010) Minor bug fixes.
+ <LI>Version 1.0.24 (March 23 2011) Minor bug fixes.
+ <LI>Version 1.0.25 (July 13 2011) Fix for Secunia Advisory SA45125. Minor bug fixes and
+ improvements.
+ </UL>
+
+<A NAME="Similar"></A>
+<H1><B>Similar or Related Projects</B></H1>
+
+ <UL>
+ <LI><A HREF="http://sox.sourceforge.net/">SoX</A> is a program for
+ converting between sound file formats.
+ <LI><A HREF="http://www.hitsquad.com/smm/programs/WavPlay/">Wavplay</A> started out
+ as a minimal WAV file player under Linux and has mutated into Gnuwave, a client/server
+ application for more general multimedia and games sound playback.
+ <LI><A HREF="http://www.68k.org/~michael/audiofile/">Audiofile</A> (libaudiofile) is
+ a library similar to libsndfile but with a different programming interface. The
+ author Michael Pruett has set out to clone (and fix some bugs in) the libaudiofile
+ library which ships with SGI's IRIX OS.
+ <LI><A HREF="ftp://ccrma-ftp.stanford.edu/pub/Lisp/sndlib.tar.gz">sndlib.tar.gz</A> is
+ another library written by Bill Schottstaedt of CCRMA.
+ </UL>
+
+<A NAME="Licensing"></A>
+<H1><B>Licensing</B></H1>
+<P>
+ libsndfile is released under the terms of the GNU Lesser General Public License,
+ of which there are two versions;
+ <a href="http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html">version 2.1</a>
+ and
+ <a href="http://www.gnu.org/copyleft/lesser.html">version 3</a>.
+ To maximise the compatibility of libsndfile, the user may choose to use libsndfile
+ under either of the above two licenses.
+ You can also read a simple explanation of the ideas behind the GPL and the LGPL
+ <A HREF="http://www.gnu.org/copyleft/copyleft.html">here</A>.
+</P>
+<P>
+ You can use libsndfile with
+ <A HREF="http://www.gnu.org/">Free Software</A>,
+ <A HREF="http://www.opensource.org/">Open Source</A>,
+ proprietary, shareware or other closed source applications as long as libsndfile
+ is used as a dynamically loaded library and you abide by a small number of other
+ conditions (read the LGPL for more info).
+ With applications released under the GNU GPL you can also use libsndfile statically
+ linked to your application.
+</P>
+<P>
+ I would like to see libsndfile used as widely as possible but I would prefer it
+ if you released software that uses libsndfile as
+ <A HREF="http://www.gnu.org/">Free Software</A>
+ or
+ <A HREF="http://www.opensource.org/">Open Source</A>.
+ However, if you put in a great deal of effort building a significant application
+ which simply uses libsndfile for file I/O, then I have no problem with you releasing
+ that as closed source and charging as much money as you want for it as long as you
+ abide by <A HREF="http://www.gnu.org/copyleft/lesser.html">the license</A>.
+</P>
+
+<A NAME="Download"></A>
+<H1><B>Download</B></H1>
+<P>
+ Here is the latest version. It is available in the following formats:
+</P>
+ <UL>
+ <LI>Source code as a .tar.gz :
+ <A HREF="files/libsndfile-1.0.25.tar.gz">libsndfile-1.0.25.tar.gz</A>
+ and
+ <A HREF="files/libsndfile-1.0.25.tar.gz.asc">(GPG signature)</A>.
+ <LI>Win32 installer:
+ <A HREF="files/libsndfile-1.0.25-w32-setup.exe">
+ libsndfile-1.0.25-w32-setup.exe</A> (thoroughly tested under
+ <a href="http://www.winehq.com/">Wine</a> and Windows XP).
+ <LI>Win64 installer:
+ <A HREF="files/libsndfile-1.0.25-w64-setup.exe">
+ libsndfile-1.0.25-w64-setup.exe</A>
+ (thoroughly tested on 64 bit Windows 7).
+ </UL>
+
+<P>
+The Win32 installer was compiled for Windows XP but should also work on Windows
+2000, Vista and Windows 7.
+</p>
+
+<P>
+ Pre-release versions of libsndfile are available
+ <A HREF="http://www.mega-nerd.com/tmp/">here</A>
+ and are announced on the
+ <A HREF="lists.html">libsndfile-devel</A>
+ mailing list.
+</P>
+
+<A NAME="SeeAlso"></A>
+<H1><B>See Also</B></H1>
+ <UL>
+ <LI><a href="http://www.mega-nerd.com/libsndfile/tools/">
+ sndfile-tools</a>
+ : a small collection of programs which use libsndfile.
+ </UL>
+
+<br><br>
+
+<hr>
+
+<P>
+ The latest version of this document can be found
+ <A HREF="http://www.mega-nerd.com/libsndfile/">here</A>.
+</P>
+<P>
+Author :
+ <A HREF="m&#97;ilt&#111;:&#101;rikd&#64;&#109;eg&#97;-&#110;erd.&#99;om">
+ Erik de Castro Lopo</a>
+</P>
+<!-- pepper -->
+<P>
+This page has been accessed
+ <IMG SRC=
+ "/cgi-bin/Count.cgi?ft=6|frgb=55;55;55|tr=0|trgb=0;0;0|wxh=15;20|md=7|dd=B|st=1|sh=1|df=libsndfile.dat"
+ HEIGHT=30 WIDTH=100 ALT="counter.gif">
+times.
+</P>
+<!-- pepper -->
+<!-- pepper -->
+<!-- pepper -->
+
+<br><br>
+</BODY>
+</HTML>
diff --git a/doc/libsndfile.css b/doc/libsndfile.css
new file mode 100644
index 0000000..eab8d06
--- /dev/null
+++ b/doc/libsndfile.css
@@ -0,0 +1,90 @@
+body {
+ background : black ;
+ color : white ;
+ font-family : arial, helvetica, sans-serif ;
+ line-height: 1.5 ;
+}
+td {
+ font-family : arial, helvetica, sans-serif ;
+ background : black ;
+ color : white ;
+}
+center {
+ font-family : arial, helvetica, sans-serif ;
+}
+p {
+ font-family : arial, helvetica, sans-serif ;
+ text-align : left ;
+ margin-left : 3% ;
+ margin-right : 3% ;
+}
+.indent_block {
+ font-family : arial, helvetica, sans-serif ;
+ text-align : left ;
+ margin-left : 10% ;
+ margin-right : 10% ;
+}
+br {
+ font-family : arial, helvetica, sans-serif ;
+}
+form {
+ font-family : arial, helvetica, sans-serif ;
+}
+ul {
+ font-family : arial, helvetica, sans-serif ;
+ text-align : left ;
+ margin-left : 3% ;
+ margin-right : 6% ;
+}
+ol {
+ font-family : arial, helvetica, sans-serif ;
+ text-align : left ;
+ margin-left : 3% ;
+ margin-right : 6% ;
+}
+dl {
+ font-family : arial, helvetica, sans-serif ;
+ text-align : left ;
+ margin-left : 3% ;
+ margin-right : 3% ;
+}
+h1 {
+ font-size : xx-large ;
+ background : black ;
+ color : #5050FF ;
+ text-align : left ;
+ margin-left : 3% ;
+ margin-right : 3% ;
+}
+h2 {
+ font-size : x-large ;
+ background : black ;
+ color : #5050FF ;
+ text-align : left ;
+ margin-left : 3% ;
+ margin-right : 3% ;
+}
+h3 {
+ font-size : large ;
+ background : black ;
+ color : #5050FF ;
+ text-align : left ;
+ margin-left : 3% ;
+ margin-right : 3% ;
+}
+h4 {
+ font-size : medium ;
+ background : black ;
+ color : #5050FF ;
+ text-align : left ;
+ margin-left : 3% ;
+ margin-right : 3% ;
+}
+pre {
+ font-family : courier, monospace ;
+ font-size : medium ;
+}
+a:link { color : #9090FF ; }
+a:visited { color : #5050FF ; }
+a:active { color : #FF00FF ; }
+a:hover { background-color : #202080 ; }
diff --git a/doc/libsndfile.css.in b/doc/libsndfile.css.in
new file mode 100644
index 0000000..9069080
--- /dev/null
+++ b/doc/libsndfile.css.in
@@ -0,0 +1,90 @@
+body {
+ background : @HTML_BGCOLOUR@ ;
+ color : @HTML_FGCOLOUR@ ;
+ font-family : arial, helvetica, sans-serif ;
+ line-height: 1.5 ;
+}
+td {
+ font-family : arial, helvetica, sans-serif ;
+ background : @HTML_BGCOLOUR@ ;
+ color : @HTML_FGCOLOUR@ ;
+}
+center {
+ font-family : arial, helvetica, sans-serif ;
+}
+p {
+ font-family : arial, helvetica, sans-serif ;
+ text-align : left ;
+ margin-left : 3% ;
+ margin-right : 3% ;
+}
+.indent_block {
+ font-family : arial, helvetica, sans-serif ;
+ text-align : left ;
+ margin-left : 10% ;
+ margin-right : 10% ;
+}
+br {
+ font-family : arial, helvetica, sans-serif ;
+}
+form {
+ font-family : arial, helvetica, sans-serif ;
+}
+ul {
+ font-family : arial, helvetica, sans-serif ;
+ text-align : left ;
+ margin-left : 3% ;
+ margin-right : 6% ;
+}
+ol {
+ font-family : arial, helvetica, sans-serif ;
+ text-align : left ;
+ margin-left : 3% ;
+ margin-right : 6% ;
+}
+dl {
+ font-family : arial, helvetica, sans-serif ;
+ text-align : left ;
+ margin-left : 3% ;
+ margin-right : 3% ;
+}
+h1 {
+ font-size : xx-large ;
+ background : @HTML_BGCOLOUR@ ;
+ color : #5050FF ;
+ text-align : left ;
+ margin-left : 3% ;
+ margin-right : 3% ;
+}
+h2 {
+ font-size : x-large ;
+ background : @HTML_BGCOLOUR@ ;
+ color : #5050FF ;
+ text-align : left ;
+ margin-left : 3% ;
+ margin-right : 3% ;
+}
+h3 {
+ font-size : large ;
+ background : @HTML_BGCOLOUR@ ;
+ color : #5050FF ;
+ text-align : left ;
+ margin-left : 3% ;
+ margin-right : 3% ;
+}
+h4 {
+ font-size : medium ;
+ background : @HTML_BGCOLOUR@ ;
+ color : #5050FF ;
+ text-align : left ;
+ margin-left : 3% ;
+ margin-right : 3% ;
+}
+pre {
+ font-family : courier, monospace ;
+ font-size : medium ;
+}
+a:link { color : #9090FF ; }
+a:visited { color : #5050FF ; }
+a:active { color : #FF00FF ; }
+a:hover { background-color : #202080 ; }
diff --git a/doc/libsndfile.jpg b/doc/libsndfile.jpg
new file mode 100644
index 0000000..7855b92
--- /dev/null
+++ b/doc/libsndfile.jpg
Binary files differ
diff --git a/doc/lists.html b/doc/lists.html
new file mode 100644
index 0000000..7d95170
--- /dev/null
+++ b/doc/lists.html
@@ -0,0 +1,52 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+
+<HEAD>
+ <TITLE>
+ libsndfile Mailing Lists
+ </TITLE>
+ <META NAME="Author" CONTENT="Erik de Castro Lopo (erikd AT mega-nerd DOT com)">
+ <LINK REL="stylesheet" HREF="libsndfile.css" TYPE="text/css" MEDIA="all">
+ <LINK REL="stylesheet" HREF="print.css" TYPE="text/css" MEDIA="print">
+</HEAD>
+
+<BODY>
+<!-- pepper -->
+<H1><BR>libsndfile Mailing Lists</H1>
+<!-- pepper -->
+<P>
+There are three mailing lists for libsndfile:
+</P>
+<!-- pepper -->
+<UL>
+ <LI> <B>libsndfile-announce&#64;mega-nerd.com</B>&nbsp;&nbsp;<!-- pepper -->
+ <A HREF="m&#97;ilt&#111;:li&#98;sndfile-announce-request@meg&#97;-nerd.&#99;om?subject=subscribe">Subscribe</A>
+ <BR>
+ A list which will announce each new release of libsndfile.
+ Noone can post to this list except the author.
+ <BR><BR>
+
+ <LI> <B>libsndfile-devel&#64;mega-nerd.com</B>&nbsp;&nbsp;<!-- pepper -->
+ <A HREF="m&#97;ilt&#111;:li&#98;sndfile-devel-request@meg&#97;-nerd.&#99;om?subject=subscribe">Subscribe</A>
+ <BR>
+ A list for discussing bugs, porting issues and feature requests.
+ Posting is restricted to subscribers.
+ <BR><BR>
+
+ <LI> <B>libsndfile-users&#64;mega-nerd.com</B>&nbsp;&nbsp;<!-- pepper -->
+ <A HREF="m&#97;ilt&#111;:li&#98;sndfile-users-request@meg&#97;-nerd.&#99;om?subject=subscribe">Subscribe</A>
+ <BR>
+ A list for discussing the use of libsndfile in other programs.
+ Posting is restricted to subscribers.
+ <!-- pepper -->
+ <BR><BR>
+</UL>
+<!-- pepper -->
+<P>
+The libsndfile-devel and libsndfile-users list will automatically receive a
+copy of all emails to the libsndfile-announce list.
+</P>
+<BR>
+<!-- pepper -->
+</BODY>
+</HTML>
diff --git a/doc/new_file_type.HOWTO b/doc/new_file_type.HOWTO
new file mode 100644
index 0000000..a6da80a
--- /dev/null
+++ b/doc/new_file_type.HOWTO
@@ -0,0 +1,135 @@
+new_file_type.HOWTO
+===================
+
+ Original : Wed May 23 19:05:07 EST 2001
+ Update 1 : Fri Jul 11 22:12:38 EST 2003
+
+This document will attempt to explain as fully as possible how to add code to
+libsndfile to allow the reading and writing of new file types. By new file
+type I particularly mean a new header type rather than a new encoding method
+for an existing file type.
+
+This HOWTO will take the form of a step by step guide. It will assume that you
+have all required tools including :
+
+ - gcc
+ - make (should really be the GNU version)
+ - autoconf
+ - automake
+ - libtool
+
+These should all be available on the GNU ftp site: ftp://ftp.gnu.org/pub/gnu/.
+
+To help make these steps clearer let's suppose we are adding support for the
+Whacky file format whose files contain 'W','A','C' and 'K' as the first four
+bytes of the file format. Lets also assume that Whacky files contain PCM encoded
+data.
+
+Step 1
+------
+Create a new .c file in the src/ directory of the libsndfile source tree. The
+file name should be reasonable descriptive so that is is obvious that files of
+the new type are handled by this file. In this particular case the file might
+be named 'whacky.c'.
+
+Step 2
+------
+Add your new source code file to the build process.
+
+Edit the file src/Makefile.am and add the name of your file handler to the
+FILESPECIFIC list of handlers. This list looks something like this:
+
+FILESPECIFIC = aiff.c au.c au_g72x.c nist.c paf.c raw.c samplitude.c \
+ svx.c wav.c wav_float.c wav_gsm610.c wav_ima_adpcm.c \
+ wav_ms_adpcm.c
+
+Then, run the script named 'reconf' in the libsndfile top level directory,
+which will run autoconf and other associated tools. Finally run "./configure"
+in the top level directory. You may want to use the "--disable-gcc-opt" option
+to disable gcc optimisations and make debugging with gdb/ddd easier.
+
+Step 3
+------
+Add a unique identifier for the new file type.
+
+Edit src/sndfile.h.in and find the enum containing the SF_FORMAT_XXX identifiers.
+Since you will be adding a major file type you should add your identifier to the
+top part of the list where the values are above 0x10000 in value. The easiest
+way to do this is to find the largest value in the list, add 0x10000 to it and
+make that your new identifier value. The identifier should be something like
+SF_FORMAT_WACK.
+
+Step 4
+------
+Add code to the file type recogniser function.
+
+Edit src/sndfile.c and find the function guess_file_type (). This function
+reads the first 3 ints of the file and from that makes a guess at the file
+type. In our case we would add:
+
+
+ if (buffer [0] == MAKE_MARKER ('W','A','C','K'))
+ return SF_FORMAT_WACK ;
+
+The use of the MAKE_MARKER macro should be pretty obvious and it is defined at the
+top of file should you need to have a look at it.
+
+Step 5
+------
+Add a call to your open function from psf_open_file ().
+
+Edit src/sndfile.c and find the switch statement in psf_open_file (). It starts
+like this:
+
+ switch (filetype)
+ { case SF_FORMAT_WAV :
+ error = wav_open (psf) ;
+ break ;
+
+ case SF_FORMAT_AIFF :
+ error = aiff_open (psf) ;
+ break ;
+
+Towards the bottom of this switch statement your should add one for the new file
+type. Something like:
+
+ case SF_FORMAT_WACK :
+ sf_errno = whacky_open (psf) ;
+ break ;
+
+Setp 6
+------
+Add prototypes for new open read and open write functions.
+
+Edit src/common.h, go to the bottom of the file and add something like
+
+ int whacky_open (SF_PRIVATE *psf) ;
+
+Step 7
+------
+
+Implement your open read function. The best way to do this is by coding
+something much like one of the other file formats. The file src/au.c might be
+a good place to start.
+
+In src/whacky.c you should now implement the function whacky_open() which
+was prototyped in src/common.h. This function should return 0 on success and
+a non-zero number on error.
+
+Error values are defined in src/common.h in a enum which starts at SFE_NO_ERROR.
+When adding a new error value, you also need to add an error string to the
+SndfileErrors array in src/sndfile.c.
+
+To parse the header of your new file type you should avoid using standard read/
+write/seek functions (and the fread/fwrite/fseek etc) and instead use
+psf_binheader_readf () which is implemented and documented in src/common.h.
+
+During the parsing process, you should also print logging information to
+libsndfile's internal log buffer using the psf_log_printf() function.
+
+At the end of the open read process, you should have set a number of fields in the
+SF_PRIVATE structure pointed to by psf.
+
+
+
+*** THIS FILE IS INCOMPLETE ***
diff --git a/doc/octave.html b/doc/octave.html
new file mode 100644
index 0000000..525b7ae
--- /dev/null
+++ b/doc/octave.html
@@ -0,0 +1,118 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+
+<HEAD>
+ <TITLE>
+ libsndfile and GNU Octave
+ </TITLE>
+ <META NAME="Author" CONTENT="Erik de Castro Lopo (erikd AT mega-nerd DOT com)">
+ <LINK REL="stylesheet" HREF="libsndfile.css" TYPE="text/css" MEDIA="all">
+ <LINK REL="stylesheet" HREF="print.css" TYPE="text/css" MEDIA="print">
+</HEAD>
+
+<BODY>
+
+<BR>
+<H1><B>libsndfile and GNU Octave</B></H1>
+<P>
+ <A HREF="http://www.octave.org/">GNU Octave</A> is a high-level interactive
+ language for numerical computations.
+ There are currently two development streams, a stable 2.0.X series and a
+ development 2.1.X series.
+ Octave reads and writes data in binary formats that were originally developed
+ for
+ <A HREF="http://www.mathworks.com/">MATLAB</A>.
+ Version 2.0.X of Octave uses binary data files compatible with MATLAB
+ version 4.2 while Octave 2.1.X uses binary data files compatible
+ with MATLAB version 5.0 as well as being able to read the older MATLAB 4.2
+ format.
+</P>
+<P>
+ From version 1.0.1 of libsndfile onwards, libsndfile has the ability of reading
+ and writing a small subset of the binary data files used by both versions
+ of GNU Octave.
+ This gives people using GNU Octave for audio based work an easy method of
+ moving audio data between GNU Octave and other programs which use libsndfile.
+</P>
+<P>
+ For instance it is now possible to do the following:
+</P>
+
+ <UL>
+ <LI> Load a WAV file into a sound file editor such as
+ <A HREF="http://www.metadecks.org/software/sweep/">Sweep</A>.
+ <LI> Save it as a MAT4 file.
+ <LI> Load the data into Octave for manipulation.
+ <LI> Save the modified data.
+ <LI> Reload it in Sweep.
+ </UL>
+<P>
+ Another example would be using the MAT4 or MAT5 file formats as a format which
+ can be easily loaded into Octave for viewing/analyzing as well as a format
+ which can be played with command line players such as the one included with
+ libsndfile.
+</P>
+
+<H2><B>Details</B></H2>
+<P>
+ Octave, like most programming languages, uses variables to store data, and
+ Octave variables can contain both arrays and matrices.
+ It is also able to store one or more of these variables in a file.
+ When reading Octave files, libsndfile expects a file to contain two
+ variables and their associated data.
+ The first variable should contain a variable holding the file sample rate
+ while the second variable contains the audio data.
+</P>
+<P>
+ For example, to generate a sine wave and store it as a binary file which
+ is compatible with libsndfile, do the following:
+</P>
+<PRE>
+ octave:1 > samplerate = 44100 ;
+ octave:2 > wavedata = sin ((0:1023)*2*pi/1024) ;
+ octave:3 > save sine.mat samplerate wavedata
+</PRE>
+
+<P>
+ The process of reading and writing files compatible with libsndfile can be
+ made easier by use of two Octave script files :
+</P>
+<PRE>
+ octave:4 > [data fs] = sndfile_load ("sine.mat") ;
+ octave:5 > sndfile_save ("sine2.mat", data, fs) ;
+</PRE>
+<P>
+ In addition, libsndfile contains a command line program which which is able
+ to play the correct types of Octave files.
+ Using this command line player <B>sndfile-play</B> and a third Octave script
+ file allows Octave data to be played from within Octave on any of the platforms
+ which <B>sndfile-play</B> supports (at the moment: Linux, MacOS X, Solaris and
+ Win32).
+</P>
+<PRE>
+ octave:6 > sndfile_play (data, fs) ;
+</PRE>
+<P>
+ These three Octave scripts are installed automatically in Octave's site
+ script directory when libsndfile is installed (except on Win32) ie when
+ libsndfile is being installed into /usr/local, the Octave scripts will
+ be installed in /usr/local/share/octave/site/m/.
+</P>
+
+<P>
+ There are some other Octave scripts for audio to be found
+ <A HREF="http://octave.sourceforge.net/index/audio.html">here</A>.
+</P>
+
+<BR>
+<!-- ========================================================================= -->
+
+<HR>
+<P>
+ The libsndfile home page is here :
+ <A HREF="http://www.mega-nerd.com/libsndfile/">
+ http://www.mega-nerd.com/libsndfile/</A>.
+</P>
+
+</BODY>
+</HTML>
diff --git a/doc/pkgconfig.html b/doc/pkgconfig.html
new file mode 100644
index 0000000..c89193d
--- /dev/null
+++ b/doc/pkgconfig.html
@@ -0,0 +1,71 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+
+<HEAD>
+ <TITLE>
+ libsndfile : pkg-config
+ </TITLE>
+ <META NAME="Author" CONTENT="Erik de Castro Lopo (erikd AT mega-nerd DOT com)">
+ <LINK REL="stylesheet" HREF="libsndfile.css" TYPE="text/css" MEDIA="all">
+ <LINK REL="stylesheet" HREF="print.css" TYPE="text/css" MEDIA="print">
+</HEAD>
+
+<BODY>
+
+<BR>
+<H1>libsndfile and pkg-config</H1>
+
+<P>
+ From version 1.0.0 libsndfile has had the ability to read and write files of
+ greater than 2 Gig in size on most OSes even if sizeof (long) == 4.
+ OSes which support this feature include Linux (2.4 kernel, glibc6) on x86, PPC and
+ probably others, Win32, MacOS X, *BSD, Solaris and probably others.
+ OSes on 64 bit processors where the default compile environment is LP64 (longs and
+ pointers are 64 bit ie Linux on DEC/Compaq/HP Alpha processors) automatically
+ support large file access.
+</P>
+<P>
+ Other OSes including Linux on 32 bit processors, 32 bit Solaris and others require
+ special compiler flags to add large file support.
+ This applies to both the compilation of the library itself and the compilation of
+ programs which link to the library.
+</P>
+<P>
+ Note : People using Win32, MacOS (both OS X and pre-OS X) or *BSD can disregard the
+ rest of this document as it does not apply to either of these OSes.
+</P>
+<P>
+ The <B>pkg-config</B> program makes finding the correct compiler flag values and
+ library location far easier.
+ During the installation of libsndfile, a file named <B>sndfile.pc</B> is installed
+ in the directory <B>${libdir}/pkgconfig</B> (ie if libsndfile is installed in
+ <B>/usr/local/lib</B>, <B>sndfile.pc</B> will be installed in
+ <B>/usr/local/lib/pkgconfig/</B>).
+</P>
+<P>
+ In order for pkg-config to find sndfile.pc it may be necessary to point the
+ environment variable <B>PKG_CONFIG_PATH</B> in the right direction.
+</P>
+ <PRE>
+ export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
+ </PRE>
+
+<P>
+ Then, to compile a C file into an object file, the command would be:
+</P>
+ <PRE>
+ gcc `pkg-config --cflags sndfile` -c somefile.c
+ </PRE>
+<P>
+ and to link a number of objects into an executable that links against libsndfile,
+ the command would be:
+</P>
+ <PRE>
+ gcc `pkg-config --libs sndfile` obj1.o obj2.o -o program
+ </PRE>
+
+<P>
+ Obviously all this can be rolled into a Makefile for easier maintenance.
+</P>
+</BODY>
+</HTML>
diff --git a/doc/sndfile_info.html b/doc/sndfile_info.html
new file mode 100644
index 0000000..a84f241
--- /dev/null
+++ b/doc/sndfile_info.html
@@ -0,0 +1,53 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+
+<HEAD>
+ <TITLE>
+ sndfile-info
+ </TITLE>
+ <META NAME="Author" CONTENT="Erik de Castro Lopo (erikd AT mega-nerd DOT com)">
+ <LINK REL="stylesheet" HREF="libsndfile.css" TYPE="text/css" MEDIA="all">
+ <LINK REL="stylesheet" HREF="print.css" TYPE="text/css" MEDIA="print">
+</HEAD>
+
+<BODY>
+
+<P>
+ Here is an example of the output from the <B>sndfile-info</B> program distributed with
+ libsndfile.
+</P>
+
+<P>
+ This file was opened and parsed correctly but had been truncated so that the values
+ in the <B>FORM</B> and <B>SSND</B> chunks were incorrect.
+</P>
+<PRE>
+ <B>erikd@hendrix ></B> examples/sndfile-info truncated.aiff
+ truncated.aiff
+ size : 200000
+ FORM : 307474 (should be 199992)
+ AIFF
+ COMM : 18
+ Sample Rate : 16000
+ Samples : 76857
+ Channels : 2
+ Sample Size : 16
+ SSND : 307436 (should be 199946)
+ Offset : 0
+ Block Size : 0
+
+ --------------------------------
+ Sample Rate : 16000
+ Frames : 76857
+ Channels : 2
+ Bit Width : 16
+ Format : 0x00020001
+ Sections : 1
+ Seekable : TRUE
+ Signal Max : 32766
+
+</PRE>
+
+
+</BODY>
+</HTML>
diff --git a/doc/tutorial.html b/doc/tutorial.html
new file mode 100644
index 0000000..e311239
--- /dev/null
+++ b/doc/tutorial.html
@@ -0,0 +1,34 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+
+<HEAD>
+ <TITLE>
+ libsndfile Tutorial
+ </TITLE>
+ <META NAME="Author" CONTENT="Erik de Castro Lopo (erikd AT mega-nerd DOT com)">
+ <LINK REL="stylesheet" HREF="libsndfile.css" TYPE="text/css" MEDIA="all">
+ <LINK REL="stylesheet" HREF="print.css" TYPE="text/css" MEDIA="print">
+</HEAD>
+
+<BODY>
+<!-- pepper -->
+<H1><BR>libsndfile Tutorial</H1>
+<!-- pepper -->
+<P>
+<b>More coming soon.</b>
+</P>
+<!-- pepper -->
+<P>
+For now, the best place to look for example code is the <tt>examples/</tt>
+directory of the source code distribution and the libsndfile test suite which
+is located in the <tt>tests/</tt> directory of the source code distribution.
+</P>
+<!-- pepper -->
+<!-- pepper -->
+<!-- pepper -->
+<!-- pepper -->
+<!-- pepper -->
+<!-- pepper -->
+</BODY>
+</HTML>
+
diff --git a/doc/win32.html b/doc/win32.html
new file mode 100644
index 0000000..6ee3153
--- /dev/null
+++ b/doc/win32.html
@@ -0,0 +1,53 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+
+<HEAD>
+ <TITLE>
+ Building libsndfile on Win32
+ </TITLE>
+ <META NAME="Author" CONTENT="Erik de Castro Lopo (erikd AT mega-nerd DOT com)">
+ <LINK REL="stylesheet" HREF="libsndfile.css" TYPE="text/css" MEDIA="all">
+ <LINK REL="stylesheet" HREF="print.css" TYPE="text/css" MEDIA="print">
+</HEAD>
+
+<BODY>
+<!-- pepper -->
+<H1><BR>Building libsndfile on Win32</H1>
+
+<P><B>
+Note : For pre-compiled binaries for windows, both for win32 and win64, see the
+main web page.
+</B></P>
+
+<P>
+There is currently only one way of building libsndfile for Win32 and Win64;
+cross compiling from Linux using the MinGW cross compiler.
+</P>
+
+<P>
+libsndfile is written to be compiled by a compiler which supports large
+chunks of the 1999 ISO C Standard.
+Unfortunately, the microsoft compiler supports close to nothing of this
+standard and hence is not suitable for libsndfile.
+</P>
+
+<P>
+It <b>may</b> be possible to compile libsndfile on windows using the
+ <a href="http://www.mingw.org/">MinGW</a>
+compiler suite, but I haven't tested that and have no interest in supporting
+that.
+</P>
+
+<!--===========================================================================-->
+
+<!-- pepper -->
+<!-- pepper -->
+<!-- pepper -->
+<BR>
+<!-- pepper -->
+<!-- pepper -->
+<!-- pepper -->
+<!-- pepper -->
+
+</BODY>
+</HTML>