.\" This manpage has been automatically generated by docbook2man 
.\" from a DocBook document.  This tool can be found at:
.\" <http://shell.ipoline.com/~elmert/comp/docbook2X/> 
.\" Please send any bug reports, improvements, comments, patches, 
.\" etc. to Steve Cheng <steve@ggi-project.org>.
.TH "FLAC" "1" "17 November 2006" "" ""

.SH NAME
flac \- Free Lossless Audio Codec
.SH SYNOPSIS

\fBflac\fR [ \fB\fIOPTIONS\fB\fR ] [ \fB\fIinfile.wav\fB\fR | \fB\fIinfile.aiff\fB\fR | \fB\fIinfile.raw\fB\fR | \fB\fIinfile.flac\fB\fR | \fB\fIinfile.ogg\fB\fR | \fB-\fR\fI ...\fR ]


\fBflac\fR [ \fB-d\fR | \fB--decode\fR | \fB-t\fR | \fB--test\fR | \fB-a\fR | \fB--analyze\fR ] [ \fB\fIOPTIONS\fB\fR ] [ \fB\fIinfile.flac\fB\fR | \fB\fIinfile.ogg\fB\fR | \fB-\fR\fI ...\fR ]

.SH "DESCRIPTION"
.PP
\fBflac\fR is a command-line tool for encoding, decoding, testing and analyzing FLAC streams.
.SH "OPTIONS"
.PP
A summary of options is included below.  For a complete
description, see the HTML documentation.
.SS "GENERAL OPTIONS"
.TP
\fB-v, --version\fR
Show the flac version number
.TP
\fB-h, --help \fR
Show basic usage and a list of all options
.TP
\fB-H, --explain \fR
Show detailed explanation of usage and all options
.TP
\fB-d, --decode \fR
Decode (the default behavior is to encode)
.TP
\fB-t, --test \fR
Test a flac encoded file (same as -d except no decoded file is written)
.TP
\fB-a, --analyze \fR
Analyze a FLAC encoded file (same as -d except an analysis file is written)
.TP
\fB-c, --stdout \fR
Write output to stdout
.TP
\fB-s, --silent \fR
Silent mode (do not write runtime encode/decode statistics to stderr)
.TP
\fB--totally-silent \fR
Do not print anything of any kind, including warnings or errors.  The exit code will be the only way to determine successful completion.
.TP
\fB-f, --force \fR
Force overwriting of output files.  By default, flac warns that the output file already exists and continues to the next file.
.TP
\fB-o \fIfilename\fB, --output-name=\fIfilename\fB\fR
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.
.TP
\fB--output-prefix=\fIstring\fB\fR
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).
.TP
\fB--delete-input-file \fR
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.
.TP
\fB--skip={\fI#\fB|\fImm:ss.ss\fB}\fR
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.
.TP
\fB--until={\fI#\fB|[\fI+\fB|\fI-\fB]\fImm:ss.ss\fB}\fR
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.
.TP
\fB--ogg\fR
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.

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'.
.TP
\fB--serial-number=\fI#\fB\fR
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.
.SS "ANALYSIS OPTIONS"
.TP
\fB--residual-text \fR
Includes the residual signal in the analysis file.  This will make the file very big, much larger than even the decoded file.
.TP
\fB--residual-gnuplot \fR
Generates a gnuplot file for every subframe; each file will contain the residual distribution of the subframe.  This will create a lot of files.
.SS "DECODING OPTIONS"
.TP
\fB--cue=[\fI#.#\fB][-[\fI#.#\fB]]\fR
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.
.TP
\fB-F, --decode-through-errors \fR
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.
.SS "ENCODING OPTIONS"
.TP
\fB-V, --verify\fR
Verify a correct encoding by decoding the output in parallel and comparing to the original
.TP
\fB--lax\fR
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.
.TP
\fB--replay-gain\fR
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).
.TP
\fB--cuesheet=\fIfilename\fB\fR
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.
.TP
\fB--picture=\fISPECIFICATION\fB\fR
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

[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 mandatory; 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.  When manually specified, it is not checked against the file for accuracy.

FILE is the path to the picture file to be imported, or the URL if MIME type is -->

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.

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.
.TP
\fB--sector-align\fR
Align encoding of multiple CD format files on sector boundaries.  See the HTML documentation for more information.
.TP
\fB-S {\fI#\fB|\fIX\fB|\fI#x\fB|\fI#s\fB}, --seekpoint={\fI#\fB|\fIX\fB|\fI#x\fB|\fI#s\fB}\fR
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).
.TP
\fB-P \fI#\fB, --padding=\fI#\fB\fR
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).
.TP
\fB-T \fIFIELD=VALUE\fB, --tag=\fIFIELD=VALUE\fB\fR
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.
.TP
\fB--tag-from-file=\fIFIELD=FILENAME\fB\fR
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.
.TP
\fB-b \fI#\fB, --blocksize=\fI#\fB\fR
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 >48kHz).
.TP
\fB-m, --mid-side\fR
Try mid-side coding for each frame (stereo input only)
.TP
\fB-M, --adaptive-mid-side\fR
Adaptive mid-side coding for all frames (stereo input only)
.TP
\fB-0\&..-8, --compression-level-0\&..--compression-level-8\fR
Fastest compression..highest compression (default is -5).  These are synonyms for other options:
.RS
.TP
\fB-0, --compression-level-0\fR
Synonymous with -l 0 -b 1152 -r 2,2
.TP
\fB-1, --compression-level-1\fR
Synonymous with -l 0 -b 1152 -M -r 2,2
.TP
\fB-2, --compression-level-2\fR
Synonymous with -l 0 -b 1152 -m -r 3
.TP
\fB-3, --compression-level-3\fR
Synonymous with -l 6 -b 4608 -r 3,3
.TP
\fB-4, --compression-level-4\fR
Synonymous with -l 8 -b 4608 -M -r 3,3
.TP
\fB-5, --compression-level-5\fR
Synonymous with -l 8 -b 4608 -m -r 3,3
.TP
\fB-6, --compression-level-6\fR
Synonymous with -l 8 -b 4608 -m -r 4
.TP
\fB-7, --compression-level-7\fR
Synonymous with -l 8 -b 4608 -m -e -r 6
.TP
\fB-8, --compression-level-8\fR
Synonymous with -l 12 -b 4608 -m -e -r 6
.RE
.TP
\fB--fast\fR
Fastest compression.  Currently synonymous with -0.
.TP
\fB--best\fR
Highest compression.  Currently synonymous with -8.
.TP
\fB-e, --exhaustive-model-search\fR
Do exhaustive model search (expensive!)
.TP
\fB-A \fIfunction\fB, --apodization=\fIfunction\fB\fR
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.

For gauss(STDDEV), STDDEV is the standard deviation (0<STDDEV<=0.5).

For tukey(P), P specifies the fraction of the window that is tapered (0<=P<=1; P=0 corresponds to "rectangle" and P=1 corresponds to "hann").

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).

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.
.TP
\fB-l \fI#\fB, --max-lpc-order=\fI#\fB\fR
Specifies the maximum LPC order. This number must be <= 32. For Subset streams, it must be <=12 if the sample rate is <=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.
.TP
\fB-p, --qlp-coeff-precision-search\fR
Do exhaustive search of LP coefficient quantization (expensive!).  Overrides -q; does nothing if using -l 0
.TP
\fB-q \fI#\fB, --qlp-coeff-precision=\fI#\fB\fR
Precision of the quantized linear-predictor coefficients, 0 => let encoder decide (min is 5, default is 0)
.TP
\fB-r [\fI#\fB,]\fI#\fB, --rice-partition-order=[\fI#\fB,]\fI#\fB\fR
Set the [min,]max residual partition order (0..16). min defaults to 0 if unspecified.  Default is -r 3,3.
.SS "FORMAT OPTIONS"
.TP
\fB--endian={\fIbig\fB|\fIlittle\fB}\fR
Set the byte order for samples
.TP
\fB--channels=\fI#\fB\fR
Set number of channels.
.TP
\fB--bps=\fI#\fB\fR
Set bits per sample.
.TP
\fB--sample-rate=\fI#\fB\fR
Set sample rate (in Hz).
.TP
\fB--sign={\fIsigned\fB|\fIunsigned\fB}\fR
Set the sign of samples (the default is signed).
.TP
\fB--input-size=\fI#\fB\fR
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.
.TP
\fB--force-aiff-format\fR
Force the decoder to output AIFF format.  This option is not needed if the output filename (as set by -o) ends with \fI\&.aiff\fR\&.  Also, this option has no effect when encoding since input AIFF is auto-detected.
.TP
\fB--force-raw-format\fR
Force input (when encoding) or output (when decoding) to be treated as raw samples (even if filename ends in \fI\&.wav\fR).
.SS "NEGATIVE OPTIONS"
.TP
\fB--no-adaptive-mid-side\fR
.TP
\fB--no-decode-through-errors\fR
.TP
\fB--no-delete-input-file\fR
.TP
\fB--no-exhaustive-model-search\fR
.TP
\fB--no-lax\fR
.TP
\fB--no-mid-side\fR
.TP
\fB--no-ogg\fR
.TP
\fB--no-padding\fR
.TP
\fB--no-qlp-coeff-precision-search\fR
.TP
\fB--no-residual-gnuplot\fR
.TP
\fB--no-residual-text\fR
.TP
\fB--no-sector-align\fR
.TP
\fB--no-seektable\fR
.TP
\fB--no-silent\fR
.TP
\fB--no-verify\fR
These flags can be used to invert the sense of the corresponding normal option.
.SH "SEE ALSO"
.PP
metaflac(1).
.PP
The programs are documented fully by HTML format documentation, available in \fI/usr/share/doc/flac/html\fR on Debian GNU/Linux systems.
.SH "AUTHOR"
.PP
This manual page was written by Matt Zimmerman <mdz@debian.org> for the Debian GNU/Linux system (but may be used by others).
