Video encoder comparison

(February 25, 2010)

There has been some buzz about HTML5 web video lately. I won’t retell the story here, because it’s almost completely political and not technical, while I’m only interested in the technical side of things. One thing that struck me, though, is that many people believe that the two contenders, H.264 and Ogg Theora, are comparative in quality and performance. As someone who implements video codecs for a living, this struck me as quite odd: How can a refined version of an old and crippled MPEG-4 derivate come anywhere close to a format that incorporates (almost) all of the the latest and greatest of video compression research? I decided to give it a try and compare H.264, Theora and a few other codecs myself.
Read more …

pdfgen, an image-to-PDF converter tool

(December 14, 2009)

Converting images of scanned documents into proper PDF files is quite a hard task. What I usually want is

  • put the images on a page of a well-defined size (e.g. A4 or Letter)
  • don’t resample the image data
  • have precise control over compression – in particular, I want to use JPEG images as-is, without any recompression

This sounds simple and reasonable, but I’ve yet to find a tool that does exactly that. Adobe Acrobat handles the latter two constraints well, but I don’t know how to set the paper size when importing an image. This is no problem when using a normal vector graphics or page layout tool, but then you usually don’t have much influence on what nasty things the PDF output code does to your images. Furthermore, you mostly end up with useless cruft in the PDF files, like XML metadata or even fonts (even though there’s not a single letter of text anywhere in the document). So I decided to end this mess once and for all and write my own image-to-PDF converter. Here it is: pdfgen.
Read more …

Technical details about »Applied Mediocrity«

(September 4, 2009)

As you may or may not have noticed, my latest intro won the PC 64k competition at Evoke 2009. Unlike my previous demos and intros, it actually featured a few effects that go beyond fixed-function rendering or per-pixel lighting. For all who are interested in how it works, I’ve written this small article that explains how each of the eight effects in the intro is done, as well as some general insight into the creation process of the intro.
Read more …

Proposal: A file system for Live CDs

(August 20, 2009)

CDs or DVDs containing a full Linux system for installation, testing, repair or other special purposes are quite common these days. Chances are high that people make their first steps with the Linux, BSD or Solaris operating system using these so-called Live CDs: They are convenient (no need to install the OS), they are safe (doesn’t write anything to disk unless you really want it to) … but they are slow. Booting from a Live CD like Knoppix or the Ubuntu Desktop CD takes ages and makes you wonder if your CD/DVD drive will actually survive that whole operation, considering that it is permanently seeking. And even if you made it to the desktop, you’ll still have to be patient if you intend to open any application, because the drive has to spin up again and load libraries and data for whatever program you start. Or even worse: In the modern GUI-based environments you have to wait for icons to load even if you just click on a launcher menu. As useful as those Live CDs might be, this a major source of annoyance.

In this post, I will present a method to solve this problem. I do not claim to be the first one to invent it – in fact, I refuse to believe that no one had this idea before me.
Read more …

NanoJPEG: a compact JPEG decoder

(April 29, 2009)

If you followed my works, you know that I like compact, single-file implementations of decoders for various media formats, and where such a thing doesn’t exist, I tend to write or at least port one myself. Now I’d like to add the third format to that list: Baseline JPEG images.
Read more …

Breakpoint 2009 Party Report

(April 16, 2009)

The is no such thing as easter. There’s only Breakpoint.
Happy Breakpoint!

This 1984-inspired text is from one of the bigscreen slides from this year’s issue of world’s largest Demoscene-only party: Breakpoint in Bingen am Rhein, Germany. As every year, the party takes place during what non-sceners call the easter weekend. And as every year, some friends and I were there, too.
Read more …

H.264 Decoder Benchmark, Part 2

(February 26, 2009)

After the H.264 decoder benchmark I did when DivX 7 came out, I got some comments that I misrepresented CoreAVC by using an outdated version. Recently, I repeated the benchmarks using the newest version of CoreAVC fresh from their website. I also used more computers to test the decoders on, and the results were very interesting.
Read more …

Four generations of iPod nanos compared

(February 16, 2009)

Over the last few years, I bought one specimen of all four generations of Apple’s iPod nano media player, mainly to make rePear compatible with each new model. (In fact, rePear’s main development target are iPod nanos.) Here are my thoughts about the benefits and drawbacks of each generation.
Read more …

Compiler benchmark

(February 6, 2009)

I usually write my demos using Microsofts C Compiler for Win32 and GCC for Linux. But how good does Intel’s compiler optimize? And can the performance of MSVC and GCC be improved using a clever selection of compiler switches? That’s what I wanted to find out, and so I wrote my own little benchmark based on some code of my demos and let it run through all these compilers with different options. The results are a little bit different from what I expected …
Read more …

DivX, the new king

(January 6, 2009)

Today, DivX Inc. released the new version of its famous video codec. Usually, this is utterly uninteresting news, but not this time: Version 7 is actually not an MPEG-4 ASP codec like its predecessors, but a H.264 one, based on the implementation of MainConcept. This makes the codec a lot more interesting, especially since the decoder part is free (as in beer).

The H.264 software decoder situation on Windows was a bit complicated: There just was no perfect decoder. The InterVideo and CyberLink come only with their respective Blu-ray player applications, the one in QuickTime is complete crap, the Nero one doesn’t want to work in applications other than Nero’s own. So we only had ffdshow, which is open source, cool, but a little bit slow, and CoreAVC, which is blazing fast, but you need to pay for it.
As of today, this problem has been resolved once and for all: DivX 7 is the ultimate H.264 software decoder on Windows, period. I ran a little benchmark today and the results are very impressive: DivX 7 is always faster than CoreAVC, usually about 10% for CABAC sequences. ffdshow, on the other hand, is always slowest and makes the least use of multi-core CPUs.


Read more …