xiphmont: (Default)

Hello all! I'm traveling to Norway this week to give a few talks and a workshop on online video, all sponsored by the Norwegian Unix Users Group. The workshop is likely to cover technical details of the new AV1 codec (and free codecs in general), while the talks are intended more as a free codec tea party.

Talks and meetups: "Fighting for free video - technical tactics and war stories from the FOSS audio and video codec frontier"

The talks are free and open to the public.

Workshop: "Audio and video format workshop with Xiphmont"

  • Wednesday April 24 at 10:00am at Cisco

The workshop is open to interested professionals, and I expect it to be more technical. Please contact NUUG (information in the links above) if you wish to attend.

Do come!

xiphmont: (Default)

Last week, Fraunhofer and Thomson suspended their MP3 patent licensing program because the patents expired. We can finally welcome MP3 into the family of truly Free codecs!

Then came a press push calling MP3 dead. That's dumb. Fraunhofer is only calling MP3 dead to push unwary customers into 'upgrading' to AAC for which they can still charge patent fees.

This is a bit like the family pediatrician telling you that your perfectly healthy child in college is dead-- and solemnly suggesting you have another child immediately. Just to keep making money off of you.

I would call that disingenuous at best.

No, MP3 isn't dead, and it's not pining for any fjords. The money that Thomson and Fraunhofer were previously collecting in patent royalties now stays in your (and everyone else's) bottom line. Don't license something new and unnecessary just to spend more money.

If you really do need something more advanced than MP3, the best alternatives are also open and royalty-free. Vorbis is the mature alternative with 20 years of wide deployment under its belt. Better yet, consider Opus, the world's most advanced officially standardized codec.

That said, the network effects that have kept MP3 dominant for so long just got stronger. Nothing beats its level of interoperability and support. There's no reason to jump off a thoroughbred that’s still increasing its lead.

xiphmont: (Default)

Nathan Froyd at Mozilla noticed something odd in the libvorbis sourcebase. Codebook 'length lists' only use integers in the range of 0 to 32. Well, worse than integers, actually, longs. And the lengthlists are big; the static data comprises the bulk of libvorbisenc.

In the earliest days of Vorbis development 15 years ago, codebooks were constructed differently and the lengthlists were quite small. Longs still weren't necessary, but the wasted space was negligible. When the coding strategy shifted and these lists became much larger, no one caught the wasted space. The vast majority of optimization was always for speed, not space. The only concentrated effort in trimming Vorbis library size down over the past decade had been in the decoder.

But now browsers need to ship encoders, and size matters. Add that to 64 bit taking over (and doubling the wasted space in the lengthlists), someone finally noticed the oversight.

That's a long way of saying "Xiph.Org is pleased to announce the release of libvorbis 1.3.4..."

No functional changes, but the encoder lib is now a shade over 25% the size it was in the 1.3.3 release.

xiphmont: (Default)


FFmpeg's built-in Vorbis encoder produces low enough quality output to be considered broken. This encoder is used by default in the majority of FFmpeg builds, and will produce .ogv and WebM videos with low to unusably poor audio quality.

This alert is intended for all users of FFmpeg (via the command line or GUI wrappers) and all application developers that make use of the FFmpeg command line tool. Application developers that use the FFmpeg libraries should also take care that the libavcodec built-in Vorbis encoder library is not used by accident.


All past and present builds of FFmpeg and libavcodec up to but not including the upcoming 0.6 release. Default builds of the upcoming FFmpeg 0.6 release will not use the built-in encoder by default, but it will still be possible to accidentally use or restore the built-in encoder to default status during the FFmpeg build. It should be assumed that any build of FFmpeg and any application using FFmpeg could be producing videos with substandard Vorbis audio unless the FFmpeg build and usage is verified to be using system Vorbis libraries, such as those provided by Xiph.Org or aoTuV.

Workaround / Fix:

FFmpeg can be forced to use the external/system libVorbis library by passing:

-acodec libvorbis

as part of the FFmpeg command line.

Note that passing '-acodec vorbis' is incorrect and requests the low-quality built-in FFmpeg-internal Vorbis encoder. Also, FFmpeg may be built without libvorbis support, meaning that many FFmpeg builds only have the internal encoder available. In this case, requesting '-acodec libvorbis' will fail with the error 'Unknown encoder 'libvorbis''.

FFmpeg can be built with working libvorbis support and the internal Vorbis encoder disabled as follows:

./configure --disable-encoder=vorbis --enable-libvorbis; make; make install

Such a build completely removes the internal Vorbis encoder from libavcodec, eliminating the possibility of accidental use on the command line or in libavcodec-based applications.


Use of a good Vorbis encoder in .ogg, .oga, .ogv and WebM files may be verified as follows. This test will work on any Ogg or WebM file to verify the encoder that produced the audio. Note that 'Vorbis' is case-sensitive:

strings file_to_be_checked | grep Vorbis

A file that was encoded using a good encoder will output a line containing 'Xiph.Org libVorbis' or 'AoTuV', such as:

boatanchor$ strings test2.ogg |grep Vorbis
Xiph.Org libVorbis I 20100325 (Everywhere)


boatanchor$ strings test3.ogg |grep Vorbis
AO; aoTuV b5d [20090301] (based on Xiph.Org's libVorbis)

A file encoded by FFmpeg's internal Vorbis encoder will produce no grep output as it does not set a vendor string.

xiphmont: (Default)

The title is mostly due to having seen three or four other blog posts simultaneously making this joke. It had popped into my mind too :-)

In case folks hadn't seen yet, Google (as everyone had expected with bated breath) announced the open sourcing of VP8 today as part of the WebM project. WebM combines a Vorbis audio stream and a VP8 video stream into a Matroska container for use in web video. Then there are a whole lot of other tiny project details like garnering industry support.

Yes, we've actually known for a little while this would be happening. Google is moving quite fast after having their On2 purchase plans delayed several months. We'll have a press release up soon expressing support in drier language, though it's mostly an exercise in formality since everyone already knows our position.

Now that I'm actually allowed to talk about it, the important bits to take away are:

  • Of *course* we (Xiph) support WebM. This is great news for open source, open media, and our own plans at Xiph count on WebM succeeding. How good the WebM news turns out to be depends on what we make it.

  • Vorbis is part of WebM and will probably see a new uptick in active development. WebM doesn't immediately affect Theora (development of Theora continues along with VP8), but that's vaguely irrelevant. The good of unencumbered media is the point, not Theora or Vorbis or Ogg or any specific piece of software. We're after a fundamental change to the business and social environment. Software and software advocacy happens to be the tool Xiph uses to effect change.

  • Open media is obviously philosophically 'clean' and good for the public and good for social transparency. It's even better for business. Business makes good money on the Web using Open technologies. In fact, these are the only technologies that have seen sustained success online. We fully expect that pattern to hold.

  • Xiph has been locked in a political battle with a large monopoly power for years now, and a political fight is not what Xiph.Org is good at or built for. We're built to research and develop media software. This announcement gives us breathing room to get back our primary long term goal: leapfrogging the proprietary competition. We don't want to be as good, we always want to be better.

...so there's some officialness for you all :-)

P.S. I put the Xiph logo first because it's my blog and all.

xiphmont: (Default)

Although the releases have already happened, I've posted the third promised update and 'demo' of the Vorbis surround work I've done in the past few months. Mostly this is a few more notes about the releases from Friday, as well as some documentation of a few of the deep dark internals of the encoder setup (how to make codebooks!)

xiphmont: (Default)

Released last night: libogg 1.2.0, libvorbis 1.3.1, libao 1.0.0, and vorbis-tools 1.4.0.


Aside from bugfixes, the major story here is the first wide release of all the surround hacking I've been doing the past two months. Previous demo pages (one and two) had documented my progress till now; there's actually one more coming that I've just started on.

In addition to that, we also tagged on a release of libogg with a new default page spill rule that reduces container overhead for higher bitrate streams like video. The change is simple, but it's a reduction in bitrate for free so why not. Applications don't have to do anything, just drop in the new lib. In addition to demo pages and blogging, I've also begun a comprehensive expansion of the Ogg documentation (the very beginnings of which are in the release-- not much yet).

The releases as usual can be had from the Xiph.Org downloads page.

xiphmont: (Default)

A full first cut of Vorbis with optimized 5.1 is now in Xiph.org SVN along with a new demo page. We're currently on schedule for a new release of libvorbis, vorbis-tools and ao next week, depending on how much time LibrePlanet takes this weekend.

xiphmont: (Default)

It's amazing how software sidetracks can plow through years of time. I'm finally getting back to Vorbis (and other audio development) after a minor two year video distraction that saw the completion of a new experimantal Theora encoder (Thusnelda) last year, and the beginning of the next experimental Theora encoder which Tim has named Ptalarbvorm. Ptalarbvorm is already showing further large improvements over Thusnelda (honestly, I think he's already doubled again on Thusnelda).

But this post is about Vorbis.

One thing on the original Vorbis bullet list was surround encoding. Vorbis was always surround capable and the software is happy to encode as many channels as you like, but once you're past stereo, everything is encoded as entirely discrete channels. This hasn't been so bad really; despite discrete channels, Vorbis's coding efficiency compares favorably to other surround-capable formats. That said, Vorbis can do better.

When beginning surround optimization work on Vorbis, I found the encoder handled remapping the channel order of input formats, but it didn't always do it properly (FLAC and some WAV inputs were frotzed). I also found that ogg123 needed updating to handle output order. These improvements will be released in vorbis-tools 1.4.0 sometime soon.

The hard part of the tool updates turned out to be libao, which both had no concept of channel ordering, and had also bitrotted substantially while maintainerless. The idea had been that Lennart Poettering's SydneyAudio was going to replace libao so there was no sense continuing to develop libao. We'd just use libao while we waited and not put any more resources into it. Unfortunately, Lennart has been entirely occupied fighting his PulseAudio battles, and this is frankly a more important use of his time. SydneyAudio is no closer to completion than it was a few years ago. We can't continue to wait for it.

So, I'm announcing the resumption of active development and maintenance of libao until such time as there's something better to replace it.

I've made up a surround demo page (like the ones I made during Thusnelda development) with more details on vorbis-tools, libao, and Vorbis's in-progress surround hacking. It goes into alot more detail about Vorbis's surround and channel coupling system with diagrams and samples. I hope folks like it!

xiphmont: (Default)

With tonight's double-release (well... release candidates) of libvorbis 1.2.2 and libogg 1.1.4, this has been quite a month of software releases. In addition to Ogg and Vorbis, Ralph, Tim and Greg have cut a second alpha of Thusnelda and I managed to push out some vanity software on my own time-- a new release of gPlanarity and the beginnings of getting the Gimp monkey off my back. No, not the new resampler, but a number of TileCache fixes that looked pretty necessary.

Whoof. Getting tired. But cdparanoia, two more libvorbis releases and a whooole lotta documentation come next.


xiphmont: (Default)


RSS Atom

Most Popular Tags