<!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>2013/09/18</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-2005, 2011-2013</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.rf64</replaceable></arg>
	<arg><replaceable>infile.aiff</replaceable></arg>
	<arg><replaceable>infile.raw</replaceable></arg>
	<arg><replaceable>infile.flac</replaceable></arg>
	<arg><replaceable>infile.oga</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.oga</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>--no-utf8-convert</option>
	  </term>
	  <listitem>
	    <para>Do not convert tags from local charset to UTF-8.  This is useful for scripts, and setting tags in situations where the locale is wrong.  This option must appear before any tag options!</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>--preserve-modtime</option>
	  </term>
	  <listitem>
	    <para>Output files have their timestamps/permissions set to match those of their inputs (this is default).  Use --no-preserve-modtime to make output files have the current time and default permissions.</para>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term><option>--keep-foreign-metadata</option>
	  </term>
	  <listitem>
	    <para>If encoding, save WAVE, RF64, or AIFF non-audio chunks in FLAC metadata.  If decoding, restore any saved non-audio chunks from FLAC metadata when writing the decoded file.  Foreign metadata cannot be transcoded, e.g. WAVE chunks saved in a FLAC file cannot be restored when decoding to AIFF.  Input and output must be regular files (not stdin or stdout).</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 '.oga' 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 '.oga' or '.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>

	<varlistentry>
	  <term><option>--apply-replaygain-which-is-not-lossless[=&lt;specification&gt;]</option>
	  </term>
	  <listitem>
            <para>Applies ReplayGain values while decoding.</para>
            <para>WARNING: THIS IS NOT LOSSLESS.  DECODED AUDIO WILL NOT BE IDENTICAL TO THE ORIGINAL WITH THIS OPTION.</para>
            <para>The equals sign and &lt;specification&gt; is optional.  If omitted, the default is 0aLn1.</para>
            <para>The &lt;specification&gt; is a shorthand notation for describing how to apply ReplayGain.  All components are optional but order is important.  '[]' means 'optional'.  '|' means 'or'.  '{}' means required.  The format is:</para>
            <para>[&lt;preamp&gt;][a|t][l|L][n{0|1|2|3}]</para>

            <variablelist>
              <varlistentry>
                <term><option>preamp</option></term>
                <listitem>
                  <para>A floating point number in dB.  This is added to the existing gain value.</para>
                </listitem>
              </varlistentry>

              <varlistentry>
                <term><option>a|t</option></term>
                <listitem>
                  <para>Specify 'a' to use the album gain, or 't' to use the track gain.  If tags for the preferred kind (album/track) do not exist but tags for the other (track/album) do, those will be used instead.</para>
                </listitem>
              </varlistentry>

              <varlistentry>
                <term><option>l|L</option></term>
                <listitem>
                  <para>Specify 'l' to peak-limit the output, so that the ReplayGain peak value is full-scale.  Specify 'L' to use a 6dB hard limiter that kicks in when the signal approaches full-scale.</para>
                </listitem>
              </varlistentry>

              <varlistentry>
                <term><option>n{0|1|2|3}</option></term>
                <listitem>
                  <para>Specify the amount of noise shaping.  ReplayGain synthesis happens in floating point; the result is dithered before converting back to integer.  This quantization adds noise.  Noise shaping tries to move the noise where you won't hear it as much.  0 means no noise shaping, 1 means 'low', 2 means 'medium', 3 means 'high'.</para>
                </listitem>
              </varlistentry>

            </variablelist>

            <para>For example, the default of 0aLn1 means 0dB preamp, use album gain, 6dB hard limit, low noise shaping.</para>
            <para>--apply-replaygain-which-is-not-lossless=3 means 3dB preamp, use album gain, no limiting, no noise shaping.</para>
            <para>flac uses the ReplayGain tags for the calculation.  If a stream does not have the required tags or they can't be parsed, decoding will continue with a warning, and no ReplayGain is applied to that stream.</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 specifies the resolution and color information.  If the MIME-TYPE is image/jpeg, image/png, or image/gif, you can usually leave this empty and they can be detected from the file.  Otherwise, you must specify the width in pixels, height in pixels, and color depth in bits-per-pixel.  If the image has indexed colors you should also specify the number of colors used.  When manually specified, it is not checked against the file for accuracy.</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.  This option is DEPRECATED and may not exist in future versions of flac.</para>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term><option>--ignore-chunk-sizes</option></term>

	  <listitem>
		<para>When encoding to flac, ignore the file size headers in WAV and AIFF files to attempt to work around problems with over-sized or malformed files.</para>
		<para>WAV and AIFF files both have an unsigned 32 bit numbers in the file header which specifes the length of audio data. Since this number is unsigned 32 bits, that limits the size of a valid file to being just over 4 Gigabytes. Files larger than this are mal-formed, but should be read correctly using this option.</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 -A tukey(0.5) -A partial_tukey(2)</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 -A tukey(0.5) -A partial_tukey(2)</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 -A tukey(0.5) -A partial_tukey(2) -A punchout_tukey(3)</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), partial_tukey(n[/ov[/P]]), punchout_tukey(n[/ov[/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>For partial_tukey(n) and punchout_tukey(n), n apodization functions are added that span different parts of each block. Values of 2 to 6 seem to yield sane results. If necessary, an overlap can be specified, as can be the taper parameter, for example partial_tukey(2/0.2) or partial_tukey(2/0.2/0.5). ov should be smaller than 1 and can be negative.</para>
	    <para>Please note that P, STDDEV and ov are locale specific, so a comma as decimal separator might be required instead of a dot.</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..15). 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, --cuesheet, or other options that need to know the size of the input beforehand.  If the size given is greater than what is found in the input stream, the encoder will complain about an unexpected end-of-file.  If the size given is less, samples will be truncated.</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>

	<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>.aif</filename> or <filename>.aiff</filename>.  Also, this option has no effect when encoding since input AIFF is auto-detected.</para>
	  </listitem>
	</varlistentry>

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

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

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

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

      </variablelist>
    </refsect2>

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

      <variablelist>
	<varlistentry>
	  <term><option>--no-adaptive-mid-side</option></term>
	  <term><option>--no-cued-seekpoints</option></term>
	  <term><option>--no-decode-through-errors</option></term>
	  <term><option>--no-delete-input-file</option></term>
	  <term><option>--no-preserve-modtime</option></term>
	  <term><option>--no-keep-foreign-metadata</option></term>
	  <term><option>--no-exhaustive-model-search</option></term>
	  <term><option>--no-force</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-prec-search</option></term>
	  <term><option>--no-replay-gain</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/libflac-doc/html</filename> on &debian; systems.</para>
  </refsect1>
  <refsect1>
    <title>AUTHOR</title>

    <para>This manual page was initially written by &dhusername; &dhemail; for the &debian; system (but may be used by others). It has been kept up-to-date by the Xiph.org Foundation.</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:
      -->
