diff --git a/.gitignore b/.gitignore index f305706..bfd6623 100644 --- a/.gitignore +++ b/.gitignore @@ -13,4 +13,9 @@ # Harness output run/ -benchmark-launcher-cli-3.1.0-windows.zip \ No newline at end of file +benchmark-launcher-cli-3.1.0-windows.zip +flac-1.4.3-win/ +flac-1.4.3-win.zip + +# python +__pycache__/ \ No newline at end of file diff --git a/flac/README.md b/flac/README.md index 2fd8e36..ce97fb1 100644 --- a/flac/README.md +++ b/flac/README.md @@ -1,61 +1,17 @@ -# FurMark Test Harness +# FLAC Audio Encode + +Test which encodes Nine in Nails - The Slip in WAV form to [FLAC](https://xiph.org/flac/) + +> [FLAC](https://xiph.org/flac/) stands for Free Lossless Audio Codec, an audio format similar to MP3, but lossless, meaning that audio is compressed in FLAC without any loss in quality. + +This test tracks how long it takes to encode the song 30 times and the duration is recorded as the score in seconds. ## Prerequisites - Python 3.10+ -- FurMark installed and on path. -This harness expects that FurMark has been installed on the system using installer defaults. -> Note: Hopefully it will install itself in the future if not present. - -## Setup - - 1. Follow the setup instructions for the framework. If you have done so, all required python dependencies *should* be installed. - 2. Install FurMark from https://geeks3d.com/furmark/downloads/ - 1. Follow the installer's defaults. - -## Configuration - -Below is an example use of this harness as a test in a benchmark configuration. - -```yaml -... -... -tests: - - name: furmark - executable: "furmark.py" - process_name: "FurMark.exe" - output_dir: - - 'C:\Program Files (x86)\Geeks3D\Benchmarks\FurMark\furmark-gpu-monitoring.xml' - - 'C:\Program Files (x86)\Geeks3D\Benchmarks\FurMark\FurMark_0001.txt' - - 'C:\Program Files (x86)\Geeks3D\Benchmarks\FurMark\furmark-gpu-monitoring.csv' - args: - - "/nogui" - - "/nomenubar" - - "/noscore" - - "/width=640" - - "/height=480" - - "/msaa=4" - - "/run_mode=1" - - "/max_time=10000" - - "/log_temperature" - - "/disable_catalyst_warning" -``` - -__name__ : _(required)_ name of the test. This much match the name of a directory in the harness folder so the framework -can find the executable and any supplementary files. - -__executable__ : _(required)_ the entry point to the test harness. In this case a python script. - -__process_name__ : _(required)_ The process name that should be the target for FPS recording (ex: PresentMon). - -__output_dir__: _(optional)_ Directory containing files to aggregate copies of after a successful test run. If a directory path is -given, the contents are copied. - -__args__ : _(optional)_ list of arguments to be appended to the command to execute. All the arguments will be passed to -the executable when invoked by the framework. - -Arguments for this harness are the same -as [the documented CLI arguments](https://www.geeks3d.com/20081123/geeks3d-howto-know-furmarks-command-line-parameters/) -. +## Output +report.json +- `score`: the compression and decompression score from the test each in KiB/s +- `version`: version of FLAC used \ No newline at end of file diff --git a/flac/encode-flac.bat b/flac/encode-flac.bat index 68cad00..fdfc7d8 100644 --- a/flac/encode-flac.bat +++ b/flac/encode-flac.bat @@ -1,32 +1,4 @@ -echo "In Test!" -cd %1 -.\flac-1.4.0-win\Win64\flac.exe --best flac-1.4.0-win\Win64\pts-trondheim-3.wav -f -o output -.\flac-1.4.0-win\Win64\flac.exe --best flac-1.4.0-win\Win64\pts-trondheim-3.wav -f -o output -.\flac-1.4.0-win\Win64\flac.exe --best flac-1.4.0-win\Win64\pts-trondheim-3.wav -f -o output -.\flac-1.4.0-win\Win64\flac.exe --best flac-1.4.0-win\Win64\pts-trondheim-3.wav -f -o output -.\flac-1.4.0-win\Win64\flac.exe --best flac-1.4.0-win\Win64\pts-trondheim-3.wav -f -o output -.\flac-1.4.0-win\Win64\flac.exe --best flac-1.4.0-win\Win64\pts-trondheim-3.wav -f -o output -.\flac-1.4.0-win\Win64\flac.exe --best flac-1.4.0-win\Win64\pts-trondheim-3.wav -f -o output -.\flac-1.4.0-win\Win64\flac.exe --best flac-1.4.0-win\Win64\pts-trondheim-3.wav -f -o output -.\flac-1.4.0-win\Win64\flac.exe --best flac-1.4.0-win\Win64\pts-trondheim-3.wav -f -o output -.\flac-1.4.0-win\Win64\flac.exe --best flac-1.4.0-win\Win64\pts-trondheim-3.wav -f -o output -.\flac-1.4.0-win\Win64\flac.exe --best flac-1.4.0-win\Win64\pts-trondheim-3.wav -f -o output -.\flac-1.4.0-win\Win64\flac.exe --best flac-1.4.0-win\Win64\pts-trondheim-3.wav -f -o output -.\flac-1.4.0-win\Win64\flac.exe --best flac-1.4.0-win\Win64\pts-trondheim-3.wav -f -o output -.\flac-1.4.0-win\Win64\flac.exe --best flac-1.4.0-win\Win64\pts-trondheim-3.wav -f -o output -.\flac-1.4.0-win\Win64\flac.exe --best flac-1.4.0-win\Win64\pts-trondheim-3.wav -f -o output -.\flac-1.4.0-win\Win64\flac.exe --best flac-1.4.0-win\Win64\pts-trondheim-3.wav -f -o output -.\flac-1.4.0-win\Win64\flac.exe --best flac-1.4.0-win\Win64\pts-trondheim-3.wav -f -o output -.\flac-1.4.0-win\Win64\flac.exe --best flac-1.4.0-win\Win64\pts-trondheim-3.wav -f -o output -.\flac-1.4.0-win\Win64\flac.exe --best flac-1.4.0-win\Win64\pts-trondheim-3.wav -f -o output -.\flac-1.4.0-win\Win64\flac.exe --best flac-1.4.0-win\Win64\pts-trondheim-3.wav -f -o output -.\flac-1.4.0-win\Win64\flac.exe --best flac-1.4.0-win\Win64\pts-trondheim-3.wav -f -o output -.\flac-1.4.0-win\Win64\flac.exe --best flac-1.4.0-win\Win64\pts-trondheim-3.wav -f -o output -.\flac-1.4.0-win\Win64\flac.exe --best flac-1.4.0-win\Win64\pts-trondheim-3.wav -f -o output -.\flac-1.4.0-win\Win64\flac.exe --best flac-1.4.0-win\Win64\pts-trondheim-3.wav -f -o output -.\flac-1.4.0-win\Win64\flac.exe --best flac-1.4.0-win\Win64\pts-trondheim-3.wav -f -o output -.\flac-1.4.0-win\Win64\flac.exe --best flac-1.4.0-win\Win64\pts-trondheim-3.wav -f -o output -.\flac-1.4.0-win\Win64\flac.exe --best flac-1.4.0-win\Win64\pts-trondheim-3.wav -f -o output -.\flac-1.4.0-win\Win64\flac.exe --best flac-1.4.0-win\Win64\pts-trondheim-3.wav -f -o output -.\flac-1.4.0-win\Win64\flac.exe --best flac-1.4.0-win\Win64\pts-trondheim-3.wav -f -o output -.\flac-1.4.0-win\Win64\flac.exe --best flac-1.4.0-win\Win64\pts-trondheim-3.wav -f -o output +@echo off +for /l %%i in (1,1,30) do ( + .\flac-1.4.3-win\Win64\flac.exe --best nin-theslip.wav -f -o output +) \ No newline at end of file diff --git a/flac/flac-1.4.0-win/AUTHORS b/flac/flac-1.4.0-win/AUTHORS deleted file mode 100644 index 1af15ee..0000000 --- a/flac/flac-1.4.0-win/AUTHORS +++ /dev/null @@ -1,61 +0,0 @@ -/* FLAC - Free Lossless Audio Codec - * Copyright (C) 2001-2009 Josh Coalson - * Copyright (C) 2011-2022 Xiph.Org Foundation - * - * This file is part the FLAC project. FLAC is comprised of several - * components distributed under different licenses. The codec libraries - * are distributed under Xiph.Org's BSD-like license (see the file - * COPYING.Xiph in this distribution). All other programs, libraries, and - * plugins are distributed under the GPL (see COPYING.GPL). The documentation - * is distributed under the Gnu FDL (see COPYING.FDL). Each file in the - * FLAC distribution contains at the top the terms under which it may be - * distributed. - * - * Since this particular file is relevant to all components of FLAC, - * it may be distributed under the Xiph.Org license, which is the least - * restrictive of those mentioned above. See the file COPYING.Xiph in this - * distribution. - */ - -This file lists major contributors to the FLAC project. This list is not -exhaustive. For an exhaustive list, see CHANGELOG.md or the git log, for -example at https://github.com/xiph/flac/commits or -https://gitlab.xiph.org/xiph/flac/commits - -Original author: Josh Coalson -Maintainer 2012-2020: Erik de Castro Lopo - -Website : https://www.xiph.org/flac/ - -Other major contributors and their contributions: - -"lvqcl" -* Visual Studio build system. -* Optimisations in the encoder and decoder. - -"Janne Hyvärinen" -* Visual Studio build system. -* Unicode handling on Windows. - -"Andrey Astafiev" -* Russian translation of the HTML documentation - -"Miroslav Lichvar" -* IA-32 assembly versions of several libFLAC routines - -"Brady Patterson" -* AIFF file support, PPC assembly versions of libFLAC routines - -"Daisuke Shimamura" -* i18n support in the XMMS plugin - -"X-Fixer" -* Configuration system, tag editing, and file info in the Winamp2 plugin - -"Matt Zimmerman" -* Libtool/autoconf/automake make system, flac man page - -"Martijn van Beurden" -* Compression improvements -* Fuzzer improvements and fixes for fuzz findings -* Implementation of 32 bps encoder and decoder diff --git a/flac/flac-1.4.0-win/COPYING.FDL b/flac/flac-1.4.0-win/COPYING.FDL deleted file mode 100644 index 4a0fe1c..0000000 --- a/flac/flac-1.4.0-win/COPYING.FDL +++ /dev/null @@ -1,397 +0,0 @@ - GNU Free Documentation License - Version 1.2, November 2002 - - - Copyright (C) 2000,2001,2002 Free Software Foundation, Inc. - 51 Franklin St, 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. - - -0. PREAMBLE - -The purpose of this License is to make a manual, textbook, or other -functional and useful document "free" in the sense of freedom: to -assure everyone the effective freedom to copy and redistribute it, -with or without modifying it, either commercially or noncommercially. -Secondarily, this License preserves for the author and publisher a way -to get credit for their work, while not being considered responsible -for modifications made by others. - -This License is a kind of "copyleft", which means that derivative -works of the document must themselves be free in the same sense. It -complements the GNU General Public License, which is a copyleft -license designed for free software. - -We have designed this License in order to use it for manuals for free -software, because free software needs free documentation: a free -program should come with manuals providing the same freedoms that the -software does. But this License is not limited to software manuals; -it can be used for any textual work, regardless of subject matter or -whether it is published as a printed book. We recommend this License -principally for works whose purpose is instruction or reference. - - -1. APPLICABILITY AND DEFINITIONS - -This License applies to any manual or other work, in any medium, that -contains a notice placed by the copyright holder saying it can be -distributed under the terms of this License. Such a notice grants a -world-wide, royalty-free license, unlimited in duration, to use that -work under the conditions stated herein. The "Document", below, -refers to any such manual or work. Any member of the public is a -licensee, and is addressed as "you". You accept the license if you -copy, modify or distribute the work in a way requiring permission -under copyright law. - -A "Modified Version" of the Document means any work containing the -Document or a portion of it, either copied verbatim, or with -modifications and/or translated into another language. - -A "Secondary Section" is a named appendix or a front-matter section of -the Document that deals exclusively with the relationship of the -publishers or authors of the Document to the Document's overall subject -(or to related matters) and contains nothing that could fall directly -within that overall subject. (Thus, if the Document is in part a -textbook of mathematics, a Secondary Section may not explain any -mathematics.) The relationship could be a matter of historical -connection with the subject or with related matters, or of legal, -commercial, philosophical, ethical or political position regarding -them. - -The "Invariant Sections" are certain Secondary Sections whose titles -are designated, as being those of Invariant Sections, in the notice -that says that the Document is released under this License. If a -section does not fit the above definition of Secondary then it is not -allowed to be designated as Invariant. The Document may contain zero -Invariant Sections. If the Document does not identify any Invariant -Sections then there are none. - -The "Cover Texts" are certain short passages of text that are listed, -as Front-Cover Texts or Back-Cover Texts, in the notice that says that -the Document is released under this License. A Front-Cover Text may -be at most 5 words, and a Back-Cover Text may be at most 25 words. - -A "Transparent" copy of the Document means a machine-readable copy, -represented in a format whose specification is available to the -general public, that is suitable for revising the document -straightforwardly with generic text editors or (for images composed of -pixels) generic paint programs or (for drawings) some widely available -drawing editor, and that is suitable for input to text formatters or -for automatic translation to a variety of formats suitable for input -to text formatters. A copy made in an otherwise Transparent file -format whose markup, or absence of markup, has been arranged to thwart -or discourage subsequent modification by readers is not Transparent. -An image format is not Transparent if used for any substantial amount -of text. A copy that is not "Transparent" is called "Opaque". - -Examples of suitable formats for Transparent copies include plain -ASCII without markup, Texinfo input format, LaTeX input format, SGML -or XML using a publicly available DTD, and standard-conforming simple -HTML, PostScript or PDF designed for human modification. Examples of -transparent image formats include PNG, XCF and JPG. Opaque formats -include proprietary formats that can be read and edited only by -proprietary word processors, SGML or XML for which the DTD and/or -processing tools are not generally available, and the -machine-generated HTML, PostScript or PDF produced by some word -processors for output purposes only. - -The "Title Page" means, for a printed book, the title page itself, -plus such following pages as are needed to hold, legibly, the material -this License requires to appear in the title page. For works in -formats which do not have any title page as such, "Title Page" means -the text near the most prominent appearance of the work's title, -preceding the beginning of the body of the text. - -A section "Entitled XYZ" means a named subunit of the Document whose -title either is precisely XYZ or contains XYZ in parentheses following -text that translates XYZ in another language. (Here XYZ stands for a -specific section name mentioned below, such as "Acknowledgements", -"Dedications", "Endorsements", or "History".) To "Preserve the Title" -of such a section when you modify the Document means that it remains a -section "Entitled XYZ" according to this definition. - -The Document may include Warranty Disclaimers next to the notice which -states that this License applies to the Document. These Warranty -Disclaimers are considered to be included by reference in this -License, but only as regards disclaiming warranties: any other -implication that these Warranty Disclaimers may have is void and has -no effect on the meaning of this License. - - -2. VERBATIM COPYING - -You may copy and distribute the Document in any medium, either -commercially or noncommercially, provided that this License, the -copyright notices, and the license notice saying this License applies -to the Document are reproduced in all copies, and that you add no other -conditions whatsoever to those of this License. You may not use -technical measures to obstruct or control the reading or further -copying of the copies you make or distribute. However, you may accept -compensation in exchange for copies. If you distribute a large enough -number of copies you must also follow the conditions in section 3. - -You may also lend copies, under the same conditions stated above, and -you may publicly display copies. - - -3. COPYING IN QUANTITY - -If you publish printed copies (or copies in media that commonly have -printed covers) of the Document, numbering more than 100, and the -Document's license notice requires Cover Texts, you must enclose the -copies in covers that carry, clearly and legibly, all these Cover -Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on -the back cover. Both covers must also clearly and legibly identify -you as the publisher of these copies. The front cover must present -the full title with all words of the title equally prominent and -visible. You may add other material on the covers in addition. -Copying with changes limited to the covers, as long as they preserve -the title of the Document and satisfy these conditions, can be treated -as verbatim copying in other respects. - -If the required texts for either cover are too voluminous to fit -legibly, you should put the first ones listed (as many as fit -reasonably) on the actual cover, and continue the rest onto adjacent -pages. - -If you publish or distribute Opaque copies of the Document numbering -more than 100, you must either include a machine-readable Transparent -copy along with each Opaque copy, or state in or with each Opaque copy -a computer-network location from which the general network-using -public has access to download using public-standard network protocols -a complete Transparent copy of the Document, free of added material. -If you use the latter option, you must take reasonably prudent steps, -when you begin distribution of Opaque copies in quantity, to ensure -that this Transparent copy will remain thus accessible at the stated -location until at least one year after the last time you distribute an -Opaque copy (directly or through your agents or retailers) of that -edition to the public. - -It is requested, but not required, that you contact the authors of the -Document well before redistributing any large number of copies, to give -them a chance to provide you with an updated version of the Document. - - -4. MODIFICATIONS - -You may copy and distribute a Modified Version of the Document under -the conditions of sections 2 and 3 above, provided that you release -the Modified Version under precisely this License, with the Modified -Version filling the role of the Document, thus licensing distribution -and modification of the Modified Version to whoever possesses a copy -of it. In addition, you must do these things in the Modified Version: - -A. Use in the Title Page (and on the covers, if any) a title distinct - from that of the Document, and from those of previous versions - (which should, if there were any, be listed in the History section - of the Document). You may use the same title as a previous version - if the original publisher of that version gives permission. -B. List on the Title Page, as authors, one or more persons or entities - responsible for authorship of the modifications in the Modified - Version, together with at least five of the principal authors of the - Document (all of its principal authors, if it has fewer than five), - unless they release you from this requirement. -C. State on the Title page the name of the publisher of the - Modified Version, as the publisher. -D. Preserve all the copyright notices of the Document. -E. Add an appropriate copyright notice for your modifications - adjacent to the other copyright notices. -F. Include, immediately after the copyright notices, a license notice - giving the public permission to use the Modified Version under the - terms of this License, in the form shown in the Addendum below. -G. Preserve in that license notice the full lists of Invariant Sections - and required Cover Texts given in the Document's license notice. -H. Include an unaltered copy of this License. -I. Preserve the section Entitled "History", Preserve its Title, and add - to it an item stating at least the title, year, new authors, and - publisher of the Modified Version as given on the Title Page. If - there is no section Entitled "History" in the Document, create one - stating the title, year, authors, and publisher of the Document as - given on its Title Page, then add an item describing the Modified - Version as stated in the previous sentence. -J. Preserve the network location, if any, given in the Document for - public access to a Transparent copy of the Document, and likewise - the network locations given in the Document for previous versions - it was based on. These may be placed in the "History" section. - You may omit a network location for a work that was published at - least four years before the Document itself, or if the original - publisher of the version it refers to gives permission. -K. For any section Entitled "Acknowledgements" or "Dedications", - Preserve the Title of the section, and preserve in the section all - the substance and tone of each of the contributor acknowledgements - and/or dedications given therein. -L. Preserve all the Invariant Sections of the Document, - unaltered in their text and in their titles. Section numbers - or the equivalent are not considered part of the section titles. -M. Delete any section Entitled "Endorsements". Such a section - may not be included in the Modified Version. -N. Do not retitle any existing section to be Entitled "Endorsements" - or to conflict in title with any Invariant Section. -O. Preserve any Warranty Disclaimers. - -If the Modified Version includes new front-matter sections or -appendices that qualify as Secondary Sections and contain no material -copied from the Document, you may at your option designate some or all -of these sections as invariant. To do this, add their titles to the -list of Invariant Sections in the Modified Version's license notice. -These titles must be distinct from any other section titles. - -You may add a section Entitled "Endorsements", provided it contains -nothing but endorsements of your Modified Version by various -parties--for example, statements of peer review or that the text has -been approved by an organization as the authoritative definition of a -standard. - -You may add a passage of up to five words as a Front-Cover Text, and a -passage of up to 25 words as a Back-Cover Text, to the end of the list -of Cover Texts in the Modified Version. Only one passage of -Front-Cover Text and one of Back-Cover Text may be added by (or -through arrangements made by) any one entity. If the Document already -includes a cover text for the same cover, previously added by you or -by arrangement made by the same entity you are acting on behalf of, -you may not add another; but you may replace the old one, on explicit -permission from the previous publisher that added the old one. - -The author(s) and publisher(s) of the Document do not by this License -give permission to use their names for publicity for or to assert or -imply endorsement of any Modified Version. - - -5. COMBINING DOCUMENTS - -You may combine the Document with other documents released under this -License, under the terms defined in section 4 above for modified -versions, provided that you include in the combination all of the -Invariant Sections of all of the original documents, unmodified, and -list them all as Invariant Sections of your combined work in its -license notice, and that you preserve all their Warranty Disclaimers. - -The combined work need only contain one copy of this License, and -multiple identical Invariant Sections may be replaced with a single -copy. If there are multiple Invariant Sections with the same name but -different contents, make the title of each such section unique by -adding at the end of it, in parentheses, the name of the original -author or publisher of that section if known, or else a unique number. -Make the same adjustment to the section titles in the list of -Invariant Sections in the license notice of the combined work. - -In the combination, you must combine any sections Entitled "History" -in the various original documents, forming one section Entitled -"History"; likewise combine any sections Entitled "Acknowledgements", -and any sections Entitled "Dedications". You must delete all sections -Entitled "Endorsements". - - -6. COLLECTIONS OF DOCUMENTS - -You may make a collection consisting of the Document and other documents -released under this License, and replace the individual copies of this -License in the various documents with a single copy that is included in -the collection, provided that you follow the rules of this License for -verbatim copying of each of the documents in all other respects. - -You may extract a single document from such a collection, and distribute -it individually under this License, provided you insert a copy of this -License into the extracted document, and follow this License in all -other respects regarding verbatim copying of that document. - - -7. AGGREGATION WITH INDEPENDENT WORKS - -A compilation of the Document or its derivatives with other separate -and independent documents or works, in or on a volume of a storage or -distribution medium, is called an "aggregate" if the copyright -resulting from the compilation is not used to limit the legal rights -of the compilation's users beyond what the individual works permit. -When the Document is included in an aggregate, this License does not -apply to the other works in the aggregate which are not themselves -derivative works of the Document. - -If the Cover Text requirement of section 3 is applicable to these -copies of the Document, then if the Document is less than one half of -the entire aggregate, the Document's Cover Texts may be placed on -covers that bracket the Document within the aggregate, or the -electronic equivalent of covers if the Document is in electronic form. -Otherwise they must appear on printed covers that bracket the whole -aggregate. - - -8. TRANSLATION - -Translation is considered a kind of modification, so you may -distribute translations of the Document under the terms of section 4. -Replacing Invariant Sections with translations requires special -permission from their copyright holders, but you may include -translations of some or all Invariant Sections in addition to the -original versions of these Invariant Sections. You may include a -translation of this License, and all the license notices in the -Document, and any Warranty Disclaimers, provided that you also include -the original English version of this License and the original versions -of those notices and disclaimers. In case of a disagreement between -the translation and the original version of this License or a notice -or disclaimer, the original version will prevail. - -If a section in the Document is Entitled "Acknowledgements", -"Dedications", or "History", the requirement (section 4) to Preserve -its Title (section 1) will typically require changing the actual -title. - - -9. TERMINATION - -You may not copy, modify, sublicense, or distribute the Document except -as expressly provided for under this License. Any other attempt to -copy, modify, sublicense or distribute the Document 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. - - -10. FUTURE REVISIONS OF THIS LICENSE - -The Free Software Foundation may publish new, revised versions -of the GNU Free Documentation 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. See -http://www.gnu.org/copyleft/. - -Each version of the License is given a distinguishing version number. -If the Document specifies that a particular numbered version of this -License "or any later version" applies to it, you have the option of -following the terms and conditions either of that specified version or -of any later version that has been published (not as a draft) by the -Free Software Foundation. If the Document does not specify a version -number of this License, you may choose any version ever published (not -as a draft) by the Free Software Foundation. - - -ADDENDUM: How to use this License for your documents - -To use this License in a document you have written, include a copy of -the License in the document and put the following copyright and -license notices just after the title page: - - Copyright (c) YEAR YOUR NAME. - Permission is granted to copy, distribute and/or modify this document - under the terms of the GNU Free Documentation License, Version 1.2 - or any later version published by the Free Software Foundation; - with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. - A copy of the license is included in the section entitled "GNU - Free Documentation License". - -If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, -replace the "with...Texts." line with this: - - with the Invariant Sections being LIST THEIR TITLES, with the - Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST. - -If you have Invariant Sections without Cover Texts, or some other -combination of the three, merge those two alternatives to suit the -situation. - -If your document contains nontrivial examples of program code, we -recommend releasing these examples in parallel under your choice of -free software license, such as the GNU General Public License, -to permit their use in free software. diff --git a/flac/flac-1.4.0-win/COPYING.GPL b/flac/flac-1.4.0-win/COPYING.GPL deleted file mode 100644 index d159169..0000000 --- a/flac/flac-1.4.0-win/COPYING.GPL +++ /dev/null @@ -1,339 +0,0 @@ - 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 - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - , 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. diff --git a/flac/flac-1.4.0-win/COPYING.LGPL b/flac/flac-1.4.0-win/COPYING.LGPL deleted file mode 100644 index 5ab7695..0000000 --- a/flac/flac-1.4.0-win/COPYING.LGPL +++ /dev/null @@ -1,504 +0,0 @@ - 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 - - How to Apply These Terms to Your New Libraries - - If you develop a new library, and you want it to be of the greatest -possible use to the public, we recommend making it free software that -everyone can redistribute and change. You can do so by permitting -redistribution under these terms (or, alternatively, under the terms of the -ordinary General Public License). - - To apply these terms, attach the following notices to the library. It is -safest to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least the -"copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - -Also add information on how to contact you by electronic and paper mail. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the library, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the - library `Frob' (a library for tweaking knobs) written by James Random Hacker. - - , 1 April 1990 - Ty Coon, President of Vice - -That's all there is to it! - - diff --git a/flac/flac-1.4.0-win/COPYING.Xiph b/flac/flac-1.4.0-win/COPYING.Xiph deleted file mode 100644 index edd24f7..0000000 --- a/flac/flac-1.4.0-win/COPYING.Xiph +++ /dev/null @@ -1,29 +0,0 @@ -Copyright (C) 2000-2009 Josh Coalson -Copyright (C) 2011-2022 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. diff --git a/flac/flac-1.4.0-win/README-for-the-project.md b/flac/flac-1.4.0-win/README-for-the-project.md deleted file mode 100644 index 1c61643..0000000 --- a/flac/flac-1.4.0-win/README-for-the-project.md +++ /dev/null @@ -1,279 +0,0 @@ - - -# Free Lossless Audio Codec (FLAC) - -FLAC is open source software that can reduce the amount of storage space -needed to store digital audio signals without needing to remove -information in doing so. - -The files read and produced by this software are called FLAC files. As -these files (which follow the [FLAC format](https://xiph.org/flac/format.html)) -can be read from and written to by other software as well, this software -is often referred to as the FLAC reference implementation. - -FLAC has been developed by volunteers. If you want to help out, see -CONTRIBUTING.md for more information. - -## Components - -FLAC is comprised of - * libFLAC, a library which implements reference encoders and - decoders for native FLAC and Ogg FLAC, and a metadata interface - * libFLAC++, a C++ object wrapper library around libFLAC - * `flac`, a command-line program for encoding and decoding files - * `metaflac`, a command-line program for viewing and editing FLAC - metadata - * player plugin for XMMS - * user and API documentation - -The libraries (libFLAC, libFLAC++) are licensed under Xiph.org's -BSD-like license (see COPYING.Xiph). All other programs and plugins are -licensed under the GNU General Public License (see COPYING.GPL). The -documentation is licensed under the GNU Free Documentation License -(see COPYING.FDL). - -## Documentation - -For documentation of the `flac` and `metaflac` command line tools, see -the directory man, which contains the files flac.md and metaflac.md - -The API documentation is in html and is generated by Doxygen. It can be -found in the directory doc/html/api. It is included in a release tarball -and must be build with Doxygen when the source is taken directly from -git. - -The directory examples contains example source code on using libFLAC and -libFLAC++. - -Documentation concerning the FLAC format itself (which can be used to -create software reading and writing FLAC software independent from -libFLAC) was included in previous releases, but can now be found on -https://datatracker.ietf.org/doc/draft-ietf-cellar-flac/ Additionally -a set of files for conformance testing called the FLAC decoder testbench -can be found at https://github.com/ietf-wg-cellar/flac-test-files - -If you have questions about FLAC that this document does not answer, -please submit them at the following tracker so this document can be -improved: - -https://github.com/xiph/flac/issues - -## Building FLAC - -All components of the FLAC project can be build with a variety of -compilers (including GCC, Clang, Visual Studio, Intel C++ Compiler) on -many architectures (inluding x86, x86_64, ARMv7, ARMv8 and PowerPC) -for many different operating systems. - -To do this, FLAC provides two build systems: one using GNU's autotools -and one with CMake. Both differ slighly in configuration options, but -should be considered equivalent for most use cases. - -FLAC used to provide files specifically for building with Visual Studio, -but these have been removed in favor of using CMake. - -## Building with CMake - -CMake is a cross-platform build system. FLAC can be built on Windows, -Linux, Mac OS X using CMake. - -You can use either CMake's CLI or GUI. We recommend you to have a -separate build folder outside the repository in order to not spoil it -with generated files. It is possible however to do a so-called in-tree -build, in that case /path/to/flac-build in the following examples is -equal to /path/to/flac-source. - -### CMake CLI - -Go to your build folder and run something like this: - -``` -/path/to/flac-build$ cmake /path/to/flac-source -``` - -or e.g. in Windows shell - -``` -C:\path\to\flac-build> cmake \path\to\flac-source -``` - -(provided that cmake is in your %PATH% variable) - -That will generate build scripts for the default build system (e.g. -Makefiles for UNIX). After that you start build with a command like -this: - -``` -/path/to/flac-build$ make -``` - -And afterwards you can run tests or install the built libraries and -headers - -``` -/path/to/flac-build$ make test -/path/to/flac-build$ make install -``` - -If you want use a build system other than default add -G flag to cmake, -e.g.: - -``` -/path/to/flac-build$ cmake /path/to/flac-source -GNinja -/path/to/flac-build$ ninja -``` - -or: - -``` -/path/to/flac-build$ cmake /path/to/flac-source -GXcode -``` - -Use cmake --help to see the list of available generators. - -By default CMake will search for OGG. If CMake fails to find it you can -help CMake by specifying the exact path: - -``` -/path/to/flac-build$ cmake /path/to/flac-source -DOGG_ROOT=/path/to/ogg -``` - -If you would like CMake to build OGG alongside FLAC, you can place the -ogg sources directly in the flac source directory as a subdirectory with -the name ogg, for example: - -``` -/path/to/flac-source/ogg -``` - -If you don't want to build flac with OGG support you can tell CMake not -to look for OGG: - -``` -/path/to/flac-build$ cmake /path/to/flac-source -DWITH_OGG=OFF -``` - -Other FLAC's options (e.g. building C++ lib or docs) can also be put to -cmake through -D flag. If you want to know what options are available, -use -LH: - -``` -/path/to/flac-build$ cmake /path/to/flac-source -LH -``` - -### CMake GUI (for Visual Studio) -It is likely that you would prefer to use the CMake GUI if you use -Visual Studio to build FLAC. It's in essence the same process as -building using CLI. - -Open cmake-gui. In the window select a source directory (the -repository's root), a build directory (some other directory outside the -repository). Then press button "Configure". CMake will ask you which -build system you prefer. Choose that version of Visual Studio which you -have on your system, choose whether you want to build for Win32 or x64. -Press OK. - -After CMake finishes you can change the configuration to your liking and -if you change anything, run Configure again. With the "Generate" button, -CMake creates Visual Studio files, which can be opened from Visual -Studio. With the button "Open Project" CMake will launch Visual Studio -and open the generated solution. You can use the project files as usual -but remember that they were generated by CMake. That means that your -changes (e.g. some additional compile flags) will be lost when you run -CMake next time. - -CMake searches by default for OGG on your system and returns an error -if it cannot find it. If you want to build OGG alongside FLAC, you can -download the OGG sources and extract them in a subdirectory of the FLAC -source directory with the name ogg (i.e. /path/to/flac-source/ogg) -before running CMake. If you don't want to build FLAC with OGG support, -untick the box following WITH_OGG flag in the list of variables in -cmake-gui window and run "Configure" again. - -If CMake fails to find MSVC compiler then running cmake-gui from MS -Developer comand prompt should help. - -## Building with GNU autotools - -FLAC uses autoconf and libtool for configuring and building. To -configure a build, open a commmand line/terminal and run `./configure` -You can provide options to this command, which are listed by running -`./configure --help`. - -In case the configure script is not present (for example when building -from git and not from a release tarball), it can be generated by running -`./autogen.sh`. This may require a libtool development package though. - -After configuration, build with `make`, verify the build with -`make check` and install with `make install`. Installation might require -administrator priviledged, i.e. `sudo make install`. - -The 'make check' step is optional; omit it to skip all the tests, which -can take about an hour to complete. Even though it will stop with an -explicit message on any failure, it does print out a lot of stuff so you -might want to capture the output to a file if you're having a problem. -Also, don't run 'make check' as root because it confuses some of the -tests. - -Summarizing: - -``` -./configure -make && make check -sudo make install -``` - -## Note to embedded developers - -libFLAC has grown larger over time as more functionality has been -included, but much of it may be unnecessary for a particular embedded -implementation. Unused parts may be pruned by some simple editing of -configure.ac and src/libFLAC/Makefile.am; the following dependency -graph shows which modules may be pruned without breaking things -further down: - -``` -metadata.h - stream_decoder.h - format.h - -stream_encoder.h - stream_decoder.h - format.h - -stream_decoder.h - format.h -``` - -In other words, for pure decoding applications, both the stream encoder -and metadata editing interfaces can be safely removed. Note that this -is specific to building the libraries for embedded use. The command line -tools do not provide such compartmentalization, and require a complete -libFLAC build to function. - -There is a section dedicated to embedded use in the libFLAC API -HTML documentation (see doc/html/api/index.html). - -Also, there are several places in the libFLAC code with comments marked -with "OPT:" where a #define can be changed to enable code that might be -faster on a specific platform. Experimenting with these can yield -faster binaries. diff --git a/flac/flac-1.4.0-win/README-for-these-builds.txt b/flac/flac-1.4.0-win/README-for-these-builds.txt deleted file mode 100644 index 4c8e27a..0000000 --- a/flac/flac-1.4.0-win/README-for-these-builds.txt +++ /dev/null @@ -1,23 +0,0 @@ -This package contains Windows builds of FLAC 1.4.0 - -The directories Win32 and Win64 contain 32-bit and 64-bit builds -respectively. Each directory contains flac.exe, metaflac.exe, -libFLAC.dll and libFLAC++.dll. The executables depend on libFLAC.dll -but not on libFLAC++.dll. If you just need the executables to work, -you can delete libFLAC++.dll - -All files should work with all versions of Windows going back to (and -including) Windows XP, as long as the CPU has at least SSE2. - -Manuals for the flac and metaflac executables can be found in the -manuals directory. The .md files can be opened within any text editor -such as notepad. - -README-for-the-project.md explains what the FLAC project is about, and -which parts are licensed under which license. The four COPYING files -contain the licenses mentioned. The AUTHORS file is a text file -crediting various contributors to the FLAC projects. - -Note that the README-for-the-project.md file comes directly from the -source code and refers to a few files and documents not included in -this package. \ No newline at end of file diff --git a/flac/flac-1.4.0-win/Win32/flac.exe b/flac/flac-1.4.0-win/Win32/flac.exe deleted file mode 100644 index 910bf45..0000000 Binary files a/flac/flac-1.4.0-win/Win32/flac.exe and /dev/null differ diff --git a/flac/flac-1.4.0-win/Win32/libFLAC++.dll b/flac/flac-1.4.0-win/Win32/libFLAC++.dll deleted file mode 100644 index 156cabc..0000000 Binary files a/flac/flac-1.4.0-win/Win32/libFLAC++.dll and /dev/null differ diff --git a/flac/flac-1.4.0-win/Win32/libFLAC.dll b/flac/flac-1.4.0-win/Win32/libFLAC.dll deleted file mode 100644 index fee88c9..0000000 Binary files a/flac/flac-1.4.0-win/Win32/libFLAC.dll and /dev/null differ diff --git a/flac/flac-1.4.0-win/Win32/metaflac.exe b/flac/flac-1.4.0-win/Win32/metaflac.exe deleted file mode 100644 index ad34b1b..0000000 Binary files a/flac/flac-1.4.0-win/Win32/metaflac.exe and /dev/null differ diff --git a/flac/flac-1.4.0-win/Win64/flac.exe b/flac/flac-1.4.0-win/Win64/flac.exe deleted file mode 100644 index 941af0d..0000000 Binary files a/flac/flac-1.4.0-win/Win64/flac.exe and /dev/null differ diff --git a/flac/flac-1.4.0-win/Win64/libFLAC++.dll b/flac/flac-1.4.0-win/Win64/libFLAC++.dll deleted file mode 100644 index e271240..0000000 Binary files a/flac/flac-1.4.0-win/Win64/libFLAC++.dll and /dev/null differ diff --git a/flac/flac-1.4.0-win/Win64/libFLAC.dll b/flac/flac-1.4.0-win/Win64/libFLAC.dll deleted file mode 100644 index 555e0cc..0000000 Binary files a/flac/flac-1.4.0-win/Win64/libFLAC.dll and /dev/null differ diff --git a/flac/flac-1.4.0-win/Win64/metaflac.exe b/flac/flac-1.4.0-win/Win64/metaflac.exe deleted file mode 100644 index 36649fd..0000000 Binary files a/flac/flac-1.4.0-win/Win64/metaflac.exe and /dev/null differ diff --git a/flac/flac-1.4.0-win/Win64/wav-license.txt b/flac/flac-1.4.0-win/Win64/wav-license.txt deleted file mode 100644 index 740a3a9..0000000 --- a/flac/flac-1.4.0-win/Win64/wav-license.txt +++ /dev/null @@ -1,3 +0,0 @@ -pts-trondheim-3.wav is a file (Track 10) from the Nine Inch Nails "The Slip" CD, which is licensed under the Creative Commons Attribution 3.0 License. - -More information: http://dl.nin.com/theslip/signup diff --git a/flac/flac-1.4.0-win/manuals/flac.md b/flac/flac-1.4.0-win/manuals/flac.md deleted file mode 100644 index f7ca752..0000000 --- a/flac/flac-1.4.0-win/manuals/flac.md +++ /dev/null @@ -1,756 +0,0 @@ -% flac(1) Version 1.4.0 | Free Lossless Audio Codec conversion tool - -# NAME - -flac - Free Lossless Audio Codec - -# SYNOPSIS - -**flac** \[ *OPTIONS* \] \[ *infile.wav* \| *infile.rf64* \| -*infile.aiff* \| *infile.raw* \| *infile.flac* \| *infile.oga* \| -*infile.ogg* \| **-** *...* \] - -**flac** \[ **-d** \| **\--decode** \| **-t** \| **\--test** \| **-a** \| -**\--analyze** \] \[ *OPTIONS* \] \[ *infile.flac* \| *infile.oga* \| -*infile.ogg* \| **-** *...* \] - -# DESCRIPTION - -**flac** is a command-line tool for encoding, decoding, testing and -analyzing FLAC streams. - -# GENERAL USAGE - -**flac** supports as input RIFF WAVE, Wave64, RF64, AIFF, FLAC or Ogg -FLAC format, or raw interleaved samples. The decoder currently can output -to RIFF WAVE, Wave64, RF64, or AIFF format, or raw interleaved samples. -flac only supports linear PCM samples (in other words, no A-LAW, uLAW, -etc.), and the input must be between 4 and 32 bits per sample. - -flac assumes that files ending in ".wav" or that have the RIFF WAVE -header present are WAVE files, files ending in ".w64" or have the Wave64 -header present are Wave64 files, files ending in ".rf64" or have the -RF64 header present are RF64 files, files ending in ".aif" or ".aiff" or -have the AIFF header present are AIFF files, files ending in ".flac" -or have the FLAC header present are FLAC files and files ending in ".oga" -or ".ogg" or have the Ogg FLAC header present are Ogg FLAC files. - -Other than this, flac makes no assumptions about file extensions, though -the convention is that FLAC files have the extension ".flac" -(or ".fla" on ancient "8.3" file systems like FAT-16). - -Before going into the full command-line description, a few other things -help to sort it out: -1. flac encodes by default, so you must use -d to decode -2. the options -0 .. -8 (or --fast and --best) that control the - compression level actually are just synonyms for different groups of - specific encoding options (described later) and you can get the same - effect by using the same options. When specific options are specified - they take priority over the compression level no matter the order -3. flac behaves similarly to gzip in the way it handles input and output - files -4. the order in which options are specified is generally not important - -Skip to the examples below for examples of some common tasks. - -flac will be invoked one of four ways, depending on whether you are -encoding, decoding, testing, or analyzing. Encoding is the default -invocation, but can be switch to decoding with **-d**, analysis with -**-a** or testing with **-t**. Depending on which way is chosen, -encoding, decoding, analysis or testing options can be used, see section -OPTIONS for details. General options can be used for all. - -If only one inputfile is specified, it may be "-" for stdin. When stdin -is used as input, flac will write to stdout. Otherwise flac will perform -the desired operation on each input file to similarly named output files -(meaning for encoding, the extension will be replaced with ".flac", or -appended with ".flac" if the input file has no extension, and for -decoding, the extension will be ".wav" for WAVE output and ".raw" for raw -output). The original file is not deleted unless --delete-input-file is -specified. - -If you are encoding/decoding from stdin to a file, you should use the -o -option like so: - - flac [options] -o outputfile - flac -d [options] -o outputfile - -which are better than: - - flac [options] > outputfile - flac -d [options] > outputfile - -since the former allows flac to seek backwards to write the STREAMINFO or -RIFF WAVE header contents when necessary. - -Also, you can force output data to go to stdout using -c. - -To encode or decode files that start with a dash, use -- to signal the -end of options, to keep the filenames themselves from being treated as -options: - - flac -V -- -01-filename.wav - -The encoding options affect the compression ratio and encoding speed. The -format options are used to tell flac the arrangement of samples if the -input file (or output file when decoding) is a raw file. If it is a RIFF -WAVE, Wave64, RF64, or AIFF file the format options are not needed since -they are read from the file's header. - -In test mode, flac acts just like in decode mode, except no output file -is written. Both decode and test modes detect errors in the stream, but -they also detect when the MD5 signature of the decoded audio does not -match the stored MD5 signature, even when the bitstream is valid. - -flac can also re-encode FLAC files. In other words, you can specify a -FLAC or Ogg FLAC file as an input to the encoder and it will decoder it -and re-encode it according to the options you specify. It will also -preserve all the metadata unless you override it with other options (e.g. -specifying new tags, seekpoints, cuesheet, padding, etc.). - -flac has been tuned so that the default settings yield a good speed vs. -compression tradeoff for many kinds of input. However, if you are looking -to maximize the compression rate or speed, or want to use the full power -of FLAC's metadata system, see the page titled 'About the FLAC Format' on -the FLAC website. - -# EXAMPLES - -Some common **encoding** tasks using flac: - -`flac abc.wav` -: Encode abc.wav to abc.flac using the default compression setting. abc.wav is not deleted. - -`flac --delete-input-file abc.wav` -: Like above, except abc.wav is deleted if there were no errors. - -`flac --delete-input-file -w abc.wav` -: Like above, except abc.wav is deleted if there were no errors or warnings. - -`flac --best abc.wav` -: Encode abc.wav to abc.flac using the highest compression setting. - -`flac --verify abc.wav` -: Encode abc.wav to abc.flac and internally decode abc.flac to make sure it matches abc.wav. - -`flac -o my.flac abc.wav` -: Encode abc.wav to my.flac. - -`flac -T "TITLE=Bohemian Rhapsody" -T "ARTIST=Queen" abc.wav` -: Encode abc.wav and add some tags at the same time to abc.flac. - -`flac *.wav` -: Encode all .wav files in the current directory. - -`flac abc.aiff` -: Encode abc.aiff to abc.flac. - -`flac abc.rf64` -: Encode abc.rf64 to abc.flac. - -`flac abc.w64` -: Encode abc.w64 to abc.flac. - -`flac abc.flac --force` -: This one's a little tricky: notice that flac is in encode mode by - default (you have to specify -d to decode) so this command actually - recompresses abc.flac back to abc.flac. --force is needed to make - sure you really want to overwrite abc.flac with a new version. Why - would you want to do this? It allows you to recompress an existing - FLAC file with (usually) higher compression options or a newer - version of FLAC and preserve all the metadata like tags too. - -Some common **decoding** tasks using flac: - -`flac -d abc.flac` -: Decode abc.flac to abc.wav. abc.flac is not deleted. NOTE: Without - -d it means re-encode abc.flac to abc.flac (see above). - -`flac -d --force-aiff-format abc.flac` -`flac -d -o abc.aiff abc.flac` -: Two different ways of decoding abc.flac to abc.aiff (AIFF format). - abc.flac is not deleted. - -`flac -d --force-rf64-format abc.flac` -`flac -d -o abc.rf64 abc.flac` -: Two different ways of decoding abc.flac to abc.rf64 (RF64 format). - abc.flac is not deleted. - -`flac -d --force-wave64-format abc.flac` -`flac -d -o abc.w64 abc.flac` -: Two different ways of decoding abc.flac to abc.w64 (Wave64 format). - abc.flac is not deleted. - -`flac -d -F abc.flac` -: Decode abc.flac to abc.wav and don't abort if errors are found - (useful for recovering as much as possible from corrupted files). - - -# OPTIONS - -A summary of options is included below. For a complete description, see -the HTML documentation. - -## GENERAL OPTIONS - -**-v, \--version** -: Show the flac version number - -**-h, \--help** -: Show basic usage and a list of all options - -**-H, \--explain** -: Show detailed explanation of usage and all options - -**-d, \--decode** -: Decode (the default behavior is to encode) - -**-t, \--test** -: Test a flac encoded file (same as -d except no decoded file is written) - -**-a, \--analyze** -: Analyze a FLAC encoded file (same as -d except an analysis file is - written) - -**-c, \--stdout** -: Write output to stdout - -**-s, \--silent** -: Silent mode (do not write runtime encode/decode statistics to stderr) - -**\--totally-silent** -: Do not print anything of any kind, including warnings or errors. The - exit code will be the only way to determine successful completion. - -**\--no-utf8-convert** -: Do not convert tags from local charset to UTF-8. This is useful for - scripts, and setting tags in situations where the locale is wrong. - This option must appear before any tag options! - -**-w, \--warnings-as-errors** -: Treat all warnings as errors (which cause flac to terminate with a - non-zero exit code). - -**-f, \--force** -: Force overwriting of output files. By default, flac warns that the - output file already exists and continues to the next file. - -**-o** *filename***, \--output-name=***filename* -: Force the output file name (usually flac just changes the extension). - May only be used when encoding a single file. May not be used in - conjunction with \--output-prefix. - -**\--output-prefix=***string* -: Prefix each output file name with the given string. This can be - useful for encoding or decoding files to a different directory. Make - sure if your string is a path name that it ends with a trailing \`/' - (slash). - -**\--delete-input-file** -: Automatically delete the input file after a successful encode or - decode. If there was an error (including a verify error) the input - file is left intact. - -**\--preserve-modtime** -: Output files have their timestamps/permissions set to match those of - their inputs (this is default). Use \--no-preserve-modtime to make - output files have the current time and default permissions. - -**\--keep-foreign-metadata** -: If encoding, save WAVE, RF64, or AIFF non-audio chunks in FLAC - metadata. If decoding, restore any saved non-audio chunks from FLAC - metadata when writing the decoded file. Foreign metadata cannot be - transcoded, e.g. WAVE chunks saved in a FLAC file cannot be restored - when decoding to AIFF. Input and output must be regular files (not - stdin or stdout). - -**\--keep-foreign-metadata-if-present** -: Like \--keep-foreign-metadata, but without throwing an error if - foreign metadata cannot be found or restored, instead printing a - warning. - -**\--skip={***\#***\|***mm:ss.ss***}** -: Skip over the first number of samples of the input. This works for - both encoding and decoding, but not testing. The alternative form - mm:ss.ss can be used to specify minutes, seconds, and fractions of a - second. - -**\--until={***\#***\|\[***+***\|***-***\]***mm:ss.ss***}** -: Stop at the given sample number for each input file. This works for - both encoding and decoding, but not testing. The given sample number - is not included in the decoded output. The alternative form mm:ss.ss - can be used to specify minutes, seconds, and fractions of a second. - If a \`+' (plus) sign is at the beginning, the \--until point is - relative to the \--skip point. If a \`-' (minus) sign is at the - beginning, the \--until point is relative to end of the audio. - -**\--ogg** -: When encoding, generate Ogg FLAC output instead of native FLAC. Ogg - FLAC streams are FLAC streams wrapped in an Ogg transport layer. The - resulting file should have an '.oga' extension and will still be - decodable by flac. When decoding, force the input to be treated as - Ogg FLAC. This is useful when piping input from stdin or when the - filename does not end in '.oga' or '.ogg'. - -**\--serial-number=***\#* -: When used with \--ogg, specifies the serial number to use for the - first Ogg FLAC stream, which is then incremented for each additional - stream. When encoding and no serial number is given, flac uses a - random number for the first stream, then increments it for each - additional stream. When decoding and no number is given, flac uses - the serial number of the first page. - -## ANALYSIS OPTIONS - -**\--residual-text** -: Includes the residual signal in the analysis file. This will make the - file very big, much larger than even the decoded file. - -**\--residual-gnuplot** -: Generates a gnuplot file for every subframe; each file will contain - the residual distribution of the subframe. This will create a lot of - files. - -## DECODING OPTIONS - -**\--cue=\[***\#.#***\]\[-\[***\#.#***\]\]** -: Set the beginning and ending cuepoints to decode. The optional first - \#.# is the track and index point at which decoding will start; the - default is the beginning of the stream. The optional second \#.# is - the track and index point at which decoding will end; the default is - the end of the stream. If the cuepoint does not exist, the closest - one before it (for the start point) or after it (for the end point) - will be used. If those don't exist, the start of the stream (for the - start point) or end of the stream (for the end point) will be used. - The cuepoints are merely translated into sample numbers then used as - \--skip and \--until. A CD track can always be cued by, for example, - \--cue=9.1-10.1 for track 9, even if the CD has no 10th track. - -**-F, \--decode-through-errors** -: By default flac stops decoding with an error and removes the - partially decoded file if it encounters a bitstream error. With -F, - errors are still printed but flac will continue decoding to - completion. Note that errors may cause the decoded audio to be - missing some samples or have silent sections. - -**\--apply-replaygain-which-is-not-lossless\[=\\]** -: Applies ReplayGain values while decoding. **WARNING: THIS IS NOT - LOSSLESS. DECODED AUDIO WILL NOT BE IDENTICAL TO THE ORIGINAL WITH - THIS OPTION.** This option is useful for example in transcoding - media servers, where the client does not support ReplayGain. For - details on the use of this option, see the section **ReplayGain - application specification**. - -## ENCODING OPTIONS - -**-V, \--verify** -: Verify a correct encoding by decoding the output in parallel and - comparing to the original - -**\--lax** -: Allow encoder to generate non-Subset files. The resulting FLAC file - may not be streamable or might have trouble being played in all - players (especially hardware devices), so you should only use this - option in combination with custom encoding options meant for - archival. - -**\--replay-gain** -: Calculate ReplayGain values and store them as FLAC tags, similar to - vorbisgain. Title gains/peaks will be computed for each input file, - and an album gain/peak will be computed for all files. All input - files must have the same resolution, sample rate, and number of - channels. Only mono and stereo files are allowed, and the sample - rate must be one of 8, 11.025, 12, 16, 22.05, 24, 32, 44.1, or 48 - kHz. Also note that this option may leave a few extra bytes in a - PADDING block as the exact size of the tags is not known until all - files are processed. Note that this option cannot be used when - encoding to standard output (stdout). - -**\--cuesheet=***filename* -: Import the given cuesheet file and store it in a CUESHEET metadata - block. This option may only be used when encoding a single file. A - seekpoint will be added for each index point in the cuesheet to the - SEEKTABLE unless \--no-cued-seekpoints is specified. - -**\--picture={***FILENAME***\|***SPECIFICATION***}** -: Import a picture and store it in a PICTURE metadata block. More than - one \--picture option can be specified. Either a filename for the - picture file or a more complete specification form can be used. The - SPECIFICATION is a string whose parts are separated by \| (pipe) - characters. Some parts may be left empty to invoke default values. - FILENAME is just shorthand for "\|\|\|\|FILENAME". For the format of - SPECIFICATION, see the section **picture specification**. - -**\--sector-align** -: Align encoding of multiple CD format files on sector boundaries. See the - HTML documentation for more information. This option is DEPRECATED and - may not exist in future versions of flac. - -**\--ignore-chunk-sizes** -: When encoding to flac, ignore the file size headers in WAV and AIFF - files to attempt to work around problems with over-sized or malformed - files. WAV and AIFF files both have an unsigned 32 bit numbers in - the file header which specifes the length of audio data. Since this - number is unsigned 32 bits, that limits the size of a valid file to - being just over 4 Gigabytes. Files larger than this are mal-formed, - but should be read correctly using this option. - -**-S {***\#***\|***X***\|***\#x***\|***\#s***}, \--seekpoint={***\#***\|***X***\|***\#x***\|***\#s***}** -: Include a point or points in a SEEKTABLE. Using \#, a seek point at - that sample number is added. Using X, a placeholder point is added at - the end of a the table. Using \#x, \# evenly spaced seek points will - be added, the first being at sample 0. Using \#s, a seekpoint will be - added every \# seconds (# does not have to be a whole number; it can - be, for example, 9.5, meaning a seekpoint every 9.5 seconds). You may - use many -S options; the resulting SEEKTABLE will be the unique-ified - union of all such values. With no -S options, flac defaults to - '-S 10s'. Use \--no-seektable for no SEEKTABLE. Note: '-S \#x' and - '-S \#s' will not work if the encoder can't determine the input size - before starting. Note: if you use '-S \#' and \# is \>= samples in - the input, there will be either no seek point entered (if the input - size is determinable before encoding starts) or a placeholder point - (if input size is not determinable). - -**-P** *\#***, \--padding=***\#* -: Tell the encoder to write a PADDING metadata block of the given - length (in bytes) after the STREAMINFO block. This is useful if you - plan to tag the file later with an APPLICATION block; instead of - having to rewrite the entire file later just to insert your block, - you can write directly over the PADDING block. Note that the total - length of the PADDING block will be 4 bytes longer than the length - given because of the 4 metadata block header bytes. You can force no - PADDING block at all to be written with \--no-padding. The encoder - writes a PADDING block of 8192 bytes by default (or 65536 bytes if - the input audio stream is more that 20 minutes long). - -**-T** *FIELD=VALUE***, \--tag=***FIELD=VALUE* -: Add a FLAC tag. The comment must adhere to the Vorbis comment spec; - i.e. the FIELD must contain only legal characters, terminated by an - 'equals' sign. Make sure to quote the comment if necessary. This - option may appear more than once to add several comments. NOTE: all - tags will be added to all encoded files. - -**\--tag-from-file=***FIELD=FILENAME* -: Like \--tag, except FILENAME is a file whose contents will be read - verbatim to set the tag value. The contents will be converted to - UTF-8 from the local charset. This can be used to store a cuesheet - in a tag (e.g. \--tag-from-file="CUESHEET=image.cue"). Do not try to - store binary data in tag fields! Use APPLICATION blocks for that. - -**-b** *\#***, \--blocksize=***\#* -: Specify the blocksize in samples. The default is 1152 for -l 0, - else 4096. For subset streams this must be \<= 4608 if the samplerate - \<= 48kHz, for subset streams with higher samplerates it must be \<= - 16384. - -**-m, \--mid-side** -: Try mid-side coding for each frame (stereo input only) - -**-M, \--adaptive-mid-side** -: Adaptive mid-side coding for all frames (stereo input only) - -**-0..-8, \--compression-level-0..\--compression-level-8** -: Fastest compression..highest compression (default is -5). These are - synonyms for other options: - -**-0, \--compression-level-0** -: Synonymous with -l 0 -b 1152 -r 3 \--no-mid-side - -**-1, \--compression-level-1** -: Synonymous with -l 0 -b 1152 -M -r 3 - -**-2, \--compression-level-2** -: Synonymous with -l 0 -b 1152 -m -r 3 - -**-3, \--compression-level-3** -: Synonymous with -l 6 -b 4096 -r 4 \--no-mid-side - -**-4, \--compression-level-4** -: Synonymous with -l 8 -b 4096 -M -r 4 - -**-5, \--compression-level-5** -: Synonymous with -l 8 -b 4096 -m -r 5 - -**-6, \--compression-level-6** -: Synonymous with -l 8 -b 4096 -m -r 6 -A subdivide_tukey(2) - -**-7, \--compression-level-7** -: Synonymous with -l 12 -b 4096 -m -r 6 -A subdivide_tukey(2) - -**-8, \--compression-level-8** -: Synonymous with -l 12 -b 4096 -m -r 6 -A subdivide_tukey(3) - -**\--fast** -: Fastest compression. Currently synonymous with -0. - -**\--best** -: Highest compression. Currently synonymous with -8. - -**-e, \--exhaustive-model-search** -: Do exhaustive model search (expensive!) - -**-A** *function***, \--apodization=***function* -: Window audio data with given the apodization function. See section - **Apodization functions** for details. - -**-l** *\#***, \--max-lpc-order=***\#* -: Specifies the maximum LPC order. This number must be \<= 32. For - subset streams, it must be \<=12 if the sample rate is \<=48kHz. If - 0, the encoder will not attempt generic linear prediction, and use - only fixed predictors. Using fixed predictors is faster but usually - results in files being 5-10% larger. - -**-p, \--qlp-coeff-precision-search** -: Do exhaustive search of LP coefficient quantization (expensive!). - Overrides -q; does nothing if using -l 0 - -**-q** *\#***, \--qlp-coeff-precision=***\#* -: Precision of the quantized linear-predictor coefficients, 0 =\> let - encoder decide (min is 5, default is 0) - -**-r \[***\#***,\]***\#***, \--rice-partition-order=\[***\#***,\]***\#* -: Set the \[min,\]max residual partition order (0..15). min defaults to - 0 if unspecified. Default is -r 5. - -## FORMAT OPTIONS - -**\--endian={***big***\|***little***}** -: Set the byte order for samples - -**\--channels=***\#* -: Set number of channels. - -**\--bps=***\#* -: Set bits per sample. - -**\--sample-rate=***\#* -: Set sample rate (in Hz). - -**\--sign={***signed***\|***unsigned***}** -: Set the sign of samples (the default is signed). - -**\--input-size=***\#* -: Specify the size of the raw input in bytes. If you are encoding raw - samples from stdin, you must set this option in order to be able to - use \--skip, \--until, \--cuesheet, or other options that need to - know the size of the input beforehand. If the size given is greater - than what is found in the input stream, the encoder will complain - about an unexpected end-of-file. If the size given is less, samples - will be truncated. - -**\--force-raw-format** -: Force input (when encoding) or output (when decoding) to be treated - as raw samples (even if filename ends in *.wav*). - -**\--force-aiff-format** -: Force the decoder to output AIFF format. This option is not needed if - the output filename (as set by -o) ends with *.aif* or *.aiff*. Also, - this option has no effect when encoding since input AIFF is - auto-detected. - -**\--force-rf64-format** -: Force the decoder to output RF64 format. This option is not needed if - the output filename (as set by -o) ends with *.rf64*. Also, this - option has no effect when encoding since input RF64 is auto-detected. - -**\--force-wave64-format** -: Force the decoder to output Wave64 format. This option is not needed - if the output filename (as set by -o) ends with *.w64*. Also, this - option has no effect when encoding since input Wave64 is - auto-detected. - -## NEGATIVE OPTIONS - -**\--no-adaptive-mid-side** -**\--no-cued-seekpoints** -**\--no-decode-through-errors** -**\--no-delete-input-file** -**\--no-preserve-modtime** -**\--no-keep-foreign-metadata** -**\--no-exhaustive-model-search** -**\--no-force** -**\--no-lax** -**\--no-mid-side** -**\--no-ogg** -**\--no-padding** -**\--no-qlp-coeff-prec-search** -**\--no-replay-gain** -**\--no-residual-gnuplot** -**\--no-residual-text** -**\--no-sector-align** -**\--no-seektable** -**\--no-silent** -**\--no-verify** -**\--no-warnings-as-errors** - -These flags can be used to invert the sense of the corresponding normal -option. - -## ReplayGain application specification -The option \--apply-replaygain-which-is-not-lossless\[=\\]** -applies ReplayGain values while decoding. **WARNING: THIS IS NOT -LOSSLESS. DECODED AUDIO WILL NOT BE IDENTICAL TO THE ORIGINAL WITH THIS -OPTION.** This option is useful for example in transcoding media servers, -where the client does not support ReplayGain. - -The equals sign and \ is optional. If omitted, the -default specification is 0aLn1. - -The \ is a shorthand notation for describing how to apply -ReplayGain. All components are optional but order is important. '\[\]' -means 'optional'. '\|' means 'or'. '{}' means required. The format is: - -\[\\]\[a\|t\]\[l\|L\]\[n{0\|1\|2\|3}\] - -In which the following parameters are used: - -- **preamp**: A floating point number in dB. This is added to the - existing gain value. - -- **a\|t**: Specify 'a' to use the album gain, or 't' to use the track - gain. If tags for the preferred kind (album/track) do not exist but - tags for the other (track/album) do, those will be used instead. - -- **l\|L**: Specify 'l' to peak-limit the output, so that the - ReplayGain peak value is full-scale. Specify 'L' to use a 6dB hard - limiter that kicks in when the signal approaches full-scale. - -- **n{0\|1\|2\|3}**: Specify the amount of noise shaping. ReplayGain - synthesis happens in floating point; the result is dithered before - converting back to integer. This quantization adds noise. Noise - shaping tries to move the noise where you won't hear it as much. - 0 means no noise shaping, 1 means 'low', 2 means 'medium', 3 means - 'high'. - -For example, the default of 0aLn1 means 0dB preamp, use album gain, 6dB -hard limit, low noise shaping. \--apply-replaygain-which-is-not-lossless=3 -means 3dB preamp, use album gain, no limiting, no noise shaping. - -flac uses the ReplayGain tags for the calculation. If a stream does -not have the required tags or they can't be parsed, decoding will -continue with a warning, and no ReplayGain is applied to that stream. - -## Picture specification -This described the specification used for the **\--picture** option. -\[TYPE\]\|\[MIME-TYPE\]\|\[DESCRIPTION\]\|\[WIDTHxHEIGHTxDEPTH\[/COLORS\]\]\|FILE - -TYPE is optional; it is a number from one of: - -0. Other -1. 32x32 pixels 'file icon' (PNG only) -2. Other file icon -3. Cover (front) -4. Cover (back) -5. Leaflet page -6. Media (e.g. label side of CD) -7. Lead artist/lead performer/soloist -8. Artist/performer -9. Conductor -10. Band/Orchestra -11. Composer -12. Lyricist/text writer -13. Recording Location -14. During recording -15. During performance -16. Movie/video screen capture -17. A bright coloured fish -18. Illustration -19. Band/artist logotype -20. Publisher/Studio logotype - -The default is 3 (front cover). There may only be one picture each of -type 1 and 2 in a file. - -MIME-TYPE is optional; if left blank, it will be detected from the file. -For best compatibility with players, use pictures with MIME type -image/jpeg or image/png. The MIME type can also be \--\> to mean that -FILE is actually a URL to an image, though this use is discouraged. - -DESCRIPTION is optional; the default is an empty string. - -The next part specifies the resolution and color information. If the -MIME-TYPE is image/jpeg, image/png, or image/gif, you can usually leave -this empty and they can be detected from the file. Otherwise, you must -specify the width in pixels, height in pixels, and color depth in -bits-per-pixel. If the image has indexed colors you should also specify -the number of colors used. When manually specified, it is not checked -against the file for accuracy. - -FILE is the path to the picture file to be imported, or the URL if MIME -type is \--\> - -For example, "\|image/jpeg\|\|\|../cover.jpg" will embed the JPEG file -at ../cover.jpg, defaulting to type 3 (front cover) and an empty -description. The resolution and color info will be retrieved from the -file itself. - -The specification -"4\|\--\>\|CD\|320x300x24/173\|http://blah.blah/backcover.tiff" will -embed the given URL, with type 4 (back cover), description "CD", and a -manually specified resolution of 320x300, 24 bits-per-pixel, and 173 -colors. The file at the URL will not be fetched; the URL itself is -stored in the PICTURE metadata block. - -## Apodization functions -To improve LPC analysis, audio data is windowed . The window can be -selected with one or more **-A** options. Possible functions are: -bartlett, bartlett_hann, blackman, blackman_harris_4term_92db, -connes, flattop, gauss(STDDEV), hamming, hann, kaiser_bessel, nuttall, -rectangle, triangle, tukey(P), partial_tukey(n\[/ov\[/P\]\]), -punchout_tukey(n\[/ov\[/P\]\]), subdivide_tukey(n\[/P\]) welch. - -- For gauss(STDDEV), STDDEV is the standard deviation (0\ for the Debian GNU/Linux system (but may be used by -others). It has been kept up-to-date by the Xiph.org Foundation. diff --git a/flac/flac-1.4.0-win/manuals/metaflac.md b/flac/flac-1.4.0-win/manuals/metaflac.md deleted file mode 100644 index 5ea0f57..0000000 --- a/flac/flac-1.4.0-win/manuals/metaflac.md +++ /dev/null @@ -1,270 +0,0 @@ -% metaflac(1) Version 1.4.0 | Free Lossless Audio Codec metadata tool - -# NAME - -metaflac - program to list, add, remove, or edit metadata in one or more -FLAC files. - -# SYNOPSIS - -**metaflac** \[ *options* \] \[ *operations* \] *FLACfile ...* - -# DESCRIPTION - -Use **metaflac** to list, add, remove, or edit metadata in one or more -FLAC files. You may perform one major operation, or many shorthand -operations at a time. - -# GENERAL USAGE - -metaflac is the command-line .flac file metadata editor. You can use it -to list the contents of metadata blocks, edit, delete or insert blocks, -and manage padding. - -metaflac takes a set of "options" (though some are not optional) and a -set of FLAC files to operate on. There are three kinds of "options": - -- Major operations, which specify a mode of operation like listing - blocks, removing blocks, etc. These will have sub-operations describing - exactly what is to be done. - -- Shorthand operations, which are convenient synonyms for major - operations. For example, there is a shorthand operation - --show-sample-rate that shows just the sample rate field from the - STREAMINFO metadata block. - -- Global options, which affect all the operations. - -All of these are described in the tables below. At least one shorthand -or major operation must be supplied. You can use multiple shorthand -operations to do more than one thing to a file or set of files. Most of -the common things to do to metadata have shorthand operations. As an -example, here is how to show the MD5 signatures for a set of three FLAC -files: - -`metaflac --show-md5sum file1.flac file2.flac file3.flac` - -Another example; this removes all DESCRIPTION and COMMENT tags in a set -of FLAC files, and uses the --preserve-modtime global option to keep the -FLAC file modification times the same (usually when files are edited the -modification time is set to the current time): - -`metaflac --preserve-modtime --remove-tag=DESCRIPTION --remove-tag=COMMENT file1.flac file2.flac file3.flac` - -# OPTIONS - -**\--preserve-modtime** -: Preserve the original modification time in spite of edits. - -**\--with-filename** -: Prefix each output line with the FLAC file name (the default if more - than one FLAC file is specified). - -**\--no-filename** -: Do not prefix each output line with the FLAC file name (the default - if only one FLAC file is specified). - -**\--no-utf8-convert** -: Do not convert tags from UTF-8 to local charset, or vice versa. This - is useful for scripts, and setting tags in situations where the - locale is wrong. - -**\--dont-use-padding** -: By default metaflac tries to use padding where possible to avoid - rewriting the entire file if the metadata size changes. Use this - option to tell metaflac to not take advantage of padding this way. - -# SHORTHAND OPERATIONS - -**\--show-md5sum** -: Show the MD5 signature from the STREAMINFO block. - -**\--show-min-blocksize** -: Show the minimum block size from the STREAMINFO block. - -**\--show-max-blocksize** -: Show the maximum block size from the STREAMINFO block. - -**\--show-min-framesize** -: Show the minimum frame size from the STREAMINFO block. - -**\--show-max-framesize** -: Show the maximum frame size from the STREAMINFO block. - -**\--show-sample-rate** -: Show the sample rate from the STREAMINFO block. - -**\--show-channels** -: Show the number of channels from the STREAMINFO block. - -**\--show-bps** -: Show the \# of bits per sample from the STREAMINFO block. - -**\--show-total-samples** -: Show the total \# of samples from the STREAMINFO block. - -**\--show-vendor-tag** -: Show the vendor string from the VORBIS_COMMENT block. - -**\--show-tag=name** -: Show all tags where the field name matches 'name'. - -**\--remove-tag=name** -: Remove all tags whose field name is 'name'. - -**\--remove-first-tag=name** -: Remove first tag whose field name is 'name'. - -**\--remove-all-tags** -: Remove all tags, leaving only the vendor string. - -**\--set-tag=field** -: Add a tag. The field must comply with the Vorbis comment spec, of the - form "NAME=VALUE". If there is currently no tag block, one will be - created. - -**\--set-tag-from-file=field** -: Like \--set-tag, except the VALUE is a filename whose contents will - be read verbatim to set the tag value. Unless \--no-utf8-convert is - specified, the contents will be converted to UTF-8 from the local - charset. This can be used to store a cuesheet in a tag (e.g. - \--set-tag-from-file="CUESHEET=image.cue"). Do not try to store - binary data in tag fields! Use APPLICATION blocks for that. - -**\--import-tags-from=file** -: Import tags from a file. Use '-' for stdin. Each line should be of - the form NAME=VALUE. Multi-line comments are currently not supported. - Specify \--remove-all-tags and/or \--no-utf8-convert before - \--import-tags-from if necessary. If FILE is '-' (stdin), only one - FLAC file may be specified. - -**\--export-tags-to=file** -: Export tags to a file. Use '-' for stdout. Each line will be of the - form NAME=VALUE. Specify \--no-utf8-convert if necessary. - -**\--import-cuesheet-from=file** -: Import a cuesheet from a file. Use '-' for stdin. Only one FLAC file - may be specified. A seekpoint will be added for each index point in - the cuesheet to the SEEKTABLE unless \--no-cued-seekpoints is - specified. - -**\--export-cuesheet-to=file** -: Export CUESHEET block to a cuesheet file, suitable for use by CD - authoring software. Use '-' for stdout. Only one FLAC file may be - specified on the command line. - -**\--import-picture-from={***FILENAME***\|***SPECIFICATION***}** -: Import a picture and store it in a PICTURE metadata block. More than - one \--import-picture-from command can be specified. Either a filename - for the picture file or a more complete specification form can be - used. The SPECIFICATION is a string whose parts are separated by \| - (pipe) characters. Some parts may be left empty to invoke default - values. FILENAME is just shorthand for "\|\|\|\|FILENAME". For - details on the specification, see the section **Picture - specification** in the **flac(1)** man page. - -**\--export-picture-to=file** -: Export PICTURE block to a file. Use '-' for stdout. Only one FLAC - file may be specified on the command line. The first PICTURE block - will be exported unless \--export-picture-to is preceded by a - \--block-number=# option to specify the exact metadata block to - extract. Note that the block number is the one shown by \--list. - -**\--add-replay-gain** -: Calculates the title and album gains/peaks of the given FLAC files as - if all the files were part of one album, then stores them as FLAC - tags. The tags are the same as those used by vorbisgain. Existing - ReplayGain tags will be replaced. If only one FLAC file is given, - the album and title gains will be the same. Since this operation - requires two passes, it is always executed last, after all other - operations have been completed and written to disk. All FLAC files - specified must have the same resolution, sample rate, and number of - channels. The sample rate must be one of 8, 11.025, 12, 16, 18.9, - 22.05, 24, 28, 32, 37.8, 44.1, 48, 56, 64, 88.2, 96, 112, 128, 144, - 176.4, or 192kHz. - -**\--scan-replay-gain** -: Like \--add-replay-gain, but only analyzes the files rather than - writing them to the tags. - -**\--remove-replay-gain** -: Removes the ReplayGain tags. - -**\--add-seekpoint={***\#***\|***X***\|***\#x***\|***\#s***}** -: Add seek points to a SEEKTABLE block. Using \#, a seek point at that - sample number is added. Using X, a placeholder point is added at the - end of a the table. Using \#x, \# evenly spaced seek points will be - added, the first being at sample 0. Using \#s, a seekpoint will be - added every \# seconds (# does not have to be a whole number; it can - be, for example, 9.5, meaning a seekpoint every 9.5 seconds). If no - SEEKTABLE block exists, one will be created. If one already exists, - points will be added to the existing table, and any duplicates will - be turned into placeholder points. You may use many \--add-seekpoint - options; the resulting SEEKTABLE will be the unique-ified union of - all such values. Example: \--add-seekpoint=100x \--add-seekpoint=3.5s - will add 100 evenly spaced seekpoints and a seekpoint every 3.5 - seconds. - -**\--add-padding=length** -: Add a padding block of the given length (in bytes). The overall - length of the new block will be 4 + length; the extra 4 bytes is for - the metadata block header. - -# MAJOR OPERATIONS - -**\--list** -: List the contents of one or more metadata blocks to stdout. By - default, all metadata blocks are listed in text format. Use the - options **\--block-number**, **\--block-type** or - **\--except-block-type** to change this behavior. - -**\--remove** -: Remove one or more metadata blocks from the metadata. Use the options - **\--block-number**, **\--block-type** or **\--except-block-type** - to specify which blocks should be removed. Note that if both - \--block-number and \--[except-]block-type are specified, the result - is the logical AND of both arguments. Unless \--dont-use-padding - is specified, the blocks will be replaced with padding. You may not - remove the STREAMINFO block. - -**\--block-number=#\[,#\[...\]\]** -: An optional comma-separated list of block numbers to display. The - first block, the STREAMINFO block, is block 0. - -**\--block-type=type\[,type\[...\]\]** - -**\--except-block-type=type\[,type\[...\]\]** -: An optional comma-separated list of block types to be included or - ignored with this option. Use only one of \--block-type or - \--except-block-type. The valid block types are: STREAMINFO, PADDING, - APPLICATION, SEEKTABLE, VORBIS_COMMENT, PICTURE. You may narrow down - the types of APPLICATION blocks selected by appending APPLICATION - with a colon and the ID of the APPLICATION block in either ASCII - or hexadecimal representation. E.g. APPLICATION:abcd for the - APPLICATION block(s) whose textual representation of the 4-byte ID - is "abcd" or APPLICATION:0xXXXXXXXX for the APPLICATION block(s) - whose hexadecimal big- endian representation of the 4-byte ID - is "0xXXXXXXXX". For the example "abcd" above the hexadecimal - equivalalent is 0x61626364 - -**\--application-data-format=hexdump\|text** -: If the application block you are displaying contains binary data but - your \--data-format=text, you can display a hex dump of the - application data contents instead using - \--application-data-format=hexdump. - -**\--remove-all** -: Remove all metadata blocks (except the STREAMINFO block) from the - metadata. Unless \--dont-use-padding is specified, the blocks will be - replaced with padding. - -**\--merge-padding** -: Merge adjacent PADDING blocks into single blocks. - -**\--sort-padding** -: Move all PADDING blocks to the end of the metadata and merge them - into a single block. - -# SEE ALSO - -**flac(1)** diff --git a/flac/flac.py b/flac/flac.py index 57f9029..a019908 100644 --- a/flac/flac.py +++ b/flac/flac.py @@ -1,54 +1,59 @@ +"""FLAC test script""" import json import logging import os.path import sys -import re -import glob import time from subprocess import Popen -EXECUTABLE = "encode-flac.bat" -ABS_EXECUTABLE_PATH = os.path.join(os.path.dirname(os.path.realpath(__file__)), EXECUTABLE) - -if os.path.isfile(ABS_EXECUTABLE_PATH) is False: - raise ValueError('No FLAC installation detected! Default installation expected to be present on the system.') +sys.path.insert(1, os.path.join(sys.path[0], "..")) +# pylint: disable=wrong-import-position +from flac_utils import download_flac, flac_folder_exists +from harness_utils.logging import DEFAULT_LOGGING_FORMAT, setup_log_directory script_dir = os.path.dirname(os.path.realpath(__file__)) log_dir = os.path.join(script_dir, "run") -if not os.path.isdir(log_dir): - os.mkdir(log_dir) -logging_format = '%(asctime)s %(levelname)-s %(message)s' +setup_log_directory(log_dir) logging.basicConfig(filename=f'{log_dir}/harness.log', - format=logging_format, + format=DEFAULT_LOGGING_FORMAT, datefmt='%m-%d %H:%M', level=logging.DEBUG) console = logging.StreamHandler() -formatter = logging.Formatter(logging_format) +formatter = logging.Formatter(DEFAULT_LOGGING_FORMAT) console.setFormatter(formatter) logging.getLogger('').addHandler(console) -# omit the first arg which is the script name +FLAC_URL = "https://ftp.osuosl.org/pub/xiph/releases/flac/flac-1.4.3-win.zip" +if flac_folder_exists() is False: + download_flac(FLAC_URL) + +EXECUTABLE = "encode-flac.bat" +ABS_EXECUTABLE_PATH = os.path.join( + os.path.dirname(os.path.realpath(__file__)), EXECUTABLE) command = f'{ABS_EXECUTABLE_PATH}' command = command.rstrip() -t1 = time.time() -args = [] -logging.info(command) -logging.info(args) -process = Popen(executable=command, args=args, cwd=os.path.dirname(os.path.realpath(__file__))) -exit_code = process.wait() +start_time = time.time() +process = Popen(executable=command, args=[], + cwd=os.path.dirname(os.path.realpath(__file__))) +EXIT_CODE = process.wait() -t2 = time.time() -logging.info(f"Benchmark took {round((t2 - t1), 3)} seconds") -if exit_code > 0: +if EXIT_CODE > 0: logging.error("Test failed!") - exit(exit_code) + sys.exit(EXIT_CODE) -result = { - "score": round((t2 - t1), 3) +end_time = time.time() +score = round((end_time - start_time), 3) +logging.info("Benchmark took %s seconds", score) +if EXIT_CODE > 0: + logging.error("Test failed!") + exit(EXIT_CODE) + +report = { + "score": score, + "version": "1.4.3" } -f = open(os.path.join(log_dir, "report.json"), "w") -f.write(json.dumps(result)) -f.close() \ No newline at end of file +with open(os.path.join(log_dir, "report.json"), "w", encoding="utf-8") as report_file: + report_file.write(json.dumps(report)) diff --git a/flac/flac_utils.py b/flac/flac_utils.py new file mode 100644 index 0000000..19ed4a2 --- /dev/null +++ b/flac/flac_utils.py @@ -0,0 +1,24 @@ +"""Collection of functions to assist in running flac test script""" +import os +from zipfile import ZipFile + +import requests + +FLAC_FOLDER_NAME = "flac-1.4.3-win" +FLAC_ZIP_NAME = "flac-1.4.3-win.zip" +SCRIPT_DIR = os.path.dirname(os.path.realpath(__file__)) + +def flac_folder_exists() -> bool: + """Check if flac has been downloaded or not""" + return os.path.isdir(os.path.join(SCRIPT_DIR, FLAC_FOLDER_NAME)) + + +def download_flac(url: str) -> str: + """Download and extract FLAC, return the path to extracted files""" + destination = os.path.join(SCRIPT_DIR, FLAC_ZIP_NAME) + response = requests.get(url, allow_redirects=True, timeout=120) + with open(destination, 'wb') as file: + file.write(response.content) + with ZipFile(destination, 'r') as zip_object: + zip_object.extractall(path=SCRIPT_DIR) + return \ No newline at end of file diff --git a/flac/flac-1.4.0-win/Win64/pts-trondheim-3.wav b/flac/nin-theslip.wav similarity index 100% rename from flac/flac-1.4.0-win/Win64/pts-trondheim-3.wav rename to flac/nin-theslip.wav diff --git a/flac/wav-license.txt b/flac/wav-license.txt new file mode 100644 index 0000000..66d3ebb --- /dev/null +++ b/flac/wav-license.txt @@ -0,0 +1,3 @@ +The WAV file is (Track 10) from the Nine Inch Nails "The Slip" CD, which is licensed under the Creative Commons Attribution 3.0 License. + +More information: https://en.wikipedia.org/wiki/The_Slip_(album)