| OLD | NEW | 
|---|
| (Empty) |  | 
|  | 1 /* FLAC - Free Lossless Audio Codec | 
|  | 2  * Copyright (C) 2001,2002,2003,2004,2005,2006,2007  Josh Coalson | 
|  | 3  * | 
|  | 4  * This file is part the FLAC project.  FLAC is comprised of several | 
|  | 5  * components distributed under difference licenses.  The codec libraries | 
|  | 6  * are distributed under Xiph.Org's BSD-like license (see the file | 
|  | 7  * COPYING.Xiph in this distribution).  All other programs, libraries, and | 
|  | 8  * plugins are distributed under the LGPL or GPL (see COPYING.LGPL and | 
|  | 9  * COPYING.GPL).  The documentation is distributed under the Gnu FDL (see | 
|  | 10  * COPYING.FDL).  Each file in the FLAC distribution contains at the top the | 
|  | 11  * terms under which it may be distributed. | 
|  | 12  * | 
|  | 13  * Since this particular file is relevant to all components of FLAC, | 
|  | 14  * it may be distributed under the Xiph.Org license, which is the least | 
|  | 15  * restrictive of those mentioned above.  See the file COPYING.Xiph in this | 
|  | 16  * distribution. | 
|  | 17  */ | 
|  | 18 | 
|  | 19 | 
|  | 20 FLAC (http://flac.sourceforge.net/) is an Open Source lossless audio | 
|  | 21 codec developed by Josh Coalson. | 
|  | 22 | 
|  | 23 FLAC is comprised of | 
|  | 24   * `libFLAC', a library which implements reference encoders and | 
|  | 25     decoders for native FLAC and Ogg FLAC, and a metadata interface | 
|  | 26   * `libFLAC++', a C++ object wrapper library around libFLAC | 
|  | 27   * `flac', a command-line program for encoding and decoding files | 
|  | 28   * `metaflac', a command-line program for viewing and editing FLAC | 
|  | 29     metadata | 
|  | 30   * player plugins for XMMS and Winamp | 
|  | 31   * user and API documentation | 
|  | 32 | 
|  | 33 The libraries (libFLAC, libFLAC++) are | 
|  | 34 licensed under Xiph.org's BSD-like license (see COPYING.Xiph).  All other | 
|  | 35 programs and plugins are licensed under the GNU General Public License | 
|  | 36 (see COPYING.GPL).  The documentation is licensed under the GNU Free | 
|  | 37 Documentation License (see COPYING.FDL). | 
|  | 38 | 
|  | 39 | 
|  | 40 =============================================================================== | 
|  | 41 FLAC - 1.2.1 - Contents | 
|  | 42 =============================================================================== | 
|  | 43 | 
|  | 44 - Introduction | 
|  | 45 - Prerequisites | 
|  | 46 - Note to embedded developers | 
|  | 47 - Building in a GNU environment | 
|  | 48 - Building with Makefile.lite | 
|  | 49 - Building with MSVC | 
|  | 50 - Building on Mac OS X | 
|  | 51 | 
|  | 52 | 
|  | 53 =============================================================================== | 
|  | 54 Introduction | 
|  | 55 =============================================================================== | 
|  | 56 | 
|  | 57 This is the source release for the FLAC project.  See | 
|  | 58 | 
|  | 59         doc/html/index.html | 
|  | 60 | 
|  | 61 for full documentation. | 
|  | 62 | 
|  | 63 A brief description of the directory tree: | 
|  | 64 | 
|  | 65         doc/          the HTML documentation | 
|  | 66         include/      public include files for libFLAC and libFLAC++ | 
|  | 67         man/          the man page for `flac' | 
|  | 68         src/          the source code and private headers | 
|  | 69         test/         the test scripts | 
|  | 70 | 
|  | 71 | 
|  | 72 =============================================================================== | 
|  | 73 Prerequisites | 
|  | 74 =============================================================================== | 
|  | 75 | 
|  | 76 To build FLAC with support for Ogg FLAC you must have built and installed | 
|  | 77 libogg according to the specific instructions below.  You must have | 
|  | 78 libogg 1.1.2 or greater, or there will be seeking problems with Ogg FLAC. | 
|  | 79 | 
|  | 80 If you are building on x86 and want the assembly optimizations, you will | 
|  | 81 need to have NASM >= 0.98.30 installed according to the specific instructions | 
|  | 82 below. | 
|  | 83 | 
|  | 84 | 
|  | 85 =============================================================================== | 
|  | 86 Note to embedded developers | 
|  | 87 =============================================================================== | 
|  | 88 | 
|  | 89 libFLAC has grown larger over time as more functionality has been | 
|  | 90 included, but much of it may be unnecessary for a particular embedded | 
|  | 91 implementation.  Unused parts may be pruned by some simple editing of | 
|  | 92 configure.in and src/libFLAC/Makefile.am; the following dependency | 
|  | 93 graph shows which modules may be pruned without breaking things | 
|  | 94 further down: | 
|  | 95 | 
|  | 96 metadata.h | 
|  | 97         stream_decoder.h | 
|  | 98         format.h | 
|  | 99 | 
|  | 100 stream_encoder.h | 
|  | 101         stream_decoder.h | 
|  | 102         format.h | 
|  | 103 | 
|  | 104 stream_decoder.h | 
|  | 105         format.h | 
|  | 106 | 
|  | 107 In other words, for pure decoding applications, both the stream encoder | 
|  | 108 and metadata editing interfaces can be safely removed. | 
|  | 109 | 
|  | 110 There is a section dedicated to embedded use in the libFLAC API | 
|  | 111 HTML documentation (see doc/html/api/index.html). | 
|  | 112 | 
|  | 113 Also, there are several places in the libFLAC code with comments marked | 
|  | 114 with "OPT:" where a #define can be changed to enable code that might be | 
|  | 115 faster on a specific platform.  Experimenting with these can yield faster | 
|  | 116 binaries. | 
|  | 117 | 
|  | 118 | 
|  | 119 =============================================================================== | 
|  | 120 Building in a GNU environment | 
|  | 121 =============================================================================== | 
|  | 122 | 
|  | 123 FLAC uses autoconf and libtool for configuring and building. | 
|  | 124 Better documentation for these will be forthcoming, but in | 
|  | 125 general, this should work: | 
|  | 126 | 
|  | 127 ./configure && make && make check && make install | 
|  | 128 | 
|  | 129 The 'make check' step is optional; omit it to skip all the tests, | 
|  | 130 which can take several hours and use around 70-80 megs of disk space. | 
|  | 131 Even though it will stop with an explicit message on any failure, it | 
|  | 132 does print out a lot of stuff so you might want to capture the output | 
|  | 133 to a file if you're having a problem.  Also, don't run 'make check' | 
|  | 134 as root because it confuses some of the tests. | 
|  | 135 | 
|  | 136 NOTE: Despite our best efforts it's entirely possible to have | 
|  | 137 problems when using older versions of autoconf, automake, or | 
|  | 138 libtool.  If you have the latest versions and still can't get it | 
|  | 139 to work, see the next section on Makefile.lite. | 
|  | 140 | 
|  | 141 There are a few FLAC-specific arguments you can give to | 
|  | 142 `configure': | 
|  | 143 | 
|  | 144 --enable-debug : Builds everything with debug symbols and some | 
|  | 145 extra (and more verbose) error checking. | 
|  | 146 | 
|  | 147 --disable-asm-optimizations : Disables the compilation of the | 
|  | 148 assembly routines.  Many routines have assembly versions for | 
|  | 149 speed and `configure' is pretty good about knowing what is | 
|  | 150 supported, but you can use this option to build only from the | 
|  | 151 C sources.  May be necessary for building on OS X (Intel) | 
|  | 152 | 
|  | 153 --enable-sse : If you are building for an x86 CPU that supports | 
|  | 154 SSE instructions, you can enable some of the faster routines | 
|  | 155 if your operating system also supports SSE instructions.  flac | 
|  | 156 can tell if the CPU supports the instructions but currently has | 
|  | 157 no way to test if the OS does, so if it does, you must pass | 
|  | 158 this argument to configure to use the SSE routines.  If flac | 
|  | 159 crashes when built with this option you will have to go back and | 
|  | 160 configure without --enable-sse.  Note that | 
|  | 161 --disable-asm-optimizations implies --disable-sse. | 
|  | 162 | 
|  | 163 --enable-local-xmms-plugin : Installs the FLAC XMMS plugin in | 
|  | 164 $HOME/.xmms/Plugins, instead of the global XMMS plugin area | 
|  | 165 (usually /usr/lib/xmms/Input). | 
|  | 166 | 
|  | 167 --with-ogg= | 
|  | 168 --with-xmms-prefix= | 
|  | 169 --with-libiconv-prefix= | 
|  | 170 Use these if you have these packages but configure can't find them. | 
|  | 171 | 
|  | 172 If you want to build completely from scratch (i.e. starting with just | 
|  | 173 configure.in and Makefile.am) you should be able to just run 'autogen.sh' | 
|  | 174 but make sure and read the comments in that file first. | 
|  | 175 | 
|  | 176 | 
|  | 177 =============================================================================== | 
|  | 178 Building with Makefile.lite | 
|  | 179 =============================================================================== | 
|  | 180 | 
|  | 181 There is a more lightweight build system for do-it-yourself-ers. | 
|  | 182 It is also useful if configure isn't working, which may be the | 
|  | 183 case since lately we've had some problems with different versions | 
|  | 184 of automake and libtool.  The Makefile.lite system should work | 
|  | 185 on GNU systems with few or no adjustments. | 
|  | 186 | 
|  | 187 From the top level just 'make -f Makefile.lite'.  You can | 
|  | 188 specify zero or one optional target from 'release', 'debug', | 
|  | 189 'test', or 'clean'.  The default is 'release'.  There is no | 
|  | 190 'install' target but everything you need will end up in the | 
|  | 191 obj/ directory. | 
|  | 192 | 
|  | 193 If you are not on an x86 system or you don't have nasm, you | 
|  | 194 may have to change the DEFINES in src/libFLAC/Makefile.lite.  If | 
|  | 195 you don't have nasm, remove -DFLAC__HAS_NASM.  If your target is | 
|  | 196 not an x86, change -DFLAC__CPU_IA32 to -DFLAC__CPU_UNKNOWN. | 
|  | 197 | 
|  | 198 | 
|  | 199 =============================================================================== | 
|  | 200 Building with MSVC | 
|  | 201 =============================================================================== | 
|  | 202 | 
|  | 203 There are .dsp projects and a master FLAC.dsw workspace to build all | 
|  | 204 the libraries and executables with MSVC6.  There are also .vcproj | 
|  | 205 projects and a master FLAC.sln solution to build all the libraries and | 
|  | 206 executables with VC++ 2005. | 
|  | 207 | 
|  | 208 Prerequisite: you must have the Ogg libraries installed as described | 
|  | 209 later. | 
|  | 210 | 
|  | 211 Prerequisite: you must have nasm installed, and nasmw.exe must be in | 
|  | 212 your PATH, or the path to nasmw.exe must be added to the list of | 
|  | 213 directories for executable files in the MSVC global options. | 
|  | 214 | 
|  | 215 MSVC6: | 
|  | 216 To build everything, run Developer Studio, do File|Open Workspace, | 
|  | 217 and open FLAC.dsw.  Select "Build | Set active configuration..." | 
|  | 218 from the menu, then in the dialog, select "All - Win32 Release" (or | 
|  | 219 Debug if you prefer).  Click "Ok" then hit F7 to build. | 
|  | 220 | 
|  | 221 VC++ 2005: | 
|  | 222 To build everything, run Visual Studio, do File|Open and open FLAC.sln. | 
|  | 223 From the dropdown in the toolbar, select "Release" instead of "Debug", | 
|  | 224 then hit F7 to build. | 
|  | 225 | 
|  | 226 Either way, this will build all libraries both statically (e.g. | 
|  | 227 obj\release\lib\libFLAC_static.lib) and as DLLs (e.g. | 
|  | 228 obj\release\lib\libFLAC.dll), and it will build all binaries, statically | 
|  | 229 linked (e.g. obj\release\bin\flac.exe). | 
|  | 230 | 
|  | 231 Everything will end up in the "obj" directory.  DLLs and .exe files | 
|  | 232 are all that are needed and can be copied to an installation area and | 
|  | 233 added to the PATH.  The plugins have to be copied to their appropriate | 
|  | 234 place in the player area.  For Winamp2 this is <winamp2-dir>\Plugins. | 
|  | 235 | 
|  | 236 By default the code is configured with Ogg support.  Before building FLAC | 
|  | 237 you will need to get the Ogg source distribution | 
|  | 238 (see http://xiph.org/ogg/vorbis/download/), build ogg_static.lib (load and | 
|  | 239 build win32\ogg_static.dsp), copy ogg_static.lib into FLAC's | 
|  | 240 'obj\release\lib' directory, and copy the entire include\ogg tree into | 
|  | 241 FLAC's 'include' directory (so that there is an 'ogg' directory in FLAC's | 
|  | 242 'include' directory with the files ogg.h, os_types.h and config_types.h). | 
|  | 243 | 
|  | 244 If you want to build without Ogg support, instead edit all .dsp or | 
|  | 245 .vcproj files and remove any occurrences of "/D FLAC__HAS_OGG". | 
|  | 246 | 
|  | 247 | 
|  | 248 =============================================================================== | 
|  | 249 Building on Mac OS X | 
|  | 250 =============================================================================== | 
|  | 251 | 
|  | 252 If you have Fink or a recent version of OS X with the proper autotooles, | 
|  | 253 the GNU flow above should work.  The Project Builder project has been | 
|  | 254 deprecated but we are working on replacing it with an Xcode equivalent. | 
| OLD | NEW | 
|---|