mirror of
				https://github.com/KartKrewDev/RingRacers.git
				synced 2025-10-30 08:01:28 +00:00 
			
		
		
		
	Merge branch 'public-musicplus-libopenmpt' of https://git.magicalgirl.moe/STJr/SRB2 into public_libopenmpt
# Conflicts: # .travis.yml # src/m_menu.c # src/sdl/Srb2SDL-vc10.vcxproj # src/sdl/Srb2SDL.props
This commit is contained in:
		
						commit
						8e5593c207
					
				
					 53 changed files with 6842 additions and 22 deletions
				
			
		|  | @ -25,6 +25,13 @@ jobs: | |||
|       - run: | ||||
|           name: Add i386 arch | ||||
|           command: dpkg --add-architecture i386 | ||||
|       - run: | ||||
|           name: Add STJr PPA | ||||
|           command: | | ||||
|             apt-get -qq update | ||||
|             apt-get -qq -y install dirmngr | ||||
|             apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 0B1702D71499D9C25F986507F240F4449D3B0EC6 | ||||
|             echo "deb http://ppa.launchpad.net/stjr/srb2/ubuntu trusty main" >> /etc/apt/sources.list | ||||
|       - run: | ||||
|           name: Update APT listing | ||||
|           command: apt-get -qq update | ||||
|  | @ -36,7 +43,8 @@ jobs: | |||
|             - v1-SRB2-APT | ||||
|       - run: | ||||
|           name: Install SDK | ||||
|           command: apt-get -qq -y --no-install-recommends install git build-essential nasm libpng-dev:i386 libsdl2-mixer-dev:i386 libgme-dev:i386 gettext ccache wget gcc-multilib upx openssh-client | ||||
|           command: apt-get -qq -y --no-install-recommends install git build-essential nasm libpng-dev:i386 libsdl2-mixer-dev:i386 libgme-dev:i386 libopenmpt-dev:i386 gettext ccache wget gcc-multilib upx openssh-client | ||||
| 
 | ||||
|       - save_cache: | ||||
|           key: v1-SRB2-APT | ||||
|           paths: | ||||
|  | @ -63,4 +71,4 @@ jobs: | |||
|       - save_cache: | ||||
|           key: v1-SRB2-{{ .Branch }}-{{ checksum "objs/Linux/SDL/Release/depend.dep" }} | ||||
|           paths: | ||||
|             - /root/.ccache | ||||
|             - /root/.ccache | ||||
							
								
								
									
										33
									
								
								.travis.yml
									
										
									
									
									
								
							
							
						
						
									
										33
									
								
								.travis.yml
									
										
									
									
									
								
							|  | @ -18,11 +18,14 @@ matrix: | |||
|         - os: linux | ||||
|           addons: | ||||
|             apt: | ||||
|               sources: | ||||
|               - sourceline: 'ppa:stjr/srb2' | ||||
|               packages: | ||||
|               - libsdl2-mixer-dev | ||||
|               - libpng-dev | ||||
|               - libgl1-mesa-dev | ||||
|               - libgme-dev | ||||
|               - libopenmpt-dev | ||||
|               - p7zip-full | ||||
|               - gcc-4.4 | ||||
|           compiler: gcc-4.4 | ||||
|  | @ -32,11 +35,14 @@ matrix: | |||
|         - os: linux | ||||
|           addons: | ||||
|             apt: | ||||
|               sources: | ||||
|               - sourceline: 'ppa:stjr/srb2' | ||||
|               packages: | ||||
|               - libsdl2-mixer-dev | ||||
|               - libpng-dev | ||||
|               - libgl1-mesa-dev | ||||
|               - libgme-dev | ||||
|               - libopenmpt-dev | ||||
|               - p7zip-full | ||||
|               - gcc-4.6 | ||||
|           compiler: gcc-4.6 | ||||
|  | @ -46,11 +52,14 @@ matrix: | |||
|         - os: linux | ||||
|           addons: | ||||
|             apt: | ||||
|               sources: | ||||
|               - sourceline: 'ppa:stjr/srb2' | ||||
|               packages: | ||||
|               - libsdl2-mixer-dev | ||||
|               - libpng-dev | ||||
|               - libgl1-mesa-dev | ||||
|               - libgme-dev | ||||
|               - libopenmpt-dev | ||||
|               - p7zip-full | ||||
|               - gcc-4.7 | ||||
|           compiler: gcc-4.7 | ||||
|  | @ -67,11 +76,13 @@ matrix: | |||
|             apt: | ||||
|               sources: | ||||
|               - ubuntu-toolchain-r-test | ||||
|               - sourceline: 'ppa:stjr/srb2' | ||||
|               packages: | ||||
|               - libsdl2-mixer-dev | ||||
|               - libpng-dev | ||||
|               - libgl1-mesa-dev | ||||
|               - libgme-dev | ||||
|               - libopenmpt-dev | ||||
|               - p7zip-full | ||||
|               - gcc-4.8 | ||||
|           compiler: gcc-4.8 | ||||
|  | @ -83,11 +94,13 @@ matrix: | |||
|             apt: | ||||
|               sources: | ||||
|               - ubuntu-toolchain-r-test | ||||
|               - sourceline: 'ppa:stjr/srb2' | ||||
|               packages: | ||||
|               - libsdl2-mixer-dev | ||||
|               - libpng-dev | ||||
|               - libgl1-mesa-dev | ||||
|               - libgme-dev | ||||
|               - libopenmpt-dev | ||||
|               - p7zip-full | ||||
|               - gcc-7 | ||||
|           compiler: gcc-7 | ||||
|  | @ -99,11 +112,13 @@ matrix: | |||
|             apt: | ||||
|               sources: | ||||
|               - ubuntu-toolchain-r-test | ||||
|               - sourceline: 'ppa:stjr/srb2' | ||||
|               packages: | ||||
|               - libsdl2-mixer-dev | ||||
|               - libpng-dev | ||||
|               - libgl1-mesa-dev | ||||
|               - libgme-dev | ||||
|               - libopenmpt-dev | ||||
|               - p7zip-full | ||||
|               - gcc-8 | ||||
|           compiler: gcc-8 | ||||
|  | @ -119,11 +134,13 @@ matrix: | |||
|             apt: | ||||
|               sources: | ||||
|               - llvm-toolchain-precise-3.5 | ||||
|               - sourceline: 'ppa:stjr/srb2' | ||||
|               packages: | ||||
|               - libsdl2-mixer-dev | ||||
|               - libpng-dev | ||||
|               - libgl1-mesa-dev | ||||
|               - libgme-dev | ||||
|               - libopenmpt-dev | ||||
|               - p7zip-full | ||||
|               - clang-3.5 | ||||
|           compiler: clang-3.5 | ||||
|  | @ -135,11 +152,13 @@ matrix: | |||
|               sources: | ||||
|               - llvm-toolchain-precise-3.6 | ||||
|               - ubuntu-toolchain-r-test | ||||
|               - sourceline: 'ppa:stjr/srb2' | ||||
|               packages: | ||||
|               - libsdl2-mixer-dev | ||||
|               - libpng-dev | ||||
|               - libgl1-mesa-dev | ||||
|               - libgme-dev | ||||
|               - libopenmpt-dev | ||||
|               - p7zip-full | ||||
|               - clang-3.6 | ||||
|           compiler: clang-3.6 | ||||
|  | @ -151,11 +170,13 @@ matrix: | |||
|               sources: | ||||
|               - llvm-toolchain-precise-3.7 | ||||
|               - ubuntu-toolchain-r-test | ||||
|               - sourceline: 'ppa:stjr/srb2' | ||||
|               packages: | ||||
|               - libsdl2-mixer-dev | ||||
|               - libpng-dev | ||||
|               - libgl1-mesa-dev | ||||
|               - libgme-dev | ||||
|               - libopenmpt-dev | ||||
|               - p7zip-full | ||||
|               - clang-3.7 | ||||
|           compiler: clang-3.7 | ||||
|  | @ -167,11 +188,13 @@ matrix: | |||
|               sources: | ||||
|               - llvm-toolchain-precise-3.8 | ||||
|               - ubuntu-toolchain-r-test | ||||
|               - sourceline: 'ppa:stjr/srb2' | ||||
|               packages: | ||||
|               - libsdl2-mixer-dev | ||||
|               - libpng-dev | ||||
|               - libgl1-mesa-dev | ||||
|               - libgme-dev | ||||
|               - libopenmpt-dev | ||||
|               - p7zip-full | ||||
|               - clang-3.8 | ||||
|           compiler: clang-3.8 | ||||
|  | @ -183,11 +206,13 @@ matrix: | |||
|               sources: | ||||
|               - llvm-toolchain-precise-3.9 | ||||
|               - ubuntu-toolchain-r-test | ||||
|               - sourceline: 'ppa:stjr/srb2' | ||||
|               packages: | ||||
|               - libsdl2-mixer-dev | ||||
|               - libpng-dev | ||||
|               - libgl1-mesa-dev | ||||
|               - libgme-dev | ||||
|               - libopenmpt-dev | ||||
|               - p7zip-full | ||||
|               - clang-3.9 | ||||
|           compiler: clang-3.9 | ||||
|  | @ -199,11 +224,13 @@ matrix: | |||
| #              sources: | ||||
| #              - llvm-toolchain-precise-4.0 | ||||
| #              - ubuntu-toolchain-r-test | ||||
| #              - sourceline: 'ppa:stjr/srb2' | ||||
| #              packages: | ||||
| #              - libsdl2-mixer-dev | ||||
| #              - libpng-dev | ||||
| #              - libgl1-mesa-dev | ||||
| #              - libgme-dev | ||||
| #              - libopenmpt-dev | ||||
| #              - p7zip-full | ||||
| #              - clang-4.0 | ||||
| #          compiler: clang-4.0 | ||||
|  | @ -215,11 +242,13 @@ matrix: | |||
| #              sources: | ||||
| #              - llvm-toolchain-precise-5.0 | ||||
| #              - ubuntu-toolchain-r-test | ||||
| #              - sourceline: 'ppa:stjr/srb2' | ||||
| #              packages: | ||||
| #              - libsdl2-mixer-dev | ||||
| #              - libpng-dev | ||||
| #              - libgl1-mesa-dev | ||||
| #              - libgme-dev | ||||
| #              - libopenmpt-dev | ||||
| #              - p7zip-full | ||||
| #              - clang-5.0 | ||||
| #          compiler: clang-5.0 | ||||
|  | @ -561,12 +590,15 @@ cache: | |||
| 
 | ||||
| addons: | ||||
|   apt: | ||||
|     sources: | ||||
|     - sourceline: 'ppa:stjr/srb2' | ||||
|     packages: | ||||
|     - libsdl2-mixer-dev | ||||
|     - libpng-dev | ||||
|     - libgl1-mesa-dev | ||||
|     - libgme-dev | ||||
|     - zlib1g-dev | ||||
|     - libopenmpt-dev | ||||
|     - p7zip-full | ||||
|   homebrew: | ||||
|     taps: | ||||
|  | @ -575,6 +607,7 @@ addons: | |||
|     - sdl2_mixer | ||||
|     - game-music-emu | ||||
|     - p7zip | ||||
|     - libopenmpt | ||||
|     - cmake | ||||
|     update: true | ||||
| 
 | ||||
|  |  | |||
							
								
								
									
										23
									
								
								cmake/Modules/FindOPENMPT.cmake
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								cmake/Modules/FindOPENMPT.cmake
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,23 @@ | |||
| include(LibFindMacros) | ||||
| 
 | ||||
| libfind_pkg_check_modules(OPENMPT_PKGCONF OPENMPT) | ||||
| 
 | ||||
| find_path(OPENMPT_INCLUDE_DIR | ||||
| 	NAMES libopenmpt.h | ||||
| 	PATHS | ||||
| 		${OPENMPT_PKGCONF_INCLUDE_DIRS} | ||||
| 		"/usr/include/libopenmpt" | ||||
| 		"/usr/local/include/libopenmpt" | ||||
| ) | ||||
| 
 | ||||
| find_library(OPENMPT_LIBRARY | ||||
| 	NAMES openmpt | ||||
| 	PATHS | ||||
| 		${OPENMPT_PKGCONF_LIBRARY_DIRS} | ||||
| 		"/usr/lib" | ||||
| 		"/usr/local/lib" | ||||
| ) | ||||
| 
 | ||||
| set(OPENMPT_PROCESS_INCLUDES OPENMPT_INCLUDE_DIR) | ||||
| set(OPENMPT_PROCESS_LIBS OPENMPT_LIBRARY) | ||||
| libfind_process(OPENMPT) | ||||
|  | @ -7,6 +7,7 @@ Here are the required DLLs, per build. For each architecture, copy all the binar | |||
| * libs\dll-binaries\[i686/x86_64] | ||||
| * libs\SDL2\[i686/x86_64]...\bin | ||||
| * libs\SDL2_mixer\[i686/x86_64]...\bin | ||||
| * libs\libopenmpt\[x86/x86_64]...\bin\mingw | ||||
| 
 | ||||
| and don't forget to build r_opengl.dll for srb2dd. | ||||
| 
 | ||||
|  | @ -17,6 +18,7 @@ and don't forget to build r_opengl.dll for srb2dd. | |||
| * libs\dll-binaries\i686\mgwhelp.dll (depend for exchndl.dll) | ||||
| * libs\SDL2\i686-w64-mingw32\bin\SDL2.dll | ||||
| * libs\SDL2_mixer\i686-w64-mingw32\bin\*.dll (get everything) | ||||
| * libs\libopenmpt\x86\bin\mingw\libopenmpt.dll | ||||
| 
 | ||||
| ## srb2win, 64-bit | ||||
| 
 | ||||
|  | @ -25,6 +27,7 @@ and don't forget to build r_opengl.dll for srb2dd. | |||
| * libs\dll-binaries\x86_64\mgwhelp.dll (depend for exchndl.dll) | ||||
| * libs\SDL2\x86_64-w64-mingw32\bin\SDL2.dll | ||||
| * libs\SDL2_mixer\x86_64-w64-mingw32\bin\*.dll (get everything) | ||||
| * libs\libopenmpt\x86_64\bin\mingw\libopenmpt.dll | ||||
| 
 | ||||
| ## srb2dd, 32-bit | ||||
| 
 | ||||
|  |  | |||
							
								
								
									
										16
									
								
								libs/libopenmpt.props
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								libs/libopenmpt.props
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,16 @@ | |||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||||
|   <ImportGroup Label="PropertySheets" /> | ||||
|   <PropertyGroup Label="UserMacros" /> | ||||
|   <PropertyGroup> | ||||
|     <IncludePath>$(SolutionDir)libs\libopenmpt\inc;$(IncludePath)</IncludePath> | ||||
| 	<LibraryPath Condition="'$(Platform)' == 'Win32'">$(SolutionDir)libs\libopenmpt\lib\x86;$(LibraryPath)</LibraryPath> | ||||
|     <LibraryPath Condition="'$(Platform)' == 'x64'">$(SolutionDir)libs\libopenmpt\lib\x86_64;$(LibraryPath)</LibraryPath> | ||||
|   </PropertyGroup> | ||||
|   <ItemDefinitionGroup> | ||||
|     <Link> | ||||
|       <AdditionalDependencies>libopenmpt.lib;%(AdditionalDependencies)</AdditionalDependencies> | ||||
|     </Link> | ||||
|   </ItemDefinitionGroup> | ||||
|   <ItemGroup /> | ||||
| </Project> | ||||
							
								
								
									
										26
									
								
								libs/libopenmpt/LICENSE.txt
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								libs/libopenmpt/LICENSE.txt
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,26 @@ | |||
| Copyright (c) 2004-2019, OpenMPT contributors | ||||
| Copyright (c) 1997-2003, Olivier Lapicque | ||||
| All rights reserved. | ||||
| 
 | ||||
| Redistribution and use in source and binary forms, with or without | ||||
| modification, are permitted provided that the following conditions are met: | ||||
|     * Redistributions of source code must retain the above copyright | ||||
|       notice, this list of conditions and the following disclaimer. | ||||
|     * Redistributions in binary form must reproduce the above copyright | ||||
|       notice, this list of conditions and the following disclaimer in the | ||||
|       documentation and/or other materials provided with the distribution. | ||||
|     * Neither the name of the OpenMPT project nor the | ||||
|       names of its contributors may be used to endorse or promote products | ||||
|       derived from this software without specific prior written permission. | ||||
| 
 | ||||
| THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTORS ``AS IS'' AND ANY | ||||
| EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
| WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
| DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||||
| DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
| (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||
| LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||
| ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
| (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
| SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
| 
 | ||||
							
								
								
									
										28
									
								
								libs/libopenmpt/Licenses/License.Vorbis.txt
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								libs/libopenmpt/Licenses/License.Vorbis.txt
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,28 @@ | |||
| Copyright (c) 2002-2018 Xiph.org Foundation | ||||
| 
 | ||||
| Redistribution and use in source and binary forms, with or without | ||||
| modification, are permitted provided that the following conditions | ||||
| are met: | ||||
| 
 | ||||
| - Redistributions of source code must retain the above copyright | ||||
| notice, this list of conditions and the following disclaimer. | ||||
| 
 | ||||
| - Redistributions in binary form must reproduce the above copyright | ||||
| notice, this list of conditions and the following disclaimer in the | ||||
| documentation and/or other materials provided with the distribution. | ||||
| 
 | ||||
| - Neither the name of the Xiph.org Foundation nor the names of its | ||||
| contributors may be used to endorse or promote products derived from | ||||
| this software without specific prior written permission. | ||||
| 
 | ||||
| THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | ||||
| ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | ||||
| LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | ||||
| A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION | ||||
| OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||||
| SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | ||||
| LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | ||||
| DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | ||||
| THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
| (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | ||||
| OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
							
								
								
									
										175
									
								
								libs/libopenmpt/Licenses/License.mpg123.Authors.txt
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										175
									
								
								libs/libopenmpt/Licenses/License.mpg123.Authors.txt
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,175 @@ | |||
| This is an attempt to give credit to the people who contributed in some way to the mpg123 project. | ||||
| There are names and email addresses listed. Please use these addresses only to contact contributors with some question about their mpg123 contribution. | ||||
| You are explicitly not allowed to send them unwanted business offers or to question the quality of their sex life. | ||||
| -------------------- | ||||
| 
 | ||||
| Being on the list of contributing authors not necessarily means that there | ||||
| is significant copyright in parts of the source code. There are obviously | ||||
| contributions of differing complexity. I try to mention people who motivated | ||||
| changes at least by suggesting some definite code changes, even if their | ||||
| code did not enter the mpg123 source verbatim. Trivial changes like pointing | ||||
| out ovbious syntax errors that make compilers cry do not land here. | ||||
| 
 | ||||
| -------------------- | ||||
| 
 | ||||
| Current maintainers with various sorts of contributions: | ||||
| 	Thomas Orgis <thomas@orgis.org> | ||||
| 	Patrick Dehne <patrick@steidle.net> | ||||
| 	Jonathan Yong <10walls@gmail.com> | ||||
| 	Taihei Momma <tmkk@mac.com> | ||||
| 
 | ||||
| Co-initiator of the revived mpg123 project, but not that involved anymore: | ||||
| 	Nicholas J Humfrey <njh@ecs.soton.ac.uk> | ||||
| 
 | ||||
| Special thanks go to Taihei, the person who keeps the assembly optimisations alive | ||||
| and takes care of portability to OSX/iOS platforms. | ||||
| 
 | ||||
| Generic address pointing to the current maintainer (hopefully still works in future in case maintainership will change again): <maintainer@mpg123.org> | ||||
| 
 | ||||
| The creator: Michael Hipp (email: hippm@informatik.uni-tuebingen.de - please bother maintainers first) | ||||
| 
 | ||||
| Contributions/ideas Thomas Orgis era (includes backports from mhipp trunk): | ||||
| 
 | ||||
| Won-Kyu Park <wkpark@gmail.com>: patch to get rid of asm textrels (x86 PIC) | ||||
| Michael Weiser <michaelweiser@users.sf.net>: update of coreaudio output to AudioComponents API | ||||
| Bent Bisballe Nyeng <bbn@dynastrom.com>: patch for MPG123_NO_PEEK_END and MPG123_FORCE_SEEKABLE | ||||
| Eric S. Raymond <esr@thyrsus.com>: man page fixes | ||||
| Tobias Weber <tobiw@suprafluid.com>: patch for --disable-equalizer | ||||
| Hans de Goede <j.w.r.degoede@gmail.com>: patch to skip APE tags | ||||
| Stephan Vedder <stephan.vedder@gmail.com>: MSVC++ 2013 port update | ||||
| Rajeev V. Pillai <rajeevvp@users.sf.net>: pointing out/patching issues in HTTP code and behaviour of mpg123 remote/terminal control | ||||
| Jarno Lehtinen <lehtinen@sci.fi>: tinyalsa output | ||||
| Anthony Wells <borgboyone@yahoo.com>: initial version of ID3v2 APIC patch | ||||
| David Wohlferd <limegreensocks@yahoo.com>: Win32 WaveOut buffer destructor fix. | ||||
| Mike Gorchak <mike.gorchak.qnx@gmail.com>: QNX native audio output (QSA) | ||||
| Dan McGee <dpmcgee@gmail.com>: various patches (also for test suite) | ||||
| Jonathan Yong (jon_y) <10walls@gmail.com>: win32 hacking, win32 wasapi audio. | ||||
| Malcolm Boczek <MBoczek@terraindustries.com>: Common language runtime wrapper | ||||
| Elbert Pol (TeLLie) <elbert.pol@gmail.com>: OS/2 port fixup | ||||
| Jeroen Valkonet <jvalkon@xs4all.nl>: motivate pitch control, suggestive patch for pitch command in generic control interface | ||||
| Andy Hefner <ahefner@gmail.com>: patch for that second UTF16 issue | ||||
| Taihei Monma <tmkk@mac.com>: A whole lot of new/improved assembler code, including Altivec! | ||||
| Christian Weisgerber <naddy@openbsd.org>, Brad Smith: sndio output | ||||
| Patrick Dehne (P4tr3ck) <patrick@steidle.net>: more MSVC++ porting, patch to handle missing bit reservoirs | ||||
| Thorsten Glaser <tg@mirbsd.de>: icy2utf8, suggest utf8 locale stuff | ||||
| Dan Smith <dan@algenta.com>: ABI fixes for ensuring stack alignment (esp. for MinGW-built DLL with MSVC) | ||||
| Michael Ryzhykh <mclroy@gmail.com>: mpg123.spec.in | ||||
| Stefan Lenselink <Stefan@lenselink.org>: initial aRts output | ||||
| Sergej Kvachonok <ravenexp@gmail.com>: win32 audio rewrite | ||||
| Winston: SunOS-4.1.4/gcc-2.7.0 testing and suggestions for fixes (legacy Makefile, integer type headers) | ||||
| Mika Tiainen: pointing out the fix for the UTF to ASCII filtering of tags to actually work | ||||
| Nick Kurshev <nickols_k@mail.ru>: extended 3dnow (from mplayer) | ||||
| Zuxy Meng <zuxy.meng@gmail.com>: SSE (from mplayer) | ||||
| Honza <cundrak@quick.cz>: idea and prototype patch for ICY meta data support | ||||
| Petr Baudis <pasky@ucw.cz>: patches: term sigcont, id3 display unicode fallback and condensed output | ||||
| Petr Salinger <Petr.Salinger@seznam.cz>: i486 enhancement | ||||
| mpdavig@users.sourceforge.net: linux-ppc-nas Makefile.legacy entry | ||||
| Adrian Bacon <adrian.bacon@xs4all.nl>: patched decode_i586_dither (noise shaped float/int rounding) | ||||
| Cool Feet Audio project <nutcase@dtfm.org>: realtime equalizer control | ||||
| Steve Grundell <www@grundell.u-net.com>: clean stdout in control mode with stdout decoding | ||||
| Romain Dolbeau <romain@dolbeau.org>: Altivec support (taken from mplayer) | ||||
| higway <higway@mednet.md>: MMX Patch | ||||
| Clemens Ladisch <clemens@ladisch.de>: ALSA 0.9/1.0 support | ||||
| 
 | ||||
| Debian Daniel Kobras <kobras@debian.org> era: | ||||
| 
 | ||||
| Steve Kemp <skx@debian.org> | ||||
| Dan Olson <theoddone33@icculus.org> | ||||
| Syuuhei Kashiyama <squash@mb.kcom.ne.jp> | ||||
| Rupert Levene <rupert.debian@hotpop.com> | ||||
| Andreas Dilger <adilger@turbolinux.com> | ||||
| Erik B. Andersen <andersee@debian.org> | ||||
| Chris Butler <chrisb@debian.org> | ||||
| Martin Sjogren <md9ms@mdstud.chalmers.se> | ||||
| Chet Hosey <chosey@budapress.com> | ||||
| Roland Rosenfeld <roland@spinnaker.de> | ||||
| 
 | ||||
| 
 | ||||
| Debian Colin Watson <cjwatson@debian.org> era: | ||||
| 
 | ||||
| Helge Deller <deller@gmx.de> | ||||
| Chet Hosey <chosey@budapress.com> | ||||
| Christopher C. Chimelis <chris@debian.org> | ||||
| Roland Rosenfeld <roland@spinnaker.de> | ||||
| Marcelo E. Magallon <mmagallo@debian.org> | ||||
| 
 | ||||
| 
 | ||||
| Initial Debianers: | ||||
| 
 | ||||
| Tommi Virtanen <tv@debian.org> | ||||
| Paul Haggart <phaggart@debian.org> | ||||
| 
 | ||||
| 
 | ||||
| Contributions/ideas Michael Hipp era: | ||||
| 
 | ||||
| Mikko Tommila: DCT9 | ||||
| Oliver Fromme <oliver.fromme@heim3.tu-clausthal.de> | ||||
| MPEG Software Simulation Group: reference decoder package | ||||
| Tobias Bading: idea for DCT64 in subband synthesis from maplay package | ||||
| Jeff Tsay and Mikko Tommila: MDCT36 from maplay package | ||||
| Philipp Knirsch <phil@mpik-tueb.mpg.de>: DCT36/manual unroll idea | ||||
| Thomas Woerner: SGI Audio | ||||
| Damien Clermonte: HP-UX audio fixes | ||||
| Niclas Lindstrom <nil@wineasy.se>: OS2 port | ||||
| Stefan Bieschewski <stb@acm.org>: Pentium optimizations, decode_i586.s | ||||
| Martin Denn <mdenn@unix-ag.uni-kl.de>: NAS port | ||||
| Niklas Beisert <nbeisert@physik.tu-muenchen.de>: MPEG 2.5 tables | ||||
| <mycroft@NetBSD.ORG> and <augustss@cs.chalmers.se>: NetBSD Patch(es) | ||||
| Kevin Brintnall <kbrint@visi.com>: BSD patch | ||||
| Tony Million: win32 port | ||||
| Steven Tiger Lang: advanced shuffle | ||||
| Eric B. Mitchell: esd port | ||||
| Ryan R. Prosser <prosser@geocities.com>: esd port for Solaris | ||||
| Andreas Neuhaus: initial generic control interface | ||||
| 
 | ||||
| (additionally fetched from changelog:) | ||||
| 
 | ||||
| Ralf Hildebrandt <R.Hildebrandt@TU-BS.DE>: audio_alib changes | ||||
| <sms@moe.2bsd.com>: BSDOS 4.0 with gcc added to Makefile | ||||
| Bertrand Petit <elrond@phoe.netdev.net>: frontend changes | ||||
| Erik Mouw <J.A.K.Mouw@its.tudelft.nl>: SGI audio fix for non RAD machines | ||||
| Daniel O'Connor <darius@guppy.dons.net.au>: freebsd-esd make-entry | ||||
| D. Skarda <0rfelyus@atrey.karlin.mff.cuni.cz>: enhanced head_check | ||||
| Wilson, Jeff D <jeff.wilson@wilcom.com>: xterm-title | ||||
| Robert Bihlmeyer <robbe@orcus.priv.at>: esd changes | ||||
| Hannu Napari's <Hannu.Napari@hut.fi>: SGI audio patches | ||||
| <Juergen.Schoew@unix-ag.uni-siegen.de>: native AIX support | ||||
| <psst@euskalnet.net>: playlist patch | ||||
| Gilles Zunino <Gilles.Zunino@hei.fupl.asso.fr>: SGI audio patches | ||||
| Matthew Parslow <roy@alpha.alphalink.com.au>: esdserver patch | ||||
| <dlux@dlux.sch.bme.hu>: equalizer patch (equalfile setting) | ||||
| Ducroquet Erwan <ducroque@ufr-info-p7.ibp.fr>: HPUX/ALib support | ||||
| Shane Wegner <shane@CM.NU>: genrepatch | ||||
| Samuel Audet <guardia@step.polymtl.ca>: wav-File patch | ||||
| "J. Dean Brederson" <jdb@cs.utah.edu>: SGI-RAD support | ||||
| Chou Ye-chi <is84002@cis.nctu.edu.tw>: sajberplay/FreeBSD patch | ||||
| Fabrice Bellard <bellard@email.enst.fr>: 486 optimizations | ||||
| A. Hermansen <ahermans@vf.telia.no> and J. Kysela <perex@jcu.cz>: ALSA output | ||||
| KIMURA Takuhiro <kim@hannah.ipc.miyakyo-u.ac.jp>: K6-3DNow | ||||
| Petr Stehlik <stehlik@cas3.zlin.vutbr.cz>: MINT | ||||
| Andy <andy@snoogie.demon.co.uk>: float2int speed up proposal | ||||
| Brian Foutz <foutz@anise.ee.cornell.edu>: TK3Play | ||||
| Thomas Niederreiter <tn@tarantel.rz.fh-muenchen.de>: RIFF header fix | ||||
| Stefan Gybas <cab@studbox.uni-stuttgart.de>: m68k patch  | ||||
| Grant Erickson <eric0139@tc.umn.edu>: Linux PPC patch | ||||
| Peter Berger <peterb@hoopoe.psc.edu>: BSDi patch  | ||||
| Henrik P Johnson <king@one.se>: HTTP auth | ||||
| Steven Tiger Lang <tiger@tyger.org>: advanced shuffle | ||||
| "Brian J. Swetland" <swetland@uiuc.edu>: front-end (remote) patch | ||||
| <leo@zycad.com> | ||||
| Tillmann Steinbrecher <tst@gmx.de>: shuffle patch | ||||
| M.Stekelenburg <m.stekelenburg@student.utwente.nl>: i386-getbits | ||||
| Antti Andreimann <anttix@cyberix.edu.ee>: outburst patch | ||||
| Hur TaeSung <saturn@arari.snu.ac.kr>: 'http accept' patch  | ||||
| 
 | ||||
| (from post-0.59 changes that yet have to go into new trunk:) | ||||
| 
 | ||||
| Hans Schwengeler <schweng@astro.unibas.ch>: audio_dec additions | ||||
| Wojciech Barañski's Mp3Play (check the tools folder): Mp3Play frontend | ||||
| Daniel Koukola: audio_oss.c patch | ||||
| Munechika SUMIKAWA <sumikawa@ebina.hitachi.co.jp>: IPv6 | ||||
| TEMNOTA <temnota@kmv.ru>: HTTP,FTP patch/playlist fix | ||||
| Peter Surda <shurdeek@panorama.sth.ac.at>: VBR patch | ||||
| Ben <ben@blaukopf.com>: ARM startup time improvements  | ||||
| Dave MacKenzie <djm@pix.net>: init_output() patch | ||||
| pasky's <pasky@ju.cz>: close-on-stop patch | ||||
							
								
								
									
										772
									
								
								libs/libopenmpt/Licenses/License.mpg123.txt
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										772
									
								
								libs/libopenmpt/Licenses/License.mpg123.txt
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,772 @@ | |||
| This is the file that contains the terms of use, copying, etc. for the mpg123 distribution package. | ||||
| 
 | ||||
| Main message, to include in "About ..." boxes, etc: | ||||
| 
 | ||||
| 	Copyright (c) 1995-2013 by Michael Hipp and others, | ||||
| 	free software under the terms of the LGPL v2.1 | ||||
| 
 | ||||
| There is an attempt to cover the actual list of authors in the AUTHORS file. | ||||
| Project maintainer since 2006 is Thomas Orgis and many people have contributed | ||||
| since the Michael Hipp era, but he stays the initial source and it would | ||||
| be impractical to count them all individually, so it's "and others". | ||||
| Source files contain the phrase "the mpg123 project" to the same effect | ||||
| in their license boilerplate; especially those that were added after | ||||
| maintainership changed. The person mainly responsible for the first version | ||||
| is usually named in the phrase "initially written by ...". | ||||
| 
 | ||||
| All files in the distribution that don't carry a license note on their own are | ||||
| licensed under the terms of the LGPL 2.1; exceptions may apply, especially to | ||||
| files not in the official distribution but in the revision control repository. | ||||
| 
 | ||||
| The formal license text follows. | ||||
| 
 | ||||
| ======================= | ||||
| 1. The LGPL version 2.1 | ||||
| ======================= | ||||
| 
 | ||||
| 
 | ||||
|   GNU LESSER GENERAL PUBLIC LICENSE | ||||
|        Version 2.1, February 1999 | ||||
| 
 | ||||
|  Copyright (C) 1991, 1999 Free Software Foundation, Inc. | ||||
|  51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | ||||
|  Everyone is permitted to copy and distribute verbatim copies | ||||
|  of this license document, but changing it is not allowed. | ||||
| 
 | ||||
| [This is the first released version of the Lesser GPL.  It also counts | ||||
|  as the successor of the GNU Library Public License, version 2, hence | ||||
|  the version number 2.1.] | ||||
| 
 | ||||
|     Preamble | ||||
| 
 | ||||
|   The licenses for most software are designed to take away your | ||||
| freedom to share and change it.  By contrast, the GNU General Public | ||||
| Licenses are intended to guarantee your freedom to share and change | ||||
| free software--to make sure the software is free for all its users. | ||||
| 
 | ||||
|   This license, the Lesser General Public License, applies to some | ||||
| specially designated software packages--typically libraries--of the | ||||
| Free Software Foundation and other authors who decide to use it.  You | ||||
| can use it too, but we suggest you first think carefully about whether | ||||
| this license or the ordinary General Public License is the better | ||||
| strategy to use in any particular case, based on the explanations below. | ||||
| 
 | ||||
|   When we speak of free software, we are referring to freedom of use, | ||||
| not price.  Our General Public Licenses are designed to make sure that | ||||
| you have the freedom to distribute copies of free software (and charge | ||||
| for this service if you wish); that you receive source code or can get | ||||
| it if you want it; that you can change the software and use pieces of | ||||
| it in new free programs; and that you are informed that you can do | ||||
| these things. | ||||
| 
 | ||||
|   To protect your rights, we need to make restrictions that forbid | ||||
| distributors to deny you these rights or to ask you to surrender these | ||||
| rights.  These restrictions translate to certain responsibilities for | ||||
| you if you distribute copies of the library or if you modify it. | ||||
| 
 | ||||
|   For example, if you distribute copies of the library, whether gratis | ||||
| or for a fee, you must give the recipients all the rights that we gave | ||||
| you.  You must make sure that they, too, receive or can get the source | ||||
| code.  If you link other code with the library, you must provide | ||||
| complete object files to the recipients, so that they can relink them | ||||
| with the library after making changes to the library and recompiling | ||||
| it.  And you must show them these terms so they know their rights. | ||||
| 
 | ||||
|   We protect your rights with a two-step method: (1) we copyright the | ||||
| library, and (2) we offer you this license, which gives you legal | ||||
| permission to copy, distribute and/or modify the library. | ||||
| 
 | ||||
|   To protect each distributor, we want to make it very clear that | ||||
| there is no warranty for the free library.  Also, if the library is | ||||
| modified by someone else and passed on, the recipients should know | ||||
| that what they have is not the original version, so that the original | ||||
| author's reputation will not be affected by problems that might be | ||||
| introduced by others. | ||||
| 
 | ||||
|   Finally, software patents pose a constant threat to the existence of | ||||
| any free program.  We wish to make sure that a company cannot | ||||
| effectively restrict the users of a free program by obtaining a | ||||
| restrictive license from a patent holder.  Therefore, we insist that | ||||
| any patent license obtained for a version of the library must be | ||||
| consistent with the full freedom of use specified in this license. | ||||
| 
 | ||||
|   Most GNU software, including some libraries, is covered by the | ||||
| ordinary GNU General Public License.  This license, the GNU Lesser | ||||
| General Public License, applies to certain designated libraries, and | ||||
| is quite different from the ordinary General Public License.  We use | ||||
| this license for certain libraries in order to permit linking those | ||||
| libraries into non-free programs. | ||||
| 
 | ||||
|   When a program is linked with a library, whether statically or using | ||||
| a shared library, the combination of the two is legally speaking a | ||||
| combined work, a derivative of the original library.  The ordinary | ||||
| General Public License therefore permits such linking only if the | ||||
| entire combination fits its criteria of freedom.  The Lesser General | ||||
| Public License permits more lax criteria for linking other code with | ||||
| the library. | ||||
| 
 | ||||
|   We call this license the "Lesser" General Public License because it | ||||
| does Less to protect the user's freedom than the ordinary General | ||||
| Public License.  It also provides other free software developers Less | ||||
| of an advantage over competing non-free programs.  These disadvantages | ||||
| are the reason we use the ordinary General Public License for many | ||||
| libraries.  However, the Lesser license provides advantages in certain | ||||
| special circumstances. | ||||
| 
 | ||||
|   For example, on rare occasions, there may be a special need to | ||||
| encourage the widest possible use of a certain library, so that it becomes | ||||
| a de-facto standard.  To achieve this, non-free programs must be | ||||
| allowed to use the library.  A more frequent case is that a free | ||||
| library does the same job as widely used non-free libraries.  In this | ||||
| case, there is little to gain by limiting the free library to free | ||||
| software only, so we use the Lesser General Public License. | ||||
| 
 | ||||
|   In other cases, permission to use a particular library in non-free | ||||
| programs enables a greater number of people to use a large body of | ||||
| free software.  For example, permission to use the GNU C Library in | ||||
| non-free programs enables many more people to use the whole GNU | ||||
| operating system, as well as its variant, the GNU/Linux operating | ||||
| system. | ||||
| 
 | ||||
|   Although the Lesser General Public License is Less protective of the | ||||
| users' freedom, it does ensure that the user of a program that is | ||||
| linked with the Library has the freedom and the wherewithal to run | ||||
| that program using a modified version of the Library. | ||||
| 
 | ||||
|   The precise terms and conditions for copying, distribution and | ||||
| modification follow.  Pay close attention to the difference between a | ||||
| "work based on the library" and a "work that uses the library".  The | ||||
| former contains code derived from the library, whereas the latter must | ||||
| be combined with the library in order to run. | ||||
| 
 | ||||
|   GNU LESSER GENERAL PUBLIC LICENSE | ||||
|    TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION | ||||
| 
 | ||||
|   0. This License Agreement applies to any software library or other | ||||
| program which contains a notice placed by the copyright holder or | ||||
| other authorized party saying it may be distributed under the terms of | ||||
| this Lesser General Public License (also called "this License"). | ||||
| Each licensee is addressed as "you". | ||||
| 
 | ||||
|   A "library" means a collection of software functions and/or data | ||||
| prepared so as to be conveniently linked with application programs | ||||
| (which use some of those functions and data) to form executables. | ||||
| 
 | ||||
|   The "Library", below, refers to any such software library or work | ||||
| which has been distributed under these terms.  A "work based on the | ||||
| Library" means either the Library or any derivative work under | ||||
| copyright law: that is to say, a work containing the Library or a | ||||
| portion of it, either verbatim or with modifications and/or translated | ||||
| straightforwardly into another language.  (Hereinafter, translation is | ||||
| included without limitation in the term "modification".) | ||||
| 
 | ||||
|   "Source code" for a work means the preferred form of the work for | ||||
| making modifications to it.  For a library, complete source code means | ||||
| all the source code for all modules it contains, plus any associated | ||||
| interface definition files, plus the scripts used to control compilation | ||||
| and installation of the library. | ||||
| 
 | ||||
|   Activities other than copying, distribution and modification are not | ||||
| covered by this License; they are outside its scope.  The act of | ||||
| running a program using the Library is not restricted, and output from | ||||
| such a program is covered only if its contents constitute a work based | ||||
| on the Library (independent of the use of the Library in a tool for | ||||
| writing it).  Whether that is true depends on what the Library does | ||||
| and what the program that uses the Library does. | ||||
|    | ||||
|   1. You may copy and distribute verbatim copies of the Library's | ||||
| complete source code as you receive it, in any medium, provided that | ||||
| you conspicuously and appropriately publish on each copy an | ||||
| appropriate copyright notice and disclaimer of warranty; keep intact | ||||
| all the notices that refer to this License and to the absence of any | ||||
| warranty; and distribute a copy of this License along with the | ||||
| Library. | ||||
| 
 | ||||
|   You may charge a fee for the physical act of transferring a copy, | ||||
| and you may at your option offer warranty protection in exchange for a | ||||
| fee. | ||||
| 
 | ||||
|   2. You may modify your copy or copies of the Library or any portion | ||||
| of it, thus forming a work based on the Library, and copy and | ||||
| distribute such modifications or work under the terms of Section 1 | ||||
| above, provided that you also meet all of these conditions: | ||||
| 
 | ||||
|     a) The modified work must itself be a software library. | ||||
| 
 | ||||
|     b) You must cause the files modified to carry prominent notices | ||||
|     stating that you changed the files and the date of any change. | ||||
| 
 | ||||
|     c) You must cause the whole of the work to be licensed at no | ||||
|     charge to all third parties under the terms of this License. | ||||
| 
 | ||||
|     d) If a facility in the modified Library refers to a function or a | ||||
|     table of data to be supplied by an application program that uses | ||||
|     the facility, other than as an argument passed when the facility | ||||
|     is invoked, then you must make a good faith effort to ensure that, | ||||
|     in the event an application does not supply such function or | ||||
|     table, the facility still operates, and performs whatever part of | ||||
|     its purpose remains meaningful. | ||||
| 
 | ||||
|     (For example, a function in a library to compute square roots has | ||||
|     a purpose that is entirely well-defined independent of the | ||||
|     application.  Therefore, Subsection 2d requires that any | ||||
|     application-supplied function or table used by this function must | ||||
|     be optional: if the application does not supply it, the square | ||||
|     root function must still compute square roots.) | ||||
| 
 | ||||
| These requirements apply to the modified work as a whole.  If | ||||
| identifiable sections of that work are not derived from the Library, | ||||
| and can be reasonably considered independent and separate works in | ||||
| themselves, then this License, and its terms, do not apply to those | ||||
| sections when you distribute them as separate works.  But when you | ||||
| distribute the same sections as part of a whole which is a work based | ||||
| on the Library, the distribution of the whole must be on the terms of | ||||
| this License, whose permissions for other licensees extend to the | ||||
| entire whole, and thus to each and every part regardless of who wrote | ||||
| it. | ||||
| 
 | ||||
| Thus, it is not the intent of this section to claim rights or contest | ||||
| your rights to work written entirely by you; rather, the intent is to | ||||
| exercise the right to control the distribution of derivative or | ||||
| collective works based on the Library. | ||||
| 
 | ||||
| In addition, mere aggregation of another work not based on the Library | ||||
| with the Library (or with a work based on the Library) on a volume of | ||||
| a storage or distribution medium does not bring the other work under | ||||
| the scope of this License. | ||||
| 
 | ||||
|   3. You may opt to apply the terms of the ordinary GNU General Public | ||||
| License instead of this License to a given copy of the Library.  To do | ||||
| this, you must alter all the notices that refer to this License, so | ||||
| that they refer to the ordinary GNU General Public License, version 2, | ||||
| instead of to this License.  (If a newer version than version 2 of the | ||||
| ordinary GNU General Public License has appeared, then you can specify | ||||
| that version instead if you wish.)  Do not make any other change in | ||||
| these notices. | ||||
| 
 | ||||
|   Once this change is made in a given copy, it is irreversible for | ||||
| that copy, so the ordinary GNU General Public License applies to all | ||||
| subsequent copies and derivative works made from that copy. | ||||
| 
 | ||||
|   This option is useful when you wish to copy part of the code of | ||||
| the Library into a program that is not a library. | ||||
| 
 | ||||
|   4. You may copy and distribute the Library (or a portion or | ||||
| derivative of it, under Section 2) in object code or executable form | ||||
| under the terms of Sections 1 and 2 above provided that you accompany | ||||
| it with the complete corresponding machine-readable source code, which | ||||
| must be distributed under the terms of Sections 1 and 2 above on a | ||||
| medium customarily used for software interchange. | ||||
| 
 | ||||
|   If distribution of object code is made by offering access to copy | ||||
| from a designated place, then offering equivalent access to copy the | ||||
| source code from the same place satisfies the requirement to | ||||
| distribute the source code, even though third parties are not | ||||
| compelled to copy the source along with the object code. | ||||
| 
 | ||||
|   5. A program that contains no derivative of any portion of the | ||||
| Library, but is designed to work with the Library by being compiled or | ||||
| linked with it, is called a "work that uses the Library".  Such a | ||||
| work, in isolation, is not a derivative work of the Library, and | ||||
| therefore falls outside the scope of this License. | ||||
| 
 | ||||
|   However, linking a "work that uses the Library" with the Library | ||||
| creates an executable that is a derivative of the Library (because it | ||||
| contains portions of the Library), rather than a "work that uses the | ||||
| library".  The executable is therefore covered by this License. | ||||
| Section 6 states terms for distribution of such executables. | ||||
| 
 | ||||
|   When a "work that uses the Library" uses material from a header file | ||||
| that is part of the Library, the object code for the work may be a | ||||
| derivative work of the Library even though the source code is not. | ||||
| Whether this is true is especially significant if the work can be | ||||
| linked without the Library, or if the work is itself a library.  The | ||||
| threshold for this to be true is not precisely defined by law. | ||||
| 
 | ||||
|   If such an object file uses only numerical parameters, data | ||||
| structure layouts and accessors, and small macros and small inline | ||||
| functions (ten lines or less in length), then the use of the object | ||||
| file is unrestricted, regardless of whether it is legally a derivative | ||||
| work.  (Executables containing this object code plus portions of the | ||||
| Library will still fall under Section 6.) | ||||
| 
 | ||||
|   Otherwise, if the work is a derivative of the Library, you may | ||||
| distribute the object code for the work under the terms of Section 6. | ||||
| Any executables containing that work also fall under Section 6, | ||||
| whether or not they are linked directly with the Library itself. | ||||
| 
 | ||||
|   6. As an exception to the Sections above, you may also combine or | ||||
| link a "work that uses the Library" with the Library to produce a | ||||
| work containing portions of the Library, and distribute that work | ||||
| under terms of your choice, provided that the terms permit | ||||
| modification of the work for the customer's own use and reverse | ||||
| engineering for debugging such modifications. | ||||
| 
 | ||||
|   You must give prominent notice with each copy of the work that the | ||||
| Library is used in it and that the Library and its use are covered by | ||||
| this License.  You must supply a copy of this License.  If the work | ||||
| during execution displays copyright notices, you must include the | ||||
| copyright notice for the Library among them, as well as a reference | ||||
| directing the user to the copy of this License.  Also, you must do one | ||||
| of these things: | ||||
| 
 | ||||
|     a) Accompany the work with the complete corresponding | ||||
|     machine-readable source code for the Library including whatever | ||||
|     changes were used in the work (which must be distributed under | ||||
|     Sections 1 and 2 above); and, if the work is an executable linked | ||||
|     with the Library, with the complete machine-readable "work that | ||||
|     uses the Library", as object code and/or source code, so that the | ||||
|     user can modify the Library and then relink to produce a modified | ||||
|     executable containing the modified Library.  (It is understood | ||||
|     that the user who changes the contents of definitions files in the | ||||
|     Library will not necessarily be able to recompile the application | ||||
|     to use the modified definitions.) | ||||
| 
 | ||||
|     b) Use a suitable shared library mechanism for linking with the | ||||
|     Library.  A suitable mechanism is one that (1) uses at run time a | ||||
|     copy of the library already present on the user's computer system, | ||||
|     rather than copying library functions into the executable, and (2) | ||||
|     will operate properly with a modified version of the library, if | ||||
|     the user installs one, as long as the modified version is | ||||
|     interface-compatible with the version that the work was made with. | ||||
| 
 | ||||
|     c) Accompany the work with a written offer, valid for at | ||||
|     least three years, to give the same user the materials | ||||
|     specified in Subsection 6a, above, for a charge no more | ||||
|     than the cost of performing this distribution. | ||||
| 
 | ||||
|     d) If distribution of the work is made by offering access to copy | ||||
|     from a designated place, offer equivalent access to copy the above | ||||
|     specified materials from the same place. | ||||
| 
 | ||||
|     e) Verify that the user has already received a copy of these | ||||
|     materials or that you have already sent this user a copy. | ||||
| 
 | ||||
|   For an executable, the required form of the "work that uses the | ||||
| Library" must include any data and utility programs needed for | ||||
| reproducing the executable from it.  However, as a special exception, | ||||
| the materials to be distributed need not include anything that is | ||||
| normally distributed (in either source or binary form) with the major | ||||
| components (compiler, kernel, and so on) of the operating system on | ||||
| which the executable runs, unless that component itself accompanies | ||||
| the executable. | ||||
| 
 | ||||
|   It may happen that this requirement contradicts the license | ||||
| restrictions of other proprietary libraries that do not normally | ||||
| accompany the operating system.  Such a contradiction means you cannot | ||||
| use both them and the Library together in an executable that you | ||||
| distribute. | ||||
| 
 | ||||
|   7. You may place library facilities that are a work based on the | ||||
| Library side-by-side in a single library together with other library | ||||
| facilities not covered by this License, and distribute such a combined | ||||
| library, provided that the separate distribution of the work based on | ||||
| the Library and of the other library facilities is otherwise | ||||
| permitted, and provided that you do these two things: | ||||
| 
 | ||||
|     a) Accompany the combined library with a copy of the same work | ||||
|     based on the Library, uncombined with any other library | ||||
|     facilities.  This must be distributed under the terms of the | ||||
|     Sections above. | ||||
| 
 | ||||
|     b) Give prominent notice with the combined library of the fact | ||||
|     that part of it is a work based on the Library, and explaining | ||||
|     where to find the accompanying uncombined form of the same work. | ||||
| 
 | ||||
|   8. You may not copy, modify, sublicense, link with, or distribute | ||||
| the Library except as expressly provided under this License.  Any | ||||
| attempt otherwise to copy, modify, sublicense, link with, or | ||||
| distribute the Library is void, and will automatically terminate your | ||||
| rights under this License.  However, parties who have received copies, | ||||
| or rights, from you under this License will not have their licenses | ||||
| terminated so long as such parties remain in full compliance. | ||||
| 
 | ||||
|   9. You are not required to accept this License, since you have not | ||||
| signed it.  However, nothing else grants you permission to modify or | ||||
| distribute the Library or its derivative works.  These actions are | ||||
| prohibited by law if you do not accept this License.  Therefore, by | ||||
| modifying or distributing the Library (or any work based on the | ||||
| Library), you indicate your acceptance of this License to do so, and | ||||
| all its terms and conditions for copying, distributing or modifying | ||||
| the Library or works based on it. | ||||
| 
 | ||||
|   10. Each time you redistribute the Library (or any work based on the | ||||
| Library), the recipient automatically receives a license from the | ||||
| original licensor to copy, distribute, link with or modify the Library | ||||
| subject to these terms and conditions.  You may not impose any further | ||||
| restrictions on the recipients' exercise of the rights granted herein. | ||||
| You are not responsible for enforcing compliance by third parties with | ||||
| this License. | ||||
| 
 | ||||
|   11. If, as a consequence of a court judgment or allegation of patent | ||||
| infringement or for any other reason (not limited to patent issues), | ||||
| conditions are imposed on you (whether by court order, agreement or | ||||
| otherwise) that contradict the conditions of this License, they do not | ||||
| excuse you from the conditions of this License.  If you cannot | ||||
| distribute so as to satisfy simultaneously your obligations under this | ||||
| License and any other pertinent obligations, then as a consequence you | ||||
| may not distribute the Library at all.  For example, if a patent | ||||
| license would not permit royalty-free redistribution of the Library by | ||||
| all those who receive copies directly or indirectly through you, then | ||||
| the only way you could satisfy both it and this License would be to | ||||
| refrain entirely from distribution of the Library. | ||||
| 
 | ||||
| If any portion of this section is held invalid or unenforceable under any | ||||
| particular circumstance, the balance of the section is intended to apply, | ||||
| and the section as a whole is intended to apply in other circumstances. | ||||
| 
 | ||||
| It is not the purpose of this section to induce you to infringe any | ||||
| patents or other property right claims or to contest validity of any | ||||
| such claims; this section has the sole purpose of protecting the | ||||
| integrity of the free software distribution system which is | ||||
| implemented by public license practices.  Many people have made | ||||
| generous contributions to the wide range of software distributed | ||||
| through that system in reliance on consistent application of that | ||||
| system; it is up to the author/donor to decide if he or she is willing | ||||
| to distribute software through any other system and a licensee cannot | ||||
| impose that choice. | ||||
| 
 | ||||
| This section is intended to make thoroughly clear what is believed to | ||||
| be a consequence of the rest of this License. | ||||
| 
 | ||||
|   12. If the distribution and/or use of the Library is restricted in | ||||
| certain countries either by patents or by copyrighted interfaces, the | ||||
| original copyright holder who places the Library under this License may add | ||||
| an explicit geographical distribution limitation excluding those countries, | ||||
| so that distribution is permitted only in or among countries not thus | ||||
| excluded.  In such case, this License incorporates the limitation as if | ||||
| written in the body of this License. | ||||
| 
 | ||||
|   13. The Free Software Foundation may publish revised and/or new | ||||
| versions of the Lesser General Public License from time to time. | ||||
| Such new versions will be similar in spirit to the present version, | ||||
| but may differ in detail to address new problems or concerns. | ||||
| 
 | ||||
| Each version is given a distinguishing version number.  If the Library | ||||
| specifies a version number of this License which applies to it and | ||||
| "any later version", you have the option of following the terms and | ||||
| conditions either of that version or of any later version published by | ||||
| the Free Software Foundation.  If the Library does not specify a | ||||
| license version number, you may choose any version ever published by | ||||
| the Free Software Foundation. | ||||
| 
 | ||||
|   14. If you wish to incorporate parts of the Library into other free | ||||
| programs whose distribution conditions are incompatible with these, | ||||
| write to the author to ask for permission.  For software which is | ||||
| copyrighted by the Free Software Foundation, write to the Free | ||||
| Software Foundation; we sometimes make exceptions for this.  Our | ||||
| decision will be guided by the two goals of preserving the free status | ||||
| of all derivatives of our free software and of promoting the sharing | ||||
| and reuse of software generally. | ||||
| 
 | ||||
|     NO WARRANTY | ||||
| 
 | ||||
|   15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO | ||||
| WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. | ||||
| EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR | ||||
| OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY | ||||
| KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE | ||||
| IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | ||||
| PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE | ||||
| LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME | ||||
| THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. | ||||
| 
 | ||||
|   16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN | ||||
| WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY | ||||
| AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU | ||||
| FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR | ||||
| CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE | ||||
| LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING | ||||
| RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A | ||||
| FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF | ||||
| SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH | ||||
| DAMAGES. | ||||
| 
 | ||||
|      END OF TERMS AND CONDITIONS | ||||
| 
 | ||||
| 
 | ||||
| ==================== | ||||
| 2. The GPL version 2 | ||||
| ==================== | ||||
| 
 | ||||
| 
 | ||||
|    GNU GENERAL PUBLIC LICENSE | ||||
|        Version 2, June 1991 | ||||
| 
 | ||||
|  Copyright (C) 1989, 1991 Free Software Foundation, Inc., | ||||
|  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | ||||
|  Everyone is permitted to copy and distribute verbatim copies | ||||
|  of this license document, but changing it is not allowed. | ||||
| 
 | ||||
|     Preamble | ||||
| 
 | ||||
|   The licenses for most software are designed to take away your | ||||
| freedom to share and change it.  By contrast, the GNU General Public | ||||
| License is intended to guarantee your freedom to share and change free | ||||
| software--to make sure the software is free for all its users.  This | ||||
| General Public License applies to most of the Free Software | ||||
| Foundation's software and to any other program whose authors commit to | ||||
| using it.  (Some other Free Software Foundation software is covered by | ||||
| the GNU Lesser General Public License instead.)  You can apply it to | ||||
| your programs, too. | ||||
| 
 | ||||
|   When we speak of free software, we are referring to freedom, not | ||||
| price.  Our General Public Licenses are designed to make sure that you | ||||
| have the freedom to distribute copies of free software (and charge for | ||||
| this service if you wish), that you receive source code or can get it | ||||
| if you want it, that you can change the software or use pieces of it | ||||
| in new free programs; and that you know you can do these things. | ||||
| 
 | ||||
|   To protect your rights, we need to make restrictions that forbid | ||||
| anyone to deny you these rights or to ask you to surrender the rights. | ||||
| These restrictions translate to certain responsibilities for you if you | ||||
| distribute copies of the software, or if you modify it. | ||||
| 
 | ||||
|   For example, if you distribute copies of such a program, whether | ||||
| gratis or for a fee, you must give the recipients all the rights that | ||||
| you have.  You must make sure that they, too, receive or can get the | ||||
| source code.  And you must show them these terms so they know their | ||||
| rights. | ||||
| 
 | ||||
|   We protect your rights with two steps: (1) copyright the software, and | ||||
| (2) offer you this license which gives you legal permission to copy, | ||||
| distribute and/or modify the software. | ||||
| 
 | ||||
|   Also, for each author's protection and ours, we want to make certain | ||||
| that everyone understands that there is no warranty for this free | ||||
| software.  If the software is modified by someone else and passed on, we | ||||
| want its recipients to know that what they have is not the original, so | ||||
| that any problems introduced by others will not reflect on the original | ||||
| authors' reputations. | ||||
| 
 | ||||
|   Finally, any free program is threatened constantly by software | ||||
| patents.  We wish to avoid the danger that redistributors of a free | ||||
| program will individually obtain patent licenses, in effect making the | ||||
| program proprietary.  To prevent this, we have made it clear that any | ||||
| patent must be licensed for everyone's free use or not licensed at all. | ||||
| 
 | ||||
|   The precise terms and conditions for copying, distribution and | ||||
| modification follow. | ||||
| 
 | ||||
|     GNU GENERAL PUBLIC LICENSE | ||||
|    TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION | ||||
| 
 | ||||
|   0. This License applies to any program or other work which contains | ||||
| a notice placed by the copyright holder saying it may be distributed | ||||
| under the terms of this General Public License.  The "Program", below, | ||||
| refers to any such program or work, and a "work based on the Program" | ||||
| means either the Program or any derivative work under copyright law: | ||||
| that is to say, a work containing the Program or a portion of it, | ||||
| either verbatim or with modifications and/or translated into another | ||||
| language.  (Hereinafter, translation is included without limitation in | ||||
| the term "modification".)  Each licensee is addressed as "you". | ||||
| 
 | ||||
| Activities other than copying, distribution and modification are not | ||||
| covered by this License; they are outside its scope.  The act of | ||||
| running the Program is not restricted, and the output from the Program | ||||
| is covered only if its contents constitute a work based on the | ||||
| Program (independent of having been made by running the Program). | ||||
| Whether that is true depends on what the Program does. | ||||
| 
 | ||||
|   1. You may copy and distribute verbatim copies of the Program's | ||||
| source code as you receive it, in any medium, provided that you | ||||
| conspicuously and appropriately publish on each copy an appropriate | ||||
| copyright notice and disclaimer of warranty; keep intact all the | ||||
| notices that refer to this License and to the absence of any warranty; | ||||
| and give any other recipients of the Program a copy of this License | ||||
| along with the Program. | ||||
| 
 | ||||
| You may charge a fee for the physical act of transferring a copy, and | ||||
| you may at your option offer warranty protection in exchange for a fee. | ||||
| 
 | ||||
|   2. You may modify your copy or copies of the Program or any portion | ||||
| of it, thus forming a work based on the Program, and copy and | ||||
| distribute such modifications or work under the terms of Section 1 | ||||
| above, provided that you also meet all of these conditions: | ||||
| 
 | ||||
|     a) You must cause the modified files to carry prominent notices | ||||
|     stating that you changed the files and the date of any change. | ||||
| 
 | ||||
|     b) You must cause any work that you distribute or publish, that in | ||||
|     whole or in part contains or is derived from the Program or any | ||||
|     part thereof, to be licensed as a whole at no charge to all third | ||||
|     parties under the terms of this License. | ||||
| 
 | ||||
|     c) If the modified program normally reads commands interactively | ||||
|     when run, you must cause it, when started running for such | ||||
|     interactive use in the most ordinary way, to print or display an | ||||
|     announcement including an appropriate copyright notice and a | ||||
|     notice that there is no warranty (or else, saying that you provide | ||||
|     a warranty) and that users may redistribute the program under | ||||
|     these conditions, and telling the user how to view a copy of this | ||||
|     License.  (Exception: if the Program itself is interactive but | ||||
|     does not normally print such an announcement, your work based on | ||||
|     the Program is not required to print an announcement.) | ||||
| 
 | ||||
| These requirements apply to the modified work as a whole.  If | ||||
| identifiable sections of that work are not derived from the Program, | ||||
| and can be reasonably considered independent and separate works in | ||||
| themselves, then this License, and its terms, do not apply to those | ||||
| sections when you distribute them as separate works.  But when you | ||||
| distribute the same sections as part of a whole which is a work based | ||||
| on the Program, the distribution of the whole must be on the terms of | ||||
| this License, whose permissions for other licensees extend to the | ||||
| entire whole, and thus to each and every part regardless of who wrote it. | ||||
| 
 | ||||
| Thus, it is not the intent of this section to claim rights or contest | ||||
| your rights to work written entirely by you; rather, the intent is to | ||||
| exercise the right to control the distribution of derivative or | ||||
| collective works based on the Program. | ||||
| 
 | ||||
| In addition, mere aggregation of another work not based on the Program | ||||
| with the Program (or with a work based on the Program) on a volume of | ||||
| a storage or distribution medium does not bring the other work under | ||||
| the scope of this License. | ||||
| 
 | ||||
|   3. You may copy and distribute the Program (or a work based on it, | ||||
| under Section 2) in object code or executable form under the terms of | ||||
| Sections 1 and 2 above provided that you also do one of the following: | ||||
| 
 | ||||
|     a) Accompany it with the complete corresponding machine-readable | ||||
|     source code, which must be distributed under the terms of Sections | ||||
|     1 and 2 above on a medium customarily used for software interchange; or, | ||||
| 
 | ||||
|     b) Accompany it with a written offer, valid for at least three | ||||
|     years, to give any third party, for a charge no more than your | ||||
|     cost of physically performing source distribution, a complete | ||||
|     machine-readable copy of the corresponding source code, to be | ||||
|     distributed under the terms of Sections 1 and 2 above on a medium | ||||
|     customarily used for software interchange; or, | ||||
| 
 | ||||
|     c) Accompany it with the information you received as to the offer | ||||
|     to distribute corresponding source code.  (This alternative is | ||||
|     allowed only for noncommercial distribution and only if you | ||||
|     received the program in object code or executable form with such | ||||
|     an offer, in accord with Subsection b above.) | ||||
| 
 | ||||
| The source code for a work means the preferred form of the work for | ||||
| making modifications to it.  For an executable work, complete source | ||||
| code means all the source code for all modules it contains, plus any | ||||
| associated interface definition files, plus the scripts used to | ||||
| control compilation and installation of the executable.  However, as a | ||||
| special exception, the source code distributed need not include | ||||
| anything that is normally distributed (in either source or binary | ||||
| form) with the major components (compiler, kernel, and so on) of the | ||||
| operating system on which the executable runs, unless that component | ||||
| itself accompanies the executable. | ||||
| 
 | ||||
| If distribution of executable or object code is made by offering | ||||
| access to copy from a designated place, then offering equivalent | ||||
| access to copy the source code from the same place counts as | ||||
| distribution of the source code, even though third parties are not | ||||
| compelled to copy the source along with the object code. | ||||
| 
 | ||||
|   4. You may not copy, modify, sublicense, or distribute the Program | ||||
| except as expressly provided under this License.  Any attempt | ||||
| otherwise to copy, modify, sublicense or distribute the Program is | ||||
| void, and will automatically terminate your rights under this License. | ||||
| However, parties who have received copies, or rights, from you under | ||||
| this License will not have their licenses terminated so long as such | ||||
| parties remain in full compliance. | ||||
| 
 | ||||
|   5. You are not required to accept this License, since you have not | ||||
| signed it.  However, nothing else grants you permission to modify or | ||||
| distribute the Program or its derivative works.  These actions are | ||||
| prohibited by law if you do not accept this License.  Therefore, by | ||||
| modifying or distributing the Program (or any work based on the | ||||
| Program), you indicate your acceptance of this License to do so, and | ||||
| all its terms and conditions for copying, distributing or modifying | ||||
| the Program or works based on it. | ||||
| 
 | ||||
|   6. Each time you redistribute the Program (or any work based on the | ||||
| Program), the recipient automatically receives a license from the | ||||
| original licensor to copy, distribute or modify the Program subject to | ||||
| these terms and conditions.  You may not impose any further | ||||
| restrictions on the recipients' exercise of the rights granted herein. | ||||
| You are not responsible for enforcing compliance by third parties to | ||||
| this License. | ||||
| 
 | ||||
|   7. If, as a consequence of a court judgment or allegation of patent | ||||
| infringement or for any other reason (not limited to patent issues), | ||||
| conditions are imposed on you (whether by court order, agreement or | ||||
| otherwise) that contradict the conditions of this License, they do not | ||||
| excuse you from the conditions of this License.  If you cannot | ||||
| distribute so as to satisfy simultaneously your obligations under this | ||||
| License and any other pertinent obligations, then as a consequence you | ||||
| may not distribute the Program at all.  For example, if a patent | ||||
| license would not permit royalty-free redistribution of the Program by | ||||
| all those who receive copies directly or indirectly through you, then | ||||
| the only way you could satisfy both it and this License would be to | ||||
| refrain entirely from distribution of the Program. | ||||
| 
 | ||||
| If any portion of this section is held invalid or unenforceable under | ||||
| any particular circumstance, the balance of the section is intended to | ||||
| apply and the section as a whole is intended to apply in other | ||||
| circumstances. | ||||
| 
 | ||||
| It is not the purpose of this section to induce you to infringe any | ||||
| patents or other property right claims or to contest validity of any | ||||
| such claims; this section has the sole purpose of protecting the | ||||
| integrity of the free software distribution system, which is | ||||
| implemented by public license practices.  Many people have made | ||||
| generous contributions to the wide range of software distributed | ||||
| through that system in reliance on consistent application of that | ||||
| system; it is up to the author/donor to decide if he or she is willing | ||||
| to distribute software through any other system and a licensee cannot | ||||
| impose that choice. | ||||
| 
 | ||||
| This section is intended to make thoroughly clear what is believed to | ||||
| be a consequence of the rest of this License. | ||||
| 
 | ||||
|   8. If the distribution and/or use of the Program is restricted in | ||||
| certain countries either by patents or by copyrighted interfaces, the | ||||
| original copyright holder who places the Program under this License | ||||
| may add an explicit geographical distribution limitation excluding | ||||
| those countries, so that distribution is permitted only in or among | ||||
| countries not thus excluded.  In such case, this License incorporates | ||||
| the limitation as if written in the body of this License. | ||||
| 
 | ||||
|   9. The Free Software Foundation may publish revised and/or new versions | ||||
| of the General Public License from time to time.  Such new versions will | ||||
| be similar in spirit to the present version, but may differ in detail to | ||||
| address new problems or concerns. | ||||
| 
 | ||||
| Each version is given a distinguishing version number.  If the Program | ||||
| specifies a version number of this License which applies to it and "any | ||||
| later version", you have the option of following the terms and conditions | ||||
| either of that version or of any later version published by the Free | ||||
| Software Foundation.  If the Program does not specify a version number of | ||||
| this License, you may choose any version ever published by the Free Software | ||||
| Foundation. | ||||
| 
 | ||||
|   10. If you wish to incorporate parts of the Program into other free | ||||
| programs whose distribution conditions are different, write to the author | ||||
| to ask for permission.  For software which is copyrighted by the Free | ||||
| Software Foundation, write to the Free Software Foundation; we sometimes | ||||
| make exceptions for this.  Our decision will be guided by the two goals | ||||
| of preserving the free status of all derivatives of our free software and | ||||
| of promoting the sharing and reuse of software generally. | ||||
| 
 | ||||
|     NO WARRANTY | ||||
| 
 | ||||
|   11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY | ||||
| FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN | ||||
| OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES | ||||
| PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED | ||||
| OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF | ||||
| MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS | ||||
| TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE | ||||
| PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, | ||||
| REPAIR OR CORRECTION. | ||||
| 
 | ||||
|   12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING | ||||
| WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR | ||||
| REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, | ||||
| INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING | ||||
| OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED | ||||
| TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY | ||||
| YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER | ||||
| PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE | ||||
| POSSIBILITY OF SUCH DAMAGES. | ||||
| 
 | ||||
|      END OF TERMS AND CONDITIONS | ||||
							
								
								
									
										28
									
								
								libs/libopenmpt/Licenses/License.ogg.txt
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								libs/libopenmpt/Licenses/License.ogg.txt
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,28 @@ | |||
| Copyright (c) 2002, Xiph.org Foundation | ||||
| 
 | ||||
| Redistribution and use in source and binary forms, with or without | ||||
| modification, are permitted provided that the following conditions | ||||
| are met: | ||||
| 
 | ||||
| - Redistributions of source code must retain the above copyright | ||||
| notice, this list of conditions and the following disclaimer. | ||||
| 
 | ||||
| - Redistributions in binary form must reproduce the above copyright | ||||
| notice, this list of conditions and the following disclaimer in the | ||||
| documentation and/or other materials provided with the distribution. | ||||
| 
 | ||||
| - Neither the name of the Xiph.org Foundation nor the names of its | ||||
| contributors may be used to endorse or promote products derived from | ||||
| this software without specific prior written permission. | ||||
| 
 | ||||
| THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | ||||
| ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | ||||
| LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | ||||
| A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION | ||||
| OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||||
| SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | ||||
| LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | ||||
| DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | ||||
| THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
| (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | ||||
| OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
							
								
								
									
										115
									
								
								libs/libopenmpt/Licenses/License.zlib.txt
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										115
									
								
								libs/libopenmpt/Licenses/License.zlib.txt
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,115 @@ | |||
| ZLIB DATA COMPRESSION LIBRARY | ||||
| 
 | ||||
| zlib 1.2.11 is a general purpose data compression library.  All the code is | ||||
| thread safe.  The data format used by the zlib library is described by RFCs | ||||
| (Request for Comments) 1950 to 1952 in the files | ||||
| http://tools.ietf.org/html/rfc1950 (zlib format), rfc1951 (deflate format) and | ||||
| rfc1952 (gzip format). | ||||
| 
 | ||||
| All functions of the compression library are documented in the file zlib.h | ||||
| (volunteer to write man pages welcome, contact zlib@gzip.org).  A usage example | ||||
| of the library is given in the file test/example.c which also tests that | ||||
| the library is working correctly.  Another example is given in the file | ||||
| test/minigzip.c.  The compression library itself is composed of all source | ||||
| files in the root directory. | ||||
| 
 | ||||
| To compile all files and run the test program, follow the instructions given at | ||||
| the top of Makefile.in.  In short "./configure; make test", and if that goes | ||||
| well, "make install" should work for most flavors of Unix.  For Windows, use | ||||
| one of the special makefiles in win32/ or contrib/vstudio/ .  For VMS, use | ||||
| make_vms.com. | ||||
| 
 | ||||
| Questions about zlib should be sent to <zlib@gzip.org>, or to Gilles Vollant | ||||
| <info@winimage.com> for the Windows DLL version.  The zlib home page is | ||||
| http://zlib.net/ .  Before reporting a problem, please check this site to | ||||
| verify that you have the latest version of zlib; otherwise get the latest | ||||
| version and check whether the problem still exists or not. | ||||
| 
 | ||||
| PLEASE read the zlib FAQ http://zlib.net/zlib_faq.html before asking for help. | ||||
| 
 | ||||
| Mark Nelson <markn@ieee.org> wrote an article about zlib for the Jan.  1997 | ||||
| issue of Dr.  Dobb's Journal; a copy of the article is available at | ||||
| http://marknelson.us/1997/01/01/zlib-engine/ . | ||||
| 
 | ||||
| The changes made in version 1.2.11 are documented in the file ChangeLog. | ||||
| 
 | ||||
| Unsupported third party contributions are provided in directory contrib/ . | ||||
| 
 | ||||
| zlib is available in Java using the java.util.zip package, documented at | ||||
| http://java.sun.com/developer/technicalArticles/Programming/compression/ . | ||||
| 
 | ||||
| A Perl interface to zlib written by Paul Marquess <pmqs@cpan.org> is available | ||||
| at CPAN (Comprehensive Perl Archive Network) sites, including | ||||
| http://search.cpan.org/~pmqs/IO-Compress-Zlib/ . | ||||
| 
 | ||||
| A Python interface to zlib written by A.M. Kuchling <amk@amk.ca> is | ||||
| available in Python 1.5 and later versions, see | ||||
| http://docs.python.org/library/zlib.html . | ||||
| 
 | ||||
| zlib is built into tcl: http://wiki.tcl.tk/4610 . | ||||
| 
 | ||||
| An experimental package to read and write files in .zip format, written on top | ||||
| of zlib by Gilles Vollant <info@winimage.com>, is available in the | ||||
| contrib/minizip directory of zlib. | ||||
| 
 | ||||
| 
 | ||||
| Notes for some targets: | ||||
| 
 | ||||
| - For Windows DLL versions, please see win32/DLL_FAQ.txt | ||||
| 
 | ||||
| - For 64-bit Irix, deflate.c must be compiled without any optimization. With | ||||
|   -O, one libpng test fails. The test works in 32 bit mode (with the -n32 | ||||
|   compiler flag). The compiler bug has been reported to SGI. | ||||
| 
 | ||||
| - zlib doesn't work with gcc 2.6.3 on a DEC 3000/300LX under OSF/1 2.1 it works | ||||
|   when compiled with cc. | ||||
| 
 | ||||
| - On Digital Unix 4.0D (formely OSF/1) on AlphaServer, the cc option -std1 is | ||||
|   necessary to get gzprintf working correctly. This is done by configure. | ||||
| 
 | ||||
| - zlib doesn't work on HP-UX 9.05 with some versions of /bin/cc. It works with | ||||
|   other compilers. Use "make test" to check your compiler. | ||||
| 
 | ||||
| - gzdopen is not supported on RISCOS or BEOS. | ||||
| 
 | ||||
| - For PalmOs, see http://palmzlib.sourceforge.net/ | ||||
| 
 | ||||
| 
 | ||||
| Acknowledgments: | ||||
| 
 | ||||
|   The deflate format used by zlib was defined by Phil Katz.  The deflate and | ||||
|   zlib specifications were written by L.  Peter Deutsch.  Thanks to all the | ||||
|   people who reported problems and suggested various improvements in zlib; they | ||||
|   are too numerous to cite here. | ||||
| 
 | ||||
| Copyright notice: | ||||
| 
 | ||||
|  (C) 1995-2017 Jean-loup Gailly and Mark Adler | ||||
| 
 | ||||
|   This software is provided 'as-is', without any express or implied | ||||
|   warranty.  In no event will the authors be held liable for any damages | ||||
|   arising from the use of this software. | ||||
| 
 | ||||
|   Permission is granted to anyone to use this software for any purpose, | ||||
|   including commercial applications, and to alter it and redistribute it | ||||
|   freely, subject to the following restrictions: | ||||
| 
 | ||||
|   1. The origin of this software must not be misrepresented; you must not | ||||
|      claim that you wrote the original software. If you use this software | ||||
|      in a product, an acknowledgment in the product documentation would be | ||||
|      appreciated but is not required. | ||||
|   2. Altered source versions must be plainly marked as such, and must not be | ||||
|      misrepresented as being the original software. | ||||
|   3. This notice may not be removed or altered from any source distribution. | ||||
| 
 | ||||
|   Jean-loup Gailly        Mark Adler | ||||
|   jloup@gzip.org          madler@alumni.caltech.edu | ||||
| 
 | ||||
| If you use the zlib library in a product, we would appreciate *not* receiving | ||||
| lengthy legal documents to sign.  The sources are provided for free but without | ||||
| warranty of any kind.  The library has been entirely written by Jean-loup | ||||
| Gailly and Mark Adler; it does not include third-party code. | ||||
| 
 | ||||
| If you redistribute modified sources, we would appreciate that you include in | ||||
| the file ChangeLog history information documenting your changes.  Please read | ||||
| the FAQ for more information on the distribution of modified source versions. | ||||
							
								
								
									
										90
									
								
								libs/libopenmpt/SRB2NOTE-DEBIAN.md
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										90
									
								
								libs/libopenmpt/SRB2NOTE-DEBIAN.md
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,90 @@ | |||
| # libopenmpt Debian backport info | ||||
| 
 | ||||
| Backported libopenmpt 0.4.0 packages are available at ppa:stjr/srb2 | ||||
| for Ubuntu Disco, Cosmic, Bionic, Xenial, and Trusty as of 2019/01/04. | ||||
| 
 | ||||
| Debian Jessie users should use the Trusty package. Later Debian versions | ||||
| may use Disco or another working version. | ||||
| 
 | ||||
| * libopenmpt 0.4.0 source package: http://archive.ubuntu.com/ubuntu/pool/universe/libo/libopenmpt/libopenmpt_0.4.0-1.dsc | ||||
| 
 | ||||
| # Backporting from Disco to Cosmic and Bionic | ||||
| 
 | ||||
| Cosmic and Bionic require no changes to the source package. They have | ||||
| the prerequisite `debhelper` and `dpkg-dev` versions, a matching | ||||
| `automake` version (1.15), as well as G++ > 5. | ||||
| 
 | ||||
| Use the `backportpackage` script to automatically tag the package to | ||||
| Cosmic and Bionic, then upload to PPA: | ||||
| 
 | ||||
| ``` | ||||
| sudo apt install ubuntu-dev-tools | ||||
| export UBUMAIL="John Doe <email@com.com>" # Name and email associated with your PGP sign key | ||||
| backportpackage -d [cosmic/bionic] -u [path-to-ppa] --key=[key-fingerprint] http://archive.ubuntu.com/ubuntu/pool/universe/libo/libopenmpt/libopenmpt_0.4.0-1.dsc | ||||
| ``` | ||||
| 
 | ||||
| # Backporting from Disco to Xenial | ||||
| 
 | ||||
| Download the package: | ||||
| 
 | ||||
| ``` | ||||
| dget http://archive.ubuntu.com/ubuntu/pool/universe/libo/libopenmpt/libopenmpt_0.4.0-1.dsc | ||||
| ``` | ||||
| 
 | ||||
| Xenial has an earlier `debhelper` version, but the rest of the prerequisites | ||||
| are available. | ||||
| 
 | ||||
| The required changes (see patch `debian/libopenmpt-0.4.0-xenial-backport.diff` in this directory): | ||||
| 
 | ||||
| * `debian/control` | ||||
|     * Add `automake` to Build-Depends | ||||
|     * Change `debhelper` version to `(>= 9.0~)` | ||||
| * `debian/compat` | ||||
|     * Change to `10` | ||||
| 
 | ||||
| Then run these commands: | ||||
| 
 | ||||
| ``` | ||||
| dch -i # Edit the changelog; make sure the Name and email match the PGP sign key and that the changelog targets xenial | ||||
| debuild -s -d -k0x[key-fingerprint] # Build the updated package | ||||
| dput [path-to-ppa] [path-to-changes-file] # Upload to PPA | ||||
| ``` | ||||
| 
 | ||||
| # Backporting from Disco to Trusty | ||||
| 
 | ||||
| Download the package: | ||||
| 
 | ||||
| ``` | ||||
| dget http://archive.ubuntu.com/ubuntu/pool/universe/libo/libopenmpt/libopenmpt_0.4.0-1.dsc | ||||
| ``` | ||||
| 
 | ||||
| Trusty requires more changes because it uses G++ 4.8 whereas the source | ||||
| package expects G++ >= 5. Automake is an earlier version as well -- | ||||
| 1.14 vs 1.15 -- so `autoreconf` needs to be run at build time. | ||||
| 
 | ||||
| The required changes (see patch `debian/libopenmpt-0.4.0-trusty-backport.diff` in this directory): | ||||
| 
 | ||||
| * `debian/control` | ||||
|     * Add `automake` and `libtool` to Build-Depends | ||||
|     * Change `debhelper` version to `(>= 9.0~)` | ||||
|     * Change `dpkg-dev` version to `(>= 1.17.0)` | ||||
| * `debian/compat` | ||||
|     * Change to `10` | ||||
| * `debian/rules` | ||||
|     * Under `override_dh_auto_configure`, input this line as the first command: | ||||
|       `autoreconf --force --install` | ||||
|         * This re-configures the package for Automake 1.14 | ||||
| * `debian/libopenmpt-modplug1.symbols` and `debian/libopenmpt0.symbols` | ||||
|     * Delete these files | ||||
|         * The C++ ABI for G++ 4.8 is incompatible with G++ >= 5, so the | ||||
|           generated symbols will be different than the expected symbols | ||||
|           in the `*.symbols` files. Deleting these files will skip the | ||||
|           symbol check. | ||||
| 
 | ||||
| Then run these commands: | ||||
| 
 | ||||
| ``` | ||||
| dch -i # Edit the changelog; make sure the Name and email match the PGP sign key and that the changelog targets trusty | ||||
| debuild -s -d -k0x[key-fingerprint] # Build the updated package | ||||
| dput [path-to-ppa] [path-to-changes-file] # Upload to PPA | ||||
| ``` | ||||
							
								
								
									
										54
									
								
								libs/libopenmpt/SRB2NOTE.md
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										54
									
								
								libs/libopenmpt/SRB2NOTE.md
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,54 @@ | |||
| # libopenmpt mingw-w64 binary info | ||||
| 
 | ||||
| Current built version as of 2019/05/23 is 0.4.4+r11531.pkg | ||||
| 
 | ||||
| * mingw binaries (.dll): `bin/[x86 or x86_64]/mingw` | ||||
| * mingw import libraries (.dll.a): `lib/[x86 or x86_64]/mingw` | ||||
| 
 | ||||
| # Building libopenmpt with mingw-w64 | ||||
| 
 | ||||
| libopenmpt must be built from the Makefile / Android dev package in the | ||||
| [Downloads page](https://lib.openmpt.org/libopenmpt/download/#all-downloads) | ||||
| 
 | ||||
| Use the mingw-w64 distributions from | ||||
| [SourceForge](https://sourceforge.net/projects/mingw-w64/files/#readme). | ||||
| 
 | ||||
| You can download the appropriate 7-zip archive, extract to a folder of | ||||
| your choice, remove any existing mingw directories from your PATH, | ||||
| then call `mingw32-make.exe` from its direct location. | ||||
| 
 | ||||
| FOR LIBOPENMPT, YOU MUST USE A MINGW PACKAGE THAT SUPPORTS THE POSIX | ||||
| THREADING MODEL! DO NOT COMPILE WITH A WIN32 THREADING MODEL! | ||||
| 
 | ||||
| I use GCC 7.3.0: | ||||
| 
 | ||||
| * [x86_64-posix-seh](https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win64/Personal%20Builds/mingw-builds/7.3.0/threads-posix/seh/x86_64-7.3.0-release-posix-seh-rt_v5-rev0.7z) | ||||
| * [i686-posix-dwarf](https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win32/Personal%20Builds/mingw-builds/7.3.0/threads-posix/dwarf/i686-7.3.0-release-posix-dwarf-rt_v5-rev0.7z) | ||||
| 
 | ||||
| ## x86 build instructions | ||||
| 
 | ||||
| ``` | ||||
| set CFLAGS=-march=pentium -static-libgcc | ||||
| set CXXFLAGS=-march=pentium -static-libgcc -static-libstdc++ | ||||
| set LDFLAGS=-Wl,--out-implib,bin/libopenmpt.dll.a -Wl,-Bstatic,--whole-archive -lwinpthread -Wl,-Bdynamic,--no-whole-archive | ||||
| 
 | ||||
| cd [libopenmpt-make-src] | ||||
| [x86-mingw-w64-bin]/mingw32-make.exe CONFIG=mingw64-win32 | ||||
| ``` | ||||
| 
 | ||||
| `libopenmpt.dll` and `libopenmpt.dll.a` will be built in the | ||||
| `bin/` folder. | ||||
| 
 | ||||
| ## x86_64 build instructions | ||||
| 
 | ||||
| ``` | ||||
| set CFLAGS=-march=nocona -static-libgcc | ||||
| set CXXFLAGS=-march=nocona -static-libgcc -static-libstdc++ | ||||
| set LDFLAGS=-Wl,--out-implib,bin/libopenmpt.dll.a -Wl,-Bstatic,--whole-archive -lwinpthread -Wl,-Bdynamic,--no-whole-archive | ||||
| 
 | ||||
| cd [libopenmpt-make-src] | ||||
| [x86_64-mingw-w64-bin]/mingw32-make.exe CONFIG=mingw64-win64 | ||||
| ``` | ||||
| 
 | ||||
| `libopenmpt.dll` and `libopenmpt.dll.a` will be built in the | ||||
| `bin/` folder. | ||||
							
								
								
									
										
											BIN
										
									
								
								libs/libopenmpt/bin/x86/libopenmpt.dll
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								libs/libopenmpt/bin/x86/libopenmpt.dll
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								libs/libopenmpt/bin/x86/mingw/libopenmpt.dll
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								libs/libopenmpt/bin/x86/mingw/libopenmpt.dll
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								libs/libopenmpt/bin/x86/openmpt-mpg123.dll
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								libs/libopenmpt/bin/x86/openmpt-mpg123.dll
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								libs/libopenmpt/bin/x86/openmpt-ogg.dll
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								libs/libopenmpt/bin/x86/openmpt-ogg.dll
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								libs/libopenmpt/bin/x86/openmpt-vorbis.dll
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								libs/libopenmpt/bin/x86/openmpt-vorbis.dll
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								libs/libopenmpt/bin/x86/openmpt-zlib.dll
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								libs/libopenmpt/bin/x86/openmpt-zlib.dll
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								libs/libopenmpt/bin/x86_64/libopenmpt.dll
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								libs/libopenmpt/bin/x86_64/libopenmpt.dll
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								libs/libopenmpt/bin/x86_64/mingw/libopenmpt.dll
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								libs/libopenmpt/bin/x86_64/mingw/libopenmpt.dll
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								libs/libopenmpt/bin/x86_64/openmpt-mpg123.dll
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								libs/libopenmpt/bin/x86_64/openmpt-mpg123.dll
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								libs/libopenmpt/bin/x86_64/openmpt-ogg.dll
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								libs/libopenmpt/bin/x86_64/openmpt-ogg.dll
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								libs/libopenmpt/bin/x86_64/openmpt-vorbis.dll
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								libs/libopenmpt/bin/x86_64/openmpt-vorbis.dll
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								libs/libopenmpt/bin/x86_64/openmpt-zlib.dll
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								libs/libopenmpt/bin/x86_64/openmpt-zlib.dll
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										791
									
								
								libs/libopenmpt/changelog.md
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										791
									
								
								libs/libopenmpt/changelog.md
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,791 @@ | |||
| 
 | ||||
| Changelog {#changelog} | ||||
| ========= | ||||
| 
 | ||||
| For fully detailed change log, please see the source repository directly. This | ||||
| is just a high-level summary. | ||||
| 
 | ||||
| ### libopenmpt 0.4.4 (2019-04-07) | ||||
| 
 | ||||
|  *  [**Bug**] Channel VU meters were swapped. | ||||
| 
 | ||||
|  *  Startrekker: Clamp speed to 31 ticks per row. | ||||
|  *  MTM: Ignore unused Exy commands on import. Command E5x (Set Finetune) is now | ||||
|     applied correctly. | ||||
|  *  MOD: Sample swapping was always enabled since it has been separated from the | ||||
|     ProTracker 1/2 compatibility flag. Now it is always enabled for Amiga-style | ||||
|     modules and otherwise the old heuristic is used again. | ||||
| 
 | ||||
|  *  stb_vorbis: Update to v1.16 (2019-03-05). | ||||
| 
 | ||||
| ### libopenmpt 0.4.3 (2019-02-11) | ||||
| 
 | ||||
|  *  [**Sec**] Possible crash due to null-pointer access when doing a portamento | ||||
|     from an OPL instrument to an empty instrument note map slot (r11348). | ||||
| 
 | ||||
|  *  [**Bug**] libopenmpt did not compile on Apple platforms in C++17 mode. | ||||
| 
 | ||||
|  *  IT: Various fixes for note-off + instrument number in Old Effects mode. | ||||
|  *  MO3: Import IT row highlights as written by MO3 2.4.1.2 or newer. Required | ||||
|     for modules using modern tempo mode. | ||||
| 
 | ||||
|  *  miniz: Update to v2.0.8 (2018-09-19). | ||||
|  *  stb_vorbis: Update to v1.15 (2019-02-07). | ||||
| 
 | ||||
| ### libopenmpt 0.4.2 (2019-01-22) | ||||
| 
 | ||||
|  *  [**Sec**] DSM: Assertion failure during file parsing with debug STLs | ||||
|     (r11209). | ||||
|  *  [**Sec**] J2B: Assertion failure during file parsing with debug STLs | ||||
|     (r11216). | ||||
| 
 | ||||
|  *  S3M: Allow volume change of OPL instruments after Note Cut. | ||||
| 
 | ||||
| ### libopenmpt 0.4.1 (2019-01-06) | ||||
| 
 | ||||
|  *  [**Bug**] Binaries compiled for winold (Windows XP, Vista, 7, for CPUs | ||||
|     without SSE2 support) did not actually work on CPUs without SSE2 support. | ||||
|  *  [**Bug**] libmodplug: Public symbols of the C++ API had `visibility=hidden` | ||||
|     set on non-MSVC systems, which made them not publicly accessible. | ||||
|  *  [**Bug**] Project files for Windows 10 desktop builds on ARM and ARM64 | ||||
|     (`build/vs2017win10`) were missing from Windows source package. | ||||
|  *  [**Bug**] MSVC project files in Windows source package lacked additional | ||||
|     files required to build DLLs. | ||||
| 
 | ||||
|  *  MO3: Apply playback changes based on "ModPlug-made" header flag. | ||||
| 
 | ||||
|  *  minimp3: Update to commit e9df0760e94044caded36a55d70ab4152134adc5 | ||||
|     (2018-12-23). | ||||
| 
 | ||||
| ### libopenmpt 0.4.0 (2018-12-23) | ||||
| 
 | ||||
|  *  [**New**] libopenmpt now includes emulation of the OPL chip and thus plays | ||||
|     OPL instruments in S3M, C67 and MPTM files. OPL chip emulation volume can be | ||||
|     changed with the new ctl `render.opl.volume_factor`. | ||||
|  *  [**New**] libopenmpt now supports CDFM / Composer 670 module files. | ||||
|  *  [**New**] Autotools `configure` and plain `Makefile` now honor the variable | ||||
|     `CXXSTDLIB_PCLIBSPRIVATE` which serves the sole purpose of listing the | ||||
|     standard library (or libraries) required for static linking. The contents of | ||||
|     this variable will be put in `libopenmpt.pc` `Libs.private` and used for | ||||
|     nothing else. See \ref libopenmpt_c_staticlinking . | ||||
|  *  [**New**] foo_openmpt: foo_openmpt now also works on Windows XP. | ||||
|  *  [**New**] libopenmpt Emscripten builds now ship with MP3 support by | ||||
|     default, based on minimp3 by Lion (github.com/lieff). | ||||
|  *  [**New**] libopenmpt: New ctl `play.at_end` can be used to change what | ||||
|     happens when the song end is reached: | ||||
|      *  "fadeout": Fades the module out for a short while. Subsequent reads | ||||
|         after the fadeout will return 0 rendered frames. This is the default and | ||||
|         identical to the behaviour in previous libopenmpt versions.  | ||||
|      *  "continue": Returns 0 rendered frames when the song end is reached. | ||||
|         Subsequent reads will continue playing from the song start or loop | ||||
|         start. This can be used for custom loop logic, such as loop | ||||
|         auto-detection and longer fadeouts. | ||||
|      *  "stop": Returns 0 rendered frames when the song end is reached. | ||||
|         Subsequent reads will return 0 rendered frames. | ||||
|  *  [**New**] Add new metadata fields `"originaltype"` and `"originaltype_long"` | ||||
|     which allow more clearly reflecting what is going on with converted formats | ||||
|     like MO3 and GDM. | ||||
|  *  [**New**] `Makefile` `CONFIG=emscripten` now can generate WebAssembly via | ||||
|     the additional option `EMSCRIPTEN_TARGET=wasm`. | ||||
|  *  [**New**] Compiling for DOS is now experimentally supported via DJGPP GCC | ||||
|     7.2 or later. | ||||
| 
 | ||||
|  *  [**Change**] minimp3: Instead of the LGPL-2.1-licensed minimp3 by KeyJ, | ||||
|     libopenmpt now uses the CC0-1.0-licensed minimp3 by Lion (github.com/lieff) | ||||
|     as a fallback if libmpg123 is unavailable. The `USE_MINIMP3` `Makefile` | ||||
|     option is gone and minimp3 will be used automatically in the `Makefile` | ||||
|     build system if libmpg123 is not available. | ||||
|  *  [**Change**] openmpt123: openmpt123 now rejects `--output-type` in `--ui` | ||||
|     and `--batch` modes and also rejects `--output` in `--render` mode. These | ||||
|     combinations of options really made no sense and were rather confusing. | ||||
|  *  [**Change**] Android NDK build system now uses libc++ (`c++_shared`) instead | ||||
|     of GNU libstdc++ (`gnustl_shared`), as recommended by Android NDK r16b. | ||||
|  *  [**Change**] xmp-openmpt: `openmpt-mpg123.dll` is no longer optional and | ||||
|     must be placed into the same directory as `xmp-openmpt.dll`. | ||||
|  *  [**Change**] in_openmpt: `openmpt-mpg123.dll` is no longer optional and must | ||||
|     be placed either into the directory of the player itself or into the same | ||||
|     directory as `in_openmpt.dll`. This is dependent on how the player loads its | ||||
|     plugins. For WinAMP 5, `openmpt-mpg123.dll` needs to be in the directory | ||||
|     which contains `winamp.exe`. `in_openmpt.dll` needs to be in the `Plugins` | ||||
|     directory. | ||||
|  *  [**Change**] foo_openmpt: foo_openmpt is now packaged as a fb2k-component | ||||
|     package for easier installation. | ||||
|  *  [**Change**] When building libopenmpt with MinGW-w64, it is now recommended | ||||
|     to use the posix thread model (as opposed to the win32 threading model), | ||||
|     because the former does support std::mutex while the latter does not. When | ||||
|     building with win32 threading model with the Autotools build system, it is | ||||
|     recommended to provide the `mingw-std-threads` package. Building libopenmpt | ||||
|     with MinGW-w64 without any `std::thread`/`std::mutex` support is deprecated | ||||
|     and support for such configurations will be removed in libopenmpt 0.5. | ||||
|  *  [**Change**] `Makefile` `CONFIG=emscripten` now has 4 `EMSCRIPTEN_TARGET=` | ||||
|     settings: `wasm` generates WebAssembly, `asmjs128m` generates asm.js with a | ||||
|     fixed size 128MB heap, `asmjs` generates asm.js with a fixed default size | ||||
|     heap (as of Emscripten 1.38.11, this amounts to 16MB), `js` generates | ||||
|     JavaScript with dynamic heap growth and with compatibility for older VMs. | ||||
|  *  [**Change**] libmodplug: Update public headers to libmodplug 0.8.8.5. This | ||||
|     adds support for kind-of automatic MODPLUG_EXPORT decoration on Windows. | ||||
| 
 | ||||
|  *  [**Regression**] Support for Clang 3.4, 3.5 has been removed. | ||||
|  *  [**Regression**] Building with Android NDK older than NDK r16b is not | ||||
|     supported any more. | ||||
|  *  [**Regression**] Support for Emscripten versions older than 1.38.5 has been | ||||
|     removed. | ||||
|  *  [**Regression**] Support for libmpg123 older than 1.14.0 has been removed. | ||||
|  *  [**Regression**] Using MediaFoundation to decode MP3 samples is no longer | ||||
|     supported. Use libmpg123 or minimp3 instead. | ||||
|  *  [**Regression**] libmodplug: Support for emulating libmodplug 0.8.7 API/ABI | ||||
|     has been removed. | ||||
| 
 | ||||
|  *  [**Bug**] xmp-openmpt: Sample rate and number of output channels were not | ||||
|     applied correctly when using per-file settings. | ||||
|  *  [**Bug**] Internal mixer state was not initialized properly when initially | ||||
|     rendering in 44100kHz stereo format. | ||||
|  *  [**Bug**] openmpt123: Prevent libsdl2 and libsdl from being enabled at the | ||||
|     same time because they conflict with each other. | ||||
|  *  [**Bug**] libmodplug: Setting `SNDMIX_NORESAMPLING` in the C++ API always | ||||
|     resulted in linear interpolation instead of nearest neighbour | ||||
| 
 | ||||
|  *  IT: In Compatible Gxx mode, allow sample changes next to a tone portamento | ||||
|     effect if a previous sample has already stopped playing. | ||||
|  *  IT: Fix broken volume envelopes with negative values as found in breakdwn.it | ||||
|     by Elysis. | ||||
|  *  MOD: Slides and delayed notes are executed on every repetition of a row with | ||||
|     row delay (fixes "ode to protracker"). | ||||
|  *  XM: If the sustain point of the panning envelope is reached before key-off, | ||||
|     it is never released. | ||||
|  *  XM: Do not default recall volume / panning for delayed instrument-less notes | ||||
|  *  XM :E60 loop bug was not considered in song length calucation. | ||||
|  *  S3M: Notes without instrument number use previous note's sample offset. | ||||
|  *  Tighten M15 and MOD file rejection heuristics. | ||||
|  *  J2B: Ignore frequency limits from file header. Fixes Medivo.j2b, broken | ||||
|     since libopenmpt-0.2.6401-beta17. | ||||
|  *  STM: More accurate tempo calculation. | ||||
|  *  STM: Better support for early format revisions (no such files have been | ||||
|     found in the wild, though). | ||||
|  *  STM: Last character of sample name was missing. | ||||
|  *  SFX: Work around bad conversions of the "Operation Stealth" soundtrack by | ||||
|     turning pattern breaks into note stops. | ||||
|  *  IMF: Filter cutoff was upside down and the cutoff range was too small. | ||||
|  *  ParamEq plugin center frequency was not limited correctly. | ||||
|  *  Keep track of active SFx macro during seeking. | ||||
|  *  The "note cut" duplicate note action did not volume-ramp the previously | ||||
|     playing sample. | ||||
|  *  A song starting with non-existing patterns could not be played. | ||||
|  *  DSM: Support restart position and 16-bit samples. | ||||
|  *  DTM: Import global volume. | ||||
|  *  MOD: Support notes in octave 2, like in FastTracker 2 (fixes DOPE.MOD). | ||||
|  *  Do not apply Amiga playback heuristics to MOD files that have clearly been | ||||
|     written with a PC tracker. | ||||
|  *  MPTM: More logical release node behaviour. | ||||
|  *  Subsong search is now less thorough. It could previously find many subsongs | ||||
|     that are technically correct (unplayed rows at the beginning of patterns | ||||
|     that have been jumped over due to pattern breaks), but so far no real-world | ||||
|     module that would require such a thorough subsong detection was found. The | ||||
|     old mechanism caused way more false positives than intended with real-world | ||||
|     modules, though. | ||||
|  *  Restrict the unpacked size of compressed DMF, IT, MDL and MO3 samples to | ||||
|     avoid huge allocations with malformed small files. | ||||
| 
 | ||||
| ### libopenmpt 0.3 (2017-09-27) | ||||
| 
 | ||||
|  *  [**New**] New error handling functionality in the C API, which in particular | ||||
|     allows distinguishing potentially transient out-of-memory errors from parse | ||||
|     errors during module loading.  | ||||
|  *  [**New**] New API `openmpt::module::get_selected_subsong()` (C++) and | ||||
|     `openmpt_module_get_selected_subsong()` (C). | ||||
|  *  [**New**] Faster file header probing API `openmpt::probe_file_header()` and | ||||
|     `openmpt::probe_file_header_get_recommended_size` (C++), and | ||||
|     `openmpt_probe_file_header()`, | ||||
|     `openmpt_probe_file_header_without_filesize()`, | ||||
|     `openmpt_probe_file_header_from_stream()` and | ||||
|     `openmpt_probe_file_header_get_recommended_size()` (C). | ||||
|  *  [**New**] New API `openmpt::could_open_probability()` (C++) and | ||||
|     `openmpt_could_open_probability()` (C). This fixes a spelling error in the | ||||
|     old 0.2 API. | ||||
|  *  [**New**] openmpt123: openmpt123 can now open M3U, M3U8, M3UEXT, M3U8EXT and | ||||
|     PLSv2 playlists via the `--playlist` option. | ||||
|  *  [**New**] openmpt123: openmpt123 now supports very fast file header probing | ||||
|     via the `--probe` option. | ||||
|  *  [**New**] Libopenmpt now supports building for Windows 10 Universal (Windows | ||||
|     Store 8.2) APIs with MSVC, and also for the older Windows Runtime APIs with | ||||
|     MinGW-w64. | ||||
|  *  [**New**] New API header `libopenmpt_ext.h` which implements the libopenmpt | ||||
|     extension APIs also for the C interface. | ||||
|  *  [**New**] The Reverb effect (S99 in S3M/IT/MPTM, and X99 in XM) is now | ||||
|     implemented in libopenmpt. | ||||
|  *  [**New**] For Amiga modules, a new resampler based on the Amiga's sound | ||||
|     characteristics has been added. It can be activated by passing the | ||||
|     `render.resampler.emulate_amiga` ctl with a value of `1`. Non-Amiga modules | ||||
|     are not affected by this, and setting the ctl overrides the resampler choice | ||||
|     specified by `OPENMPT_MODULE_RENDER_INTERPOLATIONFILTER_LENGTH` or | ||||
|     `openmpt::module::RENDER_INTERPOLATIONFILTER_LENGTH`. Support for the MOD | ||||
|     command E0x (Set LED Filter) is also available when the Amiga resampler is | ||||
|     enabled.  | ||||
| 
 | ||||
|  *  [**Change**] libopenmpt versioning changed and follows the more conventional | ||||
|     major.minor.patch as well as the recommendations of the | ||||
|     [SemVer](http://semver.org/) scheme now. In addition to the SemVer | ||||
|     requirements, pre-1.0.0 versions will also honor API and ABI stability in | ||||
|     libopenmpt (i.e. libopenmpt ignores SemVer Clause 4).  | ||||
|  *  [**Change**] The output directories of the MSVC build system were changed to | ||||
|     `bin/vs2015-shared/x86-64-win7/` (and similar) layout which allows building | ||||
|     in the same tree with different compiler versions without overwriting other | ||||
|     outputs. | ||||
|  *  [**Change**] The emscripten build now exports libopenmpt as 'libopenmpt' | ||||
|     instead of the default 'Module'. | ||||
|  *  [**Change**] Android: The build system changed. The various Android.mk files | ||||
|     have been merged into a single one which can be controlled using command | ||||
|     line options. | ||||
|  *  [**Change**] The `Makefile` build system now passes `std=c++11` to the | ||||
|     compiler by default. Older compilers may still work if you pass | ||||
|     `STDCXX=c++0x` to the `make` invocation. | ||||
|  *  [**Change**] The `Makefile` option `ANCIENT=1` is gone. | ||||
|  *  [**Change**] The optional dependencies on `libltdl` or `libdl` are gone. | ||||
|     They are no longer needed for any functionality. | ||||
| 
 | ||||
|  *  [**Regression**] Compiling client code using the C++ API now requires a | ||||
|     compiler running in C++11 mode. | ||||
|  *  [**Regression**] Support for GCC 4.1, 4.2, 4.3, 4.4, 4.5, 4.6, 4.7 has been | ||||
|     removed. | ||||
|  *  [**Regression**] Support for Clang 3.0, 3.1, 3.2, 3.3 has been removed. | ||||
|  *  [**Regression**] Support for Emscripten versions older than 1.31.0 has been | ||||
|     removed. | ||||
|  *  [**Regression**] Support for Android NDK versions older than 11 has been | ||||
|     removed. | ||||
|  *  [**Regression**] Visual Studio 2008, 2010, 2012, 2013 support has been | ||||
|     removed. | ||||
|  *  [**Regression**] Dynamic run-time loading of libmpg123 is no longer | ||||
|     supported. Libmpg123 must be linked at link-time now. | ||||
|  *  [**Regression**] xmp-openmpt: xmp-openmpt now requires XMPlay 3.8 or later | ||||
|     and compiling xmp-openmpt requires an appropriate XMPlay SDK with | ||||
|     `XMPIN_FACE` >= `4`. | ||||
|  *  [**Regression**] Support for libmpg123 older than 1.13.0 has been removed. | ||||
|  *  [**Regression**] Un4seen unmo3 support has been removed. | ||||
| 
 | ||||
|  *  [**Bug**] C++ API: `openmpt::exception` did not define copy and move | ||||
|     constructors or copy and move assignment operators in libopenmpt 0.2. The | ||||
|     compiler-generated ones were not adequate though. libopenmpt 0.3 adds the | ||||
|     appropriate special member functions. This adds the respective symbol names | ||||
|     to the exported ABI, which, depending on the compiler, might or might not | ||||
|     have been there in libopenmpt 0.2. The possibly resulting possible ODR | ||||
|     violation only affects cases that did crash in the libopenmpt 0.2 API anyway | ||||
|     due to memory double-free, and does not cause any further problems in | ||||
|     practice for all known platforms and compilers. | ||||
|  *  [**Bug**] The C API could crash instead of failing gracefully in | ||||
|     out-of-memory situations. | ||||
|  *  [**Bug**] The test suite could fail on MacOSX or FreeBSD in non-fatal ways | ||||
|     when no locale was active. | ||||
|  *  [**Bug**] `libopenmpt_stream_callbacks_fd.h` and | ||||
|     `libopenmpt_stream_callbacks_file.h` were missing in Windows development | ||||
|     packages. | ||||
|  *  [**Bug**] libopenmpt on Windows did not properly guard against current | ||||
|     working directory DLL injection attacks. | ||||
|  *  [**Bug**] localtime() was used to determine the version of Schism Tracker | ||||
|     used to save IT and S3M files. This function is not guaranteed to be | ||||
|     thread-safe by the standard and is now no longer used. | ||||
|  *  [**Bug**] Possible crashes with malformed IT, ITP, AMS, MDL, MED, MPTM, PSM | ||||
|     and Startrekker files. | ||||
|  *  [**Bug**] Possible hangs with malformed DBM, MPTM and PSM files. | ||||
|  *  [**Bug**] Possible hangs with malformed files containing cyclic plugin | ||||
|     routings. | ||||
|  *  [**Bug**] Excessive loading times with malformed ITP / truncated AMS files. | ||||
|  *  [**Bug**] Plugins did not work correctly when changing the sample rate | ||||
|     between two render calls. | ||||
|  *  [**Bug**] Possible NULL-pointer dereference read during obscure | ||||
|     out-of-memory situations while handling exceptions in the C API. | ||||
|  *  [**Bug**] libmodplug: `libmodplug.pc` was wrong. | ||||
|  *  [**Bug**] Cross-compiling libopenmpt with autotools for Windows now properly | ||||
|     sets `-municode` and `-mconsole` as well as all required Windows system | ||||
|     libraries. | ||||
|  *  [**Bug**] foo_openmpt: Interpolation filter and volume ramping settings were | ||||
|     confused in previous versions. This version resets both to the defaults. | ||||
|  *  [**Bug**] libmodplug: The CSoundFile::Read function in the emulated | ||||
|     libmodplug C++ API returned the wrong value, causing qmmp (and possibly | ||||
|     other software) to crash. | ||||
| 
 | ||||
|  *  Support for SoundTracker Pro II (STP) and Digital Tracker (DTM) modules. | ||||
|  *  Increased accuracy of the sample position and sample rate to drift less when | ||||
|     playing very long samples. | ||||
|  *  Various playback improvements for IT and XM files. | ||||
|  *  Channel frequency could wrap around after some excessive portamento / down | ||||
|     in some formats since libopenmpt 0.2-beta17. | ||||
|  *  Playback improvements for S3M files made with Impulse Tracker and | ||||
|     Schism Tracker. | ||||
|  *  ParamEq plugin emulation didn't do anything at full gain (+15dB). | ||||
|  *  All standard DMO effects are now also emulated on non-Windows and non-MSVC | ||||
|     systems. | ||||
|  *  Added `libopenmpt_stream_callbacks_buffer.h` which adds | ||||
|     `openmpt_stream_callbacks` support for in-memory buffers, possibly even only | ||||
|     using a truncated prefix view into a bigger file which is useful for | ||||
|     probing. | ||||
|  *  Avoid enabling some ProTracker-specific quirks for MOD files most likely | ||||
|     created with ScreamTracker 3. | ||||
|  *  Tremolo effect only had half the intended strength in MOD files. | ||||
|  *  Pattern loops ending on the last row a pattern were not executed correctly | ||||
|     in S3M files. | ||||
|  *  Work-around for reading MIDI macros and plugin settings in some malformed IT | ||||
|     files written by old UNMO3 versions. | ||||
|  *  Improve tracker detection in IT format. | ||||
|  *  Playback fixes for 8-channel MED files | ||||
|  *  Do not set note volume to 0 on out-of-range offset in XM files. | ||||
|  *  Better import of some slide commands in SFX files. | ||||
|  *  Sample 15 in "Crew Generation" by Necros requires short loops at the | ||||
|     beginning of the sample to not be ignored. Since we need to ignore them in | ||||
|     some (non-ProTracker) modules, we heuristically disable the old loop | ||||
|     sanitization behaviour based on the module channel count. | ||||
|  *  Both normal and percentage offset in PLM files were handled as percentage | ||||
|     offset. | ||||
|  *  MT2 files with instruments that had both sample and plugin assignments were | ||||
|     not read correctly. | ||||
|  *  Some valid FAR files were rejected erroneously. | ||||
|  *  Support for VBlank timing flag and comment field in PT36 files. | ||||
|  *  Improved accuracy of vibrato command in DIGI / DBM files. | ||||
|  *  STM: Add support for "WUZAMOD!" magic bytes and allow some slightly | ||||
|     malformed STM files to load which were previously rejected. | ||||
|  *  Detect whether "hidden" patterns in the order list of SoundTracker modules | ||||
|     should be taken into account or not. | ||||
|  *  Tighten heuristics for rejecting invalid 669, M15, MOD and ICE files and | ||||
|     loosen them in other places to allow some valid MOD files to load. | ||||
|  *  Improvements to seeking: Channel panning was not always updated from | ||||
|     instruments / samples when seeking, and out-of-range global volume was not | ||||
|     applied correctly in some formats. | ||||
|  *  seek.sync_samples=1 did not apply PTM reverse offset effect and the volume | ||||
|     slide part of combined volume slide + vibrato commands. | ||||
|  *  If the order list was longer than 256 items and there was a pattern break | ||||
|     effect without a position jump on the last pattern of the sequence, it did | ||||
|     not jump to the correct restart order. | ||||
|  *  `Makefile` has now explicit support for FreeBSD with no special option or | ||||
|     configuration required. | ||||
|  *  openmpt123: Improved section layout in man page. | ||||
|  *  libmodplug: Added all missing C++ API symbols that are accessible via the | ||||
|     public libmodplug header file. | ||||
|  *  Autotools build system now has options `--disable-openmpt123`, | ||||
|     `--disable-tests` and `--disable-examples` which may be desireable when | ||||
|     cross-compiling. | ||||
|  *  Windows binary packages now ship with libmpg123 included. | ||||
| 
 | ||||
| ### libopenmpt 0.2-beta20 (2016-08-07) | ||||
| 
 | ||||
|  *  [**Bug**] PSM loader was broken on big-endian platforms since forever. | ||||
|  *  [**Bug**] `load.skip_samples` ctl did not work for PSM16 modules. | ||||
| 
 | ||||
|  *  There is a new `subsong` ctl, which can return the currently selected | ||||
|     subsong. | ||||
|  *  More accurate ProTracker arpeggio wrap-around emulation. | ||||
|  *  More accurate sample tuning in PSM16 files. | ||||
|  *  Samples in DSM files were sometimes detuned and some pattern commands were | ||||
|     not imported correctly. | ||||
|  *  More accurate import of MDL 7-bit panning command. | ||||
|  *  Only import pattern commands supported by the UltraTracker version that was | ||||
|     used to save ULT files. Add support for command 5-C (end loop). | ||||
|  *  DMF sample loop lengths were off by one. | ||||
|  *  Unis 669 pan slide effect was too deep. | ||||
|  *  Several valid (but slightly corrupted possibly due to disk failures or data | ||||
|     transfer errors) SoundTracker files were no longer loading since libopenmpt | ||||
|     0.2-beta18. | ||||
| 
 | ||||
| ### libopenmpt 0.2-beta19 (2016-07-23) | ||||
| 
 | ||||
|  *  [**Change**] libopenmpt now uses C++14 `[[deprecated]]` attribute instead | ||||
|     of compiler-specific solutions when appropriate. | ||||
|  *  [**Change**] libopenmpt C++ header now uses C++11 `noexcept` instead of | ||||
|     C++98 `throw()` exception specification when supported. `throw()` is | ||||
|     deprecated since C++11. This does not change API or ABI as they are | ||||
|     equivalent. Use `LIBOPENMPT_ASSUME_CPLUSPLUS_NOEXCEPT` to override the | ||||
|     default. | ||||
|  *  [**Change**] The preprocessor macro `LIBOPENMPT_ANCIENT_COMPILER_STDINT` is | ||||
|     gone. Please use `LIBOPENMPT_ASSUME_CPLUSPLUS_CSTDINT instead`. | ||||
|     Additionally, the typedefs moved from illegal namespace ::std into somewhat | ||||
|     less dangerous namespace ::openmpt::std. You can test | ||||
|     `#ifdef LIBOPENMPT_QUIRK_NO_CSTDINT` client-side to check whether | ||||
|     `libopenmpt.hpp` used the non-standard types. (Note: Of all supported | ||||
|     compilers, this change only affects the 3 compilers with only limited | ||||
|     support: MSVC 2008, GCC 4.1, GCC 4.2.) | ||||
| 
 | ||||
|  *  [**Bug**] xmp-openmpt: Crash when viewing sample texts. | ||||
| 
 | ||||
|  *  The public libopenmpt C++ header has auto-detection logic for the used C++ | ||||
|     standard now. In case your client code compiler misreports the standard | ||||
|     version or you want to override it for other reasons, | ||||
|     `#define LIBOPENMPT_ASSUME_CPLUSPLUS` to the value of the standard version | ||||
|     you desire to be used. There is also a macro for each individual aspect, | ||||
|     like `LIBOPENMPT_ASSUME_CPLUSPLUS_CSTDINT`, | ||||
|     `LIBOPENMPT_ASSUME_CPLUSPLUS_DEPRECATED`, | ||||
|     `LIBOPENMPT_ASSUME_CPLUSPLUS_NOEXCEPT` which take precedence over the | ||||
|     general macro. | ||||
|  *  Portamento with sample swap behaviour was wrong for ProTracker MODs. | ||||
|  *  Rewritten loader and various playback fixes for MDL files. | ||||
|  *  libopenmpt 0.2-beta18 broke import of many pattern commands in DBM, DMF and | ||||
|     ULT files. | ||||
|  *  ADPCM samples in MOD files were broken since libopenmpt 0.2-beta17. | ||||
| 
 | ||||
| ### libopenmpt 0.2-beta18 (2016-07-11) | ||||
| 
 | ||||
|  *  [**Change**] openmpt123: Add PulseAudio output support. Autotools and | ||||
|     `Makefile` build systems now depend on `libpulse` and `libpulse-simple` by | ||||
|     default. Disable with `--without-pulseaudio` or `NO_PULSEAUDIO=1` | ||||
|     respectively. When enabled, PulseAudio will be the default output driver, | ||||
|  *  [**Change**] xmp-openmpt: Settings are now stored in xmplay.ini like with | ||||
|     every other plugin. | ||||
| 
 | ||||
|  *  [**Regression**] openmpt123: Support for FLAC < 1.3.0 has been removed. FLAC | ||||
|     before 1.3.0 is broken beyond repair as it provides `assert.h` in the | ||||
|     include path. | ||||
| 
 | ||||
|  *  [**Bug**] Generated pkg-config file libopenmpt.pc by both `Makefile` and | ||||
|     Autotools build systems was totally broken. | ||||
|  *  [**Bug**] libopenmpt no longer uses the non-thread-safe global std::rand() | ||||
|     function. | ||||
|  *  [**Bug**] Sample loops in GDM modules did not work when using Emscripten. | ||||
|  *  [**Bug**] XM and MO3 loaders could crash due to unaligned memory accesses. | ||||
|  *  [**Bug**] Fixed incorrect handling of custom MPTM tunings on big endian | ||||
|     platforms. | ||||
|  *  [**Bug**] Fixed various problems found with clang 3.8 static analyzer, | ||||
|     address sanitizer and undefined behaviour sanitizer. | ||||
|  *  [**Bug**] File header probing functionality was broken for most formats. | ||||
|  *  [**Bug**] With non-seekable streams, the entire file was almost always | ||||
|     cached even if it was not of any supported module type. | ||||
| 
 | ||||
|  *  Seeking in allsubsongs-mode now works correctly. | ||||
|  *  openmpt123: Added subsong support. | ||||
|  *  Various playback fixes for 669, IT, MT2 and MTM files. | ||||
|  *  Some MOD files with more than 128 patterns (e.g. NIETNU.MOD) were not loaded | ||||
|     correctly. | ||||
|  *  A new example `libopenmpt_example_c_probe` has been added which demonstrates | ||||
|     the usage and flexibility of openmpt_could_open_propability() in the C API | ||||
|     under various constraints. | ||||
| 
 | ||||
| ### libopenmpt 0.2-beta17 (2016-05-21) | ||||
| 
 | ||||
|  *  [**Change**] The Makefile and Autotools build systems now require to | ||||
|     explicitly specify `NO_LTDL=1` or `--without-ltdl` respectively if no | ||||
|     support for dynamic loading of third party libraries via libtool libltdl is | ||||
|     desired. | ||||
|  *  [**Change**] In the Makefile build system option `USE_MO3` and the Autotools | ||||
|     build system option `--enable-mo3` are gone. Dynamic loading of un4seen | ||||
|     unmo3 is now always enabled when dynamic loading is possible and built-in | ||||
|     MO3 support is not possible because either a MP3 or a Vorbis decoder is | ||||
|     missing. | ||||
|  *  [**Change**] The MSVC build system changed. The `libopenmptDLL` project is | ||||
|     gone. Use the new `ReleaseShared` configuration of the `libopenmpt` project | ||||
|     instead. libopenmpt now links against zlib by default. A separate project | ||||
|     with smaller footprint linking against miniz is still available as | ||||
|     `libopenmpt-small`. | ||||
|  *  [**Change**] The constants used to query library information from | ||||
|     `openmpt_get_string()` and `openmpt::string::get()` (i.e. OPENMPT_STRING_FOO | ||||
|     and openmpt::string::FOO) have been deprecated because having syntactic | ||||
|     constants for theses keys makes extending the API in a backwards and | ||||
|     forwards compatible way harder than it should be. Please just use the string | ||||
|     literals directly. | ||||
|  *  [**Change**] Deprecated API identifiers will now cause deprecation warnings | ||||
|     with MSVC, GCC and clang. `#define LIBOPENMPT_NO_DEPRECATE` to disable the | ||||
|     warnings. | ||||
|  *  [**Change**] openmpt123: `--[no-]shuffle` option has been renamed to | ||||
|     `--[no-]randomize`. A new `--[no-]shuffle` option has been added which | ||||
|     shuffles randomly through the playlist as opposed to randomizing the | ||||
|     playlist upfront. | ||||
|  *  [**Change**] Support for Un4seen unmo3 has generally been deprecated in | ||||
|     favour of the new internal mo3 decoder. Un4seen unmo3 support will be | ||||
|     removed on 2018-01-01. | ||||
| 
 | ||||
|  *  [**Bug**] Memory consumption during loading has been reduced by about 1/3 in | ||||
|     case a seekable input stream is provided (either via C API callback open | ||||
|     functions or via C++ API iostream constructors). | ||||
|  *  [**Bug**] Some samples in AMS modules were detuned when using Emscripten. | ||||
|  *  [**Bug**] Possible crash with excessive portamento down in some formats. | ||||
|  *  [**Bug**] Possible crashes with malformed AMF, AMS, DBM, IT, MDL, MED, MPTM, | ||||
|     MT2, PSM and MMCMP-, XPK- and PP20-compressed files. | ||||
|  *  [**Bug**] `openmpt::module::format_pattern_row_channel` with `width == 0` | ||||
|     was returning an empty string instead of an string with unconstrained | ||||
|     length. | ||||
| 
 | ||||
|  *  Support for ProTracker 3.6 IFF-style modules and SoundFX / MultiMedia Sound | ||||
|     (SFX / MMS) modules. | ||||
|  *  libopenmpt now has support for DMO plugins on Windows when built with MSVC. | ||||
|     Additionally, the DMO Compression, Distortion, Echo, Gargle, ParamEQ and | ||||
|     WavesReverb DSPs are emulated on on all other platforms. | ||||
|  *  libopenmpt now supports the DigiBooster Echo DSP. | ||||
|  *  To avoid any of the aforementioned plugins to be used, the load.skip_plugins | ||||
|     ctl can be passed when loading a module. | ||||
|  *  libopenmpt got native MO3 support with MP3 decoding either via libmpg123 or | ||||
|     MediaFoundation (on Windows 7 and up) and Vorbis decoding via libogg, | ||||
|     libvorbis, libvorbisfile or stb_vorbis. | ||||
|  *  libopenmpt MSVC builds with Visual Studio 2010 or later on Windows 7 or | ||||
|     later now use an internal MO3 decoder with libogg, libvorbis, libvorbisfile, | ||||
|     and libmpg123 or minimp3 or MediaFoundation suppport by default. Visual | ||||
|     Studio 2008 builds still use unmo3.dll by default but also support the | ||||
|     built-in decoder in which case libmpg123 is required. | ||||
|  *  libopenmpt with Makefile or Autotools build system can now also use | ||||
|     glibc/libdl instead of libtool/libltdl for dynamic loading of third-party | ||||
|     libraries. Options `NO_DL=1` and `--without-dl` have been added | ||||
|     respectively. | ||||
|  *  The `Makefile` build system got 4 new options NO_MPG123, NO_OGG, NO_VORBIS, | ||||
|     NO_VORBISFILE. The default is to use the new dependencies automatically. | ||||
|  *  The `Autotools` build system got 4 new options --without-mpg123, | ||||
|     --without-ogg, --without-vorbis, --without-vorbisfile. The default is to use | ||||
|     the new dependencies automatically. | ||||
|  *  Makefile and Android builds got support for using minimp3 instead of | ||||
|     libmpg123. For Android, use `Android-minimp3-stbvorbis.mk`, for Makefile use | ||||
|     `USE_MINIMP3=1`. You have to download | ||||
|     [minimp3](http://keyj.emphy.de/minimp3/) yourself and put its contents into | ||||
|     `include/minimp3/`. | ||||
|  *  `"source_url"`, `"source_date"` and `"build_compiler"` keys have been added | ||||
|     to `openmpt_string_get()` and `openmpt::string::get()`. | ||||
|  *  openmpt123: Add new `--[no-]restart]` option which restarts the playlist | ||||
|     when finished. | ||||
|  *  Improved Ultimate SoundTracker version detection heuristics. | ||||
|  *  Playing a sample at a sample rate close to the mix rate could lead to small | ||||
|     clicks when using vibrato. | ||||
|  *  More fine-grained internal legacy module compatibility settings to correctly | ||||
|     play back modules made with older versions of OpenMPT and a few other | ||||
|     trackers. | ||||
|  *  The tail of compressed MDL samples was slightly off. | ||||
|  *  Some probably hex-edited XM files (e.g. cybernostra weekend.xm) were not | ||||
|     loaded correctly. | ||||
|  *  Countless other playback fixes for MOD, XM, S3M, IT and MT2 files. | ||||
| 
 | ||||
| ### libopenmpt 0.2-beta16 (2015-11-22) | ||||
| 
 | ||||
|  *  [**Change**] The Autotools build system does strict checking of all | ||||
|     dependencies now. Instead of best effort auto-magic detection of all | ||||
|     potentially optional dependencies, the default set of dependencies is now | ||||
|     enforced unless each individual dependency gets explicitely disabled via | ||||
|     `--without-foo` or `--disable-foo` `./configure` switches. Run | ||||
|     `./configure --help` for the full list of options. | ||||
| 
 | ||||
|  *  [**Bug**] Some MOD files were erroneously detected as 669 files. | ||||
|  *  [**Bug**] Some malformed AMF files could result in very long loading times. | ||||
|  *  [**Bug**] Fixed crashes in IMF and MT2 loaders. | ||||
|  *  [**Bug**] MTM files generated by UNMO3 were not loaded properly. | ||||
|   | ||||
|  *  Improved MTM playback. | ||||
|  *  `make CONFIG=haiku` for Haiku has been added. | ||||
|  *  Language bindings for FreeBASIC have been added (see | ||||
|     `libopenmpt/bindings/`). | ||||
| 
 | ||||
| ### libopenmpt 0.2-beta15 (2015-10-31) | ||||
| 
 | ||||
|  *  [**Change**] openmpt123: SDL2 is now supported and preferred to SDL1 if | ||||
|     available with the `Makefile` build system. | ||||
| 
 | ||||
|  *  [**Bug**] Emscripten support for older emscripten versions broke in -beta14. | ||||
|     These are now supported again when using `make CONFIG=emscripten-old`. | ||||
|  *  [**Bug**] Fixed crashes in MED loader. | ||||
| 
 | ||||
|  *  Playback improvements and loader fixes for MOD, MT2 and MED. | ||||
| 
 | ||||
| ### libopenmpt 0.2-beta14 (2015-09-13) | ||||
| 
 | ||||
|  *  [**Change**] The C++ API example now uses the PortAudio C++ bindings | ||||
|     instead of the C API. | ||||
|  *  [**Change**] Default compiler options for Emscripten have been changed to | ||||
|     more closely match the Emscripten recommendations. | ||||
| 
 | ||||
|  *  [**Bug**] Client code compilation with C89 compilers was broken in beta13. | ||||
|  *  [**Bug**] Test suite failed on certain Emscripten/node.js combinations. | ||||
|  *  [**Bug**] Fixed various crashes or hangs in DMF, OKT, PLM, IT and MPTM | ||||
|     loaders. | ||||
| 
 | ||||
|  *  Implemented error handling in the libopenmpt API examples. | ||||
|  *  Various playback improvements and fixes for OKT, IT and MOD. | ||||
| 
 | ||||
| ### libopenmpt 0.2-beta13 (2015-08-16) | ||||
| 
 | ||||
|  *  [**Change**] The MSVC build system has been redone. Solutions are now | ||||
|     located in `build/vsVERSION/`. | ||||
| 
 | ||||
|  *  [**Bug**] get_current_channel_vu_left and get_current_channel_vu_right only | ||||
|     return the volume of the front left and right channels now. | ||||
|     get_current_channel_vu_rear_left and get_current_channel_vu_rear_right | ||||
|     do now actually work and return non-zero values. | ||||
|  *  [**Bug**] Fix crashes and hangs in MED and MDL loaders and with some | ||||
|     truncated compressed IT samples. | ||||
|  *  [**Bug**] Fix crash when playing extremely high-pitched samples. | ||||
| 
 | ||||
|  *  Completed C and C++ documentation | ||||
|  *  Added new key for openmpt::module::get_metadata, "message_raw", which | ||||
|     returns an empty string if there is no song message rather than a list of | ||||
|     instrument names. | ||||
|  *  in_openmpt: Support for compiling with VS2008. | ||||
|  *  xmp-openmpt: Support for compiling with VS2008. | ||||
|  *  in_openmpt: Add a more readable file information window. | ||||
| 
 | ||||
| ### libopenmpt 0.2-beta12 (2015-04-19) | ||||
| 
 | ||||
|  *  Playback fix when row delay effect is used together with offset command. | ||||
|  *  A couple of fixes for the seek.sync_samples=1 case. | ||||
|  *  IT compatibility fix for IT note delay. | ||||
|  *  ProTracker MOD playback compatibility improvement. | ||||
| 
 | ||||
| ### libopenmpt 0.2-beta11 (2015-04-18) | ||||
| 
 | ||||
|  *  [**Change**] openmpt_stream_seek_func() now gets called with | ||||
|     OPENMPT_STREAM_SEEK_SET, OPENMPT_STREAM_SEEK_CUR and | ||||
|     OPENMPT_STREAM_SEEK_END whence parameter instead of SEEK_SET, SEEK_CUR and | ||||
|     SEEK_END. These are defined to 0, 1 and 2 respectively which corresponds to | ||||
|     the definition in all common C libraries. If your C library uses different | ||||
|     constants, this theoretically breaks binary compatibility. The old | ||||
|     libopenmpt code, however, never actually called the seek function, thus, | ||||
|     there will be no problem in practice. | ||||
|  *  [**Change**] openmpt123: When both SDL1.2 and PortAudio are available, | ||||
|     SDL is now the preferred backend because SDL is more widespread and better | ||||
|     tested on all kinds of different platforms, and in general, SDL is just | ||||
|     more reliable. | ||||
| 
 | ||||
|  *  [**Bug**] libopenmpt now also compiles with GCC 4.3. | ||||
| 
 | ||||
|  *  libopenmpt now supports PLM (Disorder Tracker 2) files. | ||||
|  *  Various playback improvements and fixes for IT, S3M, XM, MOD, PTM and 669 | ||||
|     files. | ||||
| 
 | ||||
| ### libopenmpt 0.2-beta10 (2015-02-17) | ||||
| 
 | ||||
|  *  [**Change**] Makefile configuration filenames changed from | ||||
|     `build/make/Makefile.config.*` to `build/make/config-*.mk`. | ||||
|  *  [**Change**] libopenmpt for Android now supports unmo3 from un4seen. See | ||||
|     `build/android_ndk/README.AndroidNDK.txt` for details. | ||||
| 
 | ||||
|  *  [**Bug**] Fix out-of-bounds read in mixer code for ProTracker-compatible | ||||
|     MOD files which was introduced back in r4223 / beta6. | ||||
| 
 | ||||
|  *  Vibrato effect was too weak in beta8 and beta9 in IT linear slide mode. | ||||
|  *  Very small fine portamento was wrong in beta8 and beta9 in IT linear slide | ||||
|     mode. | ||||
|  *  Tiny IT playback compatibility improvements. | ||||
|  *  STM playback improvements. | ||||
| 
 | ||||
| ### libopenmpt 0.2-beta9 (2014-12-21) | ||||
| 
 | ||||
|  *  [**Bug**] libopenmpt_ext.hpp was missing from the Windows binary zip files. | ||||
| 
 | ||||
| ### libopenmpt 0.2-beta8 (2014-12-21) | ||||
| 
 | ||||
|  *  [**Change**] foo_openmpt: Settings are now accessible via foobar2000 | ||||
|     advanced settings. | ||||
|  *  [**Change**] Autotools based build now supports libunmo3. Specify | ||||
|     --enable-unmo3. | ||||
|  *  [**Change**] Support for dynamic loading of libunmo3 on MacOS X. | ||||
|  *  [**Change**] libopenmpt now uses libltld (from libtool) for dynamic loading | ||||
|     of libunmo3 on all non-Windows platforms. | ||||
|  *  [**Change**] Support for older compilers: | ||||
|      *  GCC 4.1.x to 4.3.x (use `make ANCIENT=1`) | ||||
|      *  Microsoft Visual Studio 2008 (with latest Service Pack) | ||||
|         (see `build/vs2008`) | ||||
|  *  [**Change**] libopenmpt_ext.hpp is now distributed by default. The API is | ||||
|     still considered experimental and not guaranteed to stay API or ABI | ||||
|     compatible. | ||||
|  *  [**Change**] xmp-openmpt / in_openmpt: No more libopenmpt_settings.dll. | ||||
|     The settings dialog now uses a statically linked copy of MFC. | ||||
| 
 | ||||
|  *  [**Bug**] The -autotools tarballs were not working at all. | ||||
| 
 | ||||
|  *  Vastly improved MT2 loader. | ||||
|  *  Improved S3M playback compatibility. | ||||
|  *  Added openmpt::ext::interactive, an extension which adds a whole bunch of | ||||
|     new functionality to change playback in some way or another. | ||||
|  *  Added possibility to sync sample playback when using | ||||
|     openmpt::module::set_position_* by setting the ctl value | ||||
|     seek.sync_samples=1   | ||||
|  *  Support for "hidden" subsongs has been added. | ||||
|     They are accessible through the same interface as ordinary subsongs, i.e. | ||||
|     use openmpt::module::select_subsong to switch between any kind of subsongs. | ||||
|  *  All subsongs can now be played consecutively by passing -1 as the subsong | ||||
|     index in openmpt::module::select_subsong. | ||||
|  *  Added documentation for a couple of more functions. | ||||
| 
 | ||||
| ### libopenmpt 0.2-beta7 (2014-09-07) | ||||
| 
 | ||||
|  *  [**Change**] libopenmpt now has an GNU Autotools based build system (in | ||||
|     addition to all previously supported ways of building libopenmpt). | ||||
|     Autotools support is packaged separately as tarballs ending in | ||||
|     `-autotools.tar.gz`. | ||||
| 
 | ||||
|  *  [**Bug**] The distributed windows .zip file did not include pugixml. | ||||
| 
 | ||||
|  *  [**Regression**] openmpt123: Support for writing WavPack (.wv) files has | ||||
|     been removed. | ||||
|      | ||||
|     Reasoning: | ||||
|      1. WavPack support was incomplete and did not include support for writing | ||||
|         WavPack metadata at all. | ||||
|      2. openmpt123 already supports libSndFile which can be used to write | ||||
|         uncompressed lossless WAV files which can then be encoded to whatever | ||||
|         format the user desires with other tools. | ||||
| 
 | ||||
| ### libopenmpt 0.2-beta6 (2014-09-06) | ||||
| 
 | ||||
|  *  [**Change**] openmpt123: SDL is now also used by default if availble, in | ||||
|     addition to PortAudio. | ||||
|  *  [**Change**] Support for emscripten is no longer experimental. | ||||
|  *  [**Change**] libopenmpt itself can now also be compiled with VS2008. | ||||
| 
 | ||||
|  *  [**Bug**] Fix all known crashes on platforms that do not support unaligned | ||||
|     memory access. | ||||
|  *  [**Bug**] openmpt123: Effect column was always missing in pattern display. | ||||
| 
 | ||||
| ### libopenmpt 0.2-beta5 (2014-06-15) | ||||
| 
 | ||||
|  *  [**Change**] Add unmo3 support for non-Windows builds. | ||||
|  *  [**Change**] Namespace all internal functions in order to allow statically | ||||
|     linking against libopenmpt without risking duplicate symbols. | ||||
|  *  [**Change**] Iconv is now completely optional and only used on Linux | ||||
|     systems by default. | ||||
|  *  [**Change**] Added libopenmpt_example_c_stdout.c, an example without | ||||
|     requiring PortAudio. | ||||
|  *  [**Change**] Add experimental support for building libopenmpt with | ||||
|     emscripten. | ||||
| 
 | ||||
|  *  [**Bug**] Fix ping-pong loop behaviour which broke in 0.2-beta3. | ||||
|  *  [**Bug**] Fix crashes when accessing invalid patterns through libopenmpt | ||||
|     API. | ||||
|  *  [**Bug**] Makefile: Support building with missing optional dependencies | ||||
|     without them being stated explicitely. | ||||
|  *  [**Bug**] openmpt123: Crash when quitting while playback is stopped. | ||||
|  *  [**Bug**] openmpt123: Crash when writing output to a file in interactive UI | ||||
|     mode. | ||||
|  *  [**Bug**] openmpt123: Wrong FLAC output filename in --render mode. | ||||
| 
 | ||||
|  *  Various smaller playback accuracy improvements. | ||||
| 
 | ||||
| ### libopenmpt 0.2-beta4 (2014-02-25) | ||||
| 
 | ||||
|  *  [**Bug**] Makefile: Dependency tracking for the test suite did not work. | ||||
| 
 | ||||
| ### libopenmpt 0.2-beta3 (2014-02-21) | ||||
| 
 | ||||
|  *  [**Change**] The test suite is now built by default with Makefile based | ||||
|     builds. Use `TEST=0` to skip building the tests. `make check` runs the test | ||||
|     suite. | ||||
| 
 | ||||
|  *  [**Bug**] Crash in MOD and XM loaders on architectures not supporting | ||||
|     unaligned memory access. | ||||
|  *  [**Bug**] MMCMP, PP20 and XPK unpackers should now work on non-x86 hardware | ||||
|     and implement proper bounds checking. | ||||
|  *  [**Bug**] openmpt_module_get_num_samples() returned the wrong value. | ||||
|  *  [**Bug**] in_openmpt: DSP plugins did not work properly. | ||||
|  *  [**Bug**] in_openmpt/xmp-openmpt: Setting name for stereo separation was | ||||
|     misspelled. This version will revert your stereo separation settings to | ||||
|     default. | ||||
|  *  [**Bug**] Crash when loading some corrupted modules with stereo samples. | ||||
| 
 | ||||
|  *  Support building on Android NDK. | ||||
|  *  Avoid clicks in sample loops when using interpolation. | ||||
|  *  IT filters are now done in integer instead of floating point. This improves | ||||
|     performance, especially on architectures with no or a slow FPU. | ||||
|  *  MOD pattern break handling fixes. | ||||
|  *  Various XM playback improvements. | ||||
|  *  Improved and switchable dithering when using 16bit integer API. | ||||
| 
 | ||||
| ### libopenmpt 0.2-beta2 (2014-01-12) | ||||
| 
 | ||||
|  *  [**Bug**] MT2 loader crash. | ||||
|  *  [**Bug**] Saving settings in in_openmpt and xmp-openmpt did not work. | ||||
|  *  [**Bug**] Load libopenmpt_settings.dll also from below Plugins directory in | ||||
|     Winamp. | ||||
| 
 | ||||
|  *  DBM playback improvements. | ||||
| 
 | ||||
| ### libopenmpt 0.2-beta1 (2013-12-31) | ||||
| 
 | ||||
|  *  First release. | ||||
| 
 | ||||
							
								
								
									
										550
									
								
								libs/libopenmpt/debian/libopenmpt-0.4.0-trusty-backport.diff
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										550
									
								
								libs/libopenmpt/debian/libopenmpt-0.4.0-trusty-backport.diff
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,550 @@ | |||
| diff -uraN ../../orig/libopenmpt-0.4.0/debian/changelog ./debian/changelog
 | ||||
| --- ../../orig/libopenmpt-0.4.0/debian/changelog	2018-12-24 16:43:58.000000000 -0500
 | ||||
| +++ ./debian/changelog	2019-01-04 17:56:35.024725537 -0500
 | ||||
| @@ -1,3 +1,38 @@
 | ||||
| +libopenmpt (0.4.0-ubuntu14.04.1~ppa14) trusty; urgency=medium
 | ||||
| +
 | ||||
| +  * Remove debian symbols files due to gcc 4.8 - 5 C++ abi incompatibility
 | ||||
| +
 | ||||
| + -- Sonic Team Junior <stjr@srb2.org>  Fri, 04 Jan 2019 17:56:01 -0500
 | ||||
| +
 | ||||
| +libopenmpt (0.4.0-ubuntu14.04.1~ppa13) trusty; urgency=medium
 | ||||
| +
 | ||||
| +  * autoreconf libtool
 | ||||
| +
 | ||||
| + -- Sonic Team Junior <stjr@srb2.org>  Fri, 04 Jan 2019 17:10:45 -0500
 | ||||
| +
 | ||||
| +libopenmpt (0.4.0-ubuntu14.04.1~ppa12) trusty; urgency=medium
 | ||||
| +
 | ||||
| +  * debian/rules autoreconf
 | ||||
| +
 | ||||
| + -- Sonic Team Junior <stjr@srb2.org>  Fri, 04 Jan 2019 17:03:19 -0500
 | ||||
| +
 | ||||
| +libopenmpt (0.4.0-ubuntu14.04.1~ppa11) trusty; urgency=medium
 | ||||
| +
 | ||||
| +  * debian/rules autoreconf
 | ||||
| +
 | ||||
| + -- Sonic Team Junior <stjr@srb2.org>  Fri, 04 Jan 2019 16:59:08 -0500
 | ||||
| +
 | ||||
| +libopenmpt (0.4.0-ubuntu14.04.1~ppa10) trusty; urgency=medium
 | ||||
| +
 | ||||
| +  * Backport to trusty
 | ||||
| +  * Added automake build depend
 | ||||
| +  * Adjusted debhelper depend to >= 9.0~
 | ||||
| +  * Adjusted dpkg-dev depend to >= 1.17.0
 | ||||
| +  * Adjusted debian/compat to 10
 | ||||
| +  * autoreconf --force --install
 | ||||
| +
 | ||||
| + -- Sonic Team Junior <stjr@srb2.org>  Fri, 04 Jan 2019 16:54:04 -0500
 | ||||
| +
 | ||||
|  libopenmpt (0.4.0-1) unstable; urgency=medium | ||||
|   | ||||
|    * New upstream release. | ||||
| diff -uraN ../../orig/libopenmpt-0.4.0/debian/compat ./debian/compat
 | ||||
| --- ../../orig/libopenmpt-0.4.0/debian/compat	2018-12-24 16:43:58.000000000 -0500
 | ||||
| +++ ./debian/compat	2019-01-04 16:39:17.613976357 -0500
 | ||||
| @@ -1 +1 @@
 | ||||
| -11
 | ||||
| +10
 | ||||
| diff -uraN ../../orig/libopenmpt-0.4.0/debian/control ./debian/control
 | ||||
| --- ../../orig/libopenmpt-0.4.0/debian/control	2018-12-24 16:43:58.000000000 -0500
 | ||||
| +++ ./debian/control	2019-01-04 17:10:42.008523333 -0500
 | ||||
| @@ -4,10 +4,12 @@
 | ||||
|  Maintainer: Debian Multimedia Maintainers <debian-multimedia@lists.debian.org> | ||||
|  Uploaders: James Cowgill <jcowgill@debian.org> | ||||
|  Build-Depends: | ||||
| - debhelper (>= 11.1~),
 | ||||
| + automake,
 | ||||
| + libtool,
 | ||||
| + debhelper (>= 9.0~),
 | ||||
|   dh-exec, | ||||
|   doxygen, | ||||
| - dpkg-dev (>= 1.18.0),
 | ||||
| + dpkg-dev (>= 1.17.0),
 | ||||
|   libflac-dev, | ||||
|   libmpg123-dev, | ||||
|   libogg-dev, | ||||
| diff -uraN ../../orig/libopenmpt-0.4.0/debian/files ./debian/files
 | ||||
| --- ../../orig/libopenmpt-0.4.0/debian/files	1969-12-31 19:00:00.000000000 -0500
 | ||||
| +++ ./debian/files	2019-01-04 17:56:47.813250880 -0500
 | ||||
| @@ -0,0 +1 @@
 | ||||
| +libopenmpt_0.4.0-ubuntu14.04.1~ppa14_source.buildinfo libs optional
 | ||||
| diff -uraN ../../orig/libopenmpt-0.4.0/debian/libopenmpt0.symbols ./debian/libopenmpt0.symbols
 | ||||
| --- ../../orig/libopenmpt-0.4.0/debian/libopenmpt0.symbols	2018-12-24 16:43:58.000000000 -0500
 | ||||
| +++ ./debian/libopenmpt0.symbols	1969-12-31 19:00:00.000000000 -0500
 | ||||
| @@ -1,256 +0,0 @@
 | ||||
| -libopenmpt.so.0 libopenmpt0 #MINVER#
 | ||||
| -* Build-Depends-Package: libopenmpt-dev
 | ||||
| -# Ignore std:: template instantiations
 | ||||
| - (regex|optional)"^_ZN?K?S" 0.2.7025~beta20.1
 | ||||
| - _ZN7openmpt10module_ext13get_interfaceERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 0.2.7025~beta20.1
 | ||||
| - (arch-bits=32)_ZN7openmpt10module_extC1EPKcjRSoRKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESA_St4lessISA_ESaISt4pairIKSA_SA_EEE@Base 0.2.7025~beta20.1
 | ||||
| - (arch-bits=64)_ZN7openmpt10module_extC1EPKcmRSoRKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESA_St4lessISA_ESaISt4pairIKSA_SA_EEE@Base 0.2.7025~beta20.1
 | ||||
| - (arch-bits=32)_ZN7openmpt10module_extC1EPKvjRSoRKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESA_St4lessISA_ESaISt4pairIKSA_SA_EEE@Base 0.2.7025~beta20.1
 | ||||
| - (arch-bits=64)_ZN7openmpt10module_extC1EPKvmRSoRKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESA_St4lessISA_ESaISt4pairIKSA_SA_EEE@Base 0.2.7025~beta20.1
 | ||||
| - _ZN7openmpt10module_extC1ERKS0_@Base 0.2.7025~beta20.1
 | ||||
| - _ZN7openmpt10module_extC1ERKSt6vectorIcSaIcEERSoRKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcES2_EESC_St4lessISC_ESaISt4pairIKSC_SC_EEE@Base 0.2.7025~beta20.1
 | ||||
| - _ZN7openmpt10module_extC1ERSiRSoRKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES9_St4lessIS9_ESaISt4pairIKS9_S9_EEE@Base 0.2.7025~beta20.1
 | ||||
| - (arch-bits=32)_ZN7openmpt10module_extC2EPKcjRSoRKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESA_St4lessISA_ESaISt4pairIKSA_SA_EEE@Base 0.2.7025~beta20.1
 | ||||
| - (arch-bits=64)_ZN7openmpt10module_extC2EPKcmRSoRKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESA_St4lessISA_ESaISt4pairIKSA_SA_EEE@Base 0.2.7025~beta20.1
 | ||||
| - (arch-bits=32)_ZN7openmpt10module_extC2EPKvjRSoRKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESA_St4lessISA_ESaISt4pairIKSA_SA_EEE@Base 0.2.7025~beta20.1
 | ||||
| - (arch-bits=64)_ZN7openmpt10module_extC2EPKvmRSoRKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESA_St4lessISA_ESaISt4pairIKSA_SA_EEE@Base 0.2.7025~beta20.1
 | ||||
| - _ZN7openmpt10module_extC2ERKS0_@Base 0.2.7025~beta20.1
 | ||||
| - _ZN7openmpt10module_extC2ERKSt6vectorIcSaIcEERSoRKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcES2_EESC_St4lessISC_ESaISt4pairIKSC_SC_EEE@Base 0.2.7025~beta20.1
 | ||||
| - _ZN7openmpt10module_extC2ERSiRSoRKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES9_St4lessIS9_ESaISt4pairIKS9_S9_EEE@Base 0.2.7025~beta20.1
 | ||||
| - _ZN7openmpt10module_extD0Ev@Base 0.2.7025~beta20.1
 | ||||
| - _ZN7openmpt10module_extD1Ev@Base 0.2.7025~beta20.1
 | ||||
| - _ZN7openmpt10module_extD2Ev@Base 0.2.7025~beta20.1
 | ||||
| - _ZN7openmpt10module_extaSERKS0_@Base 0.2.7025~beta20.1
 | ||||
| - _ZN7openmpt16get_core_versionEv@Base 0.2.7025~beta20.1
 | ||||
| - (arch-bits=32)_ZN7openmpt17probe_file_headerEyPKhj@Base 0.3.0
 | ||||
| - (arch-bits=64)_ZN7openmpt17probe_file_headerEmPKhm@Base 0.3.0
 | ||||
| - (arch-bits=32)_ZN7openmpt17probe_file_headerEyPKhjy@Base 0.3.0
 | ||||
| - (arch-bits=64)_ZN7openmpt17probe_file_headerEmPKhmm@Base 0.3.0
 | ||||
| - (arch-bits=32)_ZN7openmpt17probe_file_headerEyRSi@Base 0.3.0
 | ||||
| - (arch-bits=64)_ZN7openmpt17probe_file_headerEmRSi@Base 0.3.0
 | ||||
| - _ZN7openmpt19get_library_versionEv@Base 0.2.7025~beta20.1
 | ||||
| - _ZN7openmpt22could_open_probabilityERSidRSo@Base 0.3.0
 | ||||
| - _ZN7openmpt22could_open_propabilityERSidRSo@Base 0.2.7025~beta20.1
 | ||||
| - _ZN7openmpt22is_extension_supportedERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 0.2.7025~beta20.1
 | ||||
| - _ZN7openmpt24get_supported_extensionsB5cxx11Ev@Base 0.2.7025~beta20.1
 | ||||
| - _ZN7openmpt38probe_file_header_get_recommended_sizeEv@Base 0.3.0
 | ||||
| - _ZN7openmpt6module14select_subsongEi@Base 0.2.7025~beta20.1
 | ||||
| - _ZN7openmpt6module16set_render_paramEii@Base 0.2.7025~beta20.1
 | ||||
| - _ZN7openmpt6module16set_repeat_countEi@Base 0.2.7025~beta20.1
 | ||||
| - _ZN7openmpt6module20set_position_secondsEd@Base 0.2.7025~beta20.1
 | ||||
| - (arch-bits=32)_ZN7openmpt6module21read_interleaved_quadEijPf@Base 0.2.7025~beta20.1
 | ||||
| - (arch-bits=64)_ZN7openmpt6module21read_interleaved_quadEimPf@Base 0.2.7025~beta20.1
 | ||||
| - (arch-bits=32)_ZN7openmpt6module21read_interleaved_quadEijPs@Base 0.2.7025~beta20.1
 | ||||
| - (arch-bits=64)_ZN7openmpt6module21read_interleaved_quadEimPs@Base 0.2.7025~beta20.1
 | ||||
| - _ZN7openmpt6module22set_position_order_rowEii@Base 0.2.7025~beta20.1
 | ||||
| - (arch-bits=32)_ZN7openmpt6module23read_interleaved_stereoEijPf@Base 0.2.7025~beta20.1
 | ||||
| - (arch-bits=64)_ZN7openmpt6module23read_interleaved_stereoEimPf@Base 0.2.7025~beta20.1
 | ||||
| - (arch-bits=32)_ZN7openmpt6module23read_interleaved_stereoEijPs@Base 0.2.7025~beta20.1
 | ||||
| - (arch-bits=64)_ZN7openmpt6module23read_interleaved_stereoEimPs@Base 0.2.7025~beta20.1
 | ||||
| - (arch-bits=32)_ZN7openmpt6module4readEijPf@Base 0.2.7025~beta20.1
 | ||||
| - (arch-bits=64)_ZN7openmpt6module4readEimPf@Base 0.2.7025~beta20.1
 | ||||
| - (arch-bits=32)_ZN7openmpt6module4readEijPfS1_@Base 0.2.7025~beta20.1
 | ||||
| - (arch-bits=64)_ZN7openmpt6module4readEimPfS1_@Base 0.2.7025~beta20.1
 | ||||
| - (arch-bits=32)_ZN7openmpt6module4readEijPfS1_S1_S1_@Base 0.2.7025~beta20.1
 | ||||
| - (arch-bits=64)_ZN7openmpt6module4readEimPfS1_S1_S1_@Base 0.2.7025~beta20.1
 | ||||
| - (arch-bits=32)_ZN7openmpt6module4readEijPs@Base 0.2.7025~beta20.1
 | ||||
| - (arch-bits=64)_ZN7openmpt6module4readEimPs@Base 0.2.7025~beta20.1
 | ||||
| - (arch-bits=32)_ZN7openmpt6module4readEijPsS1_@Base 0.2.7025~beta20.1
 | ||||
| - (arch-bits=64)_ZN7openmpt6module4readEimPsS1_@Base 0.2.7025~beta20.1
 | ||||
| - (arch-bits=32)_ZN7openmpt6module4readEijPsS1_S1_S1_@Base 0.2.7025~beta20.1
 | ||||
| - (arch-bits=64)_ZN7openmpt6module4readEimPsS1_S1_S1_@Base 0.2.7025~beta20.1
 | ||||
| - _ZN7openmpt6module7ctl_setERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_@Base 0.2.7025~beta20.1
 | ||||
| - _ZN7openmpt6module8set_implEPNS_11module_implE@Base 0.2.7025~beta20.1
 | ||||
| - _ZN7openmpt6moduleC1EPKcS2_RSoRKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESA_St4lessISA_ESaISt4pairIKSA_SA_EEE@Base 0.2.7025~beta20.1
 | ||||
| - (arch-bits=32)_ZN7openmpt6moduleC1EPKcjRSoRKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESA_St4lessISA_ESaISt4pairIKSA_SA_EEE@Base 0.2.7025~beta20.1
 | ||||
| - (arch-bits=64)_ZN7openmpt6moduleC1EPKcmRSoRKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESA_St4lessISA_ESaISt4pairIKSA_SA_EEE@Base 0.2.7025~beta20.1
 | ||||
| - _ZN7openmpt6moduleC1EPKhS2_RSoRKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESA_St4lessISA_ESaISt4pairIKSA_SA_EEE@Base 0.2.7025~beta20.1
 | ||||
| - (arch-bits=32)_ZN7openmpt6moduleC1EPKhjRSoRKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESA_St4lessISA_ESaISt4pairIKSA_SA_EEE@Base 0.2.7025~beta20.1
 | ||||
| - (arch-bits=64)_ZN7openmpt6moduleC1EPKhmRSoRKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESA_St4lessISA_ESaISt4pairIKSA_SA_EEE@Base 0.2.7025~beta20.1
 | ||||
| - (arch-bits=32)_ZN7openmpt6moduleC1EPKvjRSoRKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESA_St4lessISA_ESaISt4pairIKSA_SA_EEE@Base 0.2.7025~beta20.1
 | ||||
| - (arch-bits=64)_ZN7openmpt6moduleC1EPKvmRSoRKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESA_St4lessISA_ESaISt4pairIKSA_SA_EEE@Base 0.2.7025~beta20.1
 | ||||
| - _ZN7openmpt6moduleC1ERKS0_@Base 0.2.7025~beta20.1
 | ||||
| - _ZN7openmpt6moduleC1ERKSt6vectorIcSaIcEERSoRKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcES2_EESC_St4lessISC_ESaISt4pairIKSC_SC_EEE@Base 0.2.7025~beta20.1
 | ||||
| - _ZN7openmpt6moduleC1ERKSt6vectorIhSaIhEERSoRKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESD_St4lessISD_ESaISt4pairIKSD_SD_EEE@Base 0.2.7025~beta20.1
 | ||||
| - _ZN7openmpt6moduleC1ERSiRSoRKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES9_St4lessIS9_ESaISt4pairIKS9_S9_EEE@Base 0.2.7025~beta20.1
 | ||||
| - _ZN7openmpt6moduleC1Ev@Base 0.2.7025~beta20.1
 | ||||
| - _ZN7openmpt6moduleC2EPKcS2_RSoRKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESA_St4lessISA_ESaISt4pairIKSA_SA_EEE@Base 0.2.7025~beta20.1
 | ||||
| - (arch-bits=32)_ZN7openmpt6moduleC2EPKcjRSoRKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESA_St4lessISA_ESaISt4pairIKSA_SA_EEE@Base 0.2.7025~beta20.1
 | ||||
| - (arch-bits=64)_ZN7openmpt6moduleC2EPKcmRSoRKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESA_St4lessISA_ESaISt4pairIKSA_SA_EEE@Base 0.2.7025~beta20.1
 | ||||
| - _ZN7openmpt6moduleC2EPKhS2_RSoRKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESA_St4lessISA_ESaISt4pairIKSA_SA_EEE@Base 0.2.7025~beta20.1
 | ||||
| - (arch-bits=32)_ZN7openmpt6moduleC2EPKhjRSoRKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESA_St4lessISA_ESaISt4pairIKSA_SA_EEE@Base 0.2.7025~beta20.1
 | ||||
| - (arch-bits=64)_ZN7openmpt6moduleC2EPKhmRSoRKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESA_St4lessISA_ESaISt4pairIKSA_SA_EEE@Base 0.2.7025~beta20.1
 | ||||
| - (arch-bits=32)_ZN7openmpt6moduleC2EPKvjRSoRKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESA_St4lessISA_ESaISt4pairIKSA_SA_EEE@Base 0.2.7025~beta20.1
 | ||||
| - (arch-bits=64)_ZN7openmpt6moduleC2EPKvmRSoRKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESA_St4lessISA_ESaISt4pairIKSA_SA_EEE@Base 0.2.7025~beta20.1
 | ||||
| - _ZN7openmpt6moduleC2ERKS0_@Base 0.2.7025~beta20.1
 | ||||
| - _ZN7openmpt6moduleC2ERKSt6vectorIcSaIcEERSoRKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcES2_EESC_St4lessISC_ESaISt4pairIKSC_SC_EEE@Base 0.2.7025~beta20.1
 | ||||
| - _ZN7openmpt6moduleC2ERKSt6vectorIhSaIhEERSoRKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESD_St4lessISD_ESaISt4pairIKSD_SD_EEE@Base 0.2.7025~beta20.1
 | ||||
| - _ZN7openmpt6moduleC2ERSiRSoRKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES9_St4lessIS9_ESaISt4pairIKS9_S9_EEE@Base 0.2.7025~beta20.1
 | ||||
| - _ZN7openmpt6moduleC2Ev@Base 0.2.7025~beta20.1
 | ||||
| - _ZN7openmpt6moduleD0Ev@Base 0.2.7025~beta20.1
 | ||||
| - _ZN7openmpt6moduleD1Ev@Base 0.2.7025~beta20.1
 | ||||
| - _ZN7openmpt6moduleD2Ev@Base 0.2.7025~beta20.1
 | ||||
| - _ZN7openmpt6moduleaSERKS0_@Base 0.2.7025~beta20.1
 | ||||
| - _ZN7openmpt6string3getERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 0.2.7025~beta20.1
 | ||||
| - _ZN7openmpt9exceptionC1EOS0_@Base 0.3.0
 | ||||
| - _ZN7openmpt9exceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 0.2.7025~beta20.1
 | ||||
| - _ZN7openmpt9exceptionC1ERKS0_@Base 0.3.0
 | ||||
| - _ZN7openmpt9exceptionC2EOS0_@Base 0.3.0
 | ||||
| - _ZN7openmpt9exceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 0.2.7025~beta20.1
 | ||||
| - _ZN7openmpt9exceptionC2ERKS0_@Base 0.3.0
 | ||||
| - _ZN7openmpt9exceptionD0Ev@Base 0.2.7025~beta20.1
 | ||||
| - _ZN7openmpt9exceptionD1Ev@Base 0.2.7025~beta20.1
 | ||||
| - _ZN7openmpt9exceptionD2Ev@Base 0.2.7025~beta20.1
 | ||||
| - _ZN7openmpt9exceptionaSEOS0_@Base 0.3.0
 | ||||
| - _ZN7openmpt9exceptionaSERKS0_@Base 0.3.0
 | ||||
| - _ZNK7openmpt6module12get_metadataERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 0.2.7025~beta20.1
 | ||||
| - _ZNK7openmpt6module14get_num_ordersEv@Base 0.2.7025~beta20.1
 | ||||
| - _ZNK7openmpt6module15get_current_rowEv@Base 0.2.7025~beta20.1
 | ||||
| - _ZNK7openmpt6module15get_num_samplesEv@Base 0.2.7025~beta20.1
 | ||||
| - _ZNK7openmpt6module15get_order_namesB5cxx11Ev@Base 0.2.7025~beta20.1
 | ||||
| - _ZNK7openmpt6module16get_num_channelsEv@Base 0.2.7025~beta20.1
 | ||||
| - _ZNK7openmpt6module16get_num_patternsEv@Base 0.2.7025~beta20.1
 | ||||
| - _ZNK7openmpt6module16get_num_subsongsEv@Base 0.2.7025~beta20.1
 | ||||
| - _ZNK7openmpt6module16get_render_paramEi@Base 0.2.7025~beta20.1
 | ||||
| - _ZNK7openmpt6module16get_repeat_countEv@Base 0.2.7025~beta20.1
 | ||||
| - _ZNK7openmpt6module16get_sample_namesB5cxx11Ev@Base 0.2.7025~beta20.1
 | ||||
| - _ZNK7openmpt6module17get_channel_namesB5cxx11Ev@Base 0.2.7025~beta20.1
 | ||||
| - _ZNK7openmpt6module17get_current_orderEv@Base 0.2.7025~beta20.1
 | ||||
| - _ZNK7openmpt6module17get_current_speedEv@Base 0.2.7025~beta20.1
 | ||||
| - _ZNK7openmpt6module17get_current_tempoEv@Base 0.2.7025~beta20.1
 | ||||
| - _ZNK7openmpt6module17get_metadata_keysB5cxx11Ev@Base 0.2.7025~beta20.1
 | ||||
| - _ZNK7openmpt6module17get_order_patternEi@Base 0.2.7025~beta20.1
 | ||||
| - _ZNK7openmpt6module17get_pattern_namesB5cxx11Ev@Base 0.2.7025~beta20.1
 | ||||
| - _ZNK7openmpt6module17get_subsong_namesB5cxx11Ev@Base 0.2.7025~beta20.1
 | ||||
| - _ZNK7openmpt6module19get_current_patternEv@Base 0.2.7025~beta20.1
 | ||||
| - _ZNK7openmpt6module19get_num_instrumentsEv@Base 0.2.7025~beta20.1
 | ||||
| - _ZNK7openmpt6module20get_duration_secondsEv@Base 0.2.7025~beta20.1
 | ||||
| - _ZNK7openmpt6module20get_instrument_namesB5cxx11Ev@Base 0.2.7025~beta20.1
 | ||||
| - _ZNK7openmpt6module20get_pattern_num_rowsEi@Base 0.2.7025~beta20.1
 | ||||
| - _ZNK7openmpt6module20get_position_secondsEv@Base 0.2.7025~beta20.1
 | ||||
| - _ZNK7openmpt6module20get_selected_subsongEv@Base 0.3.0
 | ||||
| - (arch-bits=32)_ZNK7openmpt6module26format_pattern_row_channelB5cxx11Eiiijb@Base 0.2.7025~beta20.1
 | ||||
| - (arch-bits=64)_ZNK7openmpt6module26format_pattern_row_channelB5cxx11Eiiimb@Base 0.2.7025~beta20.1
 | ||||
| - _ZNK7openmpt6module27get_current_channel_vu_leftEi@Base 0.2.7025~beta20.1
 | ||||
| - _ZNK7openmpt6module27get_current_channel_vu_monoEi@Base 0.2.7025~beta20.1
 | ||||
| - _ZNK7openmpt6module28get_current_channel_vu_rightEi@Base 0.2.7025~beta20.1
 | ||||
| - _ZNK7openmpt6module28get_current_playing_channelsEv@Base 0.2.7025~beta20.1
 | ||||
| - (arch-bits=32)_ZNK7openmpt6module29highlight_pattern_row_channelB5cxx11Eiiijb@Base 0.2.7025~beta20.1
 | ||||
| - (arch-bits=64)_ZNK7openmpt6module29highlight_pattern_row_channelB5cxx11Eiiimb@Base 0.2.7025~beta20.1
 | ||||
| - _ZNK7openmpt6module31get_pattern_row_channel_commandEiiii@Base 0.2.7025~beta20.1
 | ||||
| - _ZNK7openmpt6module32get_current_channel_vu_rear_leftEi@Base 0.2.7025~beta20.1
 | ||||
| - _ZNK7openmpt6module33get_current_channel_vu_rear_rightEi@Base 0.2.7025~beta20.1
 | ||||
| - _ZNK7openmpt6module34format_pattern_row_channel_commandB5cxx11Eiiii@Base 0.2.7025~beta20.1
 | ||||
| - _ZNK7openmpt6module37highlight_pattern_row_channel_commandB5cxx11Eiiii@Base 0.2.7025~beta20.1
 | ||||
| - _ZNK7openmpt6module7ctl_getERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 0.2.7025~beta20.1
 | ||||
| - _ZNK7openmpt6module8get_ctlsB5cxx11Ev@Base 0.2.7025~beta20.1
 | ||||
| - _ZNK7openmpt9exception4whatEv@Base 0.2.7025~beta20.1
 | ||||
| - _ZTIN7openmpt10module_extE@Base 0.2.7025~beta20.1
 | ||||
| - _ZTIN7openmpt6moduleE@Base 0.2.7025~beta20.1
 | ||||
| - _ZTIN7openmpt9exceptionE@Base 0.2.7025~beta20.1
 | ||||
| - (optional=weak)_ZTISt11_Mutex_baseILN9__gnu_cxx12_Lock_policyE2EE@Base 0.2.7025~beta20.1
 | ||||
| - (optional=weak)_ZTISt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE@Base 0.2.7025~beta20.1
 | ||||
| - _ZTSN7openmpt10module_extE@Base 0.2.7025~beta20.1
 | ||||
| - _ZTSN7openmpt6moduleE@Base 0.2.7025~beta20.1
 | ||||
| - _ZTSN7openmpt9exceptionE@Base 0.2.7025~beta20.1
 | ||||
| - (optional=weak)_ZTSSt11_Mutex_baseILN9__gnu_cxx12_Lock_policyE2EE@Base 0.2.7025~beta20.1
 | ||||
| - (optional=weak)_ZTSSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE@Base 0.2.7025~beta20.1
 | ||||
| - (optional=weak)_ZTSSt19_Sp_make_shared_tag@Base 0.2.7025~beta20.1
 | ||||
| - _ZTVN7openmpt10module_extE@Base 0.2.7025~beta20.1
 | ||||
| - _ZTVN7openmpt6moduleE@Base 0.2.7025~beta20.1
 | ||||
| - _ZTVN7openmpt9exceptionE@Base 0.2.7025~beta20.1
 | ||||
| - (optional=weak)_ZZNSt19_Sp_make_shared_tag5_S_tiEvE5__tag@Base 0.4.0
 | ||||
| - openmpt_could_open_probability2@Base 0.3.0
 | ||||
| - openmpt_could_open_probability@Base 0.3.0
 | ||||
| - openmpt_could_open_propability@Base 0.2.7025~beta20.1
 | ||||
| - openmpt_error_func_default@Base 0.3.0
 | ||||
| - openmpt_error_func_errno@Base 0.3.0
 | ||||
| - openmpt_error_func_errno_userdata@Base 0.3.0
 | ||||
| - openmpt_error_func_ignore@Base 0.3.0
 | ||||
| - openmpt_error_func_log@Base 0.3.0
 | ||||
| - openmpt_error_func_store@Base 0.3.0
 | ||||
| - openmpt_error_is_transient@Base 0.3.0
 | ||||
| - openmpt_error_string@Base 0.3.0
 | ||||
| - openmpt_free_string@Base 0.2.7025~beta20.1
 | ||||
| - openmpt_get_core_version@Base 0.2.7025~beta20.1
 | ||||
| - openmpt_get_library_version@Base 0.2.7025~beta20.1
 | ||||
| - openmpt_get_string@Base 0.2.7025~beta20.1
 | ||||
| - openmpt_get_supported_extensions@Base 0.2.7025~beta20.1
 | ||||
| - openmpt_is_extension_supported@Base 0.2.7025~beta20.1
 | ||||
| - openmpt_log_func_default@Base 0.2.7025~beta20.1
 | ||||
| - openmpt_log_func_silent@Base 0.2.7025~beta20.1
 | ||||
| - openmpt_module_create2@Base 0.3.0
 | ||||
| - openmpt_module_create@Base 0.2.7025~beta20.1
 | ||||
| - openmpt_module_create_from_memory2@Base 0.3.0
 | ||||
| - openmpt_module_create_from_memory@Base 0.2.7025~beta20.1
 | ||||
| - openmpt_module_ctl_get@Base 0.2.7025~beta20.1
 | ||||
| - openmpt_module_ctl_set@Base 0.2.7025~beta20.1
 | ||||
| - openmpt_module_destroy@Base 0.2.7025~beta20.1
 | ||||
| - openmpt_module_error_clear@Base 0.3.0
 | ||||
| - openmpt_module_error_get_last@Base 0.3.0
 | ||||
| - openmpt_module_error_get_last_message@Base 0.3.0
 | ||||
| - openmpt_module_error_set_last@Base 0.3.0
 | ||||
| - openmpt_module_ext_create@Base 0.3.0
 | ||||
| - openmpt_module_ext_create_from_memory@Base 0.3.0
 | ||||
| - openmpt_module_ext_destroy@Base 0.3.0
 | ||||
| - openmpt_module_ext_get_interface@Base 0.3.0
 | ||||
| - openmpt_module_ext_get_module@Base 0.3.0
 | ||||
| - openmpt_module_format_pattern_row_channel@Base 0.2.7025~beta20.1
 | ||||
| - openmpt_module_format_pattern_row_channel_command@Base 0.2.7025~beta20.1
 | ||||
| - openmpt_module_get_channel_name@Base 0.2.7025~beta20.1
 | ||||
| - openmpt_module_get_ctls@Base 0.2.7025~beta20.1
 | ||||
| - openmpt_module_get_current_channel_vu_left@Base 0.2.7025~beta20.1
 | ||||
| - openmpt_module_get_current_channel_vu_mono@Base 0.2.7025~beta20.1
 | ||||
| - openmpt_module_get_current_channel_vu_rear_left@Base 0.2.7025~beta20.1
 | ||||
| - openmpt_module_get_current_channel_vu_rear_right@Base 0.2.7025~beta20.1
 | ||||
| - openmpt_module_get_current_channel_vu_right@Base 0.2.7025~beta20.1
 | ||||
| - openmpt_module_get_current_order@Base 0.2.7025~beta20.1
 | ||||
| - openmpt_module_get_current_pattern@Base 0.2.7025~beta20.1
 | ||||
| - openmpt_module_get_current_playing_channels@Base 0.2.7025~beta20.1
 | ||||
| - openmpt_module_get_current_row@Base 0.2.7025~beta20.1
 | ||||
| - openmpt_module_get_current_speed@Base 0.2.7025~beta20.1
 | ||||
| - openmpt_module_get_current_tempo@Base 0.2.7025~beta20.1
 | ||||
| - openmpt_module_get_duration_seconds@Base 0.2.7025~beta20.1
 | ||||
| - openmpt_module_get_instrument_name@Base 0.2.7025~beta20.1
 | ||||
| - openmpt_module_get_metadata@Base 0.2.7025~beta20.1
 | ||||
| - openmpt_module_get_metadata_keys@Base 0.2.7025~beta20.1
 | ||||
| - openmpt_module_get_num_channels@Base 0.2.7025~beta20.1
 | ||||
| - openmpt_module_get_num_instruments@Base 0.2.7025~beta20.1
 | ||||
| - openmpt_module_get_num_orders@Base 0.2.7025~beta20.1
 | ||||
| - openmpt_module_get_num_patterns@Base 0.2.7025~beta20.1
 | ||||
| - openmpt_module_get_num_samples@Base 0.2.7025~beta20.1
 | ||||
| - openmpt_module_get_num_subsongs@Base 0.2.7025~beta20.1
 | ||||
| - openmpt_module_get_order_name@Base 0.2.7025~beta20.1
 | ||||
| - openmpt_module_get_order_pattern@Base 0.2.7025~beta20.1
 | ||||
| - openmpt_module_get_pattern_name@Base 0.2.7025~beta20.1
 | ||||
| - openmpt_module_get_pattern_num_rows@Base 0.2.7025~beta20.1
 | ||||
| - openmpt_module_get_pattern_row_channel_command@Base 0.2.7025~beta20.1
 | ||||
| - openmpt_module_get_position_seconds@Base 0.2.7025~beta20.1
 | ||||
| - openmpt_module_get_render_param@Base 0.2.7025~beta20.1
 | ||||
| - openmpt_module_get_repeat_count@Base 0.2.7025~beta20.1
 | ||||
| - openmpt_module_get_sample_name@Base 0.2.7025~beta20.1
 | ||||
| - openmpt_module_get_selected_subsong@Base 0.3.0
 | ||||
| - openmpt_module_get_subsong_name@Base 0.2.7025~beta20.1
 | ||||
| - openmpt_module_highlight_pattern_row_channel@Base 0.2.7025~beta20.1
 | ||||
| - openmpt_module_highlight_pattern_row_channel_command@Base 0.2.7025~beta20.1
 | ||||
| - openmpt_module_read_float_mono@Base 0.2.7025~beta20.1
 | ||||
| - openmpt_module_read_float_quad@Base 0.2.7025~beta20.1
 | ||||
| - openmpt_module_read_float_stereo@Base 0.2.7025~beta20.1
 | ||||
| - openmpt_module_read_interleaved_float_quad@Base 0.2.7025~beta20.1
 | ||||
| - openmpt_module_read_interleaved_float_stereo@Base 0.2.7025~beta20.1
 | ||||
| - openmpt_module_read_interleaved_quad@Base 0.2.7025~beta20.1
 | ||||
| - openmpt_module_read_interleaved_stereo@Base 0.2.7025~beta20.1
 | ||||
| - openmpt_module_read_mono@Base 0.2.7025~beta20.1
 | ||||
| - openmpt_module_read_quad@Base 0.2.7025~beta20.1
 | ||||
| - openmpt_module_read_stereo@Base 0.2.7025~beta20.1
 | ||||
| - openmpt_module_select_subsong@Base 0.2.7025~beta20.1
 | ||||
| - openmpt_module_set_error_func@Base 0.3.0
 | ||||
| - openmpt_module_set_log_func@Base 0.3.0
 | ||||
| - openmpt_module_set_position_order_row@Base 0.2.7025~beta20.1
 | ||||
| - openmpt_module_set_position_seconds@Base 0.2.7025~beta20.1
 | ||||
| - openmpt_module_set_render_param@Base 0.2.7025~beta20.1
 | ||||
| - openmpt_module_set_repeat_count@Base 0.2.7025~beta20.1
 | ||||
| - openmpt_probe_file_header@Base 0.3.0
 | ||||
| - openmpt_probe_file_header_from_stream@Base 0.3.0
 | ||||
| - openmpt_probe_file_header_get_recommended_size@Base 0.3.0
 | ||||
| - openmpt_probe_file_header_without_filesize@Base 0.3.0
 | ||||
| diff -uraN ../../orig/libopenmpt-0.4.0/debian/libopenmpt-modplug1.symbols ./debian/libopenmpt-modplug1.symbols
 | ||||
| --- ../../orig/libopenmpt-0.4.0/debian/libopenmpt-modplug1.symbols	2018-12-24 16:43:58.000000000 -0500
 | ||||
| +++ ./debian/libopenmpt-modplug1.symbols	1969-12-31 19:00:00.000000000 -0500
 | ||||
| @@ -1,200 +0,0 @@
 | ||||
| -libopenmpt_modplug.so.1 libopenmpt-modplug1 #MINVER#
 | ||||
| -* Build-Depends-Package: libopenmpt-modplug-dev
 | ||||
| - LIBOPENMPT_MODPLUG1@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
 | ||||
| - ModPlug_ExportIT@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
 | ||||
| - ModPlug_ExportMOD@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
 | ||||
| - ModPlug_ExportS3M@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
 | ||||
| - ModPlug_ExportXM@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
 | ||||
| - ModPlug_GetCurrentOrder@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
 | ||||
| - ModPlug_GetCurrentPattern@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
 | ||||
| - ModPlug_GetCurrentRow@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
 | ||||
| - ModPlug_GetCurrentSpeed@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
 | ||||
| - ModPlug_GetCurrentTempo@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
 | ||||
| - ModPlug_GetLength@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
 | ||||
| - ModPlug_GetMasterVolume@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
 | ||||
| - ModPlug_GetMessage@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
 | ||||
| - ModPlug_GetModuleType@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
 | ||||
| - ModPlug_GetName@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
 | ||||
| - ModPlug_GetPattern@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
 | ||||
| - ModPlug_GetPlayingChannels@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
 | ||||
| - ModPlug_GetSettings@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
 | ||||
| - ModPlug_InitMixerCallback@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
 | ||||
| - ModPlug_InstrumentName@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
 | ||||
| - ModPlug_Load@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
 | ||||
| - ModPlug_NumChannels@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
 | ||||
| - ModPlug_NumInstruments@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
 | ||||
| - ModPlug_NumPatterns@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
 | ||||
| - ModPlug_NumSamples@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
 | ||||
| - ModPlug_Read@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
 | ||||
| - ModPlug_SampleName@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
 | ||||
| - ModPlug_Seek@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
 | ||||
| - ModPlug_SeekOrder@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
 | ||||
| - ModPlug_SetMasterVolume@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
 | ||||
| - ModPlug_SetSettings@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
 | ||||
| - ModPlug_Unload@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
 | ||||
| - ModPlug_UnloadMixerCallback@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
 | ||||
| - _ZN10CSoundFile10FreeSampleEPv@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile10InitPlayerEb@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile10NoteChangeEjibb@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile10PackSampleERii@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile10ProcessAGCEi@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile10ProcessRowEv@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile10ReadSampleEP14_MODINSTRUMENTjPKcj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile10RetrigNoteEjj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile10gdwSysInfoE@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
 | ||||
| - _ZN10CSoundFile10gnCPUUsageE@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
 | ||||
| - _ZN10CSoundFile10gnChannelsE@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
 | ||||
| - _ZN10CSoundFile11DoFreqSlideEP11_MODCHANNELi@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile11FineVibratoEP11_MODCHANNELj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile11FreePatternEPv@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile11InitSysInfoEv@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile11LoopPatternEii@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile11PatternLoopEP11_MODCHANNELj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile11VolumeSlideEP11_MODCHANNELj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile12FineVolumeUpEP11_MODCHANNELj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile12ITInstrToMPTEPKvP17_INSTRUMENTHEADERj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile12IsSampleUsedEj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile12PanningSlideEP11_MODCHANNELj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile12PortamentoUpEP11_MODCHANNELj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile12ResetMidiCfgEv@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile12SetMixConfigEjj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile12gnReverbTypeE@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
 | ||||
| - _ZN10CSoundFile12gpSndMixHookE@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
 | ||||
| - _ZN10CSoundFile13CanPackSampleEPcjjPh@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile13CheckCPUUsageEj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile13DestroySampleEj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile13ResetChannelsEv@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile13SetCurrentPosEj@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
 | ||||
| - _ZN10CSoundFile13SetWaveConfigEjjjb@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
 | ||||
| - _ZN10CSoundFile13gdwMixingFreqE@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
 | ||||
| - _ZN10CSoundFile13gdwSoundSetupE@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
 | ||||
| - _ZN10CSoundFile13m_nXBassDepthE@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
 | ||||
| - _ZN10CSoundFile13m_nXBassRangeE@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
 | ||||
| - _ZN10CSoundFile14AllocateSampleEj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile14FineVolumeDownEP11_MODCHANNELj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile14GlobalFadeSongEj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile14GlobalVolSlideEj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile14LoadMixPluginsEPKvj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile14PortamentoDownEP11_MODCHANNELj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile14ProcessEffectsEv@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile14SaveMixPluginsEP8_IO_FILEb@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile14SetPatternNameEjPKc@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile14TonePortamentoEP11_MODCHANNELj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile14m_nReverbDelayE@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
 | ||||
| - _ZN10CSoundFile14m_nReverbDepthE@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
 | ||||
| - _ZN10CSoundFile15AllocatePatternEjj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile15ChannelVolSlideEP11_MODCHANNELj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile15CreateStereoMixEi@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile15GetSongCommentsEPcjj@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
 | ||||
| - _ZN10CSoundFile15SetCurrentOrderEj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile15SetMasterVolumeEjb@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile15SetWaveConfigExEbbbbbbb@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
 | ||||
| - _ZN10CSoundFile15gnBitsPerSampleE@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
 | ||||
| - _ZN10CSoundFile15m_nStreamVolumeE@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
 | ||||
| - _ZN10CSoundFile16AdjustSampleLoopEP14_MODINSTRUMENT@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile16FinePortamentoUpEP11_MODCHANNELj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile16InstrumentChangeEP11_MODCHANNELjbbb@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile16IsInstrumentUsedEj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile16ProcessMidiMacroEjPKcj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile16m_nProLogicDelayE@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
 | ||||
| - _ZN10CSoundFile16m_nProLogicDepthE@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
 | ||||
| - _ZN10CSoundFile17DestroyInstrumentEj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile17MapMidiInstrumentEjjj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile17SetResamplingModeEj@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
 | ||||
| - _ZN10CSoundFile17m_nMaxMixChannelsE@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
 | ||||
| - _ZN10CSoundFile18FinePortamentoDownEP11_MODCHANNELj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile18GetRawSongCommentsEPcjj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile18ReadSampleFromSongEjPS_j@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile18SetXBassParametersEjj@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
 | ||||
| - _ZN10CSoundFile19DetectUnusedSamplesEPb@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile19ExtendedMODCommandsEjj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile19ExtendedS3MCommandsEjj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile19SetReverbParametersEjj@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
 | ||||
| - _ZN10CSoundFile19gnVolumeRampSamplesE@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
 | ||||
| - _ZN10CSoundFile19m_nStereoSeparationE@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
 | ||||
| - _ZN10CSoundFile20FrequencyToTransposeEP14_MODINSTRUMENT@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile20FrequencyToTransposeEj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile20Normalize24BitBufferEPhjjj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile20TransposeToFrequencyEii@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile21ExtendedChannelEffectEP11_MODCHANNELj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile21ExtraFinePortamentoUpEP11_MODCHANNELj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile21RemoveSelectedSamplesEPb@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile21SetSurroundParametersEjj@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
 | ||||
| - _ZN10CSoundFile21gpMixPluginCreateProcE@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
 | ||||
| - _ZN10CSoundFile22ReadInstrumentFromSongEjPS_j@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile23ExtraFinePortamentoDownEP11_MODCHANNELj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile23RemoveInstrumentSamplesEj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile4ReadEPvj@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
 | ||||
| - _ZN10CSoundFile5gnAGCE@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
 | ||||
| - _ZN10CSoundFile6CreateEPKhj@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
 | ||||
| - _ZN10CSoundFile6KeyOffEj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile6ReadITEPKhj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile6ReadXMEPKhj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile6SetAGCEb@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile7DestroyEv@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
 | ||||
| - _ZN10CSoundFile7NoteCutEjj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile7Read669EPKhj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile7ReadABCEPKhj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile7ReadAMFEPKhj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile7ReadAMSEPKhj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile7ReadDBMEPKhj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile7ReadDMFEPKhj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile7ReadDSMEPKhj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile7ReadFAREPKhj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile7ReadJ2BEPKhj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile7ReadMDLEPKhj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile7ReadMIDEPKhj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile7ReadMT2EPKhj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile7ReadMTMEPKhj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile7ReadMedEPKhj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile7ReadModEPKhj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile7ReadOKTEPKhj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile7ReadPATEPKhj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile7ReadPSMEPKhj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile7ReadPTMEPKhj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile7ReadS3MEPKhj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile7ReadSTMEPKhj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile7ReadUMXEPKhj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile7ReadUltEPKhj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile7ReadWavEPKhj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile7TestABCEPKhj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile7TestMIDEPKhj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile7TestPATEPKhj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile7TremoloEP11_MODCHANNELj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile7VibratoEP11_MODCHANNELj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile8CheckNNAEjjib@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile8FadeSongEj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile8ReadAMS2EPKhj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile8ReadNoteEv@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile8ResetAGCEv@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile8SetSpeedEj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile8SetTempoEj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile9GetLengthEbb@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
 | ||||
| - _ZN10CSoundFile9PanbrelloEP11_MODCHANNELj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZN10CSoundFile9gnVUMeterE@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
 | ||||
| - _ZN10CSoundFileC1Ev@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
 | ||||
| - _ZN10CSoundFileC2Ev@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
 | ||||
| - _ZN10CSoundFileD1Ev@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
 | ||||
| - _ZN10CSoundFileD2Ev@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
 | ||||
| - _ZNK10CSoundFile10S3MConvertEP11_MODCOMMANDb@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZNK10CSoundFile13GetCurrentPosEv@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
 | ||||
| - _ZNK10CSoundFile13GetNNAChannelEj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZNK10CSoundFile13GetSampleNameEjPc@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZNK10CSoundFile14GetMaxPositionEv@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
 | ||||
| - _ZNK10CSoundFile14GetNumChannelsEv@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZNK10CSoundFile14GetNumPatternsEv@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZNK10CSoundFile14GetPatternNameEjPcj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZNK10CSoundFile14GetSaveFormatsEv@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZNK10CSoundFile14IsSongFinishedEjj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZNK10CSoundFile14ModSaveCommandEPK11_MODCOMMANDb@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZNK10CSoundFile14S3MSaveConvertEPjS0_b@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZNK10CSoundFile17ConvertModCommandEP11_MODCOMMAND@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZNK10CSoundFile17CutOffToFrequencyEji@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZNK10CSoundFile17GetBestSaveFormatEv@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZNK10CSoundFile17GetFreqFromPeriodEjji@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZNK10CSoundFile17GetInstrumentNameEjPc@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZNK10CSoundFile17GetNoteFromPeriodEj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZNK10CSoundFile17GetNumInstrumentsEv@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZNK10CSoundFile17GetPeriodFromNoteEjij@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZNK10CSoundFile18SetupChannelFilterEP11_MODCHANNELbi@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| - _ZNK10CSoundFile19IsValidBackwardJumpEjjjj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
 | ||||
| diff -uraN ../../orig/libopenmpt-0.4.0/debian/rules ./debian/rules
 | ||||
| --- ../../orig/libopenmpt-0.4.0/debian/rules	2018-12-24 16:43:58.000000000 -0500
 | ||||
| +++ ./debian/rules	2019-01-04 17:03:16.206691071 -0500
 | ||||
| @@ -11,9 +11,10 @@
 | ||||
|  	dh $@ | ||||
|   | ||||
|  override_dh_autoreconf: | ||||
| -	dh_autoreconf --as-needed
 | ||||
| +	autoreconf --force --install
 | ||||
|   | ||||
|  override_dh_auto_configure: | ||||
| +	debian/rules override_dh_autoreconf
 | ||||
|  	dh_auto_configure -- --disable-static --enable-libopenmpt_modplug | ||||
|   | ||||
|  override_dh_auto_build: | ||||
							
								
								
									
										40
									
								
								libs/libopenmpt/debian/libopenmpt-0.4.0-xenial-backport.diff
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								libs/libopenmpt/debian/libopenmpt-0.4.0-xenial-backport.diff
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,40 @@ | |||
| diff -uraN ../../orig/libopenmpt-0.4.0/debian/changelog ./debian/changelog
 | ||||
| --- ../../orig/libopenmpt-0.4.0/debian/changelog	2018-12-24 16:43:58.000000000 -0500
 | ||||
| +++ ./debian/changelog	2019-01-04 16:37:08.788775423 -0500
 | ||||
| @@ -1,3 +1,12 @@
 | ||||
| +libopenmpt (0.4.0-ubuntu16.04.1~ppa10) xenial; urgency=medium
 | ||||
| +
 | ||||
| +  * Backport to Xenial
 | ||||
| +  * automake build depend added
 | ||||
| +  * debhelper depend adjusted to >= 9.0~
 | ||||
| +  * deb compat level adjusted to 10
 | ||||
| +
 | ||||
| + -- Sonic Team Junior <stjr@srb2.org>  Fri, 04 Jan 2019 16:35:08 -0500
 | ||||
| +
 | ||||
|  libopenmpt (0.4.0-1) unstable; urgency=medium | ||||
|   | ||||
|    * New upstream release. | ||||
| diff -uraN ../../orig/libopenmpt-0.4.0/debian/compat ./debian/compat
 | ||||
| --- ../../orig/libopenmpt-0.4.0/debian/compat	2018-12-24 16:43:58.000000000 -0500
 | ||||
| +++ ./debian/compat	2019-01-04 16:34:31.830370437 -0500
 | ||||
| @@ -1 +1 @@
 | ||||
| -11
 | ||||
| +10
 | ||||
| diff -uraN ../../orig/libopenmpt-0.4.0/debian/control ./debian/control
 | ||||
| --- ../../orig/libopenmpt-0.4.0/debian/control	2018-12-24 16:43:58.000000000 -0500
 | ||||
| +++ ./debian/control	2019-01-04 16:34:59.339499384 -0500
 | ||||
| @@ -4,7 +4,8 @@
 | ||||
|  Maintainer: Debian Multimedia Maintainers <debian-multimedia@lists.debian.org> | ||||
|  Uploaders: James Cowgill <jcowgill@debian.org> | ||||
|  Build-Depends: | ||||
| - debhelper (>= 11.1~),
 | ||||
| + automake,
 | ||||
| + debhelper (>= 9.0~),
 | ||||
|   dh-exec, | ||||
|   doxygen, | ||||
|   dpkg-dev (>= 1.18.0), | ||||
| diff -uraN ../../orig/libopenmpt-0.4.0/debian/files ./debian/files
 | ||||
| --- ../../orig/libopenmpt-0.4.0/debian/files	1969-12-31 19:00:00.000000000 -0500
 | ||||
| +++ ./debian/files	2019-01-04 16:37:20.001229883 -0500
 | ||||
| @@ -0,0 +1 @@
 | ||||
| +libopenmpt_0.4.0-ubuntu16.04.1~ppa10_source.buildinfo libs optional
 | ||||
							
								
								
									
										1449
									
								
								libs/libopenmpt/inc/libopenmpt/libopenmpt.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1449
									
								
								libs/libopenmpt/inc/libopenmpt/libopenmpt.h
									
										
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							
							
								
								
									
										1015
									
								
								libs/libopenmpt/inc/libopenmpt/libopenmpt.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1015
									
								
								libs/libopenmpt/inc/libopenmpt/libopenmpt.hpp
									
										
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							
							
								
								
									
										204
									
								
								libs/libopenmpt/inc/libopenmpt/libopenmpt_config.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										204
									
								
								libs/libopenmpt/inc/libopenmpt/libopenmpt_config.h
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,204 @@ | |||
| /*
 | ||||
|  * libopenmpt_config.h | ||||
|  * ------------------- | ||||
|  * Purpose: libopenmpt public interface configuration | ||||
|  * Notes  : (currently none) | ||||
|  * Authors: OpenMPT Devs | ||||
|  * The OpenMPT source code is released under the BSD license. Read LICENSE for more details. | ||||
|  */ | ||||
| 
 | ||||
| #ifndef LIBOPENMPT_CONFIG_H | ||||
| #define LIBOPENMPT_CONFIG_H | ||||
| 
 | ||||
| /*! \defgroup libopenmpt libopenmpt */ | ||||
| 
 | ||||
| /*! \addtogroup libopenmpt
 | ||||
|   @{ | ||||
| */ | ||||
| 
 | ||||
| /* provoke warnings if already defined */ | ||||
| #define LIBOPENMPT_API | ||||
| #undef LIBOPENMPT_API | ||||
| #define LIBOPENMPT_CXX_API | ||||
| #undef LIBOPENMPT_CXX_API | ||||
| 
 | ||||
| /*! \brief Defined if libopenmpt/libopenmpt_stream_callbacks_buffer.h exists. */ | ||||
| #define LIBOPENMPT_STREAM_CALLBACKS_BUFFER | ||||
| 
 | ||||
| /*! \brief Defined if libopenmpt/libopenmpt_stream_callbacks_fd.h exists.
 | ||||
|  * \since 0.3 | ||||
|  * \remarks | ||||
|  *   Use the following to check for availability: | ||||
|  *   \code | ||||
|  *   #include <libopenmpt/libopenmpt.h> | ||||
|  *   #if defined(LIBOPENMPT_STREAM_CALLBACKS_FD) || ((OPENMPT_API_VERSION_MAJOR == 0) && ((OPENMPT_API_VERSION_MINOR == 2) || (OPENMPT_API_VERSION_MINOR == 1))) | ||||
|  *   #include <libopenmpt/libopenmpt_stream_callbacks_fd.h> | ||||
|  *   #endif | ||||
|  *   \endcode | ||||
|  */ | ||||
| #define LIBOPENMPT_STREAM_CALLBACKS_FD | ||||
| 
 | ||||
| /*! \brief Defined if libopenmpt/libopenmpt_stream_callbacks_file.h exists.
 | ||||
|  * \since 0.3 | ||||
|  * \remarks | ||||
|  *   Use the following to check for availability: | ||||
|  *   \code | ||||
|  *   #include <libopenmpt/libopenmpt.h> | ||||
|  *   #if defined(LIBOPENMPT_STREAM_CALLBACKS_FILE) || ((OPENMPT_API_VERSION_MAJOR == 0) && ((OPENMPT_API_VERSION_MINOR == 2) || (OPENMPT_API_VERSION_MINOR == 1))) | ||||
|  *   #include <libopenmpt/libopenmpt_stream_callbacks_file.h> | ||||
|  *   #endif | ||||
|  *   \endcode | ||||
|  */ | ||||
| #define LIBOPENMPT_STREAM_CALLBACKS_FILE | ||||
| 
 | ||||
| #if defined(__DOXYGEN__) | ||||
| 
 | ||||
| #define LIBOPENMPT_API_HELPER_EXPORT | ||||
| #define LIBOPENMPT_API_HELPER_IMPORT | ||||
| #define LIBOPENMPT_API_HELPER_PUBLIC | ||||
| #define LIBOPENMPT_API_HELPER_LOCAL | ||||
| 
 | ||||
| #elif defined(_MSC_VER) | ||||
| 
 | ||||
| #define LIBOPENMPT_API_HELPER_EXPORT __declspec(dllexport) | ||||
| #define LIBOPENMPT_API_HELPER_IMPORT __declspec(dllimport) | ||||
| #define LIBOPENMPT_API_HELPER_PUBLIC  | ||||
| #define LIBOPENMPT_API_HELPER_LOCAL   | ||||
| 
 | ||||
| #elif defined(__EMSCRIPTEN__) | ||||
| 
 | ||||
| #define LIBOPENMPT_API_HELPER_EXPORT __attribute__((visibility("default"))) __attribute__((used)) | ||||
| #define LIBOPENMPT_API_HELPER_IMPORT __attribute__((visibility("default"))) __attribute__((used)) | ||||
| #define LIBOPENMPT_API_HELPER_PUBLIC __attribute__((visibility("default"))) __attribute__((used)) | ||||
| #define LIBOPENMPT_API_HELPER_LOCAL  __attribute__((visibility("hidden"))) | ||||
| 
 | ||||
| #elif (defined(__GNUC__) || defined(__clang__)) && defined(_WIN32) | ||||
| 
 | ||||
| #define LIBOPENMPT_API_HELPER_EXPORT __declspec(dllexport) | ||||
| #define LIBOPENMPT_API_HELPER_IMPORT __declspec(dllimport) | ||||
| #define LIBOPENMPT_API_HELPER_PUBLIC __attribute__((visibility("default"))) | ||||
| #define LIBOPENMPT_API_HELPER_LOCAL  __attribute__((visibility("hidden"))) | ||||
| 
 | ||||
| #elif defined(__GNUC__) || defined(__clang__) | ||||
| 
 | ||||
| #define LIBOPENMPT_API_HELPER_EXPORT __attribute__((visibility("default"))) | ||||
| #define LIBOPENMPT_API_HELPER_IMPORT __attribute__((visibility("default"))) | ||||
| #define LIBOPENMPT_API_HELPER_PUBLIC __attribute__((visibility("default"))) | ||||
| #define LIBOPENMPT_API_HELPER_LOCAL  __attribute__((visibility("hidden"))) | ||||
| 
 | ||||
| #elif defined(_WIN32) | ||||
| 
 | ||||
| #define LIBOPENMPT_API_HELPER_EXPORT __declspec(dllexport) | ||||
| #define LIBOPENMPT_API_HELPER_IMPORT __declspec(dllimport) | ||||
| #define LIBOPENMPT_API_HELPER_PUBLIC  | ||||
| #define LIBOPENMPT_API_HELPER_LOCAL   | ||||
| 
 | ||||
| #else | ||||
| 
 | ||||
| #define LIBOPENMPT_API_HELPER_EXPORT  | ||||
| #define LIBOPENMPT_API_HELPER_IMPORT  | ||||
| #define LIBOPENMPT_API_HELPER_PUBLIC  | ||||
| #define LIBOPENMPT_API_HELPER_LOCAL   | ||||
| 
 | ||||
| #endif | ||||
| 
 | ||||
| #if defined(LIBOPENMPT_BUILD_DLL) | ||||
| #define LIBOPENMPT_API     LIBOPENMPT_API_HELPER_EXPORT | ||||
| #elif defined(LIBOPENMPT_USE_DLL) | ||||
| #define LIBOPENMPT_API     LIBOPENMPT_API_HELPER_IMPORT | ||||
| #else | ||||
| #define LIBOPENMPT_API     LIBOPENMPT_API_HELPER_PUBLIC | ||||
| #endif | ||||
| 
 | ||||
| #ifdef __cplusplus | ||||
| 
 | ||||
| #define LIBOPENMPT_CXX_API LIBOPENMPT_API | ||||
| 
 | ||||
| #if defined(LIBOPENMPT_USE_DLL) | ||||
| #if defined(_MSC_VER) && !defined(_DLL) | ||||
| #error "C++ interface is disabled if libopenmpt is built as a DLL and the runtime is statically linked. This is not supported by microsoft and cannot possibly work. Ever." | ||||
| #undef LIBOPENMPT_CXX_API | ||||
| #define LIBOPENMPT_CXX_API LIBOPENMPT_API_HELPER_LOCAL | ||||
| #endif | ||||
| #endif | ||||
| 
 | ||||
| #if defined(__EMSCRIPTEN__) | ||||
| 
 | ||||
| /* Only the C API is supported for emscripten. Disable the C++ API. */ | ||||
| #undef LIBOPENMPT_CXX_API | ||||
| #define LIBOPENMPT_CXX_API LIBOPENMPT_API_HELPER_LOCAL  | ||||
| #endif | ||||
| 
 | ||||
| #endif | ||||
| 
 | ||||
| /*!
 | ||||
|   @} | ||||
| */ | ||||
| 
 | ||||
| 
 | ||||
| /* C */ | ||||
| 
 | ||||
| #if !defined(LIBOPENMPT_NO_DEPRECATE) | ||||
| #if defined(__clang__) | ||||
| #define LIBOPENMPT_DEPRECATED __attribute__((deprecated)) | ||||
| #elif defined(__GNUC__) | ||||
| #define LIBOPENMPT_DEPRECATED __attribute__((deprecated)) | ||||
| #elif defined(_MSC_VER) | ||||
| #define LIBOPENMPT_DEPRECATED __declspec(deprecated) | ||||
| #else | ||||
| #define LIBOPENMPT_DEPRECATED | ||||
| #endif | ||||
| #endif | ||||
| 
 | ||||
| #ifndef __cplusplus | ||||
| #if !defined(LIBOPENMPT_NO_DEPRECATE) | ||||
| LIBOPENMPT_DEPRECATED static const int LIBOPENMPT_DEPRECATED_STRING_CONSTANT = 0; | ||||
| #define LIBOPENMPT_DEPRECATED_STRING( str ) ( LIBOPENMPT_DEPRECATED_STRING_CONSTANT ? ( str ) : ( str ) ) | ||||
| #else | ||||
| #define LIBOPENMPT_DEPRECATED_STRING( str ) str | ||||
| #endif | ||||
| #endif | ||||
| 
 | ||||
| 
 | ||||
| /* C++ */ | ||||
| 
 | ||||
| #ifdef __cplusplus | ||||
| 
 | ||||
| #ifndef LIBOPENMPT_ASSUME_CPLUSPLUS_DEPRECATED | ||||
| /* handle known broken compilers here by defining LIBOPENMPT_ASSUME_CPLUSPLUS_DEPRECATED appropriately */ | ||||
| #endif | ||||
| 
 | ||||
| #if defined(LIBOPENMPT_ASSUME_CPLUSPLUS) | ||||
| #ifndef LIBOPENMPT_ASSUME_CPLUSPLUS_DEPRECATED | ||||
| #define LIBOPENMPT_ASSUME_CPLUSPLUS_DEPRECATED LIBOPENMPT_ASSUME_CPLUSPLUS | ||||
| #endif | ||||
| #endif | ||||
| 
 | ||||
| #if !defined(LIBOPENMPT_NO_DEPRECATE) | ||||
| #if defined(LIBOPENMPT_ASSUME_CPLUSPLUS_DEPRECATED) | ||||
| #if (LIBOPENMPT_ASSUME_CPLUSPLUS_DEPRECATED >= 201402L) | ||||
| #define LIBOPENMPT_ATTR_DEPRECATED [[deprecated]] | ||||
| #undef LIBOPENMPT_DEPRECATED | ||||
| #define LIBOPENMPT_DEPRECATED | ||||
| #else | ||||
| #define LIBOPENMPT_ATTR_DEPRECATED | ||||
| #endif | ||||
| #elif (__cplusplus >= 201402L) | ||||
| #define LIBOPENMPT_ATTR_DEPRECATED [[deprecated]] | ||||
| #undef LIBOPENMPT_DEPRECATED | ||||
| #define LIBOPENMPT_DEPRECATED | ||||
| #else | ||||
| #define LIBOPENMPT_ATTR_DEPRECATED | ||||
| #endif | ||||
| #else | ||||
| #undef LIBOPENMPT_DEPRECATED | ||||
| #define LIBOPENMPT_DEPRECATED | ||||
| #define LIBOPENMPT_ATTR_DEPRECATED | ||||
| #endif | ||||
| 
 | ||||
| #endif | ||||
| 
 | ||||
| 
 | ||||
| #include "libopenmpt_version.h" | ||||
| 
 | ||||
| #endif /* LIBOPENMPT_CONFIG_H */ | ||||
							
								
								
									
										318
									
								
								libs/libopenmpt/inc/libopenmpt/libopenmpt_ext.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										318
									
								
								libs/libopenmpt/inc/libopenmpt/libopenmpt_ext.h
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,318 @@ | |||
| /*
 | ||||
|  * libopenmpt_ext.h | ||||
|  * ---------------- | ||||
|  * Purpose: libopenmpt public c interface for libopenmpt extensions | ||||
|  * Notes  : | ||||
|  * Authors: OpenMPT Devs | ||||
|  * The OpenMPT source code is released under the BSD license. Read LICENSE for more details. | ||||
|  */ | ||||
| 
 | ||||
| #ifndef LIBOPENMPT_EXT_H | ||||
| #define LIBOPENMPT_EXT_H | ||||
| 
 | ||||
| #include "libopenmpt_config.h" | ||||
| #include "libopenmpt.h" | ||||
| 
 | ||||
| #ifdef __cplusplus | ||||
| extern "C" { | ||||
| #endif | ||||
| 
 | ||||
| /*!
 | ||||
|  * \page libopenmpt_ext_c_overview libopenmpt_ext C API | ||||
|  * | ||||
|  * libopenmpt_ext is included in all builds by default. | ||||
|  * | ||||
|  * \section libopenmpt-ext-c-detailed Detailed documentation | ||||
|  * | ||||
|  * \ref libopenmpt_ext_c | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| /*! \defgroup libopenmpt_ext_c libopenmpt_ext C */ | ||||
| 
 | ||||
| /*! \addtogroup libopenmpt_ext_c
 | ||||
|  * @{ | ||||
|  */ | ||||
| 
 | ||||
| /*! \brief Opaque type representing a libopenmpt extension module
 | ||||
|  */ | ||||
| typedef struct openmpt_module_ext openmpt_module_ext; | ||||
| 
 | ||||
| /*! \brief Construct an openmpt_module_ext
 | ||||
|  * | ||||
|  * \param stream_callbacks Input stream callback operations. | ||||
|  * \param stream Input stream to load the module from. | ||||
|  * \param logfunc Logging function where warning and errors are written. The logging function may be called throughout the lifetime of openmpt_module_ext. May be NULL. | ||||
|  * \param loguser User-defined data associated with this module. This value will be passed to the logging callback function (logfunc) | ||||
|  * \param errfunc Error function to define error behaviour. May be NULL. | ||||
|  * \param erruser Error function user context. Used to pass any user-defined data associated with this module to the logging function. | ||||
|  * \param error Pointer to an integer where an error may get stored. May be NULL. | ||||
|  * \param error_message Pointer to a string pointer where an error message may get stored. May be NULL. | ||||
|  * \param ctls A map of initial ctl values, see openmpt_module_get_ctls. | ||||
|  * \return A pointer to the constructed openmpt_module_ext, or NULL on failure. | ||||
|  * \remarks The input data can be discarded after an openmpt_module_ext has been constructed successfully. | ||||
|  * \sa openmpt_stream_callbacks | ||||
|  * \sa \ref libopenmpt_c_fileio | ||||
|  * \since 0.3.0 | ||||
|  */ | ||||
| LIBOPENMPT_API openmpt_module_ext * openmpt_module_ext_create( openmpt_stream_callbacks stream_callbacks, void * stream, openmpt_log_func logfunc, void * loguser, openmpt_error_func errfunc, void * erruser, int * error, const char * * error_message, const openmpt_module_initial_ctl * ctls ); | ||||
| 
 | ||||
| /*! \brief Construct an openmpt_module_ext
 | ||||
|  * | ||||
|  * \param filedata Data to load the module from. | ||||
|  * \param filesize Amount of data available. | ||||
|  * \param logfunc Logging function where warning and errors are written. The logging function may be called throughout the lifetime of openmpt_module_ext. | ||||
|  * \param loguser User-defined data associated with this module. This value will be passed to the logging callback function (logfunc) | ||||
|  * \param errfunc Error function to define error behaviour. May be NULL. | ||||
|  * \param erruser Error function user context. Used to pass any user-defined data associated with this module to the logging function. | ||||
|  * \param error Pointer to an integer where an error may get stored. May be NULL. | ||||
|  * \param error_message Pointer to a string pointer where an error message may get stored. May be NULL. | ||||
|  * \param ctls A map of initial ctl values, see openmpt_module_get_ctls. | ||||
|  * \return A pointer to the constructed openmpt_module_ext, or NULL on failure. | ||||
|  * \remarks The input data can be discarded after an openmpt_module_ext has been constructed successfully. | ||||
|  * \sa \ref libopenmpt_c_fileio | ||||
|  * \since 0.3.0 | ||||
|  */ | ||||
| LIBOPENMPT_API openmpt_module_ext * openmpt_module_ext_create_from_memory( const void * filedata, size_t filesize, openmpt_log_func logfunc, void * loguser, openmpt_error_func errfunc, void * erruser, int * error, const char * * error_message, const openmpt_module_initial_ctl * ctls ); | ||||
| 
 | ||||
| /*! \brief Unload a previously created openmpt_module_ext from memory.
 | ||||
|  * | ||||
|  * \param mod_ext The module to unload. | ||||
|  */ | ||||
| LIBOPENMPT_API void openmpt_module_ext_destroy( openmpt_module_ext * mod_ext ); | ||||
| 
 | ||||
| /*! \brief Retrieve the openmpt_module handle from an openmpt_module_ext handle.
 | ||||
|  * | ||||
|  * \param mod_ext The extension module handle to convert | ||||
|  * \return An equivalent openmpt_module handle to pass to standard libopenmpt functions  | ||||
|  * \since 0.3.0 | ||||
|  */ | ||||
| LIBOPENMPT_API openmpt_module * openmpt_module_ext_get_module( openmpt_module_ext * mod_ext ); | ||||
| 
 | ||||
| /*! Retrieve a libopenmpt extension.
 | ||||
|  * | ||||
|  * \param mod_ext The module handle to work on. | ||||
|  * \param interface_id The name of the extension interface to retrieve (e.g. LIBOPENMPT_EXT_C_INTERFACE_PATTERN_VIS). | ||||
|  * \param interface Appropriate structure of interface function pointers which is to be filled by this function (e.g. a pointer to a openmpt_module_ext_interface_pattern_vis structure). | ||||
|  * \param interface_size Size of the interface's structure of function pointers (e.g. sizeof(openmpt_module_ext_interface_pattern_vis)). | ||||
|  * \return 1 on success, 0 if the interface was not found. | ||||
|  * \since 0.3.0 | ||||
|  */ | ||||
| LIBOPENMPT_API int openmpt_module_ext_get_interface( openmpt_module_ext * mod_ext, const char * interface_id, void * interface, size_t interface_size ); | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| #ifndef LIBOPENMPT_EXT_C_INTERFACE_PATTERN_VIS | ||||
| #define LIBOPENMPT_EXT_C_INTERFACE_PATTERN_VIS "pattern_vis" | ||||
| #endif | ||||
| 
 | ||||
| /*! Pattern command type */ | ||||
| #define OPENMPT_MODULE_EXT_INTERFACE_PATTERN_VIS_EFFECT_TYPE_UNKNOWN 0 | ||||
| #define OPENMPT_MODULE_EXT_INTERFACE_PATTERN_VIS_EFFECT_TYPE_GENERAL 1 | ||||
| #define OPENMPT_MODULE_EXT_INTERFACE_PATTERN_VIS_EFFECT_TYPE_GLOBAL  2 | ||||
| #define OPENMPT_MODULE_EXT_INTERFACE_PATTERN_VIS_EFFECT_TYPE_VOLUME  3 | ||||
| #define OPENMPT_MODULE_EXT_INTERFACE_PATTERN_VIS_EFFECT_TYPE_PANNING 4 | ||||
| #define OPENMPT_MODULE_EXT_INTERFACE_PATTERN_VIS_EFFECT_TYPE_PITCH   5 | ||||
| 
 | ||||
| typedef struct openmpt_module_ext_interface_pattern_vis { | ||||
| 	/*! Get pattern command type for pattern highlighting
 | ||||
| 	 * | ||||
| 	 * \param mod_ext The module handle to work on. | ||||
| 	 * \param pattern The pattern whose data should be retrieved. | ||||
| 	 * \param row The row from which the data should be retrieved. | ||||
| 	 * \param channel The channel from which the data should be retrieved. | ||||
| 	 * \return The command type in the effect column at the given pattern position (see OPENMPT_MODULE_EXT_INTERFACE_PATTERN_VIS_EFFECT_TYPE_*) | ||||
| 	 * \sa openmpt_module_ext_interface_pattern_vis::get_pattern_row_channel_volume_effect_type | ||||
| 	 */ | ||||
| 	int ( * get_pattern_row_channel_volume_effect_type ) ( openmpt_module_ext * mod_ext, int32_t pattern, int32_t row, int32_t channel ); | ||||
| 
 | ||||
| 	/*! Get pattern command type for pattern highlighting
 | ||||
| 	 * | ||||
| 	 * \param mod_ext The module handle to work on. | ||||
| 	 * \param pattern The pattern whose data should be retrieved. | ||||
| 	 * \param row The row from which the data should be retrieved. | ||||
| 	 * \param channel The channel from which the data should be retrieved. | ||||
| 	 * \return The command type in the effect column at the given pattern position (see OPENMPT_MODULE_EXT_INTERFACE_PATTERN_VIS_EFFECT_TYPE_*) | ||||
| 	 * \sa openmpt_module_ext_interface_pattern_vis::get_pattern_row_channel_volume_effect_type | ||||
| 	 */ | ||||
| 	int ( * get_pattern_row_channel_effect_type ) ( openmpt_module_ext * mod_ext, int32_t pattern, int32_t row, int32_t channel ); | ||||
| } openmpt_module_ext_interface_pattern_vis; | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| #ifndef LIBOPENMPT_EXT_C_INTERFACE_INTERACTIVE | ||||
| #define LIBOPENMPT_EXT_C_INTERFACE_INTERACTIVE "interactive" | ||||
| #endif | ||||
| 
 | ||||
| typedef struct openmpt_module_ext_interface_interactive { | ||||
| 	/*! Set the current ticks per row (speed)
 | ||||
| 	 * | ||||
| 	 * \param mod_ext The module handle to work on. | ||||
| 	 * \param speed The new tick count in range [1, 65535]. | ||||
| 	 * \return 1 on success, 0 on failure. | ||||
| 	 * \remarks The tick count may be reset by pattern commands at any time. | ||||
| 	 * \sa openmpt_module_get_current_speed | ||||
| 	 */ | ||||
| 	int ( * set_current_speed ) ( openmpt_module_ext * mod_ext, int32_t speed ); | ||||
| 
 | ||||
| 	/*! Set the current module tempo
 | ||||
| 	 * | ||||
| 	 * \param mod_ext The module handle to work on. | ||||
| 	 * \param tempo The new tempo in range [32, 512]. The exact meaning of the value depends on the tempo mode used by the module. | ||||
| 	 * \return 1 on success, 0 on failure. | ||||
| 	 * \remarks The tempo may be reset by pattern commands at any time. Use openmpt_module_ext_interface_interactive::set_tempo_factor to apply a tempo factor that is independent of pattern commands. | ||||
| 	 * \sa openmpt_module_get_current_tempo | ||||
| 	 */ | ||||
| 	int ( * set_current_tempo ) ( openmpt_module_ext * mod_ext, int32_t tempo ); | ||||
| 
 | ||||
| 	/*! Set the current module tempo factor without affecting playback pitch
 | ||||
| 	 * | ||||
| 	 * \param mod_ext The module handle to work on. | ||||
| 	 * \param factor The new tempo factor in range ]0.0, 4.0] - 1.0 means unmodified tempo. | ||||
| 	 * \return 1 on success, 0 on failure. | ||||
| 	 * \remarks Modifying the tempo without applying the same pitch factor using openmpt_module_ext_interface_interactive::set_pitch_factor may cause rhythmic samples (e.g. drum loops) to go out of sync. | ||||
| 	 * \sa openmpt_module_ext_interface_interactive::get_tempo_factor | ||||
| 	 */ | ||||
| 	int ( * set_tempo_factor ) ( openmpt_module_ext * mod_ext, double factor ); | ||||
| 
 | ||||
| 	/*! Gets the current module tempo factor
 | ||||
| 	 * | ||||
| 	 * \param mod_ext The module handle to work on. | ||||
| 	 * \return The current tempo factor. | ||||
| 	 * \sa openmpt_module_ext_interface_interactive::set_tempo_factor | ||||
| 	 */ | ||||
| 	double ( * get_tempo_factor ) ( openmpt_module_ext * mod_ext ); | ||||
| 
 | ||||
| 	/*! Set the current module pitch factor without affecting playback speed
 | ||||
| 	 * | ||||
| 	 * \param mod_ext The module handle to work on. | ||||
| 	 * \param factor The new pitch factor in range ]0.0, 4.0] - 1.0 means unmodified pitch. | ||||
| 	 * \return 1 on success, 0 on failure. | ||||
| 	 * \remarks Modifying the pitch without applying the the same tempo factor using openmpt_module_ext_interface_interactive::set_tempo_factor may cause rhythmic samples (e.g. drum loops) to go out of sync. | ||||
| 	 * \remarks To shift the pich by `n` semitones, the parameter can be calculated as follows: `pow( 2.0, n / 12.0 )` | ||||
| 	 * \sa openmpt_module_ext_interface_interactive::get_pitch_factor | ||||
| 	 */ | ||||
| 	int ( * set_pitch_factor ) ( openmpt_module_ext * mod_ext, double factor ); | ||||
| 
 | ||||
| 	/*! Gets the current module pitch factor
 | ||||
| 	 * | ||||
| 	 * \param mod_ext The module handle to work on. | ||||
| 	 * \return The current pitch factor. | ||||
| 	 * \sa openmpt_module_ext_interface_interactive::set_pitch_factor | ||||
| 	*/ | ||||
| 	double ( * get_pitch_factor ) ( openmpt_module_ext * mod_ext ); | ||||
| 
 | ||||
| 	/*! Set the current global volume
 | ||||
| 	 * | ||||
| 	 * \param mod_ext The module handle to work on. | ||||
| 	 * \param volume The new global volume in range [0.0, 1.0] | ||||
| 	 * \return 1 on success, 0 on failure. | ||||
| 	 * \remarks The global volume may be reset by pattern commands at any time. Use openmpt_module_set_render_param to apply a global overall volume factor that is independent of pattern commands. | ||||
| 	 * \sa openmpt_module_ext_interface_interactive::get_global_volume | ||||
| 	 */ | ||||
| 	int ( * set_global_volume ) ( openmpt_module_ext * mod_ext, double volume ); | ||||
| 
 | ||||
| 	/*! Get the current global volume
 | ||||
| 	 * | ||||
| 	 * \param mod_ext The module handle to work on. | ||||
| 	 * \return The current global volume in range [0.0, 1.0] | ||||
| 	 * \sa openmpt_module_ext_interface_interactive::set_global_volume | ||||
| 	 */ | ||||
| 	double ( * get_global_volume ) ( openmpt_module_ext * mod_ext ); | ||||
| 
 | ||||
| 	/*! Set the current channel volume for a channel
 | ||||
| 	 * | ||||
| 	 * \param mod_ext The module handle to work on. | ||||
| 	 * \param channel The channel whose volume should be set, in range [0, openmpt_module_get_num_channels()[ | ||||
| 	 * \param volume The new channel volume in range [0.0, 1.0] | ||||
| 	 * \return 1 on success, 0 on failure (channel out of range). | ||||
| 	 * \remarks The channel volume may be reset by pattern commands at any time. | ||||
| 	 * \sa openmpt_module_ext_interface_interactive::get_channel_volume | ||||
| 	 */ | ||||
| 	int ( * set_channel_volume ) ( openmpt_module_ext * mod_ext, int32_t channel, double volume ); | ||||
| 
 | ||||
| 	/*! Get the current channel volume for a channel
 | ||||
| 	 * | ||||
| 	 * \param mod_ext The module handle to work on. | ||||
| 	 * \param channel The channel whose volume should be retrieved, in range [0, openmpt_module_get_num_channels()[ | ||||
| 	 * \return The current channel volume in range [0.0, 1.0] | ||||
| 	 * \sa openmpt_module_ext_interface_interactive::set_channel_volume | ||||
| 	 */ | ||||
| 	double ( * get_channel_volume ) ( openmpt_module_ext * mod_ext, int32_t channel ); | ||||
| 
 | ||||
| 	/*! Set the current mute status for a channel
 | ||||
| 	 * | ||||
| 	 * \param mod_ext The module handle to work on. | ||||
| 	 * \param channel The channel whose mute status should be set, in range [0, openmpt_module_get_num_channels()[ | ||||
| 	 * \param mute The new mute status. true is muted, false is unmuted. | ||||
| 	 * \return 1 on success, 0 on failure (channel out of range). | ||||
| 	 * \sa openmpt_module_ext_interface_interactive::get_channel_mute_status | ||||
| 	 */ | ||||
| 	int ( * set_channel_mute_status ) ( openmpt_module_ext * mod_ext, int32_t channel, int mute ); | ||||
| 
 | ||||
| 	/*! Get the current mute status for a channel
 | ||||
| 	 * | ||||
| 	 * \param mod_ext The module handle to work on. | ||||
| 	 * \param channel The channel whose mute status should be retrieved, in range [0, openmpt_module_get_num_channels()[ | ||||
| 	 * \return The current channel mute status. 1 is muted, 0 is unmuted, -1 means the instrument was out of range | ||||
| 	 * \sa openmpt_module_ext_interface_interactive::set_channel_mute_status | ||||
| 	 */ | ||||
| 	int ( * get_channel_mute_status ) ( openmpt_module_ext * mod_ext, int32_t channel ); | ||||
| 
 | ||||
| 	/*! Set the current mute status for an instrument
 | ||||
| 	 * | ||||
| 	 * \param mod_ext The module handle to work on. | ||||
| 	 * \param instrument The instrument whose mute status should be set, in range [0, openmpt_module_get_num_instruments()[ if openmpt_module_get_num_instruments is not 0, otherwise in [0, openmpt_module_get_num_samples()[ | ||||
| 	 * \param mute The new mute status. true is muted, false is unmuted. | ||||
| 	 * \return 1 on success, 0 on failure (instrument out of range). | ||||
| 	 * \sa openmpt_module_ext_interface_interactive::get_instrument_mute_status | ||||
| 	 */ | ||||
| 	int ( * set_instrument_mute_status ) ( openmpt_module_ext * mod_ext, int32_t instrument, int mute ); | ||||
| 
 | ||||
| 	/*! Get the current mute status for an instrument
 | ||||
| 	 * | ||||
| 	 * \param mod_ext The module handle to work on. | ||||
| 	 * \param instrument The instrument whose mute status should be retrieved, in range [0, openmpt_module_get_num_instruments()[ if openmpt_module_get_num_instruments is not 0, otherwise in [0, openmpt_module_get_num_samples()[ | ||||
| 	 * \return The current instrument mute status. 1 is muted, 0 is unmuted, -1 means the instrument was out of range | ||||
| 	 * \sa openmpt_module_ext_interface_interactive::set_instrument_mute_status | ||||
| 	 */ | ||||
| 	int ( * get_instrument_mute_status ) ( openmpt_module_ext * mod_ext, int32_t instrument ); | ||||
| 
 | ||||
| 	/*! Play a note using the specified instrument
 | ||||
| 	 * | ||||
| 	 * \param mod_ext The module handle to work on. | ||||
| 	 * \param instrument The instrument that should be played, in range [0, openmpt_module_get_num_instruments()[ if openmpt_module_get_num_instruments is not 0, otherwise in [0, openmpt_module_get_num_samples()[ | ||||
| 	 * \param note The note to play, in rage [0, 119]. 60 is the middle C. | ||||
| 	 * \param volume The volume at which the note should be triggered, in range [0.0, 1.0] | ||||
| 	 * \param panning The panning position at which the note should be triggered, in range [-1.0, 1.0], 0.0 is center. | ||||
| 	 * \return The channel on which the note is played. This can pe be passed to openmpt_module_ext_interface_interactive::stop_note to stop the note. -1 means that no channel could be allocated and the note is not played. | ||||
| 	 * \sa openmpt_module_ext_interface_interactive::stop_note | ||||
| 	 */ | ||||
| 	int32_t ( * play_note ) ( openmpt_module_ext * mod_ext, int32_t instrument, int32_t note, double volume, double panning ); | ||||
| 
 | ||||
| 	/*! Stop the note playing on the specified channel
 | ||||
| 	 * | ||||
| 	 * \param mod_ext The module handle to work on. | ||||
| 	 * \param channel The channel on which the note should be stopped. | ||||
| 	 * \return 1 on success, 0 on failure (channel out of range). | ||||
| 	 * \sa openmpt_module_ext_interface_interactive::play_note | ||||
| 	 */ | ||||
| 	int ( * stop_note ) ( openmpt_module_ext * mod_ext, int32_t channel ); | ||||
| } openmpt_module_ext_interface_interactive; | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| /* add stuff here */ | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| #ifdef __cplusplus | ||||
| } | ||||
| #endif | ||||
| 
 | ||||
| /*!
 | ||||
|  * @} | ||||
|  */ | ||||
| 
 | ||||
| #endif /* LIBOPENMPT_EXT_H */ | ||||
| 
 | ||||
							
								
								
									
										306
									
								
								libs/libopenmpt/inc/libopenmpt/libopenmpt_ext.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										306
									
								
								libs/libopenmpt/inc/libopenmpt/libopenmpt_ext.hpp
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,306 @@ | |||
| /*
 | ||||
|  * libopenmpt_ext.hpp | ||||
|  * ------------------ | ||||
|  * Purpose: libopenmpt public c++ interface for libopenmpt extensions | ||||
|  * Notes  : | ||||
|  * Authors: OpenMPT Devs | ||||
|  * The OpenMPT source code is released under the BSD license. Read LICENSE for more details. | ||||
|  */ | ||||
| 
 | ||||
| #ifndef LIBOPENMPT_EXT_HPP | ||||
| #define LIBOPENMPT_EXT_HPP | ||||
| 
 | ||||
| #include "libopenmpt_config.h" | ||||
| #include "libopenmpt.hpp" | ||||
| 
 | ||||
| /*!
 | ||||
|  * \page libopenmpt_ext_cpp_overview libopenmpt_ext C++ API | ||||
|  * | ||||
|  * libopenmpt_ext is now included in all builds by default. | ||||
|  * | ||||
|  * \section libopenmpt-ext-cpp-detailed Detailed documentation | ||||
|  * | ||||
|  * \ref libopenmpt_ext_cpp | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| /*! \defgroup libopenmpt_ext_cpp libopenmpt_ext C++ */ | ||||
| 
 | ||||
| /*! \addtogroup libopenmpt_ext_cpp
 | ||||
|   @{ | ||||
| */ | ||||
| 
 | ||||
| namespace openmpt { | ||||
| 
 | ||||
| class module_ext_impl; | ||||
| 
 | ||||
| class LIBOPENMPT_CXX_API module_ext : public module { | ||||
| 	 | ||||
| private: | ||||
| 	module_ext_impl * ext_impl; | ||||
| private: | ||||
| 	// non-copyable
 | ||||
| 	module_ext( const module_ext & ); | ||||
| 	void operator = ( const module_ext & ); | ||||
| public: | ||||
| 	module_ext( std::istream & stream, std::ostream & log = std::clog, const std::map< std::string, std::string > & ctls = detail::initial_ctls_map() ); | ||||
| 	module_ext( const std::vector<char> & data, std::ostream & log = std::clog, const std::map< std::string, std::string > & ctls = detail::initial_ctls_map() ); | ||||
| 	module_ext( const char * data, std::size_t size, std::ostream & log = std::clog, const std::map< std::string, std::string > & ctls = detail::initial_ctls_map() ); | ||||
| 	module_ext( const void * data, std::size_t size, std::ostream & log = std::clog, const std::map< std::string, std::string > & ctls = detail::initial_ctls_map() ); | ||||
| 	virtual ~module_ext(); | ||||
| 
 | ||||
| public: | ||||
| 
 | ||||
| 	//! Retrieve a libopenmpt extension.
 | ||||
| 	/*! Example: Retrieving the interactive extension to change the tempo of a module:
 | ||||
| 	  \code{.cpp} | ||||
| 	  openmpt::module_ext *mod = new openmpt::module_ext( stream ); | ||||
| 	  #ifdef LIBOPENMPT_EXT_INTERFACE_INTERACTIVE | ||||
| 	    openmpt::ext::interactive *interactive = static_cast<openmpt::ext::interactive *>( self->mod->get_interface( openmpt::ext::interactive_id ) ); | ||||
| 	    if ( interactive ) { | ||||
| 	      interactive->set_tempo_factor( 2.0 ); // play module at double speed
 | ||||
| 	    } else { | ||||
| 	      // interface not available
 | ||||
| 	    } | ||||
| 	  #else | ||||
| 	    // interfae not available
 | ||||
| 	  #endif | ||||
| 	  \endcode | ||||
| 	  \param interface_id The name of the extension interface to retrieve. | ||||
| 	  \return The interface object. This may be a nullptr if the extension was not found. | ||||
| 	*/ | ||||
| 	void * get_interface( const std::string & interface_id ); | ||||
| 
 | ||||
| }; // class module_ext
 | ||||
| 
 | ||||
| namespace ext { | ||||
| 
 | ||||
| #define LIBOPENMPT_DECLARE_EXT_CXX_INTERFACE(name) \ | ||||
| 	static const char name ## _id [] = # name ; \ | ||||
| 	class name; \ | ||||
| /**/ | ||||
| 
 | ||||
| #define LIBOPENMPT_EXT_CXX_INTERFACE(name) \ | ||||
| 	protected: \ | ||||
| 		name () {} \ | ||||
| 		virtual ~ name () {} \ | ||||
| 	public: \ | ||||
| /**/ | ||||
| 
 | ||||
| 
 | ||||
| #ifndef LIBOPENMPT_EXT_INTERFACE_PATTERN_VIS | ||||
| #define LIBOPENMPT_EXT_INTERFACE_PATTERN_VIS | ||||
| #endif | ||||
| 
 | ||||
| LIBOPENMPT_DECLARE_EXT_CXX_INTERFACE(pattern_vis) | ||||
| 
 | ||||
| class pattern_vis { | ||||
| 
 | ||||
| 	LIBOPENMPT_EXT_CXX_INTERFACE(pattern_vis) | ||||
| 
 | ||||
| 	//! Pattern command type
 | ||||
| 	enum effect_type { | ||||
| 
 | ||||
| 		effect_unknown = 0, | ||||
| 		effect_general = 1, | ||||
| 		effect_global = 2, | ||||
| 		effect_volume = 3, | ||||
| 		effect_panning = 4, | ||||
| 		effect_pitch = 5 | ||||
| 
 | ||||
| 	}; // enum effect_type
 | ||||
| 
 | ||||
| 	//! Get pattern command type for pattern highlighting
 | ||||
| 	/*!
 | ||||
| 	  \param pattern The pattern whose data should be retrieved. | ||||
| 	  \param row The row from which the data should be retrieved. | ||||
| 	  \param channel The channel from which the data should be retrieved. | ||||
| 	  \return The command type in the effect column at the given pattern position (see openmpt::ext::pattern_vis::effect_type) | ||||
| 	  \sa openmpt::ext::pattern_vis::get_pattern_row_channel_effect_type | ||||
| 	*/ | ||||
| 	virtual effect_type get_pattern_row_channel_volume_effect_type( std::int32_t pattern, std::int32_t row, std::int32_t channel ) const = 0; | ||||
| 
 | ||||
| 	//! Get pattern command type for pattern highlighting
 | ||||
| 	/*!
 | ||||
| 	  \param pattern The pattern whose data should be retrieved. | ||||
| 	  \param row The row from which the data should be retrieved. | ||||
| 	  \param channel The channel from which the data should be retrieved. | ||||
| 	  \return The command type in the volume column at the given pattern position (see openmpt::ext::pattern_vis::effect_type) | ||||
| 	  \sa openmpt::ext::pattern_vis::get_pattern_row_channel_volume_effect_type | ||||
| 	*/ | ||||
| 	virtual effect_type get_pattern_row_channel_effect_type( std::int32_t pattern, std::int32_t row, std::int32_t channel ) const = 0; | ||||
| 
 | ||||
| }; // class pattern_vis
 | ||||
| 
 | ||||
| 
 | ||||
| #ifndef LIBOPENMPT_EXT_INTERFACE_INTERACTIVE | ||||
| #define LIBOPENMPT_EXT_INTERFACE_INTERACTIVE | ||||
| #endif | ||||
| 
 | ||||
| LIBOPENMPT_DECLARE_EXT_CXX_INTERFACE(interactive) | ||||
| 
 | ||||
| class interactive { | ||||
| 
 | ||||
| 	LIBOPENMPT_EXT_CXX_INTERFACE(interactive) | ||||
| 
 | ||||
| 	//! Set the current ticks per row (speed)
 | ||||
| 	/*!
 | ||||
| 	  \param speed The new tick count in range [1, 65535]. | ||||
| 	  \throws openmpt::exception Throws an exception derived from openmpt::exception if the speed is outside the specified range. | ||||
| 	  \remarks The tick count may be reset by pattern commands at any time. | ||||
| 	  \sa openmpt::module::get_current_speed | ||||
| 	*/ | ||||
| 	virtual void set_current_speed( std::int32_t speed ) = 0; | ||||
| 
 | ||||
| 	//! Set the current module tempo
 | ||||
| 	/*!
 | ||||
| 	  \param tempo The new tempo in range [32, 512]. The exact meaning of the value depends on the tempo mode used by the module. | ||||
| 	  \throws openmpt::exception Throws an exception derived from openmpt::exception if the tempo is outside the specified range. | ||||
| 	  \remarks The tempo may be reset by pattern commands at any time. Use openmpt::ext:interactive::set_tempo_factor to apply a tempo factor that is independent of pattern commands. | ||||
| 	  \sa openmpt::module::get_current_tempo | ||||
| 	*/ | ||||
| 	virtual void set_current_tempo( std::int32_t tempo ) = 0; | ||||
| 
 | ||||
| 	//! Set the current module tempo factor without affecting playback pitch
 | ||||
| 	/*!
 | ||||
| 	  \param factor The new tempo factor in range ]0.0, 4.0] - 1.0 means unmodified tempo. | ||||
| 	  \throws openmpt::exception Throws an exception derived from openmpt::exception if the factor is outside the specified range. | ||||
| 	  \remarks Modifying the tempo without applying the same pitch factor using openmpt::ext::interactive::set_pitch_factor may cause rhythmic samples (e.g. drum loops) to go out of sync. | ||||
| 	  \sa openmpt::ext::interactive::get_tempo_factor | ||||
| 	*/ | ||||
| 	virtual void set_tempo_factor( double factor ) = 0; | ||||
| 
 | ||||
| 	//! Gets the current module tempo factor
 | ||||
| 	/*!
 | ||||
| 	  \return The current tempo factor. | ||||
| 	  \sa openmpt::ext::interactive::set_tempo_factor | ||||
| 	*/ | ||||
| 	virtual double get_tempo_factor( ) const = 0; | ||||
| 	 | ||||
| 	//! Set the current module pitch factor without affecting playback speed
 | ||||
| 	/*!
 | ||||
| 	  \param factor The new pitch factor in range ]0.0, 4.0] - 1.0 means unmodified pitch. | ||||
| 	  \throws openmpt::exception Throws an exception derived from openmpt::exception if the factor is outside the specified range. | ||||
| 	  \remarks Modifying the pitch without applying the the same tempo factor using openmpt::ext::interactive::set_tempo_factor may cause rhythmic samples (e.g. drum loops) to go out of sync. | ||||
| 	  \remarks To shift the pich by `n` semitones, the parameter can be calculated as follows: `pow( 2.0, n / 12.0 )` | ||||
| 	  \sa openmpt::ext::interactive::get_pitch_factor | ||||
| 	*/ | ||||
| 	virtual void set_pitch_factor( double factor ) = 0; | ||||
| 
 | ||||
| 	//! Gets the current module pitch factor
 | ||||
| 	/*!
 | ||||
| 	  \return The current pitch factor. | ||||
| 	  \sa openmpt::ext::interactive::set_pitch_factor | ||||
| 	*/ | ||||
| 	virtual double get_pitch_factor( ) const = 0; | ||||
| 
 | ||||
| 	//! Set the current global volume
 | ||||
| 	/*!
 | ||||
| 	  \param volume The new global volume in range [0.0, 1.0] | ||||
| 	  \throws openmpt::exception Throws an exception derived from openmpt::exception if the volume is outside the specified range. | ||||
| 	  \remarks The global volume may be reset by pattern commands at any time. Use openmpt::module::set_render_param to apply a global overall volume factor that is independent of pattern commands. | ||||
| 	  \sa openmpt::ext::interactive::get_global_volume | ||||
| 	*/ | ||||
| 	virtual void set_global_volume( double volume ) = 0; | ||||
| 
 | ||||
| 	//! Get the current global volume
 | ||||
| 	/*!
 | ||||
| 	  \return The current global volume in range [0.0, 1.0] | ||||
| 	  \sa openmpt::ext::interactive::set_global_volume | ||||
| 	*/ | ||||
| 	virtual double get_global_volume( ) const = 0; | ||||
| 	 | ||||
| 	//! Set the current channel volume for a channel
 | ||||
| 	/*!
 | ||||
| 	  \param channel The channel whose volume should be set, in range [0, openmpt::module::get_num_channels()[ | ||||
| 	  \param volume The new channel volume in range [0.0, 1.0] | ||||
| 	  \throws openmpt::exception Throws an exception derived from openmpt::exception if the channel or volume is outside the specified range. | ||||
| 	  \remarks The channel volume may be reset by pattern commands at any time. | ||||
| 	  \sa openmpt::ext::interactive::get_channel_volume | ||||
| 	*/ | ||||
| 	virtual void set_channel_volume( std::int32_t channel, double volume ) = 0; | ||||
| 
 | ||||
| 	//! Get the current channel volume for a channel
 | ||||
| 	/*!
 | ||||
| 	  \param channel The channel whose volume should be retrieved, in range [0, openmpt::module::get_num_channels()[ | ||||
| 	  \return The current channel volume in range [0.0, 1.0] | ||||
| 	  \throws openmpt::exception Throws an exception derived from openmpt::exception if the channel is outside the specified range. | ||||
| 	  \sa openmpt::ext::interactive::set_channel_volume | ||||
| 	*/ | ||||
| 	virtual double get_channel_volume( std::int32_t channel ) const = 0; | ||||
| 
 | ||||
| 	//! Set the current mute status for a channel
 | ||||
| 	/*!
 | ||||
| 	  \param channel The channel whose mute status should be set, in range [0, openmpt::module::get_num_channels()[ | ||||
| 	  \param mute The new mute status. true is muted, false is unmuted. | ||||
| 	  \throws openmpt::exception Throws an exception derived from openmpt::exception if the channel is outside the specified range. | ||||
| 	  \sa openmpt::ext::interactive::get_channel_mute_status | ||||
| 	*/ | ||||
| 	virtual void set_channel_mute_status( std::int32_t channel, bool mute ) = 0; | ||||
| 
 | ||||
| 	//! Get the current mute status for a channel
 | ||||
| 	/*!
 | ||||
| 	  \param channel The channel whose mute status should be retrieved, in range [0, openmpt::module::get_num_channels()[ | ||||
| 	  \return The current channel mute status. true is muted, false is unmuted. | ||||
| 	  \throws openmpt::exception Throws an exception derived from openmpt::exception if the channel is outside the specified range. | ||||
| 	  \sa openmpt::ext::interactive::set_channel_mute_status | ||||
| 	*/ | ||||
| 	virtual bool get_channel_mute_status( std::int32_t channel ) const = 0; | ||||
| 	 | ||||
| 	//! Set the current mute status for an instrument
 | ||||
| 	/*!
 | ||||
| 	  \param instrument The instrument whose mute status should be set, in range [0, openmpt::module::get_num_instruments()[ if openmpt::module::get_num_instruments is not 0, otherwise in [0, openmpt::module::get_num_samples()[ | ||||
| 	  \param mute The new mute status. true is muted, false is unmuted. | ||||
| 	  \throws openmpt::exception Throws an exception derived from openmpt::exception if the instrument is outside the specified range. | ||||
| 	  \sa openmpt::ext::interactive::get_instrument_mute_status | ||||
| 	*/ | ||||
| 	virtual void set_instrument_mute_status( std::int32_t instrument, bool mute ) = 0; | ||||
| 
 | ||||
| 	//! Get the current mute status for an instrument
 | ||||
| 	/*!
 | ||||
| 	  \param instrument The instrument whose mute status should be retrieved, in range [0, openmpt::module::get_num_instruments()[ if openmpt::module::get_num_instruments is not 0, otherwise in [0, openmpt::module::get_num_samples()[ | ||||
| 	  \return The current instrument mute status. true is muted, false is unmuted. | ||||
| 	  \throws openmpt::exception Throws an exception derived from openmpt::exception if the instrument is outside the specified range. | ||||
| 	  \sa openmpt::ext::interactive::set_instrument_mute_status | ||||
| 	*/ | ||||
| 	virtual bool get_instrument_mute_status( std::int32_t instrument ) const = 0; | ||||
| 
 | ||||
| 	//! Play a note using the specified instrument
 | ||||
| 	/*!
 | ||||
| 	  \param instrument The instrument that should be played, in range [0, openmpt::module::get_num_instruments()[ if openmpt::module::get_num_instruments is not 0, otherwise in [0, openmpt::module::get_num_samples()[ | ||||
| 	  \param note The note to play, in rage [0, 119]. 60 is the middle C. | ||||
| 	  \param volume The volume at which the note should be triggered, in range [0.0, 1.0] | ||||
| 	  \param panning The panning position at which the note should be triggered, in range [-1.0, 1.0], 0.0 is center. | ||||
| 	  \return The channel on which the note is played. This can pe be passed to openmpt::ext::interactive::stop_note to stop the note. | ||||
| 	  \throws openmpt::exception Throws an exception derived from openmpt::exception if the instrument or note is outside the specified range. | ||||
| 	  \sa openmpt::ext::interactive::stop_note | ||||
| 	*/ | ||||
| 	virtual std::int32_t play_note( std::int32_t instrument, std::int32_t note, double volume, double panning ) = 0; | ||||
| 
 | ||||
| 	//! Stop the note playing on the specified channel
 | ||||
| 	/*!
 | ||||
| 	  \param channel The channel on which the note should be stopped. | ||||
| 	  \throws openmpt::exception Throws an exception derived from openmpt::exception if the channel index is invalid. | ||||
| 	  \sa openmpt::ext::interactive::play_note | ||||
| 	*/ | ||||
| 	virtual void stop_note( std::int32_t channel ) = 0; | ||||
| 
 | ||||
| }; // class interactive
 | ||||
| 
 | ||||
| 
 | ||||
| /* add stuff here */ | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| #undef LIBOPENMPT_DECLARE_EXT_CXX_INTERFACE | ||||
| #undef LIBOPENMPT_EXT_CXX_INTERFACE | ||||
| 
 | ||||
| } // namespace ext
 | ||||
| 
 | ||||
| } // namespace openmpt
 | ||||
| 
 | ||||
| /*!
 | ||||
|   @} | ||||
| */ | ||||
| 
 | ||||
| #endif // LIBOPENMPT_EXT_HPP
 | ||||
|  | @ -0,0 +1,198 @@ | |||
| /*
 | ||||
|  * libopenmpt_stream_callbacks_buffer.h | ||||
|  * ------------------------------------ | ||||
|  * Purpose: libopenmpt public c interface | ||||
|  * Notes  : (currently none) | ||||
|  * Authors: OpenMPT Devs | ||||
|  * The OpenMPT source code is released under the BSD license. Read LICENSE for more details. | ||||
|  */ | ||||
| 
 | ||||
| #ifndef LIBOPENMPT_STREAM_CALLBACKS_BUFFER_H | ||||
| #define LIBOPENMPT_STREAM_CALLBACKS_BUFFER_H | ||||
| 
 | ||||
| #include "libopenmpt.h" | ||||
| 
 | ||||
| /* The use of this header requires:
 | ||||
| 
 | ||||
| #include <libopenmpt/libopenmpt.h> | ||||
| #if defined( LIBOPENMPT_STREAM_CALLBACKS_BUFFER ) | ||||
| #include <libopenmpt/libopenmpt_stream_callbacks_buffer.h> | ||||
| #else | ||||
| #error "libopenmpt too old." | ||||
| #endif | ||||
| 
 | ||||
| */ | ||||
| 
 | ||||
| #include <stdint.h> | ||||
| #include <stdlib.h> | ||||
| #include <string.h> | ||||
| 
 | ||||
| /*! \addtogroup libopenmpt_c
 | ||||
|  * @{ | ||||
|  */ | ||||
| 
 | ||||
| #ifdef __cplusplus | ||||
| extern "C" { | ||||
| #endif | ||||
| 
 | ||||
| typedef struct openmpt_stream_buffer { | ||||
| 	const void * file_data; /* or prefix data IFF prefix_size < file_size */ | ||||
| 	int64_t file_size; | ||||
| 	int64_t file_pos; | ||||
| 	int64_t prefix_size; | ||||
| 	int overflow; | ||||
| } openmpt_stream_buffer; | ||||
| 
 | ||||
| static size_t openmpt_stream_buffer_read_func( void * stream, void * dst, size_t bytes ) { | ||||
| 	openmpt_stream_buffer * s = (openmpt_stream_buffer*)stream; | ||||
| 	int64_t offset = 0; | ||||
| 	int64_t begpos = 0; | ||||
| 	int64_t endpos = 0; | ||||
| 	size_t valid_bytes = 0; | ||||
| 	if ( !s ) { | ||||
| 		return 0; | ||||
| 	} | ||||
| 	offset = bytes; | ||||
| 	begpos = s->file_pos; | ||||
| 	endpos = s->file_pos; | ||||
| 	valid_bytes = 0; | ||||
| 	endpos = (uint64_t)endpos + (uint64_t)offset; | ||||
| 	if ( ( offset > 0 ) && !( (uint64_t)endpos > (uint64_t)begpos ) ) { | ||||
| 		/* integer wrapped */ | ||||
| 		return 0; | ||||
| 	} | ||||
| 	if ( bytes == 0 ) { | ||||
| 		return 0; | ||||
| 	} | ||||
| 	if ( begpos >= s->file_size ) { | ||||
| 		return 0; | ||||
| 	} | ||||
| 	if ( endpos > s->file_size ) { | ||||
| 		/* clip to eof */ | ||||
| 		bytes = bytes - (size_t)( endpos - s->file_size ); | ||||
| 		endpos = endpos - ( endpos - s->file_size ); | ||||
| 	} | ||||
| 	memset( dst, 0, bytes ); | ||||
| 	if ( begpos >= s->prefix_size ) { | ||||
| 		s->overflow = 1; | ||||
| 		valid_bytes = 0; | ||||
| 	} else if ( endpos > s->prefix_size ) { | ||||
| 		s->overflow = 1; | ||||
| 		valid_bytes = bytes - (size_t)( endpos - s->prefix_size ); | ||||
| 	} else { | ||||
| 		valid_bytes = bytes; | ||||
| 	} | ||||
| 	memcpy( dst, (const char*)s->file_data + s->file_pos, valid_bytes ); | ||||
| 	s->file_pos = s->file_pos + bytes; | ||||
| 	return bytes; | ||||
| } | ||||
| 
 | ||||
| static int openmpt_stream_buffer_seek_func( void * stream, int64_t offset, int whence ) { | ||||
| 	openmpt_stream_buffer * s = (openmpt_stream_buffer*)stream; | ||||
| 	int result = -1; | ||||
| 	if ( !s ) { | ||||
| 		return -1; | ||||
| 	} | ||||
| 	switch ( whence ) { | ||||
| 		case OPENMPT_STREAM_SEEK_SET: | ||||
| 			if ( offset < 0 ) { | ||||
| 				return -1; | ||||
| 			} | ||||
| 			if ( offset > s->file_size ) { | ||||
| 				return -1; | ||||
| 			} | ||||
| 			s->file_pos = offset; | ||||
| 			result = 0; | ||||
| 			break; | ||||
| 		case OPENMPT_STREAM_SEEK_CUR: | ||||
| 			do { | ||||
| 				int64_t oldpos = s->file_pos; | ||||
| 				int64_t pos = s->file_pos; | ||||
| 				pos = (uint64_t)pos + (uint64_t)offset; | ||||
| 				if ( ( offset > 0 ) && !( (uint64_t)pos > (uint64_t)oldpos ) ) { | ||||
| 					/* integer wrapped */ | ||||
| 					return -1; | ||||
| 				} | ||||
| 				if ( ( offset < 0 ) && !( (uint64_t)pos < (uint64_t)oldpos ) ) { | ||||
| 					/* integer wrapped */ | ||||
| 					return -1; | ||||
| 				} | ||||
| 				s->file_pos = pos; | ||||
| 			} while(0); | ||||
| 			result = 0; | ||||
| 			break; | ||||
| 		case OPENMPT_STREAM_SEEK_END: | ||||
| 			if ( offset > 0 ) { | ||||
| 				return -1; | ||||
| 			} | ||||
| 			do { | ||||
| 				int64_t oldpos = s->file_pos; | ||||
| 				int64_t pos = s->file_pos; | ||||
| 				pos = s->file_size; | ||||
| 				pos = (uint64_t)pos + (uint64_t)offset; | ||||
| 				if ( ( offset < 0 ) && !( (uint64_t)pos < (uint64_t)oldpos ) ) { | ||||
| 					/* integer wrapped */ | ||||
| 					return -1; | ||||
| 				} | ||||
| 				s->file_pos = pos; | ||||
| 			} while(0); | ||||
| 			result = 0; | ||||
| 			break; | ||||
| 	} | ||||
| 	return result; | ||||
| } | ||||
| 
 | ||||
| static int64_t openmpt_stream_buffer_tell_func( void * stream ) { | ||||
| 	openmpt_stream_buffer * s = (openmpt_stream_buffer*)stream; | ||||
| 	if ( !s ) { | ||||
| 		return -1; | ||||
| 	} | ||||
| 	return s->file_pos; | ||||
| } | ||||
| 
 | ||||
| static void openmpt_stream_buffer_init( openmpt_stream_buffer * buffer, const void * file_data, int64_t file_size ) { | ||||
| 	memset( buffer, 0, sizeof( openmpt_stream_buffer ) ); | ||||
| 	buffer->file_data = file_data; | ||||
| 	buffer->file_size = file_size; | ||||
| 	buffer->file_pos = 0; | ||||
| 	buffer->prefix_size = file_size; | ||||
| 	buffer->overflow = 0; | ||||
| } | ||||
| 
 | ||||
| #define openmpt_stream_buffer_init_prefix_only( buffer_, prefix_data_, prefix_size_, file_size_ ) do { \ | ||||
| 	openmpt_stream_buffer_init( (buffer_), (prefix_data_), (file_size_) ); \ | ||||
| 	(buffer_)->prefix_size = (prefix_size_); \ | ||||
| } while(0) | ||||
| 
 | ||||
| #define openmpt_stream_buffer_overflowed( buffer_ ) ( (buffer_)->overflow ) | ||||
| 
 | ||||
| /*! \brief Provide openmpt_stream_callbacks for in-memoy buffers
 | ||||
|  * | ||||
|  * Fills openmpt_stream_callbacks suitable for passing an in-memory buffer as a stream parameter to functions doing file input/output. | ||||
|  * | ||||
|  * \remarks The stream argument must be passed as `(void*)(openmpt_stream_buffer*)stream_buffer`. | ||||
|  * \sa \ref libopenmpt_c_fileio | ||||
|  * \sa openmpt_stream_callbacks | ||||
|  * \sa openmpt_could_open_probability2 | ||||
|  * \sa openmpt_probe_file_header_from_stream | ||||
|  * \sa openmpt_module_create2 | ||||
|  */ | ||||
| static openmpt_stream_callbacks openmpt_stream_get_buffer_callbacks(void) { | ||||
| 	openmpt_stream_callbacks retval; | ||||
| 	memset( &retval, 0, sizeof( openmpt_stream_callbacks ) ); | ||||
| 	retval.read = openmpt_stream_buffer_read_func; | ||||
| 	retval.seek = openmpt_stream_buffer_seek_func; | ||||
| 	retval.tell = openmpt_stream_buffer_tell_func; | ||||
| 	return retval; | ||||
| } | ||||
| 
 | ||||
| #ifdef __cplusplus | ||||
| } | ||||
| #endif | ||||
| 
 | ||||
| /*!
 | ||||
|  * @} | ||||
|  */ | ||||
| 
 | ||||
| #endif /* LIBOPENMPT_STREAM_CALLBACKS_BUFFER_H */ | ||||
| 
 | ||||
							
								
								
									
										101
									
								
								libs/libopenmpt/inc/libopenmpt/libopenmpt_stream_callbacks_fd.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										101
									
								
								libs/libopenmpt/inc/libopenmpt/libopenmpt_stream_callbacks_fd.h
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,101 @@ | |||
| /*
 | ||||
|  * libopenmpt_stream_callbacks_fd.h | ||||
|  * -------------------------------- | ||||
|  * Purpose: libopenmpt public c interface | ||||
|  * Notes  : (currently none) | ||||
|  * Authors: OpenMPT Devs | ||||
|  * The OpenMPT source code is released under the BSD license. Read LICENSE for more details. | ||||
|  */ | ||||
| 
 | ||||
| #ifndef LIBOPENMPT_STREAM_CALLBACKS_FD_H | ||||
| #define LIBOPENMPT_STREAM_CALLBACKS_FD_H | ||||
| 
 | ||||
| #include "libopenmpt.h" | ||||
| 
 | ||||
| #ifdef _MSC_VER | ||||
| #include <io.h> | ||||
| #endif | ||||
| #include <limits.h> | ||||
| #include <stdint.h> | ||||
| #include <stdio.h> | ||||
| #include <string.h> | ||||
| #ifndef _MSC_VER | ||||
| #include <unistd.h> | ||||
| #endif | ||||
| 
 | ||||
| /*! \addtogroup libopenmpt_c
 | ||||
|  * @{ | ||||
|  */ | ||||
| 
 | ||||
| #ifdef __cplusplus | ||||
| extern "C" { | ||||
| #endif | ||||
| 
 | ||||
| /* This stuff has to be in a header file because of possibly different MSVC CRTs which cause problems for fd crossing CRT boundaries. */ | ||||
| 
 | ||||
| static size_t openmpt_stream_fd_read_func( void * stream, void * dst, size_t bytes ) { | ||||
| 	int fd = 0; | ||||
| 	#if defined(_MSC_VER) | ||||
| 		size_t retval = 0; | ||||
| 		int to_read = 0; | ||||
| 		int ret_read = 0; | ||||
| 	#else | ||||
| 		ssize_t retval = 0; | ||||
| 	#endif | ||||
| 	fd = (int)(uintptr_t)stream; | ||||
| 	if ( fd < 0 ) { | ||||
| 		return 0; | ||||
| 	} | ||||
| 	#if defined(_MSC_VER) | ||||
| 		retval = 0; | ||||
| 		while ( bytes > 0 ) { | ||||
| 			to_read = 0; | ||||
| 			if ( bytes < (size_t)INT_MAX ) { | ||||
| 				to_read = (int)bytes; | ||||
| 			} else { | ||||
| 				to_read = INT_MAX; | ||||
| 			} | ||||
| 			ret_read = _read( fd, dst, to_read ); | ||||
| 			if ( ret_read <= 0 ) { | ||||
| 				return retval; | ||||
| 			} | ||||
| 			bytes -= ret_read; | ||||
| 			retval += ret_read; | ||||
| 		} | ||||
| 	#else | ||||
| 		retval = read( fd, dst, bytes ); | ||||
| 	#endif | ||||
| 	if ( retval <= 0 ) { | ||||
| 		return 0; | ||||
| 	} | ||||
| 	return retval; | ||||
| } | ||||
| 
 | ||||
| /*! \brief Provide openmpt_stream_callbacks for standard POSIX file descriptors
 | ||||
|  * | ||||
|  * Fills openmpt_stream_callbacks suitable for passing a POSIX filer descriptor as a stream parameter to functions doing file input/output. | ||||
|  * | ||||
|  * \remarks The stream argument must be passed as `(void*)(uintptr_t)(int)fd`. | ||||
|  * \sa \ref libopenmpt_c_fileio | ||||
|  * \sa openmpt_stream_callbacks | ||||
|  * \sa openmpt_could_open_probability2 | ||||
|  * \sa openmpt_probe_file_header_from_stream | ||||
|  * \sa openmpt_module_create2 | ||||
|  */ | ||||
| static openmpt_stream_callbacks openmpt_stream_get_fd_callbacks(void) { | ||||
| 	openmpt_stream_callbacks retval; | ||||
| 	memset( &retval, 0, sizeof( openmpt_stream_callbacks ) ); | ||||
| 	retval.read = openmpt_stream_fd_read_func; | ||||
| 	return retval; | ||||
| } | ||||
| 
 | ||||
| #ifdef __cplusplus | ||||
| } | ||||
| #endif | ||||
| 
 | ||||
| /*!
 | ||||
|  * @} | ||||
|  */ | ||||
| 
 | ||||
| #endif /* LIBOPENMPT_STREAM_CALLBACKS_FD_H */ | ||||
| 
 | ||||
|  | @ -0,0 +1,132 @@ | |||
| /*
 | ||||
|  * libopenmpt_stream_callbacks_file.h | ||||
|  * ---------------------------------- | ||||
|  * Purpose: libopenmpt public c interface | ||||
|  * Notes  : (currently none) | ||||
|  * Authors: OpenMPT Devs | ||||
|  * The OpenMPT source code is released under the BSD license. Read LICENSE for more details. | ||||
|  */ | ||||
| 
 | ||||
| #ifndef LIBOPENMPT_STREAM_CALLBACKS_FILE_H | ||||
| #define LIBOPENMPT_STREAM_CALLBACKS_FILE_H | ||||
| 
 | ||||
| #include "libopenmpt.h" | ||||
| 
 | ||||
| #include <limits.h> | ||||
| #include <stdint.h> | ||||
| #include <stdio.h> | ||||
| #include <string.h> | ||||
| #ifdef _MSC_VER | ||||
| #include <wchar.h> /* off_t */ | ||||
| #endif | ||||
| 
 | ||||
| /*! \addtogroup libopenmpt_c
 | ||||
|  * @{ | ||||
|  */ | ||||
| 
 | ||||
| #ifdef __cplusplus | ||||
| extern "C" { | ||||
| #endif | ||||
| 
 | ||||
| /* This stuff has to be in a header file because of possibly different MSVC CRTs which cause problems for FILE * crossing CRT boundaries. */ | ||||
| 
 | ||||
| static size_t openmpt_stream_file_read_func( void * stream, void * dst, size_t bytes ) { | ||||
| 	FILE * f = 0; | ||||
| 	size_t retval = 0; | ||||
| 	f = (FILE*)stream; | ||||
| 	if ( !f ) { | ||||
| 		return 0; | ||||
| 	} | ||||
| 	retval = fread( dst, 1, bytes, f ); | ||||
| 	if ( retval <= 0 ) { | ||||
| 		return 0; | ||||
| 	} | ||||
| 	return retval; | ||||
| } | ||||
| 
 | ||||
| static int openmpt_stream_file_seek_func( void * stream, int64_t offset, int whence ) { | ||||
| 	FILE * f = 0; | ||||
| 	int fwhence = 0; | ||||
| 	f = (FILE*)stream; | ||||
| 	if ( !f ) { | ||||
| 		return -1; | ||||
| 	} | ||||
| 	switch ( whence ) { | ||||
| #if defined(SEEK_SET) | ||||
| 		case OPENMPT_STREAM_SEEK_SET: | ||||
| 			fwhence = SEEK_SET; | ||||
| 			break; | ||||
| #endif | ||||
| #if defined(SEEK_CUR) | ||||
| 		case OPENMPT_STREAM_SEEK_CUR: | ||||
| 			fwhence = SEEK_CUR; | ||||
| 			break; | ||||
| #endif | ||||
| #if defined(SEEK_END) | ||||
| 		case OPENMPT_STREAM_SEEK_END: | ||||
| 			fwhence = SEEK_END; | ||||
| 			break; | ||||
| #endif | ||||
| 		default: | ||||
| 			return -1; | ||||
| 			break; | ||||
| 	} | ||||
| 	#if defined(_MSC_VER) | ||||
| 		return _fseeki64( f, offset, fwhence ) ? -1 : 0; | ||||
| 	#elif defined(_POSIX_SOURCE) && (_POSIX_SOURCE == 1)  | ||||
| 		return fseeko( f, offset, fwhence ) ? -1 : 0; | ||||
| 	#else | ||||
| 		return fseek( f, offset, fwhence ) ? -1 : 0; | ||||
| 	#endif | ||||
| } | ||||
| 
 | ||||
| static int64_t openmpt_stream_file_tell_func( void * stream ) { | ||||
| 	FILE * f = 0; | ||||
| 	int64_t retval = 0; | ||||
| 	f = (FILE*)stream; | ||||
| 	if ( !f ) { | ||||
| 		return -1; | ||||
| 	} | ||||
| 	#if defined(_MSC_VER) | ||||
| 		retval = _ftelli64( f ); | ||||
| 	#elif defined(_POSIX_SOURCE) && (_POSIX_SOURCE == 1)  | ||||
| 		retval = ftello( f ); | ||||
| 	#else | ||||
| 		retval = ftell( f ); | ||||
| 	#endif | ||||
| 	if ( retval < 0 ) { | ||||
| 		return -1; | ||||
| 	} | ||||
| 	return retval; | ||||
| } | ||||
| 
 | ||||
| /*! \brief Provide openmpt_stream_callbacks for standard C FILE objects
 | ||||
|  * | ||||
|  * Fills openmpt_stream_callbacks suitable for passing a standard C FILE object as a stream parameter to functions doing file input/output. | ||||
|  * | ||||
|  * \remarks The stream argument must be passed as `(void*)(FILE*)file`. | ||||
|  * \sa \ref libopenmpt_c_fileio | ||||
|  * \sa openmpt_stream_callbacks | ||||
|  * \sa openmpt_could_open_probability2 | ||||
|  * \sa openmpt_probe_file_header_from_stream | ||||
|  * \sa openmpt_module_create2 | ||||
|  */ | ||||
| static openmpt_stream_callbacks openmpt_stream_get_file_callbacks(void) { | ||||
| 	openmpt_stream_callbacks retval; | ||||
| 	memset( &retval, 0, sizeof( openmpt_stream_callbacks ) ); | ||||
| 	retval.read = openmpt_stream_file_read_func; | ||||
| 	retval.seek = openmpt_stream_file_seek_func; | ||||
| 	retval.tell = openmpt_stream_file_tell_func; | ||||
| 	return retval; | ||||
| } | ||||
| 
 | ||||
| #ifdef __cplusplus | ||||
| } | ||||
| #endif | ||||
| 
 | ||||
| /*!
 | ||||
|  * @} | ||||
|  */ | ||||
| 
 | ||||
| #endif /* LIBOPENMPT_STREAM_CALLBACKS_FILE_H */ | ||||
| 
 | ||||
							
								
								
									
										75
									
								
								libs/libopenmpt/inc/libopenmpt/libopenmpt_version.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										75
									
								
								libs/libopenmpt/inc/libopenmpt/libopenmpt_version.h
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,75 @@ | |||
| /*
 | ||||
|  * libopenmpt_version.h | ||||
|  * -------------------- | ||||
|  * Purpose: libopenmpt public interface version | ||||
|  * Notes  : (currently none) | ||||
|  * Authors: OpenMPT Devs | ||||
|  * The OpenMPT source code is released under the BSD license. Read LICENSE for more details. | ||||
|  */ | ||||
| 
 | ||||
| #ifndef LIBOPENMPT_VERSION_H | ||||
| #define LIBOPENMPT_VERSION_H | ||||
| 
 | ||||
| /*! \addtogroup libopenmpt
 | ||||
|   @{ | ||||
| */ | ||||
| 
 | ||||
| /*! \brief libopenmpt major version number */ | ||||
| #define OPENMPT_API_VERSION_MAJOR 0 | ||||
| /*! \brief libopenmpt minor version number */ | ||||
| #define OPENMPT_API_VERSION_MINOR 4 | ||||
| /*! \brief libopenmpt patch version number */ | ||||
| #define OPENMPT_API_VERSION_PATCH 4 | ||||
| /*! \brief libopenmpt pre-release tag */ | ||||
| #define OPENMPT_API_VERSION_PREREL "" | ||||
| /*! \brief libopenmpt pre-release flag */ | ||||
| #define OPENMPT_API_VERSION_IS_PREREL 0 | ||||
| 
 | ||||
| /*! \brief libopenmpt version number as a single integer value
 | ||||
|  *  \since 0.3 | ||||
|  *  \remarks Use the following shim if you need to support earlier libopenmpt versions: | ||||
|  *           \code | ||||
|  *           #include <libopenmpt/libopenmpt_version.h> | ||||
|  *           #if !defined(OPENMPT_API_VERSION_MAKE) | ||||
|  *           #define OPENMPT_API_VERSION_MAKE(major, minor, patch) (((major)<<24)|((minor)<<16)|((patch)<<0)) | ||||
|  *           #endif | ||||
|  *           \endcode | ||||
|  */ | ||||
| #define OPENMPT_API_VERSION_MAKE(major, minor, patch) (((major)<<24)|((minor)<<16)|((patch)<<0)) | ||||
| 
 | ||||
| /*! \brief libopenmpt API version number */ | ||||
| #define OPENMPT_API_VERSION OPENMPT_API_VERSION_MAKE(OPENMPT_API_VERSION_MAJOR, OPENMPT_API_VERSION_MINOR, OPENMPT_API_VERSION_PATCH) | ||||
| 
 | ||||
| /*! \brief Check whether the libopenmpt API is at least the provided version
 | ||||
|  *  \since 0.3 | ||||
|  *  \remarks Use the following shim if you need to support earlier libopenmpt versions: | ||||
|  *           \code | ||||
|  *           #include <libopenmpt/libopenmpt_version.h> | ||||
|  *           #if !defined(OPENMPT_API_VERSION_AT_LEAST) | ||||
|  *           #define OPENMPT_API_VERSION_AT_LEAST(major, minor, patch) (OPENMPT_API_VERSION >= OPENMPT_API_VERSION_MAKE((major), (minor), (patch))) | ||||
|  *           #endif | ||||
|  *           \endcode | ||||
|  */ | ||||
| #define OPENMPT_API_VERSION_AT_LEAST(major, minor, patch) (OPENMPT_API_VERSION >= OPENMPT_API_VERSION_MAKE((major), (minor), (patch))) | ||||
| 
 | ||||
| /*! \brief Check whether the libopenmpt API is before the provided version
 | ||||
|  *  \since 0.3 | ||||
|  *  \remarks Use the following shim if you need to support earlier libopenmpt versions: | ||||
|  *           \code | ||||
|  *           #include <libopenmpt/libopenmpt_version.h> | ||||
|  *           #if !defined(OPENMPT_API_VERSION_BEFORE) | ||||
|  *           #define OPENMPT_API_VERSION_BEFORE(major, minor, patch) (OPENMPT_API_VERSION < OPENMPT_API_VERSION_MAKE((major), (minor), (patch))) | ||||
|  *           #endif | ||||
|  *           \endcode | ||||
|  */ | ||||
| #define OPENMPT_API_VERSION_BEFORE(major, minor, patch) (OPENMPT_API_VERSION < OPENMPT_API_VERSION_MAKE((major), (minor), (patch))) | ||||
| 
 | ||||
| #define OPENMPT_API_VERSION_HELPER_STRINGIZE(x) #x | ||||
| #define OPENMPT_API_VERSION_STRINGIZE(x) OPENMPT_API_VERSION_HELPER_STRINGIZE(x) | ||||
| #define OPENMPT_API_VERSION_STRING OPENMPT_API_VERSION_STRINGIZE(OPENMPT_API_VERSION_MAJOR) "." OPENMPT_API_VERSION_STRINGIZE(OPENMPT_API_VERSION_MINOR) "." OPENMPT_API_VERSION_STRINGIZE(OPENMPT_API_VERSION_PATCH) OPENMPT_API_VERSION_PREREL | ||||
| 
 | ||||
| /*!
 | ||||
|   @} | ||||
| */ | ||||
| 
 | ||||
| #endif /* LIBOPENMPT_VERSION_H */ | ||||
							
								
								
									
										
											BIN
										
									
								
								libs/libopenmpt/lib/x86/libopenmpt.lib
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								libs/libopenmpt/lib/x86/libopenmpt.lib
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								libs/libopenmpt/lib/x86/mingw/libopenmpt.dll.a
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								libs/libopenmpt/lib/x86/mingw/libopenmpt.dll.a
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								libs/libopenmpt/lib/x86_64/libopenmpt.lib
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								libs/libopenmpt/lib/x86_64/libopenmpt.lib
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								libs/libopenmpt/lib/x86_64/mingw/libopenmpt.dll.a
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								libs/libopenmpt/lib/x86_64/mingw/libopenmpt.dll.a
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							|  | @ -218,6 +218,8 @@ set(SRB2_CONFIG_HAVE_ZLIB ON CACHE BOOL | |||
| 	"Enable zlib support.") | ||||
| set(SRB2_CONFIG_HAVE_GME ON CACHE BOOL | ||||
| 	"Enable GME support.") | ||||
| set(SRB2_CONFIG_HAVE_OPENMPT ON CACHE BOOL | ||||
| 	"Enable OpenMPT support.") | ||||
| set(SRB2_CONFIG_HWRENDER ON CACHE BOOL | ||||
| 	"Enable hardware rendering through OpenGL.") | ||||
| set(SRB2_CONFIG_USEASM OFF CACHE BOOL | ||||
|  | @ -230,7 +232,7 @@ set(SRB2_CONFIG_STATIC_OPENGL OFF CACHE BOOL | |||
| ### use internal libraries? | ||||
| if(${CMAKE_SYSTEM} MATCHES "Windows") ###set on Windows only | ||||
| 	set(SRB2_CONFIG_USE_INTERNAL_LIBRARIES OFF CACHE BOOL | ||||
| 	"Use SRB2's internal copies of required dependencies (SDL2, PNG, zlib, GME).") | ||||
| 	"Use SRB2's internal copies of required dependencies (SDL2, PNG, zlib, GME, OpenMPT).") | ||||
| endif() | ||||
| 
 | ||||
| if(${SRB2_CONFIG_HAVE_BLUA}) | ||||
|  | @ -340,6 +342,26 @@ if(${SRB2_CONFIG_HAVE_GME}) | |||
| 	endif() | ||||
| endif() | ||||
| 
 | ||||
| if(${SRB2_CONFIG_HAVE_OPENMPT}) | ||||
| 	if(${SRB2_CONFIG_USE_INTERNAL_LIBRARIES}) | ||||
| 		set(OPENMPT_FOUND ON) | ||||
| 		set(OPENMPT_INCLUDE_DIRS ${CMAKE_SOURCE_DIR}/libs/libopenmpt/inc) | ||||
|         if(${SRB2_SYSTEM_BITS} EQUAL 64) | ||||
| 			set(OPENMPT_LIBRARIES "-L${CMAKE_SOURCE_DIR}/libs/libopenmpt/lib/x86_64/mingw -lopenmpt") | ||||
| 		else() # 32-bit | ||||
| 			set(OPENMPT_LIBRARIES "-L${CMAKE_SOURCE_DIR}/libs/libopenmpt/lib/x86/mingw -lopenmpt") | ||||
| 		endif() | ||||
| 	else() | ||||
| 		find_package(OPENMPT) | ||||
| 	endif() | ||||
| 	if(${OPENMPT_FOUND}) | ||||
| 		set(SRB2_HAVE_OPENMPT ON) | ||||
| 		add_definitions(-DHAVE_OPENMPT) | ||||
| 	else() | ||||
| 		message(WARNING "You have specified that OpenMPT is available but it was not found.") | ||||
| 	endif() | ||||
| endif() | ||||
| 
 | ||||
| if(${SRB2_CONFIG_HAVE_ZLIB}) | ||||
| 	if(${SRB2_CONFIG_USE_INTERNAL_LIBRARIES}) | ||||
| 		set(ZLIB_FOUND ON) | ||||
|  |  | |||
							
								
								
									
										16
									
								
								src/Makefile
									
										
									
									
									
								
							
							
						
						
									
										16
									
								
								src/Makefile
									
										
									
									
									
								
							|  | @ -72,6 +72,7 @@ | |||
| #     Compile without BSD API, add 'NONET=1'
 | ||||
| #     Compile without IPX/SPX, add 'NOIPX=1'
 | ||||
| #     Compile Mingw/SDL with S_DS3S, add 'DS3D=1'
 | ||||
| #     Compile without libopenmpt, add 'NOOPENMPT=1'
 | ||||
| #     Compile with S_FMOD3D, add 'FMOD=1' (WIP)
 | ||||
| #     Compile with S_OPENAL, add 'OPENAL=1' (WIP)
 | ||||
| #     To link with the whole SDL_Image lib to load Icons, add 'SDL_IMAGE=1' but it isn't not realy needed
 | ||||
|  | @ -150,6 +151,10 @@ ifdef DJGPPDOS | |||
| include djgppdos/Makefile.cfg | ||||
| endif | ||||
| 
 | ||||
| ifndef NOOPENMPT | ||||
| HAVE_OPENMPT=1 | ||||
| endif | ||||
| 
 | ||||
| ifdef MINGW | ||||
| include win32/Makefile.cfg | ||||
| endif #ifdef MINGW
 | ||||
|  | @ -296,6 +301,17 @@ LIBS+=$(LIBGME_LDFLAGS) | |||
| CFLAGS+=$(LIBGME_CFLAGS) | ||||
| endif | ||||
| 
 | ||||
| ifdef HAVE_OPENMPT | ||||
| OPTS+=-DHAVE_OPENMPT | ||||
| 
 | ||||
| LIBOPENMPT_PKGCONFIG?=libopenmpt | ||||
| LIBOPENMPT_CFLAGS?=$(shell $(PKG_CONFIG) $(LIBOPENMPT_PKGCONFIG) --cflags) | ||||
| LIBOPENMPT_LDFLAGS?=$(shell $(PKG_CONFIG) $(LIBOPENMPT_PKGCONFIG) --libs) | ||||
| 
 | ||||
| LIBS+=$(LIBOPENMPT_LDFLAGS) | ||||
| CFLAGS+=$(LIBOPENMPT_CFLAGS) | ||||
| endif | ||||
| 
 | ||||
| ifndef NOZLIB | ||||
| OPTS+=-DHAVE_ZLIB | ||||
| ZLIB_PKGCONFIG?=zlib | ||||
|  |  | |||
|  | @ -25,6 +25,12 @@ | |||
| 
 | ||||
| /* 7.18.1.1  Exact-width integer types */ | ||||
| #ifdef _MSC_VER | ||||
| // libopenmpt.h will include stdint.h later;
 | ||||
| // include it now so that INT8_MAX etc. don't get redefined
 | ||||
| #ifdef HAVE_OPENMPT | ||||
| #include <stdint.h> | ||||
| #endif | ||||
| 
 | ||||
| #define UINT8 unsigned __int8 | ||||
| #define SINT8 signed __int8 | ||||
| 
 | ||||
|  | @ -171,6 +177,7 @@ size_t strlcpy(char *dst, const char *src, size_t siz); | |||
| #endif // __BYTEBOOL__
 | ||||
| 
 | ||||
| /* 7.18.2.1  Limits of exact-width integer types */ | ||||
| 
 | ||||
| #ifndef INT8_MIN | ||||
| #define INT8_MIN (-128) | ||||
| #endif | ||||
|  |  | |||
|  | @ -30,7 +30,8 @@ typedef enum { | |||
| 	MU_MP3_MAD_UNUSED, // use MU_MP3 instead
 | ||||
| 	MU_FLAC, | ||||
| 	MU_MODPLUG_UNUSED, // use MU_MOD instead
 | ||||
| 	MU_GME | ||||
| 	MU_GME, | ||||
| 	MU_MOD_EX // libopenmpt
 | ||||
| } musictype_t; | ||||
| 
 | ||||
| /**	\brief Sound subsystem runing and waiting
 | ||||
|  |  | |||
|  | @ -1305,6 +1305,11 @@ static menuitem_t OP_SoundOptionsMenu[] = | |||
| 
 | ||||
| 	{IT_HEADER, NULL, "Advanced", NULL, 103}, // 50
 | ||||
| 	{IT_STRING | IT_CVAR, NULL, "Closed Captioning", &cv_closedcaptioning, 115}, // 56
 | ||||
| 
 | ||||
| #ifdef HAVE_OPENMPT | ||||
| 	{IT_HEADER, NULL, "OpenMPT Settings", NULL, 133}, | ||||
| 	{IT_STRING | IT_CVAR, NULL, "Instrument Filter", &cv_modfilter, 145} | ||||
| #endif | ||||
| }; | ||||
| 
 | ||||
| static menuitem_t OP_DataOptionsMenu[] = | ||||
|  |  | |||
|  | @ -60,6 +60,8 @@ static void GameMIDIMusic_OnChange(void); | |||
| static void GameSounds_OnChange(void); | ||||
| static void GameDigiMusic_OnChange(void); | ||||
| 
 | ||||
| static void ModFilter_OnChange(void); | ||||
| 
 | ||||
| // commands for music and sound servers
 | ||||
| #ifdef MUSSERV | ||||
| consvar_t musserver_cmd = {"musserver_cmd", "musserver", CV_SAVE, NULL, NULL, 0, NULL, NULL, 0, 0, NULL}; | ||||
|  | @ -111,6 +113,11 @@ consvar_t cv_gamedigimusic = {"digimusic", "On", CV_SAVE|CV_CALL|CV_NOINIT, CV_O | |||
| consvar_t cv_gamemidimusic = {"midimusic", "On", CV_SAVE|CV_CALL|CV_NOINIT, CV_OnOff, GameMIDIMusic_OnChange, 0, NULL, NULL, 0, 0, NULL}; | ||||
| consvar_t cv_gamesounds = {"sounds", "On", CV_SAVE|CV_CALL|CV_NOINIT, CV_OnOff, GameSounds_OnChange, 0, NULL, NULL, 0, 0, NULL}; | ||||
| 
 | ||||
| #ifdef HAVE_OPENMPT | ||||
| static CV_PossibleValue_t interpolationfilter_cons_t[] = {{0, "Default"}, {1, "None"}, {2, "Linear"}, {4, "Cubic"}, {8, "Windowed sinc"}, {0, NULL}}; | ||||
| consvar_t cv_modfilter = {"modfilter", "0", CV_SAVE|CV_CALL, interpolationfilter_cons_t, ModFilter_OnChange, 0, NULL, NULL, 0, 0, NULL}; | ||||
| #endif | ||||
| 
 | ||||
| #define S_MAX_VOLUME 127 | ||||
| 
 | ||||
| // when to clip out sounds
 | ||||
|  | @ -269,11 +276,13 @@ void S_RegisterSoundStuff(void) | |||
| 	CV_RegisterVar(&cv_gamesounds); | ||||
| 	CV_RegisterVar(&cv_gamedigimusic); | ||||
| 	CV_RegisterVar(&cv_gamemidimusic); | ||||
| #ifdef HAVE_OPENMPT | ||||
| 	CV_RegisterVar(&cv_modfilter); | ||||
| #endif | ||||
| 
 | ||||
| 	COM_AddCommand("tunes", Command_Tunes_f); | ||||
| 	COM_AddCommand("restartaudio", Command_RestartAudio_f); | ||||
| 
 | ||||
| 
 | ||||
| #if defined (macintosh) && !defined (HAVE_SDL) // mp3 playlist stuff
 | ||||
| 	{ | ||||
| 		INT32 i; | ||||
|  | @ -1978,3 +1987,9 @@ void GameMIDIMusic_OnChange(void) | |||
| 		} | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| void ModFilter_OnChange(void) | ||||
| { | ||||
| 	if (openmpt_mhandle) | ||||
| 		openmpt_module_set_render_param(openmpt_mhandle, OPENMPT_MODULE_RENDER_INTERPOLATIONFILTER_LENGTH, cv_modfilter.value); | ||||
| } | ||||
|  | @ -20,6 +20,11 @@ | |||
| #include "command.h" | ||||
| #include "tables.h" // angle_t | ||||
| 
 | ||||
| #ifdef HAVE_OPENMPT | ||||
| #include "libopenmpt/libopenmpt.h" | ||||
| openmpt_module *openmpt_mhandle; | ||||
| #endif | ||||
| 
 | ||||
| // mask used to indicate sound origin is player item pickup
 | ||||
| #define PICKUP_SOUND 0x8000 | ||||
| 
 | ||||
|  | @ -31,6 +36,10 @@ extern consvar_t cv_gamedigimusic; | |||
| extern consvar_t cv_gamemidimusic; | ||||
| extern consvar_t cv_gamesounds; | ||||
| 
 | ||||
| #ifdef HAVE_OPENMPT | ||||
| extern consvar_t cv_modfilter; | ||||
| #endif | ||||
| 
 | ||||
| #ifdef SNDSERV | ||||
| extern consvar_t sndserver_cmd, sndserver_arg; | ||||
| #endif | ||||
|  |  | |||
|  | @ -149,6 +149,7 @@ if(${SDL2_FOUND}) | |||
| 			SDL2 | ||||
| 			SDL2_mixer | ||||
| 			${GME_LIBRARIES} | ||||
| 			${OPENMPT_LIBRARIES} | ||||
| 			${PNG_LIBRARIES} | ||||
| 			${ZLIB_LIBRARIES} | ||||
| 			${OPENGL_LIBRARIES} | ||||
|  | @ -159,6 +160,7 @@ if(${SDL2_FOUND}) | |||
| 			${SDL2_LIBRARIES} | ||||
| 			${SDL2_MIXER_LIBRARIES} | ||||
| 			${GME_LIBRARIES} | ||||
| 			${OPENMPT_LIBRARIES} | ||||
| 			${PNG_LIBRARIES} | ||||
| 			${ZLIB_LIBRARIES} | ||||
| 			${OPENGL_LIBRARIES} | ||||
|  | @ -238,6 +240,7 @@ if(${SDL2_FOUND}) | |||
| 		${SDL2_INCLUDE_DIRS} | ||||
| 		${SDL2_MIXER_INCLUDE_DIRS} | ||||
| 		${GME_INCLUDE_DIRS} | ||||
| 		${OPENMPT_INCLUDE_DIRS} | ||||
| 		${PNG_INCLUDE_DIRS} | ||||
| 		${ZLIB_INCLUDE_DIRS} | ||||
| 		${OPENGL_INCLUDE_DIRS} | ||||
|  | @ -284,12 +287,14 @@ if(${SDL2_FOUND}) | |||
| 							HINTS ${CMAKE_SOURCE_DIR}/libs/dll-binaries/x86_64 | ||||
| 							HINTS ${CMAKE_SOURCE_DIR}/libs/SDL2/x86_64-w64-mingw32/bin | ||||
| 							HINTS ${CMAKE_SOURCE_DIR}/libs/SDL2_mixer/x86_64-w64-mingw32/bin | ||||
| 							HINTS ${CMAKE_SOURCE_DIR}/libs/libopenmpt/bin/x86_64/mingw | ||||
| 						) | ||||
| 					else() | ||||
| 						find_library(SRB2_SDL2_DLL_${dllname} "${defaultname}" | ||||
| 							HINTS ${CMAKE_SOURCE_DIR}/libs/dll-binaries/i686 | ||||
| 							HINTS ${CMAKE_SOURCE_DIR}/libs/SDL2/i686-w64-mingw32/bin | ||||
| 							HINTS ${CMAKE_SOURCE_DIR}/libs/SDL2_mixer/i686-w64-mingw32/bin | ||||
| 							HINTS ${CMAKE_SOURCE_DIR}/libs/libopenmpt/bin/x86/mingw | ||||
| 						) | ||||
| 					endif() | ||||
| 				else() | ||||
|  | @ -298,12 +303,14 @@ if(${SDL2_FOUND}) | |||
| 							HINTS ${CMAKE_SOURCE_DIR}/libs/dll-binaries/x86_64 | ||||
| 							HINTS ${CMAKE_SOURCE_DIR}/libs/SDL2/lib/x64 | ||||
| 							HINTS ${CMAKE_SOURCE_DIR}/libs/SDL2_mixer/lib/x64 | ||||
| 							HINTS ${CMAKE_SOURCE_DIR}/libs/libopenmpt/bin/x86_64/mingw | ||||
| 						) | ||||
| 					else() | ||||
| 						find_library(SRB2_SDL2_DLL_${dllname} "${defaultname}" | ||||
| 							HINTS ${CMAKE_SOURCE_DIR}/libs/dll-binaries/i686 | ||||
| 							HINTS ${CMAKE_SOURCE_DIR}/libs/SDL2/lib/x86 | ||||
| 							HINTS ${CMAKE_SOURCE_DIR}/libs/SDL2_mixer/lib/x86 | ||||
| 							HINTS ${CMAKE_SOURCE_DIR}/libs/libopenmpt/bin/x86/mingw | ||||
| 						) | ||||
| 					endif() | ||||
| 				endif() | ||||
|  | @ -324,6 +331,9 @@ if(${SDL2_FOUND}) | |||
| 		if(${SRB2_CONFIG_HAVE_GME}) | ||||
| 			getwinlib(libgme "libgme.dll") | ||||
| 		endif() | ||||
| 		if(${SRB2_CONFIG_HAVE_OPENMPT}) | ||||
| 			getwinlib(libopenmpt "libopenmpt.dll") | ||||
| 		endif() | ||||
| 
 | ||||
| 		install(PROGRAMS | ||||
| 			${win_extra_dll_list} | ||||
|  |  | |||
|  | @ -94,6 +94,7 @@ | |||
|     <Import Project="..\..\libs\SDL2.props" /> | ||||
|     <Import Project="..\..\libs\SDL_mixer.props" /> | ||||
|     <Import Project="..\..\libs\libgme.props" /> | ||||
|     <Import Project="..\..\libs\libopenmpt.props" /> | ||||
|     <Import Project="Srb2SDL.props" /> | ||||
|   </ImportGroup> | ||||
|   <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> | ||||
|  |  | |||
|  | @ -6,7 +6,7 @@ | |||
|   <ItemDefinitionGroup> | ||||
|     <ClCompile> | ||||
|       <!-- x86/x64 defines: has specific libraries that ARM does not --> | ||||
|       <PreprocessorDefinitions Condition="'$(Platform)' == 'Win32' OR '$(Platform)' == 'x64'">HAVE_ZLIB;HAVE_LIBGME;USE_WGL_SWAP;DIRECTFULLSCREEN;HAVE_SDL;HWRENDER;HW3SOUND;HAVE_FILTER;HAVE_MIXER;SDLMAIN;%(PreprocessorDefinitions)</PreprocessorDefinitions> | ||||
|       <PreprocessorDefinitions Condition="'$(Platform)' == 'Win32' OR '$(Platform)' == 'x64'">HAVE_ZLIB;HAVE_LIBGME;USE_WGL_SWAP;DIRECTFULLSCREEN;HAVE_SDL;HWRENDER;HW3SOUND;HAVE_FILTER;HAVE_MIXER;HAVE_OPENMPT;SDLMAIN;%(PreprocessorDefinitions)</PreprocessorDefinitions> | ||||
|       <!-- ARM defines --> | ||||
|       <PreprocessorDefinitions Condition="'$(Platform)' != 'Win32' AND '$(Platform)' != 'x64'">USE_WGL_SWAP;DIRECTFULLSCREEN;HAVE_SDL;HWRENDER;HW3SOUND;HAVE_FILTER;HAVE_MIXER;SDLMAIN;%(PreprocessorDefinitions)</PreprocessorDefinitions> | ||||
|     </ClCompile> | ||||
|  |  | |||
|  | @ -72,6 +72,17 @@ | |||
| #endif // HAVE_ZLIB
 | ||||
| #endif // HAVE_LIBGME
 | ||||
| 
 | ||||
| static UINT16 BUFFERSIZE = 2048; | ||||
| static UINT16 SAMPLERATE = 44100; | ||||
| 
 | ||||
| #ifdef HAVE_OPENMPT | ||||
| #include "libopenmpt/libopenmpt.h" | ||||
| #endif | ||||
| 
 | ||||
| /// ------------------------
 | ||||
| /// Audio Declarations
 | ||||
| /// ------------------------
 | ||||
| 
 | ||||
| UINT8 sound_started = false; | ||||
| 
 | ||||
| static Mix_Music *music; | ||||
|  | @ -93,13 +104,19 @@ static void (*fading_callback)(void); | |||
| 
 | ||||
| #ifdef HAVE_LIBGME | ||||
| static Music_Emu *gme; | ||||
| static INT32 current_track; | ||||
| static UINT16 current_track; | ||||
| #endif | ||||
| 
 | ||||
| #ifdef HAVE_OPENMPT | ||||
| int mod_err = OPENMPT_ERROR_OK; | ||||
| static const char *mod_err_str; | ||||
| static UINT16 current_subsong; | ||||
| #endif | ||||
| 
 | ||||
| static void var_cleanup(void) | ||||
| { | ||||
| 	loop_point = song_length =\ | ||||
| 	 music_bytes = fading_source = fading_target =\ | ||||
| 	loop_point = song_length = 0.0f; | ||||
| 	music_bytes = fading_source = fading_target =\ | ||||
| 	 fading_timer = fading_duration = 0; | ||||
| 
 | ||||
| 	songpaused = is_looping =\ | ||||
|  | @ -143,16 +160,21 @@ void I_StartupSound(void) | |||
| 	music_volume = sfx_volume = 0; | ||||
| 
 | ||||
| #if SDL_MIXER_VERSION_ATLEAST(1,2,11) | ||||
| 	Mix_Init(MIX_INIT_FLAC|MIX_INIT_MOD|MIX_INIT_MP3|MIX_INIT_OGG); | ||||
| 	Mix_Init(MIX_INIT_FLAC|MIX_INIT_MP3|MIX_INIT_OGG|MIX_INIT_MOD); | ||||
| #endif | ||||
| 
 | ||||
| 	if (Mix_OpenAudio(44100, AUDIO_S16SYS, 2, 2048) < 0) | ||||
| 	if (Mix_OpenAudio(SAMPLERATE, AUDIO_S16SYS, 2, BUFFERSIZE) < 0) | ||||
| 	{ | ||||
| 		CONS_Alert(CONS_ERROR, "Error starting SDL_Mixer: %s\n", Mix_GetError()); | ||||
| 		// call to start audio failed -- we do not have it
 | ||||
| 		return; | ||||
| 	} | ||||
| 
 | ||||
| #ifdef HAVE_OPENMPT | ||||
| 	CONS_Printf("libopenmpt version: %s\n", openmpt_get_string("library_version")); | ||||
| 	CONS_Printf("libopenmpt build date: %s\n", openmpt_get_string("build")); | ||||
| #endif | ||||
| 
 | ||||
| 	sound_started = true; | ||||
| 	songpaused = false; | ||||
| 	Mix_AllocateChannels(256); | ||||
|  | @ -175,6 +197,10 @@ void I_ShutdownSound(void) | |||
| 	if (gme) | ||||
| 		gme_delete(gme); | ||||
| #endif | ||||
| #ifdef HAVE_OPENMPT | ||||
| 	if (openmpt_mhandle) | ||||
| 		openmpt_module_destroy(openmpt_mhandle); | ||||
| #endif | ||||
| } | ||||
| 
 | ||||
| void I_UpdateSound(void) | ||||
|  | @ -569,7 +595,7 @@ static void music_loop(void) | |||
| 	{ | ||||
| 		Mix_PlayMusic(music, 0); | ||||
| 		Mix_SetMusicPosition(loop_point); | ||||
| 		music_bytes = loop_point*44100.0L*4; //assume 44.1khz, 4-byte length (see I_GetSongPosition)
 | ||||
| 		music_bytes = (UINT32)(loop_point*44100.0L*4); //assume 44.1khz, 4-byte length (see I_GetSongPosition)
 | ||||
| 	} | ||||
| 	else | ||||
| 		I_StopSong(); | ||||
|  | @ -625,12 +651,39 @@ static void mix_gme(void *udata, Uint8 *stream, int len) | |||
| 	// play gme into stream
 | ||||
| 	gme_play(gme, len/2, (short *)stream); | ||||
| 
 | ||||
| 	// Limiter to prevent music from being disorted with some formats
 | ||||
| 	if (music_volume >= 18) | ||||
| 		music_volume = 18; | ||||
| 
 | ||||
| 	// apply volume to stream
 | ||||
| 	for (i = 0, p = (short *)stream; i < len/2; i++, p++) | ||||
| 		*p = ((INT32)*p) * (music_volume*internal_volume/100)*2 / 42; | ||||
| 		*p = ((INT32)*p) * (music_volume*internal_volume/100)*2 / 40; | ||||
| } | ||||
| #endif | ||||
| 
 | ||||
| #ifdef HAVE_OPENMPT | ||||
| static void mix_openmpt(void *udata, Uint8 *stream, int len) | ||||
| { | ||||
| 	int i; | ||||
| 	short *p; | ||||
| 
 | ||||
| 	(void)udata; | ||||
| 
 | ||||
| 	if (!openmpt_mhandle || songpaused) | ||||
| 		return; | ||||
| 
 | ||||
| 	// Play module into stream
 | ||||
| 	openmpt_module_read_interleaved_stereo(openmpt_mhandle, SAMPLERATE, BUFFERSIZE, (short *)stream); | ||||
| 
 | ||||
| 	// Limiter to prevent music from being disorted with some formats
 | ||||
| 	if (music_volume >= 18) | ||||
| 		music_volume = 18; | ||||
| 
 | ||||
| 	// apply volume to stream
 | ||||
| 	for (i = 0, p = (short *)stream; i < len/2; i++, p++) | ||||
| 		*p = ((INT32)*p) * (music_volume*internal_volume/100)*2 / 40; | ||||
| } | ||||
| #endif | ||||
| 
 | ||||
| /// ------------------------
 | ||||
| /// Music System
 | ||||
|  | @ -655,6 +708,10 @@ musictype_t I_SongType(void) | |||
| 	if (gme) | ||||
| 		return MU_GME; | ||||
| 	else | ||||
| #endif | ||||
| #ifdef HAVE_OPENMPT | ||||
| 	if (openmpt_mhandle) | ||||
| 		return MU_MOD_EX; | ||||
| #endif | ||||
| 	if (!music) | ||||
| 		return MU_NONE; | ||||
|  | @ -673,6 +730,9 @@ boolean I_SongPlaying(void) | |||
| 	return ( | ||||
| #ifdef HAVE_LIBGME | ||||
| 		(I_SongType() == MU_GME && gme) || | ||||
| #endif | ||||
| #ifdef HAVE_OPENMPT | ||||
| 		(I_SongType() == MU_MOD_EX && openmpt_mhandle) || | ||||
| #endif | ||||
| 		music != NULL | ||||
| 	); | ||||
|  | @ -699,8 +759,19 @@ boolean I_SetSongSpeed(float speed) | |||
| 		SDL_UnlockAudio(); | ||||
| 		return true; | ||||
| 	} | ||||
| 	else | ||||
| #endif | ||||
| #ifdef HAVE_OPENMPT | ||||
| 	if (openmpt_mhandle) | ||||
| 	{ | ||||
| 		char modspd[16]; | ||||
| 		sprintf(modspd, "%g", speed); | ||||
| 		openmpt_module_ctl_set(openmpt_mhandle, "play.tempo_factor", modspd); | ||||
| 		return true; | ||||
| 	} | ||||
| #else | ||||
| 	(void)speed; | ||||
| 	return false; | ||||
| #endif | ||||
| 	return false; | ||||
| } | ||||
|  | @ -741,6 +812,11 @@ UINT32 I_GetSongLength(void) | |||
| 		return max(length, 0); | ||||
| 	} | ||||
| 	else | ||||
| #endif | ||||
| #ifdef HAVE_OPENMPT | ||||
| 	if (openmpt_mhandle) | ||||
| 		return (UINT32)(openmpt_module_get_duration_seconds(openmpt_mhandle) * 1000.); | ||||
| 	else | ||||
| #endif | ||||
| 	if (!music || I_SongType() == MU_MOD || I_SongType() == MU_MID) | ||||
| 		return 0; | ||||
|  | @ -826,6 +902,16 @@ boolean I_SetSongPosition(UINT32 position) | |||
| 		// 	return true;
 | ||||
| 	} | ||||
| 	else | ||||
| #endif | ||||
| #ifdef HAVE_OPENMPT | ||||
| 	if (openmpt_mhandle) | ||||
| 	{ | ||||
| 		// This isn't 100% correct because we don't account for loop points because we can't get them.
 | ||||
| 		// But if you seek past end of song, OpenMPT seeks to 0. So adjust the position anyway.
 | ||||
| 		openmpt_module_set_position_seconds(openmpt_mhandle, (double)(get_adjusted_position(position)/1000.0L)); // returns new position
 | ||||
| 		return true; | ||||
| 	} | ||||
| 	else | ||||
| #endif | ||||
| 	if (!music || I_SongType() == MU_MID) | ||||
| 		return false; | ||||
|  | @ -843,7 +929,7 @@ boolean I_SetSongPosition(UINT32 position) | |||
| 
 | ||||
| 		Mix_RewindMusic(); // needed for mp3
 | ||||
| 		if(Mix_SetMusicPosition((float)(position/1000.0L)) == 0) | ||||
| 			music_bytes = position/1000.0L*44100.0L*4; //assume 44.1khz, 4-byte length (see I_GetSongPosition)
 | ||||
| 			music_bytes = (UINT32)(position/1000.0L*44100.0L*4); //assume 44.1khz, 4-byte length (see I_GetSongPosition)
 | ||||
| 		else | ||||
| 			// NOTE: This block fires on incorrect song format,
 | ||||
| 			// NOT if position input is greater than song length.
 | ||||
|  | @ -883,11 +969,19 @@ UINT32 I_GetSongPosition(void) | |||
| 		return max(position, 0); | ||||
| 	} | ||||
| 	else | ||||
| #endif | ||||
| #ifdef HAVE_OPENMPT | ||||
| 	if (openmpt_mhandle) | ||||
| 		// This will be incorrect if we adjust for length because we can't get loop points.
 | ||||
| 		// So return unadjusted. See note in SetMusicPosition: we adjust for that.
 | ||||
| 		return (UINT32)(openmpt_module_get_position_seconds(openmpt_mhandle)*1000.); | ||||
| 		//return get_adjusted_position((UINT32)(openmpt_module_get_position_seconds(openmpt_mhandle)*1000.));
 | ||||
| 	else | ||||
| #endif | ||||
| 	if (!music || I_SongType() == MU_MID) | ||||
| 		return 0; | ||||
| 	else | ||||
| 		return music_bytes/44100.0L*1000.0L/4; //assume 44.1khz
 | ||||
| 		return (UINT32)(music_bytes/44100.0L*1000.0L/4); //assume 44.1khz
 | ||||
| 		// 4 = byte length for 16-bit samples (AUDIO_S16SYS), stereo (2-channel)
 | ||||
| 		// This is hardcoded in I_StartupSound. Other formats for factor:
 | ||||
| 		// 8M: 1 | 8S: 2 | 16M: 2 | 16S: 4
 | ||||
|  | @ -912,6 +1006,9 @@ boolean I_LoadSong(char *data, size_t len) | |||
| 	if (music | ||||
| #ifdef HAVE_LIBGME | ||||
| 		|| gme | ||||
| #endif | ||||
| #ifdef HAVE_OPENMPT | ||||
| 		|| openmpt_mhandle | ||||
| #endif | ||||
| 	) | ||||
| 		I_UnloadSong(); | ||||
|  | @ -1026,6 +1123,40 @@ boolean I_LoadSong(char *data, size_t len) | |||
| 		return false; | ||||
| 	} | ||||
| 
 | ||||
| #ifdef HAVE_OPENMPT | ||||
| 	switch(Mix_GetMusicType(music)) | ||||
| 	{ | ||||
| 		case MUS_MODPLUG: | ||||
| 		case MUS_MOD: | ||||
| 			openmpt_mhandle = openmpt_module_create_from_memory2(data, len, NULL, NULL, NULL, NULL, NULL, NULL, NULL); | ||||
| 			if (!openmpt_mhandle) | ||||
| 			{ | ||||
| 				mod_err = openmpt_module_error_get_last(openmpt_mhandle); | ||||
| 				mod_err_str = openmpt_error_string(mod_err); | ||||
| 				CONS_Alert(CONS_ERROR, "openmpt_module_create_from_memory2: %s\n", mod_err_str); | ||||
| 				Mix_FreeMusic(music); | ||||
| 				music = NULL; | ||||
| 				return false; | ||||
| 			} | ||||
| 			else | ||||
| 			{ | ||||
| 				Mix_FreeMusic(music); | ||||
| 				music = NULL; | ||||
| 				return true; | ||||
| 			} | ||||
| 			break; | ||||
| 		case MUS_WAV: | ||||
| 		case MUS_MID: | ||||
| 		case MUS_OGG: | ||||
| 		case MUS_MP3: | ||||
| 		case MUS_FLAC: | ||||
| 			Mix_HookMusic(NULL, NULL); | ||||
| 			break; | ||||
| 		default: | ||||
| 			break; | ||||
| 	} | ||||
| #endif | ||||
| 
 | ||||
| 	// Find the OGG loop point.
 | ||||
| 	loop_point = 0.0f; | ||||
| 	song_length = 0.0f; | ||||
|  | @ -1070,6 +1201,13 @@ void I_UnloadSong(void) | |||
| 		gme_delete(gme); | ||||
| 		gme = NULL; | ||||
| 	} | ||||
| #endif | ||||
| #ifdef HAVE_OPENMPT | ||||
| 	if (openmpt_mhandle) | ||||
| 	{ | ||||
| 		openmpt_module_destroy(openmpt_mhandle); | ||||
| 		openmpt_mhandle = NULL; | ||||
| 	} | ||||
| #endif | ||||
| 	if (music) | ||||
| 	{ | ||||
|  | @ -1089,6 +1227,19 @@ boolean I_PlaySong(boolean looping) | |||
| 		return true; | ||||
| 	} | ||||
| 	else | ||||
| #endif | ||||
| #ifdef HAVE_OPENMPT | ||||
| 	if (openmpt_mhandle) | ||||
| 	{ | ||||
| 		openmpt_module_select_subsong(openmpt_mhandle, 0); | ||||
| 		openmpt_module_set_render_param(openmpt_mhandle, OPENMPT_MODULE_RENDER_INTERPOLATIONFILTER_LENGTH, cv_modfilter.value); | ||||
| 		if (looping) | ||||
| 			openmpt_module_set_repeat_count(openmpt_mhandle, -1); // Always repeat
 | ||||
| 		current_subsong = 0; | ||||
| 		Mix_HookMusic(mix_openmpt, openmpt_mhandle); | ||||
| 		return true; | ||||
| 	} | ||||
| 	else | ||||
| #endif | ||||
| 	if (!music) | ||||
| 		return false; | ||||
|  | @ -1130,6 +1281,13 @@ void I_StopSong(void) | |||
| 		Mix_HookMusic(NULL, NULL); | ||||
| 		current_track = -1; | ||||
| 	} | ||||
| #endif | ||||
| #ifdef HAVE_OPENMPT | ||||
| 	if (openmpt_mhandle) | ||||
| 	{ | ||||
| 		Mix_HookMusic(NULL, NULL); | ||||
| 		current_subsong = -1; | ||||
| 	} | ||||
| #endif | ||||
| 	if (music) | ||||
| 	{ | ||||
|  | @ -1191,15 +1349,13 @@ void I_SetMusicVolume(UINT8 volume) | |||
| boolean I_SetSongTrack(int track) | ||||
| { | ||||
| #ifdef HAVE_LIBGME | ||||
| 	if (current_track == track) | ||||
| 		return false; | ||||
| 
 | ||||
| 	// If the specified track is within the number of tracks playing, then change it
 | ||||
| 	if (gme) | ||||
| 	{ | ||||
| 		if (current_track == track) | ||||
| 			return false; | ||||
| 		SDL_LockAudio(); | ||||
| 		if (track >= 0 | ||||
| 			&& track < gme_track_count(gme)) | ||||
| 		if (track >= 0 && track < gme_track_count(gme)-1) | ||||
| 		{ | ||||
| 			gme_err_t gme_e = gme_start_track(gme, track); | ||||
| 			if (gme_e != NULL) | ||||
|  | @ -1216,8 +1372,24 @@ boolean I_SetSongTrack(int track) | |||
| 	} | ||||
| 	else | ||||
| #endif | ||||
| 	if (I_SongType() == MU_MOD) | ||||
| 		return !Mix_SetMusicPosition(track); | ||||
| #ifdef HAVE_OPENMPT | ||||
| 	if (openmpt_mhandle) | ||||
| 	{ | ||||
| 		if (current_subsong == track) | ||||
| 			return false; | ||||
| 		SDL_LockAudio(); | ||||
| 		if (track >= 0 && track < openmpt_module_get_num_subsongs(openmpt_mhandle)) | ||||
| 		{ | ||||
| 			openmpt_module_select_subsong(openmpt_mhandle, track); | ||||
| 			current_subsong = track; | ||||
| 			SDL_UnlockAudio(); | ||||
| 			return true; | ||||
| 		} | ||||
| 		SDL_UnlockAudio(); | ||||
| 
 | ||||
| 		return false; | ||||
| 	} | ||||
| #endif | ||||
| 	(void)track; | ||||
| 	return false; | ||||
| } | ||||
|  |  | |||
|  | @ -10,12 +10,24 @@ ifdef MINGW64 | |||
| 	HAVE_LIBGME=1 | ||||
| 	LIBGME_CFLAGS=-I../libs/gme/include | ||||
| 	LIBGME_LDFLAGS=-L../libs/gme/win64 -lgme | ||||
| 
 | ||||
| ifdef HAVE_OPENMPT | ||||
| 	LIBOPENMPT_CFLAGS?=-I../libs/libopenmpt/inc | ||||
| 	LIBOPENMPT_LDFLAGS?=-L../libs/libopenmpt/lib/x86_64/mingw -lopenmpt | ||||
| endif | ||||
| 
 | ||||
| 	SDL_CFLAGS?=-I../libs/SDL2/x86_64-w64-mingw32/include/SDL2 -I../libs/SDL2_mixer/x86_64-w64-mingw32/include/SDL2 -Dmain=SDL_main | ||||
| 	SDL_LDFLAGS?=-L../libs/SDL2/x86_64-w64-mingw32/lib -L../libs/SDL2_mixer/x86_64-w64-mingw32/lib -lmingw32 -lSDL2main -lSDL2 -mwindows | ||||
| else | ||||
| 	HAVE_LIBGME=1 | ||||
| 	LIBGME_CFLAGS=-I../libs/gme/include | ||||
| 	LIBGME_LDFLAGS=-L../libs/gme/win32 -lgme | ||||
| 
 | ||||
| ifdef HAVE_OPENMPT | ||||
| 	LIBOPENMPT_CFLAGS?=-I../libs/libopenmpt/inc | ||||
| 	LIBOPENMPT_LDFLAGS?=-L../libs/libopenmpt/lib/x86/mingw -lopenmpt | ||||
| endif | ||||
| 
 | ||||
| 	SDL_CFLAGS?=-I../libs/SDL2/i686-w64-mingw32/include/SDL2 -I../libs/SDL2_mixer/i686-w64-mingw32/include/SDL2 -Dmain=SDL_main | ||||
| 	SDL_LDFLAGS?=-L../libs/SDL2/i686-w64-mingw32/lib -L../libs/SDL2_mixer/i686-w64-mingw32/lib -lmingw32 -lSDL2main -lSDL2 -mwindows | ||||
| endif | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 Steel Titanium
						Steel Titanium