Codec’s = New Age DLL Hell? Hell Yes

Furrygoat writes, Are Codecs the Next DLL Hell?  I will be the first to tell you yes, and it will be a huge downfall of the HTPC (Or PC used for any type of audio and/or video decoding or encoding).


 


Alright, I know more then the average person when it comes to audio and video decoding.  That’s a problem!  The average person on the web searches there favoirte search engine for “codec” and will mainly get a bunch of crappy sites offering pirated and hacked codec downloads.  These Codec Packs, as some refer to them, are hell on your PC.  They will install a number of codec’s that you don’t need or want.  However, many people think it’s the more the merrier type of thing here.  The truth is far from this!  Taking MCE PC’s for example, the MPEG-2/DVD decoder is a rather large part of it working or not.  Most “Codec Packs” include at least one (and it some cases up to 4) MPEG-2 decoders.  Okay, that is a huge problem for anyone running Media Center.  You now have a number of codec’s that are basically wanting to decode the video, and only one can win for it to take place.


 


Another huge issue is that everyone in the world is now developing DirectShow codec’s/decoders.  Install Nero and you get MPEG-2 decoders, MPEG-2 encoders, MPEG-4 decoders, MPEG-4 encoders and more!  Install Sonic Primetime and you get the same.  Tons of applications now install decoders and encoders (collectivity “codec’s”) and all of them like to register themselves as the highest pritory with DirectShow.  DirectShow is this magically part of DirectX that allows Windows Media Player, RealPlayer, RadLight, DVDShrink, PowerDVD, WinDVD, Media Center (MCE), MusicMatch Jukebox, Nero, Easy CD Creator, and just about any program you use for playing back audio and/or video to decode or encode video and audio.  Some codec’s don’t always follow the best way of registering themselves, for example some applications re-register there own codec’s everytime that program is launch.  This is great if you have PowerDVD on your machine and you want to play a DVD.  However, it not so great when you want or have other DVD decoders installed that might be being used by a different applications via DirectShow.  In turn, that other application is likely trying to use PowerDVD’s codec’s even though you might want it to use Nero’s or NVIDIAs!


 


Another big issue is that these companies are wanting there codec’s to decode everything.  Not only does the DivX codec from DivXNetworks decode DivX, but wll also do XviD and 3ivX decoding.  The 3ivX Suite decodes 3ivX, XviD, and DivX IIRC.  So you get people installing DivX, XviD and 3ivX becuase they all have different names, and all the decoders can basically do the same thing (Not always true, decode quality can be very different).  In addition with Nero and Easy CD Creator (I think Easy CD does, don’t quote me on that) shipping with MPEG-4 decoders, they will generally also decode XviD and DivX.  Are you counting how many things on the system can decode the same content?  It’s too many!


 


Microsoft has always been slow to correctly address these problems, and they really are problems.  They can’t address or fix people on the Internet being dumb and offering packs of pirated and hacked codec’s (Or maybe they can, that’s copyrighted materials people) but I would say a good 60-70% of the problems people have with WMP is because of codec’s.  People have issues with MCE and codec’s all the time.  The main problem is that a large pool of companies are the problem (or maybe it’s just Microsoft with DirectShow, I don’t know).  Microsoft should take a stand and do a good job of educating people on what codec’s are, what they do, how to find out what codec is used in a file, where to download the correct codec, etc.

16 thoughts on “Codec’s = New Age DLL Hell? Hell Yes

  1. One HUGE way that MSFT could help with this on MCE would be to 1) Ship with a DV codec, or 1b) TELL people that they do not ship with a DVD codec, and suggest where to get them when you are setting up the machine. or 2) Have a better error message when you try to play a DVD on your Media Center PC. Luckily I knew of Nvidias beta codec so was able to get up and running quickly..if I had to shell out more money to get my media center to play DVD’s out of the box I would have been pissed…

  2. Well, MCE is an OEM product, so the OEM can choose what Codec to provide for the consumer.(and they are certainly informed about this) But think about this:

    What do you think what would have happened if Microsoft DID provide a MPEG2 Codec…. LAW SUIT! Everytime Microsoft puts something in there software there are other software producers saying: "This is not fair, how can we exist and make money if Microsoft is bundeling this and that with Windows"

  3. The problem with shipping an mpeg2 codec in the box is the royalties. When MS includes something it goes out in every copy whether the user will use it or not. Including the codecs would dramatically increase the price of windows to OEM’s. These same OEM’s already have deals with IHV’s to include their mpeg2 decoders and use it as an upsell to customers.

    Note that a DV codec is almost synonymous with an mpeg2 codec.

    I can’t say what MS will or won’t do in the future, but it isn’t quite as simple as just including them.

    As to the original post: It’s a very difficult problem to solve. DShow was based on the merit system (pun intended) with the idea being that using a combination of the filter’s merit and how specific the media type/sub type is one could reasonably pick the right codec every time. It wasn’t really designed for a competing merit nuclear arms race.

    Now you can solve it on an application level easy enough, just specify the filter you want and ignore the merit. But how to generically solve it, where any application will always get the "right" filter is quite a bit more complex. The question becomes how do you knwo what the right filter is? You can’t programmatically tell if one has better decode quality than another. Heck, people can’t even subjectively agree on what is best.

    Test solution 1: within the current framework each user can choose what they want their "default" one to be and raise its merit all the way. If individuals do it, then there is no arms race, but if MS provides a mechanism for you to do it you will suddenly see every new codec with its merit set at the max, and it will all be useless again. So now we need to provide a way to lower the merit of other “unwanted filters”, easy enough but now the system is just as complex as it is today.

    Test solution 2: Teach each app writer how to select their own filter and ignore the merit. This way they don’t need to register high, they will get what they want anyway. The problem is this is extra work and they can just get this for “free” by raising their merit. Development time is money. Aside from that there are the generic applications (like MCE) which need to rely on someone else’s codec and they don’t have the luxury of specifying their own unless they present you with a list and ask you to choose.

    I really don’t have any answers for you. What I can tell you is that we are (and have been for quite some time) aware of the problem. It is one of our main concerns while designing the next generation of multimedia API’s.

  4. The parallels with DLL Hell are eerily accurate.

    I think Ted’s response is a copout; clearly, Microsoft needs to provide a default MPEG-2 implementation in the MCE box. Yeah, the OEMs may get pissed, but so what? What is more important: the Microsoft software customer, or some faceless OEM? At some point Microsoft has to take a clear stand for the customer; as Chris correctly points out, nobody else in this industry has the authority to make that kind of binding decision in the customer’s favor.

    OEMs will do what is best for them, not for us. Microsoft is the only consumer advocate that can help, and if they abdicate their responsibility here, all Microsoft customers lose.

  5. It’s worth saying that on the MCE side it is an OEM product. The large amount of people that have issues with it and MPEG-2 decoders are trying to build there own machines. MCE is support only by the OEM’s, the OEM’s are the ones that are picking the MPEG-2 decoder that they like the best. MS PSS will not even take a call about MCE even if you pay them, it’s supported by the OEM. In this case (and it will likely continue to be the case) including an MPEG-2 decoder in MCE does mean the average person is paying for it twice. The OEM’s are not just going to say that there is a decoder included and we don’t need to put the one we want in there. In effect, this adds to your problem by adding another MPEG-2 decoder. That’s part of the problem you are trying to get away from. Just a note. 🙂

  6. @Jeff Atwood I just bought a tvtuner card with an hardware mpeg2 decoder/ encoder chip… Do you mind that I like MCE to use a codec that does the math on that hardware chip instead of my main cpu?

    With other words forcing something upon someone is never a good idea and with that in mind we can search for a good solution for all….

    Here is an idea… What if there’s a generic interface every application can call (a bit like twain) In that interface you can set the preferred codecs for that program. There should be a way for a programmer to send the advised codecs for that application to the interface, but users would just as easily pick another one as there preffered codec.

    Ted what do you think?

  7. 1. How can I take inventory of what codecs are on a machine?

    2. How can I remove the ones I don’t want?

    3. How can I control which codecs MediaCenter should use?

  8. Is there any way to tell what codec is needed for a given .mpg file? I recently received some .mpg’s and ended up downloading and installing every codec i could find until finall one worked… is there an easier way??

  9. MikeLowery:

    1. Google "GSpot" and "SHERLOCK – The Codec Detective"

    2. "Codec Sniper" does an okay job, you need to know what you are doing to use it correctly. If you delete something you think you don’t want, but need you can get into trouble.

    3. http://www.microsoft.com/downloads/details.aspx?FamilyID=de1491ac-0ab6-4990-943d-627e6ade9fcb&displaylang=en

    CR: The beta version of GSpot does that, I just open it in GraphEdit to find out.

    Guide To MPEG Playback In WMP

    http://msmvps.com/chrisl/articles/10633.aspx

  10. Thanks for the links to GSpot and SHERLOCK, they’re very handy looking little apps.

    When using Code Sniper does anyone know of a resource somewhere with a list of default XP codecs &/or codecs that get installed with common applications? (I wish I’d known about GSpot when I’d freshly installed windows…) as I’m sure I’ve got some evil Codecs floating around my system that shouldn’t be there, but don’ t know enough to start sniping them.

  11. I understand the concerns about Codec Packs as well as the concerns and problems with each program installing its own set of codecs but what is the casual viewer to do to keep current and compatible with audio and video codecs?

    Nice site, I enjoy the informed discussions here.

  12. Hell yes its MSFT’s fault. I would classify myself as above average in my knowledge of codecs but I have had a nightmare of a time configuring my video server to play the wide varity of content available on the net. The system MSTF uses for registering and using codecs is ludacris. Oh yea lest I forget, XP SP2 has a bug that won’t let you remove codecs with device manager. When you delete them they magically reappear when you reenter the codec screen. So to sum it up the system lets any application install codecs more than once then won’t let ya delete them without an external app like codec sniper. Just another day in wacky windows world!!

  13. My opinion is that its not the issue that every company ships codecs with her product. The big problem here is that Microsoft makes it possible to install them on the system directory.

    Companies should put her codecs in the application directory. Winamp does that correctly. Codecs are part of the application layer in the Microsoft architecture and should therefore stay in the application directory.

  14. Ok you are right. I forgot to say that besides the own install directory it should not be nessecary to register the codec. Just put is in de app dir and let the program use it.

    Btw does somebody know how I can check which codec WinDVD uses if gspot says that 3 codec are compatible. I’m trying to reduse the amount of codecs to a minimum. The background is that WinDVD crashes on a videofile with AC3 support when Mediaplayers does not. I’m wondering if this is because of another selection of codes by WinDVD compared to Mediaplayer.

Leave a Reply

Your email address will not be published. Required fields are marked *