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.
