libvorbisenc documentation |
libvorbisenc release 1.1 - 20040709 |
Libvorbisenc is an encoding convenience library intended to encapsulate the elaborate setup that libvorbis requires for encoding. Libvorbisenc gives easy access to all high-level adjustments an application may require when encoding and also exposes some low-level tuning parameters to allow applications to make detailed adjustments to the encoding process.
All the libvorbisenc routines are declared in "vorbis/vorbisenc.h". Note: libvorbis and libvorbisenc always encode in a single pass. Thus, all possible encoding setups will work properly with live input and produce streams that decode properly when streamed. See the subsection titled "managed bitrate modes" for details on setting limits on bitrate usage when Vorbis streams are used in a limited-bandwidth environment.
Libvorbisenc is used only during encoder setup; its function is to automate initialization of a multitude of settings in a vorbis_info structure which libvorbis then uses as a reference during the encoding process. Libvorbisenc plays no part in the encoding process after setup.
Encode setup using libvorbisenc consists of three steps:
| parameter | description |
| sampling rate | The sampling rate (in samples per second) of the input audio. Common examples are 8000 for telephony, 44100 for CD audio and 48000 for DAT. Note that a mono sample (one center value) and a stereo sample (one left value and one right value) both are a single sample. |
| channels | The number of channels encoded in each input sample. By default, stereo input modes (two channels) are 'coupled' by Vorbis 1.1 such that the stereo relationship between the samples is taken into account when encoding. Stereo coupling my be disabled by using vorbis_encode_ctl() with OV_ECTL_COUPLE_SET. |
| parameter | description |
| quality | A decimal float value requesting a desired quality. Libvorbisenc 1.1 allows quality requests in the range of -0.1 (lowest quality, smallest files) through +1.0 (highest-quality, largest files). Quality -0.1 is intended as an ultra-low setting in which low bitrate is much more important than quality consistency. Quality settings 0.0 and above are intended to produce consistent results at all times. |
Beginning in libvorbis 1.1, bitrate management is implemented using a bit-reservoir algorithm. The encoder has a fixed-size reservoir used as a 'savings account' in encoding. When a frame is smaller than the target rate, the unused bits go into the reservoir so that they may be used by future frames. When a frame is larger than target bitrate, it draws 'banked' bits out of the reservoir. Encoding is managed so that the reservoir never goes negative (when a maximum bitrate is specified) or fills beyond a fixed limit (when a minimum bitrate is specified). An 'average bitrate' request is used as the set-point in a long-range bitrate tracker which adjusts the encoder's aggressiveness up or down depending on whether or not frames are coming in larger or smaller than the requested average point.
| parameter | description | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| maximum bitrate | The maximum allowed bitrate, set in bits
per second. If the bitrate would otherwise rise such that oversized
frames would underflow the bit-reservoir by consuming banked bits,
bitrate management will force the encoder to use fewer bits per frame
by encoding with a more aggressive psychoacoustic model. This setting is a hard limit; the bitstream will never be allowed, under any circumstances, to increase above the specified bitrate over the average period set by the reservoir; it may momentarily rise over if inspected on a granularity much finer than the average period across the reservoir. Normally, the encoder will conserve bits gracefully by using more aggressive psychoacoustics to shrink a frame when forced to. However, if the encoder runs out of means of gracefully shrinking a frame, it will simply take the smallest frame it can otherwise generate and truncate it to the maximum allowed length. Note that this is not an error and although it will obviously adversely affect audio quality, a Vorbis decoder will be able to decode a truncated frame into audio. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| average bitrate | The average desired bitrate of a stream, set in bits per second. A r valign=top> | average bitrate | The average desired bitrate of a stream, set in bits per second. A r valign=top> | average bitrate | The average desired bitrate of a stream, set in bits per second. A r valign=top> | average bitrate | The average desired bitrate of a stream, set in bits per second. A r valign=top> | average bitrate | The average desired bitrate of a stream, set in bits per second. A r valign=top> | average bitrate | The average desired bitrate of a stream, set in bits per second. A r valign=top> | average bitrate | The average desired bitrate of a stream, set in bits per second. A r valign=top> | average bitrate | The average desired bitrate of a stream, set in bits per second. A r valign=top> | average bitrate | The average desired bitrate of a stream, set in bits per second. A r valign=top> | average bitrate | The average desired bitrate of a stream, set in bits per second. A r valign=top> | average bitrate | The average desired bitrate of a stream, set in bits per second. A r valign=top> | average bitrate | The average desired bitrate of a stream, set in bits per second. A r valign=top> | average bitrate | The average desired bitrate of a stream, set in bits per second. A r valign=top> | average bitrate | The average desired bitrate of a stream, set in bits per second. A r valign=top> | average bitrate | The average desired bitrate of a stream, set in bits per second. A r valign=top> | average bitrate | The average desired bitrate of a stream, set in bits per second. A r valign=top> | average bitrate | The average desired bitrate of a stream, set in bits per second. A r valign=top> | average bitrate | The average desired bitrate of a stream, set in bits per second. A r valign=top> | average bitrate | The average desired bitrate of a stream, set in bits per second. A r valign=top> | average bitrate | The average desired bitrate of a stream, set in bits per second. A r valign=top> | average bitrate | The average desired bitrate of a stream, set in bits per second. A r valign=top> | average bitrate | The average desired bitrate of a stream, set in bits per second. A r valign=top> | average bitrate | The average desired bitrate of a stream, set in bits per second. A r valign=top> | average bitrate | The average desired bitrate of a stream, set in bits per second. A r valign=top> | average bitrate | The average desired bitrate of a stream, set in bits per second. A r valign=top> | average bitrate | The average desired bitrate of a stream, set in bits per second. A r valign=top> | average bitrate | The average desired bitrate of a stream, set in bits per second. A r valign=top> | average bitrate | The average desired bitrate of a stream, set in bits per second. A r valign=top> | average bitrate | The average desired bitrate of a stream, set in bits per second. A r valign=top> | average bitrate | The average desired bitrate of a stream, set in bits per second. A r valign=top> | average bitrate | The average desired bitrate of a stream, set in bits per second. A r valign=top> | average bitrate | The average desired bitrate of a stream, set in bits per second. A r valign=top> | average bitrate | The average desired bitrate of a stream, set in bits per second. A r valign=top> | average bitrate | The average desired bitrate of a stream, set in bits per second. A r valign=top> | average bitrate | The average desired bitrate of a stream, set in bits per second. A r valign=top> | average bitrate | The average desired bitrate of a stream, set in bits per second. A r valign=top> | average bitrate | The average desired bitrate of a stream, set in bits per second. A r valign=top> | average bitrate | The average desired bitrate of a stream, set in bits per second. A r valign=top> | average bitrate | The average desired bitrate of a stream, set in bits per second. A r valign=top> | average bitrate | The average desired bitrate of a stream, set in bits per second. A r valign=top> | average bitrate | The average desired bitrate of a stream, set in bits per second. A r valign=top> | average bitrate | The average desired bitrate of a stream, set in bits per second. A r valign=top> | average bitrate | The average desired bitrate of a stream, set in bits per second. A r valign=top> | average bitrate | The average desired bitrate of a stream, set in bits per second. A r valign=top> | average bitrate | The average desired bitrate of a stream, set in bits per second. A r valign=top> | average bitrate | The average desired bitrate of a stream, set in bits per second. A r valign=top> | average bitrate | The average desired bitrate of a stream, set in bits per second. A r valign=top> | average bitrate | The average desired bitrate of a stream, set in bits per second. A r valign=top> | average bitrate | The average desired bitrate of a stream, set in bits per second. A r valign=top> | average bitrate | The average desired bitrate of a stream, set in bits per second. A r valign=top> | average bitrate | The average desired bitrate of a stream, set in bits per second. A r valign=top> | average bitrate | The average desired bitrate of a stream, set in bits per second. A r valign=top> | average bitrate | The average desired bitrate of a stream, set in bits per second. A r valign=top> | average bitrate | The average desired bitrate of a stream, set in bits per second. A r valign=top> | average bitrate | The average desired bitrate of a stream, set in bits per second. A r valign=top> | average bitrate | The average desired bitrate of a stream, set in bits per second. A r valign=top> | average bitrate | The average desired bitrate of a stream, set in bits per second. A r valign=top> | average bitrate | The average desired bitrate of a stream, set in bits per second. A r valign=top> | average bitrate | The average desired bitrate of a stream, set in bits per second. A r valign=top> | average bitrate | The average desired bitrate of a stream, set in bits per second. A r valign=top> | average bitrate | The average desired bitrate of a stream, set in bits per second. A r valign=top> | average bitrate | The average desired bitrate of a stream, set in bits per second. A r valign=top> | average bitrate | The average desired bitrate of a stream, set in bits per second. A r valign=top> | average bitrate | The average desired bitrate of a stream, set in bits per second. A r valign=top> | average bitrate | The average desired bitrate of a stream, set in bits per second. A r valign=top> |