remove smpeg support completely and backport libmpg123 support instead. SDL-1.2
authorOzkan Sezer <sezeroz@gmail.com>
Thu, 11 Oct 2018 11:50:10 +0300
branchSDL-1.2
changeset 9026c862e733898
parent 898 b5d14516f1df
child 905 a31a903d1f72
remove smpeg support completely and backport libmpg123 support instead.
CHANGES
README
SDL_mixer.spec.in
VisualC/SDL_mixer.sln
VisualC/SDL_mixer.vcproj
VisualC/external/include/MPEGfilter.h
VisualC/external/include/mpg123.h
VisualC/external/include/smpeg.h
VisualC/external/lib/x64/LICENSE.mpg123.txt
VisualC/external/lib/x64/LICENSE.smpeg.txt
VisualC/external/lib/x64/libmpg123-0.dll
VisualC/external/lib/x64/smpeg.dll
VisualC/external/lib/x86/LICENSE.mpg123.txt
VisualC/external/lib/x86/LICENSE.smpeg.txt
VisualC/external/lib/x86/libmpg123-0.dll
VisualC/external/lib/x86/smpeg.dll
VisualC/native_midi/native_midi.vcproj
VisualC/playmus/playmus.vcproj
VisualC/playwave/playwave.vcproj
VisualC/timidity/timidity.vcproj
Xcode/Frameworks/mpg123.framework/Headers
Xcode/Frameworks/mpg123.framework/Resources
Xcode/Frameworks/mpg123.framework/Versions/A/Headers/mpg123.h
Xcode/Frameworks/mpg123.framework/Versions/A/Resources/Info.plist
Xcode/Frameworks/mpg123.framework/Versions/A/Resources/LICENSE.mpg123.txt
Xcode/Frameworks/mpg123.framework/Versions/A/mpg123
Xcode/Frameworks/mpg123.framework/Versions/Current
Xcode/Frameworks/mpg123.framework/mpg123
Xcode/Frameworks/smpeg.framework/Headers
Xcode/Frameworks/smpeg.framework/LICENSE.smpeg.txt
Xcode/Frameworks/smpeg.framework/Resources
Xcode/Frameworks/smpeg.framework/Versions/A/Headers/MPEG.h
Xcode/Frameworks/smpeg.framework/Versions/A/Headers/MPEGaction.h
Xcode/Frameworks/smpeg.framework/Versions/A/Headers/MPEGaudio.h
Xcode/Frameworks/smpeg.framework/Versions/A/Headers/MPEGerror.h
Xcode/Frameworks/smpeg.framework/Versions/A/Headers/MPEGfilter.h
Xcode/Frameworks/smpeg.framework/Versions/A/Headers/MPEGlist.h
Xcode/Frameworks/smpeg.framework/Versions/A/Headers/MPEGring.h
Xcode/Frameworks/smpeg.framework/Versions/A/Headers/MPEGstream.h
Xcode/Frameworks/smpeg.framework/Versions/A/Headers/MPEGsystem.h
Xcode/Frameworks/smpeg.framework/Versions/A/Headers/MPEGvideo.h
Xcode/Frameworks/smpeg.framework/Versions/A/Headers/smpeg.h
Xcode/Frameworks/smpeg.framework/Versions/A/Resources/Info.plist
Xcode/Frameworks/smpeg.framework/Versions/A/smpeg
Xcode/Frameworks/smpeg.framework/Versions/Current
Xcode/Frameworks/smpeg.framework/smpeg
Xcode/SDL_mixer.xcodeproj/project.pbxproj
acinclude/smpeg.m4
aclocal.m4
configure
configure.in
dynamic_mp3.c
dynamic_mp3.h
mixer.c
music.c
music_mpg.c
music_mpg.h
     1.1 --- a/CHANGES	Sun Oct 07 17:56:56 2018 +0300
     1.2 +++ b/CHANGES	Thu Oct 11 11:50:10 2018 +0300
     1.3 @@ -1,10 +1,14 @@
     1.4  1.2.13:
     1.5 +Ozkan Sezer - Wed, 10 Oct 2018 14:56:10
     1.6 + * Removed smpeg support for mp3 music, now that it's replaced by libmpg123
     1.7  Ozkan Sezer - Sun, 07 Oct 2018 14:00:02
     1.8 - * Backports of fixes from SDL_mixer-2.0.x
     1.9 + * Backports of several fixes from SDL_mixer-2.0.x
    1.10  Ozkan Sezer - Sun, 07 Oct 2018 08:50:02
    1.11   * Fixed mp3 mad decoder to skip tags, which otherwise would lead to crashes
    1.12 +Franc[e]sco - Thu, 20 Jul 2017 20:03:19
    1.13 + * Added support for MP3 playback using mpg123
    1.14  Sam Lantinga - Sat Aug 23 10:57:26 2014
    1.15 -* Fixed floating point exception in Mix_Volume()
    1.16 + * Fixed floating point exception in Mix_Volume()
    1.17  Paul P Komkoff Jr - Sun Jul 22 16:12:28 PDT 2012
    1.18   * Fixed malloc/free mismatch in the MikMod driver
    1.19  
     2.1 --- a/README	Sun Oct 07 17:56:56 2018 +0300
     2.2 +++ b/README	Thu Oct 11 11:50:10 2018 +0300
     2.3 @@ -6,7 +6,7 @@
     2.4  
     2.5  Due to popular demand, here is a simple multi-channel audio mixer.
     2.6  It supports 8 channels of 16 bit stereo audio, plus a single channel
     2.7 -of music, mixed by the popular MikMod MOD, Timidity MIDI and SMPEG MP3
     2.8 +of music, mixed by the popular MikMod MOD, Timidity MIDI, and mpg123 MP3
     2.9  libraries.
    2.10  
    2.11  See the header file SDL_mixer.h and the examples playwave.c and playmus.c
    2.12 @@ -16,7 +16,7 @@
    2.13  files as audio samples, and can load MIDI files via Timidity and the
    2.14  following music formats via MikMod:  .MOD .S3M .IT .XM. It can load
    2.15  Ogg Vorbis streams as music if built with Ogg Vorbis or Tremor libraries,
    2.16 -and finally it can load MP3 music using the SMPEG or libmad libraries.
    2.17 +and finally it can load MP3 music using the libmpeg123 or libmad libraries.
    2.18  
    2.19  Tremor decoding is disabled by default; you can enable it by passing
    2.20  	--enable-music-ogg-tremor
     3.1 --- a/SDL_mixer.spec.in	Sun Oct 07 17:56:56 2018 +0300
     3.2 +++ b/SDL_mixer.spec.in	Thu Oct 11 11:50:10 2018 +0300
     3.3 @@ -16,7 +16,7 @@
     3.4  Due to popular demand, here is a simple multi-channel audio mixer.
     3.5  It supports 4 channels of 16 bit stereo audio, plus a single channel
     3.6  of music, mixed by the popular MikMod MOD, Timidity MIDI, Ogg Vorbis,
     3.7 -Tremor, SMPEG MP3, and libmad MP3 libraries.
     3.8 +Tremor, libmpg123 and libmad MP3 libraries.
     3.9  
    3.10  %package devel
    3.11  Summary: Libraries, includes and more to develop SDL applications.
    3.12 @@ -27,7 +27,7 @@
    3.13  Due to popular demand, here is a simple multi-channel audio mixer.
    3.14  It supports 4 channels of 16 bit stereo audio, plus a single channel
    3.15  of music, mixed by the popular MikMod MOD, Timidity MIDI, Ogg Vorbis,
    3.16 -Tremor, SMPEG MP3, and libmad MP3 libraries.
    3.17 +Tremor, libmpg123 and libmad MP3 libraries.
    3.18  
    3.19  %prep
    3.20  %setup 
     4.1 --- a/VisualC/SDL_mixer.sln	Sun Oct 07 17:56:56 2018 +0300
     4.2 +++ b/VisualC/SDL_mixer.sln	Thu Oct 11 11:50:10 2018 +0300
     4.3 @@ -1,6 +1,6 @@
     4.4  
     4.5 -Microsoft Visual Studio Solution File, Format Version 10.00
     4.6 -# Visual Studio 2008
     4.7 +Microsoft Visual Studio Solution File, Format Version 9.00
     4.8 +# Visual Studio 2005
     4.9  Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SDL_mixer", "SDL_mixer.vcproj", "{F7E944B3-0815-40CD-B3E4-90B2A15B0E33}"
    4.10  	ProjectSection(ProjectDependencies) = postProject
    4.11  		{B162B6F1-E876-4D5F-A1F6-E3A6DC2F4A2C} = {B162B6F1-E876-4D5F-A1F6-E3A6DC2F4A2C}
     5.1 --- a/VisualC/SDL_mixer.vcproj	Sun Oct 07 17:56:56 2018 +0300
     5.2 +++ b/VisualC/SDL_mixer.vcproj	Thu Oct 11 11:50:10 2018 +0300
     5.3 @@ -1,11 +1,10 @@
     5.4  <?xml version="1.0" encoding="Windows-1252"?>
     5.5  <VisualStudioProject
     5.6  	ProjectType="Visual C++"
     5.7 -	Version="9.00"
     5.8 +	Version="8.00"
     5.9  	Name="SDL_mixer"
    5.10  	ProjectGUID="{F7E944B3-0815-40CD-B3E4-90B2A15B0E33}"
    5.11  	RootNamespace="SDL_mixer"
    5.12 -	TargetFrameworkVersion="131072"
    5.13  	>
    5.14  	<Platforms>
    5.15  		<Platform
    5.16 @@ -53,7 +52,7 @@
    5.17  				AdditionalOptions="/D OGG_DYNAMIC=\&quot;libvorbisfile-3.dll\&quot;"
    5.18  				Optimization="0"
    5.19  				AdditionalIncludeDirectories="..\timidity;..\native_midi;external\include"
    5.20 -				PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS;_CRT_SECURE_NO_WARNINGS;WAV_MUSIC;MOD_MUSIC;MOD_DYNAMIC=\&quot;libmikmod-2.dll\&quot;;OGG_MUSIC;OGG_DYNAMIC=\&quot;libvorbisfile-3.dll\&quot;;FLAC_MUSIC;FLAC_DYNAMIC=\&quot;libFLAC-8.dll\&quot;;MP3_MUSIC;MP3_DYNAMIC=\&quot;smpeg.dll\&quot;;MID_MUSIC;USE_TIMIDITY_MIDI;USE_NATIVE_MIDI"
    5.21 +				PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS;_CRT_SECURE_NO_WARNINGS;WAV_MUSIC;MOD_MUSIC;MOD_DYNAMIC=\&quot;libmikmod-2.dll\&quot;;OGG_MUSIC;OGG_DYNAMIC=\&quot;libvorbisfile-3.dll\&quot;;FLAC_MUSIC;FLAC_DYNAMIC=\&quot;libFLAC-8.dll\&quot;;MP3_MUSIC;MPG123_DYNAMIC=\&quot;libmpg123-0.dll\&quot;;MID_MUSIC;USE_TIMIDITY_MIDI;USE_NATIVE_MIDI"
    5.22  				MinimalRebuild="true"
    5.23  				RuntimeLibrary="2"
    5.24  				PrecompiledHeaderFile=".\Debug/SDL_mixer.pch"
    5.25 @@ -140,7 +139,7 @@
    5.26  				AdditionalOptions="/D OGG_DYNAMIC=\&quot;libvorbisfile-3.dll\&quot;"
    5.27  				Optimization="0"
    5.28  				AdditionalIncludeDirectories="..\timidity;..\native_midi;external\include"
    5.29 -				PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS;_CRT_SECURE_NO_WARNINGS;WAV_MUSIC;MOD_MUSIC;MOD_DYNAMIC=\&quot;libmikmod-2.dll\&quot;;OGG_MUSIC;OGG_DYNAMIC=\&quot;libvorbisfile-3.dll\&quot;;FLAC_MUSIC;FLAC_DYNAMIC=\&quot;libFLAC-8.dll\&quot;;MP3_MUSIC;MP3_DYNAMIC=\&quot;smpeg.dll\&quot;;MID_MUSIC;USE_TIMIDITY_MIDI;USE_NATIVE_MIDI"
    5.30 +				PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS;_CRT_SECURE_NO_WARNINGS;WAV_MUSIC;MOD_MUSIC;MOD_DYNAMIC=\&quot;libmikmod-2.dll\&quot;;OGG_MUSIC;OGG_DYNAMIC=\&quot;libvorbisfile-3.dll\&quot;;FLAC_MUSIC;FLAC_DYNAMIC=\&quot;libFLAC-8.dll\&quot;;MP3_MUSIC;MPG123_DYNAMIC=\&quot;libmpg123-0.dll\&quot;;MID_MUSIC;USE_TIMIDITY_MIDI;USE_NATIVE_MIDI"
    5.31  				MinimalRebuild="true"
    5.32  				RuntimeLibrary="2"
    5.33  				PrecompiledHeaderFile=".\Debug/SDL_mixer.pch"
    5.34 @@ -228,7 +227,7 @@
    5.35  				Optimization="2"
    5.36  				InlineFunctionExpansion="1"
    5.37  				AdditionalIncludeDirectories="..\timidity;..\native_midi;external\include"
    5.38 -				PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS;_CRT_SECURE_NO_WARNINGS;WAV_MUSIC;MOD_MUSIC;MOD_DYNAMIC=\&quot;libmikmod-2.dll\&quot;;OGG_MUSIC;OGG_DYNAMIC=\&quot;libvorbisfile-3.dll\&quot;;FLAC_MUSIC;FLAC_DYNAMIC=\&quot;libFLAC-8.dll\&quot;;MP3_MUSIC;MP3_DYNAMIC=\&quot;smpeg.dll\&quot;;MID_MUSIC;USE_TIMIDITY_MIDI;USE_NATIVE_MIDI"
    5.39 +				PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS;_CRT_SECURE_NO_WARNINGS;WAV_MUSIC;MOD_MUSIC;MOD_DYNAMIC=\&quot;libmikmod-2.dll\&quot;;OGG_MUSIC;OGG_DYNAMIC=\&quot;libvorbisfile-3.dll\&quot;;FLAC_MUSIC;FLAC_DYNAMIC=\&quot;libFLAC-8.dll\&quot;;MP3_MUSIC;MPG123_DYNAMIC=\&quot;libmpg123-0.dll\&quot;;MID_MUSIC;USE_TIMIDITY_MIDI;USE_NATIVE_MIDI"
    5.40  				StringPooling="true"
    5.41  				RuntimeLibrary="2"
    5.42  				EnableFunctionLevelLinking="true"
    5.43 @@ -314,7 +313,7 @@
    5.44  				Optimization="2"
    5.45  				InlineFunctionExpansion="1"
    5.46  				AdditionalIncludeDirectories="..\timidity;..\native_midi;external\include"
    5.47 -				PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS;_CRT_SECURE_NO_WARNINGS;WAV_MUSIC;MOD_MUSIC;MOD_DYNAMIC=\&quot;libmikmod-2.dll\&quot;;OGG_MUSIC;OGG_DYNAMIC=\&quot;libvorbisfile-3.dll\&quot;;FLAC_MUSIC;FLAC_DYNAMIC=\&quot;libFLAC-8.dll\&quot;;MP3_MUSIC;MP3_DYNAMIC=\&quot;smpeg.dll\&quot;;MID_MUSIC;USE_TIMIDITY_MIDI;USE_NATIVE_MIDI"
    5.48 +				PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS;_CRT_SECURE_NO_WARNINGS;WAV_MUSIC;MOD_MUSIC;MOD_DYNAMIC=\&quot;libmikmod-2.dll\&quot;;OGG_MUSIC;OGG_DYNAMIC=\&quot;libvorbisfile-3.dll\&quot;;FLAC_MUSIC;FLAC_DYNAMIC=\&quot;libFLAC-8.dll\&quot;;MP3_MUSIC;MPG123_DYNAMIC=\&quot;libmpg123-0.dll\&quot;;MID_MUSIC;USE_TIMIDITY_MIDI;USE_NATIVE_MIDI"
    5.49  				StringPooling="true"
    5.50  				RuntimeLibrary="2"
    5.51  				EnableFunctionLevelLinking="true"
    5.52 @@ -901,6 +900,14 @@
    5.53  			>
    5.54  		</File>
    5.55  		<File
    5.56 +			RelativePath="..\music_mpg.c"
    5.57 +			>
    5.58 +		</File>
    5.59 +		<File
    5.60 +			RelativePath="..\music_mpg.h"
    5.61 +			>
    5.62 +		</File>
    5.63 +		<File
    5.64  			RelativePath="..\music_ogg.c"
    5.65  			>
    5.66  			<FileConfiguration
     6.1 --- a/VisualC/external/include/MPEGfilter.h	Sun Oct 07 17:56:56 2018 +0300
     6.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     6.3 @@ -1,67 +0,0 @@
     6.4 -/*
     6.5 -    SMPEG - SDL MPEG Player Library
     6.6 -    Copyright (C) 1999  Loki Entertainment Software
     6.7 -
     6.8 -    This library is free software; you can redistribute it and/or
     6.9 -    modify it under the terms of the GNU Library General Public
    6.10 -    License as published by the Free Software Foundation; either
    6.11 -    version 2 of the License, or (at your option) any later version.
    6.12 -
    6.13 -    This library is distributed in the hope that it will be useful,
    6.14 -    but WITHOUT ANY WARRANTY; without even the implied warranty of
    6.15 -    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    6.16 -    Library General Public License for more details.
    6.17 -
    6.18 -    You should have received a copy of the GNU Library General Public
    6.19 -    License along with this library; if not, write to the Free
    6.20 -    Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
    6.21 -*/
    6.22 -
    6.23 -/* MPEG filters */
    6.24 -
    6.25 -#ifndef _MPEGFILTER_H_
    6.26 -#define _MPEGFILTER_H_
    6.27 -
    6.28 -/* SMPEG filter info flags */
    6.29 -#define SMPEG_FILTER_INFO_MB_ERROR    1
    6.30 -#define SMPEG_FILTER_INFO_PIXEL_ERROR 2
    6.31 -
    6.32 -/* Filter info from SMPEG */
    6.33 -typedef struct SMPEG_FilterInfo {
    6.34 -  Uint16* yuv_mb_square_error;
    6.35 -  Uint16* yuv_pixel_square_error;
    6.36 -} SMPEG_FilterInfo;
    6.37 -
    6.38 -/* MPEG filter definition */
    6.39 -struct SMPEG_Filter;
    6.40 -
    6.41 -/* Callback functions for the filter */
    6.42 -typedef void (* SMPEG_FilterCallback)( SDL_Overlay * dest, SDL_Overlay * source, SDL_Rect * region, SMPEG_FilterInfo * filter_info, void * data );
    6.43 -typedef void (* SMPEG_FilterDestroy)( struct SMPEG_Filter * filter );
    6.44 -
    6.45 -/* The filter definition itself */
    6.46 -typedef struct SMPEG_Filter {
    6.47 -  Uint32 flags;
    6.48 -  void * data;
    6.49 -  SMPEG_FilterCallback callback;
    6.50 -  SMPEG_FilterDestroy destroy;
    6.51 -} SMPEG_Filter;
    6.52 -
    6.53 -/* SMPEG built-in filters. */
    6.54 -#ifdef __cplusplus
    6.55 -extern "C" {
    6.56 -#endif
    6.57 -
    6.58 -/* The null filter (default). It simply copies the source rectangle to the video overlay. */ 
    6.59 -extern DECLSPEC SMPEG_Filter * SMPEGfilter_null(void);
    6.60 -
    6.61 -/* The bilinear filter. A basic low-pass filter that will produce a smoother image. */ 
    6.62 -extern DECLSPEC SMPEG_Filter * SMPEGfilter_bilinear(void);
    6.63 -
    6.64 -/* The deblocking filter. It filters block borders and non-intra coded blocks to reduce blockiness */ 
    6.65 -extern DECLSPEC SMPEG_Filter * SMPEGfilter_deblocking(void);
    6.66 -
    6.67 -#ifdef __cplusplus
    6.68 -};
    6.69 -#endif
    6.70 -#endif /* _MPEGFILTER_H_ */
     7.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     7.2 +++ b/VisualC/external/include/mpg123.h	Thu Oct 11 11:50:10 2018 +0300
     7.3 @@ -0,0 +1,1208 @@
     7.4 +/*
     7.5 +	libmpg123: MPEG Audio Decoder library (version 1.22.4)
     7.6 +
     7.7 +	copyright 1995-2010 by the mpg123 project - free software under the terms of the LGPL 2.1
     7.8 +	see COPYING and AUTHORS files in distribution or http://mpg123.org
     7.9 +*/
    7.10 +
    7.11 +#ifndef MPG123_LIB_H
    7.12 +#define MPG123_LIB_H
    7.13 +
    7.14 +/** \file mpg123.h The header file for the libmpg123 MPEG Audio decoder */
    7.15 +
    7.16 +/* A macro to check at compile time which set of API functions to expect.
    7.17 +   This should be incremented at least each time a new symbol is added to the header. */
    7.18 +#define MPG123_API_VERSION 41
    7.19 +
    7.20 +/* These aren't actually in use... seems to work without using libtool. */
    7.21 +#ifdef BUILD_MPG123_DLL
    7.22 +/* The dll exports. */
    7.23 +#define MPG123_EXPORT __declspec(dllexport)
    7.24 +#else
    7.25 +#ifdef LINK_MPG123_DLL
    7.26 +/* The exe imports. */
    7.27 +#define MPG123_EXPORT __declspec(dllimport)
    7.28 +#else
    7.29 +/* Nothing on normal/UNIX builds */
    7.30 +#define MPG123_EXPORT
    7.31 +#endif
    7.32 +#endif
    7.33 +
    7.34 +#if defined(_MSC_VER) && !defined(MPG123_DEF_SSIZE_T)
    7.35 +#define MPG123_DEF_SSIZE_T
    7.36 +#include <stddef.h>
    7.37 +typedef ptrdiff_t ssize_t;
    7.38 +#endif
    7.39 +
    7.40 +#ifndef MPG123_NO_CONFIGURE /* Enable use of this file without configure. */
    7.41 +#include <stdlib.h>
    7.42 +#include <sys/types.h>
    7.43 +
    7.44 +/* Simplified large file handling.
    7.45 +	I used to have a check here that prevents building for a library with conflicting large file setup
    7.46 +	(application that uses 32 bit offsets with library that uses 64 bits).
    7.47 +	While that was perfectly fine in an environment where there is one incarnation of the library,
    7.48 +	it hurt GNU/Linux and Solaris systems with multilib where the distribution fails to provide the
    7.49 +	correct header matching the 32 bit library (where large files need explicit support) or
    7.50 +	the 64 bit library (where there is no distinction).
    7.51 +
    7.52 +	New approach: When the app defines _FILE_OFFSET_BITS, it wants non-default large file support,
    7.53 +	and thus functions with added suffix (mpg123_open_64).
    7.54 +	Any mismatch will be caught at link time because of the _FILE_OFFSET_BITS setting used when
    7.55 +	building libmpg123. Plus, there's dual mode large file support in mpg123 since 1.12 now.
    7.56 +	Link failure is not the expected outcome of any half-sane usage anymore.
    7.57 +
    7.58 +	More complication: What about client code defining _LARGEFILE64_SOURCE? It might want direct access to the _64 functions, along with the ones without suffix. Well, that's possible now via defining MPG123_NO_LARGENAME and MPG123_LARGESUFFIX, respectively, for disabling or enforcing the suffix names.
    7.59 +*/
    7.60 +
    7.61 +/*
    7.62 +	Now, the renaming of large file aware functions.
    7.63 +	By default, it appends underscore _FILE_OFFSET_BITS (so, mpg123_seek_64 for mpg123_seek), if _FILE_OFFSET_BITS is defined. You can force a different suffix via MPG123_LARGESUFFIX (that must include the underscore), or you can just disable the whole mess by defining MPG123_NO_LARGENAME.
    7.64 +*/
    7.65 +#if (!defined MPG123_NO_LARGENAME) && ((defined _FILE_OFFSET_BITS) || (defined MPG123_LARGESUFFIX))
    7.66 +
    7.67 +/* Need some trickery to concatenate the value(s) of the given macro(s). */
    7.68 +#define MPG123_MACROCAT_REALLY(a, b) a ## b
    7.69 +#define MPG123_MACROCAT(a, b) MPG123_MACROCAT_REALLY(a, b)
    7.70 +#ifndef MPG123_LARGESUFFIX
    7.71 +#define MPG123_LARGESUFFIX MPG123_MACROCAT(_, _FILE_OFFSET_BITS)
    7.72 +#endif
    7.73 +#define MPG123_LARGENAME(func) MPG123_MACROCAT(func, MPG123_LARGESUFFIX)
    7.74 +
    7.75 +#define mpg123_open         MPG123_LARGENAME(mpg123_open)
    7.76 +#define mpg123_open_fd      MPG123_LARGENAME(mpg123_open_fd)
    7.77 +#define mpg123_open_handle  MPG123_LARGENAME(mpg123_open_handle)
    7.78 +#define mpg123_framebyframe_decode MPG123_LARGENAME(mpg123_framebyframe_decode)
    7.79 +#define mpg123_decode_frame MPG123_LARGENAME(mpg123_decode_frame)
    7.80 +#define mpg123_tell         MPG123_LARGENAME(mpg123_tell)
    7.81 +#define mpg123_tellframe    MPG123_LARGENAME(mpg123_tellframe)
    7.82 +#define mpg123_tell_stream  MPG123_LARGENAME(mpg123_tell_stream)
    7.83 +#define mpg123_seek         MPG123_LARGENAME(mpg123_seek)
    7.84 +#define mpg123_feedseek     MPG123_LARGENAME(mpg123_feedseek)
    7.85 +#define mpg123_seek_frame   MPG123_LARGENAME(mpg123_seek_frame)
    7.86 +#define mpg123_timeframe    MPG123_LARGENAME(mpg123_timeframe)
    7.87 +#define mpg123_index        MPG123_LARGENAME(mpg123_index)
    7.88 +#define mpg123_set_index    MPG123_LARGENAME(mpg123_set_index)
    7.89 +#define mpg123_position     MPG123_LARGENAME(mpg123_position)
    7.90 +#define mpg123_length       MPG123_LARGENAME(mpg123_length)
    7.91 +#define mpg123_set_filesize MPG123_LARGENAME(mpg123_set_filesize)
    7.92 +#define mpg123_replace_reader MPG123_LARGENAME(mpg123_replace_reader)
    7.93 +#define mpg123_replace_reader_handle MPG123_LARGENAME(mpg123_replace_reader_handle)
    7.94 +#define mpg123_framepos MPG123_LARGENAME(mpg123_framepos)
    7.95 +
    7.96 +#endif /* largefile hackery */
    7.97 +
    7.98 +#endif /* MPG123_NO_CONFIGURE */
    7.99 +
   7.100 +#ifdef __cplusplus
   7.101 +extern "C" {
   7.102 +#endif
   7.103 +
   7.104 +/** \defgroup mpg123_init mpg123 library and handle setup
   7.105 + *
   7.106 + * Functions to initialise and shutdown the mpg123 library and handles.
   7.107 + * The parameters of handles have workable defaults, you only have to tune them when you want to tune something;-)
   7.108 + * Tip: Use a RVA setting...
   7.109 + *
   7.110 + * @{
   7.111 + */
   7.112 +
   7.113 +/** Opaque structure for the libmpg123 decoder handle. */
   7.114 +struct mpg123_handle_struct;
   7.115 +
   7.116 +/** Opaque structure for the libmpg123 decoder handle.
   7.117 + *  Most functions take a pointer to a mpg123_handle as first argument and operate on its data in an object-oriented manner.
   7.118 + */
   7.119 +typedef struct mpg123_handle_struct mpg123_handle;
   7.120 +
   7.121 +/** Function to initialise the mpg123 library. 
   7.122 + *	This function is not thread-safe. Call it exactly once per process, before any other (possibly threaded) work with the library.
   7.123 + *
   7.124 + *	\return MPG123_OK if successful, otherwise an error number.
   7.125 + */
   7.126 +MPG123_EXPORT int  mpg123_init(void);
   7.127 +
   7.128 +/** Function to close down the mpg123 library. 
   7.129 + *	This function is not thread-safe. Call it exactly once per process, before any other (possibly threaded) work with the library. */
   7.130 +MPG123_EXPORT void mpg123_exit(void);
   7.131 +
   7.132 +/** Create a handle with optional choice of decoder (named by a string, see mpg123_decoders() or mpg123_supported_decoders()).
   7.133 + *  and optional retrieval of an error code to feed to mpg123_plain_strerror().
   7.134 + *  Optional means: Any of or both the parameters may be NULL.
   7.135 + *
   7.136 + *  \return Non-NULL pointer when successful.
   7.137 + */
   7.138 +MPG123_EXPORT mpg123_handle *mpg123_new(const char* decoder, int *error);
   7.139 +
   7.140 +/** Delete handle, mh is either a valid mpg123 handle or NULL. */
   7.141 +MPG123_EXPORT void mpg123_delete(mpg123_handle *mh);
   7.142 +
   7.143 +/** Enumeration of the parameters types that it is possible to set/get. */
   7.144 +enum mpg123_parms
   7.145 +{
   7.146 +	MPG123_VERBOSE = 0,        /**< set verbosity value for enabling messages to stderr, >= 0 makes sense (integer) */
   7.147 +	MPG123_FLAGS,          /**< set all flags, p.ex val = MPG123_GAPLESS|MPG123_MONO_MIX (integer) */
   7.148 +	MPG123_ADD_FLAGS,      /**< add some flags (integer) */
   7.149 +	MPG123_FORCE_RATE,     /**< when value > 0, force output rate to that value (integer) */
   7.150 +	MPG123_DOWN_SAMPLE,    /**< 0=native rate, 1=half rate, 2=quarter rate (integer) */
   7.151 +	MPG123_RVA,            /**< one of the RVA choices above (integer) */
   7.152 +	MPG123_DOWNSPEED,      /**< play a frame N times (integer) */
   7.153 +	MPG123_UPSPEED,        /**< play every Nth frame (integer) */
   7.154 +	MPG123_START_FRAME,    /**< start with this frame (skip frames before that, integer) */ 
   7.155 +	MPG123_DECODE_FRAMES,  /**< decode only this number of frames (integer) */
   7.156 +	MPG123_ICY_INTERVAL,   /**< stream contains ICY metadata with this interval (integer) */
   7.157 +	MPG123_OUTSCALE,       /**< the scale for output samples (amplitude - integer or float according to mpg123 output format, normally integer) */
   7.158 +	MPG123_TIMEOUT,        /**< timeout for reading from a stream (not supported on win32, integer) */
   7.159 +	MPG123_REMOVE_FLAGS,   /**< remove some flags (inverse of MPG123_ADD_FLAGS, integer) */
   7.160 +	MPG123_RESYNC_LIMIT,   /**< Try resync on frame parsing for that many bytes or until end of stream (<0 ... integer). This can enlarge the limit for skipping junk on beginning, too (but not reduce it).  */
   7.161 +	MPG123_INDEX_SIZE      /**< Set the frame index size (if supported). Values <0 mean that the index is allowed to grow dynamically in these steps (in positive direction, of course) -- Use this when you really want a full index with every individual frame. */
   7.162 +	,MPG123_PREFRAMES /**< Decode/ignore that many frames in advance for layer 3. This is needed to fill bit reservoir after seeking, for example (but also at least one frame in advance is needed to have all "normal" data for layer 3). Give a positive integer value, please.*/
   7.163 +	,MPG123_FEEDPOOL  /**< For feeder mode, keep that many buffers in a pool to avoid frequent malloc/free. The pool is allocated on mpg123_open_feed(). If you change this parameter afterwards, you can trigger growth and shrinkage during decoding. The default value could change any time. If you care about this, then set it. (integer) */
   7.164 +	,MPG123_FEEDBUFFER /**< Minimal size of one internal feeder buffer, again, the default value is subject to change. (integer) */
   7.165 +};
   7.166 +
   7.167 +/** Flag bits for MPG123_FLAGS, use the usual binary or to combine. */
   7.168 +enum mpg123_param_flags
   7.169 +{
   7.170 +	 MPG123_FORCE_MONO   = 0x7  /**<     0111 Force some mono mode: This is a test bitmask for seeing if any mono forcing is active. */
   7.171 +	,MPG123_MONO_LEFT    = 0x1  /**<     0001 Force playback of left channel only.  */
   7.172 +	,MPG123_MONO_RIGHT   = 0x2  /**<     0010 Force playback of right channel only. */
   7.173 +	,MPG123_MONO_MIX     = 0x4  /**<     0100 Force playback of mixed mono.         */
   7.174 +	,MPG123_FORCE_STEREO = 0x8  /**<     1000 Force stereo output.                  */
   7.175 +	,MPG123_FORCE_8BIT   = 0x10 /**< 00010000 Force 8bit formats.                   */
   7.176 +	,MPG123_QUIET        = 0x20 /**< 00100000 Suppress any printouts (overrules verbose).                    */
   7.177 +	,MPG123_GAPLESS      = 0x40 /**< 01000000 Enable gapless decoding (default on if libmpg123 has support). */
   7.178 +	,MPG123_NO_RESYNC    = 0x80 /**< 10000000 Disable resync stream after error.                             */
   7.179 +	,MPG123_SEEKBUFFER   = 0x100 /**< 000100000000 Enable small buffer on non-seekable streams to allow some peek-ahead (for better MPEG sync). */
   7.180 +	,MPG123_FUZZY        = 0x200 /**< 001000000000 Enable fuzzy seeks (guessing byte offsets or using approximate seek points from Xing TOC) */
   7.181 +	,MPG123_FORCE_FLOAT  = 0x400 /**< 010000000000 Force floating point output (32 or 64 bits depends on mpg123 internal precision). */
   7.182 +	,MPG123_PLAIN_ID3TEXT = 0x800 /**< 100000000000 Do not translate ID3 text data to UTF-8. ID3 strings will contain the raw text data, with the first byte containing the ID3 encoding code. */
   7.183 +	,MPG123_IGNORE_STREAMLENGTH = 0x1000 /**< 1000000000000 Ignore any stream length information contained in the stream, which can be contained in a 'TLEN' frame of an ID3v2 tag or a Xing tag */
   7.184 +	,MPG123_SKIP_ID3V2 = 0x2000 /**< 10 0000 0000 0000 Do not parse ID3v2 tags, just skip them. */
   7.185 +	,MPG123_IGNORE_INFOFRAME = 0x4000 /**< 100 0000 0000 0000 Do not parse the LAME/Xing info frame, treat it as normal MPEG data. */
   7.186 +	,MPG123_AUTO_RESAMPLE = 0x8000 /**< 1000 0000 0000 0000 Allow automatic internal resampling of any kind (default on if supported). Especially when going lowlevel with replacing output buffer, you might want to unset this flag. Setting MPG123_DOWNSAMPLE or MPG123_FORCE_RATE will override this. */
   7.187 +	,MPG123_PICTURE = 0x10000 /**< 17th bit: Enable storage of pictures from tags (ID3v2 APIC). */
   7.188 +};
   7.189 +
   7.190 +/** choices for MPG123_RVA */
   7.191 +enum mpg123_param_rva
   7.192 +{
   7.193 +	 MPG123_RVA_OFF   = 0 /**< RVA disabled (default).   */
   7.194 +	,MPG123_RVA_MIX   = 1 /**< Use mix/track/radio gain. */
   7.195 +	,MPG123_RVA_ALBUM = 2 /**< Use album/audiophile gain */
   7.196 +	,MPG123_RVA_MAX   = MPG123_RVA_ALBUM /**< The maximum RVA code, may increase in future. */
   7.197 +};
   7.198 +
   7.199 +/* TODO: Assess the possibilities and troubles of changing parameters during playback. */
   7.200 +
   7.201 +/** Set a specific parameter, for a specific mpg123_handle, using a parameter 
   7.202 + *  type key chosen from the mpg123_parms enumeration, to the specified value.
   7.203 + * \return MPG123_OK on success
   7.204 + */
   7.205 +MPG123_EXPORT int mpg123_param(mpg123_handle *mh, enum mpg123_parms type, long value, double fvalue);
   7.206 +
   7.207 +/** Get a specific parameter, for a specific mpg123_handle. 
   7.208 + *  See the mpg123_parms enumeration for a list of available parameters.
   7.209 + *  \return MPG123_OK on success
   7.210 + */
   7.211 +MPG123_EXPORT int mpg123_getparam(mpg123_handle *mh, enum mpg123_parms type, long *val, double *fval);
   7.212 +
   7.213 +/** Feature set available for query with mpg123_feature. */
   7.214 +enum mpg123_feature_set
   7.215 +{
   7.216 +	 MPG123_FEATURE_ABI_UTF8OPEN = 0     /**< mpg123 expects path names to be given in UTF-8 encoding instead of plain native. */
   7.217 +	,MPG123_FEATURE_OUTPUT_8BIT          /**< 8bit output   */
   7.218 +	,MPG123_FEATURE_OUTPUT_16BIT         /**< 16bit output  */
   7.219 +	,MPG123_FEATURE_OUTPUT_32BIT         /**< 32bit output  */
   7.220 +	,MPG123_FEATURE_INDEX                /**< support for building a frame index for accurate seeking */
   7.221 +	,MPG123_FEATURE_PARSE_ID3V2          /**< id3v2 parsing */
   7.222 +	,MPG123_FEATURE_DECODE_LAYER1        /**< mpeg layer-1 decoder enabled */
   7.223 +	,MPG123_FEATURE_DECODE_LAYER2        /**< mpeg layer-2 decoder enabled */
   7.224 +	,MPG123_FEATURE_DECODE_LAYER3        /**< mpeg layer-3 decoder enabled */
   7.225 +	,MPG123_FEATURE_DECODE_ACCURATE      /**< accurate decoder rounding    */
   7.226 +	,MPG123_FEATURE_DECODE_DOWNSAMPLE    /**< downsample (sample omit)     */
   7.227 +	,MPG123_FEATURE_DECODE_NTOM          /**< flexible rate decoding       */
   7.228 +	,MPG123_FEATURE_PARSE_ICY            /**< ICY support                  */
   7.229 +	,MPG123_FEATURE_TIMEOUT_READ         /**< Reader with timeout (network). */
   7.230 +};
   7.231 +
   7.232 +/** Query libmpg123 feature, 1 for success, 0 for unimplemented functions. */
   7.233 +MPG123_EXPORT int mpg123_feature(const enum mpg123_feature_set key);
   7.234 +
   7.235 +/* @} */
   7.236 +
   7.237 +
   7.238 +/** \defgroup mpg123_error mpg123 error handling
   7.239 + *
   7.240 + * Functions to get text version of the error numbers and an enumeration
   7.241 + * of the error codes returned by libmpg123.
   7.242 + *
   7.243 + * Most functions operating on a mpg123_handle simply return MPG123_OK (0)
   7.244 + * on success and MPG123_ERR (-1) on failure, setting the internal error
   7.245 + * variable of the handle to the specific error code. If there was not a valid
   7.246 + * (non-NULL) handle provided to a function operating on one, MPG123_BAD_HANDLE
   7.247 + * may be returned if this can not be confused with a valid positive return
   7.248 + * value.
   7.249 + * Meaning: A function expected to return positive integers on success will
   7.250 + * always indicate error or a special condition by returning a negative one.
   7.251 + *
   7.252 + * Decoding/seek functions may also return message codes MPG123_DONE,
   7.253 + * MPG123_NEW_FORMAT and MPG123_NEED_MORE (all negative, see below on how to
   7.254 + * react). Note that calls to those can be nested, so generally watch out
   7.255 + * for these codes after initial handle setup.
   7.256 + * Especially any function that needs information about the current stream
   7.257 + * to work will try to at least parse the beginning if that did not happen
   7.258 + * yet.
   7.259 + *
   7.260 + * On a function that is supposed to return MPG123_OK on success and
   7.261 + * MPG123_ERR on failure, make sure you check for != MPG123_OK, not
   7.262 + * == MPG123_ERR, as the error code could get more specific in future,
   7.263 + * or there is just a special message from a decoding routine as indicated
   7.264 + * above.
   7.265 + *
   7.266 + * @{
   7.267 + */
   7.268 +
   7.269 +/** Enumeration of the message and error codes and returned by libmpg123 functions. */
   7.270 +enum mpg123_errors
   7.271 +{
   7.272 +	MPG123_DONE=-12,	/**< Message: Track ended. Stop decoding. */
   7.273 +	MPG123_NEW_FORMAT=-11,	/**< Message: Output format will be different on next call. Note that some libmpg123 versions between 1.4.3 and 1.8.0 insist on you calling mpg123_getformat() after getting this message code. Newer verisons behave like advertised: You have the chance to call mpg123_getformat(), but you can also just continue decoding and get your data. */
   7.274 +	MPG123_NEED_MORE=-10,	/**< Message: For feed reader: "Feed me more!" (call mpg123_feed() or mpg123_decode() with some new input data). */
   7.275 +	MPG123_ERR=-1,			/**< Generic Error */
   7.276 +	MPG123_OK=0, 			/**< Success */
   7.277 +	MPG123_BAD_OUTFORMAT, 	/**< Unable to set up output format! */
   7.278 +	MPG123_BAD_CHANNEL,		/**< Invalid channel number specified. */
   7.279 +	MPG123_BAD_RATE,		/**< Invalid sample rate specified.  */
   7.280 +	MPG123_ERR_16TO8TABLE,	/**< Unable to allocate memory for 16 to 8 converter table! */
   7.281 +	MPG123_BAD_PARAM,		/**< Bad parameter id! */
   7.282 +	MPG123_BAD_BUFFER,		/**< Bad buffer given -- invalid pointer or too small size. */
   7.283 +	MPG123_OUT_OF_MEM,		/**< Out of memory -- some malloc() failed. */
   7.284 +	MPG123_NOT_INITIALIZED,	/**< You didn't initialize the library! */
   7.285 +	MPG123_BAD_DECODER,		/**< Invalid decoder choice. */
   7.286 +	MPG123_BAD_HANDLE,		/**< Invalid mpg123 handle. */
   7.287 +	MPG123_NO_BUFFERS,		/**< Unable to initialize frame buffers (out of memory?). */
   7.288 +	MPG123_BAD_RVA,			/**< Invalid RVA mode. */
   7.289 +	MPG123_NO_GAPLESS,		/**< This build doesn't support gapless decoding. */
   7.290 +	MPG123_NO_SPACE,		/**< Not enough buffer space. */
   7.291 +	MPG123_BAD_TYPES,		/**< Incompatible numeric data types. */
   7.292 +	MPG123_BAD_BAND,		/**< Bad equalizer band. */
   7.293 +	MPG123_ERR_NULL,		/**< Null pointer given where valid storage address needed. */
   7.294 +	MPG123_ERR_READER,		/**< Error reading the stream. */
   7.295 +	MPG123_NO_SEEK_FROM_END,/**< Cannot seek from end (end is not known). */
   7.296 +	MPG123_BAD_WHENCE,		/**< Invalid 'whence' for seek function.*/
   7.297 +	MPG123_NO_TIMEOUT,		/**< Build does not support stream timeouts. */
   7.298 +	MPG123_BAD_FILE,		/**< File access error. */
   7.299 +	MPG123_NO_SEEK,			/**< Seek not supported by stream. */
   7.300 +	MPG123_NO_READER,		/**< No stream opened. */
   7.301 +	MPG123_BAD_PARS,		/**< Bad parameter handle. */
   7.302 +	MPG123_BAD_INDEX_PAR,	/**< Bad parameters to mpg123_index() and mpg123_set_index() */
   7.303 +	MPG123_OUT_OF_SYNC,	/**< Lost track in bytestream and did not try to resync. */
   7.304 +	MPG123_RESYNC_FAIL,	/**< Resync failed to find valid MPEG data. */
   7.305 +	MPG123_NO_8BIT,	/**< No 8bit encoding possible. */
   7.306 +	MPG123_BAD_ALIGN,	/**< Stack aligmnent error */
   7.307 +	MPG123_NULL_BUFFER,	/**< NULL input buffer with non-zero size... */
   7.308 +	MPG123_NO_RELSEEK,	/**< Relative seek not possible (screwed up file offset) */
   7.309 +	MPG123_NULL_POINTER, /**< You gave a null pointer somewhere where you shouldn't have. */
   7.310 +	MPG123_BAD_KEY,	/**< Bad key value given. */
   7.311 +	MPG123_NO_INDEX,	/**< No frame index in this build. */
   7.312 +	MPG123_INDEX_FAIL,	/**< Something with frame index went wrong. */
   7.313 +	MPG123_BAD_DECODER_SETUP,	/**< Something prevents a proper decoder setup */
   7.314 +	MPG123_MISSING_FEATURE  /**< This feature has not been built into libmpg123. */
   7.315 +	,MPG123_BAD_VALUE /**< A bad value has been given, somewhere. */
   7.316 +	,MPG123_LSEEK_FAILED /**< Low-level seek failed. */
   7.317 +	,MPG123_BAD_CUSTOM_IO /**< Custom I/O not prepared. */
   7.318 +	,MPG123_LFS_OVERFLOW /**< Offset value overflow during translation of large file API calls -- your client program cannot handle that large file. */
   7.319 +	,MPG123_INT_OVERFLOW /**< Some integer overflow. */
   7.320 +};
   7.321 +
   7.322 +/** Return a string describing that error errcode means. */
   7.323 +MPG123_EXPORT const char* mpg123_plain_strerror(int errcode);
   7.324 +
   7.325 +/** Give string describing what error has occured in the context of handle mh.
   7.326 + *  When a function operating on an mpg123 handle returns MPG123_ERR, you should check for the actual reason via
   7.327 + *  char *errmsg = mpg123_strerror(mh)
   7.328 + *  This function will catch mh == NULL and return the message for MPG123_BAD_HANDLE. */
   7.329 +MPG123_EXPORT const char* mpg123_strerror(mpg123_handle *mh);
   7.330 +
   7.331 +/** Return the plain errcode intead of a string.
   7.332 + *  \return error code recorded in handle or MPG123_BAD_HANDLE
   7.333 + */
   7.334 +MPG123_EXPORT int mpg123_errcode(mpg123_handle *mh);
   7.335 +
   7.336 +/*@}*/
   7.337 +
   7.338 +
   7.339 +/** \defgroup mpg123_decoder mpg123 decoder selection
   7.340 + *
   7.341 + * Functions to list and select the available decoders.
   7.342 + * Perhaps the most prominent feature of mpg123: You have several (optimized) decoders to choose from (on x86 and PPC (MacOS) systems, that is).
   7.343 + *
   7.344 + * @{
   7.345 + */
   7.346 +
   7.347 +/** Return a NULL-terminated array of generally available decoder names (plain 8bit ASCII). */
   7.348 +MPG123_EXPORT const char **mpg123_decoders(void);
   7.349 +
   7.350 +/** Return a NULL-terminated array of the decoders supported by the CPU (plain 8bit ASCII). */
   7.351 +MPG123_EXPORT const char **mpg123_supported_decoders(void);
   7.352 +
   7.353 +/** Set the chosen decoder to 'decoder_name'
   7.354 + * \return MPG123_OK on success
   7.355 + */
   7.356 +MPG123_EXPORT int mpg123_decoder(mpg123_handle *mh, const char* decoder_name);
   7.357 +
   7.358 +/** Get the currently active decoder engine name.
   7.359 +    The active decoder engine can vary depening on output constraints,
   7.360 +    mostly non-resampling, integer output is accelerated via 3DNow & Co. but for other modes a fallback engine kicks in.
   7.361 +    Note that this can return a decoder that is ony active in the hidden and not available as decoder choice from the outside.
   7.362 +    \return The decoder name or NULL on error. */
   7.363 +MPG123_EXPORT const char* mpg123_current_decoder(mpg123_handle *mh);
   7.364 +
   7.365 +/*@}*/
   7.366 +
   7.367 +
   7.368 +/** \defgroup mpg123_output mpg123 output audio format 
   7.369 + *
   7.370 + * Functions to get and select the format of the decoded audio.
   7.371 + *
   7.372 + * Before you dive in, please be warned that you might get confused by this. This seems to happen a lot, therefore I am trying to explain in advance.
   7.373 + *
   7.374 + * The mpg123 library decides what output format to use when encountering the first frame in a stream, or actually any frame that is still valid but differs from the frames before in the prompted output format. At such a deciding point, an internal table of allowed encodings, sampling rates and channel setups is consulted. According to this table, an output format is chosen and the decoding engine set up accordingly (including ptimized routines for different output formats). This might seem unusual but it just follows from the non-existence of "MPEG audio files" with defined overall properties. There are streams, streams are concatenations of (semi) independent frames. We store streams on disk and call them "MPEG audio files", but that does not change their nature as the decoder is concerned (the LAME/Xing header for gapless decoding makes things interesting again).
   7.375 + *
   7.376 + * To get to the point: What you do with mpg123_format() and friends is to fill the internal table of allowed formats before it is used. That includes removing support for some formats or adding your forced sample rate (see MPG123_FORCE_RATE) that will be used with the crude internal resampler. Also keep in mind that the sample encoding is just a question of choice -- the MPEG frames do only indicate their native sampling rate and channel count. If you want to decode to integer or float samples, 8 or 16 bit ... that is your decision. In a "clean" world, libmpg123 would always decode to 32 bit float and let you handle any sample conversion. But there are optimized routines that work faster by directly decoding to the desired encoding / accuracy. We prefer efficiency over conceptual tidyness.
   7.377 + *
   7.378 + * People often start out thinking that mpg123_format() should change the actual decoding format on the fly. That is wrong. It only has effect on the next natural change of output format, when libmpg123 will consult its format table again. To make life easier, you might want to call mpg123_format_none() before any thing else and then just allow one desired encoding and a limited set of sample rates / channel choices that you actually intend to deal with. You can force libmpg123 to decode everything to 44100 KHz, stereo, 16 bit integer ... it will duplicate mono channels and even do resampling if needed (unless that feature is disabled in the build, same with some encodings). But I have to stress that the resampling of libmpg123 is very crude and doesn't even contain any kind of "proper" interpolation.
   7.379 + *
   7.380 + * In any case, watch out for MPG123_NEW_FORMAT as return message from decoding routines and call mpg123_getformat() to get the currently active output format.
   7.381 + *
   7.382 + * @{
   7.383 + */
   7.384 +
   7.385 +/** An enum over all sample types possibly known to mpg123.
   7.386 + *  The values are designed as bit flags to allow bitmasking for encoding families.
   7.387 + *
   7.388 + *  Note that (your build of) libmpg123 does not necessarily support all these.
   7.389 + *  Usually, you can expect the 8bit encodings and signed 16 bit.
   7.390 + *  Also 32bit float will be usual beginning with mpg123-1.7.0 .
   7.391 + *  What you should bear in mind is that (SSE, etc) optimized routines may be absent
   7.392 + *  for some formats. We do have SSE for 16, 32 bit and float, though.
   7.393 + *  24 bit integer is done via postprocessing of 32 bit output -- just cutting
   7.394 + *  the last byte, no rounding, even. If you want better, do it yourself.
   7.395 + *
   7.396 + *  All formats are in native byte order. If you need different endinaness, you
   7.397 + *  can simply postprocess the output buffers (libmpg123 wouldn't do anything else).
   7.398 + *  mpg123_encsize() can be helpful there.
   7.399 + */
   7.400 +enum mpg123_enc_enum
   7.401 +{
   7.402 +	 MPG123_ENC_8      = 0x00f  /**<      0000 0000 1111 Some 8 bit  integer encoding. */
   7.403 +	,MPG123_ENC_16     = 0x040  /**<      0000 0100 0000 Some 16 bit integer encoding. */
   7.404 +	,MPG123_ENC_24     = 0x4000 /**< 0100 0000 0000 0000 Some 24 bit integer encoding. */
   7.405 +	,MPG123_ENC_32     = 0x100  /**<      0001 0000 0000 Some 32 bit integer encoding. */
   7.406 +	,MPG123_ENC_SIGNED = 0x080  /**<      0000 1000 0000 Some signed integer encoding. */
   7.407 +	,MPG123_ENC_FLOAT  = 0xe00  /**<      1110 0000 0000 Some float encoding. */
   7.408 +	,MPG123_ENC_SIGNED_16   = (MPG123_ENC_16|MPG123_ENC_SIGNED|0x10) /**<           1101 0000 signed 16 bit */
   7.409 +	,MPG123_ENC_UNSIGNED_16 = (MPG123_ENC_16|0x20)                   /**<           0110 0000 unsigned 16 bit */
   7.410 +	,MPG123_ENC_UNSIGNED_8  = 0x01                                   /**<           0000 0001 unsigned 8 bit */
   7.411 +	,MPG123_ENC_SIGNED_8    = (MPG123_ENC_SIGNED|0x02)               /**<           1000 0010 signed 8 bit */
   7.412 +	,MPG123_ENC_ULAW_8      = 0x04                                   /**<           0000 0100 ulaw 8 bit */
   7.413 +	,MPG123_ENC_ALAW_8      = 0x08                                   /**<           0000 1000 alaw 8 bit */
   7.414 +	,MPG123_ENC_SIGNED_32   = MPG123_ENC_32|MPG123_ENC_SIGNED|0x1000 /**< 0001 0001 1000 0000 signed 32 bit */
   7.415 +	,MPG123_ENC_UNSIGNED_32 = MPG123_ENC_32|0x2000                   /**< 0010 0001 0000 0000 unsigned 32 bit */
   7.416 +	,MPG123_ENC_SIGNED_24   = MPG123_ENC_24|MPG123_ENC_SIGNED|0x1000 /**< 0101 0000 1000 0000 signed 24 bit */
   7.417 +	,MPG123_ENC_UNSIGNED_24 = MPG123_ENC_24|0x2000                   /**< 0110 0000 0000 0000 unsigned 24 bit */
   7.418 +	,MPG123_ENC_FLOAT_32    = 0x200                                  /**<      0010 0000 0000 32bit float */
   7.419 +	,MPG123_ENC_FLOAT_64    = 0x400                                  /**<      0100 0000 0000 64bit float */
   7.420 +	,MPG123_ENC_ANY = ( MPG123_ENC_SIGNED_16  | MPG123_ENC_UNSIGNED_16 | MPG123_ENC_UNSIGNED_8
   7.421 +	                  | MPG123_ENC_SIGNED_8   | MPG123_ENC_ULAW_8      | MPG123_ENC_ALAW_8
   7.422 +	                  | MPG123_ENC_SIGNED_32  | MPG123_ENC_UNSIGNED_32
   7.423 +	                  | MPG123_ENC_SIGNED_24  | MPG123_ENC_UNSIGNED_24
   7.424 +	                  | MPG123_ENC_FLOAT_32   | MPG123_ENC_FLOAT_64 ) /**< Any encoding on the list. */
   7.425 +};
   7.426 +
   7.427 +/** They can be combined into one number (3) to indicate mono and stereo... */
   7.428 +enum mpg123_channelcount
   7.429 +{
   7.430 +	 MPG123_MONO   = 1
   7.431 +	,MPG123_STEREO = 2
   7.432 +};
   7.433 +
   7.434 +/** An array of supported standard sample rates
   7.435 + *  These are possible native sample rates of MPEG audio files.
   7.436 + *  You can still force mpg123 to resample to a different one, but by default you will only get audio in one of these samplings.
   7.437 + *  \param list Store a pointer to the sample rates array there.
   7.438 + *  \param number Store the number of sample rates there. */
   7.439 +MPG123_EXPORT void mpg123_rates(const long **list, size_t *number);
   7.440 +
   7.441 +/** An array of supported audio encodings.
   7.442 + *  An audio encoding is one of the fully qualified members of mpg123_enc_enum (MPG123_ENC_SIGNED_16, not MPG123_SIGNED).
   7.443 + *  \param list Store a pointer to the encodings array there.
   7.444 + *  \param number Store the number of encodings there. */
   7.445 +MPG123_EXPORT void mpg123_encodings(const int **list, size_t *number);
   7.446 +
   7.447 +/** Return the size (in bytes) of one mono sample of the named encoding.
   7.448 + * \param encoding The encoding value to analyze.
   7.449 + * \return positive size of encoding in bytes, 0 on invalid encoding. */
   7.450 +MPG123_EXPORT int mpg123_encsize(int encoding);
   7.451 +
   7.452 +/** Configure a mpg123 handle to accept no output format at all, 
   7.453 + *  use before specifying supported formats with mpg123_format
   7.454 + *  \return MPG123_OK on success
   7.455 + */
   7.456 +MPG123_EXPORT int mpg123_format_none(mpg123_handle *mh);
   7.457 +
   7.458 +/** Configure mpg123 handle to accept all formats 
   7.459 + *  (also any custom rate you may set) -- this is default.
   7.460 + *  \return MPG123_OK on success
   7.461 + */
   7.462 +MPG123_EXPORT int mpg123_format_all(mpg123_handle *mh);
   7.463 +
   7.464 +/** Set the audio format support of a mpg123_handle in detail:
   7.465 + *  \param mh audio decoder handle
   7.466 + *  \param rate The sample rate value (in Hertz).
   7.467 + *  \param channels A combination of MPG123_STEREO and MPG123_MONO.
   7.468 + *  \param encodings A combination of accepted encodings for rate and channels, p.ex MPG123_ENC_SIGNED16 | MPG123_ENC_ULAW_8 (or 0 for no support). Please note that some encodings may not be supported in the library build and thus will be ignored here.
   7.469 + *  \return MPG123_OK on success, MPG123_ERR if there was an error. */
   7.470 +MPG123_EXPORT int mpg123_format(mpg123_handle *mh, long rate, int channels, int encodings);
   7.471 +
   7.472 +/** Check to see if a specific format at a specific rate is supported 
   7.473 + *  by mpg123_handle.
   7.474 + *  \return 0 for no support (that includes invalid parameters), MPG123_STEREO, 
   7.475 + *          MPG123_MONO or MPG123_STEREO|MPG123_MONO. */
   7.476 +MPG123_EXPORT int mpg123_format_support(mpg123_handle *mh, long rate, int encoding);
   7.477 +
   7.478 +/** Get the current output format written to the addresses given.
   7.479 + *  \return MPG123_OK on success
   7.480 + */
   7.481 +MPG123_EXPORT int mpg123_getformat(mpg123_handle *mh, long *rate, int *channels, int *encoding);
   7.482 +
   7.483 +/*@}*/
   7.484 +
   7.485 +
   7.486 +/** \defgroup mpg123_input mpg123 file input and decoding
   7.487 + *
   7.488 + * Functions for input bitstream and decoding operations.
   7.489 + * Decoding/seek functions may also return message codes MPG123_DONE, MPG123_NEW_FORMAT and MPG123_NEED_MORE (please read up on these on how to react!).
   7.490 + * @{
   7.491 + */
   7.492 +
   7.493 +/* reading samples / triggering decoding, possible return values: */
   7.494 +/** Enumeration of the error codes returned by libmpg123 functions. */
   7.495 +
   7.496 +/** Open and prepare to decode the specified file by filesystem path.
   7.497 + *  This does not open HTTP urls; libmpg123 contains no networking code.
   7.498 + *  If you want to decode internet streams, use mpg123_open_fd() or mpg123_open_feed().
   7.499 + *  \param path filesystem path
   7.500 + *  \return MPG123_OK on success
   7.501 + */
   7.502 +MPG123_EXPORT int mpg123_open(mpg123_handle *mh, const char *path);
   7.503 +
   7.504 +/** Use an already opened file descriptor as the bitstream input
   7.505 + *  mpg123_close() will _not_ close the file descriptor.
   7.506 + */
   7.507 +MPG123_EXPORT int mpg123_open_fd(mpg123_handle *mh, int fd);
   7.508 +
   7.509 +/** Use an opaque handle as bitstream input. This works only with the
   7.510 + *  replaced I/O from mpg123_replace_reader_handle()!
   7.511 + *  mpg123_close() will call the cleanup callback for your handle (if you gave one).
   7.512 + *  \return MPG123_OK on success
   7.513 + */
   7.514 +MPG123_EXPORT int mpg123_open_handle(mpg123_handle *mh, void *iohandle);
   7.515 +
   7.516 +/** Open a new bitstream and prepare for direct feeding
   7.517 + *  This works together with mpg123_decode(); you are responsible for reading and feeding the input bitstream.
   7.518 + *  \return MPG123_OK on success
   7.519 + */
   7.520 +MPG123_EXPORT int mpg123_open_feed(mpg123_handle *mh);
   7.521 +
   7.522 +/** Closes the source, if libmpg123 opened it.
   7.523 + *  \return MPG123_OK on success
   7.524 + */
   7.525 +MPG123_EXPORT int mpg123_close(mpg123_handle *mh);
   7.526 +
   7.527 +/** Read from stream and decode up to outmemsize bytes.
   7.528 + *  \param outmemory address of output buffer to write to
   7.529 + *  \param outmemsize maximum number of bytes to write
   7.530 + *  \param done address to store the number of actually decoded bytes to
   7.531 + *  \return MPG123_OK or error/message code
   7.532 + */
   7.533 +MPG123_EXPORT int mpg123_read(mpg123_handle *mh, unsigned char *outmemory, size_t outmemsize, size_t *done);
   7.534 +
   7.535 +/** Feed data for a stream that has been opened with mpg123_open_feed().
   7.536 + *  It's give and take: You provide the bytestream, mpg123 gives you the decoded samples.
   7.537 + *  \param in input buffer
   7.538 + *  \param size number of input bytes
   7.539 + *  \return MPG123_OK or error/message code.
   7.540 + */
   7.541 +MPG123_EXPORT int mpg123_feed(mpg123_handle *mh, const unsigned char *in, size_t size);
   7.542 +
   7.543 +/** Decode MPEG Audio from inmemory to outmemory. 
   7.544 + *  This is very close to a drop-in replacement for old mpglib.
   7.545 + *  When you give zero-sized output buffer the input will be parsed until 
   7.546 + *  decoded data is available. This enables you to get MPG123_NEW_FORMAT (and query it) 
   7.547 + *  without taking decoded data.
   7.548 + *  Think of this function being the union of mpg123_read() and mpg123_feed() (which it actually is, sort of;-).
   7.549 + *  You can actually always decide if you want those specialized functions in separate steps or one call this one here.
   7.550 + *  \param inmemory input buffer
   7.551 + *  \param inmemsize number of input bytes
   7.552 + *  \param outmemory output buffer
   7.553 + *  \param outmemsize maximum number of output bytes
   7.554 + *  \param done address to store the number of actually decoded bytes to
   7.555 + *  \return error/message code (watch out especially for MPG123_NEED_MORE)
   7.556 + */
   7.557 +MPG123_EXPORT int mpg123_decode(mpg123_handle *mh, const unsigned char *inmemory, size_t inmemsize, unsigned char *outmemory, size_t outmemsize, size_t *done);
   7.558 +
   7.559 +/** Decode next MPEG frame to internal buffer
   7.560 + *  or read a frame and return after setting a new format.
   7.561 + *  \param num current frame offset gets stored there
   7.562 + *  \param audio This pointer is set to the internal buffer to read the decoded audio from.
   7.563 + *  \param bytes number of output bytes ready in the buffer
   7.564 + *  \return MPG123_OK or error/message code
   7.565 + */
   7.566 +MPG123_EXPORT int mpg123_decode_frame(mpg123_handle *mh, off_t *num, unsigned char **audio, size_t *bytes);
   7.567 +
   7.568 +/** Decode current MPEG frame to internal buffer.
   7.569 + * Warning: This is experimental API that might change in future releases!
   7.570 + * Please watch mpg123 development closely when using it.
   7.571 + *  \param num last frame offset gets stored there
   7.572 + *  \param audio this pointer is set to the internal buffer to read the decoded audio from.
   7.573 + *  \param bytes number of output bytes ready in the buffer
   7.574 + *  \return MPG123_OK or error/message code
   7.575 + */
   7.576 +MPG123_EXPORT int mpg123_framebyframe_decode(mpg123_handle *mh, off_t *num, unsigned char **audio, size_t *bytes);
   7.577 +
   7.578 +/** Find, read and parse the next mp3 frame
   7.579 + * Warning: This is experimental API that might change in future releases!
   7.580 + * Please watch mpg123 development closely when using it.
   7.581 + *  \return MPG123_OK or error/message code
   7.582 + */
   7.583 +MPG123_EXPORT int mpg123_framebyframe_next(mpg123_handle *mh);
   7.584 +
   7.585 +/** Get access to the raw input data for the last parsed frame.
   7.586 + * This gives you a direct look (and write access) to the frame body data.
   7.587 + * Together with the raw header, you can reconstruct the whole raw MPEG stream without junk and meta data, or play games by actually modifying the frame body data before decoding this frame (mpg123_framebyframe_decode()).
   7.588 + * A more sane use would be to use this for CRC checking (see mpg123_info() and MPG123_CRC), the first two bytes of the body make up the CRC16 checksum, if present.
   7.589 + * You can provide NULL for a parameter pointer when you are not interested in the value.
   7.590 + *
   7.591 + * \param header the 4-byte MPEG header
   7.592 + * \param bodydata pointer to the frame body stored in the handle (without the header)
   7.593 + * \param bodybytes size of frame body in bytes (without the header)
   7.594 + * \return MPG123_OK if there was a yet un-decoded frame to get the
   7.595 + *    data from, MPG123_BAD_HANDLE or MPG123_ERR otherwise (without further
   7.596 + *    explanation, the error state of the mpg123_handle is not modified by
   7.597 + *    this function).
   7.598 + */
   7.599 +MPG123_EXPORT int mpg123_framedata(mpg123_handle *mh, unsigned long *header, unsigned char **bodydata, size_t *bodybytes);
   7.600 +
   7.601 +/** Get the input position (byte offset in stream) of the last parsed frame.
   7.602 + * This can be used for external seek index building, for example.
   7.603 + * It just returns the internally stored offset, regardless of validity -- you ensure that a valid frame has been parsed before! */
   7.604 +MPG123_EXPORT off_t mpg123_framepos(mpg123_handle *mh);
   7.605 +
   7.606 +/*@}*/
   7.607 +
   7.608 +
   7.609 +/** \defgroup mpg123_seek mpg123 position and seeking
   7.610 + *
   7.611 + * Functions querying and manipulating position in the decoded audio bitstream.
   7.612 + * The position is measured in decoded audio samples, or MPEG frame offset for the specific functions.
   7.613 + * If gapless code is in effect, the positions are adjusted to compensate the skipped padding/delay - meaning, you should not care about that at all and just use the position defined for the samples you get out of the decoder;-)
   7.614 + * The general usage is modelled after stdlib's ftell() and fseek().
   7.615 + * Especially, the whence parameter for the seek functions has the same meaning as the one for fseek() and needs the same constants from stdlib.h: 
   7.616 + * - SEEK_SET: set position to (or near to) specified offset
   7.617 + * - SEEK_CUR: change position by offset from now
   7.618 + * - SEEK_END: set position to offset from end
   7.619 + *
   7.620 + * Note that sample-accurate seek only works when gapless support has been enabled at compile time; seek is frame-accurate otherwise.
   7.621 + * Also, really sample-accurate seeking (meaning that you get the identical sample value after seeking compared to plain decoding up to the position) is only guaranteed when you do not mess with the position code by using MPG123_UPSPEED, MPG123_DOWNSPEED or MPG123_START_FRAME. The first two mainly should cause trouble with NtoM resampling, but in any case with these options in effect, you have to keep in mind that the sample offset is not the same as counting the samples you get from decoding since mpg123 counts the skipped samples, too (or the samples played twice only once)!
   7.622 + * Short: When you care about the sample position, don't mess with those parameters;-)
   7.623 + * Also, seeking is not guaranteed to work for all streams (underlying stream may not support it).
   7.624 + * And yet another caveat: If the stream is concatenated out of differing pieces (Frankenstein stream), seeking may suffer, too.
   7.625 + *
   7.626 + * @{
   7.627 + */
   7.628 +
   7.629 +/** Returns the current position in samples.
   7.630 + *  On the next successful read, you'd get that sample.
   7.631 + *  \return sample offset or MPG123_ERR (null handle)
   7.632 + */
   7.633 +MPG123_EXPORT off_t mpg123_tell(mpg123_handle *mh);
   7.634 +
   7.635 +/** Returns the frame number that the next read will give you data from.
   7.636 + *  \return frame offset or MPG123_ERR (null handle)
   7.637 + */
   7.638 +MPG123_EXPORT off_t mpg123_tellframe(mpg123_handle *mh);
   7.639 +
   7.640 +/** Returns the current byte offset in the input stream.
   7.641 + *  \return byte offset or MPG123_ERR (null handle)
   7.642 + */
   7.643 +MPG123_EXPORT off_t mpg123_tell_stream(mpg123_handle *mh);
   7.644 +
   7.645 +/** Seek to a desired sample offset. 
   7.646 + *  Set whence to SEEK_SET, SEEK_CUR or SEEK_END.
   7.647 + *  \return The resulting offset >= 0 or error/message code */
   7.648 +MPG123_EXPORT off_t mpg123_seek(mpg123_handle *mh, off_t sampleoff, int whence);
   7.649 +
   7.650 +/** Seek to a desired sample offset in data feeding mode. 
   7.651 + *  This just prepares things to be right only if you ensure that the next chunk of input data will be from input_offset byte position.
   7.652 + *  \param input_offset The position it expects to be at the 
   7.653 + *                      next time data is fed to mpg123_decode().
   7.654 + *  \return The resulting offset >= 0 or error/message code */
   7.655 +MPG123_EXPORT off_t mpg123_feedseek(mpg123_handle *mh, off_t sampleoff, int whence, off_t *input_offset);
   7.656 +
   7.657 +/** Seek to a desired MPEG frame index.
   7.658 + *  Set whence to SEEK_SET, SEEK_CUR or SEEK_END.
   7.659 + *  \return The resulting offset >= 0 or error/message code */
   7.660 +MPG123_EXPORT off_t mpg123_seek_frame(mpg123_handle *mh, off_t frameoff, int whence);
   7.661 +
   7.662 +/** Return a MPEG frame offset corresponding to an offset in seconds.
   7.663 + *  This assumes that the samples per frame do not change in the file/stream, which is a good assumption for any sane file/stream only.
   7.664 + *  \return frame offset >= 0 or error/message code */
   7.665 +MPG123_EXPORT off_t mpg123_timeframe(mpg123_handle *mh, double sec);
   7.666 +
   7.667 +/** Give access to the frame index table that is managed for seeking.
   7.668 + *  You are asked not to modify the values... Use mpg123_set_index to set the
   7.669 + *  seek index
   7.670 + *  \param offsets pointer to the index array
   7.671 + *  \param step one index byte offset advances this many MPEG frames
   7.672 + *  \param fill number of recorded index offsets; size of the array
   7.673 + *  \return MPG123_OK on success
   7.674 + */
   7.675 +MPG123_EXPORT int mpg123_index(mpg123_handle *mh, off_t **offsets, off_t *step, size_t *fill);
   7.676 +
   7.677 +/** Set the frame index table
   7.678 + *  Setting offsets to NULL and fill > 0 will allocate fill entries. Setting offsets
   7.679 + *  to NULL and fill to 0 will clear the index and free the allocated memory used by the index.
   7.680 + *  \param offsets pointer to the index array
   7.681 + *  \param step    one index byte offset advances this many MPEG frames
   7.682 + *  \param fill    number of recorded index offsets; size of the array
   7.683 + *  \return MPG123_OK on success
   7.684 + */
   7.685 +MPG123_EXPORT int mpg123_set_index(mpg123_handle *mh, off_t *offsets, off_t step, size_t fill);
   7.686 +
   7.687 +/** Get information about current and remaining frames/seconds.
   7.688 + *  WARNING: This function is there because of special usage by standalone mpg123 and may be removed in the final version of libmpg123!
   7.689 + *  You provide an offset (in frames) from now and a number of output bytes 
   7.690 + *  served by libmpg123 but not yet played. You get the projected current frame 
   7.691 + *  and seconds, as well as the remaining frames/seconds. This does _not_ care 
   7.692 + *  about skipped samples due to gapless playback. */
   7.693 +MPG123_EXPORT int mpg123_position( mpg123_handle *mh, off_t frame_offset, off_t buffered_bytes, off_t *current_frame, off_t *frames_left, double *current_seconds, double *seconds_left);
   7.694 +
   7.695 +/*@}*/
   7.696 +
   7.697 +
   7.698 +/** \defgroup mpg123_voleq mpg123 volume and equalizer
   7.699 + *
   7.700 + * @{
   7.701 + */
   7.702 +
   7.703 +enum mpg123_channels
   7.704 +{
   7.705 +	 MPG123_LEFT=0x1	/**< The Left Channel. */
   7.706 +	,MPG123_RIGHT=0x2	/**< The Right Channel. */
   7.707 +	,MPG123_LR=0x3	/**< Both left and right channel; same as MPG123_LEFT|MPG123_RIGHT */
   7.708 +};
   7.709 +
   7.710 +/** Set the 32 Band Audio Equalizer settings.
   7.711 + *  \param channel Can be MPG123_LEFT, MPG123_RIGHT or MPG123_LEFT|MPG123_RIGHT for both.
   7.712 + *  \param band The equaliser band to change (from 0 to 31)
   7.713 + *  \param val The (linear) adjustment factor.
   7.714 + *  \return MPG123_OK on success
   7.715 + */
   7.716 +MPG123_EXPORT int mpg123_eq(mpg123_handle *mh, enum mpg123_channels channel, int band, double val);
   7.717 +
   7.718 +/** Get the 32 Band Audio Equalizer settings.
   7.719 + *  \param channel Can be MPG123_LEFT, MPG123_RIGHT or MPG123_LEFT|MPG123_RIGHT for (arithmetic mean of) both.
   7.720 + *  \param band The equaliser band to change (from 0 to 31)
   7.721 + *  \return The (linear) adjustment factor (zero for pad parameters) */
   7.722 +MPG123_EXPORT double mpg123_geteq(mpg123_handle *mh, enum mpg123_channels channel, int band);
   7.723 +
   7.724 +/** Reset the 32 Band Audio Equalizer settings to flat
   7.725 + *  \return MPG123_OK on success
   7.726 + */
   7.727 +MPG123_EXPORT int mpg123_reset_eq(mpg123_handle *mh);
   7.728 +
   7.729 +/** Set the absolute output volume including the RVA setting, 
   7.730 + *  vol<0 just applies (a possibly changed) RVA setting. */
   7.731 +MPG123_EXPORT int mpg123_volume(mpg123_handle *mh, double vol);
   7.732 +
   7.733 +/** Adjust output volume including the RVA setting by chosen amount */
   7.734 +MPG123_EXPORT int mpg123_volume_change(mpg123_handle *mh, double change);
   7.735 +
   7.736 +/** Return current volume setting, the actual value due to RVA, and the RVA 
   7.737 + *  adjustment itself. It's all as double float value to abstract the sample 
   7.738 + *  format. The volume values are linear factors / amplitudes (not percent) 
   7.739 + *  and the RVA value is in decibels. */
   7.740 +MPG123_EXPORT int mpg123_getvolume(mpg123_handle *mh, double *base, double *really, double *rva_db);
   7.741 +
   7.742 +/* TODO: Set some preamp in addition / to replace internal RVA handling? */
   7.743 +
   7.744 +/*@}*/
   7.745 +
   7.746 +
   7.747 +/** \defgroup mpg123_status mpg123 status and information
   7.748 + *
   7.749 + * @{
   7.750 + */
   7.751 +
   7.752 +/** Enumeration of the mode types of Variable Bitrate */
   7.753 +enum mpg123_vbr {
   7.754 +	MPG123_CBR=0,	/**< Constant Bitrate Mode (default) */
   7.755 +	MPG123_VBR,		/**< Variable Bitrate Mode */
   7.756 +	MPG123_ABR		/**< Average Bitrate Mode */
   7.757 +};
   7.758 +
   7.759 +/** Enumeration of the MPEG Versions */
   7.760 +enum mpg123_version {
   7.761 +	MPG123_1_0=0,	/**< MPEG Version 1.0 */
   7.762 +	MPG123_2_0,		/**< MPEG Version 2.0 */
   7.763 +	MPG123_2_5		/**< MPEG Version 2.5 */
   7.764 +};
   7.765 +
   7.766 +
   7.767 +/** Enumeration of the MPEG Audio mode.
   7.768 + *  Only the mono mode has 1 channel, the others have 2 channels. */
   7.769 +enum mpg123_mode {
   7.770 +	MPG123_M_STEREO=0,	/**< Standard Stereo. */
   7.771 +	MPG123_M_JOINT,		/**< Joint Stereo. */
   7.772 +	MPG123_M_DUAL,		/**< Dual Channel. */
   7.773 +	MPG123_M_MONO		/**< Single Channel. */
   7.774 +};
   7.775 +
   7.776 +
   7.777 +/** Enumeration of the MPEG Audio flag bits */
   7.778 +enum mpg123_flags {
   7.779 +	MPG123_CRC=0x1,			/**< The bitstream is error protected using 16-bit CRC. */
   7.780 +	MPG123_COPYRIGHT=0x2,	/**< The bitstream is copyrighted. */
   7.781 +	MPG123_PRIVATE=0x4,		/**< The private bit has been set. */
   7.782 +	MPG123_ORIGINAL=0x8	/**< The bitstream is an original, not a copy. */
   7.783 +};
   7.784 +
   7.785 +/** Data structure for storing information about a frame of MPEG Audio */
   7.786 +struct mpg123_frameinfo
   7.787 +{
   7.788 +	enum mpg123_version version;	/**< The MPEG version (1.0/2.0/2.5). */
   7.789 +	int layer;						/**< The MPEG Audio Layer (MP1/MP2/MP3). */
   7.790 +	long rate; 						/**< The sampling rate in Hz. */
   7.791 +	enum mpg123_mode mode;			/**< The audio mode (Mono, Stereo, Joint-stero, Dual Channel). */
   7.792 +	int mode_ext;					/**< The mode extension bit flag. */
   7.793 +	int framesize;					/**< The size of the frame (in bytes, including header). */
   7.794 +	enum mpg123_flags flags;		/**< MPEG Audio flag bits. Just now I realize that it should be declared as int, not enum. It's a bitwise combination of the enum values. */
   7.795 +	int emphasis;					/**< The emphasis type. */
   7.796 +	int bitrate;					/**< Bitrate of the frame (kbps). */
   7.797 +	int abr_rate;					/**< The target average bitrate. */
   7.798 +	enum mpg123_vbr vbr;			/**< The VBR mode. */
   7.799 +};
   7.800 +
   7.801 +/** Get frame information about the MPEG audio bitstream and store it in a mpg123_frameinfo structure.
   7.802 + *  \return MPG123_OK on success
   7.803 + */
   7.804 +MPG123_EXPORT int mpg123_info(mpg123_handle *mh, struct mpg123_frameinfo *mi);
   7.805 +
   7.806 +/** Get the safe output buffer size for all cases (when you want to replace the internal buffer) */
   7.807 +MPG123_EXPORT size_t mpg123_safe_buffer(void); 
   7.808 +
   7.809 +/** Make a full parsing scan of each frame in the file. ID3 tags are found. An accurate length 
   7.810 + *  value is stored. Seek index will be filled. A seek back to current position 
   7.811 + *  is performed. At all, this function refuses work when stream is 
   7.812 + *  not seekable. 
   7.813 + *  \return MPG123_OK on success
   7.814 + */
   7.815 +MPG123_EXPORT int mpg123_scan(mpg123_handle *mh);
   7.816 +
   7.817 +/** Return, if possible, the full (expected) length of current track in samples.
   7.818 +  * \return length >= 0 or MPG123_ERR if there is no length guess possible. */
   7.819 +MPG123_EXPORT off_t mpg123_length(mpg123_handle *mh);
   7.820 +
   7.821 +/** Override the value for file size in bytes.
   7.822 +  * Useful for getting sensible track length values in feed mode or for HTTP streams.
   7.823 +  * \return MPG123_OK on success
   7.824 +  */
   7.825 +MPG123_EXPORT int mpg123_set_filesize(mpg123_handle *mh, off_t size);
   7.826 +
   7.827 +/** Returns the time (seconds) per frame; <0 is error. */
   7.828 +MPG123_EXPORT double mpg123_tpf(mpg123_handle *mh);
   7.829 +
   7.830 +/** Returns the samples per frame for the most recently parsed frame; <0 is error. */
   7.831 +MPG123_EXPORT int mpg123_spf(mpg123_handle *mh);
   7.832 +
   7.833 +/** Get and reset the clip count. */
   7.834 +MPG123_EXPORT long mpg123_clip(mpg123_handle *mh);
   7.835 +
   7.836 +
   7.837 +/** The key values for state information from mpg123_getstate(). */
   7.838 +enum mpg123_state
   7.839 +{
   7.840 +	 MPG123_ACCURATE = 1 /**< Query if positons are currently accurate (integer value, 0 if false, 1 if true). */
   7.841 +	,MPG123_BUFFERFILL   /**< Get fill of internal (feed) input buffer as integer byte count returned as long and as double. An error is returned on integer overflow while converting to (signed) long, but the returned floating point value shold still be fine. */
   7.842 +	,MPG123_FRANKENSTEIN /**< Stream consists of carelessly stitched together files. Seeking may yield unexpected results (also with MPG123_ACCURATE, it may be confused). */
   7.843 +	,MPG123_FRESH_DECODER /**< Decoder structure has been updated, possibly indicating changed stream (integer value, 0 if false, 1 if true). Flag is cleared after retrieval. */
   7.844 +};
   7.845 +
   7.846 +/** Get various current decoder/stream state information.
   7.847 + *  \param key the key to identify the information to give.
   7.848 + *  \param val the address to return (long) integer values to
   7.849 + *  \param fval the address to return floating point values to
   7.850 + *  \return MPG123_OK on success
   7.851 + */
   7.852 +MPG123_EXPORT int mpg123_getstate(mpg123_handle *mh, enum mpg123_state key, long *val, double *fval);
   7.853 +
   7.854 +/*@}*/
   7.855 +
   7.856 +
   7.857 +/** \defgroup mpg123_metadata mpg123 metadata handling
   7.858 + *
   7.859 + * Functions to retrieve the metadata from MPEG Audio files and streams.
   7.860 + * Also includes string handling functions.
   7.861 + *
   7.862 + * @{
   7.863 + */
   7.864 +
   7.865 +/** Data structure for storing strings in a safer way than a standard C-String.
   7.866 + *  Can also hold a number of null-terminated strings. */
   7.867 +typedef struct 
   7.868 +{
   7.869 +	char* p;     /**< pointer to the string data */
   7.870 +	size_t size; /**< raw number of bytes allocated */
   7.871 +	size_t fill; /**< number of used bytes (including closing zero byte) */
   7.872 +} mpg123_string;
   7.873 +
   7.874 +/** Create and allocate memory for a new mpg123_string */
   7.875 +MPG123_EXPORT void mpg123_init_string(mpg123_string* sb);
   7.876 +
   7.877 +/** Free-up mempory for an existing mpg123_string */
   7.878 +MPG123_EXPORT void mpg123_free_string(mpg123_string* sb);
   7.879 +
   7.880 +/** Change the size of a mpg123_string
   7.881 + *  \return 0 on error, 1 on success */
   7.882 +MPG123_EXPORT int  mpg123_resize_string(mpg123_string* sb, size_t news);
   7.883 +
   7.884 +/** Increase size of a mpg123_string if necessary (it may stay larger).
   7.885 + *  Note that the functions for adding and setting in current libmpg123 use this instead of mpg123_resize_string().
   7.886 + *  That way, you can preallocate memory and safely work afterwards with pieces.
   7.887 + *  \return 0 on error, 1 on success */
   7.888 +MPG123_EXPORT int  mpg123_grow_string(mpg123_string* sb, size_t news);
   7.889 +
   7.890 +/** Copy the contents of one mpg123_string string to another.
   7.891 + *  \return 0 on error, 1 on success */
   7.892 +MPG123_EXPORT int  mpg123_copy_string(mpg123_string* from, mpg123_string* to);
   7.893 +
   7.894 +/** Append a C-String to an mpg123_string
   7.895 + *  \return 0 on error, 1 on success */
   7.896 +MPG123_EXPORT int  mpg123_add_string(mpg123_string* sb, const char* stuff);
   7.897 +
   7.898 +/** Append a C-substring to an mpg123 string
   7.899 + *  \return 0 on error, 1 on success
   7.900 + *  \param from offset to copy from
   7.901 + *  \param count number of characters to copy (a null-byte is always appended) */
   7.902 +MPG123_EXPORT int  mpg123_add_substring(mpg123_string *sb, const char *stuff, size_t from, size_t count);
   7.903 +
   7.904 +/** Set the conents of a mpg123_string to a C-string
   7.905 + *  \return 0 on error, 1 on success */
   7.906 +MPG123_EXPORT int  mpg123_set_string(mpg123_string* sb, const char* stuff);
   7.907 +
   7.908 +/** Set the contents of a mpg123_string to a C-substring
   7.909 + *  \return 0 on error, 1 on success
   7.910 + *  \param from offset to copy from
   7.911 + *  \param count number of characters to copy (a null-byte is always appended) */
   7.912 +MPG123_EXPORT int  mpg123_set_substring(mpg123_string *sb, const char *stuff, size_t from, size_t count);
   7.913 +
   7.914 +/** Count characters in a mpg123 string (non-null bytes or UTF-8 characters).
   7.915 + *  \return character count
   7.916 + *  \param sb the string
   7.917 + *  \param utf8 a flag to tell if the string is in utf8 encoding
   7.918 + *  Even with the fill property, the character count is not obvious as there could be multiple trailing null bytes.
   7.919 +*/
   7.920 +MPG123_EXPORT size_t mpg123_strlen(mpg123_string *sb, int utf8);
   7.921 +
   7.922 +/** Remove trailing \r and \n, if present.
   7.923 + *  \return 0 on error, 1 on success
   7.924 + *  \param sb the string
   7.925 + */
   7.926 +MPG123_EXPORT int mpg123_chomp_string(mpg123_string *sb);
   7.927 +
   7.928 +/** The mpg123 text encodings. This contains encodings we encounter in ID3 tags or ICY meta info. */
   7.929 +enum mpg123_text_encoding
   7.930 +{
   7.931 +	 mpg123_text_unknown  = 0 /**< Unkown encoding... mpg123_id3_encoding can return that on invalid codes. */
   7.932 +	,mpg123_text_utf8     = 1 /**< UTF-8 */
   7.933 +	,mpg123_text_latin1   = 2 /**< ISO-8859-1. Note that sometimes latin1 in ID3 is abused for totally different encodings. */
   7.934 +	,mpg123_text_icy      = 3 /**< ICY metadata encoding, usually CP-1252 but we take it as UTF-8 if it qualifies as such. */
   7.935 +	,mpg123_text_cp1252   = 4 /**< Really CP-1252 without any guessing. */
   7.936 +	,mpg123_text_utf16    = 5 /**< Some UTF-16 encoding. The last of a set of leading BOMs (byte order mark) rules.
   7.937 +	                           *   When there is no BOM, big endian ordering is used. Note that UCS-2 qualifies as UTF-8 when
   7.938 +	                           *   you don't mess with the reserved code points. If you want to decode little endian data
   7.939 +	                           *   without BOM you need to prepend 0xff 0xfe yourself. */
   7.940 +	,mpg123_text_utf16bom = 6 /**< Just an alias for UTF-16, ID3v2 has this as distinct code. */
   7.941 +	,mpg123_text_utf16be  = 7 /**< Another alias for UTF16 from ID3v2. Note, that, because of the mess that is reality,
   7.942 +	                           *   BOMs are used if encountered. There really is not much distinction between the UTF16 types for mpg123
   7.943 +	                           *   One exception: Since this is seen in ID3v2 tags, leading null bytes are skipped for all other UTF16
   7.944 +	                           *   types (we expect a BOM before real data there), not so for utf16be!*/
   7.945 +	,mpg123_text_max      = 7 /**< Placeholder for the maximum encoding value. */
   7.946 +};
   7.947 +
   7.948 +/** The encoding byte values from ID3v2. */
   7.949 +enum mpg123_id3_enc
   7.950 +{
   7.951 +	 mpg123_id3_latin1   = 0 /**< Note: This sometimes can mean anything in practice... */
   7.952 +	,mpg123_id3_utf16bom = 1 /**< UTF16, UCS-2 ... it's all the same for practical purposes. */
   7.953 +	,mpg123_id3_utf16be  = 2 /**< Big-endian UTF-16, BOM see note for mpg123_text_utf16be. */
   7.954 +	,mpg123_id3_utf8     = 3 /**< Our lovely overly ASCII-compatible 8 byte encoding for the world. */
   7.955 +	,mpg123_id3_enc_max  = 3 /**< Placeholder to check valid range of encoding byte. */
   7.956 +};
   7.957 +
   7.958 +/** Convert ID3 encoding byte to mpg123 encoding index. */
   7.959 +MPG123_EXPORT enum mpg123_text_encoding mpg123_enc_from_id3(unsigned char id3_enc_byte);
   7.960 +
   7.961 +/** Store text data in string, after converting to UTF-8 from indicated encoding
   7.962 + *  \return 0 on error, 1 on success (on error, mpg123_free_string is called on sb)
   7.963 + *  \param sb  target string
   7.964 + *  \param enc mpg123 text encoding value
   7.965 + *  \param source source buffer with plain unsigned bytes (you might need to cast from char *)
   7.966 + *  \param source_size number of bytes in the source buffer
   7.967 + *
   7.968 + *  A prominent error can be that you provided an unknown encoding value, or this build of libmpg123 lacks support for certain encodings (ID3 or ICY stuff missing).
   7.969 + *  Also, you might want to take a bit of care with preparing the data; for example, strip leading zeroes (I have seen that).
   7.970 + */
   7.971 +MPG123_EXPORT int mpg123_store_utf8(mpg123_string *sb, enum mpg123_text_encoding enc, const unsigned char *source, size_t source_size);
   7.972 +
   7.973 +/** Sub data structure for ID3v2, for storing various text fields (including comments).
   7.974 + *  This is for ID3v2 COMM, TXXX and all the other text fields.
   7.975 + *  Only COMM and TXXX have a description, only COMM and USLT have a language.
   7.976 + *  You should consult the ID3v2 specification for the use of the various text fields ("frames" in ID3v2 documentation, I use "fields" here to separate from MPEG frames). */
   7.977 +typedef struct
   7.978 +{
   7.979 +	char lang[3]; /**< Three-letter language code (not terminated). */
   7.980 +	char id[4];   /**< The ID3v2 text field id, like TALB, TPE2, ... (4 characters, no string termination). */
   7.981 +	mpg123_string description; /**< Empty for the generic comment... */
   7.982 +	mpg123_string text;        /**< ... */
   7.983 +} mpg123_text;
   7.984 +
   7.985 +/** The picture type values from ID3v2. */
   7.986 +enum mpg123_id3_pic_type
   7.987 +{
   7.988 +	 mpg123_id3_pic_other          =  0
   7.989 +	,mpg123_id3_pic_icon           =  1
   7.990 +	,mpg123_id3_pic_other_icon     =  2
   7.991 +	,mpg123_id3_pic_front_cover    =  3
   7.992 +	,mpg123_id3_pic_back_cover     =  4
   7.993 +	,mpg123_id3_pic_leaflet        =  5
   7.994 +	,mpg123_id3_pic_media          =  6
   7.995 +	,mpg123_id3_pic_lead           =  7
   7.996 +	,mpg123_id3_pic_artist         =  8
   7.997 +	,mpg123_id3_pic_conductor      =  9
   7.998 +	,mpg123_id3_pic_orchestra      = 10
   7.999 +	,mpg123_id3_pic_composer       = 11
  7.1000 +	,mpg123_id3_pic_lyricist       = 12
  7.1001 +	,mpg123_id3_pic_location       = 13
  7.1002 +	,mpg123_id3_pic_recording      = 14
  7.1003 +	,mpg123_id3_pic_performance    = 15
  7.1004 +	,mpg123_id3_pic_video          = 16
  7.1005 +	,mpg123_id3_pic_fish           = 17
  7.1006 +	,mpg123_id3_pic_illustration   = 18
  7.1007 +	,mpg123_id3_pic_artist_logo    = 19
  7.1008 +	,mpg123_id3_pic_publisher_logo = 20
  7.1009 +};
  7.1010 +
  7.1011 +/** Sub data structure for ID3v2, for storing picture data including comment.
  7.1012 + *  This is for the ID3v2 APIC field. You should consult the ID3v2 specification
  7.1013 + *  for the use of the APIC field ("frames" in ID3v2 documentation, I use "fields"
  7.1014 + *  here to separate from MPEG frames). */
  7.1015 +typedef struct
  7.1016 +{
  7.1017 +	char type;
  7.1018 +	mpg123_string description;
  7.1019 +	mpg123_string mime_type;
  7.1020 +	size_t size;
  7.1021 +	unsigned char* data;
  7.1022 +} mpg123_picture;
  7.1023 +
  7.1024 +/** Data structure for storing IDV3v2 tags.
  7.1025 + *  This structure is not a direct binary mapping with the file contents.
  7.1026 + *  The ID3v2 text frames are allowed to contain multiple strings.
  7.1027 + *  So check for null bytes until you reach the mpg123_string fill.
  7.1028 + *  All text is encoded in UTF-8. */
  7.1029 +typedef struct
  7.1030 +{
  7.1031 +	unsigned char version; /**< 3 or 4 for ID3v2.3 or ID3v2.4. */
  7.1032 +	mpg123_string *title;   /**< Title string (pointer into text_list). */
  7.1033 +	mpg123_string *artist;  /**< Artist string (pointer into text_list). */
  7.1034 +	mpg123_string *album;   /**< Album string (pointer into text_list). */
  7.1035 +	mpg123_string *year;    /**< The year as a string (pointer into text_list). */
  7.1036 +	mpg123_string *genre;   /**< Genre String (pointer into text_list). The genre string(s) may very well need postprocessing, esp. for ID3v2.3. */
  7.1037 +	mpg123_string *comment; /**< Pointer to last encountered comment text with empty description. */
  7.1038 +	/* Encountered ID3v2 fields are appended to these lists.
  7.1039 +	   There can be multiple occurences, the pointers above always point to the last encountered data. */
  7.1040 +	mpg123_text    *comment_list; /**< Array of comments. */
  7.1041 +	size_t          comments;     /**< Number of comments. */
  7.1042 +	mpg123_text    *text;         /**< Array of ID3v2 text fields (including USLT) */
  7.1043 +	size_t          texts;        /**< Numer of text fields. */
  7.1044 +	mpg123_text    *extra;        /**< The array of extra (TXXX) fields. */
  7.1045 +	size_t          extras;       /**< Number of extra text (TXXX) fields. */
  7.1046 +	mpg123_picture  *picture;     /**< Array of ID3v2 pictures fields (APIC). */
  7.1047 +	size_t           pictures;    /**< Number of picture (APIC) fields. */
  7.1048 +} mpg123_id3v2;
  7.1049 +
  7.1050 +/** Data structure for ID3v1 tags (the last 128 bytes of a file).
  7.1051 + *  Don't take anything for granted (like string termination)!
  7.1052 + *  Also note the change ID3v1.1 did: comment[28] = 0; comment[29] = track_number
  7.1053 + *  It is your task to support ID3v1 only or ID3v1.1 ...*/
  7.1054 +typedef struct
  7.1055 +{
  7.1056 +	char tag[3];         /**< Always the string "TAG", the classic intro. */
  7.1057 +	char title[30];      /**< Title string.  */
  7.1058 +	char artist[30];     /**< Artist string. */
  7.1059 +	char album[30];      /**< Album string. */
  7.1060 +	char year[4];        /**< Year string. */
  7.1061 +	char comment[30];    /**< Comment string. */
  7.1062 +	unsigned char genre; /**< Genre index. */
  7.1063 +} mpg123_id3v1;
  7.1064 +
  7.1065 +#define MPG123_ID3     0x3 /**< 0011 There is some ID3 info. Also matches 0010 or NEW_ID3. */
  7.1066 +#define MPG123_NEW_ID3 0x1 /**< 0001 There is ID3 info that changed since last call to mpg123_id3. */
  7.1067 +#define MPG123_ICY     0xc /**< 1100 There is some ICY info. Also matches 0100 or NEW_ICY.*/
  7.1068 +#define MPG123_NEW_ICY 0x4 /**< 0100 There is ICY info that changed since last call to mpg123_icy. */
  7.1069 +
  7.1070 +/** Query if there is (new) meta info, be it ID3 or ICY (or something new in future).
  7.1071 +   The check function returns a combination of flags. */
  7.1072 +MPG123_EXPORT int mpg123_meta_check(mpg123_handle *mh); /* On error (no valid handle) just 0 is returned. */
  7.1073 +
  7.1074 +/** Clean up meta data storage (ID3v2 and ICY), freeing memory. */
  7.1075 +MPG123_EXPORT void mpg123_meta_free(mpg123_handle *mh);
  7.1076 +
  7.1077 +/** Point v1 and v2 to existing data structures wich may change on any next read/decode function call.
  7.1078 + *  v1 and/or v2 can be set to NULL when there is no corresponding data.
  7.1079 + *  \return MPG123_OK on success
  7.1080 + */
  7.1081 +MPG123_EXPORT int mpg123_id3(mpg123_handle *mh, mpg123_id3v1 **v1, mpg123_id3v2 **v2);
  7.1082 +
  7.1083 +/** Point icy_meta to existing data structure wich may change on any next read/decode function call.
  7.1084 + *  \return MPG123_OK on success
  7.1085 + */
  7.1086 +MPG123_EXPORT int mpg123_icy(mpg123_handle *mh, char **icy_meta); /* same for ICY meta string */
  7.1087 +
  7.1088 +/** Decode from windows-1252 (the encoding ICY metainfo used) to UTF-8.
  7.1089 + *  Note that this is very similar to mpg123_store_utf8(&sb, mpg123_text_icy, icy_text, strlen(icy_text+1)) .
  7.1090 + *  \param icy_text The input data in ICY encoding
  7.1091 + *  \return pointer to newly allocated buffer with UTF-8 data (You free() it!) */
  7.1092 +MPG123_EXPORT char* mpg123_icy2utf8(const char* icy_text);
  7.1093 +
  7.1094 +
  7.1095 +/* @} */
  7.1096 +
  7.1097 +
  7.1098 +/** \defgroup mpg123_advpar mpg123 advanced parameter API
  7.1099 + *
  7.1100 + *  Direct access to a parameter set without full handle around it.
  7.1101 + *	Possible uses:
  7.1102 + *    - Influence behaviour of library _during_ initialization of handle (MPG123_VERBOSE).
  7.1103 + *    - Use one set of parameters for multiple handles.
  7.1104 + *
  7.1105 + *	The functions for handling mpg123_pars (mpg123_par() and mpg123_fmt() 
  7.1106 + *  family) directly return a fully qualified mpg123 error code, the ones 
  7.1107 + *  operating on full handles normally MPG123_OK or MPG123_ERR, storing the 
  7.1108 + *  specific error code itseld inside the handle. 
  7.1109 + *
  7.1110 + * @{
  7.1111 + */
  7.1112 +
  7.1113 +/** Opaque structure for the libmpg123 decoder parameters. */
  7.1114 +struct mpg123_pars_struct;
  7.1115 +
  7.1116 +/** Opaque structure for the libmpg123 decoder parameters. */
  7.1117 +typedef struct mpg123_pars_struct   mpg123_pars;
  7.1118 +
  7.1119 +/** Create a handle with preset parameters. */
  7.1120 +MPG123_EXPORT mpg123_handle *mpg123_parnew(mpg123_pars *mp, const char* decoder, int *error);
  7.1121 +
  7.1122 +/** Allocate memory for and return a pointer to a new mpg123_pars */
  7.1123 +MPG123_EXPORT mpg123_pars *mpg123_new_pars(int *error);
  7.1124 +
  7.1125 +/** Delete and free up memory used by a mpg123_pars data structure */
  7.1126 +MPG123_EXPORT void         mpg123_delete_pars(mpg123_pars* mp);
  7.1127 +
  7.1128 +/** Configure mpg123 parameters to accept no output format at all, 
  7.1129 + * use before specifying supported formats with mpg123_format
  7.1130 + *  \return MPG123_OK on success
  7.1131 + */
  7.1132 +MPG123_EXPORT int mpg123_fmt_none(mpg123_pars *mp);
  7.1133 +
  7.1134 +/** Configure mpg123 parameters to accept all formats 
  7.1135 + *  (also any custom rate you may set) -- this is default. 
  7.1136 + *  \return MPG123_OK on success
  7.1137 + */
  7.1138 +MPG123_EXPORT int mpg123_fmt_all(mpg123_pars *mp);
  7.1139 +
  7.1140 +/** Set the audio format support of a mpg123_pars in detail:
  7.1141 +	\param rate The sample rate value (in Hertz).
  7.1142 +	\param channels A combination of MPG123_STEREO and MPG123_MONO.
  7.1143 +	\param encodings A combination of accepted encodings for rate and channels, p.ex MPG123_ENC_SIGNED16|MPG123_ENC_ULAW_8 (or 0 for no support).
  7.1144 +	\return MPG123_OK on success
  7.1145 +*/
  7.1146 +MPG123_EXPORT int mpg123_fmt(mpg123_pars *mp, long rate, int channels, int encodings); /* 0 is good, -1 is error */
  7.1147 +
  7.1148 +/** Check to see if a specific format at a specific rate is supported 
  7.1149 + *  by mpg123_pars.
  7.1150 + *  \return 0 for no support (that includes invalid parameters), MPG123_STEREO, 
  7.1151 + *          MPG123_MONO or MPG123_STEREO|MPG123_MONO. */
  7.1152 +MPG123_EXPORT int mpg123_fmt_support(mpg123_pars *mp,   long rate, int encoding);
  7.1153 +
  7.1154 +/** Set a specific parameter, for a specific mpg123_pars, using a parameter 
  7.1155 + *  type key chosen from the mpg123_parms enumeration, to the specified value. */
  7.1156 +MPG123_EXPORT int mpg123_par(mpg123_pars *mp, enum mpg123_parms type, long value, double fvalue);
  7.1157 +
  7.1158 +/** Get a specific parameter, for a specific mpg123_pars. 
  7.1159 + *  See the mpg123_parms enumeration for a list of available parameters. */
  7.1160 +MPG123_EXPORT int mpg123_getpar(mpg123_pars *mp, enum mpg123_parms type, long *val, double *fval);
  7.1161 +
  7.1162 +/* @} */
  7.1163 +
  7.1164 +
  7.1165 +/** \defgroup mpg123_lowio mpg123 low level I/O
  7.1166 +  * You may want to do tricky stuff with I/O that does not work with mpg123's default file access or you want to make it decode into your own pocket...
  7.1167 +  *
  7.1168 +  * @{ */
  7.1169 +
  7.1170 +/** Replace default internal buffer with user-supplied buffer.
  7.1171 +  * Instead of working on it's own private buffer, mpg123 will directly use the one you provide for storing decoded audio.
  7.1172 +  * Note that the required buffer size could be bigger than expected from output
  7.1173 +  * encoding if libmpg123 has to convert from primary decoder output (p.ex. 32 bit
  7.1174 +  * storage for 24 bit output.
  7.1175 +  * \param data pointer to user buffer
  7.1176 +  * \param size of buffer in bytes
  7.1177 +  * \return MPG123_OK on success
  7.1178 +  */
  7.1179 +MPG123_EXPORT int mpg123_replace_buffer(mpg123_handle *mh, unsigned char *data, size_t size);
  7.1180 +
  7.1181 +/** The max size of one frame's decoded output with current settings.
  7.1182 + *  Use that to determine an appropriate minimum buffer size for decoding one frame. */
  7.1183 +MPG123_EXPORT size_t mpg123_outblock(mpg123_handle *mh);
  7.1184 +
  7.1185 +/** Replace low-level stream access functions; read and lseek as known in POSIX.
  7.1186 + *  You can use this to make any fancy file opening/closing yourself, 
  7.1187 + *  using mpg123_open_fd() to set the file descriptor for your read/lseek (doesn't need to be a "real" file descriptor...).
  7.1188 + *  Setting a function to NULL means that the default internal read is 
  7.1189 + *  used (active from next mpg123_open call on).
  7.1190 + *  Note: As it would be troublesome to mess with this while having a file open,
  7.1191 + *  this implies mpg123_close(). */
  7.1192 +MPG123_EXPORT int mpg123_replace_reader(mpg123_handle *mh, ssize_t (*r_read) (int, void *, size_t), off_t (*r_lseek)(int, off_t, int));
  7.1193 +
  7.1194 +/** Replace I/O functions with your own ones operating on some kind of handle instead of integer descriptors.
  7.1195 + *  The handle is a void pointer, so you can pass any data you want...
  7.1196 + *  mpg123_open_handle() is the call you make to use the I/O defined here.
  7.1197 + *  There is no fallback to internal read/seek here.
  7.1198 + *  Note: As it would be troublesome to mess with this while having a file open,
  7.1199 + *  this mpg123_close() is implied here.
  7.1200 + *  \param r_read The callback for reading (behaviour like posix read).
  7.1201 + *  \param r_lseek The callback for seeking (like posix lseek).
  7.1202 + *  \param cleanup A callback to clean up an I/O handle on mpg123_close, can be NULL for none (you take care of cleaning your handles). */
  7.1203 +MPG123_EXPORT int mpg123_replace_reader_handle(mpg123_handle *mh, ssize_t (*r_read) (void *, void *, size_t), off_t (*r_lseek)(void *, off_t, int), void (*cleanup)(void*));
  7.1204 +
  7.1205 +/* @} */
  7.1206 +
  7.1207 +#ifdef __cplusplus
  7.1208 +}
  7.1209 +#endif
  7.1210 +
  7.1211 +#endif
     8.1 --- a/VisualC/external/include/smpeg.h	Sun Oct 07 17:56:56 2018 +0300
     8.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     8.3 @@ -1,207 +0,0 @@
     8.4 -/*
     8.5 -    SMPEG - SDL MPEG Player Library
     8.6 -    Copyright (C) 1999  Loki Entertainment Software
     8.7 -
     8.8 -    This library is free software; you can redistribute it and/or
     8.9 -    modify it under the terms of the GNU Library General Public
    8.10 -    License as published by the Free Software Foundation; either
    8.11 -    version 2 of the License, or (at your option) any later version.
    8.12 -
    8.13 -    This library is distributed in the hope that it will be useful,
    8.14 -    but WITHOUT ANY WARRANTY; without even the implied warranty of
    8.15 -    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    8.16 -    Library General Public License for more details.
    8.17 -
    8.18 -    You should have received a copy of the GNU Library General Public
    8.19 -    License along with this library; if not, write to the Free
    8.20 -    Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
    8.21 -*/
    8.22 -
    8.23 -/* This is the C interface to the SMPEG library */
    8.24 -
    8.25 -#ifndef _SMPEG_H_
    8.26 -#define _SMPEG_H_
    8.27 -
    8.28 -#include "SDL.h"
    8.29 -#include "SDL_mutex.h"
    8.30 -#include "SDL_audio.h"
    8.31 -
    8.32 -#include "MPEGfilter.h"
    8.33 -
    8.34 -#ifdef __cplusplus
    8.35 -extern "C" {
    8.36 -#endif
    8.37 -
    8.38 -#define SMPEG_MAJOR_VERSION      0
    8.39 -#define SMPEG_MINOR_VERSION      4
    8.40 -#define SMPEG_PATCHLEVEL         5
    8.41 -
    8.42 -typedef struct {
    8.43 -        Uint8 major;
    8.44 -        Uint8 minor;
    8.45 -        Uint8 patch;
    8.46 -} SMPEG_version;
    8.47 -
    8.48 -/* This macro can be used to fill a version structure with the compile-time
    8.49 - * version of the SDL library.
    8.50 - */
    8.51 -#define SMPEG_VERSION(X)                                                \
    8.52 -{                                                                       \
    8.53 -        (X)->major = SMPEG_MAJOR_VERSION;                               \
    8.54 -        (X)->minor = SMPEG_MINOR_VERSION;                               \
    8.55 -        (X)->patch = SMPEG_PATCHLEVEL;                                  \
    8.56 -}
    8.57 -
    8.58 -/* This is the actual SMPEG object */
    8.59 -typedef struct _SMPEG SMPEG;
    8.60 -
    8.61 -/* Used to get information about the SMPEG object */
    8.62 -typedef struct _SMPEG_Info {
    8.63 -    int has_audio;
    8.64 -    int has_video;
    8.65 -    int width;
    8.66 -    int height;
    8.67 -    int current_frame;
    8.68 -    double current_fps;
    8.69 -    char audio_string[80];
    8.70 -    int  audio_current_frame;
    8.71 -    Uint32 current_offset;
    8.72 -    Uint32 total_size;
    8.73 -    double current_time;
    8.74 -    double total_time;
    8.75 -} SMPEG_Info;
    8.76 -
    8.77 -/* Possible MPEG status codes */
    8.78 -typedef enum {
    8.79 -    SMPEG_ERROR = -1,
    8.80 -    SMPEG_STOPPED,
    8.81 -    SMPEG_PLAYING
    8.82 -} SMPEGstatus;
    8.83 -
    8.84 -
    8.85 -/* Matches the declaration of SDL_UpdateRect() */
    8.86 -typedef void(*SMPEG_DisplayCallback)(SDL_Surface* dst, int x, int y,
    8.87 -                                     unsigned int w, unsigned int h);
    8.88 -
    8.89 -/* Create a new SMPEG object from an MPEG file.
    8.90 -   On return, if 'info' is not NULL, it will be filled with information 
    8.91 -   about the MPEG object.
    8.92 -   This function returns a new SMPEG object.  Use SMPEG_error() to find out
    8.93 -   whether or not there was a problem building the MPEG stream.
    8.94 -   The sdl_audio parameter indicates if SMPEG should initialize the SDL audio
    8.95 -   subsystem. If not, you will have to use the SMPEG_playaudio() function below
    8.96 -   to extract the decoded data.
    8.97 - */
    8.98 -extern DECLSPEC SMPEG* SMPEG_new(const char *file, SMPEG_Info* info, int sdl_audio);
    8.99 -
   8.100 -/* The same as above for a file descriptor */
   8.101 -extern DECLSPEC SMPEG* SMPEG_new_descr(int file, SMPEG_Info* info, int sdl_audio);
   8.102 -
   8.103 -/*
   8.104 -   The same as above but for a raw chunk of data.  SMPEG makes a copy of the
   8.105 -   data, so the application is free to delete after a successful call to this
   8.106 -   function.
   8.107 - */
   8.108 -extern DECLSPEC SMPEG* SMPEG_new_data(void *data, int size, SMPEG_Info* info, int sdl_audio);
   8.109 -
   8.110 -/* The same for a generic SDL_RWops structure. */
   8.111 -extern DECLSPEC SMPEG* SMPEG_new_rwops(SDL_RWops *src, SMPEG_Info* info, int sdl_audio);
   8.112 -
   8.113 -/* Get current information about an SMPEG object */
   8.114 -extern DECLSPEC void SMPEG_getinfo( SMPEG* mpeg, SMPEG_Info* info );
   8.115 -
   8.116 -/* Enable or disable audio playback in MPEG stream */
   8.117 -extern DECLSPEC void SMPEG_enableaudio( SMPEG* mpeg, int enable );
   8.118 -
   8.119 -/* Enable or disable video playback in MPEG stream */
   8.120 -extern DECLSPEC void SMPEG_enablevideo( SMPEG* mpeg, int enable );
   8.121 -
   8.122 -/* Delete an SMPEG object */
   8.123 -extern DECLSPEC void SMPEG_delete( SMPEG* mpeg );
   8.124 -
   8.125 -/* Get the current status of an SMPEG object */
   8.126 -extern DECLSPEC SMPEGstatus SMPEG_status( SMPEG* mpeg );
   8.127 -
   8.128 -/* Set the audio volume of an MPEG stream, in the range 0-100 */
   8.129 -extern DECLSPEC void SMPEG_setvolume( SMPEG* mpeg, int volume );
   8.130 -
   8.131 -/* Set the destination surface for MPEG video playback
   8.132 -   'surfLock' is a mutex used to synchronize access to 'dst', and can be NULL.
   8.133 -   'callback' is a function called when an area of 'dst' needs to be updated.
   8.134 -   If 'callback' is NULL, the default function (SDL_UpdateRect) will be used.
   8.135 -*/
   8.136 -extern DECLSPEC void SMPEG_setdisplay(SMPEG* mpeg, SDL_Surface* dst, SDL_mutex* surfLock,
   8.137 -                                            SMPEG_DisplayCallback callback);
   8.138 -
   8.139 -/* Set or clear looping play on an SMPEG object */
   8.140 -extern DECLSPEC void SMPEG_loop( SMPEG* mpeg, int repeat );
   8.141 -
   8.142 -/* Scale pixel display on an SMPEG object */
   8.143 -extern DECLSPEC void SMPEG_scaleXY( SMPEG* mpeg, int width, int height );
   8.144 -extern DECLSPEC void SMPEG_scale( SMPEG* mpeg, int scale );
   8.145 -/* */
   8.146 -#define SMPEG_double(mpeg, on) \
   8.147 -	SMPEG_scale(mpeg, (on) ? 2 : 1)
   8.148 -
   8.149 -/* Move the video display area within the destination surface */
   8.150 -extern DECLSPEC void SMPEG_move( SMPEG* mpeg, int x, int y );
   8.151 -
   8.152 -/* Set the region of the video to be shown */
   8.153 -extern DECLSPEC void SMPEG_setdisplayregion(SMPEG* mpeg, int x, int y, int w, int h);
   8.154 -
   8.155 -/* Play an SMPEG object */
   8.156 -extern DECLSPEC void SMPEG_play( SMPEG* mpeg );
   8.157 -
   8.158 -/* Pause/Resume playback of an SMPEG object */
   8.159 -extern DECLSPEC void SMPEG_pause( SMPEG* mpeg );
   8.160 -
   8.161 -/* Stop playback of an SMPEG object */
   8.162 -extern DECLSPEC void SMPEG_stop( SMPEG* mpeg );
   8.163 -
   8.164 -/* Rewind the play position of an SMPEG object to the beginning of the MPEG */
   8.165 -extern DECLSPEC void SMPEG_rewind( SMPEG* mpeg );
   8.166 -
   8.167 -/* Seek 'bytes' bytes in the MPEG stream */
   8.168 -extern DECLSPEC void SMPEG_seek( SMPEG* mpeg, int bytes);
   8.169 -
   8.170 -/* Skip 'seconds' seconds in the MPEG stream */
   8.171 -extern DECLSPEC void SMPEG_skip( SMPEG* mpeg, float seconds );
   8.172 -
   8.173 -/* Render a particular frame in the MPEG video
   8.174 -   API CHANGE: This function no longer takes a target surface and position.
   8.175 -               Use SMPEG_setdisplay() and SMPEG_move() to set this information.
   8.176 -*/
   8.177 -extern DECLSPEC void SMPEG_renderFrame( SMPEG* mpeg, int framenum );
   8.178 -
   8.179 -/* Render the last frame of an MPEG video */
   8.180 -extern DECLSPEC void SMPEG_renderFinal( SMPEG* mpeg, SDL_Surface* dst, int x, int y );
   8.181 -
   8.182 -/* Set video filter */
   8.183 -extern DECLSPEC SMPEG_Filter * SMPEG_filter( SMPEG* mpeg, SMPEG_Filter * filter );
   8.184 -
   8.185 -/* Return NULL if there is no error in the MPEG stream, or an error message
   8.186 -   if there was a fatal error in the MPEG stream for the SMPEG object.
   8.187 -*/
   8.188 -extern DECLSPEC char *SMPEG_error( SMPEG* mpeg );
   8.189 -
   8.190 -/* Exported callback function for audio playback.
   8.191 -   The function takes a buffer and the amount of data to fill, and returns
   8.192 -   the amount of data in bytes that was actually written.  This will be the
   8.193 -   amount requested unless the MPEG audio has finished.
   8.194 -*/
   8.195 -extern DECLSPEC int SMPEG_playAudio( SMPEG *mpeg, Uint8 *stream, int len );
   8.196 -
   8.197 -/* Wrapper for SMPEG_playAudio() that can be passed to SDL and SDL_mixer
   8.198 -*/
   8.199 -extern DECLSPEC void SMPEG_playAudioSDL( void *mpeg, Uint8 *stream, int len );
   8.200 -
   8.201 -/* Get the best SDL audio spec for the audio stream */
   8.202 -extern DECLSPEC int SMPEG_wantedSpec( SMPEG *mpeg, SDL_AudioSpec *wanted );
   8.203 -
   8.204 -/* Inform SMPEG of the actual SDL audio spec used for sound playback */
   8.205 -extern DECLSPEC void SMPEG_actualSpec( SMPEG *mpeg, SDL_AudioSpec *spec );
   8.206 -
   8.207 -#ifdef __cplusplus
   8.208 -}
   8.209 -#endif
   8.210 -#endif /* _SMPEG_H_ */
     9.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     9.2 +++ b/VisualC/external/lib/x64/LICENSE.mpg123.txt	Thu Oct 11 11:50:10 2018 +0300
     9.3 @@ -0,0 +1,772 @@
     9.4 +This is the file that contains the terms of use, copying, etc. for the mpg123 distribution package.
     9.5 +
     9.6 +Main message, to include in "About ..." boxes, etc:
     9.7 +
     9.8 +	Copyright (c) 1995-2013 by Michael Hipp and others,
     9.9 +	free software under the terms of the LGPL v2.1
    9.10 +
    9.11 +There is an attempt to cover the actual list of authors in the AUTHORS file.
    9.12 +Project maintainer since 2006 is Thomas Orgis and many people have contributed
    9.13 +since the Michael Hipp era, but he stays the initial source and it would
    9.14 +be impractical to count them all individually, so it's "and others".
    9.15 +Source files contain the phrase "the mpg123 project" to the same effect
    9.16 +in their license boilerplate; especially those that were added after
    9.17 +maintainership changed. The person mainly responsible for the first version
    9.18 +is usually named in the phrase "initially written by ...".
    9.19 +
    9.20 +All files in the distribution that don't carry a license note on their own are
    9.21 +licensed under the terms of the LGPL 2.1; exceptions may apply, especially to
    9.22 +files not in the official distribution but in the revision control repository.
    9.23 +
    9.24 +The formal license text follows.
    9.25 +
    9.26 +=======================
    9.27 +1. The LGPL version 2.1
    9.28 +=======================
    9.29 +
    9.30 +
    9.31 +  GNU LESSER GENERAL PUBLIC LICENSE
    9.32 +       Version 2.1, February 1999
    9.33 +
    9.34 + Copyright (C) 1991, 1999 Free Software Foundation, Inc.
    9.35 + 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
    9.36 + Everyone is permitted to copy and distribute verbatim copies
    9.37 + of this license document, but changing it is not allowed.
    9.38 +
    9.39 +[This is the first released version of the Lesser GPL.  It also counts
    9.40 + as the successor of the GNU Library Public License, version 2, hence
    9.41 + the version number 2.1.]
    9.42 +
    9.43 +    Preamble
    9.44 +
    9.45 +  The licenses for most software are designed to take away your
    9.46 +freedom to share and change it.  By contrast, the GNU General Public
    9.47 +Licenses are intended to guarantee your freedom to share and change
    9.48 +free software--to make sure the software is free for all its users.
    9.49 +
    9.50 +  This license, the Lesser General Public License, applies to some
    9.51 +specially designated software packages--typically libraries--of the
    9.52 +Free Software Foundation and other authors who decide to use it.  You
    9.53 +can use it too, but we suggest you first think carefully about whether
    9.54 +this license or the ordinary General Public License is the better
    9.55 +strategy to use in any particular case, based on the explanations below.
    9.56 +
    9.57 +  When we speak of free software, we are referring to freedom of use,
    9.58 +not price.  Our General Public Licenses are designed to make sure that
    9.59 +you have the freedom to distribute copies of free software (and charge
    9.60 +for this service if you wish); that you receive source code or can get
    9.61 +it if you want it; that you can change the software and use pieces of
    9.62 +it in new free programs; and that you are informed that you can do
    9.63 +these things.
    9.64 +
    9.65 +  To protect your rights, we need to make restrictions that forbid
    9.66 +distributors to deny you these rights or to ask you to surrender these
    9.67 +rights.  These restrictions translate to certain responsibilities for
    9.68 +you if you distribute copies of the library or if you modify it.
    9.69 +
    9.70 +  For example, if you distribute copies of the library, whether gratis
    9.71 +or for a fee, you must give the recipients all the rights that we gave
    9.72 +you.  You must make sure that they, too, receive or can get the source
    9.73 +code.  If you link other code with the library, you must provide
    9.74 +complete object files to the recipients, so that they can relink them
    9.75 +with the library after making changes to the library and recompiling
    9.76 +it.  And you must show them these terms so they know their rights.
    9.77 +
    9.78 +  We protect your rights with a two-step method: (1) we copyright the
    9.79 +library, and (2) we offer you this license, which gives you legal
    9.80 +permission to copy, distribute and/or modify the library.
    9.81 +
    9.82 +  To protect each distributor, we want to make it very clear that
    9.83 +there is no warranty for the free library.  Also, if the library is
    9.84 +modified by someone else and passed on, the recipients should know
    9.85 +that what they have is not the original version, so that the original
    9.86 +author's reputation will not be affected by problems that might be
    9.87 +introduced by others.
    9.88 +
    9.89 +  Finally, software patents pose a constant threat to the existence of
    9.90 +any free program.  We wish to make sure that a company cannot
    9.91 +effectively restrict the users of a free program by obtaining a
    9.92 +restrictive license from a patent holder.  Therefore, we insist that
    9.93 +any patent license obtained for a version of the library must be
    9.94 +consistent with the full freedom of use specified in this license.
    9.95 +
    9.96 +  Most GNU software, including some libraries, is covered by the
    9.97 +ordinary GNU General Public License.  This license, the GNU Lesser
    9.98 +General Public License, applies to certain designated libraries, and
    9.99 +is quite different from the ordinary General Public License.  We use
   9.100 +this license for certain libraries in order to permit linking those
   9.101 +libraries into non-free programs.
   9.102 +
   9.103 +  When a program is linked with a library, whether statically or using
   9.104 +a shared library, the combination of the two is legally speaking a
   9.105 +combined work, a derivative of the original library.  The ordinary
   9.106 +General Public License therefore permits such linking only if the
   9.107 +entire combination fits its criteria of freedom.  The Lesser General
   9.108 +Public License permits more lax criteria for linking other code with
   9.109 +the library.
   9.110 +
   9.111 +  We call this license the "Lesser" General Public License because it
   9.112 +does Less to protect the user's freedom than the ordinary General
   9.113 +Public License.  It also provides other free software developers Less
   9.114 +of an advantage over competing non-free programs.  These disadvantages
   9.115 +are the reason we use the ordinary General Public License for many
   9.116 +libraries.  However, the Lesser license provides advantages in certain
   9.117 +special circumstances.
   9.118 +
   9.119 +  For example, on rare occasions, there may be a special need to
   9.120 +encourage the widest possible use of a certain library, so that it becomes
   9.121 +a de-facto standard.  To achieve this, non-free programs must be
   9.122 +allowed to use the library.  A more frequent case is that a free
   9.123 +library does the same job as widely used non-free libraries.  In this
   9.124 +case, there is little to gain by limiting the free library to free
   9.125 +software only, so we use the Lesser General Public License.
   9.126 +
   9.127 +  In other cases, permission to use a particular library in non-free
   9.128 +programs enables a greater number of people to use a large body of
   9.129 +free software.  For example, permission to use the GNU C Library in
   9.130 +non-free programs enables many more people to use the whole GNU
   9.131 +operating system, as well as its variant, the GNU/Linux operating
   9.132 +system.
   9.133 +
   9.134 +  Although the Lesser General Public License is Less protective of the
   9.135 +users' freedom, it does ensure that the user of a program that is
   9.136 +linked with the Library has the freedom and the wherewithal to run
   9.137 +that program using a modified version of the Library.
   9.138 +
   9.139 +  The precise terms and conditions for copying, distribution and
   9.140 +modification follow.  Pay close attention to the difference between a
   9.141 +"work based on the library" and a "work that uses the library".  The
   9.142 +former contains code derived from the library, whereas the latter must
   9.143 +be combined with the library in order to run.
   9.144 +
   9.145 +  GNU LESSER GENERAL PUBLIC LICENSE
   9.146 +   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
   9.147 +
   9.148 +  0. This License Agreement applies to any software library or other
   9.149 +program which contains a notice placed by the copyright holder or
   9.150 +other authorized party saying it may be distributed under the terms of
   9.151 +this Lesser General Public License (also called "this License").
   9.152 +Each licensee is addressed as "you".
   9.153 +
   9.154 +  A "library" means a collection of software functions and/or data
   9.155 +prepared so as to be conveniently linked with application programs
   9.156 +(which use some of those functions and data) to form executables.
   9.157 +
   9.158 +  The "Library", below, refers to any such software library or work
   9.159 +which has been distributed under these terms.  A "work based on the
   9.160 +Library" means either the Library or any derivative work under
   9.161 +copyright law: that is to say, a work containing the Library or a
   9.162 +portion of it, either verbatim or with modifications and/or translated
   9.163 +straightforwardly into another language.  (Hereinafter, translation is
   9.164 +included without limitation in the term "modification".)
   9.165 +
   9.166 +  "Source code" for a work means the preferred form of the work for
   9.167 +making modifications to it.  For a library, complete source code means
   9.168 +all the source code for all modules it contains, plus any associated
   9.169 +interface definition files, plus the scripts used to control compilation
   9.170 +and installation of the library.
   9.171 +
   9.172 +  Activities other than copying, distribution and modification are not
   9.173 +covered by this License; they are outside its scope.  The act of
   9.174 +running a program using the Library is not restricted, and output from
   9.175 +such a program is covered only if its contents constitute a work based
   9.176 +on the Library (independent of the use of the Library in a tool for
   9.177 +writing it).  Whether that is true depends on what the Library does
   9.178 +and what the program that uses the Library does.
   9.179 +  
   9.180 +  1. You may copy and distribute verbatim copies of the Library's
   9.181 +complete source code as you receive it, in any medium, provided that
   9.182 +you conspicuously and appropriately publish on each copy an
   9.183 +appropriate copyright notice and disclaimer of warranty; keep intact
   9.184 +all the notices that refer to this License and to the absence of any
   9.185 +warranty; and distribute a copy of this License along with the
   9.186 +Library.
   9.187 +
   9.188 +  You may charge a fee for the physical act of transferring a copy,
   9.189 +and you may at your option offer warranty protection in exchange for a
   9.190 +fee.
   9.191 +
   9.192 +  2. You may modify your copy or copies of the Library or any portion
   9.193 +of it, thus forming a work based on the Library, and copy and
   9.194 +distribute such modifications or work under the terms of Section 1
   9.195 +above, provided that you also meet all of these conditions:
   9.196 +
   9.197 +    a) The modified work must itself be a software library.
   9.198 +
   9.199 +    b) You must cause the files modified to carry prominent notices
   9.200 +    stating that you changed the files and the date of any change.
   9.201 +
   9.202 +    c) You must cause the whole of the work to be licensed at no
   9.203 +    charge to all third parties under the terms of this License.
   9.204 +
   9.205 +    d) If a facility in the modified Library refers to a function or a
   9.206 +    table of data to be supplied by an application program that uses
   9.207 +    the facility, other than as an argument passed when the facility
   9.208 +    is invoked, then you must make a good faith effort to ensure that,
   9.209 +    in the event an application does not supply such function or
   9.210 +    table, the facility still operates, and performs whatever part of
   9.211 +    its purpose remains meaningful.
   9.212 +
   9.213 +    (For example, a function in a library to compute square roots has
   9.214 +    a purpose that is entirely well-defined independent of the
   9.215 +    application.  Therefore, Subsection 2d requires that any
   9.216 +    application-supplied function or table used by this function must
   9.217 +    be optional: if the application does not supply it, the square
   9.218 +    root function must still compute square roots.)
   9.219 +
   9.220 +These requirements apply to the modified work as a whole.  If
   9.221 +identifiable sections of that work are not derived from the Library,
   9.222 +and can be reasonably considered independent and separate works in
   9.223 +themselves, then this License, and its terms, do not apply to those
   9.224 +sections when you distribute them as separate works.  But when you
   9.225 +distribute the same sections as part of a whole which is a work based
   9.226 +on the Library, the distribution of the whole must be on the terms of
   9.227 +this License, whose permissions for other licensees extend to the
   9.228 +entire whole, and thus to each and every part regardless of who wrote
   9.229 +it.
   9.230 +
   9.231 +Thus, it is not the intent of this section to claim rights or contest
   9.232 +your rights to work written entirely by you; rather, the intent is to
   9.233 +exercise the right to control the distribution of derivative or
   9.234 +collective works based on the Library.
   9.235 +
   9.236 +In addition, mere aggregation of another work not based on the Library
   9.237 +with the Library (or with a work based on the Library) on a volume of
   9.238 +a storage or distribution medium does not bring the other work under
   9.239 +the scope of this License.
   9.240 +
   9.241 +  3. You may opt to apply the terms of the ordinary GNU General Public
   9.242 +License instead of this License to a given copy of the Library.  To do
   9.243 +this, you must alter all the notices that refer to this License, so
   9.244 +that they refer to the ordinary GNU General Public License, version 2,
   9.245 +instead of to this License.  (If a newer version than version 2 of the
   9.246 +ordinary GNU General Public License has appeared, then you can specify
   9.247 +that version instead if you wish.)  Do not make any other change in
   9.248 +these notices.
   9.249 +
   9.250 +  Once this change is made in a given copy, it is irreversible for
   9.251 +that copy, so the ordinary GNU General Public License applies to all
   9.252 +subsequent copies and derivative works made from that copy.
   9.253 +
   9.254 +  This option is useful when you wish to copy part of the code of
   9.255 +the Library into a program that is not a library.
   9.256 +
   9.257 +  4. You may copy and distribute the Library (or a portion or
   9.258 +derivative of it, under Section 2) in object code or executable form
   9.259 +under the terms of Sections 1 and 2 above provided that you accompany
   9.260 +it with the complete corresponding machine-readable source code, which
   9.261 +must be distributed under the terms of Sections 1 and 2 above on a
   9.262 +medium customarily used for software interchange.
   9.263 +
   9.264 +  If distribution of object code is made by offering access to copy
   9.265 +from a designated place, then offering equivalent access to copy the
   9.266 +source code from the same place satisfies the requirement to
   9.267 +distribute the source code, even though third parties are not
   9.268 +compelled to copy the source along with the object code.
   9.269 +
   9.270 +  5. A program that contains no derivative of any portion of the
   9.271 +Library, but is designed to work with the Library by being compiled or
   9.272 +linked with it, is called a "work that uses the Library".  Such a
   9.273 +work, in isolation, is not a derivative work of the Library, and
   9.274 +therefore falls outside the scope of this License.
   9.275 +
   9.276 +  However, linking a "work that uses the Library" with the Library
   9.277 +creates an executable that is a derivative of the Library (because it
   9.278 +contains portions of the Library), rather than a "work that uses the
   9.279 +library".  The executable is therefore covered by this License.
   9.280 +Section 6 states terms for distribution of such executables.
   9.281 +
   9.282 +  When a "work that uses the Library" uses material from a header file
   9.283 +that is part of the Library, the object code for the work may be a
   9.284 +derivative work of the Library even though the source code is not.
   9.285 +Whether this is true is especially significant if the work can be
   9.286 +linked without the Library, or if the work is itself a library.  The
   9.287 +threshold for this to be true is not precisely defined by law.
   9.288 +
   9.289 +  If such an object file uses only numerical parameters, data
   9.290 +structure layouts and accessors, and small macros and small inline
   9.291 +functions (ten lines or less in length), then the use of the object
   9.292 +file is unrestricted, regardless of whether it is legally a derivative
   9.293 +work.  (Executables containing this object code plus portions of the
   9.294 +Library will still fall under Section 6.)
   9.295 +
   9.296 +  Otherwise, if the work is a derivative of the Library, you may
   9.297 +distribute the object code for the work under the terms of Section 6.
   9.298 +Any executables containing that work also fall under Section 6,
   9.299 +whether or not they are linked directly with the Library itself.
   9.300 +
   9.301 +  6. As an exception to the Sections above, you may also combine or
   9.302 +link a "work that uses the Library" with the Library to produce a
   9.303 +work containing portions of the Library, and distribute that work
   9.304 +under terms of your choice, provided that the terms permit
   9.305 +modification of the work for the customer's own use and reverse
   9.306 +engineering for debugging such modifications.
   9.307 +
   9.308 +  You must give prominent notice with each copy of the work that the
   9.309 +Library is used in it and that the Library and its use are covered by
   9.310 +this License.  You must supply a copy of this License.  If the work
   9.311 +during execution displays copyright notices, you must include the
   9.312 +copyright notice for the Library among them, as well as a reference
   9.313 +directing the user to the copy of this License.  Also, you must do one
   9.314 +of these things:
   9.315 +
   9.316 +    a) Accompany the work with the complete corresponding
   9.317 +    machine-readable source code for the Library including whatever
   9.318 +    changes were used in the work (which must be distributed under
   9.319 +    Sections 1 and 2 above); and, if the work is an executable linked
   9.320 +    with the Library, with the complete machine-readable "work that
   9.321 +    uses the Library", as object code and/or source code, so that the
   9.322 +    user can modify the Library and then relink to produce a modified
   9.323 +    executable containing the modified Library.  (It is understood
   9.324 +    that the user who changes the contents of definitions files in the
   9.325 +    Library will not necessarily be able to recompile the application
   9.326 +    to use the modified definitions.)
   9.327 +
   9.328 +    b) Use a suitable shared library mechanism for linking with the
   9.329 +    Library.  A suitable mechanism is one that (1) uses at run time a
   9.330 +    copy of the library already present on the user's computer system,
   9.331 +    rather than copying library functions into the executable, and (2)
   9.332 +    will operate properly with a modified version of the library, if
   9.333 +    the user installs one, as long as the modified version is
   9.334 +    interface-compatible with the version that the work was made with.
   9.335 +
   9.336 +    c) Accompany the work with a written offer, valid for at
   9.337 +    least three years, to give the same user the materials
   9.338 +    specified in Subsection 6a, above, for a charge no more
   9.339 +    than the cost of performing this distribution.
   9.340 +
   9.341 +    d) If distribution of the work is made by offering access to copy
   9.342 +    from a designated place, offer equivalent access to copy the above
   9.343 +    specified materials from the same place.
   9.344 +
   9.345 +    e) Verify that the user has already received a copy of these
   9.346 +    materials or that you have already sent this user a copy.
   9.347 +
   9.348 +  For an executable, the required form of the "work that uses the
   9.349 +Library" must include any data and utility programs needed for
   9.350 +reproducing the executable from it.  However, as a special exception,
   9.351 +the materials to be distributed need not include anything that is
   9.352 +normally distributed (in either source or binary form) with the major
   9.353 +components (compiler, kernel, and so on) of the operating system on
   9.354 +which the executable runs, unless that component itself accompanies
   9.355 +the executable.
   9.356 +
   9.357 +  It may happen that this requirement contradicts the license
   9.358 +restrictions of other proprietary libraries that do not normally
   9.359 +accompany the operating system.  Such a contradiction means you cannot
   9.360 +use both them and the Library together in an executable that you
   9.361 +distribute.
   9.362 +
   9.363 +  7. You may place library facilities that are a work based on the
   9.364 +Library side-by-side in a single library together with other library
   9.365 +facilities not covered by this License, and distribute such a combined
   9.366 +library, provided that the separate distribution of the work based on
   9.367 +the Library and of the other library facilities is otherwise
   9.368 +permitted, and provided that you do these two things:
   9.369 +
   9.370 +    a) Accompany the combined library with a copy of the same work
   9.371 +    based on the Library, uncombined with any other library
   9.372 +    facilities.  This must be distributed under the terms of the
   9.373 +    Sections above.
   9.374 +
   9.375 +    b) Give prominent notice with the combined library of the fact
   9.376 +    that part of it is a work based on the Library, and explaining
   9.377 +    where to find the accompanying uncombined form of the same work.
   9.378 +
   9.379 +  8. You may not copy, modify, sublicense, link with, or distribute
   9.380 +the Library except as expressly provided under this License.  Any
   9.381 +attempt otherwise to copy, modify, sublicense, link with, or
   9.382 +distribute the Library is void, and will automatically terminate your
   9.383 +rights under this License.  However, parties who have received copies,
   9.384 +or rights, from you under this License will not have their licenses
   9.385 +terminated so long as such parties remain in full compliance.
   9.386 +
   9.387 +  9. You are not required to accept this License, since you have not
   9.388 +signed it.  However, nothing else grants you permission to modify or
   9.389 +distribute the Library or its derivative works.  These actions are
   9.390 +prohibited by law if you do not accept this License.  Therefore, by
   9.391 +modifying or distributing the Library (or any work based on the
   9.392 +Library), you indicate your acceptance of this License to do so, and
   9.393 +all its terms and conditions for copying, distributing or modifying
   9.394 +the Library or works based on it.
   9.395 +
   9.396 +  10. Each time you redistribute the Library (or any work based on the
   9.397 +Library), the recipient automatically receives a license from the
   9.398 +original licensor to copy, distribute, link with or modify the Library
   9.399 +subject to these terms and conditions.  You may not impose any further
   9.400 +restrictions on the recipients' exercise of the rights granted herein.
   9.401 +You are not responsible for enforcing compliance by third parties with
   9.402 +this License.
   9.403 +
   9.404 +  11. If, as a consequence of a court judgment or allegation of patent
   9.405 +infringement or for any other reason (not limited to patent issues),
   9.406 +conditions are imposed on you (whether by court order, agreement or
   9.407 +otherwise) that contradict the conditions of this License, they do not
   9.408 +excuse you from the conditions of this License.  If you cannot
   9.409 +distribute so as to satisfy simultaneously your obligations under this
   9.410 +License and any other pertinent obligations, then as a consequence you
   9.411 +may not distribute the Library at all.  For example, if a patent
   9.412 +license would not permit royalty-free redistribution of the Library by
   9.413 +all those who receive copies directly or indirectly through you, then
   9.414 +the only way you could satisfy both it and this License would be to
   9.415 +refrain entirely from distribution of the Library.
   9.416 +
   9.417 +If any portion of this section is held invalid or unenforceable under any
   9.418 +particular circumstance, the balance of the section is intended to apply,
   9.419 +and the section as a whole is intended to apply in other circumstances.
   9.420 +
   9.421 +It is not the purpose of this section to induce you to infringe any
   9.422 +patents or other property right claims or to contest validity of any
   9.423 +such claims; this section has the sole purpose of protecting the
   9.424 +integrity of the free software distribution system which is
   9.425 +implemented by public license practices.  Many people have made
   9.426 +generous contributions to the wide range of software distributed
   9.427 +through that system in reliance on consistent application of that
   9.428 +system; it is up to the author/donor to decide if he or she is willing
   9.429 +to distribute software through any other system and a licensee cannot
   9.430 +impose that choice.
   9.431 +
   9.432 +This section is intended to make thoroughly clear what is believed to
   9.433 +be a consequence of the rest of this License.
   9.434 +
   9.435 +  12. If the distribution and/or use of the Library is restricted in
   9.436 +certain countries either by patents or by copyrighted interfaces, the
   9.437 +original copyright holder who places the Library under this License may add
   9.438 +an explicit geographical distribution limitation excluding those countries,
   9.439 +so that distribution is permitted only in or among countries not thus
   9.440 +excluded.  In such case, this License incorporates the limitation as if
   9.441 +written in the body of this License.
   9.442 +
   9.443 +  13. The Free Software Foundation may publish revised and/or new
   9.444 +versions of the Lesser General Public License from time to time.
   9.445 +Such new versions will be similar in spirit to the present version,
   9.446 +but may differ in detail to address new problems or concerns.
   9.447 +
   9.448 +Each version is given a distinguishing version number.  If the Library
   9.449 +specifies a version number of this License which applies to it and
   9.450 +"any later version", you have the option of following the terms and
   9.451 +conditions either of that version or of any later version published by
   9.452 +the Free Software Foundation.  If the Library does not specify a
   9.453 +license version number, you may choose any version ever published by
   9.454 +the Free Software Foundation.
   9.455 +
   9.456 +  14. If you wish to incorporate parts of the Library into other free
   9.457 +programs whose distribution conditions are incompatible with these,
   9.458 +write to the author to ask for permission.  For software which is
   9.459 +copyrighted by the Free Software Foundation, write to the Free
   9.460 +Software Foundation; we sometimes make exceptions for this.  Our
   9.461 +decision will be guided by the two goals of preserving the free status
   9.462 +of all derivatives of our free software and of promoting the sharing
   9.463 +and reuse of software generally.
   9.464 +
   9.465 +    NO WARRANTY
   9.466 +
   9.467 +  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
   9.468 +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
   9.469 +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
   9.470 +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
   9.471 +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
   9.472 +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
   9.473 +PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
   9.474 +LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
   9.475 +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
   9.476 +
   9.477 +  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
   9.478 +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
   9.479 +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
   9.480 +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
   9.481 +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
   9.482 +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
   9.483 +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
   9.484 +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
   9.485 +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
   9.486 +DAMAGES.
   9.487 +
   9.488 +     END OF TERMS AND CONDITIONS
   9.489 +
   9.490 +
   9.491 +====================
   9.492 +2. The GPL version 2
   9.493 +====================
   9.494 +
   9.495 +
   9.496 +   GNU GENERAL PUBLIC LICENSE
   9.497 +       Version 2, June 1991
   9.498 +
   9.499 + Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
   9.500 + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
   9.501 + Everyone is permitted to copy and distribute verbatim copies
   9.502 + of this license document, but changing it is not allowed.
   9.503 +
   9.504 +    Preamble
   9.505 +
   9.506 +  The licenses for most software are designed to take away your
   9.507 +freedom to share and change it.  By contrast, the GNU General Public
   9.508 +License is intended to guarantee your freedom to share and change free
   9.509 +software--to make sure the software is free for all its users.  This
   9.510 +General Public License applies to most of the Free Software
   9.511 +Foundation's software and to any other program whose authors commit to
   9.512 +using it.  (Some other Free Software Foundation software is covered by
   9.513 +the GNU Lesser General Public License instead.)  You can apply it to
   9.514 +your programs, too.
   9.515 +
   9.516 +  When we speak of free software, we are referring to freedom, not
   9.517 +price.  Our General Public Licenses are designed to make sure that you
   9.518 +have the freedom to distribute copies of free software (and charge for
   9.519 +this service if you wish), that you receive source code or can get it
   9.520 +if you want it, that you can change the software or use pieces of it
   9.521 +in new free programs; and that you know you can do these things.
   9.522 +
   9.523 +  To protect your rights, we need to make restrictions that forbid
   9.524 +anyone to deny you these rights or to ask you to surrender the rights.
   9.525 +These restrictions translate to certain responsibilities for you if you
   9.526 +distribute copies of the software, or if you modify it.
   9.527 +
   9.528 +  For example, if you distribute copies of such a program, whether
   9.529 +gratis or for a fee, you must give the recipients all the rights that
   9.530 +you have.  You must make sure that they, too, receive or can get the
   9.531 +source code.  And you must show them these terms so they know their
   9.532 +rights.
   9.533 +
   9.534 +  We protect your rights with two steps: (1) copyright the software, and
   9.535 +(2) offer you this license which gives you legal permission to copy,
   9.536 +distribute and/or modify the software.
   9.537 +
   9.538 +  Also, for each author's protection and ours, we want to make certain
   9.539 +that everyone understands that there is no warranty for this free
   9.540 +software.  If the software is modified by someone else and passed on, we
   9.541 +want its recipients to know that what they have is not the original, so
   9.542 +that any problems introduced by others will not reflect on the original
   9.543 +authors' reputations.
   9.544 +
   9.545 +  Finally, any free program is threatened constantly by software
   9.546 +patents.  We wish to avoid the danger that redistributors of a free
   9.547 +program will individually obtain patent licenses, in effect making the
   9.548 +program proprietary.  To prevent this, we have made it clear that any
   9.549 +patent must be licensed for everyone's free use or not licensed at all.
   9.550 +
   9.551 +  The precise terms and conditions for copying, distribution and
   9.552 +modification follow.
   9.553 +
   9.554 +    GNU GENERAL PUBLIC LICENSE
   9.555 +   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
   9.556 +
   9.557 +  0. This License applies to any program or other work which contains
   9.558 +a notice placed by the copyright holder saying it may be distributed
   9.559 +under the terms of this General Public License.  The "Program", below,
   9.560 +refers to any such program or work, and a "work based on the Program"
   9.561 +means either the Program or any derivative work under copyright law:
   9.562 +that is to say, a work containing the Program or a portion of it,
   9.563 +either verbatim or with modifications and/or translated into another
   9.564 +language.  (Hereinafter, translation is included without limitation in
   9.565 +the term "modification".)  Each licensee is addressed as "you".
   9.566 +
   9.567 +Activities other than copying, distribution and modification are not
   9.568 +covered by this License; they are outside its scope.  The act of
   9.569 +running the Program is not restricted, and the output from the Program
   9.570 +is covered only if its contents constitute a work based on the
   9.571 +Program (independent of having been made by running the Program).
   9.572 +Whether that is true depends on what the Program does.
   9.573 +
   9.574 +  1. You may copy and distribute verbatim copies of the Program's
   9.575 +source code as you receive it, in any medium, provided that you
   9.576 +conspicuously and appropriately publish on each copy an appropriate
   9.577 +copyright notice and disclaimer of warranty; keep intact all the
   9.578 +notices that refer to this License and to the absence of any warranty;
   9.579 +and give any other recipients of the Program a copy of this License
   9.580 +along with the Program.
   9.581 +
   9.582 +You may charge a fee for the physical act of transferring a copy, and
   9.583 +you may at your option offer warranty protection in exchange for a fee.
   9.584 +
   9.585 +  2. You may modify your copy or copies of the Program or any portion
   9.586 +of it, thus forming a work based on the Program, and copy and
   9.587 +distribute such modifications or work under the terms of Section 1
   9.588 +above, provided that you also meet all of these conditions:
   9.589 +
   9.590 +    a) You must cause the modified files to carry prominent notices
   9.591 +    stating that you changed the files and the date of any change.
   9.592 +
   9.593 +    b) You must cause any work that you distribute or publish, that in
   9.594 +    whole or in part contains or is derived from the Program or any
   9.595 +    part thereof, to be licensed as a whole at no charge to all third
   9.596 +    parties under the terms of this License.
   9.597 +
   9.598 +    c) If the modified program normally reads commands interactively
   9.599 +    when run, you must cause it, when started running for such
   9.600 +    interactive use in the most ordinary way, to print or display an
   9.601 +    announcement including an appropriate copyright notice and a
   9.602 +    notice that there is no warranty (or else, saying that you provide
   9.603 +    a warranty) and that users may redistribute the program under
   9.604 +    these conditions, and telling the user how to view a copy of this
   9.605 +    License.  (Exception: if the Program itself is interactive but
   9.606 +    does not normally print such an announcement, your work based on
   9.607 +    the Program is not required to print an announcement.)
   9.608 +
   9.609 +These requirements apply to the modified work as a whole.  If
   9.610 +identifiable sections of that work are not derived from the Program,
   9.611 +and can be reasonably considered independent and separate works in
   9.612 +themselves, then this License, and its terms, do not apply to those
   9.613 +sections when you distribute them as separate works.  But when you
   9.614 +distribute the same sections as part of a whole which is a work based
   9.615 +on the Program, the distribution of the whole must be on the terms of
   9.616 +this License, whose permissions for other licensees extend to the
   9.617 +entire whole, and thus to each and every part regardless of who wrote it.
   9.618 +
   9.619 +Thus, it is not the intent of this section to claim rights or contest
   9.620 +your rights to work written entirely by you; rather, the intent is to
   9.621 +exercise the right to control the distribution of derivative or
   9.622 +collective works based on the Program.
   9.623 +
   9.624 +In addition, mere aggregation of another work not based on the Program
   9.625 +with the Program (or with a work based on the Program) on a volume of
   9.626 +a storage or distribution medium does not bring the other work under
   9.627 +the scope of this License.
   9.628 +
   9.629 +  3. You may copy and distribute the Program (or a work based on it,
   9.630 +under Section 2) in object code or executable form under the terms of
   9.631 +Sections 1 and 2 above provided that you also do one of the following:
   9.632 +
   9.633 +    a) Accompany it with the complete corresponding machine-readable
   9.634 +    source code, which must be distributed under the terms of Sections
   9.635 +    1 and 2 above on a medium customarily used for software interchange; or,
   9.636 +
   9.637 +    b) Accompany it with a written offer, valid for at least three
   9.638 +    years, to give any third party, for a charge no more than your
   9.639 +    cost of physically performing source distribution, a complete
   9.640 +    machine-readable copy of the corresponding source code, to be
   9.641 +    distributed under the terms of Sections 1 and 2 above on a medium
   9.642 +    customarily used for software interchange; or,
   9.643 +
   9.644 +    c) Accompany it with the information you received as to the offer
   9.645 +    to distribute corresponding source code.  (This alternative is
   9.646 +    allowed only for noncommercial distribution and only if you
   9.647 +    received the program in object code or executable form with such
   9.648 +    an offer, in accord with Subsection b above.)
   9.649 +
   9.650 +The source code for a work means the preferred form of the work for
   9.651 +making modifications to it.  For an executable work, complete source
   9.652 +code means all the source code for all modules it contains, plus any
   9.653 +associated interface definition files, plus the scripts used to
   9.654 +control compilation and installation of the executable.  However, as a
   9.655 +special exception, the source code distributed need not include
   9.656 +anything that is normally distributed (in either source or binary
   9.657 +form) with the major components (compiler, kernel, and so on) of the
   9.658 +operating system on which the executable runs, unless that component
   9.659 +itself accompanies the executable.
   9.660 +
   9.661 +If distribution of executable or object code is made by offering
   9.662 +access to copy from a designated place, then offering equivalent
   9.663 +access to copy the source code from the same place counts as
   9.664 +distribution of the source code, even though third parties are not
   9.665 +compelled to copy the source along with the object code.
   9.666 +
   9.667 +  4. You may not copy, modify, sublicense, or distribute the Program
   9.668 +except as expressly provided under this License.  Any attempt
   9.669 +otherwise to copy, modify, sublicense or distribute the Program is
   9.670 +void, and will automatically terminate your rights under this License.
   9.671 +However, parties who have received copies, or rights, from you under
   9.672 +this License will not have their licenses terminated so long as such
   9.673 +parties remain in full compliance.
   9.674 +
   9.675 +  5. You are not required to accept this License, since you have not
   9.676 +signed it.  However, nothing else grants you permission to modify or
   9.677 +distribute the Program or its derivative works.  These actions are
   9.678 +prohibited by law if you do not accept this License.  Therefore, by
   9.679 +modifying or distributing the Program (or any work based on the
   9.680 +Program), you indicate your acceptance of this License to do so, and
   9.681 +all its terms and conditions for copying, distributing or modifying
   9.682 +the Program or works based on it.
   9.683 +
   9.684 +  6. Each time you redistribute the Program (or any work based on the
   9.685 +Program), the recipient automatically receives a license from the
   9.686 +original licensor to copy, distribute or modify the Program subject to
   9.687 +these terms and conditions.  You may not impose any further
   9.688 +restrictions on the recipients' exercise of the rights granted herein.
   9.689 +You are not responsible for enforcing compliance by third parties to
   9.690 +this License.
   9.691 +
   9.692 +  7. If, as a consequence of a court judgment or allegation of patent
   9.693 +infringement or for any other reason (not limited to patent issues),
   9.694 +conditions are imposed on you (whether by court order, agreement or
   9.695 +otherwise) that contradict the conditions of this License, they do not
   9.696 +excuse you from the conditions of this License.  If you cannot
   9.697 +distribute so as to satisfy simultaneously your obligations under this
   9.698 +License and any other pertinent obligations, then as a consequence you
   9.699 +may not distribute the Program at all.  For example, if a patent
   9.700 +license would not permit royalty-free redistribution of the Program by
   9.701 +all those who receive copies directly or indirectly through you, then
   9.702 +the only way you could satisfy both it and this License would be to
   9.703 +refrain entirely from distribution of the Program.
   9.704 +
   9.705 +If any portion of this section is held invalid or unenforceable under
   9.706 +any particular circumstance, the balance of the section is intended to
   9.707 +apply and the section as a whole is intended to apply in other
   9.708 +circumstances.
   9.709 +
   9.710 +It is not the purpose of this section to induce you to infringe any
   9.711 +patents or other property right claims or to contest validity of any
   9.712 +such claims; this section has the sole purpose of protecting the
   9.713 +integrity of the free software distribution system, which is
   9.714 +implemented by public license practices.  Many people have made
   9.715 +generous contributions to the wide range of software distributed
   9.716 +through that system in reliance on consistent application of that
   9.717 +system; it is up to the author/donor to decide if he or she is willing
   9.718 +to distribute software through any other system and a licensee cannot
   9.719 +impose that choice.
   9.720 +
   9.721 +This section is intended to make thoroughly clear what is believed to
   9.722 +be a consequence of the rest of this License.
   9.723 +
   9.724 +  8. If the distribution and/or use of the Program is restricted in
   9.725 +certain countries either by patents or by copyrighted interfaces, the
   9.726 +original copyright holder who places the Program under this License
   9.727 +may add an explicit geographical distribution limitation excluding
   9.728 +those countries, so that distribution is permitted only in or among
   9.729 +countries not thus excluded.  In such case, this License incorporates
   9.730 +the limitation as if written in the body of this License.
   9.731 +
   9.732 +  9. The Free Software Foundation may publish revised and/or new versions
   9.733 +of the General Public License from time to time.  Such new versions will
   9.734 +be similar in spirit to the present version, but may differ in detail to
   9.735 +address new problems or concerns.
   9.736 +
   9.737 +Each version is given a distinguishing version number.  If the Program
   9.738 +specifies a version number of this License which applies to it and "any
   9.739 +later version", you have the option of following the terms and conditions
   9.740 +either of that version or of any later version published by the Free
   9.741 +Software Foundation.  If the Program does not specify a version number of
   9.742 +this License, you may choose any version ever published by the Free Software
   9.743 +Foundation.
   9.744 +
   9.745 +  10. If you wish to incorporate parts of the Program into other free
   9.746 +programs whose distribution conditions are different, write to the author
   9.747 +to ask for permission.  For software which is copyrighted by the Free
   9.748 +Software Foundation, write to the Free Software Foundation; we sometimes
   9.749 +make exceptions for this.  Our decision will be guided by the two goals
   9.750 +of preserving the free status of all derivatives of our free software and
   9.751 +of promoting the sharing and reuse of software generally.
   9.752 +
   9.753 +    NO WARRANTY
   9.754 +
   9.755 +  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
   9.756 +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
   9.757 +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
   9.758 +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
   9.759 +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
   9.760 +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
   9.761 +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
   9.762 +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
   9.763 +REPAIR OR CORRECTION.
   9.764 +
   9.765 +  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
   9.766 +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
   9.767 +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
   9.768 +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
   9.769 +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
   9.770 +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
   9.771 +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
   9.772 +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
   9.773 +POSSIBILITY OF SUCH DAMAGES.
   9.774 +
   9.775 +     END OF TERMS AND CONDITIONS
    10.1 --- a/VisualC/external/lib/x64/LICENSE.smpeg.txt	Sun Oct 07 17:56:56 2018 +0300
    10.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    10.3 @@ -1,485 +0,0 @@
    10.4 -The source code to this library used with SDL_mixer can be found here:
    10.5 -http://www.libsdl.org/projects/SDL_mixer/libs/
    10.6 ----
    10.7 -
    10.8 -		  GNU LIBRARY GENERAL PUBLIC LICENSE
    10.9 -		       Version 2, June 1991
   10.10 -
   10.11 - Copyright (C) 1991 Free Software Foundation, Inc.
   10.12 -                    675 Mass Ave, Cambridge, MA 02139, USA
   10.13 - Everyone is permitted to copy and distribute verbatim copies
   10.14 - of this license document, but changing it is not allowed.
   10.15 -
   10.16 -[This is the first released version of the library GPL.  It is
   10.17 - numbered 2 because it goes with version 2 of the ordinary GPL.]
   10.18 -
   10.19 -			    Preamble
   10.20 -
   10.21 -  The licenses for most software are designed to take away your
   10.22 -freedom to share and change it.  By contrast, the GNU General Public
   10.23 -Licenses are intended to guarantee your freedom to share and change
   10.24 -free software--to make sure the software is free for all its users.
   10.25 -
   10.26 -  This license, the Library General Public License, applies to some
   10.27 -specially designated Free Software Foundation software, and to any
   10.28 -other libraries whose authors decide to use it.  You can use it for
   10.29 -your libraries, too.
   10.30 -
   10.31 -  When we speak of free software, we are referring to freedom, not
   10.32 -price.  Our General Public Licenses are designed to make sure that you
   10.33 -have the freedom to distribute copies of free software (and charge for
   10.34 -this service if you wish), that you receive source code or can get it
   10.35 -if you want it, that you can change the software or use pieces of it
   10.36 -in new free programs; and that you know you can do these things.
   10.37 -
   10.38 -  To protect your rights, we need to make restrictions that forbid
   10.39 -anyone to deny you these rights or to ask you to surrender the rights.
   10.40 -These restrictions translate to certain responsibilities for you if
   10.41 -you distribute copies of the library, or if you modify it.
   10.42 -
   10.43 -  For example, if you distribute copies of the library, whether gratis
   10.44 -or for a fee, you must give the recipients all the rights that we gave
   10.45 -you.  You must make sure that they, too, receive or can get the source
   10.46 -code.  If you link a program with the library, you must provide
   10.47 -complete object files to the recipients so that they can relink them
   10.48 -with the library, after making changes to the library and recompiling
   10.49 -it.  And you must show them these terms so they know their rights.
   10.50 -
   10.51 -  Our method of protecting your rights has two steps: (1) copyright
   10.52 -the library, and (2) offer you this license which gives you legal
   10.53 -permission to copy, distribute and/or modify the library.
   10.54 -
   10.55 -  Also, for each distributor's protection, we want to make certain
   10.56 -that everyone understands that there is no warranty for this free
   10.57 -library.  If the library is modified by someone else and passed on, we
   10.58 -want its recipients to know that what they have is not the original
   10.59 -version, so that any problems introduced by others will not reflect on
   10.60 -the original authors' reputations.
   10.61 -
   10.62 -  Finally, any free program is threatened constantly by software
   10.63 -patents.  We wish to avoid the danger that companies distributing free
   10.64 -software will individually obtain patent licenses, thus in effect
   10.65 -transforming the program into proprietary software.  To prevent this,
   10.66 -we have made it clear that any patent must be licensed for everyone's
   10.67 -free use or not licensed at all.
   10.68 -
   10.69 -  Most GNU software, including some libraries, is covered by the ordinary
   10.70 -GNU General Public License, which was designed for utility programs.  This
   10.71 -license, the GNU Library General Public License, applies to certain
   10.72 -designated libraries.  This license is quite different from the ordinary
   10.73 -one; be sure to read it in full, and don't assume that anything in it is
   10.74 -the same as in the ordinary license.
   10.75 -
   10.76 -  The reason we have a separate public license for some libraries is that
   10.77 -they blur the distinction we usually make between modifying or adding to a
   10.78 -program and simply using it.  Linking a program with a library, without
   10.79 -changing the library, is in some sense simply using the library, and is
   10.80 -analogous to running a utility program or application program.  However, in
   10.81 -a textual and legal sense, the linked executable is a combined work, a
   10.82 -derivative of the original library, and the ordinary General Public License
   10.83 -treats it as such.
   10.84 -
   10.85 -  Because of this blurred distinction, using the ordinary General
   10.86 -Public License for libraries did not effectively promote software
   10.87 -sharing, because most developers did not use the libraries.  We
   10.88 -concluded that weaker conditions might promote sharing better.
   10.89 -
   10.90 -  However, unrestricted linking of non-free programs would deprive the
   10.91 -users of those programs of all benefit from the free status of the
   10.92 -libraries themselves.  This Library General Public License is intended to
   10.93 -permit developers of non-free programs to use free libraries, while
   10.94 -preserving your freedom as a user of such programs to change the free
   10.95 -libraries that are incorporated in them.  (We have not seen how to achieve
   10.96 -this as regards changes in header files, but we have achieved it as regards
   10.97 -changes in the actual functions of the Library.)  The hope is that this
   10.98 -will lead to faster development of free libraries.
   10.99 -
  10.100 -  The precise terms and conditions for copying, distribution and
  10.101 -modification follow.  Pay close attention to the difference between a
  10.102 -"work based on the library" and a "work that uses the library".  The
  10.103 -former contains code derived from the library, while the latter only
  10.104 -works together with the library.
  10.105 -
  10.106 -  Note that it is possible for a library to be covered by the ordinary
  10.107 -General Public License rather than by this special one.
  10.108 -
  10.109 -		  GNU LIBRARY GENERAL PUBLIC LICENSE
  10.110 -   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
  10.111 -
  10.112 -  0. This License Agreement applies to any software library which
  10.113 -contains a notice placed by the copyright holder or other authorized
  10.114 -party saying it may be distributed under the terms of this Library
  10.115 -General Public License (also called "this License").  Each licensee is
  10.116 -addressed as "you".
  10.117 -
  10.118 -  A "library" means a collection of software functions and/or data
  10.119 -prepared so as to be conveniently linked with application programs
  10.120 -(which use some of those functions and data) to form executables.
  10.121 -
  10.122 -  The "Library", below, refers to any such software library or work
  10.123 -which has been distributed under these terms.  A "work based on the
  10.124 -Library" means either the Library or any derivative work under
  10.125 -copyright law: that is to say, a work containing the Library or a
  10.126 -portion of it, either verbatim or with modifications and/or translated
  10.127 -straightforwardly into another language.  (Hereinafter, translation is
  10.128 -included without limitation in the term "modification".)
  10.129 -
  10.130 -  "Source code" for a work means the preferred form of the work for
  10.131 -making modifications to it.  For a library, complete source code means
  10.132 -all the source code for all modules it contains, plus any associated
  10.133 -interface definition files, plus the scripts used to control compilation
  10.134 -and installation of the library.
  10.135 -
  10.136 -  Activities other than copying, distribution and modification are not
  10.137 -covered by this License; they are outside its scope.  The act of
  10.138 -running a program using the Library is not restricted, and output from
  10.139 -such a program is covered only if its contents constitute a work based
  10.140 -on the Library (independent of the use of the Library in a tool for
  10.141 -writing it).  Whether that is true depends on what the Library does
  10.142 -and what the program that uses the Library does.
  10.143 -  
  10.144 -  1. You may copy and distribute verbatim copies of the Library's
  10.145 -complete source code as you receive it, in any medium, provided that
  10.146 -you conspicuously and appropriately publish on each copy an
  10.147 -appropriate copyright notice and disclaimer of warranty; keep intact
  10.148 -all the notices that refer to this License and to the absence of any
  10.149 -warranty; and distribute a copy of this License along with the
  10.150 -Library.
  10.151 -
  10.152 -  You may charge a fee for the physical act of transferring a copy,
  10.153 -and you may at your option offer warranty protection in exchange for a
  10.154 -fee.
  10.155 -
  10.156 -  2. You may modify your copy or copies of the Library or any portion
  10.157 -of it, thus forming a work based on the Library, and copy and
  10.158 -distribute such modifications or work under the terms of Section 1
  10.159 -above, provided that you also meet all of these conditions:
  10.160 -
  10.161 -    a) The modified work must itself be a software library.
  10.162 -
  10.163 -    b) You must cause the files modified to carry prominent notices
  10.164 -    stating that you changed the files and the date of any change.
  10.165 -
  10.166 -    c) You must cause the whole of the work to be licensed at no
  10.167 -    charge to all third parties under the terms of this License.
  10.168 -
  10.169 -    d) If a facility in the modified Library refers to a function or a
  10.170 -    table of data to be supplied by an application program that uses
  10.171 -    the facility, other than as an argument passed when the facility
  10.172 -    is invoked, then you must make a good faith effort to ensure that,
  10.173 -    in the event an application does not supply such function or
  10.174 -    table, the facility still operates, and performs whatever part of
  10.175 -    its purpose remains meaningful.
  10.176 -
  10.177 -    (For example, a function in a library to compute square roots has
  10.178 -    a purpose that is entirely well-defined independent of the
  10.179 -    application.  Therefore, Subsection 2d requires that any
  10.180 -    application-supplied function or table used by this function must
  10.181 -    be optional: if the application does not supply it, the square
  10.182 -    root function must still compute square roots.)
  10.183 -
  10.184 -These requirements apply to the modified work as a whole.  If
  10.185 -identifiable sections of that work are not derived from the Library,
  10.186 -and can be reasonably considered independent and separate works in
  10.187 -themselves, then this License, and its terms, do not apply to those
  10.188 -sections when you distribute them as separate works.  But when you
  10.189 -distribute the same sections as part of a whole which is a work based
  10.190 -on the Library, the distribution of the whole must be on the terms of
  10.191 -this License, whose permissions for other licensees extend to the
  10.192 -entire whole, and thus to each and every part regardless of who wrote
  10.193 -it.
  10.194 -
  10.195 -Thus, it is not the intent of this section to claim rights or contest
  10.196 -your rights to work written entirely by you; rather, the intent is to
  10.197 -exercise the right to control the distribution of derivative or
  10.198 -collective works based on the Library.
  10.199 -
  10.200 -In addition, mere aggregation of another work not based on the Library
  10.201 -with the Library (or with a work based on the Library) on a volume of
  10.202 -a storage or distribution medium does not bring the other work under
  10.203 -the scope of this License.
  10.204 -
  10.205 -  3. You may opt to apply the terms of the ordinary GNU General Public
  10.206 -License instead of this License to a given copy of the Library.  To do
  10.207 -this, you must alter all the notices that refer to this License, so
  10.208 -that they refer to the ordinary GNU General Public License, version 2,
  10.209 -instead of to this License.  (If a newer version than version 2 of the
  10.210 -ordinary GNU General Public License has appeared, then you can specify
  10.211 -that version instead if you wish.)  Do not make any other change in
  10.212 -these notices.
  10.213 -
  10.214 -  Once this change is made in a given copy, it is irreversible for
  10.215 -that copy, so the ordinary GNU General Public License applies to all
  10.216 -subsequent copies and derivative works made from that copy.
  10.217 -
  10.218 -  This option is useful when you wish to copy part of the code of
  10.219 -the Library into a program that is not a library.
  10.220 -
  10.221 -  4. You may copy and distribute the Library (or a portion or
  10.222 -derivative of it, under Section 2) in object code or executable form
  10.223 -under the terms of Sections 1 and 2 above provided that you accompany
  10.224 -it with the complete corresponding machine-readable source code, which
  10.225 -must be distributed under the terms of Sections 1 and 2 above on a
  10.226 -medium customarily used for software interchange.
  10.227 -
  10.228 -  If distribution of object code is made by offering access to copy
  10.229 -from a designated place, then offering equivalent access to copy the
  10.230 -source code from the same place satisfies the requirement to
  10.231 -distribute the source code, even though third parties are not
  10.232 -compelled to copy the source along with the object code.
  10.233 -
  10.234 -  5. A program that contains no derivative of any portion of the
  10.235 -Library, but is designed to work with the Library by being compiled or
  10.236 -linked with it, is called a "work that uses the Library".  Such a
  10.237 -work, in isolation, is not a derivative work of the Library, and
  10.238 -therefore falls outside the scope of this License.
  10.239 -
  10.240 -  However, linking a "work that uses the Library" with the Library
  10.241 -creates an executable that is a derivative of the Library (because it
  10.242 -contains portions of the Library), rather than a "work that uses the
  10.243 -library".  The executable is therefore covered by this License.
  10.244 -Section 6 states terms for distribution of such executables.
  10.245 -
  10.246 -  When a "work that uses the Library" uses material from a header file
  10.247 -that is part of the Library, the object code for the work may be a
  10.248 -derivative work of the Library even though the source code is not.
  10.249 -Whether this is true is especially significant if the work can be
  10.250 -linked without the Library, or if the work is itself a library.  The
  10.251 -threshold for this to be true is not precisely defined by law.
  10.252 -
  10.253 -  If such an object file uses only numerical parameters, data
  10.254 -structure layouts and accessors, and small macros and small inline
  10.255 -functions (ten lines or less in length), then the use of the object
  10.256 -file is unrestricted, regardless of whether it is legally a derivative
  10.257 -work.  (Executables containing this object code plus portions of the
  10.258 -Library will still fall under Section 6.)
  10.259 -
  10.260 -  Otherwise, if the work is a derivative of the Library, you may
  10.261 -distribute the object code for the work under the terms of Section 6.
  10.262 -Any executables containing that work also fall under Section 6,
  10.263 -whether or not they are linked directly with the Library itself.
  10.264 -
  10.265 -  6. As an exception to the Sections above, you may also compile or
  10.266 -link a "work that uses the Library" with the Library to produce a
  10.267 -work containing portions of the Library, and distribute that work
  10.268 -under terms of your choice, provided that the terms permit
  10.269 -modification of the work for the customer's own use and reverse
  10.270 -engineering for debugging such modifications.
  10.271 -
  10.272 -  You must give prominent notice with each copy of the work that the
  10.273 -Library is used in it and that the Library and its use are covered by
  10.274 -this License.  You must supply a copy of this License.  If the work
  10.275 -during execution displays copyright notices, you must include the
  10.276 -copyright notice for the Library among them, as well as a reference
  10.277 -directing the user to the copy of this License.  Also, you must do one
  10.278 -of these things:
  10.279 -
  10.280 -    a) Accompany the work with the complete corresponding
  10.281 -    machine-readable source code for the Library including whatever
  10.282 -    changes were used in the work (which must be distributed under
  10.283 -    Sections 1 and 2 above); and, if the work is an executable linked
  10.284 -    with the Library, with the complete machine-readable "work that
  10.285 -    uses the Library", as object code and/or source code, so that the
  10.286 -    user can modify the Library and then relink to produce a modified
  10.287 -    executable containing the modified Library.  (It is understood
  10.288 -    that the user who changes the contents of definitions files in the
  10.289 -    Library will not necessarily be able to recompile the application
  10.290 -    to use the modified definitions.)
  10.291 -
  10.292 -    b) Accompany the work with a written offer, valid for at
  10.293 -    least three years, to give the same user the materials
  10.294 -    specified in Subsection 6a, above, for a charge no more
  10.295 -    than the cost of performing this distribution.
  10.296 -
  10.297 -    c) If distribution of the work is made by offering access to copy
  10.298 -    from a designated place, offer equivalent access to copy the above
  10.299 -    specified materials from the same place.
  10.300 -
  10.301 -    d) Verify that the user has already received a copy of these
  10.302 -    materials or that you have already sent this user a copy.
  10.303 -
  10.304 -  For an executable, the required form of the "work that uses the
  10.305 -Library" must include any data and utility programs needed for
  10.306 -reproducing the executable from it.  However, as a special exception,
  10.307 -the source code distributed need not include anything that is normally
  10.308 -distributed (in either source or binary form) with the major
  10.309 -components (compiler, kernel, and so on) of the operating system on
  10.310 -which the executable runs, unless that component itself accompanies
  10.311 -the executable.
  10.312 -
  10.313 -  It may happen that this requirement contradicts the license
  10.314 -restrictions of other proprietary libraries that do not normally
  10.315 -accompany the operating system.  Such a contradiction means you cannot
  10.316 -use both them and the Library together in an executable that you
  10.317 -distribute.
  10.318 -
  10.319 -  7. You may place library facilities that are a work based on the
  10.320 -Library side-by-side in a single library together with other library
  10.321 -facilities not covered by this License, and distribute such a combined
  10.322 -library, provided that the separate distribution of the work based on
  10.323 -the Library and of the other library facilities is otherwise
  10.324 -permitted, and provided that you do these two things:
  10.325 -
  10.326 -    a) Accompany the combined library with a copy of the same work
  10.327 -    based on the Library, uncombined with any other library
  10.328 -    facilities.  This must be distributed under the terms of the
  10.329 -    Sections above.
  10.330 -
  10.331 -    b) Give prominent notice with the combined library of the fact
  10.332 -    that part of it is a work based on the Library, and explaining
  10.333 -    where to find the accompanying uncombined form of the same work.
  10.334 -
  10.335 -  8. You may not copy, modify, sublicense, link with, or distribute
  10.336 -the Library except as expressly provided under this License.  Any
  10.337 -attempt otherwise to copy, modify, sublicense, link with, or
  10.338 -distribute the Library is void, and will automatically terminate your
  10.339 -rights under this License.  However, parties who have received copies,
  10.340 -or rights, from you under this License will not have their licenses
  10.341 -terminated so long as such parties remain in full compliance.
  10.342 -
  10.343 -  9. You are not required to accept this License, since you have not
  10.344 -signed it.  However, nothing else grants you permission to modify or
  10.345 -distribute the Library or its derivative works.  These actions are
  10.346 -prohibited by law if you do not accept this License.  Therefore, by
  10.347 -modifying or distributing the Library (or any work based on the
  10.348 -Library), you indicate your acceptance of this License to do so, and
  10.349 -all its terms and conditions for copying, distributing or modifying
  10.350 -the Library or works based on it.
  10.351 -
  10.352 -  10. Each time you redistribute the Library (or any work based on the
  10.353 -Library), the recipient automatically receives a license from the
  10.354 -original licensor to copy, distribute, link with or modify the Library
  10.355 -subject to these terms and conditions.  You may not impose any further
  10.356 -restrictions on the recipients' exercise of the rights granted herein.
  10.357 -You are not responsible for enforcing compliance by third parties to
  10.358 -this License.
  10.359 -
  10.360 -  11. If, as a consequence of a court judgment or allegation of patent
  10.361 -infringement or for any other reason (not limited to patent issues),
  10.362 -conditions are imposed on you (whether by court order, agreement or
  10.363 -otherwise) that contradict the conditions of this License, they do not
  10.364 -excuse you from the conditions of this License.  If you cannot
  10.365 -distribute so as to satisfy simultaneously your obligations under this
  10.366 -License and any other pertinent obligations, then as a consequence you
  10.367 -may not distribute the Library at all.  For example, if a patent
  10.368 -license would not permit royalty-free redistribution of the Library by
  10.369 -all those who receive copies directly or indirectly through you, then
  10.370 -the only way you could satisfy both it and this License would be to
  10.371 -refrain entirely from distribution of the Library.
  10.372 -
  10.373 -If any portion of this section is held invalid or unenforceable under any
  10.374 -particular circumstance, the balance of the section is intended to apply,
  10.375 -and the section as a whole is intended to apply in other circumstances.
  10.376 -
  10.377 -It is not the purpose of this section to induce you to infringe any
  10.378 -patents or other property right claims or to contest validity of any
  10.379 -such claims; this section has the sole purpose of protecting the
  10.380 -integrity of the free software distribution system which is
  10.381 -implemented by public license practices.  Many people have made
  10.382 -generous contributions to the wide range of software distributed
  10.383 -through that system in reliance on consistent application of that
  10.384 -system; it is up to the author/donor to decide if he or she is willing
  10.385 -to distribute software through any other system and a licensee cannot
  10.386 -impose that choice.
  10.387 -
  10.388 -This section is intended to make thoroughly clear what is believed to
  10.389 -be a consequence of the rest of this License.
  10.390 -
  10.391 -  12. If the distribution and/or use of the Library is restricted in
  10.392 -certain countries either by patents or by copyrighted interfaces, the
  10.393 -original copyright holder who places the Library under this License may add
  10.394 -an explicit geographical distribution limitation excluding those countries,
  10.395 -so that distribution is permitted only in or among countries not thus
  10.396 -excluded.  In such case, this License incorporates the limitation as if
  10.397 -written in the body of this License.
  10.398 -
  10.399 -  13. The Free Software Foundation may publish revised and/or new
  10.400 -versions of the Library General Public License from time to time.
  10.401 -Such new versions will be similar in spirit to the present version,
  10.402 -but may differ in detail to address new problems or concerns.
  10.403 -
  10.404 -Each version is given a distinguishing version number.  If the Library
  10.405 -specifies a version number of this License which applies to it and
  10.406 -"any later version", you have the option of following the terms and
  10.407 -conditions either of that version or of any later version published by
  10.408 -the Free Software Foundation.  If the Library does not specify a
  10.409 -license version number, you may choose any version ever published by
  10.410 -the Free Software Foundation.
  10.411 -
  10.412 -  14. If you wish to incorporate parts of the Library into other free
  10.413 -programs whose distribution conditions are incompatible with these,
  10.414 -write to the author to ask for permission.  For software which is
  10.415 -copyrighted by the Free Software Foundation, write to the Free
  10.416 -Software Foundation; we sometimes make exceptions for this.  Our
  10.417 -decision will be guided by the two goals of preserving the free status
  10.418 -of all derivatives of our free software and of promoting the sharing
  10.419 -and reuse of software generally.
  10.420 -
  10.421 -			    NO WARRANTY
  10.422 -
  10.423 -  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
  10.424 -WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
  10.425 -EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
  10.426 -OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
  10.427 -KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
  10.428 -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
  10.429 -PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
  10.430 -LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
  10.431 -THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
  10.432 -
  10.433 -  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
  10.434 -WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
  10.435 -AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
  10.436 -FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
  10.437 -CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
  10.438 -LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
  10.439 -RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
  10.440 -FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
  10.441 -SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
  10.442 -DAMAGES.
  10.443 -
  10.444 -		     END OF TERMS AND CONDITIONS
  10.445 -
  10.446 -     Appendix: How to Apply These Terms to Your New Libraries
  10.447 -
  10.448 -  If you develop a new library, and you want it to be of the greatest
  10.449 -possible use to the public, we recommend making it free software that
  10.450 -everyone can redistribute and change.  You can do so by permitting
  10.451 -redistribution under these terms (or, alternatively, under the terms of the
  10.452 -ordinary General Public License).
  10.453 -
  10.454 -  To apply these terms, attach the following notices to the library.  It is
  10.455 -safest to attach them to the start of each source file to most effectively
  10.456 -convey the exclusion of warranty; and each file should have at least the
  10.457 -"copyright" line and a pointer to where the full notice is found.
  10.458 -
  10.459 -    <one line to give the library's name and a brief idea of what it does.>
  10.460 -    Copyright (C) <year>  <name of author>
  10.461 -
  10.462 -    This library is free software; you can redistribute it and/or
  10.463 -    modify it under the terms of the GNU Library General Public
  10.464 -    License as published by the Free Software Foundation; either
  10.465 -    version 2 of the License, or (at your option) any later version.
  10.466 -
  10.467 -    This library is distributed in the hope that it will be useful,
  10.468 -    but WITHOUT ANY WARRANTY; without even the implied warranty of
  10.469 -    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  10.470 -    Library General Public License for more details.
  10.471 -
  10.472 -    You should have received a copy of the GNU Library General Public
  10.473 -    License along with this library; if not, write to the Free
  10.474 -    Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  10.475 -
  10.476 -Also add information on how to contact you by electronic and paper mail.
  10.477 -
  10.478 -You should also get your employer (if you work as a programmer) or your
  10.479 -school, if any, to sign a "copyright disclaimer" for the library, if
  10.480 -necessary.  Here is a sample; alter the names:
  10.481 -
  10.482 -  Yoyodyne, Inc., hereby disclaims all copyright interest in the
  10.483 -  library `Frob' (a library for tweaking knobs) written by James Random Hacker.
  10.484 -
  10.485 -  <signature of Ty Coon>, 1 April 1990
  10.486 -  Ty Coon, President of Vice
  10.487 -
  10.488 -That's all there is to it!
    11.1 Binary file VisualC/external/lib/x64/libmpg123-0.dll has changed
    12.1 Binary file VisualC/external/lib/x64/smpeg.dll has changed
    13.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    13.2 +++ b/VisualC/external/lib/x86/LICENSE.mpg123.txt	Thu Oct 11 11:50:10 2018 +0300
    13.3 @@ -0,0 +1,772 @@
    13.4 +This is the file that contains the terms of use, copying, etc. for the mpg123 distribution package.
    13.5 +
    13.6 +Main message, to include in "About ..." boxes, etc:
    13.7 +
    13.8 +	Copyright (c) 1995-2013 by Michael Hipp and others,
    13.9 +	free software under the terms of the LGPL v2.1
   13.10 +
   13.11 +There is an attempt to cover the actual list of authors in the AUTHORS file.
   13.12 +Project maintainer since 2006 is Thomas Orgis and many people have contributed
   13.13 +since the Michael Hipp era, but he stays the initial source and it would
   13.14 +be impractical to count them all individually, so it's "and others".
   13.15 +Source files contain the phrase "the mpg123 project" to the same effect
   13.16 +in their license boilerplate; especially those that were added after
   13.17 +maintainership changed. The person mainly responsible for the first version
   13.18 +is usually named in the phrase "initially written by ...".
   13.19 +
   13.20 +All files in the distribution that don't carry a license note on their own are
   13.21 +licensed under the terms of the LGPL 2.1; exceptions may apply, especially to
   13.22 +files not in the official distribution but in the revision control repository.
   13.23 +
   13.24 +The formal license text follows.
   13.25 +
   13.26 +=======================
   13.27 +1. The LGPL version 2.1
   13.28 +=======================
   13.29 +
   13.30 +
   13.31 +  GNU LESSER GENERAL PUBLIC LICENSE
   13.32 +       Version 2.1, February 1999
   13.33 +
   13.34 + Copyright (C) 1991, 1999 Free Software Foundation, Inc.
   13.35 + 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
   13.36 + Everyone is permitted to copy and distribute verbatim copies
   13.37 + of this license document, but changing it is not allowed.
   13.38 +
   13.39 +[This is the first released version of the Lesser GPL.  It also counts
   13.40 + as the successor of the GNU Library Public License, version 2, hence
   13.41 + the version number 2.1.]
   13.42 +
   13.43 +    Preamble
   13.44 +
   13.45 +  The licenses for most software are designed to take away your
   13.46 +freedom to share and change it.  By contrast, the GNU General Public
   13.47 +Licenses are intended to guarantee your freedom to share and change
   13.48 +free software--to make sure the software is free for all its users.
   13.49 +
   13.50 +  This license, the Lesser General Public License, applies to some
   13.51 +specially designated software packages--typically libraries--of the
   13.52 +Free Software Foundation and other authors who decide to use it.  You
   13.53 +can use it too, but we suggest you first think carefully about whether
   13.54 +this license or the ordinary General Public License is the better
   13.55 +strategy to use in any particular case, based on the explanations below.
   13.56 +
   13.57 +  When we speak of free software, we are referring to freedom of use,
   13.58 +not price.  Our General Public Licenses are designed to make sure that
   13.59 +you have the freedom to distribute copies of free software (and charge
   13.60 +for this service if you wish); that you receive source code or can get
   13.61 +it if you want it; that you can change the software and use pieces of
   13.62 +it in new free programs; and that you are informed that you can do
   13.63 +these things.
   13.64 +
   13.65 +  To protect your rights, we need to make restrictions that forbid
   13.66 +distributors to deny you these rights or to ask you to surrender these
   13.67 +rights.  These restrictions translate to certain responsibilities for
   13.68 +you if you distribute copies of the library or if you modify it.
   13.69 +
   13.70 +  For example, if you distribute copies of the library, whether gratis
   13.71 +or for a fee, you must give the recipients all the rights that we gave
   13.72 +you.  You must make sure that they, too, receive or can get the source
   13.73 +code.  If you link other code with the library, you must provide
   13.74 +complete object files to the recipients, so that they can relink them
   13.75 +with the library after making changes to the library and recompiling
   13.76 +it.  And you must show them these terms so they know their rights.
   13.77 +
   13.78 +  We protect your rights with a two-step method: (1) we copyright the
   13.79 +library, and (2) we offer you this license, which gives you legal
   13.80 +permission to copy, distribute and/or modify the library.
   13.81 +
   13.82 +  To protect each distributor, we want to make it very clear that
   13.83 +there is no warranty for the free library.  Also, if the library is
   13.84 +modified by someone else and passed on, the recipients should know
   13.85 +that what they have is not the original version, so that the original
   13.86 +author's reputation will not be affected by problems that might be
   13.87 +introduced by others.
   13.88 +
   13.89 +  Finally, software patents pose a constant threat to the existence of
   13.90 +any free program.  We wish to make sure that a company cannot
   13.91 +effectively restrict the users of a free program by obtaining a
   13.92 +restrictive license from a patent holder.  Therefore, we insist that
   13.93 +any patent license obtained for a version of the library must be
   13.94 +consistent with the full freedom of use specified in this license.
   13.95 +
   13.96 +  Most GNU software, including some libraries, is covered by the
   13.97 +ordinary GNU General Public License.  This license, the GNU Lesser
   13.98 +General Public License, applies to certain designated libraries, and
   13.99 +is quite different from the ordinary General Public License.  We use
  13.100 +this license for certain libraries in order to permit linking those
  13.101 +libraries into non-free programs.
  13.102 +
  13.103 +  When a program is linked with a library, whether statically or using
  13.104 +a shared library, the combination of the two is legally speaking a
  13.105 +combined work, a derivative of the original library.  The ordinary
  13.106 +General Public License therefore permits such linking only if the
  13.107 +entire combination fits its criteria of freedom.  The Lesser General
  13.108 +Public License permits more lax criteria for linking other code with
  13.109 +the library.
  13.110 +
  13.111 +  We call this license the "Lesser" General Public License because it
  13.112 +does Less to protect the user's freedom than the ordinary General
  13.113 +Public License.  It also provides other free software developers Less
  13.114 +of an advantage over competing non-free programs.  These disadvantages
  13.115 +are the reason we use the ordinary General Public License for many
  13.116 +libraries.  However, the Lesser license provides advantages in certain
  13.117 +special circumstances.
  13.118 +
  13.119 +  For example, on rare occasions, there may be a special need to
  13.120 +encourage the widest possible use of a certain library, so that it becomes
  13.121 +a de-facto standard.  To achieve this, non-free programs must be
  13.122 +allowed to use the library.  A more frequent case is that a free
  13.123 +library does the same job as widely used non-free libraries.  In this
  13.124 +case, there is little to gain by limiting the free library to free
  13.125 +software only, so we use the Lesser General Public License.
  13.126 +
  13.127 +  In other cases, permission to use a particular library in non-free
  13.128 +programs enables a greater number of people to use a large body of
  13.129 +free software.  For example, permission to use the GNU C Library in
  13.130 +non-free programs enables many more people to use the whole GNU
  13.131 +operating system, as well as its variant, the GNU/Linux operating
  13.132 +system.
  13.133 +
  13.134 +  Although the Lesser General Public License is Less protective of the
  13.135 +users' freedom, it does ensure that the user of a program that is
  13.136 +linked with the Library has the freedom and the wherewithal to run
  13.137 +that program using a modified version of the Library.
  13.138 +
  13.139 +  The precise terms and conditions for copying, distribution and
  13.140 +modification follow.  Pay close attention to the difference between a
  13.141 +"work based on the library" and a "work that uses the library".  The
  13.142 +former contains code derived from the library, whereas the latter must
  13.143 +be combined with the library in order to run.
  13.144 +
  13.145 +  GNU LESSER GENERAL PUBLIC LICENSE
  13.146 +   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
  13.147 +
  13.148 +  0. This License Agreement applies to any software library or other
  13.149 +program which contains a notice placed by the copyright holder or
  13.150 +other authorized party saying it may be distributed under the terms of
  13.151 +this Lesser General Public License (also called "this License").
  13.152 +Each licensee is addressed as "you".
  13.153 +
  13.154 +  A "library" means a collection of software functions and/or data
  13.155 +prepared so as to be conveniently linked with application programs
  13.156 +(which use some of those functions and data) to form executables.
  13.157 +
  13.158 +  The "Library", below, refers to any such software library or work
  13.159 +which has been distributed under these terms.  A "work based on the
  13.160 +Library" means either the Library or any derivative work under
  13.161 +copyright law: that is to say, a work containing the Library or a
  13.162 +portion of it, either verbatim or with modifications and/or translated
  13.163 +straightforwardly into another language.  (Hereinafter, translation is
  13.164 +included without limitation in the term "modification".)
  13.165 +
  13.166 +  "Source code" for a work means the preferred form of the work for
  13.167 +making modifications to it.  For a library, complete source code means
  13.168 +all the source code for all modules it contains, plus any associated
  13.169 +interface definition files, plus the scripts used to control compilation
  13.170 +and installation of the library.
  13.171 +
  13.172 +  Activities other than copying, distribution and modification are not
  13.173 +covered by this License; they are outside its scope.  The act of
  13.174 +running a program using the Library is not restricted, and output from
  13.175 +such a program is covered only if its contents constitute a work based
  13.176 +on the Library (independent of the use of the Library in a tool for
  13.177 +writing it).  Whether that is true depends on what the Library does
  13.178 +and what the program that uses the Library does.
  13.179 +  
  13.180 +  1. You may copy and distribute verbatim copies of the Library's
  13.181 +complete source code as you receive it, in any medium, provided that
  13.182 +you conspicuously and appropriately publish on each copy an
  13.183 +appropriate copyright notice and disclaimer of warranty; keep intact
  13.184 +all the notices that refer to this License and to the absence of any
  13.185 +warranty; and distribute a copy of this License along with the
  13.186 +Library.
  13.187 +
  13.188 +  You may charge a fee for the physical act of transferring a copy,
  13.189 +and you may at your option offer warranty protection in exchange for a
  13.190 +fee.
  13.191 +
  13.192 +  2. You may modify your copy or copies of the Library or any portion
  13.193 +of it, thus forming a work based on the Library, and copy and
  13.194 +distribute such modifications or work under the terms of Section 1
  13.195 +above, provided that you also meet all of these conditions:
  13.196 +
  13.197 +    a) The modified work must itself be a software library.
  13.198 +
  13.199 +    b) You must cause the files modified to carry prominent notices
  13.200 +    stating that you changed the files and the date of any change.
  13.201 +
  13.202 +    c) You must cause the whole of the work to be licensed at no
  13.203 +    charge to all third parties under the terms of this License.
  13.204 +
  13.205 +    d) If a facility in the modified Library refers to a function or a
  13.206 +    table of data to be supplied by an application program that uses
  13.207 +    the facility, other than as an argument passed when the facility
  13.208 +    is invoked, then you must make a good faith effort to ensure that,
  13.209 +    in the event an application does not supply such function or
  13.210 +    table, the facility still operates, and performs whatever part of
  13.211 +    its purpose remains meaningful.
  13.212 +
  13.213 +    (For example, a function in a library to compute square roots has
  13.214 +    a purpose that is entirely well-defined independent of the
  13.215 +    application.  Therefore, Subsection 2d requires that any
  13.216 +    application-supplied function or table used by this function must
  13.217 +    be optional: if the application does not supply it, the square
  13.218 +    root function must still compute square roots.)
  13.219 +
  13.220 +These requirements apply to the modified work as a whole.  If
  13.221 +identifiable sections of that work are not derived from the Library,
  13.222 +and can be reasonably considered independent and separate works in
  13.223 +themselves, then this License, and its terms, do not apply to those
  13.224 +sections when you distribute them as separate works.  But when you
  13.225 +distribute the same sections as part of a whole which is a work based
  13.226 +on the Library, the distribution of the whole must be on the terms of
  13.227 +this License, whose permissions for other licensees extend to the
  13.228 +entire whole, and thus to each and every part regardless of who wrote
  13.229 +it.
  13.230 +
  13.231 +Thus, it is not the intent of this section to claim rights or contest
  13.232 +your rights to work written entirely by you; rather, the intent is to
  13.233 +exercise the right to control the distribution of derivative or
  13.234 +collective works based on the Library.
  13.235 +
  13.236 +In addition, mere aggregation of another work not based on the Library
  13.237 +with the Library (or with a work based on the Library) on a volume of
  13.238 +a storage or distribution medium does not bring the other work under
  13.239 +the scope of this License.
  13.240 +
  13.241 +  3. You may opt to apply the terms of the ordinary GNU General Public
  13.242 +License instead of this License to a given copy of the Library.  To do
  13.243 +this, you must alter all the notices that refer to this License, so
  13.244 +that they refer to the ordinary GNU General Public License, version 2,
  13.245 +instead of to this License.  (If a newer version than version 2 of the
  13.246 +ordinary GNU General Public License has appeared, then you can specify
  13.247 +that version instead if you wish.)  Do not make any other change in
  13.248 +these notices.
  13.249 +
  13.250 +  Once this change is made in a given copy, it is irreversible for
  13.251 +that copy, so the ordinary GNU General Public License applies to all
  13.252 +subsequent copies and derivative works made from that copy.
  13.253 +
  13.254 +  This option is useful when you wish to copy part of the code of
  13.255 +the Library into a program that is not a library.
  13.256 +
  13.257 +  4. You may copy and distribute the Library (or a portion or
  13.258 +derivative of it, under Section 2) in object code or executable form
  13.259 +under the terms of Sections 1 and 2 above provided that you accompany
  13.260 +it with the complete corresponding machine-readable source code, which
  13.261 +must be distributed under the terms of Sections 1 and 2 above on a
  13.262 +medium customarily used for software interchange.
  13.263 +
  13.264 +  If distribution of object code is made by offering access to copy
  13.265 +from a designated place, then offering equivalent access to copy the
  13.266 +source code from the same place satisfies the requirement to
  13.267 +distribute the source code, even though third parties are not
  13.268 +compelled to copy the source along with the object code.
  13.269 +
  13.270 +  5. A program that contains no derivative of any portion of the
  13.271 +Library, but is designed to work with the Library by being compiled or
  13.272 +linked with it, is called a "work that uses the Library".  Such a
  13.273 +work, in isolation, is not a derivative work of the Library, and
  13.274 +therefore falls outside the scope of this License.
  13.275 +
  13.276 +  However, linking a "work that uses the Library" with the Library
  13.277 +creates an executable that is a derivative of the Library (because it
  13.278 +contains portions of the Library), rather than a "work that uses the
  13.279 +library".  The executable is therefore covered by this License.
  13.280 +Section 6 states terms for distribution of such executables.
  13.281 +
  13.282 +  When a "work that uses the Library" uses material from a header file
  13.283 +that is part of the Library, the object code for the work may be a
  13.284 +derivative work of the Library even though the source code is not.
  13.285 +Whether this is true is especially significant if the work can be
  13.286 +linked without the Library, or if the work is itself a library.  The
  13.287 +threshold for this to be true is not precisely defined by law.
  13.288 +
  13.289 +  If such an object file uses only numerical parameters, data
  13.290 +structure layouts and accessors, and small macros and small inline
  13.291 +functions (ten lines or less in length), then the use of the object
  13.292 +file is unrestricted, regardless of whether it is legally a derivative
  13.293 +work.  (Executables containing this object code plus portions of the
  13.294 +Library will still fall under Section 6.)
  13.295 +
  13.296 +  Otherwise, if the work is a derivative of the Library, you may
  13.297 +distribute the object code for the work under the terms of Section 6.
  13.298 +Any executables containing that work also fall under Section 6,
  13.299 +whether or not they are linked directly with the Library itself.
  13.300 +
  13.301 +  6. As an exception to the Sections above, you may also combine or
  13.302 +link a "work that uses the Library" with the Library to produce a
  13.303 +work containing portions of the Library, and distribute that work
  13.304 +under terms of your choice, provided that the terms permit
  13.305 +modification of the work for the customer's own use and reverse
  13.306 +engineering for debugging such modifications.
  13.307 +
  13.308 +  You must give prominent notice with each copy of the work that the
  13.309 +Library is used in it and that the Library and its use are covered by
  13.310 +this License.  You must supply a copy of this License.  If the work
  13.311 +during execution displays copyright notices, you must include the
  13.312 +copyright notice for the Library among them, as well as a reference
  13.313 +directing the user to the copy of this License.  Also, you must do one
  13.314 +of these things:
  13.315 +
  13.316 +    a) Accompany the work with the complete corresponding
  13.317 +    machine-readable source code for the Library including whatever
  13.318 +    changes were used in the work (which must be distributed under
  13.319 +    Sections 1 and 2 above); and, if the work is an executable linked
  13.320 +    with the Library, with the complete machine-readable "work that
  13.321 +    uses the Library", as object code and/or source code, so that the
  13.322 +    user can modify the Library and then relink to produce a modified
  13.323 +    executable containing the modified Library.  (It is understood
  13.324 +    that the user who changes the contents of definitions files in the
  13.325 +    Library will not necessarily be able to recompile the application
  13.326 +    to use the modified definitions.)
  13.327 +
  13.328 +    b) Use a suitable shared library mechanism for linking with the
  13.329 +    Library.  A suitable mechanism is one that (1) uses at run time a
  13.330 +    copy of the library already present on the user's computer system,
  13.331 +    rather than copying library functions into the executable, and (2)
  13.332 +    will operate properly with a modified version of the library, if
  13.333 +    the user installs one, as long as the modified version is
  13.334 +    interface-compatible with the version that the work was made with.
  13.335 +
  13.336 +    c) Accompany the work with a written offer, valid for at
  13.337 +    least three years, to give the same user the materials
  13.338 +    specified in Subsection 6a, above, for a charge no more
  13.339 +    than the cost of performing this distribution.
  13.340 +
  13.341 +    d) If distribution of the work is made by offering access to copy
  13.342 +    from a designated place, offer equivalent access to copy the above
  13.343 +    specified materials from the same place.
  13.344 +
  13.345 +    e) Verify that the user has already received a copy of these
  13.346 +    materials or that you have already sent this user a copy.
  13.347 +
  13.348 +  For an executable, the required form of the "work that uses the
  13.349 +Library" must include any data and utility programs needed for
  13.350 +reproducing the executable from it.  However, as a special exception,
  13.351 +the materials to be distributed need not include anything that is
  13.352 +normally distributed (in either source or binary form) with the major
  13.353 +components (compiler, kernel, and so on) of the operating system on
  13.354 +which the executable runs, unless that component itself accompanies
  13.355 +the executable.
  13.356 +
  13.357 +  It may happen that this requirement contradicts the license
  13.358 +restrictions of other proprietary libraries that do not normally
  13.359 +accompany the operating system.  Such a contradiction means you cannot
  13.360 +use both them and the Library together in an executable that you
  13.361 +distribute.
  13.362 +
  13.363 +  7. You may place library facilities that are a work based on the
  13.364 +Library side-by-side in a single library together with other library
  13.365 +facilities not covered by this License, and distribute such a combined
  13.366 +library, provided that the separate distribution of the work based on
  13.367 +the Library and of the other library facilities is otherwise
  13.368 +permitted, and provided that you do these two things:
  13.369 +
  13.370 +    a) Accompany the combined library with a copy of the same work
  13.371 +    based on the Library, uncombined with any other library
  13.372 +    facilities.  This must be distributed under the terms of the
  13.373 +    Sections above.
  13.374 +
  13.375 +    b) Give prominent notice with the combined library of the fact
  13.376 +    that part of it is a work based on the Library, and explaining
  13.377 +    where to find the accompanying uncombined form of the same work.
  13.378 +
  13.379 +  8. You may not copy, modify, sublicense, link with, or distribute
  13.380 +the Library except as expressly provided under this License.  Any
  13.381 +attempt otherwise to copy, modify, sublicense, link with, or
  13.382 +distribute the Library is void, and will automatically terminate your
  13.383 +rights under this License.  However, parties who have received copies,
  13.384 +or rights, from you under this License will not have their licenses
  13.385 +terminated so long as such parties remain in full compliance.
  13.386 +
  13.387 +  9. You are not required to accept this License, since you have not
  13.388 +signed it.  However, nothing else grants you permission to modify or
  13.389 +distribute the Library or its derivative works.  These actions are
  13.390 +prohibited by law if you do not accept this License.  Therefore, by
  13.391 +modifying or distributing the Library (or any work based on the
  13.392 +Library), you indicate your acceptance of this License to do so, and
  13.393 +all its terms and conditions for copying, distributing or modifying
  13.394 +the Library or works based on it.
  13.395 +
  13.396 +  10. Each time you redistribute the Library (or any work based on the
  13.397 +Library), the recipient automatically receives a license from the
  13.398 +original licensor to copy, distribute, link with or modify the Library
  13.399 +subject to these terms and conditions.  You may not impose any further
  13.400 +restrictions on the recipients' exercise of the rights granted herein.
  13.401 +You are not responsible for enforcing compliance by third parties with
  13.402 +this License.
  13.403 +
  13.404 +  11. If, as a consequence of a court judgment or allegation of patent
  13.405 +infringement or for any other reason (not limited to patent issues),
  13.406 +conditions are imposed on you (whether by court order, agreement or
  13.407 +otherwise) that contradict the conditions of this License, they do not
  13.408 +excuse you from the conditions of this License.  If you cannot
  13.409 +distribute so as to satisfy simultaneously your obligations under this
  13.410 +License and any other pertinent obligations, then as a consequence you
  13.411 +may not distribute the Library at all.  For example, if a patent
  13.412 +license would not permit royalty-free redistribution of the Library by
  13.413 +all those who receive copies directly or indirectly through you, then
  13.414 +the only way you could satisfy both it and this License would be to
  13.415 +refrain entirely from distribution of the Library.
  13.416 +
  13.417 +If any portion of this section is held invalid or unenforceable under any
  13.418 +particular circumstance, the balance of the section is intended to apply,
  13.419 +and the section as a whole is intended to apply in other circumstances.
  13.420 +
  13.421 +It is not the purpose of this section to induce you to infringe any
  13.422 +patents or other property right claims or to contest validity of any
  13.423 +such claims; this section has the sole purpose of protecting the
  13.424 +integrity of the free software distribution system which is
  13.425 +implemented by public license practices.  Many people have made
  13.426 +generous contributions to the wide range of software distributed
  13.427 +through that system in reliance on consistent application of that
  13.428 +system; it is up to the author/donor to decide if he or she is willing
  13.429 +to distribute software through any other system and a licensee cannot
  13.430 +impose that choice.
  13.431 +
  13.432 +This section is intended to make thoroughly clear what is believed to
  13.433 +be a consequence of the rest of this License.
  13.434 +
  13.435 +  12. If the distribution and/or use of the Library is restricted in
  13.436 +certain countries either by patents or by copyrighted interfaces, the
  13.437 +original copyright holder who places the Library under this License may add
  13.438 +an explicit geographical distribution limitation excluding those countries,
  13.439 +so that distribution is permitted only in or among countries not thus
  13.440 +excluded.  In such case, this License incorporates the limitation as if
  13.441 +written in the body of this License.
  13.442 +
  13.443 +  13. The Free Software Foundation may publish revised and/or new
  13.444 +versions of the Lesser General Public License from time to time.
  13.445 +Such new versions will be similar in spirit to the present version,
  13.446 +but may differ in detail to address new problems or concerns.
  13.447 +
  13.448 +Each version is given a distinguishing version number.  If the Library
  13.449 +specifies a version number of this License which applies to it and
  13.450 +"any later version", you have the option of following the terms and
  13.451 +conditions either of that version or of any later version published by
  13.452 +the Free Software Foundation.  If the Library does not specify a
  13.453 +license version number, you may choose any version ever published by
  13.454 +the Free Software Foundation.
  13.455 +
  13.456 +  14. If you wish to incorporate parts of the Library into other free
  13.457 +programs whose distribution conditions are incompatible with these,
  13.458 +write to the author to ask for permission.  For software which is
  13.459 +copyrighted by the Free Software Foundation, write to the Free
  13.460 +Software Foundation; we sometimes make exceptions for this.  Our
  13.461 +decision will be guided by the two goals of preserving the free status
  13.462 +of all derivatives of our free software and of promoting the sharing
  13.463 +and reuse of software generally.
  13.464 +
  13.465 +    NO WARRANTY
  13.466 +
  13.467 +  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
  13.468 +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
  13.469 +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
  13.470 +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
  13.471 +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
  13.472 +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
  13.473 +PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
  13.474 +LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
  13.475 +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
  13.476 +
  13.477 +  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
  13.478 +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
  13.479 +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
  13.480 +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
  13.481 +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
  13.482 +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
  13.483 +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
  13.484 +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
  13.485 +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
  13.486 +DAMAGES.
  13.487 +
  13.488 +     END OF TERMS AND CONDITIONS
  13.489 +
  13.490 +
  13.491 +====================
  13.492 +2. The GPL version 2
  13.493 +====================
  13.494 +
  13.495 +
  13.496 +   GNU GENERAL PUBLIC LICENSE
  13.497 +       Version 2, June 1991
  13.498 +
  13.499 + Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
  13.500 + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  13.501 + Everyone is permitted to copy and distribute verbatim copies
  13.502 + of this license document, but changing it is not allowed.
  13.503 +
  13.504 +    Preamble
  13.505 +
  13.506 +  The licenses for most software are designed to take away your
  13.507 +freedom to share and change it.  By contrast, the GNU General Public
  13.508 +License is intended to guarantee your freedom to share and change free
  13.509 +software--to make sure the software is free for all its users.  This
  13.510 +General Public License applies to most of the Free Software
  13.511 +Foundation's software and to any other program whose authors commit to
  13.512 +using it.  (Some other Free Software Foundation software is covered by
  13.513 +the GNU Lesser General Public License instead.)  You can apply it to
  13.514 +your programs, too.
  13.515 +
  13.516 +  When we speak of free software, we are referring to freedom, not
  13.517 +price.  Our General Public Licenses are designed to make sure that you
  13.518 +have the freedom to distribute copies of free software (and charge for
  13.519 +this service if you wish), that you receive source code or can get it
  13.520 +if you want it, that you can change the software or use pieces of it
  13.521 +in new free programs; and that you know you can do these things.
  13.522 +
  13.523 +  To protect your rights, we need to make restrictions that forbid
  13.524 +anyone to deny you these rights or to ask you to surrender the rights.
  13.525 +These restrictions translate to certain responsibilities for you if you
  13.526 +distribute copies of the software, or if you modify it.
  13.527 +
  13.528 +  For example, if you distribute copies of such a program, whether
  13.529 +gratis or for a fee, you must give the recipients all the rights that
  13.530 +you have.  You must make sure that they, too, receive or can get the
  13.531 +source code.  And you must show them these terms so they know their
  13.532 +rights.
  13.533 +
  13.534 +  We protect your rights with two steps: (1) copyright the software, and
  13.535 +(2) offer you this license which gives you legal permission to copy,
  13.536 +distribute and/or modify the software.
  13.537 +
  13.538 +  Also, for each author's protection and ours, we want to make certain
  13.539 +that everyone understands that there is no warranty for this free
  13.540 +software.  If the software is modified by someone else and passed on, we
  13.541 +want its recipients to know that what they have is not the original, so
  13.542 +that any problems introduced by others will not reflect on the original
  13.543 +authors' reputations.
  13.544 +
  13.545 +  Finally, any free program is threatened constantly by software
  13.546 +patents.  We wish to avoid the danger that redistributors of a free
  13.547 +program will individually obtain patent licenses, in effect making the
  13.548 +program proprietary.  To prevent this, we have made it clear that any
  13.549 +patent must be licensed for everyone's free use or not licensed at all.
  13.550 +
  13.551 +  The precise terms and conditions for copying, distribution and
  13.552 +modification follow.
  13.553 +
  13.554 +    GNU GENERAL PUBLIC LICENSE
  13.555 +   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
  13.556 +
  13.557 +  0. This License applies to any program or other work which contains
  13.558 +a notice placed by the copyright holder saying it may be distributed
  13.559 +under the terms of this General Public License.  The "Program", below,
  13.560 +refers to any such program or work, and a "work based on the Program"
  13.561 +means either the Program or any derivative work under copyright law:
  13.562 +that is to say, a work containing the Program or a portion of it,
  13.563 +either verbatim or with modifications and/or translated into another
  13.564 +language.  (Hereinafter, translation is included without limitation in
  13.565 +the term "modification".)  Each licensee is addressed as "you".
  13.566 +
  13.567 +Activities other than copying, distribution and modification are not
  13.568 +covered by this License; they are outside its scope.  The act of
  13.569 +running the Program is not restricted, and the output from the Program
  13.570 +is covered only if its contents constitute a work based on the
  13.571 +Program (independent of having been made by running the Program).
  13.572 +Whether that is true depends on what the Program does.
  13.573 +
  13.574 +  1. You may copy and distribute verbatim copies of the Program's
  13.575 +source code as you receive it, in any medium, provided that you
  13.576 +conspicuously and appropriately publish on each copy an appropriate
  13.577 +copyright notice and disclaimer of warranty; keep intact all the
  13.578 +notices that refer to this License and to the absence of any warranty;
  13.579 +and give any other recipients of the Program a copy of this License
  13.580 +along with the Program.
  13.581 +
  13.582 +You may charge a fee for the physical act of transferring a copy, and
  13.583 +you may at your option offer warranty protection in exchange for a fee.
  13.584 +
  13.585 +  2. You may modify your copy or copies of the Program or any portion
  13.586 +of it, thus forming a work based on the Program, and copy and
  13.587 +distribute such modifications or work under the terms of Section 1
  13.588 +above, provided that you also meet all of these conditions:
  13.589 +
  13.590 +    a) You must cause the modified files to carry prominent notices
  13.591 +    stating that you changed the files and the date of any change.
  13.592 +
  13.593 +    b) You must cause any work that you distribute or publish, that in
  13.594 +    whole or in part contains or is derived from the Program or any
  13.595 +    part thereof, to be licensed as a whole at no charge to all third
  13.596 +    parties under the terms of this License.
  13.597 +
  13.598 +    c) If the modified program normally reads commands interactively
  13.599 +    when run, you must cause it, when started running for such
  13.600 +    interactive use in the most ordinary way, to print or display an
  13.601 +    announcement including an appropriate copyright notice and a
  13.602 +    notice that there is no warranty (or else, saying that you provide
  13.603 +    a warranty) and that users may redistribute the program under
  13.604 +    these conditions, and telling the user how to view a copy of this
  13.605 +    License.  (Exception: if the Program itself is interactive but
  13.606 +    does not normally print such an announcement, your work based on
  13.607 +    the Program is not required to print an announcement.)
  13.608 +
  13.609 +These requirements apply to the modified work as a whole.  If
  13.610 +identifiable sections of that work are not derived from the Program,
  13.611 +and can be reasonably considered independent and separate works in
  13.612 +themselves, then this License, and its terms, do not apply to those
  13.613 +sections when you distribute them as separate works.  But when you
  13.614 +distribute the same sections as part of a whole which is a work based
  13.615 +on the Program, the distribution of the whole must be on the terms of
  13.616 +this License, whose permissions for other licensees extend to the
  13.617 +entire whole, and thus to each and every part regardless of who wrote it.
  13.618 +
  13.619 +Thus, it is not the intent of this section to claim rights or contest
  13.620 +your rights to work written entirely by you; rather, the intent is to
  13.621 +exercise the right to control the distribution of derivative or
  13.622 +collective works based on the Program.
  13.623 +
  13.624 +In addition, mere aggregation of another work not based on the Program
  13.625 +with the Program (or with a work based on the Program) on a volume of
  13.626 +a storage or distribution medium does not bring the other work under
  13.627 +the scope of this License.
  13.628 +
  13.629 +  3. You may copy and distribute the Program (or a work based on it,
  13.630 +under Section 2) in object code or executable form under the terms of
  13.631 +Sections 1 and 2 above provided that you also do one of the following:
  13.632 +
  13.633 +    a) Accompany it with the complete corresponding machine-readable
  13.634 +    source code, which must be distributed under the terms of Sections
  13.635 +    1 and 2 above on a medium customarily used for software interchange; or,
  13.636 +
  13.637 +    b) Accompany it with a written offer, valid for at least three
  13.638 +    years, to give any third party, for a charge no more than your
  13.639 +    cost of physically performing source distribution, a complete
  13.640 +    machine-readable copy of the corresponding source code, to be
  13.641 +    distributed under the terms of Sections 1 and 2 above on a medium
  13.642 +    customarily used for software interchange; or,
  13.643 +
  13.644 +    c) Accompany it with the information you received as to the offer
  13.645 +    to distribute corresponding source code.  (This alternative is
  13.646 +    allowed only for noncommercial distribution and only if you
  13.647 +    received the program in object code or executable form with such
  13.648 +    an offer, in accord with Subsection b above.)
  13.649 +
  13.650 +The source code for a work means the preferred form of the work for
  13.651 +making modifications to it.  For an executable work, complete source
  13.652 +code means all the source code for all modules it contains, plus any
  13.653 +associated interface definition files, plus the scripts used to
  13.654 +control compilation and installation of the executable.  However, as a
  13.655 +special exception, the source code distributed need not include
  13.656 +anything that is normally distributed (in either source or binary
  13.657 +form) with the major components (compiler, kernel, and so on) of the
  13.658 +operating system on which the executable runs, unless that component
  13.659 +itself accompanies the executable.
  13.660 +
  13.661 +If distribution of executable or object code is made by offering
  13.662 +access to copy from a designated place, then offering equivalent
  13.663 +access to copy the source code from the same place counts as
  13.664 +distribution of the source code, even though third parties are not
  13.665 +compelled to copy the source along with the object code.
  13.666 +
  13.667 +  4. You may not copy, modify, sublicense, or distribute the Program
  13.668 +except as expressly provided under this License.  Any attempt
  13.669 +otherwise to copy, modify, sublicense or distribute the Program is
  13.670 +void, and will automatically terminate your rights under this License.
  13.671 +However, parties who have received copies, or rights, from you under
  13.672 +this License will not have their licenses terminated so long as such
  13.673 +parties remain in full compliance.
  13.674 +
  13.675 +  5. You are not required to accept this License, since you have not
  13.676 +signed it.  However, nothing else grants you permission to modify or
  13.677 +distribute the Program or its derivative works.  These actions are
  13.678 +prohibited by law if you do not accept this License.  Therefore, by
  13.679 +modifying or distributing the Program (or any work based on the
  13.680 +Program), you indicate your acceptance of this License to do so, and
  13.681 +all its terms and conditions for copying, distributing or modifying
  13.682 +the Program or works based on it.
  13.683 +
  13.684 +  6. Each time you redistribute the Program (or any work based on the
  13.685 +Program), the recipient automatically receives a license from the
  13.686 +original licensor to copy, distribute or modify the Program subject to
  13.687 +these terms and conditions.  You may not impose any further
  13.688 +restrictions on the recipients' exercise of the rights granted herein.
  13.689 +You are not responsible for enforcing compliance by third parties to
  13.690 +this License.
  13.691 +
  13.692 +  7. If, as a consequence of a court judgment or allegation of patent
  13.693 +infringement or for any other reason (not limited to patent issues),
  13.694 +conditions are imposed on you (whether by court order, agreement or
  13.695 +otherwise) that contradict the conditions of this License, they do not
  13.696 +excuse you from the conditions of this License.  If you cannot
  13.697 +distribute so as to satisfy simultaneously your obligations under this
  13.698 +License and any other pertinent obligations, then as a consequence you
  13.699 +may not distribute the Program at all.  For example, if a patent
  13.700 +license would not permit royalty-free redistribution of the Program by
  13.701 +all those who receive copies directly or indirectly through you, then
  13.702 +the only way you could satisfy both it and this License would be to
  13.703 +refrain entirely from distribution of the Program.
  13.704 +
  13.705 +If any portion of this section is held invalid or unenforceable under
  13.706 +any particular circumstance, the balance of the section is intended to
  13.707 +apply and the section as a whole is intended to apply in other
  13.708 +circumstances.
  13.709 +
  13.710 +It is not the purpose of this section to induce you to infringe any
  13.711 +patents or other property right claims or to contest validity of any
  13.712 +such claims; this section has the sole purpose of protecting the
  13.713 +integrity of the free software distribution system, which is
  13.714 +implemented by public license practices.  Many people have made
  13.715 +generous contributions to the wide range of software distributed
  13.716 +through that system in reliance on consistent application of that
  13.717 +system; it is up to the author/donor to decide if he or she is willing
  13.718 +to distribute software through any other system and a licensee cannot
  13.719 +impose that choice.
  13.720 +
  13.721 +This section is intended to make thoroughly clear what is believed to
  13.722 +be a consequence of the rest of this License.
  13.723 +
  13.724 +  8. If the distribution and/or use of the Program is restricted in
  13.725 +certain countries either by patents or by copyrighted interfaces, the
  13.726 +original copyright holder who places the Program under this License
  13.727 +may add an explicit geographical distribution limitation excluding
  13.728 +those countries, so that distribution is permitted only in or among
  13.729 +countries not thus excluded.  In such case, this License incorporates
  13.730 +the limitation as if written in the body of this License.
  13.731 +
  13.732 +  9. The Free Software Foundation may publish revised and/or new versions
  13.733 +of the General Public License from time to time.  Such new versions will
  13.734 +be similar in spirit to the present version, but may differ in detail to
  13.735 +address new problems or concerns.
  13.736 +
  13.737 +Each version is given a distinguishing version number.  If the Program
  13.738 +specifies a version number of this License which applies to it and "any
  13.739 +later version", you have the option of following the terms and conditions
  13.740 +either of that version or of any later version published by the Free
  13.741 +Software Foundation.  If the Program does not specify a version number of
  13.742 +this License, you may choose any version ever published by the Free Software
  13.743 +Foundation.
  13.744 +
  13.745 +  10. If you wish to incorporate parts of the Program into other free
  13.746 +programs whose distribution conditions are different, write to the author
  13.747 +to ask for permission.  For software which is copyrighted by the Free
  13.748 +Software Foundation, write to the Free Software Foundation; we sometimes
  13.749 +make exceptions for this.  Our decision will be guided by the two goals
  13.750 +of preserving the free status of all derivatives of our free software and
  13.751 +of promoting the sharing and reuse of software generally.
  13.752 +
  13.753 +    NO WARRANTY
  13.754 +
  13.755 +  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
  13.756 +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
  13.757 +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
  13.758 +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
  13.759 +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
  13.760 +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
  13.761 +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
  13.762 +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
  13.763 +REPAIR OR CORRECTION.
  13.764 +
  13.765 +  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
  13.766 +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
  13.767 +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
  13.768 +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
  13.769 +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
  13.770 +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
  13.771 +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
  13.772 +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
  13.773 +POSSIBILITY OF SUCH DAMAGES.
  13.774 +
  13.775 +     END OF TERMS AND CONDITIONS
    14.1 --- a/VisualC/external/lib/x86/LICENSE.smpeg.txt	Sun Oct 07 17:56:56 2018 +0300
    14.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    14.3 @@ -1,485 +0,0 @@
    14.4 -The source code to this library used with SDL_mixer can be found here:
    14.5 -http://www.libsdl.org/projects/SDL_mixer/libs/
    14.6 ----
    14.7 -
    14.8 -		  GNU LIBRARY GENERAL PUBLIC LICENSE
    14.9 -		       Version 2, June 1991
   14.10 -
   14.11 - Copyright (C) 1991 Free Software Foundation, Inc.
   14.12 -                    675 Mass Ave, Cambridge, MA 02139, USA
   14.13 - Everyone is permitted to copy and distribute verbatim copies
   14.14 - of this license document, but changing it is not allowed.
   14.15 -
   14.16 -[This is the first released version of the library GPL.  It is
   14.17 - numbered 2 because it goes with version 2 of the ordinary GPL.]
   14.18 -
   14.19 -			    Preamble
   14.20 -
   14.21 -  The licenses for most software are designed to take away your
   14.22 -freedom to share and change it.  By contrast, the GNU General Public
   14.23 -Licenses are intended to guarantee your freedom to share and change
   14.24 -free software--to make sure the software is free for all its users.
   14.25 -
   14.26 -  This license, the Library General Public License, applies to some
   14.27 -specially designated Free Software Foundation software, and to any
   14.28 -other libraries whose authors decide to use it.  You can use it for
   14.29 -your libraries, too.
   14.30 -
   14.31 -  When we speak of free software, we are referring to freedom, not
   14.32 -price.  Our General Public Licenses are designed to make sure that you
   14.33 -have the freedom to distribute copies of free software (and charge for
   14.34 -this service if you wish), that you receive source code or can get it
   14.35 -if you want it, that you can change the software or use pieces of it
   14.36 -in new free programs; and that you know you can do these things.
   14.37 -
   14.38 -  To protect your rights, we need to make restrictions that forbid
   14.39 -anyone to deny you these rights or to ask you to surrender the rights.
   14.40 -These restrictions translate to certain responsibilities for you if
   14.41 -you distribute copies of the library, or if you modify it.
   14.42 -
   14.43 -  For example, if you distribute copies of the library, whether gratis
   14.44 -or for a fee, you must give the recipients all the rights that we gave
   14.45 -you.  You must make sure that they, too, receive or can get the source
   14.46 -code.  If you link a program with the library, you must provide
   14.47 -complete object files to the recipients so that they can relink them
   14.48 -with the library, after making changes to the library and recompiling
   14.49 -it.  And you must show them these terms so they know their rights.
   14.50 -
   14.51 -  Our method of protecting your rights has two steps: (1) copyright
   14.52 -the library, and (2) offer you this license which gives you legal
   14.53 -permission to copy, distribute and/or modify the library.
   14.54 -
   14.55 -  Also, for each distributor's protection, we want to make certain
   14.56 -that everyone understands that there is no warranty for this free
   14.57 -library.  If the library is modified by someone else and passed on, we
   14.58 -want its recipients to know that what they have is not the original
   14.59 -version, so that any problems introduced by others will not reflect on
   14.60 -the original authors' reputations.
   14.61 -
   14.62 -  Finally, any free program is threatened constantly by software
   14.63 -patents.  We wish to avoid the danger that companies distributing free
   14.64 -software will individually obtain patent licenses, thus in effect
   14.65 -transforming the program into proprietary software.  To prevent this,
   14.66 -we have made it clear that any patent must be licensed for everyone's
   14.67 -free use or not licensed at all.
   14.68 -
   14.69 -  Most GNU software, including some libraries, is covered by the ordinary
   14.70 -GNU General Public License, which was designed for utility programs.  This
   14.71 -license, the GNU Library General Public License, applies to certain
   14.72 -designated libraries.  This license is quite different from the ordinary
   14.73 -one; be sure to read it in full, and don't assume that anything in it is
   14.74 -the same as in the ordinary license.
   14.75 -
   14.76 -  The reason we have a separate public license for some libraries is that
   14.77 -they blur the distinction we usually make between modifying or adding to a
   14.78 -program and simply using it.  Linking a program with a library, without
   14.79 -changing the library, is in some sense simply using the library, and is
   14.80 -analogous to running a utility program or application program.  However, in
   14.81 -a textual and legal sense, the linked executable is a combined work, a
   14.82 -derivative of the original library, and the ordinary General Public License
   14.83 -treats it as such.
   14.84 -
   14.85 -  Because of this blurred distinction, using the ordinary General
   14.86 -Public License for libraries did not effectively promote software
   14.87 -sharing, because most developers did not use the libraries.  We
   14.88 -concluded that weaker conditions might promote sharing better.
   14.89 -
   14.90 -  However, unrestricted linking of non-free programs would deprive the
   14.91 -users of those programs of all benefit from the free status of the
   14.92 -libraries themselves.  This Library General Public License is intended to
   14.93 -permit developers of non-free programs to use free libraries, while
   14.94 -preserving your freedom as a user of such programs to change the free
   14.95 -libraries that are incorporated in them.  (We have not seen how to achieve
   14.96 -this as regards changes in header files, but we have achieved it as regards
   14.97 -changes in the actual functions of the Library.)  The hope is that this
   14.98 -will lead to faster development of free libraries.
   14.99 -
  14.100 -  The precise terms and conditions for copying, distribution and
  14.101 -modification follow.  Pay close attention to the difference between a
  14.102 -"work based on the library" and a "work that uses the library".  The
  14.103 -former contains code derived from the library, while the latter only
  14.104 -works together with the library.
  14.105 -
  14.106 -  Note that it is possible for a library to be covered by the ordinary
  14.107 -General Public License rather than by this special one.
  14.108 -
  14.109 -		  GNU LIBRARY GENERAL PUBLIC LICENSE
  14.110 -   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
  14.111 -
  14.112 -  0. This License Agreement applies to any software library which
  14.113 -contains a notice placed by the copyright holder or other authorized
  14.114 -party saying it may be distributed under the terms of this Library
  14.115 -General Public License (also called "this License").  Each licensee is
  14.116 -addressed as "you".
  14.117 -
  14.118 -  A "library" means a collection of software functions and/or data
  14.119 -prepared so as to be conveniently linked with application programs
  14.120 -(which use some of those functions and data) to form executables.
  14.121 -
  14.122 -  The "Library", below, refers to any such software library or work
  14.123 -which has been distributed under these terms.  A "work based on the
  14.124 -Library" means either the Library or any derivative work under
  14.125 -copyright law: that is to say, a work containing the Library or a
  14.126 -portion of it, either verbatim or with modifications and/or translated
  14.127 -straightforwardly into another language.  (Hereinafter, translation is
  14.128 -included without limitation in the term "modification".)
  14.129 -
  14.130 -  "Source code" for a work means the preferred form of the work for
  14.131 -making modifications to it.  For a library, complete source code means
  14.132 -all the source code for all modules it contains, plus any associated
  14.133 -interface definition files, plus the scripts used to control compilation
  14.134 -and installation of the library.
  14.135 -
  14.136 -  Activities other than copying, distribution and modification are not
  14.137 -covered by this License; they are outside its scope.  The act of
  14.138 -running a program using the Library is not restricted, and output from
  14.139 -such a program is covered only if its contents constitute a work based
  14.140 -on the Library (independent of the use of the Library in a tool for
  14.141 -writing it).  Whether that is true depends on what the Library does
  14.142 -and what the program that uses the Library does.
  14.143 -  
  14.144 -  1. You may copy and distribute verbatim copies of the Library's
  14.145 -complete source code as you receive it, in any medium, provided that
  14.146 -you conspicuously and appropriately publish on each copy an
  14.147 -appropriate copyright notice and disclaimer of warranty; keep intact
  14.148 -all the notices that refer to this License and to the absence of any
  14.149 -warranty; and distribute a copy of this License along with the
  14.150 -Library.
  14.151 -
  14.152 -  You may charge a fee for the physical act of transferring a copy,
  14.153 -and you may at your option offer warranty protection in exchange for a
  14.154 -fee.
  14.155 -
  14.156 -  2. You may modify your copy or copies of the Library or any portion
  14.157 -of it, thus forming a work based on the Library, and copy and
  14.158 -distribute such modifications or work under the terms of Section 1
  14.159 -above, provided that you also meet all of these conditions:
  14.160 -
  14.161 -    a) The modified work must itself be a software library.
  14.162 -
  14.163 -    b) You must cause the files modified to carry prominent notices
  14.164 -    stating that you changed the files and the date of any change.
  14.165 -
  14.166 -    c) You must cause the whole of the work to be licensed at no
  14.167 -    charge to all third parties under the terms of this License.
  14.168 -
  14.169 -    d) If a facility in the modified Library refers to a function or a
  14.170 -    table of data to be supplied by an application program that uses
  14.171 -    the facility, other than as an argument passed when the facility
  14.172 -    is invoked, then you must make a good faith effort to ensure that,
  14.173 -    in the event an application does not supply such function or
  14.174 -    table, the facility still operates, and performs whatever part of
  14.175 -    its purpose remains meaningful.
  14.176 -
  14.177 -    (For example, a function in a library to compute square roots has
  14.178 -    a purpose that is entirely well-defined independent of the
  14.179 -    application.  Therefore, Subsection 2d requires that any
  14.180 -    application-supplied function or table used by this function must
  14.181 -    be optional: if the application does not supply it, the square
  14.182 -    root function must still compute square roots.)
  14.183 -
  14.184 -These requirements apply to the modified work as a whole.  If
  14.185 -identifiable sections of that work are not derived from the Library,
  14.186 -and can be reasonably considered independent and separate works in
  14.187 -themselves, then this License, and its terms, do not apply to those
  14.188 -sections when you distribute them as separate works.  But when you
  14.189 -distribute the same sections as part of a whole which is a work based
  14.190 -on the Library, the distribution of the whole must be on the terms of
  14.191 -this License, whose permissions for other licensees extend to the
  14.192 -entire whole, and thus to each and every part regardless of who wrote
  14.193 -it.
  14.194 -
  14.195 -Thus, it is not the intent of this section to claim rights or contest
  14.196 -your rights to work written entirely by you; rather, the intent is to
  14.197 -exercise the right to control the distribution of derivative or
  14.198 -collective works based on the Library.
  14.199 -
  14.200 -In addition, mere aggregation of another work not based on the Library
  14.201 -with the Library (or with a work based on the Library) on a volume of
  14.202 -a storage or distribution medium does not bring the other work under
  14.203 -the scope of this License.
  14.204 -
  14.205 -  3. You may opt to apply the terms of the ordinary GNU General Public
  14.206 -License instead of this License to a given copy of the Library.  To do
  14.207 -this, you must alter all the notices that refer to this License, so
  14.208 -that they refer to the ordinary GNU General Public License, version 2,
  14.209 -instead of to this License.  (If a newer version than version 2 of the
  14.210 -ordinary GNU General Public License has appeared, then you can specify
  14.211 -that version instead if you wish.)  Do not make any other change in
  14.212 -these notices.
  14.213 -
  14.214 -  Once this change is made in a given copy, it is irreversible for
  14.215 -that copy, so the ordinary GNU General Public License applies to all
  14.216 -subsequent copies and derivative works made from that copy.
  14.217 -
  14.218 -  This option is useful when you wish to copy part of the code of
  14.219 -the Library into a program that is not a library.
  14.220 -
  14.221 -  4. You may copy and distribute the Library (or a portion or
  14.222 -derivative of it, under Section 2) in object code or executable form
  14.223 -under the terms of Sections 1 and 2 above provided that you accompany
  14.224 -it with the complete corresponding machine-readable source code, which
  14.225 -must be distributed under the terms of Sections 1 and 2 above on a
  14.226 -medium customarily used for software interchange.
  14.227 -
  14.228 -  If distribution of object code is made by offering access to copy
  14.229 -from a designated place, then offering equivalent access to copy the
  14.230 -source code from the same place satisfies the requirement to
  14.231 -distribute the source code, even though third parties are not
  14.232 -compelled to copy the source along with the object code.
  14.233 -
  14.234 -  5. A program that contains no derivative of any portion of the
  14.235 -Library, but is designed to work with the Library by being compiled or
  14.236 -linked with it, is called a "work that uses the Library".  Such a
  14.237 -work, in isolation, is not a derivative work of the Library, and
  14.238 -therefore falls outside the scope of this License.
  14.239 -
  14.240 -  However, linking a "work that uses the Library" with the Library
  14.241 -creates an executable that is a derivative of the Library (because it
  14.242 -contains portions of the Library), rather than a "work that uses the
  14.243 -library".  The executable is therefore covered by this License.
  14.244 -Section 6 states terms for distribution of such executables.
  14.245 -
  14.246 -  When a "work that uses the Library" uses material from a header file
  14.247 -that is part of the Library, the object code for the work may be a
  14.248 -derivative work of the Library even though the source code is not.
  14.249 -Whether this is true is especially significant if the work can be
  14.250 -linked without the Library, or if the work is itself a library.  The
  14.251 -threshold for this to be true is not precisely defined by law.
  14.252 -
  14.253 -  If such an object file uses only numerical parameters, data
  14.254 -structure layouts and accessors, and small macros and small inline
  14.255 -functions (ten lines or less in length), then the use of the object
  14.256 -file is unrestricted, regardless of whether it is legally a derivative
  14.257 -work.  (Executables containing this object code plus portions of the
  14.258 -Library will still fall under Section 6.)
  14.259 -
  14.260 -  Otherwise, if the work is a derivative of the Library, you may
  14.261 -distribute the object code for the work under the terms of Section 6.
  14.262 -Any executables containing that work also fall under Section 6,
  14.263 -whether or not they are linked directly with the Library itself.
  14.264 -
  14.265 -  6. As an exception to the Sections above, you may also compile or
  14.266 -link a "work that uses the Library" with the Library to produce a
  14.267 -work containing portions of the Library, and distribute that work
  14.268 -under terms of your choice, provided that the terms permit
  14.269 -modification of the work for the customer's own use and reverse
  14.270 -engineering for debugging such modifications.
  14.271 -
  14.272 -  You must give prominent notice with each copy of the work that the
  14.273 -Library is used in it and that the Library and its use are covered by
  14.274 -this License.  You must supply a copy of this License.  If the work
  14.275 -during execution displays copyright notices, you must include the
  14.276 -copyright notice for the Library among them, as well as a reference
  14.277 -directing the user to the copy of this License.  Also, you must do one
  14.278 -of these things:
  14.279 -
  14.280 -    a) Accompany the work with the complete corresponding
  14.281 -    machine-readable source code for the Library including whatever
  14.282 -    changes were used in the work (which must be distributed under
  14.283 -    Sections 1 and 2 above); and, if the work is an executable linked
  14.284 -    with the Library, with the complete machine-readable "work that
  14.285 -    uses the Library", as object code and/or source code, so that the
  14.286 -    user can modify the Library and then relink to produce a modified
  14.287 -    executable containing the modified Library.  (It is understood
  14.288 -    that the user who changes the contents of definitions files in the
  14.289 -    Library will not necessarily be able to recompile the application
  14.290 -    to use the modified definitions.)
  14.291 -
  14.292 -    b) Accompany the work with a written offer, valid for at
  14.293 -    least three years, to give the same user the materials
  14.294 -    specified in Subsection 6a, above, for a charge no more
  14.295 -    than the cost of performing this distribution.
  14.296 -
  14.297 -    c) If distribution of the work is made by offering access to copy
  14.298 -    from a designated place, offer equivalent access to copy the above
  14.299 -    specified materials from the same place.
  14.300 -
  14.301 -    d) Verify that the user has already received a copy of these
  14.302 -    materials or that you have already sent this user a copy.
  14.303 -
  14.304 -  For an executable, the required form of the "work that uses the
  14.305 -Library" must include any data and utility programs needed for
  14.306 -reproducing the executable from it.  However, as a special exception,
  14.307 -the source code distributed need not include anything that is normally
  14.308 -distributed (in either source or binary form) with the major
  14.309 -components (compiler, kernel, and so on) of the operating system on
  14.310 -which the executable runs, unless that component itself accompanies
  14.311 -the executable.
  14.312 -
  14.313 -  It may happen that this requirement contradicts the license
  14.314 -restrictions of other proprietary libraries that do not normally
  14.315 -accompany the operating system.  Such a contradiction means you cannot
  14.316 -use both them and the Library together in an executable that you
  14.317 -distribute.
  14.318 -
  14.319 -  7. You may place library facilities that are a work based on the
  14.320 -Library side-by-side in a single library together with other library
  14.321 -facilities not covered by this License, and distribute such a combined
  14.322 -library, provided that the separate distribution of the work based on
  14.323 -the Library and of the other library facilities is otherwise
  14.324 -permitted, and provided that you do these two things:
  14.325 -
  14.326 -    a) Accompany the combined library with a copy of the same work
  14.327 -    based on the Library, uncombined with any other library
  14.328 -    facilities.  This must be distributed under the terms of the
  14.329 -    Sections above.
  14.330 -
  14.331 -    b) Give prominent notice with the combined library of the fact
  14.332 -    that part of it is a work based on the Library, and explaining
  14.333 -    where to find the accompanying uncombined form of the same work.
  14.334 -
  14.335 -  8. You may not copy, modify, sublicense, link with, or distribute
  14.336 -the Library except as expressly provided under this License.  Any
  14.337 -attempt otherwise to copy, modify, sublicense, link with, or
  14.338 -distribute the Library is void, and will automatically terminate your
  14.339 -rights under this License.  However, parties who have received copies,
  14.340 -or rights, from you under this License will not have their licenses
  14.341 -terminated so long as such parties remain in full compliance.
  14.342 -
  14.343 -  9. You are not required to accept this License, since you have not
  14.344 -signed it.  However, nothing else grants you permission to modify or
  14.345 -distribute the Library or its derivative works.  These actions are
  14.346 -prohibited by law if you do not accept this License.  Therefore, by
  14.347 -modifying or distributing the Library (or any work based on the
  14.348 -Library), you indicate your acceptance of this License to do so, and
  14.349 -all its terms and conditions for copying, distributing or modifying
  14.350 -the Library or works based on it.
  14.351 -
  14.352 -  10. Each time you redistribute the Library (or any work based on the
  14.353 -Library), the recipient automatically receives a license from the
  14.354 -original licensor to copy, distribute, link with or modify the Library
  14.355 -subject to these terms and conditions.  You may not impose any further
  14.356 -restrictions on the recipients' exercise of the rights granted herein.
  14.357 -You are not responsible for enforcing compliance by third parties to
  14.358 -this License.
  14.359 -
  14.360 -  11. If, as a consequence of a court judgment or allegation of patent
  14.361 -infringement or for any other reason (not limited to patent issues),
  14.362 -conditions are imposed on you (whether by court order, agreement or
  14.363 -otherwise) that contradict the conditions of this License, they do not
  14.364 -excuse you from the conditions of this License.  If you cannot
  14.365 -distribute so as to satisfy simultaneously your obligations under this
  14.366 -License and any other pertinent obligations, then as a consequence you
  14.367 -may not distribute the Library at all.  For example, if a patent
  14.368 -license would not permit royalty-free redistribution of the Library by
  14.369 -all those who receive copies directly or indirectly through you, then
  14.370 -the only way you could satisfy both it and this License would be to
  14.371 -refrain entirely from distribution of the Library.
  14.372 -
  14.373 -If any portion of this section is held invalid or unenforceable under any
  14.374 -particular circumstance, the balance of the section is intended to apply,
  14.375 -and the section as a whole is intended to apply in other circumstances.
  14.376 -
  14.377 -It is not the purpose of this section to induce you to infringe any
  14.378 -patents or other property right claims or to contest validity of any
  14.379 -such claims; this section has the sole purpose of protecting the
  14.380 -integrity of the free software distribution system which is
  14.381 -implemented by public license practices.  Many people have made
  14.382 -generous contributions to the wide range of software distributed
  14.383 -through that system in reliance on consistent application of that
  14.384 -system; it is up to the author/donor to decide if he or she is willing
  14.385 -to distribute software through any other system and a licensee cannot
  14.386 -impose that choice.
  14.387 -
  14.388 -This section is intended to make thoroughly clear what is believed to
  14.389 -be a consequence of the rest of this License.
  14.390 -
  14.391 -  12. If the distribution and/or use of the Library is restricted in
  14.392 -certain countries either by patents or by copyrighted interfaces, the
  14.393 -original copyright holder who places the Library under this License may add
  14.394 -an explicit geographical distribution limitation excluding those countries,
  14.395 -so that distribution is permitted only in or among countries not thus
  14.396 -excluded.  In such case, this License incorporates the limitation as if
  14.397 -written in the body of this License.
  14.398 -
  14.399 -  13. The Free Software Foundation may publish revised and/or new
  14.400 -versions of the Library General Public License from time to time.
  14.401 -Such new versions will be similar in spirit to the present version,
  14.402 -but may differ in detail to address new problems or concerns.
  14.403 -
  14.404 -Each version is given a distinguishing version number.  If the Library
  14.405 -specifies a version number of this License which applies to it and
  14.406 -"any later version", you have the option of following the terms and
  14.407 -conditions either of that version or of any later version published by
  14.408 -the Free Software Foundation.  If the Library does not specify a
  14.409 -license version number, you may choose any version ever published by
  14.410 -the Free Software Foundation.
  14.411 -
  14.412 -  14. If you wish to incorporate parts of the Library into other free
  14.413 -programs whose distribution conditions are incompatible with these,
  14.414 -write to the author to ask for permission.  For software which is
  14.415 -copyrighted by the Free Software Foundation, write to the Free
  14.416 -Software Foundation; we sometimes make exceptions for this.  Our
  14.417 -decision will be guided by the two goals of preserving the free status
  14.418 -of all derivatives of our free software and of promoting the sharing
  14.419 -and reuse of software generally.
  14.420 -
  14.421 -			    NO WARRANTY
  14.422 -
  14.423 -  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
  14.424 -WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
  14.425 -EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
  14.426 -OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
  14.427 -KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
  14.428 -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
  14.429 -PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
  14.430 -LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
  14.431 -THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
  14.432 -
  14.433 -  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
  14.434 -WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
  14.435 -AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
  14.436 -FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
  14.437 -CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
  14.438 -LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
  14.439 -RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
  14.440 -FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
  14.441 -SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
  14.442 -DAMAGES.
  14.443 -
  14.444 -		     END OF TERMS AND CONDITIONS
  14.445 -
  14.446 -     Appendix: How to Apply These Terms to Your New Libraries
  14.447 -
  14.448 -  If you develop a new library, and you want it to be of the greatest
  14.449 -possible use to the public, we recommend making it free software that
  14.450 -everyone can redistribute and change.  You can do so by permitting
  14.451 -redistribution under these terms (or, alternatively, under the terms of the
  14.452 -ordinary General Public License).
  14.453 -
  14.454 -  To apply these terms, attach the following notices to the library.  It is
  14.455 -safest to attach them to the start of each source file to most effectively
  14.456 -convey the exclusion of warranty; and each file should have at least the
  14.457 -"copyright" line and a pointer to where the full notice is found.
  14.458 -
  14.459 -    <one line to give the library's name and a brief idea of what it does.>
  14.460 -    Copyright (C) <year>  <name of author>
  14.461 -
  14.462 -    This library is free software; you can redistribute it and/or
  14.463 -    modify it under the terms of the GNU Library General Public
  14.464 -    License as published by the Free Software Foundation; either
  14.465 -    version 2 of the License, or (at your option) any later version.
  14.466 -
  14.467 -    This library is distributed in the hope that it will be useful,
  14.468 -    but WITHOUT ANY WARRANTY; without even the implied warranty of
  14.469 -    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  14.470 -    Library General Public License for more details.
  14.471 -
  14.472 -    You should have received a copy of the GNU Library General Public
  14.473 -    License along with this library; if not, write to the Free
  14.474 -    Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  14.475 -
  14.476 -Also add information on how to contact you by electronic and paper mail.
  14.477 -
  14.478 -You should also get your employer (if you work as a programmer) or your
  14.479 -school, if any, to sign a "copyright disclaimer" for the library, if
  14.480 -necessary.  Here is a sample; alter the names:
  14.481 -
  14.482 -  Yoyodyne, Inc., hereby disclaims all copyright interest in the
  14.483 -  library `Frob' (a library for tweaking knobs) written by James Random Hacker.
  14.484 -
  14.485 -  <signature of Ty Coon>, 1 April 1990
  14.486 -  Ty Coon, President of Vice
  14.487 -
  14.488 -That's all there is to it!
    15.1 Binary file VisualC/external/lib/x86/libmpg123-0.dll has changed
    16.1 Binary file VisualC/external/lib/x86/smpeg.dll has changed
    17.1 --- a/VisualC/native_midi/native_midi.vcproj	Sun Oct 07 17:56:56 2018 +0300
    17.2 +++ b/VisualC/native_midi/native_midi.vcproj	Thu Oct 11 11:50:10 2018 +0300
    17.3 @@ -1,10 +1,9 @@
    17.4  <?xml version="1.0" encoding="Windows-1252"?>
    17.5  <VisualStudioProject
    17.6  	ProjectType="Visual C++"
    17.7 -	Version="9.00"
    17.8 +	Version="8.00"
    17.9  	Name="native_midi"
   17.10  	ProjectGUID="{EBDA67CA-4A23-4F22-BFBC-B8DBE0580D4F}"
   17.11 -	TargetFrameworkVersion="131072"
   17.12  	>
   17.13  	<Platforms>
   17.14  		<Platform
   17.15 @@ -45,7 +44,7 @@
   17.16  				Name="VCCLCompilerTool"
   17.17  				Optimization="2"
   17.18  				InlineFunctionExpansion="1"
   17.19 -				AdditionalIncludeDirectories="..\..,..\..\native_midi"
   17.20 +				AdditionalIncludeDirectories="..\..;..\..\native_midi"
   17.21  				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS"
   17.22  				StringPooling="true"
   17.23  				RuntimeLibrary="2"
   17.24 @@ -111,7 +110,7 @@
   17.25  			<Tool
   17.26  				Name="VCCLCompilerTool"
   17.27  				Optimization="0"
   17.28 -				AdditionalIncludeDirectories="..\..,..\..\native_midi"
   17.29 +				AdditionalIncludeDirectories="..\..;..\..\native_midi"
   17.30  				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS"
   17.31  				RuntimeLibrary="2"
   17.32  				PrecompiledHeaderFile=".\Debug/native_midi.pch"
   17.33 @@ -179,7 +178,7 @@
   17.34  				Name="VCCLCompilerTool"
   17.35  				Optimization="2"
   17.36  				InlineFunctionExpansion="1"
   17.37 -				AdditionalIncludeDirectories="..\..,..\..\native_midi"
   17.38 +				AdditionalIncludeDirectories="..\..;..\..\native_midi"
   17.39  				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS"
   17.40  				StringPooling="true"
   17.41  				RuntimeLibrary="2"
   17.42 @@ -246,7 +245,7 @@
   17.43  			<Tool
   17.44  				Name="VCCLCompilerTool"
   17.45  				Optimization="0"
   17.46 -				AdditionalIncludeDirectories="..\..,..\..\native_midi"
   17.47 +				AdditionalIncludeDirectories="..\..;..\..\native_midi"
   17.48  				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS"
   17.49  				RuntimeLibrary="2"
   17.50  				PrecompiledHeaderFile=".\Debug/native_midi.pch"
    18.1 --- a/VisualC/playmus/playmus.vcproj	Sun Oct 07 17:56:56 2018 +0300
    18.2 +++ b/VisualC/playmus/playmus.vcproj	Thu Oct 11 11:50:10 2018 +0300
    18.3 @@ -1,10 +1,9 @@
    18.4  <?xml version="1.0" encoding="Windows-1252"?>
    18.5  <VisualStudioProject
    18.6  	ProjectType="Visual C++"
    18.7 -	Version="9.00"
    18.8 +	Version="8.00"
    18.9  	Name="playmus"
   18.10  	ProjectGUID="{72CB0DD4-051D-486C-9CB3-75FE16F7D87A}"
   18.11 -	TargetFrameworkVersion="131072"
   18.12  	>
   18.13  	<Platforms>
   18.14  		<Platform
    19.1 --- a/VisualC/playwave/playwave.vcproj	Sun Oct 07 17:56:56 2018 +0300
    19.2 +++ b/VisualC/playwave/playwave.vcproj	Thu Oct 11 11:50:10 2018 +0300
    19.3 @@ -1,10 +1,9 @@
    19.4  <?xml version="1.0" encoding="Windows-1252"?>
    19.5  <VisualStudioProject
    19.6  	ProjectType="Visual C++"
    19.7 -	Version="9.00"
    19.8 +	Version="8.00"
    19.9  	Name="playwave"
   19.10  	ProjectGUID="{AC86CEAA-9908-476F-B15F-C7193CEF81BD}"
   19.11 -	TargetFrameworkVersion="131072"
   19.12  	>
   19.13  	<Platforms>
   19.14  		<Platform
    20.1 --- a/VisualC/timidity/timidity.vcproj	Sun Oct 07 17:56:56 2018 +0300
    20.2 +++ b/VisualC/timidity/timidity.vcproj	Thu Oct 11 11:50:10 2018 +0300
    20.3 @@ -1,11 +1,10 @@
    20.4  <?xml version="1.0" encoding="Windows-1252"?>
    20.5  <VisualStudioProject
    20.6  	ProjectType="Visual C++"
    20.7 -	Version="9.00"
    20.8 +	Version="8.00"
    20.9  	Name="timidity"
   20.10  	ProjectGUID="{B162B6F1-E876-4D5F-A1F6-E3A6DC2F4A2C}"
   20.11  	RootNamespace="timidity"
   20.12 -	TargetFrameworkVersion="131072"
   20.13  	>
   20.14  	<Platforms>
   20.15  		<Platform
    21.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    21.2 +++ b/Xcode/Frameworks/mpg123.framework/Headers	Thu Oct 11 11:50:10 2018 +0300
    21.3 @@ -0,0 +1,1 @@
    21.4 +Versions/Current/Headers
    21.5 \ No newline at end of file
    22.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    22.2 +++ b/Xcode/Frameworks/mpg123.framework/Resources	Thu Oct 11 11:50:10 2018 +0300
    22.3 @@ -0,0 +1,1 @@
    22.4 +Versions/Current/Resources
    22.5 \ No newline at end of file
    23.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    23.2 +++ b/Xcode/Frameworks/mpg123.framework/Versions/A/Headers/mpg123.h	Thu Oct 11 11:50:10 2018 +0300
    23.3 @@ -0,0 +1,1202 @@
    23.4 +/*
    23.5 +	libmpg123: MPEG Audio Decoder library (version 1.22.4)
    23.6 +
    23.7 +	copyright 1995-2010 by the mpg123 project - free software under the terms of the LGPL 2.1
    23.8 +	see COPYING and AUTHORS files in distribution or http://mpg123.org
    23.9 +*/
   23.10 +
   23.11 +#ifndef MPG123_LIB_H
   23.12 +#define MPG123_LIB_H
   23.13 +
   23.14 +/** \file mpg123.h The header file for the libmpg123 MPEG Audio decoder */
   23.15 +
   23.16 +/* A macro to check at compile time which set of API functions to expect.
   23.17 +   This should be incremented at least each time a new symbol is added to the header. */
   23.18 +#define MPG123_API_VERSION 41
   23.19 +
   23.20 +/* These aren't actually in use... seems to work without using libtool. */
   23.21 +#ifdef BUILD_MPG123_DLL
   23.22 +/* The dll exports. */
   23.23 +#define MPG123_EXPORT __declspec(dllexport)
   23.24 +#else
   23.25 +#ifdef LINK_MPG123_DLL
   23.26 +/* The exe imports. */
   23.27 +#define MPG123_EXPORT __declspec(dllimport)
   23.28 +#else
   23.29 +/* Nothing on normal/UNIX builds */
   23.30 +#define MPG123_EXPORT
   23.31 +#endif
   23.32 +#endif
   23.33 +
   23.34 +#ifndef MPG123_NO_CONFIGURE /* Enable use of this file without configure. */
   23.35 +#include <stdlib.h>
   23.36 +#include <sys/types.h>
   23.37 +
   23.38 +/* Simplified large file handling.
   23.39 +	I used to have a check here that prevents building for a library with conflicting large file setup
   23.40 +	(application that uses 32 bit offsets with library that uses 64 bits).
   23.41 +	While that was perfectly fine in an environment where there is one incarnation of the library,
   23.42 +	it hurt GNU/Linux and Solaris systems with multilib where the distribution fails to provide the
   23.43 +	correct header matching the 32 bit library (where large files need explicit support) or
   23.44 +	the 64 bit library (where there is no distinction).
   23.45 +
   23.46 +	New approach: When the app defines _FILE_OFFSET_BITS, it wants non-default large file support,
   23.47 +	and thus functions with added suffix (mpg123_open_64).
   23.48 +	Any mismatch will be caught at link time because of the _FILE_OFFSET_BITS setting used when
   23.49 +	building libmpg123. Plus, there's dual mode large file support in mpg123 since 1.12 now.
   23.50 +	Link failure is not the expected outcome of any half-sane usage anymore.
   23.51 +
   23.52 +	More complication: What about client code defining _LARGEFILE64_SOURCE? It might want direct access to the _64 functions, along with the ones without suffix. Well, that's possible now via defining MPG123_NO_LARGENAME and MPG123_LARGESUFFIX, respectively, for disabling or enforcing the suffix names.
   23.53 +*/
   23.54 +
   23.55 +/*
   23.56 +	Now, the renaming of large file aware functions.
   23.57 +	By default, it appends underscore _FILE_OFFSET_BITS (so, mpg123_seek_64 for mpg123_seek), if _FILE_OFFSET_BITS is defined. You can force a different suffix via MPG123_LARGESUFFIX (that must include the underscore), or you can just disable the whole mess by defining MPG123_NO_LARGENAME.
   23.58 +*/
   23.59 +#if (!defined MPG123_NO_LARGENAME) && ((defined _FILE_OFFSET_BITS) || (defined MPG123_LARGESUFFIX))
   23.60 +
   23.61 +/* Need some trickery to concatenate the value(s) of the given macro(s). */
   23.62 +#define MPG123_MACROCAT_REALLY(a, b) a ## b
   23.63 +#define MPG123_MACROCAT(a, b) MPG123_MACROCAT_REALLY(a, b)
   23.64 +#ifndef MPG123_LARGESUFFIX
   23.65 +#define MPG123_LARGESUFFIX MPG123_MACROCAT(_, _FILE_OFFSET_BITS)
   23.66 +#endif
   23.67 +#define MPG123_LARGENAME(func) MPG123_MACROCAT(func, MPG123_LARGESUFFIX)
   23.68 +
   23.69 +#define mpg123_open         MPG123_LARGENAME(mpg123_open)
   23.70 +#define mpg123_open_fd      MPG123_LARGENAME(mpg123_open_fd)
   23.71 +#define mpg123_open_handle  MPG123_LARGENAME(mpg123_open_handle)
   23.72 +#define mpg123_framebyframe_decode MPG123_LARGENAME(mpg123_framebyframe_decode)
   23.73 +#define mpg123_decode_frame MPG123_LARGENAME(mpg123_decode_frame)
   23.74 +#define mpg123_tell         MPG123_LARGENAME(mpg123_tell)
   23.75 +#define mpg123_tellframe    MPG123_LARGENAME(mpg123_tellframe)
   23.76 +#define mpg123_tell_stream  MPG123_LARGENAME(mpg123_tell_stream)
   23.77 +#define mpg123_seek         MPG123_LARGENAME(mpg123_seek)
   23.78 +#define mpg123_feedseek     MPG123_LARGENAME(mpg123_feedseek)
   23.79 +#define mpg123_seek_frame   MPG123_LARGENAME(mpg123_seek_frame)
   23.80 +#define mpg123_timeframe    MPG123_LARGENAME(mpg123_timeframe)
   23.81 +#define mpg123_index        MPG123_LARGENAME(mpg123_index)
   23.82 +#define mpg123_set_index    MPG123_LARGENAME(mpg123_set_index)
   23.83 +#define mpg123_position     MPG123_LARGENAME(mpg123_position)
   23.84 +#define mpg123_length       MPG123_LARGENAME(mpg123_length)
   23.85 +#define mpg123_set_filesize MPG123_LARGENAME(mpg123_set_filesize)
   23.86 +#define mpg123_replace_reader MPG123_LARGENAME(mpg123_replace_reader)
   23.87 +#define mpg123_replace_reader_handle MPG123_LARGENAME(mpg123_replace_reader_handle)
   23.88 +#define mpg123_framepos MPG123_LARGENAME(mpg123_framepos)
   23.89 +
   23.90 +#endif /* largefile hackery */
   23.91 +
   23.92 +#endif /* MPG123_NO_CONFIGURE */
   23.93 +
   23.94 +#ifdef __cplusplus
   23.95 +extern "C" {
   23.96 +#endif
   23.97 +
   23.98 +/** \defgroup mpg123_init mpg123 library and handle setup
   23.99 + *
  23.100 + * Functions to initialise and shutdown the mpg123 library and handles.
  23.101 + * The parameters of handles have workable defaults, you only have to tune them when you want to tune something;-)
  23.102 + * Tip: Use a RVA setting...
  23.103 + *
  23.104 + * @{
  23.105 + */
  23.106 +
  23.107 +/** Opaque structure for the libmpg123 decoder handle. */
  23.108 +struct mpg123_handle_struct;
  23.109 +
  23.110 +/** Opaque structure for the libmpg123 decoder handle.
  23.111 + *  Most functions take a pointer to a mpg123_handle as first argument and operate on its data in an object-oriented manner.
  23.112 + */
  23.113 +typedef struct mpg123_handle_struct mpg123_handle;
  23.114 +
  23.115 +/** Function to initialise the mpg123 library. 
  23.116 + *	This function is not thread-safe. Call it exactly once per process, before any other (possibly threaded) work with the library.
  23.117 + *
  23.118 + *	\return MPG123_OK if successful, otherwise an error number.
  23.119 + */
  23.120 +MPG123_EXPORT int  mpg123_init(void);
  23.121 +
  23.122 +/** Function to close down the mpg123 library. 
  23.123 + *	This function is not thread-safe. Call it exactly once per process, before any other (possibly threaded) work with the library. */
  23.124 +MPG123_EXPORT void mpg123_exit(void);
  23.125 +
  23.126 +/** Create a handle with optional choice of decoder (named by a string, see mpg123_decoders() or mpg123_supported_decoders()).
  23.127 + *  and optional retrieval of an error code to feed to mpg123_plain_strerror().
  23.128 + *  Optional means: Any of or both the parameters may be NULL.
  23.129 + *
  23.130 + *  \return Non-NULL pointer when successful.
  23.131 + */
  23.132 +MPG123_EXPORT mpg123_handle *mpg123_new(const char* decoder, int *error);
  23.133 +
  23.134 +/** Delete handle, mh is either a valid mpg123 handle or NULL. */
  23.135 +MPG123_EXPORT void mpg123_delete(mpg123_handle *mh);
  23.136 +
  23.137 +/** Enumeration of the parameters types that it is possible to set/get. */
  23.138 +enum mpg123_parms
  23.139 +{
  23.140 +	MPG123_VERBOSE = 0,        /**< set verbosity value for enabling messages to stderr, >= 0 makes sense (integer) */
  23.141 +	MPG123_FLAGS,          /**< set all flags, p.ex val = MPG123_GAPLESS|MPG123_MONO_MIX (integer) */
  23.142 +	MPG123_ADD_FLAGS,      /**< add some flags (integer) */
  23.143 +	MPG123_FORCE_RATE,     /**< when value > 0, force output rate to that value (integer) */
  23.144 +	MPG123_DOWN_SAMPLE,    /**< 0=native rate, 1=half rate, 2=quarter rate (integer) */
  23.145 +	MPG123_RVA,            /**< one of the RVA choices above (integer) */
  23.146 +	MPG123_DOWNSPEED,      /**< play a frame N times (integer) */
  23.147 +	MPG123_UPSPEED,        /**< play every Nth frame (integer) */
  23.148 +	MPG123_START_FRAME,    /**< start with this frame (skip frames before that, integer) */ 
  23.149 +	MPG123_DECODE_FRAMES,  /**< decode only this number of frames (integer) */
  23.150 +	MPG123_ICY_INTERVAL,   /**< stream contains ICY metadata with this interval (integer) */
  23.151 +	MPG123_OUTSCALE,       /**< the scale for output samples (amplitude - integer or float according to mpg123 output format, normally integer) */
  23.152 +	MPG123_TIMEOUT,        /**< timeout for reading from a stream (not supported on win32, integer) */
  23.153 +	MPG123_REMOVE_FLAGS,   /**< remove some flags (inverse of MPG123_ADD_FLAGS, integer) */
  23.154 +	MPG123_RESYNC_LIMIT,   /**< Try resync on frame parsing for that many bytes or until end of stream (<0 ... integer). This can enlarge the limit for skipping junk on beginning, too (but not reduce it).  */
  23.155 +	MPG123_INDEX_SIZE      /**< Set the frame index size (if supported). Values <0 mean that the index is allowed to grow dynamically in these steps (in positive direction, of course) -- Use this when you really want a full index with every individual frame. */
  23.156 +	,MPG123_PREFRAMES /**< Decode/ignore that many frames in advance for layer 3. This is needed to fill bit reservoir after seeking, for example (but also at least one frame in advance is needed to have all "normal" data for layer 3). Give a positive integer value, please.*/
  23.157 +	,MPG123_FEEDPOOL  /**< For feeder mode, keep that many buffers in a pool to avoid frequent malloc/free. The pool is allocated on mpg123_open_feed(). If you change this parameter afterwards, you can trigger growth and shrinkage during decoding. The default value could change any time. If you care about this, then set it. (integer) */
  23.158 +	,MPG123_FEEDBUFFER /**< Minimal size of one internal feeder buffer, again, the default value is subject to change. (integer) */
  23.159 +};
  23.160 +
  23.161 +/** Flag bits for MPG123_FLAGS, use the usual binary or to combine. */
  23.162 +enum mpg123_param_flags
  23.163 +{
  23.164 +	 MPG123_FORCE_MONO   = 0x7  /**<     0111 Force some mono mode: This is a test bitmask for seeing if any mono forcing is active. */
  23.165 +	,MPG123_MONO_LEFT    = 0x1  /**<     0001 Force playback of left channel only.  */
  23.166 +	,MPG123_MONO_RIGHT   = 0x2  /**<     0010 Force playback of right channel only. */
  23.167 +	,MPG123_MONO_MIX     = 0x4  /**<     0100 Force playback of mixed mono.         */
  23.168 +	,MPG123_FORCE_STEREO = 0x8  /**<     1000 Force stereo output.                  */
  23.169 +	,MPG123_FORCE_8BIT   = 0x10 /**< 00010000 Force 8bit formats.                   */
  23.170 +	,MPG123_QUIET        = 0x20 /**< 00100000 Suppress any printouts (overrules verbose).                    */
  23.171 +	,MPG123_GAPLESS      = 0x40 /**< 01000000 Enable gapless decoding (default on if libmpg123 has support). */
  23.172 +	,MPG123_NO_RESYNC    = 0x80 /**< 10000000 Disable resync stream after error.                             */
  23.173 +	,MPG123_SEEKBUFFER   = 0x100 /**< 000100000000 Enable small buffer on non-seekable streams to allow some peek-ahead (for better MPEG sync). */
  23.174 +	,MPG123_FUZZY        = 0x200 /**< 001000000000 Enable fuzzy seeks (guessing byte offsets or using approximate seek points from Xing TOC) */
  23.175 +	,MPG123_FORCE_FLOAT  = 0x400 /**< 010000000000 Force floating point output (32 or 64 bits depends on mpg123 internal precision). */
  23.176 +	,MPG123_PLAIN_ID3TEXT = 0x800 /**< 100000000000 Do not translate ID3 text data to UTF-8. ID3 strings will contain the raw text data, with the first byte containing the ID3 encoding code. */
  23.177 +	,MPG123_IGNORE_STREAMLENGTH = 0x1000 /**< 1000000000000 Ignore any stream length information contained in the stream, which can be contained in a 'TLEN' frame of an ID3v2 tag or a Xing tag */
  23.178 +	,MPG123_SKIP_ID3V2 = 0x2000 /**< 10 0000 0000 0000 Do not parse ID3v2 tags, just skip them. */
  23.179 +	,MPG123_IGNORE_INFOFRAME = 0x4000 /**< 100 0000 0000 0000 Do not parse the LAME/Xing info frame, treat it as normal MPEG data. */
  23.180 +	,MPG123_AUTO_RESAMPLE = 0x8000 /**< 1000 0000 0000 0000 Allow automatic internal resampling of any kind (default on if supported). Especially when going lowlevel with replacing output buffer, you might want to unset this flag. Setting MPG123_DOWNSAMPLE or MPG123_FORCE_RATE will override this. */
  23.181 +	,MPG123_PICTURE = 0x10000 /**< 17th bit: Enable storage of pictures from tags (ID3v2 APIC). */
  23.182 +};
  23.183 +
  23.184 +/** choices for MPG123_RVA */
  23.185 +enum mpg123_param_rva
  23.186 +{
  23.187 +	 MPG123_RVA_OFF   = 0 /**< RVA disabled (default).   */
  23.188 +	,MPG123_RVA_MIX   = 1 /**< Use mix/track/radio gain. */
  23.189 +	,MPG123_RVA_ALBUM = 2 /**< Use album/audiophile gain */
  23.190 +	,MPG123_RVA_MAX   = MPG123_RVA_ALBUM /**< The maximum RVA code, may increase in future. */
  23.191 +};
  23.192 +
  23.193 +/* TODO: Assess the possibilities and troubles of changing parameters during playback. */
  23.194 +
  23.195 +/** Set a specific parameter, for a specific mpg123_handle, using a parameter 
  23.196 + *  type key chosen from the mpg123_parms enumeration, to the specified value.
  23.197 + * \return MPG123_OK on success
  23.198 + */
  23.199 +MPG123_EXPORT int mpg123_param(mpg123_handle *mh, enum mpg123_parms type, long value, double fvalue);
  23.200 +
  23.201 +/** Get a specific parameter, for a specific mpg123_handle. 
  23.202 + *  See the mpg123_parms enumeration for a list of available parameters.
  23.203 + *  \return MPG123_OK on success
  23.204 + */
  23.205 +MPG123_EXPORT int mpg123_getparam(mpg123_handle *mh, enum mpg123_parms type, long *val, double *fval);
  23.206 +
  23.207 +/** Feature set available for query with mpg123_feature. */
  23.208 +enum mpg123_feature_set
  23.209 +{
  23.210 +	 MPG123_FEATURE_ABI_UTF8OPEN = 0     /**< mpg123 expects path names to be given in UTF-8 encoding instead of plain native. */
  23.211 +	,MPG123_FEATURE_OUTPUT_8BIT          /**< 8bit output   */
  23.212 +	,MPG123_FEATURE_OUTPUT_16BIT         /**< 16bit output  */
  23.213 +	,MPG123_FEATURE_OUTPUT_32BIT         /**< 32bit output  */
  23.214 +	,MPG123_FEATURE_INDEX                /**< support for building a frame index for accurate seeking */
  23.215 +	,MPG123_FEATURE_PARSE_ID3V2          /**< id3v2 parsing */
  23.216 +	,MPG123_FEATURE_DECODE_LAYER1        /**< mpeg layer-1 decoder enabled */
  23.217 +	,MPG123_FEATURE_DECODE_LAYER2        /**< mpeg layer-2 decoder enabled */
  23.218 +	,MPG123_FEATURE_DECODE_LAYER3        /**< mpeg layer-3 decoder enabled */
  23.219 +	,MPG123_FEATURE_DECODE_ACCURATE      /**< accurate decoder rounding    */
  23.220 +	,MPG123_FEATURE_DECODE_DOWNSAMPLE    /**< downsample (sample omit)     */
  23.221 +	,MPG123_FEATURE_DECODE_NTOM          /**< flexible rate decoding       */
  23.222 +	,MPG123_FEATURE_PARSE_ICY            /**< ICY support                  */
  23.223 +	,MPG123_FEATURE_TIMEOUT_READ         /**< Reader with timeout (network). */
  23.224 +};
  23.225 +
  23.226 +/** Query libmpg123 feature, 1 for success, 0 for unimplemented functions. */
  23.227 +MPG123_EXPORT int mpg123_feature(const enum mpg123_feature_set key);
  23.228 +
  23.229 +/* @} */
  23.230 +
  23.231 +
  23.232 +/** \defgroup mpg123_error mpg123 error handling
  23.233 + *
  23.234 + * Functions to get text version of the error numbers and an enumeration
  23.235 + * of the error codes returned by libmpg123.
  23.236 + *
  23.237 + * Most functions operating on a mpg123_handle simply return MPG123_OK (0)
  23.238 + * on success and MPG123_ERR (-1) on failure, setting the internal error
  23.239 + * variable of the handle to the specific error code. If there was not a valid
  23.240 + * (non-NULL) handle provided to a function operating on one, MPG123_BAD_HANDLE
  23.241 + * may be returned if this can not be confused with a valid positive return
  23.242 + * value.
  23.243 + * Meaning: A function expected to return positive integers on success will
  23.244 + * always indicate error or a special condition by returning a negative one.
  23.245 + *
  23.246 + * Decoding/seek functions may also return message codes MPG123_DONE,
  23.247 + * MPG123_NEW_FORMAT and MPG123_NEED_MORE (all negative, see below on how to
  23.248 + * react). Note that calls to those can be nested, so generally watch out
  23.249 + * for these codes after initial handle setup.
  23.250 + * Especially any function that needs information about the current stream
  23.251 + * to work will try to at least parse the beginning if that did not happen
  23.252 + * yet.
  23.253 + *
  23.254 + * On a function that is supposed to return MPG123_OK on success and
  23.255 + * MPG123_ERR on failure, make sure you check for != MPG123_OK, not
  23.256 + * == MPG123_ERR, as the error code could get more specific in future,
  23.257 + * or there is just a special message from a decoding routine as indicated
  23.258 + * above.
  23.259 + *
  23.260 + * @{
  23.261 + */
  23.262 +
  23.263 +/** Enumeration of the message and error codes and returned by libmpg123 functions. */
  23.264 +enum mpg123_errors
  23.265 +{
  23.266 +	MPG123_DONE=-12,	/**< Message: Track ended. Stop decoding. */
  23.267 +	MPG123_NEW_FORMAT=-11,	/**< Message: Output format will be different on next call. Note that some libmpg123 versions between 1.4.3 and 1.8.0 insist on you calling mpg123_getformat() after getting this message code. Newer verisons behave like advertised: You have the chance to call mpg123_getformat(), but you can also just continue decoding and get your data. */
  23.268 +	MPG123_NEED_MORE=-10,	/**< Message: For feed reader: "Feed me more!" (call mpg123_feed() or mpg123_decode() with some new input data). */
  23.269 +	MPG123_ERR=-1,			/**< Generic Error */
  23.270 +	MPG123_OK=0, 			/**< Success */
  23.271 +	MPG123_BAD_OUTFORMAT, 	/**< Unable to set up output format! */
  23.272 +	MPG123_BAD_CHANNEL,		/**< Invalid channel number specified. */
  23.273 +	MPG123_BAD_RATE,		/**< Invalid sample rate specified.  */
  23.274 +	MPG123_ERR_16TO8TABLE,	/**< Unable to allocate memory for 16 to 8 converter table! */
  23.275 +	MPG123_BAD_PARAM,		/**< Bad parameter id! */
  23.276 +	MPG123_BAD_BUFFER,		/**< Bad buffer given -- invalid pointer or too small size. */
  23.277 +	MPG123_OUT_OF_MEM,		/**< Out of memory -- some malloc() failed. */
  23.278 +	MPG123_NOT_INITIALIZED,	/**< You didn't initialize the library! */
  23.279 +	MPG123_BAD_DECODER,		/**< Invalid decoder choice. */
  23.280 +	MPG123_BAD_HANDLE,		/**< Invalid mpg123 handle. */
  23.281 +	MPG123_NO_BUFFERS,		/**< Unable to initialize frame buffers (out of memory?). */
  23.282 +	MPG123_BAD_RVA,			/**< Invalid RVA mode. */
  23.283 +	MPG123_NO_GAPLESS,		/**< This build doesn't support gapless decoding. */
  23.284 +	MPG123_NO_SPACE,		/**< Not enough buffer space. */
  23.285 +	MPG123_BAD_TYPES,		/**< Incompatible numeric data types. */
  23.286 +	MPG123_BAD_BAND,		/**< Bad equalizer band. */
  23.287 +	MPG123_ERR_NULL,		/**< Null pointer given where valid storage address needed. */
  23.288 +	MPG123_ERR_READER,		/**< Error reading the stream. */
  23.289 +	MPG123_NO_SEEK_FROM_END,/**< Cannot seek from end (end is not known). */
  23.290 +	MPG123_BAD_WHENCE,		/**< Invalid 'whence' for seek function.*/
  23.291 +	MPG123_NO_TIMEOUT,		/**< Build does not support stream timeouts. */
  23.292 +	MPG123_BAD_FILE,		/**< File access error. */
  23.293 +	MPG123_NO_SEEK,			/**< Seek not supported by stream. */
  23.294 +	MPG123_NO_READER,		/**< No stream opened. */
  23.295 +	MPG123_BAD_PARS,		/**< Bad parameter handle. */
  23.296 +	MPG123_BAD_INDEX_PAR,	/**< Bad parameters to mpg123_index() and mpg123_set_index() */
  23.297 +	MPG123_OUT_OF_SYNC,	/**< Lost track in bytestream and did not try to resync. */
  23.298 +	MPG123_RESYNC_FAIL,	/**< Resync failed to find valid MPEG data. */
  23.299 +	MPG123_NO_8BIT,	/**< No 8bit encoding possible. */
  23.300 +	MPG123_BAD_ALIGN,	/**< Stack aligmnent error */
  23.301 +	MPG123_NULL_BUFFER,	/**< NULL input buffer with non-zero size... */
  23.302 +	MPG123_NO_RELSEEK,	/**< Relative seek not possible (screwed up file offset) */
  23.303 +	MPG123_NULL_POINTER, /**< You gave a null pointer somewhere where you shouldn't have. */
  23.304 +	MPG123_BAD_KEY,	/**< Bad key value given. */
  23.305 +	MPG123_NO_INDEX,	/**< No frame index in this build. */
  23.306 +	MPG123_INDEX_FAIL,	/**< Something with frame index went wrong. */
  23.307 +	MPG123_BAD_DECODER_SETUP,	/**< Something prevents a proper decoder setup */
  23.308 +	MPG123_MISSING_FEATURE  /**< This feature has not been built into libmpg123. */
  23.309 +	,MPG123_BAD_VALUE /**< A bad value has been given, somewhere. */
  23.310 +	,MPG123_LSEEK_FAILED /**< Low-level seek failed. */
  23.311 +	,MPG123_BAD_CUSTOM_IO /**< Custom I/O not prepared. */
  23.312 +	,MPG123_LFS_OVERFLOW /**< Offset value overflow during translation of large file API calls -- your client program cannot handle that large file. */
  23.313 +	,MPG123_INT_OVERFLOW /**< Some integer overflow. */
  23.314 +};
  23.315 +
  23.316 +/** Return a string describing that error errcode means. */
  23.317 +MPG123_EXPORT const char* mpg123_plain_strerror(int errcode);
  23.318 +
  23.319 +/** Give string describing what error has occured in the context of handle mh.
  23.320 + *  When a function operating on an mpg123 handle returns MPG123_ERR, you should check for the actual reason via
  23.321 + *  char *errmsg = mpg123_strerror(mh)
  23.322 + *  This function will catch mh == NULL and return the message for MPG123_BAD_HANDLE. */
  23.323 +MPG123_EXPORT const char* mpg123_strerror(mpg123_handle *mh);
  23.324 +
  23.325 +/** Return the plain errcode intead of a string.
  23.326 + *  \return error code recorded in handle or MPG123_BAD_HANDLE
  23.327 + */
  23.328 +MPG123_EXPORT int mpg123_errcode(mpg123_handle *mh);
  23.329 +
  23.330 +/*@}*/
  23.331 +
  23.332 +
  23.333 +/** \defgroup mpg123_decoder mpg123 decoder selection
  23.334 + *
  23.335 + * Functions to list and select the available decoders.
  23.336 + * Perhaps the most prominent feature of mpg123: You have several (optimized) decoders to choose from (on x86 and PPC (MacOS) systems, that is).
  23.337 + *
  23.338 + * @{
  23.339 + */
  23.340 +
  23.341 +/** Return a NULL-terminated array of generally available decoder names (plain 8bit ASCII). */
  23.342 +MPG123_EXPORT const char **mpg123_decoders(void);
  23.343 +
  23.344 +/** Return a NULL-terminated array of the decoders supported by the CPU (plain 8bit ASCII). */
  23.345 +MPG123_EXPORT const char **mpg123_supported_decoders(void);
  23.346 +
  23.347 +/** Set the chosen decoder to 'decoder_name'
  23.348 + * \return MPG123_OK on success
  23.349 + */
  23.350 +MPG123_EXPORT int mpg123_decoder(mpg123_handle *mh, const char* decoder_name);
  23.351 +
  23.352 +/** Get the currently active decoder engine name.
  23.353 +    The active decoder engine can vary depening on output constraints,
  23.354 +    mostly non-resampling, integer output is accelerated via 3DNow & Co. but for other modes a fallback engine kicks in.
  23.355 +    Note that this can return a decoder that is ony active in the hidden and not available as decoder choice from the outside.
  23.356 +    \return The decoder name or NULL on error. */
  23.357 +MPG123_EXPORT const char* mpg123_current_decoder(mpg123_handle *mh);
  23.358 +
  23.359 +/*@}*/
  23.360 +
  23.361 +
  23.362 +/** \defgroup mpg123_output mpg123 output audio format 
  23.363 + *
  23.364 + * Functions to get and select the format of the decoded audio.
  23.365 + *
  23.366 + * Before you dive in, please be warned that you might get confused by this. This seems to happen a lot, therefore I am trying to explain in advance.
  23.367 + *
  23.368 + * The mpg123 library decides what output format to use when encountering the first frame in a stream, or actually any frame that is still valid but differs from the frames before in the prompted output format. At such a deciding point, an internal table of allowed encodings, sampling rates and channel setups is consulted. According to this table, an output format is chosen and the decoding engine set up accordingly (including ptimized routines for different output formats). This might seem unusual but it just follows from the non-existence of "MPEG audio files" with defined overall properties. There are streams, streams are concatenations of (semi) independent frames. We store streams on disk and call them "MPEG audio files", but that does not change their nature as the decoder is concerned (the LAME/Xing header for gapless decoding makes things interesting again).
  23.369 + *
  23.370 + * To get to the point: What you do with mpg123_format() and friends is to fill the internal table of allowed formats before it is used. That includes removing support for some formats or adding your forced sample rate (see MPG123_FORCE_RATE) that will be used with the crude internal resampler. Also keep in mind that the sample encoding is just a question of choice -- the MPEG frames do only indicate their native sampling rate and channel count. If you want to decode to integer or float samples, 8 or 16 bit ... that is your decision. In a "clean" world, libmpg123 would always decode to 32 bit float and let you handle any sample conversion. But there are optimized routines that work faster by directly decoding to the desired encoding / accuracy. We prefer efficiency over conceptual tidyness.
  23.371 + *
  23.372 + * People often start out thinking that mpg123_format() should change the actual decoding format on the fly. That is wrong. It only has effect on the next natural change of output format, when libmpg123 will consult its format table again. To make life easier, you might want to call mpg123_format_none() before any thing else and then just allow one desired encoding and a limited set of sample rates / channel choices that you actually intend to deal with. You can force libmpg123 to decode everything to 44100 KHz, stereo, 16 bit integer ... it will duplicate mono channels and even do resampling if needed (unless that feature is disabled in the build, same with some encodings). But I have to stress that the resampling of libmpg123 is very crude and doesn't even contain any kind of "proper" interpolation.
  23.373 + *
  23.374 + * In any case, watch out for MPG123_NEW_FORMAT as return message from decoding routines and call mpg123_getformat() to get the currently active output format.
  23.375 + *
  23.376 + * @{
  23.377 + */
  23.378 +
  23.379 +/** An enum over all sample types possibly known to mpg123.
  23.380 + *  The values are designed as bit flags to allow bitmasking for encoding families.
  23.381 + *
  23.382 + *  Note that (your build of) libmpg123 does not necessarily support all these.
  23.383 + *  Usually, you can expect the 8bit encodings and signed 16 bit.
  23.384 + *  Also 32bit float will be usual beginning with mpg123-1.7.0 .
  23.385 + *  What you should bear in mind is that (SSE, etc) optimized routines may be absent
  23.386 + *  for some formats. We do have SSE for 16, 32 bit and float, though.
  23.387 + *  24 bit integer is done via postprocessing of 32 bit output -- just cutting
  23.388 + *  the last byte, no rounding, even. If you want better, do it yourself.
  23.389 + *
  23.390 + *  All formats are in native byte order. If you need different endinaness, you
  23.391 + *  can simply postprocess the output buffers (libmpg123 wouldn't do anything else).
  23.392 + *  mpg123_encsize() can be helpful there.
  23.393 + */
  23.394 +enum mpg123_enc_enum
  23.395 +{
  23.396 +	 MPG123_ENC_8      = 0x00f  /**<      0000 0000 1111 Some 8 bit  integer encoding. */
  23.397 +	,MPG123_ENC_16     = 0x040  /**<      0000 0100 0000 Some 16 bit integer encoding. */
  23.398 +	,MPG123_ENC_24     = 0x4000 /**< 0100 0000 0000 0000 Some 24 bit integer encoding. */
  23.399 +	,MPG123_ENC_32     = 0x100  /**<      0001 0000 0000 Some 32 bit integer encoding. */
  23.400 +	,MPG123_ENC_SIGNED = 0x080  /**<      0000 1000 0000 Some signed integer encoding. */
  23.401 +	,MPG123_ENC_FLOAT  = 0xe00  /**<      1110 0000 0000 Some float encoding. */
  23.402 +	,MPG123_ENC_SIGNED_16   = (MPG123_ENC_16|MPG123_ENC_SIGNED|0x10) /**<           1101 0000 signed 16 bit */
  23.403 +	,MPG123_ENC_UNSIGNED_16 = (MPG123_ENC_16|0x20)                   /**<           0110 0000 unsigned 16 bit */
  23.404 +	,MPG123_ENC_UNSIGNED_8  = 0x01                                   /**<           0000 0001 unsigned 8 bit */
  23.405 +	,MPG123_ENC_SIGNED_8    = (MPG123_ENC_SIGNED|0x02)               /**<           1000 0010 signed 8 bit */
  23.406 +	,MPG123_ENC_ULAW_8      = 0x04                                   /**<           0000 0100 ulaw 8 bit */
  23.407 +	,MPG123_ENC_ALAW_8      = 0x08                                   /**<           0000 1000 alaw 8 bit */
  23.408 +	,MPG123_ENC_SIGNED_32   = MPG123_ENC_32|MPG123_ENC_SIGNED|0x1000 /**< 0001 0001 1000 0000 signed 32 bit */
  23.409 +	,MPG123_ENC_UNSIGNED_32 = MPG123_ENC_32|0x2000                   /**< 0010 0001 0000 0000 unsigned 32 bit */
  23.410 +	,MPG123_ENC_SIGNED_24   = MPG123_ENC_24|MPG123_ENC_SIGNED|0x1000 /**< 0101 0000 1000 0000 signed 24 bit */
  23.411 +	,MPG123_ENC_UNSIGNED_24 = MPG123_ENC_24|0x2000                   /**< 0110 0000 0000 0000 unsigned 24 bit */
  23.412 +	,MPG123_ENC_FLOAT_32    = 0x200                                  /**<      0010 0000 0000 32bit float */
  23.413 +	,MPG123_ENC_FLOAT_64    = 0x400                                  /**<      0100 0000 0000 64bit float */
  23.414 +	,MPG123_ENC_ANY = ( MPG123_ENC_SIGNED_16  | MPG123_ENC_UNSIGNED_16 | MPG123_ENC_UNSIGNED_8
  23.415 +	                  | MPG123_ENC_SIGNED_8   | MPG123_ENC_ULAW_8      | MPG123_ENC_ALAW_8
  23.416 +	                  | MPG123_ENC_SIGNED_32  | MPG123_ENC_UNSIGNED_32
  23.417 +	                  | MPG123_ENC_SIGNED_24  | MPG123_ENC_UNSIGNED_24
  23.418 +	                  | MPG123_ENC_FLOAT_32   | MPG123_ENC_FLOAT_64 ) /**< Any encoding on the list. */
  23.419 +};
  23.420 +
  23.421 +/** They can be combined into one number (3) to indicate mono and stereo... */
  23.422 +enum mpg123_channelcount
  23.423 +{
  23.424 +	 MPG123_MONO   = 1
  23.425 +	,MPG123_STEREO = 2
  23.426 +};
  23.427 +
  23.428 +/** An array of supported standard sample rates
  23.429 + *  These are possible native sample rates of MPEG audio files.
  23.430 + *  You can still force mpg123 to resample to a different one, but by default you will only get audio in one of these samplings.
  23.431 + *  \param list Store a pointer to the sample rates array there.
  23.432 + *  \param number Store the number of sample rates there. */
  23.433 +MPG123_EXPORT void mpg123_rates(const long **list, size_t *number);
  23.434 +
  23.435 +/** An array of supported audio encodings.
  23.436 + *  An audio encoding is one of the fully qualified members of mpg123_enc_enum (MPG123_ENC_SIGNED_16, not MPG123_SIGNED).
  23.437 + *  \param list Store a pointer to the encodings array there.
  23.438 + *  \param number Store the number of encodings there. */
  23.439 +MPG123_EXPORT void mpg123_encodings(const int **list, size_t *number);
  23.440 +
  23.441 +/** Return the size (in bytes) of one mono sample of the named encoding.
  23.442 + * \param encoding The encoding value to analyze.
  23.443 + * \return positive size of encoding in bytes, 0 on invalid encoding. */
  23.444 +MPG123_EXPORT int mpg123_encsize(int encoding);
  23.445 +
  23.446 +/** Configure a mpg123 handle to accept no output format at all, 
  23.447 + *  use before specifying supported formats with mpg123_format
  23.448 + *  \return MPG123_OK on success
  23.449 + */
  23.450 +MPG123_EXPORT int mpg123_format_none(mpg123_handle *mh);
  23.451 +
  23.452 +/** Configure mpg123 handle to accept all formats 
  23.453 + *  (also any custom rate you may set) -- this is default.
  23.454 + *  \return MPG123_OK on success
  23.455 + */
  23.456 +MPG123_EXPORT int mpg123_format_all(mpg123_handle *mh);
  23.457 +
  23.458 +/** Set the audio format support of a mpg123_handle in detail:
  23.459 + *  \param mh audio decoder handle
  23.460 + *  \param rate The sample rate value (in Hertz).
  23.461 + *  \param channels A combination of MPG123_STEREO and MPG123_MONO.
  23.462 + *  \param encodings A combination of accepted encodings for rate and channels, p.ex MPG123_ENC_SIGNED16 | MPG123_ENC_ULAW_8 (or 0 for no support). Please note that some encodings may not be supported in the library build and thus will be ignored here.
  23.463 + *  \return MPG123_OK on success, MPG123_ERR if there was an error. */
  23.464 +MPG123_EXPORT int mpg123_format(mpg123_handle *mh, long rate, int channels, int encodings);
  23.465 +
  23.466 +/** Check to see if a specific format at a specific rate is supported 
  23.467 + *  by mpg123_handle.
  23.468 + *  \return 0 for no support (that includes invalid parameters), MPG123_STEREO, 
  23.469 + *          MPG123_MONO or MPG123_STEREO|MPG123_MONO. */
  23.470 +MPG123_EXPORT int mpg123_format_support(mpg123_handle *mh, long rate, int encoding);
  23.471 +
  23.472 +/** Get the current output format written to the addresses given.
  23.473 + *  \return MPG123_OK on success
  23.474 + */
  23.475 +MPG123_EXPORT int mpg123_getformat(mpg123_handle *mh, long *rate, int *channels, int *encoding);
  23.476 +
  23.477 +/*@}*/
  23.478 +
  23.479 +
  23.480 +/** \defgroup mpg123_input mpg123 file input and decoding
  23.481 + *
  23.482 + * Functions for input bitstream and decoding operations.
  23.483 + * Decoding/seek functions may also return message codes MPG123_DONE, MPG123_NEW_FORMAT and MPG123_NEED_MORE (please read up on these on how to react!).
  23.484 + * @{
  23.485 + */
  23.486 +
  23.487 +/* reading samples / triggering decoding, possible return values: */
  23.488 +/** Enumeration of the error codes returned by libmpg123 functions. */
  23.489 +
  23.490 +/** Open and prepare to decode the specified file by filesystem path.
  23.491 + *  This does not open HTTP urls; libmpg123 contains no networking code.
  23.492 + *  If you want to decode internet streams, use mpg123_open_fd() or mpg123_open_feed().
  23.493 + *  \param path filesystem path
  23.494 + *  \return MPG123_OK on success
  23.495 + */
  23.496 +MPG123_EXPORT int mpg123_open(mpg123_handle *mh, const char *path);
  23.497 +
  23.498 +/** Use an already opened file descriptor as the bitstream input
  23.499 + *  mpg123_close() will _not_ close the file descriptor.
  23.500 + */
  23.501 +MPG123_EXPORT int mpg123_open_fd(mpg123_handle *mh, int fd);
  23.502 +
  23.503 +/** Use an opaque handle as bitstream input. This works only with the
  23.504 + *  replaced I/O from mpg123_replace_reader_handle()!
  23.505 + *  mpg123_close() will call the cleanup callback for your handle (if you gave one).
  23.506 + *  \return MPG123_OK on success
  23.507 + */
  23.508 +MPG123_EXPORT int mpg123_open_handle(mpg123_handle *mh, void *iohandle);
  23.509 +
  23.510 +/** Open a new bitstream and prepare for direct feeding
  23.511 + *  This works together with mpg123_decode(); you are responsible for reading and feeding the input bitstream.
  23.512 + *  \return MPG123_OK on success
  23.513 + */
  23.514 +MPG123_EXPORT int mpg123_open_feed(mpg123_handle *mh);
  23.515 +
  23.516 +/** Closes the source, if libmpg123 opened it.
  23.517 + *  \return MPG123_OK on success
  23.518 + */
  23.519 +MPG123_EXPORT int mpg123_close(mpg123_handle *mh);
  23.520 +
  23.521 +/** Read from stream and decode up to outmemsize bytes.
  23.522 + *  \param outmemory address of output buffer to write to
  23.523 + *  \param outmemsize maximum number of bytes to write
  23.524 + *  \param done address to store the number of actually decoded bytes to
  23.525 + *  \return MPG123_OK or error/message code
  23.526 + */
  23.527 +MPG123_EXPORT int mpg123_read(mpg123_handle *mh, unsigned char *outmemory, size_t outmemsize, size_t *done);
  23.528 +
  23.529 +/** Feed data for a stream that has been opened with mpg123_open_feed().
  23.530 + *  It's give and take: You provide the bytestream, mpg123 gives you the decoded samples.
  23.531 + *  \param in input buffer
  23.532 + *  \param size number of input bytes
  23.533 + *  \return MPG123_OK or error/message code.
  23.534 + */
  23.535 +MPG123_EXPORT int mpg123_feed(mpg123_handle *mh, const unsigned char *in, size_t size);
  23.536 +
  23.537 +/** Decode MPEG Audio from inmemory to outmemory. 
  23.538 + *  This is very close to a drop-in replacement for old mpglib.
  23.539 + *  When you give zero-sized output buffer the input will be parsed until 
  23.540 + *  decoded data is available. This enables you to get MPG123_NEW_FORMAT (and query it) 
  23.541 + *  without taking decoded data.
  23.542 + *  Think of this function being the union of mpg123_read() and mpg123_feed() (which it actually is, sort of;-).
  23.543 + *  You can actually always decide if you want those specialized functions in separate steps or one call this one here.
  23.544 + *  \param inmemory input buffer
  23.545 + *  \param inmemsize number of input bytes
  23.546 + *  \param outmemory output buffer
  23.547 + *  \param outmemsize maximum number of output bytes
  23.548 + *  \param done address to store the number of actually decoded bytes to
  23.549 + *  \return error/message code (watch out especially for MPG123_NEED_MORE)
  23.550 + */
  23.551 +MPG123_EXPORT int mpg123_decode(mpg123_handle *mh, const unsigned char *inmemory, size_t inmemsize, unsigned char *outmemory, size_t outmemsize, size_t *done);
  23.552 +
  23.553 +/** Decode next MPEG frame to internal buffer
  23.554 + *  or read a frame and return after setting a new format.
  23.555 + *  \param num current frame offset gets stored there
  23.556 + *  \param audio This pointer is set to the internal buffer to read the decoded audio from.
  23.557 + *  \param bytes number of output bytes ready in the buffer
  23.558 + *  \return MPG123_OK or error/message code
  23.559 + */
  23.560 +MPG123_EXPORT int mpg123_decode_frame(mpg123_handle *mh, off_t *num, unsigned char **audio, size_t *bytes);
  23.561 +
  23.562 +/** Decode current MPEG frame to internal buffer.
  23.563 + * Warning: This is experimental API that might change in future releases!
  23.564 + * Please watch mpg123 development closely when using it.
  23.565 + *  \param num last frame offset gets stored there
  23.566 + *  \param audio this pointer is set to the internal buffer to read the decoded audio from.
  23.567 + *  \param bytes number of output bytes ready in the buffer
  23.568 + *  \return MPG123_OK or error/message code
  23.569 + */
  23.570 +MPG123_EXPORT int mpg123_framebyframe_decode(mpg123_handle *mh, off_t *num, unsigned char **audio, size_t *bytes);
  23.571 +
  23.572 +/** Find, read and parse the next mp3 frame
  23.573 + * Warning: This is experimental API that might change in future releases!
  23.574 + * Please watch mpg123 development closely when using it.
  23.575 + *  \return MPG123_OK or error/message code
  23.576 + */
  23.577 +MPG123_EXPORT int mpg123_framebyframe_next(mpg123_handle *mh);
  23.578 +
  23.579 +/** Get access to the raw input data for the last parsed frame.
  23.580 + * This gives you a direct look (and write access) to the frame body data.
  23.581 + * Together with the raw header, you can reconstruct the whole raw MPEG stream without junk and meta data, or play games by actually modifying the frame body data before decoding this frame (mpg123_framebyframe_decode()).
  23.582 + * A more sane use would be to use this for CRC checking (see mpg123_info() and MPG123_CRC), the first two bytes of the body make up the CRC16 checksum, if present.
  23.583 + * You can provide NULL for a parameter pointer when you are not interested in the value.
  23.584 + *
  23.585 + * \param header the 4-byte MPEG header
  23.586 + * \param bodydata pointer to the frame body stored in the handle (without the header)
  23.587 + * \param bodybytes size of frame body in bytes (without the header)
  23.588 + * \return MPG123_OK if there was a yet un-decoded frame to get the
  23.589 + *    data from, MPG123_BAD_HANDLE or MPG123_ERR otherwise (without further
  23.590 + *    explanation, the error state of the mpg123_handle is not modified by
  23.591 + *    this function).
  23.592 + */
  23.593 +MPG123_EXPORT int mpg123_framedata(mpg123_handle *mh, unsigned long *header, unsigned char **bodydata, size_t *bodybytes);
  23.594 +
  23.595 +/** Get the input position (byte offset in stream) of the last parsed frame.
  23.596 + * This can be used for external seek index building, for example.
  23.597 + * It just returns the internally stored offset, regardless of validity -- you ensure that a valid frame has been parsed before! */
  23.598 +MPG123_EXPORT off_t mpg123_framepos(mpg123_handle *mh);
  23.599 +
  23.600 +/*@}*/
  23.601 +
  23.602 +
  23.603 +/** \defgroup mpg123_seek mpg123 position and seeking
  23.604 + *
  23.605 + * Functions querying and manipulating position in the decoded audio bitstream.
  23.606 + * The position is measured in decoded audio samples, or MPEG frame offset for the specific functions.
  23.607 + * If gapless code is in effect, the positions are adjusted to compensate the skipped padding/delay - meaning, you should not care about that at all and just use the position defined for the samples you get out of the decoder;-)
  23.608 + * The general usage is modelled after stdlib's ftell() and fseek().
  23.609 + * Especially, the whence parameter for the seek functions has the same meaning as the one for fseek() and needs the same constants from stdlib.h: 
  23.610 + * - SEEK_SET: set position to (or near to) specified offset
  23.611 + * - SEEK_CUR: change position by offset from now
  23.612 + * - SEEK_END: set position to offset from end
  23.613 + *
  23.614 + * Note that sample-accurate seek only works when gapless support has been enabled at compile time; seek is frame-accurate otherwise.
  23.615 + * Also, really sample-accurate seeking (meaning that you get the identical sample value after seeking compared to plain decoding up to the position) is only guaranteed when you do not mess with the position code by using MPG123_UPSPEED, MPG123_DOWNSPEED or MPG123_START_FRAME. The first two mainly should cause trouble with NtoM resampling, but in any case with these options in effect, you have to keep in mind that the sample offset is not the same as counting the samples you get from decoding since mpg123 counts the skipped samples, too (or the samples played twice only once)!
  23.616 + * Short: When you care about the sample position, don't mess with those parameters;-)
  23.617 + * Also, seeking is not guaranteed to work for all streams (underlying stream may not support it).
  23.618 + * And yet another caveat: If the stream is concatenated out of differing pieces (Frankenstein stream), seeking may suffer, too.
  23.619 + *
  23.620 + * @{
  23.621 + */
  23.622 +
  23.623 +/** Returns the current position in samples.
  23.624 + *  On the next successful read, you'd get that sample.
  23.625 + *  \return sample offset or MPG123_ERR (null handle)
  23.626 + */
  23.627 +MPG123_EXPORT off_t mpg123_tell(mpg123_handle *mh);
  23.628 +
  23.629 +/** Returns the frame number that the next read will give you data from.
  23.630 + *  \return frame offset or MPG123_ERR (null handle)
  23.631 + */
  23.632 +MPG123_EXPORT off_t mpg123_tellframe(mpg123_handle *mh);
  23.633 +
  23.634 +/** Returns the current byte offset in the input stream.
  23.635 + *  \return byte offset or MPG123_ERR (null handle)
  23.636 + */
  23.637 +MPG123_EXPORT off_t mpg123_tell_stream(mpg123_handle *mh);
  23.638 +
  23.639 +/** Seek to a desired sample offset. 
  23.640 + *  Set whence to SEEK_SET, SEEK_CUR or SEEK_END.
  23.641 + *  \return The resulting offset >= 0 or error/message code */
  23.642 +MPG123_EXPORT off_t mpg123_seek(mpg123_handle *mh, off_t sampleoff, int whence);
  23.643 +
  23.644 +/** Seek to a desired sample offset in data feeding mode. 
  23.645 + *  This just prepares things to be right only if you ensure that the next chunk of input data will be from input_offset byte position.
  23.646 + *  \param input_offset The position it expects to be at the 
  23.647 + *                      next time data is fed to mpg123_decode().
  23.648 + *  \return The resulting offset >= 0 or error/message code */
  23.649 +MPG123_EXPORT off_t mpg123_feedseek(mpg123_handle *mh, off_t sampleoff, int whence, off_t *input_offset);
  23.650 +
  23.651 +/** Seek to a desired MPEG frame index.
  23.652 + *  Set whence to SEEK_SET, SEEK_CUR or SEEK_END.
  23.653 + *  \return The resulting offset >= 0 or error/message code */
  23.654 +MPG123_EXPORT off_t mpg123_seek_frame(mpg123_handle *mh, off_t frameoff, int whence);
  23.655 +
  23.656 +/** Return a MPEG frame offset corresponding to an offset in seconds.
  23.657 + *  This assumes that the samples per frame do not change in the file/stream, which is a good assumption for any sane file/stream only.
  23.658 + *  \return frame offset >= 0 or error/message code */
  23.659 +MPG123_EXPORT off_t mpg123_timeframe(mpg123_handle *mh, double sec);
  23.660 +
  23.661 +/** Give access to the frame index table that is managed for seeking.
  23.662 + *  You are asked not to modify the values... Use mpg123_set_index to set the
  23.663 + *  seek index
  23.664 + *  \param offsets pointer to the index array
  23.665 + *  \param step one index byte offset advances this many MPEG frames
  23.666 + *  \param fill number of recorded index offsets; size of the array
  23.667 + *  \return MPG123_OK on success
  23.668 + */
  23.669 +MPG123_EXPORT int mpg123_index(mpg123_handle *mh, off_t **offsets, off_t *step, size_t *fill);
  23.670 +
  23.671 +/** Set the frame index table
  23.672 + *  Setting offsets to NULL and fill > 0 will allocate fill entries. Setting offsets
  23.673 + *  to NULL and fill to 0 will clear the index and free the allocated memory used by the index.
  23.674 + *  \param offsets pointer to the index array
  23.675 + *  \param step    one index byte offset advances this many MPEG frames
  23.676 + *  \param fill    number of recorded index offsets; size of the array
  23.677 + *  \return MPG123_OK on success
  23.678 + */
  23.679 +MPG123_EXPORT int mpg123_set_index(mpg123_handle *mh, off_t *offsets, off_t step, size_t fill);
  23.680 +
  23.681 +/** Get information about current and remaining frames/seconds.
  23.682 + *  WARNING: This function is there because of special usage by standalone mpg123 and may be removed in the final version of libmpg123!
  23.683 + *  You provide an offset (in frames) from now and a number of output bytes 
  23.684 + *  served by libmpg123 but not yet played. You get the projected current frame 
  23.685 + *  and seconds, as well as the remaining frames/seconds. This does _not_ care 
  23.686 + *  about skipped samples due to gapless playback. */
  23.687 +MPG123_EXPORT int mpg123_position( mpg123_handle *mh, off_t frame_offset, off_t buffered_bytes, off_t *current_frame, off_t *frames_left, double *current_seconds, double *seconds_left);
  23.688 +
  23.689 +/*@}*/
  23.690 +
  23.691 +
  23.692 +/** \defgroup mpg123_voleq mpg123 volume and equalizer
  23.693 + *
  23.694 + * @{
  23.695 + */
  23.696 +
  23.697 +enum mpg123_channels
  23.698 +{
  23.699 +	 MPG123_LEFT=0x1	/**< The Left Channel. */
  23.700 +	,MPG123_RIGHT=0x2	/**< The Right Channel. */
  23.701 +	,MPG123_LR=0x3	/**< Both left and right channel; same as MPG123_LEFT|MPG123_RIGHT */
  23.702 +};
  23.703 +
  23.704 +/** Set the 32 Band Audio Equalizer settings.
  23.705 + *  \param channel Can be MPG123_LEFT, MPG123_RIGHT or MPG123_LEFT|MPG123_RIGHT for both.
  23.706 + *  \param band The equaliser band to change (from 0 to 31)
  23.707 + *  \param val The (linear) adjustment factor.
  23.708 + *  \return MPG123_OK on success
  23.709 + */
  23.710 +MPG123_EXPORT int mpg123_eq(mpg123_handle *mh, enum mpg123_channels channel, int band, double val);
  23.711 +
  23.712 +/** Get the 32 Band Audio Equalizer settings.
  23.713 + *  \param channel Can be MPG123_LEFT, MPG123_RIGHT or MPG123_LEFT|MPG123_RIGHT for (arithmetic mean of) both.
  23.714 + *  \param band The equaliser band to change (from 0 to 31)
  23.715 + *  \return The (linear) adjustment factor (zero for pad parameters) */
  23.716 +MPG123_EXPORT double mpg123_geteq(mpg123_handle *mh, enum mpg123_channels channel, int band);
  23.717 +
  23.718 +/** Reset the 32 Band Audio Equalizer settings to flat
  23.719 + *  \return MPG123_OK on success
  23.720 + */
  23.721 +MPG123_EXPORT int mpg123_reset_eq(mpg123_handle *mh);
  23.722 +
  23.723 +/** Set the absolute output volume including the RVA setting, 
  23.724 + *  vol<0 just applies (a possibly changed) RVA setting. */
  23.725 +MPG123_EXPORT int mpg123_volume(mpg123_handle *mh, double vol);
  23.726 +
  23.727 +/** Adjust output volume including the RVA setting by chosen amount */
  23.728 +MPG123_EXPORT int mpg123_volume_change(mpg123_handle *mh, double change);
  23.729 +
  23.730 +/** Return current volume setting, the actual value due to RVA, and the RVA 
  23.731 + *  adjustment itself. It's all as double float value to abstract the sample 
  23.732 + *  format. The volume values are linear factors / amplitudes (not percent) 
  23.733 + *  and the RVA value is in decibels. */
  23.734 +MPG123_EXPORT int mpg123_getvolume(mpg123_handle *mh, double *base, double *really, double *rva_db);
  23.735 +
  23.736 +/* TODO: Set some preamp in addition / to replace internal RVA handling? */
  23.737 +
  23.738 +/*@}*/
  23.739 +
  23.740 +
  23.741 +/** \defgroup mpg123_status mpg123 status and information
  23.742 + *
  23.743 + * @{
  23.744 + */
  23.745 +
  23.746 +/** Enumeration of the mode types of Variable Bitrate */
  23.747 +enum mpg123_vbr {
  23.748 +	MPG123_CBR=0,	/**< Constant Bitrate Mode (default) */
  23.749 +	MPG123_VBR,		/**< Variable Bitrate Mode */
  23.750 +	MPG123_ABR		/**< Average Bitrate Mode */
  23.751 +};
  23.752 +
  23.753 +/** Enumeration of the MPEG Versions */
  23.754 +enum mpg123_version {
  23.755 +	MPG123_1_0=0,	/**< MPEG Version 1.0 */
  23.756 +	MPG123_2_0,		/**< MPEG Version 2.0 */
  23.757 +	MPG123_2_5		/**< MPEG Version 2.5 */
  23.758 +};
  23.759 +
  23.760 +
  23.761 +/** Enumeration of the MPEG Audio mode.
  23.762 + *  Only the mono mode has 1 channel, the others have 2 channels. */
  23.763 +enum mpg123_mode {
  23.764 +	MPG123_M_STEREO=0,	/**< Standard Stereo. */
  23.765 +	MPG123_M_JOINT,		/**< Joint Stereo. */
  23.766 +	MPG123_M_DUAL,		/**< Dual Channel. */
  23.767 +	MPG123_M_MONO		/**< Single Channel. */
  23.768 +};
  23.769 +
  23.770 +
  23.771 +/** Enumeration of the MPEG Audio flag bits */
  23.772 +enum mpg123_flags {
  23.773 +	MPG123_CRC=0x1,			/**< The bitstream is error protected using 16-bit CRC. */
  23.774 +	MPG123_COPYRIGHT=0x2,	/**< The bitstream is copyrighted. */
  23.775 +	MPG123_PRIVATE=0x4,		/**< The private bit has been set. */
  23.776 +	MPG123_ORIGINAL=0x8	/**< The bitstream is an original, not a copy. */
  23.777 +};
  23.778 +
  23.779 +/** Data structure for storing information about a frame of MPEG Audio */
  23.780 +struct mpg123_frameinfo
  23.781 +{
  23.782 +	enum mpg123_version version;	/**< The MPEG version (1.0/2.0/2.5). */
  23.783 +	int layer;						/**< The MPEG Audio Layer (MP1/MP2/MP3). */
  23.784 +	long rate; 						/**< The sampling rate in Hz. */
  23.785 +	enum mpg123_mode mode;			/**< The audio mode (Mono, Stereo, Joint-stero, Dual Channel). */
  23.786 +	int mode_ext;					/**< The mode extension bit flag. */
  23.787 +	int framesize;					/**< The size of the frame (in bytes, including header). */
  23.788 +	enum mpg123_flags flags;		/**< MPEG Audio flag bits. Just now I realize that it should be declared as int, not enum. It's a bitwise combination of the enum values. */
  23.789 +	int emphasis;					/**< The emphasis type. */
  23.790 +	int bitrate;					/**< Bitrate of the frame (kbps). */
  23.791 +	int abr_rate;					/**< The target average bitrate. */
  23.792 +	enum mpg123_vbr vbr;			/**< The VBR mode. */
  23.793 +};
  23.794 +
  23.795 +/** Get frame information about the MPEG audio bitstream and store it in a mpg123_frameinfo structure.
  23.796 + *  \return MPG123_OK on success
  23.797 + */
  23.798 +MPG123_EXPORT int mpg123_info(mpg123_handle *mh, struct mpg123_frameinfo *mi);
  23.799 +
  23.800 +/** Get the safe output buffer size for all cases (when you want to replace the internal buffer) */
  23.801 +MPG123_EXPORT size_t mpg123_safe_buffer(void); 
  23.802 +
  23.803 +/** Make a full parsing scan of each frame in the file. ID3 tags are found. An accurate length 
  23.804 + *  value is stored. Seek index will be filled. A seek back to current position 
  23.805 + *  is performed. At all, this function refuses work when stream is 
  23.806 + *  not seekable. 
  23.807 + *  \return MPG123_OK on success
  23.808 + */
  23.809 +MPG123_EXPORT int mpg123_scan(mpg123_handle *mh);
  23.810 +
  23.811 +/** Return, if possible, the full (expected) length of current track in samples.
  23.812 +  * \return length >= 0 or MPG123_ERR if there is no length guess possible. */
  23.813 +MPG123_EXPORT off_t mpg123_length(mpg123_handle *mh);
  23.814 +
  23.815 +/** Override the value for file size in bytes.
  23.816 +  * Useful for getting sensible track length values in feed mode or for HTTP streams.
  23.817 +  * \return MPG123_OK on success
  23.818 +  */
  23.819 +MPG123_EXPORT int mpg123_set_filesize(mpg123_handle *mh, off_t size);
  23.820 +
  23.821 +/** Returns the time (seconds) per frame; <0 is error. */
  23.822 +MPG123_EXPORT double mpg123_tpf(mpg123_handle *mh);
  23.823 +
  23.824 +/** Returns the samples per frame for the most recently parsed frame; <0 is error. */
  23.825 +MPG123_EXPORT int mpg123_spf(mpg123_handle *mh);
  23.826 +
  23.827 +/** Get and reset the clip count. */
  23.828 +MPG123_EXPORT long mpg123_clip(mpg123_handle *mh);
  23.829 +
  23.830 +
  23.831 +/** The key values for state information from mpg123_getstate(). */
  23.832 +enum mpg123_state
  23.833 +{
  23.834 +	 MPG123_ACCURATE = 1 /**< Query if positons are currently accurate (integer value, 0 if false, 1 if true). */
  23.835 +	,MPG123_BUFFERFILL   /**< Get fill of internal (feed) input buffer as integer byte count returned as long and as double. An error is returned on integer overflow while converting to (signed) long, but the returned floating point value shold still be fine. */
  23.836 +	,MPG123_FRANKENSTEIN /**< Stream consists of carelessly stitched together files. Seeking may yield unexpected results (also with MPG123_ACCURATE, it may be confused). */
  23.837 +	,MPG123_FRESH_DECODER /**< Decoder structure has been updated, possibly indicating changed stream (integer value, 0 if false, 1 if true). Flag is cleared after retrieval. */
  23.838 +};
  23.839 +
  23.840 +/** Get various current decoder/stream state information.
  23.841 + *  \param key the key to identify the information to give.
  23.842 + *  \param val the address to return (long) integer values to
  23.843 + *  \param fval the address to return floating point values to
  23.844 + *  \return MPG123_OK on success
  23.845 + */
  23.846 +MPG123_EXPORT int mpg123_getstate(mpg123_handle *mh, enum mpg123_state key, long *val, double *fval);
  23.847 +
  23.848 +/*@}*/
  23.849 +
  23.850 +
  23.851 +/** \defgroup mpg123_metadata mpg123 metadata handling
  23.852 + *
  23.853 + * Functions to retrieve the metadata from MPEG Audio files and streams.
  23.854 + * Also includes string handling functions.
  23.855 + *
  23.856 + * @{
  23.857 + */
  23.858 +
  23.859 +/** Data structure for storing strings in a safer way than a standard C-String.
  23.860 + *  Can also hold a number of null-terminated strings. */
  23.861 +typedef struct 
  23.862 +{
  23.863 +	char* p;     /**< pointer to the string data */
  23.864 +	size_t size; /**< raw number of bytes allocated */
  23.865 +	size_t fill; /**< number of used bytes (including closing zero byte) */
  23.866 +} mpg123_string;
  23.867 +
  23.868 +/** Create and allocate memory for a new mpg123_string */
  23.869 +MPG123_EXPORT void mpg123_init_string(mpg123_string* sb);
  23.870 +
  23.871 +/** Free-up mempory for an existing mpg123_string */
  23.872 +MPG123_EXPORT void mpg123_free_string(mpg123_string* sb);
  23.873 +
  23.874 +/** Change the size of a mpg123_string
  23.875 + *  \return 0 on error, 1 on success */
  23.876 +MPG123_EXPORT int  mpg123_resize_string(mpg123_string* sb, size_t news);
  23.877 +
  23.878 +/** Increase size of a mpg123_string if necessary (it may stay larger).
  23.879 + *  Note that the functions for adding and setting in current libmpg123 use this instead of mpg123_resize_string().
  23.880 + *  That way, you can preallocate memory and safely work afterwards with pieces.
  23.881 + *  \return 0 on error, 1 on success */
  23.882 +MPG123_EXPORT int  mpg123_grow_string(mpg123_string* sb, size_t news);
  23.883 +
  23.884 +/** Copy the contents of one mpg123_string string to another.
  23.885 + *  \return 0 on error, 1 on success */
  23.886 +MPG123_EXPORT int  mpg123_copy_string(mpg123_string* from, mpg123_string* to);
  23.887 +
  23.888 +/** Append a C-String to an mpg123_string
  23.889 + *  \return 0 on error, 1 on success */
  23.890 +MPG123_EXPORT int  mpg123_add_string(mpg123_string* sb, const char* stuff);
  23.891 +
  23.892 +/** Append a C-substring to an mpg123 string
  23.893 + *  \return 0 on error, 1 on success
  23.894 + *  \param from offset to copy from
  23.895 + *  \param count number of characters to copy (a null-byte is always appended) */
  23.896 +MPG123_EXPORT int  mpg123_add_substring(mpg123_string *sb, const char *stuff, size_t from, size_t count);
  23.897 +
  23.898 +/** Set the conents of a mpg123_string to a C-string
  23.899 + *  \return 0 on error, 1 on success */
  23.900 +MPG123_EXPORT int  mpg123_set_string(mpg123_string* sb, const char* stuff);
  23.901 +
  23.902 +/** Set the contents of a mpg123_string to a C-substring
  23.903 + *  \return 0 on error, 1 on success
  23.904 + *  \param from offset to copy from
  23.905 + *  \param count number of characters to copy (a null-byte is always appended) */
  23.906 +MPG123_EXPORT int  mpg123_set_substring(mpg123_string *sb, const char *stuff, size_t from, size_t count);
  23.907 +
  23.908 +/** Count characters in a mpg123 string (non-null bytes or UTF-8 characters).
  23.909 + *  \return character count
  23.910 + *  \param sb the string
  23.911 + *  \param utf8 a flag to tell if the string is in utf8 encoding
  23.912 + *  Even with the fill property, the character count is not obvious as there could be multiple trailing null bytes.
  23.913 +*/
  23.914 +MPG123_EXPORT size_t mpg123_strlen(mpg123_string *sb, int utf8);
  23.915 +
  23.916 +/** Remove trailing \r and \n, if present.
  23.917 + *  \return 0 on error, 1 on success
  23.918 + *  \param sb the string
  23.919 + */
  23.920 +MPG123_EXPORT int mpg123_chomp_string(mpg123_string *sb);
  23.921 +
  23.922 +/** The mpg123 text encodings. This contains encodings we encounter in ID3 tags or ICY meta info. */
  23.923 +enum mpg123_text_encoding
  23.924 +{
  23.925 +	 mpg123_text_unknown  = 0 /**< Unkown encoding... mpg123_id3_encoding can return that on invalid codes. */
  23.926 +	,mpg123_text_utf8     = 1 /**< UTF-8 */
  23.927 +	,mpg123_text_latin1   = 2 /**< ISO-8859-1. Note that sometimes latin1 in ID3 is abused for totally different encodings. */
  23.928 +	,mpg123_text_icy      = 3 /**< ICY metadata encoding, usually CP-1252 but we take it as UTF-8 if it qualifies as such. */
  23.929 +	,mpg123_text_cp1252   = 4 /**< Really CP-1252 without any guessing. */
  23.930 +	,mpg123_text_utf16    = 5 /**< Some UTF-16 encoding. The last of a set of leading BOMs (byte order mark) rules.
  23.931 +	                           *   When there is no BOM, big endian ordering is used. Note that UCS-2 qualifies as UTF-8 when
  23.932 +	                           *   you don't mess with the reserved code points. If you want to decode little endian data
  23.933 +	                           *   without BOM you need to prepend 0xff 0xfe yourself. */
  23.934 +	,mpg123_text_utf16bom = 6 /**< Just an alias for UTF-16, ID3v2 has this as distinct code. */
  23.935 +	,mpg123_text_utf16be  = 7 /**< Another alias for UTF16 from ID3v2. Note, that, because of the mess that is reality,
  23.936 +	                           *   BOMs are used if encountered. There really is not much distinction between the UTF16 types for mpg123
  23.937 +	                           *   One exception: Since this is seen in ID3v2 tags, leading null bytes are skipped for all other UTF16
  23.938 +	                           *   types (we expect a BOM before real data there), not so for utf16be!*/
  23.939 +	,mpg123_text_max      = 7 /**< Placeholder for the maximum encoding value. */
  23.940 +};
  23.941 +
  23.942 +/** The encoding byte values from ID3v2. */
  23.943 +enum mpg123_id3_enc
  23.944 +{
  23.945 +	 mpg123_id3_latin1   = 0 /**< Note: This sometimes can mean anything in practice... */
  23.946 +	,mpg123_id3_utf16bom = 1 /**< UTF16, UCS-2 ... it's all the same for practical purposes. */
  23.947 +	,mpg123_id3_utf16be  = 2 /**< Big-endian UTF-16, BOM see note for mpg123_text_utf16be. */
  23.948 +	,mpg123_id3_utf8     = 3 /**< Our lovely overly ASCII-compatible 8 byte encoding for the world. */
  23.949 +	,mpg123_id3_enc_max  = 3 /**< Placeholder to check valid range of encoding byte. */
  23.950 +};
  23.951 +
  23.952 +/** Convert ID3 encoding byte to mpg123 encoding index. */
  23.953 +MPG123_EXPORT enum mpg123_text_encoding mpg123_enc_from_id3(unsigned char id3_enc_byte);
  23.954 +
  23.955 +/** Store text data in string, after converting to UTF-8 from indicated encoding
  23.956 + *  \return 0 on error, 1 on success (on error, mpg123_free_string is called on sb)
  23.957 + *  \param sb  target string
  23.958 + *  \param enc mpg123 text encoding value
  23.959 + *  \param source source buffer with plain unsigned bytes (you might need to cast from char *)
  23.960 + *  \param source_size number of bytes in the source buffer
  23.961 + *
  23.962 + *  A prominent error can be that you provided an unknown encoding value, or this build of libmpg123 lacks support for certain encodings (ID3 or ICY stuff missing).
  23.963 + *  Also, you might want to take a bit of care with preparing the data; for example, strip leading zeroes (I have seen that).
  23.964 + */
  23.965 +MPG123_EXPORT int mpg123_store_utf8(mpg123_string *sb, enum mpg123_text_encoding enc, const unsigned char *source, size_t source_size);
  23.966 +
  23.967 +/** Sub data structure for ID3v2, for storing various text fields (including comments).
  23.968 + *  This is for ID3v2 COMM, TXXX and all the other text fields.
  23.969 + *  Only COMM and TXXX have a description, only COMM and USLT have a language.
  23.970 + *  You should consult the ID3v2 specification for the use of the various text fields ("frames" in ID3v2 documentation, I use "fields" here to separate from MPEG frames). */
  23.971 +typedef struct
  23.972 +{
  23.973 +	char lang[3]; /**< Three-letter language code (not terminated). */
  23.974 +	char id[4];   /**< The ID3v2 text field id, like TALB, TPE2, ... (4 characters, no string termination). */
  23.975 +	mpg123_string description; /**< Empty for the generic comment... */
  23.976 +	mpg123_string text;        /**< ... */
  23.977 +} mpg123_text;
  23.978 +
  23.979 +/** The picture type values from ID3v2. */
  23.980 +enum mpg123_id3_pic_type
  23.981 +{
  23.982 +	 mpg123_id3_pic_other          =  0
  23.983 +	,mpg123_id3_pic_icon           =  1
  23.984 +	,mpg123_id3_pic_other_icon     =  2
  23.985 +	,mpg123_id3_pic_front_cover    =  3
  23.986 +	,mpg123_id3_pic_back_cover     =  4
  23.987 +	,mpg123_id3_pic_leaflet        =  5
  23.988 +	,mpg123_id3_pic_media          =  6
  23.989 +	,mpg123_id3_pic_lead           =  7
  23.990 +	,mpg123_id3_pic_artist         =  8
  23.991 +	,mpg123_id3_pic_conductor      =  9
  23.992 +	,mpg123_id3_pic_orchestra      = 10
  23.993 +	,mpg123_id3_pic_composer       = 11
  23.994 +	,mpg123_id3_pic_lyricist       = 12
  23.995 +	,mpg123_id3_pic_location       = 13
  23.996 +	,mpg123_id3_pic_recording      = 14
  23.997 +	,mpg123_id3_pic_performance    = 15
  23.998 +	,mpg123_id3_pic_video          = 16
  23.999 +	,mpg123_id3_pic_fish           = 17
 23.1000 +	,mpg123_id3_pic_illustration   = 18
 23.1001 +	,mpg123_id3_pic_artist_logo    = 19
 23.1002 +	,mpg123_id3_pic_publisher_logo = 20
 23.1003 +};
 23.1004 +
 23.1005 +/** Sub data structure for ID3v2, for storing picture data including comment.
 23.1006 + *  This is for the ID3v2 APIC field. You should consult the ID3v2 specification
 23.1007 + *  for the use of the APIC field ("frames" in ID3v2 documentation, I use "fields"
 23.1008 + *  here to separate from MPEG frames). */
 23.1009 +typedef struct
 23.1010 +{
 23.1011 +	char type;
 23.1012 +	mpg123_string description;
 23.1013 +	mpg123_string mime_type;
 23.1014 +	size_t size;
 23.1015 +	unsigned char* data;
 23.1016 +} mpg123_picture;
 23.1017 +
 23.1018 +/** Data structure for storing IDV3v2 tags.
 23.1019 + *  This structure is not a direct binary mapping with the file contents.
 23.1020 + *  The ID3v2 text frames are allowed to contain multiple strings.
 23.1021 + *  So check for null bytes until you reach the mpg123_string fill.
 23.1022 + *  All text is encoded in UTF-8. */
 23.1023 +typedef struct
 23.1024 +{
 23.1025 +	unsigned char version; /**< 3 or 4 for ID3v2.3 or ID3v2.4. */
 23.1026 +	mpg123_string *title;   /**< Title string (pointer into text_list). */
 23.1027 +	mpg123_string *artist;  /**< Artist string (pointer into text_list). */
 23.1028 +	mpg123_string *album;   /**< Album string (pointer into text_list). */
 23.1029 +	mpg123_string *year;    /**< The year as a string (pointer into text_list). */
 23.1030 +	mpg123_string *genre;   /**< Genre String (pointer into text_list). The genre string(s) may very well need postprocessing, esp. for ID3v2.3. */
 23.1031 +	mpg123_string *comment; /**< Pointer to last encountered comment text with empty description. */
 23.1032 +	/* Encountered ID3v2 fields are appended to these lists.
 23.1033 +	   There can be multiple occurences, the pointers above always point to the last encountered data. */
 23.1034 +	mpg123_text    *comment_list; /**< Array of comments. */
 23.1035 +	size_t          comments;     /**< Number of comments. */
 23.1036 +	mpg123_text    *text;         /**< Array of ID3v2 text fields (including USLT) */
 23.1037 +	size_t          texts;        /**< Numer of text fields. */
 23.1038 +	mpg123_text    *extra;        /**< The array of extra (TXXX) fields. */
 23.1039 +	size_t          extras;       /**< Number of extra text (TXXX) fields. */
 23.1040 +	mpg123_picture  *picture;     /**< Array of ID3v2 pictures fields (APIC). */
 23.1041 +	size_t           pictures;    /**< Number of picture (APIC) fields. */
 23.1042 +} mpg123_id3v2;
 23.1043 +
 23.1044 +/** Data structure for ID3v1 tags (the last 128 bytes of a file).
 23.1045 + *  Don't take anything for granted (like string termination)!
 23.1046 + *  Also note the change ID3v1.1 did: comment[28] = 0; comment[29] = track_number
 23.1047 + *  It is your task to support ID3v1 only or ID3v1.1 ...*/
 23.1048 +typedef struct
 23.1049 +{
 23.1050 +	char tag[3];         /**< Always the string "TAG", the classic intro. */
 23.1051 +	char title[30];      /**< Title string.  */
 23.1052 +	char artist[30];     /**< Artist string. */
 23.1053 +	char album[30];      /**< Album string. */
 23.1054 +	char year[4];        /**< Year string. */
 23.1055 +	char comment[30];    /**< Comment string. */
 23.1056 +	unsigned char genre; /**< Genre index. */
 23.1057 +} mpg123_id3v1;
 23.1058 +
 23.1059 +#define MPG123_ID3     0x3 /**< 0011 There is some ID3 info. Also matches 0010 or NEW_ID3. */
 23.1060 +#define MPG123_NEW_ID3 0x1 /**< 0001 There is ID3 info that changed since last call to mpg123_id3. */
 23.1061 +#define MPG123_ICY     0xc /**< 1100 There is some ICY info. Also matches 0100 or NEW_ICY.*/
 23.1062 +#define MPG123_NEW_ICY 0x4 /**< 0100 There is ICY info that changed since last call to mpg123_icy. */
 23.1063 +
 23.1064 +/** Query if there is (new) meta info, be it ID3 or ICY (or something new in future).
 23.1065 +   The check function returns a combination of flags. */
 23.1066 +MPG123_EXPORT int mpg123_meta_check(mpg123_handle *mh); /* On error (no valid handle) just 0 is returned. */
 23.1067 +
 23.1068 +/** Clean up meta data storage (ID3v2 and ICY), freeing memory. */
 23.1069 +MPG123_EXPORT void mpg123_meta_free(mpg123_handle *mh);
 23.1070 +
 23.1071 +/** Point v1 and v2 to existing data structures wich may change on any next read/decode function call.
 23.1072 + *  v1 and/or v2 can be set to NULL when there is no corresponding data.
 23.1073 + *  \return MPG123_OK on success
 23.1074 + */
 23.1075 +MPG123_EXPORT int mpg123_id3(mpg123_handle *mh, mpg123_id3v1 **v1, mpg123_id3v2 **v2);
 23.1076 +
 23.1077 +/** Point icy_meta to existing data structure wich may change on any next read/decode function call.
 23.1078 + *  \return MPG123_OK on success
 23.1079 + */
 23.1080 +MPG123_EXPORT int mpg123_icy(mpg123_handle *mh, char **icy_meta); /* same for ICY meta string */
 23.1081 +
 23.1082 +/** Decode from windows-1252 (the encoding ICY metainfo used) to UTF-8.
 23.1083 + *  Note that this is very similar to mpg123_store_utf8(&sb, mpg123_text_icy, icy_text, strlen(icy_text+1)) .
 23.1084 + *  \param icy_text The input data in ICY encoding
 23.1085 + *  \return pointer to newly allocated buffer with UTF-8 data (You free() it!) */
 23.1086 +MPG123_EXPORT char* mpg123_icy2utf8(const char* icy_text);
 23.1087 +
 23.1088 +
 23.1089 +/* @} */
 23.1090 +
 23.1091 +
 23.1092 +/** \defgroup mpg123_advpar mpg123 advanced parameter API
 23.1093 + *
 23.1094 + *  Direct access to a parameter set without full handle around it.
 23.1095 + *	Possible uses:
 23.1096 + *    - Influence behaviour of library _during_ initialization of handle (MPG123_VERBOSE).
 23.1097 + *    - Use one set of parameters for multiple handles.
 23.1098 + *
 23.1099 + *	The functions for handling mpg123_pars (mpg123_par() and mpg123_fmt() 
 23.1100 + *  family) directly return a fully qualified mpg123 error code, the ones 
 23.1101 + *  operating on full handles normally MPG123_OK or MPG123_ERR, storing the 
 23.1102 + *  specific error code itseld inside the handle. 
 23.1103 + *
 23.1104 + * @{
 23.1105 + */
 23.1106 +
 23.1107 +/** Opaque structure for the libmpg123 decoder parameters. */
 23.1108 +struct mpg123_pars_struct;
 23.1109 +
 23.1110 +/** Opaque structure for the libmpg123 decoder parameters. */
 23.1111 +typedef struct mpg123_pars_struct   mpg123_pars;
 23.1112 +
 23.1113 +/** Create a handle with preset parameters. */
 23.1114 +MPG123_EXPORT mpg123_handle *mpg123_parnew(mpg123_pars *mp, const char* decoder, int *error);
 23.1115 +
 23.1116 +/** Allocate memory for and return a pointer to a new mpg123_pars */
 23.1117 +MPG123_EXPORT mpg123_pars *mpg123_new_pars(int *error);
 23.1118 +
 23.1119 +/** Delete and free up memory used by a mpg123_pars data structure */
 23.1120 +MPG123_EXPORT void         mpg123_delete_pars(mpg123_pars* mp);
 23.1121 +
 23.1122 +/** Configure mpg123 parameters to accept no output format at all, 
 23.1123 + * use before specifying supported formats with mpg123_format
 23.1124 + *  \return MPG123_OK on success
 23.1125 + */
 23.1126 +MPG123_EXPORT int mpg123_fmt_none(mpg123_pars *mp);
 23.1127 +
 23.1128 +/** Configure mpg123 parameters to accept all formats 
 23.1129 + *  (also any custom rate you may set) -- this is default. 
 23.1130 + *  \return MPG123_OK on success
 23.1131 + */
 23.1132 +MPG123_EXPORT int mpg123_fmt_all(mpg123_pars *mp);
 23.1133 +
 23.1134 +/** Set the audio format support of a mpg123_pars in detail:
 23.1135 +	\param rate The sample rate value (in Hertz).
 23.1136 +	\param channels A combination of MPG123_STEREO and MPG123_MONO.
 23.1137 +	\param encodings A combination of accepted encodings for rate and channels, p.ex MPG123_ENC_SIGNED16|MPG123_ENC_ULAW_8 (or 0 for no support).
 23.1138 +	\return MPG123_OK on success
 23.1139 +*/
 23.1140 +MPG123_EXPORT int mpg123_fmt(mpg123_pars *mp, long rate, int channels, int encodings); /* 0 is good, -1 is error */
 23.1141 +
 23.1142 +/** Check to see if a specific format at a specific rate is supported 
 23.1143 + *  by mpg123_pars.
 23.1144 + *  \return 0 for no support (that includes invalid parameters), MPG123_STEREO, 
 23.1145 + *          MPG123_MONO or MPG123_STEREO|MPG123_MONO. */
 23.1146 +MPG123_EXPORT int mpg123_fmt_support(mpg123_pars *mp,   long rate, int encoding);
 23.1147 +
 23.1148 +/** Set a specific parameter, for a specific mpg123_pars, using a parameter 
 23.1149 + *  type key chosen from the mpg123_parms enumeration, to the specified value. */
 23.1150 +MPG123_EXPORT int mpg123_par(mpg123_pars *mp, enum mpg123_parms type, long value, double fvalue);
 23.1151 +
 23.1152 +/** Get a specific parameter, for a specific mpg123_pars. 
 23.1153 + *  See the mpg123_parms enumeration for a list of available parameters. */
 23.1154 +MPG123_EXPORT int mpg123_getpar(mpg123_pars *mp, enum mpg123_parms type, long *val, double *fval);
 23.1155 +
 23.1156 +/* @} */
 23.1157 +
 23.1158 +
 23.1159 +/** \defgroup mpg123_lowio mpg123 low level I/O
 23.1160 +  * You may want to do tricky stuff with I/O that does not work with mpg123's default file access or you want to make it decode into your own pocket...
 23.1161 +  *
 23.1162 +  * @{ */
 23.1163 +
 23.1164 +/** Replace default internal buffer with user-supplied buffer.
 23.1165 +  * Instead of working on it's own private buffer, mpg123 will directly use the one you provide for storing decoded audio.
 23.1166 +  * Note that the required buffer size could be bigger than expected from output
 23.1167 +  * encoding if libmpg123 has to convert from primary decoder output (p.ex. 32 bit
 23.1168 +  * storage for 24 bit output.
 23.1169 +  * \param data pointer to user buffer
 23.1170 +  * \param size of buffer in bytes
 23.1171 +  * \return MPG123_OK on success
 23.1172 +  */
 23.1173 +MPG123_EXPORT int mpg123_replace_buffer(mpg123_handle *mh, unsigned char *data, size_t size);
 23.1174 +
 23.1175 +/** The max size of one frame's decoded output with current settings.
 23.1176 + *  Use that to determine an appropriate minimum buffer size for decoding one frame. */
 23.1177 +MPG123_EXPORT size_t mpg123_outblock(mpg123_handle *mh);
 23.1178 +
 23.1179 +/** Replace low-level stream access functions; read and lseek as known in POSIX.
 23.1180 + *  You can use this to make any fancy file opening/closing yourself, 
 23.1181 + *  using mpg123_open_fd() to set the file descriptor for your read/lseek (doesn't need to be a "real" file descriptor...).
 23.1182 + *  Setting a function to NULL means that the default internal read is 
 23.1183 + *  used (active from next mpg123_open call on).
 23.1184 + *  Note: As it would be troublesome to mess with this while having a file open,
 23.1185 + *  this implies mpg123_close(). */
 23.1186 +MPG123_EXPORT int mpg123_replace_reader(mpg123_handle *mh, ssize_t (*r_read) (int, void *, size_t), off_t (*r_lseek)(int, off_t, int));
 23.1187 +
 23.1188 +/** Replace I/O functions with your own ones operating on some kind of handle instead of integer descriptors.
 23.1189 + *  The handle is a void pointer, so you can pass any data you want...
 23.1190 + *  mpg123_open_handle() is the call you make to use the I/O defined here.
 23.1191 + *  There is no fallback to internal read/seek here.
 23.1192 + *  Note: As it would be troublesome to mess with this while having a file open,
 23.1193 + *  this mpg123_close() is implied here.
 23.1194 + *  \param r_read The callback for reading (behaviour like posix read).
 23.1195 + *  \param r_lseek The callback for seeking (like posix lseek).
 23.1196 + *  \param cleanup A callback to clean up an I/O handle on mpg123_close, can be NULL for none (you take care of cleaning your handles). */
 23.1197 +MPG123_EXPORT int mpg123_replace_reader_handle(mpg123_handle *mh, ssize_t (*r_read) (void *, void *, size_t), off_t (*r_lseek)(void *, off_t, int), void (*cleanup)(void*));
 23.1198 +
 23.1199 +/* @} */
 23.1200 +
 23.1201 +#ifdef __cplusplus
 23.1202 +}
 23.1203 +#endif
 23.1204 +
 23.1205 +#endif
    24.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    24.2 +++ b/Xcode/Frameworks/mpg123.framework/Versions/A/Resources/Info.plist	Thu Oct 11 11:50:10 2018 +0300
    24.3 @@ -0,0 +1,24 @@
    24.4 +<?xml version="1.0" encoding="UTF-8"?>
    24.5 +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    24.6 +<plist version="1.0">
    24.7 +<dict>
    24.8 +	<key>CFBundleDevelopmentRegion</key>
    24.9 +	<string>English</string>
   24.10 +	<key>CFBundleExecutable</key>
   24.11 +	<string>mpg123</string>
   24.12 +	<key>CFBundleGetInfoString</key>
   24.13 +	<string>libmpg123 1.22.4</string>
   24.14 +	<key>CFBundleInfoDictionaryVersion</key>
   24.15 +	<string>6.0</string>
   24.16 +	<key>CFBundleName</key>
   24.17 +	<string>mpg123</string>
   24.18 +	<key>CFBundlePackageType</key>
   24.19 +	<string>FMWK</string>
   24.20 +	<key>CFBundleShortVersionString</key>
   24.21 +	<string>1.22.4</string>
   24.22 +	<key>CFBundleSignature</key>
   24.23 +	<string>????</string>
   24.24 +	<key>CFBundleVersion</key>
   24.25 +	<string>1.22.4</string>
   24.26 +</dict>
   24.27 +</plist>
    25.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    25.2 +++ b/Xcode/Frameworks/mpg123.framework/Versions/A/Resources/LICENSE.mpg123.txt	Thu Oct 11 11:50:10 2018 +0300
    25.3 @@ -0,0 +1,772 @@
    25.4 +This is the file that contains the terms of use, copying, etc. for the mpg123 distribution package.
    25.5 +
    25.6 +Main message, to include in "About ..." boxes, etc:
    25.7 +
    25.8 +	Copyright (c) 1995-2013 by Michael Hipp and others,
    25.9 +	free software under the terms of the LGPL v2.1
   25.10 +
   25.11 +There is an attempt to cover the actual list of authors in the AUTHORS file.
   25.12 +Project maintainer since 2006 is Thomas Orgis and many people have contributed
   25.13 +since the Michael Hipp era, but he stays the initial source and it would
   25.14 +be impractical to count them all individually, so it's "and others".
   25.15 +Source files contain the phrase "the mpg123 project" to the same effect
   25.16 +in their license boilerplate; especially those that were added after
   25.17 +maintainership changed. The person mainly responsible for the first version
   25.18 +is usually named in the phrase "initially written by ...".
   25.19 +
   25.20 +All files in the distribution that don't carry a license note on their own are
   25.21 +licensed under the terms of the LGPL 2.1; exceptions may apply, especially to
   25.22 +files not in the official distribution but in the revision control repository.
   25.23 +
   25.24 +The formal license text follows.
   25.25 +
   25.26 +=======================
   25.27 +1. The LGPL version 2.1
   25.28 +=======================
   25.29 +
   25.30 +
   25.31 +  GNU LESSER GENERAL PUBLIC LICENSE
   25.32 +       Version 2.1, February 1999
   25.33 +
   25.34 + Copyright (C) 1991, 1999 Free Software Foundation, Inc.
   25.35 + 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
   25.36 + Everyone is permitted to copy and distribute verbatim copies
   25.37 + of this license document, but changing it is not allowed.
   25.38 +
   25.39 +[This is the first released version of the Lesser GPL.  It also counts
   25.40 + as the successor of the GNU Library Public License, version 2, hence
   25.41 + the version number 2.1.]
   25.42 +
   25.43 +    Preamble
   25.44 +
   25.45 +  The licenses for most software are designed to take away your
   25.46 +freedom to share and change it.  By contrast, the GNU General Public
   25.47 +Licenses are intended to guarantee your freedom to share and change
   25.48 +free software--to make sure the software is free for all its users.
   25.49 +
   25.50 +  This license, the Lesser General Public License, applies to some
   25.51 +specially designated software packages--typically libraries--of the
   25.52 +Free Software Foundation and other authors who decide to use it.  You
   25.53 +can use it too, but we suggest you first think carefully about whether
   25.54 +this license or the ordinary General Public License is the better
   25.55 +strategy to use in any particular case, based on the explanations below.
   25.56 +
   25.57 +  When we speak of free software, we are referring to freedom of use,
   25.58 +not price.  Our General Public Licenses are designed to make sure that
   25.59 +you have the freedom to distribute copies of free software (and charge
   25.60 +for this service if you wish); that you receive source code or can get
   25.61 +it if you want it; that you can change the software and use pieces of
   25.62 +it in new free programs; and that you are informed that you can do
   25.63 +these things.
   25.64 +
   25.65 +  To protect your rights, we need to make restrictions that forbid
   25.66 +distributors to deny you these rights or to ask you to surrender these
   25.67 +rights.  These restrictions translate to certain responsibilities for
   25.68 +you if you distribute copies of the library or if you modify it.
   25.69 +
   25.70 +  For example, if you distribute copies of the library, whether gratis
   25.71 +or for a fee, you must give the recipients all the rights that we gave
   25.72 +you.  You must make sure that they, too, receive or can get the source
   25.73 +code.  If you link other code with the library, you must provide
   25.74 +complete object files to the recipients, so that they can relink them
   25.75 +with the library after making changes to the library and recompiling
   25.76 +it.  And you must show them these terms so they know their rights.
   25.77 +
   25.78 +  We protect your rights with a two-step method: (1) we copyright the
   25.79 +library, and (2) we offer you this license, which gives you legal
   25.80 +permission to copy, distribute and/or modify the library.
   25.81 +
   25.82 +  To protect each distributor, we want to make it very clear that
   25.83 +there is no warranty for the free library.  Also, if the library is
   25.84 +modified by someone else and passed on, the recipients should know
   25.85 +that what they have is not the original version, so that the original
   25.86 +author's reputation will not be affected by problems that might be
   25.87 +introduced by others.
   25.88 +
   25.89 +  Finally, software patents pose a constant threat to the existence of
   25.90 +any free program.  We wish to make sure that a company cannot
   25.91 +effectively restrict the users of a free program by obtaining a
   25.92 +restrictive license from a patent holder.  Therefore, we insist that
   25.93 +any patent license obtained for a version of the library must be
   25.94 +consistent with the full freedom of use specified in this license.
   25.95 +
   25.96 +  Most GNU software, including some libraries, is covered by the
   25.97 +ordinary GNU General Public License.  This license, the GNU Lesser
   25.98 +General Public License, applies to certain designated libraries, and
   25.99 +is quite different from the ordinary General Public License.  We use
  25.100 +this license for certain libraries in order to permit linking those
  25.101 +libraries into non-free programs.
  25.102 +
  25.103 +  When a program is linked with a library, whether statically or using
  25.104 +a shared library, the combination of the two is legally speaking a
  25.105 +combined work, a derivative of the original library.  The ordinary
  25.106 +General Public License therefore permits such linking only if the
  25.107 +entire combination fits its criteria of freedom.  The Lesser General
  25.108 +Public License permits more lax criteria for linking other code with
  25.109 +the library.
  25.110 +
  25.111 +  We call this license the "Lesser" General Public License because it
  25.112 +does Less to protect the user's freedom than the ordinary General
  25.113 +Public License.  It also provides other free software developers Less
  25.114 +of an advantage over competing non-free programs.  These disadvantages
  25.115 +are the reason we use the ordinary General Public License for many
  25.116 +libraries.  However, the Lesser license provides advantages in certain
  25.117 +special circumstances.
  25.118 +
  25.119 +  For example, on rare occasions, there may be a special need to
  25.120 +encourage the widest possible use of a certain library, so that it becomes
  25.121 +a de-facto standard.  To achieve this, non-free programs must be
  25.122 +allowed to use the library.  A more frequent case is that a free
  25.123 +library does the same job as widely used non-free libraries.  In this
  25.124 +case, there is little to gain by limiting the free library to free
  25.125 +software only, so we use the Lesser General Public License.
  25.126 +
  25.127 +  In other cases, permission to use a particular library in non-free
  25.128 +programs enables a greater number of people to use a large body of
  25.129 +free software.  For example, permission to use the GNU C Library in
  25.130 +non-free programs enables many more people to use the whole GNU
  25.131 +operating system, as well as its variant, the GNU/Linux operating
  25.132 +system.
  25.133 +
  25.134 +  Although the Lesser General Public License is Less protective of the
  25.135 +users' freedom, it does ensure that the user of a program that is
  25.136 +linked with the Library has the freedom and the wherewithal to run
  25.137 +that program using a modified version of the Library.
  25.138 +
  25.139 +  The precise terms and conditions for copying, distribution and
  25.140 +modification follow.  Pay close attention to the difference between a
  25.141 +"work based on the library" and a "work that uses the library".  The
  25.142 +former contains code derived from the library, whereas the latter must
  25.143 +be combined with the library in order to run.
  25.144 +
  25.145 +  GNU LESSER GENERAL PUBLIC LICENSE
  25.146 +   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
  25.147 +
  25.148 +  0. This License Agreement applies to any software library or other
  25.149 +program which contains a notice placed by the copyright holder or
  25.150 +other authorized party saying it may be distributed under the terms of
  25.151 +this Lesser General Public License (also called "this License").
  25.152 +Each licensee is addressed as "you".
  25.153 +
  25.154 +  A "library" means a collection of software functions and/or data
  25.155 +prepared so as to be conveniently linked with application programs
  25.156 +(which use some of those functions and data) to form executables.
  25.157 +
  25.158 +  The "Library", below, refers to any such software library or work
  25.159 +which has been distributed under these terms.  A "work based on the
  25.160 +Library" means either the Library or any derivative work under
  25.161 +copyright law: that is to say, a work containing the Library or a
  25.162 +portion of it, either verbatim or with modifications and/or translated
  25.163 +straightforwardly into another language.  (Hereinafter, translation is
  25.164 +included without limitation in the term "modification".)
  25.165 +
  25.166 +  "Source code" for a work means the preferred form of the work for
  25.167 +making modifications to it.  For a library, complete source code means
  25.168 +all the source code for all modules it contains, plus any associated
  25.169 +interface definition files, plus the scripts used to control compilation
  25.170 +and installation of the library.
  25.171 +
  25.172 +  Activities other than copying, distribution and modification are not
  25.173 +covered by this License; they are outside its scope.  The act of
  25.174 +running a program using the Library is not restricted, and output from
  25.175 +such a program is covered only if its contents constitute a work based
  25.176 +on the Library (independent of the use of the Library in a tool for
  25.177 +writing it).  Whether that is true depends on what the Library does
  25.178 +and what the program that uses the Library does.
  25.179 +  
  25.180 +  1. You may copy and distribute verbatim copies of the Library's
  25.181 +complete source code as you receive it, in any medium, provided that
  25.182 +you conspicuously and appropriately publish on each copy an
  25.183 +appropriate copyright notice and disclaimer of warranty; keep intact
  25.184 +all the notices that refer to this License and to the absence of any
  25.185 +warranty; and distribute a copy of this License along with the
  25.186 +Library.
  25.187 +
  25.188 +  You may charge a fee for the physical act of transferring a copy,
  25.189 +and you may at your option offer warranty protection in exchange for a
  25.190 +fee.
  25.191 +
  25.192 +  2. You may modify your copy or copies of the Library or any portion
  25.193 +of it, thus forming a work based on the Library, and copy and
  25.194 +distribute such modifications or work under the terms of Section 1
  25.195 +above, provided that you also meet all of these conditions:
  25.196 +
  25.197 +    a) The modified work must itself be a software library.
  25.198 +
  25.199 +    b) You must cause the files modified to carry prominent notices
  25.200 +    stating that you changed the files and the date of any change.
  25.201 +
  25.202 +    c) You must cause the whole of the work to be licensed at no
  25.203 +    charge to all third parties under the terms of this License.
  25.204 +
  25.205 +    d) If a facility in the modified Library refers to a function or a
  25.206 +    table of data to be supplied by an application program that uses
  25.207 +    the facility, other than as an argument passed when the facility
  25.208 +    is invoked, then you must make a good faith effort to ensure that,
  25.209 +    in the event an application does not supply such function or
  25.210 +    table, the facility still operates, and performs whatever part of
  25.211 +    its purpose remains meaningful.
  25.212 +
  25.213 +    (For example, a function in a library to compute square roots has
  25.214 +    a purpose that is entirely well-defined independent of the
  25.215 +    application.  Therefore, Subsection 2d requires that any
  25.216 +    application-supplied function or table used by this function must
  25.217 +    be optional: if the application does not supply it, the square
  25.218 +    root function must still compute square roots.)
  25.219 +
  25.220 +These requirements apply to the modified work as a whole.  If
  25.221 +identifiable sections of that work are not derived from the Library,
  25.222 +and can be reasonably considered independent and separate works in
  25.223 +themselves, then this License, and its terms, do not apply to those
  25.224 +sections when you distribute them as separate works.  But when you
  25.225 +distribute the same sections as part of a whole which is a work based
  25.226 +on the Library, the distribution of the whole must be on the terms of
  25.227 +this License, whose permissions for other licensees extend to the
  25.228 +entire whole, and thus to each and every part regardless of who wrote
  25.229 +it.
  25.230 +
  25.231 +Thus, it is not the intent of this section to claim rights or contest
  25.232 +your rights to work written entirely by you; rather, the intent is to
  25.233 +exercise the right to control the distribution of derivative or
  25.234 +collective works based on the Library.
  25.235 +
  25.236 +In addition, mere aggregation of another work not based on the Library
  25.237 +with the Library (or with a work based on the Library) on a volume of
  25.238 +a storage or distribution medium does not bring the other work under
  25.239 +the scope of this License.
  25.240 +
  25.241 +  3. You may opt to apply the terms of the ordinary GNU General Public
  25.242 +License instead of this License to a given copy of the Library.  To do
  25.243 +this, you must alter all the notices that refer to this License, so
  25.244 +that they refer to the ordinary GNU General Public License, version 2,
  25.245 +instead of to this License.  (If a newer version than version 2 of the
  25.246 +ordinary GNU General Public License has appeared, then you can specify
  25.247 +that version instead if you wish.)  Do not make any other change in
  25.248 +these notices.
  25.249 +
  25.250 +  Once this change is made in a given copy, it is irreversible for
  25.251 +that copy, so the ordinary GNU General Public License applies to all
  25.252 +subsequent copies and derivative works made from that copy.
  25.253 +
  25.254 +  This option is useful when you wish to copy part of the code of
  25.255 +the Library into a program that is not a library.
  25.256 +
  25.257 +  4. You may copy and distribute the Library (or a portion or
  25.258 +derivative of it, under Section 2) in object code or executable form
  25.259 +under the terms of Sections 1 and 2 above provided that you accompany
  25.260 +it with the complete corresponding machine-readable source code, which
  25.261 +must be distributed under the terms of Sections 1 and 2 above on a
  25.262 +medium customarily used for software interchange.
  25.263 +
  25.264 +  If distribution of object code is made by offering access to copy
  25.265 +from a designated place, then offering equivalent access to copy the
  25.266 +source code from the same place satisfies the requirement to
  25.267 +distribute the source code, even though third parties are not
  25.268 +compelled to copy the source along with the object code.
  25.269 +
  25.270 +  5. A program that contains no derivative of any portion of the
  25.271 +Library, but is designed to work with the Library by being compiled or
  25.272 +linked with it, is called a "work that uses the Library".  Such a
  25.273 +work, in isolation, is not a derivative work of the Library, and
  25.274 +therefore falls outside the scope of this License.
  25.275 +
  25.276 +  However, linking a "work that uses the Library" with the Library
  25.277 +creates an executable that is a derivative of the Library (because it
  25.278 +contains portions of the Library), rather than a "work that uses the
  25.279 +library".  The executable is therefore covered by this License.
  25.280 +Section 6 states terms for distribution of such executables.
  25.281 +
  25.282 +  When a "work that uses the Library" uses material from a header file
  25.283 +that is part of the Library, the object code for the work may be a
  25.284 +derivative work of the Library even though the source code is not.
  25.285 +Whether this is true is especially significant if the work can be
  25.286 +linked without the Library, or if the work is itself a library.  The
  25.287 +threshold for this to be true is not precisely defined by law.
  25.288 +
  25.289 +  If such an object file uses only numerical parameters, data
  25.290 +structure layouts and accessors, and small macros and small inline
  25.291 +functions (ten lines or less in length), then the use of the object
  25.292 +file is unrestricted, regardless of whether it is legally a derivative
  25.293 +work.  (Executables containing this object code plus portions of the
  25.294 +Library will still fall under Section 6.)
  25.295 +
  25.296 +  Otherwise, if the work is a derivative of the Library, you may
  25.297 +distribute the object code for the work under the terms of Section 6.
  25.298 +Any executables containing that work also fall under Section 6,
  25.299 +whether or not they are linked directly with the Library itself.
  25.300 +
  25.301 +  6. As an exception to the Sections above, you may also combine or
  25.302 +link a "work that uses the Library" with the Library to produce a
  25.303 +work containing portions of the Library, and distribute that work
  25.304 +under terms of your choice, provided that the terms permit
  25.305 +modification of the work for the customer's own use and reverse
  25.306 +engineering for debugging such modifications.
  25.307 +
  25.308 +  You must give prominent notice with each copy of the work that the
  25.309 +Library is used in it and that the Library and its use are covered by
  25.310 +this License.  You must supply a copy of this License.  If the work
  25.311 +during execution displays copyright notices, you must include the
  25.312 +copyright notice for the Library among them, as well as a reference
  25.313 +directing the user to the copy of this License.  Also, you must do one
  25.314 +of these things:
  25.315 +
  25.316 +    a) Accompany the work with the complete corresponding
  25.317 +    machine-readable source code for the Library including whatever
  25.318 +    changes were used in the work (which must be distributed under
  25.319 +    Sections 1 and 2 above); and, if the work is an executable linked
  25.320 +    with the Library, with the complete machine-readable "work that
  25.321 +    uses the Library", as object code and/or source code, so that the
  25.322 +    user can modify the Library and then relink to produce a modified
  25.323 +    executable containing the modified Library.  (It is understood
  25.324 +    that the user who changes the contents of definitions files in the
  25.325 +    Library will not necessarily be able to recompile the application
  25.326 +    to use the modified definitions.)
  25.327 +
  25.328 +    b) Use a suitable shared library mechanism for linking with the
  25.329 +    Library.  A suitable mechanism is one that (1) uses at run time a
  25.330 +    copy of the library already present on the user's computer system,
  25.331 +    rather than copying library functions into the executable, and (2)
  25.332 +    will operate properly with a modified version of the library, if
  25.333 +    the user installs one, as long as the modified version is
  25.334 +    interface-compatible with the version that the work was made with.
  25.335 +
  25.336 +    c) Accompany the work with a written offer, valid for at
  25.337 +    least three years, to give the same user the materials
  25.338 +    specified in Subsection 6a, above, for a charge no more
  25.339 +    than the cost of performing this distribution.
  25.340 +
  25.341 +    d) If distribution of the work is made by offering access to copy
  25.342 +    from a designated place, offer equivalent access to copy the above
  25.343 +    specified materials from the same place.
  25.344 +
  25.345 +    e) Verify that the user has already received a copy of these
  25.346 +    materials or that you have already sent this user a copy.
  25.347 +
  25.348 +  For an executable, the required form of the "work that uses the
  25.349 +Library" must include any data and utility programs needed for
  25.350 +reproducing the executable from it.  However, as a special exception,
  25.351 +the materials to be distributed need not include anything that is
  25.352 +normally distributed (in either source or binary form) with the major
  25.353 +components (compiler, kernel, and so on) of the operating system on
  25.354 +which the executable runs, unless that component itself accompanies
  25.355 +the executable.
  25.356 +
  25.357 +  It may happen that this requirement contradicts the license
  25.358 +restrictions of other proprietary libraries that do not normally
  25.359 +accompany the operating system.  Such a contradiction means you cannot
  25.360 +use both them and the Library together in an executable that you
  25.361 +distribute.
  25.362 +
  25.363 +  7. You may place library facilities that are a work based on the
  25.364 +Library side-by-side in a single library together with other library
  25.365 +facilities not covered by this License, and distribute such a combined
  25.366 +library, provided that the separate distribution of the work based on
  25.367 +the Library and of the other library facilities is otherwise
  25.368 +permitted, and provided that you do these two things:
  25.369 +
  25.370 +    a) Accompany the combined library with a copy of the same work
  25.371 +    based on the Library, uncombined with any other library
  25.372 +    facilities.  This must be distributed under the terms of the
  25.373 +    Sections above.
  25.374 +
  25.375 +    b) Give prominent notice with the combined library of the fact
  25.376 +    that part of it is a work based on the Library, and explaining
  25.377 +    where to find the accompanying uncombined form of the same work.
  25.378 +
  25.379 +  8. You may not copy, modify, sublicense, link with, or distribute
  25.380 +the Library except as expressly provided under this License.  Any
  25.381 +attempt otherwise to copy, modify, sublicense, link with, or
  25.382 +distribute the Library is void, and will automatically terminate your
  25.383 +rights under this License.  However, parties who have received copies,
  25.384 +or rights, from you under this License will not have their licenses
  25.385 +terminated so long as such parties remain in full compliance.
  25.386 +
  25.387 +  9. You are not required to accept this License, since you have not
  25.388 +signed it.  However, nothing else grants you permission to modify or
  25.389 +distribute the Library or its derivative works.  These actions are
  25.390 +prohibited by law if you do not accept this License.  Therefore, by
  25.391 +modifying or distributing the Library (or any work based on the
  25.392 +Library), you indicate your acceptance of this License to do so, and
  25.393 +all its terms and conditions for copying, distributing or modifying
  25.394 +the Library or works based on it.
  25.395 +
  25.396 +  10. Each time you redistribute the Library (or any work based on the
  25.397 +Library), the recipient automatically receives a license from the
  25.398 +original licensor to copy, distribute, link with or modify the Library
  25.399 +subject to these terms and conditions.  You may not impose any further
  25.400 +restrictions on the recipients' exercise of the rights granted herein.
  25.401 +You are not responsible for enforcing compliance by third parties with
  25.402 +this License.
  25.403 +
  25.404 +  11. If, as a consequence of a court judgment or allegation of patent
  25.405 +infringement or for any other reason (not limited to patent issues),
  25.406 +conditions are imposed on you (whether by court order, agreement or
  25.407 +otherwise) that contradict the conditions of this License, they do not
  25.408 +excuse you from the conditions of this License.  If you cannot
  25.409 +distribute so as to satisfy simultaneously your obligations under this
  25.410 +License and any other pertinent obligations, then as a consequence you
  25.411 +may not distribute the Library at all.  For example, if a patent
  25.412 +license would not permit royalty-free redistribution of the Library by
  25.413 +all those who receive copies directly or indirectly through you, then
  25.414 +the only way you could satisfy both it and this License would be to
  25.415 +refrain entirely from distribution of the Library.
  25.416 +
  25.417 +If any portion of this section is held invalid or unenforceable under any
  25.418 +particular circumstance, the balance of the section is intended to apply,
  25.419 +and the section as a whole is intended to apply in other circumstances.
  25.420 +
  25.421 +It is not the purpose of this section to induce you to infringe any
  25.422 +patents or other property right claims or to contest validity of any
  25.423 +such claims; this section has the sole purpose of protecting the
  25.424 +integrity of the free software distribution system which is
  25.425 +implemented by public license practices.  Many people have made
  25.426 +generous contributions to the wide range of software distributed
  25.427 +through that system in reliance on consistent application of that
  25.428 +system; it is up to the author/donor to decide if he or she is willing
  25.429 +to distribute software through any other system and a licensee cannot
  25.430 +impose that choice.
  25.431 +
  25.432 +This section is intended to make thoroughly clear what is believed to
  25.433 +be a consequence of the rest of this License.
  25.434 +
  25.435 +  12. If the distribution and/or use of the Library is restricted in
  25.436 +certain countries either by patents or by copyrighted interfaces, the
  25.437 +original copyright holder who places the Library under this License may add
  25.438 +an explicit geographical distribution limitation excluding those countries,
  25.439 +so that distribution is permitted only in or among countries not thus
  25.440 +excluded.  In such case, this License incorporates the limitation as if
  25.441 +written in the body of this License.
  25.442 +
  25.443 +  13. The Free Software Foundation may publish revised and/or new
  25.444 +versions of the Lesser General Public License from time to time.
  25.445 +Such new versions will be similar in spirit to the present version,
  25.446 +but may differ in detail to address new problems or concerns.
  25.447 +
  25.448 +Each version is given a distinguishing version number.  If the Library
  25.449 +specifies a version number of this License which applies to it and
  25.450 +"any later version", you have the option of following the terms and
  25.451 +conditions either of that version or of any later version published by
  25.452 +the Free Software Foundation.  If the Library does not specify a
  25.453 +license version number, you may choose any version ever published by
  25.454 +the Free Software Foundation.
  25.455 +
  25.456 +  14. If you wish to incorporate parts of the Library into other free
  25.457 +programs whose distribution conditions are incompatible with these,
  25.458 +write to the author to ask for permission.  For software which is
  25.459 +copyrighted by the Free Software Foundation, write to the Free
  25.460 +Software Foundation; we sometimes make exceptions for this.  Our
  25.461 +decision will be guided by the two goals of preserving the free status
  25.462 +of all derivatives of our free software and of promoting the sharing
  25.463 +and reuse of software generally.
  25.464 +
  25.465 +    NO WARRANTY
  25.466 +
  25.467 +  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
  25.468 +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
  25.469 +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
  25.470 +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
  25.471 +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
  25.472 +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
  25.473 +PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
  25.474 +LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
  25.475 +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
  25.476 +
  25.477 +  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
  25.478 +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
  25.479 +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
  25.480 +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
  25.481 +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
  25.482 +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
  25.483 +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
  25.484 +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
  25.485 +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
  25.486 +DAMAGES.
  25.487 +
  25.488 +     END OF TERMS AND CONDITIONS
  25.489 +
  25.490 +
  25.491 +====================
  25.492 +2. The GPL version 2
  25.493 +====================
  25.494 +
  25.495 +
  25.496 +   GNU GENERAL PUBLIC LICENSE
  25.497 +       Version 2, June 1991
  25.498 +
  25.499 + Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
  25.500 + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  25.501 + Everyone is permitted to copy and distribute verbatim copies
  25.502 + of this license document, but changing it is not allowed.
  25.503 +
  25.504 +    Preamble
  25.505 +
  25.506 +  The licenses for most software are designed to take away your
  25.507 +freedom to share and change it.  By contrast, the GNU General Public
  25.508 +License is intended to guarantee your freedom to share and change free
  25.509 +software--to make sure the software is free for all its users.  This
  25.510 +General Public License applies to most of the Free Software
  25.511 +Foundation's software and to any other program whose authors commit to
  25.512 +using it.  (Some other Free Software Foundation software is covered by
  25.513 +the GNU Lesser General Public License instead.)  You can apply it to
  25.514 +your programs, too.
  25.515 +
  25.516 +  When we speak of free software, we are referring to freedom, not
  25.517 +price.  Our General Public Licenses are designed to make sure that you
  25.518 +have the freedom to distribute copies of free software (and charge for
  25.519 +this service if you wish), that you receive source code or can get it
  25.520 +if you want it, that you can change the software or use pieces of it
  25.521 +in new free programs; and that you know you can do these things.
  25.522 +
  25.523 +  To protect your rights, we need to make restrictions that forbid
  25.524 +anyone to deny you these rights or to ask you to surrender the rights.
  25.525 +These restrictions translate to certain responsibilities for you if you
  25.526 +distribute copies of the software, or if you modify it.
  25.527 +
  25.528 +  For example, if you distribute copies of such a program, whether
  25.529 +gratis or for a fee, you must give the recipients all the rights that
  25.530 +you have.  You must make sure that they, too, receive or can get the
  25.531 +source code.  And you must show them these terms so they know their
  25.532 +rights.
  25.533 +
  25.534 +  We protect your rights with two steps: (1) copyright the software, and
  25.535 +(2) offer you this license which gives you legal permission to copy,
  25.536 +distribute and/or modify the software.
  25.537 +
  25.538 +  Also, for each author's protection and ours, we want to make certain
  25.539 +that everyone understands that there is no warranty for this free
  25.540 +software.  If the software is modified by someone else and passed on, we
  25.541 +want its recipients to know that what they have is not the original, so
  25.542 +that any problems introduced by others will not reflect on the original
  25.543 +authors' reputations.
  25.544 +
  25.545 +  Finally, any free program is threatened constantly by software
  25.546 +patents.  We wish to avoid the danger that redistributors of a free
  25.547 +program will individually obtain patent licenses, in effect making the
  25.548 +program proprietary.  To prevent this, we have made it clear that any
  25.549 +patent must be licensed for everyone's free use or not licensed at all.
  25.550 +
  25.551 +  The precise terms and conditions for copying, distribution and
  25.552 +modification follow.
  25.553 +
  25.554 +    GNU GENERAL PUBLIC LICENSE
  25.555 +   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
  25.556 +
  25.557 +  0. This License applies to any program or other work which contains
  25.558 +a notice placed by the copyright holder saying it may be distributed
  25.559 +under the terms of this General Public License.  The "Program", below,
  25.560 +refers to any such program or work, and a "work based on the Program"
  25.561 +means either the Program or any derivative work under copyright law:
  25.562 +that is to say, a work containing the Program or a portion of it,
  25.563 +either verbatim or with modifications and/or translated into another
  25.564 +language.  (Hereinafter, translation is included without limitation in
  25.565 +the term "modification".)  Each licensee is addressed as "you".
  25.566 +
  25.567 +Activities other than copying, distribution and modification are not
  25.568 +covered by this License; they are outside its scope.  The act of
  25.569 +running the Program is not restricted, and the output from the Program
  25.570 +is covered only if its contents constitute a work based on the
  25.571 +Program (independent of having been made by running the Program).
  25.572 +Whether that is true depends on what the Program does.
  25.573 +
  25.574 +  1. You may copy and distribute verbatim copies of the Program's
  25.575 +source code as you receive it, in any medium, provided that you
  25.576 +conspicuously and appropriately publish on each copy an appropriate
  25.577 +copyright notice and disclaimer of warranty; keep intact all the
  25.578 +notices that refer to this License and to the absence of any warranty;
  25.579 +and give any other recipients of the Program a copy of this License
  25.580 +along with the Program.
  25.581 +
  25.582 +You may charge a fee for the physical act of transferring a copy, and
  25.583 +you may at your option offer warranty protection in exchange for a fee.
  25.584 +
  25.585 +  2. You may modify your copy or copies of the Program or any portion
  25.586 +of it, thus forming a work based on the Program, and copy and
  25.587 +distribute such modifications or work under the terms of Section 1
  25.588 +above, provided that you also meet all of these conditions:
  25.589 +
  25.590 +    a) You must cause the modified files to carry prominent notices
  25.591 +    stating that you changed the files and the date of any change.
  25.592 +
  25.593 +    b) You must cause any work that you distribute or publish, that in
  25.594 +    whole or in part contains or is derived from the Program or any
  25.595 +    part thereof, to be licensed as a whole at no charge to all third
  25.596 +    parties under the terms of this License.
  25.597 +
  25.598 +    c) If the modified program normally reads commands interactively
  25.599 +    when run, you must cause it, when started running for such
  25.600 +    interactive use in the most ordinary way, to print or display an
  25.601 +    announcement including an appropriate copyright notice and a
  25.602 +    notice that there is no warranty (or else, saying that you provide
  25.603 +    a warranty) and that users may redistribute the program under
  25.604 +    these conditions, and telling the user how to view a copy of this
  25.605 +    License.  (Exception: if the Program itself is interactive but
  25.606 +    does not normally print such an announcement, your work based on
  25.607 +    the Program is not required to print an announcement.)
  25.608 +
  25.609 +These requirements apply to the modified work as a whole.  If
  25.610 +identifiable sections of that work are not derived from the Program,
  25.611 +and can be reasonably considered independent and separate works in
  25.612 +themselves, then this License, and its terms, do not apply to those
  25.613 +sections when you distribute them as separate works.  But when you
  25.614 +distribute the same sections as part of a whole which is a work based
  25.615 +on the Program, the distribution of the whole must be on the terms of
  25.616 +this License, whose permissions for other licensees extend to the
  25.617 +entire whole, and thus to each and every part regardless of who wrote it.
  25.618 +
  25.619 +Thus, it is not the intent of this section to claim rights or contest
  25.620 +your rights to work written entirely by you; rather, the intent is to
  25.621 +exercise the right to control the distribution of derivative or
  25.622 +collective works based on the Program.
  25.623 +
  25.624 +In addition, mere aggregation of another work not based on the Program
  25.625 +with the Program (or with a work based on the Program) on a volume of
  25.626 +a storage or distribution medium does not bring the other work under
  25.627 +the scope of this License.
  25.628 +
  25.629 +  3. You may copy and distribute the Program (or a work based on it,
  25.630 +under Section 2) in object code or executable form under the terms of
  25.631 +Sections 1 and 2 above provided that you also do one of the following:
  25.632 +
  25.633 +    a) Accompany it with the complete corresponding machine-readable
  25.634 +    source code, which must be distributed under the terms of Sections
  25.635 +    1 and 2 above on a medium customarily used for software interchange; or,
  25.636 +
  25.637 +    b) Accompany it with a written offer, valid for at least three
  25.638 +    years, to give any third party, for a charge no more than your
  25.639 +    cost of physically performing source distribution, a complete
  25.640 +    machine-readable copy of the corresponding source code, to be
  25.641 +    distributed under the terms of Sections 1 and 2 above on a medium
  25.642 +    customarily used for software interchange; or,
  25.643 +
  25.644 +    c) Accompany it with the information you received as to the offer
  25.645 +    to distribute corresponding source code.  (This alternative is
  25.646 +    allowed only for noncommercial distribution and only if you
  25.647 +    received the program in object code or executable form with such
  25.648 +    an offer, in accord with Subsection b above.)
  25.649 +
  25.650 +The source code for a work means the preferred form of the work for
  25.651 +making modifications to it.  For an executable work, complete source
  25.652 +code means all the source code for all modules it contains, plus any
  25.653 +associated interface definition files, plus the scripts used to
  25.654 +control compilation and installation of the executable.  However, as a
  25.655 +special exception, the source code distributed need not include
  25.656 +anything that is normally distributed (in either source or binary
  25.657 +form) with the major components (compiler, kernel, and so on) of the
  25.658 +operating system on which the executable runs, unless that component
  25.659 +itself accompanies the executable.
  25.660 +
  25.661 +If distribution of executable or object code is made by offering
  25.662 +access to copy from a designated place, then offering equivalent
  25.663 +access to copy the source code from the same place counts as
  25.664 +distribution of the source code, even though third parties are not
  25.665 +compelled to copy the source along with the object code.
  25.666 +
  25.667 +  4. You may not copy, modify, sublicense, or distribute the Program
  25.668 +except as expressly provided under this License.  Any attempt
  25.669 +otherwise to copy, modify, sublicense or distribute the Program is
  25.670 +void, and will automatically terminate your rights under this License.
  25.671 +However, parties who have received copies, or rights, from you under
  25.672 +this License will not have their licenses terminated so long as such
  25.673 +parties remain in full compliance.
  25.674 +
  25.675 +  5. You are not required to accept this License, since you have not
  25.676 +signed it.  However, nothing else grants you permission to modify or
  25.677 +distribute the Program or its derivative works.  These actions are
  25.678 +prohibited by law if you do not accept this License.  Therefore, by
  25.679 +modifying or distributing the Program (or any work based on the
  25.680 +Program), you indicate your acceptance of this License to do so, and
  25.681 +all its terms and conditions for copying, distributing or modifying
  25.682 +the Program or works based on it.
  25.683 +
  25.684 +  6. Each time you redistribute the Program (or any work based on the
  25.685 +Program), the recipient automatically receives a license from the
  25.686 +original licensor to copy, distribute or modify the Program subject to
  25.687 +these terms and conditions.  You may not impose any further
  25.688 +restrictions on the recipients' exercise of the rights granted herein.
  25.689 +You are not responsible for enforcing compliance by third parties to
  25.690 +this License.
  25.691 +
  25.692 +  7. If, as a consequence of a court judgment or allegation of patent
  25.693 +infringement or for any other reason (not limited to patent issues),
  25.694 +conditions are imposed on you (whether by court order, agreement or
  25.695 +otherwise) that contradict the conditions of this License, they do not
  25.696 +excuse you from the conditions of this License.  If you cannot
  25.697 +distribute so as to satisfy simultaneously your obligations under this
  25.698 +License and any other pertinent obligations, then as a consequence you
  25.699 +may not distribute the Program at all.  For example, if a patent
  25.700 +license would not permit royalty-free redistribution of the Program by
  25.701 +all those who receive copies directly or indirectly through you, then
  25.702 +the only way you could satisfy both it and this License would be to
  25.703 +refrain entirely from distribution of the Program.
  25.704 +
  25.705 +If any portion of this section is held invalid or unenforceable under
  25.706 +any particular circumstance, the balance of the section is intended to
  25.707 +apply and the section as a whole is intended to apply in other
  25.708 +circumstances.
  25.709 +
  25.710 +It is not the purpose of this section to induce you to infringe any
  25.711 +patents or other property right claims or to contest validity of any
  25.712 +such claims; this section has the sole purpose of protecting the
  25.713 +integrity of the free software distribution system, which is
  25.714 +implemented by public license practices.  Many people have made
  25.715 +generous contributions to the wide range of software distributed
  25.716 +through that system in reliance on consistent application of that
  25.717 +system; it is up to the author/donor to decide if he or she is willing
  25.718 +to distribute software through any other system and a licensee cannot
  25.719 +impose that choice.
  25.720 +
  25.721 +This section is intended to make thoroughly clear what is believed to
  25.722 +be a consequence of the rest of this License.
  25.723 +
  25.724 +  8. If the distribution and/or use of the Program is restricted in
  25.725 +certain countries either by patents or by copyrighted interfaces, the
  25.726 +original copyright holder who places the Program under this License
  25.727 +may add an explicit geographical distribution limitation excluding
  25.728 +those countries, so that distribution is permitted only in or among
  25.729 +countries not thus excluded.  In such case, this License incorporates
  25.730 +the limitation as if written in the body of this License.
  25.731 +
  25.732 +  9. The Free Software Foundation may publish revised and/or new versions
  25.733 +of the General Public License from time to time.  Such new versions will
  25.734 +be similar in spirit to the present version, but may differ in detail to
  25.735 +address new problems or concerns.
  25.736 +
  25.737 +Each version is given a distinguishing version number.  If the Program
  25.738 +specifies a version number of this License which applies to it and "any
  25.739 +later version", you have the option of following the terms and conditions
  25.740 +either of that version or of any later version published by the Free
  25.741 +Software Foundation.  If the Program does not specify a version number of
  25.742 +this License, you may choose any version ever published by the Free Software
  25.743 +Foundation.
  25.744 +
  25.745 +  10. If you wish to incorporate parts of the Program into other free
  25.746 +programs whose distribution conditions are different, write to the author
  25.747 +to ask for permission.  For software which is copyrighted by the Free
  25.748 +Software Foundation, write to the Free Software Foundation; we sometimes
  25.749 +make exceptions for this.  Our decision will be guided by the two goals
  25.750 +of preserving the free status of all derivatives of our free software and
  25.751 +of promoting the sharing and reuse of software generally.
  25.752 +
  25.753 +    NO WARRANTY
  25.754 +
  25.755 +  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
  25.756 +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
  25.757 +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
  25.758 +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
  25.759 +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
  25.760 +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
  25.761 +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
  25.762 +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
  25.763 +REPAIR OR CORRECTION.
  25.764 +
  25.765 +  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
  25.766 +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
  25.767 +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
  25.768 +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
  25.769 +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
  25.770 +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
  25.771 +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
  25.772 +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
  25.773 +POSSIBILITY OF SUCH DAMAGES.
  25.774 +
  25.775 +     END OF TERMS AND CONDITIONS
    26.1 Binary file Xcode/Frameworks/mpg123.framework/Versions/A/mpg123 has changed
    27.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    27.2 +++ b/Xcode/Frameworks/mpg123.framework/Versions/Current	Thu Oct 11 11:50:10 2018 +0300
    27.3 @@ -0,0 +1,1 @@
    27.4 +A
    27.5 \ No newline at end of file
    28.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    28.2 +++ b/Xcode/Frameworks/mpg123.framework/mpg123	Thu Oct 11 11:50:10 2018 +0300
    28.3 @@ -0,0 +1,1 @@
    28.4 +Versions/Current/mpg123
    28.5 \ No newline at end of file
    29.1 --- a/Xcode/Frameworks/smpeg.framework/Headers	Sun Oct 07 17:56:56 2018 +0300
    29.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    29.3 @@ -1,1 +0,0 @@
    29.4 -Versions/Current/Headers
    29.5 \ No newline at end of file
    30.1 --- a/Xcode/Frameworks/smpeg.framework/LICENSE.smpeg.txt	Sun Oct 07 17:56:56 2018 +0300
    30.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    30.3 @@ -1,485 +0,0 @@
    30.4 -The source code to this library used with SDL_mixer can be found here:
    30.5 -http://www.libsdl.org/projects/SDL_mixer/libs/
    30.6 ----
    30.7 -
    30.8 -		  GNU LIBRARY GENERAL PUBLIC LICENSE
    30.9 -		       Version 2, June 1991
   30.10 -
   30.11 - Copyright (C) 1991 Free Software Foundation, Inc.
   30.12 -                    675 Mass Ave, Cambridge, MA 02139, USA
   30.13 - Everyone is permitted to copy and distribute verbatim copies
   30.14 - of this license document, but changing it is not allowed.
   30.15 -
   30.16 -[This is the first released version of the library GPL.  It is
   30.17 - numbered 2 because it goes with version 2 of the ordinary GPL.]
   30.18 -
   30.19 -			    Preamble
   30.20 -
   30.21 -  The licenses for most software are designed to take away your
   30.22 -freedom to share and change it.  By contrast, the GNU General Public
   30.23 -Licenses are intended to guarantee your freedom to share and change
   30.24 -free software--to make sure the software is free for all its users.
   30.25 -
   30.26 -  This license, the Library General Public License, applies to some
   30.27 -specially designated Free Software Foundation software, and to any
   30.28 -other libraries whose authors decide to use it.  You can use it for
   30.29 -your libraries, too.
   30.30 -
   30.31 -  When we speak of free software, we are referring to freedom, not
   30.32 -price.  Our General Public Licenses are designed to make sure that you
   30.33 -have the freedom to distribute copies of free software (and charge for
   30.34 -this service if you wish), that you receive source code or can get it
   30.35 -if you want it, that you can change the software or use pieces of it
   30.36 -in new free programs; and that you know you can do these things.
   30.37 -
   30.38 -  To protect your rights, we need to make restrictions that forbid
   30.39 -anyone to deny you these rights or to ask you to surrender the rights.
   30.40 -These restrictions translate to certain responsibilities for you if
   30.41 -you distribute copies of the library, or if you modify it.
   30.42 -
   30.43 -  For example, if you distribute copies of the library, whether gratis
   30.44 -or for a fee, you must give the recipients all the rights that we gave
   30.45 -you.  You must make sure that they, too, receive or can get the source
   30.46 -code.  If you link a program with the library, you must provide
   30.47 -complete object files to the recipients so that they can relink them
   30.48 -with the library, after making changes to the library and recompiling
   30.49 -it.  And you must show them these terms so they know their rights.
   30.50 -
   30.51 -  Our method of protecting your rights has two steps: (1) copyright
   30.52 -the library, and (2) offer you this license which gives you legal
   30.53 -permission to copy, distribute and/or modify the library.
   30.54 -
   30.55 -  Also, for each distributor's protection, we want to make certain
   30.56 -that everyone understands that there is no warranty for this free
   30.57 -library.  If the library is modified by someone else and passed on, we
   30.58 -want its recipients to know that what they have is not the original
   30.59 -version, so that any problems introduced by others will not reflect on
   30.60 -the original authors' reputations.
   30.61 -
   30.62 -  Finally, any free program is threatened constantly by software
   30.63 -patents.  We wish to avoid the danger that companies distributing free
   30.64 -software will individually obtain patent licenses, thus in effect
   30.65 -transforming the program into proprietary software.  To prevent this,
   30.66 -we have made it clear that any patent must be licensed for everyone's
   30.67 -free use or not licensed at all.
   30.68 -
   30.69 -  Most GNU software, including some libraries, is covered by the ordinary
   30.70 -GNU General Public License, which was designed for utility programs.  This
   30.71 -license, the GNU Library General Public License, applies to certain
   30.72 -designated libraries.  This license is quite different from the ordinary
   30.73 -one; be sure to read it in full, and don't assume that anything in it is
   30.74 -the same as in the ordinary license.
   30.75 -
   30.76 -  The reason we have a separate public license for some libraries is that
   30.77 -they blur the distinction we usually make between modifying or adding to a
   30.78 -program and simply using it.  Linking a program with a library, without
   30.79 -changing the library, is in some sense simply using the library, and is
   30.80 -analogous to running a utility program or application program.  However, in
   30.81 -a textual and legal sense, the linked executable is a combined work, a
   30.82 -derivative of the original library, and the ordinary General Public License
   30.83 -treats it as such.
   30.84 -
   30.85 -  Because of this blurred distinction, using the ordinary General
   30.86 -Public License for libraries did not effectively promote software
   30.87 -sharing, because most developers did not use the libraries.  We
   30.88 -concluded that weaker conditions might promote sharing better.
   30.89 -
   30.90 -  However, unrestricted linking of non-free programs would deprive the
   30.91 -users of those programs of all benefit from the free status of the
   30.92 -libraries themselves.  This Library General Public License is intended to
   30.93 -permit developers of non-free programs to use free libraries, while
   30.94 -preserving your freedom as a user of such programs to change the free
   30.95 -libraries that are incorporated in them.  (We have not seen how to achieve
   30.96 -this as regards changes in header files, but we have achieved it as regards
   30.97 -changes in the actual functions of the Library.)  The hope is that this
   30.98 -will lead to faster development of free libraries.
   30.99 -
  30.100 -  The precise terms and conditions for copying, distribution and
  30.101 -modification follow.  Pay close attention to the difference between a
  30.102 -"work based on the library" and a "work that uses the library".  The
  30.103 -former contains code derived from the library, while the latter only
  30.104 -works together with the library.
  30.105 -
  30.106 -  Note that it is possible for a library to be covered by the ordinary
  30.107 -General Public License rather than by this special one.
  30.108 -
  30.109 -		  GNU LIBRARY GENERAL PUBLIC LICENSE
  30.110 -   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
  30.111 -
  30.112 -  0. This License Agreement applies to any software library which
  30.113 -contains a notice placed by the copyright holder or other authorized
  30.114 -party saying it may be distributed under the terms of this Library
  30.115 -General Public License (also called "this License").  Each licensee is
  30.116 -addressed as "you".
  30.117 -
  30.118 -  A "library" means a collection of software functions and/or data
  30.119 -prepared so as to be conveniently linked with application programs
  30.120 -(which use some of those functions and data) to form executables.
  30.121 -
  30.122 -  The "Library", below, refers to any such software library or work
  30.123 -which has been distributed under these terms.  A "work based on the
  30.124 -Library" means either the Library or any derivative work under
  30.125 -copyright law: that is to say, a work containing the Library or a
  30.126 -portion of it, either verbatim or with modifications and/or translated
  30.127 -straightforwardly into another language.  (Hereinafter, translation is
  30.128 -included without limitation in the term "modification".)
  30.129 -
  30.130 -  "Source code" for a work means the preferred form of the work for
  30.131 -making modifications to it.  For a library, complete source code means
  30.132 -all the source code for all modules it contains, plus any associated
  30.133 -interface definition files, plus the scripts used to control compilation
  30.134 -and installation of the library.
  30.135 -
  30.136 -  Activities other than copying, distribution and modification are not
  30.137 -covered by this License; they are outside its scope.  The act of
  30.138 -running a program using the Library is not restricted, and output from
  30.139 -such a program is covered only if its contents constitute a work based
  30.140 -on the Library (independent of the use of the Library in a tool for
  30.141 -writing it).  Whether that is true depends on what the Library does
  30.142 -and what the program that uses the Library does.
  30.143 -  
  30.144 -  1. You may copy and distribute verbatim copies of the Library's
  30.145 -complete source code as you receive it, in any medium, provided that
  30.146 -you conspicuously and appropriately publish on each copy an
  30.147 -appropriate copyright notice and disclaimer of warranty; keep intact
  30.148 -all the notices that refer to this License and to the absence of any
  30.149 -warranty; and distribute a copy of this License along with the
  30.150 -Library.
  30.151 -
  30.152 -  You may charge a fee for the physical act of transferring a copy,
  30.153 -and you may at your option offer warranty protection in exchange for a
  30.154 -fee.
  30.155 -
  30.156 -  2. You may modify your copy or copies of the Library or any portion
  30.157 -of it, thus forming a work based on the Library, and copy and
  30.158 -distribute such modifications or work under the terms of Section 1
  30.159 -above, provided that you also meet all of these conditions:
  30.160 -
  30.161 -    a) The modified work must itself be a software library.
  30.162 -
  30.163 -    b) You must cause the files modified to carry prominent notices
  30.164 -    stating that you changed the files and the date of any change.
  30.165 -
  30.166 -    c) You must cause the whole of the work to be licensed at no
  30.167 -    charge to all third parties under the terms of this License.
  30.168 -
  30.169 -    d) If a facility in the modified Library refers to a function or a
  30.170 -    table of data to be supplied by an application program that uses
  30.171 -    the facility, other than as an argument passed when the facility
  30.172 -    is invoked, then you must make a good faith effort to ensure that,
  30.173 -    in the event an application does not supply such function or
  30.174 -    table, the facility still operates, and performs whatever part of
  30.175 -    its purpose remains meaningful.
  30.176 -
  30.177 -    (For example, a function in a library to compute square roots has
  30.178 -    a purpose that is entirely well-defined independent of the
  30.179 -    application.  Therefore, Subsection 2d requires that any
  30.180 -    application-supplied function or table used by this function must
  30.181 -    be optional: if the application does not supply it, the square
  30.182 -    root function must still compute square roots.)
  30.183 -
  30.184 -These requirements apply to the modified work as a whole.  If
  30.185 -identifiable sections of that work are not derived from the Library,
  30.186 -and can be reasonably considered independent and separate works in
  30.187 -themselves, then this License, and its terms, do not apply to those
  30.188 -sections when you distribute them as separate works.  But when you
  30.189 -distribute the same sections as part of a whole which is a work based
  30.190 -on the Library, the distribution of the whole must be on the terms of
  30.191 -this License, whose permissions for other licensees extend to the
  30.192 -entire whole, and thus to each and every part regardless of who wrote
  30.193 -it.
  30.194 -
  30.195 -Thus, it is not the intent of this section to claim rights or contest
  30.196 -your rights to work written entirely by you; rather, the intent is to
  30.197 -exercise the right to control the distribution of derivative or
  30.198 -collective works based on the Library.
  30.199 -
  30.200 -In addition, mere aggregation of another work not based on the Library
  30.201 -with the Library (or with a work based on the Library) on a volume of
  30.202 -a storage or distribution medium does not bring the other work under
  30.203 -the scope of this License.
  30.204 -
  30.205 -  3. You may opt to apply the terms of the ordinary GNU General Public
  30.206 -License instead of this License to a given copy of the Library.  To do
  30.207 -this, you must alter all the notices that refer to this License, so
  30.208 -that they refer to the ordinary GNU General Public License, version 2,
  30.209 -instead of to this License.  (If a newer version than version 2 of the
  30.210 -ordinary GNU General Public License has appeared, then you can specify
  30.211 -that version instead if you wish.)  Do not make any other change in
  30.212 -these notices.
  30.213 -
  30.214 -  Once this change is made in a given copy, it is irreversible for
  30.215 -that copy, so the ordinary GNU General Public License applies to all
  30.216 -subsequent copies and derivative works made from that copy.
  30.217 -
  30.218 -  This option is useful when you wish to copy part of the code of
  30.219 -the Library into a program that is not a library.
  30.220 -
  30.221 -  4. You may copy and distribute the Library (or a portion or
  30.222 -derivative of it, under Section 2) in object code or executable form
  30.223 -under the terms of Sections 1 and 2 above provided that you accompany
  30.224 -it with the complete corresponding machine-readable source code, which
  30.225 -must be distributed under the terms of Sections 1 and 2 above on a
  30.226 -medium customarily used for software interchange.
  30.227 -
  30.228 -  If distribution of object code is made by offering access to copy
  30.229 -from a designated place, then offering equivalent access to copy the
  30.230 -source code from the same place satisfies the requirement to
  30.231 -distribute the source code, even though third parties are not
  30.232 -compelled to copy the source along with the object code.
  30.233 -
  30.234 -  5. A program that contains no derivative of any portion of the
  30.235 -Library, but is designed to work with the Library by being compiled or
  30.236 -linked with it, is called a "work that uses the Library".  Such a
  30.237 -work, in isolation, is not a derivative work of the Library, and
  30.238 -therefore falls outside the scope of this License.
  30.239 -
  30.240 -  However, linking a "work that uses the Library" with the Library
  30.241 -creates an executable that is a derivative of the Library (because it
  30.242 -contains portions of the Library), rather than a "work that uses the
  30.243 -library".  The executable is therefore covered by this License.
  30.244 -Section 6 states terms for distribution of such executables.
  30.245 -
  30.246 -  When a "work that uses the Library" uses material from a header file
  30.247 -that is part of the Library, the object code for the work may be a
  30.248 -derivative work of the Library even though the source code is not.
  30.249 -Whether this is true is especially significant if the work can be
  30.250 -linked without the Library, or if the work is itself a library.  The
  30.251 -threshold for this to be true is not precisely defined by law.
  30.252 -
  30.253 -  If such an object file uses only numerical parameters, data
  30.254 -structure layouts and accessors, and small macros and small inline
  30.255 -functions (ten lines or less in length), then the use of the object
  30.256 -file is unrestricted, regardless of whether it is legally a derivative
  30.257 -work.  (Executables containing this object code plus portions of the
  30.258 -Library will still fall under Section 6.)
  30.259 -
  30.260 -  Otherwise, if the work is a derivative of the Library, you may
  30.261 -distribute the object code for the work under the terms of Section 6.
  30.262 -Any executables containing that work also fall under Section 6,
  30.263 -whether or not they are linked directly with the Library itself.
  30.264 -
  30.265 -  6. As an exception to the Sections above, you may also compile or
  30.266 -link a "work that uses the Library" with the Library to produce a
  30.267 -work containing portions of the Library, and distribute that work
  30.268 -under terms of your choice, provided that the terms permit
  30.269 -modification of the work for the customer's own use and reverse
  30.270 -engineering for debugging such modifications.
  30.271 -
  30.272 -  You must give prominent notice with each copy of the work that the
  30.273 -Library is used in it and that the Library and its use are covered by
  30.274 -this License.  You must supply a copy of this License.  If the work
  30.275 -during execution displays copyright notices, you must include the
  30.276 -copyright notice for the Library among them, as well as a reference
  30.277 -directing the user to the copy of this License.  Also, you must do one
  30.278 -of these things:
  30.279 -
  30.280 -    a) Accompany the work with the complete corresponding
  30.281 -    machine-readable source code for the Library including whatever
  30.282 -    changes were used in the work (which must be distributed under
  30.283 -    Sections 1 and 2 above); and, if the work is an executable linked
  30.284 -    with the Library, with the complete machine-readable "work that
  30.285 -    uses the Library", as object code and/or source code, so that the
  30.286 -    user can modify the Library and then relink to produce a modified
  30.287 -    executable containing the modified Library.  (It is understood
  30.288 -    that the user who changes the contents of definitions files in the
  30.289 -    Library will not necessarily be able to recompile the application
  30.290 -    to use the modified definitions.)
  30.291 -
  30.292 -    b) Accompany the work with a written offer, valid for at
  30.293 -    least three years, to give the same user the materials
  30.294 -    specified in Subsection 6a, above, for a charge no more
  30.295 -    than the cost of performing this distribution.
  30.296 -
  30.297 -    c) If distribution of the work is made by offering access to copy
  30.298 -    from a designated place, offer equivalent access to copy the above
  30.299 -    specified materials from the same place.
  30.300 -
  30.301 -    d) Verify that the user has already received a copy of these
  30.302 -    materials or that you have already sent this user a copy.
  30.303 -
  30.304 -  For an executable, the required form of the "work that uses the
  30.305 -Library" must include any data and utility programs needed for
  30.306 -reproducing the executable from it.  However, as a special exception,
  30.307 -the source code distributed need not include anything that is normally
  30.308 -distributed (in either source or binary form) with the major
  30.309 -components (compiler, kernel, and so on) of the operating system on
  30.310 -which the executable runs, unless that component itself accompanies
  30.311 -the executable.
  30.312 -
  30.313 -  It may happen that this requirement contradicts the license
  30.314 -restrictions of other proprietary libraries that do not normally
  30.315 -accompany the operating system.  Such a contradiction means you cannot
  30.316 -use both them and the Library together in an executable that you
  30.317 -distribute.
  30.318 -
  30.319 -  7. You may place library facilities that are a work based on the
  30.320 -Library side-by-side in a single library together with other library
  30.321 -facilities not covered by this License, and distribute such a combined
  30.322 -library, provided that the separate distribution of the work based on
  30.323 -the Library and of the other library facilities is otherwise
  30.324 -permitted, and provided that you do these two things:
  30.325 -
  30.326 -    a) Accompany the combined library with a copy of the same work
  30.327 -    based on the Library, uncombined with any other library
  30.328 -    facilities.  This must be distributed under the terms of the
  30.329 -    Sections above.
  30.330 -
  30.331 -    b) Give prominent notice with the combined library of the fact
  30.332 -    that part of it is a work based on the Library, and explaining
  30.333 -    where to find the accompanying uncombined form of the same work.
  30.334 -
  30.335 -  8. You may not copy, modify, sublicense, link with, or distribute
  30.336 -the Library except as expressly provided under this License.  Any
  30.337 -attempt otherwise to copy, modify, sublicense, link with, or
  30.338 -distribute the Library is void, and will automatically terminate your
  30.339 -rights under this License.  However, parties who have received copies,
  30.340 -or rights, from you under this License will not have their licenses
  30.341 -terminated so long as such parties remain in full compliance.
  30.342 -
  30.343 -  9. You are not required to accept this License, since you have not
  30.344 -signed it.  However, nothing else grants you permission to modify or
  30.345 -distribute the Library or its derivative works.  These actions are
  30.346 -prohibited by law if you do not accept this License.  Therefore, by
  30.347 -modifying or distributing the Library (or any work based on the
  30.348 -Library), you indicate your acceptance of this License to do so, and
  30.349 -all its terms and conditions for copying, distributing or modifying
  30.350 -the Library or works based on it.
  30.351 -
  30.352 -  10. Each time you redistribute the Library (or any work based on the
  30.353 -Library), the recipient automatically receives a license from the
  30.354 -original licensor to copy, distribute, link with or modify the Library
  30.355 -subject to these terms and conditions.  You may not impose any further
  30.356 -restrictions on the recipients' exercise of the rights granted herein.
  30.357 -You are not responsible for enforcing compliance by third parties to
  30.358 -this License.
  30.359 -
  30.360 -  11. If, as a consequence of a court judgment or allegation of patent
  30.361 -infringement or for any other reason (not limited to patent issues),
  30.362 -conditions are imposed on you (whether by court order, agreement or
  30.363 -otherwise) that contradict the conditions of this License, they do not
  30.364 -excuse you from the conditions of this License.  If you cannot
  30.365 -distribute so as to satisfy simultaneously your obligations under this
  30.366 -License and any other pertinent obligations, then as a consequence you
  30.367 -may not distribute the Library at all.  For example, if a patent
  30.368 -license would not permit royalty-free redistribution of the Library by
  30.369 -all those who receive copies directly or indirectly through you, then
  30.370 -the only way you could satisfy both it and this License would be to
  30.371 -refrain entirely from distribution of the Library.
  30.372 -
  30.373 -If any portion of this section is held invalid or unenforceable under any
  30.374 -particular circumstance, the balance of the section is intended to apply,
  30.375 -and the section as a whole is intended to apply in other circumstances.
  30.376 -
  30.377 -It is not the purpose of this section to induce you to infringe any
  30.378 -patents or other property right claims or to contest validity of any
  30.379 -such claims; this section has the sole purpose of protecting the
  30.380 -integrity of the free software distribution system which is
  30.381 -implemented by public license practices.  Many people have made
  30.382 -generous contributions to the wide range of software distributed
  30.383 -through that system in reliance on consistent application of that
  30.384 -system; it is up to the author/donor to decide if he or she is willing
  30.385 -to distribute software through any other system and a licensee cannot
  30.386 -impose that choice.
  30.387 -
  30.388 -This section is intended to make thoroughly clear what is believed to
  30.389 -be a consequence of the rest of this License.
  30.390 -
  30.391 -  12. If the distribution and/or use of the Library is restricted in
  30.392 -certain countries either by patents or by copyrighted interfaces, the
  30.393 -original copyright holder who places the Library under this License may add
  30.394 -an explicit geographical distribution limitation excluding those countries,
  30.395 -so that distribution is permitted only in or among countries not thus
  30.396 -excluded.  In such case, this License incorporates the limitation as if
  30.397 -written in the body of this License.
  30.398 -
  30.399 -  13. The Free Software Foundation may publish revised and/or new
  30.400 -versions of the Library General Public License from time to time.
  30.401 -Such new versions will be similar in spirit to the present version,
  30.402 -but may differ in detail to address new problems or concerns.
  30.403 -
  30.404 -Each version is given a distinguishing version number.  If the Library
  30.405 -specifies a version number of this License which applies to it and
  30.406 -"any later version", you have the option of following the terms and
  30.407 -conditions either of that version or of any later version published by
  30.408 -the Free Software Foundation.  If the Library does not specify a
  30.409 -license version number, you may choose any version ever published by
  30.410 -the Free Software Foundation.
  30.411 -
  30.412 -  14. If you wish to incorporate parts of the Library into other free
  30.413 -programs whose distribution conditions are incompatible with these,
  30.414 -write to the author to ask for permission.  For software which is
  30.415 -copyrighted by the Free Software Foundation, write to the Free
  30.416 -Software Foundation; we sometimes make exceptions for this.  Our
  30.417 -decision will be guided by the two goals of preserving the free status
  30.418 -of all derivatives of our free software and of promoting the sharing
  30.419 -and reuse of software generally.
  30.420 -
  30.421 -			    NO WARRANTY
  30.422 -
  30.423 -  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
  30.424 -WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
  30.425 -EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
  30.426 -OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
  30.427 -KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
  30.428 -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
  30.429 -PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
  30.430 -LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
  30.431 -THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
  30.432 -
  30.433 -  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
  30.434 -WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
  30.435 -AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
  30.436 -FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
  30.437 -CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
  30.438 -LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
  30.439 -RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
  30.440 -FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
  30.441 -SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
  30.442 -DAMAGES.
  30.443 -
  30.444 -		     END OF TERMS AND CONDITIONS
  30.445 -
  30.446 -     Appendix: How to Apply These Terms to Your New Libraries
  30.447 -
  30.448 -  If you develop a new library, and you want it to be of the greatest
  30.449 -possible use to the public, we recommend making it free software that
  30.450 -everyone can redistribute and change.  You can do so by permitting
  30.451 -redistribution under these terms (or, alternatively, under the terms of the
  30.452 -ordinary General Public License).
  30.453 -
  30.454 -  To apply these terms, attach the following notices to the library.  It is
  30.455 -safest to attach them to the start of each source file to most effectively
  30.456 -convey the exclusion of warranty; and each file should have at least the
  30.457 -"copyright" line and a pointer to where the full notice is found.
  30.458 -
  30.459 -    <one line to give the library's name and a brief idea of what it does.>
  30.460 -    Copyright (C) <year>  <name of author>
  30.461 -
  30.462 -    This library is free software; you can redistribute it and/or
  30.463 -    modify it under the terms of the GNU Library General Public
  30.464 -    License as published by the Free Software Foundation; either
  30.465 -    version 2 of the License, or (at your option) any later version.
  30.466 -
  30.467 -    This library is distributed in the hope that it will be useful,
  30.468 -    but WITHOUT ANY WARRANTY; without even the implied warranty of
  30.469 -    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  30.470 -    Library General Public License for more details.
  30.471 -
  30.472 -    You should have received a copy of the GNU Library General Public
  30.473 -    License along with this library; if not, write to the Free
  30.474 -    Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  30.475 -
  30.476 -Also add information on how to contact you by electronic and paper mail.
  30.477 -
  30.478 -You should also get your employer (if you work as a programmer) or your
  30.479 -school, if any, to sign a "copyright disclaimer" for the library, if
  30.480 -necessary.  Here is a sample; alter the names:
  30.481 -
  30.482 -  Yoyodyne, Inc., hereby disclaims all copyright interest in the
  30.483 -  library `Frob' (a library for tweaking knobs) written by James Random Hacker.
  30.484 -
  30.485 -  <signature of Ty Coon>, 1 April 1990
  30.486 -  Ty Coon, President of Vice
  30.487 -
  30.488 -That's all there is to it!
    31.1 --- a/Xcode/Frameworks/smpeg.framework/Resources	Sun Oct 07 17:56:56 2018 +0300
    31.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    31.3 @@ -1,1 +0,0 @@
    31.4 -Versions/Current/Resources
    31.5 \ No newline at end of file
    32.1 --- a/Xcode/Frameworks/smpeg.framework/Versions/A/Headers/MPEG.h	Sun Oct 07 17:56:56 2018 +0300
    32.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    32.3 @@ -1,135 +0,0 @@
    32.4 -/*
    32.5 -    SMPEG - SDL MPEG Player Library
    32.6 -    Copyright (C) 1999  Loki Entertainment Software
    32.7 -    
    32.8 -    - Modified by Michel Darricau from eProcess <mdarricau@eprocess.fr>  for popcorn -
    32.9 -
   32.10 -    This library is free software; you can redistribute it and/or
   32.11 -    modify it under the terms of the GNU Library General Public
   32.12 -    License as published by the Free Software Foundation; either
   32.13 -    version 2 of the License, or (at your option) any later version.
   32.14 -
   32.15 -    This library is distributed in the hope that it will be useful,
   32.16 -    but WITHOUT ANY WARRANTY; without even the implied warranty of
   32.17 -    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   32.18 -    Library General Public License for more details.
   32.19 -
   32.20 -    You should have received a copy of the GNU Library General Public
   32.21 -    License along with this library; if not, write to the Free
   32.22 -    Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
   32.23 -*/
   32.24 -