changeset 137:b38f6c5a0453

Remove compiler/platform combos we don't support
author Chris Cannam <cannam@all-day-breakfast.com>
date Wed, 26 Oct 2016 13:25:08 +0100
parents ce0478b62770
children eb184393b244
files win32-msvc/.keep win64-mingw/include/FLAC++/Makefile win64-mingw/include/FLAC++/Makefile.am win64-mingw/include/FLAC++/Makefile.in win64-mingw/include/FLAC++/all.h win64-mingw/include/FLAC++/decoder.h win64-mingw/include/FLAC++/encoder.h win64-mingw/include/FLAC++/export.h win64-mingw/include/FLAC++/metadata.h win64-mingw/include/FLAC/Makefile win64-mingw/include/FLAC/Makefile.am win64-mingw/include/FLAC/Makefile.in win64-mingw/include/FLAC/all.h win64-mingw/include/FLAC/assert.h win64-mingw/include/FLAC/callback.h win64-mingw/include/FLAC/export.h win64-mingw/include/FLAC/format.h win64-mingw/include/FLAC/metadata.h win64-mingw/include/FLAC/ordinals.h win64-mingw/include/FLAC/stream_decoder.h win64-mingw/include/FLAC/stream_encoder.h win64-mingw/include/ogg/config_types.h win64-mingw/include/ogg/ogg.h win64-mingw/include/ogg/os_types.h win64-mingw/include/sndfile.h win64-mingw/include/sndfile.hh win64-mingw/include/vorbis/codec.h win64-mingw/include/vorbis/vorbisenc.h win64-mingw/include/vorbis/vorbisfile.h win64-mingw/lib/libFLAC.a win64-mingw/lib/libogg.a win64-mingw/lib/libsndfile.a win64-mingw/lib/libvorbis.a win64-mingw/lib/libvorbisenc.a win64-mingw/lib/libvorbisfile.a
diffstat 34 files changed, 0 insertions(+), 13374 deletions(-) [+]
line wrap: on
line diff
--- a/win64-mingw/include/FLAC++/Makefile	Wed Oct 26 13:24:45 2016 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,464 +0,0 @@
-# Makefile.in generated by automake 1.7.9 from Makefile.am.
-# include/FLAC++/Makefile.  Generated from Makefile.in by configure.
-
-# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
-# Free Software Foundation, Inc.
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-
-
-#  libFLAC++ - Free Lossless Audio Codec library
-#  Copyright (C) 2002,2003,2004,2005,2006,2007  Josh Coalson
-#
-#  Redistribution and use in source and binary forms, with or without
-#  modification, are permitted provided that the following conditions
-#  are met:
-#
-#  - Redistributions of source code must retain the above copyright
-#  notice, this list of conditions and the following disclaimer.
-#
-#  - Redistributions in binary form must reproduce the above copyright
-#  notice, this list of conditions and the following disclaimer in the
-#  documentation and/or other materials provided with the distribution.
-#
-#  - Neither the name of the Xiph.org Foundation nor the names of its
-#  contributors may be used to endorse or promote products derived from
-#  this software without specific prior written permission.
-#
-#  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-#  ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-#  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-#  A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR
-#  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-#  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-#  PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-#  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-#  LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-#  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-#  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-srcdir = .
-top_srcdir = ../..
-
-pkgdatadir = $(datadir)/flac
-pkglibdir = $(libdir)/flac
-pkgincludedir = $(includedir)/flac
-top_builddir = ../..
-
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-INSTALL = /usr/bin/install -c
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-host_triplet = x86_64-unknown-windows
-ACLOCAL = ${SHELL} /home/cannam/code/sv-dependency-builds/src/flac-1.2.1/missing --run aclocal-1.7
-ACLOCAL_AMFLAGS = -I m4
-AMDEP_FALSE = #
-AMDEP_TRUE = 
-AMTAR = ${SHELL} /home/cannam/code/sv-dependency-builds/src/flac-1.2.1/missing --run tar
-AR = ar
-AS = gas
-AUTOCONF = ${SHELL} /home/cannam/code/sv-dependency-builds/src/flac-1.2.1/missing --run autoconf
-AUTOHEADER = ${SHELL} /home/cannam/code/sv-dependency-builds/src/flac-1.2.1/missing --run autoheader
-AUTOMAKE = ${SHELL} /home/cannam/code/sv-dependency-builds/src/flac-1.2.1/missing --run automake-1.7
-AWK = gawk
-CC = x86_64-w64-mingw32-gcc -I/home/cannam/code/sv-dependency-builds/src/flac-1.2.1/../../script/win64/../..//win64-mingw/include -L/home/cannam/code/sv-dependency-builds/src/flac-1.2.1/../../script/win64/../..//win64-mingw/lib
-CCAS = $(CC)
-CCASFLAGS = $(CFLAGS)
-CCDEPMODE = depmode=gcc3
-CFLAGS = -O3 -funroll-loops -finline-functions -Wall -W -Winline -g -O2
-CPP = x86_64-w64-mingw32-gcc -I/home/cannam/code/sv-dependency-builds/src/flac-1.2.1/../../script/win64/../..//win64-mingw/include -L/home/cannam/code/sv-dependency-builds/src/flac-1.2.1/../../script/win64/../..//win64-mingw/lib -E
-CPPFLAGS = -DFLaC__INLINE=__inline__ -DNDEBUG -I$(top_builddir) -I$(srcdir)/include -I$(top_srcdir)/include 
-CXX = x86_64-w64-mingw32-g++ -I/home/cannam/code/sv-dependency-builds/src/flac-1.2.1/../../script/win64/../..//win64-mingw/include -L/home/cannam/code/sv-dependency-builds/src/flac-1.2.1/../../script/win64/../..//win64-mingw/lib
-CXXCPP = x86_64-w64-mingw32-g++ -I/home/cannam/code/sv-dependency-builds/src/flac-1.2.1/../../script/win64/../..//win64-mingw/include -L/home/cannam/code/sv-dependency-builds/src/flac-1.2.1/../../script/win64/../..//win64-mingw/lib -E
-CXXDEPMODE = depmode=gcc3
-CXXFLAGS = -g -O2
-CYGPATH_W = echo
-DEBUG_FALSE = 
-DEBUG_TRUE = #
-DEFS = -DHAVE_CONFIG_H
-DEPDIR = .deps
-DOCBOOK_TO_MAN = 
-DOXYGEN = doxygen
-ECHO = echo
-ECHO_C = 
-ECHO_N = -n
-ECHO_T = 
-EGREP = grep -E
-EXEEXT = .exe
-F77 = 
-FFLAGS = 
-FLAC__TEST_LEVEL = 1
-FLAC__TEST_WITH_VALGRIND = no
-FLaC__CPU_IA32_FALSE = 
-FLaC__CPU_IA32_TRUE = #
-FLaC__CPU_PPC_FALSE = 
-FLaC__CPU_PPC_TRUE = #
-FLaC__CPU_SPARC_FALSE = 
-FLaC__CPU_SPARC_TRUE = #
-FLaC__HAS_AS_FALSE = 
-FLaC__HAS_AS_TRUE = #
-FLaC__HAS_AS__TEMPORARILY_DISABLED_FALSE = 
-FLaC__HAS_AS__TEMPORARILY_DISABLED_TRUE = #
-FLaC__HAS_DOCBOOK_TO_MAN_FALSE = 
-FLaC__HAS_DOCBOOK_TO_MAN_TRUE = #
-FLaC__HAS_DOXYGEN_FALSE = #
-FLaC__HAS_DOXYGEN_TRUE = 
-FLaC__HAS_GAS_FALSE = #
-FLaC__HAS_GAS_TRUE = 
-FLaC__HAS_GAS__TEMPORARILY_DISABLED_FALSE = 
-FLaC__HAS_GAS__TEMPORARILY_DISABLED_TRUE = #
-FLaC__HAS_NASM_FALSE = 
-FLaC__HAS_NASM_TRUE = #
-FLaC__HAS_OGG_FALSE = #
-FLaC__HAS_OGG_TRUE = 
-FLaC__HAS_XMMS_FALSE = 
-FLaC__HAS_XMMS_TRUE = #
-FLaC__INSTALL_XMMS_PLUGIN_LOCALLY_FALSE = 
-FLaC__INSTALL_XMMS_PLUGIN_LOCALLY_TRUE = #
-FLaC__NO_ASM_FALSE = 
-FLaC__NO_ASM_TRUE = #
-FLaC__SSE_OS_FALSE = 
-FLaC__SSE_OS_TRUE = #
-FLaC__SYS_DARWIN_FALSE = 
-FLaC__SYS_DARWIN_TRUE = #
-FLaC__SYS_LINUX_FALSE = 
-FLaC__SYS_LINUX_TRUE = #
-FLaC__USE_3DNOW_FALSE = #
-FLaC__USE_3DNOW_TRUE = 
-FLaC__USE_ALTIVEC_FALSE = #
-FLaC__USE_ALTIVEC_TRUE = 
-FLaC__WITH_CPPLIBS_FALSE = #
-FLaC__WITH_CPPLIBS_TRUE = 
-GAS = gas
-INSTALL_DATA = ${INSTALL} -m 644
-INSTALL_PROGRAM = ${INSTALL}
-INSTALL_SCRIPT = ${INSTALL}
-INSTALL_STRIP_PROGRAM = ${SHELL} $(install_sh) -c -s
-LDFLAGS = 
-LIBICONV = 
-LIBOBJS = 
-LIBS = 
-LIBTOOL = $(SHELL) $(top_builddir)/libtool
-LN_S = ln -s
-LTLIBICONV = 
-LTLIBOBJS = 
-MAINT = #
-MAINTAINER_MODE_FALSE = 
-MAINTAINER_MODE_TRUE = #
-MAKEINFO = ${SHELL} /home/cannam/code/sv-dependency-builds/src/flac-1.2.1/missing --run makeinfo
-MINGW_WINSOCK_LIBS = 
-NASM = 
-OBJEXT = o
-OBJ_FORMAT = elf
-OGG_CFLAGS = -I/home/cannam/code/sv-dependency-builds/src/flac-1.2.1/../../script/win64/../..//win64-mingw//include
-OGG_LIBS = -L/home/cannam/code/sv-dependency-builds/src/flac-1.2.1/../../script/win64/../..//win64-mingw//lib -logg
-PACKAGE = flac
-PACKAGE_BUGREPORT = 
-PACKAGE_NAME = 
-PACKAGE_STRING = 
-PACKAGE_TARNAME = 
-PACKAGE_VERSION = 
-PATH_SEPARATOR = :
-RANLIB = ranlib
-SET_MAKE = 
-SHELL = /bin/sh
-STRIP = strip
-VERSION = 1.2.1
-XMMS_CFLAGS = 
-XMMS_CONFIG = no
-XMMS_DATA_DIR = 
-XMMS_EFFECT_PLUGIN_DIR = 
-XMMS_GENERAL_PLUGIN_DIR = 
-XMMS_INPUT_PLUGIN_DIR = 
-XMMS_LIBS = 
-XMMS_OUTPUT_PLUGIN_DIR = 
-XMMS_PLUGIN_DIR = 
-XMMS_VERSION = 
-XMMS_VISUALIZATION_PLUGIN_DIR = 
-ac_ct_AR = ar
-ac_ct_CC = 
-ac_ct_CXX = 
-ac_ct_F77 = 
-ac_ct_RANLIB = ranlib
-ac_ct_STRIP = strip
-am__fastdepCC_FALSE = #
-am__fastdepCC_TRUE = 
-am__fastdepCXX_FALSE = #
-am__fastdepCXX_TRUE = 
-am__include = include
-am__leading_dot = .
-am__quote = 
-bindir = ${exec_prefix}/bin
-build = x86_64-unknown-linux-gnu
-build_alias = 
-build_cpu = x86_64
-build_os = linux-gnu
-build_vendor = unknown
-datadir = ${prefix}/share
-exec_prefix = ${prefix}
-host = x86_64-unknown-windows
-host_alias = x86_64-unknown-windows
-host_cpu = x86_64
-host_os = windows
-host_vendor = unknown
-includedir = ${prefix}/include
-infodir = ${prefix}/info
-install_sh = /home/cannam/code/sv-dependency-builds/src/flac-1.2.1/install-sh
-libdir = ${exec_prefix}/lib
-libexecdir = ${exec_prefix}/libexec
-localstatedir = ${prefix}/var
-mandir = ${prefix}/man
-oldincludedir = /usr/include
-prefix = /home/cannam/code/sv-dependency-builds/src/flac-1.2.1/../../script/win64/../..//win64-mingw/
-program_transform_name = s,x,x,
-sbindir = ${exec_prefix}/sbin
-sharedstatedir = ${prefix}/com
-sysconfdir = ${prefix}/etc
-target_alias = 
-
-flaccppincludedir = $(includedir)/FLAC++
-
-flaccppinclude_HEADERS = \
-	all.h \
-	decoder.h \
-	encoder.h \
-	export.h \
-	metadata.h
-
-subdir = include/FLAC++
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-DIST_SOURCES =
-HEADERS = $(flaccppinclude_HEADERS)
-
-DIST_COMMON = $(flaccppinclude_HEADERS) $(srcdir)/Makefile.in \
-	Makefile.am
-all: all-am
-
-.SUFFIXES:
-$(srcdir)/Makefile.in: # Makefile.am  $(top_srcdir)/configure.in $(ACLOCAL_M4)
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  include/FLAC++/Makefile
-Makefile: # $(srcdir)/Makefile.in  $(top_builddir)/config.status
-	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-
-distclean-libtool:
-	-rm -f libtool
-uninstall-info-am:
-flaccppincludeHEADERS_INSTALL = $(INSTALL_HEADER)
-install-flaccppincludeHEADERS: $(flaccppinclude_HEADERS)
-	@$(NORMAL_INSTALL)
-	$(mkinstalldirs) $(DESTDIR)$(flaccppincludedir)
-	@list='$(flaccppinclude_HEADERS)'; for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  f="`echo $$p | sed -e 's|^.*/||'`"; \
-	  echo " $(flaccppincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(flaccppincludedir)/$$f"; \
-	  $(flaccppincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(flaccppincludedir)/$$f; \
-	done
-
-uninstall-flaccppincludeHEADERS:
-	@$(NORMAL_UNINSTALL)
-	@list='$(flaccppinclude_HEADERS)'; for p in $$list; do \
-	  f="`echo $$p | sed -e 's|^.*/||'`"; \
-	  echo " rm -f $(DESTDIR)$(flaccppincludedir)/$$f"; \
-	  rm -f $(DESTDIR)$(flaccppincludedir)/$$f; \
-	done
-
-ETAGS = etags
-ETAGSFLAGS =
-
-CTAGS = ctags
-CTAGSFLAGS =
-
-tags: TAGS
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '    { files[$$0] = 1; } \
-	       END { for (i in files) print i; }'`; \
-	mkid -fID $$unique
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	tags=; \
-	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '    { files[$$0] = 1; } \
-	       END { for (i in files) print i; }'`; \
-	test -z "$(ETAGS_ARGS)$$tags$$unique" \
-	  || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	     $$tags $$unique
-
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	tags=; \
-	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '    { files[$$0] = 1; } \
-	       END { for (i in files) print i; }'`; \
-	test -z "$(CTAGS_ARGS)$$tags$$unique" \
-	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$tags $$unique
-
-GTAGS:
-	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && cd $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) $$here
-
-distclean-tags:
-	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-
-top_distdir = ../..
-distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
-
-distdir: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
-	list='$(DISTFILES)'; for file in $$list; do \
-	  case $$file in \
-	    $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
-	    $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
-	  esac; \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
-	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
-	    dir="/$$dir"; \
-	    $(mkinstalldirs) "$(distdir)$$dir"; \
-	  else \
-	    dir=''; \
-	  fi; \
-	  if test -d $$d/$$file; then \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
-	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
-	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
-	    || exit 1; \
-	  fi; \
-	done
-check-am: all-am
-check: check-am
-all-am: Makefile $(HEADERS)
-
-installdirs:
-	$(mkinstalldirs) $(DESTDIR)$(flaccppincludedir)
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
-	-rm -f $(CONFIG_CLEAN_FILES)
-
-maintainer-clean-generic:
-	@echo "This command is intended for maintainers to use"
-	@echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic clean-libtool mostlyclean-am
-
-distclean: distclean-am
-	-rm -f Makefile
-distclean-am: clean-am distclean-generic distclean-libtool \
-	distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-info: info-am
-
-info-am:
-
-install-data-am: install-flaccppincludeHEADERS
-
-install-exec-am:
-
-install-info: install-info-am
-
-install-man:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-generic mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-flaccppincludeHEADERS uninstall-info-am
-
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
-	clean-libtool ctags distclean distclean-generic \
-	distclean-libtool distclean-tags distdir dvi dvi-am info \
-	info-am install install-am install-data install-data-am \
-	install-exec install-exec-am install-flaccppincludeHEADERS \
-	install-info install-info-am install-man install-strip \
-	installcheck installcheck-am installdirs maintainer-clean \
-	maintainer-clean-generic mostlyclean mostlyclean-generic \
-	mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
-	uninstall-am uninstall-flaccppincludeHEADERS uninstall-info-am
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
--- a/win64-mingw/include/FLAC++/Makefile.am	Wed Oct 26 13:24:45 2016 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,38 +0,0 @@
-#  libFLAC++ - Free Lossless Audio Codec library
-#  Copyright (C) 2002,2003,2004,2005,2006,2007  Josh Coalson
-#
-#  Redistribution and use in source and binary forms, with or without
-#  modification, are permitted provided that the following conditions
-#  are met:
-#
-#  - Redistributions of source code must retain the above copyright
-#  notice, this list of conditions and the following disclaimer.
-#
-#  - Redistributions in binary form must reproduce the above copyright
-#  notice, this list of conditions and the following disclaimer in the
-#  documentation and/or other materials provided with the distribution.
-#
-#  - Neither the name of the Xiph.org Foundation nor the names of its
-#  contributors may be used to endorse or promote products derived from
-#  this software without specific prior written permission.
-#
-#  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-#  ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-#  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-#  A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR
-#  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-#  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-#  PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-#  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-#  LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-#  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-#  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-flaccppincludedir = $(includedir)/FLAC++
-
-flaccppinclude_HEADERS = \
-	all.h \
-	decoder.h \
-	encoder.h \
-	export.h \
-	metadata.h
--- a/win64-mingw/include/FLAC++/Makefile.in	Wed Oct 26 13:24:45 2016 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,464 +0,0 @@
-# Makefile.in generated by automake 1.7.9 from Makefile.am.
-# @configure_input@
-
-# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
-# Free Software Foundation, Inc.
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-
-#  libFLAC++ - Free Lossless Audio Codec library
-#  Copyright (C) 2002,2003,2004,2005,2006,2007  Josh Coalson
-#
-#  Redistribution and use in source and binary forms, with or without
-#  modification, are permitted provided that the following conditions
-#  are met:
-#
-#  - Redistributions of source code must retain the above copyright
-#  notice, this list of conditions and the following disclaimer.
-#
-#  - Redistributions in binary form must reproduce the above copyright
-#  notice, this list of conditions and the following disclaimer in the
-#  documentation and/or other materials provided with the distribution.
-#
-#  - Neither the name of the Xiph.org Foundation nor the names of its
-#  contributors may be used to endorse or promote products derived from
-#  this software without specific prior written permission.
-#
-#  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-#  ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-#  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-#  A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR
-#  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-#  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-#  PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-#  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-#  LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-#  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-#  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-srcdir = @srcdir@
-top_srcdir = @top_srcdir@
-VPATH = @srcdir@
-pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-top_builddir = ../..
-
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-INSTALL = @INSTALL@
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-host_triplet = @host@
-ACLOCAL = @ACLOCAL@
-ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
-AMDEP_FALSE = @AMDEP_FALSE@
-AMDEP_TRUE = @AMDEP_TRUE@
-AMTAR = @AMTAR@
-AR = @AR@
-AS = @AS@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCAS = @CCAS@
-CCASFLAGS = @CCASFLAGS@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEBUG_FALSE = @DEBUG_FALSE@
-DEBUG_TRUE = @DEBUG_TRUE@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DOCBOOK_TO_MAN = @DOCBOOK_TO_MAN@
-DOXYGEN = @DOXYGEN@
-ECHO = @ECHO@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-F77 = @F77@
-FFLAGS = @FFLAGS@
-FLAC__TEST_LEVEL = @FLAC__TEST_LEVEL@
-FLAC__TEST_WITH_VALGRIND = @FLAC__TEST_WITH_VALGRIND@
-FLaC__CPU_IA32_FALSE = @FLaC__CPU_IA32_FALSE@
-FLaC__CPU_IA32_TRUE = @FLaC__CPU_IA32_TRUE@
-FLaC__CPU_PPC_FALSE = @FLaC__CPU_PPC_FALSE@
-FLaC__CPU_PPC_TRUE = @FLaC__CPU_PPC_TRUE@
-FLaC__CPU_SPARC_FALSE = @FLaC__CPU_SPARC_FALSE@
-FLaC__CPU_SPARC_TRUE = @FLaC__CPU_SPARC_TRUE@
-FLaC__HAS_AS_FALSE = @FLaC__HAS_AS_FALSE@
-FLaC__HAS_AS_TRUE = @FLaC__HAS_AS_TRUE@
-FLaC__HAS_AS__TEMPORARILY_DISABLED_FALSE = @FLaC__HAS_AS__TEMPORARILY_DISABLED_FALSE@
-FLaC__HAS_AS__TEMPORARILY_DISABLED_TRUE = @FLaC__HAS_AS__TEMPORARILY_DISABLED_TRUE@
-FLaC__HAS_DOCBOOK_TO_MAN_FALSE = @FLaC__HAS_DOCBOOK_TO_MAN_FALSE@
-FLaC__HAS_DOCBOOK_TO_MAN_TRUE = @FLaC__HAS_DOCBOOK_TO_MAN_TRUE@
-FLaC__HAS_DOXYGEN_FALSE = @FLaC__HAS_DOXYGEN_FALSE@
-FLaC__HAS_DOXYGEN_TRUE = @FLaC__HAS_DOXYGEN_TRUE@
-FLaC__HAS_GAS_FALSE = @FLaC__HAS_GAS_FALSE@
-FLaC__HAS_GAS_TRUE = @FLaC__HAS_GAS_TRUE@
-FLaC__HAS_GAS__TEMPORARILY_DISABLED_FALSE = @FLaC__HAS_GAS__TEMPORARILY_DISABLED_FALSE@
-FLaC__HAS_GAS__TEMPORARILY_DISABLED_TRUE = @FLaC__HAS_GAS__TEMPORARILY_DISABLED_TRUE@
-FLaC__HAS_NASM_FALSE = @FLaC__HAS_NASM_FALSE@
-FLaC__HAS_NASM_TRUE = @FLaC__HAS_NASM_TRUE@
-FLaC__HAS_OGG_FALSE = @FLaC__HAS_OGG_FALSE@
-FLaC__HAS_OGG_TRUE = @FLaC__HAS_OGG_TRUE@
-FLaC__HAS_XMMS_FALSE = @FLaC__HAS_XMMS_FALSE@
-FLaC__HAS_XMMS_TRUE = @FLaC__HAS_XMMS_TRUE@
-FLaC__INSTALL_XMMS_PLUGIN_LOCALLY_FALSE = @FLaC__INSTALL_XMMS_PLUGIN_LOCALLY_FALSE@
-FLaC__INSTALL_XMMS_PLUGIN_LOCALLY_TRUE = @FLaC__INSTALL_XMMS_PLUGIN_LOCALLY_TRUE@
-FLaC__NO_ASM_FALSE = @FLaC__NO_ASM_FALSE@
-FLaC__NO_ASM_TRUE = @FLaC__NO_ASM_TRUE@
-FLaC__SSE_OS_FALSE = @FLaC__SSE_OS_FALSE@
-FLaC__SSE_OS_TRUE = @FLaC__SSE_OS_TRUE@
-FLaC__SYS_DARWIN_FALSE = @FLaC__SYS_DARWIN_FALSE@
-FLaC__SYS_DARWIN_TRUE = @FLaC__SYS_DARWIN_TRUE@
-FLaC__SYS_LINUX_FALSE = @FLaC__SYS_LINUX_FALSE@
-FLaC__SYS_LINUX_TRUE = @FLaC__SYS_LINUX_TRUE@
-FLaC__USE_3DNOW_FALSE = @FLaC__USE_3DNOW_FALSE@
-FLaC__USE_3DNOW_TRUE = @FLaC__USE_3DNOW_TRUE@
-FLaC__USE_ALTIVEC_FALSE = @FLaC__USE_ALTIVEC_FALSE@
-FLaC__USE_ALTIVEC_TRUE = @FLaC__USE_ALTIVEC_TRUE@
-FLaC__WITH_CPPLIBS_FALSE = @FLaC__WITH_CPPLIBS_FALSE@
-FLaC__WITH_CPPLIBS_TRUE = @FLaC__WITH_CPPLIBS_TRUE@
-GAS = @GAS@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LDFLAGS = @LDFLAGS@
-LIBICONV = @LIBICONV@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LN_S = @LN_S@
-LTLIBICONV = @LTLIBICONV@
-LTLIBOBJS = @LTLIBOBJS@
-MAINT = @MAINT@
-MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
-MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
-MAKEINFO = @MAKEINFO@
-MINGW_WINSOCK_LIBS = @MINGW_WINSOCK_LIBS@
-NASM = @NASM@
-OBJEXT = @OBJEXT@
-OBJ_FORMAT = @OBJ_FORMAT@
-OGG_CFLAGS = @OGG_CFLAGS@
-OGG_LIBS = @OGG_LIBS@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-RANLIB = @RANLIB@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-XMMS_CFLAGS = @XMMS_CFLAGS@
-XMMS_CONFIG = @XMMS_CONFIG@
-XMMS_DATA_DIR = @XMMS_DATA_DIR@
-XMMS_EFFECT_PLUGIN_DIR = @XMMS_EFFECT_PLUGIN_DIR@
-XMMS_GENERAL_PLUGIN_DIR = @XMMS_GENERAL_PLUGIN_DIR@
-XMMS_INPUT_PLUGIN_DIR = @XMMS_INPUT_PLUGIN_DIR@
-XMMS_LIBS = @XMMS_LIBS@
-XMMS_OUTPUT_PLUGIN_DIR = @XMMS_OUTPUT_PLUGIN_DIR@
-XMMS_PLUGIN_DIR = @XMMS_PLUGIN_DIR@
-XMMS_VERSION = @XMMS_VERSION@
-XMMS_VISUALIZATION_PLUGIN_DIR = @XMMS_VISUALIZATION_PLUGIN_DIR@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_F77 = @ac_ct_F77@
-ac_ct_RANLIB = @ac_ct_RANLIB@
-ac_ct_STRIP = @ac_ct_STRIP@
-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
-am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
-am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-datadir = @datadir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-oldincludedir = @oldincludedir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-
-flaccppincludedir = $(includedir)/FLAC++
-
-flaccppinclude_HEADERS = \
-	all.h \
-	decoder.h \
-	encoder.h \
-	export.h \
-	metadata.h
-
-subdir = include/FLAC++
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-DIST_SOURCES =
-HEADERS = $(flaccppinclude_HEADERS)
-
-DIST_COMMON = $(flaccppinclude_HEADERS) $(srcdir)/Makefile.in \
-	Makefile.am
-all: all-am
-
-.SUFFIXES:
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am  $(top_srcdir)/configure.in $(ACLOCAL_M4)
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  include/FLAC++/Makefile
-Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in  $(top_builddir)/config.status
-	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-
-distclean-libtool:
-	-rm -f libtool
-uninstall-info-am:
-flaccppincludeHEADERS_INSTALL = $(INSTALL_HEADER)
-install-flaccppincludeHEADERS: $(flaccppinclude_HEADERS)
-	@$(NORMAL_INSTALL)
-	$(mkinstalldirs) $(DESTDIR)$(flaccppincludedir)
-	@list='$(flaccppinclude_HEADERS)'; for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  f="`echo $$p | sed -e 's|^.*/||'`"; \
-	  echo " $(flaccppincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(flaccppincludedir)/$$f"; \
-	  $(flaccppincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(flaccppincludedir)/$$f; \
-	done
-
-uninstall-flaccppincludeHEADERS:
-	@$(NORMAL_UNINSTALL)
-	@list='$(flaccppinclude_HEADERS)'; for p in $$list; do \
-	  f="`echo $$p | sed -e 's|^.*/||'`"; \
-	  echo " rm -f $(DESTDIR)$(flaccppincludedir)/$$f"; \
-	  rm -f $(DESTDIR)$(flaccppincludedir)/$$f; \
-	done
-
-ETAGS = etags
-ETAGSFLAGS =
-
-CTAGS = ctags
-CTAGSFLAGS =
-
-tags: TAGS
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '    { files[$$0] = 1; } \
-	       END { for (i in files) print i; }'`; \
-	mkid -fID $$unique
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	tags=; \
-	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '    { files[$$0] = 1; } \
-	       END { for (i in files) print i; }'`; \
-	test -z "$(ETAGS_ARGS)$$tags$$unique" \
-	  || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	     $$tags $$unique
-
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	tags=; \
-	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '    { files[$$0] = 1; } \
-	       END { for (i in files) print i; }'`; \
-	test -z "$(CTAGS_ARGS)$$tags$$unique" \
-	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$tags $$unique
-
-GTAGS:
-	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && cd $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) $$here
-
-distclean-tags:
-	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-
-top_distdir = ../..
-distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
-
-distdir: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
-	list='$(DISTFILES)'; for file in $$list; do \
-	  case $$file in \
-	    $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
-	    $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
-	  esac; \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
-	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
-	    dir="/$$dir"; \
-	    $(mkinstalldirs) "$(distdir)$$dir"; \
-	  else \
-	    dir=''; \
-	  fi; \
-	  if test -d $$d/$$file; then \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
-	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
-	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
-	    || exit 1; \
-	  fi; \
-	done
-check-am: all-am
-check: check-am
-all-am: Makefile $(HEADERS)
-
-installdirs:
-	$(mkinstalldirs) $(DESTDIR)$(flaccppincludedir)
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
-	-rm -f $(CONFIG_CLEAN_FILES)
-
-maintainer-clean-generic:
-	@echo "This command is intended for maintainers to use"
-	@echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic clean-libtool mostlyclean-am
-
-distclean: distclean-am
-	-rm -f Makefile
-distclean-am: clean-am distclean-generic distclean-libtool \
-	distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-info: info-am
-
-info-am:
-
-install-data-am: install-flaccppincludeHEADERS
-
-install-exec-am:
-
-install-info: install-info-am
-
-install-man:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-generic mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-flaccppincludeHEADERS uninstall-info-am
-
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
-	clean-libtool ctags distclean distclean-generic \
-	distclean-libtool distclean-tags distdir dvi dvi-am info \
-	info-am install install-am install-data install-data-am \
-	install-exec install-exec-am install-flaccppincludeHEADERS \
-	install-info install-info-am install-man install-strip \
-	installcheck installcheck-am installdirs maintainer-clean \
-	maintainer-clean-generic mostlyclean mostlyclean-generic \
-	mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
-	uninstall-am uninstall-flaccppincludeHEADERS uninstall-info-am
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
--- a/win64-mingw/include/FLAC++/all.h	Wed Oct 26 13:24:45 2016 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,48 +0,0 @@
-/* libFLAC++ - Free Lossless Audio Codec library
- * Copyright (C) 2002,2003,2004,2005,2006,2007  Josh Coalson
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * - Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * - Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * - Neither the name of the Xiph.org Foundation nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef FLACPP__ALL_H
-#define FLACPP__ALL_H
-
-#include "export.h"
-
-#include "encoder.h"
-#include "decoder.h"
-#include "metadata.h"
-
-/** \defgroup flacpp FLAC C++ API
- *
- * The FLAC C++ API is the interface to libFLAC++, a set of classes
- * that encapsulate the encoders, decoders, and metadata interfaces
- * in libFLAC.
- */
-
-#endif
--- a/win64-mingw/include/FLAC++/decoder.h	Wed Oct 26 13:24:45 2016 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,245 +0,0 @@
-/* libFLAC++ - Free Lossless Audio Codec library
- * Copyright (C) 2002,2003,2004,2005,2006,2007  Josh Coalson
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * - Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * - Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * - Neither the name of the Xiph.org Foundation nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef FLACPP__DECODER_H
-#define FLACPP__DECODER_H
-
-#include "export.h"
-
-#include <string>
-#include "FLAC/stream_decoder.h"
-
-
-/** \file include/FLAC++/decoder.h
- *
- *  \brief
- *  This module contains the classes which implement the various
- *  decoders.
- *
- *  See the detailed documentation in the
- *  \link flacpp_decoder decoder \endlink module.
- */
-
-/** \defgroup flacpp_decoder FLAC++/decoder.h: decoder classes
- *  \ingroup flacpp
- *
- *  \brief
- *  This module describes the decoder layers provided by libFLAC++.
- *
- * The libFLAC++ decoder classes are object wrappers around their
- * counterparts in libFLAC.  All decoding layers available in
- * libFLAC are also provided here.  The interface is very similar;
- * make sure to read the \link flac_decoder libFLAC decoder module \endlink.
- *
- * There are only two significant differences here.  First, instead of
- * passing in C function pointers for callbacks, you inherit from the
- * decoder class and provide implementations for the callbacks in your
- * derived class; because of this there is no need for a 'client_data'
- * property.
- *
- * Second, there are two stream decoder classes.  FLAC::Decoder::Stream
- * is used for the same cases that FLAC__stream_decoder_init_stream() /
- * FLAC__stream_decoder_init_ogg_stream() are used, and FLAC::Decoder::File
- * is used for the same cases that
- * FLAC__stream_decoder_init_FILE() and FLAC__stream_decoder_init_file() /
- * FLAC__stream_decoder_init_ogg_FILE() and FLAC__stream_decoder_init_ogg_file()
- * are used.
- */
-
-namespace FLAC {
-	namespace Decoder {
-
-		/** \ingroup flacpp_decoder
-		 *  \brief
-		 *  This class wraps the ::FLAC__StreamDecoder.  If you are
-		 *  decoding from a file, FLAC::Decoder::File may be more
-		 *  convenient.
-		 *
-		 * The usage of this class is similar to FLAC__StreamDecoder,
-		 * except instead of providing callbacks to
-		 * FLAC__stream_decoder_init*_stream(), you will inherit from this
-		 * class and override the virtual callback functions with your
-		 * own implementations, then call init() or init_ogg().  The rest
-		 * of the calls work the same as in the C layer.
-		 *
-		 * Only the read, write, and error callbacks are mandatory.  The
-		 * others are optional; this class provides default
-		 * implementations that do nothing.  In order for seeking to work
-		 * you must overide seek_callback(), tell_callback(),
-		 * length_callback(), and eof_callback().
-		 */
-		class FLACPP_API Stream {
-		public:
-			/** This class is a wrapper around FLAC__StreamDecoderState.
-			 */
-			class FLACPP_API State {
-			public:
-				inline State(::FLAC__StreamDecoderState state): state_(state) { }
-				inline operator ::FLAC__StreamDecoderState() const { return state_; }
-				inline const char *as_cstring() const { return ::FLAC__StreamDecoderStateString[state_]; }
-				inline const char *resolved_as_cstring(const Stream &decoder) const { return ::FLAC__stream_decoder_get_resolved_state_string(decoder.decoder_); }
-			protected:
-				::FLAC__StreamDecoderState state_;
-			};
-
-			Stream();
-			virtual ~Stream();
-
-			//@{
-			/** Call after construction to check the that the object was created
-			 *  successfully.  If not, use get_state() to find out why not.
-			 */
-			virtual bool is_valid() const;
-			inline operator bool() const { return is_valid(); } ///< See is_valid()
-			//@}
-
-			virtual bool set_ogg_serial_number(long value);                        ///< See FLAC__stream_decoder_set_ogg_serial_number()
-			virtual bool set_md5_checking(bool value);                             ///< See FLAC__stream_decoder_set_md5_checking()
-			virtual bool set_metadata_respond(::FLAC__MetadataType type);          ///< See FLAC__stream_decoder_set_metadata_respond()
-			virtual bool set_metadata_respond_application(const FLAC__byte id[4]); ///< See FLAC__stream_decoder_set_metadata_respond_application()
-			virtual bool set_metadata_respond_all();                               ///< See FLAC__stream_decoder_set_metadata_respond_all()
-			virtual bool set_metadata_ignore(::FLAC__MetadataType type);           ///< See FLAC__stream_decoder_set_metadata_ignore()
-			virtual bool set_metadata_ignore_application(const FLAC__byte id[4]);  ///< See FLAC__stream_decoder_set_metadata_ignore_application()
-			virtual bool set_metadata_ignore_all();                                ///< See FLAC__stream_decoder_set_metadata_ignore_all()
-
-			/* get_state() is not virtual since we want subclasses to be able to return their own state */
-			State get_state() const;                                          ///< See FLAC__stream_decoder_get_state()
-			virtual bool get_md5_checking() const;                            ///< See FLAC__stream_decoder_get_md5_checking()
-			virtual FLAC__uint64 get_total_samples() const;                   ///< See FLAC__stream_decoder_get_total_samples()
-			virtual unsigned get_channels() const;                            ///< See FLAC__stream_decoder_get_channels()
-			virtual ::FLAC__ChannelAssignment get_channel_assignment() const; ///< See FLAC__stream_decoder_get_channel_assignment()
-			virtual unsigned get_bits_per_sample() const;                     ///< See FLAC__stream_decoder_get_bits_per_sample()
-			virtual unsigned get_sample_rate() const;                         ///< See FLAC__stream_decoder_get_sample_rate()
-			virtual unsigned get_blocksize() const;                           ///< See FLAC__stream_decoder_get_blocksize()
-			virtual bool get_decode_position(FLAC__uint64 *position) const;   ///< See FLAC__stream_decoder_get_decode_position()
-
-			virtual ::FLAC__StreamDecoderInitStatus init();      ///< Seek FLAC__stream_decoder_init_stream()
-			virtual ::FLAC__StreamDecoderInitStatus init_ogg();  ///< Seek FLAC__stream_decoder_init_ogg_stream()
-
-			virtual bool finish(); ///< See FLAC__stream_decoder_finish()
-
-			virtual bool flush(); ///< See FLAC__stream_decoder_flush()
-			virtual bool reset(); ///< See FLAC__stream_decoder_reset()
-
-			virtual bool process_single();                ///< See FLAC__stream_decoder_process_single()
-			virtual bool process_until_end_of_metadata(); ///< See FLAC__stream_decoder_process_until_end_of_metadata()
-			virtual bool process_until_end_of_stream();   ///< See FLAC__stream_decoder_process_until_end_of_stream()
-			virtual bool skip_single_frame();             ///< See FLAC__stream_decoder_skip_single_frame()
-
-			virtual bool seek_absolute(FLAC__uint64 sample); ///< See FLAC__stream_decoder_seek_absolute()
-		protected:
-			/// see FLAC__StreamDecoderReadCallback
-			virtual ::FLAC__StreamDecoderReadStatus read_callback(FLAC__byte buffer[], size_t *bytes) = 0;
-
-			/// see FLAC__StreamDecoderSeekCallback
-			virtual ::FLAC__StreamDecoderSeekStatus seek_callback(FLAC__uint64 absolute_byte_offset);
-
-			/// see FLAC__StreamDecoderTellCallback
-			virtual ::FLAC__StreamDecoderTellStatus tell_callback(FLAC__uint64 *absolute_byte_offset);
-
-			/// see FLAC__StreamDecoderLengthCallback
-			virtual ::FLAC__StreamDecoderLengthStatus length_callback(FLAC__uint64 *stream_length);
-
-			/// see FLAC__StreamDecoderEofCallback
-			virtual bool eof_callback();
-
-			/// see FLAC__StreamDecoderWriteCallback
-			virtual ::FLAC__StreamDecoderWriteStatus write_callback(const ::FLAC__Frame *frame, const FLAC__int32 * const buffer[]) = 0;
-
-			/// see FLAC__StreamDecoderMetadataCallback
-			virtual void metadata_callback(const ::FLAC__StreamMetadata *metadata);
-
-			/// see FLAC__StreamDecoderErrorCallback
-			virtual void error_callback(::FLAC__StreamDecoderErrorStatus status) = 0;
-
-#if (defined _MSC_VER) || (defined __BORLANDC__) || (defined __GNUG__ && (__GNUG__ < 2 || (__GNUG__ == 2 && __GNUC_MINOR__ < 96))) || (defined __SUNPRO_CC)
-			// lame hack: some MSVC/GCC versions can't see a protected decoder_ from nested State::resolved_as_cstring()
-			friend State;
-#endif
-			::FLAC__StreamDecoder *decoder_;
-
-			static ::FLAC__StreamDecoderReadStatus read_callback_(const ::FLAC__StreamDecoder *decoder, FLAC__byte buffer[], size_t *bytes, void *client_data);
-			static ::FLAC__StreamDecoderSeekStatus seek_callback_(const ::FLAC__StreamDecoder *decoder, FLAC__uint64 absolute_byte_offset, void *client_data);
-			static ::FLAC__StreamDecoderTellStatus tell_callback_(const ::FLAC__StreamDecoder *decoder, FLAC__uint64 *absolute_byte_offset, void *client_data);
-			static ::FLAC__StreamDecoderLengthStatus length_callback_(const ::FLAC__StreamDecoder *decoder, FLAC__uint64 *stream_length, void *client_data);
-			static FLAC__bool eof_callback_(const ::FLAC__StreamDecoder *decoder, void *client_data);
-			static ::FLAC__StreamDecoderWriteStatus write_callback_(const ::FLAC__StreamDecoder *decoder, const ::FLAC__Frame *frame, const FLAC__int32 * const buffer[], void *client_data);
-			static void metadata_callback_(const ::FLAC__StreamDecoder *decoder, const ::FLAC__StreamMetadata *metadata, void *client_data);
-			static void error_callback_(const ::FLAC__StreamDecoder *decoder, ::FLAC__StreamDecoderErrorStatus status, void *client_data);
-		private:
-			// Private and undefined so you can't use them:
-			Stream(const Stream &);
-			void operator=(const Stream &);
-		};
-
-		/** \ingroup flacpp_decoder
-		 *  \brief
-		 *  This class wraps the ::FLAC__StreamDecoder.  If you are
-		 *  not decoding from a file, you may need to use
-		 *  FLAC::Decoder::Stream.
-		 *
-		 * The usage of this class is similar to FLAC__StreamDecoder,
-		 * except instead of providing callbacks to
-		 * FLAC__stream_decoder_init*_FILE() or
-		 * FLAC__stream_decoder_init*_file(), you will inherit from this
-		 * class and override the virtual callback functions with your
-		 * own implementations, then call init() or init_off().  The rest
-		 * of the calls work the same as in the C layer.
-		 *
-		 * Only the write, and error callbacks from FLAC::Decoder::Stream
-		 * are mandatory.  The others are optional; this class provides
-		 * full working implementations for all other callbacks and
-		 * supports seeking.
-		 */
-		class FLACPP_API File: public Stream {
-		public:
-			File();
-			virtual ~File();
-
-			virtual ::FLAC__StreamDecoderInitStatus init(FILE *file);                      ///< See FLAC__stream_decoder_init_FILE()
-			virtual ::FLAC__StreamDecoderInitStatus init(const char *filename);            ///< See FLAC__stream_decoder_init_file()
-			virtual ::FLAC__StreamDecoderInitStatus init(const std::string &filename);     ///< See FLAC__stream_decoder_init_file()
-			virtual ::FLAC__StreamDecoderInitStatus init_ogg(FILE *file);                  ///< See FLAC__stream_decoder_init_ogg_FILE()
-			virtual ::FLAC__StreamDecoderInitStatus init_ogg(const char *filename);        ///< See FLAC__stream_decoder_init_ogg_file()
-			virtual ::FLAC__StreamDecoderInitStatus init_ogg(const std::string &filename); ///< See FLAC__stream_decoder_init_ogg_file()
-		protected:
-			// this is a dummy implementation to satisfy the pure virtual in Stream that is actually supplied internally by the C layer
-			virtual ::FLAC__StreamDecoderReadStatus read_callback(FLAC__byte buffer[], size_t *bytes);
-		private:
-			// Private and undefined so you can't use them:
-			File(const File &);
-			void operator=(const File &);
-		};
-
-	}
-}
-
-#endif
--- a/win64-mingw/include/FLAC++/encoder.h	Wed Oct 26 13:24:45 2016 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,260 +0,0 @@
-/* libFLAC++ - Free Lossless Audio Codec library
- * Copyright (C) 2002,2003,2004,2005,2006,2007  Josh Coalson
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * - Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * - Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * - Neither the name of the Xiph.org Foundation nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef FLACPP__ENCODER_H
-#define FLACPP__ENCODER_H
-
-#include "export.h"
-
-#include "FLAC/stream_encoder.h"
-#include "decoder.h"
-#include "metadata.h"
-
-
-/** \file include/FLAC++/encoder.h
- *
- *  \brief
- *  This module contains the classes which implement the various
- *  encoders.
- *
- *  See the detailed documentation in the
- *  \link flacpp_encoder encoder \endlink module.
- */
-
-/** \defgroup flacpp_encoder FLAC++/encoder.h: encoder classes
- *  \ingroup flacpp
- *
- *  \brief
- *  This module describes the encoder layers provided by libFLAC++.
- *
- * The libFLAC++ encoder classes are object wrappers around their
- * counterparts in libFLAC.  All encoding layers available in
- * libFLAC are also provided here.  The interface is very similar;
- * make sure to read the \link flac_encoder libFLAC encoder module \endlink.
- *
- * There are only two significant differences here.  First, instead of
- * passing in C function pointers for callbacks, you inherit from the
- * encoder class and provide implementations for the callbacks in your
- * derived class; because of this there is no need for a 'client_data'
- * property.
- *
- * Second, there are two stream encoder classes.  FLAC::Encoder::Stream
- * is used for the same cases that FLAC__stream_encoder_init_stream() /
- * FLAC__stream_encoder_init_ogg_stream() are used, and FLAC::Encoder::File
- * is used for the same cases that
- * FLAC__stream_encoder_init_FILE() and FLAC__stream_encoder_init_file() /
- * FLAC__stream_encoder_init_ogg_FILE() and FLAC__stream_encoder_init_ogg_file()
- * are used.
- */
-
-namespace FLAC {
-	namespace Encoder {
-
-		/** \ingroup flacpp_encoder
-		 *  \brief
-		 *  This class wraps the ::FLAC__StreamEncoder.  If you are
-		 *  encoding to a file, FLAC::Encoder::File may be more
-		 *  convenient.
-		 *
-		 * The usage of this class is similar to FLAC__StreamEncoder,
-		 * except instead of providing callbacks to
-		 * FLAC__stream_encoder_init*_stream(), you will inherit from this
-		 * class and override the virtual callback functions with your
-		 * own implementations, then call init() or init_ogg().  The rest of
-		 * the calls work the same as in the C layer.
-		 *
-		 * Only the write callback is mandatory.  The others are
-		 * optional; this class provides default implementations that do
-		 * nothing.  In order for some STREAMINFO and SEEKTABLE data to
-		 * be written properly, you must overide seek_callback() and
-		 * tell_callback(); see FLAC__stream_encoder_init_stream() as to
-		 * why.
-		 */
-		class FLACPP_API Stream {
-		public:
-			/** This class is a wrapper around FLAC__StreamEncoderState.
-			 */
-			class FLACPP_API State {
-			public:
-				inline State(::FLAC__StreamEncoderState state): state_(state) { }
-				inline operator ::FLAC__StreamEncoderState() const { return state_; }
-				inline const char *as_cstring() const { return ::FLAC__StreamEncoderStateString[state_]; }
-				inline const char *resolved_as_cstring(const Stream &encoder) const { return ::FLAC__stream_encoder_get_resolved_state_string(encoder.encoder_); }
-			protected:
-				::FLAC__StreamEncoderState state_;
-			};
-
-			Stream();
-			virtual ~Stream();
-
-			//@{
-			/** Call after construction to check the that the object was created
-			 *  successfully.  If not, use get_state() to find out why not.
-			 *
-			 */
-			virtual bool is_valid() const;
-			inline operator bool() const { return is_valid(); } ///< See is_valid()
-			//@}
-
-			virtual bool set_ogg_serial_number(long value);                 ///< See FLAC__stream_encoder_set_ogg_serial_number()
-			virtual bool set_verify(bool value);                            ///< See FLAC__stream_encoder_set_verify()
-			virtual bool set_streamable_subset(bool value);                 ///< See FLAC__stream_encoder_set_streamable_subset()
-			virtual bool set_channels(unsigned value);                      ///< See FLAC__stream_encoder_set_channels()
-			virtual bool set_bits_per_sample(unsigned value);               ///< See FLAC__stream_encoder_set_bits_per_sample()
-			virtual bool set_sample_rate(unsigned value);                   ///< See FLAC__stream_encoder_set_sample_rate()
-			virtual bool set_compression_level(unsigned value);             ///< See FLAC__stream_encoder_set_compression_level()
-			virtual bool set_blocksize(unsigned value);                     ///< See FLAC__stream_encoder_set_blocksize()
-			virtual bool set_do_mid_side_stereo(bool value);                ///< See FLAC__stream_encoder_set_do_mid_side_stereo()
-			virtual bool set_loose_mid_side_stereo(bool value);             ///< See FLAC__stream_encoder_set_loose_mid_side_stereo()
-			virtual bool set_apodization(const char *specification);        ///< See FLAC__stream_encoder_set_apodization()
-			virtual bool set_max_lpc_order(unsigned value);                 ///< See FLAC__stream_encoder_set_max_lpc_order()
-			virtual bool set_qlp_coeff_precision(unsigned value);           ///< See FLAC__stream_encoder_set_qlp_coeff_precision()
-			virtual bool set_do_qlp_coeff_prec_search(bool value);          ///< See FLAC__stream_encoder_set_do_qlp_coeff_prec_search()
-			virtual bool set_do_escape_coding(bool value);                  ///< See FLAC__stream_encoder_set_do_escape_coding()
-			virtual bool set_do_exhaustive_model_search(bool value);        ///< See FLAC__stream_encoder_set_do_exhaustive_model_search()
-			virtual bool set_min_residual_partition_order(unsigned value);  ///< See FLAC__stream_encoder_set_min_residual_partition_order()
-			virtual bool set_max_residual_partition_order(unsigned value);  ///< See FLAC__stream_encoder_set_max_residual_partition_order()
-			virtual bool set_rice_parameter_search_dist(unsigned value);    ///< See FLAC__stream_encoder_set_rice_parameter_search_dist()
-			virtual bool set_total_samples_estimate(FLAC__uint64 value);    ///< See FLAC__stream_encoder_set_total_samples_estimate()
-			virtual bool set_metadata(::FLAC__StreamMetadata **metadata, unsigned num_blocks);    ///< See FLAC__stream_encoder_set_metadata()
-			virtual bool set_metadata(FLAC::Metadata::Prototype **metadata, unsigned num_blocks); ///< See FLAC__stream_encoder_set_metadata()
-
-			/* get_state() is not virtual since we want subclasses to be able to return their own state */
-			State get_state() const;                                   ///< See FLAC__stream_encoder_get_state()
-			virtual Decoder::Stream::State get_verify_decoder_state() const; ///< See FLAC__stream_encoder_get_verify_decoder_state()
-			virtual void get_verify_decoder_error_stats(FLAC__uint64 *absolute_sample, unsigned *frame_number, unsigned *channel, unsigned *sample, FLAC__int32 *expected, FLAC__int32 *got); ///< See FLAC__stream_encoder_get_verify_decoder_error_stats()
-			virtual bool     get_verify() const;                       ///< See FLAC__stream_encoder_get_verify()
-			virtual bool     get_streamable_subset() const;            ///< See FLAC__stream_encoder_get_streamable_subset()
-			virtual bool     get_do_mid_side_stereo() const;           ///< See FLAC__stream_encoder_get_do_mid_side_stereo()
-			virtual bool     get_loose_mid_side_stereo() const;        ///< See FLAC__stream_encoder_get_loose_mid_side_stereo()
-			virtual unsigned get_channels() const;                     ///< See FLAC__stream_encoder_get_channels()
-			virtual unsigned get_bits_per_sample() const;              ///< See FLAC__stream_encoder_get_bits_per_sample()
-			virtual unsigned get_sample_rate() const;                  ///< See FLAC__stream_encoder_get_sample_rate()
-			virtual unsigned get_blocksize() const;                    ///< See FLAC__stream_encoder_get_blocksize()
-			virtual unsigned get_max_lpc_order() const;                ///< See FLAC__stream_encoder_get_max_lpc_order()
-			virtual unsigned get_qlp_coeff_precision() const;          ///< See FLAC__stream_encoder_get_qlp_coeff_precision()
-			virtual bool     get_do_qlp_coeff_prec_search() const;     ///< See FLAC__stream_encoder_get_do_qlp_coeff_prec_search()
-			virtual bool     get_do_escape_coding() const;             ///< See FLAC__stream_encoder_get_do_escape_coding()
-			virtual bool     get_do_exhaustive_model_search() const;   ///< See FLAC__stream_encoder_get_do_exhaustive_model_search()
-			virtual unsigned get_min_residual_partition_order() const; ///< See FLAC__stream_encoder_get_min_residual_partition_order()
-			virtual unsigned get_max_residual_partition_order() const; ///< See FLAC__stream_encoder_get_max_residual_partition_order()
-			virtual unsigned get_rice_parameter_search_dist() const;   ///< See FLAC__stream_encoder_get_rice_parameter_search_dist()
-			virtual FLAC__uint64 get_total_samples_estimate() const;   ///< See FLAC__stream_encoder_get_total_samples_estimate()
-
-			virtual ::FLAC__StreamEncoderInitStatus init();            ///< See FLAC__stream_encoder_init_stream()
-			virtual ::FLAC__StreamEncoderInitStatus init_ogg();        ///< See FLAC__stream_encoder_init_ogg_stream()
-
-			virtual bool finish(); ///< See FLAC__stream_encoder_finish()
-
-			virtual bool process(const FLAC__int32 * const buffer[], unsigned samples);     ///< See FLAC__stream_encoder_process()
-			virtual bool process_interleaved(const FLAC__int32 buffer[], unsigned samples); ///< See FLAC__stream_encoder_process_interleaved()
-		protected:
-			/// See FLAC__StreamEncoderReadCallback
-			virtual ::FLAC__StreamEncoderReadStatus read_callback(FLAC__byte buffer[], size_t *bytes);
-
-			/// See FLAC__StreamEncoderWriteCallback
-			virtual ::FLAC__StreamEncoderWriteStatus write_callback(const FLAC__byte buffer[], size_t bytes, unsigned samples, unsigned current_frame) = 0;
-
-			/// See FLAC__StreamEncoderSeekCallback
-			virtual ::FLAC__StreamEncoderSeekStatus seek_callback(FLAC__uint64 absolute_byte_offset);
-
-			/// See FLAC__StreamEncoderTellCallback
-			virtual ::FLAC__StreamEncoderTellStatus tell_callback(FLAC__uint64 *absolute_byte_offset);
-
-			/// See FLAC__StreamEncoderMetadataCallback
-			virtual void metadata_callback(const ::FLAC__StreamMetadata *metadata);
-
-#if (defined _MSC_VER) || (defined __BORLANDC__) || (defined __GNUG__ && (__GNUG__ < 2 || (__GNUG__ == 2 && __GNUC_MINOR__ < 96))) || (defined __SUNPRO_CC)
-			// lame hack: some MSVC/GCC versions can't see a protected encoder_ from nested State::resolved_as_cstring()
-			friend State;
-#endif
-			::FLAC__StreamEncoder *encoder_;
-
-			static ::FLAC__StreamEncoderReadStatus read_callback_(const ::FLAC__StreamEncoder *encoder, FLAC__byte buffer[], size_t *bytes, void *client_data);
-			static ::FLAC__StreamEncoderWriteStatus write_callback_(const ::FLAC__StreamEncoder *encoder, const FLAC__byte buffer[], size_t bytes, unsigned samples, unsigned current_frame, void *client_data);
-			static ::FLAC__StreamEncoderSeekStatus seek_callback_(const FLAC__StreamEncoder *encoder, FLAC__uint64 absolute_byte_offset, void *client_data);
-			static ::FLAC__StreamEncoderTellStatus tell_callback_(const FLAC__StreamEncoder *encoder, FLAC__uint64 *absolute_byte_offset, void *client_data);
-			static void metadata_callback_(const ::FLAC__StreamEncoder *encoder, const ::FLAC__StreamMetadata *metadata, void *client_data);
-		private:
-			// Private and undefined so you can't use them:
-			Stream(const Stream &);
-			void operator=(const Stream &);
-		};
-
-		/** \ingroup flacpp_encoder
-		 *  \brief
-		 *  This class wraps the ::FLAC__StreamEncoder.  If you are
-		 *  not encoding to a file, you may need to use
-		 *  FLAC::Encoder::Stream.
-		 *
-		 * The usage of this class is similar to FLAC__StreamEncoder,
-		 * except instead of providing callbacks to
-		 * FLAC__stream_encoder_init*_FILE() or
-		 * FLAC__stream_encoder_init*_file(), you will inherit from this
-		 * class and override the virtual callback functions with your
-		 * own implementations, then call init() or init_ogg().  The rest
-		 * of the calls work the same as in the C layer.
-		 *
-		 * There are no mandatory callbacks; all the callbacks from
-		 * FLAC::Encoder::Stream are implemented here fully and support
-		 * full post-encode STREAMINFO and SEEKTABLE updating.  There is
-		 * only an optional progress callback which you may override to
-		 * get periodic reports on the progress of the encode.
-		 */
-		class FLACPP_API File: public Stream {
-		public:
-			File();
-			virtual ~File();
-
-			virtual ::FLAC__StreamEncoderInitStatus init(FILE *file);                      ///< See FLAC__stream_encoder_init_FILE()
-			virtual ::FLAC__StreamEncoderInitStatus init(const char *filename);            ///< See FLAC__stream_encoder_init_file()
-			virtual ::FLAC__StreamEncoderInitStatus init(const std::string &filename);     ///< See FLAC__stream_encoder_init_file()
-			virtual ::FLAC__StreamEncoderInitStatus init_ogg(FILE *file);                  ///< See FLAC__stream_encoder_init_ogg_FILE()
-			virtual ::FLAC__StreamEncoderInitStatus init_ogg(const char *filename);        ///< See FLAC__stream_encoder_init_ogg_file()
-			virtual ::FLAC__StreamEncoderInitStatus init_ogg(const std::string &filename); ///< See FLAC__stream_encoder_init_ogg_file()
-		protected:
-			/// See FLAC__StreamEncoderProgressCallback
-			virtual void progress_callback(FLAC__uint64 bytes_written, FLAC__uint64 samples_written, unsigned frames_written, unsigned total_frames_estimate);
-
-			/// This is a dummy implementation to satisfy the pure virtual in Stream that is actually supplied internally by the C layer
-			virtual ::FLAC__StreamEncoderWriteStatus write_callback(const FLAC__byte buffer[], size_t bytes, unsigned samples, unsigned current_frame);
-		private:
-			static void progress_callback_(const ::FLAC__StreamEncoder *encoder, FLAC__uint64 bytes_written, FLAC__uint64 samples_written, unsigned frames_written, unsigned total_frames_estimate, void *client_data);
-
-			// Private and undefined so you can't use them:
-			File(const Stream &);
-			void operator=(const Stream &);
-		};
-
-	}
-}
-
-#endif
--- a/win64-mingw/include/FLAC++/export.h	Wed Oct 26 13:24:45 2016 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,80 +0,0 @@
-/* libFLAC++ - Free Lossless Audio Codec library
- * Copyright (C) 2002,2003,2004,2005,2006,2007  Josh Coalson
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * - Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * - Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * - Neither the name of the Xiph.org Foundation nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef FLACPP__EXPORT_H
-#define FLACPP__EXPORT_H
-
-/** \file include/FLAC++/export.h
- *
- *  \brief
- *  This module contains #defines and symbols for exporting function
- *  calls, and providing version information and compiled-in features.
- *
- *  See the \link flacpp_export export \endlink module.
- */
-
-/** \defgroup flacpp_export FLAC++/export.h: export symbols
- *  \ingroup flacpp
- *
- *  \brief
- *  This module contains #defines and symbols for exporting function
- *  calls, and providing version information and compiled-in features.
- *
- *  If you are compiling with MSVC and will link to the static library
- *  (libFLAC++.lib) you should define FLAC__NO_DLL in your project to
- *  make sure the symbols are exported properly.
- *
- * \{
- */
-
-#if defined(FLAC__NO_DLL) || !defined(_MSC_VER)
-#define FLACPP_API
-
-#else
-
-#ifdef FLACPP_API_EXPORTS
-#define	FLACPP_API	_declspec(dllexport)
-#else
-#define FLACPP_API	_declspec(dllimport)
-
-#endif
-#endif
-
-/* These #defines will mirror the libtool-based library version number, see
- * http://www.gnu.org/software/libtool/manual.html#Libtool-versioning
- */
-#define FLACPP_API_VERSION_CURRENT 8
-#define FLACPP_API_VERSION_REVISION 0
-#define FLACPP_API_VERSION_AGE 2
-
-/* \} */
-
-#endif
--- a/win64-mingw/include/FLAC++/metadata.h	Wed Oct 26 13:24:45 2016 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1156 +0,0 @@
-/* libFLAC++ - Free Lossless Audio Codec library
- * Copyright (C) 2002,2003,2004,2005,2006,2007  Josh Coalson
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * - Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * - Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * - Neither the name of the Xiph.org Foundation nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef FLACPP__METADATA_H
-#define FLACPP__METADATA_H
-
-#include "export.h"
-
-#include "FLAC/metadata.h"
-
-// ===============================================================
-//
-//  Full documentation for the metadata interface can be found
-//  in the C layer in include/FLAC/metadata.h
-//
-// ===============================================================
-
-/** \file include/FLAC++/metadata.h
- *
- *  \brief
- *  This module provides classes for creating and manipulating FLAC
- *  metadata blocks in memory, and three progressively more powerful
- *  interfaces for traversing and editing metadata in FLAC files.
- *
- *  See the detailed documentation for each interface in the
- *  \link flacpp_metadata metadata \endlink module.
- */
-
-/** \defgroup flacpp_metadata FLAC++/metadata.h: metadata interfaces
- *  \ingroup flacpp
- *
- *  \brief
- *  This module provides classes for creating and manipulating FLAC
- *  metadata blocks in memory, and three progressively more powerful
- *  interfaces for traversing and editing metadata in FLAC files.
- *
- *  The behavior closely mimics the C layer interface; be sure to read
- *  the detailed description of the
- *  \link flac_metadata C metadata module \endlink.  Note that like the
- *  C layer, currently only the Chain interface (level 2) supports Ogg
- *  FLAC files, and it is read-only i.e. no writing back changed
- *  metadata to file.
- */
-
-
-namespace FLAC {
-	namespace Metadata {
-
-		// ============================================================
-		//
-		//  Metadata objects
-		//
-		// ============================================================
-
-		/** \defgroup flacpp_metadata_object FLAC++/metadata.h: metadata object classes
-		 *  \ingroup flacpp_metadata
-		 *
-		 * This module contains classes representing FLAC metadata
-		 * blocks in memory.
-		 *
-		 * The behavior closely mimics the C layer interface; be
-		 * sure to read the detailed description of the
-		 * \link flac_metadata_object C metadata object module \endlink.
-		 *
-		 * Any time a metadata object is constructed or assigned, you
-		 * should check is_valid() to make sure the underlying
-		 * ::FLAC__StreamMetadata object was able to be created.
-		 *
-		 * \warning
-		 * When the get_*() methods of any metadata object method
-		 * return you a const pointer, DO NOT disobey and write into it.
-		 * Always use the set_*() methods.
-		 *
-		 * \{
-		 */
-
-		/** Base class for all metadata block types.
-		 *  See the \link flacpp_metadata_object overview \endlink for more.
-		 */
-		class FLACPP_API Prototype {
-		protected:
-			//@{
-			/** Constructs a copy of the given object.  This form
-			 *  always performs a deep copy.
-			 */
-			Prototype(const Prototype &);
-			Prototype(const ::FLAC__StreamMetadata &);
-			Prototype(const ::FLAC__StreamMetadata *);
-			//@}
-
-			/** Constructs an object with copy control.  When \a copy
-			 *  is \c true, behaves identically to
-			 *  FLAC::Metadata::Prototype::Prototype(const ::FLAC__StreamMetadata *object).
-			 *  When \a copy is \c false, the instance takes ownership of
-			 *  the pointer and the ::FLAC__StreamMetadata object will
-			 *  be freed by the destructor.
-			 *
-			 *  \assert
-			 *    \code object != NULL \endcode
-			 */
-			Prototype(::FLAC__StreamMetadata *object, bool copy);
-
-			//@{
-			/** Assign from another object.  Always performs a deep copy. */
-			Prototype &operator=(const Prototype &);
-			Prototype &operator=(const ::FLAC__StreamMetadata &);
-			Prototype &operator=(const ::FLAC__StreamMetadata *);
-			//@}
-
-			/** Assigns an object with copy control.  See
-			 *  Prototype(::FLAC__StreamMetadata *object, bool copy).
-			 */
-			Prototype &assign_object(::FLAC__StreamMetadata *object, bool copy);
-
-			/** Deletes the underlying ::FLAC__StreamMetadata object.
-			 */
-			virtual void clear();
-
-			::FLAC__StreamMetadata *object_;
-		public:
-			/** Deletes the underlying ::FLAC__StreamMetadata object.
-			 */
-			virtual ~Prototype();
-
-			//@{
-			/** Check for equality, performing a deep compare by following pointers.
-			 */
-			inline bool operator==(const Prototype &) const;
-			inline bool operator==(const ::FLAC__StreamMetadata &) const;
-			inline bool operator==(const ::FLAC__StreamMetadata *) const;
-			//@}
-
-			//@{
-			/** Check for inequality, performing a deep compare by following pointers. */
-			inline bool operator!=(const Prototype &) const;
-			inline bool operator!=(const ::FLAC__StreamMetadata &) const;
-			inline bool operator!=(const ::FLAC__StreamMetadata *) const;
-			//@}
-
-			friend class SimpleIterator;
-			friend class Iterator;
-
-			/** Returns \c true if the object was correctly constructed
-			 *  (i.e. the underlying ::FLAC__StreamMetadata object was
-			 *  properly allocated), else \c false.
-			 */
-			inline bool is_valid() const;
-
-			/** Returns \c true if this block is the last block in a
-			 *  stream, else \c false.
-			 *
-			 * \assert
-			 *   \code is_valid() \endcode
-			 */
-			bool get_is_last() const;
-
-			/** Returns the type of the block.
-			 *
-			 * \assert
-			 *   \code is_valid() \endcode
-			 */
-			::FLAC__MetadataType get_type() const;
-
-			/** Returns the stream length of the metadata block.
-			 *
-			 * \note
-			 *   The length does not include the metadata block header,
-			 *   per spec.
-			 *
-			 * \assert
-			 *   \code is_valid() \endcode
-			 */
-			unsigned get_length() const;
-
-			/** Sets the "is_last" flag for the block.  When using the iterators
-			 *  it is not necessary to set this flag; they will do it for you.
-			 *
-			 * \assert
-			 *   \code is_valid() \endcode
-			 */
-			void set_is_last(bool);
-
-			/** Returns a pointer to the underlying ::FLAC__StreamMetadata
-			 *  object.  This can be useful for plugging any holes between
-			 *  the C++ and C interfaces.
-			 *
-			 * \assert
-			 *   \code is_valid() \endcode
-			 */
-			inline operator const ::FLAC__StreamMetadata *() const;
-		private:
-			/** Private and undefined so you can't use it. */
-			Prototype();
-
-			// These are used only by Iterator
-			bool is_reference_;
-			inline void set_reference(bool x) { is_reference_ = x; }
-		};
-
-#ifdef _MSC_VER
-// warning C4800: 'int' : forcing to bool 'true' or 'false' (performance warning)
-#pragma warning ( disable : 4800 )
-#endif
-
-		inline bool Prototype::operator==(const Prototype &object) const
-		{ return (bool)::FLAC__metadata_object_is_equal(object_, object.object_); }
-
-		inline bool Prototype::operator==(const ::FLAC__StreamMetadata &object) const
-		{ return (bool)::FLAC__metadata_object_is_equal(object_, &object); }
-
-		inline bool Prototype::operator==(const ::FLAC__StreamMetadata *object) const
-		{ return (bool)::FLAC__metadata_object_is_equal(object_, object); }
-
-#ifdef _MSC_VER
-// @@@ how to re-enable?  the following doesn't work
-// #pragma warning ( enable : 4800 )
-#endif
-
-		inline bool Prototype::operator!=(const Prototype &object) const
-		{ return !operator==(object); }
-
-		inline bool Prototype::operator!=(const ::FLAC__StreamMetadata &object) const
-		{ return !operator==(object); }
-
-		inline bool Prototype::operator!=(const ::FLAC__StreamMetadata *object) const
-		{ return !operator==(object); }
-
-		inline bool Prototype::is_valid() const
-		{ return 0 != object_; }
-
-		inline Prototype::operator const ::FLAC__StreamMetadata *() const
-		{ return object_; }
-
-		/** Create a deep copy of an object and return it. */
-		FLACPP_API Prototype *clone(const Prototype *);
-
-
-		/** STREAMINFO metadata block.
-		 *  See the \link flacpp_metadata_object overview \endlink for more,
-		 *  and the <A HREF="../format.html#metadata_block_streaminfo">format specification</A>.
-		 */
-		class FLACPP_API StreamInfo : public Prototype {
-		public:
-			StreamInfo();
-
-			//@{
-			/** Constructs a copy of the given object.  This form
-			 *  always performs a deep copy.
-			 */
-			inline StreamInfo(const StreamInfo &object): Prototype(object) { }
-			inline StreamInfo(const ::FLAC__StreamMetadata &object): Prototype(object) { }
-			inline StreamInfo(const ::FLAC__StreamMetadata *object): Prototype(object) { }
-			//@}
-
-			/** Constructs an object with copy control.  See
-			 *  Prototype(::FLAC__StreamMetadata *object, bool copy).
-			 */
-			inline StreamInfo(::FLAC__StreamMetadata *object, bool copy): Prototype(object, copy) { }
-
-			~StreamInfo();
-
-			//@{
-			/** Assign from another object.  Always performs a deep copy. */
-			inline StreamInfo &operator=(const StreamInfo &object) { Prototype::operator=(object); return *this; }
-			inline StreamInfo &operator=(const ::FLAC__StreamMetadata &object) { Prototype::operator=(object); return *this; }
-			inline StreamInfo &operator=(const ::FLAC__StreamMetadata *object) { Prototype::operator=(object); return *this; }
-			//@}
-
-			/** Assigns an object with copy control.  See
-			 *  Prototype::assign_object(::FLAC__StreamMetadata *object, bool copy).
-			 */
-			inline StreamInfo &assign(::FLAC__StreamMetadata *object, bool copy) { Prototype::assign_object(object, copy); return *this; }
-
-			//@{
-			/** Check for equality, performing a deep compare by following pointers. */
-			inline bool operator==(const StreamInfo &object) const { return Prototype::operator==(object); }
-			inline bool operator==(const ::FLAC__StreamMetadata &object) const { return Prototype::operator==(object); }
-			inline bool operator==(const ::FLAC__StreamMetadata *object) const { return Prototype::operator==(object); }
-			//@}
-
-			//@{
-			/** Check for inequality, performing a deep compare by following pointers. */
-			inline bool operator!=(const StreamInfo &object) const { return Prototype::operator!=(object); }
-			inline bool operator!=(const ::FLAC__StreamMetadata &object) const { return Prototype::operator!=(object); }
-			inline bool operator!=(const ::FLAC__StreamMetadata *object) const { return Prototype::operator!=(object); }
-			//@}
-
-			//@{
-			/** See <A HREF="../format.html#metadata_block_streaminfo">format specification</A>. */
-			unsigned get_min_blocksize() const;
-			unsigned get_max_blocksize() const;
-			unsigned get_min_framesize() const;
-			unsigned get_max_framesize() const;
-			unsigned get_sample_rate() const;
-			unsigned get_channels() const;
-			unsigned get_bits_per_sample() const;
-			FLAC__uint64 get_total_samples() const;
-			const FLAC__byte *get_md5sum() const;
-
-			void set_min_blocksize(unsigned value);
-			void set_max_blocksize(unsigned value);
-			void set_min_framesize(unsigned value);
-			void set_max_framesize(unsigned value);
-			void set_sample_rate(unsigned value);
-			void set_channels(unsigned value);
-			void set_bits_per_sample(unsigned value);
-			void set_total_samples(FLAC__uint64 value);
-			void set_md5sum(const FLAC__byte value[16]);
-			//@}
-		};
-
-		/** PADDING metadata block.
-		 *  See the \link flacpp_metadata_object overview \endlink for more,
-		 *  and the <A HREF="../format.html#metadata_block_padding">format specification</A>.
-		 */
-		class FLACPP_API Padding : public Prototype {
-		public:
-			Padding();
-
-			//@{
-			/** Constructs a copy of the given object.  This form
-			 *  always performs a deep copy.
-			 */
-			inline Padding(const Padding &object): Prototype(object) { }
-			inline Padding(const ::FLAC__StreamMetadata &object): Prototype(object) { }
-			inline Padding(const ::FLAC__StreamMetadata *object): Prototype(object) { }
-			//@}
-
-			/** Constructs an object with copy control.  See
-			 *  Prototype(::FLAC__StreamMetadata *object, bool copy).
-			 */
-			inline Padding(::FLAC__StreamMetadata *object, bool copy): Prototype(object, copy) { }
-
-			~Padding();
-
-			//@{
-			/** Assign from another object.  Always performs a deep copy. */
-			inline Padding &operator=(const Padding &object) { Prototype::operator=(object); return *this; }
-			inline Padding &operator=(const ::FLAC__StreamMetadata &object) { Prototype::operator=(object); return *this; }
-			inline Padding &operator=(const ::FLAC__StreamMetadata *object) { Prototype::operator=(object); return *this; }
-			//@}
-
-			/** Assigns an object with copy control.  See
-			 *  Prototype::assign_object(::FLAC__StreamMetadata *object, bool copy).
-			 */
-			inline Padding &assign(::FLAC__StreamMetadata *object, bool copy) { Prototype::assign_object(object, copy); return *this; }
-
-			//@{
-			/** Check for equality, performing a deep compare by following pointers. */
-			inline bool operator==(const Padding &object) const { return Prototype::operator==(object); }
-			inline bool operator==(const ::FLAC__StreamMetadata &object) const { return Prototype::operator==(object); }
-			inline bool operator==(const ::FLAC__StreamMetadata *object) const { return Prototype::operator==(object); }
-			//@}
-
-			//@{
-			/** Check for inequality, performing a deep compare by following pointers. */
-			inline bool operator!=(const Padding &object) const { return Prototype::operator!=(object); }
-			inline bool operator!=(const ::FLAC__StreamMetadata &object) const { return Prototype::operator!=(object); }
-			inline bool operator!=(const ::FLAC__StreamMetadata *object) const { return Prototype::operator!=(object); }
-			//@}
-
-			void set_length(unsigned length);
-		};
-
-		/** APPLICATION metadata block.
-		 *  See the \link flacpp_metadata_object overview \endlink for more,
-		 *  and the <A HREF="../format.html#metadata_block_application">format specification</A>.
-		 */
-		class FLACPP_API Application : public Prototype {
-		public:
-			Application();
-			//
-			//@{
-			/** Constructs a copy of the given object.  This form
-			 *  always performs a deep copy.
-			 */
-			inline Application(const Application &object): Prototype(object) { }
-			inline Application(const ::FLAC__StreamMetadata &object): Prototype(object) { }
-			inline Application(const ::FLAC__StreamMetadata *object): Prototype(object) { }
-			//@}
-
-			/** Constructs an object with copy control.  See
-			 *  Prototype(::FLAC__StreamMetadata *object, bool copy).
-			 */
-			inline Application(::FLAC__StreamMetadata *object, bool copy): Prototype(object, copy) { }
-
-			~Application();
-
-			//@{
-			/** Assign from another object.  Always performs a deep copy. */
-			inline Application &operator=(const Application &object) { Prototype::operator=(object); return *this; }
-			inline Application &operator=(const ::FLAC__StreamMetadata &object) { Prototype::operator=(object); return *this; }
-			inline Application &operator=(const ::FLAC__StreamMetadata *object) { Prototype::operator=(object); return *this; }
-			//@}
-
-			/** Assigns an object with copy control.  See
-			 *  Prototype::assign_object(::FLAC__StreamMetadata *object, bool copy).
-			 */
-			inline Application &assign(::FLAC__StreamMetadata *object, bool copy) { Prototype::assign_object(object, copy); return *this; }
-
-			//@{
-			/** Check for equality, performing a deep compare by following pointers. */
-			inline bool operator==(const Application &object) const { return Prototype::operator==(object); }
-			inline bool operator==(const ::FLAC__StreamMetadata &object) const { return Prototype::operator==(object); }
-			inline bool operator==(const ::FLAC__StreamMetadata *object) const { return Prototype::operator==(object); }
-			//@}
-
-			//@{
-			/** Check for inequality, performing a deep compare by following pointers. */
-			inline bool operator!=(const Application &object) const { return Prototype::operator!=(object); }
-			inline bool operator!=(const ::FLAC__StreamMetadata &object) const { return Prototype::operator!=(object); }
-			inline bool operator!=(const ::FLAC__StreamMetadata *object) const { return Prototype::operator!=(object); }
-			//@}
-
-			const FLAC__byte *get_id() const;
-			const FLAC__byte *get_data() const;
-
-			void set_id(const FLAC__byte value[4]);
-			//! This form always copies \a data
-			bool set_data(const FLAC__byte *data, unsigned length);
-			bool set_data(FLAC__byte *data, unsigned length, bool copy);
-		};
-
-		/** SEEKTABLE metadata block.
-		 *  See the \link flacpp_metadata_object overview \endlink for more,
-		 *  and the <A HREF="../format.html#metadata_block_seektable">format specification</A>.
-		 */
-		class FLACPP_API SeekTable : public Prototype {
-		public:
-			SeekTable();
-
-			//@{
-			/** Constructs a copy of the given object.  This form
-			 *  always performs a deep copy.
-			 */
-			inline SeekTable(const SeekTable &object): Prototype(object) { }
-			inline SeekTable(const ::FLAC__StreamMetadata &object): Prototype(object) { }
-			inline SeekTable(const ::FLAC__StreamMetadata *object): Prototype(object) { }
-			//@}
-
-			/** Constructs an object with copy control.  See
-			 *  Prototype(::FLAC__StreamMetadata *object, bool copy).
-			 */
-			inline SeekTable(::FLAC__StreamMetadata *object, bool copy): Prototype(object, copy) { }
-
-			~SeekTable();
-
-			//@{
-			/** Assign from another object.  Always performs a deep copy. */
-			inline SeekTable &operator=(const SeekTable &object) { Prototype::operator=(object); return *this; }
-			inline SeekTable &operator=(const ::FLAC__StreamMetadata &object) { Prototype::operator=(object); return *this; }
-			inline SeekTable &operator=(const ::FLAC__StreamMetadata *object) { Prototype::operator=(object); return *this; }
-			//@}
-
-			/** Assigns an object with copy control.  See
-			 *  Prototype::assign_object(::FLAC__StreamMetadata *object, bool copy).
-			 */
-			inline SeekTable &assign(::FLAC__StreamMetadata *object, bool copy) { Prototype::assign_object(object, copy); return *this; }
-
-			//@{
-			/** Check for equality, performing a deep compare by following pointers. */
-			inline bool operator==(const SeekTable &object) const { return Prototype::operator==(object); }
-			inline bool operator==(const ::FLAC__StreamMetadata &object) const { return Prototype::operator==(object); }
-			inline bool operator==(const ::FLAC__StreamMetadata *object) const { return Prototype::operator==(object); }
-			//@}
-
-			//@{
-			/** Check for inequality, performing a deep compare by following pointers. */
-			inline bool operator!=(const SeekTable &object) const { return Prototype::operator!=(object); }
-			inline bool operator!=(const ::FLAC__StreamMetadata &object) const { return Prototype::operator!=(object); }
-			inline bool operator!=(const ::FLAC__StreamMetadata *object) const { return Prototype::operator!=(object); }
-			//@}
-
-			unsigned get_num_points() const;
-			::FLAC__StreamMetadata_SeekPoint get_point(unsigned index) const;
-
-			//! See FLAC__metadata_object_seektable_set_point()
-			void set_point(unsigned index, const ::FLAC__StreamMetadata_SeekPoint &point);
-
-			//! See FLAC__metadata_object_seektable_insert_point()
-			bool insert_point(unsigned index, const ::FLAC__StreamMetadata_SeekPoint &point);
-
-			//! See FLAC__metadata_object_seektable_delete_point()
-			bool delete_point(unsigned index);
-
-			//! See FLAC__metadata_object_seektable_is_legal()
-			bool is_legal() const;
-		};
-
-		/** VORBIS_COMMENT metadata block.
-		 *  See the \link flacpp_metadata_object overview \endlink for more,
-		 *  and the <A HREF="../format.html#metadata_block_vorbis_comment">format specification</A>.
-		 */
-		class FLACPP_API VorbisComment : public Prototype {
-		public:
-			/** Convenience class for encapsulating Vorbis comment
-			 *  entries.  An entry is a vendor string or a comment
-			 *  field.  In the case of a vendor string, the field
-			 *  name is undefined; only the field value is relevant.
-			 *
-			 *  A \a field as used in the methods refers to an
-			 *  entire 'NAME=VALUE' string; for convenience the
-			 *  string is NUL-terminated.  A length field is
-			 *  required in the unlikely event that the value
-			 *  contains contain embedded NULs.
-			 *
-			 *  A \a field_name is what is on the left side of the
-			 *  first '=' in the \a field.  By definition it is ASCII
-			 *  and so is NUL-terminated and does not require a
-			 *  length to describe it.  \a field_name is undefined
-			 *  for a vendor string entry.
-			 *
-			 *  A \a field_value is what is on the right side of the
-			 *  first '=' in the \a field.  By definition, this may
-			 *  contain embedded NULs and so a \a field_value_length
-			 *  is required to describe it.  However in practice,
-			 *  embedded NULs are not known to be used, so it is
-			 *  generally safe to treat field values as NUL-
-			 *  terminated UTF-8 strings.
-			 *
-			 *  Always check is_valid() after the constructor or operator=
-			 *  to make sure memory was properly allocated and that the
-			 *  Entry conforms to the Vorbis comment specification.
-			 */
-			class FLACPP_API Entry {
-			public:
-				Entry();
-
-				Entry(const char *field, unsigned field_length);
-				Entry(const char *field); // assumes \a field is NUL-terminated
-
-				Entry(const char *field_name, const char *field_value, unsigned field_value_length);
-				Entry(const char *field_name, const char *field_value); // assumes \a field_value is NUL-terminated
-
-				Entry(const Entry &entry);
-
-				Entry &operator=(const Entry &entry);
-
-				virtual ~Entry();
-
-				virtual bool is_valid() const; ///< Returns \c true iff object was properly constructed.
-
-				unsigned get_field_length() const;
-				unsigned get_field_name_length() const;
-				unsigned get_field_value_length() const;
-
-				::FLAC__StreamMetadata_VorbisComment_Entry get_entry() const;
-				const char *get_field() const;
-				const char *get_field_name() const;
-				const char *get_field_value() const;
-
-				bool set_field(const char *field, unsigned field_length);
-				bool set_field(const char *field); // assumes \a field is NUL-terminated
-				bool set_field_name(const char *field_name);
-				bool set_field_value(const char *field_value, unsigned field_value_length);
-				bool set_field_value(const char *field_value); // assumes \a field_value is NUL-terminated
-			protected:
-				bool is_valid_;
-				::FLAC__StreamMetadata_VorbisComment_Entry entry_;
-				char *field_name_;
-				unsigned field_name_length_;
-				char *field_value_;
-				unsigned field_value_length_;
-			private:
-				void zero();
-				void clear();
-				void clear_entry();
-				void clear_field_name();
-				void clear_field_value();
-				void construct(const char *field, unsigned field_length);
-				void construct(const char *field); // assumes \a field is NUL-terminated
-				void construct(const char *field_name, const char *field_value, unsigned field_value_length);
-				void construct(const char *field_name, const char *field_value); // assumes \a field_value is NUL-terminated
-				void compose_field();
-				void parse_field();
-			};
-
-			VorbisComment();
-
-			//@{
-			/** Constructs a copy of the given object.  This form
-			 *  always performs a deep copy.
-			 */
-			inline VorbisComment(const VorbisComment &object): Prototype(object) { }
-			inline VorbisComment(const ::FLAC__StreamMetadata &object): Prototype(object) { }
-			inline VorbisComment(const ::FLAC__StreamMetadata *object): Prototype(object) { }
-			//@}
-
-			/** Constructs an object with copy control.  See
-			 *  Prototype(::FLAC__StreamMetadata *object, bool copy).
-			 */
-			inline VorbisComment(::FLAC__StreamMetadata *object, bool copy): Prototype(object, copy) { }
-
-			~VorbisComment();
-
-			//@{
-			/** Assign from another object.  Always performs a deep copy. */
-			inline VorbisComment &operator=(const VorbisComment &object) { Prototype::operator=(object); return *this; }
-			inline VorbisComment &operator=(const ::FLAC__StreamMetadata &object) { Prototype::operator=(object); return *this; }
-			inline VorbisComment &operator=(const ::FLAC__StreamMetadata *object) { Prototype::operator=(object); return *this; }
-			//@}
-
-			/** Assigns an object with copy control.  See
-			 *  Prototype::assign_object(::FLAC__StreamMetadata *object, bool copy).
-			 */
-			inline VorbisComment &assign(::FLAC__StreamMetadata *object, bool copy) { Prototype::assign_object(object, copy); return *this; }
-
-			//@{
-			/** Check for equality, performing a deep compare by following pointers. */
-			inline bool operator==(const VorbisComment &object) const { return Prototype::operator==(object); }
-			inline bool operator==(const ::FLAC__StreamMetadata &object) const { return Prototype::operator==(object); }
-			inline bool operator==(const ::FLAC__StreamMetadata *object) const { return Prototype::operator==(object); }
-			//@}
-
-			//@{
-			/** Check for inequality, performing a deep compare by following pointers. */
-			inline bool operator!=(const VorbisComment &object) const { return Prototype::operator!=(object); }
-			inline bool operator!=(const ::FLAC__StreamMetadata &object) const { return Prototype::operator!=(object); }
-			inline bool operator!=(const ::FLAC__StreamMetadata *object) const { return Prototype::operator!=(object); }
-			//@}
-
-			unsigned get_num_comments() const;
-			const FLAC__byte *get_vendor_string() const; // NUL-terminated UTF-8 string
-			Entry get_comment(unsigned index) const;
-
-			//! See FLAC__metadata_object_vorbiscomment_set_vendor_string()
-			bool set_vendor_string(const FLAC__byte *string); // NUL-terminated UTF-8 string
-
-			//! See FLAC__metadata_object_vorbiscomment_set_comment()
-			bool set_comment(unsigned index, const Entry &entry);
-
-			//! See FLAC__metadata_object_vorbiscomment_insert_comment()
-			bool insert_comment(unsigned index, const Entry &entry);
-
-			//! See FLAC__metadata_object_vorbiscomment_append_comment()
-			bool append_comment(const Entry &entry);
-
-			//! See FLAC__metadata_object_vorbiscomment_delete_comment()
-			bool delete_comment(unsigned index);
-		};
-
-		/** CUESHEET metadata block.
-		 *  See the \link flacpp_metadata_object overview \endlink for more,
-		 *  and the <A HREF="../format.html#metadata_block_cuesheet">format specification</A>.
-		 */
-		class FLACPP_API CueSheet : public Prototype {
-		public:
-			/** Convenience class for encapsulating a cue sheet
-			 *  track.
-			 *
-			 *  Always check is_valid() after the constructor or operator=
-			 *  to make sure memory was properly allocated.
-			 */
-			class FLACPP_API Track {
-			protected:
-				::FLAC__StreamMetadata_CueSheet_Track *object_;
-			public:
-				Track();
-				Track(const ::FLAC__StreamMetadata_CueSheet_Track *track);
-				Track(const Track &track);
-				Track &operator=(const Track &track);
-
-				virtual ~Track();
-
-				virtual bool is_valid() const; ///< Returns \c true iff object was properly constructed.
-
-
-				inline FLAC__uint64 get_offset() const { return object_->offset; }
-				inline FLAC__byte get_number() const { return object_->number; }
-				inline const char *get_isrc() const { return object_->isrc; }
-				inline unsigned get_type() const { return object_->type; }
-				inline bool get_pre_emphasis() const { return object_->pre_emphasis; }
-
-				inline FLAC__byte get_num_indices() const { return object_->num_indices; }
-				::FLAC__StreamMetadata_CueSheet_Index get_index(unsigned i) const;
-
-				inline const ::FLAC__StreamMetadata_CueSheet_Track *get_track() const { return object_; }
-
-				inline void set_offset(FLAC__uint64 value) { object_->offset = value; }
-				inline void set_number(FLAC__byte value) { object_->number = value; }
-				void set_isrc(const char value[12]);
-				void set_type(unsigned value);
-				inline void set_pre_emphasis(bool value) { object_->pre_emphasis = value? 1 : 0; }
-
- 				void set_index(unsigned i, const ::FLAC__StreamMetadata_CueSheet_Index &index);
-				//@@@ It's awkward but to insert/delete index points
-				//@@@ you must use the routines in the CueSheet class.
-			};
-
-			CueSheet();
-
-			//@{
-			/** Constructs a copy of the given object.  This form
-			 *  always performs a deep copy.
-			 */
-			inline CueSheet(const CueSheet &object): Prototype(object) { }
-			inline CueSheet(const ::FLAC__StreamMetadata &object): Prototype(object) { }
-			inline CueSheet(const ::FLAC__StreamMetadata *object): Prototype(object) { }
-			//@}
-
-			/** Constructs an object with copy control.  See
-			 *  Prototype(::FLAC__StreamMetadata *object, bool copy).
-			 */
-			inline CueSheet(::FLAC__StreamMetadata *object, bool copy): Prototype(object, copy) { }
-
-			~CueSheet();
-
-			//@{
-			/** Assign from another object.  Always performs a deep copy. */
-			inline CueSheet &operator=(const CueSheet &object) { Prototype::operator=(object); return *this; }
-			inline CueSheet &operator=(const ::FLAC__StreamMetadata &object) { Prototype::operator=(object); return *this; }
-			inline CueSheet &operator=(const ::FLAC__StreamMetadata *object) { Prototype::operator=(object); return *this; }
-			//@}
-
-			/** Assigns an object with copy control.  See
-			 *  Prototype::assign_object(::FLAC__StreamMetadata *object, bool copy).
-			 */
-			inline CueSheet &assign(::FLAC__StreamMetadata *object, bool copy) { Prototype::assign_object(object, copy); return *this; }
-
-			//@{
-			/** Check for equality, performing a deep compare by following pointers. */
-			inline bool operator==(const CueSheet &object) const { return Prototype::operator==(object); }
-			inline bool operator==(const ::FLAC__StreamMetadata &object) const { return Prototype::operator==(object); }
-			inline bool operator==(const ::FLAC__StreamMetadata *object) const { return Prototype::operator==(object); }
-			//@}
-
-			//@{
-			/** Check for inequality, performing a deep compare by following pointers. */
-			inline bool operator!=(const CueSheet &object) const { return Prototype::operator!=(object); }
-			inline bool operator!=(const ::FLAC__StreamMetadata &object) const { return Prototype::operator!=(object); }
-			inline bool operator!=(const ::FLAC__StreamMetadata *object) const { return Prototype::operator!=(object); }
-			//@}
-
-			const char *get_media_catalog_number() const;
-			FLAC__uint64 get_lead_in() const;
-			bool get_is_cd() const;
-
-			unsigned get_num_tracks() const;
-			Track get_track(unsigned i) const;
-
-			void set_media_catalog_number(const char value[128]);
-			void set_lead_in(FLAC__uint64 value);
-			void set_is_cd(bool value);
-
-			void set_index(unsigned track_num, unsigned index_num, const ::FLAC__StreamMetadata_CueSheet_Index &index);
-
-			//! See FLAC__metadata_object_cuesheet_track_insert_index()
-			bool insert_index(unsigned track_num, unsigned index_num, const ::FLAC__StreamMetadata_CueSheet_Index &index);
-
-			//! See FLAC__metadata_object_cuesheet_track_delete_index()
-			bool delete_index(unsigned track_num, unsigned index_num);
-
-			//! See FLAC__metadata_object_cuesheet_set_track()
-			bool set_track(unsigned i, const Track &track);
-
-			//! See FLAC__metadata_object_cuesheet_insert_track()
-			bool insert_track(unsigned i, const Track &track);
-
-			//! See FLAC__metadata_object_cuesheet_delete_track()
-			bool delete_track(unsigned i);
-
-			//! See FLAC__metadata_object_cuesheet_is_legal()
-			bool is_legal(bool check_cd_da_subset = false, const char **violation = 0) const;
-
-			//! See FLAC__metadata_object_cuesheet_calculate_cddb_id()
-			FLAC__uint32 calculate_cddb_id() const;
-		};
-
-		/** PICTURE metadata block.
-		 *  See the \link flacpp_metadata_object overview \endlink for more,
-		 *  and the <A HREF="../format.html#metadata_block_picture">format specification</A>.
-		 */
-		class FLACPP_API Picture : public Prototype {
-		public:
-			Picture();
-
-			//@{
-			/** Constructs a copy of the given object.  This form
-			 *  always performs a deep copy.
-			 */
-			inline Picture(const Picture &object): Prototype(object) { }
-			inline Picture(const ::FLAC__StreamMetadata &object): Prototype(object) { }
-			inline Picture(const ::FLAC__StreamMetadata *object): Prototype(object) { }
-			//@}
-
-			/** Constructs an object with copy control.  See
-			 *  Prototype(::FLAC__StreamMetadata *object, bool copy).
-			 */
-			inline Picture(::FLAC__StreamMetadata *object, bool copy): Prototype(object, copy) { }
-
-			~Picture();
-
-			//@{
-			/** Assign from another object.  Always performs a deep copy. */
-			inline Picture &operator=(const Picture &object) { Prototype::operator=(object); return *this; }
-			inline Picture &operator=(const ::FLAC__StreamMetadata &object) { Prototype::operator=(object); return *this; }
-			inline Picture &operator=(const ::FLAC__StreamMetadata *object) { Prototype::operator=(object); return *this; }
-			//@}
-
-			/** Assigns an object with copy control.  See
-			 *  Prototype::assign_object(::FLAC__StreamMetadata *object, bool copy).
-			 */
-			inline Picture &assign(::FLAC__StreamMetadata *object, bool copy) { Prototype::assign_object(object, copy); return *this; }
-
-			//@{
-			/** Check for equality, performing a deep compare by following pointers. */
-			inline bool operator==(const Picture &object) const { return Prototype::operator==(object); }
-			inline bool operator==(const ::FLAC__StreamMetadata &object) const { return Prototype::operator==(object); }
-			inline bool operator==(const ::FLAC__StreamMetadata *object) const { return Prototype::operator==(object); }
-			//@}
-
-			//@{
-			/** Check for inequality, performing a deep compare by following pointers. */
-			inline bool operator!=(const Picture &object) const { return Prototype::operator!=(object); }
-			inline bool operator!=(const ::FLAC__StreamMetadata &object) const { return Prototype::operator!=(object); }
-			inline bool operator!=(const ::FLAC__StreamMetadata *object) const { return Prototype::operator!=(object); }
-			//@}
-
-			::FLAC__StreamMetadata_Picture_Type get_type() const;
-			const char *get_mime_type() const; // NUL-terminated printable ASCII string
-			const FLAC__byte *get_description() const; // NUL-terminated UTF-8 string
-			FLAC__uint32 get_width() const;
-			FLAC__uint32 get_height() const;
-			FLAC__uint32 get_depth() const;
-			FLAC__uint32 get_colors() const; ///< a return value of \c 0 means true-color, i.e. 2^depth colors
-			FLAC__uint32 get_data_length() const;
-			const FLAC__byte *get_data() const;
-
-			void set_type(::FLAC__StreamMetadata_Picture_Type type);
-
-			//! See FLAC__metadata_object_picture_set_mime_type()
-			bool set_mime_type(const char *string); // NUL-terminated printable ASCII string
-
-			//! See FLAC__metadata_object_picture_set_description()
-			bool set_description(const FLAC__byte *string); // NUL-terminated UTF-8 string
-
-			void set_width(FLAC__uint32 value) const;
-			void set_height(FLAC__uint32 value) const;
-			void set_depth(FLAC__uint32 value) const;
-			void set_colors(FLAC__uint32 value) const; ///< a value of \c 0 means true-color, i.e. 2^depth colors
-
-			//! See FLAC__metadata_object_picture_set_data()
-			bool set_data(const FLAC__byte *data, FLAC__uint32 data_length);
-		};
-
-		/** Opaque metadata block for storing unknown types.
-		 *  This should not be used unless you know what you are doing;
-		 *  it is currently used only internally to support forward
-		 *  compatibility of metadata blocks.
-		 *  See the \link flacpp_metadata_object overview \endlink for more,
-		 */
-		class FLACPP_API Unknown : public Prototype {
-		public:
-			Unknown();
-			//
-			//@{
-			/** Constructs a copy of the given object.  This form
-			 *  always performs a deep copy.
-			 */
-			inline Unknown(const Unknown &object): Prototype(object) { }
-			inline Unknown(const ::FLAC__StreamMetadata &object): Prototype(object) { }
-			inline Unknown(const ::FLAC__StreamMetadata *object): Prototype(object) { }
-			//@}
-
-			/** Constructs an object with copy control.  See
-			 *  Prototype(::FLAC__StreamMetadata *object, bool copy).
-			 */
-			inline Unknown(::FLAC__StreamMetadata *object, bool copy): Prototype(object, copy) { }
-
-			~Unknown();
-
-			//@{
-			/** Assign from another object.  Always performs a deep copy. */
-			inline Unknown &operator=(const Unknown &object) { Prototype::operator=(object); return *this; }
-			inline Unknown &operator=(const ::FLAC__StreamMetadata &object) { Prototype::operator=(object); return *this; }
-			inline Unknown &operator=(const ::FLAC__StreamMetadata *object) { Prototype::operator=(object); return *this; }
-			//@}
-
-			/** Assigns an object with copy control.  See
-			 *  Prototype::assign_object(::FLAC__StreamMetadata *object, bool copy).
-			 */
-			inline Unknown &assign(::FLAC__StreamMetadata *object, bool copy) { Prototype::assign_object(object, copy); return *this; }
-
-			//@{
-			/** Check for equality, performing a deep compare by following pointers. */
-			inline bool operator==(const Unknown &object) const { return Prototype::operator==(object); }
-			inline bool operator==(const ::FLAC__StreamMetadata &object) const { return Prototype::operator==(object); }
-			inline bool operator==(const ::FLAC__StreamMetadata *object) const { return Prototype::operator==(object); }
-			//@}
-
-			//@{
-			/** Check for inequality, performing a deep compare by following pointers. */
-			inline bool operator!=(const Unknown &object) const { return Prototype::operator!=(object); }
-			inline bool operator!=(const ::FLAC__StreamMetadata &object) const { return Prototype::operator!=(object); }
-			inline bool operator!=(const ::FLAC__StreamMetadata *object) const { return Prototype::operator!=(object); }
-			//@}
-
-			const FLAC__byte *get_data() const;
-
-			//! This form always copies \a data
-			bool set_data(const FLAC__byte *data, unsigned length);
-			bool set_data(FLAC__byte *data, unsigned length, bool copy);
-		};
-
-		/* \} */
-
-
-		/** \defgroup flacpp_metadata_level0 FLAC++/metadata.h: metadata level 0 interface
-		 *  \ingroup flacpp_metadata
-		 *
-		 *  \brief
-		 *  Level 0 metadata iterators.
-		 *
-		 *  See the \link flac_metadata_level0 C layer equivalent \endlink
-		 *  for more.
-		 *
-		 * \{
-		 */
-
-		FLACPP_API bool get_streaminfo(const char *filename, StreamInfo &streaminfo); ///< See FLAC__metadata_get_streaminfo().
-
-		FLACPP_API bool get_tags(const char *filename, VorbisComment *&tags); ///< See FLAC__metadata_get_tags().
-		FLACPP_API bool get_tags(const char *filename, VorbisComment &tags); ///< See FLAC__metadata_get_tags().
-
-		FLACPP_API bool get_cuesheet(const char *filename, CueSheet *&cuesheet); ///< See FLAC__metadata_get_cuesheet().
-		FLACPP_API bool get_cuesheet(const char *filename, CueSheet &cuesheet); ///< See FLAC__metadata_get_cuesheet().
-
-		FLACPP_API bool get_picture(const char *filename, Picture *&picture, ::FLAC__StreamMetadata_Picture_Type type, const char *mime_type, const FLAC__byte *description, unsigned max_width, unsigned max_height, unsigned max_depth, unsigned max_colors); ///< See FLAC__metadata_get_picture().
-		FLACPP_API bool get_picture(const char *filename, Picture &picture, ::FLAC__StreamMetadata_Picture_Type type, const char *mime_type, const FLAC__byte *description, unsigned max_width, unsigned max_height, unsigned max_depth, unsigned max_colors); ///< See FLAC__metadata_get_picture().
-
-		/* \} */
-
-
-		/** \defgroup flacpp_metadata_level1 FLAC++/metadata.h: metadata level 1 interface
-		 *  \ingroup flacpp_metadata
-		 *
-		 *  \brief
-		 *  Level 1 metadata iterator.
-		 *
-		 *  The flow through the iterator in the C++ layer is similar
-		 *  to the C layer:
-		 *    - Create a SimpleIterator instance
-		 *    - Check SimpleIterator::is_valid()
-		 *    - Call SimpleIterator::init() and check the return
-		 *    - Traverse and/or edit.  Edits are written to file
-		 *      immediately.
-		 *    - Destroy the SimpleIterator instance
-		 *
-		 *  The ownership of pointers in the C++ layer follows that in
-		 *  the C layer, i.e.
-		 *    - The objects returned by get_block() are yours to
-		 *      modify, but changes are not reflected in the FLAC file
-		 *      until you call set_block().  The objects are also
-		 *      yours to delete; they are not automatically deleted
-		 *      when passed to set_block() or insert_block_after().
-		 *
-		 *  See the \link flac_metadata_level1 C layer equivalent \endlink
-		 *  for more.
-		 *
-		 * \{
-		 */
-
-		/** This class is a wrapper around the FLAC__metadata_simple_iterator
-		 *  structures and methods; see the
-		 * \link flacpp_metadata_level1 usage guide \endlink and
-		 * ::FLAC__Metadata_SimpleIterator.
-		 */
-		class FLACPP_API SimpleIterator {
-		public:
-			/** This class is a wrapper around FLAC__Metadata_SimpleIteratorStatus.
-			 */
-			class FLACPP_API Status {
-			public:
-				inline Status(::FLAC__Metadata_SimpleIteratorStatus status): status_(status) { }
-				inline operator ::FLAC__Metadata_SimpleIteratorStatus() const { return status_; }
-				inline const char *as_cstring() const { return ::FLAC__Metadata_SimpleIteratorStatusString[status_]; }
-			protected:
-				::FLAC__Metadata_SimpleIteratorStatus status_;
-			};
-
-			SimpleIterator();
-			virtual ~SimpleIterator();
-
-			bool is_valid() const; ///< Returns \c true iff object was properly constructed.
-
-			bool init(const char *filename, bool read_only, bool preserve_file_stats); ///< See FLAC__metadata_simple_iterator_init().
-
-			Status status();                                                    ///< See FLAC__metadata_simple_iterator_status().
-			bool is_writable() const;                                           ///< See FLAC__metadata_simple_iterator_is_writable().
-
-			bool next();                                                        ///< See FLAC__metadata_simple_iterator_next().
-			bool prev();                                                        ///< See FLAC__metadata_simple_iterator_prev().
-			bool is_last() const;                                               ///< See FLAC__metadata_simple_iterator_is_last().
-
-			off_t get_block_offset() const;                                     ///< See FLAC__metadata_simple_iterator_get_block_offset().
-			::FLAC__MetadataType get_block_type() const;                        ///< See FLAC__metadata_simple_iterator_get_block_type().
-			unsigned get_block_length() const;                                  ///< See FLAC__metadata_simple_iterator_get_block_length().
-			bool get_application_id(FLAC__byte *id);                            ///< See FLAC__metadata_simple_iterator_get_application_id().
-			Prototype *get_block();                                             ///< See FLAC__metadata_simple_iterator_get_block().
-			bool set_block(Prototype *block, bool use_padding = true);          ///< See FLAC__metadata_simple_iterator_set_block().
-			bool insert_block_after(Prototype *block, bool use_padding = true); ///< See FLAC__metadata_simple_iterator_insert_block_after().
-			bool delete_block(bool use_padding = true);                         ///< See FLAC__metadata_simple_iterator_delete_block().
-
-		protected:
-			::FLAC__Metadata_SimpleIterator *iterator_;
-			void clear();
-		};
-
-		/* \} */
-
-
-		/** \defgroup flacpp_metadata_level2 FLAC++/metadata.h: metadata level 2 interface
-		 *  \ingroup flacpp_metadata
-		 *
-		 *  \brief
-		 *  Level 2 metadata iterator.
-		 *
-		 *  The flow through the iterator in the C++ layer is similar
-		 *  to the C layer:
-		 *    - Create a Chain instance
-		 *    - Check Chain::is_valid()
-		 *    - Call Chain::read() and check the return
-		 *    - Traverse and/or edit with an Iterator or with
-		 *      Chain::merge_padding() or Chain::sort_padding()
-		 *    - Write changes back to FLAC file with Chain::write()
-		 *    - Destroy the Chain instance
-		 *
-		 *  The ownership of pointers in the C++ layer is slightly
-		 *  different than in the C layer, i.e.
-		 *    - The objects returned by Iterator::get_block() are NOT
-		 *      owned by the iterator and should be deleted by the
-		 *      caller when finished, BUT, when you modify the block,
-		 *      it will directly edit what's in the chain and you do
-		 *      not need to call Iterator::set_block().  However the
-		 *      changes will not be reflected in the FLAC file until
-		 *      the chain is written with Chain::write().
-		 *    - When you pass an object to Iterator::set_block(),
-		 *      Iterator::insert_block_before(), or
-		 *      Iterator::insert_block_after(), the iterator takes
-		 *      ownership of the block and it will be deleted by the
-		 *      chain.
-		 *
-		 *  See the \link flac_metadata_level2 C layer equivalent \endlink
-		 *  for more.
-		 *
-		 * \{
-		 */
-
-		/** This class is a wrapper around the FLAC__metadata_chain
-		 *  structures and methods; see the
-		 * \link flacpp_metadata_level2 usage guide \endlink and
-		 * ::FLAC__Metadata_Chain.
-		 */
-		class FLACPP_API Chain {
-		public:
-			/** This class is a wrapper around FLAC__Metadata_ChainStatus.
-			 */
-			class FLACPP_API Status {
-			public:
-				inline Status(::FLAC__Metadata_ChainStatus status): status_(status) { }
-				inline operator ::FLAC__Metadata_ChainStatus() const { return status_; }
-				inline const char *as_cstring() const { return ::FLAC__Metadata_ChainStatusString[status_]; }
-			protected:
-				::FLAC__Metadata_ChainStatus status_;
-			};
-
-			Chain();
-			virtual ~Chain();
-
-			friend class Iterator;
-
-			bool is_valid() const; ///< Returns \c true iff object was properly constructed.
-
-			Status status();                                                ///< See FLAC__metadata_chain_status().
-
-			bool read(const char *filename, bool is_ogg = false);                                ///< See FLAC__metadata_chain_read(), FLAC__metadata_chain_read_ogg().
-			bool read(FLAC__IOHandle handle, FLAC__IOCallbacks callbacks, bool is_ogg = false);  ///< See FLAC__metadata_chain_read_with_callbacks(), FLAC__metadata_chain_read_ogg_with_callbacks().
-
-			bool check_if_tempfile_needed(bool use_padding);                ///< See FLAC__metadata_chain_check_if_tempfile_needed().
-
-			bool write(bool use_padding = true, bool preserve_file_stats = false); ///< See FLAC__metadata_chain_write().
-			bool write(bool use_padding, ::FLAC__IOHandle handle, ::FLAC__IOCallbacks callbacks); ///< See FLAC__metadata_chain_write_with_callbacks().
-			bool write(bool use_padding, ::FLAC__IOHandle handle, ::FLAC__IOCallbacks callbacks, ::FLAC__IOHandle temp_handle, ::FLAC__IOCallbacks temp_callbacks); ///< See FLAC__metadata_chain_write_with_callbacks_and_tempfile().
-
-			void merge_padding();                                           ///< See FLAC__metadata_chain_merge_padding().
-			void sort_padding();                                            ///< See FLAC__metadata_chain_sort_padding().
-
-		protected:
-			::FLAC__Metadata_Chain *chain_;
-			virtual void clear();
-		};
-
-		/** This class is a wrapper around the FLAC__metadata_iterator
-		 *  structures and methods; see the
-		 * \link flacpp_metadata_level2 usage guide \endlink and
-		 * ::FLAC__Metadata_Iterator.
-		 */
-		class FLACPP_API Iterator {
-		public:
-			Iterator();
-			virtual ~Iterator();
-
-			bool is_valid() const; ///< Returns \c true iff object was properly constructed.
-
-
-			void init(Chain &chain);                       ///< See FLAC__metadata_iterator_init().
-
-			bool next();                                   ///< See FLAC__metadata_iterator_next().
-			bool prev();                                   ///< See FLAC__metadata_iterator_prev().
-
-			::FLAC__MetadataType get_block_type() const;   ///< See FLAC__metadata_iterator_get_block_type().
-			Prototype *get_block();                        ///< See FLAC__metadata_iterator_get_block().
-			bool set_block(Prototype *block);              ///< See FLAC__metadata_iterator_set_block().
-			bool delete_block(bool replace_with_padding);  ///< See FLAC__metadata_iterator_delete_block().
-			bool insert_block_before(Prototype *block);    ///< See FLAC__metadata_iterator_insert_block_before().
-			bool insert_block_after(Prototype *block);     ///< See FLAC__metadata_iterator_insert_block_after().
-
-		protected:
-			::FLAC__Metadata_Iterator *iterator_;
-			virtual void clear();
-		};
-
-		/* \} */
-
-	}
-}
-
-#endif
--- a/win64-mingw/include/FLAC/Makefile	Wed Oct 26 13:24:45 2016 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,467 +0,0 @@
-# Makefile.in generated by automake 1.7.9 from Makefile.am.
-# include/FLAC/Makefile.  Generated from Makefile.in by configure.
-
-# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
-# Free Software Foundation, Inc.
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-
-
-#  libFLAC - Free Lossless Audio Codec library
-#  Copyright (C) 2000,2001,2002,2003,2004,2005,2006,2007  Josh Coalson
-#
-#  Redistribution and use in source and binary forms, with or without
-#  modification, are permitted provided that the following conditions
-#  are met:
-#
-#  - Redistributions of source code must retain the above copyright
-#  notice, this list of conditions and the following disclaimer.
-#
-#  - Redistributions in binary form must reproduce the above copyright
-#  notice, this list of conditions and the following disclaimer in the
-#  documentation and/or other materials provided with the distribution.
-#
-#  - Neither the name of the Xiph.org Foundation nor the names of its
-#  contributors may be used to endorse or promote products derived from
-#  this software without specific prior written permission.
-#
-#  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-#  ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-#  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-#  A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR
-#  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-#  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-#  PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-#  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-#  LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-#  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-#  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-srcdir = .
-top_srcdir = ../..
-
-pkgdatadir = $(datadir)/flac
-pkglibdir = $(libdir)/flac
-pkgincludedir = $(includedir)/flac
-top_builddir = ../..
-
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-INSTALL = /usr/bin/install -c
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-host_triplet = x86_64-unknown-windows
-ACLOCAL = ${SHELL} /home/cannam/code/sv-dependency-builds/src/flac-1.2.1/missing --run aclocal-1.7
-ACLOCAL_AMFLAGS = -I m4
-AMDEP_FALSE = #
-AMDEP_TRUE = 
-AMTAR = ${SHELL} /home/cannam/code/sv-dependency-builds/src/flac-1.2.1/missing --run tar
-AR = ar
-AS = gas
-AUTOCONF = ${SHELL} /home/cannam/code/sv-dependency-builds/src/flac-1.2.1/missing --run autoconf
-AUTOHEADER = ${SHELL} /home/cannam/code/sv-dependency-builds/src/flac-1.2.1/missing --run autoheader
-AUTOMAKE = ${SHELL} /home/cannam/code/sv-dependency-builds/src/flac-1.2.1/missing --run automake-1.7
-AWK = gawk
-CC = x86_64-w64-mingw32-gcc -I/home/cannam/code/sv-dependency-builds/src/flac-1.2.1/../../script/win64/../..//win64-mingw/include -L/home/cannam/code/sv-dependency-builds/src/flac-1.2.1/../../script/win64/../..//win64-mingw/lib
-CCAS = $(CC)
-CCASFLAGS = $(CFLAGS)
-CCDEPMODE = depmode=gcc3
-CFLAGS = -O3 -funroll-loops -finline-functions -Wall -W -Winline -g -O2
-CPP = x86_64-w64-mingw32-gcc -I/home/cannam/code/sv-dependency-builds/src/flac-1.2.1/../../script/win64/../..//win64-mingw/include -L/home/cannam/code/sv-dependency-builds/src/flac-1.2.1/../../script/win64/../..//win64-mingw/lib -E
-CPPFLAGS = -DFLaC__INLINE=__inline__ -DNDEBUG -I$(top_builddir) -I$(srcdir)/include -I$(top_srcdir)/include 
-CXX = x86_64-w64-mingw32-g++ -I/home/cannam/code/sv-dependency-builds/src/flac-1.2.1/../../script/win64/../..//win64-mingw/include -L/home/cannam/code/sv-dependency-builds/src/flac-1.2.1/../../script/win64/../..//win64-mingw/lib
-CXXCPP = x86_64-w64-mingw32-g++ -I/home/cannam/code/sv-dependency-builds/src/flac-1.2.1/../../script/win64/../..//win64-mingw/include -L/home/cannam/code/sv-dependency-builds/src/flac-1.2.1/../../script/win64/../..//win64-mingw/lib -E
-CXXDEPMODE = depmode=gcc3
-CXXFLAGS = -g -O2
-CYGPATH_W = echo
-DEBUG_FALSE = 
-DEBUG_TRUE = #
-DEFS = -DHAVE_CONFIG_H
-DEPDIR = .deps
-DOCBOOK_TO_MAN = 
-DOXYGEN = doxygen
-ECHO = echo
-ECHO_C = 
-ECHO_N = -n
-ECHO_T = 
-EGREP = grep -E
-EXEEXT = .exe
-F77 = 
-FFLAGS = 
-FLAC__TEST_LEVEL = 1
-FLAC__TEST_WITH_VALGRIND = no
-FLaC__CPU_IA32_FALSE = 
-FLaC__CPU_IA32_TRUE = #
-FLaC__CPU_PPC_FALSE = 
-FLaC__CPU_PPC_TRUE = #
-FLaC__CPU_SPARC_FALSE = 
-FLaC__CPU_SPARC_TRUE = #
-FLaC__HAS_AS_FALSE = 
-FLaC__HAS_AS_TRUE = #
-FLaC__HAS_AS__TEMPORARILY_DISABLED_FALSE = 
-FLaC__HAS_AS__TEMPORARILY_DISABLED_TRUE = #
-FLaC__HAS_DOCBOOK_TO_MAN_FALSE = 
-FLaC__HAS_DOCBOOK_TO_MAN_TRUE = #
-FLaC__HAS_DOXYGEN_FALSE = #
-FLaC__HAS_DOXYGEN_TRUE = 
-FLaC__HAS_GAS_FALSE = #
-FLaC__HAS_GAS_TRUE = 
-FLaC__HAS_GAS__TEMPORARILY_DISABLED_FALSE = 
-FLaC__HAS_GAS__TEMPORARILY_DISABLED_TRUE = #
-FLaC__HAS_NASM_FALSE = 
-FLaC__HAS_NASM_TRUE = #
-FLaC__HAS_OGG_FALSE = #
-FLaC__HAS_OGG_TRUE = 
-FLaC__HAS_XMMS_FALSE = 
-FLaC__HAS_XMMS_TRUE = #
-FLaC__INSTALL_XMMS_PLUGIN_LOCALLY_FALSE = 
-FLaC__INSTALL_XMMS_PLUGIN_LOCALLY_TRUE = #
-FLaC__NO_ASM_FALSE = 
-FLaC__NO_ASM_TRUE = #
-FLaC__SSE_OS_FALSE = 
-FLaC__SSE_OS_TRUE = #
-FLaC__SYS_DARWIN_FALSE = 
-FLaC__SYS_DARWIN_TRUE = #
-FLaC__SYS_LINUX_FALSE = 
-FLaC__SYS_LINUX_TRUE = #
-FLaC__USE_3DNOW_FALSE = #
-FLaC__USE_3DNOW_TRUE = 
-FLaC__USE_ALTIVEC_FALSE = #
-FLaC__USE_ALTIVEC_TRUE = 
-FLaC__WITH_CPPLIBS_FALSE = #
-FLaC__WITH_CPPLIBS_TRUE = 
-GAS = gas
-INSTALL_DATA = ${INSTALL} -m 644
-INSTALL_PROGRAM = ${INSTALL}
-INSTALL_SCRIPT = ${INSTALL}
-INSTALL_STRIP_PROGRAM = ${SHELL} $(install_sh) -c -s
-LDFLAGS = 
-LIBICONV = 
-LIBOBJS = 
-LIBS = 
-LIBTOOL = $(SHELL) $(top_builddir)/libtool
-LN_S = ln -s
-LTLIBICONV = 
-LTLIBOBJS = 
-MAINT = #
-MAINTAINER_MODE_FALSE = 
-MAINTAINER_MODE_TRUE = #
-MAKEINFO = ${SHELL} /home/cannam/code/sv-dependency-builds/src/flac-1.2.1/missing --run makeinfo
-MINGW_WINSOCK_LIBS = 
-NASM = 
-OBJEXT = o
-OBJ_FORMAT = elf
-OGG_CFLAGS = -I/home/cannam/code/sv-dependency-builds/src/flac-1.2.1/../../script/win64/../..//win64-mingw//include
-OGG_LIBS = -L/home/cannam/code/sv-dependency-builds/src/flac-1.2.1/../../script/win64/../..//win64-mingw//lib -logg
-PACKAGE = flac
-PACKAGE_BUGREPORT = 
-PACKAGE_NAME = 
-PACKAGE_STRING = 
-PACKAGE_TARNAME = 
-PACKAGE_VERSION = 
-PATH_SEPARATOR = :
-RANLIB = ranlib
-SET_MAKE = 
-SHELL = /bin/sh
-STRIP = strip
-VERSION = 1.2.1
-XMMS_CFLAGS = 
-XMMS_CONFIG = no
-XMMS_DATA_DIR = 
-XMMS_EFFECT_PLUGIN_DIR = 
-XMMS_GENERAL_PLUGIN_DIR = 
-XMMS_INPUT_PLUGIN_DIR = 
-XMMS_LIBS = 
-XMMS_OUTPUT_PLUGIN_DIR = 
-XMMS_PLUGIN_DIR = 
-XMMS_VERSION = 
-XMMS_VISUALIZATION_PLUGIN_DIR = 
-ac_ct_AR = ar
-ac_ct_CC = 
-ac_ct_CXX = 
-ac_ct_F77 = 
-ac_ct_RANLIB = ranlib
-ac_ct_STRIP = strip
-am__fastdepCC_FALSE = #
-am__fastdepCC_TRUE = 
-am__fastdepCXX_FALSE = #
-am__fastdepCXX_TRUE = 
-am__include = include
-am__leading_dot = .
-am__quote = 
-bindir = ${exec_prefix}/bin
-build = x86_64-unknown-linux-gnu
-build_alias = 
-build_cpu = x86_64
-build_os = linux-gnu
-build_vendor = unknown
-datadir = ${prefix}/share
-exec_prefix = ${prefix}
-host = x86_64-unknown-windows
-host_alias = x86_64-unknown-windows
-host_cpu = x86_64
-host_os = windows
-host_vendor = unknown
-includedir = ${prefix}/include
-infodir = ${prefix}/info
-install_sh = /home/cannam/code/sv-dependency-builds/src/flac-1.2.1/install-sh
-libdir = ${exec_prefix}/lib
-libexecdir = ${exec_prefix}/libexec
-localstatedir = ${prefix}/var
-mandir = ${prefix}/man
-oldincludedir = /usr/include
-prefix = /home/cannam/code/sv-dependency-builds/src/flac-1.2.1/../../script/win64/../..//win64-mingw/
-program_transform_name = s,x,x,
-sbindir = ${exec_prefix}/sbin
-sharedstatedir = ${prefix}/com
-sysconfdir = ${prefix}/etc
-target_alias = 
-
-flaccincludedir = $(includedir)/FLAC
-
-flaccinclude_HEADERS = \
-	all.h \
-	assert.h \
-	callback.h \
-	export.h \
-	format.h \
-	metadata.h \
-	ordinals.h \
-	stream_decoder.h \
-	stream_encoder.h
-
-subdir = include/FLAC
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-DIST_SOURCES =
-HEADERS = $(flaccinclude_HEADERS)
-
-DIST_COMMON = $(flaccinclude_HEADERS) $(srcdir)/Makefile.in Makefile.am
-all: all-am
-
-.SUFFIXES:
-$(srcdir)/Makefile.in: # Makefile.am  $(top_srcdir)/configure.in $(ACLOCAL_M4)
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  include/FLAC/Makefile
-Makefile: # $(srcdir)/Makefile.in  $(top_builddir)/config.status
-	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-
-distclean-libtool:
-	-rm -f libtool
-uninstall-info-am:
-flaccincludeHEADERS_INSTALL = $(INSTALL_HEADER)
-install-flaccincludeHEADERS: $(flaccinclude_HEADERS)
-	@$(NORMAL_INSTALL)
-	$(mkinstalldirs) $(DESTDIR)$(flaccincludedir)
-	@list='$(flaccinclude_HEADERS)'; for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  f="`echo $$p | sed -e 's|^.*/||'`"; \
-	  echo " $(flaccincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(flaccincludedir)/$$f"; \
-	  $(flaccincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(flaccincludedir)/$$f; \
-	done
-
-uninstall-flaccincludeHEADERS:
-	@$(NORMAL_UNINSTALL)
-	@list='$(flaccinclude_HEADERS)'; for p in $$list; do \
-	  f="`echo $$p | sed -e 's|^.*/||'`"; \
-	  echo " rm -f $(DESTDIR)$(flaccincludedir)/$$f"; \
-	  rm -f $(DESTDIR)$(flaccincludedir)/$$f; \
-	done
-
-ETAGS = etags
-ETAGSFLAGS =
-
-CTAGS = ctags
-CTAGSFLAGS =
-
-tags: TAGS
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '    { files[$$0] = 1; } \
-	       END { for (i in files) print i; }'`; \
-	mkid -fID $$unique
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	tags=; \
-	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '    { files[$$0] = 1; } \
-	       END { for (i in files) print i; }'`; \
-	test -z "$(ETAGS_ARGS)$$tags$$unique" \
-	  || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	     $$tags $$unique
-
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	tags=; \
-	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '    { files[$$0] = 1; } \
-	       END { for (i in files) print i; }'`; \
-	test -z "$(CTAGS_ARGS)$$tags$$unique" \
-	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$tags $$unique
-
-GTAGS:
-	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && cd $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) $$here
-
-distclean-tags:
-	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-
-top_distdir = ../..
-distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
-
-distdir: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
-	list='$(DISTFILES)'; for file in $$list; do \
-	  case $$file in \
-	    $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
-	    $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
-	  esac; \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
-	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
-	    dir="/$$dir"; \
-	    $(mkinstalldirs) "$(distdir)$$dir"; \
-	  else \
-	    dir=''; \
-	  fi; \
-	  if test -d $$d/$$file; then \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
-	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
-	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
-	    || exit 1; \
-	  fi; \
-	done
-check-am: all-am
-check: check-am
-all-am: Makefile $(HEADERS)
-
-installdirs:
-	$(mkinstalldirs) $(DESTDIR)$(flaccincludedir)
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
-	-rm -f $(CONFIG_CLEAN_FILES)
-
-maintainer-clean-generic:
-	@echo "This command is intended for maintainers to use"
-	@echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic clean-libtool mostlyclean-am
-
-distclean: distclean-am
-	-rm -f Makefile
-distclean-am: clean-am distclean-generic distclean-libtool \
-	distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-info: info-am
-
-info-am:
-
-install-data-am: install-flaccincludeHEADERS
-
-install-exec-am:
-
-install-info: install-info-am
-
-install-man:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-generic mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-flaccincludeHEADERS uninstall-info-am
-
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
-	clean-libtool ctags distclean distclean-generic \
-	distclean-libtool distclean-tags distdir dvi dvi-am info \
-	info-am install install-am install-data install-data-am \
-	install-exec install-exec-am install-flaccincludeHEADERS \
-	install-info install-info-am install-man install-strip \
-	installcheck installcheck-am installdirs maintainer-clean \
-	maintainer-clean-generic mostlyclean mostlyclean-generic \
-	mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
-	uninstall-am uninstall-flaccincludeHEADERS uninstall-info-am
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
--- a/win64-mingw/include/FLAC/Makefile.am	Wed Oct 26 13:24:45 2016 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,42 +0,0 @@
-#  libFLAC - Free Lossless Audio Codec library
-#  Copyright (C) 2000,2001,2002,2003,2004,2005,2006,2007  Josh Coalson
-#
-#  Redistribution and use in source and binary forms, with or without
-#  modification, are permitted provided that the following conditions
-#  are met:
-#
-#  - Redistributions of source code must retain the above copyright
-#  notice, this list of conditions and the following disclaimer.
-#
-#  - Redistributions in binary form must reproduce the above copyright
-#  notice, this list of conditions and the following disclaimer in the
-#  documentation and/or other materials provided with the distribution.
-#
-#  - Neither the name of the Xiph.org Foundation nor the names of its
-#  contributors may be used to endorse or promote products derived from
-#  this software without specific prior written permission.
-#
-#  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-#  ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-#  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-#  A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR
-#  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-#  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-#  PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-#  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-#  LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-#  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-#  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-flaccincludedir = $(includedir)/FLAC
-
-flaccinclude_HEADERS = \
-	all.h \
-	assert.h \
-	callback.h \
-	export.h \
-	format.h \
-	metadata.h \
-	ordinals.h \
-	stream_decoder.h \
-	stream_encoder.h
--- a/win64-mingw/include/FLAC/Makefile.in	Wed Oct 26 13:24:45 2016 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,467 +0,0 @@
-# Makefile.in generated by automake 1.7.9 from Makefile.am.
-# @configure_input@
-
-# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
-# Free Software Foundation, Inc.
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-
-#  libFLAC - Free Lossless Audio Codec library
-#  Copyright (C) 2000,2001,2002,2003,2004,2005,2006,2007  Josh Coalson
-#
-#  Redistribution and use in source and binary forms, with or without
-#  modification, are permitted provided that the following conditions
-#  are met:
-#
-#  - Redistributions of source code must retain the above copyright
-#  notice, this list of conditions and the following disclaimer.
-#
-#  - Redistributions in binary form must reproduce the above copyright
-#  notice, this list of conditions and the following disclaimer in the
-#  documentation and/or other materials provided with the distribution.
-#
-#  - Neither the name of the Xiph.org Foundation nor the names of its
-#  contributors may be used to endorse or promote products derived from
-#  this software without specific prior written permission.
-#
-#  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-#  ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-#  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-#  A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR
-#  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-#  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-#  PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-#  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-#  LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-#  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-#  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-srcdir = @srcdir@
-top_srcdir = @top_srcdir@
-VPATH = @srcdir@
-pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-top_builddir = ../..
-
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-INSTALL = @INSTALL@
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-host_triplet = @host@
-ACLOCAL = @ACLOCAL@
-ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
-AMDEP_FALSE = @AMDEP_FALSE@
-AMDEP_TRUE = @AMDEP_TRUE@
-AMTAR = @AMTAR@
-AR = @AR@
-AS = @AS@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCAS = @CCAS@
-CCASFLAGS = @CCASFLAGS@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEBUG_FALSE = @DEBUG_FALSE@
-DEBUG_TRUE = @DEBUG_TRUE@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DOCBOOK_TO_MAN = @DOCBOOK_TO_MAN@
-DOXYGEN = @DOXYGEN@
-ECHO = @ECHO@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-F77 = @F77@
-FFLAGS = @FFLAGS@
-FLAC__TEST_LEVEL = @FLAC__TEST_LEVEL@
-FLAC__TEST_WITH_VALGRIND = @FLAC__TEST_WITH_VALGRIND@
-FLaC__CPU_IA32_FALSE = @FLaC__CPU_IA32_FALSE@
-FLaC__CPU_IA32_TRUE = @FLaC__CPU_IA32_TRUE@
-FLaC__CPU_PPC_FALSE = @FLaC__CPU_PPC_FALSE@
-FLaC__CPU_PPC_TRUE = @FLaC__CPU_PPC_TRUE@
-FLaC__CPU_SPARC_FALSE = @FLaC__CPU_SPARC_FALSE@
-FLaC__CPU_SPARC_TRUE = @FLaC__CPU_SPARC_TRUE@
-FLaC__HAS_AS_FALSE = @FLaC__HAS_AS_FALSE@
-FLaC__HAS_AS_TRUE = @FLaC__HAS_AS_TRUE@
-FLaC__HAS_AS__TEMPORARILY_DISABLED_FALSE = @FLaC__HAS_AS__TEMPORARILY_DISABLED_FALSE@
-FLaC__HAS_AS__TEMPORARILY_DISABLED_TRUE = @FLaC__HAS_AS__TEMPORARILY_DISABLED_TRUE@
-FLaC__HAS_DOCBOOK_TO_MAN_FALSE = @FLaC__HAS_DOCBOOK_TO_MAN_FALSE@
-FLaC__HAS_DOCBOOK_TO_MAN_TRUE = @FLaC__HAS_DOCBOOK_TO_MAN_TRUE@
-FLaC__HAS_DOXYGEN_FALSE = @FLaC__HAS_DOXYGEN_FALSE@
-FLaC__HAS_DOXYGEN_TRUE = @FLaC__HAS_DOXYGEN_TRUE@
-FLaC__HAS_GAS_FALSE = @FLaC__HAS_GAS_FALSE@
-FLaC__HAS_GAS_TRUE = @FLaC__HAS_GAS_TRUE@
-FLaC__HAS_GAS__TEMPORARILY_DISABLED_FALSE = @FLaC__HAS_GAS__TEMPORARILY_DISABLED_FALSE@
-FLaC__HAS_GAS__TEMPORARILY_DISABLED_TRUE = @FLaC__HAS_GAS__TEMPORARILY_DISABLED_TRUE@
-FLaC__HAS_NASM_FALSE = @FLaC__HAS_NASM_FALSE@
-FLaC__HAS_NASM_TRUE = @FLaC__HAS_NASM_TRUE@
-FLaC__HAS_OGG_FALSE = @FLaC__HAS_OGG_FALSE@
-FLaC__HAS_OGG_TRUE = @FLaC__HAS_OGG_TRUE@
-FLaC__HAS_XMMS_FALSE = @FLaC__HAS_XMMS_FALSE@
-FLaC__HAS_XMMS_TRUE = @FLaC__HAS_XMMS_TRUE@
-FLaC__INSTALL_XMMS_PLUGIN_LOCALLY_FALSE = @FLaC__INSTALL_XMMS_PLUGIN_LOCALLY_FALSE@
-FLaC__INSTALL_XMMS_PLUGIN_LOCALLY_TRUE = @FLaC__INSTALL_XMMS_PLUGIN_LOCALLY_TRUE@
-FLaC__NO_ASM_FALSE = @FLaC__NO_ASM_FALSE@
-FLaC__NO_ASM_TRUE = @FLaC__NO_ASM_TRUE@
-FLaC__SSE_OS_FALSE = @FLaC__SSE_OS_FALSE@
-FLaC__SSE_OS_TRUE = @FLaC__SSE_OS_TRUE@
-FLaC__SYS_DARWIN_FALSE = @FLaC__SYS_DARWIN_FALSE@
-FLaC__SYS_DARWIN_TRUE = @FLaC__SYS_DARWIN_TRUE@
-FLaC__SYS_LINUX_FALSE = @FLaC__SYS_LINUX_FALSE@
-FLaC__SYS_LINUX_TRUE = @FLaC__SYS_LINUX_TRUE@
-FLaC__USE_3DNOW_FALSE = @FLaC__USE_3DNOW_FALSE@
-FLaC__USE_3DNOW_TRUE = @FLaC__USE_3DNOW_TRUE@
-FLaC__USE_ALTIVEC_FALSE = @FLaC__USE_ALTIVEC_FALSE@
-FLaC__USE_ALTIVEC_TRUE = @FLaC__USE_ALTIVEC_TRUE@
-FLaC__WITH_CPPLIBS_FALSE = @FLaC__WITH_CPPLIBS_FALSE@
-FLaC__WITH_CPPLIBS_TRUE = @FLaC__WITH_CPPLIBS_TRUE@
-GAS = @GAS@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LDFLAGS = @LDFLAGS@
-LIBICONV = @LIBICONV@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LN_S = @LN_S@
-LTLIBICONV = @LTLIBICONV@
-LTLIBOBJS = @LTLIBOBJS@
-MAINT = @MAINT@
-MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
-MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
-MAKEINFO = @MAKEINFO@
-MINGW_WINSOCK_LIBS = @MINGW_WINSOCK_LIBS@
-NASM = @NASM@
-OBJEXT = @OBJEXT@
-OBJ_FORMAT = @OBJ_FORMAT@
-OGG_CFLAGS = @OGG_CFLAGS@
-OGG_LIBS = @OGG_LIBS@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-RANLIB = @RANLIB@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-XMMS_CFLAGS = @XMMS_CFLAGS@
-XMMS_CONFIG = @XMMS_CONFIG@
-XMMS_DATA_DIR = @XMMS_DATA_DIR@
-XMMS_EFFECT_PLUGIN_DIR = @XMMS_EFFECT_PLUGIN_DIR@
-XMMS_GENERAL_PLUGIN_DIR = @XMMS_GENERAL_PLUGIN_DIR@
-XMMS_INPUT_PLUGIN_DIR = @XMMS_INPUT_PLUGIN_DIR@
-XMMS_LIBS = @XMMS_LIBS@
-XMMS_OUTPUT_PLUGIN_DIR = @XMMS_OUTPUT_PLUGIN_DIR@
-XMMS_PLUGIN_DIR = @XMMS_PLUGIN_DIR@
-XMMS_VERSION = @XMMS_VERSION@
-XMMS_VISUALIZATION_PLUGIN_DIR = @XMMS_VISUALIZATION_PLUGIN_DIR@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_F77 = @ac_ct_F77@
-ac_ct_RANLIB = @ac_ct_RANLIB@
-ac_ct_STRIP = @ac_ct_STRIP@
-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
-am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
-am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-datadir = @datadir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-oldincludedir = @oldincludedir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-
-flaccincludedir = $(includedir)/FLAC
-
-flaccinclude_HEADERS = \
-	all.h \
-	assert.h \
-	callback.h \
-	export.h \
-	format.h \
-	metadata.h \
-	ordinals.h \
-	stream_decoder.h \
-	stream_encoder.h
-
-subdir = include/FLAC
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-DIST_SOURCES =
-HEADERS = $(flaccinclude_HEADERS)
-
-DIST_COMMON = $(flaccinclude_HEADERS) $(srcdir)/Makefile.in Makefile.am
-all: all-am
-
-.SUFFIXES:
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am  $(top_srcdir)/configure.in $(ACLOCAL_M4)
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  include/FLAC/Makefile
-Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in  $(top_builddir)/config.status
-	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-
-distclean-libtool:
-	-rm -f libtool
-uninstall-info-am:
-flaccincludeHEADERS_INSTALL = $(INSTALL_HEADER)
-install-flaccincludeHEADERS: $(flaccinclude_HEADERS)
-	@$(NORMAL_INSTALL)
-	$(mkinstalldirs) $(DESTDIR)$(flaccincludedir)
-	@list='$(flaccinclude_HEADERS)'; for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  f="`echo $$p | sed -e 's|^.*/||'`"; \
-	  echo " $(flaccincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(flaccincludedir)/$$f"; \
-	  $(flaccincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(flaccincludedir)/$$f; \
-	done
-
-uninstall-flaccincludeHEADERS:
-	@$(NORMAL_UNINSTALL)
-	@list='$(flaccinclude_HEADERS)'; for p in $$list; do \
-	  f="`echo $$p | sed -e 's|^.*/||'`"; \
-	  echo " rm -f $(DESTDIR)$(flaccincludedir)/$$f"; \
-	  rm -f $(DESTDIR)$(flaccincludedir)/$$f; \
-	done
-
-ETAGS = etags
-ETAGSFLAGS =
-
-CTAGS = ctags
-CTAGSFLAGS =
-
-tags: TAGS
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '    { files[$$0] = 1; } \
-	       END { for (i in files) print i; }'`; \
-	mkid -fID $$unique
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	tags=; \
-	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '    { files[$$0] = 1; } \
-	       END { for (i in files) print i; }'`; \
-	test -z "$(ETAGS_ARGS)$$tags$$unique" \
-	  || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	     $$tags $$unique
-
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	tags=; \
-	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '    { files[$$0] = 1; } \
-	       END { for (i in files) print i; }'`; \
-	test -z "$(CTAGS_ARGS)$$tags$$unique" \
-	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$tags $$unique
-
-GTAGS:
-	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && cd $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) $$here
-
-distclean-tags:
-	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-
-top_distdir = ../..
-distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
-
-distdir: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
-	list='$(DISTFILES)'; for file in $$list; do \
-	  case $$file in \
-	    $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
-	    $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
-	  esac; \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
-	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
-	    dir="/$$dir"; \
-	    $(mkinstalldirs) "$(distdir)$$dir"; \
-	  else \
-	    dir=''; \
-	  fi; \
-	  if test -d $$d/$$file; then \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
-	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
-	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
-	    || exit 1; \
-	  fi; \
-	done
-check-am: all-am
-check: check-am
-all-am: Makefile $(HEADERS)
-
-installdirs:
-	$(mkinstalldirs) $(DESTDIR)$(flaccincludedir)
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
-	-rm -f $(CONFIG_CLEAN_FILES)
-
-maintainer-clean-generic:
-	@echo "This command is intended for maintainers to use"
-	@echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic clean-libtool mostlyclean-am
-
-distclean: distclean-am
-	-rm -f Makefile
-distclean-am: clean-am distclean-generic distclean-libtool \
-	distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-info: info-am
-
-info-am:
-
-install-data-am: install-flaccincludeHEADERS
-
-install-exec-am:
-
-install-info: install-info-am
-
-install-man:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-generic mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-flaccincludeHEADERS uninstall-info-am
-
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
-	clean-libtool ctags distclean distclean-generic \
-	distclean-libtool distclean-tags distdir dvi dvi-am info \
-	info-am install install-am install-data install-data-am \
-	install-exec install-exec-am install-flaccincludeHEADERS \
-	install-info install-info-am install-man install-strip \
-	installcheck installcheck-am installdirs maintainer-clean \
-	maintainer-clean-generic mostlyclean mostlyclean-generic \
-	mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
-	uninstall-am uninstall-flaccincludeHEADERS uninstall-info-am
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
--- a/win64-mingw/include/FLAC/all.h	Wed Oct 26 13:24:45 2016 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,370 +0,0 @@
-/* libFLAC - Free Lossless Audio Codec library
- * Copyright (C) 2000,2001,2002,2003,2004,2005,2006,2007  Josh Coalson
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * - Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * - Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * - Neither the name of the Xiph.org Foundation nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef FLAC__ALL_H
-#define FLAC__ALL_H
-
-#include "export.h"
-
-#include "assert.h"
-#include "callback.h"
-#include "format.h"
-#include "metadata.h"
-#include "ordinals.h"
-#include "stream_decoder.h"
-#include "stream_encoder.h"
-
-/** \mainpage
- *
- * \section intro Introduction
- *
- * This is the documentation for the FLAC C and C++ APIs.  It is
- * highly interconnected; this introduction should give you a top
- * level idea of the structure and how to find the information you
- * need.  As a prerequisite you should have at least a basic
- * knowledge of the FLAC format, documented
- * <A HREF="../format.html">here</A>.
- *
- * \section c_api FLAC C API
- *
- * The FLAC C API is the interface to libFLAC, a set of structures
- * describing the components of FLAC streams, and functions for
- * encoding and decoding streams, as well as manipulating FLAC
- * metadata in files.  The public include files will be installed
- * in your include area (for example /usr/include/FLAC/...).
- *
- * By writing a little code and linking against libFLAC, it is
- * relatively easy to add FLAC support to another program.  The
- * library is licensed under <A HREF="../license.html">Xiph's BSD license</A>.
- * Complete source code of libFLAC as well as the command-line
- * encoder and plugins is available and is a useful source of
- * examples.
- *
- * Aside from encoders and decoders, libFLAC provides a powerful
- * metadata interface for manipulating metadata in FLAC files.  It
- * allows the user to add, delete, and modify FLAC metadata blocks
- * and it can automatically take advantage of PADDING blocks to avoid
- * rewriting the entire FLAC file when changing the size of the
- * metadata.
- *
- * libFLAC usually only requires the standard C library and C math
- * library. In particular, threading is not used so there is no
- * dependency on a thread library. However, libFLAC does not use
- * global variables and should be thread-safe.
- *
- * libFLAC also supports encoding to and decoding from Ogg FLAC.
- * However the metadata editing interfaces currently have limited
- * read-only support for Ogg FLAC files.
- *
- * \section cpp_api FLAC C++ API
- *
- * The FLAC C++ API is a set of classes that encapsulate the
- * structures and functions in libFLAC.  They provide slightly more
- * functionality with respect to metadata but are otherwise
- * equivalent.  For the most part, they share the same usage as
- * their counterparts in libFLAC, and the FLAC C API documentation
- * can be used as a supplement.  The public include files
- * for the C++ API will be installed in your include area (for
- * example /usr/include/FLAC++/...).
- *
- * libFLAC++ is also licensed under
- * <A HREF="../license.html">Xiph's BSD license</A>.
- *
- * \section getting_started Getting Started
- *
- * A good starting point for learning the API is to browse through
- * the <A HREF="modules.html">modules</A>.  Modules are logical
- * groupings of related functions or classes, which correspond roughly
- * to header files or sections of header files.  Each module includes a
- * detailed description of the general usage of its functions or
- * classes.
- *
- * From there you can go on to look at the documentation of
- * individual functions.  You can see different views of the individual
- * functions through the links in top bar across this page.
- *
- * If you prefer a more hands-on approach, you can jump right to some
- * <A HREF="../documentation_example_code.html">example code</A>.
- *
- * \section porting_guide Porting Guide
- *
- * Starting with FLAC 1.1.3 a \link porting Porting Guide \endlink
- * has been introduced which gives detailed instructions on how to
- * port your code to newer versions of FLAC.
- *
- * \section embedded_developers Embedded Developers
- *
- * libFLAC has grown larger over time as more functionality has been
- * included, but much of it may be unnecessary for a particular embedded
- * implementation.  Unused parts may be pruned by some simple editing of
- * src/libFLAC/Makefile.am.  In general, the decoders, encoders, and
- * metadata interface are all independent from each other.
- *
- * It is easiest to just describe the dependencies:
- *
- * - All modules depend on the \link flac_format Format \endlink module.
- * - The decoders and encoders depend on the bitbuffer.
- * - The decoder is independent of the encoder.  The encoder uses the
- *   decoder because of the verify feature, but this can be removed if
- *   not needed.
- * - Parts of the metadata interface require the stream decoder (but not
- *   the encoder).
- * - Ogg support is selectable through the compile time macro
- *   \c FLAC__HAS_OGG.
- *
- * For example, if your application only requires the stream decoder, no
- * encoder, and no metadata interface, you can remove the stream encoder
- * and the metadata interface, which will greatly reduce the size of the
- * library.
- *
- * Also, there are several places in the libFLAC code with comments marked
- * with "OPT:" where a #define can be changed to enable code that might be
- * faster on a specific platform.  Experimenting with these can yield faster
- * binaries.
- */
-
-/** \defgroup porting Porting Guide for New Versions
- *
- * This module describes differences in the library interfaces from
- * version to version.  It assists in the porting of code that uses
- * the libraries to newer versions of FLAC.
- *
- * One simple facility for making porting easier that has been added
- * in FLAC 1.1.3 is a set of \c #defines in \c export.h of each
- * library's includes (e.g. \c include/FLAC/export.h).  The
- * \c #defines mirror the libraries'
- * <A HREF="http://www.gnu.org/software/libtool/manual.html#Libtool-versioning">libtool version numbers</A>,
- * e.g. in libFLAC there are \c FLAC_API_VERSION_CURRENT,
- * \c FLAC_API_VERSION_REVISION, and \c FLAC_API_VERSION_AGE.
- * These can be used to support multiple versions of an API during the
- * transition phase, e.g.
- *
- * \code
- * #if !defined(FLAC_API_VERSION_CURRENT) || FLAC_API_VERSION_CURRENT <= 7
- *   legacy code
- * #else
- *   new code
- * #endif
- * \endcode
- *
- * The the source will work for multiple versions and the legacy code can
- * easily be removed when the transition is complete.
- *
- * Another available symbol is FLAC_API_SUPPORTS_OGG_FLAC (defined in
- * include/FLAC/export.h), which can be used to determine whether or not
- * the library has been compiled with support for Ogg FLAC.  This is
- * simpler than trying to call an Ogg init function and catching the
- * error.
- */
-
-/** \defgroup porting_1_1_2_to_1_1_3 Porting from FLAC 1.1.2 to 1.1.3
- *  \ingroup porting
- *
- *  \brief
- *  This module describes porting from FLAC 1.1.2 to FLAC 1.1.3.
- *
- * The main change between the APIs in 1.1.2 and 1.1.3 is that they have
- * been simplified.  First, libOggFLAC has been merged into libFLAC and
- * libOggFLAC++ has been merged into libFLAC++.  Second, both the three
- * decoding layers and three encoding layers have been merged into a
- * single stream decoder and stream encoder.  That is, the functionality
- * of FLAC__SeekableStreamDecoder and FLAC__FileDecoder has been merged
- * into FLAC__StreamDecoder, and FLAC__SeekableStreamEncoder and
- * FLAC__FileEncoder into FLAC__StreamEncoder.  Only the
- * FLAC__StreamDecoder and FLAC__StreamEncoder remain.  What this means
- * is there is now a single API that can be used to encode or decode
- * streams to/from native FLAC or Ogg FLAC and the single API can work
- * on both seekable and non-seekable streams.
- *
- * Instead of creating an encoder or decoder of a certain layer, now the
- * client will always create a FLAC__StreamEncoder or
- * FLAC__StreamDecoder.  The old layers are now differentiated by the
- * initialization function.  For example, for the decoder,
- * FLAC__stream_decoder_init() has been replaced by
- * FLAC__stream_decoder_init_stream().  This init function takes
- * callbacks for the I/O, and the seeking callbacks are optional.  This
- * allows the client to use the same object for seekable and
- * non-seekable streams.  For decoding a FLAC file directly, the client
- * can use FLAC__stream_decoder_init_file() and pass just a filename
- * and fewer callbacks; most of the other callbacks are supplied
- * internally.  For situations where fopen()ing by filename is not
- * possible (e.g. Unicode filenames on Windows) the client can instead
- * open the file itself and supply the FILE* to
- * FLAC__stream_decoder_init_FILE().  The init functions now returns a
- * FLAC__StreamDecoderInitStatus instead of FLAC__StreamDecoderState.
- * Since the callbacks and client data are now passed to the init
- * function, the FLAC__stream_decoder_set_*_callback() functions and
- * FLAC__stream_decoder_set_client_data() are no longer needed.  The
- * rest of the calls to the decoder are the same as before.
- *
- * There are counterpart init functions for Ogg FLAC, e.g.
- * FLAC__stream_decoder_init_ogg_stream().  All the rest of the calls
- * and callbacks are the same as for native FLAC.
- *
- * As an example, in FLAC 1.1.2 a seekable stream decoder would have
- * been set up like so:
- *
- * \code
- * FLAC__SeekableStreamDecoder *decoder = FLAC__seekable_stream_decoder_new();
- * if(decoder == NULL) do_something;
- * FLAC__seekable_stream_decoder_set_md5_checking(decoder, true);
- * [... other settings ...]
- * FLAC__seekable_stream_decoder_set_read_callback(decoder, my_read_callback);
- * FLAC__seekable_stream_decoder_set_seek_callback(decoder, my_seek_callback);
- * FLAC__seekable_stream_decoder_set_tell_callback(decoder, my_tell_callback);
- * FLAC__seekable_stream_decoder_set_length_callback(decoder, my_length_callback);
- * FLAC__seekable_stream_decoder_set_eof_callback(decoder, my_eof_callback);
- * FLAC__seekable_stream_decoder_set_write_callback(decoder, my_write_callback);
- * FLAC__seekable_stream_decoder_set_metadata_callback(decoder, my_metadata_callback);
- * FLAC__seekable_stream_decoder_set_error_callback(decoder, my_error_callback);
- * FLAC__seekable_stream_decoder_set_client_data(decoder, my_client_data);
- * if(FLAC__seekable_stream_decoder_init(decoder) != FLAC__SEEKABLE_STREAM_DECODER_OK) do_something;
- * \endcode
- *
- * In FLAC 1.1.3 it is like this:
- *
- * \code
- * FLAC__StreamDecoder *decoder = FLAC__stream_decoder_new();
- * if(decoder == NULL) do_something;
- * FLAC__stream_decoder_set_md5_checking(decoder, true);
- * [... other settings ...]
- * if(FLAC__stream_decoder_init_stream(
- *   decoder,
- *   my_read_callback,
- *   my_seek_callback,      // or NULL
- *   my_tell_callback,      // or NULL
- *   my_length_callback,    // or NULL
- *   my_eof_callback,       // or NULL
- *   my_write_callback,
- *   my_metadata_callback,  // or NULL
- *   my_error_callback,
- *   my_client_data
- * ) != FLAC__STREAM_DECODER_INIT_STATUS_OK) do_something;
- * \endcode
- *
- * or you could do;
- *
- * \code
- * [...]
- * FILE *file = fopen("somefile.flac","rb");
- * if(file == NULL) do_somthing;
- * if(FLAC__stream_decoder_init_FILE(
- *   decoder,
- *   file,
- *   my_write_callback,
- *   my_metadata_callback,  // or NULL
- *   my_error_callback,
- *   my_client_data
- * ) != FLAC__STREAM_DECODER_INIT_STATUS_OK) do_something;
- * \endcode
- *
- * or just:
- *
- * \code
- * [...]
- * if(FLAC__stream_decoder_init_file(
- *   decoder,
- *   "somefile.flac",
- *   my_write_callback,
- *   my_metadata_callback,  // or NULL
- *   my_error_callback,
- *   my_client_data
- * ) != FLAC__STREAM_DECODER_INIT_STATUS_OK) do_something;
- * \endcode
- *
- * Another small change to the decoder is in how it handles unparseable
- * streams.  Before, when the decoder found an unparseable stream
- * (reserved for when the decoder encounters a stream from a future
- * encoder that it can't parse), it changed the state to
- * \c FLAC__STREAM_DECODER_UNPARSEABLE_STREAM.  Now the decoder instead
- * drops sync and calls the error callback with a new error code
- * \c FLAC__STREAM_DECODER_ERROR_STATUS_UNPARSEABLE_STREAM.  This is
- * more robust.  If your error callback does not discriminate on the the
- * error state, your code does not need to be changed.
- *
- * The encoder now has a new setting:
- * FLAC__stream_encoder_set_apodization().  This is for setting the
- * method used to window the data before LPC analysis.  You only need to
- * add a call to this function if the default is not suitable.   There
- * are also two new convenience functions that may be useful:
- * FLAC__metadata_object_cuesheet_calculate_cddb_id() and
- * FLAC__metadata_get_cuesheet().
- *
- * The \a bytes parameter to FLAC__StreamDecoderReadCallback,
- * FLAC__StreamEncoderReadCallback, and FLAC__StreamEncoderWriteCallback
- * is now \c size_t instead of \c unsigned.
- */
-
-/** \defgroup porting_1_1_3_to_1_1_4 Porting from FLAC 1.1.3 to 1.1.4
- *  \ingroup porting
- *
- *  \brief
- *  This module describes porting from FLAC 1.1.3 to FLAC 1.1.4.
- *
- * There were no changes to any of the interfaces from 1.1.3 to 1.1.4.
- * There was a slight change in the implementation of
- * FLAC__stream_encoder_set_metadata(); the function now makes a copy
- * of the \a metadata array of pointers so the client no longer needs
- * to maintain it after the call.  The objects themselves that are
- * pointed to by the array are still not copied though and must be
- * maintained until the call to FLAC__stream_encoder_finish().
- */
-
-/** \defgroup porting_1_1_4_to_1_2_0 Porting from FLAC 1.1.4 to 1.2.0
- *  \ingroup porting
- *
- *  \brief
- *  This module describes porting from FLAC 1.1.4 to FLAC 1.2.0.
- *
- * There were only very minor changes to the interfaces from 1.1.4 to 1.2.0.
- * In libFLAC, \c FLAC__format_sample_rate_is_subset() was added.
- * In libFLAC++, \c FLAC::Decoder::Stream::get_decode_position() was added.
- *
- * Finally, value of the constant \c FLAC__FRAME_HEADER_RESERVED_LEN
- * has changed to reflect the conversion of one of the reserved bits
- * into active use.  It used to be \c 2 and now is \c 1.  However the
- * FLAC frame header length has not changed, so to skip the proper
- * number of bits, use \c FLAC__FRAME_HEADER_RESERVED_LEN +
- * \c FLAC__FRAME_HEADER_BLOCKING_STRATEGY_LEN
- */
-
-/** \defgroup flac FLAC C API
- *
- * The FLAC C API is the interface to libFLAC, a set of structures
- * describing the components of FLAC streams, and functions for
- * encoding and decoding streams, as well as manipulating FLAC
- * metadata in files.
- *
- * You should start with the format components as all other modules
- * are dependent on it.
- */
-
-#endif
--- a/win64-mingw/include/FLAC/assert.h	Wed Oct 26 13:24:45 2016 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +0,0 @@
-/* libFLAC - Free Lossless Audio Codec library
- * Copyright (C) 2001,2002,2003,2004,2005,2006,2007  Josh Coalson
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * - Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * - Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * - Neither the name of the Xiph.org Foundation nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef FLAC__ASSERT_H
-#define FLAC__ASSERT_H
-
-/* we need this since some compilers (like MSVC) leave assert()s on release code (and we don't want to use their ASSERT) */
-#ifdef DEBUG
-#include <assert.h>
-#define FLAC__ASSERT(x) assert(x)
-#define FLAC__ASSERT_DECLARATION(x) x
-#else
-#define FLAC__ASSERT(x)
-#define FLAC__ASSERT_DECLARATION(x)
-#endif
-
-#endif
--- a/win64-mingw/include/FLAC/callback.h	Wed Oct 26 13:24:45 2016 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,184 +0,0 @@
-/* libFLAC - Free Lossless Audio Codec library
- * Copyright (C) 2004,2005,2006,2007  Josh Coalson
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * - Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * - Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * - Neither the name of the Xiph.org Foundation nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef FLAC__CALLBACK_H
-#define FLAC__CALLBACK_H
-
-#include "ordinals.h"
-#include <stdlib.h> /* for size_t */
-
-/** \file include/FLAC/callback.h
- *
- *  \brief
- *  This module defines the structures for describing I/O callbacks
- *  to the other FLAC interfaces.
- *
- *  See the detailed documentation for callbacks in the
- *  \link flac_callbacks callbacks \endlink module.
- */
-
-/** \defgroup flac_callbacks FLAC/callback.h: I/O callback structures
- *  \ingroup flac
- *
- *  \brief
- *  This module defines the structures for describing I/O callbacks
- *  to the other FLAC interfaces.
- *
- *  The purpose of the I/O callback functions is to create a common way
- *  for the metadata interfaces to handle I/O.
- *
- *  Originally the metadata interfaces required filenames as the way of
- *  specifying FLAC files to operate on.  This is problematic in some
- *  environments so there is an additional option to specify a set of
- *  callbacks for doing I/O on the FLAC file, instead of the filename.
- *
- *  In addition to the callbacks, a FLAC__IOHandle type is defined as an
- *  opaque structure for a data source.
- *
- *  The callback function prototypes are similar (but not identical) to the
- *  stdio functions fread, fwrite, fseek, ftell, feof, and fclose.  If you use
- *  stdio streams to implement the callbacks, you can pass fread, fwrite, and
- *  fclose anywhere a FLAC__IOCallback_Read, FLAC__IOCallback_Write, or
- *  FLAC__IOCallback_Close is required, and a FILE* anywhere a FLAC__IOHandle
- *  is required.  \warning You generally CANNOT directly use fseek or ftell
- *  for FLAC__IOCallback_Seek or FLAC__IOCallback_Tell since on most systems
- *  these use 32-bit offsets and FLAC requires 64-bit offsets to deal with
- *  large files.  You will have to find an equivalent function (e.g. ftello),
- *  or write a wrapper.  The same is true for feof() since this is usually
- *  implemented as a macro, not as a function whose address can be taken.
- *
- * \{
- */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/** This is the opaque handle type used by the callbacks.  Typically
- *  this is a \c FILE* or address of a file descriptor.
- */
-typedef void* FLAC__IOHandle;
-
-/** Signature for the read callback.
- *  The signature and semantics match POSIX fread() implementations
- *  and can generally be used interchangeably.
- *
- * \param  ptr      The address of the read buffer.
- * \param  size     The size of the records to be read.
- * \param  nmemb    The number of records to be read.
- * \param  handle   The handle to the data source.
- * \retval size_t
- *    The number of records read.
- */
-typedef size_t (*FLAC__IOCallback_Read) (void *ptr, size_t size, size_t nmemb, FLAC__IOHandle handle);
-
-/** Signature for the write callback.
- *  The signature and semantics match POSIX fwrite() implementations
- *  and can generally be used interchangeably.
- *
- * \param  ptr      The address of the write buffer.
- * \param  size     The size of the records to be written.
- * \param  nmemb    The number of records to be written.
- * \param  handle   The handle to the data source.
- * \retval size_t
- *    The number of records written.
- */
-typedef size_t (*FLAC__IOCallback_Write) (const void *ptr, size_t size, size_t nmemb, FLAC__IOHandle handle);
-
-/** Signature for the seek callback.
- *  The signature and semantics mostly match POSIX fseek() WITH ONE IMPORTANT
- *  EXCEPTION: the offset is a 64-bit type whereas fseek() is generally 'long'
- *  and 32-bits wide.
- *
- * \param  handle   The handle to the data source.
- * \param  offset   The new position, relative to \a whence
- * \param  whence   \c SEEK_SET, \c SEEK_CUR, or \c SEEK_END
- * \retval int
- *    \c 0 on success, \c -1 on error.
- */
-typedef int (*FLAC__IOCallback_Seek) (FLAC__IOHandle handle, FLAC__int64 offset, int whence);
-
-/** Signature for the tell callback.
- *  The signature and semantics mostly match POSIX ftell() WITH ONE IMPORTANT
- *  EXCEPTION: the offset is a 64-bit type whereas ftell() is generally 'long'
- *  and 32-bits wide.
- *
- * \param  handle   The handle to the data source.
- * \retval FLAC__int64
- *    The current position on success, \c -1 on error.
- */
-typedef FLAC__int64 (*FLAC__IOCallback_Tell) (FLAC__IOHandle handle);
-
-/** Signature for the EOF callback.
- *  The signature and semantics mostly match POSIX feof() but WATCHOUT:
- *  on many systems, feof() is a macro, so in this case a wrapper function
- *  must be provided instead.
- *
- * \param  handle   The handle to the data source.
- * \retval int
- *    \c 0 if not at end of file, nonzero if at end of file.
- */
-typedef int (*FLAC__IOCallback_Eof) (FLAC__IOHandle handle);
-
-/** Signature for the close callback.
- *  The signature and semantics match POSIX fclose() implementations
- *  and can generally be used interchangeably.
- *
- * \param  handle   The handle to the data source.
- * \retval int
- *    \c 0 on success, \c EOF on error.
- */
-typedef int (*FLAC__IOCallback_Close) (FLAC__IOHandle handle);
-
-/** A structure for holding a set of callbacks.
- *  Each FLAC interface that requires a FLAC__IOCallbacks structure will
- *  describe which of the callbacks are required.  The ones that are not
- *  required may be set to NULL.
- *
- *  If the seek requirement for an interface is optional, you can signify that
- *  a data sorce is not seekable by setting the \a seek field to \c NULL.
- */
-typedef struct {
-	FLAC__IOCallback_Read read;
-	FLAC__IOCallback_Write write;
-	FLAC__IOCallback_Seek seek;
-	FLAC__IOCallback_Tell tell;
-	FLAC__IOCallback_Eof eof;
-	FLAC__IOCallback_Close close;
-} FLAC__IOCallbacks;
-
-/* \} */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
--- a/win64-mingw/include/FLAC/export.h	Wed Oct 26 13:24:45 2016 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,91 +0,0 @@
-/* libFLAC - Free Lossless Audio Codec library
- * Copyright (C) 2000,2001,2002,2003,2004,2005,2006,2007  Josh Coalson
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * - Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * - Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * - Neither the name of the Xiph.org Foundation nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef FLAC__EXPORT_H
-#define FLAC__EXPORT_H
-
-/** \file include/FLAC/export.h
- *
- *  \brief
- *  This module contains #defines and symbols for exporting function
- *  calls, and providing version information and compiled-in features.
- *
- *  See the \link flac_export export \endlink module.
- */
-
-/** \defgroup flac_export FLAC/export.h: export symbols
- *  \ingroup flac
- *
- *  \brief
- *  This module contains #defines and symbols for exporting function
- *  calls, and providing version information and compiled-in features.
- *
- *  If you are compiling with MSVC and will link to the static library
- *  (libFLAC.lib) you should define FLAC__NO_DLL in your project to
- *  make sure the symbols are exported properly.
- *
- * \{
- */
-
-#if defined(FLAC__NO_DLL) || !defined(_MSC_VER)
-#define FLAC_API
-
-#else
-
-#ifdef FLAC_API_EXPORTS
-#define	FLAC_API	_declspec(dllexport)
-#else
-#define FLAC_API	_declspec(dllimport)
-
-#endif
-#endif
-
-/** These #defines will mirror the libtool-based library version number, see
- * http://www.gnu.org/software/libtool/manual.html#Libtool-versioning
- */
-#define FLAC_API_VERSION_CURRENT 10
-#define FLAC_API_VERSION_REVISION 0 /**< see above */
-#define FLAC_API_VERSION_AGE 2 /**< see above */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/** \c 1 if the library has been compiled with support for Ogg FLAC, else \c 0. */
-extern FLAC_API int FLAC_API_SUPPORTS_OGG_FLAC;
-
-#ifdef __cplusplus
-}
-#endif
-
-/* \} */
-
-#endif
--- a/win64-mingw/include/FLAC/format.h	Wed Oct 26 13:24:45 2016 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1010 +0,0 @@
-/* libFLAC - Free Lossless Audio Codec library
- * Copyright (C) 2000,2001,2002,2003,2004,2005,2006,2007  Josh Coalson
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * - Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * - Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * - Neither the name of the Xiph.org Foundation nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef FLAC__FORMAT_H
-#define FLAC__FORMAT_H
-
-#include "export.h"
-#include "ordinals.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/** \file include/FLAC/format.h
- *
- *  \brief
- *  This module contains structure definitions for the representation
- *  of FLAC format components in memory.  These are the basic
- *  structures used by the rest of the interfaces.
- *
- *  See the detailed documentation in the
- *  \link flac_format format \endlink module.
- */
-
-/** \defgroup flac_format FLAC/format.h: format components
- *  \ingroup flac
- *
- *  \brief
- *  This module contains structure definitions for the representation
- *  of FLAC format components in memory.  These are the basic
- *  structures used by the rest of the interfaces.
- *
- *  First, you should be familiar with the
- *  <A HREF="../format.html">FLAC format</A>.  Many of the values here
- *  follow directly from the specification.  As a user of libFLAC, the
- *  interesting parts really are the structures that describe the frame
- *  header and metadata blocks.
- *
- *  The format structures here are very primitive, designed to store
- *  information in an efficient way.  Reading information from the
- *  structures is easy but creating or modifying them directly is
- *  more complex.  For the most part, as a user of a library, editing
- *  is not necessary; however, for metadata blocks it is, so there are
- *  convenience functions provided in the \link flac_metadata metadata
- *  module \endlink to simplify the manipulation of metadata blocks.
- *
- * \note
- * It's not the best convention, but symbols ending in _LEN are in bits
- * and _LENGTH are in bytes.  _LENGTH symbols are \#defines instead of
- * global variables because they are usually used when declaring byte
- * arrays and some compilers require compile-time knowledge of array
- * sizes when declared on the stack.
- *
- * \{
- */
-
-
-/*
-	Most of the values described in this file are defined by the FLAC
-	format specification.  There is nothing to tune here.
-*/
-
-/** The largest legal metadata type code. */
-#define FLAC__MAX_METADATA_TYPE_CODE (126u)
-
-/** The minimum block size, in samples, permitted by the format. */
-#define FLAC__MIN_BLOCK_SIZE (16u)
-
-/** The maximum block size, in samples, permitted by the format. */
-#define FLAC__MAX_BLOCK_SIZE (65535u)
-
-/** The maximum block size, in samples, permitted by the FLAC subset for
- *  sample rates up to 48kHz. */
-#define FLAC__SUBSET_MAX_BLOCK_SIZE_48000HZ (4608u)
-
-/** The maximum number of channels permitted by the format. */
-#define FLAC__MAX_CHANNELS (8u)
-
-/** The minimum sample resolution permitted by the format. */
-#define FLAC__MIN_BITS_PER_SAMPLE (4u)
-
-/** The maximum sample resolution permitted by the format. */
-#define FLAC__MAX_BITS_PER_SAMPLE (32u)
-
-/** The maximum sample resolution permitted by libFLAC.
- *
- * \warning
- * FLAC__MAX_BITS_PER_SAMPLE is the limit of the FLAC format.  However,
- * the reference encoder/decoder is currently limited to 24 bits because
- * of prevalent 32-bit math, so make sure and use this value when
- * appropriate.
- */
-#define FLAC__REFERENCE_CODEC_MAX_BITS_PER_SAMPLE (24u)
-
-/** The maximum sample rate permitted by the format.  The value is
- *  ((2 ^ 16) - 1) * 10; see <A HREF="../format.html">FLAC format</A>
- *  as to why.
- */
-#define FLAC__MAX_SAMPLE_RATE (655350u)
-
-/** The maximum LPC order permitted by the format. */
-#define FLAC__MAX_LPC_ORDER (32u)
-
-/** The maximum LPC order permitted by the FLAC subset for sample rates
- *  up to 48kHz. */
-#define FLAC__SUBSET_MAX_LPC_ORDER_48000HZ (12u)
-
-/** The minimum quantized linear predictor coefficient precision
- *  permitted by the format.
- */
-#define FLAC__MIN_QLP_COEFF_PRECISION (5u)
-
-/** The maximum quantized linear predictor coefficient precision
- *  permitted by the format.
- */
-#define FLAC__MAX_QLP_COEFF_PRECISION (15u)
-
-/** The maximum order of the fixed predictors permitted by the format. */
-#define FLAC__MAX_FIXED_ORDER (4u)
-
-/** The maximum Rice partition order permitted by the format. */
-#define FLAC__MAX_RICE_PARTITION_ORDER (15u)
-
-/** The maximum Rice partition order permitted by the FLAC Subset. */
-#define FLAC__SUBSET_MAX_RICE_PARTITION_ORDER (8u)
-
-/** The version string of the release, stamped onto the libraries and binaries.
- *
- * \note
- * This does not correspond to the shared library version number, which
- * is used to determine binary compatibility.
- */
-extern FLAC_API const char *FLAC__VERSION_STRING;
-
-/** The vendor string inserted by the encoder into the VORBIS_COMMENT block.
- *  This is a NUL-terminated ASCII string; when inserted into the
- *  VORBIS_COMMENT the trailing null is stripped.
- */
-extern FLAC_API const char *FLAC__VENDOR_STRING;
-
-/** The byte string representation of the beginning of a FLAC stream. */
-extern FLAC_API const FLAC__byte FLAC__STREAM_SYNC_STRING[4]; /* = "fLaC" */
-
-/** The 32-bit integer big-endian representation of the beginning of
- *  a FLAC stream.
- */
-extern FLAC_API const unsigned FLAC__STREAM_SYNC; /* = 0x664C6143 */
-
-/** The length of the FLAC signature in bits. */
-extern FLAC_API const unsigned FLAC__STREAM_SYNC_LEN; /* = 32 bits */
-
-/** The length of the FLAC signature in bytes. */
-#define FLAC__STREAM_SYNC_LENGTH (4u)
-
-
-/*****************************************************************************
- *
- * Subframe structures
- *
- *****************************************************************************/
-
-/*****************************************************************************/
-
-/** An enumeration of the available entropy coding methods. */
-typedef enum {
-	FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE = 0,
-	/**< Residual is coded by partitioning into contexts, each with it's own
-	 * 4-bit Rice parameter. */
-
-	FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE2 = 1
-	/**< Residual is coded by partitioning into contexts, each with it's own
-	 * 5-bit Rice parameter. */
-} FLAC__EntropyCodingMethodType;
-
-/** Maps a FLAC__EntropyCodingMethodType to a C string.
- *
- *  Using a FLAC__EntropyCodingMethodType as the index to this array will
- *  give the string equivalent.  The contents should not be modified.
- */
-extern FLAC_API const char * const FLAC__EntropyCodingMethodTypeString[];
-
-
-/** Contents of a Rice partitioned residual
- */
-typedef struct {
-
-	unsigned *parameters;
-	/**< The Rice parameters for each context. */
-
-	unsigned *raw_bits;
-	/**< Widths for escape-coded partitions.  Will be non-zero for escaped
-	 * partitions and zero for unescaped partitions.
-	 */
-
-	unsigned capacity_by_order;
-	/**< The capacity of the \a parameters and \a raw_bits arrays
-	 * specified as an order, i.e. the number of array elements
-	 * allocated is 2 ^ \a capacity_by_order.
-	 */
-} FLAC__EntropyCodingMethod_PartitionedRiceContents;
-
-/** Header for a Rice partitioned residual.  (c.f. <A HREF="../format.html#partitioned_rice">format specification</A>)
- */
-typedef struct {
-
-	unsigned order;
-	/**< The partition order, i.e. # of contexts = 2 ^ \a order. */
-
-	const FLAC__EntropyCodingMethod_PartitionedRiceContents *contents;
-	/**< The context's Rice parameters and/or raw bits. */
-
-} FLAC__EntropyCodingMethod_PartitionedRice;
-
-extern FLAC_API const unsigned FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE_ORDER_LEN; /**< == 4 (bits) */
-extern FLAC_API const unsigned FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE_PARAMETER_LEN; /**< == 4 (bits) */
-extern FLAC_API const unsigned FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE2_PARAMETER_LEN; /**< == 5 (bits) */
-extern FLAC_API const unsigned FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE_RAW_LEN; /**< == 5 (bits) */
-
-extern FLAC_API const unsigned FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE_ESCAPE_PARAMETER;
-/**< == (1<<FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE_PARAMETER_LEN)-1 */
-extern FLAC_API const unsigned FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE2_ESCAPE_PARAMETER;
-/**< == (1<<FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE2_PARAMETER_LEN)-1 */
-
-/** Header for the entropy coding method.  (c.f. <A HREF="../format.html#residual">format specification</A>)
- */
-typedef struct {
-	FLAC__EntropyCodingMethodType type;
-	union {
-		FLAC__EntropyCodingMethod_PartitionedRice partitioned_rice;
-	} data;
-} FLAC__EntropyCodingMethod;
-
-extern FLAC_API const unsigned FLAC__ENTROPY_CODING_METHOD_TYPE_LEN; /**< == 2 (bits) */
-
-/*****************************************************************************/
-
-/** An enumeration of the available subframe types. */
-typedef enum {
-	FLAC__SUBFRAME_TYPE_CONSTANT = 0, /**< constant signal */
-	FLAC__SUBFRAME_TYPE_VERBATIM = 1, /**< uncompressed signal */
-	FLAC__SUBFRAME_TYPE_FIXED = 2, /**< fixed polynomial prediction */
-	FLAC__SUBFRAME_TYPE_LPC = 3 /**< linear prediction */
-} FLAC__SubframeType;
-
-/** Maps a FLAC__SubframeType to a C string.
- *
- *  Using a FLAC__SubframeType as the index to this array will
- *  give the string equivalent.  The contents should not be modified.
- */
-extern FLAC_API const char * const FLAC__SubframeTypeString[];
-
-
-/** CONSTANT subframe.  (c.f. <A HREF="../format.html#subframe_constant">format specification</A>)
- */
-typedef struct {
-	FLAC__int32 value; /**< The constant signal value. */
-} FLAC__Subframe_Constant;
-
-
-/** VERBATIM subframe.  (c.f. <A HREF="../format.html#subframe_verbatim">format specification</A>)
- */
-typedef struct {
-	const FLAC__int32 *data; /**< A pointer to verbatim signal. */
-} FLAC__Subframe_Verbatim;
-
-
-/** FIXED subframe.  (c.f. <A HREF="../format.html#subframe_fixed">format specification</A>)
- */
-typedef struct {
-	FLAC__EntropyCodingMethod entropy_coding_method;
-	/**< The residual coding method. */
-
-	unsigned order;
-	/**< The polynomial order. */
-
-	FLAC__int32 warmup[FLAC__MAX_FIXED_ORDER];
-	/**< Warmup samples to prime the predictor, length == order. */
-
-	const FLAC__int32 *residual;
-	/**< The residual signal, length == (blocksize minus order) samples. */
-} FLAC__Subframe_Fixed;
-
-
-/** LPC subframe.  (c.f. <A HREF="../format.html#subframe_lpc">format specification</A>)
- */
-typedef struct {
-	FLAC__EntropyCodingMethod entropy_coding_method;
-	/**< The residual coding method. */
-
-	unsigned order;
-	/**< The FIR order. */
-
-	unsigned qlp_coeff_precision;
-	/**< Quantized FIR filter coefficient precision in bits. */
-
-	int quantization_level;
-	/**< The qlp coeff shift needed. */
-
-	FLAC__int32 qlp_coeff[FLAC__MAX_LPC_ORDER];
-	/**< FIR filter coefficients. */
-
-	FLAC__int32 warmup[FLAC__MAX_LPC_ORDER];
-	/**< Warmup samples to prime the predictor, length == order. */
-
-	const FLAC__int32 *residual;
-	/**< The residual signal, length == (blocksize minus order) samples. */
-} FLAC__Subframe_LPC;
-
-extern FLAC_API const unsigned FLAC__SUBFRAME_LPC_QLP_COEFF_PRECISION_LEN; /**< == 4 (bits) */
-extern FLAC_API const unsigned FLAC__SUBFRAME_LPC_QLP_SHIFT_LEN; /**< == 5 (bits) */
-
-
-/** FLAC subframe structure.  (c.f. <A HREF="../format.html#subframe">format specification</A>)
- */
-typedef struct {
-	FLAC__SubframeType type;
-	union {
-		FLAC__Subframe_Constant constant;
-		FLAC__Subframe_Fixed fixed;
-		FLAC__Subframe_LPC lpc;
-		FLAC__Subframe_Verbatim verbatim;
-	} data;
-	unsigned wasted_bits;
-} FLAC__Subframe;
-
-/** == 1 (bit)
- *
- * This used to be a zero-padding bit (hence the name
- * FLAC__SUBFRAME_ZERO_PAD_LEN) but is now a reserved bit.  It still has a
- * mandatory value of \c 0 but in the future may take on the value \c 0 or \c 1
- * to mean something else.
- */
-extern FLAC_API const unsigned FLAC__SUBFRAME_ZERO_PAD_LEN;
-extern FLAC_API const unsigned FLAC__SUBFRAME_TYPE_LEN; /**< == 6 (bits) */
-extern FLAC_API const unsigned FLAC__SUBFRAME_WASTED_BITS_FLAG_LEN; /**< == 1 (bit) */
-
-extern FLAC_API const unsigned FLAC__SUBFRAME_TYPE_CONSTANT_BYTE_ALIGNED_MASK; /**< = 0x00 */
-extern FLAC_API const unsigned FLAC__SUBFRAME_TYPE_VERBATIM_BYTE_ALIGNED_MASK; /**< = 0x02 */
-extern FLAC_API const unsigned FLAC__SUBFRAME_TYPE_FIXED_BYTE_ALIGNED_MASK; /**< = 0x10 */
-extern FLAC_API const unsigned FLAC__SUBFRAME_TYPE_LPC_BYTE_ALIGNED_MASK; /**< = 0x40 */
-
-/*****************************************************************************/
-
-
-/*****************************************************************************
- *
- * Frame structures
- *
- *****************************************************************************/
-
-/** An enumeration of the available channel assignments. */
-typedef enum {
-	FLAC__CHANNEL_ASSIGNMENT_INDEPENDENT = 0, /**< independent channels */
-	FLAC__CHANNEL_ASSIGNMENT_LEFT_SIDE = 1, /**< left+side stereo */
-	FLAC__CHANNEL_ASSIGNMENT_RIGHT_SIDE = 2, /**< right+side stereo */
-	FLAC__CHANNEL_ASSIGNMENT_MID_SIDE = 3 /**< mid+side stereo */
-} FLAC__ChannelAssignment;
-
-/** Maps a FLAC__ChannelAssignment to a C string.
- *
- *  Using a FLAC__ChannelAssignment as the index to this array will
- *  give the string equivalent.  The contents should not be modified.
- */
-extern FLAC_API const char * const FLAC__ChannelAssignmentString[];
-
-/** An enumeration of the possible frame numbering methods. */
-typedef enum {
-	FLAC__FRAME_NUMBER_TYPE_FRAME_NUMBER, /**< number contains the frame number */
-	FLAC__FRAME_NUMBER_TYPE_SAMPLE_NUMBER /**< number contains the sample number of first sample in frame */
-} FLAC__FrameNumberType;
-
-/** Maps a FLAC__FrameNumberType to a C string.
- *
- *  Using a FLAC__FrameNumberType as the index to this array will
- *  give the string equivalent.  The contents should not be modified.
- */
-extern FLAC_API const char * const FLAC__FrameNumberTypeString[];
-
-
-/** FLAC frame header structure.  (c.f. <A HREF="../format.html#frame_header">format specification</A>)
- */
-typedef struct {
-	unsigned blocksize;
-	/**< The number of samples per subframe. */
-
-	unsigned sample_rate;
-	/**< The sample rate in Hz. */
-
-	unsigned channels;
-	/**< The number of channels (== number of subframes). */
-
-	FLAC__ChannelAssignment channel_assignment;
-	/**< The channel assignment for the frame. */
-
-	unsigned bits_per_sample;
-	/**< The sample resolution. */
-
-	FLAC__FrameNumberType number_type;
-	/**< The numbering scheme used for the frame.  As a convenience, the
-	 * decoder will always convert a frame number to a sample number because
-	 * the rules are complex. */
-
-	union {
-		FLAC__uint32 frame_number;
-		FLAC__uint64 sample_number;
-	} number;
-	/**< The frame number or sample number of first sample in frame;
-	 * use the \a number_type value to determine which to use. */
-
-	FLAC__uint8 crc;
-	/**< CRC-8 (polynomial = x^8 + x^2 + x^1 + x^0, initialized with 0)
-	 * of the raw frame header bytes, meaning everything before the CRC byte
-	 * including the sync code.
-	 */
-} FLAC__FrameHeader;
-
-extern FLAC_API const unsigned FLAC__FRAME_HEADER_SYNC; /**< == 0x3ffe; the frame header sync code */
-extern FLAC_API const unsigned FLAC__FRAME_HEADER_SYNC_LEN; /**< == 14 (bits) */
-extern FLAC_API const unsigned FLAC__FRAME_HEADER_RESERVED_LEN; /**< == 1 (bits) */
-extern FLAC_API const unsigned FLAC__FRAME_HEADER_BLOCKING_STRATEGY_LEN; /**< == 1 (bits) */
-extern FLAC_API const unsigned FLAC__FRAME_HEADER_BLOCK_SIZE_LEN; /**< == 4 (bits) */
-extern FLAC_API const unsigned FLAC__FRAME_HEADER_SAMPLE_RATE_LEN; /**< == 4 (bits) */
-extern FLAC_API const unsigned FLAC__FRAME_HEADER_CHANNEL_ASSIGNMENT_LEN; /**< == 4 (bits) */
-extern FLAC_API const unsigned FLAC__FRAME_HEADER_BITS_PER_SAMPLE_LEN; /**< == 3 (bits) */
-extern FLAC_API const unsigned FLAC__FRAME_HEADER_ZERO_PAD_LEN; /**< == 1 (bit) */
-extern FLAC_API const unsigned FLAC__FRAME_HEADER_CRC_LEN; /**< == 8 (bits) */
-
-
-/** FLAC frame footer structure.  (c.f. <A HREF="../format.html#frame_footer">format specification</A>)
- */
-typedef struct {
-	FLAC__uint16 crc;
-	/**< CRC-16 (polynomial = x^16 + x^15 + x^2 + x^0, initialized with
-	 * 0) of the bytes before the crc, back to and including the frame header
-	 * sync code.
-	 */
-} FLAC__FrameFooter;
-
-extern FLAC_API const unsigned FLAC__FRAME_FOOTER_CRC_LEN; /**< == 16 (bits) */
-
-
-/** FLAC frame structure.  (c.f. <A HREF="../format.html#frame">format specification</A>)
- */
-typedef struct {
-	FLAC__FrameHeader header;
-	FLAC__Subframe subframes[FLAC__MAX_CHANNELS];
-	FLAC__FrameFooter footer;
-} FLAC__Frame;
-
-/*****************************************************************************/
-
-
-/*****************************************************************************
- *
- * Meta-data structures
- *
- *****************************************************************************/
-
-/** An enumeration of the available metadata block types. */
-typedef enum {
-
-	FLAC__METADATA_TYPE_STREAMINFO = 0,
-	/**< <A HREF="../format.html#metadata_block_streaminfo">STREAMINFO</A> block */
-
-	FLAC__METADATA_TYPE_PADDING = 1,
-	/**< <A HREF="../format.html#metadata_block_padding">PADDING</A> block */
-
-	FLAC__METADATA_TYPE_APPLICATION = 2,
-	/**< <A HREF="../format.html#metadata_block_application">APPLICATION</A> block */
-
-	FLAC__METADATA_TYPE_SEEKTABLE = 3,
-	/**< <A HREF="../format.html#metadata_block_seektable">SEEKTABLE</A> block */
-
-	FLAC__METADATA_TYPE_VORBIS_COMMENT = 4,
-	/**< <A HREF="../format.html#metadata_block_vorbis_comment">VORBISCOMMENT</A> block (a.k.a. FLAC tags) */
-
-	FLAC__METADATA_TYPE_CUESHEET = 5,
-	/**< <A HREF="../format.html#metadata_block_cuesheet">CUESHEET</A> block */
-
-	FLAC__METADATA_TYPE_PICTURE = 6,
-	/**< <A HREF="../format.html#metadata_block_picture">PICTURE</A> block */
-
-	FLAC__METADATA_TYPE_UNDEFINED = 7
-	/**< marker to denote beginning of undefined type range; this number will increase as new metadata types are added */
-
-} FLAC__MetadataType;
-
-/** Maps a FLAC__MetadataType to a C string.
- *
- *  Using a FLAC__MetadataType as the index to this array will
- *  give the string equivalent.  The contents should not be modified.
- */
-extern FLAC_API const char * const FLAC__MetadataTypeString[];
-
-
-/** FLAC STREAMINFO structure.  (c.f. <A HREF="../format.html#metadata_block_streaminfo">format specification</A>)
- */
-typedef struct {
-	unsigned min_blocksize, max_blocksize;
-	unsigned min_framesize, max_framesize;
-	unsigned sample_rate;
-	unsigned channels;
-	unsigned bits_per_sample;
-	FLAC__uint64 total_samples;
-	FLAC__byte md5sum[16];
-} FLAC__StreamMetadata_StreamInfo;
-
-extern FLAC_API const unsigned FLAC__STREAM_METADATA_STREAMINFO_MIN_BLOCK_SIZE_LEN; /**< == 16 (bits) */
-extern FLAC_API const unsigned FLAC__STREAM_METADATA_STREAMINFO_MAX_BLOCK_SIZE_LEN; /**< == 16 (bits) */
-extern FLAC_API const unsigned FLAC__STREAM_METADATA_STREAMINFO_MIN_FRAME_SIZE_LEN; /**< == 24 (bits) */
-extern FLAC_API const unsigned FLAC__STREAM_METADATA_STREAMINFO_MAX_FRAME_SIZE_LEN; /**< == 24 (bits) */
-extern FLAC_API const unsigned FLAC__STREAM_METADATA_STREAMINFO_SAMPLE_RATE_LEN; /**< == 20 (bits) */
-extern FLAC_API const unsigned FLAC__STREAM_METADATA_STREAMINFO_CHANNELS_LEN; /**< == 3 (bits) */
-extern FLAC_API const unsigned FLAC__STREAM_METADATA_STREAMINFO_BITS_PER_SAMPLE_LEN; /**< == 5 (bits) */
-extern FLAC_API const unsigned FLAC__STREAM_METADATA_STREAMINFO_TOTAL_SAMPLES_LEN; /**< == 36 (bits) */
-extern FLAC_API const unsigned FLAC__STREAM_METADATA_STREAMINFO_MD5SUM_LEN; /**< == 128 (bits) */
-
-/** The total stream length of the STREAMINFO block in bytes. */
-#define FLAC__STREAM_METADATA_STREAMINFO_LENGTH (34u)
-
-/** FLAC PADDING structure.  (c.f. <A HREF="../format.html#metadata_block_padding">format specification</A>)
- */
-typedef struct {
-	int dummy;
-	/**< Conceptually this is an empty struct since we don't store the
-	 * padding bytes.  Empty structs are not allowed by some C compilers,
-	 * hence the dummy.
-	 */
-} FLAC__StreamMetadata_Padding;
-
-
-/** FLAC APPLICATION structure.  (c.f. <A HREF="../format.html#metadata_block_application">format specification</A>)
- */
-typedef struct {
-	FLAC__byte id[4];
-	FLAC__byte *data;
-} FLAC__StreamMetadata_Application;
-
-extern FLAC_API const unsigned FLAC__STREAM_METADATA_APPLICATION_ID_LEN; /**< == 32 (bits) */
-
-/** SeekPoint structure used in SEEKTABLE blocks.  (c.f. <A HREF="../format.html#seekpoint">format specification</A>)
- */
-typedef struct {
-	FLAC__uint64 sample_number;
-	/**<  The sample number of the target frame. */
-
-	FLAC__uint64 stream_offset;
-	/**< The offset, in bytes, of the target frame with respect to
-	 * beginning of the first frame. */
-
-	unsigned frame_samples;
-	/**< The number of samples in the target frame. */
-} FLAC__StreamMetadata_SeekPoint;
-
-extern FLAC_API const unsigned FLAC__STREAM_METADATA_SEEKPOINT_SAMPLE_NUMBER_LEN; /**< == 64 (bits) */
-extern FLAC_API const unsigned FLAC__STREAM_METADATA_SEEKPOINT_STREAM_OFFSET_LEN; /**< == 64 (bits) */
-extern FLAC_API const unsigned FLAC__STREAM_METADATA_SEEKPOINT_FRAME_SAMPLES_LEN; /**< == 16 (bits) */
-
-/** The total stream length of a seek point in bytes. */
-#define FLAC__STREAM_METADATA_SEEKPOINT_LENGTH (18u)
-
-/** The value used in the \a sample_number field of
- *  FLAC__StreamMetadataSeekPoint used to indicate a placeholder
- *  point (== 0xffffffffffffffff).
- */
-extern FLAC_API const FLAC__uint64 FLAC__STREAM_METADATA_SEEKPOINT_PLACEHOLDER;
-
-
-/** FLAC SEEKTABLE structure.  (c.f. <A HREF="../format.html#metadata_block_seektable">format specification</A>)
- *
- * \note From the format specification:
- * - The seek points must be sorted by ascending sample number.
- * - Each seek point's sample number must be the first sample of the
- *   target frame.
- * - Each seek point's sample number must be unique within the table.
- * - Existence of a SEEKTABLE block implies a correct setting of
- *   total_samples in the stream_info block.
- * - Behavior is undefined when more than one SEEKTABLE block is
- *   present in a stream.
- */
-typedef struct {
-	unsigned num_points;
-	FLAC__StreamMetadata_SeekPoint *points;
-} FLAC__StreamMetadata_SeekTable;
-
-
-/** Vorbis comment entry structure used in VORBIS_COMMENT blocks.  (c.f. <A HREF="../format.html#metadata_block_vorbis_comment">format specification</A>)
- *
- *  For convenience, the APIs maintain a trailing NUL character at the end of
- *  \a entry which is not counted toward \a length, i.e.
- *  \code strlen(entry) == length \endcode
- */
-typedef struct {
-	FLAC__uint32 length;
-	FLAC__byte *entry;
-} FLAC__StreamMetadata_VorbisComment_Entry;
-
-extern FLAC_API const unsigned FLAC__STREAM_METADATA_VORBIS_COMMENT_ENTRY_LENGTH_LEN; /**< == 32 (bits) */
-
-
-/** FLAC VORBIS_COMMENT structure.  (c.f. <A HREF="../format.html#metadata_block_vorbis_comment">format specification</A>)
- */
-typedef struct {
-	FLAC__StreamMetadata_VorbisComment_Entry vendor_string;
-	FLAC__uint32 num_comments;
-	FLAC__StreamMetadata_VorbisComment_Entry *comments;
-} FLAC__StreamMetadata_VorbisComment;
-
-extern FLAC_API const unsigned FLAC__STREAM_METADATA_VORBIS_COMMENT_NUM_COMMENTS_LEN; /**< == 32 (bits) */
-
-
-/** FLAC CUESHEET track index structure.  (See the
- * <A HREF="../format.html#cuesheet_track_index">format specification</A> for
- * the full description of each field.)
- */
-typedef struct {
-	FLAC__uint64 offset;
-	/**< Offset in samples, relative to the track offset, of the index
-	 * point.
-	 */
-
-	FLAC__byte number;
-	/**< The index point number. */
-} FLAC__StreamMetadata_CueSheet_Index;
-
-extern FLAC_API const unsigned FLAC__STREAM_METADATA_CUESHEET_INDEX_OFFSET_LEN; /**< == 64 (bits) */
-extern FLAC_API const unsigned FLAC__STREAM_METADATA_CUESHEET_INDEX_NUMBER_LEN; /**< == 8 (bits) */
-extern FLAC_API const unsigned FLAC__STREAM_METADATA_CUESHEET_INDEX_RESERVED_LEN; /**< == 3*8 (bits) */
-
-
-/** FLAC CUESHEET track structure.  (See the
- * <A HREF="../format.html#cuesheet_track">format specification</A> for
- * the full description of each field.)
- */
-typedef struct {
-	FLAC__uint64 offset;
-	/**< Track offset in samples, relative to the beginning of the FLAC audio stream. */
-
-	FLAC__byte number;
-	/**< The track number. */
-
-	char isrc[13];
-	/**< Track ISRC.  This is a 12-digit alphanumeric code plus a trailing \c NUL byte */
-
-	unsigned type:1;
-	/**< The track type: 0 for audio, 1 for non-audio. */
-
-	unsigned pre_emphasis:1;
-	/**< The pre-emphasis flag: 0 for no pre-emphasis, 1 for pre-emphasis. */
-
-	FLAC__byte num_indices;
-	/**< The number of track index points. */
-
-	FLAC__StreamMetadata_CueSheet_Index *indices;
-	/**< NULL if num_indices == 0, else pointer to array of index points. */
-
-} FLAC__StreamMetadata_CueSheet_Track;
-
-extern FLAC_API const unsigned FLAC__STREAM_METADATA_CUESHEET_TRACK_OFFSET_LEN; /**< == 64 (bits) */
-extern FLAC_API const unsigned FLAC__STREAM_METADATA_CUESHEET_TRACK_NUMBER_LEN; /**< == 8 (bits) */
-extern FLAC_API const unsigned FLAC__STREAM_METADATA_CUESHEET_TRACK_ISRC_LEN; /**< == 12*8 (bits) */
-extern FLAC_API const unsigned FLAC__STREAM_METADATA_CUESHEET_TRACK_TYPE_LEN; /**< == 1 (bit) */
-extern FLAC_API const unsigned FLAC__STREAM_METADATA_CUESHEET_TRACK_PRE_EMPHASIS_LEN; /**< == 1 (bit) */
-extern FLAC_API const unsigned FLAC__STREAM_METADATA_CUESHEET_TRACK_RESERVED_LEN; /**< == 6+13*8 (bits) */
-extern FLAC_API const unsigned FLAC__STREAM_METADATA_CUESHEET_TRACK_NUM_INDICES_LEN; /**< == 8 (bits) */
-
-
-/** FLAC CUESHEET structure.  (See the
- * <A HREF="../format.html#metadata_block_cuesheet">format specification</A>
- * for the full description of each field.)
- */
-typedef struct {
-	char media_catalog_number[129];
-	/**< Media catalog number, in ASCII printable characters 0x20-0x7e.  In
-	 * general, the media catalog number may be 0 to 128 bytes long; any
-	 * unused characters should be right-padded with NUL characters.
-	 */
-
-	FLAC__uint64 lead_in;
-	/**< The number of lead-in samples. */
-
-	FLAC__bool is_cd;
-	/**< \c true if CUESHEET corresponds to a Compact Disc, else \c false. */
-
-	unsigned num_tracks;
-	/**< The number of tracks. */
-
-	FLAC__StreamMetadata_CueSheet_Track *tracks;
-	/**< NULL if num_tracks == 0, else pointer to array of tracks. */
-
-} FLAC__StreamMetadata_CueSheet;
-
-extern FLAC_API const unsigned FLAC__STREAM_METADATA_CUESHEET_MEDIA_CATALOG_NUMBER_LEN; /**< == 128*8 (bits) */
-extern FLAC_API const unsigned FLAC__STREAM_METADATA_CUESHEET_LEAD_IN_LEN; /**< == 64 (bits) */
-extern FLAC_API const unsigned FLAC__STREAM_METADATA_CUESHEET_IS_CD_LEN; /**< == 1 (bit) */
-extern FLAC_API const unsigned FLAC__STREAM_METADATA_CUESHEET_RESERVED_LEN; /**< == 7+258*8 (bits) */
-extern FLAC_API const unsigned FLAC__STREAM_METADATA_CUESHEET_NUM_TRACKS_LEN; /**< == 8 (bits) */
-
-
-/** An enumeration of the PICTURE types (see FLAC__StreamMetadataPicture and id3 v2.4 APIC tag). */
-typedef enum {
-	FLAC__STREAM_METADATA_PICTURE_TYPE_OTHER = 0, /**< Other */
-	FLAC__STREAM_METADATA_PICTURE_TYPE_FILE_ICON_STANDARD = 1, /**< 32x32 pixels 'file icon' (PNG only) */
-	FLAC__STREAM_METADATA_PICTURE_TYPE_FILE_ICON = 2, /**< Other file icon */
-	FLAC__STREAM_METADATA_PICTURE_TYPE_FRONT_COVER = 3, /**< Cover (front) */
-	FLAC__STREAM_METADATA_PICTURE_TYPE_BACK_COVER = 4, /**< Cover (back) */
-	FLAC__STREAM_METADATA_PICTURE_TYPE_LEAFLET_PAGE = 5, /**< Leaflet page */
-	FLAC__STREAM_METADATA_PICTURE_TYPE_MEDIA = 6, /**< Media (e.g. label side of CD) */
-	FLAC__STREAM_METADATA_PICTURE_TYPE_LEAD_ARTIST = 7, /**< Lead artist/lead performer/soloist */
-	FLAC__STREAM_METADATA_PICTURE_TYPE_ARTIST = 8, /**< Artist/performer */
-	FLAC__STREAM_METADATA_PICTURE_TYPE_CONDUCTOR = 9, /**< Conductor */
-	FLAC__STREAM_METADATA_PICTURE_TYPE_BAND = 10, /**< Band/Orchestra */
-	FLAC__STREAM_METADATA_PICTURE_TYPE_COMPOSER = 11, /**< Composer */
-	FLAC__STREAM_METADATA_PICTURE_TYPE_LYRICIST = 12, /**< Lyricist/text writer */
-	FLAC__STREAM_METADATA_PICTURE_TYPE_RECORDING_LOCATION = 13, /**< Recording Location */
-	FLAC__STREAM_METADATA_PICTURE_TYPE_DURING_RECORDING = 14, /**< During recording */
-	FLAC__STREAM_METADATA_PICTURE_TYPE_DURING_PERFORMANCE = 15, /**< During performance */
-	FLAC__STREAM_METADATA_PICTURE_TYPE_VIDEO_SCREEN_CAPTURE = 16, /**< Movie/video screen capture */
-	FLAC__STREAM_METADATA_PICTURE_TYPE_FISH = 17, /**< A bright coloured fish */
-	FLAC__STREAM_METADATA_PICTURE_TYPE_ILLUSTRATION = 18, /**< Illustration */
-	FLAC__STREAM_METADATA_PICTURE_TYPE_BAND_LOGOTYPE = 19, /**< Band/artist logotype */
-	FLAC__STREAM_METADATA_PICTURE_TYPE_PUBLISHER_LOGOTYPE = 20, /**< Publisher/Studio logotype */
-	FLAC__STREAM_METADATA_PICTURE_TYPE_UNDEFINED
-} FLAC__StreamMetadata_Picture_Type;
-
-/** Maps a FLAC__StreamMetadata_Picture_Type to a C string.
- *
- *  Using a FLAC__StreamMetadata_Picture_Type as the index to this array
- *  will give the string equivalent.  The contents should not be
- *  modified.
- */
-extern FLAC_API const char * const FLAC__StreamMetadata_Picture_TypeString[];
-
-/** FLAC PICTURE structure.  (See the
- * <A HREF="../format.html#metadata_block_picture">format specification</A>
- * for the full description of each field.)
- */
-typedef struct {
-	FLAC__StreamMetadata_Picture_Type type;
-	/**< The kind of picture stored. */
-
-	char *mime_type;
-	/**< Picture data's MIME type, in ASCII printable characters
-	 * 0x20-0x7e, NUL terminated.  For best compatibility with players,
-	 * use picture data of MIME type \c image/jpeg or \c image/png.  A
-	 * MIME type of '-->' is also allowed, in which case the picture
-	 * data should be a complete URL.  In file storage, the MIME type is
-	 * stored as a 32-bit length followed by the ASCII string with no NUL
-	 * terminator, but is converted to a plain C string in this structure
-	 * for convenience.
-	 */
-
-	FLAC__byte *description;
-	/**< Picture's description in UTF-8, NUL terminated.  In file storage,
-	 * the description is stored as a 32-bit length followed by the UTF-8
-	 * string with no NUL terminator, but is converted to a plain C string
-	 * in this structure for convenience.
-	 */
-
-	FLAC__uint32 width;
-	/**< Picture's width in pixels. */
-
-	FLAC__uint32 height;
-	/**< Picture's height in pixels. */
-
-	FLAC__uint32 depth;
-	/**< Picture's color depth in bits-per-pixel. */
-
-	FLAC__uint32 colors;
-	/**< For indexed palettes (like GIF), picture's number of colors (the
-	 * number of palette entries), or \c 0 for non-indexed (i.e. 2^depth).
-	 */
-
-	FLAC__uint32 data_length;
-	/**< Length of binary picture data in bytes. */
-
-	FLAC__byte *data;
-	/**< Binary picture data. */
-
-} FLAC__StreamMetadata_Picture;
-
-extern FLAC_API const unsigned FLAC__STREAM_METADATA_PICTURE_TYPE_LEN; /**< == 32 (bits) */
-extern FLAC_API const unsigned FLAC__STREAM_METADATA_PICTURE_MIME_TYPE_LENGTH_LEN; /**< == 32 (bits) */
-extern FLAC_API const unsigned FLAC__STREAM_METADATA_PICTURE_DESCRIPTION_LENGTH_LEN; /**< == 32 (bits) */
-extern FLAC_API const unsigned FLAC__STREAM_METADATA_PICTURE_WIDTH_LEN; /**< == 32 (bits) */
-extern FLAC_API const unsigned FLAC__STREAM_METADATA_PICTURE_HEIGHT_LEN; /**< == 32 (bits) */
-extern FLAC_API const unsigned FLAC__STREAM_METADATA_PICTURE_DEPTH_LEN; /**< == 32 (bits) */
-extern FLAC_API const unsigned FLAC__STREAM_METADATA_PICTURE_COLORS_LEN; /**< == 32 (bits) */
-extern FLAC_API const unsigned FLAC__STREAM_METADATA_PICTURE_DATA_LENGTH_LEN; /**< == 32 (bits) */
-
-
-/** Structure that is used when a metadata block of unknown type is loaded.
- *  The contents are opaque.  The structure is used only internally to
- *  correctly handle unknown metadata.
- */
-typedef struct {
-	FLAC__byte *data;
-} FLAC__StreamMetadata_Unknown;
-
-
-/** FLAC metadata block structure.  (c.f. <A HREF="../format.html#metadata_block">format specification</A>)
- */
-typedef struct {
-	FLAC__MetadataType type;
-	/**< The type of the metadata block; used determine which member of the
-	 * \a data union to dereference.  If type >= FLAC__METADATA_TYPE_UNDEFINED
-	 * then \a data.unknown must be used. */
-
-	FLAC__bool is_last;
-	/**< \c true if this metadata block is the last, else \a false */
-
-	unsigned length;
-	/**< Length, in bytes, of the block data as it appears in the stream. */
-
-	union {
-		FLAC__StreamMetadata_StreamInfo stream_info;
-		FLAC__StreamMetadata_Padding padding;
-		FLAC__StreamMetadata_Application application;
-		FLAC__StreamMetadata_SeekTable seek_table;
-		FLAC__StreamMetadata_VorbisComment vorbis_comment;
-		FLAC__StreamMetadata_CueSheet cue_sheet;
-		FLAC__StreamMetadata_Picture picture;
-		FLAC__StreamMetadata_Unknown unknown;
-	} data;
-	/**< Polymorphic block data; use the \a type value to determine which
-	 * to use. */
-} FLAC__StreamMetadata;
-
-extern FLAC_API const unsigned FLAC__STREAM_METADATA_IS_LAST_LEN; /**< == 1 (bit) */
-extern FLAC_API const unsigned FLAC__STREAM_METADATA_TYPE_LEN; /**< == 7 (bits) */
-extern FLAC_API const unsigned FLAC__STREAM_METADATA_LENGTH_LEN; /**< == 24 (bits) */
-
-/** The total stream length of a metadata block header in bytes. */
-#define FLAC__STREAM_METADATA_HEADER_LENGTH (4u)
-
-/*****************************************************************************/
-
-
-/*****************************************************************************
- *
- * Utility functions
- *
- *****************************************************************************/
-
-/** Tests that a sample rate is valid for FLAC.
- *
- * \param sample_rate  The sample rate to test for compliance.
- * \retval FLAC__bool
- *    \c true if the given sample rate conforms to the specification, else
- *    \c false.
- */
-FLAC_API FLAC__bool FLAC__format_sample_rate_is_valid(unsigned sample_rate);
-
-/** Tests that a sample rate is valid for the FLAC subset.  The subset rules
- *  for valid sample rates are slightly more complex since the rate has to
- *  be expressible completely in the frame header.
- *
- * \param sample_rate  The sample rate to test for compliance.
- * \retval FLAC__bool
- *    \c true if the given sample rate conforms to the specification for the
- *    subset, else \c false.
- */
-FLAC_API FLAC__bool FLAC__format_sample_rate_is_subset(unsigned sample_rate);
-
-/** Check a Vorbis comment entry name to see if it conforms to the Vorbis
- *  comment specification.
- *
- *  Vorbis comment names must be composed only of characters from
- *  [0x20-0x3C,0x3E-0x7D].
- *
- * \param name       A NUL-terminated string to be checked.
- * \assert
- *    \code name != NULL \endcode
- * \retval FLAC__bool
- *    \c false if entry name is illegal, else \c true.
- */
-FLAC_API FLAC__bool FLAC__format_vorbiscomment_entry_name_is_legal(const char *name);
-
-/** Check a Vorbis comment entry value to see if it conforms to the Vorbis
- *  comment specification.
- *
- *  Vorbis comment values must be valid UTF-8 sequences.
- *
- * \param value      A string to be checked.
- * \param length     A the length of \a value in bytes.  May be
- *                   \c (unsigned)(-1) to indicate that \a value is a plain
- *                   UTF-8 NUL-terminated string.
- * \assert
- *    \code value != NULL \endcode
- * \retval FLAC__bool
- *    \c false if entry name is illegal, else \c true.
- */
-FLAC_API FLAC__bool FLAC__format_vorbiscomment_entry_value_is_legal(const FLAC__byte *value, unsigned length);
-
-/** Check a Vorbis comment entry to see if it conforms to the Vorbis
- *  comment specification.
- *
- *  Vorbis comment entries must be of the form 'name=value', and 'name' and
- *  'value' must be legal according to
- *  FLAC__format_vorbiscomment_entry_name_is_legal() and
- *  FLAC__format_vorbiscomment_entry_value_is_legal() respectively.
- *
- * \param entry      An entry to be checked.
- * \param length     The length of \a entry in bytes.
- * \assert
- *    \code value != NULL \endcode
- * \retval FLAC__bool
- *    \c false if entry name is illegal, else \c true.
- */
-FLAC_API FLAC__bool FLAC__format_vorbiscomment_entry_is_legal(const FLAC__byte *entry, unsigned length);
-
-/** Check a seek table to see if it conforms to the FLAC specification.
- *  See the format specification for limits on the contents of the
- *  seek table.
- *
- * \param seek_table  A pointer to a seek table to be checked.
- * \assert
- *    \code seek_table != NULL \endcode
- * \retval FLAC__bool
- *    \c false if seek table is illegal, else \c true.
- */
-FLAC_API FLAC__bool FLAC__format_seektable_is_legal(const FLAC__StreamMetadata_SeekTable *seek_table);
-
-/** Sort a seek table's seek points according to the format specification.
- *  This includes a "unique-ification" step to remove duplicates, i.e.
- *  seek points with identical \a sample_number values.  Duplicate seek
- *  points are converted into placeholder points and sorted to the end of
- *  the table.
- *
- * \param seek_table  A pointer to a seek table to be sorted.
- * \assert
- *    \code seek_table != NULL \endcode
- * \retval unsigned
- *    The number of duplicate seek points converted into placeholders.
- */
-FLAC_API unsigned FLAC__format_seektable_sort(FLAC__StreamMetadata_SeekTable *seek_table);
-
-/** Check a cue sheet to see if it conforms to the FLAC specification.
- *  See the format specification for limits on the contents of the
- *  cue sheet.
- *
- * \param cue_sheet  A pointer to an existing cue sheet to be checked.
- * \param check_cd_da_subset  If \c true, check CUESHEET against more
- *                   stringent requirements for a CD-DA (audio) disc.
- * \param violation  Address of a pointer to a string.  If there is a
- *                   violation, a pointer to a string explanation of the
- *                   violation will be returned here. \a violation may be
- *                   \c NULL if you don't need the returned string.  Do not
- *                   free the returned string; it will always point to static
- *                   data.
- * \assert
- *    \code cue_sheet != NULL \endcode
- * \retval FLAC__bool
- *    \c false if cue sheet is illegal, else \c true.
- */
-FLAC_API FLAC__bool FLAC__format_cuesheet_is_legal(const FLAC__StreamMetadata_CueSheet *cue_sheet, FLAC__bool check_cd_da_subset, const char **violation);
-
-/** Check picture data to see if it conforms to the FLAC specification.
- *  See the format specification for limits on the contents of the
- *  PICTURE block.
- *
- * \param picture    A pointer to existing picture data to be checked.
- * \param violation  Address of a pointer to a string.  If there is a
- *                   violation, a pointer to a string explanation of the
- *                   violation will be returned here. \a violation may be
- *                   \c NULL if you don't need the returned string.  Do not
- *                   free the returned string; it will always point to static
- *                   data.
- * \assert
- *    \code picture != NULL \endcode
- * \retval FLAC__bool
- *    \c false if picture data is illegal, else \c true.
- */
-FLAC_API FLAC__bool FLAC__format_picture_is_legal(const FLAC__StreamMetadata_Picture *picture, const char **violation);
-
-/* \} */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
--- a/win64-mingw/include/FLAC/metadata.h	Wed Oct 26 13:24:45 2016 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2181 +0,0 @@
-/* libFLAC - Free Lossless Audio Codec library
- * Copyright (C) 2001,2002,2003,2004,2005,2006,2007  Josh Coalson
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * - Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * - Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * - Neither the name of the Xiph.org Foundation nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef FLAC__METADATA_H
-#define FLAC__METADATA_H
-
-#include <sys/types.h> /* for off_t */
-#include "export.h"
-#include "callback.h"
-#include "format.h"
-
-/* --------------------------------------------------------------------
-   (For an example of how all these routines are used, see the source
-   code for the unit tests in src/test_libFLAC/metadata_*.c, or
-   metaflac in src/metaflac/)
-   ------------------------------------------------------------------*/
-
-/** \file include/FLAC/metadata.h
- *
- *  \brief
- *  This module provides functions for creating and manipulating FLAC
- *  metadata blocks in memory, and three progressively more powerful
- *  interfaces for traversing and editing metadata in FLAC files.
- *
- *  See the detailed documentation for each interface in the
- *  \link flac_metadata metadata \endlink module.
- */
-
-/** \defgroup flac_metadata FLAC/metadata.h: metadata interfaces
- *  \ingroup flac
- *
- *  \brief
- *  This module provides functions for creating and manipulating FLAC
- *  metadata blocks in memory, and three progressively more powerful
- *  interfaces for traversing and editing metadata in native FLAC files.
- *  Note that currently only the Chain interface (level 2) supports Ogg
- *  FLAC files, and it is read-only i.e. no writing back changed
- *  metadata to file.
- *
- *  There are three metadata interfaces of increasing complexity:
- *
- *  Level 0:
- *  Read-only access to the STREAMINFO, VORBIS_COMMENT, CUESHEET, and
- *  PICTURE blocks.
- *
- *  Level 1:
- *  Read-write access to all metadata blocks.  This level is write-
- *  efficient in most cases (more on this below), and uses less memory
- *  than level 2.
- *
- *  Level 2:
- *  Read-write access to all metadata blocks.  This level is write-
- *  efficient in all cases, but uses more memory since all metadata for
- *  the whole file is read into memory and manipulated before writing
- *  out again.
- *
- *  What do we mean by efficient?  Since FLAC metadata appears at the
- *  beginning of the file, when writing metadata back to a FLAC file
- *  it is possible to grow or shrink the metadata such that the entire
- *  file must be rewritten.  However, if the size remains the same during
- *  changes or PADDING blocks are utilized, only the metadata needs to be
- *  overwritten, which is much faster.
- *
- *  Efficient means the whole file is rewritten at most one time, and only
- *  when necessary.  Level 1 is not efficient only in the case that you
- *  cause more than one metadata block to grow or shrink beyond what can
- *  be accomodated by padding.  In this case you should probably use level
- *  2, which allows you to edit all the metadata for a file in memory and
- *  write it out all at once.
- *
- *  All levels know how to skip over and not disturb an ID3v2 tag at the
- *  front of the file.
- *
- *  All levels access files via their filenames.  In addition, level 2
- *  has additional alternative read and write functions that take an I/O
- *  handle and callbacks, for situations where access by filename is not
- *  possible.
- *
- *  In addition to the three interfaces, this module defines functions for
- *  creating and manipulating various metadata objects in memory.  As we see
- *  from the Format module, FLAC metadata blocks in memory are very primitive
- *  structures for storing information in an efficient way.  Reading
- *  information from the structures is easy but creating or modifying them
- *  directly is more complex.  The metadata object routines here facilitate
- *  this by taking care of the consistency and memory management drudgery.
- *
- *  Unless you will be using the level 1 or 2 interfaces to modify existing
- *  metadata however, you will not probably not need these.
- *
- *  From a dependency standpoint, none of the encoders or decoders require
- *  the metadata module.  This is so that embedded users can strip out the
- *  metadata module from libFLAC to reduce the size and complexity.
- */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/** \defgroup flac_metadata_level0 FLAC/metadata.h: metadata level 0 interface
- *  \ingroup flac_metadata
- *
- *  \brief
- *  The level 0 interface consists of individual routines to read the
- *  STREAMINFO, VORBIS_COMMENT, CUESHEET, and PICTURE blocks, requiring
- *  only a filename.
- *
- *  They try to skip any ID3v2 tag at the head of the file.
- *
- * \{
- */
-
-/** Read the STREAMINFO metadata block of the given FLAC file.  This function
- *  will try to skip any ID3v2 tag at the head of the file.
- *
- * \param filename    The path to the FLAC file to read.
- * \param streaminfo  A pointer to space for the STREAMINFO block.  Since
- *                    FLAC__StreamMetadata is a simple structure with no
- *                    memory allocation involved, you pass the address of
- *                    an existing structure.  It need not be initialized.
- * \assert
- *    \code filename != NULL \endcode
- *    \code streaminfo != NULL \endcode
- * \retval FLAC__bool
- *    \c true if a valid STREAMINFO block was read from \a filename.  Returns
- *    \c false if there was a memory allocation error, a file decoder error,
- *    or the file contained no STREAMINFO block.  (A memory allocation error
- *    is possible because this function must set up a file decoder.)
- */
-FLAC_API FLAC__bool FLAC__metadata_get_streaminfo(const char *filename, FLAC__StreamMetadata *streaminfo);
-
-/** Read the VORBIS_COMMENT metadata block of the given FLAC file.  This
- *  function will try to skip any ID3v2 tag at the head of the file.
- *
- * \param filename    The path to the FLAC file to read.
- * \param tags        The address where the returned pointer will be
- *                    stored.  The \a tags object must be deleted by
- *                    the caller using FLAC__metadata_object_delete().
- * \assert
- *    \code filename != NULL \endcode
- *    \code tags != NULL \endcode
- * \retval FLAC__bool
- *    \c true if a valid VORBIS_COMMENT block was read from \a filename,
- *    and \a *tags will be set to the address of the metadata structure.
- *    Returns \c false if there was a memory allocation error, a file
- *    decoder error, or the file contained no VORBIS_COMMENT block, and
- *    \a *tags will be set to \c NULL.
- */
-FLAC_API FLAC__bool FLAC__metadata_get_tags(const char *filename, FLAC__StreamMetadata **tags);
-
-/** Read the CUESHEET metadata block of the given FLAC file.  This
- *  function will try to skip any ID3v2 tag at the head of the file.
- *
- * \param filename    The path to the FLAC file to read.
- * \param cuesheet    The address where the returned pointer will be
- *                    stored.  The \a cuesheet object must be deleted by
- *                    the caller using FLAC__metadata_object_delete().
- * \assert
- *    \code filename != NULL \endcode
- *    \code cuesheet != NULL \endcode
- * \retval FLAC__bool
- *    \c true if a valid CUESHEET block was read from \a filename,
- *    and \a *cuesheet will be set to the address of the metadata
- *    structure.  Returns \c false if there was a memory allocation
- *    error, a file decoder error, or the file contained no CUESHEET
- *    block, and \a *cuesheet will be set to \c NULL.
- */
-FLAC_API FLAC__bool FLAC__metadata_get_cuesheet(const char *filename, FLAC__StreamMetadata **cuesheet);
-
-/** Read a PICTURE metadata block of the given FLAC file.  This
- *  function will try to skip any ID3v2 tag at the head of the file.
- *  Since there can be more than one PICTURE block in a file, this
- *  function takes a number of parameters that act as constraints to
- *  the search.  The PICTURE block with the largest area matching all
- *  the constraints will be returned, or \a *picture will be set to
- *  \c NULL if there was no such block.
- *
- * \param filename    The path to the FLAC file to read.
- * \param picture     The address where the returned pointer will be
- *                    stored.  The \a picture object must be deleted by
- *                    the caller using FLAC__metadata_object_delete().
- * \param type        The desired picture type.  Use \c -1 to mean
- *                    "any type".
- * \param mime_type   The desired MIME type, e.g. "image/jpeg".  The
- *                    string will be matched exactly.  Use \c NULL to
- *                    mean "any MIME type".
- * \param description The desired description.  The string will be
- *                    matched exactly.  Use \c NULL to mean "any
- *                    description".
- * \param max_width   The maximum width in pixels desired.  Use
- *                    \c (unsigned)(-1) to mean "any width".
- * \param max_height  The maximum height in pixels desired.  Use
- *                    \c (unsigned)(-1) to mean "any height".
- * \param max_depth   The maximum color depth in bits-per-pixel desired.
- *                    Use \c (unsigned)(-1) to mean "any depth".
- * \param max_colors  The maximum number of colors desired.  Use
- *                    \c (unsigned)(-1) to mean "any number of colors".
- * \assert
- *    \code filename != NULL \endcode
- *    \code picture != NULL \endcode
- * \retval FLAC__bool
- *    \c true if a valid PICTURE block was read from \a filename,
- *    and \a *picture will be set to the address of the metadata
- *    structure.  Returns \c false if there was a memory allocation
- *    error, a file decoder error, or the file contained no PICTURE
- *    block, and \a *picture will be set to \c NULL.
- */
-FLAC_API FLAC__bool FLAC__metadata_get_picture(const char *filename, FLAC__StreamMetadata **picture, FLAC__StreamMetadata_Picture_Type type, const char *mime_type, const FLAC__byte *description, unsigned max_width, unsigned max_height, unsigned max_depth, unsigned max_colors);
-
-/* \} */
-
-
-/** \defgroup flac_metadata_level1 FLAC/metadata.h: metadata level 1 interface
- *  \ingroup flac_metadata
- *
- * \brief
- * The level 1 interface provides read-write access to FLAC file metadata and
- * operates directly on the FLAC file.
- *
- * The general usage of this interface is:
- *
- * - Create an iterator using FLAC__metadata_simple_iterator_new()
- * - Attach it to a file using FLAC__metadata_simple_iterator_init() and check
- *   the exit code.  Call FLAC__metadata_simple_iterator_is_writable() to
- *   see if the file is writable, or only read access is allowed.
- * - Use FLAC__metadata_simple_iterator_next() and
- *   FLAC__metadata_simple_iterator_prev() to traverse the blocks.
- *   This is does not read the actual blocks themselves.
- *   FLAC__metadata_simple_iterator_next() is relatively fast.
- *   FLAC__metadata_simple_iterator_prev() is slower since it needs to search
- *   forward from the front of the file.
- * - Use FLAC__metadata_simple_iterator_get_block_type() or
- *   FLAC__metadata_simple_iterator_get_block() to access the actual data at
- *   the current iterator position.  The returned object is yours to modify
- *   and free.
- * - Use FLAC__metadata_simple_iterator_set_block() to write a modified block
- *   back.  You must have write permission to the original file.  Make sure to
- *   read the whole comment to FLAC__metadata_simple_iterator_set_block()
- *   below.
- * - Use FLAC__metadata_simple_iterator_insert_block_after() to add new blocks.
- *   Use the object creation functions from
- *   \link flac_metadata_object here \endlink to generate new objects.
- * - Use FLAC__metadata_simple_iterator_delete_block() to remove the block
- *   currently referred to by the iterator, or replace it with padding.
- * - Destroy the iterator with FLAC__metadata_simple_iterator_delete() when
- *   finished.
- *
- * \note
- * The FLAC file remains open the whole time between
- * FLAC__metadata_simple_iterator_init() and
- * FLAC__metadata_simple_iterator_delete(), so make sure you are not altering
- * the file during this time.
- *
- * \note
- * Do not modify the \a is_last, \a length, or \a type fields of returned
- * FLAC__StreamMetadata objects.  These are managed automatically.
- *
- * \note
- * If any of the modification functions
- * (FLAC__metadata_simple_iterator_set_block(),
- * FLAC__metadata_simple_iterator_delete_block(),
- * FLAC__metadata_simple_iterator_insert_block_after(), etc.) return \c false,
- * you should delete the iterator as it may no longer be valid.
- *
- * \{
- */
-
-struct FLAC__Metadata_SimpleIterator;
-/** The opaque structure definition for the level 1 iterator type.
- *  See the
- *  \link flac_metadata_level1 metadata level 1 module \endlink
- *  for a detailed description.
- */
-typedef struct FLAC__Metadata_SimpleIterator FLAC__Metadata_SimpleIterator;
-
-/** Status type for FLAC__Metadata_SimpleIterator.
- *
- *  The iterator's current status can be obtained by calling FLAC__metadata_simple_iterator_status().
- */
-typedef enum {
-
-	FLAC__METADATA_SIMPLE_ITERATOR_STATUS_OK = 0,
-	/**< The iterator is in the normal OK state */
-
-	FLAC__METADATA_SIMPLE_ITERATOR_STATUS_ILLEGAL_INPUT,
-	/**< The data passed into a function violated the function's usage criteria */
-
-	FLAC__METADATA_SIMPLE_ITERATOR_STATUS_ERROR_OPENING_FILE,
-	/**< The iterator could not open the target file */
-
-	FLAC__METADATA_SIMPLE_ITERATOR_STATUS_NOT_A_FLAC_FILE,
-	/**< The iterator could not find the FLAC signature at the start of the file */
-
-	FLAC__METADATA_SIMPLE_ITERATOR_STATUS_NOT_WRITABLE,
-	/**< The iterator tried to write to a file that was not writable */
-
-	FLAC__METADATA_SIMPLE_ITERATOR_STATUS_BAD_METADATA,
-	/**< The iterator encountered input that does not conform to the FLAC metadata specification */
-
-	FLAC__METADATA_SIMPLE_ITERATOR_STATUS_READ_ERROR,
-	/**< The iterator encountered an error while reading the FLAC file */
-
-	FLAC__METADATA_SIMPLE_ITERATOR_STATUS_SEEK_ERROR,
-	/**< The iterator encountered an error while seeking in the FLAC file */
-
-	FLAC__METADATA_SIMPLE_ITERATOR_STATUS_WRITE_ERROR,
-	/**< The iterator encountered an error while writing the FLAC file */
-
-	FLAC__METADATA_SIMPLE_ITERATOR_STATUS_RENAME_ERROR,
-	/**< The iterator encountered an error renaming the FLAC file */
-
-	FLAC__METADATA_SIMPLE_ITERATOR_STATUS_UNLINK_ERROR,
-	/**< The iterator encountered an error removing the temporary file */
-
-	FLAC__METADATA_SIMPLE_ITERATOR_STATUS_MEMORY_ALLOCATION_ERROR,
-	/**< Memory allocation failed */
-
-	FLAC__METADATA_SIMPLE_ITERATOR_STATUS_INTERNAL_ERROR
-	/**< The caller violated an assertion or an unexpected error occurred */
-
-} FLAC__Metadata_SimpleIteratorStatus;
-
-/** Maps a FLAC__Metadata_SimpleIteratorStatus to a C string.
- *
- *  Using a FLAC__Metadata_SimpleIteratorStatus as the index to this array
- *  will give the string equivalent.  The contents should not be modified.
- */
-extern FLAC_API const char * const FLAC__Metadata_SimpleIteratorStatusString[];
-
-
-/** Create a new iterator instance.
- *
- * \retval FLAC__Metadata_SimpleIterator*
- *    \c NULL if there was an error allocating memory, else the new instance.
- */
-FLAC_API FLAC__Metadata_SimpleIterator *FLAC__metadata_simple_iterator_new(void);
-
-/** Free an iterator instance.  Deletes the object pointed to by \a iterator.
- *
- * \param iterator  A pointer to an existing iterator.
- * \assert
- *    \code iterator != NULL \endcode
- */
-FLAC_API void FLAC__metadata_simple_iterator_delete(FLAC__Metadata_SimpleIterator *iterator);
-
-/** Get the current status of the iterator.  Call this after a function
- *  returns \c false to get the reason for the error.  Also resets the status
- *  to FLAC__METADATA_SIMPLE_ITERATOR_STATUS_OK.
- *
- * \param iterator  A pointer to an existing iterator.
- * \assert
- *    \code iterator != NULL \endcode
- * \retval FLAC__Metadata_SimpleIteratorStatus
- *    The current status of the iterator.
- */
-FLAC_API FLAC__Metadata_SimpleIteratorStatus FLAC__metadata_simple_iterator_status(FLAC__Metadata_SimpleIterator *iterator);
-
-/** Initialize the iterator to point to the first metadata block in the
- *  given FLAC file.
- *
- * \param iterator             A pointer to an existing iterator.
- * \param filename             The path to the FLAC file.
- * \param read_only            If \c true, the FLAC file will be opened
- *                             in read-only mode; if \c false, the FLAC
- *                             file will be opened for edit even if no
- *                             edits are performed.
- * \param preserve_file_stats  If \c true, the owner and modification
- *                             time will be preserved even if the FLAC
- *                             file is written to.
- * \assert
- *    \code iterator != NULL \endcode
- *    \code filename != NULL \endcode
- * \retval FLAC__bool
- *    \c false if a memory allocation error occurs, the file can't be
- *    opened, or another error occurs, else \c true.
- */
-FLAC_API FLAC__bool FLAC__metadata_simple_iterator_init(FLAC__Metadata_SimpleIterator *iterator, const char *filename, FLAC__bool read_only, FLAC__bool preserve_file_stats);
-
-/** Returns \c true if the FLAC file is writable.  If \c false, calls to
- *  FLAC__metadata_simple_iterator_set_block() and
- *  FLAC__metadata_simple_iterator_insert_block_after() will fail.
- *
- * \param iterator             A pointer to an existing iterator.
- * \assert
- *    \code iterator != NULL \endcode
- * \retval FLAC__bool
- *    See above.
- */
-FLAC_API FLAC__bool FLAC__metadata_simple_iterator_is_writable(const FLAC__Metadata_SimpleIterator *iterator);
-
-/** Moves the iterator forward one metadata block, returning \c false if
- *  already at the end.
- *
- * \param iterator  A pointer to an existing initialized iterator.
- * \assert
- *    \code iterator != NULL \endcode
- *    \a iterator has been successfully initialized with
- *    FLAC__metadata_simple_iterator_init()
- * \retval FLAC__bool
- *    \c false if already at the last metadata block of the chain, else
- *    \c true.
- */
-FLAC_API FLAC__bool FLAC__metadata_simple_iterator_next(FLAC__Metadata_SimpleIterator *iterator);
-
-/** Moves the iterator backward one metadata block, returning \c false if
- *  already at the beginning.
- *
- * \param iterator  A pointer to an existing initialized iterator.
- * \assert
- *    \code iterator != NULL \endcode
- *    \a iterator has been successfully initialized with
- *    FLAC__metadata_simple_iterator_init()
- * \retval FLAC__bool
- *    \c false if already at the first metadata block of the chain, else
- *    \c true.
- */
-FLAC_API FLAC__bool FLAC__metadata_simple_iterator_prev(FLAC__Metadata_SimpleIterator *iterator);
-
-/** Returns a flag telling if the current metadata block is the last.
- *
- * \param iterator  A pointer to an existing initialized iterator.
- * \assert
- *    \code iterator != NULL \endcode
- *    \a iterator has been successfully initialized with
- *    FLAC__metadata_simple_iterator_init()
- * \retval FLAC__bool
- *    \c true if the current metadata block is the last in the file,
- *    else \c false.
- */
-FLAC_API FLAC__bool FLAC__metadata_simple_iterator_is_last(const FLAC__Metadata_SimpleIterator *iterator);
-
-/** Get the offset of the metadata block at the current position.  This
- *  avoids reading the actual block data which can save time for large
- *  blocks.
- *
- * \param iterator  A pointer to an existing initialized iterator.
- * \assert
- *    \code iterator != NULL \endcode
- *    \a iterator has been successfully initialized with
- *    FLAC__metadata_simple_iterator_init()
- * \retval off_t
- *    The offset of the metadata block at the current iterator position.
- *    This is the byte offset relative to the beginning of the file of
- *    the current metadata block's header.
- */
-FLAC_API off_t FLAC__metadata_simple_iterator_get_block_offset(const FLAC__Metadata_SimpleIterator *iterator);
-
-/** Get the type of the metadata block at the current position.  This
- *  avoids reading the actual block data which can save time for large
- *  blocks.
- *
- * \param iterator  A pointer to an existing initialized iterator.
- * \assert
- *    \code iterator != NULL \endcode
- *    \a iterator has been successfully initialized with
- *    FLAC__metadata_simple_iterator_init()
- * \retval FLAC__MetadataType
- *    The type of the metadata block at the current iterator position.
- */
-FLAC_API FLAC__MetadataType FLAC__metadata_simple_iterator_get_block_type(const FLAC__Metadata_SimpleIterator *iterator);
-
-/** Get the length of the metadata block at the current position.  This
- *  avoids reading the actual block data which can save time for large
- *  blocks.
- *
- * \param iterator  A pointer to an existing initialized iterator.
- * \assert
- *    \code iterator != NULL \endcode
- *    \a iterator has been successfully initialized with
- *    FLAC__metadata_simple_iterator_init()
- * \retval unsigned
- *    The length of the metadata block at the current iterator position.
- *    The is same length as that in the
- *    <a href="http://flac.sourceforge.net/format.html#metadata_block_header">metadata block header</a>,
- *    i.e. the length of the metadata body that follows the header.
- */
-FLAC_API unsigned FLAC__metadata_simple_iterator_get_block_length(const FLAC__Metadata_SimpleIterator *iterator);
-
-/** Get the application ID of the \c APPLICATION block at the current
- *  position.  This avoids reading the actual block data which can save
- *  time for large blocks.
- *
- * \param iterator  A pointer to an existing initialized iterator.
- * \param id        A pointer to a buffer of at least \c 4 bytes where
- *                  the ID will be stored.
- * \assert
- *    \code iterator != NULL \endcode
- *    \code id != NULL \endcode
- *    \a iterator has been successfully initialized with
- *    FLAC__metadata_simple_iterator_init()
- * \retval FLAC__bool
- *    \c true if the ID was successfully read, else \c false, in which
- *    case you should check FLAC__metadata_simple_iterator_status() to
- *    find out why.  If the status is
- *    \c FLAC__METADATA_SIMPLE_ITERATOR_STATUS_ILLEGAL_INPUT, then the
- *    current metadata block is not an \c APPLICATION block.  Otherwise
- *    if the status is
- *    \c FLAC__METADATA_SIMPLE_ITERATOR_STATUS_READ_ERROR or
- *    \c FLAC__METADATA_SIMPLE_ITERATOR_STATUS_SEEK_ERROR, an I/O error
- *    occurred and the iterator can no longer be used.
- */
-FLAC_API FLAC__bool FLAC__metadata_simple_iterator_get_application_id(FLAC__Metadata_SimpleIterator *iterator, FLAC__byte *id);
-
-/** Get the metadata block at the current position.  You can modify the
- *  block but must use FLAC__metadata_simple_iterator_set_block() to
- *  write it back to the FLAC file.
- *
- *  You must call FLAC__metadata_object_delete() on the returned object
- *  when you are finished with it.
- *
- * \param iterator  A pointer to an existing initialized iterator.
- * \assert
- *    \code iterator != NULL \endcode
- *    \a iterator has been successfully initialized with
- *    FLAC__metadata_simple_iterator_init()
- * \retval FLAC__StreamMetadata*
- *    The current metadata block, or \c NULL if there was a memory
- *    allocation error.
- */
-FLAC_API FLAC__StreamMetadata *FLAC__metadata_simple_iterator_get_block(FLAC__Metadata_SimpleIterator *iterator);
-
-/** Write a block back to the FLAC file.  This function tries to be
- *  as efficient as possible; how the block is actually written is
- *  shown by the following:
- *
- *  Existing block is a STREAMINFO block and the new block is a
- *  STREAMINFO block: the new block is written in place.  Make sure
- *  you know what you're doing when changing the values of a
- *  STREAMINFO block.
- *
- *  Existing block is a STREAMINFO block and the new block is a
- *  not a STREAMINFO block: this is an error since the first block
- *  must be a STREAMINFO block.  Returns \c false without altering the
- *  file.
- *
- *  Existing block is not a STREAMINFO block and the new block is a
- *  STREAMINFO block: this is an error since there may be only one
- *  STREAMINFO block.  Returns \c false without altering the file.
- *
- *  Existing block and new block are the same length: the existing
- *  block will be replaced by the new block, written in place.
- *
- *  Existing block is longer than new block: if use_padding is \c true,
- *  the existing block will be overwritten in place with the new
- *  block followed by a PADDING block, if possible, to make the total
- *  size the same as the existing block.  Remember that a padding
- *  block requires at least four bytes so if the difference in size
- *  between the new block and existing block is less than that, the
- *  entire file will have to be rewritten, using the new block's
- *  exact size.  If use_padding is \c false, the entire file will be
- *  rewritten, replacing the existing block by the new block.
- *
- *  Existing block is shorter than new block: if use_padding is \c true,
- *  the function will try and expand the new block into the following
- *  PADDING block, if it exists and doing so won't shrink the PADDING
- *  block to less than 4 bytes.  If there is no following PADDING
- *  block, or it will shrink to less than 4 bytes, or use_padding is
- *  \c false, the entire file is rewritten, replacing the existing block
- *  with the new block.  Note that in this case any following PADDING
- *  block is preserved as is.
- *
- *  After writing the block, the iterator will remain in the same
- *  place, i.e. pointing to the new block.
- *
- * \param iterator     A pointer to an existing initialized iterator.
- * \param block        The block to set.
- * \param use_padding  See above.
- * \assert
- *    \code iterator != NULL \endcode
- *    \a iterator has been successfully initialized with
- *    FLAC__metadata_simple_iterator_init()
- *    \code block != NULL \endcode
- * \retval FLAC__bool
- *    \c true if successful, else \c false.
- */
-FLAC_API FLAC__bool FLAC__metadata_simple_iterator_set_block(FLAC__Metadata_SimpleIterator *iterator, FLAC__StreamMetadata *block, FLAC__bool use_padding);
-
-/** This is similar to FLAC__metadata_simple_iterator_set_block()
- *  except that instead of writing over an existing block, it appends
- *  a block after the existing block.  \a use_padding is again used to
- *  tell the function to try an expand into following padding in an
- *  attempt to avoid rewriting the entire file.
- *
- *  This function will fail and return \c false if given a STREAMINFO
- *  block.
- *
- *  After writing the block, the iterator will be pointing to the
- *  new block.
- *
- * \param iterator     A pointer to an existing initialized iterator.
- * \param block        The block to set.
- * \param use_padding  See above.
- * \assert
- *    \code iterator != NULL \endcode
- *    \a iterator has been successfully initialized with
- *    FLAC__metadata_simple_iterator_init()
- *    \code block != NULL \endcode
- * \retval FLAC__bool
- *    \c true if successful, else \c false.
- */
-FLAC_API FLAC__bool FLAC__metadata_simple_iterator_insert_block_after(FLAC__Metadata_SimpleIterator *iterator, FLAC__StreamMetadata *block, FLAC__bool use_padding);
-
-/** Deletes the block at the current position.  This will cause the
- *  entire FLAC file to be rewritten, unless \a use_padding is \c true,
- *  in which case the block will be replaced by an equal-sized PADDING
- *  block.  The iterator will be left pointing to the block before the
- *  one just deleted.
- *
- *  You may not delete the STREAMINFO block.
- *
- * \param iterator     A pointer to an existing initialized iterator.
- * \param use_padding  See above.
- * \assert
- *    \code iterator != NULL \endcode
- *    \a iterator has been successfully initialized with
- *    FLAC__metadata_simple_iterator_init()
- * \retval FLAC__bool
- *    \c true if successful, else \c false.
- */
-FLAC_API FLAC__bool FLAC__metadata_simple_iterator_delete_block(FLAC__Metadata_SimpleIterator *iterator, FLAC__bool use_padding);
-
-/* \} */
-
-
-/** \defgroup flac_metadata_level2 FLAC/metadata.h: metadata level 2 interface
- *  \ingroup flac_metadata
- *
- * \brief
- * The level 2 interface provides read-write access to FLAC file metadata;
- * all metadata is read into memory, operated on in memory, and then written
- * to file, which is more efficient than level 1 when editing multiple blocks.
- *
- * Currently Ogg FLAC is supported for read only, via
- * FLAC__metadata_chain_read_ogg() but a subsequent
- * FLAC__metadata_chain_write() will fail.
- *
- * The general usage of this interface is:
- *
- * - Create a new chain using FLAC__metadata_chain_new().  A chain is a
- *   linked list of FLAC metadata blocks.
- * - Read all metadata into the the chain from a FLAC file using
- *   FLAC__metadata_chain_read() or FLAC__metadata_chain_read_ogg() and
- *   check the status.
- * - Optionally, consolidate the padding using
- *   FLAC__metadata_chain_merge_padding() or
- *   FLAC__metadata_chain_sort_padding().
- * - Create a new iterator using FLAC__metadata_iterator_new()
- * - Initialize the iterator to point to the first element in the chain
- *   using FLAC__metadata_iterator_init()
- * - Traverse the chain using FLAC__metadata_iterator_next and
- *   FLAC__metadata_iterator_prev().
- * - Get a block for reading or modification using
- *   FLAC__metadata_iterator_get_block().  The pointer to the object
- *   inside the chain is returned, so the block is yours to modify.
- *   Changes will be reflected in the FLAC file when you write the
- *   chain.  You can also add and delete blocks (see functions below).
- * - When done, write out the chain using FLAC__metadata_chain_write().
- *   Make sure to read the whole comment to the function below.
- * - Delete the chain using FLAC__metadata_chain_delete().
- *
- * \note
- * Even though the FLAC file is not open while the chain is being
- * manipulated, you must not alter the file externally during
- * this time.  The chain assumes the FLAC file will not change
- * between the time of FLAC__metadata_chain_read()/FLAC__metadata_chain_read_ogg()
- * and FLAC__metadata_chain_write().
- *
- * \note
- * Do not modify the is_last, length, or type fields of returned
- * FLAC__StreamMetadata objects.  These are managed automatically.
- *
- * \note
- * The metadata objects returned by FLAC__metadata_iterator_get_block()
- * are owned by the chain; do not FLAC__metadata_object_delete() them.
- * In the same way, blocks passed to FLAC__metadata_iterator_set_block()
- * become owned by the chain and they will be deleted when the chain is
- * deleted.
- *
- * \{
- */
-
-struct FLAC__Metadata_Chain;
-/** The opaque structure definition for the level 2 chain type.
- */
-typedef struct FLAC__Metadata_Chain FLAC__Metadata_Chain;
-
-struct FLAC__Metadata_Iterator;
-/** The opaque structure definition for the level 2 iterator type.
- */
-typedef struct FLAC__Metadata_Iterator FLAC__Metadata_Iterator;
-
-typedef enum {
-	FLAC__METADATA_CHAIN_STATUS_OK = 0,
-	/**< The chain is in the normal OK state */
-
-	FLAC__METADATA_CHAIN_STATUS_ILLEGAL_INPUT,
-	/**< The data passed into a function violated the function's usage criteria */
-
-	FLAC__METADATA_CHAIN_STATUS_ERROR_OPENING_FILE,
-	/**< The chain could not open the target file */
-
-	FLAC__METADATA_CHAIN_STATUS_NOT_A_FLAC_FILE,
-	/**< The chain could not find the FLAC signature at the start of the file */
-
-	FLAC__METADATA_CHAIN_STATUS_NOT_WRITABLE,
-	/**< The chain tried to write to a file that was not writable */
-
-	FLAC__METADATA_CHAIN_STATUS_BAD_METADATA,
-	/**< The chain encountered input that does not conform to the FLAC metadata specification */
-
-	FLAC__METADATA_CHAIN_STATUS_READ_ERROR,
-	/**< The chain encountered an error while reading the FLAC file */
-
-	FLAC__METADATA_CHAIN_STATUS_SEEK_ERROR,
-	/**< The chain encountered an error while seeking in the FLAC file */
-
-	FLAC__METADATA_CHAIN_STATUS_WRITE_ERROR,
-	/**< The chain encountered an error while writing the FLAC file */
-
-	FLAC__METADATA_CHAIN_STATUS_RENAME_ERROR,
-	/**< The chain encountered an error renaming the FLAC file */
-
-	FLAC__METADATA_CHAIN_STATUS_UNLINK_ERROR,
-	/**< The chain encountered an error removing the temporary file */
-
-	FLAC__METADATA_CHAIN_STATUS_MEMORY_ALLOCATION_ERROR,
-	/**< Memory allocation failed */
-
-	FLAC__METADATA_CHAIN_STATUS_INTERNAL_ERROR,
-	/**< The caller violated an assertion or an unexpected error occurred */
-
-	FLAC__METADATA_CHAIN_STATUS_INVALID_CALLBACKS,
-	/**< One or more of the required callbacks was NULL */
-
-	FLAC__METADATA_CHAIN_STATUS_READ_WRITE_MISMATCH,
-	/**< FLAC__metadata_chain_write() was called on a chain read by
-	 *   FLAC__metadata_chain_read_with_callbacks()/FLAC__metadata_chain_read_ogg_with_callbacks(),
-	 *   or 
-	 *   FLAC__metadata_chain_write_with_callbacks()/FLAC__metadata_chain_write_with_callbacks_and_tempfile()
-	 *   was called on a chain read by
-	 *   FLAC__metadata_chain_read()/FLAC__metadata_chain_read_ogg().
-	 *   Matching read/write methods must always be used. */
-
-	FLAC__METADATA_CHAIN_STATUS_WRONG_WRITE_CALL
-	/**< FLAC__metadata_chain_write_with_callbacks() was called when the
-	 *   chain write requires a tempfile; use
-	 *   FLAC__metadata_chain_write_with_callbacks_and_tempfile() instead.
-	 *   Or, FLAC__metadata_chain_write_with_callbacks_and_tempfile() was
-	 *   called when the chain write does not require a tempfile; use
-	 *   FLAC__metadata_chain_write_with_callbacks() instead.
-	 *   Always check FLAC__metadata_chain_check_if_tempfile_needed()
-	 *   before writing via callbacks. */
-
-} FLAC__Metadata_ChainStatus;
-
-/** Maps a FLAC__Metadata_ChainStatus to a C string.
- *
- *  Using a FLAC__Metadata_ChainStatus as the index to this array
- *  will give the string equivalent.  The contents should not be modified.
- */
-extern FLAC_API const char * const FLAC__Metadata_ChainStatusString[];
-
-/*********** FLAC__Metadata_Chain ***********/
-
-/** Create a new chain instance.
- *
- * \retval FLAC__Metadata_Chain*
- *    \c NULL if there was an error allocating memory, else the new instance.
- */
-FLAC_API FLAC__Metadata_Chain *FLAC__metadata_chain_new(void);
-
-/** Free a chain instance.  Deletes the object pointed to by \a chain.
- *
- * \param chain  A pointer to an existing chain.
- * \assert
- *    \code chain != NULL \endcode
- */
-FLAC_API void FLAC__metadata_chain_delete(FLAC__Metadata_Chain *chain);
-
-/** Get the current status of the chain.  Call this after a function
- *  returns \c false to get the reason for the error.  Also resets the
- *  status to FLAC__METADATA_CHAIN_STATUS_OK.
- *
- * \param chain    A pointer to an existing chain.
- * \assert
- *    \code chain != NULL \endcode
- * \retval FLAC__Metadata_ChainStatus
- *    The current status of the chain.
- */
-FLAC_API FLAC__Metadata_ChainStatus FLAC__metadata_chain_status(FLAC__Metadata_Chain *chain);
-
-/** Read all metadata from a FLAC file into the chain.
- *
- * \param chain    A pointer to an existing chain.
- * \param filename The path to the FLAC file to read.
- * \assert
- *    \code chain != NULL \endcode
- *    \code filename != NULL \endcode
- * \retval FLAC__bool
- *    \c true if a valid list of metadata blocks was read from
- *    \a filename, else \c false.  On failure, check the status with
- *    FLAC__metadata_chain_status().
- */
-FLAC_API FLAC__bool FLAC__metadata_chain_read(FLAC__Metadata_Chain *chain, const char *filename);
-
-/** Read all metadata from an Ogg FLAC file into the chain.
- *
- * \note Ogg FLAC metadata data writing is not supported yet and
- * FLAC__metadata_chain_write() will fail.
- *
- * \param chain    A pointer to an existing chain.
- * \param filename The path to the Ogg FLAC file to read.
- * \assert
- *    \code chain != NULL \endcode
- *    \code filename != NULL \endcode
- * \retval FLAC__bool
- *    \c true if a valid list of metadata blocks was read from
- *    \a filename, else \c false.  On failure, check the status with
- *    FLAC__metadata_chain_status().
- */
-FLAC_API FLAC__bool FLAC__metadata_chain_read_ogg(FLAC__Metadata_Chain *chain, const char *filename);
-
-/** Read all metadata from a FLAC stream into the chain via I/O callbacks.
- *
- *  The \a handle need only be open for reading, but must be seekable.
- *  The equivalent minimum stdio fopen() file mode is \c "r" (or \c "rb"
- *  for Windows).
- *
- * \param chain    A pointer to an existing chain.
- * \param handle   The I/O handle of the FLAC stream to read.  The
- *                 handle will NOT be closed after the metadata is read;
- *                 that is the duty of the caller.
- * \param callbacks
- *                 A set of callbacks to use for I/O.  The mandatory
- *                 callbacks are \a read, \a seek, and \a tell.
- * \assert
- *    \code chain != NULL \endcode
- * \retval FLAC__bool
- *    \c true if a valid list of metadata blocks was read from
- *    \a handle, else \c false.  On failure, check the status with
- *    FLAC__metadata_chain_status().
- */
-FLAC_API FLAC__bool FLAC__metadata_chain_read_with_callbacks(FLAC__Metadata_Chain *chain, FLAC__IOHandle handle, FLAC__IOCallbacks callbacks);
-
-/** Read all metadata from an Ogg FLAC stream into the chain via I/O callbacks.
- *
- *  The \a handle need only be open for reading, but must be seekable.
- *  The equivalent minimum stdio fopen() file mode is \c "r" (or \c "rb"
- *  for Windows).
- *
- * \note Ogg FLAC metadata data writing is not supported yet and
- * FLAC__metadata_chain_write() will fail.
- *
- * \param chain    A pointer to an existing chain.
- * \param handle   The I/O handle of the Ogg FLAC stream to read.  The
- *                 handle will NOT be closed after the metadata is read;
- *                 that is the duty of the caller.
- * \param callbacks
- *                 A set of callbacks to use for I/O.  The mandatory
- *                 callbacks are \a read, \a seek, and \a tell.
- * \assert
- *    \code chain != NULL \endcode
- * \retval FLAC__bool
- *    \c true if a valid list of metadata blocks was read from
- *    \a handle, else \c false.  On failure, check the status with
- *    FLAC__metadata_chain_status().
- */
-FLAC_API FLAC__bool FLAC__metadata_chain_read_ogg_with_callbacks(FLAC__Metadata_Chain *chain, FLAC__IOHandle handle, FLAC__IOCallbacks callbacks);
-
-/** Checks if writing the given chain would require the use of a
- *  temporary file, or if it could be written in place.
- *
- *  Under certain conditions, padding can be utilized so that writing
- *  edited metadata back to the FLAC file does not require rewriting the
- *  entire file.  If rewriting is required, then a temporary workfile is
- *  required.  When writing metadata using callbacks, you must check
- *  this function to know whether to call
- *  FLAC__metadata_chain_write_with_callbacks() or
- *  FLAC__metadata_chain_write_with_callbacks_and_tempfile().  When
- *  writing with FLAC__metadata_chain_write(), the temporary file is
- *  handled internally.
- *
- * \param chain    A pointer to an existing chain.
- * \param use_padding
- *                 Whether or not padding will be allowed to be used
- *                 during the write.  The value of \a use_padding given
- *                 here must match the value later passed to
- *                 FLAC__metadata_chain_write_with_callbacks() or
- *                 FLAC__metadata_chain_write_with_callbacks_with_tempfile().
- * \assert
- *    \code chain != NULL \endcode
- * \retval FLAC__bool
- *    \c true if writing the current chain would require a tempfile, or
- *    \c false if metadata can be written in place.
- */
-FLAC_API FLAC__bool FLAC__metadata_chain_check_if_tempfile_needed(FLAC__Metadata_Chain *chain, FLAC__bool use_padding);
-
-/** Write all metadata out to the FLAC file.  This function tries to be as
- *  efficient as possible; how the metadata is actually written is shown by
- *  the following:
- *
- *  If the current chain is the same size as the existing metadata, the new
- *  data is written in place.
- *
- *  If the current chain is longer than the existing metadata, and
- *  \a use_padding is \c true, and the last block is a PADDING block of
- *  sufficient length, the function will truncate the final padding block
- *  so that the overall size of the metadata is the same as the existing
- *  metadata, and then just rewrite the metadata.  Otherwise, if not all of
- *  the above conditions are met, the entire FLAC file must be rewritten.
- *  If you want to use padding this way it is a good idea to call
- *  FLAC__metadata_chain_sort_padding() first so that you have the maximum
- *  amount of padding to work with, unless you need to preserve ordering
- *  of the PADDING blocks for some reason.
- *
- *  If the current chain is shorter than the existing metadata, and
- *  \a use_padding is \c true, and the final block is a PADDING block, the padding
- *  is extended to make the overall size the same as the existing data.  If
- *  \a use_padding is \c true and the last block is not a PADDING block, a new
- *  PADDING block is added to the end of the new data to make it the same
- *  size as the existing data (if possible, see the note to
- *  FLAC__metadata_simple_iterator_set_block() about the four byte limit)
- *  and the new data is written in place.  If none of the above apply or
- *  \a use_padding is \c false, the entire FLAC file is rewritten.
- *
- *  If \a preserve_file_stats is \c true, the owner and modification time will
- *  be preserved even if the FLAC file is written.
- *
- *  For this write function to be used, the chain must have been read with
- *  FLAC__metadata_chain_read()/FLAC__metadata_chain_read_ogg(), not
- *  FLAC__metadata_chain_read_with_callbacks()/FLAC__metadata_chain_read_ogg_with_callbacks().
- *
- * \param chain               A pointer to an existing chain.
- * \param use_padding         See above.
- * \param preserve_file_stats See above.
- * \assert
- *    \code chain != NULL \endcode
- * \retval FLAC__bool
- *    \c true if the write succeeded, else \c false.  On failure,
- *    check the status with FLAC__metadata_chain_status().
- */
-FLAC_API FLAC__bool FLAC__metadata_chain_write(FLAC__Metadata_Chain *chain, FLAC__bool use_padding, FLAC__bool preserve_file_stats);
-
-/** Write all metadata out to a FLAC stream via callbacks.
- *
- *  (See FLAC__metadata_chain_write() for the details on how padding is
- *  used to write metadata in place if possible.)
- *
- *  The \a handle must be open for updating and be seekable.  The
- *  equivalent minimum stdio fopen() file mode is \c "r+" (or \c "r+b"
- *  for Windows).
- *
- *  For this write function to be used, the chain must have been read with
- *  FLAC__metadata_chain_read_with_callbacks()/FLAC__metadata_chain_read_ogg_with_callbacks(),
- *  not FLAC__metadata_chain_read()/FLAC__metadata_chain_read_ogg().
- *  Also, FLAC__metadata_chain_check_if_tempfile_needed() must have returned
- *  \c false.
- *
- * \param chain        A pointer to an existing chain.
- * \param use_padding  See FLAC__metadata_chain_write()
- * \param handle       The I/O handle of the FLAC stream to write.  The
- *                     handle will NOT be closed after the metadata is
- *                     written; that is the duty of the caller.
- * \param callbacks    A set of callbacks to use for I/O.  The mandatory
- *                     callbacks are \a write and \a seek.
- * \assert
- *    \code chain != NULL \endcode
- * \retval FLAC__bool
- *    \c true if the write succeeded, else \c false.  On failure,
- *    check the status with FLAC__metadata_chain_status().
- */
-FLAC_API FLAC__bool FLAC__metadata_chain_write_with_callbacks(FLAC__Metadata_Chain *chain, FLAC__bool use_padding, FLAC__IOHandle handle, FLAC__IOCallbacks callbacks);
-
-/** Write all metadata out to a FLAC stream via callbacks.
- *
- *  (See FLAC__metadata_chain_write() for the details on how padding is
- *  used to write metadata in place if possible.)
- *
- *  This version of the write-with-callbacks function must be used when
- *  FLAC__metadata_chain_check_if_tempfile_needed() returns true.  In
- *  this function, you must supply an I/O handle corresponding to the
- *  FLAC file to edit, and a temporary handle to which the new FLAC
- *  file will be written.  It is the caller's job to move this temporary
- *  FLAC file on top of the original FLAC file to complete the metadata
- *  edit.
- *
- *  The \a handle must be open for reading and be seekable.  The
- *  equivalent minimum stdio fopen() file mode is \c "r" (or \c "rb"
- *  for Windows).
- *
- *  The \a temp_handle must be open for writing.  The
- *  equivalent minimum stdio fopen() file mode is \c "w" (or \c "wb"
- *  for Windows).  It should be an empty stream, or at least positioned
- *  at the start-of-file (in which case it is the caller's duty to
- *  truncate it on return).
- *
- *  For this write function to be used, the chain must have been read with
- *  FLAC__metadata_chain_read_with_callbacks()/FLAC__metadata_chain_read_ogg_with_callbacks(),
- *  not FLAC__metadata_chain_read()/FLAC__metadata_chain_read_ogg().
- *  Also, FLAC__metadata_chain_check_if_tempfile_needed() must have returned
- *  \c true.
- *
- * \param chain        A pointer to an existing chain.
- * \param use_padding  See FLAC__metadata_chain_write()
- * \param handle       The I/O handle of the original FLAC stream to read.
- *                     The handle will NOT be closed after the metadata is
- *                     written; that is the duty of the caller.
- * \param callbacks    A set of callbacks to use for I/O on \a handle.
- *                     The mandatory callbacks are \a read, \a seek, and
- *                     \a eof.
- * \param temp_handle  The I/O handle of the FLAC stream to write.  The
- *                     handle will NOT be closed after the metadata is
- *                     written; that is the duty of the caller.
- * \param temp_callbacks
- *                     A set of callbacks to use for I/O on temp_handle.
- *                     The only mandatory callback is \a write.
- * \assert
- *    \code chain != NULL \endcode
- * \retval FLAC__bool
- *    \c true if the write succeeded, else \c false.  On failure,
- *    check the status with FLAC__metadata_chain_status().
- */
-FLAC_API FLAC__bool FLAC__metadata_chain_write_with_callbacks_and_tempfile(FLAC__Metadata_Chain *chain, FLAC__bool use_padding, FLAC__IOHandle handle, FLAC__IOCallbacks callbacks, FLAC__IOHandle temp_handle, FLAC__IOCallbacks temp_callbacks);
-
-/** Merge adjacent PADDING blocks into a single block.
- *
- * \note This function does not write to the FLAC file, it only
- * modifies the chain.
- *
- * \warning Any iterator on the current chain will become invalid after this
- * call.  You should delete the iterator and get a new one.
- *
- * \param chain               A pointer to an existing chain.
- * \assert
- *    \code chain != NULL \endcode
- */
-FLAC_API void FLAC__metadata_chain_merge_padding(FLAC__Metadata_Chain *chain);
-
-/** This function will move all PADDING blocks to the end on the metadata,
- *  then merge them into a single block.
- *
- * \note This function does not write to the FLAC file, it only
- * modifies the chain.
- *
- * \warning Any iterator on the current chain will become invalid after this
- * call.  You should delete the iterator and get a new one.
- *
- * \param chain  A pointer to an existing chain.
- * \assert
- *    \code chain != NULL \endcode
- */
-FLAC_API void FLAC__metadata_chain_sort_padding(FLAC__Metadata_Chain *chain);
-
-
-/*********** FLAC__Metadata_Iterator ***********/
-
-/** Create a new iterator instance.
- *
- * \retval FLAC__Metadata_Iterator*
- *    \c NULL if there was an error allocating memory, else the new instance.
- */
-FLAC_API FLAC__Metadata_Iterator *FLAC__metadata_iterator_new(void);
-
-/** Free an iterator instance.  Deletes the object pointed to by \a iterator.
- *
- * \param iterator  A pointer to an existing iterator.
- * \assert
- *    \code iterator != NULL \endcode
- */
-FLAC_API void FLAC__metadata_iterator_delete(FLAC__Metadata_Iterator *iterator);
-
-/** Initialize the iterator to point to the first metadata block in the
- *  given chain.
- *
- * \param iterator  A pointer to an existing iterator.
- * \param chain     A pointer to an existing and initialized (read) chain.
- * \assert
- *    \code iterator != NULL \endcode
- *    \code chain != NULL \endcode
- */
-FLAC_API void FLAC__metadata_iterator_init(FLAC__Metadata_Iterator *iterator, FLAC__Metadata_Chain *chain);
-
-/** Moves the iterator forward one metadata block, returning \c false if
- *  already at the end.
- *
- * \param iterator  A pointer to an existing initialized iterator.
- * \assert
- *    \code iterator != NULL \endcode
- *    \a iterator has been successfully initialized with
- *    FLAC__metadata_iterator_init()
- * \retval FLAC__bool
- *    \c false if already at the last metadata block of the chain, else
- *    \c true.
- */
-FLAC_API FLAC__bool FLAC__metadata_iterator_next(FLAC__Metadata_Iterator *iterator);
-
-/** Moves the iterator backward one metadata block, returning \c false if
- *  already at the beginning.
- *
- * \param iterator  A pointer to an existing initialized iterator.
- * \assert
- *    \code iterator != NULL \endcode
- *    \a iterator has been successfully initialized with
- *    FLAC__metadata_iterator_init()
- * \retval FLAC__bool
- *    \c false if already at the first metadata block of the chain, else
- *    \c true.
- */
-FLAC_API FLAC__bool FLAC__metadata_iterator_prev(FLAC__Metadata_Iterator *iterator);
-
-/** Get the type of the metadata block at the current position.
- *
- * \param iterator  A pointer to an existing initialized iterator.
- * \assert
- *    \code iterator != NULL \endcode
- *    \a iterator has been successfully initialized with
- *    FLAC__metadata_iterator_init()
- * \retval FLAC__MetadataType
- *    The type of the metadata block at the current iterator position.
- */
-FLAC_API FLAC__MetadataType FLAC__metadata_iterator_get_block_type(const FLAC__Metadata_Iterator *iterator);
-
-/** Get the metadata block at the current position.  You can modify
- *  the block in place but must write the chain before the changes
- *  are reflected to the FLAC file.  You do not need to call
- *  FLAC__metadata_iterator_set_block() to reflect the changes;
- *  the pointer returned by FLAC__metadata_iterator_get_block()
- *  points directly into the chain.
- *
- * \warning
- * Do not call FLAC__metadata_object_delete() on the returned object;
- * to delete a block use FLAC__metadata_iterator_delete_block().
- *
- * \param iterator  A pointer to an existing initialized iterator.
- * \assert
- *    \code iterator != NULL \endcode
- *    \a iterator has been successfully initialized with
- *    FLAC__metadata_iterator_init()
- * \retval FLAC__StreamMetadata*
- *    The current metadata block.
- */
-FLAC_API FLAC__StreamMetadata *FLAC__metadata_iterator_get_block(FLAC__Metadata_Iterator *iterator);
-
-/** Set the metadata block at the current position, replacing the existing
- *  block.  The new block passed in becomes owned by the chain and it will be
- *  deleted when the chain is deleted.
- *
- * \param iterator  A pointer to an existing initialized iterator.
- * \param block     A pointer to a metadata block.
- * \assert
- *    \code iterator != NULL \endcode
- *    \a iterator has been successfully initialized with
- *    FLAC__metadata_iterator_init()
- *    \code block != NULL \endcode
- * \retval FLAC__bool
- *    \c false if the conditions in the above description are not met, or
- *    a memory allocation error occurs, otherwise \c true.
- */
-FLAC_API FLAC__bool FLAC__metadata_iterator_set_block(FLAC__Metadata_Iterator *iterator, FLAC__StreamMetadata *block);
-
-/** Removes the current block from the chain.  If \a replace_with_padding is
- *  \c true, the block will instead be replaced with a padding block of equal
- *  size.  You can not delete the STREAMINFO block.  The iterator will be
- *  left pointing to the block before the one just "deleted", even if
- *  \a replace_with_padding is \c true.
- *
- * \param iterator              A pointer to an existing initialized iterator.
- * \param replace_with_padding  See above.
- * \assert
- *    \code iterator != NULL \endcode
- *    \a iterator has been successfully initialized with
- *    FLAC__metadata_iterator_init()
- * \retval FLAC__bool
- *    \c false if the conditions in the above description are not met,
- *    otherwise \c true.
- */
-FLAC_API FLAC__bool FLAC__metadata_iterator_delete_block(FLAC__Metadata_Iterator *iterator, FLAC__bool replace_with_padding);
-
-/** Insert a new block before the current block.  You cannot insert a block
- *  before the first STREAMINFO block.  You cannot insert a STREAMINFO block
- *  as there can be only one, the one that already exists at the head when you
- *  read in a chain.  The chain takes ownership of the new block and it will be
- *  deleted when the chain is deleted.  The iterator will be left pointing to
- *  the new block.
- *
- * \param iterator  A pointer to an existing initialized iterator.
- * \param block     A pointer to a metadata block to insert.
- * \assert
- *    \code iterator != NULL \endcode
- *    \a iterator has been successfully initialized with
- *    FLAC__metadata_iterator_init()
- * \retval FLAC__bool
- *    \c false if the conditions in the above description are not met, or
- *    a memory allocation error occurs, otherwise \c true.
- */
-FLAC_API FLAC__bool FLAC__metadata_iterator_insert_block_before(FLAC__Metadata_Iterator *iterator, FLAC__StreamMetadata *block);
-
-/** Insert a new block after the current block.  You cannot insert a STREAMINFO
- *  block as there can be only one, the one that already exists at the head when
- *  you read in a chain.  The chain takes ownership of the new block and it will
- *  be deleted when the chain is deleted.  The iterator will be left pointing to
- *  the new block.
- *
- * \param iterator  A pointer to an existing initialized iterator.
- * \param block     A pointer to a metadata block to insert.
- * \assert
- *    \code iterator != NULL \endcode
- *    \a iterator has been successfully initialized with
- *    FLAC__metadata_iterator_init()
- * \retval FLAC__bool
- *    \c false if the conditions in the above description are not met, or
- *    a memory allocation error occurs, otherwise \c true.
- */
-FLAC_API FLAC__bool FLAC__metadata_iterator_insert_block_after(FLAC__Metadata_Iterator *iterator, FLAC__StreamMetadata *block);
-
-/* \} */
-
-
-/** \defgroup flac_metadata_object FLAC/metadata.h: metadata object methods
- *  \ingroup flac_metadata
- *
- * \brief
- * This module contains methods for manipulating FLAC metadata objects.
- *
- * Since many are variable length we have to be careful about the memory
- * management.  We decree that all pointers to data in the object are
- * owned by the object and memory-managed by the object.
- *
- * Use the FLAC__metadata_object_new() and FLAC__metadata_object_delete()
- * functions to create all instances.  When using the
- * FLAC__metadata_object_set_*() functions to set pointers to data, set
- * \a copy to \c true to have the function make it's own copy of the data, or
- * to \c false to give the object ownership of your data.  In the latter case
- * your pointer must be freeable by free() and will be free()d when the object
- * is FLAC__metadata_object_delete()d.  It is legal to pass a null pointer as
- * the data pointer to a FLAC__metadata_object_set_*() function as long as
- * the length argument is 0 and the \a copy argument is \c false.
- *
- * The FLAC__metadata_object_new() and FLAC__metadata_object_clone() function
- * will return \c NULL in the case of a memory allocation error, otherwise a new
- * object.  The FLAC__metadata_object_set_*() functions return \c false in the
- * case of a memory allocation error.
- *
- * We don't have the convenience of C++ here, so note that the library relies
- * on you to keep the types straight.  In other words, if you pass, for
- * example, a FLAC__StreamMetadata* that represents a STREAMINFO block to
- * FLAC__metadata_object_application_set_data(), you will get an assertion
- * failure.
- *
- * For convenience the FLAC__metadata_object_vorbiscomment_*() functions
- * maintain a trailing NUL on each Vorbis comment entry.  This is not counted
- * toward the length or stored in the stream, but it can make working with plain
- * comments (those that don't contain embedded-NULs in the value) easier.
- * Entries passed into these functions have trailing NULs added if missing, and
- * returned entries are guaranteed to have a trailing NUL.
- *
- * The FLAC__metadata_object_vorbiscomment_*() functions that take a Vorbis
- * comment entry/name/value will first validate that it complies with the Vorbis
- * comment specification and return false if it does not.
- *
- * There is no need to recalculate the length field on metadata blocks you
- * have modified.  They will be calculated automatically before they  are
- * written back to a file.
- *
- * \{
- */
-
-
-/** Create a new metadata object instance of the given type.
- *
- *  The object will be "empty"; i.e. values and data pointers will be \c 0,
- *  with the exception of FLAC__METADATA_TYPE_VORBIS_COMMENT, which will have
- *  the vendor string set (but zero comments).
- *
- *  Do not pass in a value greater than or equal to
- *  \a FLAC__METADATA_TYPE_UNDEFINED unless you really know what you're
- *  doing.
- *
- * \param type  Type of object to create
- * \retval FLAC__StreamMetadata*
- *    \c NULL if there was an error allocating memory or the type code is
- *    greater than FLAC__MAX_METADATA_TYPE_CODE, else the new instance.
- */
-FLAC_API FLAC__StreamMetadata *FLAC__metadata_object_new(FLAC__MetadataType type);
-
-/** Create a copy of an existing metadata object.
- *
- *  The copy is a "deep" copy, i.e. dynamically allocated data within the
- *  object is also copied.  The caller takes ownership of the new block and
- *  is responsible for freeing it with FLAC__metadata_object_delete().
- *
- * \param object  Pointer to object to copy.
- * \assert
- *    \code object != NULL \endcode
- * \retval FLAC__StreamMetadata*
- *    \c NULL if there was an error allocating memory, else the new instance.
- */
-FLAC_API FLAC__StreamMetadata *FLAC__metadata_object_clone(const FLAC__StreamMetadata *object);
-
-/** Free a metadata object.  Deletes the object pointed to by \a object.
- *
- *  The delete is a "deep" delete, i.e. dynamically allocated data within the
- *  object is also deleted.
- *
- * \param object  A pointer to an existing object.
- * \assert
- *    \code object != NULL \endcode
- */
-FLAC_API void FLAC__metadata_object_delete(FLAC__StreamMetadata *object);
-
-/** Compares two metadata objects.
- *
- *  The compare is "deep", i.e. dynamically allocated data within the
- *  object is also compared.
- *
- * \param block1  A pointer to an existing object.
- * \param block2  A pointer to an existing object.
- * \assert
- *    \code block1 != NULL \endcode
- *    \code block2 != NULL \endcode
- * \retval FLAC__bool
- *    \c true if objects are identical, else \c false.
- */
-FLAC_API FLAC__bool FLAC__metadata_object_is_equal(const FLAC__StreamMetadata *block1, const FLAC__StreamMetadata *block2);
-
-/** Sets the application data of an APPLICATION block.
- *
- *  If \a copy is \c true, a copy of the data is stored; otherwise, the object
- *  takes ownership of the pointer.  The existing data will be freed if this
- *  function is successful, otherwise the original data will remain if \a copy
- *  is \c true and malloc() fails.
- *
- * \note It is safe to pass a const pointer to \a data if \a copy is \c true.
- *
- * \param object  A pointer to an existing APPLICATION object.
- * \param data    A pointer to the data to set.
- * \param length  The length of \a data in bytes.
- * \param copy    See above.
- * \assert
- *    \code object != NULL \endcode
- *    \code object->type == FLAC__METADATA_TYPE_APPLICATION \endcode
- *    \code (data != NULL && length > 0) ||
- * (data == NULL && length == 0 && copy == false) \endcode
- * \retval FLAC__bool
- *    \c false if \a copy is \c true and malloc() fails, else \c true.
- */
-FLAC_API FLAC__bool FLAC__metadata_object_application_set_data(FLAC__StreamMetadata *object, FLAC__byte *data, unsigned length, FLAC__bool copy);
-
-/** Resize the seekpoint array.
- *
- *  If the size shrinks, elements will truncated; if it grows, new placeholder
- *  points will be added to the end.
- *
- * \param object          A pointer to an existing SEEKTABLE object.
- * \param new_num_points  The desired length of the array; may be \c 0.
- * \assert
- *    \code object != NULL \endcode
- *    \code object->type == FLAC__METADATA_TYPE_SEEKTABLE \endcode
- *    \code (object->data.seek_table.points == NULL && object->data.seek_table.num_points == 0) ||
- * (object->data.seek_table.points != NULL && object->data.seek_table.num_points > 0) \endcode
- * \retval FLAC__bool
- *    \c false if memory allocation error, else \c true.
- */
-FLAC_API FLAC__bool FLAC__metadata_object_seektable_resize_points(FLAC__StreamMetadata *object, unsigned new_num_points);
-
-/** Set a seekpoint in a seektable.
- *
- * \param object     A pointer to an existing SEEKTABLE object.
- * \param point_num  Index into seekpoint array to set.
- * \param point      The point to set.
- * \assert
- *    \code object != NULL \endcode
- *    \code object->type == FLAC__METADATA_TYPE_SEEKTABLE \endcode
- *    \code object->data.seek_table.num_points > point_num \endcode
- */
-FLAC_API void FLAC__metadata_object_seektable_set_point(FLAC__StreamMetadata *object, unsigned point_num, FLAC__StreamMetadata_SeekPoint point);
-
-/** Insert a seekpoint into a seektable.
- *
- * \param object     A pointer to an existing SEEKTABLE object.
- * \param point_num  Index into seekpoint array to set.
- * \param point      The point to set.
- * \assert
- *    \code object != NULL \endcode
- *    \code object->type == FLAC__METADATA_TYPE_SEEKTABLE \endcode
- *    \code object->data.seek_table.num_points >= point_num \endcode
- * \retval FLAC__bool
- *    \c false if memory allocation error, else \c true.
- */
-FLAC_API FLAC__bool FLAC__metadata_object_seektable_insert_point(FLAC__StreamMetadata *object, unsigned point_num, FLAC__StreamMetadata_SeekPoint point);
-
-/** Delete a seekpoint from a seektable.
- *
- * \param object     A pointer to an existing SEEKTABLE object.
- * \param point_num  Index into seekpoint array to set.
- * \assert
- *    \code object != NULL \endcode
- *    \code object->type == FLAC__METADATA_TYPE_SEEKTABLE \endcode
- *    \code object->data.seek_table.num_points > point_num \endcode
- * \retval FLAC__bool
- *    \c false if memory allocation error, else \c true.
- */
-FLAC_API FLAC__bool FLAC__metadata_object_seektable_delete_point(FLAC__StreamMetadata *object, unsigned point_num);
-
-/** Check a seektable to see if it conforms to the FLAC specification.
- *  See the format specification for limits on the contents of the
- *  seektable.
- *
- * \param object  A pointer to an existing SEEKTABLE object.
- * \assert
- *    \code object != NULL \endcode
- *    \code object->type == FLAC__METADATA_TYPE_SEEKTABLE \endcode
- * \retval FLAC__bool
- *    \c false if seek table is illegal, else \c true.
- */
-FLAC_API FLAC__bool FLAC__metadata_object_seektable_is_legal(const FLAC__StreamMetadata *object);
-
-/** Append a number of placeholder points to the end of a seek table.
- *
- * \note
- * As with the other ..._seektable_template_... functions, you should
- * call FLAC__metadata_object_seektable_template_sort() when finished
- * to make the seek table legal.
- *
- * \param object  A pointer to an existing SEEKTABLE object.
- * \param num     The number of placeholder points to append.
- * \assert
- *    \code object != NULL \endcode
- *    \code object->type == FLAC__METADATA_TYPE_SEEKTABLE \endcode
- * \retval FLAC__bool
- *    \c false if memory allocation fails, else \c true.
- */
-FLAC_API FLAC__bool FLAC__metadata_object_seektable_template_append_placeholders(FLAC__StreamMetadata *object, unsigned num);
-
-/** Append a specific seek point template to the end of a seek table.
- *
- * \note
- * As with the other ..._seektable_template_... functions, you should
- * call FLAC__metadata_object_seektable_template_sort() when finished
- * to make the seek table legal.
- *
- * \param object  A pointer to an existing SEEKTABLE object.
- * \param sample_number  The sample number of the seek point template.
- * \assert
- *    \code object != NULL \endcode
- *    \code object->type == FLAC__METADATA_TYPE_SEEKTABLE \endcode
- * \retval FLAC__bool
- *    \c false if memory allocation fails, else \c true.
- */
-FLAC_API FLAC__bool FLAC__metadata_object_seektable_template_append_point(FLAC__StreamMetadata *object, FLAC__uint64 sample_number);
-
-/** Append specific seek point templates to the end of a seek table.
- *
- * \note
- * As with the other ..._seektable_template_... functions, you should
- * call FLAC__metadata_object_seektable_template_sort() when finished
- * to make the seek table legal.
- *
- * \param object  A pointer to an existing SEEKTABLE object.
- * \param sample_numbers  An array of sample numbers for the seek points.
- * \param num     The number of seek point templates to append.
- * \assert
- *    \code object != NULL \endcode
- *    \code object->type == FLAC__METADATA_TYPE_SEEKTABLE \endcode
- * \retval FLAC__bool
- *    \c false if memory allocation fails, else \c true.
- */
-FLAC_API FLAC__bool FLAC__metadata_object_seektable_template_append_points(FLAC__StreamMetadata *object, FLAC__uint64 sample_numbers[], unsigned num);
-
-/** Append a set of evenly-spaced seek point templates to the end of a
- *  seek table.
- *
- * \note
- * As with the other ..._seektable_template_... functions, you should
- * call FLAC__metadata_object_seektable_template_sort() when finished
- * to make the seek table legal.
- *
- * \param object  A pointer to an existing SEEKTABLE object.
- * \param num     The number of placeholder points to append.
- * \param total_samples  The total number of samples to be encoded;
- *                       the seekpoints will be spaced approximately
- *                       \a total_samples / \a num samples apart.
- * \assert
- *    \code object != NULL \endcode
- *    \code object->type == FLAC__METADATA_TYPE_SEEKTABLE \endcode
- *    \code total_samples > 0 \endcode
- * \retval FLAC__bool
- *    \c false if memory allocation fails, else \c true.
- */
-FLAC_API FLAC__bool FLAC__metadata_object_seektable_template_append_spaced_points(FLAC__StreamMetadata *object, unsigned num, FLAC__uint64 total_samples);
-
-/** Append a set of evenly-spaced seek point templates to the end of a
- *  seek table.
- *
- * \note
- * As with the other ..._seektable_template_... functions, you should
- * call FLAC__metadata_object_seektable_template_sort() when finished
- * to make the seek table legal.
- *
- * \param object  A pointer to an existing SEEKTABLE object.
- * \param samples The number of samples apart to space the placeholder
- *                points.  The first point will be at sample \c 0, the
- *                second at sample \a samples, then 2*\a samples, and
- *                so on.  As long as \a samples and \a total_samples
- *                are greater than \c 0, there will always be at least
- *                one seekpoint at sample \c 0.
- * \param total_samples  The total number of samples to be encoded;
- *                       the seekpoints will be spaced
- *                       \a samples samples apart.
- * \assert
- *    \code object != NULL \endcode
- *    \code object->type == FLAC__METADATA_TYPE_SEEKTABLE \endcode
- *    \code samples > 0 \endcode
- *    \code total_samples > 0 \endcode
- * \retval FLAC__bool
- *    \c false if memory allocation fails, else \c true.
- */
-FLAC_API FLAC__bool FLAC__metadata_object_seektable_template_append_spaced_points_by_samples(FLAC__StreamMetadata *object, unsigned samples, FLAC__uint64 total_samples);
-
-/** Sort a seek table's seek points according to the format specification,
- *  removing duplicates.
- *
- * \param object   A pointer to a seek table to be sorted.
- * \param compact  If \c false, behaves like FLAC__format_seektable_sort().
- *                 If \c true, duplicates are deleted and the seek table is
- *                 shrunk appropriately; the number of placeholder points
- *                 present in the seek table will be the same after the call
- *                 as before.
- * \assert
- *    \code object != NULL \endcode
- *    \code object->type == FLAC__METADATA_TYPE_SEEKTABLE \endcode
- * \retval FLAC__bool
- *    \c false if realloc() fails, else \c true.
- */
-FLAC_API FLAC__bool FLAC__metadata_object_seektable_template_sort(FLAC__StreamMetadata *object, FLAC__bool compact);
-
-/** Sets the vendor string in a VORBIS_COMMENT block.
- *
- *  For convenience, a trailing NUL is added to the entry if it doesn't have
- *  one already.
- *
- *  If \a copy is \c true, a copy of the entry is stored; otherwise, the object
- *  takes ownership of the \c entry.entry pointer.
- *
- *  \note If this function returns \c false, the caller still owns the
- *  pointer.
- *
- * \param object  A pointer to an existing VORBIS_COMMENT object.
- * \param entry   The entry to set the vendor string to.
- * \param copy    See above.
- * \assert
- *    \code object != NULL \endcode
- *    \code object->type == FLAC__METADATA_TYPE_VORBIS_COMMENT \endcode
- *    \code (entry.entry != NULL && entry.length > 0) ||
- * (entry.entry == NULL && entry.length == 0) \endcode
- * \retval FLAC__bool
- *    \c false if memory allocation fails or \a entry does not comply with the
- *    Vorbis comment specification, else \c true.
- */
-FLAC_API FLAC__bool FLAC__metadata_object_vorbiscomment_set_vendor_string(FLAC__StreamMetadata *object, FLAC__StreamMetadata_VorbisComment_Entry entry, FLAC__bool copy);
-
-/** Resize the comment array.
- *
- *  If the size shrinks, elements will truncated; if it grows, new empty
- *  fields will be added to the end.
- *
- * \param object            A pointer to an existing VORBIS_COMMENT object.
- * \param new_num_comments  The desired length of the array; may be \c 0.
- * \assert
- *    \code object != NULL \endcode
- *    \code object->type == FLAC__METADATA_TYPE_VORBIS_COMMENT \endcode
- *    \code (object->data.vorbis_comment.comments == NULL && object->data.vorbis_comment.num_comments == 0) ||
- * (object->data.vorbis_comment.comments != NULL && object->data.vorbis_comment.num_comments > 0) \endcode
- * \retval FLAC__bool
- *    \c false if memory allocation fails, else \c true.
- */
-FLAC_API FLAC__bool FLAC__metadata_object_vorbiscomment_resize_comments(FLAC__StreamMetadata *object, unsigned new_num_comments);
-
-/** Sets a comment in a VORBIS_COMMENT block.
- *
- *  For convenience, a trailing NUL is added to the entry if it doesn't have
- *  one already.
- *
- *  If \a copy is \c true, a copy of the entry is stored; otherwise, the object
- *  takes ownership of the \c entry.entry pointer.
- *
- *  \note If this function returns \c false, the caller still owns the
- *  pointer.
- *
- * \param object       A pointer to an existing VORBIS_COMMENT object.
- * \param comment_num  Index into comment array to set.
- * \param entry        The entry to set the comment to.
- * \param copy         See above.
- * \assert
- *    \code object != NULL \endcode
- *    \code object->type == FLAC__METADATA_TYPE_VORBIS_COMMENT \endcode
- *    \code comment_num < object->data.vorbis_comment.num_comments \endcode
- *    \code (entry.entry != NULL && entry.length > 0) ||
- * (entry.entry == NULL && entry.length == 0) \endcode
- * \retval FLAC__bool
- *    \c false if memory allocation fails or \a entry does not comply with the
- *    Vorbis comment specification, else \c true.
- */
-FLAC_API FLAC__bool FLAC__metadata_object_vorbiscomment_set_comment(FLAC__StreamMetadata *object, unsigned comment_num, FLAC__StreamMetadata_VorbisComment_Entry entry, FLAC__bool copy);
-
-/** Insert a comment in a VORBIS_COMMENT block at the given index.
- *
- *  For convenience, a trailing NUL is added to the entry if it doesn't have
- *  one already.
- *
- *  If \a copy is \c true, a copy of the entry is stored; otherwise, the object
- *  takes ownership of the \c entry.entry pointer.
- *
- *  \note If this function returns \c false, the caller still owns the
- *  pointer.
- *
- * \param object       A pointer to an existing VORBIS_COMMENT object.
- * \param comment_num  The index at which to insert the comment.  The comments
- *                     at and after \a comment_num move right one position.
- *                     To append a comment to the end, set \a comment_num to
- *                     \c object->data.vorbis_comment.num_comments .
- * \param entry        The comment to insert.
- * \param copy         See above.
- * \assert
- *    \code object != NULL \endcode
- *    \code object->type == FLAC__METADATA_TYPE_VORBIS_COMMENT \endcode
- *    \code object->data.vorbis_comment.num_comments >= comment_num \endcode
- *    \code (entry.entry != NULL && entry.length > 0) ||
- * (entry.entry == NULL && entry.length == 0 && copy == false) \endcode
- * \retval FLAC__bool
- *    \c false if memory allocation fails or \a entry does not comply with the
- *    Vorbis comment specification, else \c true.
- */
-FLAC_API FLAC__bool FLAC__metadata_object_vorbiscomment_insert_comment(FLAC__StreamMetadata *object, unsigned comment_num, FLAC__StreamMetadata_VorbisComment_Entry entry, FLAC__bool copy);
-
-/** Appends a comment to a VORBIS_COMMENT block.
- *
- *  For convenience, a trailing NUL is added to the entry if it doesn't have
- *  one already.
- *
- *  If \a copy is \c true, a copy of the entry is stored; otherwise, the object
- *  takes ownership of the \c entry.entry pointer.
- *
- *  \note If this function returns \c false, the caller still owns the
- *  pointer.
- *
- * \param object       A pointer to an existing VORBIS_COMMENT object.
- * \param entry        The comment to insert.
- * \param copy         See above.
- * \assert
- *    \code object != NULL \endcode
- *    \code object->type == FLAC__METADATA_TYPE_VORBIS_COMMENT \endcode
- *    \code (entry.entry != NULL && entry.length > 0) ||
- * (entry.entry == NULL && entry.length == 0 && copy == false) \endcode
- * \retval FLAC__bool
- *    \c false if memory allocation fails or \a entry does not comply with the
- *    Vorbis comment specification, else \c true.
- */
-FLAC_API FLAC__bool FLAC__metadata_object_vorbiscomment_append_comment(FLAC__StreamMetadata *object, FLAC__StreamMetadata_VorbisComment_Entry entry, FLAC__bool copy);
-
-/** Replaces comments in a VORBIS_COMMENT block with a new one.
- *
- *  For convenience, a trailing NUL is added to the entry if it doesn't have
- *  one already.
- *
- *  Depending on the the value of \a all, either all or just the first comment
- *  whose field name(s) match the given entry's name will be replaced by the
- *  given entry.  If no comments match, \a entry will simply be appended.
- *
- *  If \a copy is \c true, a copy of the entry is stored; otherwise, the object
- *  takes ownership of the \c entry.entry pointer.
- *
- *  \note If this function returns \c false, the caller still owns the
- *  pointer.
- *
- * \param object       A pointer to an existing VORBIS_COMMENT object.
- * \param entry        The comment to insert.
- * \param all          If \c true, all comments whose field name matches
- *                     \a entry's field name will be removed, and \a entry will
- *                     be inserted at the position of the first matching
- *                     comment.  If \c false, only the first comment whose
- *                     field name matches \a entry's field name will be
- *                     replaced with \a entry.
- * \param copy         See above.
- * \assert
- *    \code object != NULL \endcode
- *    \code object->type == FLAC__METADATA_TYPE_VORBIS_COMMENT \endcode
- *    \code (entry.entry != NULL && entry.length > 0) ||
- * (entry.entry == NULL && entry.length == 0 && copy == false) \endcode
- * \retval FLAC__bool
- *    \c false if memory allocation fails or \a entry does not comply with the
- *    Vorbis comment specification, else \c true.
- */
-FLAC_API FLAC__bool FLAC__metadata_object_vorbiscomment_replace_comment(FLAC__StreamMetadata *object, FLAC__StreamMetadata_VorbisComment_Entry entry, FLAC__bool all, FLAC__bool copy);
-
-/** Delete a comment in a VORBIS_COMMENT block at the given index.
- *
- * \param object       A pointer to an existing VORBIS_COMMENT object.
- * \param comment_num  The index of the comment to delete.
- * \assert
- *    \code object != NULL \endcode
- *    \code object->type == FLAC__METADATA_TYPE_VORBIS_COMMENT \endcode
- *    \code object->data.vorbis_comment.num_comments > comment_num \endcode
- * \retval FLAC__bool
- *    \c false if realloc() fails, else \c true.
- */
-FLAC_API FLAC__bool FLAC__metadata_object_vorbiscomment_delete_comment(FLAC__StreamMetadata *object, unsigned comment_num);
-
-/** Creates a Vorbis comment entry from NUL-terminated name and value strings.
- *
- *  On return, the filled-in \a entry->entry pointer will point to malloc()ed
- *  memory and shall be owned by the caller.  For convenience the entry will
- *  have a terminating NUL.
- *
- * \param entry              A pointer to a Vorbis comment entry.  The entry's
- *                           \c entry pointer should not point to allocated
- *                           memory as it will be overwritten.
- * \param field_name         The field name in ASCII, \c NUL terminated.
- * \param field_value        The field value in UTF-8, \c NUL terminated.
- * \assert
- *    \code entry != NULL \endcode
- *    \code field_name != NULL \endcode
- *    \code field_value != NULL \endcode
- * \retval FLAC__bool
- *    \c false if malloc() fails, or if \a field_name or \a field_value does
- *    not comply with the Vorbis comment specification, else \c true.
- */
-FLAC_API FLAC__bool FLAC__metadata_object_vorbiscomment_entry_from_name_value_pair(FLAC__StreamMetadata_VorbisComment_Entry *entry, const char *field_name, const char *field_value);
-
-/** Splits a Vorbis comment entry into NUL-terminated name and value strings.
- *
- *  The returned pointers to name and value will be allocated by malloc()
- *  and shall be owned by the caller.
- *
- * \param entry              An existing Vorbis comment entry.
- * \param field_name         The address of where the returned pointer to the
- *                           field name will be stored.
- * \param field_value        The address of where the returned pointer to the
- *                           field value will be stored.
- * \assert
- *    \code (entry.entry != NULL && entry.length > 0) \endcode
- *    \code memchr(entry.entry, '=', entry.length) != NULL \endcode
- *    \code field_name != NULL \endcode
- *    \code field_value != NULL \endcode
- * \retval FLAC__bool
- *    \c false if memory allocation fails or \a entry does not comply with the
- *    Vorbis comment specification, else \c true.
- */
-FLAC_API FLAC__bool FLAC__metadata_object_vorbiscomment_entry_to_name_value_pair(const FLAC__StreamMetadata_VorbisComment_Entry entry, char **field_name, char **field_value);
-
-/** Check if the given Vorbis comment entry's field name matches the given
- *  field name.
- *
- * \param entry              An existing Vorbis comment entry.
- * \param field_name         The field name to check.
- * \param field_name_length  The length of \a field_name, not including the
- *                           terminating \c NUL.
- * \assert
- *    \code (entry.entry != NULL && entry.length > 0) \endcode
- * \retval FLAC__bool
- *    \c true if the field names match, else \c false
- */
-FLAC_API FLAC__bool FLAC__metadata_object_vorbiscomment_entry_matches(const FLAC__StreamMetadata_VorbisComment_Entry entry, const char *field_name, unsigned field_name_length);
-
-/** Find a Vorbis comment with the given field name.
- *
- *  The search begins at entry number \a offset; use an offset of 0 to
- *  search from the beginning of the comment array.
- *
- * \param object      A pointer to an existing VORBIS_COMMENT object.
- * \param offset      The offset into the comment array from where to start
- *                    the search.
- * \param field_name  The field name of the comment to find.
- * \assert
- *    \code object != NULL \endcode
- *    \code object->type == FLAC__METADATA_TYPE_VORBIS_COMMENT \endcode
- *    \code field_name != NULL \endcode
- * \retval int
- *    The offset in the comment array of the first comment whose field
- *    name matches \a field_name, or \c -1 if no match was found.
- */
-FLAC_API int FLAC__metadata_object_vorbiscomment_find_entry_from(const FLAC__StreamMetadata *object, unsigned offset, const char *field_name);
-
-/** Remove first Vorbis comment matching the given field name.
- *
- * \param object      A pointer to an existing VORBIS_COMMENT object.
- * \param field_name  The field name of comment to delete.
- * \assert
- *    \code object != NULL \endcode
- *    \code object->type == FLAC__METADATA_TYPE_VORBIS_COMMENT \endcode
- * \retval int
- *    \c -1 for memory allocation error, \c 0 for no matching entries,
- *    \c 1 for one matching entry deleted.
- */
-FLAC_API int FLAC__metadata_object_vorbiscomment_remove_entry_matching(FLAC__StreamMetadata *object, const char *field_name);
-
-/** Remove all Vorbis comments matching the given field name.
- *
- * \param object      A pointer to an existing VORBIS_COMMENT object.
- * \param field_name  The field name of comments to delete.
- * \assert
- *    \code object != NULL \endcode
- *    \code object->type == FLAC__METADATA_TYPE_VORBIS_COMMENT \endcode
- * \retval int
- *    \c -1 for memory allocation error, \c 0 for no matching entries,
- *    else the number of matching entries deleted.
- */
-FLAC_API int FLAC__metadata_object_vorbiscomment_remove_entries_matching(FLAC__StreamMetadata *object, const char *field_name);
-
-/** Create a new CUESHEET track instance.
- *
- *  The object will be "empty"; i.e. values and data pointers will be \c 0.
- *
- * \retval FLAC__StreamMetadata_CueSheet_Track*
- *    \c NULL if there was an error allocating memory, else the new instance.
- */
-FLAC_API FLAC__StreamMetadata_CueSheet_Track *FLAC__metadata_object_cuesheet_track_new(void);
-
-/** Create a copy of an existing CUESHEET track object.
- *
- *  The copy is a "deep" copy, i.e. dynamically allocated data within the
- *  object is also copied.  The caller takes ownership of the new object and
- *  is responsible for freeing it with
- *  FLAC__metadata_object_cuesheet_track_delete().
- *
- * \param object  Pointer to object to copy.
- * \assert
- *    \code object != NULL \endcode
- * \retval FLAC__StreamMetadata_CueSheet_Track*
- *    \c NULL if there was an error allocating memory, else the new instance.
- */
-FLAC_API FLAC__StreamMetadata_CueSheet_Track *FLAC__metadata_object_cuesheet_track_clone(const FLAC__StreamMetadata_CueSheet_Track *object);
-
-/** Delete a CUESHEET track object
- *
- * \param object       A pointer to an existing CUESHEET track object.
- * \assert
- *    \code object != NULL \endcode
- */
-FLAC_API void FLAC__metadata_object_cuesheet_track_delete(FLAC__StreamMetadata_CueSheet_Track *object);
-
-/** Resize a track's index point array.
- *
- *  If the size shrinks, elements will truncated; if it grows, new blank
- *  indices will be added to the end.
- *
- * \param object           A pointer to an existing CUESHEET object.
- * \param track_num        The index of the track to modify.  NOTE: this is not
- *                         necessarily the same as the track's \a number field.
- * \param new_num_indices  The desired length of the array; may be \c 0.
- * \assert
- *    \code object != NULL \endcode
- *    \code object->type == FLAC__METADATA_TYPE_CUESHEET \endcode
- *    \code object->data.cue_sheet.num_tracks > track_num \endcode
- *    \code (object->data.cue_sheet.tracks[track_num].indices == NULL && object->data.cue_sheet.tracks[track_num].num_indices == 0) ||
- * (object->data.cue_sheet.tracks[track_num].indices != NULL && object->data.cue_sheet.tracks[track_num].num_indices > 0) \endcode
- * \retval FLAC__bool
- *    \c false if memory allocation error, else \c true.
- */
-FLAC_API FLAC__bool FLAC__metadata_object_cuesheet_track_resize_indices(FLAC__StreamMetadata *object, unsigned track_num, unsigned new_num_indices);
-
-/** Insert an index point in a CUESHEET track at the given index.
- *
- * \param object       A pointer to an existing CUESHEET object.
- * \param track_num    The index of the track to modify.  NOTE: this is not
- *                     necessarily the same as the track's \a number field.
- * \param index_num    The index into the track's index array at which to
- *                     insert the index point.  NOTE: this is not necessarily
- *                     the same as the index point's \a number field.  The
- *                     indices at and after \a index_num move right one
- *                     position.  To append an index point to the end, set
- *                     \a index_num to
- *                     \c object->data.cue_sheet.tracks[track_num].num_indices .
- * \param index        The index point to insert.
- * \assert
- *    \code object != NULL \endcode
- *    \code object->type == FLAC__METADATA_TYPE_CUESHEET \endcode
- *    \code object->data.cue_sheet.num_tracks > track_num \endcode
- *    \code object->data.cue_sheet.tracks[track_num].num_indices >= index_num \endcode
- * \retval FLAC__bool
- *    \c false if realloc() fails, else \c true.
- */
-FLAC_API FLAC__bool FLAC__metadata_object_cuesheet_track_insert_index(FLAC__StreamMetadata *object, unsigned track_num, unsigned index_num, FLAC__StreamMetadata_CueSheet_Index index);
-
-/** Insert a blank index point in a CUESHEET track at the given index.
- *
- *  A blank index point is one in which all field values are zero.
- *
- * \param object       A pointer to an existing CUESHEET object.
- * \param track_num    The index of the track to modify.  NOTE: this is not
- *                     necessarily the same as the track's \a number field.
- * \param index_num    The index into the track's index array at which to
- *                     insert the index point.  NOTE: this is not necessarily
- *                     the same as the index point's \a number field.  The
- *                     indices at and after \a index_num move right one
- *                     position.  To append an index point to the end, set
- *                     \a index_num to
- *                     \c object->data.cue_sheet.tracks[track_num].num_indices .
- * \assert
- *    \code object != NULL \endcode
- *    \code object->type == FLAC__METADATA_TYPE_CUESHEET \endcode
- *    \code object->data.cue_sheet.num_tracks > track_num \endcode
- *    \code object->data.cue_sheet.tracks[track_num].num_indices >= index_num \endcode
- * \retval FLAC__bool
- *    \c false if realloc() fails, else \c true.
- */
-FLAC_API FLAC__bool FLAC__metadata_object_cuesheet_track_insert_blank_index(FLAC__StreamMetadata *object, unsigned track_num, unsigned index_num);
-
-/** Delete an index point in a CUESHEET track at the given index.
- *
- * \param object       A pointer to an existing CUESHEET object.
- * \param track_num    The index into the track array of the track to
- *                     modify.  NOTE: this is not necessarily the same
- *                     as the track's \a number field.
- * \param index_num    The index into the track's index array of the index
- *                     to delete.  NOTE: this is not necessarily the same
- *                     as the index's \a number field.
- * \assert
- *    \code object != NULL \endcode
- *    \code object->type == FLAC__METADATA_TYPE_CUESHEET \endcode
- *    \code object->data.cue_sheet.num_tracks > track_num \endcode
- *    \code object->data.cue_sheet.tracks[track_num].num_indices > index_num \endcode
- * \retval FLAC__bool
- *    \c false if realloc() fails, else \c true.
- */
-FLAC_API FLAC__bool FLAC__metadata_object_cuesheet_track_delete_index(FLAC__StreamMetadata *object, unsigned track_num, unsigned index_num);
-
-/** Resize the track array.
- *
- *  If the size shrinks, elements will truncated; if it grows, new blank
- *  tracks will be added to the end.
- *
- * \param object            A pointer to an existing CUESHEET object.
- * \param new_num_tracks    The desired length of the array; may be \c 0.
- * \assert
- *    \code object != NULL \endcode
- *    \code object->type == FLAC__METADATA_TYPE_CUESHEET \endcode
- *    \code (object->data.cue_sheet.tracks == NULL && object->data.cue_sheet.num_tracks == 0) ||
- * (object->data.cue_sheet.tracks != NULL && object->data.cue_sheet.num_tracks > 0) \endcode
- * \retval FLAC__bool
- *    \c false if memory allocation error, else \c true.
- */
-FLAC_API FLAC__bool FLAC__metadata_object_cuesheet_resize_tracks(FLAC__StreamMetadata *object, unsigned new_num_tracks);
-
-/** Sets a track in a CUESHEET block.
- *
- *  If \a copy is \c true, a copy of the track is stored; otherwise, the object
- *  takes ownership of the \a track pointer.
- *
- * \param object       A pointer to an existing CUESHEET object.
- * \param track_num    Index into track array to set.  NOTE: this is not
- *                     necessarily the same as the track's \a number field.
- * \param track        The track to set the track to.  You may safely pass in
- *                     a const pointer if \a copy is \c true.
- * \param copy         See above.
- * \assert
- *    \code object != NULL \endcode
- *    \code object->type == FLAC__METADATA_TYPE_CUESHEET \endcode
- *    \code track_num < object->data.cue_sheet.num_tracks \endcode
- *    \code (track->indices != NULL && track->num_indices > 0) ||
- * (track->indices == NULL && track->num_indices == 0)
- * \retval FLAC__bool
- *    \c false if \a copy is \c true and malloc() fails, else \c true.
- */
-FLAC_API FLAC__bool FLAC__metadata_object_cuesheet_set_track(FLAC__StreamMetadata *object, unsigned track_num, FLAC__StreamMetadata_CueSheet_Track *track, FLAC__bool copy);
-
-/** Insert a track in a CUESHEET block at the given index.
- *
- *  If \a copy is \c true, a copy of the track is stored; otherwise, the object
- *  takes ownership of the \a track pointer.
- *
- * \param object       A pointer to an existing CUESHEET object.
- * \param track_num    The index at which to insert the track.  NOTE: this
- *                     is not necessarily the same as the track's \a number
- *                     field.  The tracks at and after \a track_num move right
- *                     one position.  To append a track to the end, set
- *                     \a track_num to \c object->data.cue_sheet.num_tracks .
- * \param track        The track to insert.  You may safely pass in a const
- *                     pointer if \a copy is \c true.
- * \param copy         See above.
- * \assert
- *    \code object != NULL \endcode
- *    \code object->type == FLAC__METADATA_TYPE_CUESHEET \endcode
- *    \code object->data.cue_sheet.num_tracks >= track_num \endcode
- * \retval FLAC__bool
- *    \c false if \a copy is \c true and malloc() fails, else \c true.
- */
-FLAC_API FLAC__bool FLAC__metadata_object_cuesheet_insert_track(FLAC__StreamMetadata *object, unsigned track_num, FLAC__StreamMetadata_CueSheet_Track *track, FLAC__bool copy);
-
-/** Insert a blank track in a CUESHEET block at the given index.
- *
- *  A blank track is one in which all field values are zero.
- *
- * \param object       A pointer to an existing CUESHEET object.
- * \param track_num    The index at which to insert the track.  NOTE: this
- *                     is not necessarily the same as the track's \a number
- *                     field.  The tracks at and after \a track_num move right
- *                     one position.  To append a track to the end, set
- *                     \a track_num to \c object->data.cue_sheet.num_tracks .
- * \assert
- *    \code object != NULL \endcode
- *    \code object->type == FLAC__METADATA_TYPE_CUESHEET \endcode
- *    \code object->data.cue_sheet.num_tracks >= track_num \endcode
- * \retval FLAC__bool
- *    \c false if \a copy is \c true and malloc() fails, else \c true.
- */
-FLAC_API FLAC__bool FLAC__metadata_object_cuesheet_insert_blank_track(FLAC__StreamMetadata *object, unsigned track_num);
-
-/** Delete a track in a CUESHEET block at the given index.
- *
- * \param object       A pointer to an existing CUESHEET object.
- * \param track_num    The index into the track array of the track to
- *                     delete.  NOTE: this is not necessarily the same
- *                     as the track's \a number field.
- * \assert
- *    \code object != NULL \endcode
- *    \code object->type == FLAC__METADATA_TYPE_CUESHEET \endcode
- *    \code object->data.cue_sheet.num_tracks > track_num \endcode
- * \retval FLAC__bool
- *    \c false if realloc() fails, else \c true.
- */
-FLAC_API FLAC__bool FLAC__metadata_object_cuesheet_delete_track(FLAC__StreamMetadata *object, unsigned track_num);
-
-/** Check a cue sheet to see if it conforms to the FLAC specification.
- *  See the format specification for limits on the contents of the
- *  cue sheet.
- *
- * \param object     A pointer to an existing CUESHEET object.
- * \param check_cd_da_subset  If \c true, check CUESHEET against more
- *                   stringent requirements for a CD-DA (audio) disc.
- * \param violation  Address of a pointer to a string.  If there is a
- *                   violation, a pointer to a string explanation of the
- *                   violation will be returned here. \a violation may be
- *                   \c NULL if you don't need the returned string.  Do not
- *                   free the returned string; it will always point to static
- *                   data.
- * \assert
- *    \code object != NULL \endcode
- *    \code object->type == FLAC__METADATA_TYPE_CUESHEET \endcode
- * \retval FLAC__bool
- *    \c false if cue sheet is illegal, else \c true.
- */
-FLAC_API FLAC__bool FLAC__metadata_object_cuesheet_is_legal(const FLAC__StreamMetadata *object, FLAC__bool check_cd_da_subset, const char **violation);
-
-/** Calculate and return the CDDB/freedb ID for a cue sheet.  The function
- *  assumes the cue sheet corresponds to a CD; the result is undefined
- *  if the cuesheet's is_cd bit is not set.
- *
- * \param object     A pointer to an existing CUESHEET object.
- * \assert
- *    \code object != NULL \endcode
- *    \code object->type == FLAC__METADATA_TYPE_CUESHEET \endcode
- * \retval FLAC__uint32
- *    The unsigned integer representation of the CDDB/freedb ID
- */
-FLAC_API FLAC__uint32 FLAC__metadata_object_cuesheet_calculate_cddb_id(const FLAC__StreamMetadata *object);
-
-/** Sets the MIME type of a PICTURE block.
- *
- *  If \a copy is \c true, a copy of the string is stored; otherwise, the object
- *  takes ownership of the pointer.  The existing string will be freed if this
- *  function is successful, otherwise the original string will remain if \a copy
- *  is \c true and malloc() fails.
- *
- * \note It is safe to pass a const pointer to \a mime_type if \a copy is \c true.
- *
- * \param object      A pointer to an existing PICTURE object.
- * \param mime_type   A pointer to the MIME type string.  The string must be
- *                    ASCII characters 0x20-0x7e, NUL-terminated.  No validation
- *                    is done.
- * \param copy        See above.
- * \assert
- *    \code object != NULL \endcode
- *    \code object->type == FLAC__METADATA_TYPE_PICTURE \endcode
- *    \code (mime_type != NULL) \endcode
- * \retval FLAC__bool
- *    \c false if \a copy is \c true and malloc() fails, else \c true.
- */
-FLAC_API FLAC__bool FLAC__metadata_object_picture_set_mime_type(FLAC__StreamMetadata *object, char *mime_type, FLAC__bool copy);
-
-/** Sets the description of a PICTURE block.
- *
- *  If \a copy is \c true, a copy of the string is stored; otherwise, the object
- *  takes ownership of the pointer.  The existing string will be freed if this
- *  function is successful, otherwise the original string will remain if \a copy
- *  is \c true and malloc() fails.
- *
- * \note It is safe to pass a const pointer to \a description if \a copy is \c true.
- *
- * \param object      A pointer to an existing PICTURE object.
- * \param description A pointer to the description string.  The string must be
- *                    valid UTF-8, NUL-terminated.  No validation is done.
- * \param copy        See above.
- * \assert
- *    \code object != NULL \endcode
- *    \code object->type == FLAC__METADATA_TYPE_PICTURE \endcode
- *    \code (description != NULL) \endcode
- * \retval FLAC__bool
- *    \c false if \a copy is \c true and malloc() fails, else \c true.
- */
-FLAC_API FLAC__bool FLAC__metadata_object_picture_set_description(FLAC__StreamMetadata *object, FLAC__byte *description, FLAC__bool copy);
-
-/** Sets the picture data of a PICTURE block.
- *
- *  If \a copy is \c true, a copy of the data is stored; otherwise, the object
- *  takes ownership of the pointer.  Also sets the \a data_length field of the
- *  metadata object to what is passed in as the \a length parameter.  The
- *  existing data will be freed if this function is successful, otherwise the
- *  original data and data_length will remain if \a copy is \c true and
- *  malloc() fails.
- *
- * \note It is safe to pass a const pointer to \a data if \a copy is \c true.
- *
- * \param object  A pointer to an existing PICTURE object.
- * \param data    A pointer to the data to set.
- * \param length  The length of \a data in bytes.
- * \param copy    See above.
- * \assert
- *    \code object != NULL \endcode
- *    \code object->type == FLAC__METADATA_TYPE_PICTURE \endcode
- *    \code (data != NULL && length > 0) ||
- * (data == NULL && length == 0 && copy == false) \endcode
- * \retval FLAC__bool
- *    \c false if \a copy is \c true and malloc() fails, else \c true.
- */
-FLAC_API FLAC__bool FLAC__metadata_object_picture_set_data(FLAC__StreamMetadata *object, FLAC__byte *data, FLAC__uint32 length, FLAC__bool copy);
-
-/** Check a PICTURE block to see if it conforms to the FLAC specification.
- *  See the format specification for limits on the contents of the
- *  PICTURE block.
- *
- * \param object     A pointer to existing PICTURE block to be checked.
- * \param violation  Address of a pointer to a string.  If there is a
- *                   violation, a pointer to a string explanation of the
- *                   violation will be returned here. \a violation may be
- *                   \c NULL if you don't need the returned string.  Do not
- *                   free the returned string; it will always point to static
- *                   data.
- * \assert
- *    \code object != NULL \endcode
- *    \code object->type == FLAC__METADATA_TYPE_PICTURE \endcode
- * \retval FLAC__bool
- *    \c false if PICTURE block is illegal, else \c true.
- */
-FLAC_API FLAC__bool FLAC__metadata_object_picture_is_legal(const FLAC__StreamMetadata *object, const char **violation);
-
-/* \} */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
--- a/win64-mingw/include/FLAC/ordinals.h	Wed Oct 26 13:24:45 2016 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,80 +0,0 @@
-/* libFLAC - Free Lossless Audio Codec library
- * Copyright (C) 2000,2001,2002,2003,2004,2005,2006,2007  Josh Coalson
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * - Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * - Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * - Neither the name of the Xiph.org Foundation nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef FLAC__ORDINALS_H
-#define FLAC__ORDINALS_H
-
-#if !(defined(_MSC_VER) || defined(__BORLANDC__) || defined(__EMX__))
-#include <inttypes.h>
-#endif
-
-typedef signed char FLAC__int8;
-typedef unsigned char FLAC__uint8;
-
-#if defined(_MSC_VER) || defined(__BORLANDC__)
-typedef __int16 FLAC__int16;
-typedef __int32 FLAC__int32;
-typedef __int64 FLAC__int64;
-typedef unsigned __int16 FLAC__uint16;
-typedef unsigned __int32 FLAC__uint32;
-typedef unsigned __int64 FLAC__uint64;
-#elif defined(__EMX__)
-typedef short FLAC__int16;
-typedef long FLAC__int32;
-typedef long long FLAC__int64;
-typedef unsigned short FLAC__uint16;
-typedef unsigned long FLAC__uint32;
-typedef unsigned long long FLAC__uint64;
-#else
-typedef int16_t FLAC__int16;
-typedef int32_t FLAC__int32;
-typedef int64_t FLAC__int64;
-typedef uint16_t FLAC__uint16;
-typedef uint32_t FLAC__uint32;
-typedef uint64_t FLAC__uint64;
-#endif
-
-typedef int FLAC__bool;
-
-typedef FLAC__uint8 FLAC__byte;
-
-#ifdef true
-#undef true
-#endif
-#ifdef false
-#undef false
-#endif
-#ifndef __cplusplus
-#define true 1
-#define false 0
-#endif
-
-#endif
--- a/win64-mingw/include/FLAC/stream_decoder.h	Wed Oct 26 13:24:45 2016 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1559 +0,0 @@
-/* libFLAC - Free Lossless Audio Codec library
- * Copyright (C) 2000,2001,2002,2003,2004,2005,2006,2007  Josh Coalson
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * - Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * - Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * - Neither the name of the Xiph.org Foundation nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef FLAC__STREAM_DECODER_H
-#define FLAC__STREAM_DECODER_H
-
-#include <stdio.h> /* for FILE */
-#include "export.h"
-#include "format.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/** \file include/FLAC/stream_decoder.h
- *
- *  \brief
- *  This module contains the functions which implement the stream
- *  decoder.
- *
- *  See the detailed documentation in the
- *  \link flac_stream_decoder stream decoder \endlink module.
- */
-
-/** \defgroup flac_decoder FLAC/ \*_decoder.h: decoder interfaces
- *  \ingroup flac
- *
- *  \brief
- *  This module describes the decoder layers provided by libFLAC.
- *
- * The stream decoder can be used to decode complete streams either from
- * the client via callbacks, or directly from a file, depending on how
- * it is initialized.  When decoding via callbacks, the client provides
- * callbacks for reading FLAC data and writing decoded samples, and
- * handling metadata and errors.  If the client also supplies seek-related
- * callback, the decoder function for sample-accurate seeking within the
- * FLAC input is also available.  When decoding from a file, the client
- * needs only supply a filename or open \c FILE* and write/metadata/error
- * callbacks; the rest of the callbacks are supplied internally.  For more
- * info see the \link flac_stream_decoder stream decoder \endlink module.
- */
-
-/** \defgroup flac_stream_decoder FLAC/stream_decoder.h: stream decoder interface
- *  \ingroup flac_decoder
- *
- *  \brief
- *  This module contains the functions which implement the stream
- *  decoder.
- *
- * The stream decoder can decode native FLAC, and optionally Ogg FLAC
- * (check FLAC_API_SUPPORTS_OGG_FLAC) streams and files.
- *
- * The basic usage of this decoder is as follows:
- * - The program creates an instance of a decoder using
- *   FLAC__stream_decoder_new().
- * - The program overrides the default settings using
- *   FLAC__stream_decoder_set_*() functions.
- * - The program initializes the instance to validate the settings and
- *   prepare for decoding using
- *   - FLAC__stream_decoder_init_stream() or FLAC__stream_decoder_init_FILE()
- *     or FLAC__stream_decoder_init_file() for native FLAC,
- *   - FLAC__stream_decoder_init_ogg_stream() or FLAC__stream_decoder_init_ogg_FILE()
- *     or FLAC__stream_decoder_init_ogg_file() for Ogg FLAC
- * - The program calls the FLAC__stream_decoder_process_*() functions
- *   to decode data, which subsequently calls the callbacks.
- * - The program finishes the decoding with FLAC__stream_decoder_finish(),
- *   which flushes the input and output and resets the decoder to the
- *   uninitialized state.
- * - The instance may be used again or deleted with
- *   FLAC__stream_decoder_delete().
- *
- * In more detail, the program will create a new instance by calling
- * FLAC__stream_decoder_new(), then call FLAC__stream_decoder_set_*()
- * functions to override the default decoder options, and call
- * one of the FLAC__stream_decoder_init_*() functions.
- *
- * There are three initialization functions for native FLAC, one for
- * setting up the decoder to decode FLAC data from the client via
- * callbacks, and two for decoding directly from a FLAC file.
- *
- * For decoding via callbacks, use FLAC__stream_decoder_init_stream().
- * You must also supply several callbacks for handling I/O.  Some (like
- * seeking) are optional, depending on the capabilities of the input.
- *
- * For decoding directly from a file, use FLAC__stream_decoder_init_FILE()
- * or FLAC__stream_decoder_init_file().  Then you must only supply an open
- * \c FILE* or filename and fewer callbacks; the decoder will handle
- * the other callbacks internally.
- *
- * There are three similarly-named init functions for decoding from Ogg
- * FLAC streams.  Check \c FLAC_API_SUPPORTS_OGG_FLAC to find out if the
- * library has been built with Ogg support.
- *
- * Once the decoder is initialized, your program will call one of several
- * functions to start the decoding process:
- *
- * - FLAC__stream_decoder_process_single() - Tells the decoder to process at
- *   most one metadata block or audio frame and return, calling either the
- *   metadata callback or write callback, respectively, once.  If the decoder
- *   loses sync it will return with only the error callback being called.
- * - FLAC__stream_decoder_process_until_end_of_metadata() - Tells the decoder
- *   to process the stream from the current location and stop upon reaching
- *   the first audio frame.  The client will get one metadata, write, or error
- *   callback per metadata block, audio frame, or sync error, respectively.
- * - FLAC__stream_decoder_process_until_end_of_stream() - Tells the decoder
- *   to process the stream from the current location until the read callback
- *   returns FLAC__STREAM_DECODER_READ_STATUS_END_OF_STREAM or
- *   FLAC__STREAM_DECODER_READ_STATUS_ABORT.  The client will get one metadata,
- *   write, or error callback per metadata block, audio frame, or sync error,
- *   respectively.
- *
- * When the decoder has finished decoding (normally or through an abort),
- * the instance is finished by calling FLAC__stream_decoder_finish(), which
- * ensures the decoder is in the correct state and frees memory.  Then the
- * instance may be deleted with FLAC__stream_decoder_delete() or initialized
- * again to decode another stream.
- *
- * Seeking is exposed through the FLAC__stream_decoder_seek_absolute() method.
- * At any point after the stream decoder has been initialized, the client can
- * call this function to seek to an exact sample within the stream.
- * Subsequently, the first time the write callback is called it will be
- * passed a (possibly partial) block starting at that sample.
- *
- * If the client cannot seek via the callback interface provided, but still
- * has another way of seeking, it can flush the decoder using
- * FLAC__stream_decoder_flush() and start feeding data from the new position
- * through the read callback.
- *
- * The stream decoder also provides MD5 signature checking.  If this is
- * turned on before initialization, FLAC__stream_decoder_finish() will
- * report when the decoded MD5 signature does not match the one stored
- * in the STREAMINFO block.  MD5 checking is automatically turned off
- * (until the next FLAC__stream_decoder_reset()) if there is no signature
- * in the STREAMINFO block or when a seek is attempted.
- *
- * The FLAC__stream_decoder_set_metadata_*() functions deserve special
- * attention.  By default, the decoder only calls the metadata_callback for
- * the STREAMINFO block.  These functions allow you to tell the decoder
- * explicitly which blocks to parse and return via the metadata_callback
- * and/or which to skip.  Use a FLAC__stream_decoder_set_metadata_respond_all(),
- * FLAC__stream_decoder_set_metadata_ignore() ... or FLAC__stream_decoder_set_metadata_ignore_all(),
- * FLAC__stream_decoder_set_metadata_respond() ... sequence to exactly specify
- * which blocks to return.  Remember that metadata blocks can potentially
- * be big (for example, cover art) so filtering out the ones you don't
- * use can reduce the memory requirements of the decoder.  Also note the
- * special forms FLAC__stream_decoder_set_metadata_respond_application(id)
- * and FLAC__stream_decoder_set_metadata_ignore_application(id) for
- * filtering APPLICATION blocks based on the application ID.
- *
- * STREAMINFO and SEEKTABLE blocks are always parsed and used internally, but
- * they still can legally be filtered from the metadata_callback.
- *
- * \note
- * The "set" functions may only be called when the decoder is in the
- * state FLAC__STREAM_DECODER_UNINITIALIZED, i.e. after
- * FLAC__stream_decoder_new() or FLAC__stream_decoder_finish(), but
- * before FLAC__stream_decoder_init_*().  If this is the case they will
- * return \c true, otherwise \c false.
- *
- * \note
- * FLAC__stream_decoder_finish() resets all settings to the constructor
- * defaults, including the callbacks.
- *
- * \{
- */
-
-
-/** State values for a FLAC__StreamDecoder
- *
- * The decoder's state can be obtained by calling FLAC__stream_decoder_get_state().
- */
-typedef enum {
-
-	FLAC__STREAM_DECODER_SEARCH_FOR_METADATA = 0,
-	/**< The decoder is ready to search for metadata. */
-
-	FLAC__STREAM_DECODER_READ_METADATA,
-	/**< The decoder is ready to or is in the process of reading metadata. */
-
-	FLAC__STREAM_DECODER_SEARCH_FOR_FRAME_SYNC,
-	/**< The decoder is ready to or is in the process of searching for the
-	 * frame sync code.
-	 */
-
-	FLAC__STREAM_DECODER_READ_FRAME,
-	/**< The decoder is ready to or is in the process of reading a frame. */
-
-	FLAC__STREAM_DECODER_END_OF_STREAM,
-	/**< The decoder has reached the end of the stream. */
-
-	FLAC__STREAM_DECODER_OGG_ERROR,
-	/**< An error occurred in the underlying Ogg layer.  */
-
-	FLAC__STREAM_DECODER_SEEK_ERROR,
-	/**< An error occurred while seeking.  The decoder must be flushed
-	 * with FLAC__stream_decoder_flush() or reset with
-	 * FLAC__stream_decoder_reset() before decoding can continue.
-	 */
-
-	FLAC__STREAM_DECODER_ABORTED,
-	/**< The decoder was aborted by the read callback. */
-
-	FLAC__STREAM_DECODER_MEMORY_ALLOCATION_ERROR,
-	/**< An error occurred allocating memory.  The decoder is in an invalid
-	 * state and can no longer be used.
-	 */
-
-	FLAC__STREAM_DECODER_UNINITIALIZED
-	/**< The decoder is in the uninitialized state; one of the
-	 * FLAC__stream_decoder_init_*() functions must be called before samples
-	 * can be processed.
-	 */
-
-} FLAC__StreamDecoderState;
-
-/** Maps a FLAC__StreamDecoderState to a C string.
- *
- *  Using a FLAC__StreamDecoderState as the index to this array
- *  will give the string equivalent.  The contents should not be modified.
- */
-extern FLAC_API const char * const FLAC__StreamDecoderStateString[];
-
-
-/** Possible return values for the FLAC__stream_decoder_init_*() functions.
- */
-typedef enum {
-
-	FLAC__STREAM_DECODER_INIT_STATUS_OK = 0,
-	/**< Initialization was successful. */
-
-	FLAC__STREAM_DECODER_INIT_STATUS_UNSUPPORTED_CONTAINER,
-	/**< The library was not compiled with support for the given container
-	 * format.
-	 */
-
-	FLAC__STREAM_DECODER_INIT_STATUS_INVALID_CALLBACKS,
-	/**< A required callback was not supplied. */
-
-	FLAC__STREAM_DECODER_INIT_STATUS_MEMORY_ALLOCATION_ERROR,
-	/**< An error occurred allocating memory. */
-
-	FLAC__STREAM_DECODER_INIT_STATUS_ERROR_OPENING_FILE,
-	/**< fopen() failed in FLAC__stream_decoder_init_file() or
-	 * FLAC__stream_decoder_init_ogg_file(). */
-
-	FLAC__STREAM_DECODER_INIT_STATUS_ALREADY_INITIALIZED
-	/**< FLAC__stream_decoder_init_*() was called when the decoder was
-	 * already initialized, usually because
-	 * FLAC__stream_decoder_finish() was not called.
-	 */
-
-} FLAC__StreamDecoderInitStatus;
-
-/** Maps a FLAC__StreamDecoderInitStatus to a C string.
- *
- *  Using a FLAC__StreamDecoderInitStatus as the index to this array
- *  will give the string equivalent.  The contents should not be modified.
- */
-extern FLAC_API const char * const FLAC__StreamDecoderInitStatusString[];
-
-
-/** Return values for the FLAC__StreamDecoder read callback.
- */
-typedef enum {
-
-	FLAC__STREAM_DECODER_READ_STATUS_CONTINUE,
-	/**< The read was OK and decoding can continue. */
-
-	FLAC__STREAM_DECODER_READ_STATUS_END_OF_STREAM,
-	/**< The read was attempted while at the end of the stream.  Note that
-	 * the client must only return this value when the read callback was
-	 * called when already at the end of the stream.  Otherwise, if the read
-	 * itself moves to the end of the stream, the client should still return
-	 * the data and \c FLAC__STREAM_DECODER_READ_STATUS_CONTINUE, and then on
-	 * the next read callback it should return
-	 * \c FLAC__STREAM_DECODER_READ_STATUS_END_OF_STREAM with a byte count
-	 * of \c 0.
-	 */
-
-	FLAC__STREAM_DECODER_READ_STATUS_ABORT
-	/**< An unrecoverable error occurred.  The decoder will return from the process call. */
-
-} FLAC__StreamDecoderReadStatus;
-
-/** Maps a FLAC__StreamDecoderReadStatus to a C string.
- *
- *  Using a FLAC__StreamDecoderReadStatus as the index to this array
- *  will give the string equivalent.  The contents should not be modified.
- */
-extern FLAC_API const char * const FLAC__StreamDecoderReadStatusString[];
-
-
-/** Return values for the FLAC__StreamDecoder seek callback.
- */
-typedef enum {
-
-	FLAC__STREAM_DECODER_SEEK_STATUS_OK,
-	/**< The seek was OK and decoding can continue. */
-
-	FLAC__STREAM_DECODER_SEEK_STATUS_ERROR,
-	/**< An unrecoverable error occurred.  The decoder will return from the process call. */
-
-	FLAC__STREAM_DECODER_SEEK_STATUS_UNSUPPORTED
-	/**< Client does not support seeking. */
-
-} FLAC__StreamDecoderSeekStatus;
-
-/** Maps a FLAC__StreamDecoderSeekStatus to a C string.
- *
- *  Using a FLAC__StreamDecoderSeekStatus as the index to this array
- *  will give the string equivalent.  The contents should not be modified.
- */
-extern FLAC_API const char * const FLAC__StreamDecoderSeekStatusString[];
-
-
-/** Return values for the FLAC__StreamDecoder tell callback.
- */
-typedef enum {
-
-	FLAC__STREAM_DECODER_TELL_STATUS_OK,
-	/**< The tell was OK and decoding can continue. */
-
-	FLAC__STREAM_DECODER_TELL_STATUS_ERROR,
-	/**< An unrecoverable error occurred.  The decoder will return from the process call. */
-
-	FLAC__STREAM_DECODER_TELL_STATUS_UNSUPPORTED
-	/**< Client does not support telling the position. */
-
-} FLAC__StreamDecoderTellStatus;
-
-/** Maps a FLAC__StreamDecoderTellStatus to a C string.
- *
- *  Using a FLAC__StreamDecoderTellStatus as the index to this array
- *  will give the string equivalent.  The contents should not be modified.
- */
-extern FLAC_API const char * const FLAC__StreamDecoderTellStatusString[];
-
-
-/** Return values for the FLAC__StreamDecoder length callback.
- */
-typedef enum {
-
-	FLAC__STREAM_DECODER_LENGTH_STATUS_OK,
-	/**< The length call was OK and decoding can continue. */
-
-	FLAC__STREAM_DECODER_LENGTH_STATUS_ERROR,
-	/**< An unrecoverable error occurred.  The decoder will return from the process call. */
-
-	FLAC__STREAM_DECODER_LENGTH_STATUS_UNSUPPORTED
-	/**< Client does not support reporting the length. */
-
-} FLAC__StreamDecoderLengthStatus;
-
-/** Maps a FLAC__StreamDecoderLengthStatus to a C string.
- *
- *  Using a FLAC__StreamDecoderLengthStatus as the index to this array
- *  will give the string equivalent.  The contents should not be modified.
- */
-extern FLAC_API const char * const FLAC__StreamDecoderLengthStatusString[];
-
-
-/** Return values for the FLAC__StreamDecoder write callback.
- */
-typedef enum {
-
-	FLAC__STREAM_DECODER_WRITE_STATUS_CONTINUE,
-	/**< The write was OK and decoding can continue. */
-
-	FLAC__STREAM_DECODER_WRITE_STATUS_ABORT
-	/**< An unrecoverable error occurred.  The decoder will return from the process call. */
-
-} FLAC__StreamDecoderWriteStatus;
-
-/** Maps a FLAC__StreamDecoderWriteStatus to a C string.
- *
- *  Using a FLAC__StreamDecoderWriteStatus as the index to this array
- *  will give the string equivalent.  The contents should not be modified.
- */
-extern FLAC_API const char * const FLAC__StreamDecoderWriteStatusString[];
-
-
-/** Possible values passed back to the FLAC__StreamDecoder error callback.
- *  \c FLAC__STREAM_DECODER_ERROR_STATUS_LOST_SYNC is the generic catch-
- *  all.  The rest could be caused by bad sync (false synchronization on
- *  data that is not the start of a frame) or corrupted data.  The error
- *  itself is the decoder's best guess at what happened assuming a correct
- *  sync.  For example \c FLAC__STREAM_DECODER_ERROR_STATUS_BAD_HEADER
- *  could be caused by a correct sync on the start of a frame, but some
- *  data in the frame header was corrupted.  Or it could be the result of
- *  syncing on a point the stream that looked like the starting of a frame
- *  but was not.  \c FLAC__STREAM_DECODER_ERROR_STATUS_UNPARSEABLE_STREAM
- *  could be because the decoder encountered a valid frame made by a future
- *  version of the encoder which it cannot parse, or because of a false
- *  sync making it appear as though an encountered frame was generated by
- *  a future encoder.
- */
-typedef enum {
-
-	FLAC__STREAM_DECODER_ERROR_STATUS_LOST_SYNC,
-	/**< An error in the stream caused the decoder to lose synchronization. */
-
-	FLAC__STREAM_DECODER_ERROR_STATUS_BAD_HEADER,
-	/**< The decoder encountered a corrupted frame header. */
-
-	FLAC__STREAM_DECODER_ERROR_STATUS_FRAME_CRC_MISMATCH,
-	/**< The frame's data did not match the CRC in the footer. */
-
-	FLAC__STREAM_DECODER_ERROR_STATUS_UNPARSEABLE_STREAM
-	/**< The decoder encountered reserved fields in use in the stream. */
-
-} FLAC__StreamDecoderErrorStatus;
-
-/** Maps a FLAC__StreamDecoderErrorStatus to a C string.
- *
- *  Using a FLAC__StreamDecoderErrorStatus as the index to this array
- *  will give the string equivalent.  The contents should not be modified.
- */
-extern FLAC_API const char * const FLAC__StreamDecoderErrorStatusString[];
-
-
-/***********************************************************************
- *
- * class FLAC__StreamDecoder
- *
- ***********************************************************************/
-
-struct FLAC__StreamDecoderProtected;
-struct FLAC__StreamDecoderPrivate;
-/** The opaque structure definition for the stream decoder type.
- *  See the \link flac_stream_decoder stream decoder module \endlink
- *  for a detailed description.
- */
-typedef struct {
-	struct FLAC__StreamDecoderProtected *protected_; /* avoid the C++ keyword 'protected' */
-	struct FLAC__StreamDecoderPrivate *private_; /* avoid the C++ keyword 'private' */
-} FLAC__StreamDecoder;
-
-/** Signature for the read callback.
- *
- *  A function pointer matching this signature must be passed to
- *  FLAC__stream_decoder_init*_stream(). The supplied function will be
- *  called when the decoder needs more input data.  The address of the
- *  buffer to be filled is supplied, along with the number of bytes the
- *  buffer can hold.  The callback may choose to supply less data and
- *  modify the byte count but must be careful not to overflow the buffer.
- *  The callback then returns a status code chosen from
- *  FLAC__StreamDecoderReadStatus.
- *
- * Here is an example of a read callback for stdio streams:
- * \code
- * FLAC__StreamDecoderReadStatus read_cb(const FLAC__StreamDecoder *decoder, FLAC__byte buffer[], size_t *bytes, void *client_data)
- * {
- *   FILE *file = ((MyClientData*)client_data)->file;
- *   if(*bytes > 0) {
- *     *bytes = fread(buffer, sizeof(FLAC__byte), *bytes, file);
- *     if(ferror(file))
- *       return FLAC__STREAM_DECODER_READ_STATUS_ABORT;
- *     else if(*bytes == 0)
- *       return FLAC__STREAM_DECODER_READ_STATUS_END_OF_STREAM;
- *     else
- *       return FLAC__STREAM_DECODER_READ_STATUS_CONTINUE;
- *   }
- *   else
- *     return FLAC__STREAM_DECODER_READ_STATUS_ABORT;
- * }
- * \endcode
- *
- * \note In general, FLAC__StreamDecoder functions which change the
- * state should not be called on the \a decoder while in the callback.
- *
- * \param  decoder  The decoder instance calling the callback.
- * \param  buffer   A pointer to a location for the callee to store
- *                  data to be decoded.
- * \param  bytes    A pointer to the size of the buffer.  On entry
- *                  to the callback, it contains the maximum number
- *                  of bytes that may be stored in \a buffer.  The
- *                  callee must set it to the actual number of bytes
- *                  stored (0 in case of error or end-of-stream) before
- *                  returning.
- * \param  client_data  The callee's client data set through
- *                      FLAC__stream_decoder_init_*().
- * \retval FLAC__StreamDecoderReadStatus
- *    The callee's return status.  Note that the callback should return
- *    \c FLAC__STREAM_DECODER_READ_STATUS_END_OF_STREAM if and only if
- *    zero bytes were read and there is no more data to be read.
- */
-typedef FLAC__StreamDecoderReadStatus (*FLAC__StreamDecoderReadCallback)(const FLAC__StreamDecoder *decoder, FLAC__byte buffer[], size_t *bytes, void *client_data);
-
-/** Signature for the seek callback.
- *
- *  A function pointer matching this signature may be passed to
- *  FLAC__stream_decoder_init*_stream().  The supplied function will be
- *  called when the decoder needs to seek the input stream.  The decoder
- *  will pass the absolute byte offset to seek to, 0 meaning the
- *  beginning of the stream.
- *
- * Here is an example of a seek callback for stdio streams:
- * \code
- * FLAC__StreamDecoderSeekStatus seek_cb(const FLAC__StreamDecoder *decoder, FLAC__uint64 absolute_byte_offset, void *client_data)
- * {
- *   FILE *file = ((MyClientData*)client_data)->file;
- *   if(file == stdin)
- *     return FLAC__STREAM_DECODER_SEEK_STATUS_UNSUPPORTED;
- *   else if(fseeko(file, (off_t)absolute_byte_offset, SEEK_SET) < 0)
- *     return FLAC__STREAM_DECODER_SEEK_STATUS_ERROR;
- *   else
- *     return FLAC__STREAM_DECODER_SEEK_STATUS_OK;
- * }
- * \endcode
- *
- * \note In general, FLAC__StreamDecoder functions which change the
- * state should not be called on the \a decoder while in the callback.
- *
- * \param  decoder  The decoder instance calling the callback.
- * \param  absolute_byte_offset  The offset from the beginning of the stream
- *                               to seek to.
- * \param  client_data  The callee's client data set through
- *                      FLAC__stream_decoder_init_*().
- * \retval FLAC__StreamDecoderSeekStatus
- *    The callee's return status.
- */
-typedef FLAC__StreamDecoderSeekStatus (*FLAC__StreamDecoderSeekCallback)(const FLAC__StreamDecoder *decoder, FLAC__uint64 absolute_byte_offset, void *client_data);
-
-/** Signature for the tell callback.
- *
- *  A function pointer matching this signature may be passed to
- *  FLAC__stream_decoder_init*_stream().  The supplied function will be
- *  called when the decoder wants to know the current position of the
- *  stream.  The callback should return the byte offset from the
- *  beginning of the stream.
- *
- * Here is an example of a tell callback for stdio streams:
- * \code
- * FLAC__StreamDecoderTellStatus tell_cb(const FLAC__StreamDecoder *decoder, FLAC__uint64 *absolute_byte_offset, void *client_data)
- * {
- *   FILE *file = ((MyClientData*)client_data)->file;
- *   off_t pos;
- *   if(file == stdin)
- *     return FLAC__STREAM_DECODER_TELL_STATUS_UNSUPPORTED;
- *   else if((pos = ftello(file)) < 0)
- *     return FLAC__STREAM_DECODER_TELL_STATUS_ERROR;
- *   else {
- *     *absolute_byte_offset = (FLAC__uint64)pos;
- *     return FLAC__STREAM_DECODER_TELL_STATUS_OK;
- *   }
- * }
- * \endcode
- *
- * \note In general, FLAC__StreamDecoder functions which change the
- * state should not be called on the \a decoder while in the callback.
- *
- * \param  decoder  The decoder instance calling the callback.
- * \param  absolute_byte_offset  A pointer to storage for the current offset
- *                               from the beginning of the stream.
- * \param  client_data  The callee's client data set through
- *                      FLAC__stream_decoder_init_*().
- * \retval FLAC__StreamDecoderTellStatus
- *    The callee's return status.
- */
-typedef FLAC__StreamDecoderTellStatus (*FLAC__StreamDecoderTellCallback)(const FLAC__StreamDecoder *decoder, FLAC__uint64 *absolute_byte_offset, void *client_data);
-
-/** Signature for the length callback.
- *
- *  A function pointer matching this signature may be passed to
- *  FLAC__stream_decoder_init*_stream().  The supplied function will be
- *  called when the decoder wants to know the total length of the stream
- *  in bytes.
- *
- * Here is an example of a length callback for stdio streams:
- * \code
- * FLAC__StreamDecoderLengthStatus length_cb(const FLAC__StreamDecoder *decoder, FLAC__uint64 *stream_length, void *client_data)
- * {
- *   FILE *file = ((MyClientData*)client_data)->file;
- *   struct stat filestats;
- *
- *   if(file == stdin)
- *     return FLAC__STREAM_DECODER_LENGTH_STATUS_UNSUPPORTED;
- *   else if(fstat(fileno(file), &filestats) != 0)
- *     return FLAC__STREAM_DECODER_LENGTH_STATUS_ERROR;
- *   else {
- *     *stream_length = (FLAC__uint64)filestats.st_size;
- *     return FLAC__STREAM_DECODER_LENGTH_STATUS_OK;
- *   }
- * }
- * \endcode
- *
- * \note In general, FLAC__StreamDecoder functions which change the
- * state should not be called on the \a decoder while in the callback.
- *
- * \param  decoder  The decoder instance calling the callback.
- * \param  stream_length  A pointer to storage for the length of the stream
- *                        in bytes.
- * \param  client_data  The callee's client data set through
- *                      FLAC__stream_decoder_init_*().
- * \retval FLAC__StreamDecoderLengthStatus
- *    The callee's return status.
- */
-typedef FLAC__StreamDecoderLengthStatus (*FLAC__StreamDecoderLengthCallback)(const FLAC__StreamDecoder *decoder, FLAC__uint64 *stream_length, void *client_data);
-
-/** Signature for the EOF callback.
- *
- *  A function pointer matching this signature may be passed to
- *  FLAC__stream_decoder_init*_stream().  The supplied function will be
- *  called when the decoder needs to know if the end of the stream has
- *  been reached.
- *
- * Here is an example of a EOF callback for stdio streams:
- * FLAC__bool eof_cb(const FLAC__StreamDecoder *decoder, void *client_data)
- * \code
- * {
- *   FILE *file = ((MyClientData*)client_data)->file;
- *   return feof(file)? true : false;
- * }
- * \endcode
- *
- * \note In general, FLAC__StreamDecoder functions which change the
- * state should not be called on the \a decoder while in the callback.
- *
- * \param  decoder  The decoder instance calling the callback.
- * \param  client_data  The callee's client data set through
- *                      FLAC__stream_decoder_init_*().
- * \retval FLAC__bool
- *    \c true if the currently at the end of the stream, else \c false.
- */
-typedef FLAC__bool (*FLAC__StreamDecoderEofCallback)(const FLAC__StreamDecoder *decoder, void *client_data);
-
-/** Signature for the write callback.
- *
- *  A function pointer matching this signature must be passed to one of
- *  the FLAC__stream_decoder_init_*() functions.
- *  The supplied function will be called when the decoder has decoded a
- *  single audio frame.  The decoder will pass the frame metadata as well
- *  as an array of pointers (one for each channel) pointing to the
- *  decoded audio.
- *
- * \note In general, FLAC__StreamDecoder functions which change the
- * state should not be called on the \a decoder while in the callback.
- *
- * \param  decoder  The decoder instance calling the callback.
- * \param  frame    The description of the decoded frame.  See
- *                  FLAC__Frame.
- * \param  buffer   An array of pointers to decoded channels of data.
- *                  Each pointer will point to an array of signed
- *                  samples of length \a frame->header.blocksize.
- *                  Channels will be ordered according to the FLAC
- *                  specification; see the documentation for the
- *                  <A HREF="../format.html#frame_header">frame header</A>.
- * \param  client_data  The callee's client data set through
- *                      FLAC__stream_decoder_init_*().
- * \retval FLAC__StreamDecoderWriteStatus
- *    The callee's return status.
- */
-typedef FLAC__StreamDecoderWriteStatus (*FLAC__StreamDecoderWriteCallback)(const FLAC__StreamDecoder *decoder, const FLAC__Frame *frame, const FLAC__int32 * const buffer[], void *client_data);
-
-/** Signature for the metadata callback.
- *
- *  A function pointer matching this signature must be passed to one of
- *  the FLAC__stream_decoder_init_*() functions.
- *  The supplied function will be called when the decoder has decoded a
- *  metadata block.  In a valid FLAC file there will always be one
- *  \c STREAMINFO block, followed by zero or more other metadata blocks.
- *  These will be supplied by the decoder in the same order as they
- *  appear in the stream and always before the first audio frame (i.e.
- *  write callback).  The metadata block that is passed in must not be
- *  modified, and it doesn't live beyond the callback, so you should make
- *  a copy of it with FLAC__metadata_object_clone() if you will need it
- *  elsewhere.  Since metadata blocks can potentially be large, by
- *  default the decoder only calls the metadata callback for the
- *  \c STREAMINFO block; you can instruct the decoder to pass or filter
- *  other blocks with FLAC__stream_decoder_set_metadata_*() calls.
- *
- * \note In general, FLAC__StreamDecoder functions which change the
- * state should not be called on the \a decoder while in the callback.
- *
- * \param  decoder  The decoder instance calling the callback.
- * \param  metadata The decoded metadata block.
- * \param  client_data  The callee's client data set through
- *                      FLAC__stream_decoder_init_*().
- */
-typedef void (*FLAC__StreamDecoderMetadataCallback)(const FLAC__StreamDecoder *decoder, const FLAC__StreamMetadata *metadata, void *client_data);
-
-/** Signature for the error callback.
- *
- *  A function pointer matching this signature must be passed to one of
- *  the FLAC__stream_decoder_init_*() functions.
- *  The supplied function will be called whenever an error occurs during
- *  decoding.
- *
- * \note In general, FLAC__StreamDecoder functions which change the
- * state should not be called on the \a decoder while in the callback.
- *
- * \param  decoder  The decoder instance calling the callback.
- * \param  status   The error encountered by the decoder.
- * \param  client_data  The callee's client data set through
- *                      FLAC__stream_decoder_init_*().
- */
-typedef void (*FLAC__StreamDecoderErrorCallback)(const FLAC__StreamDecoder *decoder, FLAC__StreamDecoderErrorStatus status, void *client_data);
-
-
-/***********************************************************************
- *
- * Class constructor/destructor
- *
- ***********************************************************************/
-
-/** Create a new stream decoder instance.  The instance is created with
- *  default settings; see the individual FLAC__stream_decoder_set_*()
- *  functions for each setting's default.
- *
- * \retval FLAC__StreamDecoder*
- *    \c NULL if there was an error allocating memory, else the new instance.
- */
-FLAC_API FLAC__StreamDecoder *FLAC__stream_decoder_new(void);
-
-/** Free a decoder instance.  Deletes the object pointed to by \a decoder.
- *
- * \param decoder  A pointer to an existing decoder.
- * \assert
- *    \code decoder != NULL \endcode
- */
-FLAC_API void FLAC__stream_decoder_delete(FLAC__StreamDecoder *decoder);
-
-
-/***********************************************************************
- *
- * Public class method prototypes
- *
- ***********************************************************************/
-
-/** Set the serial number for the FLAC stream within the Ogg container.
- *  The default behavior is to use the serial number of the first Ogg
- *  page.  Setting a serial number here will explicitly specify which
- *  stream is to be decoded.
- *
- * \note
- * This does not need to be set for native FLAC decoding.
- *
- * \default \c use serial number of first page
- * \param  decoder        A decoder instance to set.
- * \param  serial_number  See above.
- * \assert
- *    \code decoder != NULL \endcode
- * \retval FLAC__bool
- *    \c false if the decoder is already initialized, else \c true.
- */
-FLAC_API FLAC__bool FLAC__stream_decoder_set_ogg_serial_number(FLAC__StreamDecoder *decoder, long serial_number);
-
-/** Set the "MD5 signature checking" flag.  If \c true, the decoder will
- *  compute the MD5 signature of the unencoded audio data while decoding
- *  and compare it to the signature from the STREAMINFO block, if it
- *  exists, during FLAC__stream_decoder_finish().
- *
- *  MD5 signature checking will be turned off (until the next
- *  FLAC__stream_decoder_reset()) if there is no signature in the
- *  STREAMINFO block or when a seek is attempted.
- *
- *  Clients that do not use the MD5 check should leave this off to speed
- *  up decoding.
- *
- * \default \c false
- * \param  decoder  A decoder instance to set.
- * \param  value    Flag value (see above).
- * \assert
- *    \code decoder != NULL \endcode
- * \retval FLAC__bool
- *    \c false if the decoder is already initialized, else \c true.
- */
-FLAC_API FLAC__bool FLAC__stream_decoder_set_md5_checking(FLAC__StreamDecoder *decoder, FLAC__bool value);
-
-/** Direct the decoder to pass on all metadata blocks of type \a type.
- *
- * \default By default, only the \c STREAMINFO block is returned via the
- *          metadata callback.
- * \param  decoder  A decoder instance to set.
- * \param  type     See above.
- * \assert
- *    \code decoder != NULL \endcode
- *    \a type is valid
- * \retval FLAC__bool
- *    \c false if the decoder is already initialized, else \c true.
- */
-FLAC_API FLAC__bool FLAC__stream_decoder_set_metadata_respond(FLAC__StreamDecoder *decoder, FLAC__MetadataType type);
-
-/** Direct the decoder to pass on all APPLICATION metadata blocks of the
- *  given \a id.
- *
- * \default By default, only the \c STREAMINFO block is returned via the
- *          metadata callback.
- * \param  decoder  A decoder instance to set.
- * \param  id       See above.
- * \assert
- *    \code decoder != NULL \endcode
- *    \code id != NULL \endcode
- * \retval FLAC__bool
- *    \c false if the decoder is already initialized, else \c true.
- */
-FLAC_API FLAC__bool FLAC__stream_decoder_set_metadata_respond_application(FLAC__StreamDecoder *decoder, const FLAC__byte id[4]);
-
-/** Direct the decoder to pass on all metadata blocks of any type.
- *
- * \default By default, only the \c STREAMINFO block is returned via the
- *          metadata callback.
- * \param  decoder  A decoder instance to set.
- * \assert
- *    \code decoder != NULL \endcode
- * \retval FLAC__bool
- *    \c false if the decoder is already initialized, else \c true.
- */
-FLAC_API FLAC__bool FLAC__stream_decoder_set_metadata_respond_all(FLAC__StreamDecoder *decoder);
-
-/** Direct the decoder to filter out all metadata blocks of type \a type.
- *
- * \default By default, only the \c STREAMINFO block is returned via the
- *          metadata callback.
- * \param  decoder  A decoder instance to set.
- * \param  type     See above.
- * \assert
- *    \code decoder != NULL \endcode
- *    \a type is valid
- * \retval FLAC__bool
- *    \c false if the decoder is already initialized, else \c true.
- */
-FLAC_API FLAC__bool FLAC__stream_decoder_set_metadata_ignore(FLAC__StreamDecoder *decoder, FLAC__MetadataType type);
-
-/** Direct the decoder to filter out all APPLICATION metadata blocks of
- *  the given \a id.
- *
- * \default By default, only the \c STREAMINFO block is returned via the
- *          metadata callback.
- * \param  decoder  A decoder instance to set.
- * \param  id       See above.
- * \assert
- *    \code decoder != NULL \endcode
- *    \code id != NULL \endcode
- * \retval FLAC__bool
- *    \c false if the decoder is already initialized, else \c true.
- */
-FLAC_API FLAC__bool FLAC__stream_decoder_set_metadata_ignore_application(FLAC__StreamDecoder *decoder, const FLAC__byte id[4]);
-
-/** Direct the decoder to filter out all metadata blocks of any type.
- *
- * \default By default, only the \c STREAMINFO block is returned via the
- *          metadata callback.
- * \param  decoder  A decoder instance to set.
- * \assert
- *    \code decoder != NULL \endcode
- * \retval FLAC__bool
- *    \c false if the decoder is already initialized, else \c true.
- */
-FLAC_API FLAC__bool FLAC__stream_decoder_set_metadata_ignore_all(FLAC__StreamDecoder *decoder);
-
-/** Get the current decoder state.
- *
- * \param  decoder  A decoder instance to query.
- * \assert
- *    \code decoder != NULL \endcode
- * \retval FLAC__StreamDecoderState
- *    The current decoder state.
- */
-FLAC_API FLAC__StreamDecoderState FLAC__stream_decoder_get_state(const FLAC__StreamDecoder *decoder);
-
-/** Get the current decoder state as a C string.
- *
- * \param  decoder  A decoder instance to query.
- * \assert
- *    \code decoder != NULL \endcode
- * \retval const char *
- *    The decoder state as a C string.  Do not modify the contents.
- */
-FLAC_API const char *FLAC__stream_decoder_get_resolved_state_string(const FLAC__StreamDecoder *decoder);
-
-/** Get the "MD5 signature checking" flag.
- *  This is the value of the setting, not whether or not the decoder is
- *  currently checking the MD5 (remember, it can be turned off automatically
- *  by a seek).  When the decoder is reset the flag will be restored to the
- *  value returned by this function.
- *
- * \param  decoder  A decoder instance to query.
- * \assert
- *    \code decoder != NULL \endcode
- * \retval FLAC__bool
- *    See above.
- */
-FLAC_API FLAC__bool FLAC__stream_decoder_get_md5_checking(const FLAC__StreamDecoder *decoder);
-
-/** Get the total number of samples in the stream being decoded.
- *  Will only be valid after decoding has started and will contain the
- *  value from the \c STREAMINFO block.  A value of \c 0 means "unknown".
- *
- * \param  decoder  A decoder instance to query.
- * \assert
- *    \code decoder != NULL \endcode
- * \retval unsigned
- *    See above.
- */
-FLAC_API FLAC__uint64 FLAC__stream_decoder_get_total_samples(const FLAC__StreamDecoder *decoder);
-
-/** Get the current number of channels in the stream being decoded.
- *  Will only be valid after decoding has started and will contain the
- *  value from the most recently decoded frame header.
- *
- * \param  decoder  A decoder instance to query.
- * \assert
- *    \code decoder != NULL \endcode
- * \retval unsigned
- *    See above.
- */
-FLAC_API unsigned FLAC__stream_decoder_get_channels(const FLAC__StreamDecoder *decoder);
-
-/** Get the current channel assignment in the stream being decoded.
- *  Will only be valid after decoding has started and will contain the
- *  value from the most recently decoded frame header.
- *
- * \param  decoder  A decoder instance to query.
- * \assert
- *    \code decoder != NULL \endcode
- * \retval FLAC__ChannelAssignment
- *    See above.
- */
-FLAC_API FLAC__ChannelAssignment FLAC__stream_decoder_get_channel_assignment(const FLAC__StreamDecoder *decoder);
-
-/** Get the current sample resolution in the stream being decoded.
- *  Will only be valid after decoding has started and will contain the
- *  value from the most recently decoded frame header.
- *
- * \param  decoder  A decoder instance to query.
- * \assert
- *    \code decoder != NULL \endcode
- * \retval unsigned
- *    See above.
- */
-FLAC_API unsigned FLAC__stream_decoder_get_bits_per_sample(const FLAC__StreamDecoder *decoder);
-
-/** Get the current sample rate in Hz of the stream being decoded.
- *  Will only be valid after decoding has started and will contain the
- *  value from the most recently decoded frame header.
- *
- * \param  decoder  A decoder instance to query.
- * \assert
- *    \code decoder != NULL \endcode
- * \retval unsigned
- *    See above.
- */
-FLAC_API unsigned FLAC__stream_decoder_get_sample_rate(const FLAC__StreamDecoder *decoder);
-
-/** Get the current blocksize of the stream being decoded.
- *  Will only be valid after decoding has started and will contain the
- *  value from the most recently decoded frame header.
- *
- * \param  decoder  A decoder instance to query.
- * \assert
- *    \code decoder != NULL \endcode
- * \retval unsigned
- *    See above.
- */
-FLAC_API unsigned FLAC__stream_decoder_get_blocksize(const FLAC__StreamDecoder *decoder);
-
-/** Returns the decoder's current read position within the stream.
- *  The position is the byte offset from the start of the stream.
- *  Bytes before this position have been fully decoded.  Note that
- *  there may still be undecoded bytes in the decoder's read FIFO.
- *  The returned position is correct even after a seek.
- *
- *  \warning This function currently only works for native FLAC,
- *           not Ogg FLAC streams.
- *
- * \param  decoder   A decoder instance to query.
- * \param  position  Address at which to return the desired position.
- * \assert
- *    \code decoder != NULL \endcode
- *    \code position != NULL \endcode
- * \retval FLAC__bool
- *    \c true if successful, \c false if the stream is not native FLAC,
- *    or there was an error from the 'tell' callback or it returned
- *    \c FLAC__STREAM_DECODER_TELL_STATUS_UNSUPPORTED.
- */
-FLAC_API FLAC__bool FLAC__stream_decoder_get_decode_position(const FLAC__StreamDecoder *decoder, FLAC__uint64 *position);
-
-/** Initialize the decoder instance to decode native FLAC streams.
- *
- *  This flavor of initialization sets up the decoder to decode from a
- *  native FLAC stream. I/O is performed via callbacks to the client.
- *  For decoding from a plain file via filename or open FILE*,
- *  FLAC__stream_decoder_init_file() and FLAC__stream_decoder_init_FILE()
- *  provide a simpler interface.
- *
- *  This function should be called after FLAC__stream_decoder_new() and
- *  FLAC__stream_decoder_set_*() but before any of the
- *  FLAC__stream_decoder_process_*() functions.  Will set and return the
- *  decoder state, which will be FLAC__STREAM_DECODER_SEARCH_FOR_METADATA
- *  if initialization succeeded.
- *
- * \param  decoder            An uninitialized decoder instance.
- * \param  read_callback      See FLAC__StreamDecoderReadCallback.  This
- *                            pointer must not be \c NULL.
- * \param  seek_callback      See FLAC__StreamDecoderSeekCallback.  This
- *                            pointer may be \c NULL if seeking is not
- *                            supported.  If \a seek_callback is not \c NULL then a
- *                            \a tell_callback, \a length_callback, and \a eof_callback must also be supplied.
- *                            Alternatively, a dummy seek callback that just
- *                            returns \c FLAC__STREAM_DECODER_SEEK_STATUS_UNSUPPORTED
- *                            may also be supplied, all though this is slightly
- *                            less efficient for the decoder.
- * \param  tell_callback      See FLAC__StreamDecoderTellCallback.  This
- *                            pointer may be \c NULL if not supported by the client.  If
- *                            \a seek_callback is not \c NULL then a
- *                            \a tell_callback must also be supplied.
- *                            Alternatively, a dummy tell callback that just
- *                            returns \c FLAC__STREAM_DECODER_TELL_STATUS_UNSUPPORTED
- *                            may also be supplied, all though this is slightly
- *                            less efficient for the decoder.
- * \param  length_callback    See FLAC__StreamDecoderLengthCallback.  This
- *                            pointer may be \c NULL if not supported by the client.  If
- *                            \a seek_callback is not \c NULL then a
- *                            \a length_callback must also be supplied.
- *                            Alternatively, a dummy length callback that just
- *                            returns \c FLAC__STREAM_DECODER_LENGTH_STATUS_UNSUPPORTED
- *                            may also be supplied, all though this is slightly
- *                            less efficient for the decoder.
- * \param  eof_callback       See FLAC__StreamDecoderEofCallback.  This
- *                            pointer may be \c NULL if not supported by the client.  If
- *                            \a seek_callback is not \c NULL then a
- *                            \a eof_callback must also be supplied.
- *                            Alternatively, a dummy length callback that just
- *                            returns \c false
- *                            may also be supplied, all though this is slightly
- *                            less efficient for the decoder.
- * \param  write_callback     See FLAC__StreamDecoderWriteCallback.  This
- *                            pointer must not be \c NULL.
- * \param  metadata_callback  See FLAC__StreamDecoderMetadataCallback.  This
- *                            pointer may be \c NULL if the callback is not
- *                            desired.
- * \param  error_callback     See FLAC__StreamDecoderErrorCallback.  This
- *                            pointer must not be \c NULL.
- * \param  client_data        This value will be supplied to callbacks in their
- *                            \a client_data argument.
- * \assert
- *    \code decoder != NULL \endcode
- * \retval FLAC__StreamDecoderInitStatus
- *    \c FLAC__STREAM_DECODER_INIT_STATUS_OK if initialization was successful;
- *    see FLAC__StreamDecoderInitStatus for the meanings of other return values.
- */
-FLAC_API FLAC__StreamDecoderInitStatus FLAC__stream_decoder_init_stream(
-	FLAC__StreamDecoder *decoder,
-	FLAC__StreamDecoderReadCallback read_callback,
-	FLAC__StreamDecoderSeekCallback seek_callback,
-	FLAC__StreamDecoderTellCallback tell_callback,
-	FLAC__StreamDecoderLengthCallback length_callback,
-	FLAC__StreamDecoderEofCallback eof_callback,
-	FLAC__StreamDecoderWriteCallback write_callback,
-	FLAC__StreamDecoderMetadataCallback metadata_callback,
-	FLAC__StreamDecoderErrorCallback error_callback,
-	void *client_data
-);
-
-/** Initialize the decoder instance to decode Ogg FLAC streams.
- *
- *  This flavor of initialization sets up the decoder to decode from a
- *  FLAC stream in an Ogg container. I/O is performed via callbacks to the
- *  client.  For decoding from a plain file via filename or open FILE*,
- *  FLAC__stream_decoder_init_ogg_file() and FLAC__stream_decoder_init_ogg_FILE()
- *  provide a simpler interface.
- *
- *  This function should be called after FLAC__stream_decoder_new() and
- *  FLAC__stream_decoder_set_*() but before any of the
- *  FLAC__stream_decoder_process_*() functions.  Will set and return the
- *  decoder state, which will be FLAC__STREAM_DECODER_SEARCH_FOR_METADATA
- *  if initialization succeeded.
- *
- *  \note Support for Ogg FLAC in the library is optional.  If this
- *  library has been built without support for Ogg FLAC, this function
- *  will return \c FLAC__STREAM_DECODER_INIT_STATUS_UNSUPPORTED_CONTAINER.
- *
- * \param  decoder            An uninitialized decoder instance.
- * \param  read_callback      See FLAC__StreamDecoderReadCallback.  This
- *                            pointer must not be \c NULL.
- * \param  seek_callback      See FLAC__StreamDecoderSeekCallback.  This
- *                            pointer may be \c NULL if seeking is not
- *                            supported.  If \a seek_callback is not \c NULL then a
- *                            \a tell_callback, \a length_callback, and \a eof_callback must also be supplied.
- *                            Alternatively, a dummy seek callback that just
- *                            returns \c FLAC__STREAM_DECODER_SEEK_STATUS_UNSUPPORTED
- *                            may also be supplied, all though this is slightly
- *                            less efficient for the decoder.
- * \param  tell_callback      See FLAC__StreamDecoderTellCallback.  This
- *                            pointer may be \c NULL if not supported by the client.  If
- *                            \a seek_callback is not \c NULL then a
- *                            \a tell_callback must also be supplied.
- *                            Alternatively, a dummy tell callback that just
- *                            returns \c FLAC__STREAM_DECODER_TELL_STATUS_UNSUPPORTED
- *                            may also be supplied, all though this is slightly
- *                            less efficient for the decoder.
- * \param  length_callback    See FLAC__StreamDecoderLengthCallback.  This
- *                            pointer may be \c NULL if not supported by the client.  If
- *                            \a seek_callback is not \c NULL then a
- *                            \a length_callback must also be supplied.
- *                            Alternatively, a dummy length callback that just
- *                            returns \c FLAC__STREAM_DECODER_LENGTH_STATUS_UNSUPPORTED
- *                            may also be supplied, all though this is slightly
- *                            less efficient for the decoder.
- * \param  eof_callback       See FLAC__StreamDecoderEofCallback.  This
- *                            pointer may be \c NULL if not supported by the client.  If
- *                            \a seek_callback is not \c NULL then a
- *                            \a eof_callback must also be supplied.
- *                            Alternatively, a dummy length callback that just
- *                            returns \c false
- *                            may also be supplied, all though this is slightly
- *                            less efficient for the decoder.
- * \param  write_callback     See FLAC__StreamDecoderWriteCallback.  This
- *                            pointer must not be \c NULL.
- * \param  metadata_callback  See FLAC__StreamDecoderMetadataCallback.  This
- *                            pointer may be \c NULL if the callback is not
- *                            desired.
- * \param  error_callback     See FLAC__StreamDecoderErrorCallback.  This
- *                            pointer must not be \c NULL.
- * \param  client_data        This value will be supplied to callbacks in their
- *                            \a client_data argument.
- * \assert
- *    \code decoder != NULL \endcode
- * \retval FLAC__StreamDecoderInitStatus
- *    \c FLAC__STREAM_DECODER_INIT_STATUS_OK if initialization was successful;
- *    see FLAC__StreamDecoderInitStatus for the meanings of other return values.
- */
-FLAC_API FLAC__StreamDecoderInitStatus FLAC__stream_decoder_init_ogg_stream(
-	FLAC__StreamDecoder *decoder,
-	FLAC__StreamDecoderReadCallback read_callback,
-	FLAC__StreamDecoderSeekCallback seek_callback,
-	FLAC__StreamDecoderTellCallback tell_callback,
-	FLAC__StreamDecoderLengthCallback length_callback,
-	FLAC__StreamDecoderEofCallback eof_callback,
-	FLAC__StreamDecoderWriteCallback write_callback,
-	FLAC__StreamDecoderMetadataCallback metadata_callback,
-	FLAC__StreamDecoderErrorCallback error_callback,
-	void *client_data
-);
-
-/** Initialize the decoder instance to decode native FLAC files.
- *
- *  This flavor of initialization sets up the decoder to decode from a
- *  plain native FLAC file.  For non-stdio streams, you must use
- *  FLAC__stream_decoder_init_stream() and provide callbacks for the I/O.
- *
- *  This function should be called after FLAC__stream_decoder_new() and
- *  FLAC__stream_decoder_set_*() but before any of the
- *  FLAC__stream_decoder_process_*() functions.  Will set and return the
- *  decoder state, which will be FLAC__STREAM_DECODER_SEARCH_FOR_METADATA
- *  if initialization succeeded.
- *
- * \param  decoder            An uninitialized decoder instance.
- * \param  file               An open FLAC file.  The file should have been
- *                            opened with mode \c "rb" and rewound.  The file
- *                            becomes owned by the decoder and should not be
- *                            manipulated by the client while decoding.
- *                            Unless \a file is \c stdin, it will be closed
- *                            when FLAC__stream_decoder_finish() is called.
- *                            Note however that seeking will not work when
- *                            decoding from \c stdout since it is not seekable.
- * \param  write_callback     See FLAC__StreamDecoderWriteCallback.  This
- *                            pointer must not be \c NULL.
- * \param  metadata_callback  See FLAC__StreamDecoderMetadataCallback.  This
- *                            pointer may be \c NULL if the callback is not
- *                            desired.
- * \param  error_callback     See FLAC__StreamDecoderErrorCallback.  This
- *                            pointer must not be \c NULL.
- * \param  client_data        This value will be supplied to callbacks in their
- *                            \a client_data argument.
- * \assert
- *    \code decoder != NULL \endcode
- *    \code file != NULL \endcode
- * \retval FLAC__StreamDecoderInitStatus
- *    \c FLAC__STREAM_DECODER_INIT_STATUS_OK if initialization was successful;
- *    see FLAC__StreamDecoderInitStatus for the meanings of other return values.
- */
-FLAC_API FLAC__StreamDecoderInitStatus FLAC__stream_decoder_init_FILE(
-	FLAC__StreamDecoder *decoder,
-	FILE *file,
-	FLAC__StreamDecoderWriteCallback write_callback,
-	FLAC__StreamDecoderMetadataCallback metadata_callback,
-	FLAC__StreamDecoderErrorCallback error_callback,
-	void *client_data
-);
-
-/** Initialize the decoder instance to decode Ogg FLAC files.
- *
- *  This flavor of initialization sets up the decoder to decode from a
- *  plain Ogg FLAC file.  For non-stdio streams, you must use
- *  FLAC__stream_decoder_init_ogg_stream() and provide callbacks for the I/O.
- *
- *  This function should be called after FLAC__stream_decoder_new() and
- *  FLAC__stream_decoder_set_*() but before any of the
- *  FLAC__stream_decoder_process_*() functions.  Will set and return the
- *  decoder state, which will be FLAC__STREAM_DECODER_SEARCH_FOR_METADATA
- *  if initialization succeeded.
- *
- *  \note Support for Ogg FLAC in the library is optional.  If this
- *  library has been built without support for Ogg FLAC, this function
- *  will return \c FLAC__STREAM_DECODER_INIT_STATUS_UNSUPPORTED_CONTAINER.
- *
- * \param  decoder            An uninitialized decoder instance.
- * \param  file               An open FLAC file.  The file should have been
- *                            opened with mode \c "rb" and rewound.  The file
- *                            becomes owned by the decoder and should not be
- *                            manipulated by the client while decoding.
- *                            Unless \a file is \c stdin, it will be closed
- *                            when FLAC__stream_decoder_finish() is called.
- *                            Note however that seeking will not work when
- *                            decoding from \c stdout since it is not seekable.
- * \param  write_callback     See FLAC__StreamDecoderWriteCallback.  This
- *                            pointer must not be \c NULL.
- * \param  metadata_callback  See FLAC__StreamDecoderMetadataCallback.  This
- *                            pointer may be \c NULL if the callback is not
- *                            desired.
- * \param  error_callback     See FLAC__StreamDecoderErrorCallback.  This
- *                            pointer must not be \c NULL.
- * \param  client_data        This value will be supplied to callbacks in their
- *                            \a client_data argument.
- * \assert
- *    \code decoder != NULL \endcode
- *    \code file != NULL \endcode
- * \retval FLAC__StreamDecoderInitStatus
- *    \c FLAC__STREAM_DECODER_INIT_STATUS_OK if initialization was successful;
- *    see FLAC__StreamDecoderInitStatus for the meanings of other return values.
- */
-FLAC_API FLAC__StreamDecoderInitStatus FLAC__stream_decoder_init_ogg_FILE(
-	FLAC__StreamDecoder *decoder,
-	FILE *file,
-	FLAC__StreamDecoderWriteCallback write_callback,
-	FLAC__StreamDecoderMetadataCallback metadata_callback,
-	FLAC__StreamDecoderErrorCallback error_callback,
-	void *client_data
-);
-
-/** Initialize the decoder instance to decode native FLAC files.
- *
- *  This flavor of initialization sets up the decoder to decode from a plain
- *  native FLAC file.  If POSIX fopen() semantics are not sufficient, (for
- *  example, with Unicode filenames on Windows), you must use
- *  FLAC__stream_decoder_init_FILE(), or FLAC__stream_decoder_init_stream()
- *  and provide callbacks for the I/O.
- *
- *  This function should be called after FLAC__stream_decoder_new() and
- *  FLAC__stream_decoder_set_*() but before any of the
- *  FLAC__stream_decoder_process_*() functions.  Will set and return the
- *  decoder state, which will be FLAC__STREAM_DECODER_SEARCH_FOR_METADATA
- *  if initialization succeeded.
- *
- * \param  decoder            An uninitialized decoder instance.
- * \param  filename           The name of the file to decode from.  The file will
- *                            be opened with fopen().  Use \c NULL to decode from
- *                            \c stdin.  Note that \c stdin is not seekable.
- * \param  write_callback     See FLAC__StreamDecoderWriteCallback.  This
- *                            pointer must not be \c NULL.
- * \param  metadata_callback  See FLAC__StreamDecoderMetadataCallback.  This
- *                            pointer may be \c NULL if the callback is not
- *                            desired.
- * \param  error_callback     See FLAC__StreamDecoderErrorCallback.  This
- *                            pointer must not be \c NULL.
- * \param  client_data        This value will be supplied to callbacks in their
- *                            \a client_data argument.
- * \assert
- *    \code decoder != NULL \endcode
- * \retval FLAC__StreamDecoderInitStatus
- *    \c FLAC__STREAM_DECODER_INIT_STATUS_OK if initialization was successful;
- *    see FLAC__StreamDecoderInitStatus for the meanings of other return values.
- */
-FLAC_API FLAC__StreamDecoderInitStatus FLAC__stream_decoder_init_file(
-	FLAC__StreamDecoder *decoder,
-	const char *filename,
-	FLAC__StreamDecoderWriteCallback write_callback,
-	FLAC__StreamDecoderMetadataCallback metadata_callback,
-	FLAC__StreamDecoderErrorCallback error_callback,
-	void *client_data
-);
-
-/** Initialize the decoder instance to decode Ogg FLAC files.
- *
- *  This flavor of initialization sets up the decoder to decode from a plain
- *  Ogg FLAC file.  If POSIX fopen() semantics are not sufficient, (for
- *  example, with Unicode filenames on Windows), you must use
- *  FLAC__stream_decoder_init_ogg_FILE(), or FLAC__stream_decoder_init_ogg_stream()
- *  and provide callbacks for the I/O.
- *
- *  This function should be called after FLAC__stream_decoder_new() and
- *  FLAC__stream_decoder_set_*() but before any of the
- *  FLAC__stream_decoder_process_*() functions.  Will set and return the
- *  decoder state, which will be FLAC__STREAM_DECODER_SEARCH_FOR_METADATA
- *  if initialization succeeded.
- *
- *  \note Support for Ogg FLAC in the library is optional.  If this
- *  library has been built without support for Ogg FLAC, this function
- *  will return \c FLAC__STREAM_DECODER_INIT_STATUS_UNSUPPORTED_CONTAINER.
- *
- * \param  decoder            An uninitialized decoder instance.
- * \param  filename           The name of the file to decode from.  The file will
- *                            be opened with fopen().  Use \c NULL to decode from
- *                            \c stdin.  Note that \c stdin is not seekable.
- * \param  write_callback     See FLAC__StreamDecoderWriteCallback.  This
- *                            pointer must not be \c NULL.
- * \param  metadata_callback  See FLAC__StreamDecoderMetadataCallback.  This
- *                            pointer may be \c NULL if the callback is not
- *                            desired.
- * \param  error_callback     See FLAC__StreamDecoderErrorCallback.  This
- *                            pointer must not be \c NULL.
- * \param  client_data        This value will be supplied to callbacks in their
- *                            \a client_data argument.
- * \assert
- *    \code decoder != NULL \endcode
- * \retval FLAC__StreamDecoderInitStatus
- *    \c FLAC__STREAM_DECODER_INIT_STATUS_OK if initialization was successful;
- *    see FLAC__StreamDecoderInitStatus for the meanings of other return values.
- */
-FLAC_API FLAC__StreamDecoderInitStatus FLAC__stream_decoder_init_ogg_file(
-	FLAC__StreamDecoder *decoder,
-	const char *filename,
-	FLAC__StreamDecoderWriteCallback write_callback,
-	FLAC__StreamDecoderMetadataCallback metadata_callback,
-	FLAC__StreamDecoderErrorCallback error_callback,
-	void *client_data
-);
-
-/** Finish the decoding process.
- *  Flushes the decoding buffer, releases resources, resets the decoder
- *  settings to their defaults, and returns the decoder state to
- *  FLAC__STREAM_DECODER_UNINITIALIZED.
- *
- *  In the event of a prematurely-terminated decode, it is not strictly
- *  necessary to call this immediately before FLAC__stream_decoder_delete()
- *  but it is good practice to match every FLAC__stream_decoder_init_*()
- *  with a FLAC__stream_decoder_finish().
- *
- * \param  decoder  An uninitialized decoder instance.
- * \assert
- *    \code decoder != NULL \endcode
- * \retval FLAC__bool
- *    \c false if MD5 checking is on AND a STREAMINFO block was available
- *    AND the MD5 signature in the STREAMINFO block was non-zero AND the
- *    signature does not match the one computed by the decoder; else
- *    \c true.
- */
-FLAC_API FLAC__bool FLAC__stream_decoder_finish(FLAC__StreamDecoder *decoder);
-
-/** Flush the stream input.
- *  The decoder's input buffer will be cleared and the state set to
- *  \c FLAC__STREAM_DECODER_SEARCH_FOR_FRAME_SYNC.  This will also turn
- *  off MD5 checking.
- *
- * \param  decoder  A decoder instance.
- * \assert
- *    \code decoder != NULL \endcode
- * \retval FLAC__bool
- *    \c true if successful, else \c false if a memory allocation
- *    error occurs (in which case the state will be set to
- *    \c FLAC__STREAM_DECODER_MEMORY_ALLOCATION_ERROR).
- */
-FLAC_API FLAC__bool FLAC__stream_decoder_flush(FLAC__StreamDecoder *decoder);
-
-/** Reset the decoding process.
- *  The decoder's input buffer will be cleared and the state set to
- *  \c FLAC__STREAM_DECODER_SEARCH_FOR_METADATA.  This is similar to
- *  FLAC__stream_decoder_finish() except that the settings are
- *  preserved; there is no need to call FLAC__stream_decoder_init_*()
- *  before decoding again.  MD5 checking will be restored to its original
- *  setting.
- *
- *  If the decoder is seekable, or was initialized with
- *  FLAC__stream_decoder_init*_FILE() or FLAC__stream_decoder_init*_file(),
- *  the decoder will also attempt to seek to the beginning of the file.
- *  If this rewind fails, this function will return \c false.  It follows
- *  that FLAC__stream_decoder_reset() cannot be used when decoding from
- *  \c stdin.
- *
- *  If the decoder was initialized with FLAC__stream_encoder_init*_stream()
- *  and is not seekable (i.e. no seek callback was provided or the seek
- *  callback returns \c FLAC__STREAM_DECODER_SEEK_STATUS_UNSUPPORTED), it
- *  is the duty of the client to start feeding data from the beginning of
- *  the stream on the next FLAC__stream_decoder_process() or
- *  FLAC__stream_decoder_process_interleaved() call.
- *
- * \param  decoder  A decoder instance.
- * \assert
- *    \code decoder != NULL \endcode
- * \retval FLAC__bool
- *    \c true if successful, else \c false if a memory allocation occurs
- *    (in which case the state will be set to
- *    \c FLAC__STREAM_DECODER_MEMORY_ALLOCATION_ERROR) or a seek error
- *    occurs (the state will be unchanged).
- */
-FLAC_API FLAC__bool FLAC__stream_decoder_reset(FLAC__StreamDecoder *decoder);
-
-/** Decode one metadata block or audio frame.
- *  This version instructs the decoder to decode a either a single metadata
- *  block or a single frame and stop, unless the callbacks return a fatal
- *  error or the read callback returns
- *  \c FLAC__STREAM_DECODER_READ_STATUS_END_OF_STREAM.
- *
- *  As the decoder needs more input it will call the read callback.
- *  Depending on what was decoded, the metadata or write callback will be
- *  called with the decoded metadata block or audio frame.
- *
- *  Unless there is a fatal read error or end of stream, this function
- *  will return once one whole frame is decoded.  In other words, if the
- *  stream is not synchronized or points to a corrupt frame header, the
- *  decoder will continue to try and resync until it gets to a valid
- *  frame, then decode one frame, then return.  If the decoder points to
- *  a frame whose frame CRC in the frame footer does not match the
- *  computed frame CRC, this function will issue a
- *  FLAC__STREAM_DECODER_ERROR_STATUS_FRAME_CRC_MISMATCH error to the
- *  error callback, and return, having decoded one complete, although
- *  corrupt, frame.  (Such corrupted frames are sent as silence of the
- *  correct length to the write callback.)
- *
- * \param  decoder  An initialized decoder instance.
- * \assert
- *    \code decoder != NULL \endcode
- * \retval FLAC__bool
- *    \c false if any fatal read, write, or memory allocation error
- *    occurred (meaning decoding must stop), else \c true; for more
- *    information about the decoder, check the decoder state with
- *    FLAC__stream_decoder_get_state().
- */
-FLAC_API FLAC__bool FLAC__stream_decoder_process_single(FLAC__StreamDecoder *decoder);
-
-/** Decode until the end of the metadata.
- *  This version instructs the decoder to decode from the current position
- *  and continue until all the metadata has been read, or until the
- *  callbacks return a fatal error or the read callback returns
- *  \c FLAC__STREAM_DECODER_READ_STATUS_END_OF_STREAM.
- *
- *  As the decoder needs more input it will call the read callback.
- *  As each metadata block is decoded, the metadata callback will be called
- *  with the decoded metadata.
- *
- * \param  decoder  An initialized decoder instance.
- * \assert
- *    \code decoder != NULL \endcode
- * \retval FLAC__bool
- *    \c false if any fatal read, write, or memory allocation error
- *    occurred (meaning decoding must stop), else \c true; for more
- *    information about the decoder, check the decoder state with
- *    FLAC__stream_decoder_get_state().
- */
-FLAC_API FLAC__bool FLAC__stream_decoder_process_until_end_of_metadata(FLAC__StreamDecoder *decoder);
-
-/** Decode until the end of the stream.
- *  This version instructs the decoder to decode from the current position
- *  and continue until the end of stream (the read callback returns
- *  \c FLAC__STREAM_DECODER_READ_STATUS_END_OF_STREAM), or until the
- *  callbacks return a fatal error.
- *
- *  As the decoder needs more input it will call the read callback.
- *  As each metadata block and frame is decoded, the metadata or write
- *  callback will be called with the decoded metadata or frame.
- *
- * \param  decoder  An initialized decoder instance.
- * \assert
- *    \code decoder != NULL \endcode
- * \retval FLAC__bool
- *    \c false if any fatal read, write, or memory allocation error
- *    occurred (meaning decoding must stop), else \c true; for more
- *    information about the decoder, check the decoder state with
- *    FLAC__stream_decoder_get_state().
- */
-FLAC_API FLAC__bool FLAC__stream_decoder_process_until_end_of_stream(FLAC__StreamDecoder *decoder);
-
-/** Skip one audio frame.
- *  This version instructs the decoder to 'skip' a single frame and stop,
- *  unless the callbacks return a fatal error or the read callback returns
- *  \c FLAC__STREAM_DECODER_READ_STATUS_END_OF_STREAM.
- *
- *  The decoding flow is the same as what occurs when
- *  FLAC__stream_decoder_process_single() is called to process an audio
- *  frame, except that this function does not decode the parsed data into
- *  PCM or call the write callback.  The integrity of the frame is still
- *  checked the same way as in the other process functions.
- *
- *  This function will return once one whole frame is skipped, in the
- *  same way that FLAC__stream_decoder_process_single() will return once
- *  one whole frame is decoded.
- *
- *  This function can be used in more quickly determining FLAC frame
- *  boundaries when decoding of the actual data is not needed, for
- *  example when an application is separating a FLAC stream into frames
- *  for editing or storing in a container.  To do this, the application
- *  can use FLAC__stream_decoder_skip_single_frame() to quickly advance
- *  to the next frame, then use
- *  FLAC__stream_decoder_get_decode_position() to find the new frame
- *  boundary.
- *
- *  This function should only be called when the stream has advanced
- *  past all the metadata, otherwise it will return \c false.
- *
- * \param  decoder  An initialized decoder instance not in a metadata
- *                  state.
- * \assert
- *    \code decoder != NULL \endcode
- * \retval FLAC__bool
- *    \c false if any fatal read, write, or memory allocation error
- *    occurred (meaning decoding must stop), or if the decoder
- *    is in the FLAC__STREAM_DECODER_SEARCH_FOR_METADATA or
- *    FLAC__STREAM_DECODER_READ_METADATA state, else \c true; for more
- *    information about the decoder, check the decoder state with
- *    FLAC__stream_decoder_get_state().
- */
-FLAC_API FLAC__bool FLAC__stream_decoder_skip_single_frame(FLAC__StreamDecoder *decoder);
-
-/** Flush the input and seek to an absolute sample.
- *  Decoding will resume at the given sample.  Note that because of
- *  this, the next write callback may contain a partial block.  The
- *  client must support seeking the input or this function will fail
- *  and return \c false.  Furthermore, if the decoder state is
- *  \c FLAC__STREAM_DECODER_SEEK_ERROR, then the decoder must be flushed
- *  with FLAC__stream_decoder_flush() or reset with
- *  FLAC__stream_decoder_reset() before decoding can continue.
- *
- * \param  decoder  A decoder instance.
- * \param  sample   The target sample number to seek to.
- * \assert
- *    \code decoder != NULL \endcode
- * \retval FLAC__bool
- *    \c true if successful, else \c false.
- */
-FLAC_API FLAC__bool FLAC__stream_decoder_seek_absolute(FLAC__StreamDecoder *decoder, FLAC__uint64 sample);
-
-/* \} */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
--- a/win64-mingw/include/FLAC/stream_encoder.h	Wed Oct 26 13:24:45 2016 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1768 +0,0 @@
-/* libFLAC - Free Lossless Audio Codec library
- * Copyright (C) 2000,2001,2002,2003,2004,2005,2006,2007  Josh Coalson
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * - Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * - Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * - Neither the name of the Xiph.org Foundation nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef FLAC__STREAM_ENCODER_H
-#define FLAC__STREAM_ENCODER_H
-
-#include <stdio.h> /* for FILE */
-#include "export.h"
-#include "format.h"
-#include "stream_decoder.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/** \file include/FLAC/stream_encoder.h
- *
- *  \brief
- *  This module contains the functions which implement the stream
- *  encoder.
- *
- *  See the detailed documentation in the
- *  \link flac_stream_encoder stream encoder \endlink module.
- */
-
-/** \defgroup flac_encoder FLAC/ \*_encoder.h: encoder interfaces
- *  \ingroup flac
- *
- *  \brief
- *  This module describes the encoder layers provided by libFLAC.
- *
- * The stream encoder can be used to encode complete streams either to the
- * client via callbacks, or directly to a file, depending on how it is
- * initialized.  When encoding via callbacks, the client provides a write
- * callback which will be called whenever FLAC data is ready to be written.
- * If the client also supplies a seek callback, the encoder will also
- * automatically handle the writing back of metadata discovered while
- * encoding, like stream info, seek points offsets, etc.  When encoding to
- * a file, the client needs only supply a filename or open \c FILE* and an
- * optional progress callback for periodic notification of progress; the
- * write and seek callbacks are supplied internally.  For more info see the
- * \link flac_stream_encoder stream encoder \endlink module.
- */
-
-/** \defgroup flac_stream_encoder FLAC/stream_encoder.h: stream encoder interface
- *  \ingroup flac_encoder
- *
- *  \brief
- *  This module contains the functions which implement the stream
- *  encoder.
- *
- * The stream encoder can encode to native FLAC, and optionally Ogg FLAC
- * (check FLAC_API_SUPPORTS_OGG_FLAC) streams and files.
- *
- * The basic usage of this encoder is as follows:
- * - The program creates an instance of an encoder using
- *   FLAC__stream_encoder_new().
- * - The program overrides the default settings using
- *   FLAC__stream_encoder_set_*() functions.  At a minimum, the following
- *   functions should be called:
- *   - FLAC__stream_encoder_set_channels()
- *   - FLAC__stream_encoder_set_bits_per_sample()
- *   - FLAC__stream_encoder_set_sample_rate()
- *   - FLAC__stream_encoder_set_ogg_serial_number() (if encoding to Ogg FLAC)
- *   - FLAC__stream_encoder_set_total_samples_estimate() (if known)
- * - If the application wants to control the compression level or set its own
- *   metadata, then the following should also be called:
- *   - FLAC__stream_encoder_set_compression_level()
- *   - FLAC__stream_encoder_set_verify()
- *   - FLAC__stream_encoder_set_metadata()
- * - The rest of the set functions should only be called if the client needs
- *   exact control over how the audio is compressed; thorough understanding
- *   of the FLAC format is necessary to achieve good results.
- * - The program initializes the instance to validate the settings and
- *   prepare for encoding using
- *   - FLAC__stream_encoder_init_stream() or FLAC__stream_encoder_init_FILE()
- *     or FLAC__stream_encoder_init_file() for native FLAC
- *   - FLAC__stream_encoder_init_ogg_stream() or FLAC__stream_encoder_init_ogg_FILE()
- *     or FLAC__stream_encoder_init_ogg_file() for Ogg FLAC
- * - The program calls FLAC__stream_encoder_process() or
- *   FLAC__stream_encoder_process_interleaved() to encode data, which
- *   subsequently calls the callbacks when there is encoder data ready
- *   to be written.
- * - The program finishes the encoding with FLAC__stream_encoder_finish(),
- *   which causes the encoder to encode any data still in its input pipe,
- *   update the metadata with the final encoding statistics if output
- *   seeking is possible, and finally reset the encoder to the
- *   uninitialized state.
- * - The instance may be used again or deleted with
- *   FLAC__stream_encoder_delete().
- *
- * In more detail, the stream encoder functions similarly to the
- * \link flac_stream_decoder stream decoder \endlink, but has fewer
- * callbacks and more options.  Typically the client will create a new
- * instance by calling FLAC__stream_encoder_new(), then set the necessary
- * parameters with FLAC__stream_encoder_set_*(), and initialize it by
- * calling one of the FLAC__stream_encoder_init_*() functions.
- *
- * Unlike the decoders, the stream encoder has many options that can
- * affect the speed and compression ratio.  When setting these parameters
- * you should have some basic knowledge of the format (see the
- * <A HREF="../documentation.html#format">user-level documentation</A>
- * or the <A HREF="../format.html">formal description</A>).  The
- * FLAC__stream_encoder_set_*() functions themselves do not validate the
- * values as many are interdependent.  The FLAC__stream_encoder_init_*()
- * functions will do this, so make sure to pay attention to the state
- * returned by FLAC__stream_encoder_init_*() to make sure that it is
- * FLAC__STREAM_ENCODER_INIT_STATUS_OK.  Any parameters that are not set
- * before FLAC__stream_encoder_init_*() will take on the defaults from
- * the constructor.
- *
- * There are three initialization functions for native FLAC, one for
- * setting up the encoder to encode FLAC data to the client via
- * callbacks, and two for encoding directly to a file.
- *
- * For encoding via callbacks, use FLAC__stream_encoder_init_stream().
- * You must also supply a write callback which will be called anytime
- * there is raw encoded data to write.  If the client can seek the output
- * it is best to also supply seek and tell callbacks, as this allows the
- * encoder to go back after encoding is finished to write back
- * information that was collected while encoding, like seek point offsets,
- * frame sizes, etc.
- *
- * For encoding directly to a file, use FLAC__stream_encoder_init_FILE()
- * or FLAC__stream_encoder_init_file().  Then you must only supply a
- * filename or open \c FILE*; the encoder will handle all the callbacks
- * internally.  You may also supply a progress callback for periodic
- * notification of the encoding progress.
- *
- * There are three similarly-named init functions for encoding to Ogg
- * FLAC streams.  Check \c FLAC_API_SUPPORTS_OGG_FLAC to find out if the
- * library has been built with Ogg support.
- *
- * The call to FLAC__stream_encoder_init_*() currently will also immediately
- * call the write callback several times, once with the \c fLaC signature,
- * and once for each encoded metadata block.  Note that for Ogg FLAC
- * encoding you will usually get at least twice the number of callbacks than
- * with native FLAC, one for the Ogg page header and one for the page body.
- *
- * After initializing the instance, the client may feed audio data to the
- * encoder in one of two ways:
- *
- * - Channel separate, through FLAC__stream_encoder_process() - The client
- *   will pass an array of pointers to buffers, one for each channel, to
- *   the encoder, each of the same length.  The samples need not be
- *   block-aligned, but each channel should have the same number of samples.
- * - Channel interleaved, through
- *   FLAC__stream_encoder_process_interleaved() - The client will pass a single
- *   pointer to data that is channel-interleaved (i.e. channel0_sample0,
- *   channel1_sample0, ... , channelN_sample0, channel0_sample1, ...).
- *   Again, the samples need not be block-aligned but they must be
- *   sample-aligned, i.e. the first value should be channel0_sample0 and
- *   the last value channelN_sampleM.
- *
- * Note that for either process call, each sample in the buffers should be a
- * signed integer, right-justified to the resolution set by
- * FLAC__stream_encoder_set_bits_per_sample().  For example, if the resolution
- * is 16 bits per sample, the samples should all be in the range [-32768,32767].
- *
- * When the client is finished encoding data, it calls
- * FLAC__stream_encoder_finish(), which causes the encoder to encode any
- * data still in its input pipe, and call the metadata callback with the
- * final encoding statistics.  Then the instance may be deleted with
- * FLAC__stream_encoder_delete() or initialized again to encode another
- * stream.
- *
- * For programs that write their own metadata, but that do not know the
- * actual metadata until after encoding, it is advantageous to instruct
- * the encoder to write a PADDING block of the correct size, so that
- * instead of rewriting the whole stream after encoding, the program can
- * just overwrite the PADDING block.  If only the maximum size of the
- * metadata is known, the program can write a slightly larger padding
- * block, then split it after encoding.
- *
- * Make sure you understand how lengths are calculated.  All FLAC metadata
- * blocks have a 4 byte header which contains the type and length.  This
- * length does not include the 4 bytes of the header.  See the format page
- * for the specification of metadata blocks and their lengths.
- *
- * \note
- * If you are writing the FLAC data to a file via callbacks, make sure it
- * is open for update (e.g. mode "w+" for stdio streams).  This is because
- * after the first encoding pass, the encoder will try to seek back to the
- * beginning of the stream, to the STREAMINFO block, to write some data
- * there.  (If using FLAC__stream_encoder_init*_file() or
- * FLAC__stream_encoder_init*_FILE(), the file is managed internally.)
- *
- * \note
- * The "set" functions may only be called when the encoder is in the
- * state FLAC__STREAM_ENCODER_UNINITIALIZED, i.e. after
- * FLAC__stream_encoder_new() or FLAC__stream_encoder_finish(), but
- * before FLAC__stream_encoder_init_*().  If this is the case they will
- * return \c true, otherwise \c false.
- *
- * \note
- * FLAC__stream_encoder_finish() resets all settings to the constructor
- * defaults.
- *
- * \{
- */
-
-
-/** State values for a FLAC__StreamEncoder.
- *
- * The encoder's state can be obtained by calling FLAC__stream_encoder_get_state().
- *
- * If the encoder gets into any other state besides \c FLAC__STREAM_ENCODER_OK
- * or \c FLAC__STREAM_ENCODER_UNINITIALIZED, it becomes invalid for encoding and
- * must be deleted with FLAC__stream_encoder_delete().
- */
-typedef enum {
-
-	FLAC__STREAM_ENCODER_OK = 0,
-	/**< The encoder is in the normal OK state and samples can be processed. */
-
-	FLAC__STREAM_ENCODER_UNINITIALIZED,
-	/**< The encoder is in the uninitialized state; one of the
-	 * FLAC__stream_encoder_init_*() functions must be called before samples
-	 * can be processed.
-	 */
-
-	FLAC__STREAM_ENCODER_OGG_ERROR,
-	/**< An error occurred in the underlying Ogg layer.  */
-
-	FLAC__STREAM_ENCODER_VERIFY_DECODER_ERROR,
-	/**< An error occurred in the underlying verify stream decoder;
-	 * check FLAC__stream_encoder_get_verify_decoder_state().
-	 */
-
-	FLAC__STREAM_ENCODER_VERIFY_MISMATCH_IN_AUDIO_DATA,
-	/**< The verify decoder detected a mismatch between the original
-	 * audio signal and the decoded audio signal.
-	 */
-
-	FLAC__STREAM_ENCODER_CLIENT_ERROR,
-	/**< One of the callbacks returned a fatal error. */
-
-	FLAC__STREAM_ENCODER_IO_ERROR,
-	/**< An I/O error occurred while opening/reading/writing a file.
-	 * Check \c errno.
-	 */
-
-	FLAC__STREAM_ENCODER_FRAMING_ERROR,
-	/**< An error occurred while writing the stream; usually, the
-	 * write_callback returned an error.
-	 */
-
-	FLAC__STREAM_ENCODER_MEMORY_ALLOCATION_ERROR
-	/**< Memory allocation failed. */
-
-} FLAC__StreamEncoderState;
-
-/** Maps a FLAC__StreamEncoderState to a C string.
- *
- *  Using a FLAC__StreamEncoderState as the index to this array
- *  will give the string equivalent.  The contents should not be modified.
- */
-extern FLAC_API const char * const FLAC__StreamEncoderStateString[];
-
-
-/** Possible return values for the FLAC__stream_encoder_init_*() functions.
- */
-typedef enum {
-
-	FLAC__STREAM_ENCODER_INIT_STATUS_OK = 0,
-	/**< Initialization was successful. */
-
-	FLAC__STREAM_ENCODER_INIT_STATUS_ENCODER_ERROR,
-	/**< General failure to set up encoder; call FLAC__stream_encoder_get_state() for cause. */
-
-	FLAC__STREAM_ENCODER_INIT_STATUS_UNSUPPORTED_CONTAINER,
-	/**< The library was not compiled with support for the given container
-	 * format.
-	 */
-
-	FLAC__STREAM_ENCODER_INIT_STATUS_INVALID_CALLBACKS,
-	/**< A required callback was not supplied. */
-
-	FLAC__STREAM_ENCODER_INIT_STATUS_INVALID_NUMBER_OF_CHANNELS,
-	/**< The encoder has an invalid setting for number of channels. */
-
-	FLAC__STREAM_ENCODER_INIT_STATUS_INVALID_BITS_PER_SAMPLE,
-	/**< The encoder has an invalid setting for bits-per-sample.
-	 * FLAC supports 4-32 bps but the reference encoder currently supports
-	 * only up to 24 bps.
-	 */
-
-	FLAC__STREAM_ENCODER_INIT_STATUS_INVALID_SAMPLE_RATE,
-	/**< The encoder has an invalid setting for the input sample rate. */
-
-	FLAC__STREAM_ENCODER_INIT_STATUS_INVALID_BLOCK_SIZE,
-	/**< The encoder has an invalid setting for the block size. */
-
-	FLAC__STREAM_ENCODER_INIT_STATUS_INVALID_MAX_LPC_ORDER,
-	/**< The encoder has an invalid setting for the maximum LPC order. */
-
-	FLAC__STREAM_ENCODER_INIT_STATUS_INVALID_QLP_COEFF_PRECISION,
-	/**< The encoder has an invalid setting for the precision of the quantized linear predictor coefficients. */
-
-	FLAC__STREAM_ENCODER_INIT_STATUS_BLOCK_SIZE_TOO_SMALL_FOR_LPC_ORDER,
-	/**< The specified block size is less than the maximum LPC order. */
-
-	FLAC__STREAM_ENCODER_INIT_STATUS_NOT_STREAMABLE,
-	/**< The encoder is bound to the <A HREF="../format.html#subset">Subset</A> but other settings violate it. */
-
-	FLAC__STREAM_ENCODER_INIT_STATUS_INVALID_METADATA,
-	/**< The metadata input to the encoder is invalid, in one of the following ways:
-	 * - FLAC__stream_encoder_set_metadata() was called with a null pointer but a block count > 0
-	 * - One of the metadata blocks contains an undefined type
-	 * - It contains an illegal CUESHEET as checked by FLAC__format_cuesheet_is_legal()
-	 * - It contains an illegal SEEKTABLE as checked by FLAC__format_seektable_is_legal()
-	 * - It contains more than one SEEKTABLE block or more than one VORBIS_COMMENT block
-	 */
-
-	FLAC__STREAM_ENCODER_INIT_STATUS_ALREADY_INITIALIZED
-	/**< FLAC__stream_encoder_init_*() was called when the encoder was
-	 * already initialized, usually because
-	 * FLAC__stream_encoder_finish() was not called.
-	 */
-
-} FLAC__StreamEncoderInitStatus;
-
-/** Maps a FLAC__StreamEncoderInitStatus to a C string.
- *
- *  Using a FLAC__StreamEncoderInitStatus as the index to this array
- *  will give the string equivalent.  The contents should not be modified.
- */
-extern FLAC_API const char * const FLAC__StreamEncoderInitStatusString[];
-
-
-/** Return values for the FLAC__StreamEncoder read callback.
- */
-typedef enum {
-
-	FLAC__STREAM_ENCODER_READ_STATUS_CONTINUE,
-	/**< The read was OK and decoding can continue. */
-
-	FLAC__STREAM_ENCODER_READ_STATUS_END_OF_STREAM,
-	/**< The read was attempted at the end of the stream. */
-
-	FLAC__STREAM_ENCODER_READ_STATUS_ABORT,
-	/**< An unrecoverable error occurred. */
-
-	FLAC__STREAM_ENCODER_READ_STATUS_UNSUPPORTED
-	/**< Client does not support reading back from the output. */
-
-} FLAC__StreamEncoderReadStatus;
-
-/** Maps a FLAC__StreamEncoderReadStatus to a C string.
- *
- *  Using a FLAC__StreamEncoderReadStatus as the index to this array
- *  will give the string equivalent.  The contents should not be modified.
- */
-extern FLAC_API const char * const FLAC__StreamEncoderReadStatusString[];
-
-
-/** Return values for the FLAC__StreamEncoder write callback.
- */
-typedef enum {
-
-	FLAC__STREAM_ENCODER_WRITE_STATUS_OK = 0,
-	/**< The write was OK and encoding can continue. */
-
-	FLAC__STREAM_ENCODER_WRITE_STATUS_FATAL_ERROR
-	/**< An unrecoverable error occurred.  The encoder will return from the process call. */
-
-} FLAC__StreamEncoderWriteStatus;
-
-/** Maps a FLAC__StreamEncoderWriteStatus to a C string.
- *
- *  Using a FLAC__StreamEncoderWriteStatus as the index to this array
- *  will give the string equivalent.  The contents should not be modified.
- */
-extern FLAC_API const char * const FLAC__StreamEncoderWriteStatusString[];
-
-
-/** Return values for the FLAC__StreamEncoder seek callback.
- */
-typedef enum {
-
-	FLAC__STREAM_ENCODER_SEEK_STATUS_OK,
-	/**< The seek was OK and encoding can continue. */
-
-	FLAC__STREAM_ENCODER_SEEK_STATUS_ERROR,
-	/**< An unrecoverable error occurred. */
-
-	FLAC__STREAM_ENCODER_SEEK_STATUS_UNSUPPORTED
-	/**< Client does not support seeking. */
-
-} FLAC__StreamEncoderSeekStatus;
-
-/** Maps a FLAC__StreamEncoderSeekStatus to a C string.
- *
- *  Using a FLAC__StreamEncoderSeekStatus as the index to this array
- *  will give the string equivalent.  The contents should not be modified.
- */
-extern FLAC_API const char * const FLAC__StreamEncoderSeekStatusString[];
-
-
-/** Return values for the FLAC__StreamEncoder tell callback.
- */
-typedef enum {
-
-	FLAC__STREAM_ENCODER_TELL_STATUS_OK,
-	/**< The tell was OK and encoding can continue. */
-
-	FLAC__STREAM_ENCODER_TELL_STATUS_ERROR,
-	/**< An unrecoverable error occurred. */
-
-	FLAC__STREAM_ENCODER_TELL_STATUS_UNSUPPORTED
-	/**< Client does not support seeking. */
-
-} FLAC__StreamEncoderTellStatus;
-
-/** Maps a FLAC__StreamEncoderTellStatus to a C string.
- *
- *  Using a FLAC__StreamEncoderTellStatus as the index to this array
- *  will give the string equivalent.  The contents should not be modified.
- */
-extern FLAC_API const char * const FLAC__StreamEncoderTellStatusString[];
-
-
-/***********************************************************************
- *
- * class FLAC__StreamEncoder
- *
- ***********************************************************************/
-
-struct FLAC__StreamEncoderProtected;
-struct FLAC__StreamEncoderPrivate;
-/** The opaque structure definition for the stream encoder type.
- *  See the \link flac_stream_encoder stream encoder module \endlink
- *  for a detailed description.
- */
-typedef struct {
-	struct FLAC__StreamEncoderProtected *protected_; /* avoid the C++ keyword 'protected' */
-	struct FLAC__StreamEncoderPrivate *private_; /* avoid the C++ keyword 'private' */
-} FLAC__StreamEncoder;
-
-/** Signature for the read callback.
- *
- *  A function pointer matching this signature must be passed to
- *  FLAC__stream_encoder_init_ogg_stream() if seeking is supported.
- *  The supplied function will be called when the encoder needs to read back
- *  encoded data.  This happens during the metadata callback, when the encoder
- *  has to read, modify, and rewrite the metadata (e.g. seekpoints) gathered
- *  while encoding.  The address of the buffer to be filled is supplied, along
- *  with the number of bytes the buffer can hold.  The callback may choose to
- *  supply less data and modify the byte count but must be careful not to
- *  overflow the buffer.  The callback then returns a status code chosen from
- *  FLAC__StreamEncoderReadStatus.
- *
- * Here is an example of a read callback for stdio streams:
- * \code
- * FLAC__StreamEncoderReadStatus read_cb(const FLAC__StreamEncoder *encoder, FLAC__byte buffer[], size_t *bytes, void *client_data)
- * {
- *   FILE *file = ((MyClientData*)client_data)->file;
- *   if(*bytes > 0) {
- *     *bytes = fread(buffer, sizeof(FLAC__byte), *bytes, file);
- *     if(ferror(file))
- *       return FLAC__STREAM_ENCODER_READ_STATUS_ABORT;
- *     else if(*bytes == 0)
- *       return FLAC__STREAM_ENCODER_READ_STATUS_END_OF_STREAM;
- *     else
- *       return FLAC__STREAM_ENCODER_READ_STATUS_CONTINUE;
- *   }
- *   else
- *     return FLAC__STREAM_ENCODER_READ_STATUS_ABORT;
- * }
- * \endcode
- *
- * \note In general, FLAC__StreamEncoder functions which change the
- * state should not be called on the \a encoder while in the callback.
- *
- * \param  encoder  The encoder instance calling the callback.
- * \param  buffer   A pointer to a location for the callee to store
- *                  data to be encoded.
- * \param  bytes    A pointer to the size of the buffer.  On entry
- *                  to the callback, it contains the maximum number
- *                  of bytes that may be stored in \a buffer.  The
- *                  callee must set it to the actual number of bytes
- *                  stored (0 in case of error or end-of-stream) before
- *                  returning.
- * \param  client_data  The callee's client data set through
- *                      FLAC__stream_encoder_set_client_data().
- * \retval FLAC__StreamEncoderReadStatus
- *    The callee's return status.
- */
-typedef FLAC__StreamEncoderReadStatus (*FLAC__StreamEncoderReadCallback)(const FLAC__StreamEncoder *encoder, FLAC__byte buffer[], size_t *bytes, void *client_data);
-
-/** Signature for the write callback.
- *
- *  A function pointer matching this signature must be passed to
- *  FLAC__stream_encoder_init*_stream().  The supplied function will be called
- *  by the encoder anytime there is raw encoded data ready to write.  It may
- *  include metadata mixed with encoded audio frames and the data is not
- *  guaranteed to be aligned on frame or metadata block boundaries.
- *
- *  The only duty of the callback is to write out the \a bytes worth of data
- *  in \a buffer to the current position in the output stream.  The arguments
- *  \a samples and \a current_frame are purely informational.  If \a samples
- *  is greater than \c 0, then \a current_frame will hold the current frame
- *  number that is being written; otherwise it indicates that the write
- *  callback is being called to write metadata.
- *
- * \note
- * Unlike when writing to native FLAC, when writing to Ogg FLAC the
- * write callback will be called twice when writing each audio
- * frame; once for the page header, and once for the page body.
- * When writing the page header, the \a samples argument to the
- * write callback will be \c 0.
- *
- * \note In general, FLAC__StreamEncoder functions which change the
- * state should not be called on the \a encoder while in the callback.
- *
- * \param  encoder  The encoder instance calling the callback.
- * \param  buffer   An array of encoded data of length \a bytes.
- * \param  bytes    The byte length of \a buffer.
- * \param  samples  The number of samples encoded by \a buffer.
- *                  \c 0 has a special meaning; see above.
- * \param  current_frame  The number of the current frame being encoded.
- * \param  client_data  The callee's client data set through
- *                      FLAC__stream_encoder_init_*().
- * \retval FLAC__StreamEncoderWriteStatus
- *    The callee's return status.
- */
-typedef FLAC__StreamEncoderWriteStatus (*FLAC__StreamEncoderWriteCallback)(const FLAC__StreamEncoder *encoder, const FLAC__byte buffer[], size_t bytes, unsigned samples, unsigned current_frame, void *client_data);
-
-/** Signature for the seek callback.
- *
- *  A function pointer matching this signature may be passed to
- *  FLAC__stream_encoder_init*_stream().  The supplied function will be called
- *  when the encoder needs to seek the output stream.  The encoder will pass
- *  the absolute byte offset to seek to, 0 meaning the beginning of the stream.
- *
- * Here is an example of a seek callback for stdio streams:
- * \code
- * FLAC__StreamEncoderSeekStatus seek_cb(const FLAC__StreamEncoder *encoder, FLAC__uint64 absolute_byte_offset, void *client_data)
- * {
- *   FILE *file = ((MyClientData*)client_data)->file;
- *   if(file == stdin)
- *     return FLAC__STREAM_ENCODER_SEEK_STATUS_UNSUPPORTED;
- *   else if(fseeko(file, (off_t)absolute_byte_offset, SEEK_SET) < 0)
- *     return FLAC__STREAM_ENCODER_SEEK_STATUS_ERROR;
- *   else
- *     return FLAC__STREAM_ENCODER_SEEK_STATUS_OK;
- * }
- * \endcode
- *
- * \note In general, FLAC__StreamEncoder functions which change the
- * state should not be called on the \a encoder while in the callback.
- *
- * \param  encoder  The encoder instance calling the callback.
- * \param  absolute_byte_offset  The offset from the beginning of the stream
- *                               to seek to.
- * \param  client_data  The callee's client data set through
- *                      FLAC__stream_encoder_init_*().
- * \retval FLAC__StreamEncoderSeekStatus
- *    The callee's return status.
- */
-typedef FLAC__StreamEncoderSeekStatus (*FLAC__StreamEncoderSeekCallback)(const FLAC__StreamEncoder *encoder, FLAC__uint64 absolute_byte_offset, void *client_data);
-
-/** Signature for the tell callback.
- *
- *  A function pointer matching this signature may be passed to
- *  FLAC__stream_encoder_init*_stream().  The supplied function will be called
- *  when the encoder needs to know the current position of the output stream.
- *
- * \warning
- * The callback must return the true current byte offset of the output to
- * which the encoder is writing.  If you are buffering the output, make
- * sure and take this into account.  If you are writing directly to a
- * FILE* from your write callback, ftell() is sufficient.  If you are
- * writing directly to a file descriptor from your write callback, you
- * can use lseek(fd, SEEK_CUR, 0).  The encoder may later seek back to
- * these points to rewrite metadata after encoding.
- *
- * Here is an example of a tell callback for stdio streams:
- * \code
- * FLAC__StreamEncoderTellStatus tell_cb(const FLAC__StreamEncoder *encoder, FLAC__uint64 *absolute_byte_offset, void *client_data)
- * {
- *   FILE *file = ((MyClientData*)client_data)->file;
- *   off_t pos;
- *   if(file == stdin)
- *     return FLAC__STREAM_ENCODER_TELL_STATUS_UNSUPPORTED;
- *   else if((pos = ftello(file)) < 0)
- *     return FLAC__STREAM_ENCODER_TELL_STATUS_ERROR;
- *   else {
- *     *absolute_byte_offset = (FLAC__uint64)pos;
- *     return FLAC__STREAM_ENCODER_TELL_STATUS_OK;
- *   }
- * }
- * \endcode
- *
- * \note In general, FLAC__StreamEncoder functions which change the
- * state should not be called on the \a encoder while in the callback.
- *
- * \param  encoder  The encoder instance calling the callback.
- * \param  absolute_byte_offset  The address at which to store the current
- *                               position of the output.
- * \param  client_data  The callee's client data set through
- *                      FLAC__stream_encoder_init_*().
- * \retval FLAC__StreamEncoderTellStatus
- *    The callee's return status.
- */
-typedef FLAC__StreamEncoderTellStatus (*FLAC__StreamEncoderTellCallback)(const FLAC__StreamEncoder *encoder, FLAC__uint64 *absolute_byte_offset, void *client_data);
-
-/** Signature for the metadata callback.
- *
- *  A function pointer matching this signature may be passed to
- *  FLAC__stream_encoder_init*_stream().  The supplied function will be called
- *  once at the end of encoding with the populated STREAMINFO structure.  This
- *  is so the client can seek back to the beginning of the file and write the
- *  STREAMINFO block with the correct statistics after encoding (like
- *  minimum/maximum frame size and total samples).
- *
- * \note In general, FLAC__StreamEncoder functions which change the
- * state should not be called on the \a encoder while in the callback.
- *
- * \param  encoder      The encoder instance calling the callback.
- * \param  metadata     The final populated STREAMINFO block.
- * \param  client_data  The callee's client data set through
- *                      FLAC__stream_encoder_init_*().
- */
-typedef void (*FLAC__StreamEncoderMetadataCallback)(const FLAC__StreamEncoder *encoder, const FLAC__StreamMetadata *metadata, void *client_data);
-
-/** Signature for the progress callback.
- *
- *  A function pointer matching this signature may be passed to
- *  FLAC__stream_encoder_init*_file() or FLAC__stream_encoder_init*_FILE().
- *  The supplied function will be called when the encoder has finished
- *  writing a frame.  The \c total_frames_estimate argument to the
- *  callback will be based on the value from
- *  FLAC__stream_encoder_set_total_samples_estimate().
- *
- * \note In general, FLAC__StreamEncoder functions which change the
- * state should not be called on the \a encoder while in the callback.
- *
- * \param  encoder          The encoder instance calling the callback.
- * \param  bytes_written    Bytes written so far.
- * \param  samples_written  Samples written so far.
- * \param  frames_written   Frames written so far.
- * \param  total_frames_estimate  The estimate of the total number of
- *                                frames to be written.
- * \param  client_data      The callee's client data set through
- *                          FLAC__stream_encoder_init_*().
- */
-typedef void (*FLAC__StreamEncoderProgressCallback)(const FLAC__StreamEncoder *encoder, FLAC__uint64 bytes_written, FLAC__uint64 samples_written, unsigned frames_written, unsigned total_frames_estimate, void *client_data);
-
-
-/***********************************************************************
- *
- * Class constructor/destructor
- *
- ***********************************************************************/
-
-/** Create a new stream encoder instance.  The instance is created with
- *  default settings; see the individual FLAC__stream_encoder_set_*()
- *  functions for each setting's default.
- *
- * \retval FLAC__StreamEncoder*
- *    \c NULL if there was an error allocating memory, else the new instance.
- */
-FLAC_API FLAC__StreamEncoder *FLAC__stream_encoder_new(void);
-
-/** Free an encoder instance.  Deletes the object pointed to by \a encoder.
- *
- * \param encoder  A pointer to an existing encoder.
- * \assert
- *    \code encoder != NULL \endcode
- */
-FLAC_API void FLAC__stream_encoder_delete(FLAC__StreamEncoder *encoder);
-
-
-/***********************************************************************
- *
- * Public class method prototypes
- *
- ***********************************************************************/
-
-/** Set the serial number for the FLAC stream to use in the Ogg container.
- *
- * \note
- * This does not need to be set for native FLAC encoding.
- *
- * \note
- * It is recommended to set a serial number explicitly as the default of '0'
- * may collide with other streams.
- *
- * \default \c 0
- * \param  encoder        An encoder instance to set.
- * \param  serial_number  See above.
- * \assert
- *    \code encoder != NULL \endcode
- * \retval FLAC__bool
- *    \c false if the encoder is already initialized, else \c true.
- */
-FLAC_API FLAC__bool FLAC__stream_encoder_set_ogg_serial_number(FLAC__StreamEncoder *encoder, long serial_number);
-
-/** Set the "verify" flag.  If \c true, the encoder will verify it's own
- *  encoded output by feeding it through an internal decoder and comparing
- *  the original signal against the decoded signal.  If a mismatch occurs,
- *  the process call will return \c false.  Note that this will slow the
- *  encoding process by the extra time required for decoding and comparison.
- *
- * \default \c false
- * \param  encoder  An encoder instance to set.
- * \param  value    Flag value (see above).
- * \assert
- *    \code encoder != NULL \endcode
- * \retval FLAC__bool
- *    \c false if the encoder is already initialized, else \c true.
- */
-FLAC_API FLAC__bool FLAC__stream_encoder_set_verify(FLAC__StreamEncoder *encoder, FLAC__bool value);
-
-/** Set the <A HREF="../format.html#subset">Subset</A> flag.  If \c true,
- *  the encoder will comply with the Subset and will check the
- *  settings during FLAC__stream_encoder_init_*() to see if all settings
- *  comply.  If \c false, the settings may take advantage of the full
- *  range that the format allows.
- *
- *  Make sure you know what it entails before setting this to \c false.
- *
- * \default \c true
- * \param  encoder  An encoder instance to set.
- * \param  value    Flag value (see above).
- * \assert
- *    \code encoder != NULL \endcode
- * \retval FLAC__bool
- *    \c false if the encoder is already initialized, else \c true.
- */
-FLAC_API FLAC__bool FLAC__stream_encoder_set_streamable_subset(FLAC__StreamEncoder *encoder, FLAC__bool value);
-
-/** Set the number of channels to be encoded.
- *
- * \default \c 2
- * \param  encoder  An encoder instance to set.
- * \param  value    See above.
- * \assert
- *    \code encoder != NULL \endcode
- * \retval FLAC__bool
- *    \c false if the encoder is already initialized, else \c true.
- */
-FLAC_API FLAC__bool FLAC__stream_encoder_set_channels(FLAC__StreamEncoder *encoder, unsigned value);
-
-/** Set the sample resolution of the input to be encoded.
- *
- * \warning
- * Do not feed the encoder data that is wider than the value you
- * set here or you will generate an invalid stream.
- *
- * \default \c 16
- * \param  encoder  An encoder instance to set.
- * \param  value    See above.
- * \assert
- *    \code encoder != NULL \endcode
- * \retval FLAC__bool
- *    \c false if the encoder is already initialized, else \c true.
- */
-FLAC_API FLAC__bool FLAC__stream_encoder_set_bits_per_sample(FLAC__StreamEncoder *encoder, unsigned value);
-
-/** Set the sample rate (in Hz) of the input to be encoded.
- *
- * \default \c 44100
- * \param  encoder  An encoder instance to set.
- * \param  value    See above.
- * \assert
- *    \code encoder != NULL \endcode
- * \retval FLAC__bool
- *    \c false if the encoder is already initialized, else \c true.
- */
-FLAC_API FLAC__bool FLAC__stream_encoder_set_sample_rate(FLAC__StreamEncoder *encoder, unsigned value);
-
-/** Set the compression level
- *
- * The compression level is roughly proportional to the amount of effort
- * the encoder expends to compress the file.  A higher level usually
- * means more computation but higher compression.  The default level is
- * suitable for most applications.
- *
- * Currently the levels range from \c 0 (fastest, least compression) to
- * \c 8 (slowest, most compression).  A value larger than \c 8 will be
- * treated as \c 8.
- *
- * This function automatically calls the following other \c _set_
- * functions with appropriate values, so the client does not need to
- * unless it specifically wants to override them:
- * - FLAC__stream_encoder_set_do_mid_side_stereo()
- * - FLAC__stream_encoder_set_loose_mid_side_stereo()
- * - FLAC__stream_encoder_set_apodization()
- * - FLAC__stream_encoder_set_max_lpc_order()
- * - FLAC__stream_encoder_set_qlp_coeff_precision()
- * - FLAC__stream_encoder_set_do_qlp_coeff_prec_search()
- * - FLAC__stream_encoder_set_do_escape_coding()
- * - FLAC__stream_encoder_set_do_exhaustive_model_search()
- * - FLAC__stream_encoder_set_min_residual_partition_order()
- * - FLAC__stream_encoder_set_max_residual_partition_order()
- * - FLAC__stream_encoder_set_rice_parameter_search_dist()
- *
- * The actual values set for each level are:
- * <table>
- * <tr>
- *  <td><b>level</b><td>
- *  <td>do mid-side stereo<td>
- *  <td>loose mid-side stereo<td>
- *  <td>apodization<td>
- *  <td>max lpc order<td>
- *  <td>qlp coeff precision<td>
- *  <td>qlp coeff prec search<td>
- *  <td>escape coding<td>
- *  <td>exhaustive model search<td>
- *  <td>min residual partition order<td>
- *  <td>max residual partition order<td>
- *  <td>rice parameter search dist<td>
- * </tr>
- * <tr>  <td><b>0</b><td>  <td>false<td>  <td>false<td>  <td>tukey(0.5)<td>  <td>0<td>   <td>0<td>  <td>false<td>  <td>false<td>  <td>false<td>  <td>0<td>  <td>3<td>  <td>0<td>  </tr>
- * <tr>  <td><b>1</b><td>  <td>true<td>   <td>true<td>   <td>tukey(0.5)<td>  <td>0<td>   <td>0<td>  <td>false<td>  <td>false<td>  <td>false<td>  <td>0<td>  <td>3<td>  <td>0<td>  </tr>
- * <tr>  <td><b>2</b><td>  <td>true<td>   <td>false<td>  <td>tukey(0.5)<td>  <td>0<td>   <td>0<td>  <td>false<td>  <td>false<td>  <td>false<td>  <td>0<td>  <td>3<td>  <td>0<td>  </tr>
- * <tr>  <td><b>3</b><td>  <td>false<td>  <td>false<td>  <td>tukey(0.5)<td>  <td>6<td>   <td>0<td>  <td>false<td>  <td>false<td>  <td>false<td>  <td>0<td>  <td>4<td>  <td>0<td>  </tr>
- * <tr>  <td><b>4</b><td>  <td>true<td>   <td>true<td>   <td>tukey(0.5)<td>  <td>8<td>   <td>0<td>  <td>false<td>  <td>false<td>  <td>false<td>  <td>0<td>  <td>4<td>  <td>0<td>  </tr>
- * <tr>  <td><b>5</b><td>  <td>true<td>   <td>false<td>  <td>tukey(0.5)<td>  <td>8<td>   <td>0<td>  <td>false<td>  <td>false<td>  <td>false<td>  <td>0<td>  <td>5<td>  <td>0<td>  </tr>
- * <tr>  <td><b>6</b><td>  <td>true<td>   <td>false<td>  <td>tukey(0.5)<td>  <td>8<td>   <td>0<td>  <td>false<td>  <td>false<td>  <td>false<td>  <td>0<td>  <td>6<td>  <td>0<td>  </tr>
- * <tr>  <td><b>7</b><td>  <td>true<td>   <td>false<td>  <td>tukey(0.5)<td>  <td>8<td>   <td>0<td>  <td>false<td>  <td>false<td>  <td>true<td>   <td>0<td>  <td>6<td>  <td>0<td>  </tr>
- * <tr>  <td><b>8</b><td>  <td>true<td>   <td>false<td>  <td>tukey(0.5)<td>  <td>12<td>  <td>0<td>  <td>false<td>  <td>false<td>  <td>true<td>   <td>0<td>  <td>6<td>  <td>0<td>  </tr>
- * </table>
- *
- * \default \c 5
- * \param  encoder  An encoder instance to set.
- * \param  value    See above.
- * \assert
- *    \code encoder != NULL \endcode
- * \retval FLAC__bool
- *    \c false if the encoder is already initialized, else \c true.
- */
-FLAC_API FLAC__bool FLAC__stream_encoder_set_compression_level(FLAC__StreamEncoder *encoder, unsigned value);
-
-/** Set the blocksize to use while encoding.
- *
- * The number of samples to use per frame.  Use \c 0 to let the encoder
- * estimate a blocksize; this is usually best.
- *
- * \default \c 0
- * \param  encoder  An encoder instance to set.
- * \param  value    See above.
- * \assert
- *    \code encoder != NULL \endcode
- * \retval FLAC__bool
- *    \c false if the encoder is already initialized, else \c true.
- */
-FLAC_API FLAC__bool FLAC__stream_encoder_set_blocksize(FLAC__StreamEncoder *encoder, unsigned value);
-
-/** Set to \c true to enable mid-side encoding on stereo input.  The
- *  number of channels must be 2 for this to have any effect.  Set to
- *  \c false to use only independent channel coding.
- *
- * \default \c false
- * \param  encoder  An encoder instance to set.
- * \param  value    Flag value (see above).
- * \assert
- *    \code encoder != NULL \endcode
- * \retval FLAC__bool
- *    \c false if the encoder is already initialized, else \c true.
- */
-FLAC_API FLAC__bool FLAC__stream_encoder_set_do_mid_side_stereo(FLAC__StreamEncoder *encoder, FLAC__bool value);
-
-/** Set to \c true to enable adaptive switching between mid-side and
- *  left-right encoding on stereo input.  Set to \c false to use
- *  exhaustive searching.  Setting this to \c true requires
- *  FLAC__stream_encoder_set_do_mid_side_stereo() to also be set to
- *  \c true in order to have any effect.
- *
- * \default \c false
- * \param  encoder  An encoder instance to set.
- * \param  value    Flag value (see above).
- * \assert
- *    \code encoder != NULL \endcode
- * \retval FLAC__bool
- *    \c false if the encoder is already initialized, else \c true.
- */
-FLAC_API FLAC__bool FLAC__stream_encoder_set_loose_mid_side_stereo(FLAC__StreamEncoder *encoder, FLAC__bool value);
-
-/** Sets the apodization function(s) the encoder will use when windowing
- *  audio data for LPC analysis.
- *
- * The \a specification is a plain ASCII string which specifies exactly
- * which functions to use.  There may be more than one (up to 32),
- * separated by \c ';' characters.  Some functions take one or more
- * comma-separated arguments in parentheses.
- *
- * The available functions are \c bartlett, \c bartlett_hann,
- * \c blackman, \c blackman_harris_4term_92db, \c connes, \c flattop,
- * \c gauss(STDDEV), \c hamming, \c hann, \c kaiser_bessel, \c nuttall,
- * \c rectangle, \c triangle, \c tukey(P), \c welch.
- *
- * For \c gauss(STDDEV), STDDEV specifies the standard deviation
- * (0<STDDEV<=0.5).
- *
- * For \c tukey(P), P specifies the fraction of the window that is
- * tapered (0<=P<=1).  P=0 corresponds to \c rectangle and P=1
- * corresponds to \c hann.
- *
- * Example specifications are \c "blackman" or
- * \c "hann;triangle;tukey(0.5);tukey(0.25);tukey(0.125)"
- *
- * Any function that is specified erroneously is silently dropped.  Up
- * to 32 functions are kept, the rest are dropped.  If the specification
- * is empty the encoder defaults to \c "tukey(0.5)".
- *
- * When more than one function is specified, then for every subframe the
- * encoder will try each of them separately and choose the window that
- * results in the smallest compressed subframe.
- *
- * Note that each function specified causes the encoder to occupy a
- * floating point array in which to store the window.
- *
- * \default \c "tukey(0.5)"
- * \param  encoder        An encoder instance to set.
- * \param  specification  See above.
- * \assert
- *    \code encoder != NULL \endcode
- *    \code specification != NULL \endcode
- * \retval FLAC__bool
- *    \c false if the encoder is already initialized, else \c true.
- */
-FLAC_API FLAC__bool FLAC__stream_encoder_set_apodization(FLAC__StreamEncoder *encoder, const char *specification);
-
-/** Set the maximum LPC order, or \c 0 to use only the fixed predictors.
- *
- * \default \c 0
- * \param  encoder  An encoder instance to set.
- * \param  value    See above.
- * \assert
- *    \code encoder != NULL \endcode
- * \retval FLAC__bool
- *    \c false if the encoder is already initialized, else \c true.
- */
-FLAC_API FLAC__bool FLAC__stream_encoder_set_max_lpc_order(FLAC__StreamEncoder *encoder, unsigned value);
-
-/** Set the precision, in bits, of the quantized linear predictor
- *  coefficients, or \c 0 to let the encoder select it based on the
- *  blocksize.
- *
- * \note
- * In the current implementation, qlp_coeff_precision + bits_per_sample must
- * be less than 32.
- *
- * \default \c 0
- * \param  encoder  An encoder instance to set.
- * \param  value    See above.
- * \assert
- *    \code encoder != NULL \endcode
- * \retval FLAC__bool
- *    \c false if the encoder is already initialized, else \c true.
- */
-FLAC_API FLAC__bool FLAC__stream_encoder_set_qlp_coeff_precision(FLAC__StreamEncoder *encoder, unsigned value);
-
-/** Set to \c false to use only the specified quantized linear predictor
- *  coefficient precision, or \c true to search neighboring precision
- *  values and use the best one.
- *
- * \default \c false
- * \param  encoder  An encoder instance to set.
- * \param  value    See above.
- * \assert
- *    \code encoder != NULL \endcode
- * \retval FLAC__bool
- *    \c false if the encoder is already initialized, else \c true.
- */
-FLAC_API FLAC__bool FLAC__stream_encoder_set_do_qlp_coeff_prec_search(FLAC__StreamEncoder *encoder, FLAC__bool value);
-
-/** Deprecated.  Setting this value has no effect.
- *
- * \default \c false
- * \param  encoder  An encoder instance to set.
- * \param  value    See above.
- * \assert
- *    \code encoder != NULL \endcode
- * \retval FLAC__bool
- *    \c false if the encoder is already initialized, else \c true.
- */
-FLAC_API FLAC__bool FLAC__stream_encoder_set_do_escape_coding(FLAC__StreamEncoder *encoder, FLAC__bool value);
-
-/** Set to \c false to let the encoder estimate the best model order
- *  based on the residual signal energy, or \c true to force the
- *  encoder to evaluate all order models and select the best.
- *
- * \default \c false
- * \param  encoder  An encoder instance to set.
- * \param  value    See above.
- * \assert
- *    \code encoder != NULL \endcode
- * \retval FLAC__bool
- *    \c false if the encoder is already initialized, else \c true.
- */
-FLAC_API FLAC__bool FLAC__stream_encoder_set_do_exhaustive_model_search(FLAC__StreamEncoder *encoder, FLAC__bool value);
-
-/** Set the minimum partition order to search when coding the residual.
- *  This is used in tandem with
- *  FLAC__stream_encoder_set_max_residual_partition_order().
- *
- *  The partition order determines the context size in the residual.
- *  The context size will be approximately <tt>blocksize / (2 ^ order)</tt>.
- *
- *  Set both min and max values to \c 0 to force a single context,
- *  whose Rice parameter is based on the residual signal variance.
- *  Otherwise, set a min and max order, and the encoder will search
- *  all orders, using the mean of each context for its Rice parameter,
- *  and use the best.
- *
- * \default \c 0
- * \param  encoder  An encoder instance to set.
- * \param  value    See above.
- * \assert
- *    \code encoder != NULL \endcode
- * \retval FLAC__bool
- *    \c false if the encoder is already initialized, else \c true.
- */
-FLAC_API FLAC__bool FLAC__stream_encoder_set_min_residual_partition_order(FLAC__StreamEncoder *encoder, unsigned value);
-
-/** Set the maximum partition order to search when coding the residual.
- *  This is used in tandem with
- *  FLAC__stream_encoder_set_min_residual_partition_order().
- *
- *  The partition order determines the context size in the residual.
- *  The context size will be approximately <tt>blocksize / (2 ^ order)</tt>.
- *
- *  Set both min and max values to \c 0 to force a single context,
- *  whose Rice parameter is based on the residual signal variance.
- *  Otherwise, set a min and max order, and the encoder will search
- *  all orders, using the mean of each context for its Rice parameter,
- *  and use the best.
- *
- * \default \c 0
- * \param  encoder  An encoder instance to set.
- * \param  value    See above.
- * \assert
- *    \code encoder != NULL \endcode
- * \retval FLAC__bool
- *    \c false if the encoder is already initialized, else \c true.
- */
-FLAC_API FLAC__bool FLAC__stream_encoder_set_max_residual_partition_order(FLAC__StreamEncoder *encoder, unsigned value);
-
-/** Deprecated.  Setting this value has no effect.
- *
- * \default \c 0
- * \param  encoder  An encoder instance to set.
- * \param  value    See above.
- * \assert
- *    \code encoder != NULL \endcode
- * \retval FLAC__bool
- *    \c false if the encoder is already initialized, else \c true.
- */
-FLAC_API FLAC__bool FLAC__stream_encoder_set_rice_parameter_search_dist(FLAC__StreamEncoder *encoder, unsigned value);
-
-/** Set an estimate of the total samples that will be encoded.
- *  This is merely an estimate and may be set to \c 0 if unknown.
- *  This value will be written to the STREAMINFO block before encoding,
- *  and can remove the need for the caller to rewrite the value later
- *  if the value is known before encoding.
- *
- * \default \c 0
- * \param  encoder  An encoder instance to set.
- * \param  value    See above.
- * \assert
- *    \code encoder != NULL \endcode
- * \retval FLAC__bool
- *    \c false if the encoder is already initialized, else \c true.
- */
-FLAC_API FLAC__bool FLAC__stream_encoder_set_total_samples_estimate(FLAC__StreamEncoder *encoder, FLAC__uint64 value);
-
-/** Set the metadata blocks to be emitted to the stream before encoding.
- *  A value of \c NULL, \c 0 implies no metadata; otherwise, supply an
- *  array of pointers to metadata blocks.  The array is non-const since
- *  the encoder may need to change the \a is_last flag inside them, and
- *  in some cases update seek point offsets.  Otherwise, the encoder will
- *  not modify or free the blocks.  It is up to the caller to free the
- *  metadata blocks after encoding finishes.
- *
- * \note
- * The encoder stores only copies of the pointers in the \a metadata array;
- * the metadata blocks themselves must survive at least until after
- * FLAC__stream_encoder_finish() returns.  Do not free the blocks until then.
- *
- * \note
- * The STREAMINFO block is always written and no STREAMINFO block may
- * occur in the supplied array.
- *
- * \note
- * By default the encoder does not create a SEEKTABLE.  If one is supplied
- * in the \a metadata array, but the client has specified that it does not
- * support seeking, then the SEEKTABLE will be written verbatim.  However
- * by itself this is not very useful as the client will not know the stream
- * offsets for the seekpoints ahead of time.  In order to get a proper
- * seektable the client must support seeking.  See next note.
- *
- * \note
- * SEEKTABLE blocks are handled specially.  Since you will not know
- * the values for the seek point stream offsets, you should pass in
- * a SEEKTABLE 'template', that is, a SEEKTABLE object with the
- * required sample numbers (or placeholder points), with \c 0 for the
- * \a frame_samples and \a stream_offset fields for each point.  If the
- * client has specified that it supports seeking by providing a seek
- * callback to FLAC__stream_encoder_init_stream() or both seek AND read
- * callback to FLAC__stream_encoder_init_ogg_stream() (or by using
- * FLAC__stream_encoder_init*_file() or FLAC__stream_encoder_init*_FILE()),
- * then while it is encoding the encoder will fill the stream offsets in
- * for you and when encoding is finished, it will seek back and write the
- * real values into the SEEKTABLE block in the stream.  There are helper
- * routines for manipulating seektable template blocks; see metadata.h:
- * FLAC__metadata_object_seektable_template_*().  If the client does
- * not support seeking, the SEEKTABLE will have inaccurate offsets which
- * will slow down or remove the ability to seek in the FLAC stream.
- *
- * \note
- * The encoder instance \b will modify the first \c SEEKTABLE block
- * as it transforms the template to a valid seektable while encoding,
- * but it is still up to the caller to free all metadata blocks after
- * encoding.
- *
- * \note
- * A VORBIS_COMMENT block may be supplied.  The vendor string in it
- * will be ignored.  libFLAC will use it's own vendor string. libFLAC
- * will not modify the passed-in VORBIS_COMMENT's vendor string, it
- * will simply write it's own into the stream.  If no VORBIS_COMMENT
- * block is present in the \a metadata array, libFLAC will write an
- * empty one, containing only the vendor string.
- *
- * \note The Ogg FLAC mapping requires that the VORBIS_COMMENT block be
- * the second metadata block of the stream.  The encoder already supplies
- * the STREAMINFO block automatically.  If \a metadata does not contain a
- * VORBIS_COMMENT block, the encoder will supply that too.  Otherwise, if
- * \a metadata does contain a VORBIS_COMMENT block and it is not the
- * first, the init function will reorder \a metadata by moving the
- * VORBIS_COMMENT block to the front; the relative ordering of the other
- * blocks will remain as they were.
- *
- * \note The Ogg FLAC mapping limits the number of metadata blocks per
- * stream to \c 65535.  If \a num_blocks exceeds this the function will
- * return \c false.
- *
- * \default \c NULL, 0
- * \param  encoder     An encoder instance to set.
- * \param  metadata    See above.
- * \param  num_blocks  See above.
- * \assert
- *    \code encoder != NULL \endcode
- * \retval FLAC__bool
- *    \c false if the encoder is already initialized, else \c true.
- *    \c false if the encoder is already initialized, or if
- *    \a num_blocks > 65535 if encoding to Ogg FLAC, else \c true.
- */
-FLAC_API FLAC__bool FLAC__stream_encoder_set_metadata(FLAC__StreamEncoder *encoder, FLAC__StreamMetadata **metadata, unsigned num_blocks);
-
-/** Get the current encoder state.
- *
- * \param  encoder  An encoder instance to query.
- * \assert
- *    \code encoder != NULL \endcode
- * \retval FLAC__StreamEncoderState
- *    The current encoder state.
- */
-FLAC_API FLAC__StreamEncoderState FLAC__stream_encoder_get_state(const FLAC__StreamEncoder *encoder);
-
-/** Get the state of the verify stream decoder.
- *  Useful when the stream encoder state is
- *  \c FLAC__STREAM_ENCODER_VERIFY_DECODER_ERROR.
- *
- * \param  encoder  An encoder instance to query.
- * \assert
- *    \code encoder != NULL \endcode
- * \retval FLAC__StreamDecoderState
- *    The verify stream decoder state.
- */
-FLAC_API FLAC__StreamDecoderState FLAC__stream_encoder_get_verify_decoder_state(const FLAC__StreamEncoder *encoder);
-
-/** Get the current encoder state as a C string.
- *  This version automatically resolves
- *  \c FLAC__STREAM_ENCODER_VERIFY_DECODER_ERROR by getting the
- *  verify decoder's state.
- *
- * \param  encoder  A encoder instance to query.
- * \assert
- *    \code encoder != NULL \endcode
- * \retval const char *
- *    The encoder state as a C string.  Do not modify the contents.
- */
-FLAC_API const char *FLAC__stream_encoder_get_resolved_state_string(const FLAC__StreamEncoder *encoder);
-
-/** Get relevant values about the nature of a verify decoder error.
- *  Useful when the stream encoder state is
- *  \c FLAC__STREAM_ENCODER_VERIFY_DECODER_ERROR.  The arguments should
- *  be addresses in which the stats will be returned, or NULL if value
- *  is not desired.
- *
- * \param  encoder  An encoder instance to query.
- * \param  absolute_sample  The absolute sample number of the mismatch.
- * \param  frame_number  The number of the frame in which the mismatch occurred.
- * \param  channel       The channel in which the mismatch occurred.
- * \param  sample        The number of the sample (relative to the frame) in
- *                       which the mismatch occurred.
- * \param  expected      The expected value for the sample in question.
- * \param  got           The actual value returned by the decoder.
- * \assert
- *    \code encoder != NULL \endcode
- */
-FLAC_API void FLAC__stream_encoder_get_verify_decoder_error_stats(const FLAC__StreamEncoder *encoder, FLAC__uint64 *absolute_sample, unsigned *frame_number, unsigned *channel, unsigned *sample, FLAC__int32 *expected, FLAC__int32 *got);
-
-/** Get the "verify" flag.
- *
- * \param  encoder  An encoder instance to query.
- * \assert
- *    \code encoder != NULL \endcode
- * \retval FLAC__bool
- *    See FLAC__stream_encoder_set_verify().
- */
-FLAC_API FLAC__bool FLAC__stream_encoder_get_verify(const FLAC__StreamEncoder *encoder);
-
-/** Get the <A HREF="../format.html#subset>Subset</A> flag.
- *
- * \param  encoder  An encoder instance to query.
- * \assert
- *    \code encoder != NULL \endcode
- * \retval FLAC__bool
- *    See FLAC__stream_encoder_set_streamable_subset().
- */
-FLAC_API FLAC__bool FLAC__stream_encoder_get_streamable_subset(const FLAC__StreamEncoder *encoder);
-
-/** Get the number of input channels being processed.
- *
- * \param  encoder  An encoder instance to query.
- * \assert
- *    \code encoder != NULL \endcode
- * \retval unsigned
- *    See FLAC__stream_encoder_set_channels().
- */
-FLAC_API unsigned FLAC__stream_encoder_get_channels(const FLAC__StreamEncoder *encoder);
-
-/** Get the input sample resolution setting.
- *
- * \param  encoder  An encoder instance to query.
- * \assert
- *    \code encoder != NULL \endcode
- * \retval unsigned
- *    See FLAC__stream_encoder_set_bits_per_sample().
- */
-FLAC_API unsigned FLAC__stream_encoder_get_bits_per_sample(const FLAC__StreamEncoder *encoder);
-
-/** Get the input sample rate setting.
- *
- * \param  encoder  An encoder instance to query.
- * \assert
- *    \code encoder != NULL \endcode
- * \retval unsigned
- *    See FLAC__stream_encoder_set_sample_rate().
- */
-FLAC_API unsigned FLAC__stream_encoder_get_sample_rate(const FLAC__StreamEncoder *encoder);
-
-/** Get the blocksize setting.
- *
- * \param  encoder  An encoder instance to query.
- * \assert
- *    \code encoder != NULL \endcode
- * \retval unsigned
- *    See FLAC__stream_encoder_set_blocksize().
- */
-FLAC_API unsigned FLAC__stream_encoder_get_blocksize(const FLAC__StreamEncoder *encoder);
-
-/** Get the "mid/side stereo coding" flag.
- *
- * \param  encoder  An encoder instance to query.
- * \assert
- *    \code encoder != NULL \endcode
- * \retval FLAC__bool
- *    See FLAC__stream_encoder_get_do_mid_side_stereo().
- */
-FLAC_API FLAC__bool FLAC__stream_encoder_get_do_mid_side_stereo(const FLAC__StreamEncoder *encoder);
-
-/** Get the "adaptive mid/side switching" flag.
- *
- * \param  encoder  An encoder instance to query.
- * \assert
- *    \code encoder != NULL \endcode
- * \retval FLAC__bool
- *    See FLAC__stream_encoder_set_loose_mid_side_stereo().
- */
-FLAC_API FLAC__bool FLAC__stream_encoder_get_loose_mid_side_stereo(const FLAC__StreamEncoder *encoder);
-
-/** Get the maximum LPC order setting.
- *
- * \param  encoder  An encoder instance to query.
- * \assert
- *    \code encoder != NULL \endcode
- * \retval unsigned
- *    See FLAC__stream_encoder_set_max_lpc_order().
- */
-FLAC_API unsigned FLAC__stream_encoder_get_max_lpc_order(const FLAC__StreamEncoder *encoder);
-
-/** Get the quantized linear predictor coefficient precision setting.
- *
- * \param  encoder  An encoder instance to query.
- * \assert
- *    \code encoder != NULL \endcode
- * \retval unsigned
- *    See FLAC__stream_encoder_set_qlp_coeff_precision().
- */
-FLAC_API unsigned FLAC__stream_encoder_get_qlp_coeff_precision(const FLAC__StreamEncoder *encoder);
-
-/** Get the qlp coefficient precision search flag.
- *
- * \param  encoder  An encoder instance to query.
- * \assert
- *    \code encoder != NULL \endcode
- * \retval FLAC__bool
- *    See FLAC__stream_encoder_set_do_qlp_coeff_prec_search().
- */
-FLAC_API FLAC__bool FLAC__stream_encoder_get_do_qlp_coeff_prec_search(const FLAC__StreamEncoder *encoder);
-
-/** Get the "escape coding" flag.
- *
- * \param  encoder  An encoder instance to query.
- * \assert
- *    \code encoder != NULL \endcode
- * \retval FLAC__bool
- *    See FLAC__stream_encoder_set_do_escape_coding().
- */
-FLAC_API FLAC__bool FLAC__stream_encoder_get_do_escape_coding(const FLAC__StreamEncoder *encoder);
-
-/** Get the exhaustive model search flag.
- *
- * \param  encoder  An encoder instance to query.
- * \assert
- *    \code encoder != NULL \endcode
- * \retval FLAC__bool
- *    See FLAC__stream_encoder_set_do_exhaustive_model_search().
- */
-FLAC_API FLAC__bool FLAC__stream_encoder_get_do_exhaustive_model_search(const FLAC__StreamEncoder *encoder);
-
-/** Get the minimum residual partition order setting.
- *
- * \param  encoder  An encoder instance to query.
- * \assert
- *    \code encoder != NULL \endcode
- * \retval unsigned
- *    See FLAC__stream_encoder_set_min_residual_partition_order().
- */
-FLAC_API unsigned FLAC__stream_encoder_get_min_residual_partition_order(const FLAC__StreamEncoder *encoder);
-
-/** Get maximum residual partition order setting.
- *
- * \param  encoder  An encoder instance to query.
- * \assert
- *    \code encoder != NULL \endcode
- * \retval unsigned
- *    See FLAC__stream_encoder_set_max_residual_partition_order().
- */
-FLAC_API unsigned FLAC__stream_encoder_get_max_residual_partition_order(const FLAC__StreamEncoder *encoder);
-
-/** Get the Rice parameter search distance setting.
- *
- * \param  encoder  An encoder instance to query.
- * \assert
- *    \code encoder != NULL \endcode
- * \retval unsigned
- *    See FLAC__stream_encoder_set_rice_parameter_search_dist().
- */
-FLAC_API unsigned FLAC__stream_encoder_get_rice_parameter_search_dist(const FLAC__StreamEncoder *encoder);
-
-/** Get the previously set estimate of the total samples to be encoded.
- *  The encoder merely mimics back the value given to
- *  FLAC__stream_encoder_set_total_samples_estimate() since it has no
- *  other way of knowing how many samples the client will encode.
- *
- * \param  encoder  An encoder instance to set.
- * \assert
- *    \code encoder != NULL \endcode
- * \retval FLAC__uint64
- *    See FLAC__stream_encoder_get_total_samples_estimate().
- */
-FLAC_API FLAC__uint64 FLAC__stream_encoder_get_total_samples_estimate(const FLAC__StreamEncoder *encoder);
-
-/** Initialize the encoder instance to encode native FLAC streams.
- *
- *  This flavor of initialization sets up the encoder to encode to a
- *  native FLAC stream. I/O is performed via callbacks to the client.
- *  For encoding to a plain file via filename or open \c FILE*,
- *  FLAC__stream_encoder_init_file() and FLAC__stream_encoder_init_FILE()
- *  provide a simpler interface.
- *
- *  This function should be called after FLAC__stream_encoder_new() and
- *  FLAC__stream_encoder_set_*() but before FLAC__stream_encoder_process()
- *  or FLAC__stream_encoder_process_interleaved().
- *  initialization succeeded.
- *
- *  The call to FLAC__stream_encoder_init_stream() currently will also
- *  immediately call the write callback several times, once with the \c fLaC
- *  signature, and once for each encoded metadata block.
- *
- * \param  encoder            An uninitialized encoder instance.
- * \param  write_callback     See FLAC__StreamEncoderWriteCallback.  This
- *                            pointer must not be \c NULL.
- * \param  seek_callback      See FLAC__StreamEncoderSeekCallback.  This
- *                            pointer may be \c NULL if seeking is not
- *                            supported.  The encoder uses seeking to go back
- *                            and write some some stream statistics to the
- *                            STREAMINFO block; this is recommended but not
- *                            necessary to create a valid FLAC stream.  If
- *                            \a seek_callback is not \c NULL then a
- *                            \a tell_callback must also be supplied.
- *                            Alternatively, a dummy seek callback that just
- *                            returns \c FLAC__STREAM_ENCODER_SEEK_STATUS_UNSUPPORTED
- *                            may also be supplied, all though this is slightly
- *                            less efficient for the encoder.
- * \param  tell_callback      See FLAC__StreamEncoderTellCallback.  This
- *                            pointer may be \c NULL if seeking is not
- *                            supported.  If \a seek_callback is \c NULL then
- *                            this argument will be ignored.  If
- *                            \a seek_callback is not \c NULL then a
- *                            \a tell_callback must also be supplied.
- *                            Alternatively, a dummy tell callback that just
- *                            returns \c FLAC__STREAM_ENCODER_TELL_STATUS_UNSUPPORTED
- *                            may also be supplied, all though this is slightly
- *                            less efficient for the encoder.
- * \param  metadata_callback  See FLAC__StreamEncoderMetadataCallback.  This
- *                            pointer may be \c NULL if the callback is not
- *                            desired.  If the client provides a seek callback,
- *                            this function is not necessary as the encoder
- *                            will automatically seek back and update the
- *                            STREAMINFO block.  It may also be \c NULL if the
- *                            client does not support seeking, since it will
- *                            have no way of going back to update the
- *                            STREAMINFO.  However the client can still supply
- *                            a callback if it would like to know the details
- *                            from the STREAMINFO.
- * \param  client_data        This value will be supplied to callbacks in their
- *                            \a client_data argument.
- * \assert
- *    \code encoder != NULL \endcode
- * \retval FLAC__StreamEncoderInitStatus
- *    \c FLAC__STREAM_ENCODER_INIT_STATUS_OK if initialization was successful;
- *    see FLAC__StreamEncoderInitStatus for the meanings of other return values.
- */
-FLAC_API FLAC__StreamEncoderInitStatus FLAC__stream_encoder_init_stream(FLAC__StreamEncoder *encoder, FLAC__StreamEncoderWriteCallback write_callback, FLAC__StreamEncoderSeekCallback seek_callback, FLAC__StreamEncoderTellCallback tell_callback, FLAC__StreamEncoderMetadataCallback metadata_callback, void *client_data);
-
-/** Initialize the encoder instance to encode Ogg FLAC streams.
- *
- *  This flavor of initialization sets up the encoder to encode to a FLAC
- *  stream in an Ogg container.  I/O is performed via callbacks to the
- *  client.  For encoding to a plain file via filename or open \c FILE*,
- *  FLAC__stream_encoder_init_ogg_file() and FLAC__stream_encoder_init_ogg_FILE()
- *  provide a simpler interface.
- *
- *  This function should be called after FLAC__stream_encoder_new() and
- *  FLAC__stream_encoder_set_*() but before FLAC__stream_encoder_process()
- *  or FLAC__stream_encoder_process_interleaved().
- *  initialization succeeded.
- *
- *  The call to FLAC__stream_encoder_init_ogg_stream() currently will also
- *  immediately call the write callback several times to write the metadata
- *  packets.
- *
- * \param  encoder            An uninitialized encoder instance.
- * \param  read_callback      See FLAC__StreamEncoderReadCallback.  This
- *                            pointer must not be \c NULL if \a seek_callback
- *                            is non-NULL since they are both needed to be
- *                            able to write data back to the Ogg FLAC stream
- *                            in the post-encode phase.
- * \param  write_callback     See FLAC__StreamEncoderWriteCallback.  This
- *                            pointer must not be \c NULL.
- * \param  seek_callback      See FLAC__StreamEncoderSeekCallback.  This
- *                            pointer may be \c NULL if seeking is not
- *                            supported.  The encoder uses seeking to go back
- *                            and write some some stream statistics to the
- *                            STREAMINFO block; this is recommended but not
- *                            necessary to create a valid FLAC stream.  If
- *                            \a seek_callback is not \c NULL then a
- *                            \a tell_callback must also be supplied.
- *                            Alternatively, a dummy seek callback that just
- *                            returns \c FLAC__STREAM_ENCODER_SEEK_STATUS_UNSUPPORTED
- *                            may also be supplied, all though this is slightly
- *                            less efficient for the encoder.
- * \param  tell_callback      See FLAC__StreamEncoderTellCallback.  This
- *                            pointer may be \c NULL if seeking is not
- *                            supported.  If \a seek_callback is \c NULL then
- *                            this argument will be ignored.  If
- *                            \a seek_callback is not \c NULL then a
- *                            \a tell_callback must also be supplied.
- *                            Alternatively, a dummy tell callback that just
- *                            returns \c FLAC__STREAM_ENCODER_TELL_STATUS_UNSUPPORTED
- *                            may also be supplied, all though this is slightly
- *                            less efficient for the encoder.
- * \param  metadata_callback  See FLAC__StreamEncoderMetadataCallback.  This
- *                            pointer may be \c NULL if the callback is not
- *                            desired.  If the client provides a seek callback,
- *                            this function is not necessary as the encoder
- *                            will automatically seek back and update the
- *                            STREAMINFO block.  It may also be \c NULL if the
- *                            client does not support seeking, since it will
- *                            have no way of going back to update the
- *                            STREAMINFO.  However the client can still supply
- *                            a callback if it would like to know the details
- *                            from the STREAMINFO.
- * \param  client_data        This value will be supplied to callbacks in their
- *                            \a client_data argument.
- * \assert
- *    \code encoder != NULL \endcode
- * \retval FLAC__StreamEncoderInitStatus
- *    \c FLAC__STREAM_ENCODER_INIT_STATUS_OK if initialization was successful;
- *    see FLAC__StreamEncoderInitStatus for the meanings of other return values.
- */
-FLAC_API FLAC__StreamEncoderInitStatus FLAC__stream_encoder_init_ogg_stream(FLAC__StreamEncoder *encoder, FLAC__StreamEncoderReadCallback read_callback, FLAC__StreamEncoderWriteCallback write_callback, FLAC__StreamEncoderSeekCallback seek_callback, FLAC__StreamEncoderTellCallback tell_callback, FLAC__StreamEncoderMetadataCallback metadata_callback, void *client_data);
-
-/** Initialize the encoder instance to encode native FLAC files.
- *
- *  This flavor of initialization sets up the encoder to encode to a
- *  plain native FLAC file.  For non-stdio streams, you must use
- *  FLAC__stream_encoder_init_stream() and provide callbacks for the I/O.
- *
- *  This function should be called after FLAC__stream_encoder_new() and
- *  FLAC__stream_encoder_set_*() but before FLAC__stream_encoder_process()
- *  or FLAC__stream_encoder_process_interleaved().
- *  initialization succeeded.
- *
- * \param  encoder            An uninitialized encoder instance.
- * \param  file               An open file.  The file should have been opened
- *                            with mode \c "w+b" and rewound.  The file
- *                            becomes owned by the encoder and should not be
- *                            manipulated by the client while encoding.
- *                            Unless \a file is \c stdout, it will be closed
- *                            when FLAC__stream_encoder_finish() is called.
- *                            Note however that a proper SEEKTABLE cannot be
- *                            created when encoding to \c stdout since it is
- *                            not seekable.
- * \param  progress_callback  See FLAC__StreamEncoderProgressCallback.  This
- *                            pointer may be \c NULL if the callback is not
- *                            desired.
- * \param  client_data        This value will be supplied to callbacks in their
- *                            \a client_data argument.
- * \assert
- *    \code encoder != NULL \endcode
- *    \code file != NULL \endcode
- * \retval FLAC__StreamEncoderInitStatus
- *    \c FLAC__STREAM_ENCODER_INIT_STATUS_OK if initialization was successful;
- *    see FLAC__StreamEncoderInitStatus for the meanings of other return values.
- */
-FLAC_API FLAC__StreamEncoderInitStatus FLAC__stream_encoder_init_FILE(FLAC__StreamEncoder *encoder, FILE *file, FLAC__StreamEncoderProgressCallback progress_callback, void *client_data);
-
-/** Initialize the encoder instance to encode Ogg FLAC files.
- *
- *  This flavor of initialization sets up the encoder to encode to a
- *  plain Ogg FLAC file.  For non-stdio streams, you must use
- *  FLAC__stream_encoder_init_ogg_stream() and provide callbacks for the I/O.
- *
- *  This function should be called after FLAC__stream_encoder_new() and
- *  FLAC__stream_encoder_set_*() but before FLAC__stream_encoder_process()
- *  or FLAC__stream_encoder_process_interleaved().
- *  initialization succeeded.
- *
- * \param  encoder            An uninitialized encoder instance.
- * \param  file               An open file.  The file should have been opened
- *                            with mode \c "w+b" and rewound.  The file
- *                            becomes owned by the encoder and should not be
- *                            manipulated by the client while encoding.
- *                            Unless \a file is \c stdout, it will be closed
- *                            when FLAC__stream_encoder_finish() is called.
- *                            Note however that a proper SEEKTABLE cannot be
- *                            created when encoding to \c stdout since it is
- *                            not seekable.
- * \param  progress_callback  See FLAC__StreamEncoderProgressCallback.  This
- *                            pointer may be \c NULL if the callback is not
- *                            desired.
- * \param  client_data        This value will be supplied to callbacks in their
- *                            \a client_data argument.
- * \assert
- *    \code encoder != NULL \endcode
- *    \code file != NULL \endcode
- * \retval FLAC__StreamEncoderInitStatus
- *    \c FLAC__STREAM_ENCODER_INIT_STATUS_OK if initialization was successful;
- *    see FLAC__StreamEncoderInitStatus for the meanings of other return values.
- */
-FLAC_API FLAC__StreamEncoderInitStatus FLAC__stream_encoder_init_ogg_FILE(FLAC__StreamEncoder *encoder, FILE *file, FLAC__StreamEncoderProgressCallback progress_callback, void *client_data);
-
-/** Initialize the encoder instance to encode native FLAC files.
- *
- *  This flavor of initialization sets up the encoder to encode to a plain
- *  FLAC file.  If POSIX fopen() semantics are not sufficient (for example,
- *  with Unicode filenames on Windows), you must use
- *  FLAC__stream_encoder_init_FILE(), or FLAC__stream_encoder_init_stream()
- *  and provide callbacks for the I/O.
- *
- *  This function should be called after FLAC__stream_encoder_new() and
- *  FLAC__stream_encoder_set_*() but before FLAC__stream_encoder_process()
- *  or FLAC__stream_encoder_process_interleaved().
- *  initialization succeeded.
- *
- * \param  encoder            An uninitialized encoder instance.
- * \param  filename           The name of the file to encode to.  The file will
- *                            be opened with fopen().  Use \c NULL to encode to
- *                            \c stdout.  Note however that a proper SEEKTABLE
- *                            cannot be created when encoding to \c stdout since
- *                            it is not seekable.
- * \param  progress_callback  See FLAC__StreamEncoderProgressCallback.  This
- *                            pointer may be \c NULL if the callback is not
- *                            desired.
- * \param  client_data        This value will be supplied to callbacks in their
- *                            \a client_data argument.
- * \assert
- *    \code encoder != NULL \endcode
- * \retval FLAC__StreamEncoderInitStatus
- *    \c FLAC__STREAM_ENCODER_INIT_STATUS_OK if initialization was successful;
- *    see FLAC__StreamEncoderInitStatus for the meanings of other return values.
- */
-FLAC_API FLAC__StreamEncoderInitStatus FLAC__stream_encoder_init_file(FLAC__StreamEncoder *encoder, const char *filename, FLAC__StreamEncoderProgressCallback progress_callback, void *client_data);
-
-/** Initialize the encoder instance to encode Ogg FLAC files.
- *
- *  This flavor of initialization sets up the encoder to encode to a plain
- *  Ogg FLAC file.  If POSIX fopen() semantics are not sufficient (for example,
- *  with Unicode filenames on Windows), you must use
- *  FLAC__stream_encoder_init_ogg_FILE(), or FLAC__stream_encoder_init_ogg_stream()
- *  and provide callbacks for the I/O.
- *
- *  This function should be called after FLAC__stream_encoder_new() and
- *  FLAC__stream_encoder_set_*() but before FLAC__stream_encoder_process()
- *  or FLAC__stream_encoder_process_interleaved().
- *  initialization succeeded.
- *
- * \param  encoder            An uninitialized encoder instance.
- * \param  filename           The name of the file to encode to.  The file will
- *                            be opened with fopen().  Use \c NULL to encode to
- *                            \c stdout.  Note however that a proper SEEKTABLE
- *                            cannot be created when encoding to \c stdout since
- *                            it is not seekable.
- * \param  progress_callback  See FLAC__StreamEncoderProgressCallback.  This
- *                            pointer may be \c NULL if the callback is not
- *                            desired.
- * \param  client_data        This value will be supplied to callbacks in their
- *                            \a client_data argument.
- * \assert
- *    \code encoder != NULL \endcode
- * \retval FLAC__StreamEncoderInitStatus
- *    \c FLAC__STREAM_ENCODER_INIT_STATUS_OK if initialization was successful;
- *    see FLAC__StreamEncoderInitStatus for the meanings of other return values.
- */
-FLAC_API FLAC__StreamEncoderInitStatus FLAC__stream_encoder_init_ogg_file(FLAC__StreamEncoder *encoder, const char *filename, FLAC__StreamEncoderProgressCallback progress_callback, void *client_data);
-
-/** Finish the encoding process.
- *  Flushes the encoding buffer, releases resources, resets the encoder
- *  settings to their defaults, and returns the encoder state to
- *  FLAC__STREAM_ENCODER_UNINITIALIZED.  Note that this can generate
- *  one or more write callbacks before returning, and will generate
- *  a metadata callback.
- *
- *  Note that in the course of processing the last frame, errors can
- *  occur, so the caller should be sure to check the return value to
- *  ensure the file was encoded properly.
- *
- *  In the event of a prematurely-terminated encode, it is not strictly
- *  necessary to call this immediately before FLAC__stream_encoder_delete()
- *  but it is good practice to match every FLAC__stream_encoder_init_*()
- *  with a FLAC__stream_encoder_finish().
- *
- * \param  encoder  An uninitialized encoder instance.
- * \assert
- *    \code encoder != NULL \endcode
- * \retval FLAC__bool
- *    \c false if an error occurred processing the last frame; or if verify
- *    mode is set (see FLAC__stream_encoder_set_verify()), there was a
- *    verify mismatch; else \c true.  If \c false, caller should check the
- *    state with FLAC__stream_encoder_get_state() for more information
- *    about the error.
- */
-FLAC_API FLAC__bool FLAC__stream_encoder_finish(FLAC__StreamEncoder *encoder);
-
-/** Submit data for encoding.
- *  This version allows you to supply the input data via an array of
- *  pointers, each pointer pointing to an array of \a samples samples
- *  representing one channel.  The samples need not be block-aligned,
- *  but each channel should have the same number of samples.  Each sample
- *  should be a signed integer, right-justified to the resolution set by
- *  FLAC__stream_encoder_set_bits_per_sample().  For example, if the
- *  resolution is 16 bits per sample, the samples should all be in the
- *  range [-32768,32767].
- *
- *  For applications where channel order is important, channels must
- *  follow the order as described in the
- *  <A HREF="../format.html#frame_header">frame header</A>.
- *
- * \param  encoder  An initialized encoder instance in the OK state.
- * \param  buffer   An array of pointers to each channel's signal.
- * \param  samples  The number of samples in one channel.
- * \assert
- *    \code encoder != NULL \endcode
- *    \code FLAC__stream_encoder_get_state(encoder) == FLAC__STREAM_ENCODER_OK \endcode
- * \retval FLAC__bool
- *    \c true if successful, else \c false; in this case, check the
- *    encoder state with FLAC__stream_encoder_get_state() to see what
- *    went wrong.
- */
-FLAC_API FLAC__bool FLAC__stream_encoder_process(FLAC__StreamEncoder *encoder, const FLAC__int32 * const buffer[], unsigned samples);
-
-/** Submit data for encoding.
- *  This version allows you to supply the input data where the channels
- *  are interleaved into a single array (i.e. channel0_sample0,
- *  channel1_sample0, ... , channelN_sample0, channel0_sample1, ...).
- *  The samples need not be block-aligned but they must be
- *  sample-aligned, i.e. the first value should be channel0_sample0
- *  and the last value channelN_sampleM.  Each sample should be a signed
- *  integer, right-justified to the resolution set by
- *  FLAC__stream_encoder_set_bits_per_sample().  For example, if the
- *  resolution is 16 bits per sample, the samples should all be in the
- *  range [-32768,32767].
- *
- *  For applications where channel order is important, channels must
- *  follow the order as described in the
- *  <A HREF="../format.html#frame_header">frame header</A>.
- *
- * \param  encoder  An initialized encoder instance in the OK state.
- * \param  buffer   An array of channel-interleaved data (see above).
- * \param  samples  The number of samples in one channel, the same as for
- *                  FLAC__stream_encoder_process().  For example, if
- *                  encoding two channels, \c 1000 \a samples corresponds
- *                  to a \a buffer of 2000 values.
- * \assert
- *    \code encoder != NULL \endcode
- *    \code FLAC__stream_encoder_get_state(encoder) == FLAC__STREAM_ENCODER_OK \endcode
- * \retval FLAC__bool
- *    \c true if successful, else \c false; in this case, check the
- *    encoder state with FLAC__stream_encoder_get_state() to see what
- *    went wrong.
- */
-FLAC_API FLAC__bool FLAC__stream_encoder_process_interleaved(FLAC__StreamEncoder *encoder, const FLAC__int32 buffer[], unsigned samples);
-
-/* \} */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
--- a/win64-mingw/include/ogg/config_types.h	Wed Oct 26 13:24:45 2016 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,25 +0,0 @@
-#ifndef __CONFIG_TYPES_H__
-#define __CONFIG_TYPES_H__
-
-/* these are filled in by configure */
-#define INCLUDE_INTTYPES_H 1
-#define INCLUDE_STDINT_H 1
-#define INCLUDE_SYS_TYPES_H 1
-
-#if INCLUDE_INTTYPES_H
-#  include <inttypes.h>
-#endif
-#if INCLUDE_STDINT_H
-#  include <stdint.h>
-#endif
-#if INCLUDE_SYS_TYPES_H
-#  include <sys/types.h>
-#endif
-
-typedef short ogg_int16_t;
-typedef unsigned short ogg_uint16_t;
-typedef int ogg_int32_t;
-typedef unsigned int ogg_uint32_t;
-typedef long long ogg_int64_t;
-
-#endif
--- a/win64-mingw/include/ogg/ogg.h	Wed Oct 26 13:24:45 2016 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,210 +0,0 @@
-/********************************************************************
- *                                                                  *
- * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
- * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
- * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
- * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
- *                                                                  *
- * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007             *
- * by the Xiph.Org Foundation http://www.xiph.org/                  *
- *                                                                  *
- ********************************************************************
-
- function: toplevel libogg include
- last mod: $Id: ogg.h 18044 2011-08-01 17:55:20Z gmaxwell $
-
- ********************************************************************/
-#ifndef _OGG_H
-#define _OGG_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <stddef.h>
-#include <ogg/os_types.h>
-
-typedef struct {
-  void *iov_base;
-  size_t iov_len;
-} ogg_iovec_t;
-
-typedef struct {
-  long endbyte;
-  int  endbit;
-
-  unsigned char *buffer;
-  unsigned char *ptr;
-  long storage;
-} oggpack_buffer;
-
-/* ogg_page is used to encapsulate the data in one Ogg bitstream page *****/
-
-typedef struct {
-  unsigned char *header;
-  long header_len;
-  unsigned char *body;
-  long body_len;
-} ogg_page;
-
-/* ogg_stream_state contains the current encode/decode state of a logical
-   Ogg bitstream **********************************************************/
-
-typedef struct {
-  unsigned char   *body_data;    /* bytes from packet bodies */
-  long    body_storage;          /* storage elements allocated */
-  long    body_fill;             /* elements stored; fill mark */
-  long    body_returned;         /* elements of fill returned */
-
-
-  int     *lacing_vals;      /* The values that will go to the segment table */
-  ogg_int64_t *granule_vals; /* granulepos values for headers. Not compact
-                                this way, but it is simple coupled to the
-                                lacing fifo */
-  long    lacing_storage;
-  long    lacing_fill;
-  long    lacing_packet;
-  long    lacing_returned;
-
-  unsigned char    header[282];      /* working space for header encode */
-  int              header_fill;
-
-  int     e_o_s;          /* set when we have buffered the last packet in the
-                             logical bitstream */
-  int     b_o_s;          /* set after we've written the initial page
-                             of a logical bitstream */
-  long    serialno;
-  long    pageno;
-  ogg_int64_t  packetno;  /* sequence number for decode; the framing
-                             knows where there's a hole in the data,
-                             but we need coupling so that the codec
-                             (which is in a separate abstraction
-                             layer) also knows about the gap */
-  ogg_int64_t   granulepos;
-
-} ogg_stream_state;
-
-/* ogg_packet is used to encapsulate the data and metadata belonging
-   to a single raw Ogg/Vorbis packet *************************************/
-
-typedef struct {
-  unsigned char *packet;
-  long  bytes;
-  long  b_o_s;
-  long  e_o_s;
-
-  ogg_int64_t  granulepos;
-
-  ogg_int64_t  packetno;     /* sequence number for decode; the framing
-                                knows where there's a hole in the data,
-                                but we need coupling so that the codec
-                                (which is in a separate abstraction
-                                layer) also knows about the gap */
-} ogg_packet;
-
-typedef struct {
-  unsigned char *data;
-  int storage;
-  int fill;
-  int returned;
-
-  int unsynced;
-  int headerbytes;
-  int bodybytes;
-} ogg_sync_state;
-
-/* Ogg BITSTREAM PRIMITIVES: bitstream ************************/
-
-extern void  oggpack_writeinit(oggpack_buffer *b);
-extern int   oggpack_writecheck(oggpack_buffer *b);
-extern void  oggpack_writetrunc(oggpack_buffer *b,long bits);
-extern void  oggpack_writealign(oggpack_buffer *b);
-extern void  oggpack_writecopy(oggpack_buffer *b,void *source,long bits);
-extern void  oggpack_reset(oggpack_buffer *b);
-extern void  oggpack_writeclear(oggpack_buffer *b);
-extern void  oggpack_readinit(oggpack_buffer *b,unsigned char *buf,int bytes);
-extern void  oggpack_write(oggpack_buffer *b,unsigned long value,int bits);
-extern long  oggpack_look(oggpack_buffer *b,int bits);
-extern long  oggpack_look1(oggpack_buffer *b);
-extern void  oggpack_adv(oggpack_buffer *b,int bits);
-extern void  oggpack_adv1(oggpack_buffer *b);
-extern long  oggpack_read(oggpack_buffer *b,int bits);
-extern long  oggpack_read1(oggpack_buffer *b);
-extern long  oggpack_bytes(oggpack_buffer *b);
-extern long  oggpack_bits(oggpack_buffer *b);
-extern unsigned char *oggpack_get_buffer(oggpack_buffer *b);
-
-extern void  oggpackB_writeinit(oggpack_buffer *b);
-extern int   oggpackB_writecheck(oggpack_buffer *b);
-extern void  oggpackB_writetrunc(oggpack_buffer *b,long bits);
-extern void  oggpackB_writealign(oggpack_buffer *b);
-extern void  oggpackB_writecopy(oggpack_buffer *b,void *source,long bits);
-extern void  oggpackB_reset(oggpack_buffer *b);
-extern void  oggpackB_writeclear(oggpack_buffer *b);
-extern void  oggpackB_readinit(oggpack_buffer *b,unsigned char *buf,int bytes);
-extern void  oggpackB_write(oggpack_buffer *b,unsigned long value,int bits);
-extern long  oggpackB_look(oggpack_buffer *b,int bits);
-extern long  oggpackB_look1(oggpack_buffer *b);
-extern void  oggpackB_adv(oggpack_buffer *b,int bits);
-extern void  oggpackB_adv1(oggpack_buffer *b);
-extern long  oggpackB_read(oggpack_buffer *b,int bits);
-extern long  oggpackB_read1(oggpack_buffer *b);
-extern long  oggpackB_bytes(oggpack_buffer *b);
-extern long  oggpackB_bits(oggpack_buffer *b);
-extern unsigned char *oggpackB_get_buffer(oggpack_buffer *b);
-
-/* Ogg BITSTREAM PRIMITIVES: encoding **************************/
-
-extern int      ogg_stream_packetin(ogg_stream_state *os, ogg_packet *op);
-extern int      ogg_stream_iovecin(ogg_stream_state *os, ogg_iovec_t *iov,
-                                   int count, long e_o_s, ogg_int64_t granulepos);
-extern int      ogg_stream_pageout(ogg_stream_state *os, ogg_page *og);
-extern int      ogg_stream_pageout_fill(ogg_stream_state *os, ogg_page *og, int nfill);
-extern int      ogg_stream_flush(ogg_stream_state *os, ogg_page *og);
-extern int      ogg_stream_flush_fill(ogg_stream_state *os, ogg_page *og, int nfill);
-
-/* Ogg BITSTREAM PRIMITIVES: decoding **************************/
-
-extern int      ogg_sync_init(ogg_sync_state *oy);
-extern int      ogg_sync_clear(ogg_sync_state *oy);
-extern int      ogg_sync_reset(ogg_sync_state *oy);
-extern int      ogg_sync_destroy(ogg_sync_state *oy);
-extern int      ogg_sync_check(ogg_sync_state *oy);
-
-extern char    *ogg_sync_buffer(ogg_sync_state *oy, long size);
-extern int      ogg_sync_wrote(ogg_sync_state *oy, long bytes);
-extern long     ogg_sync_pageseek(ogg_sync_state *oy,ogg_page *og);
-extern int      ogg_sync_pageout(ogg_sync_state *oy, ogg_page *og);
-extern int      ogg_stream_pagein(ogg_stream_state *os, ogg_page *og);
-extern int      ogg_stream_packetout(ogg_stream_state *os,ogg_packet *op);
-extern int      ogg_stream_packetpeek(ogg_stream_state *os,ogg_packet *op);
-
-/* Ogg BITSTREAM PRIMITIVES: general ***************************/
-
-extern int      ogg_stream_init(ogg_stream_state *os,int serialno);
-extern int      ogg_stream_clear(ogg_stream_state *os);
-extern int      ogg_stream_reset(ogg_stream_state *os);
-extern int      ogg_stream_reset_serialno(ogg_stream_state *os,int serialno);
-extern int      ogg_stream_destroy(ogg_stream_state *os);
-extern int      ogg_stream_check(ogg_stream_state *os);
-extern int      ogg_stream_eos(ogg_stream_state *os);
-
-extern void     ogg_page_checksum_set(ogg_page *og);
-
-extern int      ogg_page_version(const ogg_page *og);
-extern int      ogg_page_continued(const ogg_page *og);
-extern int      ogg_page_bos(const ogg_page *og);
-extern int      ogg_page_eos(const ogg_page *og);
-extern ogg_int64_t  ogg_page_granulepos(const ogg_page *og);
-extern int      ogg_page_serialno(const ogg_page *og);
-extern long     ogg_page_pageno(const ogg_page *og);
-extern int      ogg_page_packets(const ogg_page *og);
-
-extern void     ogg_packet_clear(ogg_packet *op);
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif  /* _OGG_H */
--- a/win64-mingw/include/ogg/os_types.h	Wed Oct 26 13:24:45 2016 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,147 +0,0 @@
-/********************************************************************
- *                                                                  *
- * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
- * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
- * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
- * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
- *                                                                  *
- * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002             *
- * by the Xiph.Org Foundation http://www.xiph.org/                  *
- *                                                                  *
- ********************************************************************
-
- function: #ifdef jail to whip a few platforms into the UNIX ideal.
- last mod: $Id: os_types.h 17712 2010-12-03 17:10:02Z xiphmont $
-
- ********************************************************************/
-#ifndef _OS_TYPES_H
-#define _OS_TYPES_H
-
-/* make it easy on the folks that want to compile the libs with a
-   different malloc than stdlib */
-#define _ogg_malloc  malloc
-#define _ogg_calloc  calloc
-#define _ogg_realloc realloc
-#define _ogg_free    free
-
-#if defined(_WIN32) 
-
-#  if defined(__CYGWIN__)
-#    include <stdint.h>
-     typedef int16_t ogg_int16_t;
-     typedef uint16_t ogg_uint16_t;
-     typedef int32_t ogg_int32_t;
-     typedef uint32_t ogg_uint32_t;
-     typedef int64_t ogg_int64_t;
-     typedef uint64_t ogg_uint64_t;
-#  elif defined(__MINGW32__)
-#    include <sys/types.h>
-     typedef short ogg_int16_t;
-     typedef unsigned short ogg_uint16_t;
-     typedef int ogg_int32_t;
-     typedef unsigned int ogg_uint32_t;
-     typedef long long ogg_int64_t;
-     typedef unsigned long long ogg_uint64_t;
-#  elif defined(__MWERKS__)
-     typedef long long ogg_int64_t;
-     typedef int ogg_int32_t;
-     typedef unsigned int ogg_uint32_t;
-     typedef short ogg_int16_t;
-     typedef unsigned short ogg_uint16_t;
-#  else
-     /* MSVC/Borland */
-     typedef __int64 ogg_int64_t;
-     typedef __int32 ogg_int32_t;
-     typedef unsigned __int32 ogg_uint32_t;
-     typedef __int16 ogg_int16_t;
-     typedef unsigned __int16 ogg_uint16_t;
-#  endif
-
-#elif defined(__MACOS__)
-
-#  include <sys/types.h>
-   typedef SInt16 ogg_int16_t;
-   typedef UInt16 ogg_uint16_t;
-   typedef SInt32 ogg_int32_t;
-   typedef UInt32 ogg_uint32_t;
-   typedef SInt64 ogg_int64_t;
-
-#elif (defined(__APPLE__) && defined(__MACH__)) /* MacOS X Framework build */
-
-#  include <inttypes.h>
-   typedef int16_t ogg_int16_t;
-   typedef uint16_t ogg_uint16_t;
-   typedef int32_t ogg_int32_t;
-   typedef uint32_t ogg_uint32_t;
-   typedef int64_t ogg_int64_t;
-
-#elif defined(__HAIKU__)
-
-  /* Haiku */
-#  include <sys/types.h>
-   typedef short ogg_int16_t;
-   typedef unsigned short ogg_uint16_t;
-   typedef int ogg_int32_t;
-   typedef unsigned int ogg_uint32_t;
-   typedef long long ogg_int64_t;
-
-#elif defined(__BEOS__)
-
-   /* Be */
-#  include <inttypes.h>
-   typedef int16_t ogg_int16_t;
-   typedef uint16_t ogg_uint16_t;
-   typedef int32_t ogg_int32_t;
-   typedef uint32_t ogg_uint32_t;
-   typedef int64_t ogg_int64_t;
-
-#elif defined (__EMX__)
-
-   /* OS/2 GCC */
-   typedef short ogg_int16_t;
-   typedef unsigned short ogg_uint16_t;
-   typedef int ogg_int32_t;
-   typedef unsigned int ogg_uint32_t;
-   typedef long long ogg_int64_t;
-
-#elif defined (DJGPP)
-
-   /* DJGPP */
-   typedef short ogg_int16_t;
-   typedef int ogg_int32_t;
-   typedef unsigned int ogg_uint32_t;
-   typedef long long ogg_int64_t;
-
-#elif defined(R5900)
-
-   /* PS2 EE */
-   typedef long ogg_int64_t;
-   typedef int ogg_int32_t;
-   typedef unsigned ogg_uint32_t;
-   typedef short ogg_int16_t;
-
-#elif defined(__SYMBIAN32__)
-
-   /* Symbian GCC */
-   typedef signed short ogg_int16_t;
-   typedef unsigned short ogg_uint16_t;
-   typedef signed int ogg_int32_t;
-   typedef unsigned int ogg_uint32_t;
-   typedef long long int ogg_int64_t;
-
-#elif defined(__TMS320C6X__)
-
-   /* TI C64x compiler */
-   typedef signed short ogg_int16_t;
-   typedef unsigned short ogg_uint16_t;
-   typedef signed int ogg_int32_t;
-   typedef unsigned int ogg_uint32_t;
-   typedef long long int ogg_int64_t;
-
-#else
-
-#  include <ogg/config_types.h>
-
-#endif
-
-#endif  /* _OS_TYPES_H */
--- a/win64-mingw/include/sndfile.h	Wed Oct 26 13:24:45 2016 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,666 +0,0 @@
-/*
-** 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 off_t	sf_count_t ;
-#define SF_COUNT_MAX		0x7FFFFFFF
-#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 */
-
--- a/win64-mingw/include/sndfile.hh	Wed Oct 26 13:24:45 2016 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,422 +0,0 @@
-/*
-** Copyright (C) 2005-2011 Erik de Castro Lopo <erikd@mega-nerd.com>
-**
-** All rights reserved.
-**
-** Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-**
-**     * Redistributions of source code must retain the above copyright
-**       notice, this list of conditions and the following disclaimer.
-**     * Redistributions in binary form must reproduce the above copyright
-**       notice, this list of conditions and the following disclaimer in
-**       the documentation and/or other materials provided with the
-**       distribution.
-**     * Neither the author nor the names of any contributors may be used
-**       to endorse or promote products derived from this software without
-**       specific prior written permission.
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
-** TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-** PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-** CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-** EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-** PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
-** OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-** WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-** OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
-** ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/*
-** The above modified BSD style license (GPL and LGPL compatible) applies to
-** this file. It does not apply to libsndfile itself which is released under
-** the GNU LGPL or the libsndfile test suite which is released under the GNU
-** GPL.
-** This means that this header file can be used under this modified BSD style
-** license, but the LGPL still holds for the libsndfile library itself.
-*/
-
-/*
-** sndfile.hh -- A lightweight C++ wrapper for the libsndfile API.
-**
-** All the methods are inlines and all functionality is contained in this
-** file. There is no separate implementation file.
-**
-** API documentation is in the doc/ directory of the source code tarball
-** and at http://www.mega-nerd.com/libsndfile/api.html.
-*/
-
-#ifndef SNDFILE_HH
-#define SNDFILE_HH
-
-#include <sndfile.h>
-
-#include <string>
-#include <new> // for std::nothrow
-
-class SndfileHandle
-{	private :
-		struct SNDFILE_ref
-		{	SNDFILE_ref (void) ;
-			~SNDFILE_ref (void) ;
-
-			SNDFILE *sf ;
-			SF_INFO sfinfo ;
-			int ref ;
-			} ;
-
-		SNDFILE_ref *p ;
-
-	public :
-			/* Default constructor */
-			SndfileHandle (void) : p (NULL) {} ;
-			SndfileHandle (const char *path, int mode = SFM_READ,
-							int format = 0, int channels = 0, int samplerate = 0) ;
-			SndfileHandle (std::string const & path, int mode = SFM_READ,
-							int format = 0, int channels = 0, int samplerate = 0) ;
-			SndfileHandle (int fd, bool close_desc, int mode = SFM_READ,
-							int format = 0, int channels = 0, int samplerate = 0) ;
-
-#ifdef ENABLE_SNDFILE_WINDOWS_PROTOTYPES
-			SndfileHandle (LPCWSTR wpath, int mode = SFM_READ,
-							int format = 0, int channels = 0, int samplerate = 0) ;
-#endif
-
-			~SndfileHandle (void) ;
-
-			SndfileHandle (const SndfileHandle &orig) ;
-			SndfileHandle & operator = (const SndfileHandle &rhs) ;
-
-		/* Mainly for debugging/testing. */
-		int refCount (void) const { return (p == NULL) ? 0 : p->ref ; }
-
-		operator bool () const { return (p != NULL) ; }
-
-		bool operator == (const SndfileHandle &rhs) const { return (p == rhs.p) ; }
-
-		sf_count_t	frames (void) const		{ return p ? p->sfinfo.frames : 0 ; }
-		int			format (void) const		{ return p ? p->sfinfo.format : 0 ; }
-		int			channels (void) const	{ return p ? p->sfinfo.channels : 0 ; }
-		int			samplerate (void) const { return p ? p->sfinfo.samplerate : 0 ; }
-
-		int error (void) const ;
-		const char * strError (void) const ;
-
-		int command (int cmd, void *data, int datasize) ;
-
-		sf_count_t	seek (sf_count_t frames, int whence) ;
-
-		void writeSync (void) ;
-
-		int setString (int str_type, const char* str) ;
-
-		const char* getString (int str_type) const ;
-
-		static int formatCheck (int format, int channels, int samplerate) ;
-
-		sf_count_t read (short *ptr, sf_count_t items) ;
-		sf_count_t read (int *ptr, sf_count_t items) ;
-		sf_count_t read (float *ptr, sf_count_t items) ;
-		sf_count_t read (double *ptr, sf_count_t items) ;
-
-		sf_count_t write (const short *ptr, sf_count_t items) ;
-		sf_count_t write (const int *ptr, sf_count_t items) ;
-		sf_count_t write (const float *ptr, sf_count_t items) ;
-		sf_count_t write (const double *ptr, sf_count_t items) ;
-
-		sf_count_t readf (short *ptr, sf_count_t frames) ;
-		sf_count_t readf (int *ptr, sf_count_t frames) ;
-		sf_count_t readf (float *ptr, sf_count_t frames) ;
-		sf_count_t readf (double *ptr, sf_count_t frames) ;
-
-		sf_count_t writef (const short *ptr, sf_count_t frames) ;
-		sf_count_t writef (const int *ptr, sf_count_t frames) ;
-		sf_count_t writef (const float *ptr, sf_count_t frames) ;
-		sf_count_t writef (const double *ptr, sf_count_t frames) ;
-
-		sf_count_t	readRaw		(void *ptr, sf_count_t bytes) ;
-		sf_count_t	writeRaw	(const void *ptr, sf_count_t bytes) ;
-
-		/**< Raw access to the handle. SndfileHandle keeps ownership. */
-		SNDFILE * rawHandle (void) ;
-
-		/**< Take ownership of handle, iff reference count is 1. */
-		SNDFILE * takeOwnership (void) ;
-} ;
-
-/*==============================================================================
-**	Nothing but implementation below.
-*/
-
-inline
-SndfileHandle::SNDFILE_ref::SNDFILE_ref (void)
-: ref (1)
-{}
-
-inline
-SndfileHandle::SNDFILE_ref::~SNDFILE_ref (void)
-{	if (sf != NULL) sf_close (sf) ; }
-
-inline
-SndfileHandle::SndfileHandle (const char *path, int mode, int fmt, int chans, int srate)
-: p (NULL)
-{
-	p = new (std::nothrow) SNDFILE_ref () ;
-
-	if (p != NULL)
-	{	p->ref = 1 ;
-
-		p->sfinfo.frames = 0 ;
-		p->sfinfo.channels = chans ;
-		p->sfinfo.format = fmt ;
-		p->sfinfo.samplerate = srate ;
-		p->sfinfo.sections = 0 ;
-		p->sfinfo.seekable = 0 ;
-
-		p->sf = sf_open (path, mode, &p->sfinfo) ;
-		} ;
-
-	return ;
-} /* SndfileHandle const char * constructor */
-
-inline
-SndfileHandle::SndfileHandle (std::string const & path, int mode, int fmt, int chans, int srate)
-: p (NULL)
-{
-	p = new (std::nothrow) SNDFILE_ref () ;
-
-	if (p != NULL)
-	{	p->ref = 1 ;
-
-		p->sfinfo.frames = 0 ;
-		p->sfinfo.channels = chans ;
-		p->sfinfo.format = fmt ;
-		p->sfinfo.samplerate = srate ;
-		p->sfinfo.sections = 0 ;
-		p->sfinfo.seekable = 0 ;
-
-		p->sf = sf_open (path.c_str (), mode, &p->sfinfo) ;
-		} ;
-
-	return ;
-} /* SndfileHandle std::string constructor */
-
-inline
-SndfileHandle::SndfileHandle (int fd, bool close_desc, int mode, int fmt, int chans, int srate)
-: p (NULL)
-{
-	if (fd < 0)
-		return ;
-
-	p = new (std::nothrow) SNDFILE_ref () ;
-
-	if (p != NULL)
-	{	p->ref = 1 ;
-
-		p->sfinfo.frames = 0 ;
-		p->sfinfo.channels = chans ;
-		p->sfinfo.format = fmt ;
-		p->sfinfo.samplerate = srate ;
-		p->sfinfo.sections = 0 ;
-		p->sfinfo.seekable = 0 ;
-
-		p->sf = sf_open_fd (fd, mode, &p->sfinfo, close_desc) ;
-		} ;
-
-	return ;
-} /* SndfileHandle fd constructor */
-
-inline
-SndfileHandle::~SndfileHandle (void)
-{	if (p != NULL && --p->ref == 0)
-		delete p ;
-} /* SndfileHandle destructor */
-
-
-inline
-SndfileHandle::SndfileHandle (const SndfileHandle &orig)
-: p (orig.p)
-{	if (p != NULL)
-		++p->ref ;
-} /* SndfileHandle copy constructor */
-
-inline SndfileHandle &
-SndfileHandle::operator = (const SndfileHandle &rhs)
-{
-	if (&rhs == this)
-		return *this ;
-	if (p != NULL && --p->ref == 0)
-		delete p ;
-
-	p = rhs.p ;
-	if (p != NULL)
-		++p->ref ;
-
-	return *this ;
-} /* SndfileHandle assignment operator */
-
-inline int
-SndfileHandle::error (void) const
-{	return sf_error (p->sf) ; }
-
-inline const char *
-SndfileHandle::strError (void) const
-{	return sf_strerror (p->sf) ; }
-
-inline int
-SndfileHandle::command (int cmd, void *data, int datasize)
-{	return sf_command (p->sf, cmd, data, datasize) ; }
-
-inline sf_count_t
-SndfileHandle::seek (sf_count_t frame_count, int whence)
-{	return sf_seek (p->sf, frame_count, whence) ; }
-
-inline void
-SndfileHandle::writeSync (void)
-{	sf_write_sync (p->sf) ; }
-
-inline int
-SndfileHandle::setString (int str_type, const char* str)
-{	return sf_set_string (p->sf, str_type, str) ; }
-
-inline const char*
-SndfileHandle::getString (int str_type) const
-{	return sf_get_string (p->sf, str_type) ; }
-
-inline int
-SndfileHandle::formatCheck (int fmt, int chans, int srate)
-{
-	SF_INFO sfinfo ;
-
-	sfinfo.frames = 0 ;
-	sfinfo.channels = chans ;
-	sfinfo.format = fmt ;
-	sfinfo.samplerate = srate ;
-	sfinfo.sections = 0 ;
-	sfinfo.seekable = 0 ;
-
-	return sf_format_check (&sfinfo) ;
-}
-
-/*---------------------------------------------------------------------*/
-
-inline sf_count_t
-SndfileHandle::read (short *ptr, sf_count_t items)
-{	return sf_read_short (p->sf, ptr, items) ; }
-
-inline sf_count_t
-SndfileHandle::read (int *ptr, sf_count_t items)
-{	return sf_read_int (p->sf, ptr, items) ; }
-
-inline sf_count_t
-SndfileHandle::read (float *ptr, sf_count_t items)
-{	return sf_read_float (p->sf, ptr, items) ; }
-
-inline sf_count_t
-SndfileHandle::read (double *ptr, sf_count_t items)
-{	return sf_read_double (p->sf, ptr, items) ; }
-
-inline sf_count_t
-SndfileHandle::write (const short *ptr, sf_count_t items)
-{	return sf_write_short (p->sf, ptr, items) ; }
-
-inline sf_count_t
-SndfileHandle::write (const int *ptr, sf_count_t items)
-{	return sf_write_int (p->sf, ptr, items) ; }
-
-inline sf_count_t
-SndfileHandle::write (const float *ptr, sf_count_t items)
-{	return sf_write_float (p->sf, ptr, items) ; }
-
-inline sf_count_t
-SndfileHandle::write (const double *ptr, sf_count_t items)
-{	return sf_write_double (p->sf, ptr, items) ; }
-
-inline sf_count_t
-SndfileHandle::readf (short *ptr, sf_count_t frame_count)
-{	return sf_readf_short (p->sf, ptr, frame_count) ; }
-
-inline sf_count_t
-SndfileHandle::readf (int *ptr, sf_count_t frame_count)
-{	return sf_readf_int (p->sf, ptr, frame_count) ; }
-
-inline sf_count_t
-SndfileHandle::readf (float *ptr, sf_count_t frame_count)
-{	return sf_readf_float (p->sf, ptr, frame_count) ; }
-
-inline sf_count_t
-SndfileHandle::readf (double *ptr, sf_count_t frame_count)
-{	return sf_readf_double (p->sf, ptr, frame_count) ; }
-
-inline sf_count_t
-SndfileHandle::writef (const short *ptr, sf_count_t frame_count)
-{	return sf_writef_short (p->sf, ptr, frame_count) ; }
-
-inline sf_count_t
-SndfileHandle::writef (const int *ptr, sf_count_t frame_count)
-{	return sf_writef_int (p->sf, ptr, frame_count) ; }
-
-inline sf_count_t
-SndfileHandle::writef (const float *ptr, sf_count_t frame_count)
-{	return sf_writef_float (p->sf, ptr, frame_count) ; }
-
-inline sf_count_t
-SndfileHandle::writef (const double *ptr, sf_count_t frame_count)
-{	return sf_writef_double (p->sf, ptr, frame_count) ; }
-
-inline sf_count_t
-SndfileHandle::readRaw (void *ptr, sf_count_t bytes)
-{	return sf_read_raw (p->sf, ptr, bytes) ; }
-
-inline sf_count_t
-SndfileHandle::writeRaw (const void *ptr, sf_count_t bytes)
-{	return sf_write_raw (p->sf, ptr, bytes) ; }
-
-inline SNDFILE *
-SndfileHandle::rawHandle (void)
-{	return (p ? p->sf : NULL) ; }
-
-inline SNDFILE *
-SndfileHandle::takeOwnership (void)
-{
-	if (p == NULL || (p->ref != 1))
-		return NULL ;
-
-	SNDFILE * sf = p->sf ;
-	p->sf = NULL ;
-	delete p ;
-	p = NULL ;
-	return sf ;
-}
-
-#ifdef ENABLE_SNDFILE_WINDOWS_PROTOTYPES
-
-inline
-SndfileHandle::SndfileHandle (LPCWSTR wpath, int mode, int fmt, int chans, int srate)
-: p (NULL)
-{
-	p = new (std::nothrow) SNDFILE_ref () ;
-
-	if (p != NULL)
-	{	p->ref = 1 ;
-
-		p->sfinfo.frames = 0 ;
-		p->sfinfo.channels = chans ;
-		p->sfinfo.format = fmt ;
-		p->sfinfo.samplerate = srate ;
-		p->sfinfo.sections = 0 ;
-		p->sfinfo.seekable = 0 ;
-
-		p->sf = sf_wchar_open (wpath, mode, &p->sfinfo) ;
-		} ;
-
-	return ;
-} /* SndfileHandle const wchar_t * constructor */
-
-#endif
-
-#endif	/* SNDFILE_HH */
-
--- a/win64-mingw/include/vorbis/codec.h	Wed Oct 26 13:24:45 2016 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,243 +0,0 @@
-/********************************************************************
- *                                                                  *
- * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
- * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
- * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
- * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
- *                                                                  *
- * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001             *
- * by the Xiph.Org Foundation http://www.xiph.org/                  *
-
- ********************************************************************
-
- function: libvorbis codec headers
- last mod: $Id: codec.h 17021 2010-03-24 09:29:41Z xiphmont $
-
- ********************************************************************/
-
-#ifndef _vorbis_codec_h_
-#define _vorbis_codec_h_
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-#include <ogg/ogg.h>
-
-typedef struct vorbis_info{
-  int version;
-  int channels;
-  long rate;
-
-  /* The below bitrate declarations are *hints*.
-     Combinations of the three values carry the following implications:
-
-     all three set to the same value:
-       implies a fixed rate bitstream
-     only nominal set:
-       implies a VBR stream that averages the nominal bitrate.  No hard
-       upper/lower limit
-     upper and or lower set:
-       implies a VBR bitstream that obeys the bitrate limits. nominal
-       may also be set to give a nominal rate.
-     none set:
-       the coder does not care to speculate.
-  */
-
-  long bitrate_upper;
-  long bitrate_nominal;
-  long bitrate_lower;
-  long bitrate_window;
-
-  void *codec_setup;
-} vorbis_info;
-
-/* vorbis_dsp_state buffers the current vorbis audio
-   analysis/synthesis state.  The DSP state belongs to a specific
-   logical bitstream ****************************************************/
-typedef struct vorbis_dsp_state{
-  int analysisp;
-  vorbis_info *vi;
-
-  float **pcm;
-  float **pcmret;
-  int      pcm_storage;
-  int      pcm_current;
-  int      pcm_returned;
-
-  int  preextrapolate;
-  int  eofflag;
-
-  long lW;
-  long W;
-  long nW;
-  long centerW;
-
-  ogg_int64_t granulepos;
-  ogg_int64_t sequence;
-
-  ogg_int64_t glue_bits;
-  ogg_int64_t time_bits;
-  ogg_int64_t floor_bits;
-  ogg_int64_t res_bits;
-
-  void       *backend_state;
-} vorbis_dsp_state;
-
-typedef struct vorbis_block{
-  /* necessary stream state for linking to the framing abstraction */
-  float  **pcm;       /* this is a pointer into local storage */
-  oggpack_buffer opb;
-
-  long  lW;
-  long  W;
-  long  nW;
-  int   pcmend;
-  int   mode;
-
-  int         eofflag;
-  ogg_int64_t granulepos;
-  ogg_int64_t sequence;
-  vorbis_dsp_state *vd; /* For read-only access of configuration */
-
-  /* local storage to avoid remallocing; it's up to the mapping to
-     structure it */
-  void               *localstore;
-  long                localtop;
-  long                localalloc;
-  long                totaluse;
-  struct alloc_chain *reap;
-
-  /* bitmetrics for the frame */
-  long glue_bits;
-  long time_bits;
-  long floor_bits;
-  long res_bits;
-
-  void *internal;
-
-} vorbis_block;
-
-/* vorbis_block is a single block of data to be processed as part of
-the analysis/synthesis stream; it belongs to a specific logical
-bitstream, but is independent from other vorbis_blocks belonging to
-that logical bitstream. *************************************************/
-
-struct alloc_chain{
-  void *ptr;
-  struct alloc_chain *next;
-};
-
-/* vorbis_info contains all the setup information specific to the
-   specific compression/decompression mode in progress (eg,
-   psychoacoustic settings, channel setup, options, codebook
-   etc). vorbis_info and substructures are in backends.h.
-*********************************************************************/
-
-/* the comments are not part of vorbis_info so that vorbis_info can be
-   static storage */
-typedef struct vorbis_comment{
-  /* unlimited user comment fields.  libvorbis writes 'libvorbis'
-     whatever vendor is set to in encode */
-  char **user_comments;
-  int   *comment_lengths;
-  int    comments;
-  char  *vendor;
-
-} vorbis_comment;
-
-
-/* libvorbis encodes in two abstraction layers; first we perform DSP
-   and produce a packet (see docs/analysis.txt).  The packet is then
-   coded into a framed OggSquish bitstream by the second layer (see
-   docs/framing.txt).  Decode is the reverse process; we sync/frame
-   the bitstream and extract individual packets, then decode the
-   packet back into PCM audio.
-
-   The extra framing/packetizing is used in streaming formats, such as
-   files.  Over the net (such as with UDP), the framing and
-   packetization aren't necessary as they're provided by the transport
-   and the streaming layer is not used */
-
-/* Vorbis PRIMITIVES: general ***************************************/
-
-extern void     vorbis_info_init(vorbis_info *vi);
-extern void     vorbis_info_clear(vorbis_info *vi);
-extern int      vorbis_info_blocksize(vorbis_info *vi,int zo);
-extern void     vorbis_comment_init(vorbis_comment *vc);
-extern void     vorbis_comment_add(vorbis_comment *vc, const char *comment);
-extern void     vorbis_comment_add_tag(vorbis_comment *vc,
-                                       const char *tag, const char *contents);
-extern char    *vorbis_comment_query(vorbis_comment *vc, const char *tag, int count);
-extern int      vorbis_comment_query_count(vorbis_comment *vc, const char *tag);
-extern void     vorbis_comment_clear(vorbis_comment *vc);
-
-extern int      vorbis_block_init(vorbis_dsp_state *v, vorbis_block *vb);
-extern int      vorbis_block_clear(vorbis_block *vb);
-extern void     vorbis_dsp_clear(vorbis_dsp_state *v);
-extern double   vorbis_granule_time(vorbis_dsp_state *v,
-                                    ogg_int64_t granulepos);
-
-extern const char *vorbis_version_string(void);
-
-/* Vorbis PRIMITIVES: analysis/DSP layer ****************************/
-
-extern int      vorbis_analysis_init(vorbis_dsp_state *v,vorbis_info *vi);
-extern int      vorbis_commentheader_out(vorbis_comment *vc, ogg_packet *op);
-extern int      vorbis_analysis_headerout(vorbis_dsp_state *v,
-                                          vorbis_comment *vc,
-                                          ogg_packet *op,
-                                          ogg_packet *op_comm,
-                                          ogg_packet *op_code);
-extern float  **vorbis_analysis_buffer(vorbis_dsp_state *v,int vals);
-extern int      vorbis_analysis_wrote(vorbis_dsp_state *v,int vals);
-extern int      vorbis_analysis_blockout(vorbis_dsp_state *v,vorbis_block *vb);
-extern int      vorbis_analysis(vorbis_block *vb,ogg_packet *op);
-
-extern int      vorbis_bitrate_addblock(vorbis_block *vb);
-extern int      vorbis_bitrate_flushpacket(vorbis_dsp_state *vd,
-                                           ogg_packet *op);
-
-/* Vorbis PRIMITIVES: synthesis layer *******************************/
-extern int      vorbis_synthesis_idheader(ogg_packet *op);
-extern int      vorbis_synthesis_headerin(vorbis_info *vi,vorbis_comment *vc,
-                                          ogg_packet *op);
-
-extern int      vorbis_synthesis_init(vorbis_dsp_state *v,vorbis_info *vi);
-extern int      vorbis_synthesis_restart(vorbis_dsp_state *v);
-extern int      vorbis_synthesis(vorbis_block *vb,ogg_packet *op);
-extern int      vorbis_synthesis_trackonly(vorbis_block *vb,ogg_packet *op);
-extern int      vorbis_synthesis_blockin(vorbis_dsp_state *v,vorbis_block *vb);
-extern int      vorbis_synthesis_pcmout(vorbis_dsp_state *v,float ***pcm);
-extern int      vorbis_synthesis_lapout(vorbis_dsp_state *v,float ***pcm);
-extern int      vorbis_synthesis_read(vorbis_dsp_state *v,int samples);
-extern long     vorbis_packet_blocksize(vorbis_info *vi,ogg_packet *op);
-
-extern int      vorbis_synthesis_halfrate(vorbis_info *v,int flag);
-extern int      vorbis_synthesis_halfrate_p(vorbis_info *v);
-
-/* Vorbis ERRORS and return codes ***********************************/
-
-#define OV_FALSE      -1
-#define OV_EOF        -2
-#define OV_HOLE       -3
-
-#define OV_EREAD      -128
-#define OV_EFAULT     -129
-#define OV_EIMPL      -130
-#define OV_EINVAL     -131
-#define OV_ENOTVORBIS -132
-#define OV_EBADHEADER -133
-#define OV_EVERSION   -134
-#define OV_ENOTAUDIO  -135
-#define OV_EBADPACKET -136
-#define OV_EBADLINK   -137
-#define OV_ENOSEEK    -138
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif
-
--- a/win64-mingw/include/vorbis/vorbisenc.h	Wed Oct 26 13:24:45 2016 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,436 +0,0 @@
-/********************************************************************
- *                                                                  *
- * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
- * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
- * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
- * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
- *                                                                  *
- * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001             *
- * by the Xiph.Org Foundation http://www.xiph.org/                  *
- *                                                                  *
- ********************************************************************
-
- function: vorbis encode-engine setup
- last mod: $Id: vorbisenc.h 17021 2010-03-24 09:29:41Z xiphmont $
-
- ********************************************************************/
-
-/** \file
- * Libvorbisenc is a convenient API for setting up an encoding
- * environment using libvorbis. Libvorbisenc encapsulates the
- * actions needed to set up the encoder properly.
- */
-
-#ifndef _OV_ENC_H_
-#define _OV_ENC_H_
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-#include "codec.h"
-
-/**
- * This is the primary function within libvorbisenc for setting up managed
- * bitrate modes.
- *
- * Before this function is called, the \ref vorbis_info
- * struct should be initialized by using vorbis_info_init() from the libvorbis
- * API.  After encoding, vorbis_info_clear() should be called.
- *
- * The max_bitrate, nominal_bitrate, and min_bitrate settings are used to set
- * constraints for the encoded file.  This function uses these settings to
- * select the appropriate encoding mode and set it up.
- *
- * \param vi               Pointer to an initialized \ref vorbis_info struct.
- * \param channels         The number of channels to be encoded.
- * \param rate             The sampling rate of the source audio.
- * \param max_bitrate      Desired maximum bitrate (limit). -1 indicates unset.
- * \param nominal_bitrate  Desired average, or central, bitrate. -1 indicates unset.
- * \param min_bitrate      Desired minimum bitrate. -1 indicates unset.
- *
- * \return Zero for success, and negative values for failure.
- *
- * \retval 0          Success.
- * \retval OV_EFAULT  Internal logic fault; indicates a bug or heap/stack corruption.
- * \retval OV_EINVAL  Invalid setup request, eg, out of range argument.
- * \retval OV_EIMPL   Unimplemented mode; unable to comply with bitrate request.
- */
-extern int vorbis_encode_init(vorbis_info *vi,
-                              long channels,
-                              long rate,
-
-                              long max_bitrate,
-                              long nominal_bitrate,
-                              long min_bitrate);
-
-/**
- * This function performs step-one of a three-step bitrate-managed encode
- * setup.  It functions similarly to the one-step setup performed by \ref
- * vorbis_encode_init but allows an application to make further encode setup
- * tweaks using \ref vorbis_encode_ctl before finally calling \ref
- * vorbis_encode_setup_init to complete the setup process.
- *
- * Before this function is called, the \ref vorbis_info struct should be
- * initialized by using vorbis_info_init() from the libvorbis API.  After
- * encoding, vorbis_info_clear() should be called.
- *
- * The max_bitrate, nominal_bitrate, and min_bitrate settings are used to set
- * constraints for the encoded file.  This function uses these settings to
- * select the appropriate encoding mode and set it up.
- *
- * \param vi                Pointer to an initialized vorbis_info struct.
- * \param channels          The number of channels to be encoded.
- * \param rate              The sampling rate of the source audio.
- * \param max_bitrate       Desired maximum bitrate (limit). -1 indicates unset.
- * \param nominal_bitrate   Desired average, or central, bitrate. -1 indicates unset.
- * \param min_bitrate       Desired minimum bitrate. -1 indicates unset.
- *
- * \return Zero for success, and negative for failure.
- *
- * \retval 0           Success
- * \retval OV_EFAULT   Internal logic fault; indicates a bug or heap/stack corruption.
- * \retval OV_EINVAL   Invalid setup request, eg, out of range argument.
- * \retval OV_EIMPL    Unimplemented mode; unable to comply with bitrate request.
- */
-extern int vorbis_encode_setup_managed(vorbis_info *vi,
-                                       long channels,
-                                       long rate,
-
-                                       long max_bitrate,
-                                       long nominal_bitrate,
-                                       long min_bitrate);
-
-/**
- * This function performs step-one of a three-step variable bitrate
- * (quality-based) encode setup.  It functions similarly to the one-step setup
- * performed by \ref vorbis_encode_init_vbr() but allows an application to
- * make further encode setup tweaks using \ref vorbis_encode_ctl() before
- * finally calling \ref vorbis_encode_setup_init to complete the setup
- * process.
- *
- * Before this function is called, the \ref vorbis_info struct should be
- * initialized by using \ref vorbis_info_init() from the libvorbis API.  After
- * encoding, vorbis_info_clear() should be called.
- *
- * \param vi        Pointer to an initialized vorbis_info struct.
- * \param channels  The number of channels to be encoded.
- * \param rate      The sampling rate of the source audio.
- * \param quality   Desired quality level, currently from -0.1 to 1.0 (lo to hi).
- *
- * \return Zero for success, and negative values for failure.
- *
- * \retval  0          Success
- * \retval  OV_EFAULT  Internal logic fault; indicates a bug or heap/stack corruption.
- * \retval  OV_EINVAL  Invalid setup request, eg, out of range argument.
- * \retval  OV_EIMPL   Unimplemented mode; unable to comply with quality level request.
- */
-extern int vorbis_encode_setup_vbr(vorbis_info *vi,
-                                  long channels,
-                                  long rate,
-
-                                  float quality
-                                  );
-
-/**
- * This is the primary function within libvorbisenc for setting up variable
- * bitrate ("quality" based) modes.
- *
- *
- * Before this function is called, the vorbis_info struct should be
- * initialized by using vorbis_info_init() from the libvorbis API. After
- * encoding, vorbis_info_clear() should be called.
- *
- * \param vi           Pointer to an initialized vorbis_info struct.
- * \param channels     The number of channels to be encoded.
- * \param rate         The sampling rate of the source audio.
- * \param base_quality Desired quality level, currently from -0.1 to 1.0 (lo to hi).
- *
- *
- * \return Zero for success, or a negative number for failure.
- *
- * \retval 0           Success
- * \retval OV_EFAULT   Internal logic fault; indicates a bug or heap/stack corruption.
- * \retval OV_EINVAL   Invalid setup request, eg, out of range argument.
- * \retval OV_EIMPL    Unimplemented mode; unable to comply with quality level request.
- */
-extern int vorbis_encode_init_vbr(vorbis_info *vi,
-                                  long channels,
-                                  long rate,
-
-                                  float base_quality
-                                  );
-
-/**
- * This function performs the last stage of three-step encoding setup, as
- * described in the API overview under managed bitrate modes.
- *
- * Before this function is called, the \ref vorbis_info struct should be
- * initialized by using vorbis_info_init() from the libvorbis API, one of
- * \ref vorbis_encode_setup_managed() or \ref vorbis_encode_setup_vbr() called to
- * initialize the high-level encoding setup, and \ref vorbis_encode_ctl()
- * called if necessary to make encoding setup changes.
- * vorbis_encode_setup_init() finalizes the highlevel encoding structure into
- * a complete encoding setup after which the application may make no further
- * setup changes.
- *
- * After encoding, vorbis_info_clear() should be called.
- *
- * \param vi Pointer to an initialized \ref vorbis_info struct.
- *
- * \return Zero for success, and negative values for failure.
- *
- * \retval  0           Success.
- * \retval  OV_EFAULT  Internal logic fault; indicates a bug or heap/stack corruption.
- *
- * \retval OV_EINVAL   Attempt to use vorbis_encode_setup_init() without first
- * calling one of vorbis_encode_setup_managed() or vorbis_encode_setup_vbr() to
- * initialize the high-level encoding setup
- *
- */
-extern int vorbis_encode_setup_init(vorbis_info *vi);
-
-/**
- * This function implements a generic interface to miscellaneous encoder
- * settings similar to the classic UNIX 'ioctl()' system call.  Applications
- * may use vorbis_encode_ctl() to query or set bitrate management or quality
- * mode details by using one of several \e request arguments detailed below.
- * vorbis_encode_ctl() must be called after one of
- * vorbis_encode_setup_managed() or vorbis_encode_setup_vbr().  When used
- * to modify settings, \ref vorbis_encode_ctl() must be called before \ref
- * vorbis_encode_setup_init().
- *
- * \param vi      Pointer to an initialized vorbis_info struct.
- *
- * \param number Specifies the desired action; See \ref encctlcodes "the list
- * of available requests".
- *
- * \param arg void * pointing to a data structure matching the request
- * argument.
- *
- * \retval 0          Success. Any further return information (such as the result of a
- * query) is placed into the storage pointed to by *arg.
- *
- * \retval OV_EINVAL  Invalid argument, or an attempt to modify a setting after
- * calling vorbis_encode_setup_init().
- *
- * \retval OV_EIMPL   Unimplemented or unknown request
- */
-extern int vorbis_encode_ctl(vorbis_info *vi,int number,void *arg);
-
-/**
- * \deprecated This is a deprecated interface. Please use vorbis_encode_ctl()
- * with the \ref ovectl_ratemanage2_arg struct and \ref
- * OV_ECTL_RATEMANAGE2_GET and \ref OV_ECTL_RATEMANAGE2_SET calls in new code.
- *
- * The \ref ovectl_ratemanage_arg structure is used with vorbis_encode_ctl()
- * and the \ref OV_ECTL_RATEMANAGE_GET, \ref OV_ECTL_RATEMANAGE_SET, \ref
- * OV_ECTL_RATEMANAGE_AVG, \ref OV_ECTL_RATEMANAGE_HARD calls in order to
- * query and modify specifics of the encoder's bitrate management
- * configuration.
-*/
-struct ovectl_ratemanage_arg {
-  int    management_active; /**< nonzero if bitrate management is active*/
-/** hard lower limit (in kilobits per second) below which the stream bitrate
-    will never be allowed for any given bitrate_hard_window seconds of time.*/
-  long   bitrate_hard_min;
-/** hard upper limit (in kilobits per second) above which the stream bitrate
-    will never be allowed for any given bitrate_hard_window seconds of time.*/
-  long   bitrate_hard_max;
-/** the window period (in seconds) used to regulate the hard bitrate minimum
-    and maximum*/
-  double bitrate_hard_window;
-/** soft lower limit (in kilobits per second) below which the average bitrate
-    tracker will start nudging the bitrate higher.*/
-  long   bitrate_av_lo;
-/** soft upper limit (in kilobits per second) above which the average bitrate
-    tracker will start nudging the bitrate lower.*/
-  long   bitrate_av_hi;
-/** the window period (in seconds) used to regulate the average bitrate
-    minimum and maximum.*/
-  double bitrate_av_window;
-/** Regulates the relative centering of the average and hard windows; in
-    libvorbis 1.0 and 1.0.1, the hard window regulation overlapped but
-    followed the average window regulation. In libvorbis 1.1 a bit-reservoir
-    interface replaces the old windowing interface; the older windowing
-    interface is simulated and this field has no effect.*/
-  double bitrate_av_window_center;
-};
-
-/**
- * \name struct ovectl_ratemanage2_arg
- *
- * The ovectl_ratemanage2_arg structure is used with vorbis_encode_ctl() and
- * the OV_ECTL_RATEMANAGE2_GET and OV_ECTL_RATEMANAGE2_SET calls in order to
- * query and modify specifics of the encoder's bitrate management
- * configuration.
- *
-*/
-struct ovectl_ratemanage2_arg {
-  int    management_active; /**< nonzero if bitrate management is active */
-/** Lower allowed bitrate limit in kilobits per second */
-  long   bitrate_limit_min_kbps;
-/** Upper allowed bitrate limit in kilobits per second */
-  long   bitrate_limit_max_kbps;
-  long   bitrate_limit_reservoir_bits; /**<Size of the bitrate reservoir in bits */
-/** Regulates the bitrate reservoir's preferred fill level in a range from 0.0
- * to 1.0; 0.0 tries to bank bits to buffer against future bitrate spikes, 1.0
- * buffers against future sudden drops in instantaneous bitrate. Default is
- * 0.1
- */
-  double bitrate_limit_reservoir_bias;
-/** Average bitrate setting in kilobits per second */
-  long   bitrate_average_kbps;
-/** Slew rate limit setting for average bitrate adjustment; sets the minimum
- *  time in seconds the bitrate tracker may swing from one extreme to the
- *  other when boosting or damping average bitrate.
- */
-  double bitrate_average_damping;
-};
-
-
-/**
- * \name vorbis_encode_ctl() codes
- *
- * \anchor encctlcodes
- *
- * These values are passed as the \c number parameter of vorbis_encode_ctl().
- * The type of the referent of that function's \c arg pointer depends on these
- * codes.
- */
-/*@{*/
-
-/**
- * Query the current encoder bitrate management setting.
- *
- *Argument: <tt>struct ovectl_ratemanage2_arg *</tt>
- *
- * Used to query the current encoder bitrate management setting. Also used to
- * initialize fields of an ovectl_ratemanage2_arg structure for use with
- * \ref OV_ECTL_RATEMANAGE2_SET.
- */
-#define OV_ECTL_RATEMANAGE2_GET      0x14
-
-/**
- * Set the current encoder bitrate management settings.
- *
- * Argument: <tt>struct ovectl_ratemanage2_arg *</tt>
- *
- * Used to set the current encoder bitrate management settings to the values
- * listed in the ovectl_ratemanage2_arg. Passing a NULL pointer will disable
- * bitrate management.
-*/
-#define OV_ECTL_RATEMANAGE2_SET      0x15
-
-/**
- * Returns the current encoder hard-lowpass setting (kHz) in the double
- * pointed to by arg.
- *
- * Argument: <tt>double *</tt>
-*/
-#define OV_ECTL_LOWPASS_GET          0x20
-
-/**
- *  Sets the encoder hard-lowpass to the value (kHz) pointed to by arg. Valid
- *  lowpass settings range from 2 to 99.
- *
- * Argument: <tt>double *</tt>
-*/
-#define OV_ECTL_LOWPASS_SET          0x21
-
-/**
- *  Returns the current encoder impulse block setting in the double pointed
- *  to by arg.
- *
- * Argument: <tt>double *</tt>
-*/
-#define OV_ECTL_IBLOCK_GET           0x30
-
-/**
- *  Sets the impulse block bias to the the value pointed to by arg.
- *
- * Argument: <tt>double *</tt>
- *
- *  Valid range is -15.0 to 0.0 [default]. A negative impulse block bias will
- *  direct to encoder to use more bits when incoding short blocks that contain
- *  strong impulses, thus improving the accuracy of impulse encoding.
- */
-#define OV_ECTL_IBLOCK_SET           0x31
-
-/**
- *  Returns the current encoder coupling setting in the int pointed
- *  to by arg.
- *
- * Argument: <tt>int *</tt>
-*/
-#define OV_ECTL_COUPLING_GET         0x40
-
-/**
- *  Enables/disables channel coupling in multichannel encoding according to arg.
- *
- * Argument: <tt>int *</tt>
- *
- *  Zero disables channel coupling for multichannel inputs, nonzer enables
- *  channel coupling.  Setting has no effect on monophonic encoding or
- *  multichannel counts that do not offer coupling.  At present, coupling is
- *  available for stereo and 5.1 encoding.
- */
-#define OV_ECTL_COUPLING_SET         0x41
-
-  /* deprecated rate management supported only for compatibility */
-
-/**
- * Old interface to querying bitrate management settings.
- *
- * Deprecated after move to bit-reservoir style management in 1.1 rendered
- * this interface partially obsolete.
-
- * \deprecated Please use \ref OV_ECTL_RATEMANAGE2_GET instead.
- *
- * Argument: <tt>struct ovectl_ratemanage_arg *</tt>
- */
-#define OV_ECTL_RATEMANAGE_GET       0x10
-/**
- * Old interface to modifying bitrate management settings.
- *
- *  deprecated after move to bit-reservoir style management in 1.1 rendered
- *  this interface partially obsolete.
- *
- * \deprecated Please use \ref OV_ECTL_RATEMANAGE2_SET instead.
- *
- * Argument: <tt>struct ovectl_ratemanage_arg *</tt>
- */
-#define OV_ECTL_RATEMANAGE_SET       0x11
-/**
- * Old interface to setting average-bitrate encoding mode.
- *
- * Deprecated after move to bit-reservoir style management in 1.1 rendered
- * this interface partially obsolete.
- *
- *  \deprecated Please use \ref OV_ECTL_RATEMANAGE2_SET instead.
- *
- * Argument: <tt>struct ovectl_ratemanage_arg *</tt>
- */
-#define OV_ECTL_RATEMANAGE_AVG       0x12
-/**
- * Old interface to setting bounded-bitrate encoding modes.
- *
- * deprecated after move to bit-reservoir style management in 1.1 rendered
- * this interface partially obsolete.
- *
- *  \deprecated Please use \ref OV_ECTL_RATEMANAGE2_SET instead.
- *
- * Argument: <tt>struct ovectl_ratemanage_arg *</tt>
- */
-#define OV_ECTL_RATEMANAGE_HARD      0x13
-
-/*@}*/
-
-
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif
--- a/win64-mingw/include/vorbis/vorbisfile.h	Wed Oct 26 13:24:45 2016 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,206 +0,0 @@
-/********************************************************************
- *                                                                  *
- * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
- * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
- * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
- * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
- *                                                                  *
- * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007             *
- * by the Xiph.Org Foundation http://www.xiph.org/                  *
- *                                                                  *
- ********************************************************************
-
- function: stdio-based convenience library for opening/seeking/decoding
- last mod: $Id: vorbisfile.h 17182 2010-04-29 03:48:32Z xiphmont $
-
- ********************************************************************/
-
-#ifndef _OV_FILE_H_
-#define _OV_FILE_H_
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-#include <stdio.h>
-#include "codec.h"
-
-/* The function prototypes for the callbacks are basically the same as for
- * the stdio functions fread, fseek, fclose, ftell.
- * The one difference is that the FILE * arguments have been replaced with
- * a void * - this is to be used as a pointer to whatever internal data these
- * functions might need. In the stdio case, it's just a FILE * cast to a void *
- *
- * If you use other functions, check the docs for these functions and return
- * the right values. For seek_func(), you *MUST* return -1 if the stream is
- * unseekable
- */
-typedef struct {
-  size_t (*read_func)  (void *ptr, size_t size, size_t nmemb, void *datasource);
-  int    (*seek_func)  (void *datasource, ogg_int64_t offset, int whence);
-  int    (*close_func) (void *datasource);
-  long   (*tell_func)  (void *datasource);
-} ov_callbacks;
-
-#ifndef OV_EXCLUDE_STATIC_CALLBACKS
-
-/* a few sets of convenient callbacks, especially for use under
- * Windows where ov_open_callbacks() should always be used instead of
- * ov_open() to avoid problems with incompatible crt.o version linking
- * issues. */
-
-static int _ov_header_fseek_wrap(FILE *f,ogg_int64_t off,int whence){
-  if(f==NULL)return(-1);
-
-#ifdef __MINGW32__
-  return fseeko64(f,off,whence);
-#elif defined (_WIN32)
-  return _fseeki64(f,off,whence);
-#else
-  return fseek(f,off,whence);
-#endif
-}
-
-/* These structs below (OV_CALLBACKS_DEFAULT etc) are defined here as
- * static data. That means that every file which includes this header
- * will get its own copy of these structs whether it uses them or
- * not unless it #defines OV_EXCLUDE_STATIC_CALLBACKS.
- * These static symbols are essential on platforms such as Windows on
- * which several different versions of stdio support may be linked to
- * by different DLLs, and we need to be certain we know which one
- * we're using (the same one as the main application).
- */
-
-static ov_callbacks OV_CALLBACKS_DEFAULT = {
-  (size_t (*)(void *, size_t, size_t, void *))  fread,
-  (int (*)(void *, ogg_int64_t, int))           _ov_header_fseek_wrap,
-  (int (*)(void *))                             fclose,
-  (long (*)(void *))                            ftell
-};
-
-static ov_callbacks OV_CALLBACKS_NOCLOSE = {
-  (size_t (*)(void *, size_t, size_t, void *))  fread,
-  (int (*)(void *, ogg_int64_t, int))           _ov_header_fseek_wrap,
-  (int (*)(void *))                             NULL,
-  (long (*)(void *))                            ftell
-};
-
-static ov_callbacks OV_CALLBACKS_STREAMONLY = {
-  (size_t (*)(void *, size_t, size_t, void *))  fread,
-  (int (*)(void *, ogg_int64_t, int))           NULL,
-  (int (*)(void *))                             fclose,
-  (long (*)(void *))                            NULL
-};
-
-static ov_callbacks OV_CALLBACKS_STREAMONLY_NOCLOSE = {
-  (size_t (*)(void *, size_t, size_t, void *))  fread,
-  (int (*)(void *, ogg_int64_t, int))           NULL,
-  (int (*)(void *))                             NULL,
-  (long (*)(void *))                            NULL
-};
-
-#endif
-
-#define  NOTOPEN   0
-#define  PARTOPEN  1
-#define  OPENED    2
-#define  STREAMSET 3
-#define  INITSET   4
-
-typedef struct OggVorbis_File {
-  void            *datasource; /* Pointer to a FILE *, etc. */
-  int              seekable;
-  ogg_int64_t      offset;
-  ogg_int64_t      end;
-  ogg_sync_state   oy;
-
-  /* If the FILE handle isn't seekable (eg, a pipe), only the current
-     stream appears */
-  int              links;
-  ogg_int64_t     *offsets;
-  ogg_int64_t     *dataoffsets;
-  long            *serialnos;
-  ogg_int64_t     *pcmlengths; /* overloaded to maintain binary
-                                  compatibility; x2 size, stores both
-                                  beginning and end values */
-  vorbis_info     *vi;
-  vorbis_comment  *vc;
-
-  /* Decoding working state local storage */
-  ogg_int64_t      pcm_offset;
-  int              ready_state;
-  long             current_serialno;
-  int              current_link;
-
-  double           bittrack;
-  double           samptrack;
-
-  ogg_stream_state os; /* take physical pages, weld into a logical
-                          stream of packets */
-  vorbis_dsp_state vd; /* central working state for the packet->PCM decoder */
-  vorbis_block     vb; /* local working space for packet->PCM decode */
-
-  ov_callbacks callbacks;
-
-} OggVorbis_File;
-
-
-extern int ov_clear(OggVorbis_File *vf);
-extern int ov_fopen(const char *path,OggVorbis_File *vf);
-extern int ov_open(FILE *f,OggVorbis_File *vf,const char *initial,long ibytes);
-extern int ov_open_callbacks(void *datasource, OggVorbis_File *vf,
-                const char *initial, long ibytes, ov_callbacks callbacks);
-
-extern int ov_test(FILE *f,OggVorbis_File *vf,const char *initial,long ibytes);
-extern int ov_test_callbacks(void *datasource, OggVorbis_File *vf,
-                const char *initial, long ibytes, ov_callbacks callbacks);
-extern int ov_test_open(OggVorbis_File *vf);
-
-extern long ov_bitrate(OggVorbis_File *vf,int i);
-extern long ov_bitrate_instant(OggVorbis_File *vf);
-extern long ov_streams(OggVorbis_File *vf);
-extern long ov_seekable(OggVorbis_File *vf);
-extern long ov_serialnumber(OggVorbis_File *vf,int i);
-
-extern ogg_int64_t ov_raw_total(OggVorbis_File *vf,int i);
-extern ogg_int64_t ov_pcm_total(OggVorbis_File *vf,int i);
-extern double ov_time_total(OggVorbis_File *vf,int i);
-
-extern int ov_raw_seek(OggVorbis_File *vf,ogg_int64_t pos);
-extern int ov_pcm_seek(OggVorbis_File *vf,ogg_int64_t pos);
-extern int ov_pcm_seek_page(OggVorbis_File *vf,ogg_int64_t pos);
-extern int ov_time_seek(OggVorbis_File *vf,double pos);
-extern int ov_time_seek_page(OggVorbis_File *vf,double pos);
-
-extern int ov_raw_seek_lap(OggVorbis_File *vf,ogg_int64_t pos);
-extern int ov_pcm_seek_lap(OggVorbis_File *vf,ogg_int64_t pos);
-extern int ov_pcm_seek_page_lap(OggVorbis_File *vf,ogg_int64_t pos);
-extern int ov_time_seek_lap(OggVorbis_File *vf,double pos);
-extern int ov_time_seek_page_lap(OggVorbis_File *vf,double pos);
-
-extern ogg_int64_t ov_raw_tell(OggVorbis_File *vf);
-extern ogg_int64_t ov_pcm_tell(OggVorbis_File *vf);
-extern double ov_time_tell(OggVorbis_File *vf);
-
-extern vorbis_info *ov_info(OggVorbis_File *vf,int link);
-extern vorbis_comment *ov_comment(OggVorbis_File *vf,int link);
-
-extern long ov_read_float(OggVorbis_File *vf,float ***pcm_channels,int samples,
-                          int *bitstream);
-extern long ov_read_filter(OggVorbis_File *vf,char *buffer,int length,
-                          int bigendianp,int word,int sgned,int *bitstream,
-                          void (*filter)(float **pcm,long channels,long samples,void *filter_param),void *filter_param);
-extern long ov_read(OggVorbis_File *vf,char *buffer,int length,
-                    int bigendianp,int word,int sgned,int *bitstream);
-extern int ov_crosslap(OggVorbis_File *vf1,OggVorbis_File *vf2);
-
-extern int ov_halfrate(OggVorbis_File *vf,int flag);
-extern int ov_halfrate_p(OggVorbis_File *vf);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif
-
Binary file win64-mingw/lib/libFLAC.a has changed
Binary file win64-mingw/lib/libogg.a has changed
Binary file win64-mingw/lib/libsndfile.a has changed
Binary file win64-mingw/lib/libvorbis.a has changed
Binary file win64-mingw/lib/libvorbisenc.a has changed
Binary file win64-mingw/lib/libvorbisfile.a has changed