<!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>-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>SPECIFICATION</replaceable></term>

	  <listitem>
	    <para>Import a picture and store it in a PICTURE metadata block.  More than one --picture command can be specified.  The SPECIFICATION is a string whose parts are separated by | (pipe) characters.  Some parts may be left empty to invoke default values.  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 mandatory; 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 2,2</para>
		</listitem>
	      </varlistentry>

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

		<listitem>
		  <para>Synonymous with -l 0 -b 1152 -M -r 2,2</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 4608 -r 3,3</para>
		</listitem>
	      </varlistentry>

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

		<listitem>
		  <para>Synonymous with -l 8 -b 4608 -M -r 3,3</para>
		</listitem>
	      </varlistentry>

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

		<listitem>
		  <para>Synonymous with -l 8 -b 4608 -m -r 3,3</para>
		</listitem>
	      </varlistentry>

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

		<listitem>
		  <para>Synonymous with -l 8 -b 4608 -m -r 4</para>
		</listitem>
	      </varlistentry>

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

		<listitem>
		  <para>Synonymous with -l 8 -b 4608 -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 4608 -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 3,3.</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>
	  <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:
      -->
