summaryrefslogtreecommitdiffstatshomepage
path: root/3rdparty/libflac/src/share/grabbag
diff options
context:
space:
mode:
Diffstat (limited to '3rdparty/libflac/src/share/grabbag')
-rw-r--r--3rdparty/libflac/src/share/grabbag/Makefile.am25
-rw-r--r--3rdparty/libflac/src/share/grabbag/Makefile.in512
-rw-r--r--3rdparty/libflac/src/share/grabbag/Makefile.lite19
-rw-r--r--3rdparty/libflac/src/share/grabbag/cuesheet.c611
-rw-r--r--3rdparty/libflac/src/share/grabbag/file.c192
-rw-r--r--3rdparty/libflac/src/share/grabbag/grabbag_static.dsp144
-rw-r--r--3rdparty/libflac/src/share/grabbag/grabbag_static.vcproj221
-rw-r--r--3rdparty/libflac/src/share/grabbag/picture.c407
-rw-r--r--3rdparty/libflac/src/share/grabbag/replaygain.c668
-rw-r--r--3rdparty/libflac/src/share/grabbag/seektable.c132
10 files changed, 0 insertions, 2931 deletions
diff --git a/3rdparty/libflac/src/share/grabbag/Makefile.am b/3rdparty/libflac/src/share/grabbag/Makefile.am
deleted file mode 100644
index 879b15511a5..00000000000
--- a/3rdparty/libflac/src/share/grabbag/Makefile.am
+++ /dev/null
@@ -1,25 +0,0 @@
-## Process this file with automake to produce Makefile.in
-
-AUTOMAKE_OPTIONS = foreign
-
-INCLUDES = -I$(top_srcdir)/include
-
-noinst_LTLIBRARIES = libgrabbag.la
-
-libgrabbag_la_SOURCES = \
- cuesheet.c \
- file.c \
- picture.c \
- replaygain.c \
- seektable.c
-
-EXTRA_DIST = \
- Makefile.lite \
- grabbag_static.dsp \
- grabbag_static.vcproj
-
-debug:
- $(MAKE) all CFLAGS="@DEBUG@"
-
-profile:
- $(MAKE) all CFLAGS="@PROFILE@"
diff --git a/3rdparty/libflac/src/share/grabbag/Makefile.in b/3rdparty/libflac/src/share/grabbag/Makefile.in
deleted file mode 100644
index a7780a3c644..00000000000
--- a/3rdparty/libflac/src/share/grabbag/Makefile.in
+++ /dev/null
@@ -1,512 +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@
-
-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@
-
-AUTOMAKE_OPTIONS = foreign
-
-INCLUDES = -I$(top_srcdir)/include
-
-noinst_LTLIBRARIES = libgrabbag.la
-
-libgrabbag_la_SOURCES = \
- cuesheet.c \
- file.c \
- picture.c \
- replaygain.c \
- seektable.c
-
-
-EXTRA_DIST = \
- Makefile.lite \
- grabbag_static.dsp \
- grabbag_static.vcproj
-
-subdir = src/share/grabbag
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-LTLIBRARIES = $(noinst_LTLIBRARIES)
-
-libgrabbag_la_LDFLAGS =
-libgrabbag_la_LIBADD =
-am_libgrabbag_la_OBJECTS = cuesheet.lo file.lo picture.lo replaygain.lo \
- seektable.lo
-libgrabbag_la_OBJECTS = $(am_libgrabbag_la_OBJECTS)
-
-DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
-depcomp = $(SHELL) $(top_srcdir)/depcomp
-am__depfiles_maybe = depfiles
-@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/cuesheet.Plo ./$(DEPDIR)/file.Plo \
-@AMDEP_TRUE@ ./$(DEPDIR)/picture.Plo ./$(DEPDIR)/replaygain.Plo \
-@AMDEP_TRUE@ ./$(DEPDIR)/seektable.Plo
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \
- $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-CCLD = $(CC)
-LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
- $(AM_LDFLAGS) $(LDFLAGS) -o $@
-DIST_SOURCES = $(libgrabbag_la_SOURCES)
-DIST_COMMON = $(srcdir)/Makefile.in Makefile.am
-SOURCES = $(libgrabbag_la_SOURCES)
-
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .c .lo .o .obj
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
- cd $(top_srcdir) && \
- $(AUTOMAKE) --foreign src/share/grabbag/Makefile
-Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
-
-clean-noinstLTLIBRARIES:
- -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
- @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \
- dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
- test "$$dir" = "$$p" && dir=.; \
- echo "rm -f \"$${dir}/so_locations\""; \
- rm -f "$${dir}/so_locations"; \
- done
-libgrabbag.la: $(libgrabbag_la_OBJECTS) $(libgrabbag_la_DEPENDENCIES)
- $(LINK) $(libgrabbag_la_LDFLAGS) $(libgrabbag_la_OBJECTS) $(libgrabbag_la_LIBADD) $(LIBS)
-
-mostlyclean-compile:
- -rm -f *.$(OBJEXT) core *.core
-
-distclean-compile:
- -rm -f *.tab.c
-
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cuesheet.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/file.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/picture.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/replaygain.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/seektable.Plo@am__quote@
-
-.c.o:
-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
-@am__fastdepCC_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
-@am__fastdepCC_TRUE@ fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$<
-
-.c.obj:
-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
-@am__fastdepCC_TRUE@ -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \
-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
-@am__fastdepCC_TRUE@ fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`
-
-.c.lo:
-@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
-@am__fastdepCC_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; \
-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
-@am__fastdepCC_TRUE@ fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<
-
-mostlyclean-libtool:
- -rm -f *.lo
-
-clean-libtool:
- -rm -rf .libs _libs
-
-distclean-libtool:
- -rm -f libtool
-uninstall-info-am:
-
-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 $(LTLIBRARIES)
-
-installdirs:
-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 clean-noinstLTLIBRARIES \
- mostlyclean-am
-
-distclean: distclean-am
- -rm -rf ./$(DEPDIR)
- -rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
- distclean-libtool distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-info: info-am
-
-info-am:
-
-install-data-am:
-
-install-exec-am:
-
-install-info: install-info-am
-
-install-man:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
- -rm -rf ./$(DEPDIR)
- -rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic \
- mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-info-am
-
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
- clean-libtool clean-noinstLTLIBRARIES ctags distclean \
- distclean-compile 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-info install-info-am install-man \
- install-strip installcheck installcheck-am installdirs \
- maintainer-clean maintainer-clean-generic mostlyclean \
- mostlyclean-compile mostlyclean-generic mostlyclean-libtool pdf \
- pdf-am ps ps-am tags uninstall uninstall-am uninstall-info-am
-
-
-debug:
- $(MAKE) all CFLAGS="@DEBUG@"
-
-profile:
- $(MAKE) all CFLAGS="@PROFILE@"
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/3rdparty/libflac/src/share/grabbag/Makefile.lite b/3rdparty/libflac/src/share/grabbag/Makefile.lite
deleted file mode 100644
index daf19751719..00000000000
--- a/3rdparty/libflac/src/share/grabbag/Makefile.lite
+++ /dev/null
@@ -1,19 +0,0 @@
-#
-# GNU makefile
-#
-
-topdir = ../../..
-
-LIB_NAME = libgrabbag
-INCLUDES = -I$(topdir)/include
-
-SRCS_C = \
- cuesheet.c \
- file.c \
- picture.c \
- replaygain.c \
- seektable.c
-
-include $(topdir)/build/lib.mk
-
-# DO NOT DELETE THIS LINE -- make depend depends on it.
diff --git a/3rdparty/libflac/src/share/grabbag/cuesheet.c b/3rdparty/libflac/src/share/grabbag/cuesheet.c
deleted file mode 100644
index 03f7cdaa75b..00000000000
--- a/3rdparty/libflac/src/share/grabbag/cuesheet.c
+++ /dev/null
@@ -1,611 +0,0 @@
-/* grabbag - Convenience lib for various routines common to several tools
- * Copyright (C) 2002,2003,2004,2005,2006,2007 Josh Coalson
- *
- * This library 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 library 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 library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#if HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#include "share/grabbag.h"
-#include "FLAC/assert.h"
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-unsigned grabbag__cuesheet_msf_to_frame(unsigned minutes, unsigned seconds, unsigned frames)
-{
- return ((minutes * 60) + seconds) * 75 + frames;
-}
-
-void grabbag__cuesheet_frame_to_msf(unsigned frame, unsigned *minutes, unsigned *seconds, unsigned *frames)
-{
- *frames = frame % 75;
- frame /= 75;
- *seconds = frame % 60;
- frame /= 60;
- *minutes = frame;
-}
-
-/* since we only care about values >= 0 or error, returns < 0 for any illegal string, else value */
-static int local__parse_int_(const char *s)
-{
- int ret = 0;
- char c;
-
- if(*s == '\0')
- return -1;
-
- while('\0' != (c = *s++))
- if(c >= '0' && c <= '9')
- ret = ret * 10 + (c - '0');
- else
- return -1;
-
- return ret;
-}
-
-/* since we only care about values >= 0 or error, returns < 0 for any illegal string, else value */
-static FLAC__int64 local__parse_int64_(const char *s)
-{
- FLAC__int64 ret = 0;
- char c;
-
- if(*s == '\0')
- return -1;
-
- while('\0' != (c = *s++))
- if(c >= '0' && c <= '9')
- ret = ret * 10 + (c - '0');
- else
- return -1;
-
- return ret;
-}
-
-/* accept '[0-9]+:[0-9][0-9]?:[0-9][0-9]?', but max second of 59 and max frame of 74, e.g. 0:0:0, 123:45:67
- * return sample number or <0 for error
- */
-static FLAC__int64 local__parse_msf_(const char *s)
-{
- FLAC__int64 ret, field;
- char c;
-
- c = *s++;
- if(c >= '0' && c <= '9')
- field = (c - '0');
- else
- return -1;
- while(':' != (c = *s++)) {
- if(c >= '0' && c <= '9')
- field = field * 10 + (c - '0');
- else
- return -1;
- }
-
- ret = field * 60 * 44100;
-
- c = *s++;
- if(c >= '0' && c <= '9')
- field = (c - '0');
- else
- return -1;
- if(':' != (c = *s++)) {
- if(c >= '0' && c <= '9') {
- field = field * 10 + (c - '0');
- c = *s++;
- if(c != ':')
- return -1;
- }
- else
- return -1;
- }
-
- if(field >= 60)
- return -1;
-
- ret += field * 44100;
-
- c = *s++;
- if(c >= '0' && c <= '9')
- field = (c - '0');
- else
- return -1;
- if('\0' != (c = *s++)) {
- if(c >= '0' && c <= '9') {
- field = field * 10 + (c - '0');
- c = *s++;
- }
- else
- return -1;
- }
-
- if(c != '\0')
- return -1;
-
- if(field >= 75)
- return -1;
-
- ret += field * (44100 / 75);
-
- return ret;
-}
-
-static char *local__get_field_(char **s, FLAC__bool allow_quotes)
-{
- FLAC__bool has_quote = false;
- char *p;
-
- FLAC__ASSERT(0 != s);
-
- if(0 == *s)
- return 0;
-
- /* skip leading whitespace */
- while(**s && 0 != strchr(" \t\r\n", **s))
- (*s)++;
-
- if(**s == 0) {
- *s = 0;
- return 0;
- }
-
- if(allow_quotes && (**s == '"')) {
- has_quote = true;
- (*s)++;
- if(**s == 0) {
- *s = 0;
- return 0;
- }
- }
-
- p = *s;
-
- if(has_quote) {
- *s = strchr(*s, '\"');
- /* if there is no matching end quote, it's an error */
- if(0 == *s)
- p = *s = 0;
- else {
- **s = '\0';
- (*s)++;
- }
- }
- else {
- while(**s && 0 == strchr(" \t\r\n", **s))
- (*s)++;
- if(**s) {
- **s = '\0';
- (*s)++;
- }
- else
- *s = 0;
- }
-
- return p;
-}
-
-static FLAC__bool local__cuesheet_parse_(FILE *file, const char **error_message, unsigned *last_line_read, FLAC__StreamMetadata *cuesheet, FLAC__bool is_cdda, FLAC__uint64 lead_out_offset)
-{
-#if defined _MSC_VER || defined __MINGW32__ || defined __EMX__
-#define FLAC__STRCASECMP stricmp
-#else
-#define FLAC__STRCASECMP strcasecmp
-#endif
- char buffer[4096], *line, *field;
- unsigned forced_leadout_track_num = 0;
- FLAC__uint64 forced_leadout_track_offset = 0;
- int in_track_num = -1, in_index_num = -1;
- FLAC__bool disc_has_catalog = false, track_has_flags = false, track_has_isrc = false, has_forced_leadout = false;
- FLAC__StreamMetadata_CueSheet *cs = &cuesheet->data.cue_sheet;
-
- cs->lead_in = is_cdda? 2 * 44100 /* The default lead-in size for CD-DA */ : 0;
- cs->is_cd = is_cdda;
-
- while(0 != fgets(buffer, sizeof(buffer), file)) {
- (*last_line_read)++;
- line = buffer;
-
- {
- size_t linelen = strlen(line);
- if((linelen == sizeof(buffer)-1) && line[linelen-1] != '\n') {
- *error_message = "line too long";
- return false;
- }
- }
-
- if(0 != (field = local__get_field_(&line, /*allow_quotes=*/false))) {
- if(0 == FLAC__STRCASECMP(field, "CATALOG")) {
- if(disc_has_catalog) {
- *error_message = "found multiple CATALOG commands";
- return false;
- }
- if(0 == (field = local__get_field_(&line, /*allow_quotes=*/true))) {
- *error_message = "CATALOG is missing catalog number";
- return false;
- }
- if(strlen(field) >= sizeof(cs->media_catalog_number)) {
- *error_message = "CATALOG number is too long";
- return false;
- }
- if(is_cdda && (strlen(field) != 13 || strspn(field, "0123456789") != 13)) {
- *error_message = "CD-DA CATALOG number must be 13 decimal digits";
- return false;
- }
- strcpy(cs->media_catalog_number, field);
- disc_has_catalog = true;
- }
- else if(0 == FLAC__STRCASECMP(field, "FLAGS")) {
- if(track_has_flags) {
- *error_message = "found multiple FLAGS commands";
- return false;
- }
- if(in_track_num < 0 || in_index_num >= 0) {
- *error_message = "FLAGS command must come after TRACK but before INDEX";
- return false;
- }
- while(0 != (field = local__get_field_(&line, /*allow_quotes=*/false))) {
- if(0 == FLAC__STRCASECMP(field, "PRE"))
- cs->tracks[cs->num_tracks-1].pre_emphasis = 1;
- }
- track_has_flags = true;
- }
- else if(0 == FLAC__STRCASECMP(field, "INDEX")) {
- FLAC__int64 xx;
- FLAC__StreamMetadata_CueSheet_Track *track = &cs->tracks[cs->num_tracks-1];
- if(in_track_num < 0) {
- *error_message = "found INDEX before any TRACK";
- return false;
- }
- if(0 == (field = local__get_field_(&line, /*allow_quotes=*/false))) {
- *error_message = "INDEX is missing index number";
- return false;
- }
- in_index_num = local__parse_int_(field);
- if(in_index_num < 0) {
- *error_message = "INDEX has invalid index number";
- return false;
- }
- FLAC__ASSERT(cs->num_tracks > 0);
- if(track->num_indices == 0) {
- /* it's the first index point of the track */
- if(in_index_num > 1) {
- *error_message = "first INDEX number of a TRACK must be 0 or 1";
- return false;
- }
- }
- else {
- if(in_index_num != track->indices[track->num_indices-1].number + 1) {
- *error_message = "INDEX numbers must be sequential";
- return false;
- }
- }
- if(is_cdda && in_index_num > 99) {
- *error_message = "CD-DA INDEX number must be between 0 and 99, inclusive";
- return false;
- }
- /*@@@ search for duplicate track number? */
- if(0 == (field = local__get_field_(&line, /*allow_quotes=*/false))) {
- *error_message = "INDEX is missing an offset after the index number";
- return false;
- }
- xx = local__parse_msf_(field);
- if(xx < 0) {
- if(is_cdda) {
- *error_message = "illegal INDEX offset (not of the form MM:SS:FF)";
- return false;
- }
- xx = local__parse_int64_(field);
- if(xx < 0) {
- *error_message = "illegal INDEX offset";
- return false;
- }
- }
- if(is_cdda && cs->num_tracks == 1 && cs->tracks[0].num_indices == 0 && xx != 0) {
- *error_message = "first INDEX of first TRACK must have an offset of 00:00:00";
- return false;
- }
- if(is_cdda && track->num_indices > 0 && (FLAC__uint64)xx <= track->indices[track->num_indices-1].offset) {
- *error_message = "CD-DA INDEX offsets must increase in time";
- return false;
- }
- /* fill in track offset if it's the first index of the track */
- if(track->num_indices == 0)
- track->offset = (FLAC__uint64)xx;
- if(is_cdda && cs->num_tracks > 1) {
- const FLAC__StreamMetadata_CueSheet_Track *prev = &cs->tracks[cs->num_tracks-2];
- if((FLAC__uint64)xx <= prev->offset + prev->indices[prev->num_indices-1].offset) {
- *error_message = "CD-DA INDEX offsets must increase in time";
- return false;
- }
- }
- if(!FLAC__metadata_object_cuesheet_track_insert_blank_index(cuesheet, cs->num_tracks-1, track->num_indices)) {
- *error_message = "memory allocation error";
- return false;
- }
- track->indices[track->num_indices-1].offset = (FLAC__uint64)xx - track->offset;
- track->indices[track->num_indices-1].number = in_index_num;
- }
- else if(0 == FLAC__STRCASECMP(field, "ISRC")) {
- char *l, *r;
- if(track_has_isrc) {
- *error_message = "found multiple ISRC commands";
- return false;
- }
- if(in_track_num < 0 || in_index_num >= 0) {
- *error_message = "ISRC command must come after TRACK but before INDEX";
- return false;
- }
- if(0 == (field = local__get_field_(&line, /*allow_quotes=*/false))) {
- *error_message = "ISRC is missing ISRC number";
- return false;
- }
- /* strip out dashes */
- for(l = r = field; *r; r++) {
- if(*r != '-')
- *l++ = *r;
- }
- *l = '\0';
- if(strlen(field) != 12 || strspn(field, "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789") < 5 || strspn(field+5, "1234567890") != 7) {
- *error_message = "invalid ISRC number";
- return false;
- }
- strcpy(cs->tracks[cs->num_tracks-1].isrc, field);
- track_has_isrc = true;
- }
- else if(0 == FLAC__STRCASECMP(field, "TRACK")) {
- if(cs->num_tracks > 0) {
- const FLAC__StreamMetadata_CueSheet_Track *prev = &cs->tracks[cs->num_tracks-1];
- if(
- prev->num_indices == 0 ||
- (
- is_cdda &&
- (
- (prev->num_indices == 1 && prev->indices[0].number != 1) ||
- (prev->num_indices == 2 && prev->indices[0].number != 1 && prev->indices[1].number != 1)
- )
- )
- ) {
- *error_message = is_cdda?
- "previous TRACK must specify at least one INDEX 01" :
- "previous TRACK must specify at least one INDEX";
- return false;
- }
- }
- if(0 == (field = local__get_field_(&line, /*allow_quotes=*/false))) {
- *error_message = "TRACK is missing track number";
- return false;
- }
- in_track_num = local__parse_int_(field);
- if(in_track_num < 0) {
- *error_message = "TRACK has invalid track number";
- return false;
- }
- if(in_track_num == 0) {
- *error_message = "TRACK number must be greater than 0";
- return false;
- }
- if(is_cdda) {
- if(in_track_num > 99) {
- *error_message = "CD-DA TRACK number must be between 1 and 99, inclusive";
- return false;
- }
- }
- else {
- if(in_track_num == 255) {
- *error_message = "TRACK number 255 is reserved for the lead-out";
- return false;
- }
- else if(in_track_num > 255) {
- *error_message = "TRACK number must be between 1 and 254, inclusive";
- return false;
- }
- }
- if(is_cdda && cs->num_tracks > 0 && in_track_num != cs->tracks[cs->num_tracks-1].number + 1) {
- *error_message = "CD-DA TRACK numbers must be sequential";
- return false;
- }
- /*@@@ search for duplicate track number? */
- if(0 == (field = local__get_field_(&line, /*allow_quotes=*/false))) {
- *error_message = "TRACK is missing a track type after the track number";
- return false;
- }
- if(!FLAC__metadata_object_cuesheet_insert_blank_track(cuesheet, cs->num_tracks)) {
- *error_message = "memory allocation error";
- return false;
- }
- cs->tracks[cs->num_tracks-1].number = in_track_num;
- cs->tracks[cs->num_tracks-1].type = (0 == FLAC__STRCASECMP(field, "AUDIO"))? 0 : 1; /*@@@ should we be more strict with the value here? */
- in_index_num = -1;
- track_has_flags = false;
- track_has_isrc = false;
- }
- else if(0 == FLAC__STRCASECMP(field, "REM")) {
- if(0 != (field = local__get_field_(&line, /*allow_quotes=*/false))) {
- if(0 == strcmp(field, "FLAC__lead-in")) {
- FLAC__int64 xx;
- if(0 == (field = local__get_field_(&line, /*allow_quotes=*/false))) {
- *error_message = "FLAC__lead-in is missing offset";
- return false;
- }
- xx = local__parse_int64_(field);
- if(xx < 0) {
- *error_message = "illegal FLAC__lead-in offset";
- return false;
- }
- if(is_cdda && xx % 588 != 0) {
- *error_message = "illegal CD-DA FLAC__lead-in offset, must be even multiple of 588 samples";
- return false;
- }
- cs->lead_in = (FLAC__uint64)xx;
- }
- else if(0 == strcmp(field, "FLAC__lead-out")) {
- int track_num;
- FLAC__int64 offset;
- if(has_forced_leadout) {
- *error_message = "multiple FLAC__lead-out commands";
- return false;
- }
- if(0 == (field = local__get_field_(&line, /*allow_quotes=*/false))) {
- *error_message = "FLAC__lead-out is missing track number";
- return false;
- }
- track_num = local__parse_int_(field);
- if(track_num < 0) {
- *error_message = "illegal FLAC__lead-out track number";
- return false;
- }
- forced_leadout_track_num = (unsigned)track_num;
- /*@@@ search for duplicate track number? */
- if(0 == (field = local__get_field_(&line, /*allow_quotes=*/false))) {
- *error_message = "FLAC__lead-out is missing offset";
- return false;
- }
- offset = local__parse_int64_(field);
- if(offset < 0) {
- *error_message = "illegal FLAC__lead-out offset";
- return false;
- }
- forced_leadout_track_offset = (FLAC__uint64)offset;
- if(forced_leadout_track_offset != lead_out_offset) {
- *error_message = "FLAC__lead-out offset does not match end-of-stream offset";
- return false;
- }
- has_forced_leadout = true;
- }
- }
- }
- }
- }
-
- if(cs->num_tracks == 0) {
- *error_message = "there must be at least one TRACK command";
- return false;
- }
- else {
- const FLAC__StreamMetadata_CueSheet_Track *prev = &cs->tracks[cs->num_tracks-1];
- if(
- prev->num_indices == 0 ||
- (
- is_cdda &&
- (
- (prev->num_indices == 1 && prev->indices[0].number != 1) ||
- (prev->num_indices == 2 && prev->indices[0].number != 1 && prev->indices[1].number != 1)
- )
- )
- ) {
- *error_message = is_cdda?
- "previous TRACK must specify at least one INDEX 01" :
- "previous TRACK must specify at least one INDEX";
- return false;
- }
- }
-
- if(!has_forced_leadout) {
- forced_leadout_track_num = is_cdda? 170 : 255;
- forced_leadout_track_offset = lead_out_offset;
- }
- if(!FLAC__metadata_object_cuesheet_insert_blank_track(cuesheet, cs->num_tracks)) {
- *error_message = "memory allocation error";
- return false;
- }
- cs->tracks[cs->num_tracks-1].number = forced_leadout_track_num;
- cs->tracks[cs->num_tracks-1].offset = forced_leadout_track_offset;
-
- if(!feof(file)) {
- *error_message = "read error";
- return false;
- }
- return true;
-#undef FLAC__STRCASECMP
-}
-
-FLAC__StreamMetadata *grabbag__cuesheet_parse(FILE *file, const char **error_message, unsigned *last_line_read, FLAC__bool is_cdda, FLAC__uint64 lead_out_offset)
-{
- FLAC__StreamMetadata *cuesheet;
-
- FLAC__ASSERT(0 != file);
- FLAC__ASSERT(0 != error_message);
- FLAC__ASSERT(0 != last_line_read);
-
- *last_line_read = 0;
- cuesheet = FLAC__metadata_object_new(FLAC__METADATA_TYPE_CUESHEET);
-
- if(0 == cuesheet) {
- *error_message = "memory allocation error";
- return 0;
- }
-
- if(!local__cuesheet_parse_(file, error_message, last_line_read, cuesheet, is_cdda, lead_out_offset)) {
- FLAC__metadata_object_delete(cuesheet);
- return 0;
- }
-
- return cuesheet;
-}
-
-void grabbag__cuesheet_emit(FILE *file, const FLAC__StreamMetadata *cuesheet, const char *file_reference)
-{
- const FLAC__StreamMetadata_CueSheet *cs;
- unsigned track_num, index_num;
-
- FLAC__ASSERT(0 != file);
- FLAC__ASSERT(0 != cuesheet);
- FLAC__ASSERT(cuesheet->type == FLAC__METADATA_TYPE_CUESHEET);
-
- cs = &cuesheet->data.cue_sheet;
-
- if(*(cs->media_catalog_number))
- fprintf(file, "CATALOG %s\n", cs->media_catalog_number);
- fprintf(file, "FILE %s\n", file_reference);
-
- for(track_num = 0; track_num < cs->num_tracks-1; track_num++) {
- const FLAC__StreamMetadata_CueSheet_Track *track = cs->tracks + track_num;
-
- fprintf(file, " TRACK %02u %s\n", (unsigned)track->number, track->type == 0? "AUDIO" : "DATA");
-
- if(track->pre_emphasis)
- fprintf(file, " FLAGS PRE\n");
- if(*(track->isrc))
- fprintf(file, " ISRC %s\n", track->isrc);
-
- for(index_num = 0; index_num < track->num_indices; index_num++) {
- const FLAC__StreamMetadata_CueSheet_Index *index = track->indices + index_num;
-
- fprintf(file, " INDEX %02u ", (unsigned)index->number);
- if(cs->is_cd) {
- const unsigned logical_frame = (unsigned)((track->offset + index->offset) / (44100 / 75));
- unsigned m, s, f;
- grabbag__cuesheet_frame_to_msf(logical_frame, &m, &s, &f);
- fprintf(file, "%02u:%02u:%02u\n", m, s, f);
- }
- else
-#ifdef _MSC_VER
- fprintf(file, "%I64u\n", track->offset + index->offset);
-#else
- fprintf(file, "%llu\n", (unsigned long long)(track->offset + index->offset));
-#endif
- }
- }
-
-#ifdef _MSC_VER
- fprintf(file, "REM FLAC__lead-in %I64u\n", cs->lead_in);
- fprintf(file, "REM FLAC__lead-out %u %I64u\n", (unsigned)cs->tracks[track_num].number, cs->tracks[track_num].offset);
-#else
- fprintf(file, "REM FLAC__lead-in %llu\n", (unsigned long long)cs->lead_in);
- fprintf(file, "REM FLAC__lead-out %u %llu\n", (unsigned)cs->tracks[track_num].number, (unsigned long long)cs->tracks[track_num].offset);
-#endif
-}
diff --git a/3rdparty/libflac/src/share/grabbag/file.c b/3rdparty/libflac/src/share/grabbag/file.c
deleted file mode 100644
index d073c4bf1fd..00000000000
--- a/3rdparty/libflac/src/share/grabbag/file.c
+++ /dev/null
@@ -1,192 +0,0 @@
-/* grabbag - Convenience lib for various routines common to several tools
- * Copyright (C) 2002,2003,2004,2005,2006,2007 Josh Coalson
- *
- * This library 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 library 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 library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#if HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#if defined _MSC_VER || defined __MINGW32__
-#include <sys/utime.h> /* for utime() */
-#include <io.h> /* for chmod(), _setmode(), unlink() */
-#include <fcntl.h> /* for _O_BINARY */
-#else
-#include <sys/types.h> /* some flavors of BSD (like OS X) require this to get time_t */
-#include <utime.h> /* for utime() */
-#endif
-#if defined __CYGWIN__ || defined __EMX__
-#include <io.h> /* for setmode(), O_BINARY */
-#include <fcntl.h> /* for _O_BINARY */
-#endif
-#include <sys/stat.h> /* for stat(), maybe chmod() */
-#if defined _WIN32 && !defined __CYGWIN__
-#else
-#include <unistd.h> /* for unlink() */
-#endif
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h> /* for strrchr() */
-#if defined _WIN32 && !defined __CYGWIN__
-// for GetFileInformationByHandle() etc
-#include <windows.h>
-#include <winbase.h>
-#endif
-#include "share/grabbag.h"
-
-
-void grabbag__file_copy_metadata(const char *srcpath, const char *destpath)
-{
- struct stat srcstat;
- struct utimbuf srctime;
-
- if(0 == stat(srcpath, &srcstat)) {
- srctime.actime = srcstat.st_atime;
- srctime.modtime = srcstat.st_mtime;
- (void)chmod(destpath, srcstat.st_mode);
- (void)utime(destpath, &srctime);
- }
-}
-
-off_t grabbag__file_get_filesize(const char *srcpath)
-{
- struct stat srcstat;
-
- if(0 == stat(srcpath, &srcstat))
- return srcstat.st_size;
- else
- return -1;
-}
-
-const char *grabbag__file_get_basename(const char *srcpath)
-{
- const char *p;
-
- p = strrchr(srcpath, '/');
- if(0 == p) {
- p = strrchr(srcpath, '\\');
- if(0 == p)
- return srcpath;
- }
- return ++p;
-}
-
-FLAC__bool grabbag__file_change_stats(const char *filename, FLAC__bool read_only)
-{
- struct stat stats;
-
- if(0 == stat(filename, &stats)) {
-#if !defined _MSC_VER && !defined __MINGW32__
- if(read_only) {
- stats.st_mode &= ~S_IWUSR;
- stats.st_mode &= ~S_IWGRP;
- stats.st_mode &= ~S_IWOTH;
- }
- else {
- stats.st_mode |= S_IWUSR;
- }
-#else
- if(read_only)
- stats.st_mode &= ~S_IWRITE;
- else
- stats.st_mode |= S_IWRITE;
-#endif
- if(0 != chmod(filename, stats.st_mode))
- return false;
- }
- else
- return false;
-
- return true;
-}
-
-FLAC__bool grabbag__file_are_same(const char *f1, const char *f2)
-{
-#if defined _MSC_VER || defined __MINGW32__
- /* see
- * http://www.hydrogenaudio.org/forums/index.php?showtopic=49439&pid=444300&st=0
- * http://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/fs/getfileinformationbyhandle.asp
- * http://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/fs/by_handle_file_information_str.asp
- * http://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/fs/createfile.asp
- * apparently both the files have to be open at the same time for the comparison to work
- */
- FLAC__bool same = false;
- BY_HANDLE_FILE_INFORMATION info1, info2;
- HANDLE h1, h2;
- BOOL ok = 1;
- h1 = CreateFile(f1, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
- h2 = CreateFile(f2, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
- if(h1 == INVALID_HANDLE_VALUE || h2 == INVALID_HANDLE_VALUE)
- ok = 0;
- ok &= GetFileInformationByHandle(h1, &info1);
- ok &= GetFileInformationByHandle(h2, &info2);
- if(ok)
- same =
- info1.dwVolumeSerialNumber == info2.dwVolumeSerialNumber &&
- info1.nFileIndexHigh == info2.nFileIndexHigh &&
- info1.nFileIndexLow == info2.nFileIndexLow
- ;
- if(h1 != INVALID_HANDLE_VALUE)
- CloseHandle(h1);
- if(h2 != INVALID_HANDLE_VALUE)
- CloseHandle(h2);
- return same;
-#else
- struct stat s1, s2;
- return f1 && f2 && stat(f1, &s1) == 0 && stat(f2, &s2) == 0 && s1.st_ino == s2.st_ino && s1.st_dev == s2.st_dev;
-#endif
-}
-
-FLAC__bool grabbag__file_remove_file(const char *filename)
-{
- return grabbag__file_change_stats(filename, /*read_only=*/false) && 0 == unlink(filename);
-}
-
-FILE *grabbag__file_get_binary_stdin(void)
-{
- /* if something breaks here it is probably due to the presence or
- * absence of an underscore before the identifiers 'setmode',
- * 'fileno', and/or 'O_BINARY'; check your system header files.
- */
-#if defined _MSC_VER || defined __MINGW32__
- _setmode(_fileno(stdin), _O_BINARY);
-#elif defined __CYGWIN__
- /* almost certainly not needed for any modern Cygwin, but let's be safe... */
- setmode(_fileno(stdin), _O_BINARY);
-#elif defined __EMX__
- setmode(fileno(stdin), O_BINARY);
-#endif
-
- return stdin;
-}
-
-FILE *grabbag__file_get_binary_stdout(void)
-{
- /* if something breaks here it is probably due to the presence or
- * absence of an underscore before the identifiers 'setmode',
- * 'fileno', and/or 'O_BINARY'; check your system header files.
- */
-#if defined _MSC_VER || defined __MINGW32__
- _setmode(_fileno(stdout), _O_BINARY);
-#elif defined __CYGWIN__
- /* almost certainly not needed for any modern Cygwin, but let's be safe... */
- setmode(_fileno(stdout), _O_BINARY);
-#elif defined __EMX__
- setmode(fileno(stdout), O_BINARY);
-#endif
-
- return stdout;
-}
diff --git a/3rdparty/libflac/src/share/grabbag/grabbag_static.dsp b/3rdparty/libflac/src/share/grabbag/grabbag_static.dsp
deleted file mode 100644
index 11835bd4af9..00000000000
--- a/3rdparty/libflac/src/share/grabbag/grabbag_static.dsp
+++ /dev/null
@@ -1,144 +0,0 @@
-# Microsoft Developer Studio Project File - Name="grabbag_static" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Static Library" 0x0104
-
-CFG=grabbag_static - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "grabbag_static.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "grabbag_static.mak" CFG="grabbag_static - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "grabbag_static - Win32 Release" (based on "Win32 (x86) Static Library")
-!MESSAGE "grabbag_static - Win32 Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName "grabbag"
-# PROP Scc_LocalPath "..\..\.."
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "grabbag_static - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\obj\release\lib"
-# PROP Intermediate_Dir "Release_static"
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /Op /I ".\include" /I "..\..\..\include" /D "FLAC__NO_DLL" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo /nodefaultlib
-
-!ELSEIF "$(CFG)" == "grabbag_static - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\obj\debug\lib"
-# PROP Intermediate_Dir "Debug_static"
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I ".\include" /I "..\..\..\include" /D "FLAC__NO_DLL" /D "WIN32" /D "_DEBUG" /D "DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo /nodefaultlib
-
-!ENDIF
-
-# Begin Target
-
-# Name "grabbag_static - Win32 Release"
-# Name "grabbag_static - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "c"
-# Begin Source File
-
-SOURCE=.\cuesheet.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\file.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\picture.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\replaygain.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\seektable.c
-# End Source File
-# End Group
-# Begin Group "Private Header Files"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=..\..\..\include\share\grabbag\cuesheet.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\include\share\grabbag\file.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\include\share\grabbag\picture.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\include\share\grabbag\replaygain.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\include\share\grabbag\seektable.h
-# End Source File
-# End Group
-# Begin Group "Protected Header Files"
-
-# PROP Default_Filter ""
-# End Group
-# Begin Group "Public Header Files"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=..\..\..\include\share\grabbag.h
-# End Source File
-# End Group
-# End Target
-# End Project
diff --git a/3rdparty/libflac/src/share/grabbag/grabbag_static.vcproj b/3rdparty/libflac/src/share/grabbag/grabbag_static.vcproj
deleted file mode 100644
index f5482028bd5..00000000000
--- a/3rdparty/libflac/src/share/grabbag/grabbag_static.vcproj
+++ /dev/null
@@ -1,221 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="grabbag_static"
- ProjectGUID="{4cefbc81-c215-11db-8314-0800200c9a66}"
- RootNamespace="grabbag_static"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="..\..\..\obj\debug\lib"
- IntermediateDirectory="Debug_static"
- ConfigurationType="4"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=".\include;..\..\..\include"
- PreprocessorDefinitions="WIN32;_DEBUG;_LIB;FLAC__NO_DLL;DEBUG"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="4"
- CompileAs="0"
- DisableSpecificWarnings="4267;4996"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLibrarianTool"
- OutputFile="..\..\..\obj\debug\lib\$(ProjectName).lib"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="..\..\..\obj\release\lib"
- IntermediateDirectory="Release_static"
- ConfigurationType="4"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- EnableIntrinsicFunctions="true"
- FavorSizeOrSpeed="1"
- OmitFramePointers="true"
- WholeProgramOptimization="true"
- AdditionalIncludeDirectories=".\include;..\..\..\include"
- PreprocessorDefinitions="WIN32;NDEBUG;_LIB;FLAC__NO_DLL"
- RuntimeLibrary="0"
- BufferSecurityCheck="false"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- CompileAs="0"
- DisableSpecificWarnings="4267;4996"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLibrarianTool"
- OutputFile="..\..\..\obj\release\lib\$(ProjectName).lib"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
- >
- </Filter>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
- >
- <File
- RelativePath=".\cuesheet.c"
- >
- </File>
- <File
- RelativePath=".\file.c"
- >
- </File>
- <File
- RelativePath=".\picture.c"
- >
- </File>
- <File
- RelativePath=".\replaygain.c"
- >
- </File>
- <File
- RelativePath=".\seektable.c"
- >
- </File>
- </Filter>
- <Filter
- Name="Public Header Files"
- >
- <File
- RelativePath="..\..\..\include\share\grabbag.h"
- >
- </File>
- <Filter
- Name="grabbag"
- >
- <File
- RelativePath="..\..\..\include\share\grabbag\cuesheet.h"
- >
- </File>
- <File
- RelativePath="..\..\..\include\share\grabbag\file.h"
- >
- </File>
- <File
- RelativePath="..\..\..\include\share\grabbag\picture.h"
- >
- </File>
- <File
- RelativePath="..\..\..\include\share\grabbag\replaygain.h"
- >
- </File>
- <File
- RelativePath="..\..\..\include\share\grabbag\seektable.h"
- >
- </File>
- </Filter>
- </Filter>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/3rdparty/libflac/src/share/grabbag/picture.c b/3rdparty/libflac/src/share/grabbag/picture.c
deleted file mode 100644
index 0e37273803d..00000000000
--- a/3rdparty/libflac/src/share/grabbag/picture.c
+++ /dev/null
@@ -1,407 +0,0 @@
-/* grabbag - Convenience lib for various routines common to several tools
- * Copyright (C) 2006,2007 Josh Coalson
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * 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 General Public License for more details.
- *
- * You should have received a copy of the GNU 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.
- */
-
-#if HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#include "share/alloc.h"
-#include "share/grabbag.h"
-#include "FLAC/assert.h"
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-/* slightly different that strndup(): this always copies 'size' bytes starting from s into a NUL-terminated string. */
-static char *local__strndup_(const char *s, size_t size)
-{
- char *x = (char*)safe_malloc_add_2op_(size, /*+*/1);
- if(x) {
- memcpy(x, s, size);
- x[size] = '\0';
- }
- return x;
-}
-
-static FLAC__bool local__parse_type_(const char *s, size_t len, FLAC__StreamMetadata_Picture *picture)
-{
- size_t i;
- FLAC__uint32 val = 0;
-
- picture->type = FLAC__STREAM_METADATA_PICTURE_TYPE_FRONT_COVER;
-
- if(len == 0)
- return true; /* empty string implies default to 'front cover' */
-
- for(i = 0; i < len; i++) {
- if(s[i] >= '0' && s[i] <= '9')
- val = 10*val + (FLAC__uint32)(s[i] - '0');
- else
- return false;
- }
-
- if(i == len)
- picture->type = val;
- else
- return false;
-
- return true;
-}
-
-static FLAC__bool local__parse_resolution_(const char *s, size_t len, FLAC__StreamMetadata_Picture *picture)
-{
- int state = 0;
- size_t i;
- FLAC__uint32 val = 0;
-
- picture->width = picture->height = picture->depth = picture->colors = 0;
-
- if(len == 0)
- return true; /* empty string implies client wants to get info from the file itself */
-
- for(i = 0; i < len; i++) {
- if(s[i] == 'x') {
- if(state == 0)
- picture->width = val;
- else if(state == 1)
- picture->height = val;
- else
- return false;
- state++;
- val = 0;
- }
- else if(s[i] == '/') {
- if(state == 2)
- picture->depth = val;
- else
- return false;
- state++;
- val = 0;
- }
- else if(s[i] >= '0' && s[i] <= '9')
- val = 10*val + (FLAC__uint32)(s[i] - '0');
- else
- return false;
- }
-
- if(state < 2)
- return false;
- else if(state == 2)
- picture->depth = val;
- else if(state == 3)
- picture->colors = val;
- else
- return false;
- if(picture->depth < 32 && 1u<<picture->depth < picture->colors)
- return false;
-
- return true;
-}
-
-static FLAC__bool local__extract_mime_type_(FLAC__StreamMetadata *obj)
-{
- if(obj->data.picture.data_length >= 8 && 0 == memcmp(obj->data.picture.data, "\x89PNG\x0d\x0a\x1a\x0a", 8))
- return FLAC__metadata_object_picture_set_mime_type(obj, "image/png", /*copy=*/true);
- else if(obj->data.picture.data_length >= 6 && (0 == memcmp(obj->data.picture.data, "GIF87a", 6) || 0 == memcmp(obj->data.picture.data, "GIF89a", 6)))
- return FLAC__metadata_object_picture_set_mime_type(obj, "image/gif", /*copy=*/true);
- else if(obj->data.picture.data_length >= 2 && 0 == memcmp(obj->data.picture.data, "\xff\xd8", 2))
- return FLAC__metadata_object_picture_set_mime_type(obj, "image/jpeg", /*copy=*/true);
- return false;
-}
-
-static FLAC__bool local__extract_resolution_color_info_(FLAC__StreamMetadata_Picture *picture)
-{
- const FLAC__byte *data = picture->data;
- FLAC__uint32 len = picture->data_length;
-
- if(0 == strcmp(picture->mime_type, "image/png")) {
- /* c.f. http://www.w3.org/TR/PNG/ */
- FLAC__bool need_palette = false; /* if IHDR has color_type=3, we need to also read the PLTE chunk to get the #colors */
- if(len < 8 || memcmp(data, "\x89PNG\x0d\x0a\x1a\x0a", 8))
- return false;
- /* try to find IHDR chunk */
- data += 8;
- len -= 8;
- while(len > 12) { /* every PNG chunk must be at least 12 bytes long */
- const FLAC__uint32 clen = (FLAC__uint32)data[0] << 24 | (FLAC__uint32)data[1] << 16 | (FLAC__uint32)data[2] << 8 | (FLAC__uint32)data[3];
- if(0 == memcmp(data+4, "IHDR", 4) && clen == 13) {
- unsigned color_type = data[17];
- picture->width = (FLAC__uint32)data[8] << 24 | (FLAC__uint32)data[9] << 16 | (FLAC__uint32)data[10] << 8 | (FLAC__uint32)data[11];
- picture->height = (FLAC__uint32)data[12] << 24 | (FLAC__uint32)data[13] << 16 | (FLAC__uint32)data[14] << 8 | (FLAC__uint32)data[15];
- if(color_type == 3) {
- /* even though the bit depth for color_type==3 can be 1,2,4,or 8,
- * the spec in 11.2.2 of http://www.w3.org/TR/PNG/ says that the
- * sample depth is always 8
- */
- picture->depth = 8 * 3u;
- need_palette = true;
- data += 12 + clen;
- len -= 12 + clen;
- }
- else {
- if(color_type == 0) /* greyscale, 1 sample per pixel */
- picture->depth = (FLAC__uint32)data[16];
- if(color_type == 2) /* truecolor, 3 samples per pixel */
- picture->depth = (FLAC__uint32)data[16] * 3u;
- if(color_type == 4) /* greyscale+alpha, 2 samples per pixel */
- picture->depth = (FLAC__uint32)data[16] * 2u;
- if(color_type == 6) /* truecolor+alpha, 4 samples per pixel */
- picture->depth = (FLAC__uint32)data[16] * 4u;
- picture->colors = 0;
- return true;
- }
- }
- else if(need_palette && 0 == memcmp(data+4, "PLTE", 4)) {
- picture->colors = clen / 3u;
- return true;
- }
- else if(clen + 12 > len)
- return false;
- else {
- data += 12 + clen;
- len -= 12 + clen;
- }
- }
- }
- else if(0 == strcmp(picture->mime_type, "image/jpeg")) {
- /* c.f. http://www.w3.org/Graphics/JPEG/itu-t81.pdf and Q22 of http://www.faqs.org/faqs/jpeg-faq/part1/ */
- if(len < 2 || memcmp(data, "\xff\xd8", 2))
- return false;
- data += 2;
- len -= 2;
- while(1) {
- /* look for sync FF byte */
- for( ; len > 0; data++, len--) {
- if(*data == 0xff)
- break;
- }
- if(len == 0)
- return false;
- /* eat any extra pad FF bytes before marker */
- for( ; len > 0; data++, len--) {
- if(*data != 0xff)
- break;
- }
- if(len == 0)
- return false;
- /* if we hit SOS or EOI, bail */
- if(*data == 0xda || *data == 0xd9)
- return false;
- /* looking for some SOFn */
- else if(memchr("\xc0\xc1\xc2\xc3\xc5\xc6\xc7\xc9\xca\xcb\xcd\xce\xcf", *data, 13)) {
- data++; len--; /* skip marker byte */
- if(len < 2)
- return false;
- else {
- const FLAC__uint32 clen = (FLAC__uint32)data[0] << 8 | (FLAC__uint32)data[1];
- if(clen < 8 || len < clen)
- return false;
- picture->width = (FLAC__uint32)data[5] << 8 | (FLAC__uint32)data[6];
- picture->height = (FLAC__uint32)data[3] << 8 | (FLAC__uint32)data[4];
- picture->depth = (FLAC__uint32)data[2] * (FLAC__uint32)data[7];
- picture->colors = 0;
- return true;
- }
- }
- /* else skip it */
- else {
- data++; len--; /* skip marker byte */
- if(len < 2)
- return false;
- else {
- const FLAC__uint32 clen = (FLAC__uint32)data[0] << 8 | (FLAC__uint32)data[1];
- if(clen < 2 || len < clen)
- return false;
- data += clen;
- len -= clen;
- }
- }
- }
- }
- else if(0 == strcmp(picture->mime_type, "image/gif")) {
- /* c.f. http://www.w3.org/Graphics/GIF/spec-gif89a.txt */
- if(len < 14)
- return false;
- if(memcmp(data, "GIF87a", 6) && memcmp(data, "GIF89a", 6))
- return false;
-#if 0
- /* according to the GIF spec, even if the GCTF is 0, the low 3 bits should still tell the total # colors used */
- if(data[10] & 0x80 == 0)
- return false;
-#endif
- picture->width = (FLAC__uint32)data[6] | ((FLAC__uint32)data[7] << 8);
- picture->height = (FLAC__uint32)data[8] | ((FLAC__uint32)data[9] << 8);
-#if 0
- /* this value doesn't seem to be reliable... */
- picture->depth = (((FLAC__uint32)(data[10] & 0x70) >> 4) + 1) * 3u;
-#else
- /* ...just pessimistically assume it's 24-bit color without scanning all the color tables */
- picture->depth = 8u * 3u;
-#endif
- picture->colors = 1u << ((FLAC__uint32)(data[10] & 0x07) + 1u);
- return true;
- }
- return false;
-}
-
-FLAC__StreamMetadata *grabbag__picture_parse_specification(const char *spec, const char **error_message)
-{
- FLAC__StreamMetadata *obj;
- int state = 0;
- static const char *error_messages[] = {
- "memory allocation error",
- "invalid picture specification",
- "invalid picture specification: can't parse resolution/color part",
- "unable to extract resolution and color info from URL, user must set explicitly",
- "unable to extract resolution and color info from file, user must set explicitly",
- "error opening picture file",
- "error reading picture file",
- "invalid picture type",
- "unable to guess MIME type from file, user must set explicitly",
- "type 1 icon must be a 32x32 pixel PNG"
- };
-
- FLAC__ASSERT(0 != spec);
- FLAC__ASSERT(0 != error_message);
-
- /* double protection */
- if(0 == spec)
- return 0;
- if(0 == error_message)
- return 0;
-
- *error_message = 0;
-
- if(0 == (obj = FLAC__metadata_object_new(FLAC__METADATA_TYPE_PICTURE)))
- *error_message = error_messages[0];
-
- if(strchr(spec, '|')) { /* full format */
- const char *p;
- char *q;
- for(p = spec; *error_message==0 && *p; ) {
- if(*p == '|') {
- switch(state) {
- case 0: /* type */
- if(!local__parse_type_(spec, p-spec, &obj->data.picture))
- *error_message = error_messages[7];
- break;
- case 1: /* mime type */
- if(p-spec) { /* if blank, we'll try to guess later from the picture data */
- if(0 == (q = local__strndup_(spec, p-spec)))
- *error_message = error_messages[0];
- else if(!FLAC__metadata_object_picture_set_mime_type(obj, q, /*copy=*/false))
- *error_message = error_messages[0];
- }
- break;
- case 2: /* description */
- if(0 == (q = local__strndup_(spec, p-spec)))
- *error_message = error_messages[0];
- else if(!FLAC__metadata_object_picture_set_description(obj, (FLAC__byte*)q, /*copy=*/false))
- *error_message = error_messages[0];
- break;
- case 3: /* resolution/color (e.g. [300x300x16[/1234]] */
- if(!local__parse_resolution_(spec, p-spec, &obj->data.picture))
- *error_message = error_messages[2];
- break;
- default:
- *error_message = error_messages[1];
- break;
- }
- p++;
- spec = p;
- state++;
- }
- else
- p++;
- }
- }
- else { /* simple format, filename only, everything else guessed */
- if(!local__parse_type_("", 0, &obj->data.picture)) /* use default picture type */
- *error_message = error_messages[7];
- /* leave MIME type to be filled in later */
- /* leave description empty */
- /* leave the rest to be filled in later: */
- else if(!local__parse_resolution_("", 0, &obj->data.picture))
- *error_message = error_messages[2];
- else
- state = 4;
- }
-
- /* parse filename, read file, try to extract resolution/color info if needed */
- if(*error_message == 0) {
- if(state != 4)
- *error_message = error_messages[1];
- else { /* 'spec' points to filename/URL */
- if(0 == strcmp(obj->data.picture.mime_type, "-->")) { /* magic MIME type means URL */
- if(!FLAC__metadata_object_picture_set_data(obj, (FLAC__byte*)spec, strlen(spec), /*copy=*/true))
- *error_message = error_messages[0];
- else if(obj->data.picture.width == 0 || obj->data.picture.height == 0 || obj->data.picture.depth == 0)
- *error_message = error_messages[3];
- }
- else { /* regular picture file */
- const off_t size = grabbag__file_get_filesize(spec);
- if(size < 0)
- *error_message = error_messages[5];
- else {
- FLAC__byte *buffer = (FLAC__byte*)safe_malloc_(size);
- if(0 == buffer)
- *error_message = error_messages[0];
- else {
- FILE *f = fopen(spec, "rb");
- if(0 == f)
- *error_message = error_messages[5];
- else {
- if(fread(buffer, 1, size, f) != (size_t)size)
- *error_message = error_messages[6];
- fclose(f);
- if(0 == *error_message) {
- if(!FLAC__metadata_object_picture_set_data(obj, buffer, size, /*copy=*/false))
- *error_message = error_messages[6];
- /* try to extract MIME type if user left it blank */
- else if(*obj->data.picture.mime_type == '\0' && !local__extract_mime_type_(obj))
- *error_message = error_messages[8];
- /* try to extract resolution/color info if user left it blank */
- else if((obj->data.picture.width == 0 || obj->data.picture.height == 0 || obj->data.picture.depth == 0) && !local__extract_resolution_color_info_(&obj->data.picture))
- *error_message = error_messages[4];
- }
- }
- }
- }
- }
- }
- }
-
- if(*error_message == 0) {
- if(
- obj->data.picture.type == FLAC__STREAM_METADATA_PICTURE_TYPE_FILE_ICON_STANDARD &&
- (
- (strcmp(obj->data.picture.mime_type, "image/png") && strcmp(obj->data.picture.mime_type, "-->")) ||
- obj->data.picture.width != 32 ||
- obj->data.picture.height != 32
- )
- )
- *error_message = error_messages[9];
- }
-
- if(*error_message && obj) {
- FLAC__metadata_object_delete(obj);
- obj = 0;
- }
-
- return obj;
-}
diff --git a/3rdparty/libflac/src/share/grabbag/replaygain.c b/3rdparty/libflac/src/share/grabbag/replaygain.c
deleted file mode 100644
index b3d3d210e38..00000000000
--- a/3rdparty/libflac/src/share/grabbag/replaygain.c
+++ /dev/null
@@ -1,668 +0,0 @@
-/* grabbag - Convenience lib for various routines common to several tools
- * Copyright (C) 2002,2003,2004,2005,2006,2007 Josh Coalson
- *
- * This library 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 library 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 library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#if HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#include "share/grabbag.h"
-#include "share/replaygain_analysis.h"
-#include "FLAC/assert.h"
-#include "FLAC/metadata.h"
-#include "FLAC/stream_decoder.h"
-#include <locale.h>
-#include <math.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#if defined _MSC_VER || defined __MINGW32__
-#include <io.h> /* for chmod() */
-#endif
-#include <sys/stat.h> /* for stat(), maybe chmod() */
-
-#ifdef local_min
-#undef local_min
-#endif
-#define local_min(a,b) ((a)<(b)?(a):(b))
-
-#ifdef local_max
-#undef local_max
-#endif
-#define local_max(a,b) ((a)>(b)?(a):(b))
-
-static const char *reference_format_ = "%s=%2.1f dB";
-static const char *gain_format_ = "%s=%+2.2f dB";
-static const char *peak_format_ = "%s=%1.8f";
-
-static double album_peak_, title_peak_;
-
-const unsigned GRABBAG__REPLAYGAIN_MAX_TAG_SPACE_REQUIRED = 190;
-/*
- FLAC__STREAM_METADATA_VORBIS_COMMENT_ENTRY_LENGTH_LEN/8 + 29 + 1 + 8 +
- FLAC__STREAM_METADATA_VORBIS_COMMENT_ENTRY_LENGTH_LEN/8 + 21 + 1 + 10 +
- FLAC__STREAM_METADATA_VORBIS_COMMENT_ENTRY_LENGTH_LEN/8 + 21 + 1 + 12 +
- FLAC__STREAM_METADATA_VORBIS_COMMENT_ENTRY_LENGTH_LEN/8 + 21 + 1 + 10 +
- FLAC__STREAM_METADATA_VORBIS_COMMENT_ENTRY_LENGTH_LEN/8 + 21 + 1 + 12
-*/
-
-const FLAC__byte * const GRABBAG__REPLAYGAIN_TAG_REFERENCE_LOUDNESS = (const FLAC__byte * const)"REPLAYGAIN_REFERENCE_LOUDNESS";
-const FLAC__byte * const GRABBAG__REPLAYGAIN_TAG_TITLE_GAIN = (const FLAC__byte * const)"REPLAYGAIN_TRACK_GAIN";
-const FLAC__byte * const GRABBAG__REPLAYGAIN_TAG_TITLE_PEAK = (const FLAC__byte * const)"REPLAYGAIN_TRACK_PEAK";
-const FLAC__byte * const GRABBAG__REPLAYGAIN_TAG_ALBUM_GAIN = (const FLAC__byte * const)"REPLAYGAIN_ALBUM_GAIN";
-const FLAC__byte * const GRABBAG__REPLAYGAIN_TAG_ALBUM_PEAK = (const FLAC__byte * const)"REPLAYGAIN_ALBUM_PEAK";
-
-
-static FLAC__bool get_file_stats_(const char *filename, struct stat *stats)
-{
- FLAC__ASSERT(0 != filename);
- FLAC__ASSERT(0 != stats);
- return (0 == stat(filename, stats));
-}
-
-static void set_file_stats_(const char *filename, struct stat *stats)
-{
- FLAC__ASSERT(0 != filename);
- FLAC__ASSERT(0 != stats);
-
- (void)chmod(filename, stats->st_mode);
-}
-
-static FLAC__bool append_tag_(FLAC__StreamMetadata *block, const char *format, const FLAC__byte *name, float value)
-{
- char buffer[256];
- char *saved_locale;
- FLAC__StreamMetadata_VorbisComment_Entry entry;
-
- FLAC__ASSERT(0 != block);
- FLAC__ASSERT(block->type == FLAC__METADATA_TYPE_VORBIS_COMMENT);
- FLAC__ASSERT(0 != format);
- FLAC__ASSERT(0 != name);
-
- buffer[sizeof(buffer)-1] = '\0';
- /*
- * We need to save the old locale and switch to "C" because the locale
- * influences the formatting of %f and we want it a certain way.
- */
- saved_locale = strdup(setlocale(LC_ALL, 0));
- if (0 == saved_locale)
- return false;
- setlocale(LC_ALL, "C");
-#if defined _MSC_VER || defined __MINGW32__
- _snprintf(buffer, sizeof(buffer)-1, format, name, value);
-#else
- snprintf(buffer, sizeof(buffer)-1, format, name, value);
-#endif
- setlocale(LC_ALL, saved_locale);
- free(saved_locale);
-
- entry.entry = (FLAC__byte *)buffer;
- entry.length = strlen(buffer);
-
- return FLAC__metadata_object_vorbiscomment_append_comment(block, entry, /*copy=*/true);
-}
-
-FLAC__bool grabbag__replaygain_is_valid_sample_frequency(unsigned sample_frequency)
-{
- static const unsigned valid_sample_rates[] = {
- 8000,
- 11025,
- 12000,
- 16000,
- 22050,
- 24000,
- 32000,
- 44100,
- 48000
- };
- static const unsigned n_valid_sample_rates = sizeof(valid_sample_rates) / sizeof(valid_sample_rates[0]);
-
- unsigned i;
-
- for(i = 0; i < n_valid_sample_rates; i++)
- if(sample_frequency == valid_sample_rates[i])
- return true;
- return false;
-}
-
-FLAC__bool grabbag__replaygain_init(unsigned sample_frequency)
-{
- title_peak_ = album_peak_ = 0.0;
- return InitGainAnalysis((long)sample_frequency) == INIT_GAIN_ANALYSIS_OK;
-}
-
-FLAC__bool grabbag__replaygain_analyze(const FLAC__int32 * const input[], FLAC__bool is_stereo, unsigned bps, unsigned samples)
-{
- /* using a small buffer improves data locality; we'd like it to fit easily in the dcache */
- static Float_t lbuffer[2048], rbuffer[2048];
- static const unsigned nbuffer = sizeof(lbuffer) / sizeof(lbuffer[0]);
- FLAC__int32 block_peak = 0, s;
- unsigned i, j;
-
- FLAC__ASSERT(bps >= 4 && bps <= FLAC__REFERENCE_CODEC_MAX_BITS_PER_SAMPLE);
- FLAC__ASSERT(FLAC__MIN_BITS_PER_SAMPLE == 4);
- /*
- * We use abs() on a FLAC__int32 which is undefined for the most negative value.
- * If the reference codec ever handles 32bps we will have to write a special
- * case here.
- */
- FLAC__ASSERT(FLAC__REFERENCE_CODEC_MAX_BITS_PER_SAMPLE < 32);
-
- if(bps == 16) {
- if(is_stereo) {
- j = 0;
- while(samples > 0) {
- const unsigned n = local_min(samples, nbuffer);
- for(i = 0; i < n; i++, j++) {
- s = input[0][j];
- lbuffer[i] = (Float_t)s;
- s = abs(s);
- block_peak = local_max(block_peak, s);
-
- s = input[1][j];
- rbuffer[i] = (Float_t)s;
- s = abs(s);
- block_peak = local_max(block_peak, s);
- }
- samples -= n;
- if(AnalyzeSamples(lbuffer, rbuffer, n, 2) != GAIN_ANALYSIS_OK)
- return false;
- }
- }
- else {
- j = 0;
- while(samples > 0) {
- const unsigned n = local_min(samples, nbuffer);
- for(i = 0; i < n; i++, j++) {
- s = input[0][j];
- lbuffer[i] = (Float_t)s;
- s = abs(s);
- block_peak = local_max(block_peak, s);
- }
- samples -= n;
- if(AnalyzeSamples(lbuffer, 0, n, 1) != GAIN_ANALYSIS_OK)
- return false;
- }
- }
- }
- else { /* bps must be < 32 according to above assertion */
- const double scale = (
- (bps > 16)?
- (double)1. / (double)(1u << (bps - 16)) :
- (double)(1u << (16 - bps))
- );
-
- if(is_stereo) {
- j = 0;
- while(samples > 0) {
- const unsigned n = local_min(samples, nbuffer);
- for(i = 0; i < n; i++, j++) {
- s = input[0][j];
- lbuffer[i] = (Float_t)(scale * (double)s);
- s = abs(s);
- block_peak = local_max(block_peak, s);
-
- s = input[1][j];
- rbuffer[i] = (Float_t)(scale * (double)s);
- s = abs(s);
- block_peak = local_max(block_peak, s);
- }
- samples -= n;
- if(AnalyzeSamples(lbuffer, rbuffer, n, 2) != GAIN_ANALYSIS_OK)
- return false;
- }
- }
- else {
- j = 0;
- while(samples > 0) {
- const unsigned n = local_min(samples, nbuffer);
- for(i = 0; i < n; i++, j++) {
- s = input[0][j];
- lbuffer[i] = (Float_t)(scale * (double)s);
- s = abs(s);
- block_peak = local_max(block_peak, s);
- }
- samples -= n;
- if(AnalyzeSamples(lbuffer, 0, n, 1) != GAIN_ANALYSIS_OK)
- return false;
- }
- }
- }
-
- {
- const double peak_scale = (double)(1u << (bps - 1));
- double peak = (double)block_peak / peak_scale;
- if(peak > title_peak_)
- title_peak_ = peak;
- if(peak > album_peak_)
- album_peak_ = peak;
- }
-
- return true;
-}
-
-void grabbag__replaygain_get_album(float *gain, float *peak)
-{
- *gain = (float)GetAlbumGain();
- *peak = (float)album_peak_;
- album_peak_ = 0.0;
-}
-
-void grabbag__replaygain_get_title(float *gain, float *peak)
-{
- *gain = (float)GetTitleGain();
- *peak = (float)title_peak_;
- title_peak_ = 0.0;
-}
-
-
-typedef struct {
- unsigned channels;
- unsigned bits_per_sample;
- unsigned sample_rate;
- FLAC__bool error;
-} DecoderInstance;
-
-static FLAC__StreamDecoderWriteStatus write_callback_(const FLAC__StreamDecoder *decoder, const FLAC__Frame *frame, const FLAC__int32 * const buffer[], void *client_data)
-{
- DecoderInstance *instance = (DecoderInstance*)client_data;
- const unsigned bits_per_sample = frame->header.bits_per_sample;
- const unsigned channels = frame->header.channels;
- const unsigned sample_rate = frame->header.sample_rate;
- const unsigned samples = frame->header.blocksize;
-
- (void)decoder;
-
- if(
- !instance->error &&
- (channels == 2 || channels == 1) &&
- bits_per_sample == instance->bits_per_sample &&
- channels == instance->channels &&
- sample_rate == instance->sample_rate
- ) {
- instance->error = !grabbag__replaygain_analyze(buffer, channels==2, bits_per_sample, samples);
- }
- else {
- instance->error = true;
- }
-
- if(!instance->error)
- return FLAC__STREAM_DECODER_WRITE_STATUS_CONTINUE;
- else
- return FLAC__STREAM_DECODER_WRITE_STATUS_ABORT;
-}
-
-static void metadata_callback_(const FLAC__StreamDecoder *decoder, const FLAC__StreamMetadata *metadata, void *client_data)
-{
- DecoderInstance *instance = (DecoderInstance*)client_data;
-
- (void)decoder;
-
- if(metadata->type == FLAC__METADATA_TYPE_STREAMINFO) {
- instance->bits_per_sample = metadata->data.stream_info.bits_per_sample;
- instance->channels = metadata->data.stream_info.channels;
- instance->sample_rate = metadata->data.stream_info.sample_rate;
-
- if(instance->channels != 1 && instance->channels != 2) {
- instance->error = true;
- return;
- }
-
- if(!grabbag__replaygain_is_valid_sample_frequency(instance->sample_rate)) {
- instance->error = true;
- return;
- }
- }
-}
-
-static void error_callback_(const FLAC__StreamDecoder *decoder, FLAC__StreamDecoderErrorStatus status, void *client_data)
-{
- DecoderInstance *instance = (DecoderInstance*)client_data;
-
- (void)decoder, (void)status;
-
- instance->error = true;
-}
-
-const char *grabbag__replaygain_analyze_file(const char *filename, float *title_gain, float *title_peak)
-{
- DecoderInstance instance;
- FLAC__StreamDecoder *decoder = FLAC__stream_decoder_new();
-
- if(0 == decoder)
- return "memory allocation error";
-
- instance.error = false;
-
- /* It does these three by default but lets be explicit: */
- FLAC__stream_decoder_set_md5_checking(decoder, false);
- FLAC__stream_decoder_set_metadata_ignore_all(decoder);
- FLAC__stream_decoder_set_metadata_respond(decoder, FLAC__METADATA_TYPE_STREAMINFO);
-
- if(FLAC__stream_decoder_init_file(decoder, filename, write_callback_, metadata_callback_, error_callback_, &instance) != FLAC__STREAM_DECODER_INIT_STATUS_OK) {
- FLAC__stream_decoder_delete(decoder);
- return "initializing decoder";
- }
-
- if(!FLAC__stream_decoder_process_until_end_of_stream(decoder) || instance.error) {
- FLAC__stream_decoder_delete(decoder);
- return "decoding file";
- }
-
- FLAC__stream_decoder_delete(decoder);
-
- grabbag__replaygain_get_title(title_gain, title_peak);
-
- return 0;
-}
-
-const char *grabbag__replaygain_store_to_vorbiscomment(FLAC__StreamMetadata *block, float album_gain, float album_peak, float title_gain, float title_peak)
-{
- const char *error;
-
- if(0 != (error = grabbag__replaygain_store_to_vorbiscomment_reference(block)))
- return error;
-
- if(0 != (error = grabbag__replaygain_store_to_vorbiscomment_title(block, title_gain, title_peak)))
- return error;
-
- if(0 != (error = grabbag__replaygain_store_to_vorbiscomment_album(block, album_gain, album_peak)))
- return error;
-
- return 0;
-}
-
-const char *grabbag__replaygain_store_to_vorbiscomment_reference(FLAC__StreamMetadata *block)
-{
- FLAC__ASSERT(0 != block);
- FLAC__ASSERT(block->type == FLAC__METADATA_TYPE_VORBIS_COMMENT);
-
- if(FLAC__metadata_object_vorbiscomment_remove_entries_matching(block, (const char *)GRABBAG__REPLAYGAIN_TAG_REFERENCE_LOUDNESS) < 0)
- return "memory allocation error";
-
- if(!append_tag_(block, reference_format_, GRABBAG__REPLAYGAIN_TAG_REFERENCE_LOUDNESS, ReplayGainReferenceLoudness))
- return "memory allocation error";
-
- return 0;
-}
-
-const char *grabbag__replaygain_store_to_vorbiscomment_album(FLAC__StreamMetadata *block, float album_gain, float album_peak)
-{
- FLAC__ASSERT(0 != block);
- FLAC__ASSERT(block->type == FLAC__METADATA_TYPE_VORBIS_COMMENT);
-
- if(
- FLAC__metadata_object_vorbiscomment_remove_entries_matching(block, (const char *)GRABBAG__REPLAYGAIN_TAG_ALBUM_GAIN) < 0 ||
- FLAC__metadata_object_vorbiscomment_remove_entries_matching(block, (const char *)GRABBAG__REPLAYGAIN_TAG_ALBUM_PEAK) < 0
- )
- return "memory allocation error";
-
- if(
- !append_tag_(block, gain_format_, GRABBAG__REPLAYGAIN_TAG_ALBUM_GAIN, album_gain) ||
- !append_tag_(block, peak_format_, GRABBAG__REPLAYGAIN_TAG_ALBUM_PEAK, album_peak)
- )
- return "memory allocation error";
-
- return 0;
-}
-
-const char *grabbag__replaygain_store_to_vorbiscomment_title(FLAC__StreamMetadata *block, float title_gain, float title_peak)
-{
- FLAC__ASSERT(0 != block);
- FLAC__ASSERT(block->type == FLAC__METADATA_TYPE_VORBIS_COMMENT);
-
- if(
- FLAC__metadata_object_vorbiscomment_remove_entries_matching(block, (const char *)GRABBAG__REPLAYGAIN_TAG_TITLE_GAIN) < 0 ||
- FLAC__metadata_object_vorbiscomment_remove_entries_matching(block, (const char *)GRABBAG__REPLAYGAIN_TAG_TITLE_PEAK) < 0
- )
- return "memory allocation error";
-
- if(
- !append_tag_(block, gain_format_, GRABBAG__REPLAYGAIN_TAG_TITLE_GAIN, title_gain) ||
- !append_tag_(block, peak_format_, GRABBAG__REPLAYGAIN_TAG_TITLE_PEAK, title_peak)
- )
- return "memory allocation error";
-
- return 0;
-}
-
-static const char *store_to_file_pre_(const char *filename, FLAC__Metadata_Chain **chain, FLAC__StreamMetadata **block)
-{
- FLAC__Metadata_Iterator *iterator;
- const char *error;
- FLAC__bool found_vc_block = false;
-
- if(0 == (*chain = FLAC__metadata_chain_new()))
- return "memory allocation error";
-
- if(!FLAC__metadata_chain_read(*chain, filename)) {
- error = FLAC__Metadata_ChainStatusString[FLAC__metadata_chain_status(*chain)];
- FLAC__metadata_chain_delete(*chain);
- return error;
- }
-
- if(0 == (iterator = FLAC__metadata_iterator_new())) {
- FLAC__metadata_chain_delete(*chain);
- return "memory allocation error";
- }
-
- FLAC__metadata_iterator_init(iterator, *chain);
-
- do {
- *block = FLAC__metadata_iterator_get_block(iterator);
- if((*block)->type == FLAC__METADATA_TYPE_VORBIS_COMMENT)
- found_vc_block = true;
- } while(!found_vc_block && FLAC__metadata_iterator_next(iterator));
-
- if(!found_vc_block) {
- /* create a new block */
- *block = FLAC__metadata_object_new(FLAC__METADATA_TYPE_VORBIS_COMMENT);
- if(0 == *block) {
- FLAC__metadata_chain_delete(*chain);
- FLAC__metadata_iterator_delete(iterator);
- return "memory allocation error";
- }
- while(FLAC__metadata_iterator_next(iterator))
- ;
- if(!FLAC__metadata_iterator_insert_block_after(iterator, *block)) {
- error = FLAC__Metadata_ChainStatusString[FLAC__metadata_chain_status(*chain)];
- FLAC__metadata_chain_delete(*chain);
- FLAC__metadata_iterator_delete(iterator);
- return error;
- }
- /* iterator is left pointing to new block */
- FLAC__ASSERT(FLAC__metadata_iterator_get_block(iterator) == *block);
- }
-
- FLAC__metadata_iterator_delete(iterator);
-
- FLAC__ASSERT(0 != *block);
- FLAC__ASSERT((*block)->type == FLAC__METADATA_TYPE_VORBIS_COMMENT);
-
- return 0;
-}
-
-static const char *store_to_file_post_(const char *filename, FLAC__Metadata_Chain *chain, FLAC__bool preserve_modtime)
-{
- struct stat stats;
- const FLAC__bool have_stats = get_file_stats_(filename, &stats);
-
- (void)grabbag__file_change_stats(filename, /*read_only=*/false);
-
- FLAC__metadata_chain_sort_padding(chain);
- if(!FLAC__metadata_chain_write(chain, /*use_padding=*/true, preserve_modtime)) {
- FLAC__metadata_chain_delete(chain);
- return FLAC__Metadata_ChainStatusString[FLAC__metadata_chain_status(chain)];
- }
-
- FLAC__metadata_chain_delete(chain);
-
- if(have_stats)
- set_file_stats_(filename, &stats);
-
- return 0;
-}
-
-const char *grabbag__replaygain_store_to_file(const char *filename, float album_gain, float album_peak, float title_gain, float title_peak, FLAC__bool preserve_modtime)
-{
- FLAC__Metadata_Chain *chain;
- FLAC__StreamMetadata *block;
- const char *error;
-
- if(0 != (error = store_to_file_pre_(filename, &chain, &block)))
- return error;
-
- if(0 != (error = grabbag__replaygain_store_to_vorbiscomment(block, album_gain, album_peak, title_gain, title_peak))) {
- FLAC__metadata_chain_delete(chain);
- return error;
- }
-
- if(0 != (error = store_to_file_post_(filename, chain, preserve_modtime)))
- return error;
-
- return 0;
-}
-
-const char *grabbag__replaygain_store_to_file_reference(const char *filename, FLAC__bool preserve_modtime)
-{
- FLAC__Metadata_Chain *chain;
- FLAC__StreamMetadata *block;
- const char *error;
-
- if(0 != (error = store_to_file_pre_(filename, &chain, &block)))
- return error;
-
- if(0 != (error = grabbag__replaygain_store_to_vorbiscomment_reference(block))) {
- FLAC__metadata_chain_delete(chain);
- return error;
- }
-
- if(0 != (error = store_to_file_post_(filename, chain, preserve_modtime)))
- return error;
-
- return 0;
-}
-
-const char *grabbag__replaygain_store_to_file_album(const char *filename, float album_gain, float album_peak, FLAC__bool preserve_modtime)
-{
- FLAC__Metadata_Chain *chain;
- FLAC__StreamMetadata *block;
- const char *error;
-
- if(0 != (error = store_to_file_pre_(filename, &chain, &block)))
- return error;
-
- if(0 != (error = grabbag__replaygain_store_to_vorbiscomment_album(block, album_gain, album_peak))) {
- FLAC__metadata_chain_delete(chain);
- return error;
- }
-
- if(0 != (error = store_to_file_post_(filename, chain, preserve_modtime)))
- return error;
-
- return 0;
-}
-
-const char *grabbag__replaygain_store_to_file_title(const char *filename, float title_gain, float title_peak, FLAC__bool preserve_modtime)
-{
- FLAC__Metadata_Chain *chain;
- FLAC__StreamMetadata *block;
- const char *error;
-
- if(0 != (error = store_to_file_pre_(filename, &chain, &block)))
- return error;
-
- if(0 != (error = grabbag__replaygain_store_to_vorbiscomment_title(block, title_gain, title_peak))) {
- FLAC__metadata_chain_delete(chain);
- return error;
- }
-
- if(0 != (error = store_to_file_post_(filename, chain, preserve_modtime)))
- return error;
-
- return 0;
-}
-
-static FLAC__bool parse_double_(const FLAC__StreamMetadata_VorbisComment_Entry *entry, double *val)
-{
- char s[32], *end;
- const char *p, *q;
- double v;
-
- FLAC__ASSERT(0 != entry);
- FLAC__ASSERT(0 != val);
-
- p = (const char *)entry->entry;
- q = strchr(p, '=');
- if(0 == q)
- return false;
- q++;
- memset(s, 0, sizeof(s)-1);
- strncpy(s, q, local_min(sizeof(s)-1, entry->length - (q-p)));
-
- v = strtod(s, &end);
- if(end == s)
- return false;
-
- *val = v;
- return true;
-}
-
-FLAC__bool grabbag__replaygain_load_from_vorbiscomment(const FLAC__StreamMetadata *block, FLAC__bool album_mode, FLAC__bool strict, double *reference, double *gain, double *peak)
-{
- int reference_offset, gain_offset, peak_offset;
-
- FLAC__ASSERT(0 != block);
- FLAC__ASSERT(0 != reference);
- FLAC__ASSERT(0 != gain);
- FLAC__ASSERT(0 != peak);
- FLAC__ASSERT(block->type == FLAC__METADATA_TYPE_VORBIS_COMMENT);
-
- /* Default to current level until overridden by a detected tag; this
- * will always be true until we change replaygain_analysis.c
- */
- *reference = ReplayGainReferenceLoudness;
-
- if(0 <= (reference_offset = FLAC__metadata_object_vorbiscomment_find_entry_from(block, /*offset=*/0, (const char *)GRABBAG__REPLAYGAIN_TAG_REFERENCE_LOUDNESS)))
- (void)parse_double_(block->data.vorbis_comment.comments + reference_offset, reference);
-
- if(0 > (gain_offset = FLAC__metadata_object_vorbiscomment_find_entry_from(block, /*offset=*/0, (const char *)(album_mode? GRABBAG__REPLAYGAIN_TAG_ALBUM_GAIN : GRABBAG__REPLAYGAIN_TAG_TITLE_GAIN))))
- return !strict && grabbag__replaygain_load_from_vorbiscomment(block, !album_mode, /*strict=*/true, reference, gain, peak);
- if(0 > (peak_offset = FLAC__metadata_object_vorbiscomment_find_entry_from(block, /*offset=*/0, (const char *)(album_mode? GRABBAG__REPLAYGAIN_TAG_ALBUM_PEAK : GRABBAG__REPLAYGAIN_TAG_TITLE_PEAK))))
- return !strict && grabbag__replaygain_load_from_vorbiscomment(block, !album_mode, /*strict=*/true, reference, gain, peak);
-
- if(!parse_double_(block->data.vorbis_comment.comments + gain_offset, gain))
- return !strict && grabbag__replaygain_load_from_vorbiscomment(block, !album_mode, /*strict=*/true, reference, gain, peak);
- if(!parse_double_(block->data.vorbis_comment.comments + peak_offset, peak))
- return !strict && grabbag__replaygain_load_from_vorbiscomment(block, !album_mode, /*strict=*/true, reference, gain, peak);
-
- return true;
-}
-
-double grabbag__replaygain_compute_scale_factor(double peak, double gain, double preamp, FLAC__bool prevent_clipping)
-{
- double scale;
- FLAC__ASSERT(peak >= 0.0);
- gain += preamp;
- scale = (float) pow(10.0, gain * 0.05);
- if(prevent_clipping && peak > 0.0) {
- const double max_scale = (float)(1.0 / peak);
- if(scale > max_scale)
- scale = max_scale;
- }
- return scale;
-}
diff --git a/3rdparty/libflac/src/share/grabbag/seektable.c b/3rdparty/libflac/src/share/grabbag/seektable.c
deleted file mode 100644
index 55ac766ed14..00000000000
--- a/3rdparty/libflac/src/share/grabbag/seektable.c
+++ /dev/null
@@ -1,132 +0,0 @@
-/* grabbag - Convenience lib for various routines common to several tools
- * Copyright (C) 2002,2003,2004,2005,2006,2007 Josh Coalson
- *
- * This library 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 library 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 library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#if HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#include "share/grabbag.h"
-#include "FLAC/assert.h"
-#include <stdlib.h> /* for atoi() */
-#include <string.h>
-
-#ifdef _MSC_VER
-/* There's no strtoll() in MSVC6 so we just write a specialized one */
-static FLAC__int64 local__strtoll(const char *src, char **endptr)
-{
- FLAC__bool neg = false;
- FLAC__int64 ret = 0;
- int c;
- FLAC__ASSERT(0 != src);
- if(*src == '-') {
- neg = true;
- src++;
- }
- while(0 != (c = *src)) {
- c -= '0';
- if(c >= 0 && c <= 9)
- ret = (ret * 10) + c;
- else
- break;
- src++;
- }
- if(endptr)
- *endptr = (char*)src;
- return neg? -ret : ret;
-}
-#endif
-
-FLAC__bool grabbag__seektable_convert_specification_to_template(const char *spec, FLAC__bool only_explicit_placeholders, FLAC__uint64 total_samples_to_encode, unsigned sample_rate, FLAC__StreamMetadata *seektable_template, FLAC__bool *spec_has_real_points)
-{
- unsigned i;
- const char *pt;
-
- FLAC__ASSERT(0 != spec);
- FLAC__ASSERT(0 != seektable_template);
- FLAC__ASSERT(seektable_template->type = FLAC__METADATA_TYPE_SEEKTABLE);
-
- if(0 != spec_has_real_points)
- *spec_has_real_points = false;
-
- for(pt = spec, i = 0; pt && *pt; i++) {
- const char *q = strchr(pt, ';');
- FLAC__ASSERT(0 != q);
-
- if(q > pt) {
- if(0 == strncmp(pt, "X;", 2)) { /* -S X */
- if(!FLAC__metadata_object_seektable_template_append_placeholders(seektable_template, 1))
- return false;
- }
- else if(q[-1] == 'x') { /* -S #x */
- if(total_samples_to_encode > 0) { /* we can only do these if we know the number of samples to encode up front */
- if(0 != spec_has_real_points)
- *spec_has_real_points = true;
- if(!only_explicit_placeholders) {
- const int n = (unsigned)atoi(pt);
- if(n > 0)
- if(!FLAC__metadata_object_seektable_template_append_spaced_points(seektable_template, (unsigned)n, total_samples_to_encode))
- return false;
- }
- }
- }
- else if(q[-1] == 's') { /* -S #s */
- if(total_samples_to_encode > 0) { /* we can only do these if we know the number of samples to encode up front */
- FLAC__ASSERT(sample_rate > 0);
- if(0 != spec_has_real_points)
- *spec_has_real_points = true;
- if(!only_explicit_placeholders) {
- const double sec = atof(pt);
- if(sec > 0.0) {
- unsigned samples = (unsigned)(sec * (double)sample_rate);
- if(samples > 0) {
- /* +1 for the initial point at sample 0 */
- if(!FLAC__metadata_object_seektable_template_append_spaced_points_by_samples(seektable_template, samples, total_samples_to_encode))
- return false;
- }
- }
- }
- }
- }
- else { /* -S # */
- if(0 != spec_has_real_points)
- *spec_has_real_points = true;
- if(!only_explicit_placeholders) {
- char *endptr;
-#ifdef _MSC_VER
- const FLAC__int64 n = local__strtoll(pt, &endptr);
-#else
- const FLAC__int64 n = (FLAC__int64)strtoll(pt, &endptr, 10);
-#endif
- if(
- (n > 0 || (endptr > pt && *endptr == ';')) && /* is a valid number (extra check needed for "0") */
- (total_samples_to_encode == 0 || (FLAC__uint64)n < total_samples_to_encode) /* number is not >= the known total_samples_to_encode */
- )
- if(!FLAC__metadata_object_seektable_template_append_point(seektable_template, (FLAC__uint64)n))
- return false;
- }
- }
- }
-
- pt = ++q;
- }
-
- if(!FLAC__metadata_object_seektable_template_sort(seektable_template, /*compact=*/true))
- return false;
-
- return true;
-}