There's been a lot of very obnoxious misuse of software patents in recent years. This ranges from patent trolls wielding submarine patents to overly-generic patents being used to scare everyone else out of a business. But at least in most of the cases, the patents were an original idea of some sort, even if that idea was far too general to be patented.

The situation just got worse. We now have a company scraping open source commit logs and patenting them.

Today, someone brought this patent application by Tandberg to my attention. It looked like a mildly interesting idea -- and then I was hit with a freight train of deja vu.

But some background first. A run-level coder is a function that takes an array of values and calculates the distances between nonzero values (runs) in the array, as well as the indices of the nonzero values (levels). This is necessary for practically any video format that makes use of run-level compression (H.264, MPEG-2, Theora, etc). Here's one of x264's unoptimized run-level coders.

This function is run often enough that high performance is very important. Naively, there is no obvious way to make use of SIMD in such an algorithm, so some trickery has to be used to write a fast assembly function for it. Near the end of 2008, I added optimized assembly implementations of two run-length coders (for block decimation and CAVLC) to x264.

So why the deja vu? Because this patent application was an exact, step-by-step description of the algorithm I came up with for decimate_score (and later coeff_level_run) in x264 in 2008!

This is not coincidence. We already know from one of their employees that they follow x264 development. We also know that they file patents for practically everything he comes up with. Well, this time, it looks like they ran out of ideas, so they had to go use the cheat sheet: open source.

Furthermore -- the patent application was filed a mere two months (Dec. 30, 2008) after my original commit (Oct. 22, 2008). Funnily enough, they are missing one minor part of my algorithm, the use of the Phenom's SSE4a. Want to know why? It was added the day after they filed the patent application, so they didn't get a chance to copy it.

This is likely just the tip of the iceberg. There's almost surely more where this came from.