Thursday, October 16, 2008

Why Windows Media Player is not VLC

ExtremeTech had an article by John Dvorak outlining his Windows 7 wish list.

First, let me say that I am not a Dvorak fan. I think most of his columns are prone to hyperbole, and his technical expertise is questionable at best. I think of him as a Bill O'Reilly/Michael Moore of the computing world: basically a talking head who represents the triumph of outrage over substance.

That said, in the article, he actually poses a good question:

4. Fix the media player so it actually is a universal player—The media player should function as a universal player and actually play everything from MOV files from my camera to old AVI files. Windows Media Player wants everything to be a WMV file, and half of those don't always work. It plays some MP4 files and not others; it's spotty as can be. I just hate when I get some message or other saying that I do not have the right codec or whatever. What's the point of having a media player embedded in the system that doesn't work as well as VLC media player, a free player actively given away by VideoLAN.org? How is it that this VLC product, coded by a few guys in their spare time, can do a job 20,000 Microsoft coders cannot make Media Player do? I'd seriously like to know. Does this make any sense to anyone?
Unfortunately, yes, it does make sense to some of us. Let's go through each question, starting at the top.

What is the point of having a media player that doesn't work as well as a free player actively given away by VideoLAN.org? This is actually a great question. What Dvorak doesn't know is that audio, video and container formats are a veritable intellectual property minefield. Microsoft cannot just toss an H.264 decoder into Windows 7 without having to pay royalties to an organization called MPEG-LA. These royalties are not cheap. The sole difference between Apple and Microsoft in this domain is Apple bit the bullet and paid royalty fees to license codecs like H.264, MPEG2 and MPEG4.

Now consider VLC: they are an open-source project released under the GPL. They are providing implementations of audio and video codecs (including H.264, MPEG2, MPEG4, WMV, MP3, AAC, etc., all of which require license fees), but who exactly is paying the licensing costs? The answer is: absolutely nobody.

The VLC FAQ has a breezy explanation of this in section 3.4:
Some of the codecs distributed with VLC are patented and require you to pay royalties to their licensors. These are mostly the MPEG style codecs.

With many products the producer pays the license body (in this case MPEG LA) so the user (commercial or personal) does not have to take care of this. VLC...cannot do this because they are Free and Open Source implementations of these codecs. The software is not sold and therefore the end-user becomes responsible for complying to the licensing and royalty requirements. You will need to contact the licensor on how to comply to these licenses.

This goes for playing a DVD with VLC for your personal joy ($2.50 one time payment to MPEG LA) as well as for using VLC for streaming a live event in MPEG-4 over the Internet.
So, let me restate this: if you use VLC, technically it is your responsibility to contact MPEG-LA and any other licensing organization and figure out how you should best comply with their licensing. VLC claims they cannot do this because they are "Free and Open Source implementations of these codecs."

This is one instance where Free and Open Source Software sounds more like a selective disregard for intellectual property rights than a legitimate enterprise. What's really going on is MPEG-LA has no financial incentive to sue the pants off the creators of VLC because they don't have any money. But this doesn't change the fact that the VLC project is arguably "stealing" intellectual property that belongs to other people and then hiding behind some weak FOSS excuse (and, I suppose, the non-existence of revenue). The notion that any of their users are actually going to navigate MPEG-LA's licensing conditions and pay up is patently absurd.

(side note: these are the same people who would shit sideways if Microsoft was caught violating the GPL, so apparently their ethical standards of ownership are selectively applied wherever it makes sense, but I digress.)

Were Microsoft to dump Windows Media Player and start distributing VLC, MPEG-LA would be all over Microsoft like a fly on shit. Measly open source project with no revenue stream? Meh, I'll pass. Fortune-50 company?

Show me the money!
Show me the money, baby. Show me the money. (and no, I did not pay royalties to Tom Cruise. I guess we all fudge it on occasion)

How is it that this VLC product, coded by a few guys in their spare time, can do a job 20,000 Microsoft coders cannot make Media Player do? Again, the problem isn't a lack of programming talent; it's that the same standards of intellectual property that Microsoft is held to do not apply to the owners of the VLC project. Plain and simple. One option Microsoft has is to pay the licensing fees for a few dozen codecs, but this isn't cheap. It's one reason XP never had an MPEG-2 decoder (and thus millions of us threw up our arms in despair whenever we tried to play a DVD on Windows XP) and also the reason it doesn't have an H.264 decoder. Apple absorbs those costs to help prevent their customers from going insane. In any event, the fundamental issue has nothing to do with a lack of programmers, and everything to do with licensing costs and legal minefields.

A few other pot-shots before I close out this sorry tirade:
  • Windows doesn't play any MP4 files out of the box, because it lacks an MP4 parser entirely. (MP4 is a container format, and not an actual payload--I'm not sure if this is because of a licensing issue, or if MSFT's 20k programmers never got around to it) Me 1, Dvorak 0.
  • Windows Media Player is a universal player, because the underlying framework (DirectShow) can be extended to support almost any container or format. There is no technical reason WMP cannot playback any media file. Me 2, Dvorak 0
  • Windows Media Player does not want everything to be a WMV file. In fact, it doesn't even care what the file is. All it cares about is whether or not it can locate a parser to open the file, and a decoder for content inside of the file. The Windows Media codecs themselves are implemented as DirectShow (DMO) filters that WMP loads up when you hand it a file. Me 3, Dvorak 0
  • What's the point in ranting about WMP when you can just download VLC and give MPEG-LA the middle finger? Me 4, Dvorak -12
And this concludes my rant. Apologies in advance to FOSS (which I am still a proponent of) and the makers of VLC (which is by any measure, a superb but ethically perilous product).