OggSQUISH Overview and Propaganda
This document is a fairly complete high-level description of what
OggSQUISH can do (and will do in the near future) and why you should
use it. It does not address using, programming OggSQUISH or distribution and licensing terms as these are
covered in other documents.
What does OggSQUISH do?
OggSQUISH is a software package for using audio (presently) and video
(in the future) that is stored in the OggSQUISH compressed file
format. OggSQUISH is similar to MPEG in this respect.
Similar? What exactly is OggSQUISH?
OggSQUISH is large-scale digital signal processing (DSP) engine that
produces an output data stream from an input stream. The engine is
designed specially for signal compression, that is, making audio and
video take up much less space or bandwidth. OggSQUISH is programmed
via OggScript, which gives the exact details of how to compress the
input data; the program necessary to decompress the data is placed in
the bitstream header. As of version 0.98, that DSP engine that makes
up Ogg will be available as a linkable
library that can be embedded in other applications, along with a
sample compression/decompression/player
application that demonstrates the engine's use.
OggSQUISH isn't just one compression algorithm?
No. OggSQUISH is a DSP machine emulator that will run any compression
algorithm that you hand it in OggScript. It
can run lossy or lossless compressions, algorithms as simple as ADPCM
or algorithms more complex than MPEG.
Is OggSQUISH sort of like a 'Java' for audio compression?
At the extreme risk of sounding trendy, yes, there are similarities.
When you program or use OggSQUISH, compression and decompression
programs are parsed and assembled into byte codes that can be run by
any OggSQUISH engine on any machine (Mac, Windows, UNIX). Of course,
the user doesn't need to know what program created the bitstream; the
program for decompression is stored in the compressed bitstream's
header.
Do I have to program OggScript to use
OggSQUISH?
No, of course not. Applications will do that for you. But if you
do want to create your own compression modes in OggScript, you can. Ogg is not limited to
compression, by the way; it can perform any number of DSP processing
tasks.
Why is the 'programmable engine' better than MPEG or some other
compression?
It's better because it's so flexible. Ogg can produce an output
bitstream tailored exactly to any use's needs. If you need realtime
compression, OggSQUISH will do it. If you need the smallest possible
files using the most advanced perceptual analysis techniques available
today (compression time be damned), Ogg will do it. Even better, any
stock OggSQUISH engine will be able to decode that bitstream without
modification.
More importantly, the programmable engine approach gives us unlimited
freedom to expand the Ogg engine in the future. When the next
compression algorithm development or breakthrough comes along, MPEG,
TwinVQ, PAC, ASPEC, and so on will all be obsolete. OggSquish will
simply add new modules to support new operations (without disturbing
any operations that already exist). In this way, every old bitstream
will continue to be useful, without modification while new
bitstreams can be created with the latest in compression technology.
No other compression format can offer this.
Is OggSQUISH well suited to stream applications?
Yes; this is what it's designed for. It is especially targetted at
high-speed switched packet networks, like the Internet. Someday soon,
most of the people accessing the net won't be using slow modems; the
days of 10Mb/sec to your door are coming! OggSQUISH will be ready.
Can OggSQUISH do the things RealAudio does?
That's an application issue, but the engine is designed for such uses.
Xiphophorus is, in fact, planning to release a RealAudio-like server
(tenatively to be called OggStream) sometime near the end of 1996.
See the strategy page for more details.
Can I compress WAV [AIFF, VOC, SND] files with OggSQUISH?
Well, technically, you're not compressing them, you're converting them
to another format (OggSQUISH format). But essentially, yes. A
conversion application that can also play on most popular platforms
(Linux, Windows, Mac, SGI) is probably the first application we'll
finish.
What compression techniques does OggSQUISH use?
All of them, I think. OggSQUISH uses a veritable cocktail of
compression techniques; both old (Huffman trees, for example) and new
variants of older ideas, as well as anything that would make files
smaller without introducing (much) distortion or noise. Rumor has it
that even the Colonel's Secret Recipe (salt, black pepper, monosodium
glutamate) makes a guest appearance in order to give the entire
compression package a crispy, yet tasty coating of breading.
Seriously, the OggScript programmer has
available just about every compression building block he/she could
hope for. Xiphophorus is also building a number of 'default'
compression modes into the conversion application. These modes are
generally hybrids of RELP/CELP, Fourier and frequency domain
perceptual techniques.
Does OggSquish provide any novel techniques not used in other
audio compressors?
Yes. In the near future we plan to publish more detailed specifics of
Ogg's internals. Stay tuned.
What kind of sound does OggSQUISH compress best?
OggSQUISH is intended to be used for any and all types of sound (and
someday video). However, it is targetted at high quality samples,
ie. CD quality or so. At the moment, it will handle only 16 bit
linear (or better; 20 and 24 bits are commonly used in professional
mastering and mixing), and a sampling rate of 22kHz or higher is
recommended. Testers have, however, used OggSQUISH with samples as
slow as 11kHz without complaint. The 0.98 engine will be tested
with samples down to 8kHz (telephony grade).
Is OggSQUISH really better than MPEG layer 3 audio?
It is certainly more flexible, faster and smaller. Based on previous
versions of OggSQUISH (the 0.92 series), we expect the audio quality
of OggSQUISH 0.98's built in compression modes to surpass MPEG layer 2
and layer 3 audio at all comparable bit rates.
Is OggSQUISH a lossless compression?
The OggSQUISH compression application will work as a lossy or lossless
compression, depending on the requested compression characteristics. A
user can explicitly ask for either.
How fast is OggSQUISH?
This depends on the compression mode. However, the lossless and fast
lossy compression modes provide realtime CD quality mono
compression/decompression on 486 and stereo on Pentiums. Perceptual
compression modes are much slower while compressing, but decompress
only slightly slower than the fast lossy modes.
Despite OggSquish's interpretation and high-level engine design, it
also tends to be somewhat to substantially faster than other
audio compression software.
If I compress files, how small will they get?
- Lossless ratios: about 2+:1 voice compression, 1.6-2:1 vocal music
compression 1.3-1.6:1 typical general music compression. Higher
ratios for samples with low noise.
- Fast lossy modes will be capable of up to 8-10:1 compression,
albeit at lower quality than the perceptual modes. However, fast
lossy modes do an excellent job on noisy samples.
- Slow (Perceptual) Lossy Mode Ratios: Expected ratios will be from
8:1 at the highest quality settings to (we hope) 18-20:1 or so for
maximum crunch.
- Telephony grade compressions are planned for using audio streams
over slow networks or modem links; Expect bitrates in the 8-14kb/s
range.
Whay are lossless compression ratios so... wimpy? From the Ogg man page:
Noisy input sound will not compress well when compressing
losslessly; noise is randomness in the sound signal that
is, by its nature, losslessly incompressible. This means
that a 16 bit sound file with 8 bits of noise can be com-
pressed at most 2:1 (realistically, much less). Input
from the highest quality cassette tape or PC sound card
will typically have 6-8 bits of noise or more. Input from
a CD will still likely have 3 or 4 (even if it's read
directly as data) from the original recording process!
Even further complicating this is when the sound is sup-
posed to be noisy, like a cymbal crash. A loud cymbal
crash will contain perhaps 14 or 15 bits of pure noise
which means that the signal is barely compressible at all.
For this reason, lossless compression is very poorly
suited to noisy samples. Lossy compression does much bet-
ter; it is allowed to lose information so long as it pro-
duces an output that sounds the same.
Note that OggSquish closely approaches the theoretical minimum file
size for a file with a given amount of non-periodic 'noise'.
Lossy compression will always get substantially better ratios than
lossless.
What platforms will OggSQUISH run on?
The core OggSQUISH library is written very conservative C (ANSI with a
few extentions common to high quality compilers); it is designed to
compile as-is on any machine with a C compiler. Applications using
the core library (eg an Ogg player) are slightly more platform
specific. UNIX versions will tend to appear first, followed closely
by other platforms.
Xiphophorus intends to support OggSQUISH under Linux, IRIX, most other
UNIX variants, Windows, Mac, PowerMAC and likely the BeBox. NextSTEP
and OS/2 are options in the future as well. Of course, the OggSQUISH
encoded files produced on any machine will work on any other.
OggSQUISH, OggScript, OggLite, the
Thor-and-the-Snake logo and Xiphophorus are trademarks (tm) of the
Xiphophorus company. The OggSQUISH library and OggSQUISH applications
by Xiphophorus are copyright (C) 1994-1996 Xiphophorus. All rights
reserved.
DeskFish WWW Server /
Address comments to: xiphmont@cs.titech.ac.jp