Sound file Read/Write library
authorwittend99 <wittend99@01035d8c-6547-0410-b346-abe4f91aad63>
Sun, 13 May 2012 15:45:54 +0000 (15:45 +0000)
committerwittend99 <wittend99@01035d8c-6547-0410-b346-abe4f91aad63>
Sun, 13 May 2012 15:45:54 +0000 (15:45 +0000)
git-svn-id: https://svn.code.sf.net/p/freetel/code@432 01035d8c-6547-0410-b346-abe4f91aad63

54 files changed:
fdmdv2/libsndfile/ChangeLog [new file with mode: 0644]
fdmdv2/libsndfile/NEWS [new file with mode: 0644]
fdmdv2/libsndfile/Projects/w32-cygwin/Makefile [new file with mode: 0644]
fdmdv2/libsndfile/Projects/w32-cygwin/libsndfile-1.dll [new file with mode: 0644]
fdmdv2/libsndfile/Projects/w32-cygwin/sndfile.h [new file with mode: 0644]
fdmdv2/libsndfile/Projects/w32-cygwin/test.c [new file with mode: 0644]
fdmdv2/libsndfile/Projects/w32-cygwin/test.exe [new file with mode: 0644]
fdmdv2/libsndfile/Projects/w32-mingw/Debug/.d [new file with mode: 0644]
fdmdv2/libsndfile/Projects/w32-mingw/Debug/main.o.d [new file with mode: 0644]
fdmdv2/libsndfile/Projects/w32-mingw/Debug/test_sndfile.exe [new file with mode: 0644]
fdmdv2/libsndfile/Projects/w32-mingw/Makefile [new file with mode: 0644]
fdmdv2/libsndfile/Projects/w32-mingw/Release/.d [new file with mode: 0644]
fdmdv2/libsndfile/Projects/w32-mingw/Release/main.o.d [new file with mode: 0644]
fdmdv2/libsndfile/Projects/w32-mingw/Release/test_sndfile.exe [new file with mode: 0644]
fdmdv2/libsndfile/Projects/w32-mingw/libsndfile-1.dll [new file with mode: 0644]
fdmdv2/libsndfile/Projects/w32-mingw/main.cpp [new file with mode: 0644]
fdmdv2/libsndfile/Projects/w32-mingw/sndfile.h [new file with mode: 0644]
fdmdv2/libsndfile/Projects/w32-mingw/test.c [new file with mode: 0644]
fdmdv2/libsndfile/Projects/w32-mingw/test.exe [new file with mode: 0644]
fdmdv2/libsndfile/Projects/w32-mingw/test_sndfile.mk [new file with mode: 0644]
fdmdv2/libsndfile/Projects/w32-mingw/test_sndfile.project [new file with mode: 0644]
fdmdv2/libsndfile/Projects/w32-mingw/test_sndfile.txt [new file with mode: 0644]
fdmdv2/libsndfile/Projects/w32-vc7/test.cc [new file with mode: 0644]
fdmdv2/libsndfile/Projects/w32-vc7/test.sln [new file with mode: 0644]
fdmdv2/libsndfile/Projects/w32-vc7/test.vcproj [new file with mode: 0644]
fdmdv2/libsndfile/Projects/w32-vc9/test.cc [new file with mode: 0644]
fdmdv2/libsndfile/Projects/w32-vc9/test.sln [new file with mode: 0644]
fdmdv2/libsndfile/Projects/w32-vc9/test.vcproj [new file with mode: 0644]
fdmdv2/libsndfile/bin/libsndfile-1.dll [new file with mode: 0644]
fdmdv2/libsndfile/bin/sndfile-about.ex- [new file with mode: 0644]
fdmdv2/libsndfile/bin/sndfile-cmp.exe [new file with mode: 0644]
fdmdv2/libsndfile/bin/sndfile-convert.exe [new file with mode: 0644]
fdmdv2/libsndfile/bin/sndfile-info.exe [new file with mode: 0644]
fdmdv2/libsndfile/bin/sndfile-metadata-get.exe [new file with mode: 0644]
fdmdv2/libsndfile/bin/sndfile-metadata-set.exe [new file with mode: 0644]
fdmdv2/libsndfile/bin/sndfile-play.exe [new file with mode: 0644]
fdmdv2/libsndfile/doc/FAQ.html [new file with mode: 0644]
fdmdv2/libsndfile/doc/api.html [new file with mode: 0644]
fdmdv2/libsndfile/doc/bugs.html [new file with mode: 0644]
fdmdv2/libsndfile/doc/command.html [new file with mode: 0644]
fdmdv2/libsndfile/doc/dither.html [new file with mode: 0644]
fdmdv2/libsndfile/doc/embedded_files.html [new file with mode: 0644]
fdmdv2/libsndfile/doc/index.html [new file with mode: 0644]
fdmdv2/libsndfile/doc/libsndfile.css [new file with mode: 0644]
fdmdv2/libsndfile/doc/libsndfile.jpg [new file with mode: 0644]
fdmdv2/libsndfile/doc/lists.html [new file with mode: 0644]
fdmdv2/libsndfile/doc/sndfile_info.html [new file with mode: 0644]
fdmdv2/libsndfile/include/sndfile.h [new file with mode: 0644]
fdmdv2/libsndfile/include/sndfile.hh [new file with mode: 0644]
fdmdv2/libsndfile/lib/libsndfile-1.def [new file with mode: 0644]
fdmdv2/libsndfile/lib/libsndfile-1.lib [new file with mode: 0644]
fdmdv2/libsndfile/lib/pkgconfig/sndfile.pc [new file with mode: 0644]
fdmdv2/libsndfile/unins000.dat [new file with mode: 0644]
fdmdv2/libsndfile/unins000.exe [new file with mode: 0644]

diff --git a/fdmdv2/libsndfile/ChangeLog b/fdmdv2/libsndfile/ChangeLog
new file mode 100644 (file)
index 0000000..53353df
--- /dev/null
@@ -0,0 +1,9051 @@
+2011-07-13  Erik de Castro Lopo  <erikd AT mega-nerd DOT com>
+
+    * src/ogg_vorbis.c
+    Fix return value of SFC_SET_VBR_ENCODING_QUALITY command.
+
+    * doc/command.html
+    Document SFC_SET_VBR_ENCODING_QUALITY, SFC_GET/SET_LOOP_INFO and
+    SFC_GET_INSTRUMENT.
+
+    * 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/fdmdv2/libsndfile/NEWS b/fdmdv2/libsndfile/NEWS
new file mode 100644 (file)
index 0000000..9626d45
--- /dev/null
@@ -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/fdmdv2/libsndfile/Projects/w32-cygwin/Makefile b/fdmdv2/libsndfile/Projects/w32-cygwin/Makefile
new file mode 100644 (file)
index 0000000..a05f28c
--- /dev/null
@@ -0,0 +1,13 @@
+TARGETS = test.exe
+
+test.exe : test.c sndfile.h libsndfile-1.dll
+       gcc -I . $< libsndfile-1.dll -o $@
+
+# Need to patch the MinGW sndfile.h for Cygwin.
+sndfile.h : ../../include/sndfile.h
+       sed "s/typedef\s__int64\s/typedef int64_t /" $+ > $@
+
+# Need the DLL in the local directory.
+libsndfile-1.dll : ../../bin/libsndfile-1.dll
+       cp -f $+ $@
+
diff --git a/fdmdv2/libsndfile/Projects/w32-cygwin/libsndfile-1.dll b/fdmdv2/libsndfile/Projects/w32-cygwin/libsndfile-1.dll
new file mode 100644 (file)
index 0000000..545ffb5
Binary files /dev/null and b/fdmdv2/libsndfile/Projects/w32-cygwin/libsndfile-1.dll differ
diff --git a/fdmdv2/libsndfile/Projects/w32-cygwin/sndfile.h b/fdmdv2/libsndfile/Projects/w32-cygwin/sndfile.h
new file mode 100644 (file)
index 0000000..f6f1653
--- /dev/null
@@ -0,0 +1,666 @@
+/*
+** Copyright (C) 1999-2011Erik de Castro Lopo <erikd@mega-nerd.com>
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU Lesser General Public License as published by
+** the Free Software Foundation; either version 2.1 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+** GNU Lesser General Public License for more details.
+**
+** You should have received a copy of the GNU Lesser General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+*/
+
+/*
+** sndfile.h -- system-wide definitions
+**
+** API documentation is in the doc/ directory of the source code tarball
+** and at http://www.mega-nerd.com/libsndfile/api.html.
+*/
+
+#ifndef SNDFILE_H
+#define SNDFILE_H
+
+/* This is the version 1.0.X header file. */
+#define        SNDFILE_1
+
+#include <stdio.h>
+#include <sys/types.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+/* The following file types can be read and written.
+** A file type would consist of a major type (ie SF_FORMAT_WAV) bitwise
+** ORed with a minor type (ie SF_FORMAT_PCM). SF_FORMAT_TYPEMASK and
+** SF_FORMAT_SUBMASK can be used to separate the major and minor file
+** types.
+*/
+
+enum
+{      /* Major formats. */
+       SF_FORMAT_WAV                   = 0x010000,             /* Microsoft WAV format (little endian default). */
+       SF_FORMAT_AIFF                  = 0x020000,             /* Apple/SGI AIFF format (big endian). */
+       SF_FORMAT_AU                    = 0x030000,             /* Sun/NeXT AU format (big endian). */
+       SF_FORMAT_RAW                   = 0x040000,             /* RAW PCM data. */
+       SF_FORMAT_PAF                   = 0x050000,             /* Ensoniq PARIS file format. */
+       SF_FORMAT_SVX                   = 0x060000,             /* Amiga IFF / SVX8 / SV16 format. */
+       SF_FORMAT_NIST                  = 0x070000,             /* Sphere NIST format. */
+       SF_FORMAT_VOC                   = 0x080000,             /* VOC files. */
+       SF_FORMAT_IRCAM                 = 0x0A0000,             /* Berkeley/IRCAM/CARL */
+       SF_FORMAT_W64                   = 0x0B0000,             /* Sonic Foundry's 64 bit RIFF/WAV */
+       SF_FORMAT_MAT4                  = 0x0C0000,             /* Matlab (tm) V4.2 / GNU Octave 2.0 */
+       SF_FORMAT_MAT5                  = 0x0D0000,             /* Matlab (tm) V5.0 / GNU Octave 2.1 */
+       SF_FORMAT_PVF                   = 0x0E0000,             /* Portable Voice Format */
+       SF_FORMAT_XI                    = 0x0F0000,             /* Fasttracker 2 Extended Instrument */
+       SF_FORMAT_HTK                   = 0x100000,             /* HMM Tool Kit format */
+       SF_FORMAT_SDS                   = 0x110000,             /* Midi Sample Dump Standard */
+       SF_FORMAT_AVR                   = 0x120000,             /* Audio Visual Research */
+       SF_FORMAT_WAVEX                 = 0x130000,             /* MS WAVE with WAVEFORMATEX */
+       SF_FORMAT_SD2                   = 0x160000,             /* Sound Designer 2 */
+       SF_FORMAT_FLAC                  = 0x170000,             /* FLAC lossless file format */
+       SF_FORMAT_CAF                   = 0x180000,             /* Core Audio File format */
+       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 / Dialogix ADPCM */
+
+       SF_FORMAT_G721_32               = 0x0030,               /* 32kbs G721 ADPCM encoding. */
+       SF_FORMAT_G723_24               = 0x0031,               /* 24kbs G723 ADPCM encoding. */
+       SF_FORMAT_G723_40               = 0x0032,               /* 40kbs G723 ADPCM encoding. */
+
+       SF_FORMAT_DWVW_12               = 0x0040,               /* 12 bit Delta Width Variable Word encoding. */
+       SF_FORMAT_DWVW_16               = 0x0041,               /* 16 bit Delta Width Variable Word encoding. */
+       SF_FORMAT_DWVW_24               = 0x0042,               /* 24 bit Delta Width Variable Word encoding. */
+       SF_FORMAT_DWVW_N                = 0x0043,               /* N bit Delta Width Variable Word encoding. */
+
+       SF_FORMAT_DPCM_8                = 0x0050,               /* 8 bit differential PCM (XI only) */
+       SF_FORMAT_DPCM_16               = 0x0051,               /* 16 bit differential PCM (XI only) */
+
+       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
+} ;
+
+/*
+** The following are the valid command numbers for the sf_command()
+** interface.  The use of these commands is documented in the file
+** command.html in the doc directory of the source code distribution.
+*/
+
+enum
+{      SFC_GET_LIB_VERSION                             = 0x1000,
+       SFC_GET_LOG_INFO                                = 0x1001,
+       SFC_GET_CURRENT_SF_INFO                 = 0x1002,
+
+
+       SFC_GET_NORM_DOUBLE                             = 0x1010,
+       SFC_GET_NORM_FLOAT                              = 0x1011,
+       SFC_SET_NORM_DOUBLE                             = 0x1012,
+       SFC_SET_NORM_FLOAT                              = 0x1013,
+       SFC_SET_SCALE_FLOAT_INT_READ    = 0x1014,
+       SFC_SET_SCALE_INT_FLOAT_WRITE   = 0x1015,
+
+       SFC_GET_SIMPLE_FORMAT_COUNT             = 0x1020,
+       SFC_GET_SIMPLE_FORMAT                   = 0x1021,
+
+       SFC_GET_FORMAT_INFO                             = 0x1028,
+
+       SFC_GET_FORMAT_MAJOR_COUNT              = 0x1030,
+       SFC_GET_FORMAT_MAJOR                    = 0x1031,
+       SFC_GET_FORMAT_SUBTYPE_COUNT    = 0x1032,
+       SFC_GET_FORMAT_SUBTYPE                  = 0x1033,
+
+       SFC_CALC_SIGNAL_MAX                             = 0x1040,
+       SFC_CALC_NORM_SIGNAL_MAX                = 0x1041,
+       SFC_CALC_MAX_ALL_CHANNELS               = 0x1042,
+       SFC_CALC_NORM_MAX_ALL_CHANNELS  = 0x1043,
+       SFC_GET_SIGNAL_MAX                              = 0x1044,
+       SFC_GET_MAX_ALL_CHANNELS                = 0x1045,
+
+       SFC_SET_ADD_PEAK_CHUNK                  = 0x1050,
+       SFC_SET_ADD_HEADER_PAD_CHUNK    = 0x1051,
+
+       SFC_UPDATE_HEADER_NOW                   = 0x1060,
+       SFC_SET_UPDATE_HEADER_AUTO              = 0x1061,
+
+       SFC_FILE_TRUNCATE                               = 0x1080,
+
+       SFC_SET_RAW_START_OFFSET                = 0x1090,
+
+       SFC_SET_DITHER_ON_WRITE                 = 0x10A0,
+       SFC_SET_DITHER_ON_READ                  = 0x10A1,
+
+       SFC_GET_DITHER_INFO_COUNT               = 0x10A2,
+       SFC_GET_DITHER_INFO                             = 0x10A3,
+
+       SFC_GET_EMBED_FILE_INFO                 = 0x10B0,
+
+       SFC_SET_CLIPPING                                = 0x10C0,
+       SFC_GET_CLIPPING                                = 0x10C1,
+
+       SFC_GET_INSTRUMENT                              = 0x10D0,
+       SFC_SET_INSTRUMENT                              = 0x10D1,
+
+       SFC_GET_LOOP_INFO                               = 0x10E0,
+
+       SFC_GET_BROADCAST_INFO                  = 0x10F0,
+       SFC_SET_BROADCAST_INFO                  = 0x10F1,
+
+       SFC_GET_CHANNEL_MAP_INFO                = 0x1100,
+       SFC_SET_CHANNEL_MAP_INFO                = 0x1101,
+
+       SFC_RAW_DATA_NEEDS_ENDSWAP              = 0x1110,
+
+       /* Support for Wavex Ambisonics Format */
+       SFC_WAVEX_SET_AMBISONIC                 = 0x1200,
+       SFC_WAVEX_GET_AMBISONIC                 = 0x1201,
+
+       SFC_SET_VBR_ENCODING_QUALITY    = 0x1300,
+
+       /* Following commands for testing only. */
+       SFC_TEST_IEEE_FLOAT_REPLACE             = 0x6001,
+
+       /*
+       ** SFC_SET_ADD_* values are deprecated and will disappear at some
+       ** time in the future. They are guaranteed to be here up to and
+       ** including version 1.0.8 to avoid breakage of existng software.
+       ** They currently do nothing and will continue to do nothing.
+       */
+       SFC_SET_ADD_DITHER_ON_WRITE             = 0x1070,
+       SFC_SET_ADD_DITHER_ON_READ              = 0x1071
+} ;
+
+
+/*
+** String types that can be set and read from files. Not all file types
+** support this and even the file types which support one, may not support
+** all string types.
+*/
+
+enum
+{      SF_STR_TITLE                                    = 0x01,
+       SF_STR_COPYRIGHT                                = 0x02,
+       SF_STR_SOFTWARE                                 = 0x03,
+       SF_STR_ARTIST                                   = 0x04,
+       SF_STR_COMMENT                                  = 0x05,
+       SF_STR_DATE                                             = 0x06,
+       SF_STR_ALBUM                                    = 0x07,
+       SF_STR_LICENSE                                  = 0x08,
+       SF_STR_TRACKNUMBER                              = 0x09,
+       SF_STR_GENRE                                    = 0x10
+} ;
+
+/*
+** Use the following as the start and end index when doing metadata
+** transcoding.
+*/
+
+#define        SF_STR_FIRST    SF_STR_TITLE
+#define        SF_STR_LAST             SF_STR_GENRE
+
+enum
+{      /* True and false */
+       SF_FALSE        = 0,
+       SF_TRUE         = 1,
+
+       /* Modes for opening files. */
+       SFM_READ        = 0x10,
+       SFM_WRITE       = 0x20,
+       SFM_RDWR        = 0x30,
+
+       SF_AMBISONIC_NONE               = 0x40,
+       SF_AMBISONIC_B_FORMAT   = 0x41
+} ;
+
+/* Public error values. These are guaranteed to remain unchanged for the duration
+** of the library major version number.
+** There are also a large number of private error numbers which are internal to
+** the library which can change at any time.
+*/
+
+enum
+{      SF_ERR_NO_ERROR                         = 0,
+       SF_ERR_UNRECOGNISED_FORMAT      = 1,
+       SF_ERR_SYSTEM                           = 2,
+       SF_ERR_MALFORMED_FILE           = 3,
+       SF_ERR_UNSUPPORTED_ENCODING     = 4
+} ;
+
+
+/* Channel map values (used with SFC_SET/GET_CHANNEL_MAP).
+*/
+
+enum
+{      SF_CHANNEL_MAP_INVALID = 0,
+       SF_CHANNEL_MAP_MONO = 1,
+       SF_CHANNEL_MAP_LEFT,                                    /* Apple calls this 'Left' */
+       SF_CHANNEL_MAP_RIGHT,                                   /* Apple calls this 'Right' */
+       SF_CHANNEL_MAP_CENTER,                                  /* Apple calls this 'Center' */
+       SF_CHANNEL_MAP_FRONT_LEFT,
+       SF_CHANNEL_MAP_FRONT_RIGHT,
+       SF_CHANNEL_MAP_FRONT_CENTER,
+       SF_CHANNEL_MAP_REAR_CENTER,                             /* Apple calls this 'Center Surround', Msft calls this 'Back Center' */
+       SF_CHANNEL_MAP_REAR_LEFT,                               /* Apple calls this 'Left Surround', Msft calls this 'Back Left' */
+       SF_CHANNEL_MAP_REAR_RIGHT,                              /* Apple calls this 'Right Surround', Msft calls this 'Back Right' */
+       SF_CHANNEL_MAP_LFE,                                             /* Apple calls this 'LFEScreen', Msft calls this 'Low Frequency'  */
+       SF_CHANNEL_MAP_FRONT_LEFT_OF_CENTER,    /* Apple calls this 'Left Center' */
+       SF_CHANNEL_MAP_FRONT_RIGHT_OF_CENTER,   /* Apple calls this 'Right Center */
+       SF_CHANNEL_MAP_SIDE_LEFT,                               /* Apple calls this 'Left Surround Direct' */
+       SF_CHANNEL_MAP_SIDE_RIGHT,                              /* Apple calls this 'Right Surround Direct' */
+       SF_CHANNEL_MAP_TOP_CENTER,                              /* Apple calls this 'Top Center Surround' */
+       SF_CHANNEL_MAP_TOP_FRONT_LEFT,                  /* Apple calls this 'Vertical Height Left' */
+       SF_CHANNEL_MAP_TOP_FRONT_RIGHT,                 /* Apple calls this 'Vertical Height Right' */
+       SF_CHANNEL_MAP_TOP_FRONT_CENTER,                /* Apple calls this 'Vertical Height Center' */
+       SF_CHANNEL_MAP_TOP_REAR_LEFT,                   /* Apple and MS call this 'Top Back Left' */
+       SF_CHANNEL_MAP_TOP_REAR_RIGHT,                  /* Apple and MS call this 'Top Back Right' */
+       SF_CHANNEL_MAP_TOP_REAR_CENTER,                 /* Apple and MS call this 'Top Back Center' */
+
+       SF_CHANNEL_MAP_AMBISONIC_B_W,
+       SF_CHANNEL_MAP_AMBISONIC_B_X,
+       SF_CHANNEL_MAP_AMBISONIC_B_Y,
+       SF_CHANNEL_MAP_AMBISONIC_B_Z,
+
+       SF_CHANNEL_MAP_MAX
+} ;
+
+
+/* A SNDFILE* pointer can be passed around much like stdio.h's FILE* pointer. */
+
+typedef        struct SNDFILE_tag      SNDFILE ;
+
+/* The following typedef is system specific and is defined when libsndfile is
+** compiled. sf_count_t will be a 64 bit value when the underlying OS allows
+** 64 bit file offsets.
+** On windows, we need to allow the same header file to be compiler by both GCC
+** and the Microsoft compiler.
+*/
+
+#if (defined (_MSCVER) || defined (_MSC_VER))
+typedef __int64        sf_count_t ;
+#define SF_COUNT_MAX           0x7fffffffffffffffi64
+#else
+typedef __int64 sf_count_t ;
+#define SF_COUNT_MAX           0x7FFFFFFFFFFFFFFFLL
+#endif
+
+
+/* A pointer to a SF_INFO structure is passed to sf_open () and filled in.
+** On write, the SF_INFO structure is filled in by the user and passed into
+** sf_open ().
+*/
+
+struct SF_INFO
+{      sf_count_t      frames ;                /* Used to be called samples.  Changed to avoid confusion. */
+       int                     samplerate ;
+       int                     channels ;
+       int                     format ;
+       int                     sections ;
+       int                     seekable ;
+} ;
+
+typedef        struct SF_INFO SF_INFO ;
+
+/* The SF_FORMAT_INFO struct is used to retrieve information about the sound
+** file formats libsndfile supports using the sf_command () interface.
+**
+** Using this interface will allow applications to support new file formats
+** and encoding types when libsndfile is upgraded, without requiring
+** re-compilation of the application.
+**
+** Please consult the libsndfile documentation (particularly the information
+** on the sf_command () interface) for examples of its use.
+*/
+
+typedef struct
+{      int                     format ;
+       const char      *name ;
+       const char      *extension ;
+} SF_FORMAT_INFO ;
+
+/*
+** Enums and typedefs for adding dither on read and write.
+** See the html documentation for sf_command(), SFC_SET_DITHER_ON_WRITE
+** and SFC_SET_DITHER_ON_READ.
+*/
+
+enum
+{      SFD_DEFAULT_LEVEL       = 0,
+       SFD_CUSTOM_LEVEL        = 0x40000000,
+
+       SFD_NO_DITHER           = 500,
+       SFD_WHITE                       = 501,
+       SFD_TRIANGULAR_PDF      = 502
+} ;
+
+typedef struct
+{      int                     type ;
+       double          level ;
+       const char      *name ;
+} SF_DITHER_INFO ;
+
+/* Struct used to retrieve information about a file embedded within a
+** larger file. See SFC_GET_EMBED_FILE_INFO.
+*/
+
+typedef struct
+{      sf_count_t      offset ;
+       sf_count_t      length ;
+} SF_EMBED_FILE_INFO ;
+
+/*
+**     Structs used to retrieve music sample information from a file.
+*/
+
+enum
+{      /*
+       **      The loop mode field in SF_INSTRUMENT will be one of the following.
+       */
+       SF_LOOP_NONE = 800,
+       SF_LOOP_FORWARD,
+       SF_LOOP_BACKWARD,
+       SF_LOOP_ALTERNATING
+} ;
+
+typedef struct
+{      int gain ;
+       char basenote, detune ;
+       char velocity_lo, velocity_hi ;
+       char key_lo, key_hi ;
+       int loop_count ;
+
+       struct
+       {       int mode ;
+               unsigned int start ;
+               unsigned int end ;
+               unsigned int count ;
+       } loops [16] ; /* make variable in a sensible way */
+} SF_INSTRUMENT ;
+
+
+
+/* Struct used to retrieve loop information from a file.*/
+typedef struct
+{
+       short   time_sig_num ;  /* any positive integer    > 0  */
+       short   time_sig_den ;  /* any positive power of 2 > 0  */
+       int             loop_mode ;             /* see SF_LOOP enum             */
+
+       int             num_beats ;             /* this is NOT the amount of quarter notes !!!*/
+                                                       /* a full bar of 4/4 is 4 beats */
+                                                       /* a full bar of 7/8 is 7 beats */
+
+       float   bpm ;                   /* suggestion, as it can be calculated using other fields:*/
+                                                       /* file's lenght, file's sampleRate and our time_sig_den*/
+                                                       /* -> bpms are always the amount of _quarter notes_ per minute */
+
+       int     root_key ;                      /* MIDI note, or -1 for None */
+       int future [6] ;
+} SF_LOOP_INFO ;
+
+
+/*     Struct used to retrieve broadcast (EBU) information from a file.
+**     Strongly (!) based on EBU "bext" chunk format used in Broadcast WAVE.
+*/
+#define        SF_BROADCAST_INFO_VAR(coding_hist_size) \
+                       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 [coding_hist_size] ; \
+                       }
+
+/* SF_BROADCAST_INFO is the above struct with coding_history field of 256 bytes. */
+typedef SF_BROADCAST_INFO_VAR (256) SF_BROADCAST_INFO ;
+
+
+/*     Virtual I/O functionality. */
+
+typedef sf_count_t             (*sf_vio_get_filelen)   (void *user_data) ;
+typedef sf_count_t             (*sf_vio_seek)          (sf_count_t offset, int whence, void *user_data) ;
+typedef sf_count_t             (*sf_vio_read)          (void *ptr, sf_count_t count, void *user_data) ;
+typedef sf_count_t             (*sf_vio_write)         (const void *ptr, sf_count_t count, void *user_data) ;
+typedef sf_count_t             (*sf_vio_tell)          (void *user_data) ;
+
+struct SF_VIRTUAL_IO
+{      sf_vio_get_filelen      get_filelen ;
+       sf_vio_seek                     seek ;
+       sf_vio_read                     read ;
+       sf_vio_write            write ;
+       sf_vio_tell                     tell ;
+} ;
+
+typedef        struct SF_VIRTUAL_IO SF_VIRTUAL_IO ;
+
+
+/* Open the specified file for read, write or both. On error, this will
+** return a NULL pointer. To find the error number, pass a NULL SNDFILE
+** to sf_strerror ().
+** All calls to sf_open() should be matched with a call to sf_close().
+*/
+
+SNDFILE*       sf_open         (const char *path, int mode, SF_INFO *sfinfo) ;
+
+
+/* Use the existing file descriptor to create a SNDFILE object. If close_desc
+** is TRUE, the file descriptor will be closed when sf_close() is called. If
+** it is FALSE, the descritor will not be closed.
+** When passed a descriptor like this, the library will assume that the start
+** of file header is at the current file offset. This allows sound files within
+** larger container files to be read and/or written.
+** On error, this will return a NULL pointer. To find the error number, pass a
+** NULL SNDFILE to sf_strerror ().
+** All calls to sf_open_fd() should be matched with a call to sf_close().
+
+*/
+
+SNDFILE*       sf_open_fd      (int fd, int mode, SF_INFO *sfinfo, int close_desc) ;
+
+SNDFILE*       sf_open_virtual (SF_VIRTUAL_IO *sfvirtual, int mode, SF_INFO *sfinfo, void *user_data) ;
+
+
+/* sf_error () returns a error number which can be translated to a text
+** string using sf_error_number().
+*/
+
+int            sf_error                (SNDFILE *sndfile) ;
+
+
+/* sf_strerror () returns to the caller a pointer to the current error message for
+** the given SNDFILE.
+*/
+
+const char* sf_strerror (SNDFILE *sndfile) ;
+
+
+/* sf_error_number () allows the retrieval of the error string for each internal
+** error number.
+**
+*/
+
+const char*    sf_error_number (int errnum) ;
+
+
+/* The following two error functions are deprecated but they will remain in the
+** library for the forseeable future. The function sf_strerror() should be used
+** in their place.
+*/
+
+int            sf_perror               (SNDFILE *sndfile) ;
+int            sf_error_str    (SNDFILE *sndfile, char* str, size_t len) ;
+
+
+/* Return TRUE if fields of the SF_INFO struct are a valid combination of values. */
+
+int            sf_command      (SNDFILE *sndfile, int command, void *data, int datasize) ;
+
+
+/* Return TRUE if fields of the SF_INFO struct are a valid combination of values. */
+
+int            sf_format_check (const SF_INFO *info) ;
+
+
+/* Seek within the waveform data chunk of the SNDFILE. sf_seek () uses
+** the same values for whence (SEEK_SET, SEEK_CUR and SEEK_END) as
+** stdio.h function fseek ().
+** An offset of zero with whence set to SEEK_SET will position the
+** read / write pointer to the first data sample.
+** On success sf_seek returns the current position in (multi-channel)
+** samples from the start of the file.
+** Please see the libsndfile documentation for moving the read pointer
+** separately from the write pointer on files open in mode SFM_RDWR.
+** On error all of these functions return -1.
+*/
+
+sf_count_t     sf_seek                 (SNDFILE *sndfile, sf_count_t frames, int whence) ;
+
+
+/* Functions for retrieving and setting string data within sound files.
+** Not all file types support this features; AIFF and WAV do. For both
+** functions, the str_type parameter must be one of the SF_STR_* values
+** defined above.
+** On error, sf_set_string() returns non-zero while sf_get_string()
+** returns NULL.
+*/
+
+int sf_set_string (SNDFILE *sndfile, int str_type, const char* str) ;
+
+const char* sf_get_string (SNDFILE *sndfile, int str_type) ;
+
+
+/* Return the library version string. */
+
+const char * sf_version_string (void) ;
+
+
+/* Functions for reading/writing the waveform data of a sound file.
+*/
+
+sf_count_t     sf_read_raw             (SNDFILE *sndfile, void *ptr, sf_count_t bytes) ;
+sf_count_t     sf_write_raw    (SNDFILE *sndfile, const void *ptr, sf_count_t bytes) ;
+
+
+/* Functions for reading and writing the data chunk in terms of frames.
+** The number of items actually read/written = frames * number of channels.
+**     sf_xxxx_raw             read/writes the raw data bytes from/to the file
+**     sf_xxxx_short   passes data in the native short format
+**     sf_xxxx_int             passes data in the native int format
+**     sf_xxxx_float   passes data in the native float format
+**     sf_xxxx_double  passes data in the native double format
+** All of these read/write function return number of frames read/written.
+*/
+
+sf_count_t     sf_readf_short  (SNDFILE *sndfile, short *ptr, sf_count_t frames) ;
+sf_count_t     sf_writef_short (SNDFILE *sndfile, const short *ptr, sf_count_t frames) ;
+
+sf_count_t     sf_readf_int    (SNDFILE *sndfile, int *ptr, sf_count_t frames) ;
+sf_count_t     sf_writef_int   (SNDFILE *sndfile, const int *ptr, sf_count_t frames) ;
+
+sf_count_t     sf_readf_float  (SNDFILE *sndfile, float *ptr, sf_count_t frames) ;
+sf_count_t     sf_writef_float (SNDFILE *sndfile, const float *ptr, sf_count_t frames) ;
+
+sf_count_t     sf_readf_double         (SNDFILE *sndfile, double *ptr, sf_count_t frames) ;
+sf_count_t     sf_writef_double        (SNDFILE *sndfile, const double *ptr, sf_count_t frames) ;
+
+
+/* Functions for reading and writing the data chunk in terms of items.
+** Otherwise similar to above.
+** All of these read/write function return number of items read/written.
+*/
+
+sf_count_t     sf_read_short   (SNDFILE *sndfile, short *ptr, sf_count_t items) ;
+sf_count_t     sf_write_short  (SNDFILE *sndfile, const short *ptr, sf_count_t items) ;
+
+sf_count_t     sf_read_int             (SNDFILE *sndfile, int *ptr, sf_count_t items) ;
+sf_count_t     sf_write_int    (SNDFILE *sndfile, const int *ptr, sf_count_t items) ;
+
+sf_count_t     sf_read_float   (SNDFILE *sndfile, float *ptr, sf_count_t items) ;
+sf_count_t     sf_write_float  (SNDFILE *sndfile, const float *ptr, sf_count_t items) ;
+
+sf_count_t     sf_read_double  (SNDFILE *sndfile, double *ptr, sf_count_t items) ;
+sf_count_t     sf_write_double (SNDFILE *sndfile, const double *ptr, sf_count_t items) ;
+
+
+/* Close the SNDFILE and clean up all memory allocations associated with this
+** file.
+** Returns 0 on success, or an error number.
+*/
+
+int            sf_close                (SNDFILE *sndfile) ;
+
+
+/* If the file is opened SFM_WRITE or SFM_RDWR, call fsync() on the file
+** to force the writing of data to disk. If the file is opened SFM_READ
+** no action is taken.
+*/
+
+void   sf_write_sync   (SNDFILE *sndfile) ;
+
+
+
+/* The function sf_wchar_open() is Windows Only!
+** Open a file passing in a Windows Unicode filename. Otherwise, this is
+** the same as sf_open().
+**
+** In order for this to work, you need to do the following:
+**
+**             #include <windows.h>
+**             #define ENABLE_SNDFILE_WINDOWS_PROTOTYPES 1
+**             #including <sndfile.h>
+*/
+
+#if (defined (ENABLE_SNDFILE_WINDOWS_PROTOTYPES) && ENABLE_SNDFILE_WINDOWS_PROTOTYPES)
+SNDFILE* sf_wchar_open (LPCWSTR wpath, int mode, SF_INFO *sfinfo) ;
+#endif
+
+
+
+#ifdef __cplusplus
+}              /* extern "C" */
+#endif /* __cplusplus */
+
+#endif /* SNDFILE_H */
+
diff --git a/fdmdv2/libsndfile/Projects/w32-cygwin/test.c b/fdmdv2/libsndfile/Projects/w32-cygwin/test.c
new file mode 100644 (file)
index 0000000..a6fe9e0
--- /dev/null
@@ -0,0 +1,14 @@
+#include <stdio.h>\r
+\r
+#include <sndfile.h>\r
+\r
+int\r
+main (void)\r
+{\r
+       char buf [1024] ;\r
+\r
+       sf_command (NULL, SFC_GET_LIB_VERSION, buf, sizeof (buf)) ;\r
+       puts (buf) ;\r
+\r
+       return 0 ;\r
+}\r
diff --git a/fdmdv2/libsndfile/Projects/w32-cygwin/test.exe b/fdmdv2/libsndfile/Projects/w32-cygwin/test.exe
new file mode 100644 (file)
index 0000000..54c0349
Binary files /dev/null and b/fdmdv2/libsndfile/Projects/w32-cygwin/test.exe differ
diff --git a/fdmdv2/libsndfile/Projects/w32-mingw/Debug/.d b/fdmdv2/libsndfile/Projects/w32-mingw/Debug/.d
new file mode 100644 (file)
index 0000000..950b468
--- /dev/null
@@ -0,0 +1 @@
+"" \r
diff --git a/fdmdv2/libsndfile/Projects/w32-mingw/Debug/main.o.d b/fdmdv2/libsndfile/Projects/w32-mingw/Debug/main.o.d
new file mode 100644 (file)
index 0000000..ffb8c69
--- /dev/null
@@ -0,0 +1,5 @@
+Debug/main.o: \\r
+ C:/Users/wittend/Projects/libsndfile/Projects/w32-mingw/main.cpp \\r
+ C:/Users/wittend/Projects/libsndfile/Projects/w32-mingw/sndfile.h\r
+\r
+C:/Users/wittend/Projects/libsndfile/Projects/w32-mingw/sndfile.h:\r
diff --git a/fdmdv2/libsndfile/Projects/w32-mingw/Debug/test_sndfile.exe b/fdmdv2/libsndfile/Projects/w32-mingw/Debug/test_sndfile.exe
new file mode 100644 (file)
index 0000000..48c7ba6
Binary files /dev/null and b/fdmdv2/libsndfile/Projects/w32-mingw/Debug/test_sndfile.exe differ
diff --git a/fdmdv2/libsndfile/Projects/w32-mingw/Makefile b/fdmdv2/libsndfile/Projects/w32-mingw/Makefile
new file mode 100644 (file)
index 0000000..6ebceec
--- /dev/null
@@ -0,0 +1,13 @@
+TARGETS = test.exe
+
+test.exe : test.c sndfile.h libsndfile-1.dll
+       gcc -I . $< libsndfile-1.dll -o $@
+
+# Need to the MinGW sndfile.h
+sndfile.h : ../../include/sndfile.h
+       cp -f $+ $@
+
+# Need the DLL in the local directory.
+libsndfile-1.dll : ../../bin/libsndfile-1.dll
+       cp -f $+ $@
+
diff --git a/fdmdv2/libsndfile/Projects/w32-mingw/Release/.d b/fdmdv2/libsndfile/Projects/w32-mingw/Release/.d
new file mode 100644 (file)
index 0000000..950b468
--- /dev/null
@@ -0,0 +1 @@
+"" \r
diff --git a/fdmdv2/libsndfile/Projects/w32-mingw/Release/main.o.d b/fdmdv2/libsndfile/Projects/w32-mingw/Release/main.o.d
new file mode 100644 (file)
index 0000000..93701e4
--- /dev/null
@@ -0,0 +1,5 @@
+Release/main.o: \\r
+ C:/Users/wittend/Projects/libsndfile/Projects/w32-mingw/main.cpp \\r
+ C:/Users/wittend/Projects/libsndfile/Projects/w32-mingw/sndfile.h\r
+\r
+C:/Users/wittend/Projects/libsndfile/Projects/w32-mingw/sndfile.h:\r
diff --git a/fdmdv2/libsndfile/Projects/w32-mingw/Release/test_sndfile.exe b/fdmdv2/libsndfile/Projects/w32-mingw/Release/test_sndfile.exe
new file mode 100644 (file)
index 0000000..e7732f8
Binary files /dev/null and b/fdmdv2/libsndfile/Projects/w32-mingw/Release/test_sndfile.exe differ
diff --git a/fdmdv2/libsndfile/Projects/w32-mingw/libsndfile-1.dll b/fdmdv2/libsndfile/Projects/w32-mingw/libsndfile-1.dll
new file mode 100644 (file)
index 0000000..545ffb5
Binary files /dev/null and b/fdmdv2/libsndfile/Projects/w32-mingw/libsndfile-1.dll differ
diff --git a/fdmdv2/libsndfile/Projects/w32-mingw/main.cpp b/fdmdv2/libsndfile/Projects/w32-mingw/main.cpp
new file mode 100644 (file)
index 0000000..52d432a
--- /dev/null
@@ -0,0 +1,13 @@
+#include <stdio.h>
+#include "sndfile.h"\r
+
+int main(int argc, char **argv)
+{
+    char buf [1024] ;\r
+\r
+    sf_command (NULL, SFC_GET_LIB_VERSION, buf, sizeof (buf)) ;\r
+    puts (buf) ;\r
+    printf("\nhello world\n");
+\r
+    return 0 ;\r
+}
diff --git a/fdmdv2/libsndfile/Projects/w32-mingw/sndfile.h b/fdmdv2/libsndfile/Projects/w32-mingw/sndfile.h
new file mode 100644 (file)
index 0000000..f6f1653
--- /dev/null
@@ -0,0 +1,666 @@
+/*
+** Copyright (C) 1999-2011Erik de Castro Lopo <erikd@mega-nerd.com>
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU Lesser General Public License as published by
+** the Free Software Foundation; either version 2.1 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+** GNU Lesser General Public License for more details.
+**
+** You should have received a copy of the GNU Lesser General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+*/
+
+/*
+** sndfile.h -- system-wide definitions
+**
+** API documentation is in the doc/ directory of the source code tarball
+** and at http://www.mega-nerd.com/libsndfile/api.html.
+*/
+
+#ifndef SNDFILE_H
+#define SNDFILE_H
+
+/* This is the version 1.0.X header file. */
+#define        SNDFILE_1
+
+#include <stdio.h>
+#include <sys/types.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+/* The following file types can be read and written.
+** A file type would consist of a major type (ie SF_FORMAT_WAV) bitwise
+** ORed with a minor type (ie SF_FORMAT_PCM). SF_FORMAT_TYPEMASK and
+** SF_FORMAT_SUBMASK can be used to separate the major and minor file
+** types.
+*/
+
+enum
+{      /* Major formats. */
+       SF_FORMAT_WAV                   = 0x010000,             /* Microsoft WAV format (little endian default). */
+       SF_FORMAT_AIFF                  = 0x020000,             /* Apple/SGI AIFF format (big endian). */
+       SF_FORMAT_AU                    = 0x030000,             /* Sun/NeXT AU format (big endian). */
+       SF_FORMAT_RAW                   = 0x040000,             /* RAW PCM data. */
+       SF_FORMAT_PAF                   = 0x050000,             /* Ensoniq PARIS file format. */
+       SF_FORMAT_SVX                   = 0x060000,             /* Amiga IFF / SVX8 / SV16 format. */
+       SF_FORMAT_NIST                  = 0x070000,             /* Sphere NIST format. */
+       SF_FORMAT_VOC                   = 0x080000,             /* VOC files. */
+       SF_FORMAT_IRCAM                 = 0x0A0000,             /* Berkeley/IRCAM/CARL */
+       SF_FORMAT_W64                   = 0x0B0000,             /* Sonic Foundry's 64 bit RIFF/WAV */
+       SF_FORMAT_MAT4                  = 0x0C0000,             /* Matlab (tm) V4.2 / GNU Octave 2.0 */
+       SF_FORMAT_MAT5                  = 0x0D0000,             /* Matlab (tm) V5.0 / GNU Octave 2.1 */
+       SF_FORMAT_PVF                   = 0x0E0000,             /* Portable Voice Format */
+       SF_FORMAT_XI                    = 0x0F0000,             /* Fasttracker 2 Extended Instrument */
+       SF_FORMAT_HTK                   = 0x100000,             /* HMM Tool Kit format */
+       SF_FORMAT_SDS                   = 0x110000,             /* Midi Sample Dump Standard */
+       SF_FORMAT_AVR                   = 0x120000,             /* Audio Visual Research */
+       SF_FORMAT_WAVEX                 = 0x130000,             /* MS WAVE with WAVEFORMATEX */
+       SF_FORMAT_SD2                   = 0x160000,             /* Sound Designer 2 */
+       SF_FORMAT_FLAC                  = 0x170000,             /* FLAC lossless file format */
+       SF_FORMAT_CAF                   = 0x180000,             /* Core Audio File format */
+       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 / Dialogix ADPCM */
+
+       SF_FORMAT_G721_32               = 0x0030,               /* 32kbs G721 ADPCM encoding. */
+       SF_FORMAT_G723_24               = 0x0031,               /* 24kbs G723 ADPCM encoding. */
+       SF_FORMAT_G723_40               = 0x0032,               /* 40kbs G723 ADPCM encoding. */
+
+       SF_FORMAT_DWVW_12               = 0x0040,               /* 12 bit Delta Width Variable Word encoding. */
+       SF_FORMAT_DWVW_16               = 0x0041,               /* 16 bit Delta Width Variable Word encoding. */
+       SF_FORMAT_DWVW_24               = 0x0042,               /* 24 bit Delta Width Variable Word encoding. */
+       SF_FORMAT_DWVW_N                = 0x0043,               /* N bit Delta Width Variable Word encoding. */
+
+       SF_FORMAT_DPCM_8                = 0x0050,               /* 8 bit differential PCM (XI only) */
+       SF_FORMAT_DPCM_16               = 0x0051,               /* 16 bit differential PCM (XI only) */
+
+       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
+} ;
+
+/*
+** The following are the valid command numbers for the sf_command()
+** interface.  The use of these commands is documented in the file
+** command.html in the doc directory of the source code distribution.
+*/
+
+enum
+{      SFC_GET_LIB_VERSION                             = 0x1000,
+       SFC_GET_LOG_INFO                                = 0x1001,
+       SFC_GET_CURRENT_SF_INFO                 = 0x1002,
+
+
+       SFC_GET_NORM_DOUBLE                             = 0x1010,
+       SFC_GET_NORM_FLOAT                              = 0x1011,
+       SFC_SET_NORM_DOUBLE                             = 0x1012,
+       SFC_SET_NORM_FLOAT                              = 0x1013,
+       SFC_SET_SCALE_FLOAT_INT_READ    = 0x1014,
+       SFC_SET_SCALE_INT_FLOAT_WRITE   = 0x1015,
+
+       SFC_GET_SIMPLE_FORMAT_COUNT             = 0x1020,
+       SFC_GET_SIMPLE_FORMAT                   = 0x1021,
+
+       SFC_GET_FORMAT_INFO                             = 0x1028,
+
+       SFC_GET_FORMAT_MAJOR_COUNT              = 0x1030,
+       SFC_GET_FORMAT_MAJOR                    = 0x1031,
+       SFC_GET_FORMAT_SUBTYPE_COUNT    = 0x1032,
+       SFC_GET_FORMAT_SUBTYPE                  = 0x1033,
+
+       SFC_CALC_SIGNAL_MAX                             = 0x1040,
+       SFC_CALC_NORM_SIGNAL_MAX                = 0x1041,
+       SFC_CALC_MAX_ALL_CHANNELS               = 0x1042,
+       SFC_CALC_NORM_MAX_ALL_CHANNELS  = 0x1043,
+       SFC_GET_SIGNAL_MAX                              = 0x1044,
+       SFC_GET_MAX_ALL_CHANNELS                = 0x1045,
+
+       SFC_SET_ADD_PEAK_CHUNK                  = 0x1050,
+       SFC_SET_ADD_HEADER_PAD_CHUNK    = 0x1051,
+
+       SFC_UPDATE_HEADER_NOW                   = 0x1060,
+       SFC_SET_UPDATE_HEADER_AUTO              = 0x1061,
+
+       SFC_FILE_TRUNCATE                               = 0x1080,
+
+       SFC_SET_RAW_START_OFFSET                = 0x1090,
+
+       SFC_SET_DITHER_ON_WRITE                 = 0x10A0,
+       SFC_SET_DITHER_ON_READ                  = 0x10A1,
+
+       SFC_GET_DITHER_INFO_COUNT               = 0x10A2,
+       SFC_GET_DITHER_INFO                             = 0x10A3,
+
+       SFC_GET_EMBED_FILE_INFO                 = 0x10B0,
+
+       SFC_SET_CLIPPING                                = 0x10C0,
+       SFC_GET_CLIPPING                                = 0x10C1,
+
+       SFC_GET_INSTRUMENT                              = 0x10D0,
+       SFC_SET_INSTRUMENT                              = 0x10D1,
+
+       SFC_GET_LOOP_INFO                               = 0x10E0,
+
+       SFC_GET_BROADCAST_INFO                  = 0x10F0,
+       SFC_SET_BROADCAST_INFO                  = 0x10F1,
+
+       SFC_GET_CHANNEL_MAP_INFO                = 0x1100,
+       SFC_SET_CHANNEL_MAP_INFO                = 0x1101,
+
+       SFC_RAW_DATA_NEEDS_ENDSWAP              = 0x1110,
+
+       /* Support for Wavex Ambisonics Format */
+       SFC_WAVEX_SET_AMBISONIC                 = 0x1200,
+       SFC_WAVEX_GET_AMBISONIC                 = 0x1201,
+
+       SFC_SET_VBR_ENCODING_QUALITY    = 0x1300,
+
+       /* Following commands for testing only. */
+       SFC_TEST_IEEE_FLOAT_REPLACE             = 0x6001,
+
+       /*
+       ** SFC_SET_ADD_* values are deprecated and will disappear at some
+       ** time in the future. They are guaranteed to be here up to and
+       ** including version 1.0.8 to avoid breakage of existng software.
+       ** They currently do nothing and will continue to do nothing.
+       */
+       SFC_SET_ADD_DITHER_ON_WRITE             = 0x1070,
+       SFC_SET_ADD_DITHER_ON_READ              = 0x1071
+} ;
+
+
+/*
+** String types that can be set and read from files. Not all file types
+** support this and even the file types which support one, may not support
+** all string types.
+*/
+
+enum
+{      SF_STR_TITLE                                    = 0x01,
+       SF_STR_COPYRIGHT                                = 0x02,
+       SF_STR_SOFTWARE                                 = 0x03,
+       SF_STR_ARTIST                                   = 0x04,
+       SF_STR_COMMENT                                  = 0x05,
+       SF_STR_DATE                                             = 0x06,
+       SF_STR_ALBUM                                    = 0x07,
+       SF_STR_LICENSE                                  = 0x08,
+       SF_STR_TRACKNUMBER                              = 0x09,
+       SF_STR_GENRE                                    = 0x10
+} ;
+
+/*
+** Use the following as the start and end index when doing metadata
+** transcoding.
+*/
+
+#define        SF_STR_FIRST    SF_STR_TITLE
+#define        SF_STR_LAST             SF_STR_GENRE
+
+enum
+{      /* True and false */
+       SF_FALSE        = 0,
+       SF_TRUE         = 1,
+
+       /* Modes for opening files. */
+       SFM_READ        = 0x10,
+       SFM_WRITE       = 0x20,
+       SFM_RDWR        = 0x30,
+
+       SF_AMBISONIC_NONE               = 0x40,
+       SF_AMBISONIC_B_FORMAT   = 0x41
+} ;
+
+/* Public error values. These are guaranteed to remain unchanged for the duration
+** of the library major version number.
+** There are also a large number of private error numbers which are internal to
+** the library which can change at any time.
+*/
+
+enum
+{      SF_ERR_NO_ERROR                         = 0,
+       SF_ERR_UNRECOGNISED_FORMAT      = 1,
+       SF_ERR_SYSTEM                           = 2,
+       SF_ERR_MALFORMED_FILE           = 3,
+       SF_ERR_UNSUPPORTED_ENCODING     = 4
+} ;
+
+
+/* Channel map values (used with SFC_SET/GET_CHANNEL_MAP).
+*/
+
+enum
+{      SF_CHANNEL_MAP_INVALID = 0,
+       SF_CHANNEL_MAP_MONO = 1,
+       SF_CHANNEL_MAP_LEFT,                                    /* Apple calls this 'Left' */
+       SF_CHANNEL_MAP_RIGHT,                                   /* Apple calls this 'Right' */
+       SF_CHANNEL_MAP_CENTER,                                  /* Apple calls this 'Center' */
+       SF_CHANNEL_MAP_FRONT_LEFT,
+       SF_CHANNEL_MAP_FRONT_RIGHT,
+       SF_CHANNEL_MAP_FRONT_CENTER,
+       SF_CHANNEL_MAP_REAR_CENTER,                             /* Apple calls this 'Center Surround', Msft calls this 'Back Center' */
+       SF_CHANNEL_MAP_REAR_LEFT,                               /* Apple calls this 'Left Surround', Msft calls this 'Back Left' */
+       SF_CHANNEL_MAP_REAR_RIGHT,                              /* Apple calls this 'Right Surround', Msft calls this 'Back Right' */
+       SF_CHANNEL_MAP_LFE,                                             /* Apple calls this 'LFEScreen', Msft calls this 'Low Frequency'  */
+       SF_CHANNEL_MAP_FRONT_LEFT_OF_CENTER,    /* Apple calls this 'Left Center' */
+       SF_CHANNEL_MAP_FRONT_RIGHT_OF_CENTER,   /* Apple calls this 'Right Center */
+       SF_CHANNEL_MAP_SIDE_LEFT,                               /* Apple calls this 'Left Surround Direct' */
+       SF_CHANNEL_MAP_SIDE_RIGHT,                              /* Apple calls this 'Right Surround Direct' */
+       SF_CHANNEL_MAP_TOP_CENTER,                              /* Apple calls this 'Top Center Surround' */
+       SF_CHANNEL_MAP_TOP_FRONT_LEFT,                  /* Apple calls this 'Vertical Height Left' */
+       SF_CHANNEL_MAP_TOP_FRONT_RIGHT,                 /* Apple calls this 'Vertical Height Right' */
+       SF_CHANNEL_MAP_TOP_FRONT_CENTER,                /* Apple calls this 'Vertical Height Center' */
+       SF_CHANNEL_MAP_TOP_REAR_LEFT,                   /* Apple and MS call this 'Top Back Left' */
+       SF_CHANNEL_MAP_TOP_REAR_RIGHT,                  /* Apple and MS call this 'Top Back Right' */
+       SF_CHANNEL_MAP_TOP_REAR_CENTER,                 /* Apple and MS call this 'Top Back Center' */
+
+       SF_CHANNEL_MAP_AMBISONIC_B_W,
+       SF_CHANNEL_MAP_AMBISONIC_B_X,
+       SF_CHANNEL_MAP_AMBISONIC_B_Y,
+       SF_CHANNEL_MAP_AMBISONIC_B_Z,
+
+       SF_CHANNEL_MAP_MAX
+} ;
+
+
+/* A SNDFILE* pointer can be passed around much like stdio.h's FILE* pointer. */
+
+typedef        struct SNDFILE_tag      SNDFILE ;
+
+/* The following typedef is system specific and is defined when libsndfile is
+** compiled. sf_count_t will be a 64 bit value when the underlying OS allows
+** 64 bit file offsets.
+** On windows, we need to allow the same header file to be compiler by both GCC
+** and the Microsoft compiler.
+*/
+
+#if (defined (_MSCVER) || defined (_MSC_VER))
+typedef __int64        sf_count_t ;
+#define SF_COUNT_MAX           0x7fffffffffffffffi64
+#else
+typedef __int64 sf_count_t ;
+#define SF_COUNT_MAX           0x7FFFFFFFFFFFFFFFLL
+#endif
+
+
+/* A pointer to a SF_INFO structure is passed to sf_open () and filled in.
+** On write, the SF_INFO structure is filled in by the user and passed into
+** sf_open ().
+*/
+
+struct SF_INFO
+{      sf_count_t      frames ;                /* Used to be called samples.  Changed to avoid confusion. */
+       int                     samplerate ;
+       int                     channels ;
+       int                     format ;
+       int                     sections ;
+       int                     seekable ;
+} ;
+
+typedef        struct SF_INFO SF_INFO ;
+
+/* The SF_FORMAT_INFO struct is used to retrieve information about the sound
+** file formats libsndfile supports using the sf_command () interface.
+**
+** Using this interface will allow applications to support new file formats
+** and encoding types when libsndfile is upgraded, without requiring
+** re-compilation of the application.
+**
+** Please consult the libsndfile documentation (particularly the information
+** on the sf_command () interface) for examples of its use.
+*/
+
+typedef struct
+{      int                     format ;
+       const char      *name ;
+       const char      *extension ;
+} SF_FORMAT_INFO ;
+
+/*
+** Enums and typedefs for adding dither on read and write.
+** See the html documentation for sf_command(), SFC_SET_DITHER_ON_WRITE
+** and SFC_SET_DITHER_ON_READ.
+*/
+
+enum
+{      SFD_DEFAULT_LEVEL       = 0,
+       SFD_CUSTOM_LEVEL        = 0x40000000,
+
+       SFD_NO_DITHER           = 500,
+       SFD_WHITE                       = 501,
+       SFD_TRIANGULAR_PDF      = 502
+} ;
+
+typedef struct
+{      int                     type ;
+       double          level ;
+       const char      *name ;
+} SF_DITHER_INFO ;
+
+/* Struct used to retrieve information about a file embedded within a
+** larger file. See SFC_GET_EMBED_FILE_INFO.
+*/
+
+typedef struct
+{      sf_count_t      offset ;
+       sf_count_t      length ;
+} SF_EMBED_FILE_INFO ;
+
+/*
+**     Structs used to retrieve music sample information from a file.
+*/
+
+enum
+{      /*
+       **      The loop mode field in SF_INSTRUMENT will be one of the following.
+       */
+       SF_LOOP_NONE = 800,
+       SF_LOOP_FORWARD,
+       SF_LOOP_BACKWARD,
+       SF_LOOP_ALTERNATING
+} ;
+
+typedef struct
+{      int gain ;
+       char basenote, detune ;
+       char velocity_lo, velocity_hi ;
+       char key_lo, key_hi ;
+       int loop_count ;
+
+       struct
+       {       int mode ;
+               unsigned int start ;
+               unsigned int end ;
+               unsigned int count ;
+       } loops [16] ; /* make variable in a sensible way */
+} SF_INSTRUMENT ;
+
+
+
+/* Struct used to retrieve loop information from a file.*/
+typedef struct
+{
+       short   time_sig_num ;  /* any positive integer    > 0  */
+       short   time_sig_den ;  /* any positive power of 2 > 0  */
+       int             loop_mode ;             /* see SF_LOOP enum             */
+
+       int             num_beats ;             /* this is NOT the amount of quarter notes !!!*/
+                                                       /* a full bar of 4/4 is 4 beats */
+                                                       /* a full bar of 7/8 is 7 beats */
+
+       float   bpm ;                   /* suggestion, as it can be calculated using other fields:*/
+                                                       /* file's lenght, file's sampleRate and our time_sig_den*/
+                                                       /* -> bpms are always the amount of _quarter notes_ per minute */
+
+       int     root_key ;                      /* MIDI note, or -1 for None */
+       int future [6] ;
+} SF_LOOP_INFO ;
+
+
+/*     Struct used to retrieve broadcast (EBU) information from a file.
+**     Strongly (!) based on EBU "bext" chunk format used in Broadcast WAVE.
+*/
+#define        SF_BROADCAST_INFO_VAR(coding_hist_size) \
+                       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 [coding_hist_size] ; \
+                       }
+
+/* SF_BROADCAST_INFO is the above struct with coding_history field of 256 bytes. */
+typedef SF_BROADCAST_INFO_VAR (256) SF_BROADCAST_INFO ;
+
+
+/*     Virtual I/O functionality. */
+
+typedef sf_count_t             (*sf_vio_get_filelen)   (void *user_data) ;
+typedef sf_count_t             (*sf_vio_seek)          (sf_count_t offset, int whence, void *user_data) ;
+typedef sf_count_t             (*sf_vio_read)          (void *ptr, sf_count_t count, void *user_data) ;
+typedef sf_count_t             (*sf_vio_write)         (const void *ptr, sf_count_t count, void *user_data) ;
+typedef sf_count_t             (*sf_vio_tell)          (void *user_data) ;
+
+struct SF_VIRTUAL_IO
+{      sf_vio_get_filelen      get_filelen ;
+       sf_vio_seek                     seek ;
+       sf_vio_read                     read ;
+       sf_vio_write            write ;
+       sf_vio_tell                     tell ;
+} ;
+
+typedef        struct SF_VIRTUAL_IO SF_VIRTUAL_IO ;
+
+
+/* Open the specified file for read, write or both. On error, this will
+** return a NULL pointer. To find the error number, pass a NULL SNDFILE
+** to sf_strerror ().
+** All calls to sf_open() should be matched with a call to sf_close().
+*/
+
+SNDFILE*       sf_open         (const char *path, int mode, SF_INFO *sfinfo) ;
+
+
+/* Use the existing file descriptor to create a SNDFILE object. If close_desc
+** is TRUE, the file descriptor will be closed when sf_close() is called. If
+** it is FALSE, the descritor will not be closed.
+** When passed a descriptor like this, the library will assume that the start
+** of file header is at the current file offset. This allows sound files within
+** larger container files to be read and/or written.
+** On error, this will return a NULL pointer. To find the error number, pass a
+** NULL SNDFILE to sf_strerror ().
+** All calls to sf_open_fd() should be matched with a call to sf_close().
+
+*/
+
+SNDFILE*       sf_open_fd      (int fd, int mode, SF_INFO *sfinfo, int close_desc) ;
+
+SNDFILE*       sf_open_virtual (SF_VIRTUAL_IO *sfvirtual, int mode, SF_INFO *sfinfo, void *user_data) ;
+
+
+/* sf_error () returns a error number which can be translated to a text
+** string using sf_error_number().
+*/
+
+int            sf_error                (SNDFILE *sndfile) ;
+
+
+/* sf_strerror () returns to the caller a pointer to the current error message for
+** the given SNDFILE.
+*/
+
+const char* sf_strerror (SNDFILE *sndfile) ;
+
+
+/* sf_error_number () allows the retrieval of the error string for each internal
+** error number.
+**
+*/
+
+const char*    sf_error_number (int errnum) ;
+
+
+/* The following two error functions are deprecated but they will remain in the
+** library for the forseeable future. The function sf_strerror() should be used
+** in their place.
+*/
+
+int            sf_perror               (SNDFILE *sndfile) ;
+int            sf_error_str    (SNDFILE *sndfile, char* str, size_t len) ;
+
+
+/* Return TRUE if fields of the SF_INFO struct are a valid combination of values. */
+
+int            sf_command      (SNDFILE *sndfile, int command, void *data, int datasize) ;
+
+
+/* Return TRUE if fields of the SF_INFO struct are a valid combination of values. */
+
+int            sf_format_check (const SF_INFO *info) ;
+
+
+/* Seek within the waveform data chunk of the SNDFILE. sf_seek () uses
+** the same values for whence (SEEK_SET, SEEK_CUR and SEEK_END) as
+** stdio.h function fseek ().
+** An offset of zero with whence set to SEEK_SET will position the
+** read / write pointer to the first data sample.
+** On success sf_seek returns the current position in (multi-channel)
+** samples from the start of the file.
+** Please see the libsndfile documentation for moving the read pointer
+** separately from the write pointer on files open in mode SFM_RDWR.
+** On error all of these functions return -1.
+*/
+
+sf_count_t     sf_seek                 (SNDFILE *sndfile, sf_count_t frames, int whence) ;
+
+
+/* Functions for retrieving and setting string data within sound files.
+** Not all file types support this features; AIFF and WAV do. For both
+** functions, the str_type parameter must be one of the SF_STR_* values
+** defined above.
+** On error, sf_set_string() returns non-zero while sf_get_string()
+** returns NULL.
+*/
+
+int sf_set_string (SNDFILE *sndfile, int str_type, const char* str) ;
+
+const char* sf_get_string (SNDFILE *sndfile, int str_type) ;
+
+
+/* Return the library version string. */
+
+const char * sf_version_string (void) ;
+
+
+/* Functions for reading/writing the waveform data of a sound file.
+*/
+
+sf_count_t     sf_read_raw             (SNDFILE *sndfile, void *ptr, sf_count_t bytes) ;
+sf_count_t     sf_write_raw    (SNDFILE *sndfile, const void *ptr, sf_count_t bytes) ;
+
+
+/* Functions for reading and writing the data chunk in terms of frames.
+** The number of items actually read/written = frames * number of channels.
+**     sf_xxxx_raw             read/writes the raw data bytes from/to the file
+**     sf_xxxx_short   passes data in the native short format
+**     sf_xxxx_int             passes data in the native int format
+**     sf_xxxx_float   passes data in the native float format
+**     sf_xxxx_double  passes data in the native double format
+** All of these read/write function return number of frames read/written.
+*/
+
+sf_count_t     sf_readf_short  (SNDFILE *sndfile, short *ptr, sf_count_t frames) ;
+sf_count_t     sf_writef_short (SNDFILE *sndfile, const short *ptr, sf_count_t frames) ;
+
+sf_count_t     sf_readf_int    (SNDFILE *sndfile, int *ptr, sf_count_t frames) ;
+sf_count_t     sf_writef_int   (SNDFILE *sndfile, const int *ptr, sf_count_t frames) ;
+
+sf_count_t     sf_readf_float  (SNDFILE *sndfile, float *ptr, sf_count_t frames) ;
+sf_count_t     sf_writef_float (SNDFILE *sndfile, const float *ptr, sf_count_t frames) ;
+
+sf_count_t     sf_readf_double         (SNDFILE *sndfile, double *ptr, sf_count_t frames) ;
+sf_count_t     sf_writef_double        (SNDFILE *sndfile, const double *ptr, sf_count_t frames) ;
+
+
+/* Functions for reading and writing the data chunk in terms of items.
+** Otherwise similar to above.
+** All of these read/write function return number of items read/written.
+*/
+
+sf_count_t     sf_read_short   (SNDFILE *sndfile, short *ptr, sf_count_t items) ;
+sf_count_t     sf_write_short  (SNDFILE *sndfile, const short *ptr, sf_count_t items) ;
+
+sf_count_t     sf_read_int             (SNDFILE *sndfile, int *ptr, sf_count_t items) ;
+sf_count_t     sf_write_int    (SNDFILE *sndfile, const int *ptr, sf_count_t items) ;
+
+sf_count_t     sf_read_float   (SNDFILE *sndfile, float *ptr, sf_count_t items) ;
+sf_count_t     sf_write_float  (SNDFILE *sndfile, const float *ptr, sf_count_t items) ;
+
+sf_count_t     sf_read_double  (SNDFILE *sndfile, double *ptr, sf_count_t items) ;
+sf_count_t     sf_write_double (SNDFILE *sndfile, const double *ptr, sf_count_t items) ;
+
+
+/* Close the SNDFILE and clean up all memory allocations associated with this
+** file.
+** Returns 0 on success, or an error number.
+*/
+
+int            sf_close                (SNDFILE *sndfile) ;
+
+
+/* If the file is opened SFM_WRITE or SFM_RDWR, call fsync() on the file
+** to force the writing of data to disk. If the file is opened SFM_READ
+** no action is taken.
+*/
+
+void   sf_write_sync   (SNDFILE *sndfile) ;
+
+
+
+/* The function sf_wchar_open() is Windows Only!
+** Open a file passing in a Windows Unicode filename. Otherwise, this is
+** the same as sf_open().
+**
+** In order for this to work, you need to do the following:
+**
+**             #include <windows.h>
+**             #define ENABLE_SNDFILE_WINDOWS_PROTOTYPES 1
+**             #including <sndfile.h>
+*/
+
+#if (defined (ENABLE_SNDFILE_WINDOWS_PROTOTYPES) && ENABLE_SNDFILE_WINDOWS_PROTOTYPES)
+SNDFILE* sf_wchar_open (LPCWSTR wpath, int mode, SF_INFO *sfinfo) ;
+#endif
+
+
+
+#ifdef __cplusplus
+}              /* extern "C" */
+#endif /* __cplusplus */
+
+#endif /* SNDFILE_H */
+
diff --git a/fdmdv2/libsndfile/Projects/w32-mingw/test.c b/fdmdv2/libsndfile/Projects/w32-mingw/test.c
new file mode 100644 (file)
index 0000000..a6fe9e0
--- /dev/null
@@ -0,0 +1,14 @@
+#include <stdio.h>\r
+\r
+#include <sndfile.h>\r
+\r
+int\r
+main (void)\r
+{\r
+       char buf [1024] ;\r
+\r
+       sf_command (NULL, SFC_GET_LIB_VERSION, buf, sizeof (buf)) ;\r
+       puts (buf) ;\r
+\r
+       return 0 ;\r
+}\r
diff --git a/fdmdv2/libsndfile/Projects/w32-mingw/test.exe b/fdmdv2/libsndfile/Projects/w32-mingw/test.exe
new file mode 100644 (file)
index 0000000..9abd3e5
Binary files /dev/null and b/fdmdv2/libsndfile/Projects/w32-mingw/test.exe differ
diff --git a/fdmdv2/libsndfile/Projects/w32-mingw/test_sndfile.mk b/fdmdv2/libsndfile/Projects/w32-mingw/test_sndfile.mk
new file mode 100644 (file)
index 0000000..a9f199e
--- /dev/null
@@ -0,0 +1,103 @@
+##\r
+## Auto Generated makefile by CodeLite IDE\r
+## any manual changes will be erased      \r
+##\r
+## Release\r
+ProjectName            :=test_sndfile\r
+ConfigurationName      :=Release\r
+IntermediateDirectory  :=./Release\r
+OutDir                 := $(IntermediateDirectory)\r
+WorkspacePath          := "C:\Users\wittend\Projects\dvui"\r
+ProjectPath            := "C:\Users\wittend\Projects\libsndfile\Projects\w32-mingw"\r
+CurrentFileName        :=\r
+CurrentFilePath        :=\r
+CurrentFileFullPath    :=\r
+User                   :=wittend\r
+Date                   :=5/6/2012\r
+CodeLitePath           :="C:\Program Files\CodeLite"\r
+LinkerName             :=g++\r
+ArchiveTool            :=ar rcus\r
+SharedObjectLinkerName :=g++ -shared -fPIC\r
+ObjectSuffix           :=.o\r
+DependSuffix           :=.o.d\r
+PreprocessSuffix       :=.o.i\r
+DebugSwitch            :=-gstab\r
+IncludeSwitch          :=-I\r
+LibrarySwitch          :=-l\r
+OutputSwitch           :=-o \r
+LibraryPathSwitch      :=-L\r
+PreprocessorSwitch     :=-D\r
+SourceSwitch           :=-c \r
+CompilerName           :=g++\r
+C_CompilerName         :=gcc\r
+OutputFile             :=$(IntermediateDirectory)/$(ProjectName)\r
+Preprocessors          :=\r
+ObjectSwitch           :=-o \r
+ArchiveOutputSwitch    := \r
+PreprocessOnlySwitch   :=-E \r
+ObjectsFileList        :="C:\Users\wittend\Projects\libsndfile\Projects\w32-mingw\test_sndfile.txt"\r
+PCHCompileFlags        :=\r
+MakeDirCommand         :=makedir\r
+CmpOptions             := -O2 -Wall $(Preprocessors)\r
+C_CmpOptions           := -O2 -Wall $(Preprocessors)\r
+LinkOptions            :=  \r
+IncludePath            :=  $(IncludeSwitch). $(IncludeSwitch). \r
+IncludePCH             := \r
+RcIncludePath          := \r
+Libs                   := $(LibrarySwitch)sndfile-1 \r
+LibPath                := $(LibraryPathSwitch). \r
+\r
+\r
+##\r
+## User defined environment variables\r
+##\r
+CodeLiteDir:=C:\Program Files\CodeLite\r
+WXWIN:=C:\bin\wxWidgets-2.9.2\r
+PATH:=$(WXWIN)\lib\gcc_dll;$(PATH)\r
+WXCFG:=gcc_dll\mswu\r
+UNIT_TEST_PP_SRC_DIR:=C:\bin\UnitTest++-1.3\r
+Objects=$(IntermediateDirectory)/main$(ObjectSuffix) \r
+\r
+##\r
+## Main Build Targets \r
+##\r
+.PHONY: all clean PreBuild PrePreBuild PostBuild\r
+all: $(OutputFile)\r
+\r
+$(OutputFile): $(IntermediateDirectory)/.d $(Objects) \r
+       @$(MakeDirCommand) $(@D)\r
+       @echo "" > $(IntermediateDirectory)/.d\r
+       @echo $(Objects) > $(ObjectsFileList)\r
+       $(LinkerName) $(OutputSwitch)$(OutputFile) @$(ObjectsFileList) $(LibPath) $(Libs) $(LinkOptions)\r
+\r
+$(IntermediateDirectory)/.d:\r
+       @$(MakeDirCommand) "./Release"\r
+\r
+PreBuild:\r
+\r
+\r
+##\r
+## Objects\r
+##\r
+$(IntermediateDirectory)/main$(ObjectSuffix): main.cpp $(IntermediateDirectory)/main$(DependSuffix)\r
+       $(CompilerName) $(IncludePCH) $(SourceSwitch) "C:/Users/wittend/Projects/libsndfile/Projects/w32-mingw/main.cpp" $(CmpOptions) $(ObjectSwitch)$(IntermediateDirectory)/main$(ObjectSuffix) $(IncludePath)\r
+$(IntermediateDirectory)/main$(DependSuffix): main.cpp\r
+       @$(CompilerName) $(CmpOptions) $(IncludePCH) $(IncludePath) -MG -MP -MT$(IntermediateDirectory)/main$(ObjectSuffix) -MF$(IntermediateDirectory)/main$(DependSuffix) -MM "C:/Users/wittend/Projects/libsndfile/Projects/w32-mingw/main.cpp"\r
+\r
+$(IntermediateDirectory)/main$(PreprocessSuffix): main.cpp\r
+       @$(CompilerName) $(CmpOptions) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/main$(PreprocessSuffix) "C:/Users/wittend/Projects/libsndfile/Projects/w32-mingw/main.cpp"\r
+\r
+\r
+-include $(IntermediateDirectory)/*$(DependSuffix)\r
+##\r
+## Clean\r
+##\r
+clean:\r
+       $(RM) $(IntermediateDirectory)/main$(ObjectSuffix)\r
+       $(RM) $(IntermediateDirectory)/main$(DependSuffix)\r
+       $(RM) $(IntermediateDirectory)/main$(PreprocessSuffix)\r
+       $(RM) $(OutputFile)\r
+       $(RM) $(OutputFile).exe\r
+       $(RM) "C:\Users\wittend\Projects\dvui\.build-release\test_sndfile"\r
+\r
+\r
diff --git a/fdmdv2/libsndfile/Projects/w32-mingw/test_sndfile.project b/fdmdv2/libsndfile/Projects/w32-mingw/test_sndfile.project
new file mode 100644 (file)
index 0000000..1f8f00b
--- /dev/null
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<CodeLite_Project Name="test_sndfile" InternalType="Console">
+  <Plugins>
+    <Plugin Name="qmake">
+      <![CDATA[00020001N0005Debug0000000000000001N0007Release000000000000]]>
+    </Plugin>
+  </Plugins>
+  <Description/>
+  <Dependencies/>
+  <VirtualDirectory Name="src">
+    <File Name="main.cpp"/>
+  </VirtualDirectory>
+  <Settings Type="Executable">
+    <GlobalSettings>
+      <Compiler Options="" C_Options="">
+        <IncludePath Value="."/>
+      </Compiler>
+      <Linker Options="">
+        <LibraryPath Value="."/>
+      </Linker>
+      <ResourceCompiler Options=""/>
+    </GlobalSettings>
+    <Configuration Name="Debug" CompilerType="gnu g++" DebuggerType="GNU gdb debugger" Type="Executable" BuildCmpWithGlobalSettings="append" BuildLnkWithGlobalSettings="append" BuildResWithGlobalSettings="append">
+      <Compiler Options="-g;-O0;-Wall" C_Options="-g;-O0;-Wall" Required="yes" PreCompiledHeader="" PCHInCommandLine="no" UseDifferentPCHFlags="no" PCHFlags="">
+        <IncludePath Value="."/>
+      </Compiler>
+      <Linker Options="" Required="yes">
+        <Library Value="libsndfile-1.dll"/>
+      </Linker>
+      <ResourceCompiler Options="" Required="no"/>
+      <General OutputFile="$(IntermediateDirectory)/$(ProjectName)" IntermediateDirectory="./Debug" Command="./$(ProjectName)" CommandArguments="" UseSeparateDebugArgs="no" DebugArguments="" WorkingDirectory="$(IntermediateDirectory)" PauseExecWhenProcTerminates="yes"/>
+      <Environment EnvVarSetName="&lt;Use Defaults&gt;" DbgSetName="&lt;Use Defaults&gt;">
+        <![CDATA[]]>
+      </Environment>
+      <Debugger IsRemote="no" RemoteHostName="" RemoteHostPort="" DebuggerPath="">
+        <PostConnectCommands/>
+        <StartupCommands/>
+      </Debugger>
+      <PreBuild/>
+      <PostBuild/>
+      <CustomBuild Enabled="no">
+        <RebuildCommand/>
+        <CleanCommand/>
+        <BuildCommand/>
+        <PreprocessFileCommand/>
+        <SingleFileCommand/>
+        <MakefileGenerationCommand/>
+        <ThirdPartyToolName>None</ThirdPartyToolName>
+        <WorkingDirectory/>
+      </CustomBuild>
+      <AdditionalRules>
+        <CustomPostBuild/>
+        <CustomPreBuild/>
+      </AdditionalRules>
+      <Completion>
+        <ClangCmpFlags/>
+        <ClangPP/>
+        <SearchPaths/>
+      </Completion>
+    </Configuration>
+    <Configuration Name="Release" CompilerType="gnu g++" DebuggerType="GNU gdb debugger" Type="Executable" BuildCmpWithGlobalSettings="append" BuildLnkWithGlobalSettings="append" BuildResWithGlobalSettings="append">
+      <Compiler Options="-O2;-Wall" C_Options="-O2;-Wall" Required="yes" PreCompiledHeader="" PCHInCommandLine="no" UseDifferentPCHFlags="no" PCHFlags="">
+        <IncludePath Value="."/>
+      </Compiler>
+      <Linker Options="" Required="yes">
+        <Library Value="libsndfile-1.dll"/>
+      </Linker>
+      <ResourceCompiler Options="" Required="no"/>
+      <General OutputFile="$(IntermediateDirectory)/$(ProjectName)" IntermediateDirectory="./Release" Command="./$(ProjectName)" CommandArguments="" UseSeparateDebugArgs="no" DebugArguments="" WorkingDirectory="$(IntermediateDirectory)" PauseExecWhenProcTerminates="yes"/>
+      <Environment EnvVarSetName="&lt;Use Defaults&gt;" DbgSetName="&lt;Use Defaults&gt;">
+        <![CDATA[]]>
+      </Environment>
+      <Debugger IsRemote="no" RemoteHostName="" RemoteHostPort="" DebuggerPath="">
+        <PostConnectCommands/>
+        <StartupCommands/>
+      </Debugger>
+      <PreBuild/>
+      <PostBuild/>
+      <CustomBuild Enabled="no">
+        <RebuildCommand/>
+        <CleanCommand/>
+        <BuildCommand/>
+        <PreprocessFileCommand/>
+        <SingleFileCommand/>
+        <MakefileGenerationCommand/>
+        <ThirdPartyToolName>None</ThirdPartyToolName>
+        <WorkingDirectory/>
+      </CustomBuild>
+      <AdditionalRules>
+        <CustomPostBuild/>
+        <CustomPreBuild/>
+      </AdditionalRules>
+      <Completion>
+        <ClangCmpFlags/>
+        <ClangPP/>
+        <SearchPaths/>
+      </Completion>
+    </Configuration>
+  </Settings>
+</CodeLite_Project>
diff --git a/fdmdv2/libsndfile/Projects/w32-mingw/test_sndfile.txt b/fdmdv2/libsndfile/Projects/w32-mingw/test_sndfile.txt
new file mode 100644 (file)
index 0000000..5d46005
--- /dev/null
@@ -0,0 +1 @@
+./Release/main.o  \r
diff --git a/fdmdv2/libsndfile/Projects/w32-vc7/test.cc b/fdmdv2/libsndfile/Projects/w32-vc7/test.cc
new file mode 100644 (file)
index 0000000..674a932
--- /dev/null
@@ -0,0 +1,14 @@
+#include <cstdio>\r
+\r
+#include <sndfile.h>\r
+\r
+int\r
+main (void)\r
+{\r
+       char buf [1024] ;\r
+\r
+       sf_command (NULL, SFC_GET_LIB_VERSION, buf, sizeof (buf)) ;\r
+       puts (buf) ;\r
+\r
+       return 0 ;\r
+}
\ No newline at end of file
diff --git a/fdmdv2/libsndfile/Projects/w32-vc7/test.sln b/fdmdv2/libsndfile/Projects/w32-vc7/test.sln
new file mode 100644 (file)
index 0000000..c237d86
--- /dev/null
@@ -0,0 +1,21 @@
+Microsoft Visual Studio Solution File, Format Version 7.00\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test", "test.vcproj", "{A3CC29EE-FB2A-4B83-A364-595F5314A6DC}"\r
+EndProject\r
+Global\r
+       GlobalSection(SolutionConfiguration) = preSolution\r
+               ConfigName.0 = Debug\r
+               ConfigName.1 = Release\r
+       EndGlobalSection\r
+       GlobalSection(ProjectDependencies) = postSolution\r
+       EndGlobalSection\r
+       GlobalSection(ProjectConfiguration) = postSolution\r
+               {A3CC29EE-FB2A-4B83-A364-595F5314A6DC}.Debug.ActiveCfg = Debug|Win32\r
+               {A3CC29EE-FB2A-4B83-A364-595F5314A6DC}.Debug.Build.0 = Debug|Win32\r
+               {A3CC29EE-FB2A-4B83-A364-595F5314A6DC}.Release.ActiveCfg = Release|Win32\r
+               {A3CC29EE-FB2A-4B83-A364-595F5314A6DC}.Release.Build.0 = Release|Win32\r
+       EndGlobalSection\r
+       GlobalSection(ExtensibilityGlobals) = postSolution\r
+       EndGlobalSection\r
+       GlobalSection(ExtensibilityAddIns) = postSolution\r
+       EndGlobalSection\r
+EndGlobal\r
diff --git a/fdmdv2/libsndfile/Projects/w32-vc7/test.vcproj b/fdmdv2/libsndfile/Projects/w32-vc7/test.vcproj
new file mode 100644 (file)
index 0000000..f141251
--- /dev/null
@@ -0,0 +1,123 @@
+<?xml version="1.0" encoding = "Windows-1252"?>\r
+<VisualStudioProject\r
+       ProjectType="Visual C++"\r
+       Version="7.00"\r
+       Name="test"\r
+       ProjectGUID="{A3CC29EE-FB2A-4B83-A364-595F5314A6DC}"\r
+       Keyword="Win32Proj">\r
+       <Platforms>\r
+               <Platform\r
+                       Name="Win32"/>\r
+       </Platforms>\r
+       <Configurations>\r
+               <Configuration\r
+                       Name="Debug|Win32"\r
+                       OutputDirectory="Debug"\r
+                       IntermediateDirectory="Debug"\r
+                       ConfigurationType="1"\r
+                       CharacterSet="2">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="&quot;..\..\include&quot;"\r
+                               PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"\r
+                               MinimalRebuild="TRUE"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="5"\r
+                               UsePrecompiledHeader="0"\r
+                               WarningLevel="3"\r
+                               Detect64BitPortabilityProblems="TRUE"\r
+                               DebugInformationFormat="4"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="libsndfile-1.lib"\r
+                               OutputFile="$(OutDir)/test.exe"\r
+                               LinkIncremental="2"\r
+                               AdditionalLibraryDirectories="&quot;..\..&quot;"\r
+                               GenerateDebugInformation="TRUE"\r
+                               ProgramDatabaseFile="$(OutDir)/test.pdb"\r
+                               SubSystem="1"\r
+                               TargetMachine="1"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"/>\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="Release|Win32"\r
+                       OutputDirectory="Release"\r
+                       IntermediateDirectory="Release"\r
+                       ConfigurationType="1"\r
+                       CharacterSet="2">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="2"\r
+                               InlineFunctionExpansion="1"\r
+                               OmitFramePointers="TRUE"\r
+                               PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"\r
+                               StringPooling="TRUE"\r
+                               RuntimeLibrary="4"\r
+                               EnableFunctionLevelLinking="TRUE"\r
+                               UsePrecompiledHeader="0"\r
+                               WarningLevel="3"\r
+                               Detect64BitPortabilityProblems="TRUE"\r
+                               DebugInformationFormat="3"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               OutputFile="$(OutDir)/test.exe"\r
+                               LinkIncremental="1"\r
+                               GenerateDebugInformation="TRUE"\r
+                               SubSystem="1"\r
+                               OptimizeReferences="2"\r
+                               EnableCOMDATFolding="2"\r
+                               TargetMachine="1"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"/>\r
+               </Configuration>\r
+       </Configurations>\r
+       <Files>\r
+               <Filter\r
+                       Name="Source Files"\r
+                       Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm">\r
+                       <File\r
+                               RelativePath="test.cc">\r
+                       </File>\r
+               </Filter>\r
+               <Filter\r
+                       Name="Header Files"\r
+                       Filter="h;hpp;hxx;hm;inl;inc">\r
+               </Filter>\r
+               <Filter\r
+                       Name="Resource Files"\r
+                       Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe">\r
+               </Filter>\r
+       </Files>\r
+       <Globals>\r
+       </Globals>\r
+</VisualStudioProject>\r
diff --git a/fdmdv2/libsndfile/Projects/w32-vc9/test.cc b/fdmdv2/libsndfile/Projects/w32-vc9/test.cc
new file mode 100644 (file)
index 0000000..674a932
--- /dev/null
@@ -0,0 +1,14 @@
+#include <cstdio>\r
+\r
+#include <sndfile.h>\r
+\r
+int\r
+main (void)\r
+{\r
+       char buf [1024] ;\r
+\r
+       sf_command (NULL, SFC_GET_LIB_VERSION, buf, sizeof (buf)) ;\r
+       puts (buf) ;\r
+\r
+       return 0 ;\r
+}
\ No newline at end of file
diff --git a/fdmdv2/libsndfile/Projects/w32-vc9/test.sln b/fdmdv2/libsndfile/Projects/w32-vc9/test.sln
new file mode 100644 (file)
index 0000000..1008f13
--- /dev/null
@@ -0,0 +1,19 @@
+Microsoft Visual Studio Solution File, Format Version 10.00\r
+# Visual C++ Express 2008\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test", "test.vcproj", "{A3CC29EE-FB2A-4B83-A364-595F5314A6DC}"\r
+EndProject\r
+Global\r
+       GlobalSection(SolutionConfigurationPlatforms) = preSolution\r
+               Debug|Win32 = Debug|Win32\r
+               Release|Win32 = Release|Win32\r
+       EndGlobalSection\r
+       GlobalSection(ProjectConfigurationPlatforms) = postSolution\r
+               {A3CC29EE-FB2A-4B83-A364-595F5314A6DC}.Debug|Win32.ActiveCfg = Debug|Win32\r
+               {A3CC29EE-FB2A-4B83-A364-595F5314A6DC}.Debug|Win32.Build.0 = Debug|Win32\r
+               {A3CC29EE-FB2A-4B83-A364-595F5314A6DC}.Release|Win32.ActiveCfg = Release|Win32\r
+               {A3CC29EE-FB2A-4B83-A364-595F5314A6DC}.Release|Win32.Build.0 = Release|Win32\r
+       EndGlobalSection\r
+       GlobalSection(SolutionProperties) = preSolution\r
+               HideSolutionNode = FALSE\r
+       EndGlobalSection\r
+EndGlobal\r
diff --git a/fdmdv2/libsndfile/Projects/w32-vc9/test.vcproj b/fdmdv2/libsndfile/Projects/w32-vc9/test.vcproj
new file mode 100644 (file)
index 0000000..f710478
--- /dev/null
@@ -0,0 +1,204 @@
+<?xml version="1.0" encoding="Windows-1252"?>\r
+<VisualStudioProject\r
+       ProjectType="Visual C++"\r
+       Version="9.00"\r
+       Name="test"\r
+       ProjectGUID="{A3CC29EE-FB2A-4B83-A364-595F5314A6DC}"\r
+       Keyword="Win32Proj"\r
+       TargetFrameworkVersion="131072"\r
+       >\r
+       <Platforms>\r
+               <Platform\r
+                       Name="Win32"\r
+               />\r
+       </Platforms>\r
+       <ToolFiles>\r
+       </ToolFiles>\r
+       <Configurations>\r
+               <Configuration\r
+                       Name="Debug|Win32"\r
+                       OutputDirectory="Debug"\r
+                       IntermediateDirectory="Debug"\r
+                       ConfigurationType="1"\r
+                       InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC70.vsprops"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="&quot;..\..\include&quot;"\r
+                               PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"\r
+                               MinimalRebuild="true"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="1"\r
+                               UsePrecompiledHeader="0"\r
+                               WarningLevel="3"\r
+                               Detect64BitPortabilityProblems="false"\r
+                               DebugInformationFormat="4"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="libsndfile-1.lib"\r
+                               OutputFile="$(OutDir)/test.exe"\r
+                               LinkIncremental="2"\r
+                               AdditionalLibraryDirectories="&quot;..\..&quot;"\r
+                               GenerateDebugInformation="true"\r
+                               ProgramDatabaseFile="$(OutDir)/test.pdb"\r
+                               SubSystem="1"\r
+                               RandomizedBaseAddress="1"\r
+                               DataExecutionPrevention="0"\r
+                               TargetMachine="1"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="Release|Win32"\r
+                       OutputDirectory="Release"\r
+                       IntermediateDirectory="Release"\r
+                       ConfigurationType="1"\r
+                       InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC70.vsprops"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="2"\r
+                               InlineFunctionExpansion="1"\r
+                               OmitFramePointers="true"\r
+                               PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"\r
+                               StringPooling="true"\r
+                               RuntimeLibrary="0"\r
+                               EnableFunctionLevelLinking="true"\r
+                               UsePrecompiledHeader="0"\r
+                               WarningLevel="3"\r
+                               Detect64BitPortabilityProblems="true"\r
+                               DebugInformationFormat="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               OutputFile="$(OutDir)/test.exe"\r
+                               LinkIncremental="1"\r
+                               GenerateDebugInformation="true"\r
+                               SubSystem="1"\r
+                               OptimizeReferences="2"\r
+                               EnableCOMDATFolding="2"\r
+                               RandomizedBaseAddress="1"\r
+                               DataExecutionPrevention="0"\r
+                               TargetMachine="1"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+       </Configurations>\r
+       <References>\r
+       </References>\r
+       <Files>\r
+               <Filter\r
+                       Name="Source Files"\r
+                       Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm"\r
+                       >\r
+                       <File\r
+                               RelativePath="test.cc"\r
+                               >\r
+                       </File>\r
+               </Filter>\r
+               <Filter\r
+                       Name="Header Files"\r
+                       Filter="h;hpp;hxx;hm;inl;inc"\r
+                       >\r
+               </Filter>\r
+               <Filter\r
+                       Name="Resource Files"\r
+                       Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"\r
+                       >\r
+               </Filter>\r
+       </Files>\r
+       <Globals>\r
+       </Globals>\r
+</VisualStudioProject>\r
diff --git a/fdmdv2/libsndfile/bin/libsndfile-1.dll b/fdmdv2/libsndfile/bin/libsndfile-1.dll
new file mode 100644 (file)
index 0000000..545ffb5
Binary files /dev/null and b/fdmdv2/libsndfile/bin/libsndfile-1.dll differ
diff --git a/fdmdv2/libsndfile/bin/sndfile-about.ex- b/fdmdv2/libsndfile/bin/sndfile-about.ex-
new file mode 100644 (file)
index 0000000..92736a6
Binary files /dev/null and b/fdmdv2/libsndfile/bin/sndfile-about.ex- differ
diff --git a/fdmdv2/libsndfile/bin/sndfile-cmp.exe b/fdmdv2/libsndfile/bin/sndfile-cmp.exe
new file mode 100644 (file)
index 0000000..5470834
Binary files /dev/null and b/fdmdv2/libsndfile/bin/sndfile-cmp.exe differ
diff --git a/fdmdv2/libsndfile/bin/sndfile-convert.exe b/fdmdv2/libsndfile/bin/sndfile-convert.exe
new file mode 100644 (file)
index 0000000..0c422ae
Binary files /dev/null and b/fdmdv2/libsndfile/bin/sndfile-convert.exe differ
diff --git a/fdmdv2/libsndfile/bin/sndfile-info.exe b/fdmdv2/libsndfile/bin/sndfile-info.exe
new file mode 100644 (file)
index 0000000..29254c3
Binary files /dev/null and b/fdmdv2/libsndfile/bin/sndfile-info.exe differ
diff --git a/fdmdv2/libsndfile/bin/sndfile-metadata-get.exe b/fdmdv2/libsndfile/bin/sndfile-metadata-get.exe
new file mode 100644 (file)
index 0000000..4fdd063
Binary files /dev/null and b/fdmdv2/libsndfile/bin/sndfile-metadata-get.exe differ
diff --git a/fdmdv2/libsndfile/bin/sndfile-metadata-set.exe b/fdmdv2/libsndfile/bin/sndfile-metadata-set.exe
new file mode 100644 (file)
index 0000000..9881bf0
Binary files /dev/null and b/fdmdv2/libsndfile/bin/sndfile-metadata-set.exe differ
diff --git a/fdmdv2/libsndfile/bin/sndfile-play.exe b/fdmdv2/libsndfile/bin/sndfile-play.exe
new file mode 100644 (file)
index 0000000..22fa0a7
Binary files /dev/null and b/fdmdv2/libsndfile/bin/sndfile-play.exe differ
diff --git a/fdmdv2/libsndfile/doc/FAQ.html b/fdmdv2/libsndfile/doc/FAQ.html
new file mode 100644 (file)
index 0000000..7efb1f9
--- /dev/null
@@ -0,0 +1,849 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">\r
+<HTML>\r
+\r
+<HEAD>\r
+       <TITLE>\r
+       libsndfile : Frequently Asked Questions.\r
+       </TITLE>\r
+       <META NAME="Author"      CONTENT="Erik de Castro Lopo (erikd AT mega-nerd DOT com)">\r
+       <META NAME="Description" CONTENT="The libsndfile FAQ.">\r
+       <META NAME="Keywords"    CONTENT="WAV AIFF AU libsndfile sound audio dsp Linux">\r
+       <LINK REL="stylesheet" HREF="libsndfile.css" TYPE="text/css" MEDIA="all">\r
+       <LINK REL="stylesheet" HREF="print.css" TYPE="text/css" MEDIA="print">\r
+</HEAD>\r
+\r
+<BODY>\r
+\r
+<H1><B>libsndfile : Frequently Asked Questions.</B></H1>\r
+<P>\r
+<A HREF="#Q001">Q1 : Do you plan to support XYZ codec in libsndfile?</A><BR/>\r
+<A HREF="#Q002">Q2 : In version 0 the SF_INFO struct had a pcmbitwidth field\r
+               but version 1 does not. Why?</A><BR/>\r
+<A HREF="#Q003">Q3 : Compiling is really slow on MacOS X. Why?</A><BR/>\r
+<A HREF="#Q004">Q4 : When trying to compile libsndfile on Solaris I get a "bad\r
+               substitution" error during linking. What can I do to fix this?</A><BR/>\r
+<A HREF="#Q005">Q5 : Why doesn't libsndfile do interleaving/de-interleaving?</A><BR/>\r
+<A HREF="#Q006">Q6 : What's the best format for storing temporary files?</A><BR/>\r
+<A HREF="#Q007">Q7 : On Linux/Unix/MacOS X, what's the best way of detecting the\r
+       presence of libsndfile?</A><BR/>\r
+<A HREF="#Q008">Q8 : But I just want a simple Makefile! What do I do?</A><BR/>\r
+<A HREF="#Q009">Q9 : How about adding the ability to write/read sound files to/from\r
+       memory buffers?</A><BR/>\r
+<A HREF="#Q010">Q10 : Reading a 16 bit PCM file as normalised floats and then\r
+       writing them back changes some sample values. Why?</A><BR/>\r
+<A HREF="#Q011">Q11 : I'm having problems with u-law encoded WAV files generated by\r
+       libsndfile in Winamp. Why?</A><BR/>\r
+<A HREF="#Q012">Q12 : I'm looking at sf_read*. What are items? What are frames?</A><BR/>\r
+<A HREF="#Q013">Q13 : Why can't libsndfile open this Sound Designer II (SD2)\r
+       file?</A><BR/>\r
+<A HREF="#Q014">Q14 : I'd like to statically link libsndfile to my closed source\r
+       application. Can I buy a license so that this is possible?</A><BR/>\r
+<A HREF="#Q015">Q15 : My program is crashing during a call to a function in libsndfile.\r
+       Is this a bug in libsndfile?</A><BR/>\r
+<A HREF="#Q016">Q16 : Will you accept a fix for compiling libsndfile with compiler X?\r
+       </A><BR/>\r
+<A HREF="#Q017">Q17 : Can libsndfile read/write files from/to UNIX pipes?\r
+       </A><BR/>\r
+<A HREF="#Q018">Q18 : Is it possible to build a Universal Binary on Mac OS X?\r
+       </A><BR/>\r
+<A HREF="#Q019">Q19 : I have project files for Visual Studio / XCode / Whatever. Why\r
+       don't you distribute them with libsndfile?\r
+       </A><BR/>\r
+<A HREF="#Q020">Q20 : Why doesn't libsndfile support MP3? Lots of other Open Source\r
+       projects support it!\r
+       </A><BR/>\r
+<A HREF="#Q021">Q21 : How do I use libsndfile in a closed source or commercial program\r
+       and comply with the license?\r
+       </A><BR/>\r
+<A HREF="#Q022">Q22 : What versions of windows does libsndfile work on?\r
+       </A><BR/>\r
+<A HREF="#Q023">Q23 : I'm cross compiling libsndfile for another platform. How can I\r
+       run the test suite?\r
+       </A><BR/>\r
+<HR>\r
+\r
+<!-- ========================================================================= -->\r
+<A NAME="Q001"></A>\r
+<H2><BR/><B>Q1 : Do you plan to support XYZ codec in libsndfile?</B></H2>\r
+<P>\r
+If source code for XYZ codec is available under a suitable license (LGPL, BSD,\r
+MIT etc) then yes, I'd like to add it.\r
+</P>\r
+<P>\r
+If suitable documentation is available on how to decode and encode the format\r
+then maybe, depending on how much work is involved.\r
+</P>\r
+<P>\r
+If XYZ is some proprietary codec where no source code or documentation is\r
+available then no.\r
+</P>\r
+<P>\r
+So if you want support for XYZ codec, first find existing source code or\r
+documentation.\r
+If you can't find either then the answer is no.\r
+</P>\r
+<!-- ========================================================================= -->\r
+<A NAME="Q002"></A>\r
+<H2><BR/><B>Q2 : In version 0 the SF_INFO struct had a pcmbitwidth field\r
+               but version 1 does not. Why?</B></H2>\r
+<P>\r
+       This was dropped for a number of reasons:\r
+</P>\r
+<UL>\r
+       <LI> pcmbitwidth makes little sense on compressed or floating point formats\r
+       <LI> with the new API you really don't need to know it\r
+</UL>\r
+<P>\r
+As documented\r
+    <A HREF="http://www.mega-nerd.com/libsndfile/api.html#note1">here</A>\r
+there is now a well defined behaviour which ensures that no matter what the\r
+bit width of the source file, the scaling always does something sensible.\r
+This makes it safe to read 8, 16, 24 and 32 bit PCM files using sf_read_short()\r
+and always have the optimal behaviour.\r
+</P>\r
+\r
+<!-- ========================================================================= -->\r
+<A NAME="Q003"></A>\r
+<H2><BR/><B>Q3 : Compiling is really slow on MacOS X. Why?</B></H2>\r
+<P>\r
+When you configure and compile libsndfile, it uses the /bin/sh shell for a number\r
+of tasks (ie configure script and libtool).\r
+Older versions of OS X (10.2?) shipped a really crappy Bourne shell as /bin/sh\r
+which resulted in <b>really</b> slow compiles.\r
+Newer version of OS X ship GNU Bash as /bin/sh and this answer doesn't apply in that\r
+case.\r
+</P>\r
+<P>\r
+To fix this I suggest that you install the GNU Bash shell, rename /bin/sh to\r
+/bin/sh.old and make a symlink from /bin/sh to the bash shell.\r
+Bash is designed to behave as a Bourne shell when is is called as /bin/sh.\r
+</P>\r
+<P>\r
+When I did this on my iBook running MacOS X, compile times dropped from 13 minutes\r
+to 3 minutes.\r
+</P>\r
+\r
+<!-- ========================================================================= -->\r
+<A NAME="Q004"></A>\r
+<H2><BR/><B>Q4 : When trying to compile libsndfile on Solaris I get a "bad\r
+               substitution" error on linking. Why?</B></H2>\r
+<P>\r
+It seems that the Solaris Bourne shell disagrees with GNU libtool.\r
+</P>\r
+<P>\r
+To fix this I suggest that you install the GNU Bash shell, rename /bin/sh to\r
+/bin/sh.old and make a symlink from /bin/sh to the bash shell.\r
+Bash is designed to behave as a Bourne shell when is is called as /bin/sh.\r
+</P>\r
+\r
+<!-- ========================================================================= -->\r
+<A NAME="Q005"></A>\r
+<H2><BR/><B>Q5 : Why doesn't libsndfile do interleaving/de-interleaving?</B></H2>\r
+<P>\r
+This problem is bigger than it may seem at first.\r
+</P>\r
+<P>\r
+For a stereo file, it is a pretty safe bet that a simple interleaving/de-interleaving\r
+could satisfy most users.\r
+However, for files with more than 2 channels this is unlikely to be the case.\r
+If the user has a 4 channel file and want to play that file on a stereo output\r
+sound card they either want the first 2 channels or they want some mixed combination\r
+of the 4 channels.\r
+</P>\r
+<P>\r
+When you add more channels, the combinations grow exponentially and it becomes\r
+increasingly difficult to cover even a sensible subset of the possible combinations.\r
+On top of that, coding any one style of interleaver/de-interleaver is trivial, while\r
+coding one that can cover all combinations is far from trivial.\r
+This means that this feature will not be added any time soon.\r
+</P>\r
+\r
+<!-- ========================================================================= -->\r
+<A NAME="Q006"></A>\r
+<H2><BR/><B>Q6 : What's the best format for storing temporary files?</B></H2>\r
+\r
+<P>\r
+When you want to store temporary data there are a number of requirements;\r
+</P>\r
+<UL>\r
+       <LI> A simple, easy to parse header.\r
+       <LI> The format must provide the fastest possible read and write rates (ie\r
+               avoid conversions and encoding/decoding).\r
+       <LI> The file format must be reasonably common and playable by most players.\r
+       <LI> Able to store data in either endian-ness.\r
+</UL>\r
+<P>\r
+The format which best meets these requirements is AU, which allows data to be\r
+stored in any one of short, int, float and double (among others) formats.\r
+</P>\r
+<P>\r
+For instance, if an application uses float data internally, its temporary files\r
+should use a format of (SF_ENDIAN_CPU | SF_FORMAT_AU | SF_FORMAT_FLOAT) which\r
+will store big endian float data in big endian CPUs and little endian float data\r
+on little endian CPUs.\r
+Reading and writing this format will not require any conversions or byte swapping\r
+regardless of the host CPU.\r
+</P>\r
+\r
+<!-- ========================================================================= -->\r
+\r
+<A NAME="Q007"></A>\r
+<H2><BR/><B>Q7 : On Linux/Unix/MaxOS X, what's the best way of detecting the presence\r
+       of libsndfile using autoconf?</B></H2>\r
+\r
+<P>\r
+libsndfile uses the pkg-config (man pkg-config) method of registering itself with the\r
+host system.\r
+The best way of detecting its presence is using something like this in configure.ac\r
+(or configure.in):\r
+</P>\r
+<PRE>\r
+        PKG_CHECK_MODULES(SNDFILE, sndfile >= 1.0.2, ac_cv_sndfile=1, ac_cv_sndfile=0)\r
+\r
+        AC_DEFINE_UNQUOTED([HAVE_SNDFILE],${ac_cv_sndfile},\r
+                       [Set to 1 if you have libsndfile.])\r
+\r
+        AC_SUBST(SNDFILE_CFLAGS)\r
+        AC_SUBST(SNDFILE_LIBS)\r
+</PRE>\r
+<P>\r
+This will automatically set the <B>SNDFILE_CFLAGS</B> and <B>SNDFILE_LIBS</B>\r
+variables which can be used in Makefile.am like this:\r
+</P>\r
+<PRE>\r
+        SNDFILE_CFLAGS = @SNDFILE_CFLAGS@\r
+        SNDFILE_LIBS = @SNDFILE_LIBS@\r
+</PRE>\r
+<P>\r
+If you install libsndfile from source, you will probably need to set the\r
+<B>PKG_CONFIG_PATH</B> environment variable as suggested at the end of the\r
+libsndfile configure process. For instance on my system I get this:\r
+</P>\r
+<PRE>\r
+        -=-=-=-=-=-=-=-=-=-= Configuration Complete =-=-=-=-=-=-=-=-=-=-\r
+\r
+          Configuration summary :\r
+\r
+            Version : ..................... 1.0.5\r
+            Experimental code : ........... no\r
+\r
+          Tools :\r
+\r
+            Compiler is GCC : ............. yes\r
+            GCC major version : ........... 3\r
+\r
+          Installation directories :\r
+\r
+            Library directory : ........... /usr/local/lib\r
+            Program directory : ........... /usr/local/bin\r
+            Pkgconfig directory : ......... /usr/local/lib/pkgconfig\r
+\r
+        Compiling some other packages against libsndfile may require\r
+        the addition of "/usr/local/lib/pkgconfig" to the\r
+        PKG_CONFIG_PATH environment variable.\r
+</PRE>\r
+\r
+<!-- ========================================================================= -->\r
+\r
+<A NAME="Q008"></A>\r
+<H2><BR/><B>Q8 : But I just want a simple Makefile! What do I do?</B></H2>\r
+\r
+<P>\r
+The <B>pkg-config</B> program makes finding the correct compiler flag values and\r
+library location far easier.\r
+During the installation of libsndfile, a file named <B>sndfile.pc</B> is installed\r
+in the directory <B>${libdir}/pkgconfig</B> (ie if libsndfile is installed in\r
+<B>/usr/local/lib</B>, <B>sndfile.pc</B> will be installed in\r
+<B>/usr/local/lib/pkgconfig/</B>).\r
+</P>\r
+<P>\r
+In order for pkg-config to find sndfile.pc it may be necessary to point the\r
+environment variable <B>PKG_CONFIG_PATH</B> in the right direction.\r
+</P>\r
+<PRE>\r
+        export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig\r
+</PRE>\r
+\r
+<P>\r
+Then, to compile a C file into an object file, the command would be:\r
+</P>\r
+<PRE>\r
+        gcc `pkg-config --cflags sndfile` -c somefile.c\r
+</PRE>\r
+<P>\r
+and to link a number of objects into an executable that links against libsndfile,\r
+the command would be:\r
+</P>\r
+<PRE>\r
+        gcc `pkg-config --libs sndfile` obj1.o obj2.o -o program\r
+</PRE>\r
+\r
+<!-- ========================================================================= -->\r
+\r
+<A NAME="Q009"></A>\r
+<H2><BR/><B>Q9 : How about adding the ability to write/read sound files to/from\r
+       memory buffers?</B></H2>\r
+\r
+<P>\r
+This has been added for version 1.0.13.\r
+</P>\r
+\r
+<!-- ========================================================================= -->\r
+\r
+<A NAME="Q010"></A>\r
+<H2><BR/><B>Q10 : Reading a 16 bit PCM file as normalised floats and then\r
+       writing them back changes some sample values. Why?</B></H2>\r
+\r
+<P>\r
+This is caused by the fact that the conversion from 16 bit short to float is\r
+done by dividing by 32768 (0x8000 in hexadecimal) while the conversion from\r
+float to 16 bit short is done by multiplying by 32767 (0x7FFF in hex).\r
+So for instance, a value in a 16 bit PCM file of 20000 gets read as a floating\r
+point number of 0.6103515625 (20000.0 / 0x8000).\r
+Converting that back to a 16 bit short results in a value of 19999.3896484375\r
+(0.6103515625 * 0x7FFF) which then gets rounded down to 19999.\r
+</P>\r
+<P>\r
+You will notice that for this particular case, the error is 1 in 20000 or\r
+0.005%.\r
+Interestingly, for values of less than 16369, dividing by 0x8000 followed\r
+by multiplying by 0x7FFF and then rounding the result, gives back the\r
+original value.\r
+It turns out that as long as the host operating system supplies the 1999 ISO\r
+C Standard functions <B>lrintf</B> and <B>lrint</B> (or a replacement has\r
+been supplied) then the maximum possible error is 1 in 16369 or about 0.006%.\r
+</P>\r
+<P>\r
+Regardless of the size of the error, the reason why this is done is rather\r
+subtle.\r
+</P>\r
+<P>\r
+In a file containing 16 bit PCM samples, the values are restricted to the range\r
+[-32768, 32767] while we want floating point values in the range [-1.0, 1.0].\r
+The only way to do this conversion is to do a floating point division by a value\r
+of 0x8000.\r
+Converting the other way, the only way to ensure that floating point values in\r
+the range [-1.0, 1.0] are within the valid range allowed by a 16 bit short is\r
+to multiply by 0x7FFF.\r
+</P>\r
+<P>\r
+Some people would say that this is a severe short-coming of libsndfile.\r
+I would counter that anybody who is constantly converting back and forth\r
+between 16 bit shorts and normalised floats is going to suffer other losses\r
+in audio quality that they should also be concerned about.\r
+</P>\r
+<P>\r
+Since this problem only occurs when converting between integer data on disk and\r
+normalized floats in the application, it can be avoided by using something\r
+other than normalized floats in the application.\r
+Alternatives to normalized floats are the <b>short</b> and <b>int</b> data\r
+types (ie using sf_read_short or sf_read_int) or using un-normalized floats\r
+(see\r
+       <a href="http://www.mega-nerd.com/libsndfile/command.html#SFC_SET_NORM_FLOAT">\r
+       SFC_SET_NORM_FLOAT</a>).\r
+</P>\r
+<P>\r
+Another way to deal with this problem is to consider 16 bit short data as a\r
+final destination format only, not as an intermediate storage format.\r
+All intermediate data (ie which is going to be processed further) should be\r
+stored in floating point format which is supported by all of the most common\r
+file formats.\r
+If floating point files are considered too large (2 times the size of a 16 bit\r
+PCM file), it would also be possible to use 24 bit PCM as an intermediate\r
+storage format (and which is also supported by most common file types).\r
+</P>\r
+\r
+<!-- ========================================================================= -->\r
+\r
+<A NAME="Q011"></A>\r
+<H2><BR/><B>Q11 : I'm having problems with u-law encoded WAV files generated by\r
+       libsndfile in Winamp. Why?\r
+</B></H2>\r
+\r
+<P>\r
+This is actually a Winamp problem.\r
+The official Microsoft spec suggests that the 'fmt ' chunk should be 18 bytes.\r
+Unfortunately at least one of Microsoft's own applications (Sound Recorder on\r
+Win98 I believe) did not accept 18 bytes 'fmt ' chunks.\r
+</P>\r
+<P>\r
+Michael Lee did some experimenting and found that:\r
+</P>\r
+<PRE>\r
+    I have checked that Windows Media Player 9, QuickTime Player 6.4,\r
+    RealOne Player 2.0 and GoldWave 5.06 can all play u-law files with\r
+    16-byte or 18-byte 'fmt ' chunk. Only Winamp (2.91) and foobar2000\r
+    are unable to play u-law files with 16-byte 'fmt ' chunk.\r
+</PRE>\r
+\r
+<P>\r
+Even this is a very small sampling of all the players out there.\r
+For that reason it is probably not a good idea to change this now because there\r
+is the risk of breaking something that currently works.\r
+</P>\r
+\r
+<!-- ========================================================================= -->\r
+\r
+<A NAME="Q012"></A>\r
+<H2><BR/><B>Q12 : I'm looking at sf_read*. What are items? What are frames?\r
+</B></H2>\r
+\r
+<P>\r
+An <tt>item</tt>tt> is a single sample of the data type you are reading; ie a\r
+single <tt>short</tt> value for <tt>sf_read_short</tt> or a single <tt>float</tt>\r
+for <tt>sf_read_float</tt>.\r
+</P>\r
+\r
+For a sound file with only one channel, a frame is the same as a item (ie a\r
+single sample) while for multi channel sound files, a single frame contains a\r
+single item for each channel.\r
+</P>\r
+\r
+<P>\r
+Here are two simple, correct examples, both of which are assumed to be working\r
+on a stereo file, first using items:\r
+</P>\r
+\r
+<PRE>\r
+        #define CHANNELS 2\r
+        short data [CHANNELS * 100] ;\r
+        sf_count items_read = sf_read_short (file, data, 200) ;\r
+        assert (items_read == 200) ;\r
+</PRE>\r
+\r
+<P>\r
+and now readng the exact same amount of data using frames:\r
+</P>\r
+\r
+<PRE>\r
+        #define CHANNELS 2\r
+        short data [CHANNELS * 100] ;\r
+        sf_count frames_read = sf_readf_short (file, data, 100) ;\r
+        assert (frames_read == 100) ;\r
+</PRE>\r
+\r
+<!-- ========================================================================= -->\r
+\r
+<A NAME="Q013"></A>\r
+<H2><BR/><B>Q13 : Why can't libsndfile open this Sound Designer II (SD2) file?\r
+</B></H2>\r
+\r
+<P>\r
+This is somewhat complicated.\r
+First some background.\r
+</P>\r
+\r
+<P>\r
+SD2 files are native to the Apple Macintosh platform and use features of\r
+the Mac filesystem (file resource forks) to store the file's sample rate,\r
+number of channels, sample width and more.\r
+When you look at a file and its resource fork on Mac OS X it looks like\r
+this:\r
+</P>\r
+\r
+<PRE>\r
+        -rw-r--r--  1 erikd erikd   46512 Oct 18 22:57 file.sd2\r
+        -rw-r--r--  1 erikd erikd     538 Oct 18 22:57 file.sd2/rsrc\r
+</PRE>\r
+\r
+<P>\r
+Notice how the file itself looks like a directory containing a single file\r
+named <B>rsrc</B>.\r
+When libsndfile is compiled for MacOS X, it should open (for write and read)\r
+SD2 file with resource forks like this without any problems.\r
+It will also handle files with the resource fork in a separate file as\r
+described below.\r
+</P>\r
+\r
+<P>\r
+When SD2 files are moved to other platforms, the resource fork of the file\r
+can sometimes be dropped altogether.\r
+All that remains is the raw audio data and no information about the number\r
+of channels, sample rate or bit width which makes it a little difficult for\r
+libsndfile to open the file.\r
+</P>\r
+\r
+<P>\r
+However, it is possible to safely move an SD2 file to a Linux or Windows\r
+machine.\r
+For instance, when an SD2 file is copied from inside MacOS X to a windows\r
+shared directory or a Samba share (ie Linux), MacOS X is clever enough to\r
+store the resource fork of the file in a separate hidden file in the\r
+same directory like this:\r
+</P>\r
+<PRE>\r
+        -rw-r--r--  1 erikd erikd     538 Oct 18 22:57 ._file.sd2\r
+        -rw-r--r--  1 erikd erikd   46512 Oct 18 22:57 file.sd2\r
+</PRE>\r
+\r
+<P>\r
+Regardless of what platform it is running on, when libsndfile is asked to\r
+open a file named <B>"foo"</B> and it can't recognize the file type from\r
+the data in the file, it will attempt to open the resource fork and if\r
+that fails, it then tries to open a file named <B>"._foo"</B> to see if\r
+the file has a valid resource fork.\r
+This is the same regardless of whether the file is being opened for read\r
+or write.\r
+</P>\r
+\r
+<P>\r
+In short, libsndfile should open SD2 files with a valid resource fork on\r
+all of the platforms that libsndfile supports.\r
+If a file has lost its resource fork, the only option is the open the file\r
+using the SF_FORMAT_RAW option and guessing its sample rate, channel count\r
+and bit width.\r
+</P>\r
+\r
+<P>\r
+Occasionally, when SD2 files are moved to other systems, the file is\r
+       <A HREF="http://www.macdisk.com/binhexen.php3">BinHexed</A>\r
+which wraps the resource fork and the data fork together.\r
+For these files, it would be possible to write a BinHex parser but\r
+there is not a lot to gain considering how rare these BinHexed SD2\r
+files are.\r
+</P>\r
+\r
+<!-- ========================================================================= -->\r
+<A NAME="Q014"></A>\r
+<H2><BR/><B>Q14 : I'd like to statically link libsndfile to my closed source\r
+       application. Can I buy a license so that this is possible?\r
+</B></H2>\r
+\r
+<P>\r
+Unfortunately no.\r
+libsndfile contains code written by other people who have agreed that their\r
+code be used under the GNU LGPL but no more.\r
+Even if they were to agree, there would be significant difficulties in\r
+dividing up the payments fairly.\r
+</P>\r
+\r
+<P>\r
+The <B>only</B> way you can legally use libsndfile as a statically linked\r
+library is if your application is released under the GNU GPL or LGPL.\r
+</P>\r
+\r
+<!-- ========================================================================= -->\r
+<A NAME="Q015"></A>\r
+<H2><BR/><B>Q15 : My program is crashing during a call to a function in libsndfile.\r
+       Is this a bug in libsndfile?\r
+</B></H2>\r
+\r
+<P>\r
+libsndfile is being used by large numbers of people all over the world\r
+without any problems like this. That means that it is much more likely\r
+that your code has a bug than libsndfile. However, it is still possible\r
+that there is a bug in libsndfile.\r
+</P>\r
+<P>\r
+To figure out whether it is your code or libsndfile you should do the\r
+following:\r
+</P>\r
+       <UL>\r
+       <LI>Make sure you are compiling your code with warnings switched on and\r
+               that you fix as many warnings as possible.\r
+               With the GNU compiler (gcc) I would recommend at least\r
+               <B>-W -Wall -Werror</B> which will force you to fix all warnings\r
+               before you can run the code.\r
+       <LI>Try using a memory debugger.\r
+               <A HREF="http://valgrind.kde.org/">Valgrind</A> on x86 Linux is excellent.\r
+               <A HREF="http://www.ibm.com/software/awdtools/purify/">Purify</A> also\r
+               has a good reputation.\r
+       <LI>If the code is clean after the above two steps and you still get\r
+               a crash in libsndfile, then send me a small snippet of code (no\r
+               more than 30-40 lines) which includes the call to sf_open() and\r
+               also shows how all variables passed to/returned from sf_open()\r
+               are defined.\r
+       </UL>\r
+\r
+<!-- ========================================================================= -->\r
+<A NAME="Q016"></A>\r
+<H2><BR/><B>Q16 : Will you accept a fix for compiling libsndfile with compiler X?\r
+</B></H2>\r
+\r
+<P>\r
+If compiler X is a C++ compiler then no.\r
+C and C++ are different enough to make writing code that compiles as valid C\r
+and valid C++ too difficult.\r
+I would rather spend my time fixing bugs and adding features.\r
+</P>\r
+\r
+<P>\r
+If compiler X is a C compiler then I will do what I can as long as that does\r
+not hamper the correctness, portability and maintainability of the existing\r
+code.\r
+It should be noted however that libsndfile uses features specified by the 1999\r
+ISO C Standard.\r
+This can make compiling libsndfile with some older compilers difficult.\r
+</P>\r
+\r
+<!-- ========================================================================= -->\r
+<A NAME="Q017"></A>\r
+<H2><BR/><B>Q17 : Can libsndfile read/write files from/to UNIX pipes?\r
+</B></H2>\r
+\r
+<P>\r
+Yes, libsndfile can read files from pipes.\r
+Unfortunately, the write case is much more complicated.\r
+</P>\r
+\r
+<P>\r
+File formats like AIFF and WAV have information at the start of the file (the\r
+file header) which states the length of the file, the number of sample frames\r
+etc.\r
+This information must be filled in correctly when the file header is written,\r
+but this information is not reliably known until the file is closed.\r
+This means that libsndfile cannot write AIFF, WAV and many other file types\r
+to a pipe.\r
+</P>\r
+\r
+<P>\r
+However, there is at least one file format (AU) which is specifically designed\r
+to be written to a pipe.\r
+Like AIFF and WAV, AU has a header with a sample frames field, but it is\r
+specifically allowable to set that frames field to 0x7FFFFFFF if the file\r
+length is not known when the header is written.\r
+The AU file format can also hold data in many of the standard formats (ie\r
+SF_FORMAT_PCM_16, SF_FORMAT_PCM_24, SF_FORMAT_FLOAT etc) as well as allowing\r
+data in both big and little endian format.\r
+</P>\r
+\r
+<P>\r
+See also <A HREF="#Q006">FAQ Q6</A>.\r
+</P>\r
+\r
+<!-- ========================================================================= -->\r
+<A NAME="Q018"></A>\r
+<H2><BR/><B>Q18 : Is it possible to build a Universal Binary on Mac OS X?\r
+</B></H2>\r
+\r
+<P>\r
+Yes, but you must do two separate configure/build/test runs; one on PowerPC\r
+and one on Intel.\r
+It is then possible to merge the binaries into a single universal binary using\r
+one of the programs in the Apple tool chain.\r
+</P>\r
+\r
+<P>\r
+It is <b>not</b> possible to build a working universal binary via a single\r
+compile/build run on a single CPU.\r
+</P>\r
+\r
+<P>\r
+The problem is that the libsndfile build process detects features of the CPU its\r
+being built for during the configure process and when building a universal binary,\r
+configure is only run once and that data is then used for both CPUs.\r
+That configure data will be wrong for one of those CPUs.\r
+You will still be able to compile libsndfile, and the test suite will pass on\r
+the machine you compiled it on.\r
+However, if you take the universal binary test suite programs compiled on one\r
+CPU and run them on the other, the test suite will fail.\r
+</P>\r
+\r
+<P>\r
+Part of the problem is the the CPU endian-ness is detected at configure time.\r
+Yes, I know the Apple compiler defines one of the macros __LITTLE_ENDIAN__\r
+and __BIG_ENDIAN__, but those macros are not part of the 1999 ISO C Standard\r
+and they are not portable.\r
+</P>\r
+\r
+<P>\r
+Endian issues are not the only reason why the cross compiled binary will fail.\r
+The configure script also detects other CPU specific idiosyncrasies to provide\r
+more optimized code.\r
+</P>\r
+\r
+<P>\r
+Finally, the real show stopper problem with universal binaries is the problem\r
+with the test suite.\r
+libsndfile contains a huge, comprehensive test suite.\r
+When you compile a universal binary and run the test suite, you only test the\r
+native compile.\r
+The cross compiled binary (the one with the much higher chance of having\r
+problems) cannot be tested.\r
+</P>\r
+\r
+<P>\r
+Now, if you have read this far you're probably thinking there must be a way\r
+to fix this and there probably is.\r
+The problem is that its a hell of a lot of work and would require significant\r
+changes to the configure process, the internal code and the test suite.\r
+In addition, these changes must not break compilation on any of the platforms\r
+libsndfile is currently working on.\r
+</p>\r
+\r
+\r
+<!-- ========================================================================= -->\r
+<A NAME="Q019"></A>\r
+<H2><BR/><B>Q19 : I have project files for Visual Studio / XCode / Whatever. Why\r
+       don't you distribute them with libsndfile?\r
+</B></H2>\r
+\r
+<P>\r
+There's a very good reason for this.\r
+I will only distribute things that I actually have an ability to test and\r
+maintain.\r
+Project files for a bunch of different compilers and Integrated Development\r
+Environments are simply too difficult to maintain.\r
+</P>\r
+\r
+<P>\r
+The problem is that every time I add a new file to libsndfile or rename an\r
+existing file I would have to modify all the project files and then test that\r
+libsndfile still built with all the different compilers.\r
+</P>\r
+\r
+<P>\r
+Maintaining these project files is also rather difficult if I don't have access\r
+to the required compiler/IDE.\r
+If I just edit the project files without testing them I will almost certainly\r
+get it wrong.\r
+If I release a version of libsndfile with broken project files, I'll get a bunch\r
+of emails from people complaining about it not building and have no way of\r
+fixing or even testing it.\r
+</P>\r
+\r
+<P>\r
+I currently release sources that I personally test on Win32, Linux and\r
+MacOS X (PowerPC) using the compiler I trust (GNU GCC).\r
+Supporting one compiler on three (actually much more because GCC is available\r
+almost everywhere) platforms is doable without too much pain.\r
+I also release binaries for Win32 with instructions on how to use those\r
+binaries with Visual Studio.\r
+As a guy who is mainly interested in Linux, I'm not to keen to jump through\r
+a bunch of hoops to support compilers and operating systems I don't use.\r
+</P>\r
+\r
+<P>\r
+So, I hear you want to volunteer to maintain the project files for Some Crappy\r
+Compiler 2007?\r
+Well sorry, that won't work either.\r
+I have had numerous people over the years offer to maintaining the project\r
+files for Microsoft's Visual Studio.\r
+Every single time that happened, they maintained it for a release or two and\r
+then disappeared off the face of the earth.\r
+Hence, I'm not willing to enter into an arrangement like that again.\r
+</P>\r
+\r
+<!-- ========================================================================= -->\r
+<A NAME="Q020"></A>\r
+<H2><BR/><B>Q20 : Why doesn't libsndfile support MP3? Lots of other Open Source\r
+       projects support it!\r
+</B></H2>\r
+\r
+<P>\r
+MP3 is not supported for one very good reason; doing so requires the payment\r
+of licensing fees.\r
+As can be seen from\r
+       <a href="http://www.mp3licensing.com/royalty/software.html">\r
+       mp3licensing.com</a>\r
+the required royalty payments are not cheap.\r
+</P>\r
+\r
+<p>\r
+Yes, I know other libraries ignore the licensing requirements, but their legal\r
+status is extremely dubious.\r
+At any time, the body selling the licenses could go after the authors of those\r
+libraries.\r
+Some of those authors may be students and hence wouldn't be worth pursuing.\r
+</P>\r
+\r
+<p>\r
+However, libsndfile is released under the name of a company, Mega Nerd Pty Ltd;\r
+a company which has income from from libsamplerate licensing, libsndfile based\r
+consulting income and other unrelated consulting income.\r
+Adding MP3 support to libsndfile could place that income would be under legal\r
+threat.\r
+</p>\r
+\r
+<p>\r
+Fortunately, Ogg Vorbis exists as an alternative to MP3.\r
+Support for Ogg Vorbis was added to libsndfile (mostly due to the efforts of\r
+John ffitch of the Csound project) in version 1.0.18.\r
+</p>\r
+\r
+\r
+<!-- ========================================================================= -->\r
+<A NAME="Q021"></A>\r
+<H2><BR/><B>Q21 : How do I use libsndfile in a closed source or commercial program\r
+       and comply with the license?\r
+</B></H2>\r
+\r
+<p>\r
+Here is a checklist of things you need to do to make sure your use of libsndfile\r
+in a closed source or commercial project complies with the license libsndfile is\r
+released under, the GNU Lesser General Public License (LGPL):\r
+</p>\r
+\r
+<ul>\r
+<li>Make sure you are linking to libsndfile as a shared library (Linux and Unix\r
+       systems), Dynamic Link Library (Microsoft Windows) or dynlib (Mac OS X).\r
+       If you are using some other operating system that doesn't allow dynamically\r
+       linked libraries, you will not be able to use libsndfile unless you release\r
+       the source code to your program.\r
+<li>In the licensing documentation for your program, add a statement that your\r
+       software depends on libsndfile and that libsndfile is released under the GNU\r
+       Lesser General Public License, either\r
+               <a href="http://www.gnu.org/licenses/lgpl-2.1.txt">version 2.1</a>\r
+       or optionally\r
+               <a href="http://www.gnu.org/licenses/lgpl.txt">version 3</a>.\r
+<li>Include the text for both versions of the license, possibly as separate\r
+       files named libsndfile_lgpl_v2_1.txt and libsndfile_lgpl_v3.txt.\r
+</ul>\r
+\r
+<!-- ========================================================================= -->\r
+<A NAME="Q022"></A>\r
+<H2><BR/><B>Q22 : What versions of Windows does libsndfile work on?\r
+</B></H2>\r
+\r
+<p>\r
+Currently the precompiled windows binaries are thoroughly tested on Windows XP.\r
+As such, they should also work on Win2k and Windows Vista.\r
+They may also work on earlier versions of Windows.\r
+</p>\r
+\r
+<p>\r
+Since version 0.1.18 I have also been releasing precompiled binaries for Win64,\r
+the 64 bit version of Windows.\r
+These binaries have received much less testing than the  32 bit versions, but\r
+should work as expected.\r
+I'd be very interested in receiving feedback  on these binaries.\r
+</p>\r
+\r
+<!-- ========================================================================= -->\r
+<A NAME="Q023"></A>\r
+<H2><BR/><B>Q23 : I'm cross compiling libsndfile for another platform. How can I\r
+       run the test suite?\r
+</B></H2>\r
+\r
+<p>\r
+</p>\r
+\r
+<p>\r
+Since version 1.0.21 the top level Makefile has an extra make target,\r
+'test-tarball'.\r
+Building this target creates a tarball called called:\r
+</p>\r
+\r
+<center><tt>\r
+libsndfile-testsuite-${host_triplet}-${version}.tar.gz\r
+</tt></center>\r
+\r
+<p>\r
+in the top level directory.\r
+This tarball can then be copied to the target platform.\r
+Once untarred and test script <tt>test_wrapper.sh</tt> can be run from\r
+the top level of the extracted tarball.\r
+</p>\r
+\r
+<!-- ========================================================================= -->\r
+<HR>\r
+<P>\r
+       The libsndfile home page is here :\r
+               <A HREF="http://www.mega-nerd.com/libsndfile/">\r
+                       http://www.mega-nerd.com/libsndfile/</A>.\r
+<BR/>\r
+Version : 1.0.25\r
+</P>\r
+\r
+</BODY>\r
+</HTML>\r
diff --git a/fdmdv2/libsndfile/doc/api.html b/fdmdv2/libsndfile/doc/api.html
new file mode 100644 (file)
index 0000000..a1602c4
--- /dev/null
@@ -0,0 +1,781 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">\r
+<HTML>\r
+\r
+<HEAD>\r
+       <TITLE>\r
+       The libsndfile API\r
+       </TITLE>\r
+       <META NAME="Author"      CONTENT="Erik de Castro Lopo (erikd AT mega-nerd DOT com)">\r
+       <META NAME="Description" CONTENT="The libsndfile API.">\r
+       <META NAME="Keywords"    CONTENT="WAV AIFF AU libsndfile sound audio dsp Linux">\r
+       <LINK REL="stylesheet" HREF="libsndfile.css" TYPE="text/css" MEDIA="all">\r
+       <LINK REL="stylesheet" HREF="print.css" TYPE="text/css" MEDIA="print">\r
+</HEAD>\r
+\r
+<BODY>\r
+\r
+<BR>\r
+<H1><B>libsndfile</B></H1>\r
+<P>\r
+       Libsndfile is a library designed to allow the reading and writing of many\r
+       different sampled sound file formats (such as MS Windows WAV and the Apple/SGI\r
+       AIFF format) through one standard library interface.\r
+</P>\r
+<!-- pepper -->\r
+<P>\r
+       During read and write operations, formats are seamlessly converted between the\r
+       format the application program has requested or supplied and the file's data\r
+       format. The application programmer can remain blissfully unaware of issues\r
+       such as file endian-ness and data format. See <A HREF="#note1">Note 1</A> and\r
+       <A HREF="#note2">Note 2</A>.\r
+</P>\r
+<!-- pepper -->\r
+<P>\r
+       Every effort is made to keep these documents up-to-date, error free and\r
+       unambiguous.\r
+       However, since maintaining the documentation is the least fun part of working\r
+       on libsndfile, these docs can and do fall behind the behaviour of library.\r
+       If any errors, omissions or ambiguities are found, please notify me (erikd)\r
+       at mega-nerd dot com.\r
+</P>\r
+<!-- pepper -->\r
+<P>\r
+       To supplement this reference documentation, there are simple example programs\r
+       included in the source code tarball.\r
+       The test suite which is also part of the source code tarball is also a good\r
+       place to look for the correct usage of the library functions.\r
+</P>\r
+<!-- pepper -->\r
+<P>\r
+       <B> Finally, if you think there is some feature missing from libsndfile, check that\r
+       it isn't already implemented (and documented)\r
+               <A HREF="command.html">here</A>.\r
+       </B>\r
+</P>\r
+\r
+<H2><B>Synopsis</B></H2>\r
+<P>\r
+The functions of libsndfile are defined as follows:\r
+</P>\r
+<!-- pepper -->\r
+<PRE>\r
+      #include &lt;stdio.h&gt;\r
+      #include &lt;sndfile.h&gt;\r
+\r
+      SNDFILE*    <A HREF="#open">sf_open</A>          (const char *path, int mode, SF_INFO *sfinfo) ;\r
+      SNDFILE*    <A HREF="#open_fd">sf_open_fd</A>       (int fd, int mode, SF_INFO *sfinfo, int close_desc) ;\r
+      SNDFILE*           <A HREF="#open_virtual">sf_open_virtual</A>  (SF_VIRTUAL_IO *sfvirtual, int mode, SF_INFO *sfinfo, void *user_data) ;\r
+      int         <A HREF="#check">sf_format_check</A>  (const SF_INFO *info) ;\r
+\r
+      sf_count_t  <A HREF="#seek">sf_seek</A>          (SNDFILE *sndfile, sf_count_t frames, int whence) ;\r
+\r
+      int         <A HREF="command.html">sf_command</A>       (SNDFILE *sndfile, int cmd, void *data, int datasize) ;\r
+\r
+      int         <A HREF="#error">sf_error</A>         (SNDFILE *sndfile) ;\r
+      const char* <A HREF="#error">sf_strerror</A>      (SNDFILE *sndfile) ;\r
+      const char* <A HREF="#error">sf_error_number</A>  (int errnum) ;\r
+\r
+      int         <A HREF="#error">sf_perror</A>        (SNDFILE *sndfile) ;\r
+      int         <A HREF="#error">sf_error_str</A>     (SNDFILE *sndfile, char* str, size_t len) ;\r
+\r
+      int         <A HREF="#close">sf_close</A>         (SNDFILE *sndfile) ;\r
+      void        <A HREF="#write_sync">sf_write_sync</A>    (SNDFILE *sndfile) ;\r
+\r
+      sf_count_t  <A HREF="#read">sf_read_short</A>    (SNDFILE *sndfile, short *ptr, sf_count_t items) ;\r
+      sf_count_t  <A HREF="#read">sf_read_int</A>      (SNDFILE *sndfile, int *ptr, sf_count_t items) ;\r
+      sf_count_t  <A HREF="#read">sf_read_float</A>    (SNDFILE *sndfile, float *ptr, sf_count_t items) ;\r
+      sf_count_t  <A HREF="#read">sf_read_double</A>   (SNDFILE *sndfile, double *ptr, sf_count_t items) ;\r
+\r
+      sf_count_t  <A HREF="#readf">sf_readf_short</A>   (SNDFILE *sndfile, short *ptr, sf_count_t frames) ;\r
+      sf_count_t  <A HREF="#readf">sf_readf_int</A>     (SNDFILE *sndfile, int *ptr, sf_count_t frames) ;\r
+      sf_count_t  <A HREF="#readf">sf_readf_float</A>   (SNDFILE *sndfile, float *ptr, sf_count_t frames) ;\r
+      sf_count_t  <A HREF="#readf">sf_readf_double</A>  (SNDFILE *sndfile, double *ptr, sf_count_t frames) ;\r
+\r
+      sf_count_t  <A HREF="#write">sf_write_short</A>   (SNDFILE *sndfile, short *ptr, sf_count_t items) ;\r
+      sf_count_t  <A HREF="#write">sf_write_int</A>     (SNDFILE *sndfile, int *ptr, sf_count_t items) ;\r
+      sf_count_t  <A HREF="#write">sf_write_float</A>   (SNDFILE *sndfile, float *ptr, sf_count_t items) ;\r
+      sf_count_t  <A HREF="#write">sf_write_double</A>  (SNDFILE *sndfile, double *ptr, sf_count_t items) ;\r
+\r
+      sf_count_t  <A HREF="#writef">sf_writef_short</A>  (SNDFILE *sndfile, short *ptr, sf_count_t frames) ;\r
+      sf_count_t  <A HREF="#writef">sf_writef_int</A>    (SNDFILE *sndfile, int *ptr, sf_count_t frames) ;\r
+      sf_count_t  <A HREF="#writef">sf_writef_float</A>  (SNDFILE *sndfile, float *ptr, sf_count_t frames) ;\r
+      sf_count_t  <A HREF="#writef">sf_writef_double</A> (SNDFILE *sndfile, double *ptr, sf_count_t frames) ;\r
+\r
+      sf_count_t  <A HREF="#raw">sf_read_raw</A>      (SNDFILE *sndfile, void *ptr, sf_count_t bytes) ;\r
+      sf_count_t  <A HREF="#raw">sf_write_raw</A>     (SNDFILE *sndfile, void *ptr, sf_count_t bytes) ;\r
+\r
+      const char* <A HREF="#string">sf_get_string</A>    (SNDFILE *sndfile, int str_type) ;\r
+      int         <A HREF="#string">sf_set_string</A>    (SNDFILE *sndfile, int str_type, const char* str) ;\r
+\r
+</PRE>\r
+<!-- pepper -->\r
+<P>\r
+SNDFILE* is an anonymous pointer to data which is private to the library.\r
+</P>\r
+\r
+\r
+<A NAME="open"></A>\r
+<H2><B>File Open Function</B></H2>\r
+\r
+<PRE>\r
+      SNDFILE*  sf_open    (const char *path, int mode, SF_INFO *sfinfo) ;\r
+</PRE>\r
+\r
+<P>\r
+The SF_INFO structure is for passing data between the calling function and the library\r
+when opening a file for reading or writing. It is defined in sndfile.h as follows:\r
+</P>\r
+<!-- pepper -->\r
+<PRE>\r
+      typedef struct\r
+      {    sf_count_t  frames ;     /* Used to be called samples. */\r
+           int         samplerate ;\r
+           int         channels ;\r
+           int         format ;\r
+           int         sections ;\r
+           int         seekable ;\r
+       } SF_INFO ;\r
+</PRE>\r
+\r
+<P>\r
+The mode parameter for this function can be any one of the following three values:\r
+</P>\r
+<!-- pepper -->\r
+<PRE>\r
+      SFM_READ    - read only mode\r
+      SFM_WRITE   - write only mode\r
+      SFM_RDWR    - read/write mode\r
+</PRE>\r
+\r
+<P>\r
+When opening a file for read, the <b>format</B> field should be set to zero before\r
+calling sf_open().\r
+The only exception to this is the case of RAW files where the caller has to set\r
+the samplerate, channels and format fields to valid values.\r
+All other fields of the structure are filled in by the library.\r
+</P>\r
+<!-- pepper -->\r
+<P>\r
+When opening a file for write, the caller must fill in structure members samplerate,\r
+channels, and format.\r
+</P>\r
+<!-- pepper -->\r
+<P>\r
+The format field in the above SF_INFO structure is made up of the bit-wise OR of a\r
+major format type (values between 0x10000 and 0x08000000), a minor format type\r
+(with values less than 0x10000) and an optional endian-ness value.\r
+The currently understood formats are listed in sndfile.h as follows and also include\r
+bitmasks for separating major and minor file types.\r
+Not all combinations of endian-ness and major and minor file types are valid.\r
+</P>\r
+<!-- pepper -->\r
+<PRE>\r
+      enum\r
+      {   /* Major formats. */\r
+          SF_FORMAT_WAV          = 0x010000,     /* Microsoft WAV format (little endian). */\r
+          SF_FORMAT_AIFF         = 0x020000,     /* Apple/SGI AIFF format (big endian). */\r
+          SF_FORMAT_AU           = 0x030000,     /* Sun/NeXT AU format (big endian). */\r
+          SF_FORMAT_RAW          = 0x040000,     /* RAW PCM data. */\r
+          SF_FORMAT_PAF          = 0x050000,     /* Ensoniq PARIS file format. */\r
+          SF_FORMAT_SVX          = 0x060000,     /* Amiga IFF / SVX8 / SV16 format. */\r
+          SF_FORMAT_NIST         = 0x070000,     /* Sphere NIST format. */\r
+          SF_FORMAT_VOC          = 0x080000,     /* VOC files. */\r
+          SF_FORMAT_IRCAM        = 0x0A0000,     /* Berkeley/IRCAM/CARL */\r
+          SF_FORMAT_W64          = 0x0B0000,     /* Sonic Foundry's 64 bit RIFF/WAV */\r
+          SF_FORMAT_MAT4         = 0x0C0000,     /* Matlab (tm) V4.2 / GNU Octave 2.0 */\r
+          SF_FORMAT_MAT5         = 0x0D0000,     /* Matlab (tm) V5.0 / GNU Octave 2.1 */\r
+          SF_FORMAT_PVF          = 0x0E0000,     /* Portable Voice Format */\r
+          SF_FORMAT_XI           = 0x0F0000,     /* Fasttracker 2 Extended Instrument */\r
+          SF_FORMAT_HTK          = 0x100000,     /* HMM Tool Kit format */\r
+          SF_FORMAT_SDS          = 0x110000,     /* Midi Sample Dump Standard */\r
+          SF_FORMAT_AVR          = 0x120000,     /* Audio Visual Research */\r
+          SF_FORMAT_WAVEX        = 0x130000,     /* MS WAVE with WAVEFORMATEX */\r
+          SF_FORMAT_SD2          = 0x160000,     /* Sound Designer 2 */\r
+          SF_FORMAT_FLAC         = 0x170000,     /* FLAC lossless file format */\r
+          SF_FORMAT_CAF          = 0x180000,     /* Core Audio File format */\r
+          SF_FORMAT_WVE          = 0x190000,     /* Psion WVE format */\r
+          SF_FORMAT_OGG          = 0x200000,     /* Xiph OGG container */\r
+          SF_FORMAT_MPC2K        = 0x210000,     /* Akai MPC 2000 sampler */\r
+          SF_FORMAT_RF64         = 0x220000,     /* RF64 WAV file */\r
+\r
+          /* Subtypes from here on. */\r
+\r
+          SF_FORMAT_PCM_S8       = 0x0001,       /* Signed 8 bit data */\r
+          SF_FORMAT_PCM_16       = 0x0002,       /* Signed 16 bit data */\r
+          SF_FORMAT_PCM_24       = 0x0003,       /* Signed 24 bit data */\r
+          SF_FORMAT_PCM_32       = 0x0004,       /* Signed 32 bit data */\r
+\r
+          SF_FORMAT_PCM_U8       = 0x0005,       /* Unsigned 8 bit data (WAV and RAW only) */\r
+\r
+          SF_FORMAT_FLOAT        = 0x0006,       /* 32 bit float data */\r
+          SF_FORMAT_DOUBLE       = 0x0007,       /* 64 bit float data */\r
+\r
+          SF_FORMAT_ULAW         = 0x0010,       /* U-Law encoded. */\r
+          SF_FORMAT_ALAW         = 0x0011,       /* A-Law encoded. */\r
+          SF_FORMAT_IMA_ADPCM    = 0x0012,       /* IMA ADPCM. */\r
+          SF_FORMAT_MS_ADPCM     = 0x0013,       /* Microsoft ADPCM. */\r
+\r
+          SF_FORMAT_GSM610       = 0x0020,       /* GSM 6.10 encoding. */\r
+          SF_FORMAT_VOX_ADPCM    = 0x0021,       /* Oki Dialogic ADPCM encoding. */\r
+\r
+          SF_FORMAT_G721_32      = 0x0030,       /* 32kbs G721 ADPCM encoding. */\r
+          SF_FORMAT_G723_24      = 0x0031,       /* 24kbs G723 ADPCM encoding. */\r
+          SF_FORMAT_G723_40      = 0x0032,       /* 40kbs G723 ADPCM encoding. */\r
+\r
+          SF_FORMAT_DWVW_12      = 0x0040,       /* 12 bit Delta Width Variable Word encoding. */\r
+          SF_FORMAT_DWVW_16      = 0x0041,       /* 16 bit Delta Width Variable Word encoding. */\r
+          SF_FORMAT_DWVW_24      = 0x0042,       /* 24 bit Delta Width Variable Word encoding. */\r
+          SF_FORMAT_DWVW_N       = 0x0043,       /* N bit Delta Width Variable Word encoding. */\r
+\r
+          SF_FORMAT_DPCM_8       = 0x0050,       /* 8 bit differential PCM (XI only) */\r
+          SF_FORMAT_DPCM_16      = 0x0051,       /* 16 bit differential PCM (XI only) */\r
+\r
+          SF_FORMAT_VORBIS       = 0x0060,       /* Xiph Vorbis encoding. */\r
+\r
+          /* Endian-ness options. */\r
+\r
+          SF_ENDIAN_FILE         = 0x00000000,   /* Default file endian-ness. */\r
+          SF_ENDIAN_LITTLE       = 0x10000000,   /* Force little endian-ness. */\r
+          SF_ENDIAN_BIG          = 0x20000000,   /* Force big endian-ness. */\r
+          SF_ENDIAN_CPU          = 0x30000000,   /* Force CPU endian-ness. */\r
+\r
+          SF_FORMAT_SUBMASK      = 0x0000FFFF,\r
+          SF_FORMAT_TYPEMASK     = 0x0FFF0000,\r
+          SF_FORMAT_ENDMASK      = 0x30000000\r
+      } ;\r
+</PRE>\r
+<!-- pepper -->\r
+<P>\r
+Every call to sf_open() should be matched with a call to sf_close() to free up\r
+memory allocated during the call to sf_open().\r
+</P>\r
+<!-- pepper -->\r
+<P>\r
+On success, the sf_open function returns a non-NULL pointer which should be\r
+passed as the first parameter to all subsequent libsndfile calls dealing with\r
+that audio file.\r
+On fail, the sf_open function returns a NULL pointer.\r
+An explanation of the error can obtained by passing NULL to\r
+       <A HREF="#error">sf_strerror</A>.\r
+</P>\r
+\r
+<A NAME="open_fd"></A>\r
+<H3><B>File Descriptor Open</B></H3>\r
+\r
+<PRE>\r
+      SNDFILE*  sf_open_fd (int fd, int mode, SF_INFO *sfinfo, int close_desc) ;\r
+</PRE>\r
+\r
+<P>\r
+<b>Note:</b> On Microsoft Windows, this function does not work if the\r
+application and the libsndfile DLL are linked to different versions of the\r
+Microsoft C runtime DLL.\r
+</P>\r
+<P>\r
+The second open function takes a file descriptor of a file that has already been\r
+opened.\r
+Care should be taken to ensure that the mode of the file represented by the\r
+descriptor matches the mode argument.\r
+This function is useful in the following circumstances:\r
+</P>\r
+\r
+<UL>\r
+       <LI>Opening temporary files securely (ie use the tmpfile() to return a\r
+               FILE* pointer and then using fileno() to retrieve the file descriptor\r
+               which is then passed to libsndfile).\r
+       <LI>Opening files with file names using OS specific character encodings\r
+               and then passing the file descriptor to sf_open_fd().\r
+       <LI>Opening sound files embedded within larger files.\r
+                       <A HREF="embedded_files.html">More info</A>.\r
+</UL>\r
+\r
+<P>\r
+Every call to sf_open_fd() should be matched with a call to sf_close() to free up\r
+memory allocated during the call to sf_open().\r
+</P>\r
+\r
+<P>\r
+When sf_close() is called, the file descriptor is only closed if the <B>close_desc</B>\r
+parameter was TRUE when the sf_open_fd() function was called.\r
+</P>\r
+\r
+<P>\r
+On success, the sf_open_fd function returns a non-NULL pointer which should be\r
+passed as the first parameter to all subsequent libsndfile calls dealing with\r
+that audio file.\r
+On fail, the sf_open_fd function returns a NULL pointer.\r
+</P>\r
+\r
+<A NAME="open_virtual"></A>\r
+<h3><b>Virtual File Open Function</b></h3>\r
+<pre>\r
+      SNDFILE*         sf_open_virtual (SF_VIRTUAL_IO *sfvirtual, int mode, SF_INFO *sfinfo, void *user_data) ;\r
+</pre>\r
+<p>\r
+       Opens a soundfile from a virtual file I/O context which is provided\r
+       by the caller. This is usually used to interface libsndfile to a stream or buffer\r
+       based system. Apart from the sfvirtual and the user_data parameters this function behaves\r
+       like <a href="#open">sf_open</a>.\r
+</p>\r
+\r
+<pre>\r
+      typedef struct\r
+      {    sf_vio_get_filelen  get_filelen ;\r
+           sf_vio_seek         seek ;\r
+           sf_vio_read         read ;\r
+           sf_vio_write        write ;\r
+           sf_vio_tell         tell ;\r
+      } SF_VIRTUAL_IO ;\r
+</pre>\r
+<p>\r
+Libsndfile calls the callbacks provided by the SF_VIRTUAL_IO structure when opening, reading\r
+and writing to the virtual file context. The user_data pointer is a user defined context which\r
+will be available in the callbacks.\r
+</p>\r
+<pre>\r
+      typedef sf_count_t  (*sf_vio_get_filelen) (void *user_data) ;\r
+      typedef sf_count_t  (*sf_vio_seek)        (sf_count_t offset, int whence, void *user_data) ;\r
+      typedef sf_count_t  (*sf_vio_read)        (void *ptr, sf_count_t count, void *user_data) ;\r
+      typedef sf_count_t  (*sf_vio_write)       (const void *ptr, sf_count_t count, void *user_data) ;\r
+      typedef sf_count_t  (*sf_vio_tell)        (void *user_data) ;\r
+</pre>\r
+<h4>sf_vio_get_filelen</h4>\r
+<pre>\r
+      typedef sf_count_t  (*sf_vio_get_filelen) (void *user_data) ;\r
+</pre>\r
+<p>\r
+The virtual file contex must return the length of the virtual file in bytes.<br>\r
+</p>\r
+<h4>sf_vio_seek</h4>\r
+<pre>\r
+      typedef sf_count_t  (*sf_vio_seek)        (sf_count_t offset, int whence, void *user_data) ;\r
+</pre>\r
+<p>\r
+The virtual file context must seek to offset using the seek mode provided by whence which is one of<br>\r
+</p>\r
+<pre>\r
+      SEEK_CUR\r
+      SEEK_SET\r
+      SEEK_END\r
+</pre>\r
+<p>\r
+The return value must contain the new offset in the file.\r
+</p>\r
+<h4>sf_vio_read</h4>\r
+<pre>\r
+      typedef sf_count_t  (*sf_vio_read)        (void *ptr, sf_count_t count, void *user_data) ;\r
+</pre>\r
+<p>\r
+The virtual file context must copy ("read") "count" bytes into the\r
+buffer provided by ptr and return the count of actually copied bytes.\r
+</p>\r
+<h4>sf_vio_write</h4>\r
+<pre>\r
+      typedef sf_count_t  (*sf_vio_write)       (const void *ptr, sf_count_t count, void *user_data) ;\r
+</pre>\r
+<p>\r
+The virtual file context must process "count" bytes stored in the\r
+buffer passed with ptr and return the count of actually processed bytes.<br>\r
+</p>\r
+<h4>sf_vio_tell</h4>\r
+<pre>\r
+      typedef sf_count_t  (*sf_vio_tell)        (void *user_data) ;\r
+</pre>\r
+<p>\r
+Return the current position of the virtual file context.<br>\r
+</p>\r
+\r
+\r
+<A NAME="check"></A>\r
+<BR><H2><B>Format Check Function</B></H2>\r
+\r
+<PRE>\r
+      int  sf_format_check (const SF_INFO *info) ;\r
+</PRE>\r
+<!-- pepper -->\r
+<P>\r
+This function allows the caller to check if a set of parameters in the SF_INFO struct\r
+is valid before calling sf_open (SFM_WRITE).\r
+</P>\r
+<P>\r
+sf_format_check returns TRUE if the parameters are valid and FALSE otherwise.\r
+</P>\r
+\r
+<A NAME="seek"></A>\r
+<BR><H2><B>File Seek Functions</B></H2>\r
+\r
+<PRE>\r
+      sf_count_t  sf_seek  (SNDFILE *sndfile, sf_count_t frames, int whence) ;\r
+</PRE>\r
+\r
+<P>\r
+The file seek functions work much like lseek in unistd.h with the exception that\r
+the non-audio data is ignored and the seek only moves within the audio data section of\r
+the file.\r
+In addition, seeks are defined in number of (multichannel) frames.\r
+Therefore, a seek in a stereo file from the current position forward with an offset\r
+of 1 would skip forward by one sample of both channels.\r
+</P>\r
+\r
+<P>\r
+like lseek(), the whence parameter can be any one of the following three values:\r
+</P>\r
+\r
+<PRE>\r
+      SEEK_SET  - The offset is set to the start of the audio data plus offset (multichannel) frames.\r
+      SEEK_CUR  - The offset is set to its current location plus offset (multichannel) frames.\r
+      SEEK_END  - The offset is set to the end of the data plus offset (multichannel) frames.\r
+</PRE>\r
+<!-- pepper -->\r
+<P>\r
+Internally, libsndfile keeps track of the read and write locations using separate\r
+read and write pointers.\r
+If a file has been opened with a mode of SFM_RDWR, bitwise OR-ing the standard whence\r
+values above with either SFM_READ or SFM_WRITE allows the read and write pointers to\r
+be modified separately.\r
+If the SEEK_* values are used on their own, the read and write pointers are\r
+both modified.\r
+</P>\r
+\r
+<P>\r
+Note that the frames offset can be negative and in fact should be when SEEK_END is used for the\r
+whence parameter.\r
+</P>\r
+<P>\r
+sf_seek will return the offset in (multichannel) frames from the start of the audio data\r
+or -1 if an error occured (ie an attempt is made to seek beyond the start or end of the file).\r
+</P>\r
+\r
+<A NAME="error"></A>\r
+<H2><BR><B>Error Reporting Functions</B></H2>\r
+\r
+\r
+<PRE>\r
+      int         sf_error        (SNDFILE *sndfile) ;\r
+</PRE>\r
+<P>\r
+This function returns the current error number for the given SNDFILE.\r
+The error number may be one of the following:\r
+</P>\r
+<PRE>\r
+        enum\r
+        {   SF_ERR_NO_ERROR             = 0,\r
+            SF_ERR_UNRECOGNISED_FORMAT  = 1,\r
+            SF_ERR_SYSTEM               = 2,\r
+            SF_ERR_MALFORMED_FILE       = 3,\r
+            SF_ERR_UNSUPPORTED_ENCODING = 4\r
+        } ;\r
+</PRE>\r
+<!-- pepper -->\r
+<P>\r
+or any one of many other internal error values.\r
+Applications should only test the return value against error values defined in\r
+&lt;sndfile.h&gt; as the internal error values are subject to change at any\r
+time.\r
+For errors not in the above list, the function sf_error_number() can be used to\r
+convert it to an error string.\r
+</P>\r
+\r
+<PRE>\r
+      const char* sf_strerror     (SNDFILE *sndfile) ;\r
+      const char* sf_error_number (int errnum) ;\r
+</PRE>\r
+\r
+<P>\r
+The error functions sf_strerror() and sf_error_number() convert the library's internal\r
+error enumerations into text strings.\r
+</P>\r
+<PRE>\r
+      int         sf_perror     (SNDFILE *sndfile) ;\r
+      int         sf_error_str  (SNDFILE *sndfile, char* str, size_t len) ;\r
+</PRE>\r
+\r
+<P>\r
+The functions sf_perror() and sf_error_str() are deprecated and will be dropped\r
+from the library at some later date.\r
+</P>\r
+\r
+<A NAME="close"></A>\r
+<H2><BR><B>File Close Function</B></H2>\r
+\r
+<PRE>\r
+      int  sf_close  (SNDFILE *sndfile) ;\r
+</PRE>\r
+<!-- pepper -->\r
+<P>\r
+The close function closes the file, deallocates its internal buffers and returns\r
+0 on success or an error value otherwise.\r
+</P>\r
+<BR>\r
+\r
+<A NAME="write_sync"></A>\r
+<H2><BR><B>Write Sync Function</B></H2>\r
+\r
+<PRE>\r
+      void  sf_write_sync  (SNDFILE *sndfile) ;\r
+</PRE>\r
+<!-- pepper -->\r
+<P>\r
+If the file is opened SFM_WRITE or SFM_RDWR, call the operating system's function\r
+to force the writing of all file cache buffers to disk. If the file is opened\r
+SFM_READ no action is taken.\r
+</P>\r
+<BR>\r
+\r
+\r
+<A NAME="read"></A>\r
+<H2><BR><B>File Read Functions (Items)</B></H2>\r
+\r
+<PRE>\r
+      sf_count_t  sf_read_short   (SNDFILE *sndfile, short *ptr, sf_count_t items) ;\r
+      sf_count_t  sf_read_int     (SNDFILE *sndfile, int *ptr, sf_count_t items) ;\r
+      sf_count_t  sf_read_float   (SNDFILE *sndfile, float *ptr, sf_count_t items) ;\r
+      sf_count_t  sf_read_double  (SNDFILE *sndfile, double *ptr, sf_count_t items) ;\r
+</PRE>\r
+\r
+<P>\r
+The file read items functions fill the array pointed to by ptr with the requested\r
+number of items. The items parameter must be an integer product of the number\r
+of channels or an error will occur.\r
+</P>\r
+<!-- pepper -->\r
+<P>\r
+It is important to note that the data type used by the calling program and the data\r
+format of the file do not need to be the same. For instance, it is possible to open\r
+a 16 bit PCM encoded WAV file and read the data using sf_read_float(). The library\r
+seamlessly converts between the two formats on-the-fly. See\r
+<A HREF="#note1">Note 1</A>.\r
+</P>\r
+<!-- pepper -->\r
+<P>\r
+The sf_read_XXXX functions return the number of items read.\r
+Unless the end of the file was reached during the read, the return value should\r
+equal the number of items requested.\r
+Attempts to read beyond the end of the file will not result in an error but will\r
+cause the sf_read_XXXX functions to return less than the number of items requested\r
+or 0 if already at the end of the file.\r
+</P>\r
+\r
+<A NAME="readf"></A>\r
+<H2><BR><B>File Read Functions (Frames)</B></H2>\r
+\r
+<PRE>\r
+      sf_count_t  sf_readf_short   (SNDFILE *sndfile, short *ptr, sf_count_t frames) ;\r
+      sf_count_t  sf_readf_int     (SNDFILE *sndfile, int *ptr, sf_count_t frames) ;\r
+      sf_count_t  sf_readf_float   (SNDFILE *sndfile, float *ptr, sf_count_t frames) ;\r
+      sf_count_t  sf_readf_double  (SNDFILE *sndfile, double *ptr, sf_count_t frames) ;\r
+</PRE>\r
+<!-- pepper -->\r
+<P>\r
+The file read frames functions fill the array pointed to by ptr with the requested\r
+number of frames of data. The array must be large enough to hold the product of\r
+frames and the number of channels.\r
+</P>\r
+\r
+<P><B>\r
+Care must be taken to ensure that there is enough space in the array pointed to by\r
+ptr, to take (frames * channels) number of items (shorts, ints, floats or doubles).\r
+</B></P>\r
+\r
+<P>\r
+The sf_readf_XXXX functions return the number of frames read.\r
+Unless the end of the file was reached during the read, the return value should equal\r
+the number of frames requested.\r
+Attempts to read beyond the end of the file will not result in an error but will cause\r
+the sf_readf_XXXX functions to return less than the number of frames requested or 0 if\r
+already at the end of the file.\r
+</P>\r
+\r
+<A NAME="write"></A>\r
+<H2><BR><B>File Write Functions (Items)</B></H2>\r
+\r
+<PRE>\r
+      sf_count_t  sf_write_short   (SNDFILE *sndfile, short *ptr, sf_count_t items) ;\r
+      sf_count_t  sf_write_int     (SNDFILE *sndfile, int *ptr, sf_count_t items) ;\r
+      sf_count_t  sf_write_float   (SNDFILE *sndfile, float *ptr, sf_count_t items) ;\r
+      sf_count_t  sf_write_double  (SNDFILE *sndfile, double *ptr, sf_count_t items) ;\r
+</PRE>\r
+\r
+<P>\r
+The file write items functions write the data in the array pointed to by ptr to the file.\r
+The items parameter must be an integer product of the number of channels or an error\r
+will occur.\r
+</P>\r
+<!-- pepper -->\r
+<P>\r
+It is important to note that the data type used by the calling program and the data\r
+format of the file do not need to be the same. For instance, it is possible to open\r
+a 16 bit PCM encoded WAV file and write the data using sf_write_float(). The library\r
+seamlessly converts between the two formats on-the-fly. See\r
+<A HREF="#note1">Note 1</A>.\r
+</P>\r
+<P>\r
+The sf_write_XXXX functions return the number of items written (which should be the\r
+same as the items parameter).\r
+</P>\r
+\r
+<A NAME="writef"></A>\r
+<H2><BR><B>File Write Functions (Frames)</B></H2>\r
+\r
+<PRE>\r
+      sf_count_t  sf_writef_short  (SNDFILE *sndfile, short *ptr, sf_count_t frames) ;\r
+      sf_count_t  sf_writef_int    (SNDFILE *sndfile, int *ptr, sf_count_t frames) ;\r
+      sf_count_t  sf_writef_float  (SNDFILE *sndfile, float *ptr, sf_count_t frames) ;\r
+      sf_count_t  sf_writef_double (SNDFILE *sndfile, double *ptr, sf_count_t frames) ;\r
+</PRE>\r
+\r
+<P>\r
+The file write frames functions write the data in the array pointed to by ptr to the file.\r
+The array must be large enough to hold the product of frames and the number of channels.\r
+</P>\r
+<P>\r
+The sf_writef_XXXX functions return the number of frames written (which should be the\r
+same as the frames parameter).\r
+</P>\r
+\r
+<A NAME="raw"></A>\r
+<H2><BR><B>Raw File Read and Write Functions</B></H2>\r
+<!-- pepper -->\r
+<PRE>\r
+      sf_count_t  sf_read_raw     (SNDFILE *sndfile, void *ptr, sf_count_t bytes) ;\r
+      sf_count_t  sf_write_raw    (SNDFILE *sndfile, void *ptr, sf_count_t bytes) ;\r
+</PRE>\r
+\r
+<P>\r
+<b>Note:</b> Unless you are writing an external decoder/encode that uses\r
+libsndfile to handle the file headers, you should not be using these\r
+functions.\r
+</P>\r
+\r
+<P>\r
+The raw read and write functions read raw audio data from the audio file (not to be\r
+confused with reading RAW header-less PCM files). The number of bytes read or written\r
+must always be an integer multiple of the number of channels multiplied by the number\r
+of bytes required to represent one sample from one channel.\r
+</P>\r
+<!-- pepper -->\r
+<P>\r
+The raw read and write functions return the number of bytes read or written (which\r
+should be the same as the bytes parameter).\r
+</P>\r
+\r
+<P>\r
+<B>\r
+Note : The result of using of both regular reads/writes and raw reads/writes on\r
+compressed file formats other than SF_FORMAT_ALAW and SF_FORMAT_ULAW is undefined.\r
+</B>\r
+</P>\r
+\r
+<p>\r
+See also : <a href="command.html#SFC_RAW_NEEDS_ENDSWAP">SFC_RAW_NEEDS_ENDSWAP</a>\r
+</p>\r
+\r
+<A NAME="string"></A>\r
+<H2><BR><B>Functions for Reading and Writing String Data</B></H2>\r
+\r
+\r
+<PRE>\r
+      const char* sf_get_string   (SNDFILE *sndfile, int str_type) ;\r
+      int         sf_set_string   (SNDFILE *sndfile, int str_type, const char* str) ;\r
+</PRE>\r
+\r
+<P>\r
+These functions allow strings to be set on files opened for write and to be\r
+retrieved from files opened for read where supported by the given file type.\r
+The <B>str_type</B> parameter can be any one of the following string types:\r
+</P>\r
+\r
+<PRE>\r
+          enum\r
+          {   SF_STR_TITLE,\r
+              SF_STR_COPYRIGHT,\r
+              SF_STR_SOFTWARE,\r
+              SF_STR_ARTIST,\r
+              SF_STR_COMMENT,\r
+              SF_STR_DATE,\r
+              SF_STR_ALBUM,\r
+              SF_STR_LICENSE,\r
+              SF_STR_TRACKNUMBER,\r
+              SF_STR_GENRE\r
+          } ;\r
+</PRE>\r
+\r
+<P>\r
+The sf_get_string() function returns the specified string if it exists and a\r
+NULL pointer otherwise.\r
+In addition to the string ids above, SF_STR_FIRST (== SF_STR_TITLE) and\r
+SF_STR_LAST (always the same as the highest numbers string id) are also\r
+available to allow iteration over all the available string ids.\r
+</P>\r
+\r
+<P>\r
+The sf_set_string() function sets the string data.\r
+It returns zero on success and non-zero on error.\r
+The error code can be converted to a string using sf_error_number().\r
+</P>\r
+\r
+\r
+<P>\r
+\r
+</P>\r
+\r
+<HR>\r
+\r
+<A NAME="note1"></A>\r
+<H2><BR><B>Note 1</B></H2>\r
+<!-- pepper -->\r
+<P>\r
+When converting between integer PCM formats of differing size (ie using sf_read_int()\r
+to read a 16 bit PCM encoded WAV file) libsndfile obeys one simple rule:\r
+</P>\r
+\r
+<P CLASS=indent_block>\r
+Whenever integer data is moved from one sized container to another sized container,\r
+the most significant bit in the source container will become the most significant bit\r
+in the destination container.\r
+</P>\r
+\r
+<P>\r
+When converting between integer data and floating point data, different rules apply.\r
+The default behaviour when reading floating point data (sf_read_float() or\r
+sf_read_double ()) from a file with integer data is normalisation. Regardless of\r
+whether data in the file is 8, 16, 24 or 32 bit wide, the data will be read as\r
+floating point data in the range [-1.0, 1.0]. Similarly, data in the range [-1.0, 1.0]\r
+will be written to an integer PCM file so that a data value of 1.0 will be the largest\r
+allowable integer for the given bit width. This normalisation can be turned on or off\r
+using the <A HREF="command.html">sf_command</A> interface.\r
+</P>\r
+\r
+<A NAME="note2"></A>\r
+<H2><BR><B>Note 2</B></H2>\r
+\r
+<P>\r
+Reading a file containg floating point data (allowable with WAV, AIFF, AU and other\r
+file formats) using integer read methods (sf_read_short() or sf_read_int()) can\r
+produce unexpected results.\r
+For instance the data in the file may have a maximum absolute value &lt; 1.0 which\r
+would mean that all sample values read from the file will be zero.\r
+In order to read these files correctly using integer read methods, it is recommended\r
+that you use the\r
+     <A HREF="command.html">sf_command</A>\r
+interface, a command of\r
+     <A HREF="command.html#SFC_SET_SCALE_FLOAT_INT_READ">SFC_SET_SCALE_FLOAT_INT_READ</A>\r
+and a parameter of SF_TRUE to force correct scaling.\r
+</P>\r
+<!-- pepper -->\r
+<HR>\r
+<!-- pepper -->\r
+<P>\r
+       The libsndfile home page is\r
+               <A HREF="http://www.mega-nerd.com/libsndfile/">here</A>.\r
+</P>\r
+<P>\r
+Version : 1.0.25\r
+</P>\r
+<!-- pepper -->\r
+<!-- pepper -->\r
+<!-- pepper -->\r
+<!-- pepper -->\r
+\r
+</BODY>\r
+</HTML>\r
diff --git a/fdmdv2/libsndfile/doc/bugs.html b/fdmdv2/libsndfile/doc/bugs.html
new file mode 100644 (file)
index 0000000..49cd446
--- /dev/null
@@ -0,0 +1,77 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">\r
+<HTML>\r
+\r
+<HEAD>\r
+       <TITLE>\r
+       Bug Reporting\r
+       </TITLE>\r
+       <META NAME="Author"      CONTENT="Erik de Castro Lopo (erikd AT mega-nerd DOT com)">\r
+       <LINK REL="stylesheet" HREF="libsndfile.css" TYPE="text/css" MEDIA="all">\r
+       <LINK REL="stylesheet" HREF="print.css" TYPE="text/css" MEDIA="print">\r
+</HEAD>\r
+\r
+<BODY>\r
+\r
+<CENTER>\r
+               <H1><B>Reporting Bugs in libsndfile</B></H1>\r
+</CENTER>\r
+<P>\r
+       Before even attempting to report a bug in libsndfile please make sure you have\r
+       read the\r
+               <A HREF="FAQ.html">Frequently Asked Questions</A>.\r
+       If you are having a problem writing code using libsndfile make sure you read\r
+       the\r
+               <A HREF="api.html">Application Programming Interface</A>\r
+       documentation.\r
+</P>\r
+<P>\r
+       That said, I am interested in finding and fixing all genuine bugs in libsndfile.\r
+       Bugs I want to fix include any of the following problems (and probably others) :\r
+</P>\r
+       <UL>\r
+       <LI>    Compilation problems on new platforms.\r
+       <LI>    Errors being detected during the `make check' process.\r
+       <LI>    Segmentation faults occuring inside libsndfile.\r
+       <LI>    libsndfile hanging when opening a file.\r
+       <LI>    Supported sound file types being incorrectly read or written.\r
+       <LI>    Omissions, errors or spelling mistakes in the documentation.\r
+       </UL>\r
+\r
+<P>\r
+       When submitting a bug report you must include :\r
+</P>\r
+       <UL>\r
+       <LI>    Your system (CPU and memory size should be enough).\r
+       <LI>    The operating system you are using.\r
+       <LI>    Whether you are using a package provided by your distribution or you\r
+                       compiled it youself.\r
+       <LI>    If you compiled it yourself, the compiler you are using. (Also make\r
+                       sure to run 'make check'.)\r
+       <LI>    A description of the problem.\r
+       <LI>    Information generated by the sndfile-info program (see next paragraph).\r
+       <LI>    If you are having problems with sndfile-play and ALSA on Linux, I will\r
+                       need information about your kernel, ALSA version, compiler version,\r
+                       whether you compiled the kernel/ALSA your self or installed from a\r
+                       package etc.\r
+       </UL>\r
+\r
+<P>\r
+       If libsndfile compiles and installs correctly but has difficulty reading a particular\r
+       file or type of file you should run the <B>sndfile-info</B> program (from the examples\r
+       directory of the libsndfile distribution) on the file. See\r
+               <A HREF="sndfile_info.html">here</A>\r
+       for an example of the use of the <B>sndfile-info</B> program.\r
+</P>\r
+<P>\r
+       Please do not send me a sound file which fails to open under libsndfile unless I\r
+       specifically ask you to. The above information should usually suffice for most\r
+       problems.\r
+</P>\r
+<P>\r
+       Once you have the above information you should email it to one of the\r
+                <A HREF="lists.html">mailing lists</a>\r
+       (posting to these lists is limited to the list subscribers).\r
+\r
+</P>\r
+</BODY>\r
+</HTML>\r
diff --git a/fdmdv2/libsndfile/doc/command.html b/fdmdv2/libsndfile/doc/command.html
new file mode 100644 (file)
index 0000000..02453fe
--- /dev/null
@@ -0,0 +1,1605 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">\r
+<HTML>\r
+\r
+<HEAD>\r
+       <TITLE>\r
+       libsndfile : the sf_command function.\r
+       </TITLE>\r
+       <META NAME="Author"      CONTENT="Erik de Castro Lopo (erikd AT mega-nerd DOT com)">\r
+       <!-- Another version at the bottom of the page.  -->\r
+       <META NAME="Description" CONTENT="The libsndfile API.">\r
+       <META NAME="Keywords"    CONTENT="WAV AIFF AU libsndfile sound audio dsp Linux">\r
+       <LINK REL="stylesheet" HREF="libsndfile.css" TYPE="text/css" MEDIA="all">\r
+       <LINK REL="stylesheet" HREF="print.css" TYPE="text/css" MEDIA="print">\r
+</HEAD>\r
+\r
+<BODY>\r
+\r
+<H1><B>sf_command</B></H1>\r
+<PRE>\r
+\r
+        int    sf_command (SNDFILE *sndfile, int cmd, void *data, int datasize) ;\r
+</PRE>\r
+<P>\r
+       This function allows the caller to retrieve information from or change aspects of the\r
+       library behaviour.\r
+       Examples include retrieving a string containing the library version or changing the\r
+       scaling applied to floating point sample data during read and write.\r
+       Most of these operations are performed on a per-file basis.\r
+</P>\r
+<P>\r
+       The cmd parameter is an integer identifier which is defined in &lt;sndfile.h&gt;.\r
+       All of the valid command identifiers have names beginning with "SFC_".\r
+       Data is passed to and returned from the library by use of a void pointer.\r
+       The library will not read or write more than datasize bytes from the void pointer.\r
+       For some calls no data is required in which case data should be NULL and datasize\r
+       may be used for some other purpose.\r
+</P>\r
+<P>\r
+       The available commands are as follows:\r
+</P>\r
+\r
+<CENTER>\r
+<TABLE BORDER="0" WIDTH="90%" CELLPADDING="4">\r
+<TR>\r
+       <TD><A HREF="#SFC_GET_LIB_VERSION">SFC_GET_LIB_VERSION</A></TD>\r
+       <TD>Retrieve the version of the library.</TD>\r
+</TR>\r
+<TR>\r
+       <TD><A HREF="#SFC_GET_LOG_INFO">SFC_GET_LOG_INFO</A></TD>\r
+       <TD>Retrieve the internal per-file operation log.</TD>\r
+</TR>\r
+<TR>\r
+       <TD><A HREF="#SFC_CALC_SIGNAL_MAX">SFC_CALC_SIGNAL_MAX</A></TD>\r
+       <TD>Calculate the measured maximum signal value.</TD>\r
+</TR>\r
+<TR>\r
+       <TD><A HREF="#SFC_CALC_NORM_SIGNAL_MAX">SFC_CALC_NORM_SIGNAL_MAX</A></TD>\r
+       <TD>Calculate the measured normalised maximum signal value.</TD>\r
+</TR>\r
+<TR>\r
+       <TD><A HREF="#SFC_CALC_MAX_ALL_CHANNELS">SFC_CALC_MAX_ALL_CHANNELS</A></TD>\r
+       <TD>Calculate the peak value for each channel.</TD>\r
+</TR>\r
+<TR>\r
+       <TD><A HREF="#SFC_CALC_NORM_MAX_ALL_CHANNELS">SFC_CALC_NORM_MAX_ALL_CHANNELS</A></TD>\r
+       <TD>Calculate the normalised peak for each channel.</TD>\r
+</TR>\r
+\r
+<TR>\r
+       <TD><A HREF="#SFC_GET_SIGNAL_MAX">SFC_GET_SIGNAL_MAX</A></TD>\r
+       <TD>Retrieve the peak value for the file (as stored in the file header).</TD>\r
+</TR>\r
+<TR>\r
+       <TD><A HREF="#SFC_GET_MAX_ALL_CHANNELS">SFC_GET_MAX_ALL_CHANNELS</A></TD>\r
+       <TD>Retrieve the peak value for each channel  (as stored in the file header).</TD>\r
+</TR>\r
+\r
+<TR>\r
+       <TD><A HREF="#SFC_SET_NORM_FLOAT">SFC_SET_NORM_FLOAT</A></TD>\r
+       <TD>Modify the normalisation behaviour of the floating point reading and writing functions.</TD>\r
+</TR>\r
+<TR>\r
+       <TD><A HREF="#SFC_SET_NORM_DOUBLE">SFC_SET_NORM_DOUBLE</A></TD>\r
+       <TD>Modify the normalisation behaviour of the double precision floating point reading and writing functions.</TD>\r
+</TR>\r
+<TR>\r
+       <TD><A HREF="#SFC_GET_NORM_FLOAT">SFC_GET_NORM_FLOAT</A></TD>\r
+       <TD>Retrieve the current normalisation behaviour of the floating point reading and writing functions.</TD>\r
+</TR>\r
+<TR>\r
+       <TD><A HREF="#SFC_GET_NORM_DOUBLE">SFC_GET_NORM_DOUBLE</A></TD>\r
+       <TD>Retrieve the current normalisation behaviour of the double precision floating point reading and writing functions.</TD>\r
+</TR>\r
+<TR>\r
+       <TD><A HREF="#SFC_SET_SCALE_FLOAT_INT_READ">SFC_SET_SCALE_FLOAT_INT_READ</A></TD>\r
+       <TD>Set/clear the scale factor when integer (short/int) data is read from a file\r
+       containing floating point data.</TD>\r
+</TR>\r
+\r
+<TR>\r
+       <TD><A HREF="#SFC_SET_SCALE_INT_FLOAT_WRITE">SFC_SET_SCALE_INT_FLOAT_WRITE</A></TD>\r
+       <TD>Set/clear the scale factor when integer (short/int) data is written to a file\r
+       as floating point data.</TD>\r
+</TR>\r
+\r
+<TR>\r
+       <TD><A HREF="#SFC_GET_SIMPLE_FORMAT_COUNT">SFC_GET_SIMPLE_FORMAT_COUNT</A></TD>\r
+       <TD>Retrieve the number of simple formats supported by libsndfile.</TD>\r
+</TR>\r
+<TR>\r
+       <TD><A HREF="#SFC_GET_SIMPLE_FORMAT">SFC_GET_SIMPLE_FORMAT</A></TD>\r
+       <TD>Retrieve information about a simple format.</TD>\r
+</TR>\r
+\r
+<TR>\r
+       <TD><A HREF="#SFC_GET_FORMAT_INFO">SFC_GET_FORMAT_INFO</A></TD>\r
+       <TD>Retrieve information about a major or subtype format.</TD>\r
+</TR>\r
+\r
+<TR>\r
+       <TD><A HREF="#SFC_GET_FORMAT_MAJOR_COUNT">SFC_GET_FORMAT_MAJOR_COUNT</A></TD>\r
+       <TD>Retrieve the number of major formats.</TD>\r
+</TR>\r
+<TR>\r
+       <TD><A HREF="#SFC_GET_FORMAT_MAJOR">SFC_GET_FORMAT_MAJOR</A></TD>\r
+       <TD>Retrieve information about a major format type.</TD>\r
+</TR>\r
+<TR>\r
+       <TD><A HREF="#SFC_GET_FORMAT_SUBTYPE_COUNT">SFC_GET_FORMAT_SUBTYPE_COUNT</A></TD>\r
+       <TD>Retrieve the number of subformats.</TD>\r
+</TR>\r
+<TR>\r
+       <TD><A HREF="#SFC_GET_FORMAT_SUBTYPE">SFC_GET_FORMAT_SUBTYPE</A></TD>\r
+       <TD>Retrieve information about a subformat.</TD>\r
+</TR>\r
+\r
+<TR>\r
+       <TD><A HREF="#SFC_SET_ADD_PEAK_CHUNK">SFC_SET_ADD_PEAK_CHUNK</A></TD>\r
+       <TD>Switch the code for adding the PEAK chunk to WAV and AIFF files on or off.</TD>\r
+</TR>\r
+\r
+<TR>\r
+       <TD><A HREF="#SFC_UPDATE_HEADER_NOW">SFC_UPDATE_HEADER_NOW</A></TD>\r
+       <TD>Used when a file is open for write, this command will update the file\r
+               header to reflect the data written so far.</TD>\r
+</TR>\r
+<TR>\r
+       <TD><A HREF="#SFC_SET_UPDATE_HEADER_AUTO">SFC_SET_UPDATE_HEADER_AUTO</A></TD>\r
+       <TD>Used when a file is open for write, this command will cause the file header\r
+               to be updated after each write to the file.</TD>\r
+</TR>\r
+\r
+<TR>\r
+       <TD><A HREF="#SFC_FILE_TRUNCATE">SFC_FILE_TRUNCATE</A></TD>\r
+       <TD>Truncate a file open for write or for read/write.</TD>\r
+</TR>\r
+\r
+<TR>\r
+       <TD><A HREF="#SFC_SET_RAW_START_OFFSET">SFC_SET_RAW_START_OFFSET</A></TD>\r
+       <TD>Change the data start offset for files opened up as SF_FORMAT_RAW.</TD>\r
+</TR>\r
+\r
+<TR>\r
+       <TD><A HREF="#SFC_SET_CLIPPING">SFC_SET_CLIPPING</A></TD>\r
+       <TD>Turn on/off automatic clipping when doing floating point to integer\r
+               conversion.</TD>\r
+</TR>\r
+\r
+<TR>\r
+       <TD><A HREF="#SFC_GET_CLIPPING">SFC_GET_CLIPPING</A></TD>\r
+       <TD>Retrieve current clipping setting.</TD>\r
+</TR>\r
+\r
+<TR>\r
+       <TD><A HREF="#SFC_GET_EMBED_FILE_INFO">SFC_GET_EMBED_FILE_INFO</A></TD>\r
+       <TD>Retrieve information about audio files embedded inside other files.</TD>\r
+</TR>\r
+\r
+<TR>\r
+       <TD><A HREF="#SFC_WAVEX_GET_AMBISONIC">SFC_GET_AMBISONIC</A></TD>\r
+       <TD>Test a WAVEX file for Ambisonic format</TD>\r
+</TR>\r
+\r
+<TR>\r
+       <TD><A HREF="#SFC_WAVEX_SET_AMBISONIC">SFC_SET_AMBISONIC</A></TD>\r
+       <TD>Modify a WAVEX header for Ambisonic format</TD>\r
+</TR>\r
+\r
+<TR>\r
+       <TD><A HREF="#SFC_SET_VBR_ENCODING_QUALITY">SFC_SET_VBR_ENCODING_QUALITY</A></TD>\r
+       <TD>Set the the Variable Bit Rate encoding quality</TD>\r
+</TR>\r
+\r
+<TR>\r
+       <TD><A HREF="#SFC_RAW_NEEDS_ENDSWAP">SFC_RAW_NEEDS_ENDSWAP</a></td>\r
+       <TD>Determine if raw data needs endswapping</TD>\r
+</TR>\r
+\r
+<TR>\r
+       <TD><A HREF="#SFC_GET_BROADCAST_INFO">SFC_GET_BROADCAST_INFO</A></TD>\r
+       <TD>Retrieve the Broadcast Chunk info</TD>\r
+</TR>\r
+\r
+<TR>\r
+       <TD><A HREF="#SFC_SET_BROADCAST_INFO">SFC_SET_BROADCAST_INFO</A></TD>\r
+       <TD>Set the Broadcast Chunk info</TD>\r
+</TR>\r
+\r
+<TR>\r
+       <TD><A HREF="#SFC_GET_LOOP_INFO">SFC_GET_LOOP_INFO</A></TD>\r
+       <TD>Get loop info</TD>\r
+</TR>\r
+\r
+<TR>\r
+       <TD><A HREF="#SFC_GET_INSTRUMENT">SFC_GET_INSTRUMENT</A></TD>\r
+       <TD>Get instrument info</TD>\r
+</TR>\r
+\r
+<TR>\r
+       <TD><A HREF="#SFC_SET_INSTRUMENT">SFC_SET_INSTRUMENT</A></TD>\r
+       <TD>Set instrument info</TD>\r
+</TR>\r
+\r
+<TR>\r
+       <TD><A HREF="#SFC_SET_VBR_ENCODING_QUALITY">SFC_SET_VBR_ENCODING_QUALITY</A></TD>\r
+       <TD>Set variable bit rate encoding quality</TD>\r
+</TR>\r
+\r
+\r
+\r
+<!--\r
+<TR>\r
+       <TD><A HREF="#add-dither">add dither</A></TD>\r
+       <TD>Add dither to output on write.</TD>\r
+</TR>\r
+-->\r
+</TABLE>\r
+</CENTER>\r
+\r
+<BR><BR>\r
+\r
+<HR>\r
+\r
+<!-- ========================================================================= -->\r
+<A NAME="SFC_GET_LIB_VERSION"></A>\r
+<H2><BR><B>SFC_GET_LIB_VERSION</B></H2>\r
+<P>\r
+Retrieve the version of the library as a string.\r
+</P>\r
+<P>\r
+Parameters:\r
+<PRE>\r
+        sndfile  : Not used\r
+        cmd      : SFC_GET_LIB_VERSION\r
+        data     : A pointer to a char buffer\r
+        datasize : The size of the the buffer\r
+</PRE>\r
+<P>\r
+Example:\r
+</P>\r
+<PRE>\r
+        char  buffer [128] ;\r
+        sf_command (NULL, SFC_GET_LIB_VERSION, buffer, sizeof (buffer)) ;\r
+</PRE>\r
+\r
+<DL>\r
+<DT>Return value:</DT>\r
+       <DD><DD>This call will return the length of the retrieved version string.\r
+</DL>\r
+<DL>\r
+<DT>Notes:</DT>\r
+<DD>\r
+The string returned in the buffer passed to this function will not overflow\r
+the buffer and will always be null terminated .\r
+</DL>\r
+\r
+<!-- ========================================================================= -->\r
+<A NAME="SFC_GET_LOG_INFO"></A>\r
+<H2><BR><B>SFC_GET_LOG_INFO</B></H2>\r
+<P>\r
+Retrieve the log buffer generated when opening a file as a string. This log\r
+buffer can often contain a good reason for why libsndfile failed to open a\r
+particular file.\r
+</P>\r
+<P>\r
+Parameters:\r
+<PRE>\r
+        sndfile  : A valid SNDFILE* pointer\r
+        cmd      : SFC_GET_LOG_INFO\r
+        data     : A pointer to a char buffer\r
+        datasize : The size of the the buffer\r
+</PRE>\r
+<P>\r
+Example:\r
+</P>\r
+<PRE>\r
+        char  buffer [2048] ;\r
+        sf_command (sndfile, SFC_GET_LOG_INFO, buffer, sizeof (buffer)) ;\r
+</PRE>\r
+\r
+<DL>\r
+<DT>Return value:</DT>\r
+       <DD><DD>This call will return the length of the retrieved version string.\r
+</DL>\r
+<DL>\r
+<DT>Notes:</DT>\r
+<DD>\r
+The string returned in the buffer passed to this function will not overflow\r
+the buffer and will always be null terminated .\r
+</DL>\r
+\r
+<!-- ========================================================================= -->\r
+<A NAME="SFC_CALC_SIGNAL_MAX"></A>\r
+<H2><BR><B>SFC_CALC_SIGNAL_MAX</B></H2>\r
+<P>\r
+Retrieve the measured maximum signal value. This involves reading through\r
+the whole file which can be slow on large files.\r
+</P>\r
+<P>\r
+Parameters:\r
+<PRE>\r
+        sndfile  : A valid SNDFILE* pointer\r
+        cmd      : SFC_CALC_SIGNAL_MAX\r
+        data     : A pointer to a double\r
+        datasize : sizeof (double)\r
+</PRE>\r
+<P>\r
+Example:\r
+</P>\r
+<PRE>\r
+        double   max_val ;\r
+        sf_command (sndfile, SFC_CALC_SIGNAL_MAX, &amp;max_val, sizeof (max_val)) ;\r
+</PRE>\r
+\r
+<DL>\r
+<DT>Return value:</DT>\r
+       <DD><DD>Zero on success, non-zero otherwise.\r
+</DL>\r
+\r
+<!-- ========================================================================= -->\r
+<A NAME="SFC_CALC_NORM_SIGNAL_MAX"></A>\r
+<H2><BR><B>SFC_CALC_NORM_SIGNAL_MAX</B></H2>\r
+<P>\r
+Retrieve the measured normalised maximum signal value. This involves reading\r
+through the whole file which can be slow on large files.\r
+</P>\r
+<P>\r
+Parameters:\r
+<PRE>\r
+        sndfile  : A valid SNDFILE* pointer\r
+        cmd      : SFC_CALC_NORM_SIGNAL_MAX\r
+        data     : A pointer to a double\r
+        datasize : sizeof (double)\r
+</PRE>\r
+<P>\r
+Example:\r
+</P>\r
+<PRE>\r
+        double   max_val ;\r
+        sf_command (sndfile, SFC_CALC_NORM_SIGNAL_MAX, &amp;max_val, sizeof (max_val)) ;\r
+</PRE>\r
+\r
+<DL>\r
+<DT>Return value:</DT>\r
+       <DD><DD>Zero on success, non-zero otherwise.\r
+</DL>\r
+\r
+<!-- ========================================================================= -->\r
+<A NAME="SFC_CALC_MAX_ALL_CHANNELS"></A>\r
+<H2><BR><B>SFC_CALC_MAX_ALL_CHANNELS</B></H2>\r
+<P>\r
+Calculate the peak value (ie a single number) for each channel.\r
+This involves reading through the whole file which can be slow on large files.\r
+</P>\r
+<P>\r
+Parameters:\r
+<PRE>\r
+        sndfile  : A valid SNDFILE* pointer\r
+        cmd      : SFC_CALC_MAX_ALL_CHANNELS\r
+        data     : A pointer to a double\r
+        datasize : sizeof (double) * number_of_channels\r
+</PRE>\r
+<P>\r
+Example:\r
+</P>\r
+<PRE>\r
+        double   peaks [number_of_channels] ;\r
+        sf_command (sndfile, SFC_CALC_MAX_ALL_CHANNELS, peaks, sizeof (peaks)) ;\r
+</PRE>\r
+<DL>\r
+<DT>Return value:</DT>\r
+       <DD>Zero if peaks have been calculated successfully and non-zero otherwise.\r
+</DL>\r
+\r
+\r
+<!-- ========================================================================= -->\r
+<A NAME="SFC_CALC_NORM_MAX_ALL_CHANNELS"></A>\r
+<H2><BR><B>SFC_CALC_NORM_MAX_ALL_CHANNELS</B></H2>\r
+<P>\r
+Calculate the normalised peak for each channel.\r
+This involves reading through the whole file which can be slow on large files.\r
+</P>\r
+<P>\r
+Parameters:\r
+<PRE>\r
+        sndfile  : A valid SNDFILE* pointer\r
+        cmd      : SFC_CALC_NORM_MAX_ALL_CHANNELS\r
+        data     : A pointer to a double\r
+        datasize : sizeof (double) * number_of_channels\r
+</PRE>\r
+<P>\r
+Example:\r
+</P>\r
+<PRE>\r
+        double   peaks [number_of_channels] ;\r
+        sf_command (sndfile, SFC_CALC_NORM_MAX_ALL_CHANNELS, peaks, sizeof (peaks)) ;\r
+</PRE>\r
+<DL>\r
+<DT>Return value:</DT>\r
+       <DD>Zero if peaks have been calculated successfully and non-zero otherwise.\r
+</DL>\r
+\r
+\r
+\r
+\r
+<!-- ========================================================================= -->\r
+<A NAME="SFC_GET_SIGNAL_MAX"></A>\r
+<H2><BR><B>SFC_GET_SIGNAL_MAX</B></H2>\r
+<P>\r
+Retrieve the peak value for the file as stored in the file header.\r
+</P>\r
+<P>\r
+Parameters:\r
+<PRE>\r
+        sndfile  : A valid SNDFILE* pointer\r
+        cmd      : SFC_GET_SIGNAL_MAX\r
+        data     : A pointer to a double\r
+        datasize : sizeof (double)\r
+</PRE>\r
+<P>\r
+Example:\r
+</P>\r
+<PRE>\r
+        double   max_peak ;\r
+        sf_command (sndfile, SFC_GET_SIGNAL_MAX, &amp;max_peak, sizeof (max_peak)) ;\r
+</PRE>\r
+<DL>\r
+<DT>Return value:</DT>\r
+       <DD>SF_TRUE if the file header contained the peak value. SF_FALSE otherwise.\r
+</DL>\r
+\r
+<!-- ========================================================================= -->\r
+<A NAME="SFC_GET_MAX_ALL_CHANNELS"></A>\r
+<H2><BR><B>SFC_GET_MAX_ALL_CHANNELS</B></H2>\r
+<P>\r
+Retrieve the peak value for the file as stored in the file header.\r
+</P>\r
+<P>\r
+Parameters:\r
+<PRE>\r
+        sndfile  : A valid SNDFILE* pointer\r
+        cmd      : SFC_GET_SIGNAL_MAX\r
+        data     : A pointer to an array of doubles\r
+        datasize : sizeof (double) * number_of_channels\r
+</PRE>\r
+<P>\r
+Example:\r
+</P>\r
+<PRE>\r
+        double   peaks [number_of_channels] ;\r
+        sf_command (sndfile, SFC_GET_MAX_ALL_CHANNELS, peaks, sizeof (peaks)) ;\r
+</PRE>\r
+<DL>\r
+<DT>Return value:</DT>\r
+       <DD>SF_TRUE if the file header contains per channel peak values for the file.\r
+               SF_FALSE otherwise.\r
+</DL>\r
+\r
+\r
+<!-- ========================================================================= -->\r
+<A NAME="SFC_SET_NORM_FLOAT"></A>\r
+<H2><BR><B>SFC_SET_NORM_FLOAT</B></H2>\r
+<P>\r
+This command only affects data read from or written to using the floating point functions:\r
+</P>\r
+<PRE>\r
+       size_t    <A HREF="api.html#read">sf_read_float</A>    (SNDFILE *sndfile, float *ptr, size_t items) ;\r
+       size_t    <A HREF="api.html#readf">sf_readf_float</A>   (SNDFILE *sndfile, float *ptr, size_t frames) ;\r
+\r
+       size_t    <A HREF="api.html#write">sf_write_float</A>   (SNDFILE *sndfile, float *ptr, size_t items) ;\r
+       size_t    <A HREF="api.html#writef">sf_writef_float</A>  (SNDFILE *sndfile, float *ptr, size_t frames) ;\r
+</PRE>\r
+<P>\r
+Parameters:\r
+</P>\r
+<PRE>\r
+        sndfile  : A valid SNDFILE* pointer\r
+        cmd      : SFC_SET_NORM_FLOAT\r
+        data     : NULL\r
+        datasize : SF_TRUE or SF_FALSE\r
+</PRE>\r
+<P>\r
+For read operations setting normalisation to SF_TRUE means that the data from all\r
+subsequent reads will be be normalised to the range [-1.0, 1.0].\r
+</P>\r
+<P>\r
+For write operations, setting normalisation to SF_TRUE means than all data supplied\r
+to the float write functions should be in the range [-1.0, 1.0] and will be scaled\r
+for the file format as necessary.\r
+</P>\r
+<P>\r
+For both cases, setting normalisation to SF_FALSE means that no scaling will take place.\r
+</P>\r
+<P>\r
+Example:\r
+</P>\r
+<PRE>\r
+        sf_command (sndfile, SFC_SET_NORM_FLOAT, NULL, SF_TRUE) ;\r
+\r
+        sf_command (sndfile, SFC_SET_NORM_FLOAT, NULL, SF_FALSE) ;\r
+</PRE>\r
+<DL>\r
+<DT>Return value: </DT>\r
+       <DD>Returns the previous float normalisation mode.\r
+</DL>\r
+\r
+<!-- ========================================================================= -->\r
+<A NAME="SFC_SET_NORM_DOUBLE"></A>\r
+<H2><BR><B>SFC_SET_NORM_DOUBLE</B></H2>\r
+<P>\r
+This command only affects data read from or written to using the double precision\r
+floating point functions:\r
+</P>\r
+<PRE>\r
+       size_t    <A HREF="api.html#read">sf_read_double</A>    (SNDFILE *sndfile, double *ptr, size_t items) ;\r
+       size_t    <A HREF="api.html#readf">sf_readf_double</A>   (SNDFILE *sndfile, double *ptr, size_t frames) ;\r
+\r
+       size_t    <A HREF="api.html#write">sf_write_double</A>   (SNDFILE *sndfile, double *ptr, size_t items) ;\r
+       size_t    <A HREF="api.html#writef">sf_writef_double</A>  (SNDFILE *sndfile, double *ptr, size_t frames) ;\r
+</PRE>\r
+<P>\r
+Parameters:\r
+</P>\r
+<PRE>\r
+        sndfile  : A valid SNDFILE* pointer\r
+        cmd      : SFC_SET_NORM_DOUBLE\r
+        data     : NULL\r
+        datasize : SF_TRUE or SF_FALSE\r
+</PRE>\r
+<P>\r
+For read operations setting normalisation to SF_TRUE means that the data\r
+from all subsequent reads will be be normalised to the range [-1.0, 1.0].\r
+</P>\r
+<P>\r
+For write operations, setting normalisation to SF_TRUE means than all data supplied\r
+to the double write functions should be in the range [-1.0, 1.0] and will be scaled\r
+for the file format as necessary.\r
+</P>\r
+<P>\r
+For both cases, setting normalisation to SF_FALSE means that no scaling will take place.\r
+</P>\r
+<P>\r
+Example:\r
+</P>\r
+<PRE>\r
+        sf_command (sndfile, SFC_SET_NORM_DOUBLE, NULL, SF_TRUE) ;\r
+\r
+        sf_command (sndfile, SFC_SET_NORM_DOUBLE, NULL, SF_FALSE) ;\r
+</PRE>\r
+<DL>\r
+<DT>Return value: </DT>\r
+       <DD>Returns the previous double normalisation mode.\r
+</DL>\r
+\r
+<!-- ========================================================================= -->\r
+<A NAME="SFC_GET_NORM_FLOAT"></A>\r
+<H2><BR><B>SFC_GET_NORM_FLOAT</B></H2>\r
+<P>\r
+Retrieve the current float normalisation mode.\r
+</P>\r
+<P>\r
+Parameters:\r
+</P>\r
+<PRE>\r
+        sndfile  : A valid SNDFILE* pointer\r
+        cmd      : SFC_GET_NORM_FLOAT\r
+        data     : NULL\r
+        datasize : anything\r
+</PRE>\r
+<P>\r
+Example:\r
+</P>\r
+<PRE>\r
+        normalisation = sf_command (sndfile, SFC_GET_NORM_FLOAT, NULL, 0) ;\r
+</PRE>\r
+<DL>\r
+<DT>Return value: </DT>\r
+       <DD>Returns TRUE if normalisation is on and FALSE otherwise.\r
+</DL>\r
+\r
+<!-- ========================================================================= -->\r
+<A NAME="SFC_GET_NORM_DOUBLE"></A>\r
+<H2><BR><B>SFC_GET_NORM_DOUBLE</B></H2>\r
+<P>\r
+Retrieve the current float normalisation mode.\r
+</P>\r
+<P>\r
+Parameters:\r
+</P>\r
+<PRE>\r
+        sndfile  : A valid SNDFILE* pointer\r
+        cmd      : SFC_GET_NORM_DOUBLE\r
+        data     : NULL\r
+        datasize : anything\r
+</PRE>\r
+<P>\r
+Example:\r
+</P>\r
+<PRE>\r
+        normalisation = sf_command (sndfile, SFC_GET_NORM_DOUBLE, NULL, 0) ;\r
+</PRE>\r
+<DL>\r
+<DT>Return value: </DT>\r
+       <DD>Returns TRUE if normalisation is on and FALSE otherwise.\r
+</DL>\r
+\r
+\r
+<!-- ========================================================================= -->\r
+<A NAME="SFC_SET_SCALE_FLOAT_INT_READ"></A>\r
+<H2><BR><B>SFC_SET_SCALE_FLOAT_INT_READ</B></H2>\r
+<P>\r
+Set/clear the scale factor when integer (short/int) data is read from a file\r
+containing floating point data.\r
+</P>\r
+<P>\r
+Parameters:\r
+</P>\r
+<PRE>\r
+        sndfile  : A valid SNDFILE* pointer\r
+        cmd      : SFC_SET_SCALE_FLOAT_INT_READ\r
+        data     : NULL\r
+        datasize : TRUE or FALSE\r
+</PRE>\r
+<P>\r
+Example:\r
+</P>\r
+<PRE>\r
+        sf_command (sndfile, SFC_SET_SCALE_FLOAT_INT_READ, NULL, SF_TRUE) ;\r
+</PRE>\r
+<DL>\r
+<DT>Return value: </DT>\r
+       <DD>Returns the previous SFC_SET_SCALE_FLOAT_INT_READ setting for this file.\r
+</DL>\r
+\r
+\r
+<!-- ========================================================================= -->\r
+<A NAME="SFC_SET_SCALE_INT_FLOAT_WRITE"></A>\r
+<H2><BR><B>SFC_SET_SCALE_INT_FLOAT_WRITE</B></H2>\r
+<P>\r
+Set/clear the scale factor when integer (short/int) data is written to a file\r
+as floating point data.\r
+</P>\r
+<P>\r
+Parameters:\r
+</P>\r
+<PRE>\r
+        sndfile  : A valid SNDFILE* pointer\r
+        cmd      : SFC_SET_SCALE_FLOAT_INT_READ\r
+        data     : NULL\r
+        datasize : TRUE or FALSE\r
+</PRE>\r
+<P>\r
+Example:\r
+</P>\r
+<PRE>\r
+        sf_command (sndfile, SFC_SET_SCALE_INT_FLOAT_WRITE, NULL, SF_TRUE) ;\r
+</PRE>\r
+<DL>\r
+<DT>Return value: </DT>\r
+       <DD>Returns the previous SFC_SET_SCALE_INT_FLOAT_WRITE setting for this file.\r
+</DL>\r
+\r
+<!-- ========================================================================= -->\r
+<A NAME="SFC_GET_SIMPLE_FORMAT_COUNT"></A>\r
+<H2><BR><B>SFC_GET_SIMPLE_FORMAT_COUNT</B></H2>\r
+<P>\r
+Retrieve the number of simple formats supported by libsndfile.\r
+</P>\r
+<P>\r
+Parameters:\r
+</P>\r
+<PRE>\r
+        sndfile  : Not used.\r
+        cmd      : SFC_GET_SIMPLE_FORMAT_COUNT\r
+        data     : a pointer to an int\r
+        datasize : sizeof (int)\r
+</PRE>\r
+<P>\r
+Example:\r
+</P>\r
+<PRE>\r
+        int  count ;\r
+        sf_command (sndfile, SFC_GET_SIMPLE_FORMAT_COUNT, &amp;count, sizeof (int)) ;\r
+</PRE>\r
+<DL>\r
+<DT>Return value: </DT>\r
+       <DD>0\r
+</DL>\r
+\r
+<!-- ========================================================================= -->\r
+<A NAME="SFC_GET_SIMPLE_FORMAT"></A>\r
+<H2><BR><B>SFC_GET_SIMPLE_FORMAT</B></H2>\r
+<P>\r
+Retrieve information about a simple format.\r
+</P>\r
+<P>\r
+Parameters:\r
+</P>\r
+<PRE>\r
+        sndfile  : Not used.\r
+        cmd      : SFC_GET_SIMPLE_FORMAT\r
+        data     : a pointer to an  SF_FORMAT_INFO struct\r
+        datasize : sizeof (SF_FORMAT_INFO)\r
+</PRE>\r
+<P>\r
+The SF_FORMAT_INFO struct is defined in &lt;sndfile.h&gt; as:\r
+</P>\r
+<PRE>\r
+        typedef struct\r
+        {   int         format ;\r
+            const char  *name ;\r
+            const char  *extension ;\r
+        } SF_FORMAT_INFO ;\r
+</PRE>\r
+<P>\r
+When sf_command() is called with SF_GET_SIMPLE_FORMAT, the value of the format\r
+field should be the format number (ie 0 &lt;= format &lt;= count value obtained using\r
+SF_GET_SIMPLE_FORMAT_COUNT).\r
+</P>\r
+<P>\r
+Example:\r
+</P>\r
+<PRE>\r
+        SF_FORMAT_INFO format_info ;\r
+        int             k, count ;\r
+\r
+        sf_command (sndfile, SFC_GET_SIMPLE_FORMAT_COUNT, &amp;count, sizeof (int)) ;\r
+\r
+        for (k = 0 ; k &lt; count ; k++)\r
+        {   format_info.format = k ;\r
+            sf_command (sndfile, SFC_GET_SIMPLE_FORMAT, &amp;format_info, sizeof (format_info)) ;\r
+            printf ("%08x  %s %s\n", format_info.format, format_info.name, format_info.extension) ;\r
+            } ;\r
+</PRE>\r
+<DL>\r
+<DT>Return value: </DT>\r
+       <DD>0 on success and non-zero otherwise.\r
+       <DD>The value of the format field of the SF_FORMAT_INFO struct will be a value which\r
+               can be placed in the format field of an SF_INFO struct when a file is to be opened\r
+               for write.\r
+       <DD>The name field will contain a char* pointer to the name of the string, eg. "WAV (Microsoft 16 bit PCM)".\r
+       <DD>The extension field will contain the most commonly used file extension for that file type.\r
+</DL>\r
+\r
+<!-- ========================================================================= -->\r
+<A NAME="SFC_GET_FORMAT_INFO"></A>\r
+<H2><BR><B>SFC_GET_FORMAT_INFO</B></H2>\r
+<P>\r
+Retrieve information about a major or subtype format.\r
+</P>\r
+<P>\r
+Parameters:\r
+</P>\r
+<PRE>\r
+        sndfile  : Not used.\r
+        cmd      : SFC_GET_FORMAT_INFO\r
+        data     : a pointer to an SF_FORMAT_INFO struct\r
+        datasize : sizeof (SF_FORMAT_INFO)\r
+</PRE>\r
+<P>\r
+The SF_FORMAT_INFO struct is defined in &lt;sndfile.h&gt; as:\r
+</P>\r
+<PRE>\r
+        typedef struct\r
+        {   int         format ;\r
+            const char  *name ;\r
+            const char  *extension ;\r
+        } SF_FORMAT_INFO ;\r
+</PRE>\r
+<P>\r
+When sf_command() is called with SF_GET_FORMAT_INFO, the format field is\r
+examined and if (format &amp; SF_FORMAT_TYPEMASK) is a valid format then the struct\r
+is filled in with information about the given major type.\r
+If (format &amp; SF_FORMAT_TYPEMASK) is FALSE and (format &amp; SF_FORMAT_SUBMASK) is a\r
+valid subtype format then the struct is filled in with information about the given\r
+subtype.\r
+</P>\r
+<P>\r
+Example:\r
+</P>\r
+<PRE>\r
+        SF_FORMAT_INFO format_info ;\r
+\r
+        format_info.format = SF_FORMAT_WAV ;\r
+        sf_command (sndfile, SFC_GET_FORMAT_INFO, &amp;format_info, sizeof (format_info)) ;\r
+        printf ("%08x  %s %s\n", format_info.format, format_info.name, format_info.extension) ;\r
+\r
+        format_info.format = SF_FORMAT_ULAW ;\r
+        sf_command (sndfile, SFC_GET_FORMAT_INFO, &amp;format_info, sizeof (format_info)) ;\r
+        printf ("%08x  %s\n", format_info.format, format_info.name) ;\r
+</PRE>\r
+<DL>\r
+<DT>Return value: </DT>\r
+       <DD>0 on success and non-zero otherwise.\r
+</DL>\r
+<!-- ========================================================================= -->\r
+<A NAME="SFC_GET_FORMAT_MAJOR_COUNT"></A>\r
+<H2><BR><B>SFC_GET_FORMAT_MAJOR_COUNT</B></H2>\r
+<P>\r
+Retrieve the number of major formats.\r
+</P>\r
+<P>\r
+Parameters:\r
+</P>\r
+<PRE>\r
+        sndfile  : Not used.\r
+        cmd      : SFC_GET_FORMAT_MAJOR_COUNT\r
+        data     : a pointer to an int\r
+        datasize : sizeof (int)\r
+</PRE>\r
+<P>\r
+Example:\r
+</P>\r
+<PRE>\r
+        int  count ;\r
+        sf_command (sndfile, SFC_GET_FORMAT_MAJOR_COUNT, &amp;count, sizeof (int)) ;\r
+</PRE>\r
+<DL>\r
+<DT>Return value: </DT>\r
+       <DD>0\r
+</DL>\r
+\r
+<!-- ========================================================================= -->\r
+<A NAME="SFC_GET_FORMAT_MAJOR"></A>\r
+<H2><BR><B>SFC_GET_FORMAT_MAJOR</B></H2>\r
+<P>\r
+Retrieve information about a major format type.\r
+</P>\r
+<P>\r
+Parameters:\r
+</P>\r
+<PRE>\r
+        sndfile  : Not used.\r
+        cmd      : SFC_GET_FORMAT_MAJOR\r
+        data     : a pointer to an  SF_FORMAT_INFO struct\r
+        datasize : sizeof (SF_FORMAT_INFO)\r
+</PRE>\r
+<P>\r
+Example:\r
+</P>\r
+<PRE>\r
+        SF_FORMAT_INFO format_info ;\r
+        int             k, count ;\r
+\r
+        sf_command (sndfile, SFC_GET_FORMAT_MAJOR_COUNT, &amp;count, sizeof (int)) ;\r
+\r
+        for (k = 0 ; k &lt; count ; k++)\r
+        {   format_info.format = k ;\r
+            sf_command (sndfile, SFC_GET_FORMAT_MAJOR, &amp;format_info, sizeof (format_info)) ;\r
+            printf ("%08x  %s %s\n", format_info.format, format_info.name, format_info.extension) ;\r
+            } ;\r
+</PRE>\r
+<P>\r
+For a more comprehensive example, see the program list_formats.c in the examples/\r
+directory of the libsndfile source code distribution.\r
+</P>\r
+<DL>\r
+<DT>Return value: </DT>\r
+       <DD>0 on success and non-zero otherwise.\r
+       <DD>The value of the format field will be one of the major format identifiers such as\r
+               SF_FORMAT_WAV or SF_FORMAT_AIFF.\r
+       <DD>The name field will contain a char* pointer to the name of the string, eg. "WAV (Microsoft)".\r
+       <DD>The extension field will contain the most commonly used file extension for that file type.\r
+</DL>\r
+\r
+<!-- ========================================================================= -->\r
+<A NAME="SFC_GET_FORMAT_SUBTYPE_COUNT"></A>\r
+<H2><BR><B>SFC_GET_FORMAT_SUBTYPE_COUNT</B></H2>\r
+<P>\r
+Retrieve the number of subformats.\r
+</P>\r
+<P>\r
+Parameters:\r
+</P>\r
+<PRE>\r
+        sndfile  : Not used.\r
+        cmd      : SFC_GET_FORMAT_SUBTYPE_COUNT\r
+        data     : a pointer to an int\r
+        datasize : sizeof (int)\r
+</PRE>\r
+<P>\r
+Example:\r
+</P>\r
+<PRE>\r
+        int   count ;\r
+        sf_command (sndfile, SFC_GET_FORMAT_SUBTYPE_COUNT, &amp;count, sizeof (int)) ;\r
+</PRE>\r
+<DL>\r
+<DT>Return value: </DT>\r
+       <DD>0\r
+</DL>\r
+\r
+<!-- ========================================================================= -->\r
+<A NAME="SFC_GET_FORMAT_SUBTYPE"></A>\r
+<H2><BR><B>SFC_GET_FORMAT_SUBTYPE</B></H2>\r
+<P>\r
+Enumerate the subtypes (this function does not translate a subtype into\r
+a string describing that subtype).\r
+A typical use case might be retrieving a string description of all subtypes\r
+so that a dialog box can be filled in.\r
+</P>\r
+<P>\r
+\r
+</P>\r
+<P>\r
+Parameters:\r
+</P>\r
+<PRE>\r
+        sndfile  : Not used.\r
+        cmd      : SFC_GET_FORMAT_SUBTYPE\r
+        data     : a pointer to an SF_FORMAT_INFO struct\r
+        datasize : sizeof (SF_FORMAT_INFO)\r
+</PRE>\r
+<P>\r
+Example 1: Retrieve all sybtypes supported by the WAV format.\r
+</P>\r
+<PRE>\r
+        SF_FORMAT_INFO format_info ;\r
+        int             k, count ;\r
+\r
+        sf_command (sndfile, SFC_GET_FORMAT_SUBTYPE_COUNT, &amp;count, sizeof (int)) ;\r
+\r
+        for (k = 0 ; k &lt; count ; k++)\r
+        {   format_info.format = k ;\r
+            sf_command (sndfile, SFC_GET_FORMAT_SUBTYPE, &amp;format_info, sizeof (format_info)) ;\r
+            if (! sf_format_check (format_info.format | SF_FORMAT_WAV))\r
+               continue ;\r
+            printf ("%08x  %s\n", format_info.format, format_info.name) ;\r
+            } ;\r
+</PRE>\r
+<P>\r
+Example 2: Print a string describing the SF_FORMAT_PCM_16 subtype.\r
+</P>\r
+<PRE>\r
+        SF_FORMAT_INFO format_info ;\r
+        int             k, count ;\r
+\r
+        sf_command (sndfile, SFC_GET_FORMAT_SUBTYPE_COUNT, &amp;count, sizeof (int)) ;\r
+\r
+        for (k = 0 ; k &lt; count ; k++)\r
+        {   format_info.format = k ;\r
+            sf_command (sndfile, SFC_GET_FORMAT_SUBTYPE, &amp;format_info, sizeof (format_info)) ;\r
+            if (format_info.format == SF_FORMAT_PCM_16)\r
+            {   printf ("%08x  %s\n", format_info.format, format_info.name) ;\r
+                break ;\r
+                } ;\r
+            } ;\r
+</PRE>\r
+<P>\r
+For a more comprehensive example, see the program list_formats.c in the examples/\r
+directory of the libsndfile source code distribution.\r
+</P>\r
+<DL>\r
+<DT>Return value: </DT>\r
+       <DD>0 on success and non-zero otherwise.\r
+       <DD>The value of the format field will be one of the major format identifiers such as\r
+               SF_FORMAT_WAV or SF_FORMAT_AIFF.\r
+       <DD>The name field will contain a char* pointer to the name of the string; for instance\r
+               "WAV (Microsoft)" or "AIFF (Apple/SGI)".\r
+       <DD>The extension field will be a NULL pointer.\r
+</DL>\r
+\r
+<!-- ========================================================================= -->\r
+<A NAME="SFC_SET_ADD_PEAK_CHUNK"></A>\r
+<H2><BR><B>SFC_SET_ADD_PEAK_CHUNK</B></H2>\r
+<P>\r
+By default, WAV and AIFF files which contain floating point data (subtype SF_FORMAT_FLOAT\r
+or SF_FORMAT_DOUBLE) have a PEAK chunk.\r
+By using this command, the addition of a PEAK chunk can be turned on or off.\r
+</P>\r
+<P>\r
+Note : This call must be made before any data is written to the file.\r
+</P>\r
+<P>\r
+Parameters:\r
+<PRE>\r
+        sndfile  : A valid SNDFILE* pointer\r
+        cmd      : SFC_SET_ADD_PEAK_CHUNK\r
+        data     : Not used (should be NULL)\r
+        datasize : TRUE or FALSE.\r
+</PRE>\r
+<P>\r
+Example:\r
+</P>\r
+<PRE>\r
+        /* Turn on the PEAK chunk. */\r
+        sf_command (sndfile, SFC_SET_ADD_PEAK_CHUNK, NULL, SF_TRUE) ;\r
+\r
+        /* Turn off the PEAK chunk. */\r
+        sf_command (sndfile, SFC_SET_ADD_PEAK_CHUNK, NULL, SF_FALSE) ;\r
+</PRE>\r
+<DL>\r
+<DT>Return value:</DT>\r
+<DD>Returns SF_TRUE if the peak chunk will be written after this call.\r
+<DD>Returns SF_FALSE if the peak chunk will not be written after this call.\r
+</DL>\r
+\r
+<!-- ========================================================================= -->\r
+<A NAME="SFC_UPDATE_HEADER_NOW"></A>\r
+<H2><BR><B>SFC_UPDATE_HEADER_NOW</B></H2>\r
+<P>\r
+The header of an audio file is normally written by libsndfile when the file is\r
+closed using <B>sf_close()</B>.\r
+</P>\r
+<P>\r
+There are however situations where large files are being generated and it would\r
+be nice to have valid data in the header before the file is complete.\r
+Using this command will update the file header to reflect the amount of data written\r
+to the file so far.\r
+Other programs opening the file for read (before any more data is written) will\r
+then read a valid sound file header.\r
+</P>\r
+<P>\r
+Parameters:\r
+<PRE>\r
+        sndfile  : A valid SNDFILE* pointer\r
+        cmd      : SFC_UPDATE_HEADER_NOW\r
+        data     : Not used (should be NULL)\r
+        datasize : Not used.\r
+</PRE>\r
+<P>\r
+Example:\r
+</P>\r
+<PRE>\r
+        /* Update the header now. */\r
+        sf_command (sndfile, SFC_UPDATE_HEADER_NOW, NULL, 0) ;\r
+</PRE>\r
+<DL>\r
+<DT>Return value:</DT>\r
+<DD>0\r
+</DL>\r
+\r
+<!-- ========================================================================= -->\r
+<A NAME="SFC_SET_UPDATE_HEADER_AUTO"></A>\r
+<H2><BR><B>SFC_SET_UPDATE_HEADER_AUTO</B></H2>\r
+<P>\r
+Similar to SFC_UPDATE_HEADER_NOW but updates the header at the end of every call\r
+to the <B>sf_write*</B> functions.\r
+</P>\r
+<P>\r
+Parameters:\r
+<PRE>\r
+        sndfile  : A valid SNDFILE* pointer\r
+        cmd      : SFC_UPDATE_HEADER_NOW\r
+        data     : Not used (should be NULL)\r
+        datasize : SF_TRUE or SF_FALSE\r
+</PRE>\r
+<P>\r
+Example:\r
+</P>\r
+<PRE>\r
+        /* Turn on auto header update. */\r
+        sf_command (sndfile, SFC_SET_UPDATE_HEADER_AUTO, NULL, SF_TRUE) ;\r
+\r
+        /* Turn off auto header update. */\r
+        sf_command (sndfile, SFC_SET_UPDATE_HEADER_AUTO, NULL, SF_FALSE) ;\r
+</PRE>\r
+<DL>\r
+<DT>Return value:</DT>\r
+<DD>TRUE if auto update header is now on; FALSE otherwise.\r
+</DL>\r
+\r
+<!-- ========================================================================= -->\r
+<A NAME="SFC_FILE_TRUNCATE"></A>\r
+<H2><BR><B>SFC_FILE_TRUNCATE</B></H2>\r
+<P>\r
+Truncate a file that was opened for write or read/write.\r
+</P>\r
+<P>\r
+Parameters:\r
+<PRE>\r
+        sndfile  : A valid SNDFILE* pointer\r
+        cmd      : SFC_FILE_TRUNCATE\r
+        data     : A pointer to an sf_count_t.\r
+        datasize : sizeof (sf_count_t)\r
+</PRE>\r
+\r
+<P>\r
+Truncate the file to the number of frames specified by the sf_count_t pointed\r
+to by data.\r
+After this command, both the read and the write pointer will be\r
+at the new end of the file.\r
+This command will fail (returning non-zero) if the requested truncate position\r
+is beyond the end of the file.\r
+</P>\r
+<P>\r
+Example:\r
+</P>\r
+<PRE>\r
+        /* Truncate the file to a length of 20 frames. */\r
+        sf_count_t  frames = 20 ;\r
+        sf_command (sndfile, SFC_FILE_TRUNCATE, &amp;frames, sizeof (frames)) ;\r
+</PRE>\r
+<DL>\r
+<DT>Return value:</DT>\r
+       <DD>Zero on sucess, non-zero otherwise.\r
+</DL>\r
+\r
+<!-- ========================================================================= -->\r
+<A NAME="SFC_SET_RAW_START_OFFSET"></A>\r
+<H2><BR><B>SFC_SET_RAW_START_OFFSET</B></H2>\r
+<P>\r
+Change the data start offset for files opened up as SF_FORMAT_RAW.\r
+</P>\r
+<P>\r
+Parameters:\r
+<PRE>\r
+        sndfile  : A valid SNDFILE* pointer\r
+        cmd      : SFC_SET_RAW_START_OFFSET\r
+        data     : A pointer to an sf_count_t.\r
+        datasize : sizeof (sf_count_t)\r
+</PRE>\r
+\r
+<P>\r
+For a file opened as format SF_FORMAT_RAW, set the data offset to the value\r
+given by data.\r
+</P>\r
+<P>\r
+Example:\r
+</P>\r
+<PRE>\r
+        /* Reset the data offset to 5 bytes from the start of the file. */\r
+        sf_count_t  offset = 5 ;\r
+        sf_command (sndfile, SFC_SET_RAW_START_OFFSET, &amp;offset, sizeof (offset)) ;\r
+</PRE>\r
+<DL>\r
+<DT>Return value:</DT>\r
+       <DD>Zero on success, non-zero otherwise.\r
+</DL>\r
+\r
+<!-- ========================================================================= -->\r
+<A NAME="SFC_SET_CLIPPING"></A>\r
+<H2><BR><B>SFC_SET_CLIPPING</B></H2>\r
+<P>\r
+Turn on/off automatic clipping when doing floating point to integer conversion.\r
+</P>\r
+<P>\r
+Parameters:\r
+<PRE>\r
+        sndfile  : A valid SNDFILE* pointer\r
+        cmd      : SFC_SET_CLIPPING\r
+        data     : NULL\r
+        datasize : SF_TRUE or SF_FALSE.\r
+</PRE>\r
+\r
+<P>\r
+Turn on (datasize == SF_TRUE) or off (datasize == SF_FALSE) clipping.\r
+</P>\r
+<P>\r
+Example:\r
+</P>\r
+<PRE>\r
+        sf_command (sndfile, SFC_SET_CLIPPING, NULL, SF_TRUE) ;\r
+</PRE>\r
+<DL>\r
+<DT>Return value:</DT>\r
+       <DD>Clipping mode (SF_TRUE or SF_FALSE).\r
+</DL>\r
+\r
+\r
+<!-- ========================================================================= -->\r
+<A NAME="SFC_GET_CLIPPING"></A>\r
+<H2><BR><B>SFC_GET_CLIPPING</B></H2>\r
+<P>\r
+Turn on/off automatic clipping when doing floating point to integer conversion.\r
+</P>\r
+<P>\r
+Parameters:\r
+<PRE>\r
+        sndfile  : A valid SNDFILE* pointer\r
+        cmd      : SFC_GET_CLIPPING\r
+        data     : NULL\r
+        datasize : 0\r
+</PRE>\r
+\r
+<P>\r
+Retrieve the current cliiping setting.\r
+</P>\r
+<P>\r
+Example:\r
+</P>\r
+<PRE>\r
+        sf_command (sndfile, SFC_GET_CLIPPING, NULL, 0) ;\r
+</PRE>\r
+<DL>\r
+<DT>Return value:</DT>\r
+       <DD>Clipping mode (SF_TRUE or SF_FALSE).\r
+</DL>\r
+\r
+<!-- ========================================================================= -->\r
+<A NAME="SFC_GET_EMBED_FILE_INFO"></A>\r
+<H2><BR><B>SFC_GET_EMBED_FILE_INFO</B></H2>\r
+<P>\r
+Get the file offset and file length of a file enbedded within another\r
+larger file.\r
+</P>\r
+<P>\r
+Parameters:\r
+<PRE>\r
+        sndfile  : A valid SNDFILE* pointer\r
+        cmd      : SFC_GET_CLIPPING\r
+        data     : a pointer to an  SF_EMBED_FILE_INFO struct\r
+        datasize : sizeof (SF_EMBED_FILE_INFO)\r
+</PRE>\r
+<P>\r
+The SF_EMBED_FILE_INFO struct is defined in &lt;sndfile.h&gt; as:\r
+</P>\r
+<PRE>\r
+        typedef struct\r
+        {   sf_count_t offset ;\r
+            sf_count_t length ;\r
+        } SF_EMBED_FILE_INFO ;\r
+</PRE>\r
+<DL>\r
+<DT>Return value: </DT>\r
+       <DD>0 on success and non-zero otherwise.\r
+       <DD>The value of the offset field of the SF_EMBED_FILE_INFO struct will be\r
+               the offsets in bytes from the start of the outer file to the start of\r
+               the audio file.\r
+       <DD>The value of the offset field of the SF_EMBED_FILE_INFO struct will be\r
+               the length in bytes of the embedded file.\r
+</DL>\r
+\r
+\r
+\r
+<!-- ========================================================================= -->\r
+<A NAME="SFC_WAVEX_GET_AMBISONIC"></A>\r
+<H2><BR><B>SFC_WAVEX_GET_AMBISONIC</B></H2>\r
+<P>\r
+Test if the current file has the GUID of a WAVEX file for any of the Ambisonic\r
+formats.\r
+</P>\r
+<P>\r
+Parameters:\r
+<PRE>\r
+        sndfile  : A valid SNDFILE* pointer\r
+        cmd      : SFC_WAVEX_GET_AMBISONIC\r
+        data     : NULL\r
+        datasize : 0\r
+</PRE>\r
+<P>\r
+       The Ambisonic WAVEX formats are defined here :\r
+               <A HREF="http://dream.cs.bath.ac.uk/researchdev/wave-ex/bformat.html">\r
+                       http://dream.cs.bath.ac.uk/researchdev/wave-ex/bformat.html</A>.\r
+</P>\r
+<DL>\r
+<DT>Return value: </DT>\r
+       <DD>SF_AMBISONIC_NONE or SF_AMBISONIC_B_FORMAT or zero if the file format\r
+               does not support ambisonic formats.\r
+</DL>\r
+\r
+<!-- ========================================================================= -->\r
+<A NAME="SFC_WAVEX_SET_AMBISONIC"></A>\r
+<H2><BR><B>SFC_WAVEX_SET_AMBISONIC</B></H2>\r
+<P>\r
+Set the GUID of a new WAVEX file to indicate an Ambisonics format.\r
+</P>\r
+<P>\r
+Parameters:\r
+<PRE>\r
+        sndfile  : A valid SNDFILE* pointer\r
+        cmd      : SFC_WAVEX_SET_AMBISONIC\r
+        data     : NULL\r
+        datasize : SF_AMBISONIC_NONE or SF_AMBISONIC_B_FORMAT\r
+</PRE>\r
+<P>\r
+Turn on (SF_AMBISONIC_B_FORMAT) or off (SF_AMBISONIC_NONE) encoding.\r
+This command is currently only supported for files with SF_FORMAT_WAVEX format.\r
+</P>\r
+<P>\r
+       The Ambisonic WAVEX formats are defined here :\r
+               <A HREF="http://dream.cs.bath.ac.uk/researchdev/wave-ex/bformat.html">\r
+                       http://dream.cs.bath.ac.uk/researchdev/wave-ex/bformat.html</A>.\r
+</P>\r
+<DL>\r
+<DT>Return value: </DT>\r
+       <DD>Return the ambisonic value that has just been set or zero if the file\r
+               format does not support ambisonic encoding.\r
+</DL>\r
+\r
+<!-- ========================================================================= -->\r
+<A NAME="SFC_SET_VBR_ENCODING_QUALITY"></A>\r
+<H2><BR><B>SFC_SET_VBR_ENCODING_QUALITY</B></H2>\r
+<P>\r
+Set the the Variable Bit Rate encoding quality.\r
+The encoding quality value should be between 0.0 (lowest quality) and 1.0\r
+(highest quality).\r
+</P>\r
+<P>\r
+Parameters:\r
+<PRE>\r
+        sndfile  : A valid SNDFILE* pointer\r
+        cmd      : SFC_SET_VBR_ENCODING_QUALITY\r
+        data     : A pointer to a double value\r
+        datasize : sizeof (double)\r
+</PRE>\r
+<P>\r
+The command must be sent before any audio data is written to the file.\r
+</P>\r
+<P>\r
+</P>\r
+<DL>\r
+<DT>Return value: </DT>\r
+       <DD>Zero on success, non-zero otherwise.\r
+</DL>\r
+\r
+<!-- ========================================================================= -->\r
+<A NAME="SFC_RAW_NEEDS_ENDSWAP"></A>\r
+<H2><BR><B>SFC_RAW_NEEDS_ENDSWAP</B></H2>\r
+<P>\r
+Determine if raw data read using\r
+       <a href="api.html#raw">\r
+       sf_read_raw</a>\r
+needs to be end swapped on the host CPU.\r
+</P>\r
+<P>\r
+For instance, will return SF_TRUE on when reading WAV containing\r
+SF_FORMAT_PCM_16 data on a big endian machine and SF_FALSE on a little endian\r
+machine.\r
+</P>\r
+<P>\r
+Parameters:\r
+<PRE>\r
+        sndfile  : A valid SNDFILE* pointer\r
+        cmd      : SFC_RAW_NEEDS_ENDSWAP\r
+        data     : NULL\r
+        datasize : 0\r
+</PRE>\r
+\r
+<DL>\r
+<DT>Return value: </DT>\r
+       <DD>SF_TRUE or SF_FALSE\r
+</DL>\r
+\r
+\r
+<!-- ========================================================================= -->\r
+<A NAME="SFC_GET_BROADCAST_INFO"></A>\r
+<H2><BR><B>SFC_GET_BROADCAST_INFO</B></H2>\r
+<P>\r
+Retrieve the Broadcast Extension Chunk from WAV (and related) files.\r
+</P>\r
+<p>\r
+Parameters:\r
+</p>\r
+<PRE>\r
+        sndfile  : A valid SNDFILE* pointer\r
+        cmd      : SFC_GET_BROADCAST_INFO\r
+        data     : a pointer to an SF_BROADCAST_INFO struct\r
+        datasize : sizeof (SF_BROADCAST_INFO)\r
+</PRE>\r
+<P>\r
+The SF_BROADCAST_INFO struct is defined in &lt;sndfile.h&gt; as:\r
+</P>\r
+<PRE>\r
+    typedef struct\r
+    {   char            description [256] ;\r
+        char            originator [32] ;\r
+        char            originator_reference [32] ;\r
+        char            origination_date [10] ;\r
+        char            origination_time [8] ;\r
+        unsigned int    time_reference_low ;\r
+        unsigned int    time_reference_high ;\r
+        short           version ;\r
+        char            umid [64] ;\r
+        char            reserved [190] ;\r
+        unsigned int    coding_history_size ;\r
+        char            coding_history [256] ;\r
+    } SF_BROADCAST_INFO ;\r
+</PRE>\r
+\r
+<DL>\r
+<DT>Return value: </DT>\r
+       <DD>SF_TRUE if the file contained a Broadcast Extension chunk or SF_FALSE\r
+       otherwise.\r
+</DL>\r
+\r
+<!-- ========================================================================= -->\r
+<A NAME="SFC_SET_BROADCAST_INFO"></A>\r
+<H2><BR><B>SFC_SET_BROADCAST_INFO</B></H2>\r
+<P>\r
+Set the Broadcast Extension Chunk for WAV (and related) files.\r
+</P>\r
+<p>\r
+Parameters:\r
+</p>\r
+<PRE>\r
+        sndfile  : A valid SNDFILE* pointer\r
+        cmd      : SFC_SET_BROADCAST_INFO\r
+        data     : a pointer to an SF_BROADCAST_INFO struct\r
+        datasize : sizeof (SF_BROADCAST_INFO)\r
+</PRE>\r
+\r
+<DL>\r
+<DT>Return value: </DT>\r
+       <DD>SF_TRUE if setting the Broadcast Extension chunk was successful and SF_FALSE\r
+       otherwise.\r
+</DL>\r
+<!-- ========================================================================= -->\r
+\r
+<A NAME="SFC_GET_LOOP_INFO"></A>\r
+<H2><BR><B>SFC_GET_LOOP_INFO</B></H2>\r
+<P>\r
+Retrieve loop information for file including time signature, length in\r
+beats and original MIDI base note\r
+</P>\r
+<p>\r
+Parameters:\r
+</p>\r
+<PRE>\r
+         sndfile  : A valid SNDFILE* pointer\r
+         cmd      : SFC_GET_LOOP_INFO\r
+         data     : a pointer to an SF_LOOP_INFO struct\r
+         datasize : sizeof (SF_LOOP_INFO)\r
+</PRE>\r
+<P>\r
+The SF_BROADCAST_INFO struct is defined in &lt;sndfile.h&gt; as:\r
+</P>\r
+<PRE>\r
+        typedef struct\r
+        {   short    time_sig_num ;   /* any positive integer    > 0  */\r
+            short    time_sig_den ;   /* any positive power of 2 > 0  */\r
+            int        loop_mode ;    /* see SF_LOOP enum             */\r
+\r
+            int        num_beats ;    /* this is NOT the amount of quarter notes !!!*/\r
+                                      /* a full bar of 4/4 is 4 beats */\r
+                                      /* a full bar of 7/8 is 7 beats */\r
+\r
+            float    bpm ;            /* suggestion, as it can be calculated using other fields:*/\r
+                                      /* file's lenght, file's sampleRate and our time_sig_den*/\r
+                                      /* -> bpms are always the amount of _quarter notes_ per minute */\r
+\r
+            int    root_key ;         /* MIDI note, or -1 for None */\r
+            int future [6] ;\r
+        } SF_LOOP_INFO ;\r
+</PRE>\r
+<P>\r
+Example:\r
+</P>\r
+<PRE>\r
+         SF_LOOP_INFO loop;\r
+         sf_command (sndfile, SFC_GET_LOOP_INFO, &amp;loop, sizeof (loop)) ;\r
+</PRE>\r
+<DL>\r
+<DT>Return value:</DT>\r
+       <DD>SF_TRUE if the file header contains loop information for the file.\r
+    SF_FALSE otherwise.\r
+</DL>\r
+\r
+<!-- ========================================================================= -->\r
+\r
+\r
+<A NAME="SFC_GET_INSTRUMENT"></A>\r
+<H2><BR><B>SFC_GET_INSTRUMENT</B></H2>\r
+<P>\r
+Retrieve instrument information from file including MIDI base note,\r
+keyboard mapping and looping informations(start/stop and mode).\r
+</P>\r
+<p>\r
+Parameters:\r
+</p>\r
+<PRE>\r
+         sndfile  : A valid SNDFILE* pointer\r
+         cmd      : SFC_GET_INSTRUMENT\r
+         data     : a pointer to an SF_INSTRUMENT struct\r
+         datasize : sizeof (SF_INSTRUMENT)\r
+</PRE>\r
+\r
+<P>\r
+The SF_INSTRUMENT struct is defined in &lt;sndfile.h&gt; as:\r
+</P>\r
+<PRE>\r
+        enum\r
+        {    /*\r
+            **    The loop mode field in SF_INSTRUMENT will be one of the following.\r
+            */\r
+            SF_LOOP_NONE = 800,\r
+            SF_LOOP_FORWARD,\r
+            SF_LOOP_BACKWARD,\r
+            SF_LOOP_ALTERNATING\r
+        } ;\r
+\r
+        typedef struct\r
+        {   int gain ;\r
+            char basenote, detune ;\r
+            char velocity_lo, velocity_hi ;\r
+            char key_lo, key_hi ;\r
+            int loop_count ;\r
+\r
+            struct\r
+            {   int mode ;\r
+                unsigned int start ;\r
+                unsigned int end ;\r
+                unsigned int count ;\r
+            } loops [16] ; /* make variable in a sensible way */\r
+        } SF_INSTRUMENT ;\r
+</PRE>\r
+\r
+<P>\r
+Example:\r
+</P>\r
+<PRE>\r
+         SF_INSTRUMENT inst ;\r
+         sf_command (sndfile, SFC_GET_INSTRUMENT, &amp;inst, sizeof (inst)) ;\r
+</PRE>\r
+<DL>\r
+<DT>Return value:</DT>\r
+       <dd>SF_TRUE if the file header contains instrument information for the\r
+    file. SF_FALSE otherwise.\r
+</DL>\r
+\r
+<!-- ========================================================================= -->\r
+\r
+\r
+<A NAME="SFC_SET_INSTRUMENT"></A>\r
+<H2><BR><B>SFC_SET_INSTRUMENT</B></H2>\r
+<P>\r
+Set the instrument information for the file.\r
+</P>\r
+<p>\r
+Parameters:\r
+</p>\r
+<PRE>\r
+         sndfile  : A valid SNDFILE* pointer\r
+         cmd      : SFC_GET_INSTRUMENT\r
+         data     : a pointer to an SF_INSTRUMENT struct\r
+         datasize : sizeof (SF_INSTRUMENT)\r
+</PRE>\r
+<P>\r
+Example:\r
+</P>\r
+<PRE>\r
+         SF_INSTRUMENT inst ;\r
+         sf_command (sndfile, SFC_SET_INSTRUMENT, &amp;inst, sizeof (inst)) ;\r
+</PRE>\r
+<DL>\r
+<DT>Return value:</DT>\r
+       <dd>SF_TRUE if the file header contains instrument information for the\r
+    file. SF_FALSE otherwise.\r
+</DL>\r
+\r
+<!-- ========================================================================= -->\r
+\r
+\r
+<A NAME="SFC_SET_VBR_ENCODING_QUALITY"></A>\r
+<H2><BR><B>SFC_SET_VBR_ENCODING_QUALITY</B></H2>\r
+<P>\r
+Set the Variable Bite Rate encoding quality.\r
+Currenly only implemented fro Ogg/Vorbis files.\r
+</P>\r
+<p>\r
+Parameters:\r
+</p>\r
+<PRE>\r
+         sndfile  : A valid SNDFILE* pointer\r
+         cmd      : SFC_SET_VBR_ENCODING_QUALITY\r
+         data     : a pointer to double specifing VBR quality\r
+         datasize : sizeof (double)\r
+</PRE>\r
+<P>\r
+Example:\r
+</P>\r
+<PRE>\r
+         double quality = 0.5 ;\r
+         sf_command (sndfile, SFC_SET_VBR_ENCODING_QUALITY, &amp;quality, sizeof (double)) ;\r
+</PRE>\r
+<DL>\r
+<DT>Return value:</DT>\r
+       <dd>SF_TRUE if VBR encoding quality was set.\r
+    SF_FALSE otherwise.\r
+</DL>\r
+\r
+<!-- ========================================================================= -->\r
+\r
+\r
+<HR>\r
+<P>\r
+       The libsndfile home page is here :\r
+               <A HREF="http://www.mega-nerd.com/libsndfile/">\r
+                       http://www.mega-nerd.com/libsndfile/</A>.\r
+<BR>\r
+Version : 1.0.25\r
+</P>\r
+\r
+</BODY>\r
+</HTML>\r
diff --git a/fdmdv2/libsndfile/doc/dither.html b/fdmdv2/libsndfile/doc/dither.html
new file mode 100644 (file)
index 0000000..486a33f
--- /dev/null
@@ -0,0 +1,1017 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">\r
+<HTML>\r
+\r
+<HEAD>\r
+       <TITLE>\r
+       libsndfile : the sf_command function.\r
+       </TITLE>\r
+       <META NAME="Author"      CONTENT="Erik de Castro Lopo (erikd AT mega-nerd DOT com)">\r
+       <!-- Another version at the bottom of the page.  -->\r
+       <META NAME="Description" CONTENT="The libsndfile API.">\r
+       <META NAME="Keywords"    CONTENT="WAV AIFF AU libsndfile sound audio dsp Linux">\r
+       <LINK REL="stylesheet" HREF="libsndfile.css" TYPE="text/css" MEDIA="all">\r
+       <LINK REL="stylesheet" HREF="print.css" TYPE="text/css" MEDIA="print">\r
+</HEAD>\r
+\r
+<BODY>\r
+\r
+<H1><B>sf_command</B></H1>\r
+<PRE>\r
+\r
+        int    sf_command (SNDFILE *sndfile, int cmd, void *data, int datasize) ;\r
+</PRE>\r
+<P>\r
+       This function allows the caller to retrieve information from or change aspects of the \r
+       library behaviour. \r
+       Examples include retrieving a string containing the library version or changing the \r
+       scaling applied to floating point sample data during read and write.\r
+       Most of these operations are performed on a per-file basis.\r
+</P>\r
+<P>\r
+       The cmd parameter is a integer identifier which is defined in &lt;sndfile.h&gt;.\r
+       All of the valid command identifiers have names begining with "SFC_".\r
+       Data is passed to and returned from the library by use of a void pointer. \r
+       The library will not read or write more than datasize bytes from the void pointer. \r
+       For some calls no data is required in which case data should be NULL and datasize \r
+       may be used for some other purpose.\r
+</P>\r
+<P>\r
+       The available commands are as follows:\r
+</P>\r
+\r
+<CENTER>\r
+<TABLE BORDER="0" WIDTH="90%" CELLPADDING="4">\r
+<TR>\r
+       <TD><A HREF="#SFC_GET_LIB_VERSION">SFC_GET_LIB_VERSION</A></TD>\r
+       <TD>Retrieve the version of the library.</TD>\r
+</TR>\r
+<TR>\r
+       <TD><A HREF="#SFC_GET_LOG_INFO">SFC_GET_LOG_INFO</A></TD>\r
+       <TD>Retrieve the internal per-file operation log.</TD>\r
+</TR>\r
+<TR>\r
+       <TD><A HREF="#SFC_CALC_SIGNAL_MAX">SFC_CALC_SIGNAL_MAX</A></TD>\r
+       <TD>Retrieve the measured maximum signal value.</TD>\r
+</TR>\r
+<TR>\r
+       <TD><A HREF="#SFC_CALC_NORM_SIGNAL_MAX">SFC_CALC_NORM_SIGNAL_MAX</A></TD>\r
+       <TD>Retrieve the measured normalised maximum signal value.</TD>\r
+</TR>\r
+<TR>\r
+       <TD><A HREF="#SFC_CALC_MAX_ALL_CHANNELS">SFC_CALC_MAX_ALL_CHANNELS</A></TD>\r
+       <TD>Calculate peaks for all channels.</TD>\r
+</TR>\r
+<TR>\r
+       <TD><A HREF="#SFC_CALC_NORM_MAX_ALL_CHANNELS">SFC_CALC_NORM_MAX_ALL_CHANNELS</A></TD>\r
+       <TD>Calculate normalised peaks for all channels.</TD>\r
+</TR>\r
+\r
+<TR>\r
+       <TD><A HREF="#SFC_SET_NORM_FLOAT">SFC_SET_NORM_FLOAT</A></TD>\r
+       <TD>Modify the normalisation behaviour of the floating point reading and writing functions.</TD>\r
+</TR>\r
+<TR>   \r
+       <TD><A HREF="#SFC_SET_NORM_DOUBLE">SFC_SET_NORM_DOUBLE</A></TD>\r
+       <TD>Modify the normalisation behaviour of the double precision floating point reading and writing functions.</TD>\r
+</TR>\r
+<TR>\r
+       <TD><A HREF="#SFC_GET_NORM_FLOAT">SFC_GET_NORM_FLOAT</A></TD>\r
+       <TD>Retrieve the current normalisation behaviour of the floating point reading and writing functions.</TD>\r
+</TR>\r
+<TR>   \r
+       <TD><A HREF="#SFC_GET_NORM_DOUBLE">SFC_GET_NORM_DOUBLE</A></TD>\r
+       <TD>Retrieve the current normalisation behaviour of the double precision floating point reading and writing functions.</TD>\r
+</TR>\r
+<TR>\r
+       <TD><A HREF="#SFC_GET_SIMPLE_FORMAT_COUNT">SFC_GET_SIMPLE_FORMAT_COUNT</A></TD>\r
+       <TD>Retrieve the number of simple formats supported by libsndfile.</TD>\r
+</TR>\r
+<TR>\r
+       <TD><A HREF="#SFC_GET_SIMPLE_FORMAT">SFC_GET_SIMPLE_FORMAT</A></TD>\r
+       <TD>Retrieve information about a simple format.</TD>\r
+</TR>\r
+\r
+<TR>\r
+       <TD><A HREF="#SFC_GET_FORMAT_INFO">SFC_GET_FORMAT_INFO</A></TD>\r
+       <TD>Retrieve information about a major or subtype format.</TD>\r
+</TR>\r
+\r
+<TR>\r
+       <TD><A HREF="#SFC_GET_FORMAT_MAJOR_COUNT">SFC_GET_FORMAT_MAJOR_COUNT</A></TD>\r
+       <TD>Retrieve the number of major formats.</TD>\r
+</TR>\r
+<TR>\r
+       <TD><A HREF="#SFC_GET_FORMAT_MAJOR">SFC_GET_FORMAT_MAJOR</A></TD>\r
+       <TD>Retrieve information about a major format type.</TD>\r
+</TR>\r
+<TR>\r
+       <TD><A HREF="#SFC_GET_FORMAT_SUBTYPE_COUNT">SFC_GET_FORMAT_SUBTYPE_COUNT</A></TD>\r
+       <TD>Retrieve the number of subformats.</TD>\r
+</TR>\r
+<TR>\r
+       <TD><A HREF="#SFC_GET_FORMAT_SUBTYPE">SFC_GET_FORMAT_SUBTYPE</A></TD>\r
+       <TD>Retrieve information about a subformat.</TD>\r
+</TR>\r
+\r
+<TR>\r
+       <TD><A HREF="#SFC_SET_ADD_PEAK_CHUNK">SFC_SET_ADD_PEAK_CHUNK</A></TD>\r
+       <TD>Switch the code for adding the PEAK chunk to WAV and AIFF files on or off.</TD>\r
+</TR>\r
+\r
+<TR>\r
+       <TD><A HREF="#SFC_UPDATE_HEADER_NOW">SFC_UPDATE_HEADER_NOW</A></TD>\r
+       <TD>Used when a file is open for write, this command will update the file\r
+               header to reflect the data written so far.</TD>\r
+</TR>\r
+<TR>\r
+       <TD><A HREF="#SFC_SET_UPDATE_HEADER_AUTO">SFC_SET_UPDATE_HEADER_AUTO</A></TD>\r
+       <TD>Used when a file is open for write, this command will cause the file header\r
+               to be updated after each write to the file.</TD>\r
+</TR>\r
+\r
+<TR>\r
+       <TD><A HREF="#SFC_FILE_TRUNCATE">SFC_FILE_TRUNCATE</A></TD>\r
+       <TD>Truncate a file open for write or for read/write.</TD>\r
+</TR>\r
+\r
+<TR>\r
+       <TD><A HREF="#SFC_SET_RAW_START_OFFSET">SFC_SET_RAW_START_OFFSET</A></TD>\r
+       <TD>Change the data start offset for files opened up as SF_FORMAT_RAW.</TD>\r
+</TR>\r
+\r
+\r
+\r
+<!--\r
+<TR>\r
+       <TD><A HREF="#add-dither">add dither</A></TD>\r
+       <TD>Add dither to output on write.</TD>\r
+</TR>\r
+-->\r
+</TABLE>       \r
+</CENTER>\r
+\r
+<BR><BR>\r
+\r
+<HR>\r
+\r
+<!-- ========================================================================= -->\r
+<A NAME="SFC_GET_LIB_VERSION"></A>\r
+<H2><BR><B>SFC_GET_LIB_VERSION</B></H2>\r
+<P>\r
+Retrieve the version of the library as a string.\r
+</P>\r
+<P>\r
+Parameters:\r
+<PRE>\r
+        sndfile  : Not used\r
+        cmd      : SFC_GET_LIB_VERSION\r
+        data     : A pointer to a char buffer\r
+        datasize : The size of the the buffer\r
+</PRE>\r
+<P>\r
+Example:\r
+</P>\r
+<PRE>\r
+        char  buffer [128] ;\r
+        sf_command (NULL, SFC_GET_LIB_VERSION, buffer, sizeof (buffer)) ;\r
+</PRE>\r
+\r
+<DL>\r
+<DT>Return value:</DT>\r
+       <DD><DD>This call will return the length of the retrieved version string.\r
+</DL>\r
+<DL>\r
+<DT>Notes:</DT>\r
+<DD>\r
+The string returned in the buffer passed to this function will not overflow\r
+the buffer and will always be null terminated .\r
+</DL>\r
+\r
+<!-- ========================================================================= -->\r
+<A NAME="SFC_GET_LOG_INFO"></A>\r
+<H2><BR><B>SFC_GET_LOG_INFO</B></H2>\r
+<P>\r
+Retrieve the log buffer generated when opening a file as a string. This log\r
+buffer can often contain a good reason for why libsndfile failed to open a\r
+particular file.\r
+</P>\r
+<P>\r
+Parameters:\r
+<PRE>\r
+        sndfile  : A valid SNDFILE* pointer\r
+        cmd      : SFC_GET_LOG_INFO\r
+        data     : A pointer to a char buffer\r
+        datasize : The size of the the buffer\r
+</PRE>\r
+<P>\r
+Example:\r
+</P>\r
+<PRE>\r
+        char  buffer [2048] ;\r
+        sf_command (sndfile, SFC_GET_LOG_INFO, buffer, sizeof (buffer)) ;\r
+</PRE>\r
+\r
+<DL>\r
+<DT>Return value:</DT>\r
+       <DD><DD>This call will return the length of the retrieved version string.\r
+</DL>\r
+<DL>\r
+<DT>Notes:</DT>\r
+<DD>\r
+The string returned in the buffer passed to this function will not overflow\r
+the buffer and will always be null terminated .\r
+</DL>\r
+\r
+<!-- ========================================================================= -->\r
+<A NAME="SFC_CALC_SIGNAL_MAX"></A>\r
+<H2><BR><B>SFC_CALC_SIGNAL_MAX</B></H2>\r
+<P>\r
+Retrieve the measured maximum signal value. This involves reading through\r
+the whole file which can be slow on large files.\r
+</P>\r
+<P>\r
+Parameters:\r
+<PRE>\r
+        sndfile  : A valid SNDFILE* pointer\r
+        cmd      : SFC_CALC_SIGNAL_MAX\r
+        data     : A pointer to a double\r
+        datasize : sizeof (double)\r
+</PRE>\r
+<P>\r
+Example:\r
+</P>\r
+<PRE>\r
+        double   max_val ;\r
+        sf_command (sndfile, SFC_CALC_SIGNAL_MAX, &amp;max_val, sizeof (max_val)) ;\r
+</PRE>\r
+\r
+<DL>\r
+<DT>Return value:</DT>\r
+       <DD><DD>Zero on success, non-zero otherwise.\r
+</DL>\r
+\r
+<!-- ========================================================================= -->\r
+<A NAME="SFC_CALC_NORM_SIGNAL_MAX"></A>\r
+<H2><BR><B>SFC_CALC_NORM_SIGNAL_MAX</B></H2>\r
+<P>\r
+Retrieve the measured normailised maximum signal value. This involves reading \r
+through the whole file which can be slow on large files.\r
+</P>\r
+<P>\r
+Parameters:\r
+<PRE>\r
+        sndfile  : A valid SNDFILE* pointer\r
+        cmd      : SFC_CALC_NORM_SIGNAL_MAX\r
+        data     : A pointer to a double\r
+        datasize : sizeof (double)\r
+</PRE>\r
+<P>\r
+Example:\r
+</P>\r
+<PRE>\r
+        double   max_val ;\r
+        sf_command (sndfile, SFC_CALC_NORM_SIGNAL_MAX, &amp;max_val, sizeof (max_val)) ;\r
+</PRE>\r
+\r
+<DL>\r
+<DT>Return value:</DT>\r
+       <DD><DD>Zero on success, non-zero otherwise.\r
+</DL>\r
+\r
+<!-- ========================================================================= -->\r
+<A NAME="SFC_CALC_MAX_ALL_CHANNELS"></A>\r
+<H2><BR><B>SFC_CALC_MAX_ALL_CHANNELS</B></H2>\r
+<P>\r
+Calculate peaks for all channels. This involves reading through\r
+the whole file which can be slow on large files.\r
+</P>\r
+<P>\r
+Parameters:\r
+<PRE>\r
+        sndfile  : A valid SNDFILE* pointer\r
+        cmd      : SFC_CALC_MAX_ALL_CHANNELS\r
+        data     : A pointer to a double\r
+        datasize : sizeof (double) * number_of_channels\r
+</PRE>\r
+<P>\r
+Example:\r
+</P>\r
+<PRE>\r
+        double   peaks [number_of_channels] ;\r
+        sf_command (sndfile, SFC_CALC_MAX_ALL_CHANNELS, peaks, sizeof (peaks)) ;\r
+</PRE>\r
+<DL>\r
+<DT>Return value:</DT>\r
+       <DD>Zero if peaks have been calculated successfully and non-zero otherwise.\r
+</DL>\r
+\r
+\r
+<!-- ========================================================================= -->\r
+<A NAME="SFC_CALC_NORM_MAX_ALL_CHANNELS"></A>\r
+<H2><BR><B>SFC_CALC_NORM_MAX_ALL_CHANNELS</B></H2>\r
+<P>\r
+Calculate normalised peaks for all channels. This involves reading through\r
+the whole file which can be slow on large files.\r
+</P>\r
+<P>\r
+Parameters:\r
+<PRE>\r
+        sndfile  : A valid SNDFILE* pointer\r
+        cmd      : SFC_CALC_NORM_MAX_ALL_CHANNELS\r
+        data     : A pointer to a double\r
+        datasize : sizeof (double) * number_of_channels\r
+</PRE>\r
+<P>\r
+Example:\r
+</P>\r
+<PRE>\r
+        double   peaks [number_of_channels] ;\r
+        sf_command (sndfile, SFC_CALC_NORM_MAX_ALL_CHANNELS, peaks, sizeof (peaks)) ;\r
+</PRE>\r
+<DL>\r
+<DT>Return value:</DT>\r
+       <DD>Zero if peaks have been calculated successfully and non-zero otherwise.\r
+</DL>\r
+\r
+\r
+\r
+\r
+\r
+<!-- ========================================================================= -->\r
+<!--\r
+<A NAME="read-text"></A>\r
+<H2><BR><B>Read text</B></H2>\r
+<P>\r
+Many sound file formats contain allow the inclusion of a text string describing the nature\r
+of the file. If a file contains such a string, this functions will return it to the caller.\r
+</P>\r
+<P>\r
+It should be noted that the way the string is added to the file is file format dependant\r
+but that any string added with <A HREF="#write-text">write text</A> will be returned by \r
+<A HREF="#read-text">read text</A>.\r
+</P>\r
+<P>\r
+<P>\r
+Parameters:\r
+</P>\r
+<PRE>\r
+        sndfile  : A valid SNDFILE* pointer\r
+        cmd      : The text string "read text".\r
+        data     : A pointer to a char buffer.\r
+        datasize : The size of the the buffer.\r
+</PRE>\r
+<P>\r
+Example:\r
+</P>\r
+<PRE>\r
+       char  buffer [128] ;\r
+        sf_command (sndfile, "read text", buffer, sizeof (buffer)) ;\r
+</PRE>\r
+<DL>\r
+<DT>Return value:</DT>\r
+<DD>If a text string is found, this call will return the length of the retrieved text \r
+       string.\r
+       <DD>If no text string is found, zero will be returned and the first element in the \r
+       buffer will be set to the null character.\r
+<DT>Notes:</DT>\r
+<DD>The string returned in the buffer passed to this function will not overflow\r
+       the buffer and will be correctly null terminated .\r
+</DL>\r
+\r
+<A NAME="write-text"></A>\r
+<H2><BR><B>Write text</B></H2>\r
+<P>\r
+Add a text string to a file. The text string added can be retrieved when the file is\r
+read using <A HREF="#read-text">read text</A>. \r
+</P>\r
+<P>\r
+Parameters:\r
+</P>\r
+<PRE>\r
+        sndfile  : A valid SNDFILE* pointer\r
+        cmd      : The text string "write text".\r
+        data     : A pointer to the string to be added.\r
+        datasize : Not used.\r
+</PRE>\r
+<P>\r
+Example:\r
+</P>\r
+<PRE>\r
+       char  text = "The sound of one hand clapping." ;\r
+        sf_command (sndfile, "write text", text, strlen (text)) ;\r
+</PRE>\r
+<DL>\r
+<DT>Return value: </DT>\r
+       <DD>If the current file format allows the addition of text strings, the string will \r
+               be added and the length of the string will be returned. \r
+       <DD>If the file format does not allow the addition of text strings zero will be returned.\r
+       <DD>If this function is called after the file is openned but before \r
+</DL>\r
+-->\r
+\r
+\r
+<!-- ========================================================================= -->\r
+<A NAME="SFC_SET_NORM_FLOAT"></A>\r
+<H2><BR><B>SFC_SET_NORM_FLOAT</B></H2>\r
+<P>\r
+This command only affects data read from or written to using the floating point functions:\r
+</P>\r
+<PRE>\r
+       size_t    <A HREF="api.html#read">sf_read_float</A>    (SNDFILE *sndfile, float *ptr, size_t items) ;\r
+       size_t    <A HREF="api.html#readf">sf_readf_float</A>   (SNDFILE *sndfile, float *ptr, size_t frames) ;\r
+\r
+       size_t    <A HREF="api.html#write">sf_write_float</A>   (SNDFILE *sndfile, float *ptr, size_t items) ;\r
+       size_t    <A HREF="api.html#writef">sf_writef_float</A>  (SNDFILE *sndfile, float *ptr, size_t frames) ;\r
+</PRE>\r
+<P>\r
+Parameters:\r
+</P>\r
+<PRE>\r
+        sndfile  : A valid SNDFILE* pointer\r
+        cmd      : SFC_SET_NORM_FLOAT\r
+        data     : NULL\r
+        datasize : SF_TRUE or SF_FALSE\r
+</PRE>\r
+<P>\r
+For read operations setting normalisation to SF_TRUE means that the data from all \r
+subsequent reads will be be normalised to the range [-1.0, 1.0].\r
+</P>\r
+<P>\r
+For write operations, setting normalisation to SF_TRUE means than all data supplied\r
+to the float write functions should be in the range [-1.0, 1.0] and will be scaled\r
+for the file format as necessary.\r
+</P>\r
+<P>\r
+For both cases, setting normalisation to SF_FALSE means that no scaling will take place.\r
+</P>\r
+<P>\r
+Example:\r
+</P>\r
+<PRE>\r
+        sf_command (sndfile, SFC_SET_NORM_FLOAT, NULL, SF_TRUE) ;\r
+\r
+        sf_command (sndfile, SFC_SET_NORM_FLOAT, NULL, SF_FALSE) ;\r
+</PRE>\r
+<DL>\r
+<DT>Return value: </DT>\r
+       <DD>Returns 1 on success or 0 for failure.\r
+</DL>\r
+\r
+<!-- ========================================================================= -->\r
+<A NAME="SFC_SET_NORM_DOUBLE"></A>\r
+<H2><BR><B>SFC_SET_NORM_DOUBLE</B></H2>\r
+<P>\r
+This command only affects data read from or written to using the double precision \r
+floating point functions:\r
+</P>\r
+<PRE>\r
+       size_t    <A HREF="api.html#read">sf_read_double</A>    (SNDFILE *sndfile, double *ptr, size_t items) ;\r
+       size_t    <A HREF="api.html#readf">sf_readf_double</A>   (SNDFILE *sndfile, double *ptr, size_t frames) ;\r
+\r
+       size_t    <A HREF="api.html#write">sf_write_double</A>   (SNDFILE *sndfile, double *ptr, size_t items) ;\r
+       size_t    <A HREF="api.html#writef">sf_writef_double</A>  (SNDFILE *sndfile, double *ptr, size_t frames) ;\r
+</PRE>\r
+<P>\r
+Parameters:\r
+</P>\r
+<PRE>\r
+        sndfile  : A valid SNDFILE* pointer\r
+        cmd      : SFC_SET_NORM_DOUBLE\r
+        data     : NULL\r
+        datasize : SF_TRUE or SF_FALSE\r
+</PRE>\r
+<P>\r
+For read operations setting normalisation to SF_TRUE means that the data \r
+from all subsequent reads will be be normalised to the range [-1.0, 1.0].\r
+</P>\r
+<P>\r
+For write operations, setting normalisation to SF_TRUE means than all data supplied\r
+to the double write functions should be in the range [-1.0, 1.0] and will be scaled\r
+for the file format as necessary.\r
+</P>\r
+<P>\r
+For both cases, setting normalisation to SF_FALSE means that no scaling will take place.\r
+</P>\r
+<P>\r
+Example:\r
+</P>\r
+<PRE>\r
+        sf_command (sndfile, SFC_SET_NORM_DOUBLE, NULL, SF_TRUE) ;\r
+\r
+        sf_command (sndfile, SFC_SET_NORM_DOUBLE, NULL, SF_FALSE) ;\r
+</PRE>\r
+<DL>\r
+<DT>Return value: </DT>\r
+       <DD>Returns 1 on success or 0 for failure.\r
+</DL>\r
+\r
+<!-- ========================================================================= -->\r
+<A NAME="SFC_GET_NORM_FLOAT"></A>\r
+<H2><BR><B>SFC_GET_NORM_FLOAT</B></H2>\r
+<P>\r
+Retrieve the current float normalisation mode.\r
+</P>\r
+<P>\r
+Parameters:\r
+</P>\r
+<PRE>\r
+        sndfile  : A valid SNDFILE* pointer\r
+        cmd      : SFC_GET_NORM_FLOAT\r
+        data     : NULL\r
+        datasize : anything\r
+</PRE>\r
+<P>\r
+Example:\r
+</P>\r
+<PRE>\r
+        normalisation = sf_command (sndfile, SFC_GET_NORM_FLOAT, NULL, 0) ;\r
+</PRE>\r
+<DL>\r
+<DT>Return value: </DT>\r
+       <DD>Returns TRUE if normaisation is on and FALSE otherwise.\r
+</DL>\r
+\r
+<!-- ========================================================================= -->\r
+<A NAME="SFC_GET_NORM_DOUBLE"></A>\r
+<H2><BR><B>SFC_GET_NORM_DOUBLE</B></H2>\r
+<P>\r
+Retrieve the current float normalisation mode.\r
+</P>\r
+<P>\r
+Parameters:\r
+</P>\r
+<PRE>\r
+        sndfile  : A valid SNDFILE* pointer\r
+        cmd      : SFC_GET_NORM_DOUBLE\r
+        data     : NULL\r
+        datasize : anything\r
+</PRE>\r
+<P>\r
+Example:\r
+</P>\r
+<PRE>\r
+        normalisation = sf_command (sndfile, SFC_GET_NORM_DOUBLE, NULL, 0) ;\r
+</PRE>\r
+<DL>\r
+<DT>Return value: </DT>\r
+       <DD>Returns TRUE if normalisation is on and FALSE otherwise.\r
+</DL>\r
+\r
+<!-- ========================================================================= -->\r
+<A NAME="SFC_GET_SIMPLE_FORMAT_COUNT"></A>\r
+<H2><BR><B>SFC_GET_SIMPLE_FORMAT_COUNT</B></H2>\r
+<P>\r
+Retrieve the number of simple formats supported by libsndfile.\r
+</P>\r
+<P>\r
+Parameters:\r
+</P>\r
+<PRE>\r
+        sndfile  : Not used.\r
+        cmd      : SFC_GET_SIMPLE_FORMAT_COUNT\r
+        data     : a pointer to an int\r
+        datasize : sizeof (int)\r
+</PRE>\r
+<P>\r
+Example:\r
+</P>\r
+<PRE>\r
+        int  count ;\r
+        sf_command (sndfile, SFC_GET_SIMPLE_FORMAT_COUNT, &amp;count, sizeof (int)) ;\r
+</PRE>\r
+<DL>\r
+<DT>Return value: </DT>\r
+       <DD>0\r
+</DL>\r
+\r
+<!-- ========================================================================= -->\r
+<A NAME="SFC_GET_SIMPLE_FORMAT"></A>\r
+<H2><BR><B>SFC_GET_SIMPLE_FORMAT</B></H2>\r
+<P>\r
+Retrieve information about a simple format.\r
+</P>\r
+<P>\r
+Parameters:\r
+</P>\r
+<PRE>\r
+        sndfile  : Not used.\r
+        cmd      : SFC_GET_SIMPLE_FORMAT\r
+        data     : a pointer to an  SF_FORMAT_INFO struct\r
+        datasize : sizeof (SF_FORMAT_INFO)\r
+</PRE>\r
+<P>\r
+The SF_FORMAT_INFO struct is defined in &lt;sndfile.h&gt; as:\r
+</P>\r
+<PRE>\r
+        typedef struct\r
+        {   int         format ;\r
+            const char  *name ;\r
+            const char  *extension ;\r
+        } SF_FORMAT_INFO ;\r
+</PRE>\r
+<P>\r
+When sf_command() is called with SF_GET_SIMPLE_FORMAT, the value of the format \r
+field should be the format number (ie 0 <= format <= count value obtained using\r
+SF_GET_SIMPLE_FORMAT_COUNT).\r
+</P>\r
+<P>\r
+Example:\r
+</P>\r
+<PRE>\r
+        SF_FORMAT_INFO format_info ;\r
+        int             k, count ;\r
+\r
+        sf_command (sndfile, SFC_GET_SIMPLE_FORMAT_COUNT, &amp;count, sizeof (int)) ;\r
+\r
+        for (k = 0 ; k < count ; k++)\r
+        {   format_info.format = k ;\r
+            sf_command (sndfile, SFC_GET_SIMPLE_FORMAT, &amp;format_info, sizeof (format_info)) ;\r
+            printf ("%08x  %s %s\n", format_info.format, format_info.name, format_info.extension) ;\r
+            } ;\r
+</PRE>\r
+<DL>\r
+<DT>Return value: </DT>\r
+       <DD>0 on success and non-zero otherwise.\r
+       <DD>The value of the format field of the SF_FORMAT_INFO struct will be an value which \r
+               can be placed in the format field of an SF_INFO struct when a file is to be opened \r
+               for write.\r
+       <DD>The name field will contain a char* pointer to the name of the string ie "WAV (Microsoft 16 bit PCM)".\r
+       <DD>The extention field will contain the most commonly used file extension for that file type.\r
+</DL>\r
+\r
+<!-- ========================================================================= -->\r
+<A NAME="SFC_GET_FORMAT_INFO"></A>\r
+<H2><BR><B>SFC_GET_FORMAT_INFO</B></H2>\r
+<P>\r
+Retrieve information about a major or subtype format.\r
+</P>\r
+<P>\r
+Parameters:\r
+</P>\r
+<PRE>\r
+        sndfile  : Not used.\r
+        cmd      : SFC_GET_FORMAT_INFO\r
+        data     : a pointer to an SF_FORMAT_INFO struct\r
+        datasize : sizeof (SF_FORMAT_INFO)\r
+</PRE>\r
+<P>\r
+The SF_FORMAT_INFO struct is defined in &lt;sndfile.h&gt; as:\r
+</P>\r
+<PRE>\r
+        typedef struct\r
+        {   int         format ;\r
+            const char  *name ;\r
+            const char  *extension ;\r
+        } SF_FORMAT_INFO ;\r
+</PRE>\r
+<P>\r
+When sf_command() is called with SF_GET_FORMAT_INFO, the format field is \r
+examined and if (format & SF_FORMAT_TYPEMASK) is a valid format then the struct\r
+is filled in with information about the given major type.\r
+If (format & SF_FORMAT_TYPEMASK) is FALSE and (format & SF_FORMAT_SUBMASK) is a\r
+valid subtype format then the struct is filled in with information about the given \r
+subtype.\r
+</P>\r
+<P>\r
+Example:\r
+</P>\r
+<PRE>\r
+        SF_FORMAT_INFO format_info ;\r
+\r
+        format_info.format = SF_FORMAT_WAV ;\r
+        sf_command (sndfile, SFC_GET_FORMAT_INFO, &amp;format_info, sizeof (format_info)) ;\r
+        printf ("%08x  %s %s\n", format_info.format, format_info.name, format_info.extension) ;\r
+\r
+        format_info.format = SF_FORMAT_ULAW ;\r
+        sf_command (sndfile, SFC_GET_FORMAT_INFO, &amp;format_info, sizeof (format_info)) ;\r
+        printf ("%08x  %s\n", format_info.format, format_info.name) ;\r
+</PRE>\r
+<DL>\r
+<DT>Return value: </DT>\r
+       <DD>0 on success and non-zero otherwise.\r
+</DL>\r
+<!-- ========================================================================= -->\r
+<A NAME="SFC_GET_FORMAT_MAJOR_COUNT"></A>\r
+<H2><BR><B>SFC_GET_FORMAT_MAJOR_COUNT</B></H2>\r
+<P>\r
+Retrieve the number of major formats.\r
+</P>\r
+<P>\r
+Parameters:\r
+</P>\r
+<PRE>\r
+        sndfile  : Not used.\r
+        cmd      : SFC_GET_FORMAT_MAJOR_COUNT\r
+        data     : a pointer to an int\r
+        datasize : sizeof (int)\r
+</PRE>\r
+<P>\r
+Example:\r
+</P>\r
+<PRE>\r
+        int  count ;\r
+        sf_command (sndfile, SFC_GET_FORMAT_MAJOR_COUNT, &amp;count, sizeof (int)) ;\r
+</PRE>\r
+<DL>\r
+<DT>Return value: </DT>\r
+       <DD>0\r
+</DL>\r
+\r
+<!-- ========================================================================= -->\r
+<A NAME="SFC_GET_FORMAT_MAJOR"></A>\r
+<H2><BR><B>SFC_GET_FORMAT_MAJOR</B></H2>\r
+<P>\r
+Retrieve information about a major format type.\r
+</P>\r
+<P>\r
+Parameters:\r
+</P>\r
+<PRE>\r
+        sndfile  : Not used.\r
+        cmd      : SFC_GET_FORMAT_MAJOR\r
+        data     : a pointer to an  SF_FORMAT_INFO struct\r
+        datasize : sizeof (SF_FORMAT_INFO)\r
+</PRE>\r
+<P>\r
+Example:\r
+</P>\r
+<PRE>\r
+        SF_FORMAT_INFO format_info ;\r
+        int             k, count ;\r
+\r
+        sf_command (sndfile, SFC_GET_FORMAT_MAJOR_COUNT, &amp;count, sizeof (int)) ;\r
+\r
+        for (k = 0 ; k < count ; k++)\r
+        {   format_info.format = k ;\r
+            sf_command (sndfile, SFC_GET_FORMAT_MAJOR, &amp;format_info, sizeof (format_info)) ;\r
+            printf ("%08x  %s %s\n", format_info.format, format_info.name, format_info.extension) ;\r
+            } ;\r
+</PRE>\r
+<P>\r
+For a more comprehensive example, see the program list_formats.c in the examples/\r
+directory of the libsndfile source code distribution.\r
+</P>\r
+<DL>\r
+<DT>Return value: </DT>\r
+       <DD>0 on success and non-zero otherwise.\r
+       <DD>The value of the format field will one of the major format identifiers suc as SF_FORMAT_WAV\r
+               SF_FORMAT_AIFF.\r
+       <DD>The name field will contain a char* pointer to the name of the string ie "WAV (Microsoft)".\r
+       <DD>The extention field will contain the most commonly used file extension for that file type.\r
+</DL>\r
+\r
+<!-- ========================================================================= -->\r
+<A NAME="SFC_GET_FORMAT_SUBTYPE_COUNT"></A>\r
+<H2><BR><B>SFC_GET_FORMAT_SUBTYPE_COUNT</B></H2>\r
+<P>\r
+Retrieve the number of subformats.\r
+</P>\r
+<P>\r
+Parameters:\r
+</P>\r
+<PRE>\r
+        sndfile  : Not used.\r
+        cmd      : SFC_GET_FORMAT_SUBTYPE_COUNT\r
+        data     : a pointer to an int\r
+        datasize : sizeof (int)\r
+</PRE>\r
+<P>\r
+Example:\r
+</P>\r
+<PRE>\r
+        int   count ;\r
+        sf_command (sndfile, SFC_GET_FORMAT_SUBTYPE_COUNT, &amp;count, sizeof (int)) ;\r
+</PRE>\r
+<DL>\r
+<DT>Return value: </DT>\r
+       <DD>0\r
+</DL>\r
+\r
+<!-- ========================================================================= -->\r
+<A NAME="SFC_GET_FORMAT_SUBTYPE"></A>\r
+<H2><BR><B>SFC_GET_FORMAT_SUBTYPE</B></H2>\r
+<P>\r
+Retrieve information about a subformat.\r
+</P>\r
+<P>\r
+Parameters:\r
+</P>\r
+<PRE>\r
+        sndfile  : Not used.\r
+        cmd      : SFC_GET_FORMAT_SUBTYPE\r
+        data     : a pointer to an SF_FORMAT_INFO struct\r
+        datasize : sizeof (SF_FORMAT_INFO)\r
+</PRE>\r
+<P>\r
+Example:\r
+</P>\r
+<PRE>\r
+        SF_FORMAT_INFO format_info ;\r
+        int             k, count ;\r
+\r
+        sf_command (sndfile, SFC_GET_FORMAT_SUBTYPE_COUNT, &amp;count, sizeof (int)) ;\r
+\r
+        /* Retrieve all the subtypes supported by the WAV format. */\r
+        for (k = 0 ; k < count ; k++)\r
+        {   format_info.format = k ;\r
+            sf_command (sndfile, SFC_GET_FORMAT_SUBTYPE, &amp;format_info, sizeof (format_info)) ;\r
+            if (! sf_format_check (format.info | SF_FORMAT_WAV))\r
+               continue ;\r
+            printf ("%08x  %s\n", format_info.format, format_info.name) ;\r
+            } ;\r
+</PRE>\r
+<P>\r
+For a more comprehensive example, see the program list_formats.c in the examples/\r
+directory of the libsndfile source code distribution.\r
+</P>\r
+<DL>\r
+<DT>Return value: </DT>\r
+       <DD>0 on success and non-zero otherwise.\r
+       <DD>The value of the format field will one of the major format identifiers such as SF_FORMAT_WAV\r
+               SF_FORMAT_AIFF.\r
+       <DD>The name field will contain a char* pointer to the name of the string; for instance \r
+               "WAV (Microsoft)" or "AIFF (Apple/SGI)".\r
+       <DD>The extention field will be a NULL pointer.\r
+</DL>\r
+\r
+<!-- ========================================================================= -->\r
+<A NAME="SFC_SET_ADD_PEAK_CHUNK"></A>\r
+<H2><BR><B>SFC_SET_ADD_PEAK_CHUNK</B></H2>\r
+<P>\r
+By default, WAV and AIFF files which contain floating point data (subtype SF_FORMAT_FLOAT \r
+or SF_FORMAT_DOUBLE) have a PEAK chunk.\r
+By using this command, the addition of a PEAK chunk can be turned on or off.\r
+</P>\r
+<P>\r
+Note : This call must be made before any data is written to the file.\r
+</P>\r
+<P>\r
+Parameters:\r
+<PRE>\r
+        sndfile  : A valid SNDFILE* pointer\r
+        cmd      : SFC_SET_ADD_PEAK_CHUNK\r
+        data     : Not used (should be NULL)\r
+        datasize : TRUE or FALSE.\r
+</PRE>\r
+<P>\r
+Example:\r
+</P>\r
+<PRE>\r
+        /* Turn on the PEAK chunk. */\r
+        sf_command (sndfile, SFC_SET_ADD_PEAK_CHUNK, NULL, SF_TRUE) ;\r
+\r
+        /* Turn off the PEAK chunk. */\r
+        sf_command (sndfile, SFC_SET_ADD_PEAK_CHUNK, NULL, SF_FALSE) ;\r
+</PRE>\r
+<DL>\r
+<DT>Return value:</DT>\r
+<DD>Returns SF_TRUE if the peak chunk will be written after this call.\r
+<DD>Returns SF_FALSE if the peak chunk will not be written after this call.\r
+</DL>\r
+\r
+<!-- ========================================================================= -->\r
+<A NAME="SFC_UPDATE_HEADER_NOW"></A>\r
+<H2><BR><B>SFC_UPDATE_HEADER_NOW</B></H2>\r
+<P>\r
+The header of an audio file is normally written by libsndfile when the file is\r
+closed using <B>sf_close()</B>.\r
+</P>\r
+<P>\r
+There are however situations where large files are being generated and it would\r
+be nice to have valid data in the header before the file is complete.\r
+Using this command will update the file header to reflect the amount of data written \r
+to the file so far.\r
+Other programs opening the file for read (before any more data is written) will \r
+then read a valid sound file header.\r
+</P>\r
+<P>\r
+Parameters:\r
+<PRE>\r
+        sndfile  : A valid SNDFILE* pointer\r
+        cmd      : SFC_UPDATE_HEADER_NOW\r
+        data     : Not used (should be NULL)\r
+        datasize : Not used.\r
+</PRE>\r
+<P>\r
+Example:\r
+</P>\r
+<PRE>\r
+        /* Update the header now. */\r
+        sf_command (sndfile, SFC_UPDATE_HEADER_NOW, NULL, 0) ;\r
+</PRE>\r
+<DL>\r
+<DT>Return value:</DT>\r
+<DD>0\r
+</DL>\r
+\r
+<!-- ========================================================================= -->\r
+<A NAME="SFC_SET_UPDATE_HEADER_AUTO"></A>\r
+<H2><BR><B>SFC_SET_UPDATE_HEADER_AUTO</B></H2>\r
+<P>\r
+Similar to SFC_UPDATE_HEADER_NOW but updates the header at the end of every call\r
+to the <B>sf_write*</B> functions.\r
+</P>\r
+<P>\r
+Parameters:\r
+<PRE>\r
+        sndfile  : A valid SNDFILE* pointer\r
+        cmd      : SFC_UPDATE_HEADER_NOW\r
+        data     : Not used (should be NULL)\r
+        datasize : SF_TRUE or SF_FALSE\r
+</PRE>\r
+<P>\r
+Example:\r
+</P>\r
+<PRE>\r
+        /* Turn on auto header update. */\r
+        sf_command (sndfile, SFC_SET_UPDATE_HEADER_AUTO, NULL, SF_TRUE) ;\r
+\r
+        /* Turn off auto header update. */\r
+        sf_command (sndfile, SFC_SET_UPDATE_HEADER_AUTO, NULL, SF_FALSE) ;\r
+</PRE>\r
+<DL>\r
+<DT>Return value:</DT>\r
+<DD>TRUE if auto update header is now on; FALSE otherwise.\r
+</DL>\r
+\r
+<!-- ========================================================================= -->\r
+<A NAME="SFC_FILE_TRUNCATE"></A>\r
+<H2><BR><B>SFC_FILE_TRUNCATE</B></H2>\r
+<P>\r
+Truncate a file open for write or for read/write.\r
+</P>\r
+<P>\r
+Parameters:\r
+<PRE>\r
+        sndfile  : A valid SNDFILE* pointer\r
+        cmd      : SFC_FILE_TRUNCATE\r
+        data     : A pointer to an sf_count_t.\r
+        datasize : sizeof (sf_count_t)\r
+</PRE>\r
+\r
+<P>\r
+Truncate the file to the number of frames specified by the sf_count_t pointed\r
+to by data.\r
+After this command, both the read and the write pointer will be\r
+at the new end of the file.\r
+This command will fail (returning non-zero) if the requested truncate position \r
+is beyond the end of the file.\r
+</P>\r
+<P>\r
+Example:\r
+</P>\r
+<PRE>\r
+        /* Truncate the file to a length of 20 frames. */\r
+        sf_count_t  frames = 20 ;\r
+        sf_command (sndfile, SFC_FILE_TRUNCATE, &amp;frames, sizeof (frames)) ;\r
+</PRE>\r
+<DL>\r
+<DT>Return value:</DT>\r
+       <DD>Zero on sucess, non-zero otherwise.\r
+</DL>\r
+\r
+<!-- ========================================================================= -->\r
+<A NAME="SFC_SET_RAW_START_OFFSET"></A>\r
+<H2><BR><B>SFC_SET_RAW_START_OFFSET</B></H2>\r
+<P>\r
+Change the data start offset for files opened up as SF_FORMAT_RAW.\r
+</P>\r
+<P>\r
+Parameters:\r
+<PRE>\r
+        sndfile  : A valid SNDFILE* pointer\r
+        cmd      : SFC_SET_RAW_START_OFFSET\r
+        data     : A pointer to an sf_count_t.\r
+        datasize : sizeof (sf_count_t)\r
+</PRE>\r
+\r
+<P>\r
+For a file opened as format SF_FORMAT_RAW, set the data offset to the value\r
+given by data.\r
+</P>\r
+<P>\r
+Example:\r
+</P>\r
+<PRE>\r
+        /* Reset the data offset to 5 bytes from the start of the file. */\r
+        sf_count_t  offset = 5 ;\r
+        sf_command (sndfile, SFC_SET_RAW_START_OFFSET, &amp;offset, sizeof (offset)) ;\r
+</PRE>\r
+<DL>\r
+<DT>Return value:</DT>\r
+       <DD>Zero on sucess, non-zero otherwise.\r
+</DL>\r
+\r
+<!-- ========================================================================= -->\r
+\r
+<HR>\r
+<P>\r
+       The libsndfile home page is here : \r
+               <A HREF="http://www.mega-nerd.com/libsndfile/">\r
+                       http://www.mega-nerd.com/libsndfile/</A>.\r
+<BR>\r
+Version : 1.0.25\r
+</P>\r
+\r
+</BODY>\r
+</HTML>\r
diff --git a/fdmdv2/libsndfile/doc/embedded_files.html b/fdmdv2/libsndfile/doc/embedded_files.html
new file mode 100644 (file)
index 0000000..9070911
--- /dev/null
@@ -0,0 +1,47 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">\r
+<HTML>\r
+\r
+<HEAD>\r
+       <TITLE>\r
+       libsndfile : Embedded Sound Files.\r
+       </TITLE>\r
+       <META NAME="Author"      CONTENT="Erik de Castro Lopo (erikd AT mega-nerd DOT com)">\r
+       <META NAME="Description" CONTENT="The libsndfile API.">\r
+       <META NAME="Keywords"    CONTENT="WAV AIFF AU libsndfile sound audio dsp Linux">\r
+       <LINK REL="stylesheet" HREF="libsndfile.css" TYPE="text/css" MEDIA="all">\r
+       <LINK REL="stylesheet" HREF="print.css" TYPE="text/css" MEDIA="print">\r
+</HEAD>\r
+<!-- pepper -->\r
+<BODY>\r
+<!-- pepper -->\r
+<H1><B>Embedded Sound Files.</B></H1>\r
+\r
+<P>\r
+By using the open SNDFILE with a file descriptor function:\r
+</P>\r
+<!-- pepper -->\r
+<PRE>\r
+      SNDFILE*  sf_open_fd (int fd, int mode, SF_INFO *sfinfo, int close_desc) ;\r
+</PRE>\r
+<!-- pepper -->\r
+<P>\r
+it is possible to open sound files embedded within larger files.\r
+There are however a couple of caveats:\r
+<P>\r
+<!-- pepper -->\r
+<UL>\r
+       <LI> Read/Write mode (SFM_RDWR) is not supported.\r
+       <LI> Writing of embedded files is only supported at the end of the file.\r
+       <LI> Reading of embedded files is only supported at file offsets greater\r
+                       than zero.\r
+       <LI> Not all file formats are supported (currently only WAV, AIFF and AU).\r
+</UL>\r
+<!-- pepper -->\r
+<P>\r
+The test program <B>multi_file_test.c</B> in the <B>tests/</B> directory of the\r
+source code tarball shows how this functionality is used to read and write\r
+embedded files.\r
+</P>\r
+<!-- pepper -->\r
+</BODY>\r
+</HTML>\r
diff --git a/fdmdv2/libsndfile/doc/index.html b/fdmdv2/libsndfile/doc/index.html
new file mode 100644 (file)
index 0000000..25a86f5
--- /dev/null
@@ -0,0 +1,494 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">\r
+<HTML>\r
+\r
+<HEAD>\r
+       <TITLE>\r
+       libsndfile\r
+       </TITLE>\r
+       <META NAME="Author"      CONTENT="Erik de Castro Lopo (erikd AT mega-nerd DOT com)">\r
+    <META NAME="Version"     CONTENT="libsndfile-1.0.25">\r
+       <META NAME="Description" CONTENT="The libsndfile Home Page">\r
+       <META NAME="Keywords"    CONTENT="WAV AIFF AU SVX PAF NIST W64 libsndfile sound audio dsp Linux">\r
+       <META NAME="ROBOTS"      CONTENT="NOFOLLOW">\r
+       <LINK REL="stylesheet" HREF="libsndfile.css" TYPE="text/css" MEDIA="all">\r
+       <LINK REL="stylesheet" HREF="print.css" TYPE="text/css" MEDIA="print">\r
+</HEAD>\r
+\r
+<BODY>\r
+<!-- pepper -->\r
+<CENTER>\r
+       <IMG SRC="libsndfile.jpg" HEIGHT=98 WIDTH=367 ALT="libsndfile.jpg">\r
+</CENTER>\r
+<!-- pepper -->\r
+<CENTER>\r
+               <A HREF="#History">History</A> -+-\r
+               <A HREF="#Features">Features</A> -+-\r
+               <A HREF="#Similar">Similar or Related Projects</A> -+-\r
+               <A HREF="NEWS">News</A>\r
+               <br>\r
+               <A HREF="development.html">Development</A> -+-\r
+               <A HREF="api.html">Programming Interface</A> -+-\r
+               <A HREF="bugs.html">Bug Reporting</A> -+-\r
+               <A HREF="#Download">Download</A>\r
+               <br>\r
+               <A HREF="FAQ.html">FAQ</A> -+-\r
+               <A HREF="lists.html">Mailing Lists</A> -+-\r
+               <A HREF="ChangeLog">Change Log</A> -+-\r
+               <A HREF="#Licensing">Licensing Information</A> -+-\r
+               <A HREF="#SeeAlso">See Also</A>\r
+</CENTER>\r
+\r
+<br><br>\r
+<P>\r
+       Libsndfile is a C library for reading and writing files containing sampled sound\r
+       (such as MS Windows WAV and the Apple/SGI AIFF format) through one standard\r
+       library interface. It is released in source code format under the\r
+               <A HREF="http://www.gnu.org/copyleft/lesser.html">Gnu Lesser General Public License</A>.\r
+</P>\r
+<!-- pepper -->\r
+<P>\r
+       The library was written to compile and run on a Linux system but should compile\r
+       and run on just about any Unix (including MacOS X).\r
+       There are also pre-compiled binaries available for 32 and 64 bit windows.\r
+</P>\r
+<P>\r
+       It was designed to handle both little-endian (such as WAV) and big-endian\r
+       (such as AIFF) data, and to compile and run correctly on little-endian (such as Intel\r
+       and DEC/Compaq Alpha) processor systems as well as big-endian processor systems such\r
+       as Motorola 68k, Power PC, MIPS and Sparc.\r
+       Hopefully the design of the library will also make it easy to extend for reading and\r
+       writing new sound file formats.\r
+</P>\r
+<!-- pepper -->\r
+<P>\r
+    It has been compiled and tested (at one time or another) on the following systems:\r
+</P>\r
+<!-- pepper -->\r
+<UL>\r
+       <LI>Every platform supported by Debian GNU/Linux including x86_64-linux-gnu,\r
+               i486-linux-gnu, powerpc-linux-gnu, sparc-linux-gnu, alpha-linux-gnu,\r
+               mips-linux-gnu and armel-linux-gnu.</LI>\r
+       <LI>arm-linux-androideab (Android phones OS)</LI>\r
+       <LI>powerpc-apple-darwin7.0 (Mac OS X 10.3)</LI>\r
+       <LI>sparc-sun-solaris2.8 (using gcc)</LI>\r
+       <LI>mips-sgi-irix5.3 (using gcc)</LI>\r
+       <LI>QNX 6.0</LI>\r
+       <LI>i386-unknown-openbsd2.9</LI>\r
+</UL>\r
+<!-- pepper -->\r
+<P>\r
+       At the moment, each new release is being tested on i386 Linux, x86_64 Linux,\r
+       PowerPC Linux, Win32 and Win64.\r
+</P>\r
+<!-- pepper -->\r
+\r
+<A NAME="Capabilities"></A>\r
+<A NAME="Features"></A>\r
+<H1><B>Features</B></H1>\r
+<P>\r
+       libsndfile has the following main features :\r
+</P>\r
+       <UL>\r
+       <lI> Ability to read and write a large number of file formats.\r
+       <LI> A simple, elegant and easy to use Applications Programming Interface.\r
+       <LI> Usable on Unix, Win32, MacOS and others.\r
+       <LI> On the fly format conversion, including endian-ness swapping, type conversion\r
+                       and bitwidth scaling.\r
+       <LI> Optional normalisation when reading floating point data from files containing\r
+                       integer data.\r
+       <LI> Ability to open files in read/write mode.\r
+       <LI> The ability to write the file header without closing the file (only on files\r
+                       open for write or read/write).\r
+       <LI> Ability to query the library about all supported formats and retrieve text\r
+                       strings describing each format.\r
+       </UL>\r
+<P>\r
+       libsndfile has a comprehensive test suite so that each release is as bug free\r
+       as possible.\r
+       When new bugs are found, new tests are added to the test suite to ensure that\r
+       these bugs don't creep back into the code.\r
+       When new features are added, tests are added to the test suite to make sure that\r
+       these features continue to work correctly even when they are old features.\r
+ </P>\r
+<P>\r
+       The following table lists the file formats and encodings that libsndfile can read\r
+       and write.\r
+       The file formats are arranged across the top and encodings along the left\r
+       edge.\r
+</P>\r
+<br>\r
+\r
+<TABLE BORDER="1" cellpadding="2">\r
+       <TR><TD>&nbsp;</TD>\r
+       <TD ALIGN="center">Micro- soft<br>WAV</TD>\r
+       <TD ALIGN="center">SGI / Apple<br>AIFF / AIFC</TD>\r
+       <TD ALIGN="center">Sun / DEC /<br>NeXT<br>AU / SND</TD>\r
+       <TD ALIGN="center">Header- less<br>RAW</TD>\r
+       <TD ALIGN="center">Paris Audio<br>File<br>PAF</TD>\r
+       <TD ALIGN="center">Commo- dore<br>Amiga<br>IFF / SVX</TD>\r
+       <TD ALIGN="center">Sphere<br>Nist<br>WAV</TD>\r
+       <TD ALIGN="center">IRCAM<br>SF</TD>\r
+       <TD ALIGN="center">Creative<br>VOC</TD>\r
+       <TD ALIGN="center">Sound forge<br>W64</TD>\r
+       <TD ALIGN="center"><A HREF="octave.html">GNU Octave 2.0</A><br>MAT4</TD>\r
+       <TD ALIGN="center"><A HREF="octave.html">GNU Octave 2.1</A><br>MAT5</TD>\r
+       <TD ALIGN="center">Portable Voice Format<br>PVF</TD>\r
+       <TD ALIGN="center">Fasttracker 2<br>XI</TD>\r
+       <TD ALIGN="center">HMM Tool Kit<br>HTK</TD>\r
+       <TD ALIGN="center">Apple<br>CAF</TD>\r
+       <TD ALIGN="center">Sound<br>Designer II<br>SD2</TD>\r
+       <TD ALIGN="center">Free Lossless Audio Codec<br>FLAC</TD>\r
+       </TR>\r
+<TR><TD>Unsigned 8 bit PCM</TD>\r
+       <TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD>&nbsp;</TD><TD ALIGN="center">R/W</TD>\r
+       <TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD ALIGN="center">R/W</TD>\r
+       <TD ALIGN="center">R/W</TD><TD>&nbsp;</TD><TD ALIGN="center">R/W</TD><TD>&nbsp;</TD>\r
+       <TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>\r
+</TR>\r
+\r
+<TR><TD>Signed 8 bit PCM</TD>\r
+       <TD>&nbsp;</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD>\r
+       <TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD>&nbsp;</TD>\r
+       <TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD ALIGN="center">R/W</TD>\r
+       <TD>&nbsp;</TD><TD>&nbsp;</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD>\r
+</TR>\r
+\r
+<TR><TD>Signed 16 bit PCM</TD>\r
+       <TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD>\r
+       <TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD>\r
+       <TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD>\r
+       <TD ALIGN="center">R/W</TD><TD>&nbsp;</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD>\r
+       <TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD>\r
+</TR>\r
+\r
+<TR><TD>Signed 24 bit PCM</TD>\r
+       <TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD>\r
+       <TD ALIGN="center">R/W</TD><TD>&nbsp;</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD>\r
+       <TD>&nbsp;</TD><TD ALIGN="center">R/W</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>\r
+       <TD>&nbsp;</TD><TD>&nbsp;</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD>\r
+</TR>\r
+\r
+<TR><TD>Signed 32 bit PCM</TD>\r
+       <TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD>\r
+       <TD>&nbsp;</TD><TD>&nbsp;</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD>&nbsp;</TD>\r
+       <TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD>\r
+       <TD>&nbsp;</TD><TD>&nbsp;</TD><TD ALIGN="center">R/W</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>\r
+</TR>\r
+\r
+<TR><TD>32 bit float</TD>\r
+       <TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD>\r
+       <TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD ALIGN="center">R/W</TD><TD>&nbsp;</TD>\r
+       <TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD>&nbsp;</TD>\r
+       <TD>&nbsp;</TD><TD>&nbsp;</TD><TD ALIGN="center">R/W</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>\r
+</TR>\r
+\r
+<TR><TD>64 bit double</TD>\r
+       <TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD>\r
+       <TD ALIGN="center">R/W</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>\r
+       <TD>&nbsp;</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD>\r
+       <TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD ALIGN="center">R/W</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>\r
+</TR>\r
+\r
+<TR><TD>u-law encoding</TD>\r
+       <TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD>\r
+       <TD>&nbsp;</TD><TD>&nbsp;</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD>\r
+       <TD ALIGN="center">R/W</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>\r
+       <TD ALIGN="center">R/W</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>\r
+</TR>\r
+<TR><TD>A-law encoding</TD>\r
+       <TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD>\r
+       <TD>&nbsp;</TD><TD>&nbsp;</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD>\r
+       <TD ALIGN="center">R/W</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>\r
+       <TD ALIGN="center">R/W</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>\r
+</TR>\r
+\r
+<TR><TD>IMA ADPCM</TD>\r
+       <TD ALIGN="center">R/W</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>\r
+       <TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD ALIGN="center">R/W</TD>\r
+       <TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>\r
+       <TD>&nbsp;</TD><TD>&nbsp;</TD>\r
+</TR>\r
+\r
+<TR><TD>MS ADPCM</TD>\r
+       <TD ALIGN="center">R/W</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>\r
+       <TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD ALIGN="center">R/W</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>\r
+       <TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>\r
+</TR>\r
+\r
+<TR><TD>GSM 6.10</TD>\r
+       <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>\r
+       <TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD ALIGN="center">R/W</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>\r
+       <TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>\r
+</TR>\r
+\r
+<TR><TD>G721 ADPCM 32kbps</TD>\r
+       <TD ALIGN="center">R/W</TD><TD>&nbsp;</TD><TD ALIGN="center">R/W</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>\r
+       <TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>\r
+       <TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>\r
+</TR>\r
+\r
+<TR><TD>G723 ADPCM 24kbps</TD>\r
+       <TD>&nbsp;</TD><TD>&nbsp;</TD><TD ALIGN="center">R/W</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>\r
+       <TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>\r
+       <TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>\r
+</TR>\r
+\r
+<TR><TD>G723 ADPCM 40kbps</TD>\r
+       <TD>&nbsp;</TD><TD>&nbsp;</TD><TD ALIGN="center">R/W</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>\r
+       <TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>\r
+       <TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>\r
+</TR>\r
+\r
+<TR><TD>12 bit DWVW</TD>\r
+       <TD>&nbsp;</TD><TD ALIGN="center">R/W</TD><TD>&nbsp;</TD><TD ALIGN="center">R/W</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>\r
+       <TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>\r
+       <TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>\r
+</TR>\r
+\r
+<TR><TD>16 bit DWVW</TD>\r
+       <TD>&nbsp;</TD><TD ALIGN="center">R/W</TD><TD>&nbsp;</TD><TD ALIGN="center">R/W</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>\r
+       <TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>\r
+       <TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>\r
+</TR>\r
+\r
+<TR><TD>24 bit DWVW</TD>\r
+       <TD>&nbsp;</TD><TD ALIGN="center">R/W</TD><TD>&nbsp;</TD><TD ALIGN="center">R/W</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>\r
+       <TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>\r
+       <TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>\r
+</TR>\r
+<TR><TD>Ok Dialogic ADPCM</TD>\r
+       <TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD ALIGN="center">R/W</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>\r
+       <TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>\r
+       <TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>\r
+</TR>\r
+<TR><TD>8 bit DPCM</TD>\r
+       <TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>\r
+       <TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>\r
+       <TD>&nbsp;</TD><TD ALIGN="center">R/W</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>\r
+</TR>\r
+<TR><TD>16 bit DPCM</TD>\r
+       <TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>\r
+       <TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>\r
+       <TD>&nbsp;</TD><TD ALIGN="center">R/W</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>\r
+</TR>\r
+</TABLE>\r
+\r
+<p>\r
+From version 1.0.18, libsndfile also reads and writes\r
+       <a href="http://flac.sourceforge.net/">FLAC</a>\r
+and\r
+       <a href="http://www.vorbis.com/">Ogg/Vorbis</a>.\r
+</p>\r
+\r
+<!-- pepper -->\r
+\r
+<P>\r
+       Some of the file formats I am also interested in adding are:\r
+</P>\r
+       <UL>\r
+       <LI> Kurzweil K2000 sampler files.\r
+       <LI> Ogg Speex.\r
+       </UL>\r
+<P>\r
+       I have decided that I will not be adding support for MPEG Layer 3 (commonly\r
+       known as MP3) due to the patent issues surrounding this file format.\r
+       See\r
+               <a href="http://www.mega-nerd.com/libsndfile/FAQ.html#Q020">\r
+               the FAQ</a>\r
+       for more.\r
+</P>\r
+<P>\r
+       Other file formats may also be added on request.\r
+</P>\r
+\r
+<!-- pepper -->\r
+\r
+<A NAME="History"></A>\r
+<H1><B>History</B></H1>\r
+<P>\r
+       My first attempt at reading and writing WAV files was in 1990 or so under Windows\r
+       3.1.\r
+       I started using Linux in early 1995 and contributed some code to the\r
+               <A HREF="http://www.vaxxine.com/ve3wwg/gnuwave.html">wavplay</A>\r
+       program.\r
+       That contributed code would eventually mutate into this library.\r
+       As one of my interests is Digital Signal Processing (DSP) I decided that as well as\r
+       reading data from an audio file in the native format (typically 16 bit short integers)\r
+       it would also be useful to be able to have the library do the conversion to floating\r
+       point numbers for DSP applications.\r
+       It then dawned on me that whatever file format (anything from 8 bit unsigned chars,\r
+       to 32 bit floating point numbers) the library should be able to convert the data to\r
+       whatever format the library user wishes to use it in.\r
+       For example, in a sound playback program, the library caller typically wants the sound\r
+       data in 16 bit short integers to dump into a sound card even though the data in the\r
+       file may be 32 bit floating point numbers (ie Microsoft's WAVE_FORMAT_IEEE_FLOAT\r
+       format).\r
+       Another example would be someone doing speech recognition research who has recorded\r
+       some speech as a 16 bit WAV file but wants to process it as double precision floating\r
+       point numbers.\r
+</P>\r
+<P>\r
+    Here is the release history for libsndfile :\r
+</P>\r
+       <UL>\r
+       <LI>Version 0.0.8 (Feb 15 1999) First official release.\r
+       <LI>Version 0.0.28 (Apr 26 2002) Final release of version 0 of libsndfile.\r
+       <LI>Version 1.0.0rc1 (Jun 24 2002) Release candidate 1 of version 1 of libsndfile.\r
+       <LI>Version 1.0.0rc6 (Aug 14 2002) MacOS 9 fixes.\r
+       <LI>Version 1.0.0 (Aug 16 2002) First 1.0.X release.\r
+       <LI>Version 1.0.1 (Sep 14 2002) Added MAT4 and MAT5 file formats.\r
+       <LI>Version 1.0.2 (Nov 24 2002) Added VOX ADPCM format.\r
+       <LI>Version 1.0.3 (Dec 09 2002) Fixes for Linux on ia64 CPUs.\r
+       <LI>Version 1.0.4 (Feb 02 2003) New file formats and functionality.\r
+       <LI>Version 1.0.5 (May 03 2003) One new file format and new functionality.\r
+       <LI>Version 1.0.6 (Feb 08 2004) Large file fix for Linux/Solaris, new functionality\r
+               and Win32 improvements.\r
+       <LI>Version 1.0.7 (Feb 24 2004) Fix build problems on MacOS X and fix ia64/MIPS etc\r
+               clip mode detction.\r
+       <LI>Version 1.0.8 (Mar 14 2004) Minor bug fixes.\r
+       <LI>Version 1.0.9 (Mar 30 2004) Add AVR format. Improve handling of some WAV files.\r
+       <LI>Version 1.0.10 (Jun 15 2004) Minor bug fixes. Fix support for Win32 MinGW compiler.\r
+       <LI>Version 1.0.11 (Nov 15 2004) Add SD2 file support, reading of loop data in WAV and AIFF.\r
+                               Minor bug fixes.\r
+       <LI>Version 1.0.12 (Sep 30 2005) Add FLAC and CAF file support, virtual I/O interface.\r
+                               Minor bug fixes and cleanups.\r
+       <LI>Version 1.0.13 (Jan 21 2006) Add read/write of instrument chunks. Minor bug fixes.\r
+       <LI>Version 1.0.14 (Feb 19 2006) Minor bug fixes. Start shipping windows binary/source ZIP.\r
+       <LI>Version 1.0.15 (Mar 16 2006) Minor bug fixes.\r
+       <LI>Version 1.0.16 (Apr 30 2006) Add support for RIFX. Other minor feature enhancements and\r
+                               bug fixes.\r
+       <LI>Version 1.0.17 (Aug 31 2006) Add C++ wrapper sndfile.hh. Minor bug fixes and cleanups.\r
+       <LI>Version 1.0.18 (Feb 07 2009) Add Ogg/Vorbis suppport, remove captive libraries, many\r
+                               new features and bug fixes. Generate Win32 and Win64 pre-compiled binaries.\r
+       <LI>Version 1.0.19 (Mar 02 2009) Fix for CVE-2009-0186. Huge number of minor fixes as a\r
+                               result of static analysis.\r
+       <LI>Version 1.0.20 (May 14 2009) Fix for potential heap overflow.\r
+       <LI>Version 1.0.21 (December 13 2009) Bunch of minor bug fixes.\r
+       <LI>Version 1.0.22 (October 04 2010) Bunch of minor bug fixes.\r
+       <LI>Version 1.0.23 (October 10 2010) Minor bug fixes.\r
+       <LI>Version 1.0.24 (March 23 2011) Minor bug fixes.\r
+       <LI>Version 1.0.25 (July 13 2011) Fix for Secunia Advisory SA45125. Minor bug fixes and\r
+                               improvements.\r
+       </UL>\r
+\r
+<A NAME="Similar"></A>\r
+<H1><B>Similar or Related Projects</B></H1>\r
+\r
+       <UL>\r
+       <LI><A HREF="http://sox.sourceforge.net/">SoX</A> is a program for\r
+               converting between sound file formats.\r
+       <LI><A HREF="http://www.hitsquad.com/smm/programs/WavPlay/">Wavplay</A> started out\r
+               as a minimal WAV file player under Linux and has mutated into Gnuwave, a client/server\r
+               application for more general multimedia and games sound playback.\r
+       <LI><A HREF="http://www.68k.org/~michael/audiofile/">Audiofile</A> (libaudiofile) is\r
+               a library similar to libsndfile but with a different programming interface. The\r
+               author Michael Pruett has set out to clone (and fix some bugs in) the libaudiofile\r
+               library which ships with SGI's IRIX OS.\r
+       <LI><A HREF="ftp://ccrma-ftp.stanford.edu/pub/Lisp/sndlib.tar.gz">sndlib.tar.gz</A> is\r
+               another library written by Bill Schottstaedt of CCRMA.\r
+       </UL>\r
+\r
+<A NAME="Licensing"></A>\r
+<H1><B>Licensing</B></H1>\r
+<P>\r
+       libsndfile is released under the terms of the GNU Lesser General Public License,\r
+       of which there are two versions;\r
+               <a href="http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html">version 2.1</a>\r
+       and\r
+               <a href="http://www.gnu.org/copyleft/lesser.html">version 3</a>.\r
+       To maximise the compatibility of libsndfile, the user may choose to use libsndfile\r
+       under either of the above two licenses.\r
+       You can also read a simple explanation of the ideas behind the GPL and the LGPL\r
+               <A HREF="http://www.gnu.org/copyleft/copyleft.html">here</A>.\r
+</P>\r
+<P>\r
+       You can use libsndfile with\r
+               <A HREF="http://www.gnu.org/">Free Software</A>,\r
+               <A HREF="http://www.opensource.org/">Open Source</A>,\r
+       proprietary, shareware or other closed source applications as long as libsndfile\r
+       is used as a dynamically loaded library and you abide by a small number of other\r
+       conditions (read the LGPL for more info).\r
+       With applications released under the GNU GPL you can also use libsndfile statically\r
+       linked to your application.\r
+</P>\r
+<P>\r
+       I would like to see libsndfile used as widely as possible but I would prefer it\r
+       if you released software that uses libsndfile as\r
+               <A HREF="http://www.gnu.org/">Free Software</A>\r
+       or\r
+               <A HREF="http://www.opensource.org/">Open Source</A>.\r
+       However, if you put in a great deal of effort building a significant application\r
+       which simply uses libsndfile for file I/O, then I have no problem with you releasing\r
+       that as closed source and charging as much money as you want for it as long as you\r
+       abide by <A HREF="http://www.gnu.org/copyleft/lesser.html">the license</A>.\r
+</P>\r
+\r
+<A NAME="Download"></A>\r
+<H1><B>Download</B></H1>\r
+<P>\r
+       Here is the latest version. It is available in the following formats:\r
+</P>\r
+       <UL>\r
+       <LI>Source code as a .tar.gz :\r
+                       <A HREF="files/libsndfile-1.0.25.tar.gz">libsndfile-1.0.25.tar.gz</A>\r
+                       and\r
+                       <A HREF="files/libsndfile-1.0.25.tar.gz.asc">(GPG signature)</A>.\r
+       <LI>Win32 installer:\r
+                       <A HREF="files/libsndfile-1.0.25-w32-setup.exe">\r
+                       libsndfile-1.0.25-w32-setup.exe</A> (thoroughly tested under\r
+                       <a href="http://www.winehq.com/">Wine</a> and Windows XP).\r
+       <LI>Win64 installer:\r
+                       <A HREF="files/libsndfile-1.0.25-w64-setup.exe">\r
+                       libsndfile-1.0.25-w64-setup.exe</A>\r
+                       (thoroughly tested on 64 bit Windows 7).\r
+       </UL>\r
+\r
+<P>\r
+The Win32 installer was compiled for Windows XP but should also work on Windows\r
+2000, Vista and Windows 7.\r
+</p>\r
+\r
+<P>\r
+       Pre-release versions of libsndfile are available\r
+                       <A HREF="http://www.mega-nerd.com/tmp/">here</A>\r
+       and are announced on the\r
+                       <A HREF="lists.html">libsndfile-devel</A>\r
+       mailing list.\r
+</P>\r
+\r
+<A NAME="SeeAlso"></A>\r
+<H1><B>See Also</B></H1>\r
+       <UL>\r
+       <LI><a href="http://www.mega-nerd.com/libsndfile/tools/">\r
+               sndfile-tools</a>\r
+               : a small collection of programs which use libsndfile.\r
+       </UL>\r
+\r
+<br><br>\r
+\r
+<hr>\r
+\r
+<P>\r
+       The latest version of this document can be found\r
+               <A HREF="http://www.mega-nerd.com/libsndfile/">here</A>.\r
+</P>\r
+<P>\r
+Author :\r
+       <A HREF="m&#97;ilt&#111;:&#101;rikd&#64;&#109;eg&#97;-&#110;erd.&#99;om">\r
+               Erik de Castro Lopo</a>\r
+</P>\r
+<!-- pepper -->\r
+<P>\r
+This page has been accessed\r
+       <IMG SRC=\r
+       "/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"\r
+       HEIGHT=30 WIDTH=100 ALT="counter.gif">\r
+times.\r
+</P>\r
+<!-- pepper -->\r
+<!-- pepper -->\r
+<!-- pepper -->\r
+\r
+<br><br>\r
+</BODY>\r
+</HTML>\r
diff --git a/fdmdv2/libsndfile/doc/libsndfile.css b/fdmdv2/libsndfile/doc/libsndfile.css
new file mode 100644 (file)
index 0000000..d0524aa
--- /dev/null
@@ -0,0 +1,90 @@
+body {\r
+       background : black ;\r
+       color : white ;\r
+       font-family : arial, helvetica, sans-serif ;\r
+       line-height: 1.5 ;\r
+}\r
+td {\r
+       font-family : arial, helvetica, sans-serif ;\r
+       background : black ;\r
+       color : white ;\r
+}\r
+center {\r
+       font-family : arial, helvetica, sans-serif ;\r
+}\r
+p {\r
+       font-family : arial, helvetica, sans-serif ;\r
+       text-align : left ;\r
+       margin-left : 3% ;\r
+       margin-right : 3% ;\r
+}\r
+.indent_block {\r
+       font-family : arial, helvetica, sans-serif ;\r
+       text-align : left ;\r
+       margin-left : 10% ;\r
+       margin-right : 10% ;\r
+}\r
+br {\r
+       font-family : arial, helvetica, sans-serif ;\r
+}\r
+form {\r
+       font-family : arial, helvetica, sans-serif ;\r
+}\r
+ul {\r
+       font-family : arial, helvetica, sans-serif ;\r
+       text-align : left ;\r
+       margin-left : 3% ;\r
+       margin-right : 6% ;\r
+}\r
+ol {\r
+       font-family : arial, helvetica, sans-serif ;\r
+       text-align : left ;\r
+       margin-left : 3% ;\r
+       margin-right : 6% ;\r
+}\r
+dl {\r
+       font-family : arial, helvetica, sans-serif ;\r
+       text-align : left ;\r
+       margin-left : 3% ;\r
+       margin-right : 3% ;\r
+}\r
+h1 {\r
+       font-size : xx-large ;\r
+       background : black ;\r
+       color : #5050FF ;\r
+       text-align : left ;\r
+       margin-left : 3% ;\r
+       margin-right : 3% ;\r
+}\r
+h2 {\r
+       font-size : x-large ;\r
+       background : black ;\r
+       color : #5050FF ;\r
+       text-align : left ;\r
+       margin-left : 3% ;\r
+       margin-right : 3% ;\r
+}\r
+h3 {\r
+       font-size : large ;\r
+       background : black ;\r
+       color : #5050FF ;\r
+       text-align : left ;\r
+       margin-left : 3% ;\r
+       margin-right : 3% ;\r
+}\r
+h4 {\r
+       font-size : medium ;\r
+       background : black ;\r
+       color : #5050FF ;\r
+       text-align : left ;\r
+       margin-left : 3% ;\r
+       margin-right : 3% ;\r
+}\r
+pre {\r
+       font-family : courier, monospace ;\r
+       font-size : medium ;\r
+}\r
+a:link { color : #9090FF ; }\r
+a:visited { color : #5050FF ; }\r
+a:active { color : #FF00FF ; }\r
+a:hover { background-color : #202080 ; }\r
diff --git a/fdmdv2/libsndfile/doc/libsndfile.jpg b/fdmdv2/libsndfile/doc/libsndfile.jpg
new file mode 100644 (file)
index 0000000..7855b92
Binary files /dev/null and b/fdmdv2/libsndfile/doc/libsndfile.jpg differ
diff --git a/fdmdv2/libsndfile/doc/lists.html b/fdmdv2/libsndfile/doc/lists.html
new file mode 100644 (file)
index 0000000..afe13d8
--- /dev/null
@@ -0,0 +1,52 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">\r
+<HTML>\r
+\r
+<HEAD>\r
+       <TITLE>\r
+       libsndfile Mailing Lists\r
+       </TITLE>\r
+       <META NAME="Author"      CONTENT="Erik de Castro Lopo (erikd AT mega-nerd DOT com)">\r
+       <LINK REL="stylesheet" HREF="libsndfile.css" TYPE="text/css" MEDIA="all">\r
+       <LINK REL="stylesheet" HREF="print.css" TYPE="text/css" MEDIA="print">\r
+</HEAD>\r
+\r
+<BODY>\r
+<!-- pepper -->\r
+<H1><BR>libsndfile Mailing Lists</H1>\r
+<!-- pepper -->\r
+<P>\r
+There are three mailing lists for libsndfile:\r
+</P>\r
+<!-- pepper -->\r
+<UL>\r
+       <LI> <B>libsndfile-announce&#64;mega-nerd.com</B>&nbsp;&nbsp;<!-- pepper -->\r
+               <A HREF="m&#97;ilt&#111;:li&#98;sndfile-announce-request@meg&#97;-nerd.&#99;om?subject=subscribe">Subscribe</A>\r
+               <BR>\r
+               A list which will announce each new release of libsndfile.\r
+               Noone can post to this list except the author.\r
+               <BR><BR>\r
+\r
+       <LI> <B>libsndfile-devel&#64;mega-nerd.com</B>&nbsp;&nbsp;<!-- pepper -->\r
+               <A HREF="m&#97;ilt&#111;:li&#98;sndfile-devel-request@meg&#97;-nerd.&#99;om?subject=subscribe">Subscribe</A>\r
+               <BR>\r
+               A list for discussing bugs, porting issues and feature requests.\r
+               Posting is restricted to subscribers.\r
+               <BR><BR>\r
+\r
+       <LI> <B>libsndfile-users&#64;mega-nerd.com</B>&nbsp;&nbsp;<!-- pepper -->\r
+               <A HREF="m&#97;ilt&#111;:li&#98;sndfile-users-request@meg&#97;-nerd.&#99;om?subject=subscribe">Subscribe</A>\r
+               <BR>\r
+               A list for discussing the use of libsndfile in other programs.\r
+               Posting is restricted to subscribers.\r
+               <!-- pepper -->\r
+               <BR><BR>\r
+</UL>\r
+<!-- pepper -->\r
+<P>\r
+The libsndfile-devel and libsndfile-users list will automatically receive a \r
+copy of all emails to the libsndfile-announce list.\r
+</P>\r
+<BR>\r
+<!-- pepper -->\r
+</BODY>\r
+</HTML>\r
diff --git a/fdmdv2/libsndfile/doc/sndfile_info.html b/fdmdv2/libsndfile/doc/sndfile_info.html
new file mode 100644 (file)
index 0000000..2e746a8
--- /dev/null
@@ -0,0 +1,53 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">\r
+<HTML>\r
+\r
+<HEAD>\r
+       <TITLE>\r
+       sndfile-info\r
+       </TITLE>\r
+       <META NAME="Author"      CONTENT="Erik de Castro Lopo (erikd AT mega-nerd DOT com)">\r
+       <LINK REL="stylesheet" HREF="libsndfile.css" TYPE="text/css" MEDIA="all">\r
+       <LINK REL="stylesheet" HREF="print.css" TYPE="text/css" MEDIA="print">\r
+</HEAD>\r
+\r
+<BODY>\r
+\r
+<P>\r
+       Here is an example of the output from the <B>sndfile-info</B> program distributed with \r
+       libsndfile.\r
+</P>\r
+\r
+<P>\r
+       This file was opened and parsed correctly but had been truncated so that the values\r
+       in the <B>FORM</B> and <B>SSND</B> chunks were incorrect.\r
+</P>\r
+<PRE>\r
+        <B>erikd@hendrix ></B> examples/sndfile-info truncated.aiff \r
+        truncated.aiff\r
+        size : 200000\r
+        FORM : 307474 (should be 199992)\r
+         AIFF\r
+         COMM : 18\r
+          Sample Rate : 16000\r
+          Samples     : 76857\r
+          Channels    : 2\r
+          Sample Size : 16\r
+         SSND : 307436 (should be 199946)\r
+          Offset     : 0\r
+          Block Size : 0\r
+        \r
+        --------------------------------\r
+        Sample Rate : 16000\r
+        Frames      : 76857\r
+        Channels    : 2\r
+        Bit Width   : 16\r
+        Format      : 0x00020001\r
+        Sections    : 1\r
+        Seekable    : TRUE\r
+        Signal Max  : 32766\r
+               \r
+</PRE>\r
+\r
+\r
+</BODY>\r
+</HTML>\r
diff --git a/fdmdv2/libsndfile/include/sndfile.h b/fdmdv2/libsndfile/include/sndfile.h
new file mode 100644 (file)
index 0000000..60a839d
--- /dev/null
@@ -0,0 +1,666 @@
+/*\r
+** Copyright (C) 1999-2011Erik de Castro Lopo <erikd@mega-nerd.com>\r
+**\r
+** This program is free software; you can redistribute it and/or modify\r
+** it under the terms of the GNU Lesser General Public License as published by\r
+** the Free Software Foundation; either version 2.1 of the License, or\r
+** (at your option) any later version.\r
+**\r
+** This program is distributed in the hope that it will be useful,\r
+** but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
+** GNU Lesser General Public License for more details.\r
+**\r
+** You should have received a copy of the GNU Lesser General Public License\r
+** along with this program; if not, write to the Free Software\r
+** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\r
+*/\r
+\r
+/*\r
+** sndfile.h -- system-wide definitions\r
+**\r
+** API documentation is in the doc/ directory of the source code tarball\r
+** and at http://www.mega-nerd.com/libsndfile/api.html.\r
+*/\r
+\r
+#ifndef SNDFILE_H\r
+#define SNDFILE_H\r
+\r
+/* This is the version 1.0.X header file. */\r
+#define        SNDFILE_1\r
+\r
+#include <stdio.h>\r
+#include <sys/types.h>\r
+\r
+#ifdef __cplusplus\r
+extern "C" {\r
+#endif /* __cplusplus */\r
+\r
+/* The following file types can be read and written.\r
+** A file type would consist of a major type (ie SF_FORMAT_WAV) bitwise\r
+** ORed with a minor type (ie SF_FORMAT_PCM). SF_FORMAT_TYPEMASK and\r
+** SF_FORMAT_SUBMASK can be used to separate the major and minor file\r
+** types.\r
+*/\r
+\r
+enum\r
+{      /* Major formats. */\r
+       SF_FORMAT_WAV                   = 0x010000,             /* Microsoft WAV format (little endian default). */\r
+       SF_FORMAT_AIFF                  = 0x020000,             /* Apple/SGI AIFF format (big endian). */\r
+       SF_FORMAT_AU                    = 0x030000,             /* Sun/NeXT AU format (big endian). */\r
+       SF_FORMAT_RAW                   = 0x040000,             /* RAW PCM data. */\r
+       SF_FORMAT_PAF                   = 0x050000,             /* Ensoniq PARIS file format. */\r
+       SF_FORMAT_SVX                   = 0x060000,             /* Amiga IFF / SVX8 / SV16 format. */\r
+       SF_FORMAT_NIST                  = 0x070000,             /* Sphere NIST format. */\r
+       SF_FORMAT_VOC                   = 0x080000,             /* VOC files. */\r
+       SF_FORMAT_IRCAM                 = 0x0A0000,             /* Berkeley/IRCAM/CARL */\r
+       SF_FORMAT_W64                   = 0x0B0000,             /* Sonic Foundry's 64 bit RIFF/WAV */\r
+       SF_FORMAT_MAT4                  = 0x0C0000,             /* Matlab (tm) V4.2 / GNU Octave 2.0 */\r
+       SF_FORMAT_MAT5                  = 0x0D0000,             /* Matlab (tm) V5.0 / GNU Octave 2.1 */\r
+       SF_FORMAT_PVF                   = 0x0E0000,             /* Portable Voice Format */\r
+       SF_FORMAT_XI                    = 0x0F0000,             /* Fasttracker 2 Extended Instrument */\r
+       SF_FORMAT_HTK                   = 0x100000,             /* HMM Tool Kit format */\r
+       SF_FORMAT_SDS                   = 0x110000,             /* Midi Sample Dump Standard */\r
+       SF_FORMAT_AVR                   = 0x120000,             /* Audio Visual Research */\r
+       SF_FORMAT_WAVEX                 = 0x130000,             /* MS WAVE with WAVEFORMATEX */\r
+       SF_FORMAT_SD2                   = 0x160000,             /* Sound Designer 2 */\r
+       SF_FORMAT_FLAC                  = 0x170000,             /* FLAC lossless file format */\r
+       SF_FORMAT_CAF                   = 0x180000,             /* Core Audio File format */\r
+       SF_FORMAT_WVE                   = 0x190000,             /* Psion WVE format */\r
+       SF_FORMAT_OGG                   = 0x200000,             /* Xiph OGG container */\r
+       SF_FORMAT_MPC2K                 = 0x210000,             /* Akai MPC 2000 sampler */\r
+       SF_FORMAT_RF64                  = 0x220000,             /* RF64 WAV file */\r
+\r
+       /* Subtypes from here on. */\r
+\r
+       SF_FORMAT_PCM_S8                = 0x0001,               /* Signed 8 bit data */\r
+       SF_FORMAT_PCM_16                = 0x0002,               /* Signed 16 bit data */\r
+       SF_FORMAT_PCM_24                = 0x0003,               /* Signed 24 bit data */\r
+       SF_FORMAT_PCM_32                = 0x0004,               /* Signed 32 bit data */\r
+\r
+       SF_FORMAT_PCM_U8                = 0x0005,               /* Unsigned 8 bit data (WAV and RAW only) */\r
+\r
+       SF_FORMAT_FLOAT                 = 0x0006,               /* 32 bit float data */\r
+       SF_FORMAT_DOUBLE                = 0x0007,               /* 64 bit float data */\r
+\r
+       SF_FORMAT_ULAW                  = 0x0010,               /* U-Law encoded. */\r
+       SF_FORMAT_ALAW                  = 0x0011,               /* A-Law encoded. */\r
+       SF_FORMAT_IMA_ADPCM             = 0x0012,               /* IMA ADPCM. */\r
+       SF_FORMAT_MS_ADPCM              = 0x0013,               /* Microsoft ADPCM. */\r
+\r
+       SF_FORMAT_GSM610                = 0x0020,               /* GSM 6.10 encoding. */\r
+       SF_FORMAT_VOX_ADPCM             = 0x0021,               /* OKI / Dialogix ADPCM */\r
+\r
+       SF_FORMAT_G721_32               = 0x0030,               /* 32kbs G721 ADPCM encoding. */\r
+       SF_FORMAT_G723_24               = 0x0031,               /* 24kbs G723 ADPCM encoding. */\r
+       SF_FORMAT_G723_40               = 0x0032,               /* 40kbs G723 ADPCM encoding. */\r
+\r
+       SF_FORMAT_DWVW_12               = 0x0040,               /* 12 bit Delta Width Variable Word encoding. */\r
+       SF_FORMAT_DWVW_16               = 0x0041,               /* 16 bit Delta Width Variable Word encoding. */\r
+       SF_FORMAT_DWVW_24               = 0x0042,               /* 24 bit Delta Width Variable Word encoding. */\r
+       SF_FORMAT_DWVW_N                = 0x0043,               /* N bit Delta Width Variable Word encoding. */\r
+\r
+       SF_FORMAT_DPCM_8                = 0x0050,               /* 8 bit differential PCM (XI only) */\r
+       SF_FORMAT_DPCM_16               = 0x0051,               /* 16 bit differential PCM (XI only) */\r
+\r
+       SF_FORMAT_VORBIS                = 0x0060,               /* Xiph Vorbis encoding. */\r
+\r
+       /* Endian-ness options. */\r
+\r
+       SF_ENDIAN_FILE                  = 0x00000000,   /* Default file endian-ness. */\r
+       SF_ENDIAN_LITTLE                = 0x10000000,   /* Force little endian-ness. */\r
+       SF_ENDIAN_BIG                   = 0x20000000,   /* Force big endian-ness. */\r
+       SF_ENDIAN_CPU                   = 0x30000000,   /* Force CPU endian-ness. */\r
+\r
+       SF_FORMAT_SUBMASK               = 0x0000FFFF,\r
+       SF_FORMAT_TYPEMASK              = 0x0FFF0000,\r
+       SF_FORMAT_ENDMASK               = 0x30000000\r
+} ;\r
+\r
+/*\r
+** The following are the valid command numbers for the sf_command()\r
+** interface.  The use of these commands is documented in the file\r
+** command.html in the doc directory of the source code distribution.\r
+*/\r
+\r
+enum\r
+{      SFC_GET_LIB_VERSION                             = 0x1000,\r
+       SFC_GET_LOG_INFO                                = 0x1001,\r
+       SFC_GET_CURRENT_SF_INFO                 = 0x1002,\r
+\r
+\r
+       SFC_GET_NORM_DOUBLE                             = 0x1010,\r
+       SFC_GET_NORM_FLOAT                              = 0x1011,\r
+       SFC_SET_NORM_DOUBLE                             = 0x1012,\r
+       SFC_SET_NORM_FLOAT                              = 0x1013,\r
+       SFC_SET_SCALE_FLOAT_INT_READ    = 0x1014,\r
+       SFC_SET_SCALE_INT_FLOAT_WRITE   = 0x1015,\r
+\r
+       SFC_GET_SIMPLE_FORMAT_COUNT             = 0x1020,\r
+       SFC_GET_SIMPLE_FORMAT                   = 0x1021,\r
+\r
+       SFC_GET_FORMAT_INFO                             = 0x1028,\r
+\r
+       SFC_GET_FORMAT_MAJOR_COUNT              = 0x1030,\r
+       SFC_GET_FORMAT_MAJOR                    = 0x1031,\r
+       SFC_GET_FORMAT_SUBTYPE_COUNT    = 0x1032,\r
+       SFC_GET_FORMAT_SUBTYPE                  = 0x1033,\r
+\r
+       SFC_CALC_SIGNAL_MAX                             = 0x1040,\r
+       SFC_CALC_NORM_SIGNAL_MAX                = 0x1041,\r
+       SFC_CALC_MAX_ALL_CHANNELS               = 0x1042,\r
+       SFC_CALC_NORM_MAX_ALL_CHANNELS  = 0x1043,\r
+       SFC_GET_SIGNAL_MAX                              = 0x1044,\r
+       SFC_GET_MAX_ALL_CHANNELS                = 0x1045,\r
+\r
+       SFC_SET_ADD_PEAK_CHUNK                  = 0x1050,\r
+       SFC_SET_ADD_HEADER_PAD_CHUNK    = 0x1051,\r
+\r
+       SFC_UPDATE_HEADER_NOW                   = 0x1060,\r
+       SFC_SET_UPDATE_HEADER_AUTO              = 0x1061,\r
+\r
+       SFC_FILE_TRUNCATE                               = 0x1080,\r
+\r
+       SFC_SET_RAW_START_OFFSET                = 0x1090,\r
+\r
+       SFC_SET_DITHER_ON_WRITE                 = 0x10A0,\r
+       SFC_SET_DITHER_ON_READ                  = 0x10A1,\r
+\r
+       SFC_GET_DITHER_INFO_COUNT               = 0x10A2,\r
+       SFC_GET_DITHER_INFO                             = 0x10A3,\r
+\r
+       SFC_GET_EMBED_FILE_INFO                 = 0x10B0,\r
+\r
+       SFC_SET_CLIPPING                                = 0x10C0,\r
+       SFC_GET_CLIPPING                                = 0x10C1,\r
+\r
+       SFC_GET_INSTRUMENT                              = 0x10D0,\r
+       SFC_SET_INSTRUMENT                              = 0x10D1,\r
+\r
+       SFC_GET_LOOP_INFO                               = 0x10E0,\r
+\r
+       SFC_GET_BROADCAST_INFO                  = 0x10F0,\r
+       SFC_SET_BROADCAST_INFO                  = 0x10F1,\r
+\r
+       SFC_GET_CHANNEL_MAP_INFO                = 0x1100,\r
+       SFC_SET_CHANNEL_MAP_INFO                = 0x1101,\r
+\r
+       SFC_RAW_DATA_NEEDS_ENDSWAP              = 0x1110,\r
+\r
+       /* Support for Wavex Ambisonics Format */\r
+       SFC_WAVEX_SET_AMBISONIC                 = 0x1200,\r
+       SFC_WAVEX_GET_AMBISONIC                 = 0x1201,\r
+\r
+       SFC_SET_VBR_ENCODING_QUALITY    = 0x1300,\r
+\r
+       /* Following commands for testing only. */\r
+       SFC_TEST_IEEE_FLOAT_REPLACE             = 0x6001,\r
+\r
+       /*\r
+       ** SFC_SET_ADD_* values are deprecated and will disappear at some\r
+       ** time in the future. They are guaranteed to be here up to and\r
+       ** including version 1.0.8 to avoid breakage of existng software.\r
+       ** They currently do nothing and will continue to do nothing.\r
+       */\r
+       SFC_SET_ADD_DITHER_ON_WRITE             = 0x1070,\r
+       SFC_SET_ADD_DITHER_ON_READ              = 0x1071\r
+} ;\r
+\r
+\r
+/*\r
+** String types that can be set and read from files. Not all file types\r
+** support this and even the file types which support one, may not support\r
+** all string types.\r
+*/\r
+\r
+enum\r
+{      SF_STR_TITLE                                    = 0x01,\r
+       SF_STR_COPYRIGHT                                = 0x02,\r
+       SF_STR_SOFTWARE                                 = 0x03,\r
+       SF_STR_ARTIST                                   = 0x04,\r
+       SF_STR_COMMENT                                  = 0x05,\r
+       SF_STR_DATE                                             = 0x06,\r
+       SF_STR_ALBUM                                    = 0x07,\r
+       SF_STR_LICENSE                                  = 0x08,\r
+       SF_STR_TRACKNUMBER                              = 0x09,\r
+       SF_STR_GENRE                                    = 0x10\r
+} ;\r
+\r
+/*\r
+** Use the following as the start and end index when doing metadata\r
+** transcoding.\r
+*/\r
+\r
+#define        SF_STR_FIRST    SF_STR_TITLE\r
+#define        SF_STR_LAST             SF_STR_GENRE\r
+\r
+enum\r
+{      /* True and false */\r
+       SF_FALSE        = 0,\r
+       SF_TRUE         = 1,\r
+\r
+       /* Modes for opening files. */\r
+       SFM_READ        = 0x10,\r
+       SFM_WRITE       = 0x20,\r
+       SFM_RDWR        = 0x30,\r
+\r
+       SF_AMBISONIC_NONE               = 0x40,\r
+       SF_AMBISONIC_B_FORMAT   = 0x41\r
+} ;\r
+\r
+/* Public error values. These are guaranteed to remain unchanged for the duration\r
+** of the library major version number.\r
+** There are also a large number of private error numbers which are internal to\r
+** the library which can change at any time.\r
+*/\r
+\r
+enum\r
+{      SF_ERR_NO_ERROR                         = 0,\r
+       SF_ERR_UNRECOGNISED_FORMAT      = 1,\r
+       SF_ERR_SYSTEM                           = 2,\r
+       SF_ERR_MALFORMED_FILE           = 3,\r
+       SF_ERR_UNSUPPORTED_ENCODING     = 4\r
+} ;\r
+\r
+\r
+/* Channel map values (used with SFC_SET/GET_CHANNEL_MAP).\r
+*/\r
+\r
+enum\r
+{      SF_CHANNEL_MAP_INVALID = 0,\r
+       SF_CHANNEL_MAP_MONO = 1,\r
+       SF_CHANNEL_MAP_LEFT,                                    /* Apple calls this 'Left' */\r
+       SF_CHANNEL_MAP_RIGHT,                                   /* Apple calls this 'Right' */\r
+       SF_CHANNEL_MAP_CENTER,                                  /* Apple calls this 'Center' */\r
+       SF_CHANNEL_MAP_FRONT_LEFT,\r
+       SF_CHANNEL_MAP_FRONT_RIGHT,\r
+       SF_CHANNEL_MAP_FRONT_CENTER,\r
+       SF_CHANNEL_MAP_REAR_CENTER,                             /* Apple calls this 'Center Surround', Msft calls this 'Back Center' */\r
+       SF_CHANNEL_MAP_REAR_LEFT,                               /* Apple calls this 'Left Surround', Msft calls this 'Back Left' */\r
+       SF_CHANNEL_MAP_REAR_RIGHT,                              /* Apple calls this 'Right Surround', Msft calls this 'Back Right' */\r
+       SF_CHANNEL_MAP_LFE,                                             /* Apple calls this 'LFEScreen', Msft calls this 'Low Frequency'  */\r
+       SF_CHANNEL_MAP_FRONT_LEFT_OF_CENTER,    /* Apple calls this 'Left Center' */\r
+       SF_CHANNEL_MAP_FRONT_RIGHT_OF_CENTER,   /* Apple calls this 'Right Center */\r
+       SF_CHANNEL_MAP_SIDE_LEFT,                               /* Apple calls this 'Left Surround Direct' */\r
+       SF_CHANNEL_MAP_SIDE_RIGHT,                              /* Apple calls this 'Right Surround Direct' */\r
+       SF_CHANNEL_MAP_TOP_CENTER,                              /* Apple calls this 'Top Center Surround' */\r
+       SF_CHANNEL_MAP_TOP_FRONT_LEFT,                  /* Apple calls this 'Vertical Height Left' */\r
+       SF_CHANNEL_MAP_TOP_FRONT_RIGHT,                 /* Apple calls this 'Vertical Height Right' */\r
+       SF_CHANNEL_MAP_TOP_FRONT_CENTER,                /* Apple calls this 'Vertical Height Center' */\r
+       SF_CHANNEL_MAP_TOP_REAR_LEFT,                   /* Apple and MS call this 'Top Back Left' */\r
+       SF_CHANNEL_MAP_TOP_REAR_RIGHT,                  /* Apple and MS call this 'Top Back Right' */\r
+       SF_CHANNEL_MAP_TOP_REAR_CENTER,                 /* Apple and MS call this 'Top Back Center' */\r
+\r
+       SF_CHANNEL_MAP_AMBISONIC_B_W,\r
+       SF_CHANNEL_MAP_AMBISONIC_B_X,\r
+       SF_CHANNEL_MAP_AMBISONIC_B_Y,\r
+       SF_CHANNEL_MAP_AMBISONIC_B_Z,\r
+\r
+       SF_CHANNEL_MAP_MAX\r
+} ;\r
+\r
+\r
+/* A SNDFILE* pointer can be passed around much like stdio.h's FILE* pointer. */\r
+\r
+typedef        struct SNDFILE_tag      SNDFILE ;\r
+\r
+/* The following typedef is system specific and is defined when libsndfile is\r
+** compiled. sf_count_t will be a 64 bit value when the underlying OS allows\r
+** 64 bit file offsets.\r
+** On windows, we need to allow the same header file to be compiler by both GCC\r
+** and the Microsoft compiler.\r
+*/\r
+\r
+#if (defined (_MSCVER) || defined (_MSC_VER))\r
+typedef __int64                sf_count_t ;\r
+#define SF_COUNT_MAX           0x7fffffffffffffffi64\r
+#else\r
+typedef __int64        sf_count_t ;\r
+#define SF_COUNT_MAX           0x7FFFFFFFFFFFFFFFLL\r
+#endif\r
+\r
+\r
+/* A pointer to a SF_INFO structure is passed to sf_open () and filled in.\r
+** On write, the SF_INFO structure is filled in by the user and passed into\r
+** sf_open ().\r
+*/\r
+\r
+struct SF_INFO\r
+{      sf_count_t      frames ;                /* Used to be called samples.  Changed to avoid confusion. */\r
+       int                     samplerate ;\r
+       int                     channels ;\r
+       int                     format ;\r
+       int                     sections ;\r
+       int                     seekable ;\r
+} ;\r
+\r
+typedef        struct SF_INFO SF_INFO ;\r
+\r
+/* The SF_FORMAT_INFO struct is used to retrieve information about the sound\r
+** file formats libsndfile supports using the sf_command () interface.\r
+**\r
+** Using this interface will allow applications to support new file formats\r
+** and encoding types when libsndfile is upgraded, without requiring\r
+** re-compilation of the application.\r
+**\r
+** Please consult the libsndfile documentation (particularly the information\r
+** on the sf_command () interface) for examples of its use.\r
+*/\r
+\r
+typedef struct\r
+{      int                     format ;\r
+       const char      *name ;\r
+       const char      *extension ;\r
+} SF_FORMAT_INFO ;\r
+\r
+/*\r
+** Enums and typedefs for adding dither on read and write.\r
+** See the html documentation for sf_command(), SFC_SET_DITHER_ON_WRITE\r
+** and SFC_SET_DITHER_ON_READ.\r
+*/\r
+\r
+enum\r
+{      SFD_DEFAULT_LEVEL       = 0,\r
+       SFD_CUSTOM_LEVEL        = 0x40000000,\r
+\r
+       SFD_NO_DITHER           = 500,\r
+       SFD_WHITE                       = 501,\r
+       SFD_TRIANGULAR_PDF      = 502\r
+} ;\r
+\r
+typedef struct\r
+{      int                     type ;\r
+       double          level ;\r
+       const char      *name ;\r
+} SF_DITHER_INFO ;\r
+\r
+/* Struct used to retrieve information about a file embedded within a\r
+** larger file. See SFC_GET_EMBED_FILE_INFO.\r
+*/\r
+\r
+typedef struct\r
+{      sf_count_t      offset ;\r
+       sf_count_t      length ;\r
+} SF_EMBED_FILE_INFO ;\r
+\r
+/*\r
+**     Structs used to retrieve music sample information from a file.\r
+*/\r
+\r
+enum\r
+{      /*\r
+       **      The loop mode field in SF_INSTRUMENT will be one of the following.\r
+       */\r
+       SF_LOOP_NONE = 800,\r
+       SF_LOOP_FORWARD,\r
+       SF_LOOP_BACKWARD,\r
+       SF_LOOP_ALTERNATING\r
+} ;\r
+\r
+typedef struct\r
+{      int gain ;\r
+       char basenote, detune ;\r
+       char velocity_lo, velocity_hi ;\r
+       char key_lo, key_hi ;\r
+       int loop_count ;\r
+\r
+       struct\r
+       {       int mode ;\r
+               unsigned int start ;\r
+               unsigned int end ;\r
+               unsigned int count ;\r
+       } loops [16] ; /* make variable in a sensible way */\r
+} SF_INSTRUMENT ;\r
+\r
+\r
+\r
+/* Struct used to retrieve loop information from a file.*/\r
+typedef struct\r
+{\r
+       short   time_sig_num ;  /* any positive integer    > 0  */\r
+       short   time_sig_den ;  /* any positive power of 2 > 0  */\r
+       int             loop_mode ;             /* see SF_LOOP enum             */\r
+\r
+       int             num_beats ;             /* this is NOT the amount of quarter notes !!!*/\r
+                                                       /* a full bar of 4/4 is 4 beats */\r
+                                                       /* a full bar of 7/8 is 7 beats */\r
+\r
+       float   bpm ;                   /* suggestion, as it can be calculated using other fields:*/\r
+                                                       /* file's lenght, file's sampleRate and our time_sig_den*/\r
+                                                       /* -> bpms are always the amount of _quarter notes_ per minute */\r
+\r
+       int     root_key ;                      /* MIDI note, or -1 for None */\r
+       int future [6] ;\r
+} SF_LOOP_INFO ;\r
+\r
+\r
+/*     Struct used to retrieve broadcast (EBU) information from a file.\r
+**     Strongly (!) based on EBU "bext" chunk format used in Broadcast WAVE.\r
+*/\r
+#define        SF_BROADCAST_INFO_VAR(coding_hist_size) \\r
+                       struct \\r
+                       {       char                    description [256] ; \\r
+                               char                    originator [32] ; \\r
+                               char                    originator_reference [32] ; \\r
+                               char                    origination_date [10] ; \\r
+                               char                    origination_time [8] ; \\r
+                               unsigned int    time_reference_low ; \\r
+                               unsigned int    time_reference_high ; \\r
+                               short                   version ; \\r
+                               char                    umid [64] ; \\r
+                               char                    reserved [190] ; \\r
+                               unsigned int    coding_history_size ; \\r
+                               char                    coding_history [coding_hist_size] ; \\r
+                       }\r
+\r
+/* SF_BROADCAST_INFO is the above struct with coding_history field of 256 bytes. */\r
+typedef SF_BROADCAST_INFO_VAR (256) SF_BROADCAST_INFO ;\r
+\r
+\r
+/*     Virtual I/O functionality. */\r
+\r
+typedef sf_count_t             (*sf_vio_get_filelen)   (void *user_data) ;\r
+typedef sf_count_t             (*sf_vio_seek)          (sf_count_t offset, int whence, void *user_data) ;\r
+typedef sf_count_t             (*sf_vio_read)          (void *ptr, sf_count_t count, void *user_data) ;\r
+typedef sf_count_t             (*sf_vio_write)         (const void *ptr, sf_count_t count, void *user_data) ;\r
+typedef sf_count_t             (*sf_vio_tell)          (void *user_data) ;\r
+\r
+struct SF_VIRTUAL_IO\r
+{      sf_vio_get_filelen      get_filelen ;\r
+       sf_vio_seek                     seek ;\r
+       sf_vio_read                     read ;\r
+       sf_vio_write            write ;\r
+       sf_vio_tell                     tell ;\r
+} ;\r
+\r
+typedef        struct SF_VIRTUAL_IO SF_VIRTUAL_IO ;\r
+\r
+\r
+/* Open the specified file for read, write or both. On error, this will\r
+** return a NULL pointer. To find the error number, pass a NULL SNDFILE\r
+** to sf_strerror ().\r
+** All calls to sf_open() should be matched with a call to sf_close().\r
+*/\r
+\r
+SNDFILE*       sf_open         (const char *path, int mode, SF_INFO *sfinfo) ;\r
+\r
+\r
+/* Use the existing file descriptor to create a SNDFILE object. If close_desc\r
+** is TRUE, the file descriptor will be closed when sf_close() is called. If\r
+** it is FALSE, the descritor will not be closed.\r
+** When passed a descriptor like this, the library will assume that the start\r
+** of file header is at the current file offset. This allows sound files within\r
+** larger container files to be read and/or written.\r
+** On error, this will return a NULL pointer. To find the error number, pass a\r
+** NULL SNDFILE to sf_strerror ().\r
+** All calls to sf_open_fd() should be matched with a call to sf_close().\r
+\r
+*/\r
+\r
+SNDFILE*       sf_open_fd      (int fd, int mode, SF_INFO *sfinfo, int close_desc) ;\r
+\r
+SNDFILE*       sf_open_virtual (SF_VIRTUAL_IO *sfvirtual, int mode, SF_INFO *sfinfo, void *user_data) ;\r
+\r
+\r
+/* sf_error () returns a error number which can be translated to a text\r
+** string using sf_error_number().\r
+*/\r
+\r
+int            sf_error                (SNDFILE *sndfile) ;\r
+\r
+\r
+/* sf_strerror () returns to the caller a pointer to the current error message for\r
+** the given SNDFILE.\r
+*/\r
+\r
+const char* sf_strerror (SNDFILE *sndfile) ;\r
+\r
+\r
+/* sf_error_number () allows the retrieval of the error string for each internal\r
+** error number.\r
+**\r
+*/\r
+\r
+const char*    sf_error_number (int errnum) ;\r
+\r
+\r
+/* The following two error functions are deprecated but they will remain in the\r
+** library for the forseeable future. The function sf_strerror() should be used\r
+** in their place.\r
+*/\r
+\r
+int            sf_perror               (SNDFILE *sndfile) ;\r
+int            sf_error_str    (SNDFILE *sndfile, char* str, size_t len) ;\r
+\r
+\r
+/* Return TRUE if fields of the SF_INFO struct are a valid combination of values. */\r
+\r
+int            sf_command      (SNDFILE *sndfile, int command, void *data, int datasize) ;\r
+\r
+\r
+/* Return TRUE if fields of the SF_INFO struct are a valid combination of values. */\r
+\r
+int            sf_format_check (const SF_INFO *info) ;\r
+\r
+\r
+/* Seek within the waveform data chunk of the SNDFILE. sf_seek () uses\r
+** the same values for whence (SEEK_SET, SEEK_CUR and SEEK_END) as\r
+** stdio.h function fseek ().\r
+** An offset of zero with whence set to SEEK_SET will position the\r
+** read / write pointer to the first data sample.\r
+** On success sf_seek returns the current position in (multi-channel)\r
+** samples from the start of the file.\r
+** Please see the libsndfile documentation for moving the read pointer\r
+** separately from the write pointer on files open in mode SFM_RDWR.\r
+** On error all of these functions return -1.\r
+*/\r
+\r
+sf_count_t     sf_seek                 (SNDFILE *sndfile, sf_count_t frames, int whence) ;\r
+\r
+\r
+/* Functions for retrieving and setting string data within sound files.\r
+** Not all file types support this features; AIFF and WAV do. For both\r
+** functions, the str_type parameter must be one of the SF_STR_* values\r
+** defined above.\r
+** On error, sf_set_string() returns non-zero while sf_get_string()\r
+** returns NULL.\r
+*/\r
+\r
+int sf_set_string (SNDFILE *sndfile, int str_type, const char* str) ;\r
+\r
+const char* sf_get_string (SNDFILE *sndfile, int str_type) ;\r
+\r
+\r
+/* Return the library version string. */\r
+\r
+const char * sf_version_string (void) ;\r
+\r
+\r
+/* Functions for reading/writing the waveform data of a sound file.\r
+*/\r
+\r
+sf_count_t     sf_read_raw             (SNDFILE *sndfile, void *ptr, sf_count_t bytes) ;\r
+sf_count_t     sf_write_raw    (SNDFILE *sndfile, const void *ptr, sf_count_t bytes) ;\r
+\r
+\r
+/* Functions for reading and writing the data chunk in terms of frames.\r
+** The number of items actually read/written = frames * number of channels.\r
+**     sf_xxxx_raw             read/writes the raw data bytes from/to the file\r
+**     sf_xxxx_short   passes data in the native short format\r
+**     sf_xxxx_int             passes data in the native int format\r
+**     sf_xxxx_float   passes data in the native float format\r
+**     sf_xxxx_double  passes data in the native double format\r
+** All of these read/write function return number of frames read/written.\r
+*/\r
+\r
+sf_count_t     sf_readf_short  (SNDFILE *sndfile, short *ptr, sf_count_t frames) ;\r
+sf_count_t     sf_writef_short (SNDFILE *sndfile, const short *ptr, sf_count_t frames) ;\r
+\r
+sf_count_t     sf_readf_int    (SNDFILE *sndfile, int *ptr, sf_count_t frames) ;\r
+sf_count_t     sf_writef_int   (SNDFILE *sndfile, const int *ptr, sf_count_t frames) ;\r
+\r
+sf_count_t     sf_readf_float  (SNDFILE *sndfile, float *ptr, sf_count_t frames) ;\r
+sf_count_t     sf_writef_float (SNDFILE *sndfile, const float *ptr, sf_count_t frames) ;\r
+\r
+sf_count_t     sf_readf_double         (SNDFILE *sndfile, double *ptr, sf_count_t frames) ;\r
+sf_count_t     sf_writef_double        (SNDFILE *sndfile, const double *ptr, sf_count_t frames) ;\r
+\r
+\r
+/* Functions for reading and writing the data chunk in terms of items.\r
+** Otherwise similar to above.\r
+** All of these read/write function return number of items read/written.\r
+*/\r
+\r
+sf_count_t     sf_read_short   (SNDFILE *sndfile, short *ptr, sf_count_t items) ;\r
+sf_count_t     sf_write_short  (SNDFILE *sndfile, const short *ptr, sf_count_t items) ;\r
+\r
+sf_count_t     sf_read_int             (SNDFILE *sndfile, int *ptr, sf_count_t items) ;\r
+sf_count_t     sf_write_int    (SNDFILE *sndfile, const int *ptr, sf_count_t items) ;\r
+\r
+sf_count_t     sf_read_float   (SNDFILE *sndfile, float *ptr, sf_count_t items) ;\r
+sf_count_t     sf_write_float  (SNDFILE *sndfile, const float *ptr, sf_count_t items) ;\r
+\r
+sf_count_t     sf_read_double  (SNDFILE *sndfile, double *ptr, sf_count_t items) ;\r
+sf_count_t     sf_write_double (SNDFILE *sndfile, const double *ptr, sf_count_t items) ;\r
+\r
+\r
+/* Close the SNDFILE and clean up all memory allocations associated with this\r
+** file.\r
+** Returns 0 on success, or an error number.\r
+*/\r
+\r
+int            sf_close                (SNDFILE *sndfile) ;\r
+\r
+\r
+/* If the file is opened SFM_WRITE or SFM_RDWR, call fsync() on the file\r
+** to force the writing of data to disk. If the file is opened SFM_READ\r
+** no action is taken.\r
+*/\r
+\r
+void   sf_write_sync   (SNDFILE *sndfile) ;\r
+\r
+\r
+\r
+/* The function sf_wchar_open() is Windows Only!\r
+** Open a file passing in a Windows Unicode filename. Otherwise, this is\r
+** the same as sf_open().\r
+**\r
+** In order for this to work, you need to do the following:\r
+**\r
+**             #include <windows.h>\r
+**             #define ENABLE_SNDFILE_WINDOWS_PROTOTYPES 1\r
+**             #including <sndfile.h>\r
+*/\r
+\r
+#if (defined (ENABLE_SNDFILE_WINDOWS_PROTOTYPES) && ENABLE_SNDFILE_WINDOWS_PROTOTYPES)\r
+SNDFILE* sf_wchar_open (LPCWSTR wpath, int mode, SF_INFO *sfinfo) ;\r
+#endif\r
+\r
+\r
+\r
+#ifdef __cplusplus\r
+}              /* extern "C" */\r
+#endif /* __cplusplus */\r
+\r
+#endif /* SNDFILE_H */\r
+\r
diff --git a/fdmdv2/libsndfile/include/sndfile.hh b/fdmdv2/libsndfile/include/sndfile.hh
new file mode 100644 (file)
index 0000000..605ef71
--- /dev/null
@@ -0,0 +1,422 @@
+/*\r
+** Copyright (C) 2005-2011 Erik de Castro Lopo <erikd@mega-nerd.com>\r
+**\r
+** All rights reserved.\r
+**\r
+** Redistribution and use in source and binary forms, with or without\r
+** modification, are permitted provided that the following conditions are\r
+** met:\r
+**\r
+**     * Redistributions of source code must retain the above copyright\r
+**       notice, this list of conditions and the following disclaimer.\r
+**     * Redistributions in binary form must reproduce the above copyright\r
+**       notice, this list of conditions and the following disclaimer in\r
+**       the documentation and/or other materials provided with the\r
+**       distribution.\r
+**     * Neither the author nor the names of any contributors may be used\r
+**       to endorse or promote products derived from this software without\r
+**       specific prior written permission.\r
+**\r
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\r
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED\r
+** TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\r
+** PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR\r
+** CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\r
+** EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\r
+** PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;\r
+** OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\r
+** WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR\r
+** OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF\r
+** ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r
+*/\r
+\r
+/*\r
+** The above modified BSD style license (GPL and LGPL compatible) applies to\r
+** this file. It does not apply to libsndfile itself which is released under\r
+** the GNU LGPL or the libsndfile test suite which is released under the GNU\r
+** GPL.\r
+** This means that this header file can be used under this modified BSD style\r
+** license, but the LGPL still holds for the libsndfile library itself.\r
+*/\r
+\r
+/*\r
+** sndfile.hh -- A lightweight C++ wrapper for the libsndfile API.\r
+**\r
+** All the methods are inlines and all functionality is contained in this\r
+** file. There is no separate implementation file.\r
+**\r
+** API documentation is in the doc/ directory of the source code tarball\r
+** and at http://www.mega-nerd.com/libsndfile/api.html.\r
+*/\r
+\r
+#ifndef SNDFILE_HH\r
+#define SNDFILE_HH\r
+\r
+#include <sndfile.h>\r
+\r
+#include <string>\r
+#include <new> // for std::nothrow\r
+\r
+class SndfileHandle\r
+{      private :\r
+               struct SNDFILE_ref\r
+               {       SNDFILE_ref (void) ;\r
+                       ~SNDFILE_ref (void) ;\r
+\r
+                       SNDFILE *sf ;\r
+                       SF_INFO sfinfo ;\r
+                       int ref ;\r
+                       } ;\r
+\r
+               SNDFILE_ref *p ;\r
+\r
+       public :\r
+                       /* Default constructor */\r
+                       SndfileHandle (void) : p (NULL) {} ;\r
+                       SndfileHandle (const char *path, int mode = SFM_READ,\r
+                                                       int format = 0, int channels = 0, int samplerate = 0) ;\r
+                       SndfileHandle (std::string const & path, int mode = SFM_READ,\r
+                                                       int format = 0, int channels = 0, int samplerate = 0) ;\r
+                       SndfileHandle (int fd, bool close_desc, int mode = SFM_READ,\r
+                                                       int format = 0, int channels = 0, int samplerate = 0) ;\r
+\r
+#ifdef ENABLE_SNDFILE_WINDOWS_PROTOTYPES\r
+                       SndfileHandle (LPCWSTR wpath, int mode = SFM_READ,\r
+                                                       int format = 0, int channels = 0, int samplerate = 0) ;\r
+#endif\r
+\r
+                       ~SndfileHandle (void) ;\r
+\r
+                       SndfileHandle (const SndfileHandle &orig) ;\r
+                       SndfileHandle & operator = (const SndfileHandle &rhs) ;\r
+\r
+               /* Mainly for debugging/testing. */\r
+               int refCount (void) const { return (p == NULL) ? 0 : p->ref ; }\r
+\r
+               operator bool () const { return (p != NULL) ; }\r
+\r
+               bool operator == (const SndfileHandle &rhs) const { return (p == rhs.p) ; }\r
+\r
+               sf_count_t      frames (void) const             { return p ? p->sfinfo.frames : 0 ; }\r
+               int                     format (void) const             { return p ? p->sfinfo.format : 0 ; }\r
+               int                     channels (void) const   { return p ? p->sfinfo.channels : 0 ; }\r
+               int                     samplerate (void) const { return p ? p->sfinfo.samplerate : 0 ; }\r
+\r
+               int error (void) const ;\r
+               const char * strError (void) const ;\r
+\r
+               int command (int cmd, void *data, int datasize) ;\r
+\r
+               sf_count_t      seek (sf_count_t frames, int whence) ;\r
+\r
+               void writeSync (void) ;\r
+\r
+               int setString (int str_type, const char* str) ;\r
+\r
+               const char* getString (int str_type) const ;\r
+\r
+               static int formatCheck (int format, int channels, int samplerate) ;\r
+\r
+               sf_count_t read (short *ptr, sf_count_t items) ;\r
+               sf_count_t read (int *ptr, sf_count_t items) ;\r
+               sf_count_t read (float *ptr, sf_count_t items) ;\r
+               sf_count_t read (double *ptr, sf_count_t items) ;\r
+\r
+               sf_count_t write (const short *ptr, sf_count_t items) ;\r
+               sf_count_t write (const int *ptr, sf_count_t items) ;\r
+               sf_count_t write (const float *ptr, sf_count_t items) ;\r
+               sf_count_t write (const double *ptr, sf_count_t items) ;\r
+\r
+               sf_count_t readf (short *ptr, sf_count_t frames) ;\r
+               sf_count_t readf (int *ptr, sf_count_t frames) ;\r
+               sf_count_t readf (float *ptr, sf_count_t frames) ;\r
+               sf_count_t readf (double *ptr, sf_count_t frames) ;\r
+\r
+               sf_count_t writef (const short *ptr, sf_count_t frames) ;\r
+               sf_count_t writef (const int *ptr, sf_count_t frames) ;\r
+               sf_count_t writef (const float *ptr, sf_count_t frames) ;\r
+               sf_count_t writef (const double *ptr, sf_count_t frames) ;\r
+\r
+               sf_count_t      readRaw         (void *ptr, sf_count_t bytes) ;\r
+               sf_count_t      writeRaw        (const void *ptr, sf_count_t bytes) ;\r
+\r
+               /**< Raw access to the handle. SndfileHandle keeps ownership. */\r
+               SNDFILE * rawHandle (void) ;\r
+\r
+               /**< Take ownership of handle, iff reference count is 1. */\r
+               SNDFILE * takeOwnership (void) ;\r
+} ;\r
+\r
+/*==============================================================================\r
+**     Nothing but implementation below.\r
+*/\r
+\r
+inline\r
+SndfileHandle::SNDFILE_ref::SNDFILE_ref (void)\r
+: ref (1)\r
+{}\r
+\r
+inline\r
+SndfileHandle::SNDFILE_ref::~SNDFILE_ref (void)\r
+{      if (sf != NULL) sf_close (sf) ; }\r
+\r
+inline\r
+SndfileHandle::SndfileHandle (const char *path, int mode, int fmt, int chans, int srate)\r
+: p (NULL)\r
+{\r
+       p = new (std::nothrow) SNDFILE_ref () ;\r
+\r
+       if (p != NULL)\r
+       {       p->ref = 1 ;\r
+\r
+               p->sfinfo.frames = 0 ;\r
+               p->sfinfo.channels = chans ;\r
+               p->sfinfo.format = fmt ;\r
+               p->sfinfo.samplerate = srate ;\r
+               p->sfinfo.sections = 0 ;\r
+               p->sfinfo.seekable = 0 ;\r
+\r
+               p->sf = sf_open (path, mode, &p->sfinfo) ;\r
+               } ;\r
+\r
+       return ;\r
+} /* SndfileHandle const char * constructor */\r
+\r
+inline\r
+SndfileHandle::SndfileHandle (std::string const & path, int mode, int fmt, int chans, int srate)\r
+: p (NULL)\r
+{\r
+       p = new (std::nothrow) SNDFILE_ref () ;\r
+\r
+       if (p != NULL)\r
+       {       p->ref = 1 ;\r
+\r
+               p->sfinfo.frames = 0 ;\r
+               p->sfinfo.channels = chans ;\r
+               p->sfinfo.format = fmt ;\r
+               p->sfinfo.samplerate = srate ;\r
+               p->sfinfo.sections = 0 ;\r
+               p->sfinfo.seekable = 0 ;\r
+\r
+               p->sf = sf_open (path.c_str (), mode, &p->sfinfo) ;\r
+               } ;\r
+\r
+       return ;\r
+} /* SndfileHandle std::string constructor */\r
+\r
+inline\r
+SndfileHandle::SndfileHandle (int fd, bool close_desc, int mode, int fmt, int chans, int srate)\r
+: p (NULL)\r
+{\r
+       if (fd < 0)\r
+               return ;\r
+\r
+       p = new (std::nothrow) SNDFILE_ref () ;\r
+\r
+       if (p != NULL)\r
+       {       p->ref = 1 ;\r
+\r
+               p->sfinfo.frames = 0 ;\r
+               p->sfinfo.channels = chans ;\r
+               p->sfinfo.format = fmt ;\r
+               p->sfinfo.samplerate = srate ;\r
+               p->sfinfo.sections = 0 ;\r
+               p->sfinfo.seekable = 0 ;\r
+\r
+               p->sf = sf_open_fd (fd, mode, &p->sfinfo, close_desc) ;\r
+               } ;\r
+\r
+       return ;\r
+} /* SndfileHandle fd constructor */\r
+\r
+inline\r
+SndfileHandle::~SndfileHandle (void)\r
+{      if (p != NULL && --p->ref == 0)\r
+               delete p ;\r
+} /* SndfileHandle destructor */\r
+\r
+\r
+inline\r
+SndfileHandle::SndfileHandle (const SndfileHandle &orig)\r
+: p (orig.p)\r
+{      if (p != NULL)\r
+               ++p->ref ;\r
+} /* SndfileHandle copy constructor */\r
+\r
+inline SndfileHandle &\r
+SndfileHandle::operator = (const SndfileHandle &rhs)\r
+{\r
+       if (&rhs == this)\r
+               return *this ;\r
+       if (p != NULL && --p->ref == 0)\r
+               delete p ;\r
+\r
+       p = rhs.p ;\r
+       if (p != NULL)\r
+               ++p->ref ;\r
+\r
+       return *this ;\r
+} /* SndfileHandle assignment operator */\r
+\r
+inline int\r
+SndfileHandle::error (void) const\r
+{      return sf_error (p->sf) ; }\r
+\r
+inline const char *\r
+SndfileHandle::strError (void) const\r
+{      return sf_strerror (p->sf) ; }\r
+\r
+inline int\r
+SndfileHandle::command (int cmd, void *data, int datasize)\r
+{      return sf_command (p->sf, cmd, data, datasize) ; }\r
+\r
+inline sf_count_t\r
+SndfileHandle::seek (sf_count_t frame_count, int whence)\r
+{      return sf_seek (p->sf, frame_count, whence) ; }\r
+\r
+inline void\r
+SndfileHandle::writeSync (void)\r
+{      sf_write_sync (p->sf) ; }\r
+\r
+inline int\r
+SndfileHandle::setString (int str_type, const char* str)\r
+{      return sf_set_string (p->sf, str_type, str) ; }\r
+\r
+inline const char*\r
+SndfileHandle::getString (int str_type) const\r
+{      return sf_get_string (p->sf, str_type) ; }\r
+\r
+inline int\r
+SndfileHandle::formatCheck (int fmt, int chans, int srate)\r
+{\r
+       SF_INFO sfinfo ;\r
+\r
+       sfinfo.frames = 0 ;\r
+       sfinfo.channels = chans ;\r
+       sfinfo.format = fmt ;\r
+       sfinfo.samplerate = srate ;\r
+       sfinfo.sections = 0 ;\r
+       sfinfo.seekable = 0 ;\r
+\r
+       return sf_format_check (&sfinfo) ;\r
+}\r
+\r
+/*---------------------------------------------------------------------*/\r
+\r
+inline sf_count_t\r
+SndfileHandle::read (short *ptr, sf_count_t items)\r
+{      return sf_read_short (p->sf, ptr, items) ; }\r
+\r
+inline sf_count_t\r
+SndfileHandle::read (int *ptr, sf_count_t items)\r
+{      return sf_read_int (p->sf, ptr, items) ; }\r
+\r
+inline sf_count_t\r
+SndfileHandle::read (float *ptr, sf_count_t items)\r
+{      return sf_read_float (p->sf, ptr, items) ; }\r
+\r
+inline sf_count_t\r
+SndfileHandle::read (double *ptr, sf_count_t items)\r
+{      return sf_read_double (p->sf, ptr, items) ; }\r
+\r
+inline sf_count_t\r
+SndfileHandle::write (const short *ptr, sf_count_t items)\r
+{      return sf_write_short (p->sf, ptr, items) ; }\r
+\r
+inline sf_count_t\r
+SndfileHandle::write (const int *ptr, sf_count_t items)\r
+{      return sf_write_int (p->sf, ptr, items) ; }\r
+\r
+inline sf_count_t\r
+SndfileHandle::write (const float *ptr, sf_count_t items)\r
+{      return sf_write_float (p->sf, ptr, items) ; }\r
+\r
+inline sf_count_t\r
+SndfileHandle::write (const double *ptr, sf_count_t items)\r
+{      return sf_write_double (p->sf, ptr, items) ; }\r
+\r
+inline sf_count_t\r
+SndfileHandle::readf (short *ptr, sf_count_t frame_count)\r
+{      return sf_readf_short (p->sf, ptr, frame_count) ; }\r
+\r
+inline sf_count_t\r
+SndfileHandle::readf (int *ptr, sf_count_t frame_count)\r
+{      return sf_readf_int (p->sf, ptr, frame_count) ; }\r
+\r
+inline sf_count_t\r
+SndfileHandle::readf (float *ptr, sf_count_t frame_count)\r
+{      return sf_readf_float (p->sf, ptr, frame_count) ; }\r
+\r
+inline sf_count_t\r
+SndfileHandle::readf (double *ptr, sf_count_t frame_count)\r
+{      return sf_readf_double (p->sf, ptr, frame_count) ; }\r
+\r
+inline sf_count_t\r
+SndfileHandle::writef (const short *ptr, sf_count_t frame_count)\r
+{      return sf_writef_short (p->sf, ptr, frame_count) ; }\r
+\r
+inline sf_count_t\r
+SndfileHandle::writef (const int *ptr, sf_count_t frame_count)\r
+{      return sf_writef_int (p->sf, ptr, frame_count) ; }\r
+\r
+inline sf_count_t\r
+SndfileHandle::writef (const float *ptr, sf_count_t frame_count)\r
+{      return sf_writef_float (p->sf, ptr, frame_count) ; }\r
+\r
+inline sf_count_t\r
+SndfileHandle::writef (const double *ptr, sf_count_t frame_count)\r
+{      return sf_writef_double (p->sf, ptr, frame_count) ; }\r
+\r
+inline sf_count_t\r
+SndfileHandle::readRaw (void *ptr, sf_count_t bytes)\r
+{      return sf_read_raw (p->sf, ptr, bytes) ; }\r
+\r
+inline sf_count_t\r
+SndfileHandle::writeRaw (const void *ptr, sf_count_t bytes)\r
+{      return sf_write_raw (p->sf, ptr, bytes) ; }\r
+\r
+inline SNDFILE *\r
+SndfileHandle::rawHandle (void)\r
+{      return (p ? p->sf : NULL) ; }\r
+\r
+inline SNDFILE *\r
+SndfileHandle::takeOwnership (void)\r
+{\r
+       if (p == NULL || (p->ref != 1))\r
+               return NULL ;\r
+\r
+       SNDFILE * sf = p->sf ;\r
+       p->sf = NULL ;\r
+       delete p ;\r
+       p = NULL ;\r
+       return sf ;\r
+}\r
+\r
+#ifdef ENABLE_SNDFILE_WINDOWS_PROTOTYPES\r
+\r
+inline\r
+SndfileHandle::SndfileHandle (LPCWSTR wpath, int mode, int fmt, int chans, int srate)\r
+: p (NULL)\r
+{\r
+       p = new (std::nothrow) SNDFILE_ref () ;\r
+\r
+       if (p != NULL)\r
+       {       p->ref = 1 ;\r
+\r
+               p->sfinfo.frames = 0 ;\r
+               p->sfinfo.channels = chans ;\r
+               p->sfinfo.format = fmt ;\r
+               p->sfinfo.samplerate = srate ;\r
+               p->sfinfo.sections = 0 ;\r
+               p->sfinfo.seekable = 0 ;\r
+\r
+               p->sf = sf_wchar_open (wpath, mode, &p->sfinfo) ;\r
+               } ;\r
+\r
+       return ;\r
+} /* SndfileHandle const wchar_t * constructor */\r
+\r
+#endif\r
+\r
+#endif /* SNDFILE_HH */\r
+\r
diff --git a/fdmdv2/libsndfile/lib/libsndfile-1.def b/fdmdv2/libsndfile/lib/libsndfile-1.def
new file mode 100644 (file)
index 0000000..93cab02
--- /dev/null
@@ -0,0 +1,41 @@
+; Auto-generated by create_symbols_file.py
+
+LIBRARY libsndfile-1.dll
+EXPORTS
+
+sf_command           @1
+sf_open              @2
+sf_close             @3
+sf_seek              @4
+sf_error             @7
+sf_perror            @8
+sf_error_str         @9
+sf_error_number      @10
+sf_format_check      @11
+sf_read_raw          @16
+sf_readf_short       @17
+sf_readf_int         @18
+sf_readf_float       @19
+sf_readf_double      @20
+sf_read_short        @21
+sf_read_int          @22
+sf_read_float        @23
+sf_read_double       @24
+sf_write_raw         @32
+sf_writef_short      @33
+sf_writef_int        @34
+sf_writef_float      @35
+sf_writef_double     @36
+sf_write_short       @37
+sf_write_int         @38
+sf_write_float       @39
+sf_write_double      @40
+sf_strerror          @50
+sf_get_string        @60
+sf_set_string        @61
+sf_version_string    @68
+sf_open_fd           @70
+sf_wchar_open        @71
+sf_open_virtual      @80
+sf_write_sync        @90
+
diff --git a/fdmdv2/libsndfile/lib/libsndfile-1.lib b/fdmdv2/libsndfile/lib/libsndfile-1.lib
new file mode 100644 (file)
index 0000000..424f8dc
Binary files /dev/null and b/fdmdv2/libsndfile/lib/libsndfile-1.lib differ
diff --git a/fdmdv2/libsndfile/lib/pkgconfig/sndfile.pc b/fdmdv2/libsndfile/lib/pkgconfig/sndfile.pc
new file mode 100644 (file)
index 0000000..db2765a
--- /dev/null
@@ -0,0 +1,12 @@
+prefix=c:/devel/target/libsndfile
+exec_prefix=${prefix}
+libdir=${exec_prefix}/lib
+includedir=${prefix}/include
+
+Name: sndfile
+Description: A library for reading and writing audio files
+Requires: 
+Version: 1.0.25
+Libs: -L${libdir} -lsndfile
+Libs.private: Ext/libflac.la Ext/libvorbis.la Ext/libogg.la
+Cflags: -I${includedir} 
diff --git a/fdmdv2/libsndfile/unins000.dat b/fdmdv2/libsndfile/unins000.dat
new file mode 100644 (file)
index 0000000..73ca899
Binary files /dev/null and b/fdmdv2/libsndfile/unins000.dat differ
diff --git a/fdmdv2/libsndfile/unins000.exe b/fdmdv2/libsndfile/unins000.exe
new file mode 100644 (file)
index 0000000..428e561
Binary files /dev/null and b/fdmdv2/libsndfile/unins000.exe differ