add baudline to the list of progs that use flac
[flac.git] / doc / documentation.html
index 964ffe8..34c09e5 100644 (file)
@@ -27,6 +27,7 @@
                                        <TD           BGCOLOR="#D3D4C5" ALIGN=CENTER NOWRAP>&nbsp;&nbsp;<A CLASS="topnav" HREF="features.html">features</A>&nbsp;&nbsp;</TD><TD BGCOLOR="#D3D4C5" ALIGN=CENTER>|</TD>
                                        <TD           BGCOLOR="#D3D4C5" ALIGN=CENTER NOWRAP>&nbsp;&nbsp;<A CLASS="topnav" HREF="goals.html">goals</A>&nbsp;&nbsp;</TD><TD BGCOLOR="#D3D4C5" ALIGN=CENTER>|</TD>
                                        <TD           BGCOLOR="#D3D4C5" ALIGN=CENTER NOWRAP>&nbsp;&nbsp;<A CLASS="topnav" HREF="format.html">format</A>&nbsp;&nbsp;</TD><TD BGCOLOR="#D3D4C5" ALIGN=CENTER>|</TD>
+                                       <TD           BGCOLOR="#D3D4C5" ALIGN=CENTER NOWRAP>&nbsp;&nbsp;<A CLASS="topnav" HREF="id.html">id</A>&nbsp;&nbsp;</TD><TD BGCOLOR="#D3D4C5" ALIGN=CENTER>|</TD>
                                        <TD           BGCOLOR="#D3D4C5" ALIGN=CENTER NOWRAP>&nbsp;&nbsp;<A CLASS="topnav" HREF="comparison.html">comparison</A>&nbsp;&nbsp;</TD><TD BGCOLOR="#D3D4C5" ALIGN=CENTER>|</TD>
                                        <TD           BGCOLOR="#D3D4C5" ALIGN=CENTER NOWRAP>&nbsp;&nbsp;documentation&nbsp;&nbsp;</TD><TD BGCOLOR="#D3D4C5" ALIGN=CENTER>|</TD>
                                        <TD           BGCOLOR="#D3D4C5" ALIGN=CENTER NOWRAP>&nbsp;&nbsp;<A CLASS="topnav" HREF="developers.html">developers</A>&nbsp;&nbsp;</TD>
@@ -55,7 +56,7 @@
        <TABLE CELLSPACING="0" CELLPADDING="3" WIDTH="100%" BORDER="0" BGCOLOR="#EEEED4">
        <TR><TD><FONT FACE="Lucida,Verdana,Helvetica,Arial">
        <P>
-               This page describes the user-level view of the FLAC format (for a more detailed explanation see the <A HREF="format.html">format page</A>).  It also contains the user documentation for <B><TT>flac</TT></B>, which is the command-line file encoder/decoder, and the <A HREF="#plugins">input plugins</A>.
+               This page describes the user-level view of the FLAC format (for a more detailed explanation see the <A HREF="format.html">format page</A>).  It also contains the user documentation for <B><TT>flac</TT></B>, which is the command-line file encoder/decoder, <B><TT>metaflac</TT></B>, the FLAC metadata editor, and the <A HREF="#plugins">input plugins</A>.
        </P>
        <P>
                Keep in mind that the online version of this document will always apply to the latest release.  For older releases, check the documentation included with the release package.
        <TABLE CELLSPACING="0" CELLPADDING="3" WIDTH="100%" BORDER="0" BGCOLOR="#EEEED4">
        <TR><TD><FONT FACE="Lucida,Verdana,Helvetica,Arial">
        <P>
-               <B><TT>flac</TT></B> is the command-line file encoder/decoder.  The input to the encoder and the output to the decoder must either be RIFF WAVE format, or raw interleaved sample data.  <B><TT>flac</TT></B> only supports linear PCM samples (in other words, no A-LAW, uLAW, etc.).  Another restriction (hopefully short-term) is that the input must be 8 or 16 bits per sample.  This is not a limitation of the FLAC format, just the reference encoder.
+               <B><TT>flac</TT></B> is the command-line file encoder/decoder.  The input to the encoder and the output to the decoder must either be RIFF WAVE format, or raw interleaved sample data.  <B><TT>flac</TT></B> only supports linear PCM samples (in other words, no A-LAW, uLAW, etc.).  Another restriction (hopefully short-term) is that the input must be 8, 16, or 24 bits per sample.  This is not a limitation of the FLAC format, just the reference encoder.
        </P>
        <P>
                <B><TT>flac</TT></B> assumes that RIFF WAVE files will have the extension ".wav"; this may be overridden with a command-line option.  Other than this, <B><TT>flac</TT></B> makes no assumptions about file extensions, though the convention is that FLAC files have the extension ".flac" (or ".fla" on ancient file systems like FAT-16).
        </P>
        <P>
-               Before going into the full command-line description, two other things help to sort it out: 1) <B><TT>flac</TT></B> encodes by default, so you must use <B>-d</B> to decode; 2) the options <B><TT>-0</TT></B> .. <B><TT>-9</TT></B> that control the compression level actually are just synonyms for different groups of specific coding options (described later).  You can get the same effect by using the same options.
+               Before going into the full command-line description, two other things help to sort it out: 1) <B><TT>flac</TT></B> encodes by default, so you must use <B>-d</B> to decode; 2) the options <B><TT>-0</TT></B> .. <B><TT>-9</TT></B> that control the compression level actually are just synonyms for different groups of specific encoding options (described later).  You can get the same effect by using the same options.
        </P>
        <P>
                <B><TT>flac</TT></B> will be invoked one of four ways, depending on whether you are encoding, decoding, testing, or analyzing:
                <UL>
                <LI>
-                       Encoding: flac [-s] [--skip #] [&lt;format-options&gt;] [&lt;encoding options&gt;] inputfile outputfile
+                       Encoding: flac [-s] [--skip #] [<I><A HREF="#format_options">&lt;format-options&gt;</A></I>] [<I><A HREF="#encoding_options">&lt;encoding options&gt;</A></I>] inputfile outputfile
                </LI>
                <LI>
-                       Decoding: flac -d [-s] [--skip #] [&lt;format-options&gt;] inputfile outputfile
+                       Decoding: flac -d [-s] [--skip #] [<I><A HREF="#format_options">&lt;format-options&gt;</A></I>] inputfile outputfile
                </LI>
                <LI>
                        Testing: flac -t [-s] inputfile
                </LI>
                <LI>
-                       Analyzing: flac -a [-s] [--skip #] inputfile outputfile
+                       Analyzing: flac -a [-s] [--skip #] [<I><A HREF="#analysis_options">&lt;analysis-options&gt;</A></I>] inputfile outputfile
                </LI>
                </UL>
        </P>
        <P>
-               In either case, inputfile may be "-" for stdin, and the outputfile "-" for stdout.  The encoding options affect the compression ratio and encoding speed.  The format options are used to tell <B><TT>flac</TT></B> the arrangement of samples if the input file (or output file when decoding) is a raw file.  If it is a RIFF WAVE file the format options are not needed since they are read from the WAVE header.
+               In either case, <TT>inputfile</TT> may be "-" for stdin, and the <TT>outputfile</TT> "-" for stdout.  The encoding options affect the compression ratio and encoding speed.  The format options are used to tell <B><TT>flac</TT></B> the arrangement of samples if the input file (or output file when decoding) is a raw file.  If it is a RIFF WAVE file the format options are not needed since they are read from the WAVE header.
        </P>
        <P>
                In test mode, <B><TT>flac</TT></B> 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.
        <TABLE WIDTH="100%" BORDER="1" BGCOLOR="#EEEED4">
                <TR>
                        <TD COLSPAN="2" BGCOLOR="#D3D4C5">
-                               <FONT SIZE="+1"><B>General Options</B></FONT>
+                               <A NAME="general_options"><FONT SIZE="+1"><B>General Options</B></FONT></A>
                        </TD>
                </TR>
                <TR>
        <TABLE WIDTH="100%" BORDER="1" BGCOLOR="#EEEED4">
                <TR>
                        <TD COLSPAN="2" BGCOLOR="#D3D4C5">
-                               <FONT SIZE="+1"><B>Encoding Options</B></FONT>
+                               <A NAME="analysis_options"><FONT SIZE="+1"><B>Analysis Options</B></FONT></A>
+                       </TD>
+               </TR>
+               <TR>
+                       <TD NOWRAP ALIGN="RIGHT" VALIGN="TOP" BGCOLOR="#F4F4CC">
+                               --a-rtext
+                       </TD>
+                       <TD>
+                               Includes the residual signal in the analysis file.  This will make the file <B>very</B> big, much larger than even the decoded file.
+                       </TD>
+               </TR>
+               <TR>
+                       <TD NOWRAP ALIGN="RIGHT" VALIGN="TOP" BGCOLOR="#F4F4CC">
+                               --a-rgp
+                       </TD>
+                       <TD>
+                               Generates a gnuplot file for every subframe; each file will contain the residual distribution of the subframe.  This will create a <B>lot</B> of files.
+                       </TD>
+               </TR>
+       </TABLE>
+       </TD></TR></TABLE>
+       </P>
+       <P>
+       <TABLE WIDTH="100%" BORDER="0" CELLSPACING="0" CELLPADDING="0" BGCOLOR="#EEEED4"><TR><TD>
+       <TABLE WIDTH="100%" BORDER="1" BGCOLOR="#EEEED4">
+               <TR>
+                       <TD COLSPAN="2" BGCOLOR="#D3D4C5">
+                               <A NAME="encoding_options"><FONT SIZE="+1"><B>Encoding Options</B></FONT></A>
                        </TD>
                </TR>
                <TR>
                </TR>
                <TR>
                        <TD NOWRAP ALIGN="RIGHT" VALIGN="TOP" BGCOLOR="#F4F4CC">
+                               -S { # | X | #x }
+                       </TD>
+                       <TD>
+                               Include a point or points in a SEEKTABLE:<BR>
+                               <UL>
+                               <LI>
+                                       <TT>#&nbsp;</TT> : a specific sample number for a seek point
+                               </LI>
+                               <LI>
+                                       <TT>X&nbsp;</TT> : a placeholder point (always goes at the end of the SEEKTABLE)
+                               </LI>
+                               <LI>
+                                       <TT>#x</TT> : # evenly spaced seekpoints, the first being at sample 0
+                               </LI>
+                               </UL>
+                               You may use many -S options; the resulting SEEKTABLE will be the unique-ified union of all such values.<BR>
+                               With no -S options, flac defaults to '-S 100x'.  Use -S- for no SEEKTABLE.<BR>
+                               NOTE: -S #x will not work if the encoder can't determine the input size before starting.<BR>
+                               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)<BR>
+                       </TD>
+               </TR>
+               <TR>
+                       <TD NOWRAP ALIGN="RIGHT" VALIGN="TOP" BGCOLOR="#F4F4CC">
+                               -P #
+                       </TD>
+                       <TD>
+                                 Tell the encoder to write a <TT>PADDING</TT> metadata block of the given length (in bytes) after the <TT>STREAMINFO</TT> block.  <TT>-P 0</TT> implies no <TT>PADDING</TT> block, which is the default.  This is useful if you plan to tag the file later with an <TT>APPLICATION</TT> block; instead of having to rewrite the entire file later just to insert your block, you can write directly over the <TT>PADDING</TT> block.
+                       </TD>
+               </TR>
+               <TR>
+                       <TD NOWRAP ALIGN="RIGHT" VALIGN="TOP" BGCOLOR="#F4F4CC">
                                -b #
                        </TD>
                        <TD>
-                               Set the blocksize.  The default is 1152 for -l 0, otherwise 4608.  Subset streams must use one of 192/576/1152/2304/4608.  The current encoder uses the same blocksize for the entire stream.
+                               Specify the blocksize in samples.  The default is 1152 for -l 0, otherwise 4608.  Subset streams must use one of 192/576/1152/2304/4608/256/512/1024/2048/4096/8192/16384/32768.  The current encoder uses the same blocksize for the entire stream.
                        </TD>
                </TR>
                <TR>
                </TR>
                <TR>
                        <TD NOWRAP ALIGN="RIGHT" VALIGN="TOP" BGCOLOR="#F4F4CC">
+                               -M
+                       </TD>
+                       <TD>
+                               Enable loose mid-side coding (only for stereo streams).  Like <TT>-m</TT> but the encoder adaptively switches between independent and mid-side coding, which is faster but yields less compression than <TT>-m</TT> (which does an exhaustive search).
+                       </TD>
+               </TR>
+               <TR>
+                       <TD NOWRAP ALIGN="RIGHT" VALIGN="TOP" BGCOLOR="#F4F4CC">
                                -0 .. -9
                        </TD>
                        <TD>
                                -0
                        </TD>
                        <TD>
-                               Synonymous with -l 0
+                               Synonymous with -l 0 -b 1152
                        </TD>
                </TR>
                <TR>
                                -1
                        </TD>
                        <TD>
-                               Synonymous with -l 0 -m
+                               Synonymous with -l 0 -b 1152 -M
                        </TD>
                </TR>
                <TR>
                                -2
                        </TD>
                        <TD>
-                               Synonymous with -l 0 -m -r # (where # is set based on the blocksize)
+                               Synonymous with -l 0 -b 1152 -m -r 2
                        </TD>
                </TR>
                <TR>
                                -4
                        </TD>
                        <TD>
-                               Synonymous with -l 8
+                               Synonymous with -l 8 -b 4608
                        </TD>
                </TR>
                <TR>
                                -5
                        </TD>
                        <TD>
-                               Synonymous with -l 8 -m
+                               Synonymous with -l 8 -b 4608 -M
                        </TD>
                </TR>
                <TR>
                                -6
                        </TD>
                        <TD>
-                               Synonymous with -l 8 -m -r # (where # is set based on the blocksize)
+                               Synonymous with -l 8 -b 4608 -m -r 4
                        </TD>
                </TR>
                <TR>
                                -8
                        </TD>
                        <TD>
-                               Synonymous with -l 32 -m -r # (where # is set based on the blocksize)
+                               Synonymous with -l 32 -b 4608 -m -r 4
                        </TD>
                </TR>
                <TR>
                                -9
                        </TD>
                        <TD>
-                               Synonymous with -l 32 -m -e -r 99 -p.  This is painfully slow but gives you the maximum compression <B><TT>flac</TT></B> can do for a given blocksize.
+                               Synonymous with -l 32 -b 4608 -m -e -r 99 -p.  This is painfully slow but gives you the maximum compression <B><TT>flac</TT></B> can do for a given blocksize.
                        </TD>
                </TR>
                <TR>
                                -p
                        </TD>
                        <TD>
-                               Do exhaustive LP coefficient quantization optimization.  This option overrides any <B><TT>-q</TT></B> option.  It is expensive and typically will only improve the compression a tiny fraction of a percent.
+                               Do exhaustive LP coefficient quantization optimization.  This option overrides any <B><TT>-q</TT></B> option.  It is expensive and typically will only improve the compression a tiny fraction of a percent.  <B><TT>-q</TT></B> has no effect when <B><TT>-l 0</TT></B> is used.
                        </TD>
                </TR>
                <TR>
                        <TD NOWRAP ALIGN="RIGHT" VALIGN="TOP" BGCOLOR="#F4F4CC">
                        </TD>
                        <TD>
-                               -m-, -e-, -p-, -V-, --lax- can all be used to turn off a particular option.
+                               -S-, -m-, -e-, -p-, -V-, --lax- can all be used to turn off a particular option.
                        </TD>
                </TR>
        </TABLE>
        <TABLE WIDTH="100%" BORDER="1" BGCOLOR="#EEEED4">
                <TR>
                        <TD COLSPAN="2" BGCOLOR="#D3D4C5">
-                               <FONT SIZE="+1"><B>Format Options</B></FONT>
+                               <A NAME="format_options"><FONT SIZE="+1"><B>Format Options</B></FONT></A>
                        </TD>
                </TR>
                <TR>
        <TABLE WIDTH="100%" CELLPADDING="0" CELLSPACING="0" BORDER="0"><TR BGCOLOR="#000000"><TD><IMG SRC="images/1x1.gif" WIDTH="1" HEIGHT="1" ALT=""></TD></TR></TABLE>
        <TABLE CELLSPACING="0" CELLPADDING="3" WIDTH="100%" BORDER="0" BGCOLOR="#D3D4C5">
                <TR><TD><FONT FACE="Lucida,Verdana,Helvetica,Arial">
+               <B><FONT SIZE="+2">metaflac</FONT></B>
+               </FONT></TD></TR>
+       </TABLE>
+       <TABLE WIDTH="100%" CELLPADDING="0" CELLSPACING="0" BORDER="0"><TR BGCOLOR="#000000"><TD><IMG SRC="images/1x1.gif" WIDTH="1" HEIGHT="1" ALT=""></TD></TR></TABLE>
+       <TABLE CELLSPACING="0" CELLPADDING="3" WIDTH="100%" BORDER="0" BGCOLOR="#EEEED4">
+       <TR><TD><FONT FACE="Lucida,Verdana,Helvetica,Arial">
+       <P>
+               <B><TT>metaflac</TT></B> is the command-line <TT>.flac</TT> file metadata editor.  Right now it just lists the contents of all metadata blocks in a .flac file, but soon it will allow you to insert, delete, and edit blocks.
+       </P>
+       <P>
+               Currently <B><TT>metaflac</TT></B> can be invoked only one way:
+               <UL>
+               <LI>
+                       Listing: metaflac [-v] inputfile
+               </LI>
+               </UL>
+       </P>
+       <P>
+               <TT>inputfile</TT> may be "-" for stdin.  If <TT>-v</TT> is used, you will get verbose output.
+       </P>
+       </FONT>
+       </TD></TR>
+       </TABLE>
+       <TABLE WIDTH="100%" CELLPADDING="0" CELLSPACING="0" BORDER="0"><TR BGCOLOR="#000000"><TD><IMG SRC="images/1x1.gif" WIDTH="1" HEIGHT="1" ALT=""></TD></TR></TABLE>
+</TD></TR>
+</TABLE>
+
+
+<TABLE WIDTH="100%" CELLPADDING="5" CELLSPACING="5" BORDER="0">
+<TR><TD>
+       <TABLE WIDTH="100%" CELLPADDING="0" CELLSPACING="0" BORDER="0"><TR BGCOLOR="#000000"><TD><IMG SRC="images/1x1.gif" WIDTH="1" HEIGHT="1" ALT=""></TD></TR></TABLE>
+       <TABLE CELLSPACING="0" CELLPADDING="3" WIDTH="100%" BORDER="0" BGCOLOR="#D3D4C5">
+               <TR><TD><FONT FACE="Lucida,Verdana,Helvetica,Arial">
                <A NAME="plugins"><B><FONT SIZE="+2">xmms plugin</FONT></B></A>
                </FONT></TD></TR>
        </TABLE>
        <TABLE CELLSPACING="0" CELLPADDING="3" WIDTH="100%" BORDER="0" BGCOLOR="#EEEED4">
        <TR><TD><FONT FACE="Lucida,Verdana,Helvetica,Arial">
        <P>
-               All that is necessary is to copy <B><TT>libxmms-flac.so</TT></B> to the directory where XMMS looks for input plugins (usually <B><TT>/usr/lib/xmms/Input</TT></B>).  There is nothing else to configure.  Make sure to restart XMMS before trying to play any .flac files.
+               All that is necessary is to copy <B><TT>libxmms-flac.so</TT></B> to the directory where XMMS looks for input plugins (usually <B><TT>/usr/lib/xmms/Input</TT></B>).  There is nothing else to configure.  Make sure to restart XMMS before trying to play any <TT>.flac</TT> files.
        </P>
        </FONT>
        </TD></TR>
        <TABLE CELLSPACING="0" CELLPADDING="3" WIDTH="100%" BORDER="0" BGCOLOR="#EEEED4">
        <TR><TD><FONT FACE="Lucida,Verdana,Helvetica,Arial">
        <P>
-               All that is necessary is to copy <B><TT>in_flac.dll</TT></B> to the <B><TT>Plugins/</TT></B> directory of your Winamp installation.  There is nothing else to configure.  Make sure to restart Winamp before trying to play any .flac files.
+               All that is necessary is to copy <B><TT>in_flac.dll</TT></B> to the <B><TT>Plugins/</TT></B> directory of your Winamp installation.  There is nothing else to configure.  Make sure to restart Winamp before trying to play any <TT>.flac</TT> files.
        </P>
        </FONT>
        </TD></TR>
        <TABLE CELLSPACING="0" CELLPADDING="3" WIDTH="100%" BORDER="0" BGCOLOR="#EEEED4">
        <TR><TD><FONT FACE="Lucida,Verdana,Helvetica,Arial">
        <P>
-               Here's the list of the known bugs.  None of them threaten the archival quality of <B><TT>flac</TT></B>.
-               <UL>
-                       <LI>Encoding/decoding to/from pipes in the MSVC version of <B><TT>flac</TT></B> is broken.  I assume a Cygwin version would be fine but I haven't got around to checking that yet.</LI>
-                       <LI>The Winamp 2 plugin sporadically hangs at the end of a file.  This one has been low priority since I'm focusing on Winamp 3, which has a better plugin architecture.</LI>
-               </UL>
+               Bug tracking is done on the Sourceforge project page <A HREF="http://sourceforge.net/bugs/?group_id=13478">here</A>.  If you submit a bug, please provide an email contact and/or use the Monitor feature.
        </P>
        </FONT>
        </TD></TR>