Entries by tag: vorbis

xiphmont

Libvorbis 1.3.4 released

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.

Tags: ,

xiphmont

Ogg and WebM technical alert: default FFmpeg Vorbis encoder is broken

Overview:

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.

Scope:

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.

Verification:

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)

or

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

I, FOR ONE, WELCOME OUR NEW WEBM OVERLORDS

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

Final Vorbis Surround Demo For Now

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!)

Tags: , ,

xiphmont

A Veritable Springtime Orgy of Releases

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

*whew*

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.

Tags: , ,

xiphmont

Continuing Vorbis surround work, a new demo page

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.

Tags: ,

xiphmont

Ongoing Vorbis work, libao rises again, and a demo!

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!

Tags: , , ,

xiphmont

Lots of software released this month...

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.


?

Log in