Version 1.3.3 (2017 November 7)

 * Fix and issue with corrupt continued packet handling.
 * Update Windows projects and build settings.
 * Remove Mac OS 9 build support.

Version 1.3.2 (2014 May 27)

 * Fix an bug in oggpack_writecopy().

Version 1.3.1 (2013 May 12)

* Guard against very large packets.
* Respect the configure --docdir override.
* Documentation fixes.
* More Windows build fixes.

Version 1.3.0 (2011 August 4)

* Add ogg_stream_flush_fill() call
  This produces longer packets on flush, similar to
  what ogg_stream_pageout_fill() does for single pages.
* Windows build fixes

Version 1.2.2 (2010 December 07)

* Build fix (types correction) for Mac OS X
* Update win32 project files to Visual Studio 2008
* ogg_stream_pageout_fill documentation fix

Version 1.2.1 (2010 November 01)

* Various build updates (see SVN)
* Add ogg_stream_pageout_fill() to API to allow applications
  greater explicit flexibility in page sizing.
* Documentation updates including multiplexing description,
  terminology and API (incl. ogg_packet_clear(),
  ogg_stream_pageout_fill())
* Correct possible buffer overwrite in stream encoding on 32 bit
  when a single packet exceed 250MB.
* Correct read-buffer overrun [without side effects] under
  similar circumstances.
* Update unit testing to work properly with new page spill
  heuristic.

Version 1.2.0 (2010 March 25)

* Alter default flushing behavior to span less often and use larger page
  sizes when packet sizes are large.
* Build fixes for additional compilers
* Documentation updates

Version 1.1.4 (2009 June 24)

* New async error reporting mechanism. Calls made after a fatal error are
  now safely handled in the event an error code is ignored
* Added allocation checks useful to some embedded applications
* fix possible read past end of buffer when reading 0 bits
* Updates to API documentation
* Build fixes

Version 1.1.3 (2005 November 27)

 * Correct a bug in the granulepos field of pages where no packet ends
 * New VS2003 and XCode builds, minor fixes to other builds
 * documentation fixes and cleanup

Version 1.1.2 (2004 September 23)

 * fix a bug with multipage packet assembly after seek

Version 1.1.1 (2004 September 12)

 * various bugfixes
 * important bugfix for 64-bit platforms
 * various portability fixes
 * autotools cleanup from Thomas Vander Stichele
 * Symbian OS build support from Colin Ward at CSIRO
 * new multiplexed Ogg stream documentation

Version 1.1 (2003 November 17)

 * big-endian bitpacker routines for Theora
 * various portability fixes
 * improved API documenation
 * RFC 3533 documentation of the format by Silvia Pfeiffer at CSIRO
 * RFC 3534 documentation of the application/ogg mime-type by Linus Walleij

Version 1.0 (2002 July 19)

 * First stable release
 * little-endian bitpacker routines for Vorbis
 * basic Ogg bitstream sync and coding support

