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?

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