===============================================================================
flac - Command-line FLAC encoder/decoder version 1.3.1
Copyright (C) 2000-2009  Josh Coalson
Copyright (C) 2011-2014  Xiph.Org Foundation

This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
===============================================================================
Usage:

 Encoding: flac [<general-options>] [<encoding/format-options>] [INPUTFILE [...]]
 Decoding: flac -d [<general-options>] [<format-options>] [FLACFILE [...]]
  Testing: flac -t [<general-options>] [FLACFILE [...]]
Analyzing: flac -a [<general-options>] [<analysis-options>] [FLACFILE [...]]

Be sure to read the list of known bugs at:
http://xiph.org/flac/documentation_bugs.html

For encoding:
  The input file(s) may be a PCM WAVE or RF64 file, AIFF (or uncompressed
  AIFF-C) file, or raw samples.
  The output file(s) will be in native FLAC or Ogg FLAC format
For decoding, the reverse is true.

A single INPUTFILE may be - for stdin.  No INPUTFILE implies stdin.  Use of
stdin implies -c (write to stdout).  Normally you should use:
   flac [options] -o outfilename  or  flac -d [options] -o outfilename
instead of:
   flac [options] > outfilename   or  flac -d [options] > outfilename
since the former allows flac to seek backwards to write the STREAMINFO or
WAVE/AIFF header contents when necessary.

flac checks for the presence of a AIFF/WAVE header to decide whether or not to
treat an input file as AIFF/WAVE format or raw samples.  If any input file is
raw you must specify the format options {-fb|fl} -fc -fp and -fs, which will
apply to all raw files.  You can force AIFF/WAVE files to be treated as raw
files using -fr.

general options:
  -v, --version                Show the flac version number
  -h, --help                   Show basic usage a list of all options
  -H, --explain                Show this screen
  -d, --decode                 Decode (the default behavior is to encode)
  -t, --test                   Same as -d except no decoded file is written
  -a, --analyze                Same as -d except an analysis file is written
  -c, --stdout                 Write output to stdout
  -s, --silent                 Do not write runtime encode/decode statistics
      --totally-silent         Do not print anything of any kind, including
                               warnings or errors.  The exit code will be the
                               only way to determine successful completion.
      --no-utf8-convert        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!
  -w, --warnings-as-errors     Treat all warnings as errors
  -f, --force                  Force overwriting of output files
  -o, --output-name=FILENAME   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.
      --output-prefix=STRING   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 '/' slash.
      --delete-input-file      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.
      --preserve-modtime       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.
      --keep-foreign-metadata  If encoding, save WAVE 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/out.
      --skip={#|mm:ss.ss}      Skip the first # samples of each input file; can
                               be used both for encoding and decoding.  The
                               alternative form mm:ss.ss can be used to specify
                               minutes, seconds, and fractions of a second.
      --until={#|[+|-]mm:ss.ss}  Stop at the given sample number for each input
                               file.  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 `+'
                               sign is at the beginning, the --until point is
                               relative to the --skip point.  If a `-' sign is
                               at the beginning, the --until point is relative
                               to end of the audio.
      --ogg                    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.  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'.
      --serial-number          Serial number to use for the FLAC stream.  When
                               encoding and no serial number is given, flac
                               uses a random one.  If encoding to multiple files
                               the serial number is incremented for each file.
                               When decoding and no number is given, flac uses
                               the serial number of the first page.
analysis options:
      --residual-text          Include residual signal in text output.  This
                               will make the file very big, much larger than
                               even the decoded file.
      --residual-gnuplot       Generate gnuplot files of residual distribution
                               of each subframe
decoding options:
  -F, --decode-through-errors  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.
      --cue=[#.#][-[#.#]]      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.  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.
encoding options:
  -V, --verify                 Verify a correct encoding by decoding the
                               output in parallel and comparing to the
                               original
      --lax                    Allow encoder to generate non-Subset files
      --ignore-chunk-sizes     Ignore data chunk sizes in WAVE/AIFF files;
                               useful when piping data from programs which
                               generate bogus data chunk sizes.
      --sector-align           Align encoding of multiple CD format WAVE files
                               on sector boundaries.  This option is DEPRECATED
                               and may not exist in future versions of flac.
                               shntool offers similar functionality.
      --replay-gain            Calculate ReplayGain values and store them as
                               FLAC tags.  Title gains/peaks will be computed
                               for each 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.  The sample rate must be
                               one of 8, 11.025, 12, 16, 22.05, 24, 32, 44.1,
                               or 48 kHz.  NOTE: this option may also leave a
                               few extra bytes in the PADDING block.
      --cuesheet=FILENAME      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.
      --picture=SPECIFICATION  Import a picture and store it in a PICTURE block.
                               More than one --picture command can be specified.
                               The SPECIFICATION can either be a simple filename
                               for the picture file, or a complete specification
                               whose parts are separated by | characters.  Some
                               parts may be left empty to invoke default values.
                               Using a filename is shorthand for "||||FILE".
                               The SPECIFICATION format is:
         [TYPE]|[MIME-TYPE]|[DESCRIPTION]|[WIDTHxHEIGHTxDEPTH[/COLORS]]|FILE
           TYPE is optional; it is a number from one of:
              0: Other
              1: 32x32 pixels 'file icon' (PNG only)
              2: Other file icon
              3: Cover (front)
              4: Cover (back)
              5: Leaflet page
              6: Media (e.g. label side of CD)
              7: Lead artist/lead performer/soloist
              8: Artist/performer
              9: Conductor
             10: Band/Orchestra
             11: Composer
             12: Lyricist/text writer
             13: Recording Location
             14: During recording
             15: During performance
             16: Movie/video screen capture
             17: A bright coloured fish
             18: Illustration
             19: Band/artist logotype
             20: Publisher/Studio logotype
             The default is 3 (front cover).  There may only be one picture each
             of type 1 and 2 in a file.
           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 --> to
             mean that FILE is actually a URL to an image, though this use is
             discouraged.
           DESCRIPTION is optional; the default is an empty string
           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.
           FILE is the path to the picture file to be imported, or the URL if
             MIME type is -->
  -T, --tag=FIELD=VALUE        Add a FLAC tag.  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.
      --tag-from-file=FIELD=FILENAME   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.
  -S, --seekpoint={#|X|#x|#s}  Include a point or points in a SEEKTABLE
       #  : a specific sample number for a seek point
       X  : a placeholder point (always goes at the end of the SEEKTABLE)
       #x : # evenly spaced seekpoints, the first being at sample 0
       #s : a seekpoint every # seconds; # does not have to be a whole number
     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 -S- 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)
  -P, --padding=#              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 is more than 20 minutes long.
  -b, --blocksize=#            Specify the blocksize in samples; the default is
                               1152 for -l 0, else 4096; must be one of 192,
                               576, 1152, 2304, 4608, 256, 512, 1024, 2048,
                               4096 (and 8192 or 16384 if the sample rate is
                               >48kHz) for Subset streams.
  -0, --compression-level-0, --fast  Synonymous with -l 0 -b 1152 -r 3
  -1, --compression-level-1          Synonymous with -l 0 -b 1152 -M -r 3
  -2, --compression-level-2          Synonymous with -l 0 -b 1152 -m -r 3
  -3, --compression-level-3          Synonymous with -l 6 -b 4096 -r 4
  -4, --compression-level-4          Synonymous with -l 8 -b 4096 -M -r 4
  -5, --compression-level-5          Synonymous with -l 8 -b 4096 -m -r 5
                                     -5 is the default setting
  -6, --compression-level-6          Synonymous with -l 8 -b 4096 -m -r 6
                                        -A tukey(0.5) -A partial_tukey(2)
  -7, --compression-level-7          Synonymous with -l 12 -b 4096 -m -r 6
                                         -A tukey(0.5) -A partial_tukey(2)
  -8, --compression-level-8, --best  Synonymous with -l 12 -b 4096 -m -r 6
                    -A tukey(0.5) -A partial_tukey(2) -A punchout_tukey(3)
  -m, --mid-side                     Try mid-side coding for each frame
                                     (stereo only)
  -M, --adaptive-mid-side            Adaptive mid-side coding for all frames
                                     (stereo only)
  -e, --exhaustive-model-search      Do exhaustive model search (expensive!)
  -A, --apodization="function"       Window audio data with given the 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, partial_tukey(n),
                                     punchout_tukey(n). More than one may be
                                     specified but encoding time is a multiple of
                                     the number of functions since they are each
                                     tried in turn.  The encoder chooses suitable
                                     defaults in the absence of any -A options.
  -l, --max-lpc-order=#              Max LPC order; 0 => only fixed predictors.
                                     Must be <= 12 for Subset streams if sample
                                     rate is <=48kHz.
  -p, --qlp-coeff-precision-search   Do exhaustive search of LP coefficient
                                     quantization (expensive!); overrides -q;
                                     does nothing if using -l 0
  -q, --qlp-coeff-precision=#        Specify precision in bits of quantized
                                     linear-predictor coefficients; 0 => let
                                     encoder decide (the minimun is 5, the
                                     default is -q 0)
  -r, --rice-partition-order=[#,]#   Set [min,]max residual partition order
                                     (# is 0..16; min defaults to 0; the
                                     default is -r 0; above 4 doesn't usually
                                     help much)
format options:
      --force-raw-format       Force input (when encoding) or output (when
                               decoding) to be treated as raw samples
      --force-aiff-format      Force the decoder to output AIFF format.  This
                               option is not needed if the output filename (as
                               set by -o) ends with .aif or .aiff; this option
                               has no effect when encoding since input AIFF is
                               auto-detected.
      --force-rf64-format      Force the decoder to output RF64 format.  This
                               option is not needed if the output filename (as
                               set by -o) ends with .rf64; this option
                               has no effect when encoding since input RF64 is
                               auto-detected.
      --force-wave64-format    Force the decoder to output Wave64 format.  This
                               option is not needed if the output filename (as
                               set by -o) ends with .w64; this option
                               has no effect when encoding since input Wave64 is
                               auto-detected.
raw format options:
      --endian={big|little}    Set byte order for samples
      --channels=#             Number of channels
      --bps=#                  Number of bits per sample
      --sample-rate=#          Sample rate in Hz
      --sign={signed|unsigned} Sign of samples (the default is signed)
      --input-size=#           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.
negative options:
      --no-adaptive-mid-side
      --no-cued-seekpoints
      --no-decode-through-errors
      --no-delete-input-file
      --no-preserve-modtime
      --no-keep-foreign-metadata
      --no-exhaustive-model-search
      --no-lax
      --no-mid-side
      --no-ogg
      --no-padding
      --no-qlp-coeff-prec-search
      --no-residual-gnuplot
      --no-residual-text
      --no-ignore-chunk-sizes
      --no-sector-align
      --no-seektable
      --no-silent
      --no-force
      --no-verify
      --no-warnings-as-errors
