<!doctype refentry PUBLIC "-//Davenport//DTD DocBook V3.0//EN" [

  <!-- Fill in your name for FIRSTNAME and SURNAME. -->
  <!ENTITY dhfirstname "<firstname>Matt</firstname>">
  <!ENTITY dhsurname   "<surname>Zimmerman</surname>">
  <!-- Please adjust the date whenever revising the manpage. -->
  <!ENTITY dhdate      "<date>Nov 4, 2006</date>">
  <!-- SECTION should be 1-8, maybe w/ subsection other parameters are
       allowed: see man(7), man(1). -->
  <!ENTITY dhsection   "<manvolnum>1</manvolnum>">
  <!ENTITY dhemail     "<email>mdz@debian.org</email>">
  <!ENTITY dhusername  "Matt Zimmerman">
  <!ENTITY dhucpackage "<refentrytitle>FLAC</refentrytitle>">
  <!ENTITY dhpackage   "flac">

  <!ENTITY debian      "<productname>Debian GNU/Linux</productname>">
  <!ENTITY gnu         "<acronym>GNU</acronym>">
]>

<refentry>
  <docinfo>
    <address>
      &dhemail;
    </address>
    <author>
      &dhfirstname;
      &dhsurname;
    </author>
    <copyright>
      <year>2002,2003,2004,2005</year>
      <holder>&dhusername;</holder>
    </copyright>
    &dhdate;
  </docinfo>
  <refmeta>
    &dhucpackage;

    &dhsection;
  </refmeta>
  <refnamediv>
    <refname>&dhpackage;</refname>

    <refpurpose>Free Lossless Audio Codec</refpurpose>
  </refnamediv>
  <refsynopsisdiv>
    <cmdsynopsis>
      <command>flac</command>
      <arg choice=opt><replaceable>OPTIONS</replaceable></arg>
      <group rep=repeat>
	<arg><replaceable>infile.wav</replaceable></arg>
	<arg><replaceable>infile.aiff</replaceable></arg>
	<arg><replaceable>infile.raw</replaceable></arg>
	<arg><replaceable>infile.flac</replaceable></arg>
	<arg><replaceable>infile.ogg</replaceable></arg>
	<arg>-</arg>
      </group>
    </cmdsynopsis>
    <cmdsynopsis>
      <command>flac</command>
      <group>
	<arg>-d</arg> <arg>--decode</arg>
	<arg>-t</arg> <arg>--test</arg>
	<arg>-a</arg> <arg>--analyze</arg>
      </group>
      <arg choice=opt><replaceable>OPTIONS</replaceable></arg>
      <group rep=repeat>
	<arg><replaceable>infile.flac</replaceable></arg>
	<arg><replaceable>infile.ogg</replaceable></arg>
	<arg>-</arg>
      </group>
    </cmdsynopsis>
  </refsynopsisdiv>
  <refsect1>
    <title>DESCRIPTION</title>

    <para><command>flac</command> is a command-line tool for encoding, decoding, testing and analyzing FLAC streams.</para>

  </refsect1>
  <refsect1>
    <title>OPTIONS</title>

    <para>A summary of options is included below.  For a complete
    description, see the HTML documentation.</para>

    <refsect2>
      <title>General Options</title>

      <variablelist>
	<varlistentry>
	  <term><option>-v</option>, <option>--version</option></term>
	  <listitem>
	    <para>Show the flac version number</para>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term><option>-h</option>, <option>--help</option>
	  </term>
	  <listitem>
	    <para>Show basic usage and a list of all options</para>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term><option>-H</option>, <option>--explain</option>
	  </term>
	  <listitem>
	    <para>Show detailed explanation of usage and all options</para>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term><option>-d</option>, <option>--decode</option>
	  </term>
	  <listitem>
	    <para>Decode (the default behavior is to encode)</para>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term><option>-t</option>, <option>--test</option>
	  </term>
	  <listitem>
	    <para>Test a flac encoded file (same as -d except no decoded file is written)</para>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term><option>-a</option>, <option>--analyze</option>
	  </term>
	  <listitem>
	    <para>Analyze a FLAC encoded file (same as -d except an analysis file is written)</para>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term><option>-c</option>, <option>--stdout</option>
	  </term>
	  <listitem>
	    <para>Write output to stdout</para>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term><option>-s</option>, <option>--silent</option>
	  </term>
	  <listitem>
	    <para>Silent mode (do not write runtime encode/decode statistics to stderr)</para>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term><option>--totally-silent</option>
	  </term>
	  <listitem>
	    <para>Do not print anything of any kind, including warnings or errors.  The exit code will be the only way to determine successful completion.</para>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term><option>-w</option>, <option>--warnings-as-errors</option>
	  </term>
	  <listitem>
	    <para>Treat all warnings as errors (which cause flac to terminate with a non-zero exit code).</para>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term><option>-f</option>, <option>--force</option>
	  </term>
	  <listitem>
	    <para>Force overwriting of output files.  By default, flac warns that the output file already exists and continues to the next file.</para>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term><option>-o</option> <replaceable>filename</replaceable>, <option>--output-name</option>=<replaceable>filename</replaceable></term>
	  <listitem>
	    <para>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.</para>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term><option>--output-prefix</option>=<replaceable>string</replaceable></term>
	  <listitem>
	    <para>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).</para>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term><option>--delete-input-file</option>
	  </term>
	  <listitem>
	    <para>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.</para>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term><option>--skip</option>={<replaceable>#</replaceable>|<replaceable>mm:ss.ss</replaceable>}</term>
	  <listitem>
	    <para>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.</para>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term><option>--until</option>={<replaceable>#</replaceable>|[<replaceable>+</replaceable>|<replaceable>-</replaceable>]<replaceable>mm:ss.ss</replaceable>}</term>
	  <listitem>
	    <para>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.</para>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term><option>--ogg</option></term>

	  <listitem>
	    <para>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 '.ogg' extension and will still be decodable by flac.</para>
	    <para>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 '.ogg'.</para>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term><option>--serial-number</option>=<replaceable>#</replaceable></term>

	  <listitem>
	    <para>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.</para>
	  </listitem>
	</varlistentry>

      </variablelist>
    </refsect2>

    <refsect2>
      <title>Analysis Options</title>

      <variablelist>
	<varlistentry>
	  <term><option>--residual-text</option>
	  </term>
	  <listitem>
	    <para>Includes the residual signal in the analysis file.  This will make the file very big, much larger than even the decoded file.</para>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term><option>--residual-gnuplot</option>
	  </term>
	  <listitem>
	    <para>Generates a gnuplot file for every subframe; each file will contain the residual distribution of the subframe.  This will create a lot of files.</para>
	  </listitem>
	</varlistentry>

      </variablelist>
    </refsect2>

    <refsect2>
      <title>Decoding Options</title>

      <variablelist>
	<varlistentry>
	  <term><option>--cue=[<replaceable>#.#</replaceable>][-[<replaceable>#.#</replaceable>]]</option></term>
	  <listitem>
	    <para>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.</para>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term><option>-F</option>, <option>--decode-through-errors</option>
	  </term>
	  <listitem>
	    <para>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.</para>
	  </listitem>
	</varlistentry>

      </variablelist>
    </refsect2>

    <refsect2>
      <title>Encoding Options</title>

      <variablelist>
	<varlistentry>
	  <term><option>-V</option>, <option>--verify</option></term>

	  <listitem>
	    <para>Verify a correct encoding by decoding the output in parallel and comparing to the original</para>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term><option>--lax</option></term>

	  <listitem>
	    <para>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.</para>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term><option>--replay-gain</option></term>

	  <listitem>
	    <para>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).</para>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term><option>--cuesheet</option>=<replaceable>filename</replaceable></term>

	  <listitem>
	    <para>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.</para>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term><option>--picture</option>={<replaceable>FILENAME</replaceable>|<replaceable>SPECIFICATION</replaceable>}</term>

	  <listitem>
	    <para>Import a picture and store it in a PICTURE metadata block.  More than one --picture 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".  The format of SPECIFICATION is</para>
	    <para>[TYPE]|[MIME-TYPE]|[DESCRIPTION]|[WIDTHxHEIGHTxDEPTH[/COLORS]]|FILE</para>
	    <para>TYPE is optional; it is a number from one of:</para>
	    <para>0: Other</para>
	    <para>1: 32x32 pixels 'file icon' (PNG only)</para>
	    <para>2: Other file icon</para>
	    <para>3: Cover (front)</para>
	    <para>4: Cover (back)</para>
	    <para>5: Leaflet page</para>
	    <para>6: Media (e.g. label side of CD)</para>
	    <para>7: Lead artist/lead performer/soloist</para>
	    <para>8: Artist/performer</para>
	    <para>9: Conductor</para>
	    <para>10: Band/Orchestra</para>
	    <para>11: Composer</para>
	    <para>12: Lyricist/text writer</para>
	    <para>13: Recording Location</para>
	    <para>14: During recording</para>
	    <para>15: During performance</para>
	    <para>16: Movie/video screen capture</para>
	    <para>17: A bright coloured fish</para>
	    <para>18: Illustration</para>
	    <para>19: Band/artist logotype</para>
	    <para>20: Publisher/Studio logotype</para>
	    <para>The default is 3 (front cover).  There may only be one picture each of type 1 and 2 in a file.</para>

	    <para>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 --&gt; to mean that FILE is actually a URL to an image, though this use is discouraged.</para>

	    <para>DESCRIPTION is optional; the default is an empty string.</para>

	    <para>The next part specfies 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.</para>

	    <para>FILE is the path to the picture file to be imported, or the URL if MIME type is --&gt;</para>

	    <para>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.</para>

	    <para>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.</para>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term><option>--sector-align</option></term>

	  <listitem>
	    <para>Align encoding of multiple CD format files on sector boundaries.  See the HTML documentation for more information.</para>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term><option>-S</option> {<replaceable>#</replaceable>|<replaceable>X</replaceable>|<replaceable>#x</replaceable>|<replaceable>#s</replaceable>}, <option>--seekpoint</option>={<replaceable>#</replaceable>|<replaceable>X</replaceable>|<replaceable>#x</replaceable>|<replaceable>#s</replaceable>}</term>

	  <listitem>
	    <para>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).</para>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term><option>-P</option> <replaceable>#</replaceable>, <option>--padding</option>=<replaceable>#</replaceable></term>

	  <listitem>
	    <para>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).</para>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term><option>-T</option> <replaceable>FIELD=VALUE</replaceable>, <option>--tag</option>=<replaceable>FIELD=VALUE</replaceable></term>

	  <listitem>
	    <para>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.</para>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term><option>--tag-from-file</option>=<replaceable>FIELD=FILENAME</replaceable></term>

	  <listitem>
	    <para>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.</para>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term><option>-b</option> <replaceable>#</replaceable>, <option>--blocksize</option>=<replaceable>#</replaceable></term>

	  <listitem>
	    <para>Specify the block size in samples.  Subset streams must use one of 192, 576, 1152, 2304, 4608, 256, 512, 1024, 2048, 4096 (and 8192 or 16384 if the sample rate is &gt;48kHz).</para>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term><option>-m</option>, <option>--mid-side</option></term>

	  <listitem>
	    <para>Try mid-side coding for each frame (stereo input only)</para>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term><option>-M</option>, <option>--adaptive-mid-side</option></term>

	  <listitem>
	    <para>Adaptive mid-side coding for all frames (stereo input only)</para>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term><option>-0</option>..<option>-8</option>, <option>--compression-level-0</option>..<option>--compression-level-8</option></term>

	  <listitem>
	    <para>Fastest compression..highest compression (default is -5).  These are synonyms for other options:</para>

	    <variablelist>
	      <varlistentry>
		<term><option>-0</option>, <option>--compression-level-0</option></term>

		<listitem>
		  <para>Synonymous with -l 0 -b 1152 -r 3</para>
		</listitem>
	      </varlistentry>

	      <varlistentry>
		<term><option>-1</option>, <option>--compression-level-1</option></term>

		<listitem>
		  <para>Synonymous with -l 0 -b 1152 -M -r 3</para>
		</listitem>
	      </varlistentry>

	      <varlistentry>
		<term><option>-2</option>, <option>--compression-level-2</option></term>

		<listitem>
		  <para>Synonymous with -l 0 -b 1152 -m -r 3</para>
		</listitem>
	      </varlistentry>

	      <varlistentry>
		<term><option>-3</option>, <option>--compression-level-3</option></term>

		<listitem>
		  <para>Synonymous with -l 6 -b 4096 -r 4</para>
		</listitem>
	      </varlistentry>

	      <varlistentry>
		<term><option>-4</option>, <option>--compression-level-4</option></term>

		<listitem>
		  <para>Synonymous with -l 8 -b 4096 -M -r 4</para>
		</listitem>
	      </varlistentry>

	      <varlistentry>
		<term><option>-5</option>, <option>--compression-level-5</option></term>

		<listitem>
		  <para>Synonymous with -l 8 -b 4096 -m -r 5</para>
		</listitem>
	      </varlistentry>

	      <varlistentry>
		<term><option>-6</option>, <option>--compression-level-6</option></term>

		<listitem>
		  <para>Synonymous with -l 8 -b 4096 -m -r 6</para>
		</listitem>
	      </varlistentry>

	      <varlistentry>
		<term><option>-7</option>, <option>--compression-level-7</option></term>

		<listitem>
		  <para>Synonymous with -l 8 -b 4096 -m -e -r 6</para>
		</listitem>
	      </varlistentry>

	      <varlistentry>
		<term><option>-8</option>, <option>--compression-level-8</option></term>

		<listitem>
		  <para>Synonymous with -l 12 -b 4096 -m -e -r 6</para>
		</listitem>
	      </varlistentry>
	    </variablelist>

	  </listitem>

	</varlistentry>

	<varlistentry>
	  <term><option>--fast</option></term>

	  <listitem>
	    <para>Fastest compression.  Currently synonymous with -0.</para>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term><option>--best</option></term>

	  <listitem>
	    <para>Highest compression.  Currently synonymous with -8.</para>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term><option>-e</option>, <option>--exhaustive-model-search</option></term>

	  <listitem>
	    <para>Do exhaustive model search (expensive!)</para>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term><option>-A</option> <replaceable>function</replaceable>, <option>--apodization</option>=<replaceable>function</replaceable></term>

	  <listitem>
	    <para>Window audio data with given the apodization function.  The functions are: bartlett, bartlett_hann, blackman, blackman_harris_4term_92db, connes, flattop, gauss(STDDEV), hamming, hann, kaiser_bessel, nuttall, rectangle, triangle, tukey(P), welch.</para>
	    <para>For gauss(STDDEV), STDDEV is the standard deviation (0&lt;STDDEV&lt;=0.5).</para>
	    <para>For tukey(P), P specifies the fraction of the window that is tapered (0&lt;=P&lt;=1; P=0 corresponds to "rectangle" and P=1 corresponds to "hann").</para>
	    <para>More than one -A option (up to 32) may be used.  Any function that is specified erroneously is silently dropped.  The encoder chooses suitable defaults in the absence of any -A options; any -A option specified replaces the default(s).</para>
	    <para>When more than one function is specified, then for every subframe the encoder will try each of them separately and choose the window that results in the smallest compressed subframe.  Multiple functions can greatly increase the encoding time.</para>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term><option>-l</option> <replaceable>#</replaceable>, <option>--max-lpc-order</option>=<replaceable>#</replaceable></term>

	  <listitem>
	    <para>Specifies the maximum LPC order. This number must be &lt;= 32. For Subset streams, it must be &lt;=12 if the sample rate is &lt;=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.</para>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term><option>-p</option>, <option>--qlp-coeff-precision-search</option></term>

	  <listitem>
	    <para>Do exhaustive search of LP coefficient quantization (expensive!).  Overrides -q; does nothing if using -l 0</para>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term><option>-q</option> <replaceable>#</replaceable>, <option>--qlp-coeff-precision</option>=<replaceable>#</replaceable></term>

	  <listitem>
	    <para>Precision of the quantized linear-predictor coefficients, 0 => let encoder decide (min is 5, default is 0)</para>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term><option>-r</option> [<replaceable>#</replaceable>,]<replaceable>#</replaceable>, <option>--rice-partition-order</option>=[<replaceable>#</replaceable>,]<replaceable>#</replaceable></term>

	  <listitem>
	    <para>Set the [min,]max residual partition order (0..16). min defaults to 0 if unspecified.  Default is -r 5.</para>
	  </listitem>
	</varlistentry>

      </variablelist>

    </refsect2>
    <refsect2>
      <title>Format Options</title>

      <variablelist>
	<varlistentry>
	  <term><option>--endian</option>={<replaceable>big</replaceable>|<replaceable>little</replaceable>}</term>

	  <listitem>
	    <para>Set the byte order for samples</para>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term><option>--channels</option>=<replaceable>#</replaceable></term>

	  <listitem>
	    <para>Set number of channels.</para>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term><option>--bps</option>=<replaceable>#</replaceable></term>

	  <listitem>
	    <para>Set bits per sample.</para>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term><option>--sample-rate</option>=<replaceable>#</replaceable></term>

	  <listitem>
	    <para>Set sample rate (in Hz).</para>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term><option>--sign</option>={<replaceable>signed</replaceable>|<replaceable>unsigned</replaceable>}</term>

	  <listitem>
	    <para>Set the sign of samples (the default is signed).</para>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term><option>--input-size</option>=<replaceable>#</replaceable></term>

	  <listitem>
	    <para>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, --cue-sheet, 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.</para>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term><option>--force-aiff-format</option></term>

	  <listitem>
	    <para>Force the decoder to output AIFF format.  This option is not needed if the output filename (as set by -o) ends with <filename>.aiff</filename>.  Also, this option has no effect when encoding since input AIFF is auto-detected.</para>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term><option>--force-raw-format</option></term>

	  <listitem>
	    <para>Force input (when encoding) or output (when decoding) to be treated as raw samples (even if filename ends in <filename>.wav</filename>).</para>
	  </listitem>
	</varlistentry>

      </variablelist>
    </refsect2>

    <refsect2>
      <title>Negative Options</title>

      <variablelist>
	<varlistentry>
	  <term><option>--no-adaptive-mid-side</option></term>
	  <term><option>--no-decode-through-errors</option></term>
	  <term><option>--no-delete-input-file</option></term>
	  <term><option>--no-exhaustive-model-search</option></term>
	  <term><option>--no-lax</option></term>
	  <term><option>--no-mid-side</option></term>
	  <term><option>--no-ogg</option></term>
	  <term><option>--no-padding</option></term>
	  <term><option>--no-qlp-coeff-precision-search</option></term>
	  <term><option>--no-residual-gnuplot</option></term>
	  <term><option>--no-residual-text</option></term>
	  <term><option>--no-sector-align</option></term>
	  <term><option>--no-seektable</option></term>
	  <term><option>--no-silent</option></term>
	  <term><option>--no-verify</option></term>
	  <term><option>--no-warnings-as-errors</option></term>
	  <listitem>
	    <para>These flags can be used to invert the sense of the corresponding normal option.</para>
	  </listitem>
	</varlistentry>
      </variablelist>

    </refsect2>

  </refsect1>
  <refsect1>
    <title>SEE ALSO</title>

    <para>metaflac(1).</para>

    <para>The programs are documented fully by HTML format documentation, available in <filename>/usr/share/doc/flac/html</filename> on &debian; systems.</para>
  </refsect1>
  <refsect1>
    <title>AUTHOR</title>

    <para>This manual page was written by &dhusername; &dhemail; for the &debian; system (but may be used by others).</para>

    <!-- <para>Permission is granted to copy, distribute and/or modify this document under the terms of the <acronym>GNU</acronym> Free Documentation License, Version 1.1 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 can be found under <filename>/usr/share/common-licenses/FDL</filename>.</para> -->

  </refsect1>
</refentry>

<!-- Keep this comment at the end of the file
      Local variables:
      mode: sgml
      sgml-omittag:t
      sgml-shorttag:t
      sgml-minimize-attributes:nil
      sgml-always-quote-attributes:t
      sgml-indent-step:2
      sgml-indent-data:t
      sgml-parent-document:nil
      sgml-default-dtd-file:nil
      sgml-exposed-tags:nil
      sgml-local-catalogs:nil
      sgml-local-ecat-files:nil
      End:
      -->
