It's a unfortunate fact that many of today's popular codecs used in multimedia applications have some severe limitations, legal and otherwise. Many are patented, many were developed by companies and organizations that never intended for them to be freely used. Many of them incorporate onerous DRM restrictions.
Xiph.org is a project that was put together by people who recognized this fact early on and decided to get together to form Free software codecs and applications to ensure that the future interne's communication infrastructure is not encumbered by licensing and patents and thus ensuring that major forms of communication will remain free from control by a handful of companies or organizations.
Their main contribution so far has been in the form of 4 codecs, 3 audio and 1 video, and a container format for internetwork streaming called "ogg". The 3 audio codecs are Ogg Vorbis, Flac, and Speex. The video codec is Theora.
This is meant to be a quick overview of those, plus several free software programs and applications that you can use to take advantage of Xiph.org's work. Note that I am no expert on this sort of thing, so it may contain many inaccuracies and misleading statements. If you are more interested in these codecs and software best look into their official websites.
Ogg is a container designed for streaming. It takes care of most of the work needed to ensure a high degree of reliability. It takes care of the issues with establishing connections, reliable re-assembly of packets, and details like that so that to make it easier for the codec designers to concentrate on just developing high quality codecs.
More details on the structure of the Ogg container is in the following URL. https://www.xiph.org/ogg/vorbis/doc/oggstream.html
Now a single ogg file can contain a wide variety of different audio and video formats. For instance there is one variation called "OGM" (for ogg movie files) that uses a combination of Vorbis audio format and Mpeg4 video format.
A similar style file format is Microsoft's AVI file format. Generally you see this used in "Divx" rips (or backups in normal-speak) of DVD movies. Divx is a mpeg4 encoder, so these files contain mpeg4 video with pcm, mp2, ac3, or even mp3 audio formats.
Another similar container format is Apple's "Quicktime" files. Each version of quicktime uses dramatically different audio and visual formats (as well as image formats such as jpegs), and I am not sure of the various incarnations.
Vorbis is probably the most popular of the codecs to be developed out of the Xiph project. It is distributed under the BSD license.
It is a general purpose mid to high quality lossy compressed audio format. It's job is to take raw, uncompressed audio information and turn it into as small as a stream or file as possible while retaining as much of the sound quality as possible in a reasonable manner. It does this through a combination of dispensing audio information and performing compression on the remaining information.
It is able to remove audio information because much of what gets recorded in a raw digital format is not noticed or heard by a human listener. How it decides what information to remove is based on current scientific understandings on how hearing works. For example if you have 2 simultaneous sounds, a loud high pitched sound, and a quieter and slightly lower pitched sound a human listener will not be able to hear the lower pitched sound so you can safely remove it from a recording and nobody would mis it much.
The well known and extremely popular MP3 audio format (mpeg1/2 audio layer 3) is a designed to accomplish pretty much the same thing. However Ogg Vorbis is superior to Mp3 in most respects.
Usually you'll find files containing stereo sound (2 channels) with bitrates from 64kbps to 256kbps. The Ogg Vorbis codec has several different "quality settings. I generally shoot for a 192kbps nitrate. A 3 and a half minute song encoded like that would result in around a 5meg file. A file encoded a quality "0" would result in a 64kbps bitstream and a 1.7meg file, and file encoded at a quality of "10" would result around a 12-13meg file with a bitrate of around 492kbps.
The advantages of Ogg over it's contemporaries show up most in when you compare low bitrate files.
Typically you'll find people calling Ogg Vorbis audio files, just ogg files after their 3 letter extension. It is very common and it's liberal BSD license means that you find it in all sorts of applications. Most software audio players support it, if your preferred audio player doesn't then that audio player has problems.
You also find it in many games and multimedia applications. For instance 2 newer games that use Ogg Vorbis for audio effects and music are Doom3 and Unreal Tournament 2004, this is because it reduces those game's memory footprints by a appreciable amount and Ogg vorbis decoding requires very little in the way of CPU time.
The major downside of Ogg Vorbis when compared to mp3 is that hardware audio players like "mp3 players" or in card data cdrom mp3 players typically only play mp3's or other specific proprietary formats. You can find some audio players that will support Ogg, and they are becoming more and more common.
You can find out more about Ogg Vorbis from the following URL: https://www.xiph.org/ogg/
Ogg Theora is the newest of the 4 codecs out of the Xiph audio project. Unlike the other 3 this one is designed for Video content. Most of the time you'll find it with Vorbis for audio in the same Ogg container file. It is designed for high compression and good quality video intended for streaming.
A similar rival codec is Mpeg4 (also know as "Divx" after a popular encoder).
I don't know much about it since it's so new. The final reference was made on Dec 15, 2004 and it has yet to get very popular. However I assume that it shares the high quality aspects of the other Xiph codecs. I know that it uses a different techniques to compress files so that it's image quality degrades much more graceful manner then when using Mpeg4. You don't see the little squares or blocky visual artifacts common on most low bitrate video streams.
As for typical bitrates, that is much more difficult. There are many more variations then simple audio. You have display size (like 640x480 vs 320x240), framerates, compression rate, and how busy the video is. Also the quality of encoding program has a heavy influence on the size and quality. I've heard that a decent enough quality image at 640x480 resolution with a 29 frames per second will be about 600kbps. That is about the same size and frame rate that you'd find in DVD movies, however I can't attest to the actual quality of video.
More information and samples are available at https://www.theora.org/
Flac is a high quality lossless audio format. It's purpose is to compress audio information with absolutely no loss to digital information. It is similar to how gzip or zip works, however it's specifically targeted for the type of digital patterns found in audio information.
Once information is compressed you can decompress it and it should be identical to the original sound. You can go from music CDROM to wav (uncompressed audio) to flac to wav to audio cdrom and have no loss in sound quality. You should also be able to go from one Lossless format to another lossless format with no loss of information.
It is also possible to go from lossless to lossy with good results. However if you go from lossy format to lossy format you pick up on the worst qualities of both lossy formats. For example going from mp3 format to Ogg Vorbis format is going to reduce quality even though Ogg Vorbis itself is superior to mp3. You can't replace information that is long gone.
Flac isn't really intended for audio streaming since the resulting bitrates from lossless encoding are so high, however Flac itself incorporates some transport capabilities for limited streaming, and can be encapsulated in Ogg containers for intelligent network transmissions.
What you would use Flac for is audiophile-level music or backing up your cdrom collection. Any cdrom that is lost can have a duplicate made from FLAC files that have no loss of audio content or quality. For that I tend to refer to Flac as "archive quality".
The same 3.5 minute song encoded in Ogg Vorbis at 192kbps and resulting in a 5meg file. Is a 800-1100kbps bitrate and a 29meg file when encoded in Flac from the original cdrom.
Some mobile players can handle flac files and it is a very popular format.
Flac's homepage is at ttp://flac.sourceforge.net/
Speex is a high compression audio format intended for human speech. It is intended for tasks like VoIP and replaces proprietary and sometimes very expensive audio formats.
It supports several levels of audio compression in a few different formats. It supports narrowband (8khz), wideband (16khz), and ultrawideband (32khz). It can dynamically go from one to another in the same audio stream and supports variable bitrate or fixed bitrate formats. Typical bitrates can vary between 2 to 44kbps, and it supports a wide variety of other features that are designed to achieve very high reliability and low bitrates while preserving as much quality as possible.
It is comparable to iLBC, AMR-NB, AMR-WB, G.729, GSM-FR, GSM-EFR, G.723.1, G.728, G.722...
There are several applications for this. VoIP telephony service is one, online gaming is another. (amount others) For instance the popular 'Teamspeak' gaming communication service runs speex to keep reliable communication over sometimes marginal Internet lines. For more information and feature comparisons with other codecs check out their homepage at https://www.speex.org/
Applications and useful links.
What are you going to use to play all these different formats? Well you're in luck.
A excellent cross-platform multimedia player is VLC, formally known as the "video lan client", it supports the widest number of different formats that I've seen in any application. You name it, it supports it. Ogg Vorbis, OGM, Ogg Theora, Mpeg4, AVI files, Quicktime, Realplay, mp3, dvd, vcd, dvb, mpeg2, and a whole host of others. (including TV capture cards in Linux)
It's Free software and supports a wide variety of platforms, too. Originally a native Linux application it currently supports OS X, Windows, Solaris, NetBSD, QNX, OpenBSD, FreeBSD, and even BeOS. In fact it is a fairly popular Windows applications and is a rival to many other popular multimedia players.
As a bonus it's not only a multimedia player, it is a multimedia streamer. It provides the ability to stream a large variety of content onto a network, even the Internet if you want. This includes several video/audio file formats, DVD's, TV capture cards, Satellite, and a few others.
And if your network supports it you can stream not only Unicast (one stream for each client) you can multicast (one stream for all clients.). That way you send one stream out in a sort-of broadcast manner, however when it reaches a router the router knows were your clients are located and transmits multiple multicast streams out through it's various ports to more individual routers downstream and so on and so forth so that you can provide media to a large number of clients without saturating your available bandwidth.
Although it is possible to do this over the Internet, many ISPs don't really care much about supporting it, although it is something that is well established. Originally this is known as the "mbone" Internet network. If you know your clients Internet access supports it it makes video conferencing over the Internet with a large audience practical (probably not using VLC though!)
Flac and Ogg Vorbis are pretty well known, if you have a multimedia player that doesn't support flac and Ogg Vorbis it's time to change players. Theora is the only touchy one since it's so new, that's why I included VLC since I know it supports it.
VLC media player's homepage:
VLC's feature list: https://www.videolan.org/vlc/features.html
This is another free software application. However it is not a multimedia player, it is a dedicated streaming server. It is from Xiph.org and is designed to be compatible with the Shoutcast servers from the now-defunct, but popular Nullsoft company, creators of WinAmp. They called it a distributed audio streaming service.
It's intended to be a free software way of setting up a Internet or lan radio station.
Icecast is free software and supports streaming audio in Mp3 and Ogg Vorbis formats. The most recent version (Icecast 2.2.0) as of this writing supports streaming Ogg Theora format, although I haven't tried it out yet. That should be cool for campuses that want a cheap way to setup a lan-based TV.
Very nice piece of software.
Related to the Speex format is the free software products Openh323 although OpenH323 can support many other types of audio encoding.
H.323 is a teleconferencing protocol developed by the ITU-T section of the International Telecommunications Union. It is used supported by many cisco routers and is what Microsoft's Netmeeting uses.
There are a few other programs to go with this stuff, such as gatekeepers (translates contact names into computer addresses) to provide compatibility with a wide range of hardware devices (such as IP telephones.), and PTSN gateways. That sort of thing.
One interesting project that can utilize Openh323 and related software is GnomeMeeting, which is a Linux-based teleconferencing software for end users
Got something to add? Send me email.
More Articles by Drag Sidious © 2009-11-07 Drag Sidious